From 7518ce962bc23575838608387203f1b13fa13474 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Sun, 1 Aug 2021 06:54:19 -0700 Subject: [PATCH] [Gambatte] Many Updates (#2823) * [Gambatte] Port setregs from upstream, implement SetCpuRegister, misc cleanup/fixes elsewhere * [Gambatte] Add more proper uninitalized AGB WRAM, based of a GBP dump * cleanup Gambatte's CpuSetRegister (credits to stringflow) * additional Gambatte code cleanup * [Gambatte] cleanup tracelogger code readability * fix * Initalize VideoBuffer with a white screen instead of a black screen, misc video fixes * misc cleanup * [Gambatte] hdma work * [Gambatte] add warning for recording a movie without a bios enabled. doing this as I am annoyed enough from disabled bios being the default and you cannot say anything about the profile system since recent submissions have shown that ineffective * misc cleanup * [Gambatte] init state tweaks * [Gambatte] add setting for patching similar bioses * fix this Co-authored-by: TiKevin83 Co-authored-by: alyosha-tas --- Assets/dll/libgambatte.dll | Bin 197120 -> 230400 bytes .../Nintendo/Gameboy/Gambatte.IDebuggable.cs | 96 +++++++----------- .../Nintendo/Gameboy/Gambatte.IEmulator.cs | 4 +- .../Nintendo/Gameboy/Gambatte.ISettable.cs | 5 + .../Nintendo/Gameboy/Gambatte.ITraceable.cs | 3 +- .../Gameboy/Gambatte.IVideoProvider.cs | 12 ++- .../Consoles/Nintendo/Gameboy/Gambatte.cs | 69 +++++++------ .../Gameboy/GambatteLink.IVideoProvider.cs | 13 ++- .../Nintendo/Gameboy/GambattePrinter.cs | 14 +-- .../Consoles/Nintendo/Gameboy/LibGambatte.cs | 10 +- submodules/gambatte | 2 +- 11 files changed, 126 insertions(+), 102 deletions(-) diff --git a/Assets/dll/libgambatte.dll b/Assets/dll/libgambatte.dll index 1e85ef2872dd32257e4645826d6ccac7e0092ba6..f1a29c47da3ba64c6ba3f631f8e442b445279a59 100644 GIT binary patch delta 86955 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%0A`6r|n#`$I>M;p<-yqg3wI2inNBQ{3RzjJ7S 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 delta 55830 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 diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IDebuggable.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IDebuggable.cs index 9dd9bec100..d4c827303f 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IDebuggable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IDebuggable.cs @@ -14,21 +14,27 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy return new Dictionary { - ["PC"] = (ushort)(data[(int)LibGambatte.RegIndicies.PC] & 0xffff), - ["SP"] = (ushort)(data[(int)LibGambatte.RegIndicies.SP] & 0xffff), - ["A"] = (byte)(data[(int)LibGambatte.RegIndicies.A] & 0xff), - ["B"] = (byte)(data[(int)LibGambatte.RegIndicies.B] & 0xff), - ["C"] = (byte)(data[(int)LibGambatte.RegIndicies.C] & 0xff), - ["D"] = (byte)(data[(int)LibGambatte.RegIndicies.D] & 0xff), - ["E"] = (byte)(data[(int)LibGambatte.RegIndicies.E] & 0xff), - ["F"] = (byte)(data[(int)LibGambatte.RegIndicies.F] & 0xff), - ["H"] = (byte)(data[(int)LibGambatte.RegIndicies.H] & 0xff), - ["L"] = (byte)(data[(int)LibGambatte.RegIndicies.L] & 0xff) + ["PC"] = (ushort)(data[(int)LibGambatte.RegIndices.PC] & 0xffff), + ["SP"] = (ushort)(data[(int)LibGambatte.RegIndices.SP] & 0xffff), + ["A"] = (byte)(data[(int)LibGambatte.RegIndices.A] & 0xff), + ["B"] = (byte)(data[(int)LibGambatte.RegIndices.B] & 0xff), + ["C"] = (byte)(data[(int)LibGambatte.RegIndices.C] & 0xff), + ["D"] = (byte)(data[(int)LibGambatte.RegIndices.D] & 0xff), + ["E"] = (byte)(data[(int)LibGambatte.RegIndices.E] & 0xff), + ["F"] = (byte)(data[(int)LibGambatte.RegIndices.F] & 0xff), + ["H"] = (byte)(data[(int)LibGambatte.RegIndices.H] & 0xff), + ["L"] = (byte)(data[(int)LibGambatte.RegIndices.L] & 0xff) }; } - [FeatureNotImplemented] - public void SetCpuRegister(string register, int value) => throw new NotImplementedException(); + public void SetCpuRegister(string register, int value) + { + int[] data = new int[10]; + LibGambatte.gambatte_getregs(GambatteState, data); + LibGambatte.RegIndices index = (LibGambatte.RegIndices)Enum.Parse(typeof(LibGambatte.RegIndices), register); + data[(int)index] = value & (index <= LibGambatte.RegIndices.SP ? 0xffff : 0xff); + LibGambatte.gambatte_setregs(GambatteState, data); + } public bool CanStep(StepType type) => false; @@ -37,46 +43,15 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy public long TotalExecutedCycles => Math.Max((long)_cycleCount, (long)callbackCycleCount); - private MemoryCallbackSystem _memorycallbacks = new MemoryCallbackSystem(new[] { "System Bus" }); + private const string systemBusScope = "System Bus"; + + private MemoryCallbackSystem _memorycallbacks = new MemoryCallbackSystem(new[] { systemBusScope }); public IMemoryCallbackSystem MemoryCallbacks => _memorycallbacks; private LibGambatte.MemoryCallback _readcb; private LibGambatte.MemoryCallback _writecb; private LibGambatte.MemoryCallback _execcb; - private void ReadCallback(uint address, ulong cycleOffset) - { - callbackCycleCount = _cycleCount + cycleOffset; - - if (MemoryCallbacks.HasReads) - { - uint flags = (uint)MemoryCallbackFlags.AccessRead; - MemoryCallbacks.CallMemoryCallbacks(address, 0, flags, "System Bus"); - } - } - - private void WriteCallback(uint address, ulong cycleOffset) - { - callbackCycleCount = _cycleCount + cycleOffset; - - if (MemoryCallbacks.HasWrites) - { - uint flags = (uint)MemoryCallbackFlags.AccessWrite; - MemoryCallbacks.CallMemoryCallbacks(address, 0, flags,"System Bus"); - } - } - - private void ExecCallback(uint address, ulong cycleOffset) - { - callbackCycleCount = _cycleCount + cycleOffset; - - if (MemoryCallbacks.HasExecutes) - { - uint flags = (uint)MemoryCallbackFlags.AccessExecute; - MemoryCallbacks.CallMemoryCallbacks(address, 0, flags, "System Bus"); - } - } - /// /// for use in dual core /// @@ -87,19 +62,26 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy private void InitMemoryCallbacks() { - _readcb = new LibGambatte.MemoryCallback(ReadCallback); - _writecb = new LibGambatte.MemoryCallback(WriteCallback); - _execcb = new LibGambatte.MemoryCallback(ExecCallback); - _memorycallbacks.ActiveChanged += RefreshMemoryCallbacks; - } + LibGambatte.MemoryCallback CreateCallback(MemoryCallbackFlags flags, Func getHasCBOfType) + { + var rawFlags = (uint)flags; + return (address, cycleOffset) => + { + callbackCycleCount = _cycleCount + cycleOffset; + if (getHasCBOfType()) MemoryCallbacks.CallMemoryCallbacks(address, 0, rawFlags, systemBusScope); + }; + } - private void RefreshMemoryCallbacks() - { - var mcs = MemoryCallbacks; + _readcb = CreateCallback(MemoryCallbackFlags.AccessRead, () => MemoryCallbacks.HasReads); + _writecb = CreateCallback(MemoryCallbackFlags.AccessWrite, () => MemoryCallbacks.HasWrites); + _execcb = CreateCallback(MemoryCallbackFlags.AccessExecute, () => MemoryCallbacks.HasExecutes); - LibGambatte.gambatte_setreadcallback(GambatteState, mcs.HasReads ? _readcb : null); - LibGambatte.gambatte_setwritecallback(GambatteState, mcs.HasWrites ? _writecb : null); - LibGambatte.gambatte_setexeccallback(GambatteState, mcs.HasExecutes ? _execcb : null); + _memorycallbacks.ActiveChanged += () => + { + LibGambatte.gambatte_setreadcallback(GambatteState, MemoryCallbacks.HasReads ? _readcb : null); + LibGambatte.gambatte_setwritecallback(GambatteState, MemoryCallbacks.HasWrites ? _writecb : null); + LibGambatte.gambatte_setexeccallback(GambatteState, MemoryCallbacks.HasExecutes ? _execcb : null); + }; } } } diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IEmulator.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IEmulator.cs index d142bd0423..d27c14011d 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IEmulator.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IEmulator.cs @@ -64,7 +64,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy case GambatteSyncSettings.FrameLengthType.UserDefinedFrames: while (true) { - // target number of samples to emit: input length minus whatever overflow + // target number of samples to emit: input length float inputFrameLength = controller.AxisValue("Input Length"); uint inputFrameLengthInt = (uint)Math.Floor(inputFrameLength); if (inputFrameLengthInt == 0) @@ -89,7 +89,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy if (frameOverflow >= inputFrameLengthInt) { - frameOverflow -= inputFrameLengthInt; + frameOverflow = 0; break; } } diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ISettable.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ISettable.cs index 24479aba0f..5fe12e2b51 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ISettable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ISettable.cs @@ -100,6 +100,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy [DefaultValue(false)] public bool EnableBIOS { get; set; } + [DisplayName("Patch Similar BootROMs")] + [Description("If true, BootROMs (or \"BIOSes\") are patched a similar other. GBC is patched to GBA. DMG is patched to MGB (and vice versa). Should not be used for unofficial BootROMs. Ignored (treated as false) when booting without a BIOS.")] + [DefaultValue(false)] + public bool PatchBIOS { get; set; } + public enum ConsoleModeType { Auto, diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs index b0f33766d0..7d2313fb47 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.ITraceable.cs @@ -14,6 +14,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy { int[] s = new int[14]; System.Runtime.InteropServices.Marshal.Copy(_s, s, 0, 14); + ushort PC = (ushort)s[1]; Tracer.Put(new( disassembly: LR35902.Disassemble( @@ -34,7 +35,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy s[8] & 0xff, s[9] & 0xff, s[10] & 0xff, - s[11] != 0 ? "skip" : "", + s[11] != 0 ? "prefetched" : "", s[12] & 0xffffff, s[13] & 0xff))); } diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IVideoProvider.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IVideoProvider.cs index 93e24191d5..a314e1452d 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IVideoProvider.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.IVideoProvider.cs @@ -5,7 +5,17 @@ /// /// stored image of most recent frame /// - private readonly int[] VideoBuffer = new int[160 * 144]; + private readonly int[] VideoBuffer = CreateVideoBuffer(); + + private static int[] CreateVideoBuffer() + { + var b = new int[160 * 144]; + for (int i = 0; i < (160 * 144); i++) + { + b[i] = -1; // GB/C screen is disabled on bootup, so it always starts as white, not black + } + return b; + } public int[] GetVideoBuffer() { diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs index 852baae8d3..19513e5b03 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using BizHawk.Common; using BizHawk.Common.BufferExtensions; @@ -45,7 +46,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy try { - _syncSettings = (GambatteSyncSettings)syncSettings ?? new GambatteSyncSettings(); + _syncSettings = syncSettings ?? new GambatteSyncSettings(); LibGambatte.LoadFlags flags = 0; @@ -73,22 +74,31 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy byte[] bios; string biosSystemId; string biosId; - if ((flags & LibGambatte.LoadFlags.CGB_MODE) == LibGambatte.LoadFlags.CGB_MODE) - { - biosSystemId = "GBC"; - biosId = _syncSettings.ConsoleMode == GambatteSyncSettings.ConsoleModeType.GBA ? "AGB" : "World"; - IsCgb = true; - } - else - { - biosSystemId = "GB"; - biosId = "World"; - IsCgb = false; - } + + IsCgb = (flags & LibGambatte.LoadFlags.CGB_MODE) == LibGambatte.LoadFlags.CGB_MODE; + biosSystemId = IsCgb ? "GBC" : "GB"; + biosId = ((_syncSettings.ConsoleMode == GambatteSyncSettings.ConsoleModeType.GBA) && !_syncSettings.PatchBIOS) ? "AGB" : "World"; if (_syncSettings.EnableBIOS) { bios = comm.CoreFileProvider.GetFirmwareOrThrow(new(biosSystemId, biosId), "BIOS Not Found, Cannot Load. Change SyncSettings to run without BIOS."); + if (_syncSettings.PatchBIOS) + { + if (!IsCgb) + { + bios[0xFD] ^= 0xFE; // patch from dmg<->mgb + } + else if (_syncSettings.ConsoleMode == GambatteSyncSettings.ConsoleModeType.GBA) + { + // patch from cgb->agb re + bios[0xF3] ^= 0x03; + for (var i = 0xF5; i < 0xFB;) + { + bios[i] = bios[++i]; + } + bios[0xFB] ^= 0x74; + } + } if (LibGambatte.gambatte_loadbios(GambatteState, bios, (uint)bios.Length) != 0) { throw new InvalidOperationException($"{nameof(LibGambatte.gambatte_loadbios)}() returned non-zero (bios error)"); @@ -96,6 +106,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy } else { + if (DeterministicEmulation) // throw a warning if a movie is being recorded with the bios disabled + { + comm.ShowMessage("Detected disabled BIOS during movie recording. It is recommended to use a BIOS for movie recording. Change Sync Settings to run with a BIOS."); + } flags |= LibGambatte.LoadFlags.NO_BIOS; } @@ -133,6 +147,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy { cgbDmgColors = ColorsFromTitleHash(file); } + _settings.GBPalette = cgbDmgColors; ChangeDMGColors(cgbDmgColors); } @@ -295,27 +310,19 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy _inputCallbacks = ics; } + // needs to match the reverse order of Libgambatte's button enum + static readonly IReadOnlyList BUTTON_ORDER_IN_BITMASK = new string[] { "Down", "Up", "Left", "Right", "Start", "Select", "B", "A" }; + internal void FrameAdvancePrep(IController controller) { // update our local copy of the controller data - CurrentButtons = 0; - - if (controller.IsPressed("Up")) - CurrentButtons |= LibGambatte.Buttons.UP; - if (controller.IsPressed("Down")) - CurrentButtons |= LibGambatte.Buttons.DOWN; - if (controller.IsPressed("Left")) - CurrentButtons |= LibGambatte.Buttons.LEFT; - if (controller.IsPressed("Right")) - CurrentButtons |= LibGambatte.Buttons.RIGHT; - if (controller.IsPressed("A")) - CurrentButtons |= LibGambatte.Buttons.A; - if (controller.IsPressed("B")) - CurrentButtons |= LibGambatte.Buttons.B; - if (controller.IsPressed("Select")) - CurrentButtons |= LibGambatte.Buttons.SELECT; - if (controller.IsPressed("Start")) - CurrentButtons |= LibGambatte.Buttons.START; + byte b = 0; + for (var i = 0; i < 8; i++) + { + b <<= 1; + if (controller.IsPressed(BUTTON_ORDER_IN_BITMASK[i])) b |= 1; + } + CurrentButtons = (LibGambatte.Buttons)b; // the controller callback will set this to false if it actually gets called during the frame IsLagFrame = true; diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IVideoProvider.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IVideoProvider.cs index 40721eaf40..af12f10ffd 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IVideoProvider.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IVideoProvider.cs @@ -17,6 +17,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy public int[] GetVideoBuffer() => VideoBuffer; - private readonly int[] VideoBuffer = new int[160 * 2 * 144]; + private readonly int[] VideoBuffer = CreateVideoBuffer(); + + private static int[] CreateVideoBuffer() + { + var b = new int[160 * 2 * 144]; + for (int i = 0; i < (160 * 2 * 144); i++) + { + b[i] = -1; // GB/C screen is disabled on bootup, so it always starts as white, not black + } + return b; + } + } } diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambattePrinter.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambattePrinter.cs index 91f305dba5..232fd2b3c6 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambattePrinter.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambattePrinter.cs @@ -56,7 +56,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy private readonly byte[] image = new byte[160 * 200]; private ushort image_offset; - private byte compression_run_lenth; + private byte compression_run_length; private bool compression_run_is_compressed; public GambattePrinter(Gameboy gb, PrinterCallback callback) @@ -136,27 +136,27 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy { if (compression) { - if (compression_run_lenth == 0) + if (compression_run_length == 0) { compression_run_is_compressed = (byte_received & 0x80) != 0; - compression_run_lenth = (byte)((byte_received & 0x7F) + 1 + (compression_run_is_compressed ? 1 : 0)); + compression_run_length = (byte)((byte_received & 0x7F) + 1 + (compression_run_is_compressed ? 1 : 0)); } else if (compression_run_is_compressed) { - while (compression_run_lenth > 0) + while (compression_run_length > 0) { command_data[command_length++] = byte_received; - compression_run_lenth--; + compression_run_length--; if (command_length == GB_PRINTER_MAX_COMMAND_LENGTH) { - compression_run_lenth = 0; + compression_run_length = 0; } } } else { command_data[command_length++] = byte_received; - compression_run_lenth--; + compression_run_length--; } } else diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibGambatte.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibGambatte.cs index 74c7245136..bc528700a7 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibGambatte.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/LibGambatte.cs @@ -432,8 +432,16 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy /// length of at least 10, please [DllImport("libgambatte.dll", CallingConvention = CallingConvention.Cdecl)] public static extern void gambatte_getregs(IntPtr core, int[] dest); + + /// + /// set reg and flag values + /// + /// opaque state pointer + /// length of at least 10, please + [DllImport("libgambatte.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern void gambatte_setregs(IntPtr core, int[] src); - public enum RegIndicies : int + public enum RegIndices : int { PC, SP, A, B, C, D, E, F, H, L } diff --git a/submodules/gambatte b/submodules/gambatte index 1f125d8d00..1fe731bd6f 160000 --- a/submodules/gambatte +++ b/submodules/gambatte @@ -1 +1 @@ -Subproject commit 1f125d8d00174546a4dc4b95752ad2f4a63fce61 +Subproject commit 1fe731bd6f0ca40737aa2e577d791ea6b084829a