nes: clean up region detect code a bits

This commit is contained in:
goyuken 2012-10-31 18:48:06 +00:00
parent bc22049a19
commit e487e39c9e
1 changed files with 41 additions and 52 deletions

View File

@ -114,7 +114,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
public void HardReset()
{
cpu = new MOS6502X((h) => DisposeList.Add(h));
cpu = new MOS6502X((h) => DisposeList.Add(h));
//cpu = new MOS6502X_CPP((h) => DisposeList.Add(h));
//cpu = new MOS6502XDouble((h) => DisposeList.Add(h));
cpu.SetCallbacks(ReadMemory, ReadMemory, WriteMemory, (h) => DisposeList.Add(h));
@ -123,62 +123,51 @@ namespace BizHawk.Emulation.Consoles.Nintendo
ram = new byte[0x800];
CIRAM = new byte[0x800];
ports = new IPortDevice[2];
ports[0] = new JoypadPortDevice(this,0);
ports[1] = new JoypadPortDevice(this,1);
ports[0] = new JoypadPortDevice(this, 0);
ports[1] = new JoypadPortDevice(this, 1);
apu = new APU(this);
if (magicSoundProvider != null) magicSoundProvider.Dispose();
//magicSoundProvider = new MagicSoundProvider(this);
// set up region
if (!string.IsNullOrEmpty(cart.system))
switch (cart.system)
{
switch (cart.system)
{
case "NES-PAL":
case "NES-PAL-A":
case "NES-PAL-B":
ppu.region = PPU.Region.PAL;
CoreOutputComm.VsyncNum = 50;
CoreOutputComm.VsyncDen = 1;
cpu_sequence = cpu_sequence_PAL;
magicSoundProvider = new MagicSoundProvider(this, 1662607);
break;
case "NES-NTSC":
case "Famicom":
ppu.region = PPU.Region.NTSC;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1789773);
break;
// there's no official name for these in bootgod, not sure what we should use
case "PC10":
case "VS":
ppu.region = PPU.Region.RGB;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1789773);
break;
// this is in bootgod, but not used at all
case "Dendy":
ppu.region = PPU.Region.Dendy;
CoreOutputComm.VsyncNum = 50;
CoreOutputComm.VsyncDen = 1;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1773448);
break;
default:
Console.WriteLine("Unrecognized NES region \"{0}\"! Defaulting to NTSC.");
ppu.region = PPU.Region.NTSC;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1789773);
break;
}
}
else
{
Console.WriteLine("Unknown NES region! Defaulting to NTSC.");
ppu.region = PPU.Region.NTSC;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1789773);
case "NES-PAL":
case "NES-PAL-A":
case "NES-PAL-B":
ppu.region = PPU.Region.PAL;
CoreOutputComm.VsyncNum = 50;
CoreOutputComm.VsyncDen = 1;
cpu_sequence = cpu_sequence_PAL;
magicSoundProvider = new MagicSoundProvider(this, 1662607);
break;
case "NES-NTSC":
case "Famicom":
ppu.region = PPU.Region.NTSC;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1789773);
break;
// there's no official name for these in bootgod, not sure what we should use
case "PC10":
case "VS":
ppu.region = PPU.Region.RGB;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1789773);
break;
// this is in bootgod, but not used at all
case "Dendy":
ppu.region = PPU.Region.Dendy;
CoreOutputComm.VsyncNum = 50;
CoreOutputComm.VsyncDen = 1;
cpu_sequence = cpu_sequence_NTSC;
magicSoundProvider = new MagicSoundProvider(this, 1773448);
break;
case null:
Console.WriteLine("Unknown NES system! Defaulting to NTSC.");
goto case "NES-NTSC";
default:
Console.WriteLine("Unrecognized NES system \"{0}\"! Defaulting to NTSC.", cart.system);
goto case "NES-NTSC";
}
//fceux uses this technique, which presumably tricks some games into thinking the memory is randomized