diff --git a/Assets/dll/libgambatte.dll b/Assets/dll/libgambatte.dll index afd74223e8..c1a36d26cd 100644 Binary files a/Assets/dll/libgambatte.dll and b/Assets/dll/libgambatte.dll differ diff --git a/Assets/dll/libgambatte.so b/Assets/dll/libgambatte.so index d0aeaefca8..4bc46fd240 100644 Binary files a/Assets/dll/libgambatte.so and b/Assets/dll/libgambatte.so differ diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IEmulator.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IEmulator.cs index 728ec1adff..861bd1d536 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IEmulator.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IEmulator.cs @@ -227,47 +227,31 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, oo & 0xff); // ShiftIn } - if (CanIR(one, two)) + if (LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 259) != 0) // InfraredTrigger { - if (LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 259) != 0) // InfraredTrigger + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 260); // ack + if (LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 261) != 0) // GetOut { - LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 260); // ack - if (LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 261) != 0) // GetOut - { - LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 262); // ShiftInOn - } - else - { - LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 263); // ShiftInOff - } + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 262); // ShiftInOn } - - if (LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 259) != 0) // InfraredTrigger + else { - LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 260); // ack - if (LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 261) != 0) // GetOut - { - LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 262); // ShiftInOn - } - else - { - LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 263); // ShiftInOff - } + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 263); // ShiftInOff } } - } - private bool CanIR(int one, int two) - { - // the GB and GBA have no IR port, so ignore them for now - // todo: cart based IR - if (IsCGBMode(one) && IsCGBMode(two)) + if (LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 259) != 0) // InfraredTrigger { - return _syncSettings._linkedSyncSettings[one].ConsoleMode is not Gameboy.GambatteSyncSettings.ConsoleModeType.GBA - && _syncSettings._linkedSyncSettings[two].ConsoleMode is not Gameboy.GambatteSyncSettings.ConsoleModeType.GBA; + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 260); // ack + if (LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 261) != 0) // GetOut + { + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 262); // ShiftInOn + } + else + { + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 263); // ShiftInOff + } } - - return false; } public int Frame { get; private set; } diff --git a/submodules/gambatte b/submodules/gambatte index 110b3eaab5..9f8f438c72 160000 --- a/submodules/gambatte +++ b/submodules/gambatte @@ -1 +1 @@ -Subproject commit 110b3eaab52667dd37d9c2df4bc72b820587e421 +Subproject commit 9f8f438c727dd7aa52a6a53b4c1ab388bf529e24