From 9bfe61a9d446436a917f500bca087a85345e45cc Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Tue, 1 Oct 2019 18:36:39 -0400 Subject: [PATCH] GBHawk: more bug fixes --- .../Consoles/Nintendo/GBHawk/Audio.cs | 3 ++ .../Nintendo/GBHawk/GBHawk.ISaveRam.cs | 7 ++-- .../Consoles/Nintendo/GBHawk/GBHawk.cs | 2 +- .../GBHawkLink/GBHawkLink.ISaveRam.cs | 29 ++++++++------- .../GBHawkLink3x/GBHawkLink3x.ISaveRam.cs | 35 ++++++++++--------- 5 files changed, 44 insertions(+), 32 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Audio.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Audio.cs index ea55349bc8..537f03ae7b 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Audio.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/Audio.cs @@ -211,6 +211,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk SQ1_vol_state &= 0xF; if ((value & 0xF8) == 0) { SQ1_enable = SQ1_swp_enable = false; SQ1_output = 0; } + if (!SQ1_enable && (SQ1_st_vol == 15)) { SQ1_output = 2; } Audio_Regs[NR12] = value; break; case 0xFF13: // NR13 (freq low) @@ -301,6 +302,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk SQ2_vol_state &= 0xF; if ((value & 0xF8) == 0) { SQ2_enable = false; SQ2_output = 0; } + if (!SQ2_enable && (SQ2_st_vol == 15)) { SQ2_output = 2; } Audio_Regs[NR22] = value; break; case 0xFF18: // NR23 (freq low) @@ -429,6 +431,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk NOISE_vol_state &= 0xF; if ((value & 0xF8) == 0) { NOISE_enable = false; NOISE_output = 0; } + if (!NOISE_enable && (NOISE_st_vol == 15)) { NOISE_output = 2; } Audio_Regs[NR42] = value; break; case 0xFF22: // NR43 (shift) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ISaveRam.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ISaveRam.cs index 29193575cd..f1fcca72b7 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ISaveRam.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.ISaveRam.cs @@ -19,8 +19,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk public void StoreSaveRam(byte[] data) { - Buffer.BlockCopy(data, 0, cart_RAM, 0, data.Length); - Console.WriteLine("loading SRAM here"); + if (_syncSettings.Use_SRAM) + { + Buffer.BlockCopy(data, 0, cart_RAM, 0, data.Length); + Console.WriteLine("loading SRAM here"); + } } public bool SaveRamModified diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.cs index 615b4da28c..d8218377cc 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.cs @@ -163,7 +163,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk Buffer.BlockCopy(rom, 0x100, header, 0, 0x50); - if (is_GBC && (header[0x43] == 0)) + if (is_GBC && ((header[0x43] != 0x80) && (header[0x43] != 0xC0))) { ppu = new GBC_PPU_GB(); } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.ISaveRam.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.ISaveRam.cs index 1a92caf11b..45dff8cd95 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.ISaveRam.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.ISaveRam.cs @@ -53,21 +53,24 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink public void StoreSaveRam(byte[] data) { - if ((L.cart_RAM != null) && (R.cart_RAM == null)) + if (linkSyncSettings.Use_SRAM) { - Buffer.BlockCopy(data, 0, L.cart_RAM, 0, L.cart_RAM.Length); - } - else if ((R.cart_RAM != null) && (L.cart_RAM == null)) - { - Buffer.BlockCopy(data, 0, R.cart_RAM, 0, R.cart_RAM.Length); - } - else if ((R.cart_RAM != null) && (L.cart_RAM != null)) - { - Buffer.BlockCopy(data, 0, L.cart_RAM, 0, L.cart_RAM.Length); - Buffer.BlockCopy(data, L.cart_RAM.Length, R.cart_RAM, 0, R.cart_RAM.Length); - } + if ((L.cart_RAM != null) && (R.cart_RAM == null)) + { + Buffer.BlockCopy(data, 0, L.cart_RAM, 0, L.cart_RAM.Length); + } + else if ((R.cart_RAM != null) && (L.cart_RAM == null)) + { + Buffer.BlockCopy(data, 0, R.cart_RAM, 0, R.cart_RAM.Length); + } + else if ((R.cart_RAM != null) && (L.cart_RAM != null)) + { + Buffer.BlockCopy(data, 0, L.cart_RAM, 0, L.cart_RAM.Length); + Buffer.BlockCopy(data, L.cart_RAM.Length, R.cart_RAM, 0, R.cart_RAM.Length); + } - Console.WriteLine("loading SRAM here"); + Console.WriteLine("loading SRAM here"); + } } public bool SaveRamModified diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink3x/GBHawkLink3x.ISaveRam.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink3x/GBHawkLink3x.ISaveRam.cs index 17d9d3ce31..d4a7264484 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink3x/GBHawkLink3x.ISaveRam.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink3x/GBHawkLink3x.ISaveRam.cs @@ -68,26 +68,29 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x public void StoreSaveRam(byte[] data) { - int temp = 0; - - if (L.cart_RAM != null) + if (Link3xSyncSettings.Use_SRAM) { - Buffer.BlockCopy(data, temp, L.cart_RAM, 0, L.cart_RAM.Length); - temp += L.cart_RAM.Length; - } + int temp = 0; - if (C.cart_RAM != null) - { - Buffer.BlockCopy(data, temp, C.cart_RAM, 0, C.cart_RAM.Length); - temp += C.cart_RAM.Length; - } + if (L.cart_RAM != null) + { + Buffer.BlockCopy(data, temp, L.cart_RAM, 0, L.cart_RAM.Length); + temp += L.cart_RAM.Length; + } - if (R.cart_RAM != null) - { - Buffer.BlockCopy(data, temp, R.cart_RAM, 0, R.cart_RAM.Length); - } + if (C.cart_RAM != null) + { + Buffer.BlockCopy(data, temp, C.cart_RAM, 0, C.cart_RAM.Length); + temp += C.cart_RAM.Length; + } - Console.WriteLine("loading SRAM here"); + if (R.cart_RAM != null) + { + Buffer.BlockCopy(data, temp, R.cart_RAM, 0, R.cart_RAM.Length); + } + + Console.WriteLine("loading SRAM here"); + } } public bool SaveRamModified