From 125c11c57cea961d27c91db59b26bc7d0d7cd515 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Thu, 2 May 2024 17:17:17 -0700 Subject: [PATCH] Update RetroAchievement memory map for GB/C see https://github.com/RetroAchievements/rcheevos/pull/329 --- .../RetroAchievements.Memory.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs index 076ad40a3e..59d1a8eca9 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs @@ -440,9 +440,9 @@ namespace BizHawk.Client.EmuHawk break; case ConsoleID.GB: case ConsoleID.GBC: - if (domains.Has("SGB CARTROM")) + if (domains.Has("SGB CARTROM")) // old/new BSNES { - // old BSNES doesn't have as many domains + // old BSNES doesn't have as many domains (hence TryAddDomain use) // but it should still suffice in practice mfs.Add(new(domains["SGB CARTROM"], 0, 0x8000)); TryAddDomain("SGB VRAM", 0x2000); @@ -453,6 +453,11 @@ namespace BizHawk.Client.EmuHawk TryAddDomain("SGB System Bus", 0xE0); TryAddDomain("SGB HRAM", 0x80); TryAddDomain("SGB IE"); + mfs.Add(new NullMemFunctions(0x6000)); + if (domains.Has("SGB CARTRAM") && domains["SGB CARTRAM"].Size > 0x2000) + { + mfs.Add(new(domains["SGB CARTRAM"], 0x2000, domains["SGB CARTRAM"].Size - 0x2000)); + } } else { @@ -475,7 +480,7 @@ namespace BizHawk.Client.EmuHawk cartRam = "Cart RAM A"; wram = "Main RAM A"; } - else // Gambatte / GBHawk + else // Gambatte / GBHawk / SameBoy { sysBus = "System Bus"; cartRam = "CartRAM"; @@ -486,9 +491,12 @@ namespace BizHawk.Client.EmuHawk TryAddDomain(cartRam, 0x2000); mfs.Add(new(domains[wram], 0x0000, 0x2000)); mfs.Add(new(domains[sysBus], 0xE000, 0x2000)); - if (domains[wram].Size == 0x8000) + mfs.Add(domains[wram].Size == 0x8000 + ? new MemFunctions(domains[wram], 0x2000, 0x6000) + : new NullMemFunctions(0x6000)); + if (domains.Has(cartRam) && domains[cartRam].Size > 0x2000) { - mfs.Add(new(domains[wram], 0x2000, 0x6000)); + mfs.Add(new(domains[cartRam], 0x2000, domains[cartRam].Size - 0x2000)); } } break;