nes-support mapper 115

This commit is contained in:
zeromus 2012-03-09 04:15:56 +00:00
parent 7d308da245
commit f592fc3748
4 changed files with 71 additions and 2 deletions

View File

@ -124,6 +124,7 @@
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper044.cs" />
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper049.cs" />
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper095.cs" />
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper115.cs" />
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper206.cs" />
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\MMC3_family.cs" />
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\NES-QJ.cs" />

View File

@ -5,7 +5,6 @@ Complete - what it sounds like
Good - thought to be complete
Decent - mostly compatible, but many significant edge cases not tested
Minimal - Important games are playable, but emulation is known not to be complete
~NEEDED~ - Needed for neshawk 1.0
Needed - Someone should do this
Nothing - Not implemented
Junk - Who cares about this. Not enough games, or unlicensed junk or no interesting games
@ -86,7 +85,7 @@ Open bus and bus conflict emulation is not considered complete or thorough in an
107 Unlicensed Complete
112 Misc (CN) Nothing
113 =USELESS= Junk
115 MMC3Variant Nothing
115 MMC3Variant Decent
118 TLSROM Complete
119 TQROM Complete
140 Misc (J) Complete

View File

@ -0,0 +1,68 @@
using System;
using System.IO;
using System.Diagnostics;
namespace BizHawk.Emulation.Consoles.Nintendo
{
public class Mapper115 : MMC3Board_Base
{
public override bool Configure(NES.EDetectionOrigin origin)
{
//analyze board type
switch (Cart.board_type)
{
case "MAPPER115":
break;
default:
return false;
}
BaseSetup();
return true;
}
public override void SyncState(Serializer ser)
{
base.SyncState(ser);
ser.Sync("prg_mode", ref prg_mode);
ser.Sync("prg_page", ref prg_page);
ser.Sync("chr_block_or", ref chr_block_or);
}
bool prg_mode;
int prg_page, chr_block_or;
public override void WriteWRAM(int addr, byte value)
{
base.WriteWRAM(addr, value);
switch (addr & 1)
{
case 0:
prg_mode = value.Bit(7);
prg_page = (value & 0xF) * 2;
break;
case 1:
chr_block_or = (value & 0x1)<<8;
break;
}
}
protected override int Get_PRGBank_8K(int addr)
{
int bank_8k = mapper.Get_PRGBank_8K(addr);
if (prg_mode == false) return bank_8k;
else if (addr < 0x4000)
{
return (addr >> 13) + prg_page;
}
else return bank_8k;
}
protected override int Get_CHRBank_1K(int addr)
{
int bank_1k = base.Get_CHRBank_1K(addr);
return bank_1k | chr_block_or;
}
}
}

View File

@ -105,6 +105,7 @@ static string ClassifyTable = @"
71 -1 -1 -1 -1 CAMERICA-BF9093; Micro Machines (U)
79 -1 -1 -1 -1 AVE-NINA-06; Blackjack (U)
113 -1 -1 -1 -1 AVE-NINA-06; ???
115 -1 -1 -1 -1 MAPPER115
232 -1 -1 -1 -1 CAMERICA-ALGQ; Quattro Adventure
240 -1 -1 -1 -1 MAPPER240
";