extern u32int curpc, irq; extern u8int reg[32]; extern u8int dma; extern u8int z80bus, z80irq; extern u16int spc, scurpc; extern u16int ram[32768]; extern u16int *prg; extern int nprg; extern u8int *sram; extern u32int sramctl, sram0, sram1; extern int savefd, saveclock; extern u16int vram[32768], vsram[40]; extern u32int cramc[64]; extern u16int vdpstat; extern int vdpx, vdpy, frame, intla; extern u8int ym[512], ymstat; enum { MODE1 = 0x00, MODE2 = 0x01, PANT = 0x02, PWNT = 0x03, PBNT = 0x04, SPRTAB = 0x05, BGCOL = 0x07, HORCTR = 0x0a, MODE3 = 0x0b, MODE4 = 0x0c, HORSCR = 0x0d, AUTOINC = 0x0f, PLSIZ = 0x10, WINH = 0x11, WINV = 0x12, DMACL = 0x13, DMACH = 0x14, DMASRC0 = 0x15, DMASRC1 = 0x16, DMASRC2 = 0x17, IE0 = 0x20, IE1 = 0x10, DMAEN = 0x10, SHI = 0x08, WIDE = 0x01, STATDMA = 0x02, STATHBL = 0x04, STATVBL = 0x08, STATFR = 0x10, STATCOLL= 0x20, STATOVR = 0x40, STATINT = 0x80, }; enum { BUSREQ = 1, BUSACK = 2, RESET = 4, INTVBL = 1, INTHOR = 2, }; enum { FREQ = 53203400, YMDIV = 7 * 6, CPUDIV = 7, Z80DIV = 15, RATE = 44100, SAMPDIV = FREQ / RATE, SAVEFREQ = FREQ / 4, }; enum { SRAM = 0x01, BATTERY = 0x02, ADDRMASK = 0x0c, ADDRBOTH = 0x00, ADDREVEN = 0x08, ADDRODD = 0x0c, SRAMEN = 0x10, };