Exemplo n.º 1
0
/*-------------------------------------------------------------------*/
void Map68_Write( WORD wAddr, BYTE byData )
{
  switch( wAddr )
  {
    case 0x8000:  
      /* Set PPU Banks */
      byData %= ( NesHeader.byVRomSize << 2 );
      byData <<= 1;
      PPUBANK[ 0 ] = VROMPAGE( byData );
      PPUBANK[ 1 ] = VROMPAGE( byData + 1);
      InfoNES_SetupChr();
      break;

    case 0x9000:  
      /* Set PPU Banks */
      byData %= ( NesHeader.byVRomSize << 2 );
      byData <<= 1;
      PPUBANK[ 2 ] = VROMPAGE( byData );
      PPUBANK[ 3 ] = VROMPAGE( byData + 1);
      InfoNES_SetupChr();
      break;

    case 0xA000:  
      /* Set PPU Banks */
      byData %= ( NesHeader.byVRomSize << 2 );
      byData <<= 1;
      PPUBANK[ 4 ] = VROMPAGE( byData );
      PPUBANK[ 5 ] = VROMPAGE( byData + 1);
      InfoNES_SetupChr();
      break;

    case 0xB000:  
      /* Set PPU Banks */
      byData %= ( NesHeader.byVRomSize << 2 );
      byData <<= 1;
      PPUBANK[ 6 ] = VROMPAGE( byData );
      PPUBANK[ 7 ] = VROMPAGE( byData + 1);
      InfoNES_SetupChr();
      break;

    case 0xC000:  
      Map68_Regs[ 2 ] = byData;
      Map68_SyncMirror();
      break;

    case 0xD000:  
      Map68_Regs[ 3 ] = byData;
      Map68_SyncMirror();
      break;

    case 0xE000:  
      Map68_Regs[ 0 ] = ( byData & 0x10 ) >> 4;
      Map68_Regs[ 1 ] = byData & 0x03;
      Map68_SyncMirror();
      break;

    case 0xF000:  
      /* Set ROM Banks */
      byData %= NesHeader.byRomSize;
      byData <<= 1;
      ROMBANK0 = ROMPAGE( byData );
      ROMBANK1 = ROMPAGE( byData + 1 );
      break;
  }
}
Exemplo n.º 2
0
void Map68_Write( word wAddr, byte byData )
{
  switch( wAddr )
  {
    case 0x8000:  
      /* Set PPU Banks */
      byData %= ( S.NesHeader.VROMSize << 2 );
      byData <<= 1;
      W.PPUBANK[ 0 ] = VROMPAGE( byData );
      W.PPUBANK[ 1 ] = VROMPAGE( byData + 1);
      NESCore_Develop_Character_Data();
      break;

    case 0x9000:  
      /* Set PPU Banks */
      byData %= ( S.NesHeader.VROMSize << 2 );
      byData <<= 1;
      W.PPUBANK[ 2 ] = VROMPAGE( byData );
      W.PPUBANK[ 3 ] = VROMPAGE( byData + 1);
      NESCore_Develop_Character_Data();
      break;

    case 0xA000:  
      /* Set PPU Banks */
      byData %= ( S.NesHeader.VROMSize << 2 );
      byData <<= 1;
      W.PPUBANK[ 4 ] = VROMPAGE( byData );
      W.PPUBANK[ 5 ] = VROMPAGE( byData + 1);
      NESCore_Develop_Character_Data();
      break;

    case 0xB000:  
      /* Set PPU Banks */
      byData %= ( S.NesHeader.VROMSize << 2 );
      byData <<= 1;
      W.PPUBANK[ 6 ] = VROMPAGE( byData );
      W.PPUBANK[ 7 ] = VROMPAGE( byData + 1);
      NESCore_Develop_Character_Data();
      break;

    case 0xC000:  
      Map68_Regs[ 2 ] = byData;
      Map68_SyncMirror();
      break;

    case 0xD000:  
      Map68_Regs[ 3 ] = byData;
      Map68_SyncMirror();
      break;

    case 0xE000:  
      Map68_Regs[ 0 ] = ( byData & 0x10 ) >> 4;
      Map68_Regs[ 1 ] = byData & 0x03;
      Map68_SyncMirror();
      break;

    case 0xF000:  
      /* Set ROM Banks */
      byData %= S.NesHeader.ROMSize;
      byData <<= 1;
      W.ROMBANK0 = ROMPAGE( byData );
      W.ROMBANK1 = ROMPAGE( byData + 1 );
      break;
  }
}