From 72ad5c7b0bd429e8a0fb13aefc25bf48b49e4dfb Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Sat, 20 Nov 2021 23:47:06 -0800 Subject: [PATCH] GBC IR Emulation for GambatteLink --- Assets/dll/libgambatte.dll | Bin 514560 -> 517120 bytes .../Gameboy/GambatteLink.IEmulator.cs | 132 +++++++++++------- .../Gameboy/GambatteLink.ISettable.cs | 4 +- .../Gameboy/GambatteLink.IStatable.cs | 60 ++++---- .../Consoles/Nintendo/Gameboy/GambatteLink.cs | 32 ++--- submodules/gambatte | 2 +- 6 files changed, 133 insertions(+), 97 deletions(-) diff --git a/Assets/dll/libgambatte.dll b/Assets/dll/libgambatte.dll index 62875589c49f77722a34ff5c9cc5064bf8c4de06..adb133794b04e8c28911b8a703d7df2c714049cf 100644 GIT binary patch delta 109284 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⪼Tm|RPvS$spP$wh}rm0Y)0Ro z*?c$$UqcN~VHXDf+_8cW;d8hKUHA?5`h`!AkKi)Q#XZ=DOv8$xfUn@Dk{|crDGdCj zeS%Nn3fztd@FEWUm16?qa6Z0{d+-$A_^=hlX}Ap6po$;k3H0A+>)>Qez@@kzOHjJs zkH_)GN30npV>Y_*Af83)QP%*B#Z>$UR^ut8e(f$3PQ^r&a5L^j1AjnjQz{vPb8r>z z!7s37ll}iUVfb%S$=Rr237*7(kGU9O4%XtY81`F7IcDP9co5HFz-B9fvoRSn@NIk# z8}VnPf9Jx4DYy*{Jo7vIf0uCZ<1QZf626JM@pEj)-oJN1;u743@8ehKXu9YikLg&2 zXK}z2reiEF#&xLSVZ4L`p0um*d3>|v#}Dx&Qct-^;M16md+-=~ZAm4E<6L|lcVZo$ z!fQC_X}_FsHok!Cu^bO!J95uB@^K^9V;crN>!3&JLO;HVAL0@G5pUXRmtZ`m;ZAJE z%gAnX0OD(yhX?Q?_I=JTC7g;+|7F4kJdgBtp9BTW z#=UqE$NbUt01NOWhW^Q!fFc%QGxm8tmAoJ0@kLyZ<=BAj7|`G(3{;a)t99oY9TPDz}LFJU>J!oVF~4`XmCZo@C|HyrY! z;|y0~5!RRd_!9=c1^>ZH^=dLNygcht$LL+5?1r*Ie%>X|5u#% z$?2*6SDrE>wO1wBdISzX9*=Ojf)D|1fQwX&pnHA8-Hfdh1M^Vp_+){r9x4;jSu&bl&jx{YoA0?3p~E z?ZIsiZF_jzxwgl(J-+QpZNI)+Q`_ZA+g)w1YI{T5kN3Eg>}*eX^U$6ZIjZeb+CIJQ z32lF_?bqM%Ywhx!wr_5GVcWH~SGE0dq>+NkL;O0z3oQZ zgO2K%KKv+GxcHZEPngtpx$Sjrcm8|N0z=v!)%L`;=d`_|?VW9p%=Ro-ZoAfYvu)ox z@2N2H=pJ{qy}j+h@9LR8uI*`UcelNx}CAN~KAPpg0VtSbHQoL2wx zS!MsXkLLfYr5pE~-eiIXRL#ewSnpK{vh51l@G+`He^eu-qL*La=M z>*0UPpS|R=Pk(Vr&s&f5#(PlObHe}6<=p>kjs6c;VCAAlYId)EcK@eP_D?SUbEuWQ zX7pXt=a`DF7n7zgE-#+BxUzWu;_BkA#kIw&7S|WATijTj=&~_R#n6mQHD4`MCsm8p zq&Dx^M^jgq%KdiFYTmi^&eolscct$dbXQX87yYYAYst7|2~W|j_Jnq4|# zX@2SWrG=%FmKK*zU0Pl`b7^Ji{H3*}tCrT6u3Oqzx@l>1>DHyKr8}3VmknB$SvGW8 zcG-w!xn*OP<(G|LR$Ml9S$WyaWtC;~msOW_EvqeCwXD=wwrN>&+16#PWjmK8-JRX( z?m^wz?h)O&?lIl@?(yA)?n&Ln?y23C?)lx-?yl}y_p0uC_qy&z_onVv_s;HQdFS%< z@+;s} zoy(J2zhsI{qCX6I(5$Qc!y^9*6yUZPIPU+os-DzHR1h z)!VvmtKGKhw)$=BZcA>@+&=X7?Cm3NpEqGsYIv!-sJ5uSsIjQEXy>A2ac1$*#o5Ip z7Uvg_UtCx`>A&_*&%S9c-nzK8INddKIyuE&t Hdg=cG>8$WL delta 105746 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%0D;zu%HY=3P$jG_b&j;Cse&rWN{%8vN|JooTh) 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 YT{vf9Y%U))=fBtS-@)$wRM!jt4@fWzbpQYW 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 d04d74a5fa..430d963e0d 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IEmulator.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IEmulator.cs @@ -31,34 +31,34 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy } } - bool cableDiscoSignalNew = controller.IsPressed("Toggle Cable Connection"); - if (cableDiscoSignalNew && !_cableDiscoSignal) + bool linkDiscoSignalNew = controller.IsPressed("Toggle Link Connection"); + if (linkDiscoSignalNew && !_linkDiscoSignal) { - _cableConnected ^= true; - Console.WriteLine("Cable connect status to {0}", _cableConnected); + _linkConnected ^= true; + Console.WriteLine("Link connect status to {0}", _linkConnected); } - _cableDiscoSignal = cableDiscoSignalNew; + _linkDiscoSignal = linkDiscoSignalNew; if (_numCores > 2) { - bool cableShiftSignalNew = controller.IsPressed("Toggle Cable Shift"); - if (cableShiftSignalNew && !_cableShiftSignal) + bool linkShiftSignalNew = controller.IsPressed("Toggle Link Shift"); + if (linkShiftSignalNew && !_linkShiftSignal) { - _cableShifted ^= true; - Console.WriteLine("Cable shift status to {0}", _cableShifted); + _linkShifted ^= true; + Console.WriteLine("Link shift status to {0}", _linkShifted); } - _cableShifted = cableShiftSignalNew; + _linkShifted = linkShiftSignalNew; - bool cableSpaceSignalNew = controller.IsPressed("Toggle Cable Spacing"); - if (cableSpaceSignalNew && !_cableSpaceSignal) + bool linkSpaceSignalNew = controller.IsPressed("Toggle Link Spacing"); + if (linkSpaceSignalNew && !_linkSpaceSignal) { - _cableSpaced ^= true; - Console.WriteLine("Cable spacing status to {0}", _cableSpaceSignal); + _linkSpaced ^= true; + Console.WriteLine("Link spacing status to {0}", _linkSpaceSignal); } - _cableSpaceSignal = cableSpaceSignalNew; + _linkSpaceSignal = linkSpaceSignalNew; } for (int i = 0; i < _numCores; i++) @@ -75,7 +75,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy fixed (short* sbuff = &SoundBuffer[0]) { - const int Step = 32; // could be 1024 for GB + const int Step = 4; int[] n = new int[_numCores]; for (int i = 0; i < _numCores; i++) @@ -111,7 +111,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy } // poll link cable statuses, but not when the cable is disconnected - if (!_cableConnected) + if (!_linkConnected) { continue; } @@ -120,51 +120,41 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy { case 2: { - TryCableBytewiseTransfer(P1, P2); - TryCableBytewiseTransfer(P2, P1); + TryLinkTransfer(P1, P2); break; } case 3: { - if (_cableSpaced) + if (_linkSpaced) { - TryCableBytewiseTransfer(P1, P3); - TryCableBytewiseTransfer(P3, P1); + TryLinkTransfer(P1, P3); } - else if (_cableShifted) + else if (_linkShifted) { - TryCableBytewiseTransfer(P2, P3); - TryCableBytewiseTransfer(P3, P2); + TryLinkTransfer(P2, P3); } else { - TryCableBytewiseTransfer(P1, P2); - TryCableBytewiseTransfer(P2, P1); + TryLinkTransfer(P1, P2); } break; } case 4: { - if (_cableSpaced) + if (_linkSpaced) { - TryCableBytewiseTransfer(P1, P3); - TryCableBytewiseTransfer(P3, P1); - TryCableBytewiseTransfer(P2, P4); - TryCableBytewiseTransfer(P4, P2); + TryLinkTransfer(P1, P3); + TryLinkTransfer(P2, P4); } - else if (_cableShifted) + else if (_linkShifted) { - TryCableBytewiseTransfer(P2, P3); - TryCableBytewiseTransfer(P3, P2); - TryCableBytewiseTransfer(P4, P1); - TryCableBytewiseTransfer(P1, P4); + TryLinkTransfer(P2, P3); + TryLinkTransfer(P4, P1); } else { - TryCableBytewiseTransfer(P1, P2); - TryCableBytewiseTransfer(P2, P1); - TryCableBytewiseTransfer(P3, P4); - TryCableBytewiseTransfer(P4, P3); + TryLinkTransfer(P1, P2); + TryLinkTransfer(P3, P4); } break; } @@ -217,16 +207,62 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy return true; } - private void TryCableBytewiseTransfer(int master, int slave) + private void TryLinkTransfer(int one, int two) { - if (LibGambatte.gambatte_linkstatus(_linkedCores[master].GambatteState, 256) != 0) // ClockTrigger + if (LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 256) != 0) // ClockTrigger { - LibGambatte.gambatte_linkstatus(_linkedCores[master].GambatteState, 257); // ack - int om = LibGambatte.gambatte_linkstatus(_linkedCores[master].GambatteState, 258); // GetOut - int os = LibGambatte.gambatte_linkstatus(_linkedCores[slave].GambatteState, 258); - LibGambatte.gambatte_linkstatus(_linkedCores[slave].GambatteState, om & 0xff); // ShiftIn - LibGambatte.gambatte_linkstatus(_linkedCores[master].GambatteState, os & 0xff); // ShiftIn + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 257); // ack + int oo = LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 258); // GetOut + int ot = LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 258); + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, oo & 0xff); // ShiftIn + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, ot & 0xff); // ShiftIn } + + if (LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 256) != 0) // ClockTrigger + { + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 257); // ack + int ot = LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 258); // GetOut + int oo = LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 258); + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, ot & 0xff); // ShiftIn + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, oo & 0xff); // ShiftIn + } + + if (CanIR(one, two)) + { + if (LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 260) != 0) // InfraredTrigger + { + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 261); // ack + if (LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 262) != 0) // GetOut + { + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 263); // ShiftInOn + } + else + { + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 264); // ShiftInOff + } + } + + if (LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 260) != 0) // InfraredTrigger + { + LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 261); // ack + if (LibGambatte.gambatte_linkstatus(_linkedCores[two].GambatteState, 262) != 0) // GetOut + { + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 263); // ShiftInOn + } + else + { + LibGambatte.gambatte_linkstatus(_linkedCores[one].GambatteState, 264); // 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 + return _syncSettings._linkedSyncSettings[one].ConsoleMode is Gameboy.GambatteSyncSettings.ConsoleModeType.GBC + && _syncSettings._linkedSyncSettings[two].ConsoleMode is Gameboy.GambatteSyncSettings.ConsoleModeType.GBC; } public int Frame { get; private set; } diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.ISettable.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.ISettable.cs index 6557027bae..f72e1a7367 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.ISettable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.ISettable.cs @@ -19,23 +19,23 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy public PutSettingsDirtyBits PutSettings(GambatteLinkSettings o) { - _settings = o; var ret = PutSettingsDirtyBits.None; for (int i = 0; i < _numCores; i++) { ret |= _linkedCores[i].PutSettings(o._linkedSettings[i]); } + _settings = o; return ret; } public PutSettingsDirtyBits PutSyncSettings(GambatteLinkSyncSettings o) { - _syncSettings = o; var ret = PutSettingsDirtyBits.None; for (int i = 0; i < _numCores; i++) { ret |= _linkedCores[i].PutSyncSettings(o._linkedSyncSettings[i]); } + _syncSettings = o; return ret; } diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IStatable.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IStatable.cs index 299f07dbda..b5b014a2df 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IStatable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.IStatable.cs @@ -30,12 +30,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy IsLagFrame = s.IsLagFrame; LagCount = s.LagCount; Frame = s.Frame; - _cableConnected = s.CableConnected; - _cableDiscoSignal = s.CableDiscoSignal; - _cableShifted = s.CableShifted; - _cableShiftSignal = s.CableShiftSignal; - _cableSpaced = s.CableSpaced; - _cableSpaceSignal = s.CableSpaceSignal; + _linkConnected = s.LinkConnected; + _linkDiscoSignal = s.LinkDiscoSignal; + _linkShifted = s.LinkShifted; + _linkShiftSignal = s.LinkShiftSignal; + _linkSpaced = s.LinkSpaced; + _linkSpaceSignal = s.LinkSpaceSignal; } public void SaveStateBinary(BinaryWriter writer) @@ -51,12 +51,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy writer.Write(IsLagFrame); writer.Write(LagCount); writer.Write(Frame); - writer.Write(_cableConnected); - writer.Write(_cableDiscoSignal); - writer.Write(_cableShifted); - writer.Write(_cableShiftSignal); - writer.Write(_cableSpaced); - writer.Write(_cableSpaceSignal); + writer.Write(_linkConnected); + writer.Write(_linkDiscoSignal); + writer.Write(_linkShifted); + writer.Write(_linkShiftSignal); + writer.Write(_linkSpaced); + writer.Write(_linkSpaceSignal); } public void LoadStateBinary(BinaryReader reader) @@ -75,12 +75,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy IsLagFrame = reader.ReadBoolean(); LagCount = reader.ReadInt32(); Frame = reader.ReadInt32(); - _cableConnected = reader.ReadBoolean(); - _cableDiscoSignal = reader.ReadBoolean(); - _cableShifted = reader.ReadBoolean(); - _cableShiftSignal = reader.ReadBoolean(); - _cableSpaced = reader.ReadBoolean(); - _cableSpaceSignal = reader.ReadBoolean(); + _linkConnected = reader.ReadBoolean(); + _linkDiscoSignal = reader.ReadBoolean(); + _linkShifted = reader.ReadBoolean(); + _linkShiftSignal = reader.ReadBoolean(); + _linkSpaced = reader.ReadBoolean(); + _linkSpaceSignal = reader.ReadBoolean(); } private readonly JsonSerializer ser = new JsonSerializer { Formatting = Formatting.Indented }; @@ -95,12 +95,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy public int Frame; public int[] LinkedOverflow; public int[] LinkedLatches; - public bool CableConnected; - public bool CableDiscoSignal; - public bool CableShifted; - public bool CableShiftSignal; - public bool CableSpaced; - public bool CableSpaceSignal; + public bool LinkConnected; + public bool LinkDiscoSignal; + public bool LinkShifted; + public bool LinkShiftSignal; + public bool LinkSpaced; + public bool LinkSpaceSignal; public DGBSerialized(GambatteLink linkcore) { @@ -117,12 +117,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy IsLagFrame = linkcore.IsLagFrame; LagCount = linkcore.LagCount; Frame = linkcore.Frame; - CableConnected = linkcore._cableConnected; - CableDiscoSignal = linkcore._cableDiscoSignal; - CableShifted = linkcore._cableShifted; - CableShiftSignal = linkcore._cableShiftSignal; - CableSpaced = linkcore._cableSpaced; - CableSpaceSignal = linkcore._cableSpaceSignal; + LinkConnected = linkcore._linkConnected; + LinkDiscoSignal = linkcore._linkDiscoSignal; + LinkShifted = linkcore._linkShifted; + LinkShiftSignal = linkcore._linkShiftSignal; + LinkSpaced = linkcore._linkSpaced; + LinkSpaceSignal = linkcore._linkSpaceSignal; } } } diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs index 59a0f847e7..0bfd5973d2 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs @@ -75,8 +75,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy public bool LinkConnected { - get => _cableConnected; - set => _cableConnected = value; + get => _linkConnected; + set => _linkConnected = value; } private int _numCores = 0; @@ -89,23 +89,23 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy // counters to ensure we do 35112 samples per frame private readonly int[] _linkedOverflow; - // if true, the link cable is currently connected - private bool _cableConnected = true; + // if true, the link connection is currently active + private bool _linkConnected = true; - // if true, the link cable is currently shifted (3x/4x only) - private bool _cableShifted = false; + // if true, the link is currently shifted (3x/4x only) + private bool _linkShifted = false; - // if true, the link cable is currently spaced outwards (3x/4x only) - private bool _cableSpaced = false; + // if true, the link is currently spaced outwards (3x/4x only) + private bool _linkSpaced = false; - // if true, the link cable toggle signal is currently asserted - private bool _cableDiscoSignal = false; + // if true, the link toggle signal is currently asserted + private bool _linkDiscoSignal = false; - // if true, the link cable shift signal is currently asserted - private bool _cableShiftSignal = false; + // if true, the link shift signal is currently asserted + private bool _linkShiftSignal = false; // if true, the link cable spacing signal is currently asserted - private bool _cableSpaceSignal = false; + private bool _linkSpaceSignal = false; private const int SampPerFrame = 35112; private const int MaxSampsPerFrame = (SampPerFrame + 2064) * 2; @@ -128,11 +128,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy new[] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start", "Power" } .Select(s => $"P{i + 1} {s}")); } - ret.BoolButtons.Add("Toggle Cable Connection"); + ret.BoolButtons.Add("Toggle Link Connection"); if (_numCores > 2) { - ret.BoolButtons.Add("Toggle Cable Shift"); - ret.BoolButtons.Add("Toggle Cable Spacing"); + ret.BoolButtons.Add("Toggle Link Shift"); + ret.BoolButtons.Add("Toggle Link Spacing"); } return ret; } diff --git a/submodules/gambatte b/submodules/gambatte index f1ae63f577..d5abea79e1 160000 --- a/submodules/gambatte +++ b/submodules/gambatte @@ -1 +1 @@ -Subproject commit f1ae63f57778f9869bd79000f1d300ed532400ff +Subproject commit d5abea79e1571a2078c1fc689969b839e08d82e7