[NES] clean up UxROM gamedb parameters

This commit is contained in:
zeromus 2011-03-02 02:54:06 +00:00
parent 7919bb8647
commit e9622b1f60
2 changed files with 19 additions and 16 deletions

View File

@ -12,13 +12,13 @@ namespace BizHawk.Emulation.Consoles.Nintendo.Boards
//Duck Tales
//Metal Gear
//TODO - simplify logic and handle fewer (known) cases (e.g. no IsPowerOfTwo, but rather hardcoded cases)
//TODO - look for a mirror=H UNROM--maybe there are none? this may be fixed to the board type.
public class UxROM : NES.NESBoardBase
{
//configuration
string type;
int pagemask;
int prg_mask;
int cram_mask;
//state
@ -32,29 +32,32 @@ namespace BizHawk.Emulation.Consoles.Nintendo.Boards
public override void Initialize(NES.RomInfo romInfo, NES nes)
{
base.Initialize(romInfo, nes);
Debug.Assert(Util.IsPowerOfTwo(RomInfo.PRG_Size));
Debug.Assert(RomInfo.PRG_Size == 8 || RomInfo.PRG_Size == 16);
Debug.Assert(RomInfo.CRAM_Size == -1, "don't specify in gamedb, it is redundant");
if (type == "UNROM") pagemask = 7;
else if (type == "UOROM") pagemask = 15;
if (type == "UNROM") prg_mask = 7;
else if (type == "UOROM") prg_mask = 15;
else throw new InvalidOperationException("Invalid UxROM type");
//guess CRAM size (this is a very confident guess!)
//(should these guesses be here?) (is this a guess? maybe all these boards have cram)
if (RomInfo.CRAM_Size == -1) RomInfo.CRAM_Size = 8;
//regardless of what the board is equipped to handle, reduce the mask to how much ROM is actually present
int rom_prg_mask = (RomInfo.PRG_Size - 1);
if (rom_prg_mask < prg_mask) prg_mask = rom_prg_mask;
//these boards always have 8KB of CRAM
RomInfo.CRAM_Size = 8;
cram = new byte[RomInfo.CRAM_Size * 1024];
cram_mask = cram.Length - 1;
}
public override byte ReadPRG(int addr)
{
int block = addr >> 14;
int page = block == 1 ? pagemask : prg;
int page = block == 1 ? prg_mask : prg;
int ofs = addr & 0x3FFF;
return RomInfo.ROM[(page << 14) | ofs];
}
public override void WritePRG(int addr, byte value)
{
prg = value & pagemask;
prg = value & prg_mask;
}
public override byte ReadPPU(int addr)

View File

@ -2343,14 +2343,14 @@ E12F3FD85F96F9A61FE38626A1B5CEFA Spot (J) NES board=SNROM;PRG=8
;UNROM
29E5E1A5F8B400773EF9D959044456B2 3-D Battles of World Running (U) NES board=UNROM;mirror=V;PRG=8
CE4D5BDA746A72E02FCFD547492551BC JJ - Tobidase Daisakusen Part 2 (J) NES board=UNROM;mirror=V;PRG=8
4DE82CFCEADBF1A5E693B669B1221107 Mega Man (U) NES board=UNROM;mirror=V;PRG=8;CHR=0;CRAM=8
756170BA1E06FA26C60D10114DC6A5AE Castlevania (Rev 0) (U) NES board=UNROM;mirror=V;PRG=8;CHR=0;CRAM=8
728E05F245AB8B7FE61083F6919DC485 Castlevania (Rev 1) (U) NES board=UNROM;mirror=V;PRG=8;CHR=0;CRAM=8
5A5C2F4F1CAFB1F55A8DC0D5AD4550E5 Contra (U) NES board=UNROM;mirror=V;PRG=8;CHR=0;CRAM=8
B480855FFF883B20BA403A2009A7F13C Duck Tales (U) NES board=UNROM;mirror=V;PRG=8;CHR=0;CRAM=8
4DE82CFCEADBF1A5E693B669B1221107 Mega Man (U) NES board=UNROM;mirror=V;PRG=8
756170BA1E06FA26C60D10114DC6A5AE Castlevania (Rev 0) (U) NES board=UNROM;mirror=V;PRG=8
728E05F245AB8B7FE61083F6919DC485 Castlevania (Rev 1) (U) NES board=UNROM;mirror=V;PRG=8
5A5C2F4F1CAFB1F55A8DC0D5AD4550E5 Contra (U) NES board=UNROM;mirror=V;PRG=8
B480855FFF883B20BA403A2009A7F13C Duck Tales (U) NES board=UNROM;mirror=V;PRG=8
;UOROM
C0C74CC78E6CD34775A83CC21A0C75B5 Paperboy 2 (U) NES board=UOROM;mirror=H;PRG=16;CHR=0;CRAM=8
C0C74CC78E6CD34775A83CC21A0C75B5 Paperboy 2 (U) NES board=UOROM;mirror=H;PRG=16;CRAM=8
;mapper66? mhrom? wtf??
;27100B746D50E6AE6FBAE2C794173240 Metal Gear (U) NES board=UXROM;mirror=H;PRG=8;CHR=0;CRAM=8;bug=1