예제 #1
0
void fme7_sync()
{
	int i;

	//special case prg page
	if(prg[0] & 0x40)
		if(prg[0] & 0x80)
			mem_setsram8(6,0);
		else
			mem_unsetcpu8(6);
	else
		mem_setprg8(6,prg[0] & 0x3F);

	//set prg pages
	mem_setprg8(0x8,prg[1]);
	mem_setprg8(0xA,prg[2]);
	mem_setprg8(0xC,prg[3]);
	mem_setprg8(0xE,-1);

	//set chr pages
	for(i=0;i<8;i++)
		mem_setchr1(i,chr[i]);

	switch(mirror) {
		case 0: ppu_setmirroring(MIRROR_V); break;
		case 1: ppu_setmirroring(MIRROR_H); break;
		case 2: ppu_setmirroring(MIRROR_1L); break;
		case 3: ppu_setmirroring(MIRROR_1H); break;
	}
}
예제 #2
0
파일: c_mmc2.c 프로젝트: ericmckean/nesemu
void mmc2_sync()
{
	mem_setprg8(0x8,PRGBank);
	mem_setprg8(0xA,0xD);
	mem_setprg8(0xC,0xE);
	mem_setprg8(0xE,0xF);
	mem_setchr4(0,LatchA[LatchAState]);
	mem_setchr4(4,LatchB[LatchBState]);
	ppu_setmirroring(Mirroring);
}
예제 #3
0
static void sync()
{
	int i;

	mem_setchr2(0,chr[0]);
	mem_setchr2(2,chr[1]);
	for(i=4;i<8;i++)
		mem_setchr1(i,chr[i - 2]);
	mem_setprg8(0x8,prg[0]);
	mem_setprg8(0xA,prg[1]);
	mem_setprg16(0xC,0xFF);
}
예제 #4
0
파일: ks202.c 프로젝트: Aleyr/nesemu2
static void sync()
{
	int i;

	mem_setwram8(6,0);
	mem_setprg8(0x8,prg[0]);
	mem_setprg8(0xA,prg[1]);
	mem_setprg8(0xC,prg[2]);
	mem_setprg8(0xE,0xFF);
	for(i=0;i<8;i++)
		mem_setchr1(i,chr[i]);
}
예제 #5
0
static void sync()
{
	int i;

	mem_setprg8(0x8,prg[0]);
	mem_setprg8(0xA,prg[1]);
	mem_setprg16(0xC,0x1F);
	for(i=0;i<8;i++)
		mem_setchr1(i,chr[i] >> map[4]);
	if(mirror & 1)
		ppu_setmirroring(MIRROR_H);
	else
		ppu_setmirroring(MIRROR_V);
}
예제 #6
0
파일: 34x3.c 프로젝트: Aleyr/nesemu2
static void sync_34x3()
{
	u8 *reg = namcot108_getregs();

	mem_setchr2(0,(reg[0] & 0x3F) >> 1);
	mem_setchr2(2,(reg[1] & 0x3F) >> 1);
	mem_setchr1(4,reg[2] | 0x40);
	mem_setchr1(5,reg[3] | 0x40);
	mem_setchr1(6,reg[4] | 0x40);
	mem_setchr1(7,reg[5] | 0x40);
	mem_setprg8(0x8,reg[6]);
	mem_setprg8(0xA,reg[7]);
	mem_setprg16(0xC,0xFF);
}
예제 #7
0
static void sync()
{
	int i;

	mem_setprg8(0x8,prg[0]);
	mem_setprg8(0xA,prg[1]);
	mem_setprg8(0xC,prg[2]);
	mem_setprg8(0xE,-1);
	for(i=0;i<8;i++)
	   mem_setchr1(i,chr[i]);
	if(mirror & 0x80)
	   ppu_setmirroring(MIRROR_V);
	else
	   ppu_setmirroring(MIRROR_H);
}
예제 #8
0
static void sync()
{
	int i;

	mem_setprg16(0x8,prg[0]);
	mem_setprg8(0xC,prg[1]);
	mem_setprg8(0xE,0xFF);
	for(i=0;i<8;i++)
		mem_setchr1(i,chr[i]);
	switch(mirror & 0xC) {
		case 0x0: mem_setmirroring(MIRROR_V); break;
		case 0x4: mem_setmirroring(MIRROR_H); break;
		case 0x8: mem_setmirroring(MIRROR_1L); break;
		case 0xC: mem_setmirroring(MIRROR_1H); break;
	}
}
예제 #9
0
static void sync()
{
	int i;

	if(nes->cart->wram.size)
		mem_setwram4(7,0);
	mem_setprg8(0x8,prg[0]);
	mem_setprg8(0xA,prg[1]);
	mem_setprg16(0xC,0xFF);
	for(i=0;i<8;i++)
		mem_setchr1(i,chr[i] >> map[4]);
	switch(mirror) {
		case 0:	mem_setmirroring(MIRROR_V);	break;
		case 1:	mem_setmirroring(MIRROR_H);	break;
		case 2:	mem_setmirroring(MIRROR_1L);	break;
		case 3:	mem_setmirroring(MIRROR_1H);	break;
	}
}
예제 #10
0
static void sync()
{
	int i;

	for(i=0;i<4;i++)
		mem_setprg8(8 + (i * 2),prg[i]);
	for(i=0;i<8;i++)
		mem_setchr1(i,chr[i]);
	ppu_setmirroring(mirror);
}
예제 #11
0
static void sync()
{
	int i;
	u8 chrxor = (control & 0x80) >> 5;

	if((control & 0x40) == 0) {
		mem_setprg8(0x8,prg[0]);
		mem_setprg8(0xA,prg[1]);
		mem_setprg8(0xC,prg[2]);
	}
	else {
		mem_setprg8(0xA,prg[0]);
		mem_setprg8(0xC,prg[1]);
		mem_setprg8(0x8,prg[2]);
	}
	mem_setprg8(0xE,-1);
	for(i=0;i<8;i++)
		mem_setchr1(i ^ chrxor,chr[i]);
	if((control & 0x80) == 0) {
		mem_setchr2(0 ^ chrxor,chr[0] >> 1);
		mem_setchr2(2 ^ chrxor,chr[2] >> 1);
	}
예제 #12
0
파일: c_mmc5.c 프로젝트: ericmckean/nesemu
static void syncprg()
{
	mem_setprg8(0x6,prg[0] & 0x7F);
	switch(prgsize) {
		case 0:
			mem_setprg32(8,prg[4]);
			break;
		case 1:
			mem_setprg16(0x8,prg[2]);
			mem_setprg16(0xC,prg[2]);
			break;
		case 2:
			mem_setprg16(0x8,prg[2]);
			mem_setprg8(0xC,prg[3]);
			mem_setprg8(0xE,prg[4]);
			break;
		case 3:
			mem_setprg8(0x8,prg[1]);
			mem_setprg8(0xA,prg[2]);
			mem_setprg8(0xC,prg[3]);
			mem_setprg8(0xE,prg[4]);
			break;
	}
}
예제 #13
0
static void syncprg()
{
	if((bankmode & 0x80) == 0)	//dont map in rom at $6000-7FFF
		mem_unsetcpu8(6);
	switch(bankmode & 7) {
		case 0:
			mem_setprg8(0x6,(prg[3] << 2) + 3);
			mem_setprg8(0x8,0xFC);
			mem_setprg8(0xA,0xFD);
			mem_setprg8(0xC,0xFE);
			mem_setprg8(0xE,0xFF);
			break;
		case 1:
			mem_setprg8(0x6,(prg[3] << 1) + 1);
			mem_setprg8(0x8,prg[1]);
			mem_setprg8(0xA,prg[1] + 1);
			mem_setprg8(0xC,0xFE);
			mem_setprg8(0xE,0xFF);
			break;
		case 2:
			mem_setprg8(0x6,prg[3]);
			mem_setprg8(0x8,prg[0]);
			mem_setprg8(0xA,prg[1]);
			mem_setprg8(0xC,prg[2]);
			mem_setprg8(0xE,0xFF);
			break;
		case 3:
			mem_setprg8(0x6,reverse(prg[3]));
			mem_setprg8(0x8,reverse(prg[0]));
			mem_setprg8(0xA,reverse(prg[1]));
			mem_setprg8(0xC,reverse(prg[2]));
			mem_setprg8(0xE,0xFF);
			break;
		case 4:
			mem_setprg8(0x6,(prg[3] << 2) + 3);
			mem_setprg8(0x8,0xFC);
			mem_setprg8(0xA,0xFD);
			mem_setprg8(0xC,0xFE);
			mem_setprg8(0xE,0xFF);
			break;
		case 5:
			mem_setprg8(0x6,(prg[3] << 1) + 1);
			mem_setprg8(0x8,prg[1]);
			mem_setprg8(0xA,prg[1] + 1);
			mem_setprg8(0xC,prg[3]);
			mem_setprg8(0xE,prg[3] + 1);
			break;
		case 6:
			mem_setprg8(0x6,prg[3]);
			mem_setprg8(0x8,prg[0]);
			mem_setprg8(0xA,prg[1]);
			mem_setprg8(0xC,prg[2]);
			mem_setprg8(0xE,prg[3]);
			break;
		case 7:
			mem_setprg8(0x6,reverse(prg[3]));
			mem_setprg8(0x8,reverse(prg[0]));
			mem_setprg8(0xA,reverse(prg[1]));
			mem_setprg8(0xC,reverse(prg[2]));
			mem_setprg8(0xE,reverse(prg[3]));
			break;
	}
}