mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Identify and match osPfsInit
This commit is contained in:
@@ -52,7 +52,7 @@ glabel func_80074B34
|
||||
/* 0757F4 80074BF4 15C00004 */ bnez $t6, .L80074C08
|
||||
/* 0757F8 80074BF8 3C048012 */ lui $a0, %hi(D_80124010) # $a0, 0x8012
|
||||
/* 0757FC 80074BFC 8C844010 */ lw $a0, %lo(D_80124010)($a0)
|
||||
/* 075800 80074C00 0C033B48 */ jal func_800CED20
|
||||
/* 075800 80074C00 0C033B48 */ jal osPfsInit
|
||||
/* 075804 80074C04 03203025 */ move $a2, $t9
|
||||
.L80074C08:
|
||||
/* 075808 80074C08 8FA40058 */ lw $a0, 0x58($sp)
|
||||
|
||||
@@ -68,7 +68,7 @@ glabel func_800758DC
|
||||
/* 0765D0 800759D0 00401825 */ move $v1, $v0
|
||||
/* 0765D4 800759D4 8E840000 */ lw $a0, ($s4)
|
||||
/* 0765D8 800759D8 02602825 */ move $a1, $s3
|
||||
/* 0765DC 800759DC 0C033B48 */ jal func_800CED20
|
||||
/* 0765DC 800759DC 0C033B48 */ jal osPfsInit
|
||||
/* 0765E0 800759E0 02A03025 */ move $a2, $s5
|
||||
/* 0765E4 800759E4 00401825 */ move $v1, $v0
|
||||
.L800759E8:
|
||||
@@ -90,7 +90,7 @@ glabel func_800758DC
|
||||
/* 07661C 80075A1C 24010001 */ li $at, 1
|
||||
/* 076620 80075A20 8E840000 */ lw $a0, ($s4)
|
||||
/* 076624 80075A24 02602825 */ move $a1, $s3
|
||||
/* 076628 80075A28 0C033B48 */ jal func_800CED20
|
||||
/* 076628 80075A28 0C033B48 */ jal osPfsInit
|
||||
/* 07662C 80075A2C 02A03025 */ move $a2, $s5
|
||||
/* 076630 80075A30 14520008 */ bne $v0, $s2, .L80075A54
|
||||
/* 076634 80075A34 02602825 */ move $a1, $s3
|
||||
|
||||
@@ -67,13 +67,13 @@ glabel func_80075B18
|
||||
/* 076818 80075C18 018D9021 */ addu $s2, $t4, $t5
|
||||
/* 07681C 80075C1C 8E840000 */ lw $a0, ($s4)
|
||||
/* 076820 80075C20 02402825 */ move $a1, $s2
|
||||
/* 076824 80075C24 0C033B48 */ jal func_800CED20
|
||||
/* 076824 80075C24 0C033B48 */ jal osPfsInit
|
||||
/* 076828 80075C28 02003025 */ move $a2, $s0
|
||||
/* 07682C 80075C2C 24010002 */ li $at, 2
|
||||
/* 076830 80075C30 14410004 */ bne $v0, $at, .L80075C44
|
||||
/* 076834 80075C34 02402825 */ move $a1, $s2
|
||||
/* 076838 80075C38 8E840000 */ lw $a0, ($s4)
|
||||
/* 07683C 80075C3C 0C033B48 */ jal func_800CED20
|
||||
/* 07683C 80075C3C 0C033B48 */ jal osPfsInit
|
||||
/* 076840 80075C40 02003025 */ move $a2, $s0
|
||||
.L80075C44:
|
||||
/* 076844 80075C44 14400006 */ bnez $v0, .L80075C60
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
glabel func_800CED20
|
||||
/* 0CF920 800CED20 27BDFFE0 */ addiu $sp, $sp, -0x20
|
||||
/* 0CF924 800CED24 AFBF0014 */ sw $ra, 0x14($sp)
|
||||
/* 0CF928 800CED28 AFA40020 */ sw $a0, 0x20($sp)
|
||||
/* 0CF92C 800CED2C AFA50024 */ sw $a1, 0x24($sp)
|
||||
/* 0CF930 800CED30 AFA60028 */ sw $a2, 0x28($sp)
|
||||
/* 0CF934 800CED34 0C033594 */ jal __osSiGetAccess
|
||||
/* 0CF938 800CED38 AFA0001C */ sw $zero, 0x1c($sp)
|
||||
/* 0CF93C 800CED3C 8FA40020 */ lw $a0, 0x20($sp)
|
||||
/* 0CF940 800CED40 0C033B75 */ jal __osPfsGetStatus
|
||||
/* 0CF944 800CED44 8FA50028 */ lw $a1, 0x28($sp)
|
||||
/* 0CF948 800CED48 0C0335A5 */ jal __osSiRelAccess
|
||||
/* 0CF94C 800CED4C AFA2001C */ sw $v0, 0x1c($sp)
|
||||
/* 0CF950 800CED50 8FAE001C */ lw $t6, 0x1c($sp)
|
||||
/* 0CF954 800CED54 11C00003 */ beqz $t6, .L800CED64
|
||||
/* 0CF958 800CED58 00000000 */ nop
|
||||
/* 0CF95C 800CED5C 10000019 */ b .L800CEDC4
|
||||
/* 0CF960 800CED60 01C01025 */ move $v0, $t6
|
||||
.L800CED64:
|
||||
/* 0CF964 800CED64 8FAF0020 */ lw $t7, 0x20($sp)
|
||||
/* 0CF968 800CED68 8FB80024 */ lw $t8, 0x24($sp)
|
||||
/* 0CF96C 800CED6C AF0F0004 */ sw $t7, 4($t8)
|
||||
/* 0CF970 800CED70 8FA80024 */ lw $t0, 0x24($sp)
|
||||
/* 0CF974 800CED74 8FB90028 */ lw $t9, 0x28($sp)
|
||||
/* 0CF978 800CED78 AD190008 */ sw $t9, 8($t0)
|
||||
/* 0CF97C 800CED7C 8FA90024 */ lw $t1, 0x24($sp)
|
||||
/* 0CF980 800CED80 AD200000 */ sw $zero, ($t1)
|
||||
/* 0CF984 800CED84 0C035659 */ jal __osGetId
|
||||
/* 0CF988 800CED88 8FA40024 */ lw $a0, 0x24($sp)
|
||||
/* 0CF98C 800CED8C AFA2001C */ sw $v0, 0x1c($sp)
|
||||
/* 0CF990 800CED90 8FAA001C */ lw $t2, 0x1c($sp)
|
||||
/* 0CF994 800CED94 11400003 */ beqz $t2, .L800CEDA4
|
||||
/* 0CF998 800CED98 00000000 */ nop
|
||||
/* 0CF99C 800CED9C 10000009 */ b .L800CEDC4
|
||||
/* 0CF9A0 800CEDA0 01401025 */ move $v0, $t2
|
||||
.L800CEDA4:
|
||||
/* 0CF9A4 800CEDA4 0C033D4C */ jal osPfsChecker
|
||||
/* 0CF9A8 800CEDA8 8FA40024 */ lw $a0, 0x24($sp)
|
||||
/* 0CF9AC 800CEDAC 8FAB0024 */ lw $t3, 0x24($sp)
|
||||
/* 0CF9B0 800CEDB0 AFA2001C */ sw $v0, 0x1c($sp)
|
||||
/* 0CF9B4 800CEDB4 8D6C0000 */ lw $t4, ($t3)
|
||||
/* 0CF9B8 800CEDB8 358D0001 */ ori $t5, $t4, 1
|
||||
/* 0CF9BC 800CEDBC AD6D0000 */ sw $t5, ($t3)
|
||||
/* 0CF9C0 800CEDC0 8FA2001C */ lw $v0, 0x1c($sp)
|
||||
.L800CEDC4:
|
||||
/* 0CF9C4 800CEDC4 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
/* 0CF9C8 800CEDC8 27BD0020 */ addiu $sp, $sp, 0x20
|
||||
/* 0CF9CC 800CEDCC 03E00008 */ jr $ra
|
||||
/* 0CF9D0 800CEDD0 00000000 */ nop
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
/* The comment below is needed for this file to be picked up by generate_ld */
|
||||
/* RAM_POS: 0x800CED20 */
|
||||
|
||||
#include "macros.h"
|
||||
#include "libultra_internal.h"
|
||||
#include "controller.h"
|
||||
#include "siint.h"
|
||||
|
||||
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;
|
||||
//pfs->activebank = -1; //Single difference between this an libreultra
|
||||
ERRCK(__osGetId(pfs));
|
||||
|
||||
ret = osPfsChecker(pfs);
|
||||
pfs->status |= PFS_INITIALIZED;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if 1
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CF330/__osPfsGetStatus.s")
|
||||
#else
|
||||
s32 osPfsIsPlug(OSMesgQueue *queue, u8 *pattern)
|
||||
{
|
||||
s32 ret;
|
||||
OSMesg dummy;
|
||||
u8 bitpattern;
|
||||
OSContStatus data[MAXCONTROLLERS];
|
||||
int channel;
|
||||
u8 bits;
|
||||
int crc_error_cnt;
|
||||
ret = 0;
|
||||
bits = 0;
|
||||
crc_error_cnt = 3;
|
||||
__osSiGetAccess();
|
||||
while (TRUE)
|
||||
{
|
||||
__osPfsRequestData(CONT_CMD_REQUEST_STATUS);
|
||||
ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);
|
||||
osRecvMesg(queue, &dummy, OS_MESG_BLOCK);
|
||||
ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);
|
||||
osRecvMesg(queue, &dummy, OS_MESG_BLOCK);
|
||||
__osPfsGetInitData(&bitpattern, data);
|
||||
for (channel = 0; channel < __osMaxControllers; channel++)
|
||||
{
|
||||
if ((data[channel].status & CONT_ADDR_CRC_ER) == 0)
|
||||
{
|
||||
crc_error_cnt--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (__osMaxControllers == channel)
|
||||
crc_error_cnt = 0;
|
||||
if (crc_error_cnt < 1)
|
||||
{
|
||||
for (channel = 0; channel < __osMaxControllers; channel++)
|
||||
{
|
||||
if (data[channel].errno == 0 && (data[channel].status & CONT_CARD_ON) != 0)
|
||||
bits |= 1 << channel;
|
||||
}
|
||||
__osSiRelAccess();
|
||||
*pattern = bits;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1,10 +1,8 @@
|
||||
/* The comment below is needed for this file to be picked up by generate_ld */
|
||||
/* RAM_POS: 0x800CED20 */
|
||||
/* RAM_POS: 0x800CEEE0 */
|
||||
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CF330/func_800CED20.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CF330/__osPfsGetStatus.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CF330/__osPfsGetNextPage.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CF330/osPfsReadWriteFile.s")
|
||||
|
||||
Reference in New Issue
Block a user