From 6eb35d2bf82ef563abfb035af05c2947ee78078e Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 11:30:10 +0100 Subject: [PATCH] uniform GameEngine_OTRSigCheck --- include/align_asset_macro.h | 2 +- src/port/Engine.cpp | 3 +-- src/port/Engine.h | 10 ++++++++-- src/port/GBIMiddleware.cpp | 11 ++++++----- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/align_asset_macro.h b/include/align_asset_macro.h index 972f7f0b5..43b28dd3a 100644 --- a/include/align_asset_macro.h +++ b/include/align_asset_macro.h @@ -1,6 +1,6 @@ #pragma once -uint8_t GameEngine_OTRSigCheck(char* imgData); +bool GameEngine_OTRSigCheck(char* imgData); #if defined(_WIN32) #define ALIGN_ASSET(x) __declspec(align(x)) diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 9f2f814f4..a8763cac0 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -371,8 +371,7 @@ extern "C" uint32_t GameEngine_GetGameVersion() { static const char* sOtrSignature = "__OTR__"; -extern "C" uint8_t GameEngine_OTRSigCheck(const char* data) { - static const char* sOtrSignaturea = "__OTR__"; +extern "C" bool GameEngine_OTRSigCheck(const char* data) { return strncmp(data, sOtrSignature, strlen(sOtrSignature)) == 0; } diff --git a/src/port/Engine.h b/src/port/Engine.h index 36d78d1fe..16ad40299 100644 --- a/src/port/Engine.h +++ b/src/port/Engine.h @@ -53,7 +53,11 @@ class GameEngine { uint32_t OTRGetGameRenderWidth(); uint32_t OTRGetGameRenderHeight(); }; -#else +#endif + +#ifdef __cplusplus +extern "C" { +#endif void GameEngine_ProcessGfxCommands(Gfx* commands); uint32_t GameEngine_GetSampleRate(); uint32_t GameEngine_GetSamplesPerFrame(); @@ -65,7 +69,7 @@ struct AudioSequenceData* GameEngine_LoadSequence(uint8_t seqId); uint32_t GameEngine_GetSequenceCount(); uint8_t GameEngine_IsSequenceLoaded(uint8_t seqId); void GameEngine_UnloadSequence(uint8_t seqId); -uint8_t GameEngine_OTRSigCheck(char* imgData); +// bool GameEngine_OTRSigCheck(char* imgData); -> align_asset_macro.h float OTRGetAspectRatio(void); float OTRGetDimensionFromLeftEdge(float v); float OTRGetDimensionFromRightEdge(float v); @@ -73,4 +77,6 @@ int16_t OTRGetRectDimensionFromLeftEdge(float v); int16_t OTRGetRectDimensionFromRightEdge(float v); uint32_t OTRGetGameRenderWidth(void); uint32_t OTRGetGameRenderHeight(void); +#ifdef __cplusplus +} #endif diff --git a/src/port/GBIMiddleware.cpp b/src/port/GBIMiddleware.cpp index 4f84c8e0b..9b3f1e71d 100644 --- a/src/port/GBIMiddleware.cpp +++ b/src/port/GBIMiddleware.cpp @@ -4,13 +4,14 @@ #include "DisplayList.h" #include "resource/type/ResourceType.h" #include "resource/type/Array.h" - -extern "C" int GameEngine_OTRSigCheck(const char* data); +extern "C" { +#include +} extern "C" void gSPDisplayList(Gfx* pkt, Gfx* dl) { char* imgData = (char*) dl; - if (GameEngine_OTRSigCheck(imgData) == 1) { + if (GameEngine_OTRSigCheck(imgData)) { auto resource = Ship::Context::GetInstance()->GetResourceManager()->LoadResource(imgData); auto res = std::static_pointer_cast(resource); dl = &res->Instructions[0]; @@ -21,7 +22,7 @@ extern "C" void gSPDisplayList(Gfx* pkt, Gfx* dl) { extern "C" void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0) { - if (GameEngine_OTRSigCheck((char*) v) == 1) { + if (GameEngine_OTRSigCheck((char*) v)) { v = (uintptr_t) ResourceGetDataByName((char*) v); } @@ -31,7 +32,7 @@ extern "C" void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0) { extern "C" void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr) { auto data = reinterpret_cast(texAddr); - if (texAddr != 0 && GameEngine_OTRSigCheck(data) == 1) { + if (texAddr != 0 && GameEngine_OTRSigCheck(data)) { const auto res = Ship::Context::GetInstance()->GetResourceManager()->LoadResource(data); const auto type = static_cast(res->GetInitData()->Type);