From 0d556dc9e997481c1f8a66afb96aa1b38f7a7fb1 Mon Sep 17 00:00:00 2001 From: goyuken Date: Wed, 1 May 2013 17:22:12 +0000 Subject: [PATCH] saturn: frame lag flag working --- .../Consoles/Sega/Saturn/LibYabause.cs | 3 +- .../Consoles/Sega/Saturn/Yabause.cs | 37 +++++------------- BizHawk.MultiClient/output/dll/libyabause.dll | Bin 551424 -> 551424 bytes yabause/src/libyabause/yui.cpp | 5 ++- 4 files changed, 16 insertions(+), 29 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Sega/Saturn/LibYabause.cs b/BizHawk.Emulation/Consoles/Sega/Saturn/LibYabause.cs index ecfaaad078..1eeac89f85 100644 --- a/BizHawk.Emulation/Consoles/Sega/Saturn/LibYabause.cs +++ b/BizHawk.Emulation/Consoles/Sega/Saturn/LibYabause.cs @@ -72,8 +72,9 @@ namespace BizHawk.Emulation.Consoles.Sega.Saturn /// width of framebuffer /// height of framebuffer /// number of sample pairs produced + /// true if lagged [DllImport("libyabause.dll", CallingConvention = CallingConvention.Cdecl)] - public static extern void libyabause_frameadvance(out int w, out int h, out int nsamp); + public static extern bool libyabause_frameadvance(out int w, out int h, out int nsamp); [DllImport("libyabause.dll", CallingConvention = CallingConvention.Cdecl)] public static extern void libyabause_deinit(); diff --git a/BizHawk.Emulation/Consoles/Sega/Saturn/Yabause.cs b/BizHawk.Emulation/Consoles/Sega/Saturn/Yabause.cs index 9cb0263e25..b5465bd53d 100644 --- a/BizHawk.Emulation/Consoles/Sega/Saturn/Yabause.cs +++ b/BizHawk.Emulation/Consoles/Sega/Saturn/Yabause.cs @@ -38,6 +38,7 @@ namespace BizHawk.Emulation.Consoles.Sega.Saturn CoreComm.RomStatusDetails = "Yeh"; this.CoreComm = CoreComm; this.CD = CD; + ResetFrameCounter(); Init(); } @@ -150,41 +151,22 @@ namespace BizHawk.Emulation.Consoles.Sega.Saturn LibYabause.libyabause_setpads(p11, p12, p21, p22); - LibYabause.libyabause_frameadvance(out w, out h, out nsamp); + IsLagFrame = LibYabause.libyabause_frameadvance(out w, out h, out nsamp); BufferWidth = w; BufferHeight = h; SoundNSamp = nsamp; Frame++; - LagCount++; + if (IsLagFrame) + LagCount++; //Console.WriteLine(nsamp); } - public int Frame - { - get; - private set; - } + public int Frame { get; private set; } + public int LagCount { get; set; } + public bool IsLagFrame { get; private set; } - public int LagCount - { - get; - set; - } - - public bool IsLagFrame - { - get { return true; } - } - - public string SystemId - { - get { return "SAT"; } - } - - public bool DeterministicEmulation - { - get { return true; } - } + public string SystemId { get { return "SAT"; } } + public bool DeterministicEmulation { get { return true; } } public byte[] ReadSaveRam() { @@ -209,6 +191,7 @@ namespace BizHawk.Emulation.Consoles.Sega.Saturn { Frame = 0; LagCount = 0; + IsLagFrame = false; } public void SaveStateText(System.IO.TextWriter writer) diff --git a/BizHawk.MultiClient/output/dll/libyabause.dll b/BizHawk.MultiClient/output/dll/libyabause.dll index 50a9ab6a900a15c442e38105b8fc3855ae80c6e4..db22f4b26cf1d3d4593204c34797f61ba73bc322 100644 GIT binary patch delta 2219 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 OqlPK!{|+b~$^8oEA0Bl8 diff --git a/yabause/src/libyabause/yui.cpp b/yabause/src/libyabause/yui.cpp index bdec66021c..c147e1fbc8 100644 --- a/yabause/src/libyabause/yui.cpp +++ b/yabause/src/libyabause/yui.cpp @@ -8,6 +8,7 @@ extern "C" { #include "../vidsoft.h" #include "../vdp2.h" #include "../yui.h" +#include "../movie.h" } CDInterface FECD = @@ -176,13 +177,15 @@ extern "C" __declspec(dllexport) void libyabause_softreset() YabauseResetButton(); } -extern "C" __declspec(dllexport) void libyabause_frameadvance(int *w, int *h, int *nsamp) +extern "C" __declspec(dllexport) int libyabause_frameadvance(int *w, int *h, int *nsamp) { + LagFrameFlag = 1; sndbuffpos = 0; YabauseEmulate(); *w = vdp2width; *h = vdp2height; *nsamp = sndbuffpos; + return LagFrameFlag; } extern "C" __declspec(dllexport) void libyabause_deinit()