From 0d3c7b7e0cd8f8028888470a8db15e5e57adcd9a Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Wed, 6 Jul 2022 14:52:28 -0700 Subject: [PATCH] [Libretro] Implement SET_SYSTEM_AV_INFO and SET_GEOMETRY --- Assets/dll/libLibretroBridge.dll | Bin 247917 -> 247222 bytes Assets/dll/libLibretroBridge.so | Bin 30768 -> 32264 bytes LibretroBridge/LibretroBridge.cpp | 65 ++++++++++++++++-- LibretroBridge/LibretroBridge.h | 21 ++++++ .../Libretro/Libretro.Api.cs | 21 +++++- .../Libretro/Libretro.Emulator.cs | 18 ++++- .../Libretro/Libretro.IVideoProvider.cs | 4 +- 7 files changed, 116 insertions(+), 13 deletions(-) diff --git a/Assets/dll/libLibretroBridge.dll b/Assets/dll/libLibretroBridge.dll index f9ac0c6827b5372ba2cecc96c45afbfbf0e44f91..41b6cac3e8d21308ba1c22111035ea4532272b2d 100644 GIT binary patch delta 53215 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 TVf~!WFg46qHZ=vj^WFast`kc; diff --git a/Assets/dll/libLibretroBridge.so b/Assets/dll/libLibretroBridge.so index 69f5e06961f5e903d748e0eec25fcbecefb4fa46..32b4676facfc5a600c03c1aad70ffacadc6f0994 100755 GIT binary patch literal 32264 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 KNJJ4P=l>r~Sb?bk literal 30768 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 = saveDirectory.c_str(); return true; case RETRO_ENVIRONMENT::SET_SYSTEM_AV_INFO: - RetroLog(RETRO_LOG::WARN, "NEED RETRO_ENVIRONMENT::SET_SYSTEM_AV_INFO"); - return false; + { + const retro_system_av_info* av = static_cast(data); + std::memcpy(&geoInfo, &av->geometry, sizeof (retro_game_geometry)); + SetVideoSize(geoInfo.max_width * geoInfo.max_height); + geoInfoDirty = true; + std::memcpy(&timingInfo, &av->timing, sizeof (retro_system_timing)); + timingInfoDirty = true; + return true; + } case RETRO_ENVIRONMENT::SET_PROC_ADDRESS_CALLBACK: //this is some way to get symbols for API extensions //of which none exist @@ -252,9 +263,13 @@ public: //TODO medium priority probably return false; case RETRO_ENVIRONMENT::SET_GEOMETRY: - //TODO medium priority probably - //this is essentially just set system av info, except only for video - return false; + { + const retro_game_geometry* geo = static_cast(data); + std::memcpy(&geoInfo, geo, sizeof (retro_game_geometry)); + SetVideoSize(geoInfo.max_width * geoInfo.max_height); + geoInfoDirty = true; + return true; + } case RETRO_ENVIRONMENT::GET_USERNAME: //we definitely want to return false here so the core will do something deterministic return false; @@ -461,6 +476,26 @@ public: } } + bool GetRetroGeometryInfo(retro_game_geometry* geo) { + if (!geoInfoDirty) { + return false; + } + + std::memcpy(geo, &geoInfo, sizeof (retro_game_geometry)); + geoInfoDirty = false; + return true; + } + + bool GetRetroTimingInfo(retro_system_timing* timing) { + if (!timingInfoDirty) { + return false; + } + + std::memcpy(timing, &timingInfo, sizeof (retro_system_timing)); + timingInfoDirty = false; + return true; + } + // need some way to communicate with retro variables later void SetDirectories(const char* systemDirectory, const char* saveDirectory, const char* coreDirectory, const char* coreAssetsDirectory) { @@ -528,6 +563,12 @@ private: std::string retroMessageString; u32 retroMessageTime; + bool geoInfoDirty; + retro_game_geometry geoInfo; + + bool timingInfoDirty; + retro_system_timing timingInfo; + bool variablesDirty; u32 variableCount; std::unique_ptr variableKeys; @@ -593,6 +634,20 @@ EXPORT void LibretroBridge_GetRetroMessage(CallbackHandler* cbHandler, retro_mes cbHandler->GetRetroMessage(m); } +// get current retro_game_geometry set by the core +// returns false if no changes are needed for geometry info +// geo is only valid if true is returned +EXPORT bool LibretroBridge_GetRetroGeometryInfo(CallbackHandler* cbHandler, retro_game_geometry* geo) { + return cbHandler->GetRetroGeometryInfo(geo); +} + +// get current retro_system_timing set by the core +// returns false if no changes are needed for timing info +// timing is only valid if true is returned +EXPORT bool LibretroBridge_GetRetroTimingInfo(CallbackHandler* cbHandler, retro_system_timing* timing) { + return cbHandler->GetRetroTimingInfo(timing); +} + // set directories for the core EXPORT void LibretroBridge_SetDirectories(CallbackHandler* cbHandler, const char* systemDirectory, const char* saveDirectory, const char* coreDirectory, const char* coreAssetsDirectory) { cbHandler->SetDirectories(systemDirectory, saveDirectory, coreDirectory, coreAssetsDirectory); diff --git a/LibretroBridge/LibretroBridge.h b/LibretroBridge/LibretroBridge.h index dce2be043a..858df955c7 100644 --- a/LibretroBridge/LibretroBridge.h +++ b/LibretroBridge/LibretroBridge.h @@ -11,6 +11,9 @@ typedef std::uint16_t u16; typedef std::uint32_t u32; typedef std::uint64_t u64; +typedef float f32; +typedef double f64; + typedef u8 boolean; #define EXPORT extern "C" __attribute__((visibility("default"))) @@ -355,6 +358,24 @@ enum class RETRO_LOG { DUMMY = INT_MAX, }; +struct retro_game_geometry { + u32 base_width; + u32 base_height; + u32 max_width; + u32 max_height; + f32 aspect_ratio; +}; + +struct retro_system_timing { + f64 fps; + f64 sample_rate; +}; + +struct retro_system_av_info { + retro_game_geometry geometry; + retro_system_timing timing; +}; + struct retro_variable { const char* key; const char* value; diff --git a/src/BizHawk.Emulation.Cores/Libretro/Libretro.Api.cs b/src/BizHawk.Emulation.Cores/Libretro/Libretro.Api.cs index 97dde59622..438f712397 100644 --- a/src/BizHawk.Emulation.Cores/Libretro/Libretro.Api.cs +++ b/src/BizHawk.Emulation.Cores/Libretro/Libretro.Api.cs @@ -326,20 +326,29 @@ namespace BizHawk.Emulation.Cores.Libretro } [StructLayout(LayoutKind.Sequential)] - public struct retro_system_av_info + public struct retro_game_geometry { - // struct retro_game_geometry public uint base_width; public uint base_height; public uint max_width; public uint max_height; public float aspect_ratio; + } - // struct retro_system_timing + [StructLayout(LayoutKind.Sequential)] + public struct retro_system_timing + { public double fps; public double sample_rate; } + [StructLayout(LayoutKind.Sequential)] + public struct retro_system_av_info + { + public retro_game_geometry geometry; + public retro_system_timing timing; + } + [BizImport(cc)] public abstract void retro_init(); @@ -432,6 +441,12 @@ namespace BizHawk.Emulation.Cores.Libretro [BizImport(cc)] public abstract bool LibretroBridge_GetSupportsNoGame(IntPtr cbHandler); + [BizImport(cc)] + public abstract bool LibretroBridge_GetRetroGeometryInfo(IntPtr cbHandler, ref LibretroApi.retro_game_geometry g); + + [BizImport(cc)] + public abstract bool LibretroBridge_GetRetroTimingInfo(IntPtr cbHandler, ref LibretroApi.retro_system_timing t); + [BizImport(cc)] public abstract void LibretroBridge_GetRetroMessage(IntPtr cbHandler, ref LibretroApi.retro_message m); diff --git a/src/BizHawk.Emulation.Cores/Libretro/Libretro.Emulator.cs b/src/BizHawk.Emulation.Cores/Libretro/Libretro.Emulator.cs index 9d7fc29bed..c035be930f 100644 --- a/src/BizHawk.Emulation.Cores/Libretro/Libretro.Emulator.cs +++ b/src/BizHawk.Emulation.Cores/Libretro/Libretro.Emulator.cs @@ -210,13 +210,13 @@ namespace BizHawk.Emulation.Cores.Libretro //this stuff can only happen after the game is loaded //allocate a video buffer which will definitely be large enough - InitVideoBuffer((int)av.base_width, (int)av.base_height, (int)(av.max_width * av.max_height)); + InitVideoBuffer((int)av.geometry.base_width, (int)av.geometry.base_height, (int)(av.geometry.max_width * av.geometry.max_height)); // TODO: more precise - VsyncNumerator = (int)(10000000 * av.fps); + VsyncNumerator = (int)(10000000 * av.timing.fps); VsyncDenominator = 10000000; - SetupResampler(av.fps, av.sample_rate); + SetupResampler(av.timing.fps, av.timing.sample_rate); InitMemoryDomains(); // im going to assume this should happen when a game is loaded @@ -236,6 +236,18 @@ namespace BizHawk.Emulation.Cores.Libretro private void FrameAdvancePost(bool render, bool renderSound) { + if (bridge.LibretroBridge_GetRetroGeometryInfo(cbHandler, ref av_info.geometry)) + { + vidBuffer = new int[av_info.geometry.max_width * av_info.geometry.max_height]; + } + + if (bridge.LibretroBridge_GetRetroTimingInfo(cbHandler, ref av_info.timing)) + { + VsyncNumerator = (int)(10000000 * av_info.timing.fps); + _blipL.SetRates(av_info.timing.sample_rate, 44100); + _blipR.SetRates(av_info.timing.sample_rate, 44100); + } + if (render) { UpdateVideoBuffer(); diff --git a/src/BizHawk.Emulation.Cores/Libretro/Libretro.IVideoProvider.cs b/src/BizHawk.Emulation.Cores/Libretro/Libretro.IVideoProvider.cs index 140c611cfc..ed89241256 100644 --- a/src/BizHawk.Emulation.Cores/Libretro/Libretro.IVideoProvider.cs +++ b/src/BizHawk.Emulation.Cores/Libretro/Libretro.IVideoProvider.cs @@ -27,7 +27,7 @@ namespace BizHawk.Emulation.Cores.Libretro { get { - var dar = av_info.aspect_ratio; + var dar = av_info.geometry.aspect_ratio; if (dar <= 0) { return vidWidth; @@ -44,7 +44,7 @@ namespace BizHawk.Emulation.Cores.Libretro { get { - var dar = av_info.aspect_ratio; + var dar = av_info.geometry.aspect_ratio; if (dar <= 0) { return vidHeight;