diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2022-01-30 23:31:43 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-30 23:31:43 -0700 |
| commit | 42fa90ff7a56348706abd4072fb18713d21bec77 (patch) | |
| tree | 739ca772084fac866b48685794708ec0d78ad657 /src | |
| parent | 04052ba259681c379108c4edc83b0542254ba5f4 (diff) | |
Match OS funcs (#152)
* Matched osSyncPrintf.c
* Matched contramread.c
* Matched contramwrite.c
* Matched osPfsInit and osPfsGetStatus
Diffstat (limited to 'src')
| -rw-r--r-- | src/code_80091750.c | 14 | ||||
| -rw-r--r-- | src/code_800AF9B0.c | 24 | ||||
| -rw-r--r-- | src/code_800AF9B0.h | 2 | ||||
| -rw-r--r-- | src/os/contramread.c | 19 | ||||
| -rw-r--r-- | src/os/contramwrite.c | 16 | ||||
| -rw-r--r-- | src/os/osPfsInit.c | 49 | ||||
| -rw-r--r-- | src/os/osSyncPrintf.c | 16 |
7 files changed, 90 insertions, 50 deletions
diff --git a/src/code_80091750.c b/src/code_80091750.c index 6285363dd..ecf4e2c19 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -318,7 +318,7 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_80091B78.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800CE720(OSMesgQueue *, OSPfs *, ?); // extern +s32 osPfsInit(OSMesgQueue *, OSPfs *, ?); // extern extern OSPfs D_8018E868; extern ? D_8018E938; extern ? D_8018EB38; @@ -347,7 +347,7 @@ extern OSMesgQueue gSIEventMesgQueue; } osPfsIsPlug(&gSIEventMesgQueue, &sp67); if ((sp67 & 1) != 0) { - if (func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0) != 0) { + if (osPfsInit(&gSIEventMesgQueue, &D_8018E868, 0) != 0) { return 0; } phi_s0 = 0; @@ -2010,7 +2010,7 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_80095AE0.s") //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void *func_800959F8(void *, ? *, void *, s32); // extern ? func_80095AE0(void *, s32, s32, s32, f32); // extern -? func_800CF774(? *); // extern +? rmonPrintf(? *); // extern extern ? D_02007BB8; extern ? D_02007CD8; extern ? D_02007DF8; @@ -2036,7 +2036,7 @@ void *func_80095BD0(void *arg0, s32 arg1, s32 arg2, s32 arg3, u32 arg4, s32 arg5 if (temp_v0 < 0x2F7) { sp28 = gGfxPool + (temp_v0 << 6) + 0xFAC0; if (temp_v0 < 0) { - func_800CF774(&D_800F0BCC); + rmonPrintf(&D_800F0BCC); } func_80095AE0(sp28, arg2, arg3, arg6, arg7); arg0->unk0 = 0x1020040; @@ -2080,7 +2080,7 @@ void *func_80095BD0(void *arg0, s32 arg1, s32 arg2, s32 arg3, u32 arg4, s32 arg5 } return func_800959F8(temp_s0 + 8, phi_a1, temp_s0, temp_a3); } - func_800CF774(&D_800F0BEC); + rmonPrintf(&D_800F0BEC); return arg0; } #else @@ -14323,7 +14323,7 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_800AA280.s") #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 s32 check_for_controller_pak(?); /* extern */ -s32 func_800CE720(? *, ? *, ?); /* extern */ +s32 osPfsInit(? *, ? *, ?); /* extern */ s32 osPfsFindFile(? *, u16, s32, ? *, ? *, ? *); /* extern */ s32 osPfsFreeBlocks(? *, s32 *); /* extern */ s32 osPfsNumFiles(? *, s32 *, s32 *); /* extern */ @@ -14380,7 +14380,7 @@ block_12: arg0->unk4 = 2; return; } - temp_v0_3 = func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0); + temp_v0_3 = osPfsInit(&gSIEventMesgQueue, &D_8018E868, 0); if (temp_v0_3 != 0) { if (temp_v0_3 != 1) { if (temp_v0_3 != 4) { diff --git a/src/code_800AF9B0.c b/src/code_800AF9B0.c index 87fbf8617..71e3543eb 100644 --- a/src/code_800AF9B0.c +++ b/src/code_800AF9B0.c @@ -2630,7 +2630,7 @@ s32 func_800B4520(void) { #ifdef MIPS_TO_C //generated by mips_to_c commit cc33060578851a93591ed035e96ffd1f15c765f1 -? func_800CF774(? *, s32); /* extern */ +? rmonPrintf(? *, s32); /* extern */ extern ? D_800F2BE8; extern ? D_800F2BF8; extern ? D_800F2C0C; @@ -2643,9 +2643,9 @@ UNUSED void func_800B4560(s32 arg0, s32 arg1) { s32 sp18; sp18 = D_8018D9C0; - func_800CF774(&D_800F2BE8, D_80162DE0); - func_800CF774(&D_800F2BF8, (s32) *(&D_8018EE16 + (arg0 << 7))); - func_800CF774(&D_800F2C0C, (s32) ((arg1 << 7) + sp18)->unk6); + rmonPrintf(&D_800F2BE8, D_80162DE0); + rmonPrintf(&D_800F2BF8, (s32) *(&D_8018EE16 + (arg0 << 7))); + rmonPrintf(&D_800F2C0C, (s32) ((arg1 << 7) + sp18)->unk6); } #else GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B4560.s") @@ -3467,7 +3467,7 @@ s32 check_for_controller_pak(s32 controller) { #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 check_for_controller_pak(s32); // extern -s32 func_800CE720(? *, OSPfs *, ?); // extern +s32 osPfsInit(? *, OSPfs *, ?); // extern extern u16 D_800E86F0; extern u32 D_800E86F4; extern s8 D_800E86F8; @@ -3512,7 +3512,7 @@ block_9: if (check_for_controller_pak(0) == 0) { return 1; } - temp_v0_3 = func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0); + temp_v0_3 = osPfsInit(&gSIEventMesgQueue, &D_8018E868, 0); if (temp_v0_3 != 0) { if (temp_v0_3 != 1) { if (temp_v0_3 != 4) { @@ -3560,7 +3560,7 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5B94.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 check_for_controller_pak(?); // extern -s32 func_800CE720(? *, OSPfs *, ?); // extern +s32 osPfsInit(? *, OSPfs *, ?); // extern extern u16 D_800E86F0; extern u32 D_800E86F4; extern s8 D_800E86FC; @@ -3602,7 +3602,7 @@ block_8: if (check_for_controller_pak(1) == 0) { return 1; } - temp_v0_3 = func_800CE720(&gSIEventMesgQueue, &D_8018E8D0, 1); + temp_v0_3 = osPfsInit(&gSIEventMesgQueue, &D_8018E8D0, 1); if (temp_v0_3 != 0) { if (temp_v0_3 != 1) { if (temp_v0_3 != 4) { @@ -3649,7 +3649,7 @@ s32 func_800B5F30(void) { return -4; } if (check_for_controller_pak(0) != 0) { - sp1C = func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0); + sp1C = osPfsInit(&gSIEventMesgQueue, &D_8018E868, 0); if (osPfsNumFiles(&D_8018E868, &D_8018EB78, &D_8018EB7C) != 0) { D_800E86F8 = 0; return -2; @@ -3674,7 +3674,7 @@ s32 func_800B6014(void) { return -4; } if (check_for_controller_pak(1) != 0) { - temp_v0 = func_800CE720(&gSIEventMesgQueue, &D_8018E8D0, 1); + temp_v0 = osPfsInit(&gSIEventMesgQueue, &D_8018E8D0, 1); if (temp_v0 == 0) { D_800E86FC = 1; } @@ -4116,7 +4116,7 @@ s32 func_800B6A68(void) { //generated by mips_to_c commit cc33060578851a93591ed035e96ffd1f15c765f1 s32 check_for_controller_pak(?); /* extern */ ? func_800B6A68(); /* extern */ -s32 func_800CE720(? *, ? *, ?); /* extern */ +s32 osPfsInit(? *, ? *, ?); /* extern */ s32 osPfsFindFile(? *, u16, s32, ? *, ? *, ? *); /* extern */ s32 osPfsFreeBlocks(? *, s32 *); /* extern */ s32 osPfsNumFiles(? *, s32 *, s32 *); /* extern */ @@ -4135,7 +4135,7 @@ extern ? gSIEventMesgQueue; UNUSED void func_800B6AF8(void) { s32 temp_t1; - if ((check_for_controller_pak(0) != 0) && (func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0) == 0) && (osPfsFindFile(&D_8018E868, D_800E86F0, D_800E86F4, &D_800F2E64, &D_800F2E74, &D_8018EB84) != 0) && (osPfsNumFiles(&D_8018E868, &D_8018EB78, &D_8018EB7C) == 0) && (D_8018EB7C < D_8018EB78) && (osPfsFreeBlocks(&D_8018E868, &gControllerPakNumPagesFree) == 0)) { + if ((check_for_controller_pak(0) != 0) && (osPfsInit(&gSIEventMesgQueue, &D_8018E868, 0) == 0) && (osPfsFindFile(&D_8018E868, D_800E86F0, D_800E86F4, &D_800F2E64, &D_800F2E74, &D_8018EB84) != 0) && (osPfsNumFiles(&D_8018E868, &D_8018EB78, &D_8018EB7C) == 0) && (D_8018EB7C < D_8018EB78) && (osPfsFreeBlocks(&D_8018E868, &gControllerPakNumPagesFree) == 0)) { temp_t1 = (s32) gControllerPakNumPagesFree >> 8; gControllerPakNumPagesFree = temp_t1; if (temp_t1 >= 0x79) { diff --git a/src/code_800AF9B0.h b/src/code_800AF9B0.h index 4b0d5a47d..192d80ee9 100644 --- a/src/code_800AF9B0.h +++ b/src/code_800AF9B0.h @@ -77,7 +77,7 @@ void func_800CA330(s32); void func_800CA388(s32); // os -s32 func_800CE720(OSMesgQueue*, OSPfs*, s32); +s32 osPfsInit(OSMesgQueue*, OSPfs*, s32); // memory.c u32 func_802A7B70(u16); diff --git a/src/os/contramread.c b/src/os/contramread.c index 5b3ad91db..f78507fc6 100644 --- a/src/os/contramread.c +++ b/src/os/contramread.c @@ -2,11 +2,9 @@ #include "PR/rcp.h" #include "controller.h" -extern s32 func_800CE7D4(OSMesgQueue *, s32); +extern s32 __osPfsGetStatus(OSMesgQueue *, s32); void __osPackRamReadData(int channel, u16 address); -//u32 D_801965CC; - s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) { s32 ret; int i; @@ -21,11 +19,12 @@ s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) { __osPackRamReadData(channel, address); ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); - for (i = 0; i < 16; i++) { - __osPfsPifRam.ramarray[i] = 0xFF; - } do { - //D_801965CC = 0; + + for (i = 0; i < 16; i++) { + __osPfsPifRam.ramarray[i] = 0xFF; + } + __osPfsPifRam.pifstatus = 0; ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); ptr = (u8 *)&__osPfsPifRam; @@ -40,7 +39,7 @@ s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) { u8 c; c = __osContDataCrc((u8*)&ramreadformat.data); if (c != ramreadformat.datacrc) { - ret = func_800CE7D4(mq, channel); + ret = __osPfsGetStatus(mq, channel); if (ret != 0) { __osSiRelAccess(); return ret; @@ -52,10 +51,6 @@ s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) { } } } - // diff here somewhere - else { - ret = 1/* PFS_ERR_NOPACK */; - } if (ret != PFS_ERR_CONTRFAIL) { break; } diff --git a/src/os/contramwrite.c b/src/os/contramwrite.c index d600715cf..a4db11e17 100644 --- a/src/os/contramwrite.c +++ b/src/os/contramwrite.c @@ -2,9 +2,8 @@ #include "PR/rcp.h" #include "controller.h" -extern s32 func_800CE7D4(OSMesgQueue *, s32); +extern s32 __osPfsGetStatus(OSMesgQueue *, s32); void __osPackRamWriteData(int channel, u16 address, u8 *buffer); -//extern u32 D_801965CC; s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int force) { s32 ret; @@ -24,11 +23,11 @@ s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int __osPackRamWriteData(channel, address, buffer); ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); - for (i = 0; i < 16; i++) { - __osPfsPifRam.ramarray[i] = 0xFF; - } do { - //D_801965CC = 0; + for (i = 0; i < 16; i++) { + __osPfsPifRam.ramarray[i] = 0xFF; + } + __osPfsPifRam.pifstatus = 0; ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); ptr = (u8 *)&__osPfsPifRam; @@ -43,16 +42,13 @@ s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int ret = CHNL_ERR(ramreadformat); if (ret == 0) { if (__osContDataCrc(buffer) != ramreadformat.datacrc) { - ret = func_800CE7D4(mq, channel); + ret = __osPfsGetStatus(mq, channel); if (ret != 0) { __osSiRelAccess(); return ret; } ret = PFS_ERR_CONTRFAIL; } - // same diff as contramread - } else { - ret = PFS_ERR_NOPACK; } if (ret != PFS_ERR_CONTRFAIL) { break; diff --git a/src/os/osPfsInit.c b/src/os/osPfsInit.c new file mode 100644 index 000000000..fd5fe147c --- /dev/null +++ b/src/os/osPfsInit.c @@ -0,0 +1,49 @@ +#include "libultra_internal.h" +#include "controller.h" + +// osPfsInit +s32 osPfsInit(OSMesgQueue *queue, OSPfs *pfs, int channel) +{ + s32 ret; + ret = 0; + + __osSiGetAccess(); + ret = __osPfsGetStatus(queue, channel); + __osSiRelAccess(); + if (ret != 0) + return ret; + + pfs->queue = queue; + pfs->channel = channel; + pfs->status = 0; + ERRCK(__osGetId(pfs)); + + ret = osPfsChecker(pfs); + pfs->status |= PFS_INITIALIZED; + return ret; +} + +// __osPfsGetStatus +s32 __osPfsGetStatus(OSMesgQueue *queue, int channel) +{ + s32 ret; + OSMesg dummy; + u8 pattern; + OSContStatus data[MAXCONTROLLERS]; + + ret = 0; + __osPfsRequestData(0); + ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); + osRecvMesg(queue, &dummy, OS_MESG_BLOCK); + ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam); + osRecvMesg(queue, &dummy, OS_MESG_BLOCK); + __osPfsGetInitData(&pattern, &data); + + if (((data[channel].status & CONT_CARD_ON) != 0) && ((data[channel].status & CONT_CARD_PULL) != 0)) + return PFS_ERR_NEW_PACK; + if ((data[channel].errno != 0) || ((data[channel].status & CONT_CARD_ON) == 0)) + return PFS_ERR_NOPACK; + if ((data[channel].status & CONT_ADDR_CRC_ER) != 0) + return PFS_ERR_CONTRFAIL; + return ret; +} diff --git a/src/os/osSyncPrintf.c b/src/os/osSyncPrintf.c index a7e2035e9..41377d13a 100644 --- a/src/os/osSyncPrintf.c +++ b/src/os/osSyncPrintf.c @@ -1,14 +1,14 @@ #include "libultra_internal.h" #include "libc/stdarg.h" -// neither function matches - -void osSyncPrintf(const char *fmt, ...) { - if (1); +char *osSyncPrintf(char *arg0, const char *arg1, size_t size) { + // ifdef'd formatting code? + return (1); } -void func_800CF774(const char *fmt, ...) { - va_list args; - - _Printf(osSyncPrintf, 0, fmt, &args); +void rmonPrintf(const char *fmt, ...) { + va_list args; + va_start(args, fmt); + _Printf(osSyncPrintf, NULL, fmt, args); + va_end(args); } |
