From 811e05c297ec8288ca39cb0b67206f5b060a8448 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Wed, 14 Feb 2024 18:50:16 -0500 Subject: [PATCH] Some matches in code_80091750 (#567) Signed-off-by: Taggerung Co-authored-by: Taggerung --- .../code_80091750/func_80099A94.s | 25 - .../code_80091750/func_8009C918.s | 70 --- .../code_80091750/func_8009CA6C.s | 116 ----- .../code_80091750/func_8009D77C.s | 129 ----- .../code_80091750/func_8009D998.s | 75 --- .../code_80091750/func_8009E2F0.s | 192 -------- include/types.h | 7 - src/code_80091750.c | 446 ++++++------------ src/code_80091750.h | 24 +- tools/doxygen_syms.md | 19 +- 10 files changed, 160 insertions(+), 943 deletions(-) delete mode 100644 asm/non_matchings/code_80091750/func_80099A94.s delete mode 100644 asm/non_matchings/code_80091750/func_8009C918.s delete mode 100644 asm/non_matchings/code_80091750/func_8009CA6C.s delete mode 100644 asm/non_matchings/code_80091750/func_8009D77C.s delete mode 100644 asm/non_matchings/code_80091750/func_8009D998.s delete mode 100644 asm/non_matchings/code_80091750/func_8009E2F0.s diff --git a/asm/non_matchings/code_80091750/func_80099A94.s b/asm/non_matchings/code_80091750/func_80099A94.s deleted file mode 100644 index f78da8fbc..000000000 --- a/asm/non_matchings/code_80091750/func_80099A94.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel func_80099A94 -/* 09A694 80099A94 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 09A698 80099A98 3C028019 */ lui $v0, %hi(D_8018E060) # 0x8019 -/* 09A69C 80099A9C 2443E060 */ addiu $v1, $v0, %lo(D_8018E060) # -0x1fa0 -/* 09A6A0 80099AA0 AFBF0014 */ sw $ra, 0x14($sp) -/* 09A6A4 80099AA4 AFA50024 */ sw $a1, 0x24($sp) -/* 09A6A8 80099AA8 8C6E0000 */ lw $t6, ($v1) -/* 09A6AC 80099AAC 11C00005 */ beqz $t6, .L80099AC4 -/* 09A6B0 80099AB0 00000000 */ nop -/* 09A6B4 80099AB4 8C6F0008 */ lw $t7, 8($v1) -.L80099AB8: -/* 09A6B8 80099AB8 24630008 */ addiu $v1, $v1, 8 -/* 09A6BC 80099ABC 55E0FFFE */ bnel $t7, $zero, .L80099AB8 -/* 09A6C0 80099AC0 8C6F0008 */ lw $t7, 8($v1) -.L80099AC4: -/* 09A6C4 80099AC4 0C026449 */ jal segmented_to_virtual_dupe -/* 09A6C8 80099AC8 AFA3001C */ sw $v1, 0x1c($sp) -/* 09A6CC 80099ACC 8FA3001C */ lw $v1, 0x1c($sp) -/* 09A6D0 80099AD0 AC620000 */ sw $v0, ($v1) -/* 09A6D4 80099AD4 8FB80024 */ lw $t8, 0x24($sp) -/* 09A6D8 80099AD8 AC780004 */ sw $t8, 4($v1) -/* 09A6DC 80099ADC 8FBF0014 */ lw $ra, 0x14($sp) -/* 09A6E0 80099AE0 27BD0020 */ addiu $sp, $sp, 0x20 -/* 09A6E4 80099AE4 03E00008 */ jr $ra -/* 09A6E8 80099AE8 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_8009C918.s b/asm/non_matchings/code_80091750/func_8009C918.s deleted file mode 100644 index 8614a5b0d..000000000 --- a/asm/non_matchings/code_80091750/func_8009C918.s +++ /dev/null @@ -1,70 +0,0 @@ -glabel func_8009C918 -/* 09D518 8009C918 3C0E8016 */ lui $t6, %hi(D_8015F480+0x30) # $t6, 0x8016 -/* 09D51C 8009C91C 3C0F8016 */ lui $t7, %hi(D_8015F480+0x32) # $t7, 0x8016 -/* 09D520 8009C920 85CEF4B0 */ lh $t6, %lo(D_8015F480+0x30)($t6) -/* 09D524 8009C924 85EFF4B2 */ lh $t7, %lo(D_8015F480+0x32)($t7) -/* 09D528 8009C928 3C018019 */ lui $at, %hi(D_8018E7E8) # $at, 0x8019 -/* 09D52C 8009C92C 3C188016 */ lui $t8, %hi(D_8015F480+0x2C) # $t8, 0x8016 -/* 09D530 8009C930 3C198016 */ lui $t9, %hi(D_8015F480+0x2E) # $t9, 0x8016 -/* 09D534 8009C934 8718F4AC */ lh $t8, %lo(D_8015F480+0x2C)($t8) -/* 09D538 8009C938 8739F4AE */ lh $t9, %lo(D_8015F480+0x2E)($t9) -/* 09D53C 8009C93C A42EE7E8 */ sh $t6, %lo(D_8018E7E8)($at) -/* 09D540 8009C940 A42FE7EA */ sh $t7, %lo(D_8018E7E8+0x2)($at) -/* 09D544 8009C944 3C018019 */ lui $at, %hi(D_8018E810) # $at, 0x8019 -/* 09D548 8009C948 3C088016 */ lui $t0, %hi(D_8015F480+0x70) # $t0, 0x8016 -/* 09D54C 8009C94C 3C098016 */ lui $t1, %hi(D_8015F480+0x72) # $t1, 0x8016 -/* 09D550 8009C950 8529F4F2 */ lh $t1, %lo(D_8015F480+0x72)($t1) -/* 09D554 8009C954 8508F4F0 */ lh $t0, %lo(D_8015F480+0x70)($t0) -/* 09D558 8009C958 A438E810 */ sh $t8, %lo(D_8018E810)($at) -/* 09D55C 8009C95C A439E812 */ sh $t9, %lo(D_8018E810+0x2)($at) -/* 09D560 8009C960 3C018019 */ lui $at, %hi(D_8018E7F0) # $at, 0x8019 -/* 09D564 8009C964 3C0A8016 */ lui $t2, %hi(D_8015F480+0x6C) # $t2, 0x8016 -/* 09D568 8009C968 3C0B8016 */ lui $t3, %hi(D_8015F480+0x6E) # $t3, 0x8016 -/* 09D56C 8009C96C 856BF4EE */ lh $t3, %lo(D_8015F480+0x6E)($t3) -/* 09D570 8009C970 854AF4EC */ lh $t2, %lo(D_8015F480+0x6C)($t2) -/* 09D574 8009C974 A429E7F2 */ sh $t1, %lo(D_8018E7F0+0x2)($at) -/* 09D578 8009C978 A428E7F0 */ sh $t0, %lo(D_8018E7F0)($at) -/* 09D57C 8009C97C 3C018019 */ lui $at, %hi(D_8018E818) # $at, 0x8019 -/* 09D580 8009C980 3C0C8016 */ lui $t4, %hi(D_8015F480+0xB0) # $t4, 0x8016 -/* 09D584 8009C984 3C0D8016 */ lui $t5, %hi(D_8015F480+0xB2) # $t5, 0x8016 -/* 09D588 8009C988 85ADF532 */ lh $t5, %lo(D_8015F480+0xB2)($t5) -/* 09D58C 8009C98C 858CF530 */ lh $t4, %lo(D_8015F480+0xB0)($t4) -/* 09D590 8009C990 A42BE81A */ sh $t3, %lo(D_8018E81A)($at) -/* 09D594 8009C994 A42AE818 */ sh $t2, %lo(D_8018E818)($at) -/* 09D598 8009C998 3C018019 */ lui $at, %hi(D_8018E7F8) # $at, 0x8019 -/* 09D59C 8009C99C 3C0F8016 */ lui $t7, %hi(D_8015F480+0xAE) # $t7, 0x8016 -/* 09D5A0 8009C9A0 3C0E8016 */ lui $t6, %hi(D_8015F480+0xAC) # $t6, 0x8016 -/* 09D5A4 8009C9A4 85CEF52C */ lh $t6, %lo(D_8015F480+0xAC)($t6) -/* 09D5A8 8009C9A8 85EFF52E */ lh $t7, %lo(D_8015F480+0xAE)($t7) -/* 09D5AC 8009C9AC A42DE7FA */ sh $t5, %lo(D_8018E7FA)($at) -/* 09D5B0 8009C9B0 A42CE7F8 */ sh $t4, %lo(D_8018E7F8)($at) -/* 09D5B4 8009C9B4 3C018019 */ lui $at, %hi(D_8018E822) # $at, 0x8019 -/* 09D5B8 8009C9B8 3C198016 */ lui $t9, %hi(D_8015F480+0xF2) # $t9, 0x8016 -/* 09D5BC 8009C9BC 3C188016 */ lui $t8, %hi(D_8015F480+0xF0) # $t8, 0x8016 -/* 09D5C0 8009C9C0 8718F570 */ lh $t8, %lo(D_8015F480+0xF0)($t8) -/* 09D5C4 8009C9C4 8739F572 */ lh $t9, %lo(D_8015F480+0xF2)($t9) -/* 09D5C8 8009C9C8 A42EE820 */ sh $t6, %lo(D_8018E820)($at) -/* 09D5CC 8009C9CC A42FE822 */ sh $t7, %lo(D_8018E822)($at) -/* 09D5D0 8009C9D0 3C018019 */ lui $at, %hi(D_8018E802) # $at, 0x8019 -/* 09D5D4 8009C9D4 3C088016 */ lui $t0, %hi(D_8015F480+0xEC) # $t0, 0x8016 -/* 09D5D8 8009C9D8 3C098016 */ lui $t1, %hi(D_8015F480+0xEE) # $t1, 0x8016 -/* 09D5DC 8009C9DC 8529F56E */ lh $t1, %lo(D_8015F480+0xEE)($t1) -/* 09D5E0 8009C9E0 8508F56C */ lh $t0, %lo(D_8015F480+0xEC)($t0) -/* 09D5E4 8009C9E4 A438E800 */ sh $t8, %lo(D_8018E800)($at) -/* 09D5E8 8009C9E8 A439E802 */ sh $t9, %lo(D_8018E802)($at) -/* 09D5EC 8009C9EC 3C018019 */ lui $at, %hi(D_8018E828) # $at, 0x8019 -/* 09D5F0 8009C9F0 A429E82A */ sh $t1, %lo(D_8018E82A)($at) -/* 09D5F4 8009C9F4 A428E828 */ sh $t0, %lo(D_8018E828)($at) -/* 09D5F8 8009C9F8 3C028019 */ lui $v0, %hi(D_8018E7E8) # $v0, 0x8019 -/* 09D5FC 8009C9FC 3C038019 */ lui $v1, %hi(D_8018E810) # $v1, 0x8019 -/* 09D600 8009CA00 2463E810 */ addiu $v1, %lo(D_8018E810) # addiu $v1, $v1, -0x17f0 -/* 09D604 8009CA04 2442E7E8 */ addiu $v0, %lo(D_8018E7E8) # addiu $v0, $v0, -0x1818 -/* 09D608 8009CA08 240A00A0 */ li $t2, 160 -/* 09D60C 8009CA0C 240B0078 */ li $t3, 120 -/* 09D610 8009CA10 240C0140 */ li $t4, 320 -/* 09D614 8009CA14 240D00F0 */ li $t5, 240 -/* 09D618 8009CA18 A44A0020 */ sh $t2, 0x20($v0) -/* 09D61C 8009CA1C A44B0022 */ sh $t3, 0x22($v0) -/* 09D620 8009CA20 A46C0020 */ sh $t4, 0x20($v1) -/* 09D624 8009CA24 03E00008 */ jr $ra -/* 09D628 8009CA28 A46D0022 */ sh $t5, 0x22($v1) diff --git a/asm/non_matchings/code_80091750/func_8009CA6C.s b/asm/non_matchings/code_80091750/func_8009CA6C.s deleted file mode 100644 index f0a264413..000000000 --- a/asm/non_matchings/code_80091750/func_8009CA6C.s +++ /dev/null @@ -1,116 +0,0 @@ -.section .late_rodata - -glabel jpt_800F1078 -.word L8009CBD4, L8009CB6C, L8009CB7C, L8009CB8C -.word L8009CB9C, L8009CBAC, L8009CBD4, L8009CBBC -.word L8009CBCC - -.section .text - -glabel func_8009CA6C -/* 09D66C 8009CA6C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 09D670 8009CA70 24010004 */ li $at, 4 -/* 09D674 8009CA74 AFBF0014 */ sw $ra, 0x14($sp) -/* 09D678 8009CA78 1081001F */ beq $a0, $at, .L8009CAF8 -/* 09D67C 8009CA7C 00803025 */ move $a2, $a0 -/* 09D680 8009CA80 240400AA */ li $a0, 170 -/* 09D684 8009CA84 0C02ABCC */ jal find_8018D9E0_entry -/* 09D688 8009CA88 AFA60018 */ sw $a2, 0x18($sp) -/* 09D68C 8009CA8C 14400051 */ bnez $v0, .L8009CBD4 -/* 09D690 8009CA90 8FA60018 */ lw $a2, 0x18($sp) -/* 09D694 8009CA94 240400AB */ li $a0, 171 -/* 09D698 8009CA98 0C02ABCC */ jal find_8018D9E0_entry -/* 09D69C 8009CA9C AFA60018 */ sw $a2, 0x18($sp) -/* 09D6A0 8009CAA0 1440004C */ bnez $v0, .L8009CBD4 -/* 09D6A4 8009CAA4 8FA60018 */ lw $a2, 0x18($sp) -/* 09D6A8 8009CAA8 240400B9 */ li $a0, 185 -/* 09D6AC 8009CAAC 0C02ABCC */ jal find_8018D9E0_entry -/* 09D6B0 8009CAB0 AFA60018 */ sw $a2, 0x18($sp) -/* 09D6B4 8009CAB4 14400047 */ bnez $v0, .L8009CBD4 -/* 09D6B8 8009CAB8 8FA60018 */ lw $a2, 0x18($sp) -/* 09D6BC 8009CABC 240400BA */ li $a0, 186 -/* 09D6C0 8009CAC0 0C02ABCC */ jal find_8018D9E0_entry -/* 09D6C4 8009CAC4 AFA60018 */ sw $a2, 0x18($sp) -/* 09D6C8 8009CAC8 14400042 */ bnez $v0, .L8009CBD4 -/* 09D6CC 8009CACC 8FA60018 */ lw $a2, 0x18($sp) -/* 09D6D0 8009CAD0 240400AC */ li $a0, 172 -/* 09D6D4 8009CAD4 0C02ABCC */ jal find_8018D9E0_entry -/* 09D6D8 8009CAD8 AFA60018 */ sw $a2, 0x18($sp) -/* 09D6DC 8009CADC 1440003D */ bnez $v0, .L8009CBD4 -/* 09D6E0 8009CAE0 8FA60018 */ lw $a2, 0x18($sp) -/* 09D6E4 8009CAE4 240400B0 */ li $a0, 176 -/* 09D6E8 8009CAE8 0C02ABCC */ jal find_8018D9E0_entry -/* 09D6EC 8009CAEC AFA60018 */ sw $a2, 0x18($sp) -/* 09D6F0 8009CAF0 14400038 */ bnez $v0, .L8009CBD4 -/* 09D6F4 8009CAF4 8FA60018 */ lw $a2, 0x18($sp) -.L8009CAF8: -/* 09D6F8 8009CAF8 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015 -/* 09D6FC 8009CAFC 24840298 */ addiu $a0, %lo(gDisplayListHead) # addiu $a0, $a0, 0x298 -/* 09D700 8009CB00 8C830000 */ lw $v1, ($a0) -/* 09D704 8009CB04 3C180D00 */ lui $t8, %hi(D_0D0076F8) # $t8, 0xd00 -/* 09D708 8009CB08 271876F8 */ addiu $t8, %lo(D_0D0076F8) # addiu $t8, $t8, 0x76f8 -/* 09D70C 8009CB0C 246E0008 */ addiu $t6, $v1, 8 -/* 09D710 8009CB10 AC8E0000 */ sw $t6, ($a0) -/* 09D714 8009CB14 3C0F0600 */ lui $t7, 0x600 -/* 09D718 8009CB18 24010004 */ li $at, 4 -/* 09D71C 8009CB1C 00002825 */ move $a1, $zero -/* 09D720 8009CB20 AC6F0000 */ sw $t7, ($v1) -/* 09D724 8009CB24 10C10006 */ beq $a2, $at, .L8009CB40 -/* 09D728 8009CB28 AC780004 */ sw $t8, 4($v1) -/* 09D72C 8009CB2C 3C19800E */ lui $t9, %hi(gIsGamePaused) # $t9, 0x800e -/* 09D730 8009CB30 9739C5FC */ lhu $t9, %lo(gIsGamePaused)($t9) -/* 09D734 8009CB34 13200002 */ beqz $t9, .L8009CB40 -/* 09D738 8009CB38 00000000 */ nop -/* 09D73C 8009CB3C 24050001 */ li $a1, 1 -.L8009CB40: -/* 09D740 8009CB40 3C088019 */ lui $t0, %hi(D_8018E7AC) # 0x8019 -/* 09D744 8009CB44 01064021 */ addu $t0, $t0, $a2 -/* 09D748 8009CB48 9108E7AC */ lbu $t0, %lo(D_8018E7AC)($t0) # -0x1854($t0) -/* 09D74C 8009CB4C 2D010009 */ sltiu $at, $t0, 9 -/* 09D750 8009CB50 10200020 */ beqz $at, .L8009CBD4 -/* 09D754 8009CB54 00084080 */ sll $t0, $t0, 2 -/* 09D758 8009CB58 3C01800F */ lui $at, %hi(jpt_800F1078) -/* 09D75C 8009CB5C 00280821 */ addu $at, $at, $t0 -/* 09D760 8009CB60 8C281078 */ lw $t0, %lo(jpt_800F1078)($at) -/* 09D764 8009CB64 01000008 */ jr $t0 -/* 09D768 8009CB68 00000000 */ nop -glabel L8009CB6C -/* 09D76C 8009CB6C 0C027377 */ jal func_8009CDDC -/* 09D770 8009CB70 00C02025 */ move $a0, $a2 -/* 09D774 8009CB74 10000018 */ b .L8009CBD8 -/* 09D778 8009CB78 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8009CB7C -/* 09D77C 8009CB7C 0C027656 */ jal func_8009D958 -/* 09D780 8009CB80 00C02025 */ move $a0, $a2 -/* 09D784 8009CB84 10000014 */ b .L8009CBD8 -/* 09D788 8009CB88 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8009CB8C -/* 09D78C 8009CB8C 0C0276E3 */ jal func_8009DB8C -/* 09D790 8009CB90 00000000 */ nop -/* 09D794 8009CB94 10000010 */ b .L8009CBD8 -/* 09D798 8009CB98 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8009CB9C -/* 09D79C 8009CB9C 0C0276AA */ jal func_8009DAA8 -/* 09D7A0 8009CBA0 00000000 */ nop -/* 09D7A4 8009CBA4 1000000C */ b .L8009CBD8 -/* 09D7A8 8009CBA8 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8009CBAC -/* 09D7AC 8009CBAC 0C027666 */ jal func_8009D998 -/* 09D7B0 8009CBB0 00C02025 */ move $a0, $a2 -/* 09D7B4 8009CBB4 10000008 */ b .L8009CBD8 -/* 09D7B8 8009CBB8 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8009CBBC -/* 09D7BC 8009CBBC 0C02765E */ jal func_8009D978 -/* 09D7C0 8009CBC0 00C02025 */ move $a0, $a2 -/* 09D7C4 8009CBC4 10000004 */ b .L8009CBD8 -/* 09D7C8 8009CBC8 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8009CBCC -/* 09D7CC 8009CBCC 0C02737F */ jal func_8009CDFC -/* 09D7D0 8009CBD0 00C02025 */ move $a0, $a2 -.L8009CBD4: -glabel L8009CBD4 -/* 09D7D4 8009CBD4 8FBF0014 */ lw $ra, 0x14($sp) -.L8009CBD8: -/* 09D7D8 8009CBD8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 09D7DC 8009CBDC 03E00008 */ jr $ra -/* 09D7E0 8009CBE0 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_8009D77C.s b/asm/non_matchings/code_80091750/func_8009D77C.s deleted file mode 100644 index 6b8a8b31f..000000000 --- a/asm/non_matchings/code_80091750/func_8009D77C.s +++ /dev/null @@ -1,129 +0,0 @@ -glabel func_8009D77C -/* 09E37C 8009D77C 3C02800E */ lui $v0, %hi(gModeSelection) # $v0, 0x800e -/* 09E380 8009D780 8C42C53C */ lw $v0, %lo(gModeSelection)($v0) -/* 09E384 8009D784 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 09E388 8009D788 AFB00030 */ sw $s0, 0x30($sp) -/* 09E38C 8009D78C 00808025 */ move $s0, $a0 -/* 09E390 8009D790 AFBF0034 */ sw $ra, 0x34($sp) -/* 09E394 8009D794 AFA5006C */ sw $a1, 0x6c($sp) -/* 09E398 8009D798 10400003 */ beqz $v0, .L8009D7A8 -/* 09E39C 8009D79C AFA60070 */ sw $a2, 0x70($sp) -/* 09E3A0 8009D7A0 24010001 */ li $at, 1 -/* 09E3A4 8009D7A4 1441000D */ bne $v0, $at, .L8009D7DC -.L8009D7A8: -/* 09E3A8 8009D7A8 3C0F8019 */ lui $t7, %hi(D_8018E810) # $t7, 0x8019 -/* 09E3AC 8009D7AC 001010C0 */ sll $v0, $s0, 3 -/* 09E3B0 8009D7B0 25EFE810 */ addiu $t7, %lo(D_8018E810) # addiu $t7, $t7, -0x17f0 -/* 09E3B4 8009D7B4 3C0E8019 */ lui $t6, %hi(D_8018E7E8) # $t6, 0x8019 -/* 09E3B8 8009D7B8 004F2021 */ addu $a0, $v0, $t7 -/* 09E3BC 8009D7BC 84980002 */ lh $t8, 2($a0) -/* 09E3C0 8009D7C0 25CEE7E8 */ addiu $t6, %lo(D_8018E7E8) # addiu $t6, $t6, -0x1818 -/* 09E3C4 8009D7C4 004E1821 */ addu $v1, $v0, $t6 -/* 09E3C8 8009D7C8 846B0000 */ lh $t3, ($v1) -/* 09E3CC 8009D7CC 846C0002 */ lh $t4, 2($v1) -/* 09E3D0 8009D7D0 849F0000 */ lh $ra, ($a0) -/* 09E3D4 8009D7D4 10000019 */ b .L8009D83C -/* 09E3D8 8009D7D8 AFB80044 */ sw $t8, 0x44($sp) -.L8009D7DC: -/* 09E3DC 8009D7DC 2A010004 */ slti $at, $s0, 4 -/* 09E3E0 8009D7E0 1420000D */ bnez $at, .L8009D818 -/* 09E3E4 8009D7E4 3C0E8019 */ lui $t6, %hi(D_8018E810) # $t6, 0x8019 -/* 09E3E8 8009D7E8 001010C0 */ sll $v0, $s0, 3 -/* 09E3EC 8009D7EC 25CEE810 */ addiu $t6, %lo(D_8018E810) # addiu $t6, $t6, -0x17f0 -/* 09E3F0 8009D7F0 3C198019 */ lui $t9, %hi(D_8018E7E8) # $t9, 0x8019 -/* 09E3F4 8009D7F4 004E2021 */ addu $a0, $v0, $t6 -/* 09E3F8 8009D7F8 848F0002 */ lh $t7, 2($a0) -/* 09E3FC 8009D7FC 2739E7E8 */ addiu $t9, %lo(D_8018E7E8) # addiu $t9, $t9, -0x1818 -/* 09E400 8009D800 00591821 */ addu $v1, $v0, $t9 -/* 09E404 8009D804 846B0000 */ lh $t3, ($v1) -/* 09E408 8009D808 846C0002 */ lh $t4, 2($v1) -/* 09E40C 8009D80C 849F0000 */ lh $ra, ($a0) -/* 09E410 8009D810 1000000A */ b .L8009D83C -/* 09E414 8009D814 AFAF0044 */ sw $t7, 0x44($sp) -.L8009D818: -/* 09E418 8009D818 3C198016 */ lui $t9, %hi(D_8015F480) # $t9, 0x8016 -/* 09E41C 8009D81C 2739F480 */ addiu $t9, %lo(D_8015F480) # addiu $t9, $t9, -0xb80 -/* 09E420 8009D820 0010C180 */ sll $t8, $s0, 6 -/* 09E424 8009D824 03191021 */ addu $v0, $t8, $t9 -/* 09E428 8009D828 844E002E */ lh $t6, 0x2e($v0) -/* 09E42C 8009D82C 844B0030 */ lh $t3, 0x30($v0) -/* 09E430 8009D830 844C0032 */ lh $t4, 0x32($v0) -/* 09E434 8009D834 845F002C */ lh $ra, 0x2c($v0) -/* 09E438 8009D838 AFAE0044 */ sw $t6, 0x44($sp) -.L8009D83C: -/* 09E43C 8009D83C 3C0F8019 */ lui $t7, %hi(D_8018E7D0) # $t7, 0x8019 -/* 09E440 8009D840 25EFE7D0 */ addiu $t7, %lo(D_8018E7D0) # addiu $t7, $t7, -0x1830 -/* 09E444 8009D844 00101080 */ sll $v0, $s0, 2 -/* 09E448 8009D848 004F4821 */ addu $t1, $v0, $t7 -/* 09E44C 8009D84C 3C188019 */ lui $t8, %hi(D_8018E7B8) # $t8, 0x8019 -/* 09E450 8009D850 8D390000 */ lw $t9, ($t1) -/* 09E454 8009D854 2718E7B8 */ addiu $t8, %lo(D_8018E7B8) # addiu $t8, $t8, -0x1848 -/* 09E458 8009D858 00586821 */ addu $t5, $v0, $t8 -/* 09E45C 8009D85C 8DAF0000 */ lw $t7, ($t5) -/* 09E460 8009D860 00197200 */ sll $t6, $t9, 8 -/* 09E464 8009D864 01D97023 */ subu $t6, $t6, $t9 -/* 09E468 8009D868 01CF001B */ divu $zero, $t6, $t7 -/* 09E46C 8009D86C 00005012 */ mflo $t2 -/* 09E470 8009D870 29410100 */ slti $at, $t2, 0x100 -/* 09E474 8009D874 15E00002 */ bnez $t7, .L8009D880 -/* 09E478 8009D878 00000000 */ nop -/* 09E47C 8009D87C 0007000D */ break 7 -.L8009D880: -/* 09E480 8009D880 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015 -/* 09E484 8009D884 14200002 */ bnez $at, .L8009D890 -/* 09E488 8009D888 8FA80044 */ lw $t0, 0x44($sp) -/* 09E48C 8009D88C 240A00FF */ li $t2, 255 -.L8009D890: -/* 09E490 8009D890 8FAE0070 */ lw $t6, 0x70($sp) -/* 09E494 8009D894 8C840298 */ lw $a0, %lo(gDisplayListHead)($a0) -/* 09E498 8009D898 07E10003 */ bgez $ra, .L8009D8A8 -/* 09E49C 8009D89C 001F1843 */ sra $v1, $ra, 1 -/* 09E4A0 8009D8A0 27E10001 */ addiu $at, $ra, 1 -/* 09E4A4 8009D8A4 00011843 */ sra $v1, $at, 1 -.L8009D8A8: -/* 09E4A8 8009D8A8 000E78C0 */ sll $t7, $t6, 3 -/* 09E4AC 8009D8AC 01632823 */ subu $a1, $t3, $v1 -/* 09E4B0 8009D8B0 05010003 */ bgez $t0, .L8009D8C0 -/* 09E4B4 8009D8B4 0008C043 */ sra $t8, $t0, 1 -/* 09E4B8 8009D8B8 25010001 */ addiu $at, $t0, 1 -/* 09E4BC 8009D8BC 0001C043 */ sra $t8, $at, 1 -.L8009D8C0: -/* 09E4C0 8009D8C0 03004025 */ move $t0, $t8 -/* 09E4C4 8009D8C4 01983023 */ subu $a2, $t4, $t8 -/* 09E4C8 8009D8C8 030CC821 */ addu $t9, $t8, $t4 -/* 09E4CC 8009D8CC 3C18800E */ lui $t8, %hi(D_800E7AE8) # $t8, 0x800e -/* 09E4D0 8009D8D0 27187AE8 */ addiu $t8, %lo(D_800E7AE8) # addiu $t8, $t8, 0x7ae8 -/* 09E4D4 8009D8D4 01F81021 */ addu $v0, $t7, $t8 -/* 09E4D8 8009D8D8 AFB90010 */ sw $t9, 0x10($sp) -/* 09E4DC 8009D8DC 94590000 */ lhu $t9, ($v0) -/* 09E4E0 8009D8E0 944E0002 */ lhu $t6, 2($v0) -/* 09E4E4 8009D8E4 944F0004 */ lhu $t7, 4($v0) -/* 09E4E8 8009D8E8 006B3821 */ addu $a3, $v1, $t3 -/* 09E4EC 8009D8EC AFAA0020 */ sw $t2, 0x20($sp) -/* 09E4F0 8009D8F0 AFA9003C */ sw $t1, 0x3c($sp) -/* 09E4F4 8009D8F4 AFAD0038 */ sw $t5, 0x38($sp) -/* 09E4F8 8009D8F8 AFB90014 */ sw $t9, 0x14($sp) -/* 09E4FC 8009D8FC AFAE0018 */ sw $t6, 0x18($sp) -/* 09E500 8009D900 0C02637E */ jal draw_box -/* 09E504 8009D904 AFAF001C */ sw $t7, 0x1c($sp) -/* 09E508 8009D908 8FB8006C */ lw $t8, 0x6c($sp) -/* 09E50C 8009D90C 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 09E510 8009D910 AC220298 */ sw $v0, %lo(gDisplayListHead)($at) -/* 09E514 8009D914 8FA9003C */ lw $t1, 0x3c($sp) -/* 09E518 8009D918 1700000A */ bnez $t8, .L8009D944 -/* 09E51C 8009D91C 8FAD0038 */ lw $t5, 0x38($sp) -/* 09E520 8009D920 8D390000 */ lw $t9, ($t1) -/* 09E524 8009D924 8DB80000 */ lw $t8, ($t5) -/* 09E528 8009D928 272E0001 */ addiu $t6, $t9, 1 -/* 09E52C 8009D92C 27190001 */ addiu $t9, $t8, 1 -/* 09E530 8009D930 032E082B */ sltu $at, $t9, $t6 -/* 09E534 8009D934 10200003 */ beqz $at, .L8009D944 -/* 09E538 8009D938 AD2E0000 */ sw $t6, ($t1) -/* 09E53C 8009D93C 0C027399 */ jal func_8009CE64 -/* 09E540 8009D940 02002025 */ move $a0, $s0 -.L8009D944: -/* 09E544 8009D944 8FBF0034 */ lw $ra, 0x34($sp) -/* 09E548 8009D948 8FB00030 */ lw $s0, 0x30($sp) -/* 09E54C 8009D94C 27BD0068 */ addiu $sp, $sp, 0x68 -/* 09E550 8009D950 03E00008 */ jr $ra -/* 09E554 8009D954 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_8009D998.s b/asm/non_matchings/code_80091750/func_8009D998.s deleted file mode 100644 index 831180c00..000000000 --- a/asm/non_matchings/code_80091750/func_8009D998.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_8009D998 -/* 09E598 8009D998 3C02800E */ lui $v0, %hi(gModeSelection) # $v0, 0x800e -/* 09E59C 8009D99C 8C42C53C */ lw $v0, %lo(gModeSelection)($v0) -/* 09E5A0 8009D9A0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 09E5A4 8009D9A4 AFBF002C */ sw $ra, 0x2c($sp) -/* 09E5A8 8009D9A8 10400003 */ beqz $v0, .L8009D9B8 -/* 09E5AC 8009D9AC 00802825 */ move $a1, $a0 -/* 09E5B0 8009D9B0 24010001 */ li $at, 1 -/* 09E5B4 8009D9B4 1441000C */ bne $v0, $at, .L8009D9E8 -.L8009D9B8: -/* 09E5B8 8009D9B8 000510C0 */ sll $v0, $a1, 3 -/* 09E5BC 8009D9BC 3C0E8019 */ lui $t6, %hi(D_8018E7E8) # $t6, 0x8019 -/* 09E5C0 8009D9C0 3C0F8019 */ lui $t7, %hi(D_8018E810) # $t7, 0x8019 -/* 09E5C4 8009D9C4 25CEE7E8 */ addiu $t6, %lo(D_8018E7E8) # addiu $t6, $t6, -0x1818 -/* 09E5C8 8009D9C8 25EFE810 */ addiu $t7, %lo(D_8018E810) # addiu $t7, $t7, -0x17f0 -/* 09E5CC 8009D9CC 004E1821 */ addu $v1, $v0, $t6 -/* 09E5D0 8009D9D0 004F2021 */ addu $a0, $v0, $t7 -/* 09E5D4 8009D9D4 84680000 */ lh $t0, ($v1) -/* 09E5D8 8009D9D8 84690002 */ lh $t1, 2($v1) -/* 09E5DC 8009D9DC 848A0000 */ lh $t2, ($a0) -/* 09E5E0 8009D9E0 10000017 */ b .L8009DA40 -/* 09E5E4 8009D9E4 848B0002 */ lh $t3, 2($a0) -.L8009D9E8: -/* 09E5E8 8009D9E8 28A10004 */ slti $at, $a1, 4 -/* 09E5EC 8009D9EC 1420000C */ bnez $at, .L8009DA20 -/* 09E5F0 8009D9F0 000510C0 */ sll $v0, $a1, 3 -/* 09E5F4 8009D9F4 3C188019 */ lui $t8, %hi(D_8018E7E8) # $t8, 0x8019 -/* 09E5F8 8009D9F8 3C198019 */ lui $t9, %hi(D_8018E810) # $t9, 0x8019 -/* 09E5FC 8009D9FC 2718E7E8 */ addiu $t8, %lo(D_8018E7E8) # addiu $t8, $t8, -0x1818 -/* 09E600 8009DA00 2739E810 */ addiu $t9, %lo(D_8018E810) # addiu $t9, $t9, -0x17f0 -/* 09E604 8009DA04 00581821 */ addu $v1, $v0, $t8 -/* 09E608 8009DA08 00592021 */ addu $a0, $v0, $t9 -/* 09E60C 8009DA0C 84680000 */ lh $t0, ($v1) -/* 09E610 8009DA10 84690002 */ lh $t1, 2($v1) -/* 09E614 8009DA14 848A0000 */ lh $t2, ($a0) -/* 09E618 8009DA18 10000009 */ b .L8009DA40 -/* 09E61C 8009DA1C 848B0002 */ lh $t3, 2($a0) -.L8009DA20: -/* 09E620 8009DA20 3C0D8016 */ lui $t5, %hi(D_8015F480) # $t5, 0x8016 -/* 09E624 8009DA24 25ADF480 */ addiu $t5, %lo(D_8015F480) # addiu $t5, $t5, -0xb80 -/* 09E628 8009DA28 00056180 */ sll $t4, $a1, 6 -/* 09E62C 8009DA2C 018D1021 */ addu $v0, $t4, $t5 -/* 09E630 8009DA30 84480030 */ lh $t0, 0x30($v0) -/* 09E634 8009DA34 84490032 */ lh $t1, 0x32($v0) -/* 09E638 8009DA38 844A002C */ lh $t2, 0x2c($v0) -/* 09E63C 8009DA3C 844B002E */ lh $t3, 0x2e($v0) -.L8009DA40: -/* 09E640 8009DA40 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015 -/* 09E644 8009DA44 240F00FF */ li $t7, 255 -/* 09E648 8009DA48 AFAF0020 */ sw $t7, 0x20($sp) -/* 09E64C 8009DA4C 8C840298 */ lw $a0, %lo(gDisplayListHead)($a0) -/* 09E650 8009DA50 05410003 */ bgez $t2, .L8009DA60 -/* 09E654 8009DA54 000A1043 */ sra $v0, $t2, 1 -/* 09E658 8009DA58 25410001 */ addiu $at, $t2, 1 -/* 09E65C 8009DA5C 00011043 */ sra $v0, $at, 1 -.L8009DA60: -/* 09E660 8009DA60 01022823 */ subu $a1, $t0, $v0 -/* 09E664 8009DA64 05610003 */ bgez $t3, .L8009DA74 -/* 09E668 8009DA68 000B1843 */ sra $v1, $t3, 1 -/* 09E66C 8009DA6C 25610001 */ addiu $at, $t3, 1 -/* 09E670 8009DA70 00011843 */ sra $v1, $at, 1 -.L8009DA74: -/* 09E674 8009DA74 00697021 */ addu $t6, $v1, $t1 -/* 09E678 8009DA78 AFAE0010 */ sw $t6, 0x10($sp) -/* 09E67C 8009DA7C 01233023 */ subu $a2, $t1, $v1 -/* 09E680 8009DA80 00483821 */ addu $a3, $v0, $t0 -/* 09E684 8009DA84 AFA00014 */ sw $zero, 0x14($sp) -/* 09E688 8009DA88 AFA00018 */ sw $zero, 0x18($sp) -/* 09E68C 8009DA8C 0C02637E */ jal draw_box -/* 09E690 8009DA90 AFA0001C */ sw $zero, 0x1c($sp) -/* 09E694 8009DA94 8FBF002C */ lw $ra, 0x2c($sp) -/* 09E698 8009DA98 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 09E69C 8009DA9C AC220298 */ sw $v0, %lo(gDisplayListHead)($at) -/* 09E6A0 8009DAA0 03E00008 */ jr $ra -/* 09E6A4 8009DAA4 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/code_80091750/func_8009E2F0.s b/asm/non_matchings/code_80091750/func_8009E2F0.s deleted file mode 100644 index d2fd710d6..000000000 --- a/asm/non_matchings/code_80091750/func_8009E2F0.s +++ /dev/null @@ -1,192 +0,0 @@ -glabel func_8009E2F0 -/* 09EEF0 8009E2F0 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 09EEF4 8009E2F4 3C188019 */ lui $t8, %hi(D_8018E840) # $t8, 0x8019 -/* 09EEF8 8009E2F8 AFB00030 */ sw $s0, 0x30($sp) -/* 09EEFC 8009E2FC 2718E840 */ addiu $t8, %lo(D_8018E840) # addiu $t8, $t8, -0x17c0 -/* 09EF00 8009E300 00047880 */ sll $t7, $a0, 2 -/* 09EF04 8009E304 AFBF0034 */ sw $ra, 0x34($sp) -/* 09EF08 8009E308 01F88021 */ addu $s0, $t7, $t8 -/* 09EF0C 8009E30C 8E1F0000 */ lw $ra, ($s0) -/* 09EF10 8009E310 3C19800F */ lui $t9, %hi(D_800F0B28) # 0x800f -/* 09EF14 8009E314 AFA40048 */ sw $a0, 0x48($sp) -/* 09EF18 8009E318 033FC821 */ addu $t9, $t9, $ra -/* 09EF1C 8009E31C 832F0B28 */ lb $t7, %lo(D_800F0B28)($t9) # 0xb28($t9) -/* 09EF20 8009E320 00807025 */ move $t6, $a0 -/* 09EF24 8009E324 2FE1001B */ sltiu $at, $ra, 0x1b -/* 09EF28 8009E328 11E00096 */ beqz $t7, .L8009E584 -/* 09EF2C 8009E32C AFAF0038 */ sw $t7, 0x38($sp) -/* 09EF30 8009E330 1020002E */ beqz $at, .L8009E3EC -/* 09EF34 8009E334 24190026 */ li $t9, 38 -/* 09EF38 8009E338 3C198019 */ lui $t9, %hi(D_8018E810) # $t9, 0x8019 -/* 09EF3C 8009E33C 2739E810 */ addiu $t9, %lo(D_8018E810) # addiu $t9, $t9, -0x17f0 -/* 09EF40 8009E340 000E18C0 */ sll $v1, $t6, 3 -/* 09EF44 8009E344 3C188019 */ lui $t8, %hi(D_8018E7E8) # $t8, 0x8019 -/* 09EF48 8009E348 2718E7E8 */ addiu $t8, %lo(D_8018E7E8) # addiu $t8, $t8, -0x1818 -/* 09EF4C 8009E34C 00794821 */ addu $t1, $v1, $t9 -/* 09EF50 8009E350 852B0000 */ lh $t3, ($t1) -/* 09EF54 8009E354 00784021 */ addu $t0, $v1, $t8 -/* 09EF58 8009E358 852D0002 */ lh $t5, 2($t1) -/* 09EF5C 8009E35C 850C0002 */ lh $t4, 2($t0) -/* 09EF60 8009E360 850A0000 */ lh $t2, ($t0) -/* 09EF64 8009E364 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015 -/* 09EF68 8009E368 8C840298 */ lw $a0, %lo(gDisplayListHead)($a0) -/* 09EF6C 8009E36C 05610003 */ bgez $t3, .L8009E37C -/* 09EF70 8009E370 000B7043 */ sra $t6, $t3, 1 -/* 09EF74 8009E374 25610001 */ addiu $at, $t3, 1 -/* 09EF78 8009E378 00017043 */ sra $t6, $at, 1 -.L8009E37C: -/* 09EF7C 8009E37C 01C05825 */ move $t3, $t6 -/* 09EF80 8009E380 014E2823 */ subu $a1, $t2, $t6 -/* 09EF84 8009E384 05A10003 */ bgez $t5, .L8009E394 -/* 09EF88 8009E388 000DC043 */ sra $t8, $t5, 1 -/* 09EF8C 8009E38C 25A10001 */ addiu $at, $t5, 1 -/* 09EF90 8009E390 0001C043 */ sra $t8, $at, 1 -.L8009E394: -/* 09EF94 8009E394 03006825 */ move $t5, $t8 -/* 09EF98 8009E398 01983023 */ subu $a2, $t4, $t8 -/* 09EF9C 8009E39C 0198C821 */ addu $t9, $t4, $t8 -/* 09EFA0 8009E3A0 3C18800E */ lui $t8, %hi(D_800E7AC8) # $t8, 0x800e -/* 09EFA4 8009E3A4 27187AC8 */ addiu $t8, %lo(D_800E7AC8) # addiu $t8, $t8, 0x7ac8 -/* 09EFA8 8009E3A8 000F70C0 */ sll $t6, $t7, 3 -/* 09EFAC 8009E3AC 01D81021 */ addu $v0, $t6, $t8 -/* 09EFB0 8009E3B0 AFB90010 */ sw $t9, 0x10($sp) -/* 09EFB4 8009E3B4 94590000 */ lhu $t9, ($v0) -/* 09EFB8 8009E3B8 014B3821 */ addu $a3, $t2, $t3 -/* 09EFBC 8009E3BC AFB90014 */ sw $t9, 0x14($sp) -/* 09EFC0 8009E3C0 944F0002 */ lhu $t7, 2($v0) -/* 09EFC4 8009E3C4 AFAF0018 */ sw $t7, 0x18($sp) -/* 09EFC8 8009E3C8 944E0004 */ lhu $t6, 4($v0) -/* 09EFCC 8009E3CC AFAE001C */ sw $t6, 0x1c($sp) -/* 09EFD0 8009E3D0 94580006 */ lhu $t8, 6($v0) -/* 09EFD4 8009E3D4 0C02637E */ jal draw_box -/* 09EFD8 8009E3D8 AFB80020 */ sw $t8, 0x20($sp) -/* 09EFDC 8009E3DC 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 09EFE0 8009E3E0 AC220298 */ sw $v0, %lo(gDisplayListHead)($at) -/* 09EFE4 8009E3E4 10000067 */ b .L8009E584 -/* 09EFE8 8009E3E8 8E1F0000 */ lw $ra, ($s0) -.L8009E3EC: -/* 09EFEC 8009E3EC 033F7823 */ subu $t7, $t9, $ra -/* 09EFF0 8009E3F0 448F2000 */ mtc1 $t7, $f4 -/* 09EFF4 8009E3F4 44805000 */ mtc1 $zero, $f10 -/* 09EFF8 8009E3F8 05E10006 */ bgez $t7, .L8009E414 -/* 09EFFC 8009E3FC 468021A1 */ cvt.d.w $f6, $f4 -/* 09F000 8009E400 3C0141F0 */ li $at, 0x41F00000 # 30.000000 -/* 09F004 8009E404 44814800 */ mtc1 $at, $f9 -/* 09F008 8009E408 44804000 */ mtc1 $zero, $f8 -/* 09F00C 8009E40C 00000000 */ nop -/* 09F010 8009E410 46283180 */ add.d $f6, $f6, $f8 -.L8009E414: -/* 09F014 8009E414 3C014026 */ li $at, 0x40260000 # 2.593750 -/* 09F018 8009E418 44815800 */ mtc1 $at, $f11 -/* 09F01C 8009E41C 8FA30048 */ lw $v1, 0x48($sp) -/* 09F020 8009E420 3C198019 */ lui $t9, %hi(D_8018E810) # $t9, 0x8019 -/* 09F024 8009E424 462A3403 */ div.d $f16, $f6, $f10 -/* 09F028 8009E428 2739E810 */ addiu $t9, %lo(D_8018E810) # addiu $t9, $t9, -0x17f0 -/* 09F02C 8009E42C 3C188019 */ lui $t8, %hi(D_8018E7E8) # $t8, 0x8019 -/* 09F030 8009E430 000370C0 */ sll $t6, $v1, 3 -/* 09F034 8009E434 01D94821 */ addu $t1, $t6, $t9 -/* 09F038 8009E438 2718E7E8 */ addiu $t8, %lo(D_8018E7E8) # addiu $t8, $t8, -0x1818 -/* 09F03C 8009E43C 852B0000 */ lh $t3, ($t1) -/* 09F040 8009E440 01D84021 */ addu $t0, $t6, $t8 -/* 09F044 8009E444 852D0002 */ lh $t5, 2($t1) -/* 09F048 8009E448 850C0002 */ lh $t4, 2($t0) -/* 09F04C 8009E44C 01C01825 */ move $v1, $t6 -/* 09F050 8009E450 850A0000 */ lh $t2, ($t0) -/* 09F054 8009E454 8FB90038 */ lw $t9, 0x38($sp) -/* 09F058 8009E458 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015 -/* 09F05C 8009E45C 8C840298 */ lw $a0, %lo(gDisplayListHead)($a0) -/* 09F060 8009E460 46208020 */ cvt.s.d $f0, $f16 -/* 09F064 8009E464 05610003 */ bgez $t3, .L8009E474 -/* 09F068 8009E468 000B7843 */ sra $t7, $t3, 1 -/* 09F06C 8009E46C 25610001 */ addiu $at, $t3, 1 -/* 09F070 8009E470 00017843 */ sra $t7, $at, 1 -.L8009E474: -/* 09F074 8009E474 01E05825 */ move $t3, $t7 -/* 09F078 8009E478 014F2823 */ subu $a1, $t2, $t7 -/* 09F07C 8009E47C 05A10003 */ bgez $t5, .L8009E48C -/* 09F080 8009E480 000D7043 */ sra $t6, $t5, 1 -/* 09F084 8009E484 25A10001 */ addiu $at, $t5, 1 -/* 09F088 8009E488 00017043 */ sra $t6, $at, 1 -.L8009E48C: -/* 09F08C 8009E48C 01C06825 */ move $t5, $t6 -/* 09F090 8009E490 018E3023 */ subu $a2, $t4, $t6 -/* 09F094 8009E494 018EC021 */ addu $t8, $t4, $t6 -/* 09F098 8009E498 3C0E800E */ lui $t6, %hi(D_800E7AC8) # $t6, 0x800e -/* 09F09C 8009E49C 25CE7AC8 */ addiu $t6, %lo(D_800E7AC8) # addiu $t6, $t6, 0x7ac8 -/* 09F0A0 8009E4A0 001978C0 */ sll $t7, $t9, 3 -/* 09F0A4 8009E4A4 01EE1021 */ addu $v0, $t7, $t6 -/* 09F0A8 8009E4A8 AFB80010 */ sw $t8, 0x10($sp) -/* 09F0AC 8009E4AC 94580000 */ lhu $t8, ($v0) -/* 09F0B0 8009E4B0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 09F0B4 8009E4B4 014B3821 */ addu $a3, $t2, $t3 -/* 09F0B8 8009E4B8 AFB80014 */ sw $t8, 0x14($sp) -/* 09F0BC 8009E4BC 94590002 */ lhu $t9, 2($v0) -/* 09F0C0 8009E4C0 AFB90018 */ sw $t9, 0x18($sp) -/* 09F0C4 8009E4C4 944F0004 */ lhu $t7, 4($v0) -/* 09F0C8 8009E4C8 AFAF001C */ sw $t7, 0x1c($sp) -/* 09F0CC 8009E4CC 944E0006 */ lhu $t6, 6($v0) -/* 09F0D0 8009E4D0 448E9000 */ mtc1 $t6, $f18 -/* 09F0D4 8009E4D4 05C10004 */ bgez $t6, .L8009E4E8 -/* 09F0D8 8009E4D8 46809120 */ cvt.s.w $f4, $f18 -/* 09F0DC 8009E4DC 44814000 */ mtc1 $at, $f8 -/* 09F0E0 8009E4E0 00000000 */ nop -/* 09F0E4 8009E4E4 46082100 */ add.s $f4, $f4, $f8 -.L8009E4E8: -/* 09F0E8 8009E4E8 46002182 */ mul.s $f6, $f4, $f0 -/* 09F0EC 8009E4EC 24190001 */ li $t9, 1 -/* 09F0F0 8009E4F0 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 09F0F4 8009E4F4 4458F800 */ cfc1 $t8, $31 -/* 09F0F8 8009E4F8 44D9F800 */ ctc1 $t9, $31 -/* 09F0FC 8009E4FC 00000000 */ nop -/* 09F100 8009E500 460032A4 */ cvt.w.s $f10, $f6 -/* 09F104 8009E504 4459F800 */ cfc1 $t9, $31 -/* 09F108 8009E508 00000000 */ nop -/* 09F10C 8009E50C 33390078 */ andi $t9, $t9, 0x78 -/* 09F110 8009E510 53200013 */ beql $t9, $zero, .L8009E560 -/* 09F114 8009E514 44195000 */ mfc1 $t9, $f10 -/* 09F118 8009E518 44815000 */ mtc1 $at, $f10 -/* 09F11C 8009E51C 24190001 */ li $t9, 1 -/* 09F120 8009E520 460A3281 */ sub.s $f10, $f6, $f10 -/* 09F124 8009E524 44D9F800 */ ctc1 $t9, $31 -/* 09F128 8009E528 00000000 */ nop -/* 09F12C 8009E52C 460052A4 */ cvt.w.s $f10, $f10 -/* 09F130 8009E530 4459F800 */ cfc1 $t9, $31 -/* 09F134 8009E534 00000000 */ nop -/* 09F138 8009E538 33390078 */ andi $t9, $t9, 0x78 -/* 09F13C 8009E53C 17200005 */ bnez $t9, .L8009E554 -/* 09F140 8009E540 00000000 */ nop -/* 09F144 8009E544 44195000 */ mfc1 $t9, $f10 -/* 09F148 8009E548 3C018000 */ lui $at, 0x8000 -/* 09F14C 8009E54C 10000007 */ b .L8009E56C -/* 09F150 8009E550 0321C825 */ or $t9, $t9, $at -.L8009E554: -/* 09F154 8009E554 10000005 */ b .L8009E56C -/* 09F158 8009E558 2419FFFF */ li $t9, -1 -/* 09F15C 8009E55C 44195000 */ mfc1 $t9, $f10 -.L8009E560: -/* 09F160 8009E560 00000000 */ nop -/* 09F164 8009E564 0720FFFB */ bltz $t9, .L8009E554 -/* 09F168 8009E568 00000000 */ nop -.L8009E56C: -/* 09F16C 8009E56C 44D8F800 */ ctc1 $t8, $31 -/* 09F170 8009E570 0C02637E */ jal draw_box -/* 09F174 8009E574 AFB90020 */ sw $t9, 0x20($sp) -/* 09F178 8009E578 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 09F17C 8009E57C AC220298 */ sw $v0, %lo(gDisplayListHead)($at) -/* 09F180 8009E580 8E1F0000 */ lw $ra, ($s0) -.L8009E584: -/* 09F184 8009E584 27EF0001 */ addiu $t7, $ra, 1 -/* 09F188 8009E588 2DE10026 */ sltiu $at, $t7, 0x26 -/* 09F18C 8009E58C 14200006 */ bnez $at, .L8009E5A8 -/* 09F190 8009E590 AE0F0000 */ sw $t7, ($s0) -/* 09F194 8009E594 3C018019 */ lui $at, %hi(D_8018E838) # $at, 0x8019 -/* 09F198 8009E598 A020E839 */ sb $zero, %lo(D_8018E838+0x1)($at) -/* 09F19C 8009E59C A020E83A */ sb $zero, %lo(D_8018E838+0x2)($at) -/* 09F1A0 8009E5A0 A020E83B */ sb $zero, %lo(D_8018E838+0x3)($at) -/* 09F1A4 8009E5A4 A020E838 */ sb $zero, %lo(D_8018E838)($at) -.L8009E5A8: -/* 09F1A8 8009E5A8 8FBF0034 */ lw $ra, 0x34($sp) -/* 09F1AC 8009E5AC 8FB00030 */ lw $s0, 0x30($sp) -/* 09F1B0 8009E5B0 27BD0048 */ addiu $sp, $sp, 0x48 -/* 09F1B4 8009E5B4 03E00008 */ jr $ra -/* 09F1B8 8009E5B8 00000000 */ nop diff --git a/include/types.h b/include/types.h index 31b62f077..9ebb96e84 100644 --- a/include/types.h +++ b/include/types.h @@ -109,11 +109,4 @@ struct UnkStruct_800DDB68 { s32 *D_800ED620; s32 *D_800ED628; s32 *D_800ED630; s32 *D_800ED638; }; -struct UnkStruct_8018E7E8 { - s16 x; - s16 y; - s16 unk1; - s16 unk2; -}; - #endif /* TYPES_H */ diff --git a/src/code_80091750.c b/src/code_80091750.c index 14d8ffaa0..aab9ac8bf 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -52,8 +52,8 @@ s8 D_8018D9D8; s8 D_8018D9D9; struct_8018D9E0_entry D_8018D9E0[D_8018D9E0_SIZE]; struct_8018DEE0_entry D_8018DEE0[D_8018DEE0_SIZE]; -s32 D_8018E060; -UNUSED s32 D_8018E068[32]; +struct_8018E060_entry D_8018E060[D_8018E060_SIZE]; +UNUSED u8 code_80091750_bss_padding0[8]; struct_8018E0E8_entry D_8018E0E8[D_8018E0E8_SIZE]; s32 gD_8018E118TotalSize; struct_8018E118_entry D_8018E118[D_8018E118_SIZE]; @@ -68,30 +68,8 @@ s32 D_8018E7B8[4]; u32 D_8018E7C8; u32 D_8018E7D0[4]; s32 D_8018E7E0; -struct UnkStruct_8018E7E8 D_8018E7E8[1]; -s16 D_8018E7F0; -UNUSED s32 D_8018E7F4; -s16 D_8018E7F8; -//! @todo Unknown type -s16 D_8018E7FA; -UNUSED s32 D_8018E7FC; -//! @todo Unknown type -s16 D_8018E800; -s16 D_8018E802; -UNUSED s32 D_8018E808[2]; -struct UnkStruct_8018E7E8 D_8018E810[1]; -s16 D_8018E818; -//! @todo Unknown type -s16 D_8018E81A; -UNUSED s32 D_8018E81C; -//! @todo these are likely arrays. -s16 D_8018E820; -//! @todo This may not be the right file for them. -s16 D_8018E822; -s32 code_80091750_pad_1; -s16 D_8018E828; -s16 D_8018E82A; -s32 code_80091750_pad_2[2]; +struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE]; +struct UnkStruct_8018E7E8 D_8018E810[D_8018E810_SIZE]; s8 D_8018E838[4]; // Import to C was required for matching. s32 D_8018E83C; @@ -1461,6 +1439,7 @@ f64 func_8009186C(f64 arg0) { } #ifdef NON_MATCHING +// https://decomp.me/scratch/dXpT5 // Some math reordering issues on the continued fraction line f64 func_8009195C(f64 arg0) { s32 temp_f10; @@ -4959,55 +4938,39 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099958.s") // Possibly a debug print function? void func_80099A70(void) { s32 i; - D_8018E060 = 0; - for (i = 0; i < 16; i++) { } + D_8018E060[0].texture = NULL; + for (i = 0; i < D_8018E060_SIZE; i++) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern void *D_8018E060; - void func_80099A94(MkTexture *arg0, s32 arg1) { - void **sp1C; - s32 temp_t7; - void **var_v1; + struct_8018E060_entry *var_v1; - var_v1 = &D_8018E060; - if (D_8018E060 != NULL) { - do { - temp_t7 = var_v1->unk8; - var_v1 += 8; - } while (temp_t7 != 0); + var_v1 = &D_8018E060[0]; + while(var_v1->texture != NULL) { + var_v1++; } - sp1C = var_v1; - var_v1->unk0 = segmented_to_virtual_dupe(arg0); - var_v1->unk4 = arg1; + var_v1->texture = segmented_to_virtual_dupe(arg0); + var_v1->unk_4 = arg1; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099A94.s") -#endif #ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern u8 *D_8018D9B4; -extern void *D_8018E060; - +//generated by m2c commit a39b70e85329b0bcaeb4350510ddb23dc9840dce on Feb-04-2024 void func_80099AEC(void) { OSIoMesg sp6C; void *sp68; s32 sp60; u8 *sp58; + MkTexture *temp_s2; s32 temp_t7; s8 var_s5; + struct_8018E060_entry *temp_s1; + struct_8018E060_entry *var_s1; u16 temp_v1; u16 temp_v1_2; u16 temp_v1_3; u16 var_s0; u16 var_s0_2; u16 var_s0_3; - void **temp_s1; - void **var_s1; - void *temp_s2; void *temp_v0; void *temp_v0_2; @@ -5016,11 +4979,11 @@ void func_80099AEC(void) { } else { sp60 = 0x00001000; } - var_s1 = &D_8018E060; - temp_s2 = D_8018E060; + var_s1 = D_8018E060; + temp_s2 = D_8018E060->texture; var_s5 = 0; if (temp_s2 != NULL) { - temp_v1 = temp_s2->unk10; + temp_v1 = temp_s2->size; var_s0 = 0x1400; if (temp_v1 != 0) { var_s0 = temp_v1; @@ -5030,7 +4993,7 @@ void func_80099AEC(void) { } osInvalDCache(D_8018D9B4, (u32) var_s0); sp58 = _textures_0aSegmentRomStart; - osPiStartDma(&sp6C, 0, 0, (u32) &_textures_0aSegmentRomStart[temp_s2->unk4 & 0xFFFFFF], D_8018D9B4, (u32) var_s0, &gDmaMesgQueue); + osPiStartDma(&sp6C, 0, 0, (u32) &_textures_0aSegmentRomStart[(s32) temp_s2->textureData & 0xFFFFFF], D_8018D9B4, (u32) var_s0, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &sp68, 1); loop_9: temp_v0 = var_s1->unk8; @@ -5050,8 +5013,8 @@ loop_9: osInvalDCache(temp_t7 + D_8018D9B4, (u32) var_s0_2); osPiStartDma(&sp6C, 0, 0, (u32) &sp58[temp_v0->unk4 & 0xFFFFFF], temp_t7 + D_8018D9B4, (u32) var_s0_2, &gDmaMesgQueue); } - mio0decode(D_8018D9B4, (D_8018E118[var_s1->unk4].offset * 2) + D_8018D9B0); - var_s1->unk0 = NULL; + mio0decode(D_8018D9B4, (u8 *) &D_8018D9B0[D_8018E118[var_s1->unk_4].offset]); + var_s1->texture = NULL; temp_s1 = var_s1 + 8; if (var_s5 == 0) { osRecvMesg(&gDmaMesgQueue, &sp68, 1); @@ -5070,8 +5033,8 @@ loop_9: osInvalDCache(D_8018D9B4, (u32) var_s0_3); osPiStartDma(&sp6C, 0, 0, (u32) &sp58[temp_v0_2->unk4 & 0xFFFFFF], D_8018D9B4, (u32) var_s0_3, &gDmaMesgQueue); } - mio0decode((sp60 * 4) + D_8018D9B4, (D_8018E118[temp_s1->unk4].offset * 2) + D_8018D9B0); - temp_s1->unk0 = NULL; + mio0decode((sp60 * 4) + D_8018D9B4, (u8 *) &D_8018D9B0[D_8018E118[temp_s1->unk_4].offset]); + temp_s1->texture = NULL; var_s1 = temp_s1 + 8; if (var_s5 == 0) { osRecvMesg(&gDmaMesgQueue, &sp68, 1); @@ -5101,33 +5064,30 @@ void func_80099E60(MkTexture *arg0, s32 arg1, s32 arg2) { } #ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern u8 *D_8018D9B4; -extern void *D_8018E0E8; - +//generated by m2c commit a39b70e85329b0bcaeb4350510ddb23dc9840dce on Feb-04-2024 void func_80099EC4(void) { OSIoMesg sp68; void *sp64; + MkTexture *temp_s2; s16 temp_v0_2; s16 temp_v0_4; s8 var_s4; + struct_8018E0E8_entry *temp_s1; + struct_8018E0E8_entry *var_s1; u16 temp_v1; u16 temp_v1_2; u16 temp_v1_3; u16 var_s0; u16 var_s0_2; u16 var_s0_3; - void **temp_s1; - void **var_s1; - void *temp_s2; void *temp_v0; void *temp_v0_3; - var_s1 = &D_8018E0E8; - temp_s2 = D_8018E0E8; + var_s1 = D_8018E0E8; + temp_s2 = D_8018E0E8->mk64Texture; var_s4 = 0; if (temp_s2 != NULL) { - temp_v1 = temp_s2->unk10; + temp_v1 = temp_s2->size; var_s0 = 0x1400; if (temp_v1 != 0) { var_s0 = temp_v1; @@ -5136,7 +5096,7 @@ void func_80099EC4(void) { var_s0 = (((s32) var_s0 / 8) * 8) + 8; } osInvalDCache(D_8018D9B4, (u32) var_s0); - osPiStartDma(&sp68, 0, 0, (u32) &_textures_0aSegmentRomStart[temp_s2->unk4 & 0xFFFFFF], D_8018D9B4, (u32) var_s0, &gDmaMesgQueue); + osPiStartDma(&sp68, 0, 0, (u32) &_textures_0aSegmentRomStart[(s32) temp_s2->textureData & 0xFFFFFF], D_8018D9B4, (u32) var_s0, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &sp64, 1); loop_6: temp_v0 = var_s1->unk8; @@ -5156,7 +5116,7 @@ loop_6: } temp_v0_2 = var_s1->unk4; mio0decode(D_8018D9B4, D_802BFB80[var_s1->unk6][temp_v0_2 / 2] + ((temp_v0_2 % 2) << 0xD) + 0x4000); - var_s1->unk0 = NULL; + var_s1->mk64Texture = NULL; temp_s1 = var_s1 + 8; if (var_s4 == 0) { osRecvMesg(&gDmaMesgQueue, &sp64, 1); @@ -5177,7 +5137,7 @@ loop_6: } temp_v0_4 = temp_s1->unk4; mio0decode(D_8018D9B4 + 0x1400, D_802BFB80[temp_s1->unk6][temp_v0_4 / 2] + ((temp_v0_4 % 2) << 0xD) + 0x4000); - temp_s1->unk0 = NULL; + temp_s1->mk64Texture = NULL; var_s1 = temp_s1 + 8; if (var_s4 == 0) { osRecvMesg(&gDmaMesgQueue, &sp64, 1); @@ -5849,42 +5809,21 @@ Gfx *func_8009C708(Gfx *arg0, struct_8018DEE0_entry *arg1, s32 arg2, s32 arg3, s GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009C708.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern ? D_8018E7E8; -extern s16 D_8018E7F0; -extern s16 D_8018E7F8; -extern s16 D_8018E802; -extern ? D_8018E810; -extern s16 D_8018E818; -extern s16 D_8018E822; -extern s16 D_8018E828; - void func_8009C918(void) { - D_8018E7E8.unk0 = (s16) D_8015F480->screenStartX; - D_8018E7E8.unk0 = (s16) D_8015F480->screenStartY; - D_8018E810.unk0 = (s16) D_8015F480->screenWidth; - D_8018E810.unk0 = (s16) D_8015F480->screenHeight; - D_8018E7F0 = *(D_8015F480 + 0x72); - D_8018E7F0 = *(D_8015F480 + 0x70); - D_8018E818 = *(D_8015F480 + 0x6E); - D_8018E818 = *(D_8015F480 + 0x6C); - D_8018E7F8 = *(D_8015F480 + 0xB2); - D_8018E7F8 = *(D_8015F480 + 0xB0); - D_8018E822 = *(D_8015F480 + 0xAC); - D_8018E822 = *(D_8015F480 + 0xAE); - D_8018E802 = *(D_8015F480 + 0xF0); - D_8018E802 = *(D_8015F480 + 0xF2); - D_8018E828 = *(D_8015F480 + 0xEE); - D_8018E828 = *(D_8015F480 + 0xEC); - D_8018E7E8.unk20 = 0x00A0; - D_8018E7E8.unk22 = 0x0078; - D_8018E810.unk20 = 0x0140; - D_8018E810.unk22 = 0x00F0; + s32 someIndex; + + for (someIndex = 0; someIndex < 4; someIndex++) { + D_8018E7E8[someIndex].x = D_8015F480[someIndex].screenStartX; + D_8018E7E8[someIndex].y = D_8015F480[someIndex].screenStartY; + D_8018E810[someIndex].x = D_8015F480[someIndex].screenWidth; + D_8018E810[someIndex].y = D_8015F480[someIndex].screenHeight; + } + + D_8018E7E8[4].x = 0x00A0; + D_8018E7E8[4].y = 0x0078; + D_8018E810[4].x = 0x0140; + D_8018E810[4].y = 0x00F0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009C918.s") -#endif void func_8009CA2C(void) { s32 var_s0; @@ -5894,29 +5833,22 @@ void func_8009CA2C(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -? func_8009D998(s32, s32, s32); /* extern */ -? func_8009DAA8(Gfx **, s32, s32); /* extern */ -? func_8009DB8C(Gfx **, s32, s32); /* extern */ -extern ? D_8018E7AC; - void func_8009CA6C(s32 arg0) { - Gfx *temp_v1; s32 var_a1; - u8 temp_t0; - if ((arg0 == 4) || ((find_8018D9E0_entry(0x000000AA) == NULL) && (find_8018D9E0_entry(0x000000AB) == NULL) && (find_8018D9E0_entry(0x000000B9) == NULL) && (find_8018D9E0_entry(0x000000BA) == NULL) && (find_8018D9E0_entry(0x000000AC) == NULL) && (find_8018D9E0_entry(0x000000B0) == NULL))) { - temp_v1 = gDisplayListHead; - gDisplayListHead = temp_v1 + 8; + if ((arg0 == 4) || + ((find_8018D9E0_entry(0x000000AA) == NULL) && + (find_8018D9E0_entry(0x000000AB) == NULL) && + (find_8018D9E0_entry(0x000000B9) == NULL) && + (find_8018D9E0_entry(0x000000BA) == NULL) && + (find_8018D9E0_entry(0x000000AC) == NULL) && + (find_8018D9E0_entry(0x000000B0) == NULL))) { var_a1 = 0; - temp_v1->words.w0 = 0x06000000; - temp_v1->words.w1 = (u32) D_0D0076F8; + gSPDisplayList(gDisplayListHead++, D_0D0076F8); if ((arg0 != 4) && (gIsGamePaused != 0)) { var_a1 = 1; } - temp_t0 = *(&D_8018E7AC + arg0); - switch (temp_t0) { + switch (D_8018E7AC[arg0]) { case 1: func_8009CDDC(arg0, var_a1); return; @@ -5924,13 +5856,13 @@ void func_8009CA6C(s32 arg0) { func_8009D958(arg0, var_a1); return; case 3: - func_8009DB8C(&gDisplayListHead, var_a1, arg0); + func_8009DB8C(); return; case 4: - func_8009DAA8(&gDisplayListHead, var_a1, arg0); + func_8009DAA8(); return; case 5: - func_8009D998(arg0, var_a1, arg0); + func_8009D998(arg0); return; case 7: func_8009D978(arg0, var_a1); @@ -5938,17 +5870,12 @@ void func_8009CA6C(s32 arg0) { case 8: func_8009CDFC(arg0, var_a1); break; + case 0: + default: + break; } - } else { - default: } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009CA6C.s") -#endif - -extern struct UnkStruct_8018E7E8 D_8018E7E8[]; -extern struct UnkStruct_8018E7E8 D_8018E810[]; void func_8009CBE4(s32 arg0, s32 arg1, s32 arg2) { RGBA16* color; @@ -6344,80 +6271,55 @@ func_8009CE64_label1: GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009CE64.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Dec-23-2023 -extern ? D_8018E7D0; -extern ? D_8018E7E8; -extern ? D_8018E810; - void func_8009D77C(s32 arg0, s32 arg1, s32 arg2) { - s32 sp44; - u32 *sp3C; - s32 *sp38; - RGBA16 *temp_v0_4; s16 var_ra; s16 var_t3; s16 var_t4; - s32 *temp_t5; s32 temp_t8; - s32 temp_v0; - s32 temp_v0_2; - s32 temp_v1_3; - struct UnkStruct_800DC5EC *temp_v0_3; - u32 *temp_t1; - u32 temp_t6; - u32 var_t2; - void *temp_a0; - void *temp_a0_2; - void *temp_v1; - void *temp_v1_2; + s32 temp_v1; + s32 var_t2; + s32 someMath0; + s32 someMath1; + RGBA16 *temp_v0_2; + s32 sp44; + s32 stackPadding0; if ((gModeSelection == 0) || (gModeSelection == 1)) { - temp_v0 = arg0 * 8; - temp_a0 = temp_v0 + &D_8018E810; - temp_v1 = temp_v0 + &D_8018E7E8; - var_t3 = temp_v1->unk0; - var_t4 = temp_v1->unk2; - var_ra = temp_a0->unk0; - sp44 = (s32) temp_a0->unk2; + var_t3 = D_8018E7E8[arg0].x; + var_t4 = D_8018E7E8[arg0].y; + var_ra = D_8018E810[arg0].x; + sp44 = D_8018E810[arg0].y; } else if (arg0 >= 4) { - temp_v0_2 = arg0 * 8; - temp_a0_2 = temp_v0_2 + &D_8018E810; - temp_v1_2 = temp_v0_2 + &D_8018E7E8; - var_t3 = temp_v1_2->unk0; - var_t4 = temp_v1_2->unk2; - var_ra = temp_a0_2->unk0; - sp44 = (s32) temp_a0_2->unk2; + var_t3 = D_8018E7E8[arg0].x; + var_t4 = D_8018E7E8[arg0].y; + var_ra = D_8018E810[arg0].x; + sp44 = D_8018E810[arg0].y; } else { - temp_v0_3 = &D_8015F480[arg0]; - var_t3 = temp_v0_3->screenStartX; - var_t4 = temp_v0_3->screenStartY; - var_ra = temp_v0_3->screenWidth; - sp44 = (s32) temp_v0_3->screenHeight; + var_t3 = D_8015F480[arg0].screenStartX; + var_t4 = D_8015F480[arg0].screenStartY; + var_ra = D_8015F480[arg0].screenWidth; + sp44 = D_8015F480[arg0].screenHeight; } - temp_t1 = (arg0 * 4) + &D_8018E7D0; - temp_t5 = &D_8018E7B8[arg0]; - var_t2 = (u32) (*temp_t1 * 0xFF) / (u32) *temp_t5; - if ((s32) var_t2 >= 0x100) { + var_t2 = (D_8018E7D0[arg0] * 0xFF) / D_8018E7B8[arg0]; + if (var_t2 >= 0x100) { var_t2 = 0x000000FF; } - temp_v1_3 = var_ra / 2; + temp_v1 = var_ra / 2; temp_t8 = sp44 / 2; - temp_v0_4 = &D_800E7AE8[arg2]; - sp3C = temp_t1; - sp38 = temp_t5; - gDisplayListHead = draw_box(gDisplayListHead, var_t3 - temp_v1_3, var_t4 - temp_t8, temp_v1_3 + var_t3, temp_t8 + var_t4, (s32) temp_v0_4->red, (s32) temp_v0_4->green, (s32) temp_v0_4->blue, (s32) var_t2); + temp_v0_2 = &D_800E7AE8[arg2]; + // Why does it have to written like this to match? + someMath0 = temp_v1; + someMath0 += var_t3; + someMath1 = temp_t8; + someMath1 += var_t4; + gDisplayListHead = draw_box(gDisplayListHead, var_t3 - temp_v1, var_t4 - temp_t8, someMath0, someMath1, temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); if (arg1 == 0) { - temp_t6 = *temp_t1 + 1; - *temp_t1 = temp_t6; - if ((u32) (*temp_t5 + 1) < temp_t6) { + D_8018E7D0[arg0]++; + if ((D_8018E7B8[arg0] + 1) < D_8018E7D0[arg0]) { func_8009CE64(arg0); } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009D77C.s") -#endif void func_8009D958(s32 arg0, s32 arg1) { func_8009D77C(arg0, arg1, 0); @@ -6427,58 +6329,41 @@ void func_8009D978(s32 arg0, s32 arg1) { func_8009D77C(arg0, arg1, 1); } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern ? D_8018E7E8; -extern ? D_8018E810; - void func_8009D998(s32 arg0) { s16 var_t0; s16 var_t1; s16 var_t2; s16 var_t3; s32 temp_v0; - s32 temp_v0_2; - s32 temp_v0_4; - s32 temp_v1_3; - struct UnkStruct_800DC5EC *temp_v0_3; - void *temp_a0; - void *temp_a0_2; - void *temp_v1; - void *temp_v1_2; + s32 temp_v1; + s32 someMath0; + s32 someMath1; if ((gModeSelection == 0) || (gModeSelection == 1)) { - temp_v0 = arg0 * 8; - temp_v1 = temp_v0 + &D_8018E7E8; - temp_a0 = temp_v0 + &D_8018E810; - var_t0 = temp_v1->unk0; - var_t1 = temp_v1->unk2; - var_t2 = temp_a0->unk0; - var_t3 = temp_a0->unk2; + var_t0 = D_8018E7E8[arg0].x; + var_t1 = D_8018E7E8[arg0].y; + var_t2 = D_8018E810[arg0].x; + var_t3 = D_8018E810[arg0].y; + } else if (arg0 >= 4) { + var_t0 = D_8018E7E8[arg0].x; + var_t1 = D_8018E7E8[arg0].y; + var_t2 = D_8018E810[arg0].x; + var_t3 = D_8018E810[arg0].y; } else { - temp_v0_2 = arg0 * 8; - if (arg0 >= 4) { - temp_v1_2 = temp_v0_2 + &D_8018E7E8; - temp_a0_2 = temp_v0_2 + &D_8018E810; - var_t0 = temp_v1_2->unk0; - var_t1 = temp_v1_2->unk2; - var_t2 = temp_a0_2->unk0; - var_t3 = temp_a0_2->unk2; - } else { - temp_v0_3 = &D_8015F480[arg0]; - var_t0 = temp_v0_3->screenStartX; - var_t1 = temp_v0_3->screenStartY; - var_t2 = temp_v0_3->screenWidth; - var_t3 = temp_v0_3->screenHeight; - } + var_t0 = D_8015F480[arg0].screenStartX; + var_t1 = D_8015F480[arg0].screenStartY; + var_t2 = D_8015F480[arg0].screenWidth; + var_t3 = D_8015F480[arg0].screenHeight; } - temp_v0_4 = var_t2 / 2; - temp_v1_3 = var_t3 / 2; - gDisplayListHead = draw_box(gDisplayListHead, var_t0 - temp_v0_4, var_t1 - temp_v1_3, temp_v0_4 + var_t0, temp_v1_3 + var_t1, 0, 0, 0, 0x000000FF); + temp_v0 = var_t2 / 2; + temp_v1 = var_t3 / 2; + // Why does it have to written like this to match? + someMath0 = temp_v0; + someMath0 += var_t0; + someMath1 = temp_v1; + someMath1 += var_t1; + gDisplayListHead = draw_box(gDisplayListHead, var_t0 - temp_v0, var_t1 - temp_v1, someMath0, someMath1, 0, 0, 0, 0x000000FF); } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009D998.s") -#endif void func_8009DAA8(void) { u32 var_t0; @@ -6688,7 +6573,7 @@ void func_8009E2A8(s32 arg0) { case 0: break; case 1: - func_8009E2F0(); + func_8009E2F0(arg0); break; default: D_8018E838[arg0] = 0; @@ -6696,81 +6581,35 @@ void func_8009E2A8(s32 arg0) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern ? D_8018E7E8; -extern ? D_8018E810; - void func_8009E2F0(s32 arg0) { - s32 sp38; + s32 stackPadding0; + s32 stackPadding1; + s32 someIndex; + s32 temp_t7; + f32 temp_t7_2; RGBA16 *temp_v0; - f32 var_f4; - f64 var_f6; - s16 temp_t2; - s16 temp_t2_2; - s16 temp_t4; - s32 *temp_s0; - s32 temp_ra; - s32 temp_t6; - s32 temp_t6_2; - s32 temp_t7_2; - s32 temp_t7_3; - s32 temp_t8; - s32 temp_v1; - s8 temp_t7; - u16 temp_t6_3; - u32 temp_t7_4; - void *temp_t0; - void *temp_t0_2; - void *temp_t1; - void *temp_t1_2; + struct UnkStruct_8018E7E8 *temp_t0; + struct UnkStruct_8018E7E8 *temp_t1; - temp_s0 = &D_8018E840[arg0]; - temp_ra = *temp_s0; - temp_t7 = D_800F0B28[temp_ra]; - sp38 = (s32) temp_t7; + temp_t7 = D_800F0B28[D_8018E840[arg0]]; if (temp_t7 != 0) { - if ((u32) temp_ra < 0x1BU) { - temp_v1 = arg0 * 8; - temp_t1 = temp_v1 + &D_8018E810; - temp_t0 = temp_v1 + &D_8018E7E8; - temp_t4 = temp_t0->unk2; - temp_t2 = temp_t0->unk0; - temp_t6 = (s16) temp_t1->unk0 / 2; - temp_t8 = (s16) temp_t1->unk2 / 2; - temp_v0 = &D_800E7AC8[temp_t7]; - gDisplayListHead = draw_box(gDisplayListHead, temp_t2 - temp_t6, temp_t4 - temp_t8, temp_t2 + temp_t6, temp_t4 + temp_t8, (s32) temp_v0->red, (s32) temp_v0->green, (s32) temp_v0->blue, (s32) temp_v0->alpha); + temp_t1 = &D_8018E7E8[arg0]; + temp_t0 = &D_8018E810[arg0]; + temp_v0 = &D_800E7AC8[temp_t7]; + if (D_8018E840[arg0] < 0x1BU) { + gDisplayListHead = draw_box(gDisplayListHead, temp_t1->x - (temp_t0->x / 2), temp_t1->y - (temp_t0->y / 2), temp_t1->x + (temp_t0->x / 2), temp_t1->y + (temp_t0->y / 2), temp_v0->red, temp_v0->green, temp_v0->blue, temp_v0->alpha); } else { - temp_t7_2 = 0x26 - temp_ra; - var_f6 = (f64) temp_t7_2; - if (temp_t7_2 < 0) { - var_f6 += 4294967296.0; - } - temp_t6_2 = arg0 * 8; - temp_t1_2 = temp_t6_2 + &D_8018E810; - temp_t0_2 = temp_t6_2 + &D_8018E7E8; - temp_t2_2 = temp_t0_2->unk0; - temp_t7_3 = (s16) temp_t1_2->unk0 / 2; - temp_t6_3 = D_800E7AC8[sp38].alpha; - var_f4 = (f32) temp_t6_3; - if ((s32) temp_t6_3 < 0) { - var_f4 += 4294967296.0f; - } - gDisplayListHead = draw_box(gDisplayListHead, temp_t2_2 - temp_t7_3, temp_t0_2->unk2 - ((s16) temp_t1_2->unk2 / 2), temp_t2_2 + temp_t7_3, M2C_ERROR(/* Unable to find stack arg 0x10 in block */), M2C_ERROR(/* Unable to find stack arg 0x14 in block */), M2C_ERROR(/* Unable to find stack arg 0x18 in block */), M2C_ERROR(/* Unable to find stack arg 0x1c in block */), (s32) (u32) (var_f4 * (f32) (var_f6 / 11.0))); + temp_t7_2 = ((u32)(38 - D_8018E840[arg0])) / 11.0; + gDisplayListHead = draw_box(gDisplayListHead, temp_t1->x - (temp_t0->x / 2), temp_t1->y - (temp_t0->y / 2), temp_t1->x + (temp_t0->x / 2), temp_t1->y +(temp_t0->y / 2), temp_v0->red, temp_v0->green, temp_v0->blue, (u32) (temp_v0->alpha * temp_t7_2)); } } - temp_t7_4 = *temp_s0 + 1; - *temp_s0 = (s32) temp_t7_4; - if (temp_t7_4 >= 0x26U) { - *D_8018E838 = 0; - *D_8018E838 = 0; - *D_8018E838 = 0; - *D_8018E838 = 0; + D_8018E840[arg0]++; + if (D_8018E840[arg0] >= 0x26U) { + for (someIndex = 0; someIndex < 4; someIndex++) { + D_8018E838[someIndex] = 0; + } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009E2F0.s") -#endif void func_8009E5BC(void) { s32 i; @@ -9119,8 +8958,6 @@ void func_800A4BC8(struct_8018D9E0_entry *arg0) { // Register allocation differnces, no idea what the main cause is. // Permuter hasn't had any luck either extern struct UnkStruct_800DC5EC D_8015F480[]; -extern Unk_D_800E70A0 D_800E8540[][4]; /* unable to generate initializer */ -extern char *D_800E775C[]; void func_800A4EF8(struct_8018D9E0_entry *arg0) { s16 temp_t0; @@ -9157,8 +8994,6 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A4EF8.s") // https://decomp.me/scratch/kPoax // Just register allocation differences, something to do with the way // `gScreenModeSelection` is getting accessed. Permuter hasn't had luck yet -extern char *D_800E775C[]; -extern Unk_D_800E70A0 D_800E85C0[][4]; extern struct UnkStruct_800DC5EC D_8015F480[]; void func_800A5084(struct_8018D9E0_entry *arg0) { @@ -12526,10 +12361,7 @@ void func_800ACC50(struct_8018D9E0_entry *arg0) { } #ifdef NON_MATCHING -// Also needs some rodata // Just register allocation differences, can't figure out the source of it -extern Unk_D_800E70A0 D_800E72F8; /* unable to generate initializer */ -extern Unk_D_800E70A0 D_800E7300[][4]; /* unable to generate initializer */ void func_800ACF40(struct_8018D9E0_entry *arg0) { Unk_D_800E70A0 *temp_v0_2; diff --git a/src/code_80091750.h b/src/code_80091750.h index 75cd2d37e..f1f303e54 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -35,6 +35,11 @@ typedef struct { /* 0x14 */ s32 unk14; // Flip flops between 0 and 1, use unknown } struct_8018DEE0_entry; // size = 0x18 +typedef struct { + /* 0x0 */ MkTexture *texture; + /* 0x4 */ s32 unk_4; +} struct_8018E060_entry; // size = 0x8 + typedef struct { /* 0x0 */ MkTexture *mk64Texture; /* 0x4 */ s16 unk4; @@ -57,6 +62,13 @@ typedef struct { /* 0x04 */ Gfx *displayList; } struct_8018E768_entry; // size = 0x08 +struct UnkStruct_8018E7E8 { + /* 0x0 */ s16 x; + /* 0x2 */ s16 y; + /* 0x4 */ s16 unk1; + /* 0x6 */ s16 unk2; +}; // size = 0x8 + typedef struct { /* 0x00 */ s16 column; /* 0x02 */ s16 row; @@ -196,6 +208,7 @@ void func_8009CE64(s32); void func_8009D77C(s32,s32,s32); void func_8009D958(s32, s32); void func_8009D978(s32, s32); +void func_8009D998(s32); void func_8009DAA8(void); void func_8009DB8C(void); void func_8009DEF8(u32, u32); @@ -214,7 +227,7 @@ void func_8009E230(void); void func_8009E258(void); void func_8009E280(void); void func_8009E2A8(s32); -void func_8009E2F0(void); +void func_8009E2F0(s32); void func_8009E5BC(void); void func_8009E5FC(s32); void func_8009E620(void); @@ -381,9 +394,12 @@ typedef struct struct_8018EE10_entry_cont { #define D_8018D9E0_SIZE 0x20 #define D_8018DEE0_SIZE 0x10 +#define D_8018E060_SIZE 0x10 #define D_8018E0E8_SIZE 0x05 #define D_8018E118_SIZE 0xC8 #define D_8018E768_SIZE 0x08 +#define D_8018E7E8_SIZE 0x05 +#define D_8018E810_SIZE 0x05 /* This is where I'd put my static data, if I had any */ @@ -402,7 +418,7 @@ extern s8 D_8018D9D8; extern s8 D_8018D9D9; extern struct_8018D9E0_entry D_8018D9E0[D_8018D9E0_SIZE]; extern struct_8018DEE0_entry D_8018DEE0[D_8018DEE0_SIZE]; -extern s32 D_8018E060; +extern struct_8018E060_entry D_8018E060[D_8018E060_SIZE]; extern struct_8018E0E8_entry D_8018E0E8[D_8018E0E8_SIZE]; extern s32 gD_8018E118TotalSize; extern struct_8018E118_entry D_8018E118[D_8018E118_SIZE]; @@ -417,8 +433,8 @@ extern s32 D_8018E7B8[]; extern u32 D_8018E7C8; extern u32 D_8018E7D0[]; extern s32 D_8018E7E0; -extern s16 D_8018E7F0; -extern s16 D_8018E7F8; +extern struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE]; +extern struct UnkStruct_8018E7E8 D_8018E810[D_8018E810_SIZE]; extern s8 gTextColor; extern u8 D_8018ED90; extern u8 D_8018ED91; diff --git a/tools/doxygen_syms.md b/tools/doxygen_syms.md index 782f700d0..27775c5f7 100644 --- a/tools/doxygen_syms.md +++ b/tools/doxygen_syms.md @@ -4677,7 +4677,7 @@ Variable Name | Memory Address [D_8018D9E0](@ref D_8018D9E0) | 0x8018D9E0 [D_8018DEE0](@ref D_8018DEE0) | 0x8018DEE0 [D_8018E060](@ref D_8018E060) | 0x8018E060 -[D_8018E068](@ref D_8018E068) | 0x8018E068 +[code_80091750_bss_padding0](@ref code_80091750_bss_padding0) | 0x8018E0E0 [D_8018E0E8](@ref D_8018E0E8) | 0x8018E0E8 [gD_8018E118TotalSize](@ref gD_8018E118TotalSize) | 0x8018E110 [D_8018E118](@ref D_8018E118) | 0x8018E118 @@ -4693,24 +4693,7 @@ Variable Name | Memory Address [D_8018E7D0](@ref D_8018E7D0) | 0x8018E7D0 [D_8018E7E0](@ref D_8018E7E0) | 0x8018E7E0 [D_8018E7E8](@ref D_8018E7E8) | 0x8018E7E8 -[D_8018E7F0](@ref D_8018E7F0) | 0x8018E7F0 -[D_8018E7F4](@ref D_8018E7F4) | 0x8018E7F4 -[D_8018E7F8](@ref D_8018E7F8) | 0x8018E7F8 -[D_8018E7FA](@ref D_8018E7FA) | 0x8018E7FA -[D_8018E7FC](@ref D_8018E7FC) | 0x8018E7FC -[D_8018E800](@ref D_8018E800) | 0x8018E800 -[D_8018E802](@ref D_8018E802) | 0x8018E802 -[D_8018E808](@ref D_8018E808) | 0x8018E808 [D_8018E810](@ref D_8018E810) | 0x8018E810 -[D_8018E818](@ref D_8018E818) | 0x8018E818 -[D_8018E81A](@ref D_8018E81A) | 0x8018E81A -[D_8018E81C](@ref D_8018E81C) | 0x8018E81C -[D_8018E820](@ref D_8018E820) | 0x8018E820 -[D_8018E822](@ref D_8018E822) | 0x8018E822 -[code_80091750_pad_1](@ref code_80091750_pad_1) | 0x8018E824 -[D_8018E828](@ref D_8018E828) | 0x8018E828 -[D_8018E82A](@ref D_8018E82A) | 0x8018E82A -[code_80091750_pad_2](@ref code_80091750_pad_2) | 0x8018E830 [D_8018E838](@ref D_8018E838) | 0x8018E838 [D_8018E83C](@ref D_8018E83C) | 0x8018E83C [D_8018E840](@ref D_8018E840) | 0x8018E840