Beispiel #1
0
void Mapper202_init(void)
{
 ROM_BANK16(0x8000,0);
 ROM_BANK16(0xc000,0);
 VROM_BANK8(0);
 SetWriteHandler(0x8000,0xFFFF,Mapper202_write);
}
Beispiel #2
0
void Mapper230_init(void)
{
	ROM_BANK16(0x8000,0);
	ROM_BANK16(0xc000,7);
	SetWriteHandler(0x8000, 0xffff, Mapper230_write);
	MapperReset = Mapper230_Reset;
	rom_sw = 1;
}
Beispiel #3
0
static DECLFW(Mapper202_write)
{
 int tmp=(A>>1)&0x7;

 MIRROR_SET(A&1);
 ROM_BANK16(0x8000,tmp);
 ROM_BANK16(0xc000,tmp+(((tmp&0x6)==0x6)?1:0));
 VROM_BANK8(tmp);
}
Beispiel #4
0
void Mapper230_Reset(void)
{
	rom_sw ^= 1; //1 - rom_sw;

	if( rom_sw ) {
		ROM_BANK16(0x8000,0);
		ROM_BANK16(0xc000,7);
	} else {
		ROM_BANK16(0x8000,8);
		ROM_BANK16(0xc000,39);
	}
	MIRROR_SET2(1);
}
Beispiel #5
0
static DECLFW(Mapper230_write)
{
	if( rom_sw ) {
		ROM_BANK16( 0x8000, V&0x07 );
	} else {
		if( V & 0x20 ) {
			ROM_BANK16( 0x8000, (V&0x1F)+8 );
			ROM_BANK16( 0xc000, (V&0x1F)+8 );
		} else {
			ROM_BANK32( ((V&0x1E) >> 1) + 4 );
		}
		MIRROR_SET2( ((V & 0x40) >> 6) );
	}
}
Beispiel #6
0
static DECLFW(Mapper16_write)
{
        A&=0xF;

        if(A<=0x7)
         VROM_BANK1(A<<10,V);
        else if(A==0x8)
         ROM_BANK16(0x8000,V);
        else switch(A) {
         case 0x9: switch(V&3) {
                    case 0x00:MIRROR_SET2(1);break;
                    case 0x01:MIRROR_SET2(0);break;
                    case 0x02:onemir(0);break;
                    case 0x03:onemir(1);break;
                   }
                   break;
         case 0xA:X6502_IRQEnd(FCEU_IQEXT);
                  IRQa=V&1;
                  IRQCount=IRQLatch;
                  break;
         case 0xB:IRQLatch&=0xFF00; IRQLatch|=V;
                  break;
         case 0xC:IRQLatch&=0xFF; IRQLatch|=V<<8;
                  break;
         case 0xD: break;/* Serial EEPROM control port */
 }
}
Beispiel #7
0
static DECLFW(Mapper24_write)
{
        if(swaparoo)
         A=(A&0xFFFC)|((A>>1)&1)|((A<<1)&2);
        if(A>=0x9000 && A<=0xb002)
        {
         VRC6SW(A,V);
         return;
        }
        A&=0xF003;
//        if(A>=0xF000) printf("%d, %d, $%04x:$%02x\n",scanline,timestamp,A,V);
        switch(A&0xF003)
        {
         case 0x8000:ROM_BANK16(0x8000,V);break;
         case 0xB003:
                    switch(V&0xF)
                 {
                  case 0x0:MIRROR_SET2(1);break;
                  case 0x4:MIRROR_SET2(0);break;
                  case 0x8:onemir(0);break;
                  case 0xC:onemir(1);break;
                 }
                 break;
         case 0xC000:ROM_BANK8(0xC000,V);break;
         case 0xD000:VROM_BANK1(0x0000,V);break;
         case 0xD001:VROM_BANK1(0x0400,V);break;
         case 0xD002:VROM_BANK1(0x0800,V);break;
         case 0xD003:VROM_BANK1(0x0c00,V);break;
         case 0xE000:VROM_BANK1(0x1000,V);break;
         case 0xE001:VROM_BANK1(0x1400,V);break;
         case 0xE002:VROM_BANK1(0x1800,V);break;
         case 0xE003:VROM_BANK1(0x1c00,V);break;
         case 0xF000:IRQLatch=V;
                        //acount=0;
                        break;
         case 0xF001:IRQa=V&2;
                     vrctemp=V&1;
                     if(V&2)
                     {
                      IRQCount=IRQLatch;
                      acount=0;
                     }
                     X6502_IRQEnd(FCEU_IQEXT);
                     break;
         case 0xf002:IRQa=vrctemp;
                     X6502_IRQEnd(FCEU_IQEXT);break;
         case 0xF003:break;
  }
}
Beispiel #8
0
static DECLFW(Mapper73_write)
{
 //printf("$%04x:$%02x\n",A,V);

 switch(A&0xF000)
 {
 case 0x8000:
		IRQr&=0xFFF0;IRQr|=(V&0xF);
		break;
  case 0x9000:
		IRQr&=0xFF0F;IRQr|=(V&0xF)<<4;
		break;
  case 0xa000:
		IRQr&=0xF0FF;IRQr|=(V&0xF)<<8;
		break;
  case 0xb000:
		IRQr&=0x0FFF;IRQr|=(V&0xF)<<12;
		break;
  case 0xc000:
		IRQm=V&4;
		IRQx=V&1;
		IRQa=V&2;
		if(IRQa)
		{
			if(IRQm)
			{
				IRQCount&=0xFFFF;
				IRQCount|=(IRQr&0xFF);
			}
			else
			{
				IRQCount=IRQr;
			}
		}
		X6502_IRQEnd(FCEU_IQEXT);
		break;
	case 0xd000:
		X6502_IRQEnd(FCEU_IQEXT);
		IRQa=IRQx;
		break;

  case 0xf000:ROM_BANK16(0x8000,V);break;
 }
}
Beispiel #9
0
void Mapper32_init(void)
{
  ROM_BANK16(0x8000,0);
  ROM_BANK16(0xc000,~0);
  SetWriteHandler(0x8000,0xffff,Mapper32_write);
}
Beispiel #10
0
static void PRGO(void)
{
 uint32 base=(mapbyte1[0]&1)<<4;
 ROM_BANK16(0x8000,(mapbyte2[0]&0xF)|base);
 ROM_BANK16(0xC000,base|0xF);
}
Beispiel #11
0
static void m83prg(void)
{
    ROM_BANK16(0x8000,(mapbyte1[0]&0x3F));
    ROM_BANK16(0xC000,(mapbyte1[0]&0x30)|0xF);
}