Example #1
0
File: 76.cpp Project: TijmenW/tom7
static DECLFW(Mapper76_write)
{
        switch(A&0xE001){
        case 0x8000:
         MMC3_cmd = V;
         break;
        case 0x8001:
                switch(MMC3_cmd&0x07){
                case 2: VROM_BANK2(0x000,V);break;
                case 3: VROM_BANK2(0x800,V);break;
                case 4: VROM_BANK2(0x1000,V);break;
                case 5: VROM_BANK2(0x1800,V);break;
                case 6:
                        if(MMC3_cmd&0x40) ROM_BANK8(0xC000,V);
                        else ROM_BANK8(0x8000,V);
                        break;
                case 7: ROM_BANK8(0xA000,V);
                        break;
               }
               break;
        case 0xA000:
        MIRROR_SET(V&1);
        break;
 }
}
Example #2
0
static DECLFW(Mapper65_write)
{
 //if(A>=0x9000 && A<=0x9006)
 // printf("$%04x:$%02x, %d\n",A,V,scanline);
 switch(A)
 {
  //default: printf("$%04x:$%02x\n",A,V);
  //        break;
  case 0x8000:ROM_BANK8(0x8000,V);break;
 // case 0x9000:printf("$%04x:$%02x\n",A,V);MIRROR_SET2((V>>6)&1);break;
  case 0x9001:MIRROR_SET(V>>7);break;
  case 0x9003:IRQa=V&0x80;X6502_IRQEnd(FCEU_IQEXT);break;
  case 0x9004:IRQCount=IRQLatch;break;
  case 0x9005:          IRQLatch&=0x00FF;
                        IRQLatch|=V<<8;
                        break;
  case 0x9006:          IRQLatch&=0xFF00;IRQLatch|=V;
                        break;
  case 0xB000:VROM_BANK1(0x0000,V);break;
  case 0xB001:VROM_BANK1(0x0400,V);break;
  case 0xB002:VROM_BANK1(0x0800,V);break;
  case 0xB003:VROM_BANK1(0x0C00,V);break;
  case 0xB004:VROM_BANK1(0x1000,V);break;
  case 0xB005:VROM_BANK1(0x1400,V);break;
  case 0xB006:VROM_BANK1(0x1800,V);break;
  case 0xB007:VROM_BANK1(0x1C00,V);break;
  case 0xa000:ROM_BANK8(0xA000,V);break;
  case 0xC000:ROM_BANK8(0xC000,V);break;
 }
 //MIRROR_SET2(1);
}
Example #3
0
static DECLFW(Mapper23_write)
{
 if((A&0xF000)==0x8000)
 {
  if(K4sel&2)
   ROM_BANK8(0xC000,V);
  else
   ROM_BANK8(0x8000,V);
  } 
  else if((A&0xF000)==0xA000) 
   ROM_BANK8(0xA000,V);
  else
  {
   A|=((A>>2)&0x3)|((A>>4)&0x3)|((A>>6)&0x3);
   A&=0xF003;
   if(A>=0xb000 && A<=0xe003)
   {
    int x=((A>>1)&1)|((A-0xB000)>>11);

    K4buf[x]&=(0xF0)>>((A&1)<<2);
    K4buf[x]|=(V&0xF)<<((A&1)<<2);
    VROM_BANK1(x<<10,K4buf[x]);
   }
   else 
    switch(A)
Example #4
0
void Mapper40_init(void)
{
  ROM_BANK8(0x6000,(~0)-1);
  ROM_BANK8(0x8000,(~0)-3);
  ROM_BANK8(0xa000,(~0)-2);
  SetWriteHandler(0x8000,0xffff,Mapper40_write);
  SetReadHandler(0x6000,0x7fff,CartBR);
  MapIRQHook=Mapper40IRQ;
}
Example #5
0
void Mapper83_init(void)
{
    ROM_BANK8(0xc000,0x1e);
    ROM_BANK8(0xe000,0x1f);

    MapIRQHook=m83IRQHook;

    SetReadHandler(0x5100,0x5103,rdlow);
    SetWriteHandler(0x5100,0x5103,wrlow);
    SetWriteHandler(0x8000,0xffff,Mapper83_write);
    mapbyte1[1]=0xF;
}
Example #6
0
static DECLFW(Mapper33_write)
{
        //printf("%04x:%02x, %d\n",A,V,scanline);

        A&=0xF003;
        if(A>=0xA000 && A<=0xA003)
         VROM_BANK1(0x1000+((A&3)<<10),V);
        else switch(A)
        {
          case 0x8000:if(!is48) MIRROR_SET((V>>6)&1);
                     ROM_BANK8(0x8000,V);
                     break;
         case 0x8001:ROM_BANK8(0xA000,V); break;
         case 0x8002:VROM_BANK2(0x0000,V);break;
         case 0x8003:VROM_BANK2(0x0800,V);break;
        }
}
Example #7
0
static DECLFW(Mapper40_write)
{
 switch(A&0xe000)
 {
  case 0x8000:IRQa=0;IRQCount=0;X6502_IRQEnd(FCEU_IQEXT);break;
  case 0xa000:IRQa=1;break;
  case 0xe000:ROM_BANK8(0xc000,V&7);break;
 }
}
Example #8
0
static void Synco(void)
{
 uint32 x;
 if(mapbyte1[0]<=2)
  MIRROR_SET2(1);
 else
  MIRROR_SET2(0);
 for(x=0x6000;x<0x10000;x+=8192)
  ROM_BANK8(x,Get8K(x));
}
Example #9
0
static DECLFW(Mapper69_write)
{
 switch(A&0xE000)
 {
  case 0x8000:sunselect=V;break;
  case 0xa000:
              sunselect&=0xF;
              if(sunselect<=7)
               VROM_BANK1(sunselect<<10,V);
              else
               switch(sunselect&0x0f)
               {
                case 8:
                       sungah=V;
                       if(V&0x40)
                        {
                         if(V&0x80) // Select WRAM
                          setprg8r(0x10,0x6000,0);
                        }
                        else
                         setprg8(0x6000,V);
                        break;
                case 9:ROM_BANK8(0x8000,V);break;
                case 0xa:ROM_BANK8(0xa000,V);break;
                case 0xb:ROM_BANK8(0xc000,V);break;
                case 0xc:
                         switch(V&3)
                         {
                          case 0:MIRROR_SET2(1);break;
                          case 1:MIRROR_SET2(0);break;
                          case 2:onemir(0);break;
                          case 3:onemir(1);break;
                         }
                         break;
             case 0xd:IRQa=V;X6502_IRQEnd(FCEU_IQEXT);break;
             case 0xe:IRQCount&=0xFF00;IRQCount|=V;X6502_IRQEnd(FCEU_IQEXT);break;
             case 0xf:IRQCount&=0x00FF;IRQCount|=V<<8;X6502_IRQEnd(FCEU_IQEXT);break;
             }
             break;
 }
}
Example #10
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;
  }
}
Example #11
0
static DECLFW(Mapper32_write)
{
 switch(A>>12)
 {
  case 0x8:
           mapbyte1[1]=V;
           if(IREMCon) {ROM_BANK8(0xc000,V);ROM_BANK8(0x8000,~1);}
           else {ROM_BANK8(0x8000,V);ROM_BANK8(0xc000,~1);}
           break;
  case 0x9:IREMCon=(V>>1)&1;
           if(IREMCon) {ROM_BANK8(0xc000,mapbyte1[1]);ROM_BANK8(0x8000,~1);}
           else {ROM_BANK8(0x8000,mapbyte1[1]); ROM_BANK8(0xc000,~1);}
           MIRROR_SET(V&1);
           break;
  case 0xa:ROM_BANK8(0xA000,V);
           break;
 }

 if((A&0xF000)==0xb000)
  VROM_BANK1((A&0x7)<<10,V);
}
Example #12
0
static DECLFW(Mapper83_write)
{
//printf("$%04x:$%02x\n",A,V);
    switch(A)
    {
    case 0x8000:
    case 0xB000:
    case 0xB0FF:
    case 0xB1FF:
    {
        mapbyte1[0]=V;
        m83prg();
        m83chr();
    }
    break;
    case 0x8100:
        mapbyte3[0]=V&0x80;
        switch(V&0x3)
        {
        case 0x00:
            MIRROR_SET2(1);
            break;
        case 0x01:
            MIRROR_SET2(0);
            break;
        case 0x02:
            onemir(0);
            break;
        case 0x03:
            onemir(1);
            break;
        }
        break;
    case 0x8200:
        IRQCount&=0xFF00;
        IRQCount|=V;
        X6502_IRQEnd(FCEU_IQEXT);
        break;
    case 0x8201:
        IRQa=mapbyte3[0];
        IRQCount&=0xFF;
        IRQCount|=V<<8;
        break;
    case 0x8300:
        ROM_BANK8(0x8000,V);
        break;
    case 0x8301:
        ROM_BANK8(0xA000,V);
        break;
    case 0x8302:
        ROM_BANK8(0xC000,V);
        break;
    case 0x8310:
        mapbyte2[0]=V;
        m83chr();
        break;
    case 0x8311:
        mapbyte2[1]=V;
        m83chr();
        break;
    case 0x8312:
        mapbyte2[2]=V;
        m83chr();
        break;
    case 0x8313:
        mapbyte2[3]=V;
        m83chr();
        break;
    case 0x8314:
        mapbyte2[4]=V;
        m83chr();
        break;
    case 0x8315:
        mapbyte2[5]=V;
        m83chr();
        break;
    case 0x8316:
        mapbyte2[6]=V;
        m83chr();
        break;
    case 0x8317:
        mapbyte2[7]=V;
        m83chr();
        break;
    case 0x8318:
        mapbyte1[1]=V;
        m83prg();
        break;
    }
// printf("$%04x:$%02x, $%04x\n",A,V,X.PC.W);

}