From 7143b2c83f88165d4766db423d1fc60873f0f315 Mon Sep 17 00:00:00 2001 From: zeromus Date: Wed, 14 Nov 2018 21:10:01 -0500 Subject: [PATCH] GBHawk CDL - hook up mappers, test with MBC5 --- .../Nintendo/GBHawk/GBHawk.ICodeDataLog.cs | 18 ++++------ .../Nintendo/GBHawk/Mappers/MapperBase.cs | 16 +++++++++ .../Nintendo/GBHawk/Mappers/Mapper_MBC5.cs | 33 +++++++++++++++++++ 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ICodeDataLog.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ICodeDataLog.cs index 012947f436..051aa995ee 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ICodeDataLog.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ICodeDataLog.cs @@ -62,8 +62,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk } else { - //return; mapper.ReadMemory(addr); - //TODO + mapper.MapCDL(addr, flags); return; } } @@ -101,8 +100,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk } else { - //return mapper.ReadMemory(addr); - //TODO + mapper.MapCDL(addr, flags); return; } } @@ -115,22 +113,19 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk } else { - //return mapper.ReadMemory(addr); - //TODO + mapper.MapCDL(addr, flags); return; } } else { - //return mapper.ReadMemory(addr); - //TODO + mapper.MapCDL(addr, flags); return; } } else if (addr < 0x8000) { - //return mapper.ReadMemory(addr); - //TODO + mapper.MapCDL(addr, flags); return; } else if (addr < 0xA000) @@ -139,8 +134,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk } else if (addr < 0xC000) { - //return mapper.ReadMemory(addr); - //TODO + mapper.MapCDL(addr, flags); return; } else if (addr < 0xD000) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/MapperBase.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/MapperBase.cs index 89b8ce1034..d813ec52fa 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/MapperBase.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/MapperBase.cs @@ -1,6 +1,8 @@ using BizHawk.Common; using System; +using BizHawk.Emulation.Common.Components.LR35902; + namespace BizHawk.Emulation.Cores.Nintendo.GBHawk { public class MapperBase @@ -44,5 +46,19 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk public virtual void RTC_Get(byte value, int index) { } + + public virtual void MapCDL(ushort addr, LR35902.eCDLog_Flags flags) + { + } + + protected void SetCDLROM(LR35902.eCDLog_Flags flags, int cdladdr) + { + Core.DoCDL2(flags, "ROM", cdladdr); + } + + protected void SetCDLRAM(LR35902.eCDLog_Flags flags, int cdladdr) + { + Core.DoCDL2(flags, "CartRAM", cdladdr); + } } } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/Mapper_MBC5.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/Mapper_MBC5.cs index cbaf5bc601..72fb7d2808 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/Mapper_MBC5.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Mappers/Mapper_MBC5.cs @@ -2,6 +2,8 @@ using BizHawk.Common.NumberExtensions; using System; +using BizHawk.Emulation.Common.Components.LR35902; + namespace BizHawk.Emulation.Cores.Nintendo.GBHawk { // MBC5, common mapper for GBC games @@ -63,6 +65,37 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk } } + public override void MapCDL(ushort addr, LR35902.eCDLog_Flags flags) + { + if (addr < 0x4000) + { + SetCDLROM(flags, addr); + } + else if (addr < 0x8000) + { + SetCDLROM(flags, (addr - 0x4000) + ROM_bank * 0x4000); + } + else + { + if (Core.cart_RAM != null) + { + if (RAM_enable && (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length)) + { + SetCDLRAM(flags, (addr - 0xA000) + RAM_bank * 0x2000); + } + else + { + return; + } + + } + else + { + return; + } + } + } + public override byte PeekMemory(ushort addr) { return ReadMemory(addr);