Regenerated ovl0_2 with jump tables specified and matched 2 of 3 rodata funcs

This commit is contained in:
Mr-Wiseguy 2020-10-31 17:35:20 -04:00
parent 4ce793070e
commit cb5f1039af
8 changed files with 337 additions and 120 deletions

View File

@ -23,11 +23,12 @@ glabel func_80004810
/* 005464 80004864 2DE10005 */ sltiu $at, $t7, 5
/* 005468 80004868 1020004F */ beqz $at, .L800049A8_ovl0
/* 00546C 8000486C 000F7880 */ sll $t7, $t7, 2
/* 005470 80004870 3C018004 */ lui $at, %hi(D_8003FF30)
/* 005470 80004870 3C018004 */ lui $at, %hi(jtbl_8003FF30)
/* 005474 80004874 002F0821 */ addu $at, $at, $t7
/* 005478 80004878 8C2FFF30 */ lw $t7, %lo(D_8003FF30)($at)
/* 005478 80004878 8C2FFF30 */ lw $t7, %lo(jtbl_8003FF30)($at)
/* 00547C 8000487C 01E00008 */ jr $t7
/* 005480 80004880 00000000 */ nop
glabel L80004884_ovl0
/* 005484 80004884 8E18000C */ lw $t8, 0xc($s0)
/* 005488 80004888 8E090020 */ lw $t1, 0x20($s0)
/* 00548C 8000488C 96050014 */ lhu $a1, 0x14($s0)
@ -43,6 +44,7 @@ glabel func_80004810
/* 0054B4 800048B4 00000000 */ nop
/* 0054B8 800048B8 1000003B */ b .L800049A8_ovl0
/* 0054BC 800048BC AE02003C */ sw $v0, 0x3c($s0)
glabel L800048C0_ovl0
/* 0054C0 800048C0 8E0B000C */ lw $t3, 0xc($s0)
/* 0054C4 800048C4 8E0D0020 */ lw $t5, 0x20($s0)
/* 0054C8 800048C8 96050014 */ lhu $a1, 0x14($s0)
@ -56,6 +58,7 @@ glabel func_80004810
/* 0054E8 800048E8 00000000 */ nop
/* 0054EC 800048EC 1000002E */ b .L800049A8_ovl0
/* 0054F0 800048F0 AE02003C */ sw $v0, 0x3c($s0)
glabel L800048F4_ovl0
/* 0054F4 800048F4 8E0E000C */ lw $t6, 0xc($s0)
/* 0054F8 800048F8 8E180020 */ lw $t8, 0x20($s0)
/* 0054FC 800048FC 96050014 */ lhu $a1, 0x14($s0)
@ -72,6 +75,7 @@ glabel func_80004810
/* 005528 80004928 AFA90018 */ sw $t1, 0x18($sp)
/* 00552C 8000492C 1000001E */ b .L800049A8_ovl0
/* 005530 80004930 AE02003C */ sw $v0, 0x3c($s0)
glabel L80004934_ovl0
/* 005534 80004934 8E0A000C */ lw $t2, 0xc($s0)
/* 005538 80004938 8E0C0034 */ lw $t4, 0x34($s0)
/* 00553C 8000493C 8E05002C */ lw $a1, 0x2c($s0)
@ -87,6 +91,7 @@ glabel func_80004810
/* 005564 80004964 00000000 */ nop
/* 005568 80004968 1000000F */ b .L800049A8_ovl0
/* 00556C 8000496C AE02003C */ sw $v0, 0x3c($s0)
glabel L80004970_ovl0
/* 005570 80004970 8E0E000C */ lw $t6, 0xc($s0)
/* 005574 80004974 8E180034 */ lw $t8, 0x34($s0)
/* 005578 80004978 8E05002C */ lw $a1, 0x2c($s0)

View File

@ -7,16 +7,18 @@ glabel func_80004DC8
/* 0059DC 80004DDC 2DC10005 */ sltiu $at, $t6, 5
/* 0059E0 80004DE0 10200028 */ beqz $at, .L80004E84_ovl0
/* 0059E4 80004DE4 000E7080 */ sll $t6, $t6, 2
/* 0059E8 80004DE8 3C018004 */ lui $at, %hi(D_8003FF44)
/* 0059E8 80004DE8 3C018004 */ lui $at, %hi(jtbl_8003FF44)
/* 0059EC 80004DEC 002E0821 */ addu $at, $at, $t6
/* 0059F0 80004DF0 8C2EFF44 */ lw $t6, %lo(D_8003FF44)($at)
/* 0059F0 80004DF0 8C2EFF44 */ lw $t6, %lo(jtbl_8003FF44)($at)
/* 0059F4 80004DF4 01C00008 */ jr $t6
/* 0059F8 80004DF8 00000000 */ nop
glabel L80004DFC_ovl0
/* 0059FC 80004DFC 3C048005 */ lui $a0, %hi(D_80048DA0) # $a0, 0x8005
/* 005A00 80004E00 0C00C818 */ jal func_80032060
/* 005A04 80004E04 24848DA0 */ addiu $a0, %lo(D_80048DA0) # addiu $a0, $a0, -0x7260
/* 005A08 80004E08 1000001E */ b .L80004E84_ovl0
/* 005A0C 80004E0C AE020018 */ sw $v0, 0x18($s0)
glabel L80004E10_ovl0
/* 005A10 80004E10 3C048005 */ lui $a0, %hi(D_80048DA0) # $a0, 0x8005
/* 005A14 80004E14 24848DA0 */ addiu $a0, %lo(D_80048DA0) # addiu $a0, $a0, -0x7260
/* 005A18 80004E18 9205000D */ lbu $a1, 0xd($s0)
@ -24,6 +26,7 @@ glabel func_80004DC8
/* 005A20 80004E20 8E060010 */ lw $a2, 0x10($s0)
/* 005A24 80004E24 10000017 */ b .L80004E84_ovl0
/* 005A28 80004E28 AE020018 */ sw $v0, 0x18($s0)
glabel L80004E2C_ovl0
/* 005A2C 80004E2C 3C048005 */ lui $a0, %hi(D_80048DA0) # $a0, 0x8005
/* 005A30 80004E30 24848DA0 */ addiu $a0, %lo(D_80048DA0) # addiu $a0, $a0, -0x7260
/* 005A34 80004E34 9205000D */ lbu $a1, 0xd($s0)
@ -31,6 +34,7 @@ glabel func_80004DC8
/* 005A3C 80004E3C 8E060010 */ lw $a2, 0x10($s0)
/* 005A40 80004E40 10000010 */ b .L80004E84_ovl0
/* 005A44 80004E44 AE020018 */ sw $v0, 0x18($s0)
glabel L80004E48_ovl0
/* 005A48 80004E48 3C048005 */ lui $a0, %hi(D_80048DA0) # $a0, 0x8005
/* 005A4C 80004E4C 24848DA0 */ addiu $a0, %lo(D_80048DA0) # addiu $a0, $a0, -0x7260
/* 005A50 80004E50 9205000D */ lbu $a1, 0xd($s0)
@ -39,6 +43,7 @@ glabel func_80004DC8
/* 005A5C 80004E5C 8E070014 */ lw $a3, 0x14($s0)
/* 005A60 80004E60 10000008 */ b .L80004E84_ovl0
/* 005A64 80004E64 AE020018 */ sw $v0, 0x18($s0)
glabel L80004E68_ovl0
/* 005A68 80004E68 3C048005 */ lui $a0, %hi(D_80048DA0) # $a0, 0x8005
/* 005A6C 80004E6C 24848DA0 */ addiu $a0, %lo(D_80048DA0) # addiu $a0, $a0, -0x7260
/* 005A70 80004E70 9205000D */ lbu $a1, 0xd($s0)

View File

@ -7,11 +7,12 @@ glabel func_80004E98
/* 005AAC 80004EAC 2DE1000B */ sltiu $at, $t7, 0xb
/* 005AB0 80004EB0 102000C7 */ beqz $at, .L800051D0_ovl0
/* 005AB4 80004EB4 000F7880 */ sll $t7, $t7, 2
/* 005AB8 80004EB8 3C018004 */ lui $at, %hi(D_8003FF58)
/* 005AB8 80004EB8 3C018004 */ lui $at, %hi(jtbl_8003FF58)
/* 005ABC 80004EBC 002F0821 */ addu $at, $at, $t7
/* 005AC0 80004EC0 8C2FFF58 */ lw $t7, %lo(D_8003FF58)($at)
/* 005AC0 80004EC0 8C2FFF58 */ lw $t7, %lo(jtbl_8003FF58)($at)
/* 005AC4 80004EC4 01E00008 */ jr $t7
/* 005AC8 80004EC8 00000000 */ nop
glabel L80004ECC_ovl0
/* 005ACC 80004ECC 0C000FF7 */ jal func_80003FDC
/* 005AD0 80004ED0 AFA70028 */ sw $a3, 0x28($sp)
/* 005AD4 80004ED4 0C001068 */ jal func_800041A0
@ -25,6 +26,7 @@ glabel func_80004E98
/* 005AF4 80004EF4 8CE50004 */ lw $a1, 4($a3)
/* 005AF8 80004EF8 100000B6 */ b .L800051D4_ovl0
/* 005AFC 80004EFC 8FBF0014 */ lw $ra, 0x14($sp)
glabel L80004F00_ovl0
/* 005B00 80004F00 3C188005 */ lui $t8, %hi(D_80048F48) # $t8, 0x8005
/* 005B04 80004F04 8F188F48 */ lw $t8, %lo(D_80048F48)($t8)
/* 005B08 80004F08 3C018005 */ lui $at, %hi(D_80048F4C) # $at, 0x8005
@ -44,6 +46,7 @@ glabel func_80004E98
.L80004F40_ovl0:
/* 005B40 80004F40 100000A3 */ b .L800051D0_ovl0
/* 005B44 80004F44 AC278F4C */ sw $a3, %lo(D_80048F4C)($at)
glabel L80004F48_ovl0
/* 005B48 80004F48 8CF9000C */ lw $t9, 0xc($a3)
/* 005B4C 80004F4C 3C018005 */ lui $at, %hi(D_80048EB4) # $at, 0x8005
/* 005B50 80004F50 00003025 */ move $a2, $zero
@ -72,6 +75,7 @@ glabel func_80004E98
/* 005BAC 80004FAC 8CE50004 */ lw $a1, 4($a3)
/* 005BB0 80004FB0 10000088 */ b .L800051D4_ovl0
/* 005BB4 80004FB4 8FBF0014 */ lw $ra, 0x14($sp)
glabel L80004FB8_ovl0
/* 005BB8 80004FB8 8CEF000C */ lw $t7, 0xc($a3)
/* 005BBC 80004FBC 3C018005 */ lui $at, %hi(D_80048F50) # $at, 0x8005
/* 005BC0 80004FC0 00003025 */ move $a2, $zero
@ -83,6 +87,7 @@ glabel func_80004E98
/* 005BD8 80004FD8 8CE50004 */ lw $a1, 4($a3)
/* 005BDC 80004FDC 1000007D */ b .L800051D4_ovl0
/* 005BE0 80004FE0 8FBF0014 */ lw $ra, 0x14($sp)
glabel L80004FE4_ovl0
/* 005BE4 80004FE4 8CF8000C */ lw $t8, 0xc($a3)
/* 005BE8 80004FE8 3C018005 */ lui $at, %hi(D_80048F54) # $at, 0x8005
/* 005BEC 80004FEC 00003025 */ move $a2, $zero
@ -94,6 +99,7 @@ glabel func_80004E98
/* 005C04 80005004 8CE50004 */ lw $a1, 4($a3)
/* 005C08 80005008 10000072 */ b .L800051D4_ovl0
/* 005C0C 8000500C 8FBF0014 */ lw $ra, 0x14($sp)
glabel L80005010_ovl0
/* 005C10 80005010 8CE3000C */ lw $v1, 0xc($a3)
/* 005C14 80005014 3C088005 */ lui $t0, %hi(D_80048EA0) # $t0, 0x8005
/* 005C18 80005018 25088EA0 */ addiu $t0, %lo(D_80048EA0) # addiu $t0, $t0, -0x7160
@ -177,6 +183,7 @@ glabel func_80004E98
/* 005D3C 8000513C 8CE50004 */ lw $a1, 4($a3)
/* 005D40 80005140 10000024 */ b .L800051D4_ovl0
/* 005D44 80005144 8FBF0014 */ lw $ra, 0x14($sp)
glabel L80005148_ovl0
/* 005D48 80005148 8CE9000C */ lw $t1, 0xc($a3)
/* 005D4C 8000514C 3C0B8005 */ lui $t3, %hi(D_80048EA0) # $t3, 0x8005
/* 005D50 80005150 256B8EA0 */ addiu $t3, %lo(D_80048EA0) # addiu $t3, $t3, -0x7160
@ -202,6 +209,7 @@ glabel func_80004E98
/* 005D9C 8000519C 8CE50004 */ lw $a1, 4($a3)
/* 005DA0 800051A0 1000000C */ b .L800051D4_ovl0
/* 005DA4 800051A4 8FBF0014 */ lw $ra, 0x14($sp)
glabel L800051A8_ovl0
/* 005DA8 800051A8 00E02025 */ move $a0, $a3
/* 005DAC 800051AC 0C001372 */ jal func_80004DC8
/* 005DB0 800051B0 AFA70028 */ sw $a3, 0x28($sp)
@ -212,6 +220,7 @@ glabel func_80004E98
/* 005DC4 800051C4 8FBF0014 */ lw $ra, 0x14($sp)
/* 005DC8 800051C8 0C00B4BC */ jal osSendMesg
/* 005DCC 800051CC 8CE50004 */ lw $a1, 4($a3)
glabel L800051D0_ovl0
.L800051D0_ovl0:
/* 005DD0 800051D0 8FBF0014 */ lw $ra, 0x14($sp)
.L800051D4_ovl0:

View File

@ -1,51 +0,0 @@
#include <ultra64.h>
u32 D_8003FF30 = 0x80004884;
u32 D_8003FF34 = 0x800048C0;
u32 D_8003FF38 = 0x800048F4;
u32 D_8003FF3C = 0x80004934;
u32 D_8003FF40 = 0x80004970;
u32 D_8003FF44 = 0x80004DFC;
u32 D_8003FF48 = 0x80004E10;
u32 D_8003FF4C = 0x80004E2C;
u32 D_8003FF50 = 0x80004E48;
u32 D_8003FF54 = 0x80004E68;
u32 D_8003FF58 = 0x80004ECC;
u32 D_8003FF5C = 0x80004F00;
u32 D_8003FF60 = 0x80004F48;
u32 D_8003FF64 = 0x80004FB8;
u32 D_8003FF68 = 0x80005010;
u32 D_8003FF6C = 0x80004FE4;
u32 D_8003FF70 = 0x800051D0;
u32 D_8003FF74 = 0x800051D0;
u32 D_8003FF78 = 0x800051D0;
u32 D_8003FF7C = 0x80005148;
u32 D_8003FF80 = 0x800051A8;
u32 D_8003FF84 = 0x00000000;
u32 D_8003FF88 = 0x00000000;
u32 D_8003FF8C = 0x00000000;

43
data/kirby.039DF0.2.001.s Normal file
View File

@ -0,0 +1,43 @@
.include "macros.inc"
.section .rodata
# func_80004810 (matched)
glabel jtbl_8003FF30
.word L80004884_ovl0
.word L800048C0_ovl0
.word L800048F4_ovl0
.word L80004934_ovl0
.word L80004970_ovl0
# func_80004DC8 (matched)
glabel jtbl_8003FF44
.word L80004DFC_ovl0
.word L80004E10_ovl0
.word L80004E2C_ovl0
.word L80004E48_ovl0
.word L80004E68_ovl0
# func_80004E98 (good luck lol)
glabel jtbl_8003FF58
.word L80004ECC_ovl0
.word L80004F00_ovl0
.word L80004F48_ovl0
.word L80004FB8_ovl0
.word L80005010_ovl0
.word L80004FE4_ovl0
.word L800051D0_ovl0
.word L800051D0_ovl0
.word L800051D0_ovl0
.word L80005148_ovl0
.word L800051A8_ovl0
glabel D_8003FF84
.word 0x00000000
glabel D_8003FF88
.word 0x00000000
glabel D_8003FF8C
.word 0x00000000

View File

@ -195,7 +195,8 @@ SECTIONS
BUILD_DIR/libultra.a:vimgr.o(.data);
BUILD_DIR/data/kirby.039DF0.2.o(.data);
BUILD_DIR/src/ovl0/ovl0_1.o(.rodata);
BUILD_DIR/data/kirby.039DF0.2.001.o(.data);
BUILD_DIR/src/ovl0/ovl0_2.o(.rodata);
BUILD_DIR/data/kirby.039DF0.2.001.o(.rodata);
BUILD_DIR/src/ovl0/ovl0_2_5.o(.rodata);
BUILD_DIR/src/ovl0/ovl0_2_5_1.o(.rodata);
BUILD_DIR/data/kirby.039DF0.2.01.o(.data);

View File

@ -2,7 +2,6 @@
#include <macros.h>
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void *func_80003DA8(void) {
s32 temp_v0;
s32 temp_v1;
@ -73,29 +72,34 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80003DA8.s")
extern OSContStatus *D_80048E70;
extern OSMesgQueue *D_80048DA0;
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
u8 func_80003ECC(void) {
s32 temp_s2;
void *temp_s1;
void *phi_s0;
void *phi_s1;
s32 phi_s2;
osContStartQuery(&D_80048DA0);
osRecvMesg(&D_80048DA0, 0, 1);
osRecvMesg(&D_80048DA0, NULL, 1);
osContGetQuery(&D_80048E70);
phi_s0 = &D_80048E70;
phi_s1 = &D_80048EA0;
for (phi_s2 = 0; phi_s2 < 4; phi_s2++) {
if ((phi_s0->unk3 == 0) && ((phi_s0->unk2 & 1) != 0)) {
if (((phi_s1->unk1D & 1) == 0) || (phi_s1->unk1C != 0)) {
func_8002F2B4(&D_80048DA0, &D_800490F0 + (phi_s2 * 0x68), phi_s2);
}
phi_s2 = 0;
loop_1:
if ((phi_s0->unk3 == 0) && ((phi_s0->unk2 & 1) != 0)) {
if (((phi_s1->unk1D & 1) == 0) || (phi_s1->unk1C != 0)) {
func_8002F2B4(&D_80048DA0, &D_800490F0 + (phi_s2 * 0x68), phi_s2);
}
temp_s1 = phi_s1 + 0x20;
temp_s1->unk-4 = phi_s0->unk3;
temp_s1->unk-3 = phi_s0->unk2;
phi_s0 = phi_s0 + 4;
phi_s1 = temp_s1;
}
temp_s2 = phi_s2 + 1;
temp_s1 = phi_s1 + 0x20;
temp_s1->unk-4 = phi_s0->unk3;
temp_s1->unk-3 = phi_s0->unk2;
phi_s0 = phi_s0 + 4;
phi_s1 = temp_s1;
phi_s2 = temp_s2;
if (temp_s2 != 4) {
goto loop_1;
}
return phi_s0->unk3;
}
@ -104,7 +108,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80003ECC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
u16 func_80003FDC(void) {
s32 temp_s2;
s32 temp_t7;
@ -122,7 +125,7 @@ u16 func_80003FDC(void) {
u16 phi_return;
func_8002FD30(&D_80048DA0);
osRecvMesg(&D_80048DA0, 0, 1);
osRecvMesg(&D_80048DA0, NULL, 1);
func_8002FDB4(&D_80048E80);
phi_s1 = &D_80048E80;
phi_s2 = 0;
@ -183,7 +186,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80003FDC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_800041A0(void) {
void *temp_v0;
void *temp_v1;
@ -226,7 +228,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_800041A0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void *func_80004250(void) {
? sp43;
s32 temp_s0;
@ -254,7 +255,7 @@ void *func_80004250(void) {
osCreateMesgQueue(&D_80048DA0, &D_80048DB8, 1);
osSetEventMesg(5, &D_80048DA0, 1);
osContReset(&D_80048DA0, &sp43, &D_80048E70);
osContReset(&D_80048DA0, &sp43);
phi_s1 = &D_80048E70;
phi_s0 = 0;
loop_1:
@ -376,26 +377,22 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004250.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_800045C0(void *arg0) {
? sp34;
? sp1C;
void *temp_a3;
temp_a3 = arg0;
arg0 = temp_a3;
osCreateMesgQueue(&sp1C, &sp34, 1, temp_a3);
arg0 = arg0;
osCreateMesgQueue(&sp1C, &sp34, 1);
arg0->unk4 = 1;
arg0->unk8 = &sp1C;
osSendMesg(&D_80048DE8, arg0, 1);
osRecvMesg(&sp1C, 0, 1);
osRecvMesg(&sp1C, NULL, 1);
}
#else
GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_800045C0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80004624(void) {
?32 sp1C;
@ -407,7 +404,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004624.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_8000464C(void) {
?32 sp1C;
@ -419,7 +415,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_8000464C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80004674(s32 arg0, ?32 arg1) {
?32 sp2C;
s32 sp28;
@ -435,7 +430,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004674.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_800046A4(s32 arg0) {
s32 sp24;
?32 sp18;
@ -449,7 +443,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_800046A4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_800046D0(s32 arg0) {
s32 sp24;
?32 sp18;
@ -463,7 +456,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_800046D0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_800046FC(s32 arg0, s32 arg1) {
s32 sp1C;
s32 temp_v1;
@ -518,20 +510,60 @@ void func_800047F0(s32 arg0) {
func_800046FC(arg0, 0);
}
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
Failed to decompile function func_80004810:
struct Unk_Func8004810 {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
u16 unk14;
u16 unk16;
s32 unk18;
s32 unk1C;
s32 unk20;
s32 unk24;
s32 unk28;
s32 unk2C;
s32 unk30;
s32 unk34;
s32 unk38;
s32 unk3C;
};
Unable to determine jump table for jr instruction.
// Most likely a struct array
extern u8 D_800490F0[][0x68];
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl".
#ifdef NEEDS_RODATA
void func_80004810(struct Unk_Func8004810 *arg0) {
arg0->unk3C = func_80035D30(&D_80048DA0, &D_800490F0[arg0->unkC][0], arg0->unkC);
if (arg0->unk3C == 0) {
switch (arg0->unk10) {
// temp_t7 = arg0->unk10;
// if (temp_t7 < 5) {
// goto **(&jtbl_8003FF30 + (temp_t7 * 4));
case 0:
arg0->unk3C = func_800320D0(&D_800490F0[arg0->unkC][0], arg0->unk14, arg0->unk18, arg0->unk1C, arg0->unk20, arg0->unk28);
break;
case 1:
arg0->unk3C = func_800350F0(&D_800490F0[arg0->unkC][0], arg0->unk14, arg0->unk18, arg0->unk1C, arg0->unk20);
break;
case 2:
arg0->unk3C = func_80030DF0(&D_800490F0[arg0->unkC][0], arg0->unk14, arg0->unk18, arg0->unk1C, arg0->unk20, arg0->unk24, arg0->unk28);
break;
case 3:
arg0->unk3C = func_80030794(&D_800490F0[arg0->unkC][0], arg0->unk2C, 0, arg0->unk30, arg0->unk34, arg0->unk38);
break;
case 4:
arg0->unk3C = func_80030794(&D_800490F0[arg0->unkC][0], arg0->unk2C, 1, arg0->unk30, arg0->unk34, arg0->unk38);
break;
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004810.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
s32 func_800049BC(s32 arg0, ?32 arg1, ?32 arg2, ?32 arg3, s32 arg4) {
? sp1C;
@ -550,7 +582,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_800049BC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
s32 func_80004A3C(s32 arg0, ?32 arg1, ?32 arg2, ?32 arg3, s32 arg4) {
? sp1C;
@ -569,7 +600,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004A3C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
s32 func_80004ABC(s32 arg0, u16 arg1, ?32 arg2, ?32 arg3, s32 arg4, s32 arg5, s32 arg6) {
? sp1C;
@ -590,7 +620,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004ABC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
s32 func_80004B50(s32 arg0, u16 arg1, ?32 arg2, ?32 arg3, s32 arg4) {
? sp1C;
@ -609,7 +638,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004B50.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
s32 func_80004BD4(s32 arg0, u16 arg1, ?32 arg2, ?32 arg3, s32 arg4, s32 arg5) {
? sp1C;
@ -629,7 +657,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004BD4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
s32 func_80004C5C(u8 arg0, u8 arg1, ?32 arg2, ?32 arg3) {
? sp1C;
@ -646,7 +673,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004C5C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80004CD4(void) {
func_80004C5C(0, 0, 0, 0);
}
@ -655,7 +681,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004CD4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80004D00(u8 arg0, s32 arg1, ? arg2) {
func_80004C5C(3, arg0, arg1, arg2);
}
@ -664,7 +689,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004D00.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80004D34(u8 arg0, s32 arg1, ? arg2) {
func_80004C5C(4, arg0, arg1, arg2);
}
@ -673,7 +697,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004D34.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80004D68(u8 arg0, ? arg1) {
func_80004C5C(1, arg0, arg1, 0);
}
@ -682,7 +705,6 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004D68.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80004D98(u8 arg0, ? arg1) {
func_80004C5C(2, arg0, arg1, 0);
}
@ -690,26 +712,211 @@ void func_80004D98(u8 arg0, ? arg1) {
GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004D98.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
Failed to decompile function func_80004DC8:
// Sent as an OSMesg based on code path
struct Unk_Func8004DC8 {
s32 unk0;
s32 unk4;
s32 unk8;
u8 unkC;
u8 unkD;
u8 unkE;
u8 unkF;
s32 unk10;
s32 unk14;
s32 unk18;
};
Unable to determine jump table for jr instruction.
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl".
#ifdef NEEDS_RODATA
void func_80004DC8(struct Unk_Func8004DC8 *arg0) {
switch (arg0->unkC)
{
case 0:
arg0->unk18 = func_80032060(&D_80048DA0);
break;
case 1:
arg0->unk18 = osEepromRead(&D_80048DA0, arg0->unkD, arg0->unk10);
break;
case 2:
arg0->unk18 = osEepromWrite(&D_80048DA0, arg0->unkD, arg0->unk10);
break;
case 3:
arg0->unk18 = osEepromLongRead(&D_80048DA0, arg0->unkD, arg0->unk10, arg0->unk14);
break;
case 4:
arg0->unk18 = osEepromLongWrite(&D_80048DA0, arg0->unkD, arg0->unk10, arg0->unk14);
break;
}
}
#else
GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004DC8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
Failed to decompile function func_80004E98:
void func_80004E98(void *arg0) {
void *sp18;
OSMesgQueue *temp_a0;
OSMesgQueue *temp_a0_2;
OSMesgQueue *temp_a0_3;
OSMesgQueue *temp_a0_4;
OSMesgQueue *temp_a0_5;
OSMesgQueue *temp_a0_7;
OSMesgQueue *temp_a0_8;
OSMesgQueue *temp_a0_9;
s32 temp_v0_2;
s32 temp_v1;
u32 temp_t7;
void *temp_a0_6;
void *temp_a3;
void *temp_v0;
void *temp_v0_3;
void *phi_a3;
void *phi_a3_2;
Unable to determine jump table for jr instruction.
There must be a read of a variable in the same block as
the instruction, which has a name starting with "jtbl".
temp_a3 = arg0;
temp_t7 = arg0->unk0 - 1;
if (temp_t7 < 0xB) {
goto **(&jtbl_8003FF58 + (temp_t7 * 4));
case 0:
arg0 = temp_a3;
func_80003FDC(temp_a3);
func_800041A0();
temp_a0 = arg0->unk8;
if (temp_a0 != 0) {
osSendMesg(temp_a0, arg0->unk4, 0);
return;
case 1:
if (D_80048F48 == 0) {
D_80048F4C = temp_a3;
return;
case 2:
D_80048EB4 = temp_a3->unkC;
D_80048EB4 = temp_a3->unk10;
D_80048ED4 = temp_a3->unkC;
D_80048ED4 = temp_a3->unk10;
D_80048EF4 = temp_a3->unkC;
D_80048EF4 = temp_a3->unk10;
D_80048F14 = temp_a3->unkC;
D_80048F14 = temp_a3->unk10;
temp_a0_3 = temp_a3->unk8;
if (temp_a0_3 == 0) {
default:
return;
return;
}
osSendMesg(temp_a0_3, temp_a3->unk4, 0);
return;
case 3:
D_80048F50 = temp_a3->unkC;
temp_a0_4 = temp_a3->unk8;
if (temp_a0_4 == 0) {
default:
return;
return;
}
osSendMesg(temp_a0_4, temp_a3->unk4, 0);
return;
case 5:
D_80048F54 = temp_a3->unkC;
temp_a0_5 = temp_a3->unk8;
if (temp_a0_5 == 0) {
default:
return;
return;
}
osSendMesg(temp_a0_5, temp_a3->unk4, 0);
return;
case 4:
temp_v1 = temp_a3->unkC;
temp_v0 = (temp_v1 << 5) + &D_80048EA0;
phi_a3 = temp_a3;
if (temp_v0->unk1C == 0) {
phi_a3 = temp_a3;
if ((temp_v0->unk1D & 1) != 0) {
temp_v0_2 = temp_a3->unk10;
if (temp_v0_2 != 0) {
if (temp_v0_2 != 1) {
if (temp_v0_2 != 2) {
phi_a3 = temp_a3;
} else {
temp_a0_6 = (temp_v1 * 0x68) + &D_800490F0;
sp18 = temp_a0_6;
arg0 = temp_a3;
func_8002F040(temp_a0_6, 0, temp_v1, temp_a3);
func_8002F040(temp_a0_6, 0);
func_8002F040(temp_a0_6, 0);
block_24:
phi_a3 = arg0;
}
} else {
phi_a3 = temp_a3;
if (D_80048CDC == 0) {
arg0 = temp_a3;
func_8002F040((temp_v1 * 0x68) + &D_800490F0, 1, temp_v1, temp_a3);
goto block_24;
}
}
} else {
arg0 = temp_a3;
func_8002F2B4(&D_80048DA0, (temp_v1 * 0x68) + &D_800490F0, temp_v1, temp_a3);
goto block_24;
}
}
}
temp_a0_7 = phi_a3->unk8;
if (temp_a0_7 == 0) {
default:
return;
return;
}
osSendMesg(temp_a0_7, phi_a3->unk4, 0);
return;
case 9:
temp_v0_3 = (temp_a3->unkC << 5) + &D_80048EA0;
phi_a3_2 = temp_a3;
if (temp_v0_3->unk1C == 0) {
phi_a3_2 = temp_a3;
if ((temp_v0_3->unk1D & 1) != 0) {
arg0 = temp_a3;
func_80004810(temp_a3, temp_a3);
phi_a3_2 = arg0;
}
}
temp_a0_8 = phi_a3_2->unk8;
if (temp_a0_8 == 0) {
default:
return;
return;
}
osSendMesg(temp_a0_8, phi_a3_2->unk4, 0);
return;
case 10:
arg0 = temp_a3;
func_80004DC8(temp_a3, temp_a3);
temp_a0_9 = arg0->unk8;
if (temp_a0_9 != 0) {
osSendMesg(temp_a0_9, arg0->unk4, 0);
}
default:
return;
return;
}
arg0 = temp_a3;
func_800041A0(temp_a3);
temp_a0_2 = arg0->unk8;
if (temp_a0_2 != 0) {
osSendMesg(temp_a0_2, arg0->unk4, 0);
return;
return;
return;
return;
return;
return;
return;
}
}
}
default:
}
#else
GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2/func_80004E98.s")
#endif

View File

@ -234,8 +234,6 @@ D_80048EF4 = 0x80048EF4;
D_80048F10 = 0x80048F10;
D_80048F14 = 0x80048F14;
func_8002F040 = 0x8002F040;
func_80004810 = 0x80004810;
func_80004DC8 = 0x80004DC8;
func_80004250 = 0x80004250;
D_80048DC8 = 0x80048DC8;
D_80048DC0 = 0x80048DC0;