mirror of
https://github.com/perfect-dark-pc-port/perfect_dark.git
synced 2026-10-23 15:52:41 +02:00
port: refactor gbcRomCheck a bit
This commit is contained in:
1 parent
2550b5a668
commit
2a5c3a351e
5 files changed
+35
-29
No files matched your search
@@ -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
@@ -107,7 +107,8 @@ int main(int argc, const char **argv)
|
||||
inputInit();
|
||||
audioInit();
|
||||
romdataInit();
|
||||
gbcRomCheck();
|
||||
|
||||
g_ValidGbcRomFound = romdataCheckGbcRom();
|
||||
|
||||
gameInit();
|
||||
|
||||
|
||||
+29
-24
@@ -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
@@ -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
@@ -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
|
||||
Reference in new issue
Block a user