From 64b582f9fc20b9df3a9c2e64e4ce8dd3c40637d2 Mon Sep 17 00:00:00 2001 From: shibbo Date: Wed, 30 Oct 2024 19:26:14 -0400 Subject: [PATCH] `ipc`, `vi` and `thp` --- config/RMGK01/splits.txt | 25 +++++++++++------ config/RMGK01/symbols.txt | 34 +++++++++++------------ configure.py | 20 ++++++------- src/RVL_SDK/ipc/ipcProfile.c | 9 +++++- src/RVL_SDK/ipc/ipcclt.c | 4 +-- src/RVL_SDK/sc/scapi_prdinfo.c | 51 +++++++++++++++++----------------- src/RVL_SDK/vi/i2c.c | 4 +-- 7 files changed, 81 insertions(+), 66 deletions(-) diff --git a/config/RMGK01/splits.txt b/config/RMGK01/splits.txt index 3f1ec0a4a..8c8f24542 100644 --- a/config/RMGK01/splits.txt +++ b/config/RMGK01/splits.txt @@ -9384,7 +9384,7 @@ JSystem/J3DGraphAnimator/J3DModelData.cpp: JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp: .text start:0x80431CA0 end:0x804329D8 .data start:0x805E9A60 end:0x805E9A68 - .bss start:0x8060FC28 end:0x80638CF8 + .bss start:0x8060FC28 end:0x80638CE0 .sdata start:0x806B2750 end:0x806B2758 .sdata2 start:0x806C1B30 end:0x806C1B38 @@ -9412,7 +9412,7 @@ JSystem/J3DGraphAnimator/J3DCluster.cpp: JSystem/J3DGraphAnimator/J3DJoint.cpp: .text start:0x804383C8 end:0x80438C9C - .rodata start:0x8055C370 end:0x8055C4D8 + .rodata start:0x8055C370 end:0x8055C3F8 .sbss start:0x806B72A8 end:0x806B72B8 .sdata2 start:0x806C1B80 end:0x806C1BA0 @@ -9542,20 +9542,22 @@ RVL_SDK/gd/GDTexture.c: .sdata2 start:0x806C1C98 end:0x806C1CA0 RVL_SDK/kpad/KPAD.c: - .data start:0x805EA578 end:0x805EA618 + .data start:0x805EA578 end:0x805EA5D0 .sdata start:0x806B2788 end:0x806B27F8 .sbss start:0x806B72C8 end:0x806B72E0 - .sdata2 start:0x806C1CA0 end:0x806C1D10 + .sdata2 start:0x806C1CA0 end:0x806C1D08 RVL_SDK/gd/GDTransform.c: .text start:0x8044F838 end:0x80452EDC RVL_SDK/thp/THPDec.c: .text start:0x80452EDC end:0x804562AC - .bss start:0x80638CF8 end:0x80639120 + .rodata start:0x8055C3F8 end:0x8055C488 + .data start:0x805EA5D0 end:0x805EA618 + .bss start:0x80638CE0 end:0x80638E30 .sdata start:0x806B27F8 end:0x806B2800 .sbss start:0x806B72E0 end:0x806B7408 - .sdata2 start:0x806C1D10 end:0x806C1D30 + .sdata2 start:0x806C1D08 end:0x806C1D28 RVL_SDK/thp/THPAudio.c: .text start:0x804562AC end:0x80456740 @@ -9592,7 +9594,7 @@ RVLFaceLib/RFL_NANDAccess.c: extabindex start:0x80006A90 end:0x80006B44 .text start:0x804598A4 end:0x8045B458 .data start:0x805EA7C8 end:0x805EA820 - .sdata2 start:0x806C1D30 end:0x806C1D38 + .sdata2 start:0x806C1D28 end:0x806C1D38 .sbss2 start:0x806C2918 end:0x806C2920 RVLFaceLib/RFL_Model.c: @@ -9711,12 +9713,14 @@ RVL_SDK/nwc24/NWC24Parser.c: RVL_SDK/nwc24/NWC24MsgCommit.c: .text start:0x80467B88 end:0x80469DC0 .data start:0x805EAE30 end:0x805EB0D8 + .bss start:0x80638E30 end:0x80638E60 .sdata start:0x806B28A8 end:0x806B2940 .sbss start:0x806B7458 end:0x806B7460 RVL_SDK/nwc24/NWC24Schedule.c: .text start:0x80469DC0 end:0x8046A794 .data start:0x805EB0D8 end:0x805EB138 + .bss start:0x80638E60 end:0x80638FE0 .sbss start:0x806B7460 end:0x806B7470 RVL_SDK/nwc24/NWC24DateParser.c: @@ -10692,7 +10696,7 @@ RVL_SDK/nand/NANDCheck.c: RVL_SDK/nand/NANDLogging.c: .text start:0x804CFCA4 end:0x804D0274 .data start:0x80600820 end:0x80600868 - .bss start:0x8066C400 end:0x806781C0 + .bss start:0x8066C400 end:0x806748A0 .sdata start:0x806B2C10 end:0x806B2C18 .sbss start:0x806B7A68 end:0x806B7A70 @@ -10726,14 +10730,17 @@ RVL_SDK/ipc/ipcMain.c: RVL_SDK/ipc/ipcclt.c: .text start:0x804D3408 end:0x804D4D78 + .bss start:0x806748A0 end:0x80674940 .sdata start:0x806B2D48 end:0x806B2D50 .sbss start:0x806B7AA0 end:0x806B7AB0 RVL_SDK/ipc/memory.c: .text start:0x804D4D78 end:0x804D529C + .bss start:0x80674940 end:0x806749C0 RVL_SDK/ipc/ipcProfile.c: .text start:0x804D529C end:0x804D5460 + .bss start:0x806749C0 end:0x80674AC0 .sbss start:0x806B7AB0 end:0x806B7AB8 RVL_SDK/fs/fs.c: @@ -10750,7 +10757,7 @@ RVL_SDK/wpad/WPAD.c: .text start:0x804D6B84 end:0x804DE36C .rodata start:0x80561D38 end:0x80561D78 .data start:0x80600B38 end:0x80600EF0 - .bss start:0x806781C0 end:0x80678238 + .bss start:0x80674AC0 end:0x80678238 .sdata start:0x806B2D60 end:0x806B2D78 .sbss start:0x806B7AE0 end:0x806B7B10 .sdata2 start:0x806C2290 end:0x806C22A8 diff --git a/config/RMGK01/symbols.txt b/config/RMGK01/symbols.txt index 670ac2d25..5970f641e 100644 --- a/config/RMGK01/symbols.txt +++ b/config/RMGK01/symbols.txt @@ -43446,8 +43446,8 @@ lbl_8055C3D8 = .rodata:0x8055C3D8; // type:object size:0x8 data:double lbl_8055C3E0 = .rodata:0x8055C3E0; // type:object size:0x8 data:double lbl_8055C3E8 = .rodata:0x8055C3E8; // type:object size:0x8 data:double lbl_8055C3F0 = .rodata:0x8055C3F0; // type:object size:0x8 data:double -lbl_8055C3F8 = .rodata:0x8055C3F8; // type:object size:0x50 -lbl_8055C448 = .rodata:0x8055C448; // type:object size:0x40 data:double +__THPJpegNaturalOrder = .rodata:0x8055C3F8; // type:object size:0x50 +__THPAANScaleFactor = .rodata:0x8055C448; // type:object size:0x40 data:double lbl_8055C488 = .rodata:0x8055C488; // type:object size:0x40 data:4byte lbl_8055C4C8 = .rodata:0x8055C4C8; // type:object size:0x10 data:4byte scParts2Arc$3514 = .rodata:0x8055C4D8; // type:object size:0x14 scope:local align:4 @@ -60221,7 +60221,7 @@ USER_DIR_LIST = .data:0x806007F0; // type:object size:0x2C scope:global align:4 lbl_806008F8 = .data:0x806008F8; // type:object size:0x120 data:4byte @2459 = .data:0x80600A18; // type:object size:0x28 scope:local align:4 ProductAreaAndStringTbl = .data:0x80600A40; // type:object size:0x46 scope:global align:4 data:byte -lbl_80600A88 = .data:0x80600A88; // type:object size:0x18 data:byte +ProductGameRegionAndStringTbl = .data:0x80600A88; // type:object size:0x18 data:byte @1118 = .data:0x80600AA0; // type:object size:0x22 scope:local align:4 data:string @1177 = .data:0x80600AC4; // type:object size:0x46 scope:local align:4 data:string @1687 = .data:0x80600B10; // type:object size:0x21 scope:local align:4 data:string @@ -61187,9 +61187,9 @@ lbl_80630CA0 = .bss:0x80630CA0; // type:object size:0x85F lbl_806314FF = .bss:0x806314FF; // type:object size:0x7C1 lbl_80631CC0 = .bss:0x80631CC0; // type:object size:0x6FE0 lbl_80638CA0 = .bss:0x80638CA0; // type:object size:0x40 data:float -lbl_80638CE0 = .bss:0x80638CE0; // type:object size:0x18 data:4byte +__THPMCUBuffer = .bss:0x80638CE0; // type:object size:0x18 data:4byte __THPLCWork512 = .bss:0x80638CF8; // type:object size:0xC scope:global align:4 data:4byte -lbl_80638D20 = .bss:0x80638D20; // type:object size:0x100 +__THPIDCTWorkspace = .bss:0x80638D20; // type:object size:0x100 __THPLCWork672 = .bss:0x80638E20; // type:object size:0xC scope:global align:4 data:4byte lbl_80638E30 = .bss:0x80638E30; // type:object size:0x30 lbl_80638E60 = .bss:0x80638E60; // type:object size:0x180 @@ -61335,8 +61335,8 @@ Control = .bss:0x8066C700; // type:object size:0x190 scope:local data:4byte ConfBuf = .bss:0x8066C8A0; // type:object size:0x4000 scope:local lbl_806708A0 = .bss:0x806708A0; // type:object size:0x4000 __responses = .bss:0x806748A0; // type:object size:0x50 scope:local data:4byte -lbl_80674900 = .bss:0x80674900; // type:object size:0x40 -lbl_80674940 = .bss:0x80674940; // type:object size:0x80 data:4byte +__rpcBuf = .bss:0x80674900; // type:object size:0x40 +__heaps = .bss:0x80674940; // type:object size:0x80 data:4byte IpcFdArray = .bss:0x806749C0; // type:object size:0x80 scope:local data:4byte IpcReqPtrArray = .bss:0x80674A40; // type:object size:0x80 scope:local data:4byte lbl_80674AC0 = .bss:0x80674AC0; // type:object size:0x30 @@ -66664,18 +66664,18 @@ __THPInfo = .sbss:0x806B72E4; // type:object size:0x4 scope:global align:4 data: __THPWorkArea = .sbss:0x806B72E8; // type:object size:0x4 scope:global align:4 data:4byte __THPOldGQR6 = .sbss:0x806B72EC; // type:object size:0x4 scope:global align:4 data:4byte __THPOldGQR5 = .sbss:0x806B72F0; // type:object size:0x4 scope:global align:4 data:4byte -lbl_806B7300 = .sbss:0x806B7300; // type:object size:0x20 data:4byte -lbl_806B7320 = .sbss:0x806B7320; // type:object size:0x20 data:4byte -lbl_806B7340 = .sbss:0x806B7340; // type:object size:0x4 data:4byte +Gq = .sbss:0x806B7300; // type:object size:0x4 data:4byte +Gwid = .sbss:0x806B7320; // type:object size:0x4 data:4byte +Gbase = .sbss:0x806B7340; // type:object size:0x4 data:4byte __THPHuffmanCodeTab = .sbss:0x806B7344; // type:object size:0x4 scope:global align:4 data:4byte __THPHuffmanSizeTab = .sbss:0x806B7348; // type:object size:0x4 scope:global align:4 data:4byte __THPHuffmanBits = .sbss:0x806B734C; // type:object size:0x4 scope:global align:4 data:4byte -lbl_806B7360 = .sbss:0x806B7360; // type:object size:0x20 data:4byte -lbl_806B7380 = .sbss:0x806B7380; // type:object size:0x20 data:4byte -lbl_806B73A0 = .sbss:0x806B73A0; // type:object size:0x20 data:4byte -lbl_806B73C0 = .sbss:0x806B73C0; // type:object size:0x20 data:4byte -lbl_806B73E0 = .sbss:0x806B73E0; // type:object size:0x20 data:4byte -lbl_806B7400 = .sbss:0x806B7400; // type:object size:0x4 data:4byte +Vachuff = .sbss:0x806B7360; // type:object size:0x4 data:4byte +Uachuff = .sbss:0x806B7380; // type:object size:0x4 data:4byte +Yachuff = .sbss:0x806B73A0; // type:object size:0x4 data:4byte +Vdchuff = .sbss:0x806B73C0; // type:object size:0x4 data:4byte +Udchuff = .sbss:0x806B73E0; // type:object size:0x4 data:4byte +Ydchuff = .sbss:0x806B7400; // type:object size:0x4 data:4byte sRFLManager = .sbss:0x806B7408; // type:object size:0x4 scope:global align:4 data:4byte sRFLLastReason = .sbss:0x806B740C; // type:object size:0x4 scope:global align:4 data:4byte lbl_806B7410 = .sbss:0x806B7410; // type:object size:0x8 data:byte @@ -67030,7 +67030,7 @@ ItemIDOffsetTblOffset = .sbss:0x806B7A80; // type:object size:0x4 scope:global a IsDevKit = .sbss:0x806B7A84; // type:object size:0x1 scope:local data:byte lbl_806B7A85 = .sbss:0x806B7A85; // type:object size:0x1 data:byte Initialized = .sbss:0x806B7A86; // type:object size:0x1 scope:local data:byte -lbl_806B7A88 = .sbss:0x806B7A88; // type:object size:0x1 data:byte +Initialized = .sbss:0x806B7A88; // type:object size:0x1 data:byte IPCCurrentBufferLo = .sbss:0x806B7A8C; // type:object size:0x4 scope:global align:4 data:4byte IPCCurrentBufferHi = .sbss:0x806B7A90; // type:object size:0x4 scope:global align:4 data:4byte IPCBufferLo = .sbss:0x806B7A94; // type:object size:0x4 scope:global align:4 data:4byte diff --git a/configure.py b/configure.py index 5d2dc1221..753d9937c 100644 --- a/configure.py +++ b/configure.py @@ -2415,14 +2415,14 @@ def JSysLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: SDKLib( "esp", [ - Object(NonMatching, "RVL_SDK/esp/esp.c") + Object(Matching, "RVL_SDK/esp/esp.c") ] ), SDKLib( "euart", [ - Object(NonMatching, "RVL_SDK/euart/euart.c") + Object(Matching, "RVL_SDK/euart/euart.c") ] ), @@ -2438,7 +2438,7 @@ def JSysLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: SDKLib( "fs", [ - Object(NonMatching, "RVL_SDK/fs/fs.c") + Object(Matching, "RVL_SDK/fs/fs.c") ] ), @@ -2479,9 +2479,9 @@ def JSysLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: SDKLib( "ipc", [ - Object(NonMatching, "RVL_SDK/ipc/ipcMain.c"), - Object(NonMatching, "RVL_SDK/ipc/ipcclt.c"), - Object(NonMatching, "RVL_SDK/ipc/memory.c"), + Object(Matching, "RVL_SDK/ipc/ipcMain.c"), + Object(Matching, "RVL_SDK/ipc/ipcclt.c"), + Object(Matching, "RVL_SDK/ipc/memory.c"), Object(NonMatching, "RVL_SDK/ipc/ipcProfile.c") ] ), @@ -2618,7 +2618,7 @@ def JSysLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: [ Object(NonMatching, "RVL_SDK/sc/scsystem.c"), Object(NonMatching, "RVL_SDK/sc/scapi.c"), - Object(NonMatching, "RVL_SDK/sc/scapi_prdinfo.c"), + Object(Matching, "RVL_SDK/sc/scapi_prdinfo.c"), ] ), @@ -2633,8 +2633,8 @@ def JSysLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: SDKLib( "thp", [ - Object(NonMatching, "RVL_SDK/thp/THPDec.c"), - Object(NonMatching, "RVL_SDK/thp/THPAudio.c") + Object(Matching, "RVL_SDK/thp/THPDec.c"), + Object(Matching, "RVL_SDK/thp/THPAudio.c") ] ), @@ -2711,7 +2711,7 @@ def JSysLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: "vi", [ Object(NonMatching, "RVL_SDK/vi/vi.c"), - Object(NonMatching, "RVL_SDK/vi/i2c.c"), + Object(Matching, "RVL_SDK/vi/i2c.c"), Object(NonMatching, "RVL_SDK/vi/vi3in1.c") ] ), diff --git a/src/RVL_SDK/ipc/ipcProfile.c b/src/RVL_SDK/ipc/ipcProfile.c index 8a85429f7..113f232d4 100644 --- a/src/RVL_SDK/ipc/ipcProfile.c +++ b/src/RVL_SDK/ipc/ipcProfile.c @@ -8,6 +8,13 @@ static u32 IpcReqPtrArray[32]; static void AddReqInfo(void *, s32); static void DelReqInfo(void *, s32); +static s32 IPCGetQueueStatus(u32 i) { + if (i > 32) { + return -1; + } + return IpcFdArray[i]; +} + void IPCiProfInit(void) { u32 i; @@ -57,4 +64,4 @@ static void DelReqInfo(void* ptr, s32 fd) { break; } } -} \ No newline at end of file +} diff --git a/src/RVL_SDK/ipc/ipcclt.c b/src/RVL_SDK/ipc/ipcclt.c index bb92d7365..c8a67178a 100644 --- a/src/RVL_SDK/ipc/ipcclt.c +++ b/src/RVL_SDK/ipc/ipcclt.c @@ -166,7 +166,7 @@ void IpcReplyHandler(__OSInterrupt interrupt, OSContext* context) { return; } -void IpcAckHandler(__OSInterrupt interrupt, OSContext* context) { +static void IpcAckHandler(__OSInterrupt interrupt, OSContext* context) { IPCWriteReg(1, (IPCReadReg(1) & (1 << 5 | 1 << 4)) | 1 << 1); ACRWriteReg(0x30, 0x40000000); @@ -848,4 +848,4 @@ IOSError IOS_IoctlvReboot(IOSFd fd, s32 cmd, u32 readCount, u32 writeCount, IOSI finish: return ret; -} \ No newline at end of file +} diff --git a/src/RVL_SDK/sc/scapi_prdinfo.c b/src/RVL_SDK/sc/scapi_prdinfo.c index dc421ce51..f2d960f10 100644 --- a/src/RVL_SDK/sc/scapi_prdinfo.c +++ b/src/RVL_SDK/sc/scapi_prdinfo.c @@ -14,36 +14,20 @@ static SCProductAreaAndString ProductAreaAndStringTbl[] = { 3, "AUS", 4, "BRA", 5, "TWN", - 6, "ROC", - 7, "KOR", - 8, "HKG", - 9, "ASI", - 10, "LTN", - 11, "SAF", - 12, "CHN", + 5, "ROC", + 6, "KOR", + 7, "HKG", + 8, "ASI", + 9, "LTN", + 10, "SAF", + 11, "CHN", -1 }; -BOOL SCGetProductAreaString(char* buf, u32 bufSize) { +static BOOL SCGetProductAreaString(char* buf, u32 bufSize) { return __SCF1("AREA", buf, bufSize); } -s8 SCGetProductArea(void) { - char buf[4]; - SCProductAreaAndString* p = ProductAreaAndStringTbl; - - if (SCGetProductAreaString(buf, sizeof(buf))) { - while (p->area != -1) { - if (strcmp(p->string, buf) == 0) { - return p->area; - } - - p++; - } - } - - return -1; -} BOOL __SCF1(const char* keyword, char* buf, u32 bufSize) { BOOL result = FALSE; @@ -104,6 +88,23 @@ BOOL __SCF1(const char* keyword, char* buf, u32 bufSize) { return FALSE; } +s8 SCGetProductArea(void) { + char buf[4]; + SCProductAreaAndString* p = ProductAreaAndStringTbl; + + if (SCGetProductAreaString(buf, sizeof(buf))) { + while (p->area != -1) { + if (strcmp(p->string, buf) == 0) { + return p->area; + } + + p++; + } + } + + return -1; +} + typedef struct { s8 game; char string[3]; @@ -133,4 +134,4 @@ s8 SCGetProductGameRegion(void) { } return -1; -} \ No newline at end of file +} diff --git a/src/RVL_SDK/vi/i2c.c b/src/RVL_SDK/vi/i2c.c index bbd76e9bc..9f765d406 100644 --- a/src/RVL_SDK/vi/i2c.c +++ b/src/RVL_SDK/vi/i2c.c @@ -38,7 +38,7 @@ static BOOL __VISetSDA(u32 value) { } static u32 __VIGetSDA(void) { - u32 reg = busRd32(0xCD8000C0); + u32 reg = busRd32(0xCD8000C8); return (u32)((reg >> 15) & 1); } @@ -237,4 +237,4 @@ s32 __VISendI2CData(u8 slaveAddr, u8 *pData, s32 nBytes) { OSRestoreInterrupts(enabled); return 1; -} \ No newline at end of file +}