Пример #1
0
static void reset(int hard)
{
	reg = 0;
	mmc3_reset(C_MMC3,sync,hard);
	mem_unsetcpu8(6);
	mem_setwritefunc(6,write67);
	mem_setwritefunc(7,write67);
}
Пример #2
0
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();
}
Пример #3
0
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);
	}
}
Пример #4
0
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();
}
Пример #5
0
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();
}
Пример #6
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);
}
Пример #7
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");
}