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);