[NES] clean up mapper 107

This commit is contained in:
zeromus 2011-06-13 08:58:38 +00:00
parent db2ba34c01
commit 7705e3f6f1
3 changed files with 52 additions and 43 deletions

View File

@ -83,7 +83,7 @@ Open bus and bus conflict emulation is not considered complete or thorough in an
096 Misc (J) Nothing
097 Misc (J) Nothing (easy)
105 NES-EVENT ~NEEDED~
107 Misc Nothing (easy)
107 Unlicensed Complete
112 Misc (CN) Nothing
113 =USELESS= Junk
115 MMC3Variant Nothing

View File

@ -4,60 +4,66 @@ using System.Diagnostics;
namespace BizHawk.Emulation.Consoles.Nintendo
{
/*
Registers:
---------------------------
I do not know whether or not this mapper suffers from bus conflicts. Use caution!
class Mapper107 : NES.NESBoardBase
{
//configuration
int prg_bank_mask_32k, chr_bank_mask_8k;
$8000-FFFF: [PPPP PPP.]
[CCCC CCCC]
P = Selects 32k PRG @ $8000
C = Selects 8k CHR @ $0000
//state
int prg_bank_32k, chr_bank_8k;
This is very strange. Bits 1-7 seem to be used by both CHR and PRG.
public override void SyncState(Serializer ser)
{
base.SyncState(ser);
ser.Sync("prg_bank_32k", ref prg_bank_32k);
ser.Sync("chr_bank_8k", ref chr_bank_8k);
}
Games:
Magic Dragon
*/
class Mapper107 : NES.NESBoardBase
{
int prg, chr;
public override bool Configure(NES.EDetectionOrigin origin)
{
//configure
public override bool Configure(NES.EDetectionOrigin origin)
{
//configure
switch (Cart.board_type)
{
case "Mapper107":
AssertPrg(128); AssertChr(64); AssertWram(8); AssertVram(0); AssertBattery(false);
break;
default:
return false;
}
return true;
prg_bank_mask_32k = (Cart.prg_size / 32) - 1;
chr_bank_mask_8k = (Cart.chr_size / 8) - 1;
SetMirrorType(Cart.pad_h, Cart.pad_v);
return true;
}
public override byte ReadPPU(int addr)
{
if (addr < 0x2000)
{
int ofs = addr & ((1 << 13) - 1);
addr = (chr_bank_8k << 13) | ofs;
return VROM[addr];
}
else return base.ReadPPU(addr);
}
public override byte ReadPPU(int addr)
{
return VRAM[addr + (chr * 0x2000)];
}
public override byte ReadPRG(int addr)
{
int ofs = addr & ((1 << 15) - 1);
addr = (prg_bank_32k << 15) | ofs;
return ROM[addr];
}
public override byte ReadPRG(int addr)
{
return VROM[addr + (prg * 0x8000)];
}
public override void WritePRG(int addr, byte value)
{
chr_bank_8k = value;
prg_bank_32k = value >> 1;
chr_bank_8k &= chr_bank_mask_8k;
prg_bank_32k &= prg_bank_mask_32k;
}
public override void WriteWRAM(int addr, byte value)
{
chr = value;
prg = addr >> 1;
base.WriteWRAM(addr, value);
}
public override void SyncState(Serializer ser)
{
base.SyncState(ser);
ser.Sync("prg", ref prg);
ser.Sync("chr", ref chr);
}
}
}
}

View File

@ -2289,5 +2289,8 @@ sha1:0AE47BD83202A5A2235B0BC16278F56D66038AB5 Deathbots (U) NES board=AVE-NINA
;these roms are in goodNES but theyre junk
sha1:4D6117577CE301BB987C5C32FEEF7B132A21B046 Afro Man (Mega Man 3 Hack) (UNL) NES board=TXROM-HOMEBREW;PRG=256;CHR=128;WRAM=8
;other assorted roms
sha1:92D9695FEB774F60965A8303CFE3E6AAEE7B7B62 Magic Dragon (Unl) NES board=Mapper107;PRG=128;CHR=64;WRAM=8;PAD_H=1
#include gamedb_neshomebrew.txt
#include gamedb_user.txt