void nes_reset(int hard) { int i; if(nes->rom == 0) return; //set default read/write handlers for(i=0;i<16;i++) { mem_setread(i,0); mem_setwrite(i,0); } //set rom read handlers (mappers might use these) for(i=8;i<16;i++) mem_setread(i,nes_read_rom); //ram mem_setreadptr(0,nes->ram); mem_setwriteptr(0,nes->ram); mem_setreadptr(1,nes->ram); mem_setwriteptr(1,nes->ram); //ppu mem_setread(2,ppu_read); mem_setwrite(2,ppu_write); mem_setread(3,ppu_read); mem_setwrite(3,ppu_write); //apu mem_setread(4,nes_read_4000); mem_setwrite(4,nes_write_4000); //mapper will set its read/write handlers nes->mapper->reset(hard); nes->frame_irqmode = 0; apu_reset(hard); ppu_reset(); dead6502_reset(); if(hard) { memset(nes->ram,0,0x800); for(i=0;i<32;i++) pal_write(i,startup_pal[i]); } log_message("nes reset ok\n"); }
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"); }