From 423ea19255c8e4238d8745d43ba0982fcccac30d Mon Sep 17 00:00:00 2001 From: RoadrunnerWMC Date: Sun, 14 Nov 2021 17:50:05 -0500 Subject: [PATCH] NSMBW Loader: add support for mainland Chinese version This commit only adds support to the loader (nsmbw.cpp), NOT to the address map file (versions-nsmbw.txt). The latter is a much much harder project that's still a work in progress. --- loader/nsmbw.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/loader/nsmbw.cpp b/loader/nsmbw.cpp index 059761d..719df9c 100644 --- a/loader/nsmbw.cpp +++ b/loader/nsmbw.cpp @@ -6,6 +6,7 @@ kmCondWritePointer(0x80328130, 0x8015BB20, loadIntoNSMBW); // US kmCondWritePointer(0x80327E98, 0x8015B930, loadIntoNSMBW); // JP kmCondWritePointer(0x80334E60, 0x8015C060, loadIntoNSMBW); // KR kmCondWritePointer(0x80333218, 0x8015C060, loadIntoNSMBW); // TW +kmCondWritePointer(0x8032D348, 0x8015CF30, loadIntoNSMBW); // CN typedef void *(*EGG_Heap_Alloc_t) (u32 size, s32 align, void *heap); typedef void (*EGG_Heap_Free_t) (void *buffer, void *heap); @@ -105,6 +106,21 @@ const loaderFunctionsEx functions_w = { (void **) 0x80382D48, (void **) 0x804354EC }; +const loaderFunctionsEx functions_c = { + {(OSReport_t) 0x80161A90, + (OSFatal_t) 0x801B1930, + (DVDConvertPathToEntrynum_t) 0x801CC9E0, + (DVDFastOpen_t) 0x801CCCF0, + (DVDReadPrio_t) 0x801CCE80, + (DVDClose_t) 0x801CCD60, + (sprintf_t) 0x802E4DF8, + allocAdapter, + freeAdapter}, + (EGG_Heap_Alloc_t) 0x802BB360, + (EGG_Heap_Free_t) 0x802BB610, + (void **) 0x8037D4C8, + (void **) 0x8042FCCC +}; void unknownVersion() { @@ -133,6 +149,7 @@ int loadIntoNSMBW() default: unknownVersion(); } break; + case 0x4182000C: region = 'C'; break; default: unknownVersion(); } @@ -147,6 +164,7 @@ int loadIntoNSMBW() case 'J': funcs = &functions_j.base; break; case 'K': funcs = &functions_k.base; break; case 'W': funcs = &functions_w.base; break; + case 'C': funcs = &functions_c.base; break; } char path[64];