Beispiel #1
0
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");
}
Beispiel #2
0
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);
}
Beispiel #3
0
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");
}