port: refactor gbcRomCheck a bit

This commit is contained in:
fgsfds committed 2024-09-02 10:48:54 +02:00
1 parent 2550b5a668
commit 2a5c3a351e
5 files changed
+35 -29

No files matched your search

+1 -1
View File
@@ -22,6 +22,6 @@ u8 *romdataSegGetData(const char *segName);
u8 *romdataSegGetDataEnd(const char *segName);
u32 romdataSegGetSize(const char *segName);
void gbcRomCheck(void);
s32 romdataCheckGbcRom(void);
#endif
+2 -1
View File
@@ -107,7 +107,8 @@ int main(int argc, const char **argv)
inputInit();
audioInit();
romdataInit();
gbcRomCheck();
g_ValidGbcRomFound = romdataCheckGbcRom();
gameInit();
+29 -24
View File
@@ -11,9 +11,6 @@
#include "system.h"
#include "preprocess.h"
#include "platform.h"
#ifndef PLATFORM_N64
#include "bss.h"
#endif
/**
* asset files and ROM segments can be replaced by optional external files,
@@ -392,43 +389,51 @@ s32 romdataInit(void)
return 0;
}
void gbcRomCheck(void)
static inline bool romdataCheckGbcRomContents(const u8 *gbcRomFile, const u32 gbcRomSize)
{
u32 gbcRomSize;
u8* gbcRomFile = fsFileLoad(GBC_ROM_NAME, &gbcRomSize);
if (!gbcRomFile) {
return;
}
if (gbcRomSize != GBC_ROM_SIZE) {
free(gbcRomFile);
return;
return false;
}
// ROM title
if (memcmp(gbcRomFile + 0x134, "PerfDark VPDE", 15) != 0) {
free(gbcRomFile);
return;
return false;
}
// Licensee code
if (memcmp(gbcRomFile + 0x144, "4Y", 2) != 0) {
free(gbcRomFile);
return;
return false;
}
// Header and global checksums
if (gbcRomFile[0x14D] != 0xA1 || gbcRomFile[0x14E] != 0xAD || gbcRomFile[0x14F] != 0x0F) {
free(gbcRomFile);
return;
return false;
}
g_validGbcRomFound = true;
free(gbcRomFile);
return true;
}
s32 romdataCheckGbcRom(void)
{
if (fsFileSize(GBC_ROM_NAME) < 0) {
// bail early if it doesn't exist to avoid generating error messages
return false;
}
u32 gbcRomSize = 0;
u8 *gbcRomFile = fsFileLoad(GBC_ROM_NAME, &gbcRomSize);
if (!gbcRomFile) {
return false;
}
const bool ret = romdataCheckGbcRomContents(gbcRomFile, gbcRomSize);
sysMemFree(gbcRomFile);
if (ret) {
sysLogPrintf(LOG_NOTE, "romdataCheckGbcRom: valid GBC rom found");
}
return ret;
}
s32 romdataFileGetSize(s32 fileNum)
+2 -2
View File
@@ -330,7 +330,7 @@ bool var80075d14 = true;
#endif
#ifndef PLATFORM_N64
bool g_validGbcRomFound = false;
bool g_ValidGbcRomFound = false;
#endif
u32 pakGetBlockSize(s8 device)
@@ -5997,7 +5997,7 @@ bool gbpakIsAnyPerfectDark(void)
return false;
#else
return g_validGbcRomFound;
return g_ValidGbcRomFound;
#endif
}
+1 -1
View File
@@ -294,7 +294,7 @@ extern struct chrdata *g_MpBotChrPtrs[MAX_BOTS];
extern s32 g_JpnMaxCacheItems;
extern s32 var8009d370jf;
#ifndef PLATFORM_N64
extern bool g_validGbcRomFound;
extern bool g_ValidGbcRomFound;
#endif
#endif