Ejemplo n.º 1
0
void NES_mapper248::MMC3_set_CPU_banks()
{
  if(prg_swap())
  {
    set_CPU_banks(num_8k_ROM_banks-2,prg1,prg0,num_8k_ROM_banks-1);
  }
  else
  {
    set_CPU_banks(prg0,prg1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
  }
}
Ejemplo n.º 2
0
void NES_mapper1::MMC1_set_CPU_banks()
{
  set_CPU_banks((MMC1_256K_base << 5) + (MMC1_bank1 & ((256/8)-1)),
                (MMC1_256K_base << 5) + (MMC1_bank2 & ((256/8)-1)),
                (MMC1_256K_base << 5) + (MMC1_bank3 & ((256/8)-1)),
                (MMC1_256K_base << 5) + (MMC1_bank4 & ((256/8)-1)));
}
Ejemplo n.º 3
0
/////////////////////////////////////////////////////////////////////
// Mapper 16
void NES_mapper16::Reset()
{
  patch = 0;

  if(parent_NES->crc32() == 0x3f15d20d) // Famicom Jump 2 - Saikyou no 7 Nin
  {
    patch = 1;
  }

  if(!patch)
  {
    (nes6502_get_current_context())->mem_page[3] = serial_out;
    nes6502_setcontext();
    eeprom_status = 0x00;
    barcode_status = 0x00;
    barcode_enabled = 0;
    //memset(serial_out, eeprom_status | barcode_status, 0x2000);
    serial_out[0] = eeprom_status | barcode_status;
  }

  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

  regs[0] = 0;
  regs[1] = 0;
  regs[2] = 0;

  irq_enabled = 0;
  irq_counter = 0;
  irq_latch = 0;
}
Ejemplo n.º 4
0
/////////////////////////////////////////////////////////////////////
// Mapper 69
void NES_mapper69::Reset()
{
  patch = 0;

  // for Dynamite Batman
  if(parent_NES->crc32() == 0xad28aef6) // Dynamite Batman
  {
    patch = 1;
  }

  // Init ExSound
  parent_NES->apu->SelectExSound(NES_APU_EXSOUND_FME7);

  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

  // set PPU bank pointers
  if(num_1k_VROM_banks)
  {
    set_PPU_banks(0,1,2,3,4,5,6,7);
  }

  irq_enabled = 0;
  irq_counter = 0;
}
Ejemplo n.º 5
0
/////////////////////////////////////////////////////////////////////
// Mapper 25
void NES_mapper25::Reset()
{
  patch = 0;
  
  if(parent_NES->crc32() == 0xea74c587 || // Teenage Mutant Ninja Turtles
     parent_NES->crc32() == 0x5f82cb7d || // Teenage Mutant Ninja Turtles 2
     parent_NES->crc32() == 0xa2e68da8)   // Racer Mini Yonku - Japan Cup
  {
    patch = 1;
  }
  
  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

  // set PPU bank pointers
  if(num_1k_VROM_banks)
  {
    set_PPU_banks(0,1,2,3,4,5,6,7);
  }

  for(int i = 0; i < 8; i++)
    regs[i] = 0;

  regs[8] = 0;
  regs[9] = num_8k_ROM_banks-2;
  regs[10] = 0;

  irq_enabled = 0;
  irq_counter = 0;
  irq_latch = 0;
}
Ejemplo n.º 6
0
/////////////////////////////////////////////////////////////////////
// Mapper 188
void NES_mapper188::Reset()
{
  // set CPU bank pointers
  if(num_8k_ROM_banks > 16)
  {
    set_CPU_banks(0,1,14,15);
  }
  else
  {
    set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
  }
  
  (nes6502_get_current_context ())->mem_page[3] = dummy;
  nes6502_setcontext();
  
  dummy[0] = 0x03; // ?
}
Ejemplo n.º 7
0
/////////////////////////////////////////////////////////////////////
// Mapper 66
void NES_mapper66::Reset()
{
  // set CPU bank pointers
  set_CPU_banks(0,1,2,3);
  set_PPU_banks(0,1,2,3,4,5,6,7);

  if(parent_NES->crc32() == 0xe30552db) // Paris-Dakar Rally Special
  {
    parent_NES->frame_irq_disenabled = 1;
  }
}
Ejemplo n.º 8
0
/////////////////////////////////////////////////////////////////////
// Mapper 92
void NES_mapper92::Reset()
{
  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

  // set PPU bank pointers
  if(num_1k_VROM_banks)
  {
    set_PPU_banks(0,1,2,3,4,5,6,7);
  }
}
Ejemplo n.º 9
0
// Created by rinao
void NES_mapper92::MemoryWrite(uint32 addr, uint8 data)
{
  data = (uint8)addr & 0xff;
  uint8 c_bank = (data & 0x0f) << 1;
  uint8 p_bank = data & 0x0f;

  if (addr >= 0x9000){ // Moero!! ProSoccer
    if ((data & 0xf0) == 0xd0){
      set_CPU_banks(0,1,c_bank,c_bank+1);
    } else if ((data & 0xf0) == 0xe0){
      set_PPU_banks(p_bank*8,p_bank*8+1,p_bank*8+2,p_bank*8+3,p_bank*8+4,p_bank*8+5,p_bank*8+6,p_bank*8+7);
    }
  } else { // Moero!! Proyakyuu '88 ketteiban
    if ((data & 0xf0) == 0xb0){
      set_CPU_banks(0,1,c_bank,c_bank+1);
    } else if ((data & 0xf0) == 0x70){
      set_PPU_banks(p_bank*8,p_bank*8+1,p_bank*8+2,p_bank*8+3,p_bank*8+4,p_bank*8+5,p_bank*8+6,p_bank*8+7);
    }
  }
}
Ejemplo n.º 10
0
void NES_mapper72::MemoryWrite(uint32 addr, uint8 data)
{
  uint8 bank = data & 0x0f;
  if (data & 0x80)
  {
    set_CPU_banks(bank*2, bank*2+1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
  }
  if (data & 0x40)
  {
    set_PPU_banks(bank*8, bank*8+1,bank*8+2,bank*8+3,bank*8+4,bank*8+5,bank*8+6,bank*8+7);
  }
}
Ejemplo n.º 11
0
/////////////////////////////////////////////////////////////////////
// Mapper 230
void NES_mapper230::Reset()
{
  // Contra - 22 Games switch
  if(rom_switch)
  {
    rom_switch = 0;
  }
  else
  {
    rom_switch = 1;
  }

  // set CPU bank pointers
  if(rom_switch)
  {
    set_CPU_banks(0,1,14,15);
  }
  else
  {
    set_CPU_banks(16,17,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
  }
}
Ejemplo n.º 12
0
/////////////////////////////////////////////////////////////////////
// Mapper 17
void NES_mapper17::Reset()
{
  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

  // set PPU bank pointers
  if(num_1k_VROM_banks)
  {
    set_PPU_banks(0,1,2,3,4,5,6,7);
  }

  irq_enabled = 0;
  irq_counter = 0;
  irq_latch = 0;
}
Ejemplo n.º 13
0
void
NES_mapper19::Reset()
{
  patch = 0;
  
  if(parent_NES->crc32() == 0x761ccfb5 || // Digital Devil Story - Megami Tensei 2
     parent_NES->crc32() == 0x1294ab5a)   // Digital Devil Story - Megami Tensei 2
  {
    patch = 1;
  }
  
  if(parent_NES->crc32() == 0x96533999 || // Dokuganryuu Masamune
     parent_NES->crc32() == 0x429fd177 || // Famista '90
     parent_NES->crc32() == 0xdd454208 || // Hydlide 3 - Yami Kara no Houmonsha (J).nes
     parent_NES->crc32() == 0xb1b9e187 || // Kaijuu Monogatari
     parent_NES->crc32() == 0xaf15338f)   // Mindseeker
  {
    patch = 2;
  }
  
  // Init ExSound
  parent_NES->apu->SelectExSound(NES_APU_EXSOUND_N106);
  if (parent_NES->crc32() == 0x14942c06 || // Wagyan Land 3 (j)
      parent_NES->crc32() == 0x02738c68) // Youkai Doutyu ki (j)
  {
    parent_NES->apu->SelectExSound(NES_APU_EXSOUND_NONE);
  }
  
  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
  
  // set PPU bank pointers
  if(num_1k_VROM_banks >= 8)
  {
    set_PPU_bank0(num_1k_VROM_banks-8);
    set_PPU_bank1(num_1k_VROM_banks-7);
    set_PPU_bank2(num_1k_VROM_banks-6);
    set_PPU_bank3(num_1k_VROM_banks-5);
    set_PPU_bank4(num_1k_VROM_banks-4);
    set_PPU_bank5(num_1k_VROM_banks-3);
    set_PPU_bank6(num_1k_VROM_banks-2);
    set_PPU_bank7(num_1k_VROM_banks-1);
  }

  regs[0] = 0;
  regs[1] = 0;
  regs[2] = 0;
}
Ejemplo n.º 14
0
/////////////////////////////////////////////////////////////////////
// Mapper 105
void NES_mapper105::Reset()
{
  set_CPU_banks(0,1,2,3);

  regs[0] = 0x0C;
  regs[1] = 0x00;
  regs[2] = 0x00;
  regs[3] = 0x10;

  bits = 0;
  write_count = 0;

  irq_counter = 0;
  irq_enabled = 0;
  init_state = 0;
}
Ejemplo n.º 15
0
/////////////////////////////////////////////////////////////////////
// Mapper 24
void NES_mapper24::Reset()
{
  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

  // set PPU bank pointers
  if(num_1k_VROM_banks)
  {
    set_PPU_banks(0,1,2,3,4,5,6,7);
  }

  irq_enabled = 0;
  irq_counter = 0;
  irq_latch = 0;

  // add the external sound hardware
  parent_NES->apu->hasExt_VRC6();
}
Ejemplo n.º 16
0
/////////////////////////////////////////////////////////////////////
// Mapper 21
void NES_mapper21::Reset()
{
    // set CPU bank pointers
    set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

    regs[0] = 0;
    regs[1] = 1;
    regs[2] = 2;
    regs[3] = 3;
    regs[4] = 4;
    regs[5] = 5;
    regs[6] = 6;
    regs[7] = 7;
    regs[8] = 0;

    irq_enabled = 0;
    irq_counter = 0;
    irq_latch = 0;
}
Ejemplo n.º 17
0
/////////////////////////////////////////////////////////////////////
// Mapper 65
void NES_mapper65::Reset()
{
    patch = 0;

    // for Kaiketsu Yanchamaru 3
    if(parent_NES->crc32() == 0xe30b7f64) // Kaiketsu Yanchamaru 3 - Taiketsu! Zouringen
    {
        patch = 1;
    }

    // set CPU bank pointers
    set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);

    // set PPU bank pointers
    if(num_1k_VROM_banks)
    {
        set_PPU_banks(0,1,2,3,4,5,6,7);
    }

    irq_enabled = 0;
    irq_counter = 0;
}
Ejemplo n.º 18
0
/////////////////////////////////////////////////////////////////////
// Mapper 86
void NES_mapper86::Reset()
{
  // set CPU bank pointers
  set_CPU_banks(0,1,2,3);
  set_PPU_banks(0,1,2,3,4,5,6,7);
}
Ejemplo n.º 19
0
/////////////////////////////////////////////////////////////////////
// Mapper 94
void NES_mapper94::Reset()
{
  // set CPU bank pointers
  set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
}
Ejemplo n.º 20
0
void NES_mapper248::MemoryWriteSaveRAM(uint32 addr, uint8 data)
{
  set_CPU_banks(2*data,2*data+1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
}
Ejemplo n.º 21
0
/////////////////////////////////////////////////////////////////////
// Mapper 237
void NES_mapper237::Reset()
{
    set_CPU_banks(0,1,num_8k_ROM_banks-2,num_8k_ROM_banks-1);
    set_PPU_banks(0,1,2,3,4,5,6,7);
}