diff --git a/src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs b/src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs index ae51b12cf8..9a8d436db2 100644 --- a/src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs +++ b/src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs @@ -176,8 +176,13 @@ namespace BizHawk.Emulation.Cores.Waterbox [MarshalAs(UnmanagedType.ByValArray, SizeConst = 101)] public Track[] Tracks; } + /// + /// Callback to receive a disk TOC + /// + /// + /// Deposit a LibNymaCore.TOC here [UnmanagedFunctionPointer(CC)] - public delegate void CDTOCCallback(int disk, [In, Out]TOC toc); + public delegate void CDTOCCallback(int disk, IntPtr dest); [UnmanagedFunctionPointer(CC)] public delegate void CDSectorCallback(int disk, int lba, IntPtr dest); [BizImport(CC)] diff --git a/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Cd.cs b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Cd.cs index 031586300e..a51332274b 100644 --- a/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Cd.cs +++ b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Cd.cs @@ -32,9 +32,11 @@ namespace BizHawk.Emulation.Cores.Waterbox } } - private void CDTOCCallback(int disk, [In, Out]LibNymaCore.TOC t) + private void CDTOCCallback(int disk, IntPtr dest) { - SetupTOC(t, _disks[disk].TOC); + var toc = new LibNymaCore.TOC { Tracks = new LibNymaCore.TOC.Track[101] }; + SetupTOC(toc, _disks[disk].TOC); + Marshal.StructureToPtr(toc, dest, false); } private void CDSectorCallback(int disk, int lba, IntPtr dest) {