static void reset(int hard) { reg = 0; mmc3_reset(C_MMC3,sync,hard); mem_unsetcpu8(6); mem_setwritefunc(6,write67); mem_setwritefunc(7,write67); }
static void reset(int revision) { int i; switch(revision) { default: case B_KONAMI_VRC2A: map = vrc2a_map; break; case B_KONAMI_VRC2B: map = vrc2b_map; break; case B_KONAMI_VRC2C: map = vrc2c_map; break; } mem_setreadfunc(6,read_latch); mem_setwritefunc(6,write_latch); for(i=8;i<0x10;i++) mem_setwritefunc(i,write); for(i=0;i<8;i++) { prg[i & 1] = 0; chr[i] = 0; } mirror = 0; sync(); }
static void genie_write(u32 addr,u8 data) { if(addr >= 0x8000) { switch(addr) { case 0x8000: if((data & 1) == 0) { //unmap the write function mem_setwritefunc(8,0); //we not using genie anymore reg &= 0x7F; //save old read func readcpu = cpu_getreadfunc(); //setup new read function cpu_setreadfunc(genie_read_cheat); //restore the old mapper nes->mapper = mapper_init(nes->cart->mapperid); //reset the mapper nes->mapper->reset(1); } else { reg = 0x80 | (data & 0x7E); log_printf("genie_write: reg = $%02X (data = $%02X)\n",reg,data); log_printf(" code 0: %s, %s\n",(reg & 0x10) ? "disabled" : "enabled",(reg & 2) ? "compare" : "no compare"); log_printf(" code 1: %s, %s\n",(reg & 0x20) ? "disabled" : "enabled",(reg & 4) ? "compare" : "no compare"); log_printf(" code 2: %s, %s\n",(reg & 0x40) ? "disabled" : "enabled",(reg & 8) ? "compare" : "no compare"); } break; case 0x8001: code[0].addr = (code[0].addr & 0x00FF) | (data << 8); break; case 0x8002: code[0].addr = (code[0].addr & 0xFF00) | (data << 0); break; case 0x8003: code[0].compare = data; break; case 0x8004: code[0].data = data; break; case 0x8005: code[1].addr = (code[1].addr & 0x00FF) | (data << 8); break; case 0x8006: code[1].addr = (code[1].addr & 0xFF00) | (data << 0); break; case 0x8007: code[1].compare = data; break; case 0x8008: code[1].data = data; break; case 0x8009: code[2].addr = (code[2].addr & 0x00FF) | (data << 8); break; case 0x800A: code[2].addr = (code[2].addr & 0xFF00) | (data << 0); break; case 0x800B: code[2].compare = data; break; case 0x800C: code[2].data = data; break; } log_printf("genie write: $%04X = $%02X\n",addr,data); } }
static void reset(int hard) { int i; mem_setwramsize(8); for(i=8;i<16;i++) mem_setwritefunc(i,write); if(hard) { for(i=0;i<8;i++) { prg[i & 3] = 0; chr[i] = 0; } mirror = 0; irqenable = 0; irqlatch = irqcounter = 0; } sync(); }
static void reset(int revision,int hard) { int i; for(i=8;i<16;i++) mem_setwritefunc(i,write); if(revision == B_KONAMI_VRC6B) { map = vrc6b_map; mem_setwramsize(8); mem_setwram8(0x6,0); } else map = vrc6a_map; prg[0] = 0; prg[1] = (u8)-2; for(i=0;i<8;i++) chr[i] = 0; mirror = 0; irqlatch = 0; irqcounter = 0; irqcontrol = 0; apu_setexternal(&vrc6); sync(); }
static void reset(int hard) { mem_setwramsize(8); //initialize all bank pointers mem_setprg4(6,8); mem_setwram4(7,0); mem_setprg32(8,0); mem_setchr8(0,0); //get pointers to the data prg6 = mem_getreadptr(6); sram7 = mem_getreadptr(7); //remove pointers to memory mem_setreadptr(6,0); mem_setreadptr(7,0); mem_setwriteptr(7,0); //insert the function pointers from here mem_setreadfunc(6,read6); mem_setreadfunc(7,read7); mem_setwritefunc(7,write7); }
void genie_reset(int hard) { int i; //manually map in the prg and set write handlers for(i=8;i<16;i++) { mem_setreadptr(i,genierom); mem_setwritefunc(8,genie_write); } //manually map the game genie chr/cache for(i=0;i<8;i++) { nes->ppu.readpages[i] = genierom + 0x1000; nes->ppu.writepages[i] = 0; nes->ppu.cachepages[i] = geniecache; nes->ppu.cachepages_hflip[i] = geniecache; } //setup genie registers memset(code,0,sizeof(codedata_t) * 3); reg = 0x80; log_printf("genie_reset: ok\n"); }