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)
{