From a9a3ae4682da7eabe7e2ad2b0f5b6dbb0e7cee0f Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Sun, 10 Jan 2021 19:43:17 +0900 Subject: [PATCH] another :fish: --- asm/nonmatchings/code_406B40/func_E011C000.s | 69 ++++++ asm/nonmatchings/code_406B40/func_E011C0F4.s | 6 + asm/nonmatchings/code_406B40/func_E011C0FC.s | 40 ++++ asm/nonmatchings/code_406B40/func_E011C17C.s | 22 ++ asm/nonmatchings/code_406B40/func_E011C1C4.s | 215 +++++++++++++++++++ src/code_406B40.c | 11 + tools/splat.yaml | 3 +- undefined_syms_auto.txt | 30 +-- 8 files changed, 382 insertions(+), 14 deletions(-) create mode 100644 asm/nonmatchings/code_406B40/func_E011C000.s create mode 100644 asm/nonmatchings/code_406B40/func_E011C0F4.s create mode 100644 asm/nonmatchings/code_406B40/func_E011C0FC.s create mode 100644 asm/nonmatchings/code_406B40/func_E011C17C.s create mode 100644 asm/nonmatchings/code_406B40/func_E011C1C4.s create mode 100644 src/code_406B40.c diff --git a/asm/nonmatchings/code_406B40/func_E011C000.s b/asm/nonmatchings/code_406B40/func_E011C000.s new file mode 100644 index 0000000000..dc2808d973 --- /dev/null +++ b/asm/nonmatchings/code_406B40/func_E011C000.s @@ -0,0 +1,69 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_E011C000 +/* 406B40 E011C000 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 406B44 E011C004 F7B40038 */ sdc1 $f20, 0x38($sp) +/* 406B48 E011C008 4485A000 */ mtc1 $a1, $f20 +/* 406B4C E011C00C F7B60040 */ sdc1 $f22, 0x40($sp) +/* 406B50 E011C010 4486B000 */ mtc1 $a2, $f22 +/* 406B54 E011C014 AFB20030 */ sw $s2, 0x30($sp) +/* 406B58 E011C018 0080902D */ daddu $s2, $a0, $zero +/* 406B5C E011C01C F7B80048 */ sdc1 $f24, 0x48($sp) +/* 406B60 E011C020 4487C000 */ mtc1 $a3, $f24 +/* 406B64 E011C024 27A40010 */ addiu $a0, $sp, 0x10 +/* 406B68 E011C028 AFB1002C */ sw $s1, 0x2c($sp) +/* 406B6C E011C02C 8FB10064 */ lw $s1, 0x64($sp) +/* 406B70 E011C030 3C02E012 */ lui $v0, %hi(func_E011C0F4) +/* 406B74 E011C034 2442C0F4 */ addiu $v0, $v0, %lo(func_E011C0F4) +/* 406B78 E011C038 AFA20018 */ sw $v0, 0x18($sp) +/* 406B7C E011C03C 3C02E012 */ lui $v0, %hi(func_E011C0FC) +/* 406B80 E011C040 2442C0FC */ addiu $v0, $v0, %lo(func_E011C0FC) +/* 406B84 E011C044 AFA2001C */ sw $v0, 0x1c($sp) +/* 406B88 E011C048 3C02E012 */ lui $v0, %hi(func_E011C17C) +/* 406B8C E011C04C 2442C17C */ addiu $v0, $v0, %lo(func_E011C17C) +/* 406B90 E011C050 AFA20020 */ sw $v0, 0x20($sp) +/* 406B94 E011C054 24020080 */ addiu $v0, $zero, 0x80 +/* 406B98 E011C058 AFBF0034 */ sw $ra, 0x34($sp) +/* 406B9C E011C05C AFB00028 */ sw $s0, 0x28($sp) +/* 406BA0 E011C060 AFA00010 */ sw $zero, 0x10($sp) +/* 406BA4 E011C064 AFA00024 */ sw $zero, 0x24($sp) +/* 406BA8 E011C068 0C080124 */ jal func_E0200490 +/* 406BAC E011C06C AFA20014 */ sw $v0, 0x14($sp) +/* 406BB0 E011C070 24040020 */ addiu $a0, $zero, 0x20 +/* 406BB4 E011C074 24030001 */ addiu $v1, $zero, 1 +/* 406BB8 E011C078 0040802D */ daddu $s0, $v0, $zero +/* 406BBC E011C07C 0C08012C */ jal func_E02004B0 +/* 406BC0 E011C080 AE030008 */ sw $v1, 8($s0) +/* 406BC4 E011C084 0040202D */ daddu $a0, $v0, $zero +/* 406BC8 E011C088 14800003 */ bnez $a0, .LE011C098 +/* 406BCC E011C08C AE02000C */ sw $v0, 0xc($s0) +.LE011C090: +/* 406BD0 E011C090 08047024 */ j .LE011C090 +/* 406BD4 E011C094 00000000 */ nop +.LE011C098: +/* 406BD8 E011C098 AC920000 */ sw $s2, ($a0) +/* 406BDC E011C09C 1E200004 */ bgtz $s1, .LE011C0B0 +/* 406BE0 E011C0A0 AC800014 */ sw $zero, 0x14($a0) +/* 406BE4 E011C0A4 240203E8 */ addiu $v0, $zero, 0x3e8 +/* 406BE8 E011C0A8 0804702D */ j .LE011C0B4 +/* 406BEC E011C0AC AC820010 */ sw $v0, 0x10($a0) +.LE011C0B0: +/* 406BF0 E011C0B0 AC910010 */ sw $s1, 0x10($a0) +.LE011C0B4: +/* 406BF4 E011C0B4 0200102D */ daddu $v0, $s0, $zero +/* 406BF8 E011C0B8 240300FF */ addiu $v1, $zero, 0xff +/* 406BFC E011C0BC AC830018 */ sw $v1, 0x18($a0) +/* 406C00 E011C0C0 E4940004 */ swc1 $f20, 4($a0) +/* 406C04 E011C0C4 E4960008 */ swc1 $f22, 8($a0) +/* 406C08 E011C0C8 E498000C */ swc1 $f24, 0xc($a0) +/* 406C0C E011C0CC AC80001C */ sw $zero, 0x1c($a0) +/* 406C10 E011C0D0 8FBF0034 */ lw $ra, 0x34($sp) +/* 406C14 E011C0D4 8FB20030 */ lw $s2, 0x30($sp) +/* 406C18 E011C0D8 8FB1002C */ lw $s1, 0x2c($sp) +/* 406C1C E011C0DC 8FB00028 */ lw $s0, 0x28($sp) +/* 406C20 E011C0E0 D7B80048 */ ldc1 $f24, 0x48($sp) +/* 406C24 E011C0E4 D7B60040 */ ldc1 $f22, 0x40($sp) +/* 406C28 E011C0E8 D7B40038 */ ldc1 $f20, 0x38($sp) +/* 406C2C E011C0EC 03E00008 */ jr $ra +/* 406C30 E011C0F0 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/asm/nonmatchings/code_406B40/func_E011C0F4.s b/asm/nonmatchings/code_406B40/func_E011C0F4.s new file mode 100644 index 0000000000..67e7717a05 --- /dev/null +++ b/asm/nonmatchings/code_406B40/func_E011C0F4.s @@ -0,0 +1,6 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_E011C0F4 +/* 406C34 E011C0F4 03E00008 */ jr $ra +/* 406C38 E011C0F8 00000000 */ nop diff --git a/asm/nonmatchings/code_406B40/func_E011C0FC.s b/asm/nonmatchings/code_406B40/func_E011C0FC.s new file mode 100644 index 0000000000..aff503fe2f --- /dev/null +++ b/asm/nonmatchings/code_406B40/func_E011C0FC.s @@ -0,0 +1,40 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_E011C0FC +/* 406C3C E011C0FC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 406C40 E011C100 AFBF0010 */ sw $ra, 0x10($sp) +/* 406C44 E011C104 8C850000 */ lw $a1, ($a0) +/* 406C48 E011C108 8C83000C */ lw $v1, 0xc($a0) +/* 406C4C E011C10C 30A20010 */ andi $v0, $a1, 0x10 +/* 406C50 E011C110 10400005 */ beqz $v0, .LE011C128 +/* 406C54 E011C114 2402FFEF */ addiu $v0, $zero, -0x11 +/* 406C58 E011C118 00A21024 */ and $v0, $a1, $v0 +/* 406C5C E011C11C AC820000 */ sw $v0, ($a0) +/* 406C60 E011C120 24020010 */ addiu $v0, $zero, 0x10 +/* 406C64 E011C124 AC620010 */ sw $v0, 0x10($v1) +.LE011C128: +/* 406C68 E011C128 8C650010 */ lw $a1, 0x10($v1) +/* 406C6C E011C12C 28A203E8 */ slti $v0, $a1, 0x3e8 +/* 406C70 E011C130 10400002 */ beqz $v0, .LE011C13C +/* 406C74 E011C134 24A2FFFF */ addiu $v0, $a1, -1 +/* 406C78 E011C138 AC620010 */ sw $v0, 0x10($v1) +.LE011C13C: +/* 406C7C E011C13C 8C620014 */ lw $v0, 0x14($v1) +/* 406C80 E011C140 8C650010 */ lw $a1, 0x10($v1) +/* 406C84 E011C144 24420001 */ addiu $v0, $v0, 1 +/* 406C88 E011C148 04A10005 */ bgez $a1, .LE011C160 +/* 406C8C E011C14C AC620014 */ sw $v0, 0x14($v1) +/* 406C90 E011C150 0C080128 */ jal func_E02004A0 +/* 406C94 E011C154 00000000 */ nop +/* 406C98 E011C158 0804705C */ j .LE011C170 +/* 406C9C E011C15C 00000000 */ nop +.LE011C160: +/* 406CA0 E011C160 28A20010 */ slti $v0, $a1, 0x10 +/* 406CA4 E011C164 10400002 */ beqz $v0, .LE011C170 +/* 406CA8 E011C168 00051100 */ sll $v0, $a1, 4 +/* 406CAC E011C16C AC620018 */ sw $v0, 0x18($v1) +.LE011C170: +/* 406CB0 E011C170 8FBF0010 */ lw $ra, 0x10($sp) +/* 406CB4 E011C174 03E00008 */ jr $ra +/* 406CB8 E011C178 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_406B40/func_E011C17C.s b/asm/nonmatchings/code_406B40/func_E011C17C.s new file mode 100644 index 0000000000..9a3e40617c --- /dev/null +++ b/asm/nonmatchings/code_406B40/func_E011C17C.s @@ -0,0 +1,22 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_E011C17C +/* 406CBC E011C17C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 406CC0 E011C180 3C02E012 */ lui $v0, %hi(func_E011C1C4) +/* 406CC4 E011C184 2442C1C4 */ addiu $v0, $v0, %lo(func_E011C1C4) +/* 406CC8 E011C188 AFA2001C */ sw $v0, 0x1c($sp) +/* 406CCC E011C18C 2402000A */ addiu $v0, $zero, 0xa +/* 406CD0 E011C190 AFA20014 */ sw $v0, 0x14($sp) +/* 406CD4 E011C194 2402002D */ addiu $v0, $zero, 0x2d +/* 406CD8 E011C198 AFA40018 */ sw $a0, 0x18($sp) +/* 406CDC E011C19C 27A40010 */ addiu $a0, $sp, 0x10 +/* 406CE0 E011C1A0 AFBF0020 */ sw $ra, 0x20($sp) +/* 406CE4 E011C1A4 0C080120 */ jal func_E0200480 +/* 406CE8 E011C1A8 AFA20010 */ sw $v0, 0x10($sp) +/* 406CEC E011C1AC 8C430000 */ lw $v1, ($v0) +/* 406CF0 E011C1B0 34630002 */ ori $v1, $v1, 2 +/* 406CF4 E011C1B4 AC430000 */ sw $v1, ($v0) +/* 406CF8 E011C1B8 8FBF0020 */ lw $ra, 0x20($sp) +/* 406CFC E011C1BC 03E00008 */ jr $ra +/* 406D00 E011C1C0 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_406B40/func_E011C1C4.s b/asm/nonmatchings/code_406B40/func_E011C1C4.s new file mode 100644 index 0000000000..4b1ccc39a6 --- /dev/null +++ b/asm/nonmatchings/code_406B40/func_E011C1C4.s @@ -0,0 +1,215 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_E011C1C4 +/* 406D04 E011C1C4 27BDFF40 */ addiu $sp, $sp, -0xc0 +/* 406D08 E011C1C8 0080302D */ daddu $a2, $a0, $zero +/* 406D0C E011C1CC 3C07DB06 */ lui $a3, 0xdb06 +/* 406D10 E011C1D0 34E70024 */ ori $a3, $a3, 0x24 +/* 406D14 E011C1D4 27A40018 */ addiu $a0, $sp, 0x18 +/* 406D18 E011C1D8 AFB200A0 */ sw $s2, 0xa0($sp) +/* 406D1C E011C1DC 3C12800A */ lui $s2, %hi(D_8009A66C) +/* 406D20 E011C1E0 2652A66C */ addiu $s2, $s2, %lo(D_8009A66C) +/* 406D24 E011C1E4 AFB500AC */ sw $s5, 0xac($sp) +/* 406D28 E011C1E8 AFBF00B4 */ sw $ra, 0xb4($sp) +/* 406D2C E011C1EC AFB600B0 */ sw $s6, 0xb0($sp) +/* 406D30 E011C1F0 AFB400A8 */ sw $s4, 0xa8($sp) +/* 406D34 E011C1F4 AFB300A4 */ sw $s3, 0xa4($sp) +/* 406D38 E011C1F8 AFB1009C */ sw $s1, 0x9c($sp) +/* 406D3C E011C1FC AFB00098 */ sw $s0, 0x98($sp) +/* 406D40 E011C200 F7B400B8 */ sdc1 $f20, 0xb8($sp) +/* 406D44 E011C204 8E450000 */ lw $a1, ($s2) +/* 406D48 E011C208 8CD4000C */ lw $s4, 0xc($a2) +/* 406D4C E011C20C 00A0182D */ daddu $v1, $a1, $zero +/* 406D50 E011C210 24A50008 */ addiu $a1, $a1, 8 +/* 406D54 E011C214 AE450000 */ sw $a1, ($s2) +/* 406D58 E011C218 8E960014 */ lw $s6, 0x14($s4) +/* 406D5C E011C21C 8E910018 */ lw $s1, 0x18($s4) +/* 406D60 E011C220 3C02E700 */ lui $v0, 0xe700 +/* 406D64 E011C224 AC620000 */ sw $v0, ($v1) +/* 406D68 E011C228 AC600004 */ sw $zero, 4($v1) +/* 406D6C E011C22C ACA70000 */ sw $a3, ($a1) +/* 406D70 E011C230 8CC30010 */ lw $v1, 0x10($a2) +/* 406D74 E011C234 24A20008 */ addiu $v0, $a1, 8 +/* 406D78 E011C238 AE420000 */ sw $v0, ($s2) +/* 406D7C E011C23C 8C62001C */ lw $v0, 0x1c($v1) +/* 406D80 E011C240 3C038000 */ lui $v1, 0x8000 +/* 406D84 E011C244 00431021 */ addu $v0, $v0, $v1 +/* 406D88 E011C248 ACA20004 */ sw $v0, 4($a1) +/* 406D8C E011C24C 8E850004 */ lw $a1, 4($s4) +/* 406D90 E011C250 8E860008 */ lw $a2, 8($s4) +/* 406D94 E011C254 8E87000C */ lw $a3, 0xc($s4) +/* 406D98 E011C258 4480A000 */ mtc1 $zero, $f20 +/* 406D9C E011C25C 0C080108 */ jal func_E0200420 +/* 406DA0 E011C260 3C150001 */ lui $s5, 1 +/* 406DA4 E011C264 27B00058 */ addiu $s0, $sp, 0x58 +/* 406DA8 E011C268 3C038007 */ lui $v1, %hi(gCurrentCameraID) +/* 406DAC E011C26C 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1) +/* 406DB0 E011C270 4406A000 */ mfc1 $a2, $f20 +/* 406DB4 E011C274 00031080 */ sll $v0, $v1, 2 +/* 406DB8 E011C278 00431021 */ addu $v0, $v0, $v1 +/* 406DBC E011C27C 00021080 */ sll $v0, $v0, 2 +/* 406DC0 E011C280 00431023 */ subu $v0, $v0, $v1 +/* 406DC4 E011C284 000218C0 */ sll $v1, $v0, 3 +/* 406DC8 E011C288 00431021 */ addu $v0, $v0, $v1 +/* 406DCC E011C28C 000210C0 */ sll $v0, $v0, 3 +/* 406DD0 E011C290 3C01800B */ lui $at, %hi(D_800B1DEC) +/* 406DD4 E011C294 00220821 */ addu $at, $at, $v0 +/* 406DD8 E011C298 C4201DEC */ lwc1 $f0, %lo(D_800B1DEC)($at) +/* 406DDC E011C29C 3C073F80 */ lui $a3, 0x3f80 +/* 406DE0 E011C2A0 46000007 */ neg.s $f0, $f0 +/* 406DE4 E011C2A4 44050000 */ mfc1 $a1, $f0 +/* 406DE8 E011C2A8 0200202D */ daddu $a0, $s0, $zero +/* 406DEC E011C2AC 0C080104 */ jal func_E0200410 +/* 406DF0 E011C2B0 E7B40010 */ swc1 $f20, 0x10($sp) +/* 406DF4 E011C2B4 0200202D */ daddu $a0, $s0, $zero +/* 406DF8 E011C2B8 27A50018 */ addiu $a1, $sp, 0x18 +/* 406DFC E011C2BC 0C080114 */ jal func_E0200450 +/* 406E00 E011C2C0 00A0302D */ daddu $a2, $a1, $zero +/* 406E04 E011C2C4 3C0542B3 */ lui $a1, 0x42b3 +/* 406E08 E011C2C8 4406A000 */ mfc1 $a2, $f20 +/* 406E0C E011C2CC 3C074000 */ lui $a3, 0x4000 +/* 406E10 E011C2D0 0C080108 */ jal func_E0200420 +/* 406E14 E011C2D4 0200202D */ daddu $a0, $s0, $zero +/* 406E18 E011C2D8 0200202D */ daddu $a0, $s0, $zero +/* 406E1C E011C2DC 27A50018 */ addiu $a1, $sp, 0x18 +/* 406E20 E011C2E0 0C080114 */ jal func_E0200450 +/* 406E24 E011C2E4 00A0302D */ daddu $a2, $a1, $zero +/* 406E28 E011C2E8 3C013F36 */ lui $at, 0x3f36 +/* 406E2C E011C2EC 3421DB6E */ ori $at, $at, 0xdb6e +/* 406E30 E011C2F0 44810000 */ mtc1 $at, $f0 +/* 406E34 E011C2F4 36B51630 */ ori $s5, $s5, 0x1630 +/* 406E38 E011C2F8 44050000 */ mfc1 $a1, $f0 +/* 406E3C E011C2FC 0200202D */ daddu $a0, $s0, $zero +/* 406E40 E011C300 00A0302D */ daddu $a2, $a1, $zero +/* 406E44 E011C304 0C080110 */ jal func_E0200440 +/* 406E48 E011C308 00A0382D */ daddu $a3, $a1, $zero +/* 406E4C E011C30C 0200202D */ daddu $a0, $s0, $zero +/* 406E50 E011C310 27A50018 */ addiu $a1, $sp, 0x18 +/* 406E54 E011C314 0C080114 */ jal func_E0200450 +/* 406E58 E011C318 00A0302D */ daddu $a2, $a1, $zero +/* 406E5C E011C31C 27A40018 */ addiu $a0, $sp, 0x18 +/* 406E60 E011C320 3C108007 */ lui $s0, %hi(D_800741F0) +/* 406E64 E011C324 261041F0 */ addiu $s0, $s0, %lo(D_800741F0) +/* 406E68 E011C328 3C13800A */ lui $s3, %hi(D_8009A674) +/* 406E6C E011C32C 2673A674 */ addiu $s3, $s3, %lo(D_8009A674) +/* 406E70 E011C330 96050000 */ lhu $a1, ($s0) +/* 406E74 E011C334 8E620000 */ lw $v0, ($s3) +/* 406E78 E011C338 00052980 */ sll $a1, $a1, 6 +/* 406E7C E011C33C 00B52821 */ addu $a1, $a1, $s5 +/* 406E80 E011C340 0C080118 */ jal func_E0200460 +/* 406E84 E011C344 00452821 */ addu $a1, $v0, $a1 +/* 406E88 E011C348 3C03DA38 */ lui $v1, 0xda38 +/* 406E8C E011C34C 34630002 */ ori $v1, $v1, 2 +/* 406E90 E011C350 323100FF */ andi $s1, $s1, 0xff +/* 406E94 E011C354 8E440000 */ lw $a0, ($s2) +/* 406E98 E011C358 96020000 */ lhu $v0, ($s0) +/* 406E9C E011C35C 0080282D */ daddu $a1, $a0, $zero +/* 406EA0 E011C360 24840008 */ addiu $a0, $a0, 8 +/* 406EA4 E011C364 AE440000 */ sw $a0, ($s2) +/* 406EA8 E011C368 ACA30000 */ sw $v1, ($a1) +/* 406EAC E011C36C 24430001 */ addiu $v1, $v0, 1 +/* 406EB0 E011C370 3042FFFF */ andi $v0, $v0, 0xffff +/* 406EB4 E011C374 00021180 */ sll $v0, $v0, 6 +/* 406EB8 E011C378 A6030000 */ sh $v1, ($s0) +/* 406EBC E011C37C 8E630000 */ lw $v1, ($s3) +/* 406EC0 E011C380 00551021 */ addu $v0, $v0, $s5 +/* 406EC4 E011C384 00621821 */ addu $v1, $v1, $v0 +/* 406EC8 E011C388 24820008 */ addiu $v0, $a0, 8 +/* 406ECC E011C38C ACA30004 */ sw $v1, 4($a1) +/* 406ED0 E011C390 AE420000 */ sw $v0, ($s2) +/* 406ED4 E011C394 3C02FA00 */ lui $v0, 0xfa00 +/* 406ED8 E011C398 AC820000 */ sw $v0, ($a0) +/* 406EDC E011C39C 00111600 */ sll $v0, $s1, 0x18 +/* 406EE0 E011C3A0 00111C00 */ sll $v1, $s1, 0x10 +/* 406EE4 E011C3A4 00431025 */ or $v0, $v0, $v1 +/* 406EE8 E011C3A8 00118A00 */ sll $s1, $s1, 8 +/* 406EEC E011C3AC 00511025 */ or $v0, $v0, $s1 +/* 406EF0 E011C3B0 344200FF */ ori $v0, $v0, 0xff +/* 406EF4 E011C3B4 AC820004 */ sw $v0, 4($a0) +/* 406EF8 E011C3B8 3C02DE00 */ lui $v0, 0xde00 +/* 406EFC E011C3BC AC820008 */ sw $v0, 8($a0) +/* 406F00 E011C3C0 3C03E012 */ lui $v1, %hi(D_E011C514) +/* 406F04 E011C3C4 8C63C514 */ lw $v1, %lo(D_E011C514)($v1) +/* 406F08 E011C3C8 24820010 */ addiu $v0, $a0, 0x10 +/* 406F0C E011C3CC AE420000 */ sw $v0, ($s2) +/* 406F10 E011C3D0 AC83000C */ sw $v1, 0xc($a0) +/* 406F14 E011C3D4 8E83001C */ lw $v1, 0x1c($s4) +/* 406F18 E011C3D8 24020001 */ addiu $v0, $zero, 1 +/* 406F1C E011C3DC 10620007 */ beq $v1, $v0, .LE011C3FC +/* 406F20 E011C3E0 28620002 */ slti $v0, $v1, 2 +/* 406F24 E011C3E4 10400015 */ beqz $v0, .LE011C43C +/* 406F28 E011C3E8 00000000 */ nop +/* 406F2C E011C3EC 14600013 */ bnez $v1, .LE011C43C +/* 406F30 E011C3F0 0000282D */ daddu $a1, $zero, $zero +/* 406F34 E011C3F4 0804711B */ j .LE011C46C +/* 406F38 E011C3F8 3C07D838 */ lui $a3, 0xd838 +.LE011C3FC: +/* 406F3C E011C3FC 3C026666 */ lui $v0, 0x6666 +/* 406F40 E011C400 34426667 */ ori $v0, $v0, 0x6667 +/* 406F44 E011C404 02C20018 */ mult $s6, $v0 +/* 406F48 E011C408 001617C3 */ sra $v0, $s6, 0x1f +/* 406F4C E011C40C 00004010 */ mfhi $t0 +/* 406F50 E011C410 00081843 */ sra $v1, $t0, 1 +/* 406F54 E011C414 00621823 */ subu $v1, $v1, $v0 +/* 406F58 E011C418 00031080 */ sll $v0, $v1, 2 +/* 406F5C E011C41C 00431021 */ addu $v0, $v0, $v1 +/* 406F60 E011C420 02C21023 */ subu $v0, $s6, $v0 +/* 406F64 E011C424 00021080 */ sll $v0, $v0, 2 +/* 406F68 E011C428 3C05E012 */ lui $a1, %hi(D_E011C518) +/* 406F6C E011C42C 00A22821 */ addu $a1, $a1, $v0 +/* 406F70 E011C430 8CA5C518 */ lw $a1, %lo(D_E011C518)($a1) +/* 406F74 E011C434 0804711B */ j .LE011C46C +/* 406F78 E011C438 3C07D838 */ lui $a3, 0xd838 +.LE011C43C: +/* 406F7C E011C43C 06C10002 */ bgez $s6, .LE011C448 +/* 406F80 E011C440 02C0102D */ daddu $v0, $s6, $zero +/* 406F84 E011C444 26C20003 */ addiu $v0, $s6, 3 +.LE011C448: +/* 406F88 E011C448 00021083 */ sra $v0, $v0, 2 +/* 406F8C E011C44C 00021080 */ sll $v0, $v0, 2 +/* 406F90 E011C450 02C21023 */ subu $v0, $s6, $v0 +/* 406F94 E011C454 00021080 */ sll $v0, $v0, 2 +/* 406F98 E011C458 3C03E012 */ lui $v1, %hi(D_E011C52C) +/* 406F9C E011C45C 2463C52C */ addiu $v1, $v1, %lo(D_E011C52C) +/* 406FA0 E011C460 00431021 */ addu $v0, $v0, $v1 +/* 406FA4 E011C464 8C450000 */ lw $a1, ($v0) +/* 406FA8 E011C468 3C07D838 */ lui $a3, 0xd838 +.LE011C46C: +/* 406FAC E011C46C 3C04800A */ lui $a0, %hi(D_8009A66C) +/* 406FB0 E011C470 2484A66C */ addiu $a0, $a0, %lo(D_8009A66C) +/* 406FB4 E011C474 34E70002 */ ori $a3, $a3, 2 +/* 406FB8 E011C478 8C830000 */ lw $v1, ($a0) +/* 406FBC E011C47C 3C02DE00 */ lui $v0, 0xde00 +/* 406FC0 E011C480 0060302D */ daddu $a2, $v1, $zero +/* 406FC4 E011C484 24630008 */ addiu $v1, $v1, 8 +/* 406FC8 E011C488 AC830000 */ sw $v1, ($a0) +/* 406FCC E011C48C ACC20000 */ sw $v0, ($a2) +/* 406FD0 E011C490 24620008 */ addiu $v0, $v1, 8 +/* 406FD4 E011C494 AC820000 */ sw $v0, ($a0) +/* 406FD8 E011C498 00051080 */ sll $v0, $a1, 2 +/* 406FDC E011C49C 3C05E012 */ lui $a1, %hi(D_E011C500) +/* 406FE0 E011C4A0 00A22821 */ addu $a1, $a1, $v0 +/* 406FE4 E011C4A4 8CA5C500 */ lw $a1, %lo(D_E011C500)($a1) +/* 406FE8 E011C4A8 24620010 */ addiu $v0, $v1, 0x10 +/* 406FEC E011C4AC AC820000 */ sw $v0, ($a0) +/* 406FF0 E011C4B0 24020040 */ addiu $v0, $zero, 0x40 +/* 406FF4 E011C4B4 ACC50004 */ sw $a1, 4($a2) +/* 406FF8 E011C4B8 AC620004 */ sw $v0, 4($v1) +/* 406FFC E011C4BC 3C02E700 */ lui $v0, 0xe700 +/* 407000 E011C4C0 AC670000 */ sw $a3, ($v1) +/* 407004 E011C4C4 AC620008 */ sw $v0, 8($v1) +/* 407008 E011C4C8 AC60000C */ sw $zero, 0xc($v1) +/* 40700C E011C4CC 8FBF00B4 */ lw $ra, 0xb4($sp) +/* 407010 E011C4D0 8FB600B0 */ lw $s6, 0xb0($sp) +/* 407014 E011C4D4 8FB500AC */ lw $s5, 0xac($sp) +/* 407018 E011C4D8 8FB400A8 */ lw $s4, 0xa8($sp) +/* 40701C E011C4DC 8FB300A4 */ lw $s3, 0xa4($sp) +/* 407020 E011C4E0 8FB200A0 */ lw $s2, 0xa0($sp) +/* 407024 E011C4E4 8FB1009C */ lw $s1, 0x9c($sp) +/* 407028 E011C4E8 8FB00098 */ lw $s0, 0x98($sp) +/* 40702C E011C4EC D7B400B8 */ ldc1 $f20, 0xb8($sp) +/* 407030 E011C4F0 03E00008 */ jr $ra +/* 407034 E011C4F4 27BD00C0 */ addiu $sp, $sp, 0xc0 +/* 407038 E011C4F8 00000000 */ nop +/* 40703C E011C4FC 00000000 */ nop diff --git a/src/code_406B40.c b/src/code_406B40.c new file mode 100644 index 0000000000..b69a79b724 --- /dev/null +++ b/src/code_406B40.c @@ -0,0 +1,11 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_406B40", func_E011C000); + +INCLUDE_ASM(s32, "code_406B40", func_E011C0F4); + +INCLUDE_ASM(s32, "code_406B40", func_E011C0FC); + +INCLUDE_ASM(s32, "code_406B40", func_E011C17C); + +INCLUDE_ASM(s32, "code_406B40", func_E011C1C4); diff --git a/tools/splat.yaml b/tools/splat.yaml index eef4887c72..bcf847949b 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -1303,7 +1303,8 @@ segments: start: 0x406B40 vram: 0xE011C000 files: - - [0x406B40, bin] + - [0x406B40, c] + - [0x407040, bin] - type: code start: 0x409990 vram: 0xE011E000 diff --git a/undefined_syms_auto.txt b/undefined_syms_auto.txt index 972deb108c..0f1cf9cd97 100644 --- a/undefined_syms_auto.txt +++ b/undefined_syms_auto.txt @@ -932,8 +932,8 @@ D_8010F6B8 = 0x8010F6B8; update_entities = 0x8010F6D0; func_80147474 = 0x80147474; D_80147474 = 0x80147474; -D_80147574 = 0x80147574; func_80147574 = 0x80147574; +D_80147574 = 0x80147574; func_80147650 = 0x80147650; D_8014B7F0 = 0x8014B7F0; D_8014C248 = 0x8014C248; @@ -1680,8 +1680,8 @@ D_80241428 = 0x80241428; D_80241430 = 0x80241430; func_80241438_8535A8 = 0x80241438; D_8024143C = 0x8024143C; -func_80241440_8ED260 = 0x80241440; func_80241440_B855C0 = 0x80241440; +func_80241440_8ED260 = 0x80241440; D_80241448 = 0x80241448; func_80241470_95C670 = 0x80241470; D_80241478 = 0x80241478; @@ -1725,8 +1725,8 @@ D_802417D8 = 0x802417D8; D_802417E4 = 0x802417E4; D_802417E8 = 0x802417E8; func_802417EC_C5BF2C = 0x802417EC; -func_80241800_8B1870 = 0x80241800; D_80241800 = 0x80241800; +func_80241800_8B1870 = 0x80241800; D_80241810 = 0x80241810; D_80241820 = 0x80241820; func_80241850_A2BA90 = 0x80241850; @@ -1742,8 +1742,8 @@ D_80241A00 = 0x80241A00; func_80241A78_BA61F8 = 0x80241A78; func_80241AC8_D2D7F8 = 0x80241AC8; func_80241AD4_B4C544 = 0x80241AD4; -func_80241AE0_DCE7B0 = 0x80241AE0; func_80241AE0_9F6520 = 0x80241AE0; +func_80241AE0_DCE7B0 = 0x80241AE0; D_80241AE8 = 0x80241AE8; func_80241AEC_80236C = 0x80241AEC; func_80241AF0_A6FED0 = 0x80241AF0; @@ -1822,8 +1822,8 @@ func_80242000_C48BE0 = 0x80242000; D_80242000 = 0x80242000; D_80242008 = 0x80242008; D_80242010 = 0x80242010; -func_80242030_8EDE50 = 0x80242030; D_80242030 = 0x80242030; +func_80242030_8EDE50 = 0x80242030; D_80242038 = 0x80242038; func_80242040_8B20B0 = 0x80242040; D_80242048 = 0x80242048; @@ -1902,15 +1902,15 @@ D_802425E4 = 0x802425E4; D_802425E8 = 0x802425E8; D_80242610 = 0x80242610; D_80242614 = 0x80242614; -D_80242618 = 0x80242618; func_80242618_A18838 = 0x80242618; +D_80242618 = 0x80242618; D_80242630 = 0x80242630; D_8024264C = 0x8024264C; D_80242670 = 0x80242670; D_80242678 = 0x80242678; func_80242680_802F00 = 0x80242680; -func_80242688_C79368 = 0x80242688; D_80242688 = 0x80242688; +func_80242688_C79368 = 0x80242688; D_802426B0 = 0x802426B0; D_802426B8 = 0x802426B8; func_802426C8_7ED3D8 = 0x802426C8; @@ -1957,8 +1957,8 @@ D_80242AC4 = 0x80242AC4; D_80242ACC = 0x80242ACC; D_80242AD0 = 0x80242AD0; D_80242B7E = 0x80242B7E; -func_80242B90_A1DC90 = 0x80242B90; func_80242B90_803410 = 0x80242B90; +func_80242B90_A1DC90 = 0x80242B90; D_80242B98 = 0x80242B98; D_80242B9C = 0x80242B9C; pause_set_cursor_opacity = 0x80242BA0; @@ -1970,8 +1970,8 @@ D_80242BF8 = 0x80242BF8; func_80242C00_BB0540 = 0x80242C00; D_80242C08 = 0x80242C08; D_80242C0E = 0x80242C0E; -D_80242C30 = 0x80242C30; func_80242C30_B37800 = 0x80242C30; +D_80242C30 = 0x80242C30; D_80242C38 = 0x80242C38; D_80242C40 = 0x80242C40; func_80242C48_9122F8 = 0x80242C48; @@ -2034,8 +2034,8 @@ D_80243078 = 0x80243078; D_80243080 = 0x80243080; func_80243088_8551F8 = 0x80243088; D_8024308C = 0x8024308C; -func_80243090_C395C0 = 0x80243090; func_80243090_8B3100 = 0x80243090; +func_80243090_C395C0 = 0x80243090; D_80243098 = 0x80243098; func_8024309C_95E29C = 0x8024309C; D_802430A0 = 0x802430A0; @@ -2115,11 +2115,11 @@ func_802435C8_96C788 = 0x802435C8; func_802435D0_CC6DE0 = 0x802435D0; func_802435D8_C43388 = 0x802435D8; D_802435E0 = 0x802435E0; -func_802435E8_DD02B8 = 0x802435E8; D_802435E8 = 0x802435E8; +func_802435E8_DD02B8 = 0x802435E8; D_802435EC = 0x802435EC; -func_802435F0_C7A2D0 = 0x802435F0; D_802435F0 = 0x802435F0; +func_802435F0_C7A2D0 = 0x802435F0; D_80243600 = 0x80243600; D_80243608 = 0x80243608; D_80243610 = 0x80243610; @@ -2158,8 +2158,8 @@ D_80243890 = 0x80243890; func_80243898 = 0x80243898; D_802438E0 = 0x802438E0; D_802438E8 = 0x802438E8; -func_802438F0_95EAF0 = 0x802438F0; func_802438F0_C436A0 = 0x802438F0; +func_802438F0_95EAF0 = 0x802438F0; D_802438F8 = 0x802438F8; D_80243900 = 0x80243900; switch_order = 0x80243918; @@ -5438,6 +5438,10 @@ D_E011AC4C = 0xE011AC4C; D_E011AC58 = 0xE011AC58; D_E011AC64 = 0xE011AC64; D_E011AC70 = 0xE011AC70; +D_E011C500 = 0xE011C500; +D_E011C514 = 0xE011C514; +D_E011C518 = 0xE011C518; +D_E011C52C = 0xE011C52C; D_E011E7F0 = 0xE011E7F0; D_E011E800 = 0xE011E800; D_E011E810 = 0xE011E810;