From 893ecbe83862528e98b674532cf6024b30df6a54 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Mon, 25 Mar 2024 13:25:13 -0400 Subject: [PATCH] Turn D_802BFB80 into a union (#582) * Turn D_802BFB80 into a union As much as I hate it, it does make more matches possible Got a few more, unrelated matches Signed-off-by: Taggerung * Update based on comment Signed-off-by: Taggerung * Update to address comment Signed-off-by: Taggerung --------- Signed-off-by: Taggerung Co-authored-by: Taggerung --- .../code_80091750/func_80099958.s | 79 -- .../code_80091750/func_80099EC4.s | 74 -- .../code_80091750/func_8009C708.s | 143 ---- .../code_80091750/func_800A0B80.s | 172 ----- .../code_80091750/func_800A54EC.s | 154 ---- .../code_80091750/func_800A5738.s | 678 ------------------ permuter_settings.toml | 2 +- src/buffers.h | 18 +- src/code_80091750.c | 453 ++++++------ src/code_80091750.h | 10 + src/data/buffers.c | 2 +- src/render_player.c | 32 +- src/spawn_players.c | 4 +- src/staff_ghosts.c | 20 +- tools/doxygen_syms.md | 14 +- 15 files changed, 268 insertions(+), 1587 deletions(-) delete mode 100644 asm/non_matchings/code_80091750/func_80099958.s delete mode 100644 asm/non_matchings/code_80091750/func_8009C708.s delete mode 100644 asm/non_matchings/code_80091750/func_800A0B80.s delete mode 100644 asm/non_matchings/code_80091750/func_800A54EC.s delete mode 100644 asm/non_matchings/code_80091750/func_800A5738.s diff --git a/asm/non_matchings/code_80091750/func_80099958.s b/asm/non_matchings/code_80091750/func_80099958.s deleted file mode 100644 index 93cefabb3..000000000 --- a/asm/non_matchings/code_80091750/func_80099958.s +++ /dev/null @@ -1,79 +0,0 @@ -glabel func_80099958 -/* 09A558 80099958 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 09A55C 8009995C AFBF0024 */ sw $ra, 0x24($sp) -/* 09A560 80099960 AFB1001C */ sw $s1, 0x1c($sp) -/* 09A564 80099964 00A08825 */ move $s1, $a1 -/* 09A568 80099968 AFB20020 */ sw $s2, 0x20($sp) -/* 09A56C 8009996C AFB00018 */ sw $s0, 0x18($sp) -/* 09A570 80099970 0C026449 */ jal segmented_to_virtual_dupe -/* 09A574 80099974 AFA60030 */ sw $a2, 0x30($sp) -/* 09A578 80099978 8C4E0004 */ lw $t6, 4($v0) -/* 09A57C 8009997C 00408025 */ move $s0, $v0 -/* 09A580 80099980 8FAF0030 */ lw $t7, 0x30($sp) -/* 09A584 80099984 11C00034 */ beqz $t6, .L80099A58 -/* 09A588 80099988 01C02025 */ move $a0, $t6 -/* 09A58C 8009998C 000FC400 */ sll $t8, $t7, 0x10 -/* 09A590 80099990 06210003 */ bgez $s1, .L800999A0 -/* 09A594 80099994 0011C843 */ sra $t9, $s1, 1 -/* 09A598 80099998 26210001 */ addiu $at, $s1, 1 -/* 09A59C 8009999C 0001C843 */ sra $t9, $at, 1 -.L800999A0: -/* 09A5A0 800999A0 001943C0 */ sll $t0, $t9, 0xf -/* 09A5A4 800999A4 03084821 */ addu $t1, $t8, $t0 -/* 09A5A8 800999A8 06210004 */ bgez $s1, .L800999BC -/* 09A5AC 800999AC 322A0001 */ andi $t2, $s1, 1 -/* 09A5B0 800999B0 11400002 */ beqz $t2, .L800999BC -/* 09A5B4 800999B4 00000000 */ nop -/* 09A5B8 800999B8 254AFFFE */ addiu $t2, $t2, -2 -.L800999BC: -/* 09A5BC 800999BC 000A5B40 */ sll $t3, $t2, 0xd -/* 09A5C0 800999C0 012B6021 */ addu $t4, $t1, $t3 -/* 09A5C4 800999C4 3C0E802C */ lui $t6, %hi(D_802BFB80) # $t6, 0x802c -/* 09A5C8 800999C8 25CEFB80 */ addiu $t6, %lo(D_802BFB80) # addiu $t6, $t6, -0x480 -/* 09A5CC 800999CC 258D4000 */ addiu $t5, $t4, 0x4000 -/* 09A5D0 800999D0 3C118019 */ lui $s1, %hi(D_8018D9B4) # $s1, 0x8019 -/* 09A5D4 800999D4 2631D9B4 */ addiu $s1, %lo(D_8018D9B4) # addiu $s1, $s1, -0x264c -/* 09A5D8 800999D8 01AE9021 */ addu $s2, $t5, $t6 -/* 09A5DC 800999DC 96020010 */ lhu $v0, 0x10($s0) -.L800999E0: -/* 09A5E0 800999E0 24051400 */ li $a1, 5120 -/* 09A5E4 800999E4 10400003 */ beqz $v0, .L800999F4 -/* 09A5E8 800999E8 00000000 */ nop -/* 09A5EC 800999EC 10000001 */ b .L800999F4 -/* 09A5F0 800999F0 3045FFFF */ andi $a1, $v0, 0xffff -.L800999F4: -/* 09A5F4 800999F4 00A01025 */ move $v0, $a1 -/* 09A5F8 800999F8 04410004 */ bgez $v0, .L80099A0C -/* 09A5FC 800999FC 304F0007 */ andi $t7, $v0, 7 -/* 09A600 80099A00 11E00002 */ beqz $t7, .L80099A0C -/* 09A604 80099A04 00000000 */ nop -/* 09A608 80099A08 25EFFFF8 */ addiu $t7, $t7, -8 -.L80099A0C: -/* 09A60C 80099A0C 11E00009 */ beqz $t7, .L80099A34 -/* 09A610 80099A10 00000000 */ nop -/* 09A614 80099A14 04410003 */ bgez $v0, .L80099A24 -/* 09A618 80099A18 000228C3 */ sra $a1, $v0, 3 -/* 09A61C 80099A1C 24410007 */ addiu $at, $v0, 7 -/* 09A620 80099A20 000128C3 */ sra $a1, $at, 3 -.L80099A24: -/* 09A624 80099A24 0005C8C0 */ sll $t9, $a1, 3 -/* 09A628 80099A28 27250008 */ addiu $a1, $t9, 8 -/* 09A62C 80099A2C 30B8FFFF */ andi $t8, $a1, 0xffff -/* 09A630 80099A30 03002825 */ move $a1, $t8 -.L80099A34: -/* 09A634 80099A34 0C026400 */ jal dma_copy_base_729a30 -/* 09A638 80099A38 8E260000 */ lw $a2, ($s1) -/* 09A63C 80099A3C 8E240000 */ lw $a0, ($s1) -/* 09A640 80099A40 0C010034 */ jal mio0decode -/* 09A644 80099A44 02402825 */ move $a1, $s2 -/* 09A648 80099A48 8E040018 */ lw $a0, 0x18($s0) -/* 09A64C 80099A4C 26100014 */ addiu $s0, $s0, 0x14 -/* 09A650 80099A50 5480FFE3 */ bnel $a0, $zero, .L800999E0 -/* 09A654 80099A54 96020010 */ lhu $v0, 0x10($s0) -.L80099A58: -/* 09A658 80099A58 8FBF0024 */ lw $ra, 0x24($sp) -/* 09A65C 80099A5C 8FB00018 */ lw $s0, 0x18($sp) -/* 09A660 80099A60 8FB1001C */ lw $s1, 0x1c($sp) -/* 09A664 80099A64 8FB20020 */ lw $s2, 0x20($sp) -/* 09A668 80099A68 03E00008 */ jr $ra -/* 09A66C 80099A6C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/code_80091750/func_80099EC4.s b/asm/non_matchings/code_80091750/func_80099EC4.s index bcf1a90c9..df6081783 100644 --- a/asm/non_matchings/code_80091750/func_80099EC4.s +++ b/asm/non_matchings/code_80091750/func_80099EC4.s @@ -242,77 +242,3 @@ glabel func_80099EC4 /* 09AE2C 8009A22C 8FBE0048 */ lw $fp, 0x48($sp) /* 09AE30 8009A230 03E00008 */ jr $ra /* 09AE34 8009A234 27BD0090 */ addiu $sp, $sp, 0x90 - -/* 09AE38 8009A238 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 09AE3C 8009A23C AFBF0014 */ sw $ra, 0x14($sp) -/* 09AE40 8009A240 8C980004 */ lw $t8, 4($a0) -/* 09AE44 8009A244 3C0F8019 */ lui $t7, %hi(D_8018E118) # $t7, 0x8019 -/* 09AE48 8009A248 25EFE118 */ addiu $t7, %lo(D_8018E118) # addiu $t7, $t7, -0x1ee8 -/* 09AE4C 8009A24C AFB80024 */ sw $t8, 0x24($sp) -/* 09AE50 8009A250 94870010 */ lhu $a3, 0x10($a0) -/* 09AE54 8009A254 000570C0 */ sll $t6, $a1, 3 -/* 09AE58 8009A258 01CF1021 */ addu $v0, $t6, $t7 -/* 09AE5C 8009A25C 8C430004 */ lw $v1, 4($v0) -/* 09AE60 8009A260 04E10004 */ bgez $a3, .L8009A274 -/* 09AE64 8009A264 30F90007 */ andi $t9, $a3, 7 -/* 09AE68 8009A268 13200002 */ beqz $t9, .L8009A274 -/* 09AE6C 8009A26C 00000000 */ nop -/* 09AE70 8009A270 2739FFF8 */ addiu $t9, $t9, -8 -.L8009A274: -/* 09AE74 8009A274 13200007 */ beqz $t9, .L8009A294 -/* 09AE78 8009A278 8FA40024 */ lw $a0, 0x24($sp) -/* 09AE7C 8009A27C 04E10003 */ bgez $a3, .L8009A28C -/* 09AE80 8009A280 000740C3 */ sra $t0, $a3, 3 -/* 09AE84 8009A284 24E10007 */ addiu $at, $a3, 7 -/* 09AE88 8009A288 000140C3 */ sra $t0, $at, 3 -.L8009A28C: -/* 09AE8C 8009A28C 000848C0 */ sll $t1, $t0, 3 -/* 09AE90 8009A290 25270008 */ addiu $a3, $t1, 8 -.L8009A294: -/* 09AE94 8009A294 3C068019 */ lui $a2, %hi(D_8018D9B4) # $a2, 0x8019 -/* 09AE98 8009A298 8CC6D9B4 */ lw $a2, %lo(D_8018D9B4)($a2) -/* 09AE9C 8009A29C 00E02825 */ move $a1, $a3 -/* 09AEA0 8009A2A0 AFA2001C */ sw $v0, 0x1c($sp) -/* 09AEA4 8009A2A4 0C026422 */ jal dma_copy_base_7fa3c0 -/* 09AEA8 8009A2A8 AFA30028 */ sw $v1, 0x28($sp) -/* 09AEAC 8009A2AC 8FA30028 */ lw $v1, 0x28($sp) -/* 09AEB0 8009A2B0 3C0B8019 */ lui $t3, %hi(D_8018D9B0) # $t3, 0x8019 -/* 09AEB4 8009A2B4 8D6BD9B0 */ lw $t3, %lo(D_8018D9B0)($t3) -/* 09AEB8 8009A2B8 3C048019 */ lui $a0, %hi(D_8018D9B4) # $a0, 0x8019 -/* 09AEBC 8009A2BC 3C058019 */ lui $a1, %hi(D_8018D9B8) # $a1, 0x8019 -/* 09AEC0 8009A2C0 00035040 */ sll $t2, $v1, 1 -/* 09AEC4 8009A2C4 8CA5D9B8 */ lw $a1, %lo(D_8018D9B8)($a1) -/* 09AEC8 8009A2C8 8C84D9B4 */ lw $a0, %lo(D_8018D9B4)($a0) -/* 09AECC 8009A2CC 24070001 */ li $a3, 1 -/* 09AED0 8009A2D0 0C010174 */ jal tkmk00decode -/* 09AED4 8009A2D4 014B3021 */ addu $a2, $t2, $t3 -/* 09AED8 8009A2D8 8FBF0014 */ lw $ra, 0x14($sp) -/* 09AEDC 8009A2DC 8FA2001C */ lw $v0, 0x1c($sp) -/* 09AEE0 8009A2E0 8FAC0024 */ lw $t4, 0x24($sp) -/* 09AEE4 8009A2E4 27BD0030 */ addiu $sp, $sp, 0x30 -/* 09AEE8 8009A2E8 03E00008 */ jr $ra -/* 09AEEC 8009A2EC AC4C0000 */ sw $t4, ($v0) - -/* 09AEF0 8009A2F0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 09AEF4 8009A2F4 AFBF001C */ sw $ra, 0x1c($sp) -/* 09AEF8 8009A2F8 0C026455 */ jal segmented_to_virtual_dupe_2 -/* 09AEFC 8009A2FC AFB00018 */ sw $s0, 0x18($sp) -/* 09AF00 8009A300 8C440000 */ lw $a0, ($v0) -/* 09AF04 8009A304 00408025 */ move $s0, $v0 -/* 09AF08 8009A308 5080000A */ beql $a0, $zero, .L8009A334 -/* 09AF0C 8009A30C 8FBF001C */ lw $ra, 0x1c($sp) -.L8009A310: -/* 09AF10 8009A310 50800008 */ beql $a0, $zero, .L8009A334 -/* 09AF14 8009A314 8FBF001C */ lw $ra, 0x1c($sp) -/* 09AF18 8009A318 0C0265AF */ jal func_800996BC -/* 09AF1C 8009A31C 00002825 */ move $a1, $zero -/* 09AF20 8009A320 8E040008 */ lw $a0, 8($s0) -/* 09AF24 8009A324 26100008 */ addiu $s0, $s0, 8 -/* 09AF28 8009A328 1480FFF9 */ bnez $a0, .L8009A310 -/* 09AF2C 8009A32C 00000000 */ nop -/* 09AF30 8009A330 8FBF001C */ lw $ra, 0x1c($sp) -.L8009A334: -/* 09AF34 8009A334 8FB00018 */ lw $s0, 0x18($sp) -/* 09AF38 8009A338 27BD0020 */ addiu $sp, $sp, 0x20 -/* 09AF3C 8009A33C 03E00008 */ jr $ra -/* 09AF40 8009A340 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_8009C708.s b/asm/non_matchings/code_80091750/func_8009C708.s deleted file mode 100644 index cb7536fe2..000000000 --- a/asm/non_matchings/code_80091750/func_8009C708.s +++ /dev/null @@ -1,143 +0,0 @@ -glabel func_8009C708 -/* 09D308 8009C708 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 09D30C 8009C70C AFBF005C */ sw $ra, 0x5c($sp) -/* 09D310 8009C710 AFBE0058 */ sw $fp, 0x58($sp) -/* 09D314 8009C714 AFB70054 */ sw $s7, 0x54($sp) -/* 09D318 8009C718 AFB60050 */ sw $s6, 0x50($sp) -/* 09D31C 8009C71C AFB5004C */ sw $s5, 0x4c($sp) -/* 09D320 8009C720 AFB40048 */ sw $s4, 0x48($sp) -/* 09D324 8009C724 AFB30044 */ sw $s3, 0x44($sp) -/* 09D328 8009C728 AFB20040 */ sw $s2, 0x40($sp) -/* 09D32C 8009C72C AFB1003C */ sw $s1, 0x3c($sp) -/* 09D330 8009C730 AFB00038 */ sw $s0, 0x38($sp) -/* 09D334 8009C734 AFA60068 */ sw $a2, 0x68($sp) -/* 09D338 8009C738 AFA7006C */ sw $a3, 0x6c($sp) -/* 09D33C 8009C73C 8CAF0004 */ lw $t7, 4($a1) -/* 09D340 8009C740 8CAE0000 */ lw $t6, ($a1) -/* 09D344 8009C744 00808025 */ move $s0, $a0 -/* 09D348 8009C748 000FC0C0 */ sll $t8, $t7, 3 -/* 09D34C 8009C74C 01D8C821 */ addu $t9, $t6, $t8 -/* 09D350 8009C750 8F240000 */ lw $a0, ($t9) -/* 09D354 8009C754 0C026449 */ jal segmented_to_virtual_dupe -/* 09D358 8009C758 AFA50064 */ sw $a1, 0x64($sp) -/* 09D35C 8009C75C 8C490004 */ lw $t1, 4($v0) -/* 09D360 8009C760 00408825 */ move $s1, $v0 -/* 09D364 8009C764 241E0003 */ li $fp, 3 -/* 09D368 8009C768 1120005E */ beqz $t1, .L8009C8E4 -/* 09D36C 8009C76C 24170002 */ li $s7, 2 -/* 09D370 8009C770 3C150200 */ lui $s5, %hi(D_02007728) # $s5, 0x200 -/* 09D374 8009C774 26B57728 */ addiu $s5, %lo(D_02007728) # addiu $s5, $s5, 0x7728 -/* 09D378 8009C778 24160001 */ li $s6, 1 -/* 09D37C 8009C77C 8FB40070 */ lw $s4, 0x70($sp) -/* 09D380 8009C780 8FB30074 */ lw $s3, 0x74($sp) -/* 09D384 8009C784 3C120600 */ lui $s2, 0x600 -/* 09D388 8009C788 86220000 */ lh $v0, ($s1) -.L8009C78C: -/* 09D38C 8009C78C 3C0A0200 */ lui $t2, %hi(D_02007708) # $t2, 0x200 -/* 09D390 8009C790 00004025 */ move $t0, $zero -/* 09D394 8009C794 1040000C */ beqz $v0, .L8009C7C8 -/* 09D398 8009C798 254A7708 */ addiu $t2, %lo(D_02007708) # addiu $t2, $t2, 0x7708 -/* 09D39C 8009C79C 50560010 */ beql $v0, $s6, .L8009C7E0 -/* 09D3A0 8009C7A0 02001025 */ move $v0, $s0 -/* 09D3A4 8009C7A4 10570012 */ beq $v0, $s7, .L8009C7F0 -/* 09D3A8 8009C7A8 3C0B0200 */ lui $t3, %hi(D_02007748) # $t3, 0x200 -/* 09D3AC 8009C7AC 105E0016 */ beq $v0, $fp, .L8009C808 -/* 09D3B0 8009C7B0 3C0C0200 */ lui $t4, %hi(D_02007768) # $t4, 0x200 -/* 09D3B4 8009C7B4 02001025 */ move $v0, $s0 -/* 09D3B8 8009C7B8 AC520000 */ sw $s2, ($v0) -/* 09D3BC 8009C7BC AC550004 */ sw $s5, 4($v0) -/* 09D3C0 8009C7C0 10000017 */ b .L8009C820 -/* 09D3C4 8009C7C4 26100008 */ addiu $s0, $s0, 8 -.L8009C7C8: -/* 09D3C8 8009C7C8 02001025 */ move $v0, $s0 -/* 09D3CC 8009C7CC AC520000 */ sw $s2, ($v0) -/* 09D3D0 8009C7D0 AC4A0004 */ sw $t2, 4($v0) -/* 09D3D4 8009C7D4 10000012 */ b .L8009C820 -/* 09D3D8 8009C7D8 26100008 */ addiu $s0, $s0, 8 -/* 09D3DC 8009C7DC 02001025 */ move $v0, $s0 -.L8009C7E0: -/* 09D3E0 8009C7E0 AC520000 */ sw $s2, ($v0) -/* 09D3E4 8009C7E4 AC550004 */ sw $s5, 4($v0) -/* 09D3E8 8009C7E8 1000000D */ b .L8009C820 -/* 09D3EC 8009C7EC 26100008 */ addiu $s0, $s0, 8 -.L8009C7F0: -/* 09D3F0 8009C7F0 02001025 */ move $v0, $s0 -/* 09D3F4 8009C7F4 256B7748 */ addiu $t3, %lo(D_02007748) # addiu $t3, $t3, 0x7748 -/* 09D3F8 8009C7F8 AC4B0004 */ sw $t3, 4($v0) -/* 09D3FC 8009C7FC AC520000 */ sw $s2, ($v0) -/* 09D400 8009C800 10000007 */ b .L8009C820 -/* 09D404 8009C804 26100008 */ addiu $s0, $s0, 8 -.L8009C808: -/* 09D408 8009C808 02001025 */ move $v0, $s0 -/* 09D40C 8009C80C 258C7768 */ addiu $t4, %lo(D_02007768) # addiu $t4, $t4, 0x7768 -/* 09D410 8009C810 AC4C0004 */ sw $t4, 4($v0) -/* 09D414 8009C814 AC520000 */ sw $s2, ($v0) -/* 09D418 8009C818 26100008 */ addiu $s0, $s0, 8 -/* 09D41C 8009C81C 03C04025 */ move $t0, $fp -.L8009C820: -/* 09D420 8009C820 0660002C */ bltz $s3, .L8009C8D4 -/* 09D424 8009C824 02002025 */ move $a0, $s0 -/* 09D428 8009C828 96220008 */ lhu $v0, 8($s1) -/* 09D42C 8009C82C 8FAE0068 */ lw $t6, 0x68($sp) -/* 09D430 8009C830 8FA9006C */ lw $t1, 0x6c($sp) -/* 09D434 8009C834 AFA20010 */ sw $v0, 0x10($sp) -/* 09D438 8009C838 9623000A */ lhu $v1, 0xa($s1) -/* 09D43C 8009C83C 8FAB0064 */ lw $t3, 0x64($sp) -/* 09D440 8009C840 00082E00 */ sll $a1, $t0, 0x18 -/* 09D444 8009C844 AFA30014 */ sw $v1, 0x14($sp) -/* 09D448 8009C848 962F000C */ lhu $t7, 0xc($s1) -/* 09D44C 8009C84C 00056E03 */ sra $t5, $a1, 0x18 -/* 09D450 8009C850 01A02825 */ move $a1, $t5 -/* 09D454 8009C854 01EEC021 */ addu $t8, $t7, $t6 -/* 09D458 8009C858 AFB80018 */ sw $t8, 0x18($sp) -/* 09D45C 8009C85C 9639000E */ lhu $t9, 0xe($s1) -/* 09D460 8009C860 00003025 */ move $a2, $zero -/* 09D464 8009C864 00003825 */ move $a3, $zero -/* 09D468 8009C868 03295021 */ addu $t2, $t9, $t1 -/* 09D46C 8009C86C AFAA001C */ sw $t2, 0x1c($sp) -/* 09D470 8009C870 8D6C0014 */ lw $t4, 0x14($t3) -/* 09D474 8009C874 AFB3002C */ sw $s3, 0x2c($sp) -/* 09D478 8009C878 AFA20024 */ sw $v0, 0x24($sp) -/* 09D47C 8009C87C 000C6C00 */ sll $t5, $t4, 0x10 -/* 09D480 8009C880 06810003 */ bgez $s4, .L8009C890 -/* 09D484 8009C884 00147843 */ sra $t7, $s4, 1 -/* 09D488 8009C888 26810001 */ addiu $at, $s4, 1 -/* 09D48C 8009C88C 00017843 */ sra $t7, $at, 1 -.L8009C890: -/* 09D490 8009C890 000F73C0 */ sll $t6, $t7, 0xf -/* 09D494 8009C894 01AEC021 */ addu $t8, $t5, $t6 -/* 09D498 8009C898 06810004 */ bgez $s4, .L8009C8AC -/* 09D49C 8009C89C 32990001 */ andi $t9, $s4, 1 -/* 09D4A0 8009C8A0 13200002 */ beqz $t9, .L8009C8AC -/* 09D4A4 8009C8A4 00000000 */ nop -/* 09D4A8 8009C8A8 2739FFFE */ addiu $t9, $t9, -2 -.L8009C8AC: -/* 09D4AC 8009C8AC 00194B40 */ sll $t1, $t9, 0xd -/* 09D4B0 8009C8B0 03095021 */ addu $t2, $t8, $t1 -/* 09D4B4 8009C8B4 3C0C802C */ lui $t4, %hi(D_802BFB80) # $t4, 0x802c -/* 09D4B8 8009C8B8 258CFB80 */ addiu $t4, %lo(D_802BFB80) # addiu $t4, $t4, -0x480 -/* 09D4BC 8009C8BC 254B4000 */ addiu $t3, $t2, 0x4000 -/* 09D4C0 8009C8C0 016C7821 */ addu $t7, $t3, $t4 -/* 09D4C4 8009C8C4 AFAF0020 */ sw $t7, 0x20($sp) -/* 09D4C8 8009C8C8 0C025F96 */ jal func_80097E58 -/* 09D4CC 8009C8CC AFA30028 */ sw $v1, 0x28($sp) -/* 09D4D0 8009C8D0 00408025 */ move $s0, $v0 -.L8009C8D4: -/* 09D4D4 8009C8D4 8E2D0018 */ lw $t5, 0x18($s1) -/* 09D4D8 8009C8D8 26310014 */ addiu $s1, $s1, 0x14 -/* 09D4DC 8009C8DC 55A0FFAB */ bnel $t5, $zero, .L8009C78C -/* 09D4E0 8009C8E0 86220000 */ lh $v0, ($s1) -.L8009C8E4: -/* 09D4E4 8009C8E4 8FBF005C */ lw $ra, 0x5c($sp) -/* 09D4E8 8009C8E8 02001025 */ move $v0, $s0 -/* 09D4EC 8009C8EC 8FB00038 */ lw $s0, 0x38($sp) -/* 09D4F0 8009C8F0 8FB1003C */ lw $s1, 0x3c($sp) -/* 09D4F4 8009C8F4 8FB20040 */ lw $s2, 0x40($sp) -/* 09D4F8 8009C8F8 8FB30044 */ lw $s3, 0x44($sp) -/* 09D4FC 8009C8FC 8FB40048 */ lw $s4, 0x48($sp) -/* 09D500 8009C900 8FB5004C */ lw $s5, 0x4c($sp) -/* 09D504 8009C904 8FB60050 */ lw $s6, 0x50($sp) -/* 09D508 8009C908 8FB70054 */ lw $s7, 0x54($sp) -/* 09D50C 8009C90C 8FBE0058 */ lw $fp, 0x58($sp) -/* 09D510 8009C910 03E00008 */ jr $ra -/* 09D514 8009C914 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/non_matchings/code_80091750/func_800A0B80.s b/asm/non_matchings/code_80091750/func_800A0B80.s deleted file mode 100644 index f769c3613..000000000 --- a/asm/non_matchings/code_80091750/func_800A0B80.s +++ /dev/null @@ -1,172 +0,0 @@ -glabel func_800A0B80 -/* 0A1780 800A0B80 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0A1784 800A0B84 3C038015 */ lui $v1, %hi(gDisplayListHead) # $v1, 0x8015 -/* 0A1788 800A0B88 8C630298 */ lw $v1, %lo(gDisplayListHead)($v1) -/* 0A178C 800A0B8C AFBE0038 */ sw $fp, 0x38($sp) -/* 0A1790 800A0B90 AFB70034 */ sw $s7, 0x34($sp) -/* 0A1794 800A0B94 AFB60030 */ sw $s6, 0x30($sp) -/* 0A1798 800A0B98 AFB5002C */ sw $s5, 0x2c($sp) -/* 0A179C 800A0B9C AFB30024 */ sw $s3, 0x24($sp) -/* 0A17A0 800A0BA0 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 0A17A4 800A0BA4 246E0008 */ addiu $t6, $v1, 8 -/* 0A17A8 800A0BA8 AFBF003C */ sw $ra, 0x3c($sp) -/* 0A17AC 800A0BAC AFB40028 */ sw $s4, 0x28($sp) -/* 0A17B0 800A0BB0 AFB20020 */ sw $s2, 0x20($sp) -/* 0A17B4 800A0BB4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0A17B8 800A0BB8 AFB00018 */ sw $s0, 0x18($sp) -/* 0A17BC 800A0BBC AC2E0298 */ sw $t6, %lo(gDisplayListHead)($at) -/* 0A17C0 800A0BC0 3C0FFA00 */ lui $t7, 0xfa00 -/* 0A17C4 800A0BC4 241832FF */ li $t8, 13055 -/* 0A17C8 800A0BC8 3C16800F */ lui $s6, %hi(D_800E86C4) # $s6, 0x800f -/* 0A17CC 800A0BCC 0080B825 */ move $s7, $a0 -/* 0A17D0 800A0BD0 26D686C4 */ addiu $s6, %lo(D_800E86C4) # addiu $s6, $s6, -0x793c -/* 0A17D4 800A0BD4 2413000A */ li $s3, 10 -/* 0A17D8 800A0BD8 0000A825 */ move $s5, $zero -/* 0A17DC 800A0BDC 241E0009 */ li $fp, 9 -/* 0A17E0 800A0BE0 AC780004 */ sw $t8, 4($v1) -/* 0A17E4 800A0BE4 AC6F0000 */ sw $t7, ($v1) -.L800A0BE8: -/* 0A17E8 800A0BE8 82C20000 */ lb $v0, ($s6) -/* 0A17EC 800A0BEC 00158880 */ sll $s1, $s5, 2 -/* 0A17F0 800A0BF0 02358821 */ addu $s1, $s1, $s5 -/* 0A17F4 800A0BF4 10400068 */ beqz $v0, .L800A0D98 -/* 0A17F8 800A0BF8 00408025 */ move $s0, $v0 -/* 0A17FC 800A0BFC 8EF90010 */ lw $t9, 0x10($s7) -/* 0A1800 800A0C00 00118840 */ sll $s1, $s1, 1 -/* 0A1804 800A0C04 2841000A */ slti $at, $v0, 0xa -/* 0A1808 800A0C08 03313021 */ addu $a2, $t9, $s1 -/* 0A180C 800A0C0C 10200008 */ beqz $at, .L800A0C30 -/* 0A1810 800A0C10 24C60001 */ addiu $a2, $a2, 1 -/* 0A1814 800A0C14 26040010 */ addiu $a0, $s0, 0x10 -/* 0A1818 800A0C18 308800FF */ andi $t0, $a0, 0xff -/* 0A181C 800A0C1C 01002025 */ move $a0, $t0 -/* 0A1820 800A0C20 0C028236 */ jal func_800A08D8 -/* 0A1824 800A0C24 24050032 */ li $a1, 50 -/* 0A1828 800A0C28 10000018 */ b .L800A0C8C -/* 0A182C 800A0C2C 82C20000 */ lb $v0, ($s6) -.L800A0C30: -/* 0A1830 800A0C30 0213001A */ div $zero, $s0, $s3 -/* 0A1834 800A0C34 16600002 */ bnez $s3, .L800A0C40 -/* 0A1838 800A0C38 00000000 */ nop -/* 0A183C 800A0C3C 0007000D */ break 7 -.L800A0C40: -/* 0A1840 800A0C40 2401FFFF */ li $at, -1 -/* 0A1844 800A0C44 16610004 */ bne $s3, $at, .L800A0C58 -/* 0A1848 800A0C48 3C018000 */ lui $at, 0x8000 -/* 0A184C 800A0C4C 16010002 */ bne $s0, $at, .L800A0C58 -/* 0A1850 800A0C50 00000000 */ nop -/* 0A1854 800A0C54 0006000D */ break 6 -.L800A0C58: -/* 0A1858 800A0C58 00008010 */ mfhi $s0 -/* 0A185C 800A0C5C 26040010 */ addiu $a0, $s0, 0x10 -/* 0A1860 800A0C60 308900FF */ andi $t1, $a0, 0xff -/* 0A1864 800A0C64 01202025 */ move $a0, $t1 -/* 0A1868 800A0C68 0C028236 */ jal func_800A08D8 -/* 0A186C 800A0C6C 24050035 */ li $a1, 53 -/* 0A1870 800A0C70 8EEA0010 */ lw $t2, 0x10($s7) -/* 0A1874 800A0C74 24040011 */ li $a0, 17 -/* 0A1878 800A0C78 2405002F */ li $a1, 47 -/* 0A187C 800A0C7C 01513021 */ addu $a2, $t2, $s1 -/* 0A1880 800A0C80 0C028236 */ jal func_800A08D8 -/* 0A1884 800A0C84 24C60001 */ addiu $a2, $a2, 1 -/* 0A1888 800A0C88 82C20000 */ lb $v0, ($s6) -.L800A0C8C: -/* 0A188C 800A0C8C 3C0D8019 */ lui $t5, %hi(pfsState+0x1FC) # 0x8019 -/* 0A1890 800A0C90 8EEB0010 */ lw $t3, 0x10($s7) -/* 0A1894 800A0C94 00026080 */ sll $t4, $v0, 2 -/* 0A1898 800A0C98 01AC6821 */ addu $t5, $t5, $t4 -/* 0A189C 800A0C9C 8DADEB34 */ lw $t5, %lo(pfsState+0x1FC)($t5) # -0x14cc($t5) -/* 0A18A0 800A0CA0 01719021 */ addu $s2, $t3, $s1 -/* 0A18A4 800A0CA4 26520001 */ addiu $s2, $s2, 1 -/* 0A18A8 800A0CA8 15A0003B */ bnez $t5, .L800A0D98 -/* 0A18AC 800A0CAC 2406004F */ li $a2, 79 -/* 0A18B0 800A0CB0 00027140 */ sll $t6, $v0, 5 -/* 0A18B4 800A0CB4 3C188019 */ lui $t8, %hi(pfsState) # $t8, 0x8019 -/* 0A18B8 800A0CB8 2718E938 */ addiu $t8, %lo(pfsState) # addiu $t8, $t8, -0x16c8 -/* 0A18BC 800A0CBC 25CFFFE0 */ addiu $t7, $t6, -0x20 -/* 0A18C0 800A0CC0 01F8A021 */ addu $s4, $t7, $t8 -/* 0A18C4 800A0CC4 2684000E */ addiu $a0, $s4, 0xe -/* 0A18C8 800A0CC8 24050010 */ li $a1, 16 -/* 0A18CC 800A0CCC 0C028257 */ jal func_800A095C -/* 0A18D0 800A0CD0 02403825 */ move $a3, $s2 -/* 0A18D4 800A0CD4 8299000A */ lb $t9, 0xa($s4) -/* 0A18D8 800A0CD8 00408025 */ move $s0, $v0 -/* 0A18DC 800A0CDC 001088C0 */ sll $s1, $s0, 3 -/* 0A18E0 800A0CE0 5320000A */ beql $t9, $zero, .L800A0D0C -/* 0A18E4 800A0CE4 8E900000 */ lw $s0, ($s4) -/* 0A18E8 800A0CE8 2404003C */ li $a0, 60 -/* 0A18EC 800A0CEC 2625004F */ addiu $a1, $s1, 0x4f -/* 0A18F0 800A0CF0 0C028236 */ jal func_800A08D8 -/* 0A18F4 800A0CF4 02403025 */ move $a2, $s2 -/* 0A18F8 800A0CF8 9284000A */ lbu $a0, 0xa($s4) -/* 0A18FC 800A0CFC 26250057 */ addiu $a1, $s1, 0x57 -/* 0A1900 800A0D00 0C028236 */ jal func_800A08D8 -/* 0A1904 800A0D04 02403025 */ move $a2, $s2 -/* 0A1908 800A0D08 8E900000 */ lw $s0, ($s4) -.L800A0D0C: -/* 0A190C 800A0D0C 24110010 */ li $s1, 16 -/* 0A1910 800A0D10 261000FF */ addiu $s0, $s0, 0xff -/* 0A1914 800A0D14 00104202 */ srl $t0, $s0, 8 -/* 0A1918 800A0D18 01008025 */ move $s0, $t0 -.L800A0D1C: -/* 0A191C 800A0D1C 0213001A */ div $zero, $s0, $s3 -/* 0A1920 800A0D20 00002010 */ mfhi $a0 -/* 0A1924 800A0D24 24840010 */ addiu $a0, $a0, 0x10 -/* 0A1928 800A0D28 308900FF */ andi $t1, $a0, 0xff -/* 0A192C 800A0D2C 16600002 */ bnez $s3, .L800A0D38 -/* 0A1930 800A0D30 00000000 */ nop -/* 0A1934 800A0D34 0007000D */ break 7 -.L800A0D38: -/* 0A1938 800A0D38 2401FFFF */ li $at, -1 -/* 0A193C 800A0D3C 16610004 */ bne $s3, $at, .L800A0D50 -/* 0A1940 800A0D40 3C018000 */ lui $at, 0x8000 -/* 0A1944 800A0D44 16010002 */ bne $s0, $at, .L800A0D50 -/* 0A1948 800A0D48 00000000 */ nop -/* 0A194C 800A0D4C 0006000D */ break 6 -.L800A0D50: -/* 0A1950 800A0D50 01202025 */ move $a0, $t1 -/* 0A1954 800A0D54 262500FD */ addiu $a1, $s1, 0xfd -/* 0A1958 800A0D58 0C028236 */ jal func_800A08D8 -/* 0A195C 800A0D5C 02403025 */ move $a2, $s2 -/* 0A1960 800A0D60 0213001A */ div $zero, $s0, $s3 -/* 0A1964 800A0D64 16600002 */ bnez $s3, .L800A0D70 -/* 0A1968 800A0D68 00000000 */ nop -/* 0A196C 800A0D6C 0007000D */ break 7 -.L800A0D70: -/* 0A1970 800A0D70 2401FFFF */ li $at, -1 -/* 0A1974 800A0D74 16610004 */ bne $s3, $at, .L800A0D88 -/* 0A1978 800A0D78 3C018000 */ lui $at, 0x8000 -/* 0A197C 800A0D7C 16010002 */ bne $s0, $at, .L800A0D88 -/* 0A1980 800A0D80 00000000 */ nop -/* 0A1984 800A0D84 0006000D */ break 6 -.L800A0D88: -/* 0A1988 800A0D88 00008012 */ mflo $s0 -/* 0A198C 800A0D8C 2631FFF8 */ addiu $s1, $s1, -8 -/* 0A1990 800A0D90 1600FFE2 */ bnez $s0, .L800A0D1C -/* 0A1994 800A0D94 00000000 */ nop -.L800A0D98: -/* 0A1998 800A0D98 26B50001 */ addiu $s5, $s5, 1 -/* 0A199C 800A0D9C 16BEFF92 */ bne $s5, $fp, .L800A0BE8 -/* 0A19A0 800A0DA0 26D60001 */ addiu $s6, $s6, 1 -/* 0A19A4 800A0DA4 3C038015 */ lui $v1, %hi(gDisplayListHead) # $v1, 0x8015 -/* 0A19A8 800A0DA8 8C630298 */ lw $v1, %lo(gDisplayListHead)($v1) -/* 0A19AC 800A0DAC 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 0A19B0 800A0DB0 3C0C004F */ lui $t4, (0x004FC3BC >> 16) # lui $t4, 0x4f -/* 0A19B4 800A0DB4 246A0008 */ addiu $t2, $v1, 8 -/* 0A19B8 800A0DB8 AC2A0298 */ sw $t2, %lo(gDisplayListHead)($at) -/* 0A19BC 800A0DBC 358CC3BC */ ori $t4, (0x004FC3BC & 0xFFFF) # ori $t4, $t4, 0xc3bc -/* 0A19C0 800A0DC0 3C0BED00 */ lui $t3, 0xed00 -/* 0A19C4 800A0DC4 AC6B0000 */ sw $t3, ($v1) -/* 0A19C8 800A0DC8 AC6C0004 */ sw $t4, 4($v1) -/* 0A19CC 800A0DCC 8FBF003C */ lw $ra, 0x3c($sp) -/* 0A19D0 800A0DD0 8FBE0038 */ lw $fp, 0x38($sp) -/* 0A19D4 800A0DD4 8FB70034 */ lw $s7, 0x34($sp) -/* 0A19D8 800A0DD8 8FB60030 */ lw $s6, 0x30($sp) -/* 0A19DC 800A0DDC 8FB5002C */ lw $s5, 0x2c($sp) -/* 0A19E0 800A0DE0 8FB40028 */ lw $s4, 0x28($sp) -/* 0A19E4 800A0DE4 8FB30024 */ lw $s3, 0x24($sp) -/* 0A19E8 800A0DE8 8FB20020 */ lw $s2, 0x20($sp) -/* 0A19EC 800A0DEC 8FB1001C */ lw $s1, 0x1c($sp) -/* 0A19F0 800A0DF0 8FB00018 */ lw $s0, 0x18($sp) -/* 0A19F4 800A0DF4 03E00008 */ jr $ra -/* 0A19F8 800A0DF8 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/code_80091750/func_800A54EC.s b/asm/non_matchings/code_80091750/func_800A54EC.s deleted file mode 100644 index c90a54f61..000000000 --- a/asm/non_matchings/code_80091750/func_800A54EC.s +++ /dev/null @@ -1,154 +0,0 @@ -glabel func_800A54EC -/* 0A60EC 800A54EC 3C0B800E */ lui $t3, %hi(gIsGamePaused) # $t3, 0x800e -/* 0A60F0 800A54F0 256BC5FC */ addiu $t3, %lo(gIsGamePaused) # addiu $t3, $t3, -0x3a04 -/* 0A60F4 800A54F4 956E0000 */ lhu $t6, ($t3) -/* 0A60F8 800A54F8 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0A60FC 800A54FC AFBF0024 */ sw $ra, 0x24($sp) -/* 0A6100 800A5500 11C00089 */ beqz $t6, .L800A5728 -/* 0A6104 800A5504 3C0A800E */ lui $t2, %hi(gModeSelection) # $t2, 0x800e -/* 0A6108 800A5508 8D4AC53C */ lw $t2, %lo(gModeSelection)($t2) -/* 0A610C 800A550C 240400C7 */ li $a0, 199 -/* 0A6110 800A5510 0C02ABCC */ jal find_8018D9E0_entry -/* 0A6114 800A5514 AFAA0040 */ sw $t2, 0x40($sp) -/* 0A6118 800A5518 3C088015 */ lui $t0, %hi(gDisplayListHead) # $t0, 0x8015 -/* 0A611C 800A551C 25080298 */ addiu $t0, %lo(gDisplayListHead) # addiu $t0, $t0, 0x298 -/* 0A6120 800A5520 8D030000 */ lw $v1, ($t0) -/* 0A6124 800A5524 3C19802C */ lui $t9, %hi(D_802B8880) # $t9, 0x802c -/* 0A6128 800A5528 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 0A612C 800A552C 246F0008 */ addiu $t7, $v1, 8 -/* 0A6130 800A5530 8FAA0040 */ lw $t2, 0x40($sp) -/* 0A6134 800A5534 AFA20048 */ sw $v0, 0x48($sp) -/* 0A6138 800A5538 AD0F0000 */ sw $t7, ($t0) -/* 0A613C 800A553C 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0A6140 800A5540 27398880 */ addiu $t9, %lo(D_802B8880) # addiu $t9, $t9, -0x7780 -/* 0A6144 800A5544 3C180380 */ lui $t8, (0x03800010 >> 16) # lui $t8, 0x380 -/* 0A6148 800A5548 3C098016 */ lui $t1, %hi(gMatrixEffectCount) # $t1, 0x8016 -/* 0A614C 800A554C 37180010 */ ori $t8, (0x03800010 & 0xFFFF) # ori $t8, $t8, 0x10 -/* 0A6150 800A5550 03216024 */ and $t4, $t9, $at -/* 0A6154 800A5554 25294AF0 */ addiu $t1, %lo(gMatrixEffectCount) # addiu $t1, $t1, 0x4af0 -/* 0A6158 800A5558 AC6C0004 */ sw $t4, 4($v1) -/* 0A615C 800A555C AC780000 */ sw $t8, ($v1) -/* 0A6160 800A5560 852E0000 */ lh $t6, ($t1) -/* 0A6164 800A5564 3C0D8015 */ lui $t5, %hi(gGfxPool) # $t5, 0x8015 -/* 0A6168 800A5568 8DADEF40 */ lw $t5, %lo(gGfxPool)($t5) -/* 0A616C 800A556C 000E7980 */ sll $t7, $t6, 6 -/* 0A6170 800A5570 3401FAC0 */ li $at, 64192 -/* 0A6174 800A5574 01AF2021 */ addu $a0, $t5, $t7 -/* 0A6178 800A5578 00812021 */ addu $a0, $a0, $at -/* 0A617C 800A557C 3C01C2C8 */ li $at, 0xC2C80000 # -100.000000 -/* 0A6180 800A5580 44812000 */ mtc1 $at, $f4 -/* 0A6184 800A5584 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 0A6188 800A5588 44800000 */ mtc1 $zero, $f0 -/* 0A618C 800A558C 44813000 */ mtc1 $at, $f6 -/* 0A6190 800A5590 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0A6194 800A5594 44814000 */ mtc1 $at, $f8 -/* 0A6198 800A5598 3C06439F */ lui $a2, (0x439F8000 >> 16) # lui $a2, 0x439f -/* 0A619C 800A559C 44050000 */ mfc1 $a1, $f0 -/* 0A61A0 800A55A0 34C68000 */ ori $a2, (0x439F8000 & 0xFFFF) # ori $a2, $a2, 0x8000 -/* 0A61A4 800A55A4 3C07436F */ lui $a3, 0x436f -/* 0A61A8 800A55A8 AFAA0040 */ sw $t2, 0x40($sp) -/* 0A61AC 800A55AC E7A40014 */ swc1 $f4, 0x14($sp) -/* 0A61B0 800A55B0 E7A00010 */ swc1 $f0, 0x10($sp) -/* 0A61B4 800A55B4 E7A60018 */ swc1 $f6, 0x18($sp) -/* 0A61B8 800A55B8 0C0338A9 */ jal guOrtho -/* 0A61BC 800A55BC E7A8001C */ swc1 $f8, 0x1c($sp) -/* 0A61C0 800A55C0 3C088015 */ lui $t0, %hi(gDisplayListHead) # $t0, 0x8015 -/* 0A61C4 800A55C4 25080298 */ addiu $t0, %lo(gDisplayListHead) # addiu $t0, $t0, 0x298 -/* 0A61C8 800A55C8 8D030000 */ lw $v1, ($t0) -/* 0A61CC 800A55CC 3C190103 */ lui $t9, (0x01030040 >> 16) # lui $t9, 0x103 -/* 0A61D0 800A55D0 8FAA0040 */ lw $t2, 0x40($sp) -/* 0A61D4 800A55D4 24780008 */ addiu $t8, $v1, 8 -/* 0A61D8 800A55D8 8FA40048 */ lw $a0, 0x48($sp) -/* 0A61DC 800A55DC 3C098016 */ lui $t1, %hi(gMatrixEffectCount) # $t1, 0x8016 -/* 0A61E0 800A55E0 AD180000 */ sw $t8, ($t0) -/* 0A61E4 800A55E4 37390040 */ ori $t9, (0x01030040 & 0xFFFF) # ori $t9, $t9, 0x40 -/* 0A61E8 800A55E8 25294AF0 */ addiu $t1, %lo(gMatrixEffectCount) # addiu $t1, $t1, 0x4af0 -/* 0A61EC 800A55EC AC790000 */ sw $t9, ($v1) -/* 0A61F0 800A55F0 852E0000 */ lh $t6, ($t1) -/* 0A61F4 800A55F4 3C0C8015 */ lui $t4, %hi(gGfxPool) # $t4, 0x8015 -/* 0A61F8 800A55F8 8D8CEF40 */ lw $t4, %lo(gGfxPool)($t4) -/* 0A61FC 800A55FC 000E6980 */ sll $t5, $t6, 6 -/* 0A6200 800A5600 3401FAC0 */ li $at, 64192 -/* 0A6204 800A5604 018D7821 */ addu $t7, $t4, $t5 -/* 0A6208 800A5608 01E1C021 */ addu $t8, $t7, $at -/* 0A620C 800A560C 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 0A6210 800A5610 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0A6214 800A5614 0301C824 */ and $t9, $t8, $at -/* 0A6218 800A5618 AC790004 */ sw $t9, 4($v1) -/* 0A621C 800A561C 852E0000 */ lh $t6, ($t1) -/* 0A6220 800A5620 3C0B800E */ lui $t3, %hi(gIsGamePaused) # $t3, 0x800e -/* 0A6224 800A5624 256BC5FC */ addiu $t3, %lo(gIsGamePaused) # addiu $t3, $t3, -0x3a04 -/* 0A6228 800A5628 25CC0001 */ addiu $t4, $t6, 1 -/* 0A622C 800A562C 11400018 */ beqz $t2, .L800A5690 -/* 0A6230 800A5630 A52C0000 */ sh $t4, ($t1) -/* 0A6234 800A5634 24010001 */ li $at, 1 -/* 0A6238 800A5638 11410009 */ beq $t2, $at, .L800A5660 -/* 0A623C 800A563C 3C03800F */ lui $v1, %hi(D_800E8538) # 0x800f -/* 0A6240 800A5640 24010002 */ li $at, 2 -/* 0A6244 800A5644 11410008 */ beq $t2, $at, .L800A5668 -/* 0A6248 800A5648 3C0D800E */ lui $t5, %hi(gScreenModeSelection) # $t5, 0x800e -/* 0A624C 800A564C 24010003 */ li $at, 3 -/* 0A6250 800A5650 1141001A */ beq $t2, $at, .L800A56BC -/* 0A6254 800A5654 3C0C800E */ lui $t4, %hi(gScreenModeSelection) -/* 0A6258 800A5658 10000021 */ b .L800A56E0 -/* 0A625C 800A565C 8FA3004C */ lw $v1, 0x4c($sp) -.L800A5660: -/* 0A6260 800A5660 1000001F */ b .L800A56E0 -/* 0A6264 800A5664 24638538 */ addiu $v1, $v1, %lo(D_800E8538) # -0x7ac8 -.L800A5668: -/* 0A6268 800A5668 8DAFC530 */ lw $t7, %lo(gScreenModeSelection)($t5) -/* 0A626C 800A566C 95790000 */ lhu $t9, ($t3) -/* 0A6270 800A5670 000FC140 */ sll $t8, $t7, 5 -/* 0A6274 800A5674 001970C0 */ sll $t6, $t9, 3 -/* 0A6278 800A5678 030E6021 */ addu $t4, $t8, $t6 -/* 0A627C 800A567C 3C0F800F */ lui $t7, %hi(D_800E8540) # $t7, 0x800f -/* 0A6280 800A5680 25EF8540 */ addiu $t7, %lo(D_800E8540) # addiu $t7, $t7, -0x7ac0 -/* 0A6284 800A5684 258DFFF8 */ addiu $t5, $t4, -8 -/* 0A6288 800A5688 10000015 */ b .L800A56E0 -/* 0A628C 800A568C 01AF1821 */ addu $v1, $t5, $t7 -.L800A5690: -/* 0A6290 800A5690 3C19800E */ lui $t9, %hi(gScreenModeSelection) # $t9, 0x800e -/* 0A6294 800A5694 8F38C530 */ lw $t8, %lo(gScreenModeSelection)($t9) -/* 0A6298 800A5698 956C0000 */ lhu $t4, ($t3) -/* 0A629C 800A569C 00187140 */ sll $t6, $t8, 5 -/* 0A62A0 800A56A0 000C68C0 */ sll $t5, $t4, 3 -/* 0A62A4 800A56A4 01CD7821 */ addu $t7, $t6, $t5 -/* 0A62A8 800A56A8 3C18800F */ lui $t8, %hi(D_800E85C0) # $t8, 0x800f -/* 0A62AC 800A56AC 271885C0 */ addiu $t8, %lo(D_800E85C0) # addiu $t8, $t8, -0x7a40 -/* 0A62B0 800A56B0 25F9FFF8 */ addiu $t9, $t7, -8 -/* 0A62B4 800A56B4 1000000A */ b .L800A56E0 -/* 0A62B8 800A56B8 03381821 */ addu $v1, $t9, $t8 -.L800A56BC: -/* 0A62BC 800A56BC 8D8EC530 */ lw $t6, %lo(gScreenModeSelection)($t4) -/* 0A62C0 800A56C0 956F0000 */ lhu $t7, ($t3) -/* 0A62C4 800A56C4 000E6940 */ sll $t5, $t6, 5 -/* 0A62C8 800A56C8 000FC8C0 */ sll $t9, $t7, 3 -/* 0A62CC 800A56CC 01B9C021 */ addu $t8, $t5, $t9 -/* 0A62D0 800A56D0 3C0E800F */ lui $t6, %hi(D_800E8600) # $t6, 0x800f -/* 0A62D4 800A56D4 25CE8600 */ addiu $t6, %lo(D_800E8600) # addiu $t6, $t6, -0x7a00 -/* 0A62D8 800A56D8 270CFFF8 */ addiu $t4, $t8, -8 -/* 0A62DC 800A56DC 018E1821 */ addu $v1, $t4, $t6 -.L800A56E0: -/* 0A62E0 800A56E0 846F0000 */ lh $t7, ($v1) -/* 0A62E4 800A56E4 3C02800F */ lui $v0, %hi(D_800F0B50) # 0x800f -/* 0A62E8 800A56E8 004A1021 */ addu $v0, $v0, $t2 -/* 0A62EC 800A56EC 25EDFFF8 */ addiu $t5, $t7, -8 -/* 0A62F0 800A56F0 A7AD0050 */ sh $t5, 0x50($sp) -/* 0A62F4 800A56F4 80420B50 */ lb $v0, %lo(D_800F0B50)($v0) # 0xb50($v0) -/* 0A62F8 800A56F8 8C980004 */ lw $t8, 4($a0) -/* 0A62FC 800A56FC 84790002 */ lh $t9, 2($v1) -/* 0A6300 800A5700 27A50050 */ addiu $a1, $sp, 0x50 -/* 0A6304 800A5704 03026023 */ subu $t4, $t8, $v0 -/* 0A6308 800A5708 000C7080 */ sll $t6, $t4, 2 -/* 0A630C 800A570C 01CC7023 */ subu $t6, $t6, $t4 -/* 0A6310 800A5710 000E7080 */ sll $t6, $t6, 2 -/* 0A6314 800A5714 01CC7021 */ addu $t6, $t6, $t4 -/* 0A6318 800A5718 032E7821 */ addu $t7, $t9, $t6 -/* 0A631C 800A571C 25EDFFF8 */ addiu $t5, $t7, -8 -/* 0A6320 800A5720 0C0299AA */ jal func_800A66A8 -/* 0A6324 800A5724 A7AD0052 */ sh $t5, 0x52($sp) -.L800A5728: -/* 0A6328 800A5728 8FBF0024 */ lw $ra, 0x24($sp) -/* 0A632C 800A572C 27BD0058 */ addiu $sp, $sp, 0x58 -/* 0A6330 800A5730 03E00008 */ jr $ra -/* 0A6334 800A5734 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_800A5738.s b/asm/non_matchings/code_80091750/func_800A5738.s deleted file mode 100644 index 098b370bc..000000000 --- a/asm/non_matchings/code_80091750/func_800A5738.s +++ /dev/null @@ -1,678 +0,0 @@ -.section .rodata - -glabel D_800F0C6C -.asciiz "'" -.balign 4 - -glabel D_800F0C70 -.asciiz "\"" -.balign 4 - -glabel D_800F0C74 -.asciiz "'" -.balign 4 - -glabel D_800F0C78 -.asciiz "\"" -.balign 4 - -.section .late_rodata - -glabel D_800F1DD8 -.float 0.8 - -glabel jpt_800F1DDC -.word L800A5940, L800A5F90, L800A5F90, L800A5F90 -.word L800A5F90, L800A5F90, L800A5F90, L800A5F90 -.word L800A5F90, L800A5F90, L800A5940, L800A5940 -.word L800A5940, L800A5940, L800A5940, L800A5940 -.word L800A5F90, L800A5F90, L800A5F90, L800A5F90 -.word L800A5BA8, L800A5BA8, L800A5BA8, L800A5BA8 -.word L800A5BA8, L800A5BA8, L800A5F90, L800A5F90 -.word L800A5F90, L800A5C18, L800A5C18, L800A5DA0 -.word L800A5F90, L800A5F90, L800A5E00, L800A5E00 -.word L800A5F90, L800A5F90, L800A5F90, L800A5ED4 -.word L800A5F34 - -glabel D_800F1E80 -.float 0.8 - -glabel D_800F1E84 -.float 0.8 - -glabel D_800F1E88 -.float 0.8 - -glabel D_800F1E8C -.float 0.8 - -glabel D_800F1E90 -.float 0.8 - -glabel D_800F1E94 -.float 0.8 - -glabel D_800F1E98 -.float 0.8 - -glabel jpt_800F1E9C -.word L800A5FB4, L800A5FB4, L800A5FB4, L800A5FB4 -.word L800A5FB4, L800A5FB4, L800A6014, L800A6014 -.word L800A6014, L800A6014, L800A6014, L800A6014 -.word L800A6014, L800A6014, L800A6014, L800A6014 -.word L800A6014, L800A6014, L800A6014, L800A5FCC -.word L800A5FCC, L800A6014, L800A6014, L800A6014 -.word L800A5FE4, L800A5FE4 - -.section .text - -glabel func_800A5738 -/* 0A6338 800A5738 27BDFF60 */ addiu $sp, $sp, -0xa0 -/* 0A633C 800A573C AFBF0044 */ sw $ra, 0x44($sp) -/* 0A6340 800A5740 AFB30040 */ sw $s3, 0x40($sp) -/* 0A6344 800A5744 AFB2003C */ sw $s2, 0x3c($sp) -/* 0A6348 800A5748 AFB10038 */ sw $s1, 0x38($sp) -/* 0A634C 800A574C AFB00034 */ sw $s0, 0x34($sp) -/* 0A6350 800A5750 F7B40028 */ sdc1 $f20, 0x28($sp) -/* 0A6354 800A5754 8C830004 */ lw $v1, 4($a0) -/* 0A6358 800A5758 00809825 */ move $s3, $a0 -/* 0A635C 800A575C 24010001 */ li $at, 1 -/* 0A6360 800A5760 14600037 */ bnez $v1, .L800A5840 -/* 0A6364 800A5764 3C108015 */ lui $s0, %hi(gDisplayListHead) # 0x8015 -/* 0A6368 800A5768 8C8E001C */ lw $t6, 0x1c($a0) -/* 0A636C 800A576C 3C0F800E */ lui $t7, %hi(gGlobalTimer) # $t7, 0x800e -/* 0A6370 800A5770 29C1001E */ slti $at, $t6, 0x1e -/* 0A6374 800A5774 54200228 */ bnel $at, $zero, .L800A6018 -/* 0A6378 800A5778 8FBF0044 */ lw $ra, 0x44($sp) -/* 0A637C 800A577C 8DEFC54C */ lw $t7, %lo(gGlobalTimer)($t7) -/* 0A6380 800A5780 3C11800E */ lui $s1, %hi(gTextPauseButton) # $s1, 0x800e -/* 0A6384 800A5784 2631775C */ addiu $s1, %lo(gTextPauseButton) # addiu $s1, $s1, 0x775c -/* 0A6388 800A5788 05E10003 */ bgez $t7, .L800A5798 -/* 0A638C 800A578C 000FC103 */ sra $t8, $t7, 4 -/* 0A6390 800A5790 25E1000F */ addiu $at, $t7, 0xf -/* 0A6394 800A5794 0001C103 */ sra $t8, $at, 4 -.L800A5798: -/* 0A6398 800A5798 07010004 */ bgez $t8, .L800A57AC -/* 0A639C 800A579C 33190001 */ andi $t9, $t8, 1 -/* 0A63A0 800A57A0 13200002 */ beqz $t9, .L800A57AC -/* 0A63A4 800A57A4 00000000 */ nop -/* 0A63A8 800A57A8 2739FFFE */ addiu $t9, $t9, -2 -.L800A57AC: -/* 0A63AC 800A57AC 5320021A */ beql $t9, $zero, .L800A6018 -/* 0A63B0 800A57B0 8FBF0044 */ lw $ra, 0x44($sp) -/* 0A63B4 800A57B4 0C024C0D */ jal get_string_width -/* 0A63B8 800A57B8 8E240014 */ lw $a0, 0x14($s1) -/* 0A63BC 800A57BC 44822000 */ mtc1 $v0, $f4 -/* 0A63C0 800A57C0 3C01800F */ lui $at, %hi(D_800F1DD8) # $at, 0x800f -/* 0A63C4 800A57C4 C4341DD8 */ lwc1 $f20, %lo(D_800F1DD8)($at) -/* 0A63C8 800A57C8 468021A0 */ cvt.s.w $f6, $f4 -/* 0A63CC 800A57CC 3C108015 */ lui $s0, %hi(gDisplayListHead) # $s0, 0x8015 -/* 0A63D0 800A57D0 26100298 */ addiu $s0, %lo(gDisplayListHead) # addiu $s0, $s0, 0x298 -/* 0A63D4 800A57D4 24090032 */ li $t1, 50 -/* 0A63D8 800A57D8 240A0096 */ li $t2, 150 -/* 0A63DC 800A57DC AFAA0020 */ sw $t2, 0x20($sp) -/* 0A63E0 800A57E0 46143202 */ mul.s $f8, $f6, $f20 -/* 0A63E4 800A57E4 AFA90010 */ sw $t1, 0x10($sp) -/* 0A63E8 800A57E8 8E040000 */ lw $a0, ($s0) -/* 0A63EC 800A57EC 240500C0 */ li $a1, 192 -/* 0A63F0 800A57F0 24060021 */ li $a2, 33 -/* 0A63F4 800A57F4 AFA00014 */ sw $zero, 0x14($sp) -/* 0A63F8 800A57F8 AFA00018 */ sw $zero, 0x18($sp) -/* 0A63FC 800A57FC 4600428D */ trunc.w.s $f10, $f8 -/* 0A6400 800A5800 AFA0001C */ sw $zero, 0x1c($sp) -/* 0A6404 800A5804 44075000 */ mfc1 $a3, $f10 -/* 0A6408 800A5808 0C02637E */ jal draw_box -/* 0A640C 800A580C 24E700C6 */ addiu $a3, $a3, 0xc6 -/* 0A6410 800A5810 AE020000 */ sw $v0, ($s0) -/* 0A6414 800A5814 0C024C36 */ jal set_text_color -/* 0A6418 800A5818 24040001 */ li $a0, 1 -/* 0A641C 800A581C 240400BF */ li $a0, 191 -/* 0A6420 800A5820 24050030 */ li $a1, 48 -/* 0A6424 800A5824 8E260014 */ lw $a2, 0x14($s1) -/* 0A6428 800A5828 00003825 */ move $a3, $zero -/* 0A642C 800A582C E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6430 800A5830 0C024CC9 */ jal func_80093324 -/* 0A6434 800A5834 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6438 800A5838 100001F7 */ b .L800A6018 -/* 0A643C 800A583C 8FBF0044 */ lw $ra, 0x44($sp) -.L800A5840: -/* 0A6440 800A5840 14610009 */ bne $v1, $at, .L800A5868 -/* 0A6444 800A5844 26100298 */ addiu $s0, $s0, %lo(gDisplayListHead) # 0x298 -/* 0A6448 800A5848 8E71001C */ lw $s1, 0x1c($s3) -/* 0A644C 800A584C 2401008C */ li $at, 140 -/* 0A6450 800A5850 00119200 */ sll $s2, $s1, 8 -/* 0A6454 800A5854 02519023 */ subu $s2, $s2, $s1 -/* 0A6458 800A5858 0241001A */ div $zero, $s2, $at -/* 0A645C 800A585C 00009012 */ mflo $s2 -/* 0A6460 800A5860 10000004 */ b .L800A5874 -/* 0A6464 800A5864 240C00EF */ li $t4, 239 -.L800A5868: -/* 0A6468 800A5868 2411008C */ li $s1, 140 -/* 0A646C 800A586C 241200FF */ li $s2, 255 -/* 0A6470 800A5870 240C00EF */ li $t4, 239 -.L800A5874: -/* 0A6474 800A5874 AFAC0010 */ sw $t4, 0x10($sp) -/* 0A6478 800A5878 8E040000 */ lw $a0, ($s0) -/* 0A647C 800A587C 00002825 */ move $a1, $zero -/* 0A6480 800A5880 00003025 */ move $a2, $zero -/* 0A6484 800A5884 2407013F */ li $a3, 319 -/* 0A6488 800A5888 AFA00014 */ sw $zero, 0x14($sp) -/* 0A648C 800A588C AFA00018 */ sw $zero, 0x18($sp) -/* 0A6490 800A5890 AFA0001C */ sw $zero, 0x1c($sp) -/* 0A6494 800A5894 0C02637E */ jal draw_box -/* 0A6498 800A5898 AFB10020 */ sw $s1, 0x20($sp) -/* 0A649C 800A589C AE020000 */ sw $v0, ($s0) -/* 0A64A0 800A58A0 244D0008 */ addiu $t5, $v0, 8 -/* 0A64A4 800A58A4 AE0D0000 */ sw $t5, ($s0) -/* 0A64A8 800A58A8 3C0EFA00 */ lui $t6, 0xfa00 -/* 0A64AC 800A58AC 324F00FF */ andi $t7, $s2, 0xff -/* 0A64B0 800A58B0 AC4F0004 */ sw $t7, 4($v0) -/* 0A64B4 800A58B4 AC4E0000 */ sw $t6, ($v0) -/* 0A64B8 800A58B8 0C024C36 */ jal set_text_color -/* 0A64BC 800A58BC 24040003 */ li $a0, 3 -/* 0A64C0 800A58C0 3C188019 */ lui $t8, %hi(gCupSelection) # $t8, 0x8019 -/* 0A64C4 800A58C4 3C088019 */ lui $t0, %hi(gCupCourseSelection) # $t0, 0x8019 -/* 0A64C8 800A58C8 8108EE0B */ lb $t0, %lo(gCupCourseSelection)($t0) -/* 0A64CC 800A58CC 8318EE09 */ lb $t8, %lo(gCupSelection)($t8) -/* 0A64D0 800A58D0 3C0B800F */ lui $t3, %hi(gCupCourseOrder) -/* 0A64D4 800A58D4 00084840 */ sll $t1, $t0, 1 -/* 0A64D8 800A58D8 0018C8C0 */ sll $t9, $t8, 3 -/* 0A64DC 800A58DC 03295021 */ addu $t2, $t9, $t1 -/* 0A64E0 800A58E0 016A5821 */ addu $t3, $t3, $t2 -/* 0A64E4 800A58E4 856B2BB4 */ lh $t3, %lo(gCupCourseOrder)($t3) -/* 0A64E8 800A58E8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0A64EC 800A58EC 44810000 */ mtc1 $at, $f0 -/* 0A64F0 800A58F0 3C06800E */ lui $a2, %hi(D_800E7574) -/* 0A64F4 800A58F4 000B6080 */ sll $t4, $t3, 2 -/* 0A64F8 800A58F8 00CC3021 */ addu $a2, $a2, $t4 -/* 0A64FC 800A58FC 8CC67574 */ lw $a2, %lo(D_800E7574)($a2) -/* 0A6500 800A5900 240400A0 */ li $a0, 160 -/* 0A6504 800A5904 24050050 */ li $a1, 80 -/* 0A6508 800A5908 00003825 */ move $a3, $zero -/* 0A650C 800A590C E7A00010 */ swc1 $f0, 0x10($sp) -/* 0A6510 800A5910 0C024DD5 */ jal func_80093754 -/* 0A6514 800A5914 E7A00014 */ swc1 $f0, 0x14($sp) -/* 0A6518 800A5918 8E630004 */ lw $v1, 4($s3) -/* 0A651C 800A591C 246DFFFF */ addiu $t5, $v1, -1 -/* 0A6520 800A5920 2DA10029 */ sltiu $at, $t5, 0x29 -/* 0A6524 800A5924 1020019A */ beqz $at, .L800A5F90 -/* 0A6528 800A5928 000D6880 */ sll $t5, $t5, 2 -/* 0A652C 800A592C 3C01800F */ lui $at, %hi(jpt_800F1DDC) -/* 0A6530 800A5930 002D0821 */ addu $at, $at, $t5 -/* 0A6534 800A5934 8C2D1DDC */ lw $t5, %lo(jpt_800F1DDC)($at) -/* 0A6538 800A5938 01A00008 */ jr $t5 -/* 0A653C 800A593C 00000000 */ nop -glabel L800A5940 -/* 0A6540 800A5940 0C024C36 */ jal set_text_color -/* 0A6544 800A5944 24040002 */ li $a0, 2 -/* 0A6548 800A5948 3C01800F */ lui $at, %hi(D_800F1E80) # $at, 0x800f -/* 0A654C 800A594C C4341E80 */ lwc1 $f20, %lo(D_800F1E80)($at) -/* 0A6550 800A5950 3C12800E */ lui $s2, %hi(D_800E7728) # $s2, 0x800e -/* 0A6554 800A5954 26527728 */ addiu $s2, %lo(D_800E7728) # addiu $s2, $s2, 0x7728 -/* 0A6558 800A5958 8E460000 */ lw $a2, ($s2) -/* 0A655C 800A595C 2404009D */ li $a0, 157 -/* 0A6560 800A5960 24050060 */ li $a1, 96 -/* 0A6564 800A5964 00003825 */ move $a3, $zero -/* 0A6568 800A5968 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A656C 800A596C 0C024DD5 */ jal func_80093754 -/* 0A6570 800A5970 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6574 800A5974 0C02D389 */ jal func_800B4E24 -/* 0A6578 800A5978 00002025 */ move $a0, $zero -/* 0A657C 800A597C 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf -/* 0A6580 800A5980 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0A6584 800A5984 27B00084 */ addiu $s0, $sp, 0x84 -/* 0A6588 800A5988 00412024 */ and $a0, $v0, $at -/* 0A658C 800A598C 00808825 */ move $s1, $a0 -/* 0A6590 800A5990 0C029E3D */ jal get_time_record_minutes -/* 0A6594 800A5994 02002825 */ move $a1, $s0 -/* 0A6598 800A5998 2404007F */ li $a0, 127 -/* 0A659C 800A599C 2405006D */ li $a1, 109 -/* 0A65A0 800A59A0 02003025 */ move $a2, $s0 -/* 0A65A4 800A59A4 00003825 */ move $a3, $zero -/* 0A65A8 800A59A8 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A65AC 800A59AC 0C024E7F */ jal text_draw -/* 0A65B0 800A59B0 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A65B4 800A59B4 3C06800F */ lui $a2, %hi(D_800F0C6C) # $a2, 0x800f -/* 0A65B8 800A59B8 24C60C6C */ addiu $a2, %lo(D_800F0C6C) # addiu $a2, $a2, 0xc6c -/* 0A65BC 800A59BC 2404008E */ li $a0, 142 -/* 0A65C0 800A59C0 2405006D */ li $a1, 109 -/* 0A65C4 800A59C4 00003825 */ move $a3, $zero -/* 0A65C8 800A59C8 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A65CC 800A59CC 0C024CD6 */ jal func_80093358 -/* 0A65D0 800A59D0 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A65D4 800A59D4 02202025 */ move $a0, $s1 -/* 0A65D8 800A59D8 0C029E51 */ jal get_time_record_seconds -/* 0A65DC 800A59DC 02002825 */ move $a1, $s0 -/* 0A65E0 800A59E0 24040098 */ li $a0, 152 -/* 0A65E4 800A59E4 2405006D */ li $a1, 109 -/* 0A65E8 800A59E8 02003025 */ move $a2, $s0 -/* 0A65EC 800A59EC 00003825 */ move $a3, $zero -/* 0A65F0 800A59F0 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A65F4 800A59F4 0C024E7F */ jal text_draw -/* 0A65F8 800A59F8 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A65FC 800A59FC 3C06800F */ lui $a2, %hi(D_800F0C70) # $a2, 0x800f -/* 0A6600 800A5A00 24C60C70 */ addiu $a2, %lo(D_800F0C70) # addiu $a2, $a2, 0xc70 -/* 0A6604 800A5A04 240400A7 */ li $a0, 167 -/* 0A6608 800A5A08 2405006D */ li $a1, 109 -/* 0A660C 800A5A0C 00003825 */ move $a3, $zero -/* 0A6610 800A5A10 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6614 800A5A14 0C024CD6 */ jal func_80093358 -/* 0A6618 800A5A18 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A661C 800A5A1C 02202025 */ move $a0, $s1 -/* 0A6620 800A5A20 0C029E69 */ jal get_time_record_centiseconds -/* 0A6624 800A5A24 02002825 */ move $a1, $s0 -/* 0A6628 800A5A28 240400B3 */ li $a0, 179 -/* 0A662C 800A5A2C 2405006D */ li $a1, 109 -/* 0A6630 800A5A30 02003025 */ move $a2, $s0 -/* 0A6634 800A5A34 00003825 */ move $a3, $zero -/* 0A6638 800A5A38 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A663C 800A5A3C 0C024E7F */ jal text_draw -/* 0A6640 800A5A40 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6644 800A5A44 2404009D */ li $a0, 157 -/* 0A6648 800A5A48 2405007C */ li $a1, 124 -/* 0A664C 800A5A4C 8E460004 */ lw $a2, 4($s2) -/* 0A6650 800A5A50 00003825 */ move $a3, $zero -/* 0A6654 800A5A54 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6658 800A5A58 0C024DD5 */ jal func_80093754 -/* 0A665C 800A5A5C E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6660 800A5A60 0C02D3CB */ jal func_800B4F2C -/* 0A6664 800A5A64 00000000 */ nop -/* 0A6668 800A5A68 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf -/* 0A666C 800A5A6C 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0A6670 800A5A70 00412024 */ and $a0, $v0, $at -/* 0A6674 800A5A74 00808825 */ move $s1, $a0 -/* 0A6678 800A5A78 0C029E3D */ jal get_time_record_minutes -/* 0A667C 800A5A7C 02002825 */ move $a1, $s0 -/* 0A6680 800A5A80 2404007F */ li $a0, 127 -/* 0A6684 800A5A84 24050089 */ li $a1, 137 -/* 0A6688 800A5A88 02003025 */ move $a2, $s0 -/* 0A668C 800A5A8C 00003825 */ move $a3, $zero -/* 0A6690 800A5A90 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6694 800A5A94 0C024E7F */ jal text_draw -/* 0A6698 800A5A98 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A669C 800A5A9C 3C06800F */ lui $a2, %hi(D_800F0C74) # $a2, 0x800f -/* 0A66A0 800A5AA0 24C60C74 */ addiu $a2, %lo(D_800F0C74) # addiu $a2, $a2, 0xc74 -/* 0A66A4 800A5AA4 2404008E */ li $a0, 142 -/* 0A66A8 800A5AA8 24050089 */ li $a1, 137 -/* 0A66AC 800A5AAC 00003825 */ move $a3, $zero -/* 0A66B0 800A5AB0 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A66B4 800A5AB4 0C024CD6 */ jal func_80093358 -/* 0A66B8 800A5AB8 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A66BC 800A5ABC 02202025 */ move $a0, $s1 -/* 0A66C0 800A5AC0 0C029E51 */ jal get_time_record_seconds -/* 0A66C4 800A5AC4 02002825 */ move $a1, $s0 -/* 0A66C8 800A5AC8 24040098 */ li $a0, 152 -/* 0A66CC 800A5ACC 24050089 */ li $a1, 137 -/* 0A66D0 800A5AD0 02003025 */ move $a2, $s0 -/* 0A66D4 800A5AD4 00003825 */ move $a3, $zero -/* 0A66D8 800A5AD8 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A66DC 800A5ADC 0C024E7F */ jal text_draw -/* 0A66E0 800A5AE0 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A66E4 800A5AE4 3C06800F */ lui $a2, %hi(D_800F0C78) # $a2, 0x800f -/* 0A66E8 800A5AE8 24C60C78 */ addiu $a2, %lo(D_800F0C78) # addiu $a2, $a2, 0xc78 -/* 0A66EC 800A5AEC 240400A7 */ li $a0, 167 -/* 0A66F0 800A5AF0 24050089 */ li $a1, 137 -/* 0A66F4 800A5AF4 00003825 */ move $a3, $zero -/* 0A66F8 800A5AF8 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A66FC 800A5AFC 0C024CD6 */ jal func_80093358 -/* 0A6700 800A5B00 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6704 800A5B04 02202025 */ move $a0, $s1 -/* 0A6708 800A5B08 0C029E69 */ jal get_time_record_centiseconds -/* 0A670C 800A5B0C 02002825 */ move $a1, $s0 -/* 0A6710 800A5B10 240400B3 */ li $a0, 179 -/* 0A6714 800A5B14 24050089 */ li $a1, 137 -/* 0A6718 800A5B18 02003025 */ move $a2, $s0 -/* 0A671C 800A5B1C 00003825 */ move $a3, $zero -/* 0A6720 800A5B20 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6724 800A5B24 0C024E7F */ jal text_draw -/* 0A6728 800A5B28 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A672C 800A5B2C 3C013F40 */ li $at, 0x3F400000 # 0.750000 -/* 0A6730 800A5B30 3C02800E */ lui $v0, %hi(gTextPauseButton) # $v0, 0x800e -/* 0A6734 800A5B34 4481A000 */ mtc1 $at, $f20 -/* 0A6738 800A5B38 2442775C */ addiu $v0, %lo(gTextPauseButton) # addiu $v0, $v0, 0x775c -/* 0A673C 800A5B3C 00008825 */ move $s1, $zero -/* 0A6740 800A5B40 00008025 */ move $s0, $zero -/* 0A6744 800A5B44 24120006 */ li $s2, 6 -.L800A5B48: -/* 0A6748 800A5B48 8E640004 */ lw $a0, 4($s3) -/* 0A674C 800A5B4C AFA20050 */ sw $v0, 0x50($sp) -/* 0A6750 800A5B50 02202825 */ move $a1, $s1 -/* 0A6754 800A5B54 24060001 */ li $a2, 1 -/* 0A6758 800A5B58 0C024870 */ jal text_rainbow_effect -/* 0A675C 800A5B5C 2484FFF5 */ addiu $a0, $a0, -0xb -/* 0A6760 800A5B60 3C0E800F */ lui $t6, %hi(D_800E8538 + 2) # $t6, 0x800f -/* 0A6764 800A5B64 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6768 800A5B68 85CE853A */ lh $t6, %lo(D_800E8538 + 2)($t6) -/* 0A676C 800A5B6C 3C04800F */ lui $a0, %hi(D_800E8538) # $a0, 0x800f -/* 0A6770 800A5B70 84848538 */ lh $a0, %lo(D_800E8538)($a0) -/* 0A6774 800A5B74 00003825 */ move $a3, $zero -/* 0A6778 800A5B78 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A677C 800A5B7C E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6780 800A5B80 8C460004 */ lw $a2, 4($v0) -/* 0A6784 800A5B84 0C024CD6 */ jal func_80093358 -/* 0A6788 800A5B88 01D02821 */ addu $a1, $t6, $s0 -/* 0A678C 800A5B8C 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6790 800A5B90 26310001 */ addiu $s1, $s1, 1 -/* 0A6794 800A5B94 2610000D */ addiu $s0, $s0, 0xd -/* 0A6798 800A5B98 1632FFEB */ bne $s1, $s2, .L800A5B48 -/* 0A679C 800A5B9C 24420004 */ addiu $v0, $v0, 4 -/* 0A67A0 800A5BA0 100000FB */ b .L800A5F90 -/* 0A67A4 800A5BA4 8E630004 */ lw $v1, 4($s3) -glabel L800A5BA8 -/* 0A67A8 800A5BA8 0C024C36 */ jal set_text_color -/* 0A67AC 800A5BAC 24040003 */ li $a0, 3 -/* 0A67B0 800A5BB0 8E630004 */ lw $v1, 4($s3) -/* 0A67B4 800A5BB4 3C08800E */ lui $t0, %hi(D_800E798C) # $t0, 0x800e -/* 0A67B8 800A5BB8 2508798C */ addiu $t0, %lo(D_800E798C) # addiu $t0, $t0, 0x798c -/* 0A67BC 800A5BBC 2463FFEB */ addiu $v1, $v1, -0x15 -/* 0A67C0 800A5BC0 000378C0 */ sll $t7, $v1, 3 -/* 0A67C4 800A5BC4 01E37823 */ subu $t7, $t7, $v1 -/* 0A67C8 800A5BC8 000FC080 */ sll $t8, $t7, 2 -/* 0A67CC 800A5BCC 3C01800F */ lui $at, %hi(D_800F1E84) # $at, 0x800f -/* 0A67D0 800A5BD0 C4341E84 */ lwc1 $f20, %lo(D_800F1E84)($at) -/* 0A67D4 800A5BD4 03081021 */ addu $v0, $t8, $t0 -/* 0A67D8 800A5BD8 2410006E */ li $s0, 110 -/* 0A67DC 800A5BDC 241100C9 */ li $s1, 201 -.L800A5BE0: -/* 0A67E0 800A5BE0 2404004D */ li $a0, 77 -/* 0A67E4 800A5BE4 02002825 */ move $a1, $s0 -/* 0A67E8 800A5BE8 8C460000 */ lw $a2, ($v0) -/* 0A67EC 800A5BEC 00003825 */ move $a3, $zero -/* 0A67F0 800A5BF0 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A67F4 800A5BF4 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A67F8 800A5BF8 0C024CC9 */ jal func_80093324 -/* 0A67FC 800A5BFC AFA20050 */ sw $v0, 0x50($sp) -/* 0A6800 800A5C00 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6804 800A5C04 2610000D */ addiu $s0, $s0, 0xd -/* 0A6808 800A5C08 1611FFF5 */ bne $s0, $s1, .L800A5BE0 -/* 0A680C 800A5C0C 24420004 */ addiu $v0, $v0, 4 -/* 0A6810 800A5C10 100000DF */ b .L800A5F90 -/* 0A6814 800A5C14 8E630004 */ lw $v1, 4($s3) -glabel L800A5C18 -/* 0A6818 800A5C18 0C024C36 */ jal set_text_color -/* 0A681C 800A5C1C 24040001 */ li $a0, 1 -/* 0A6820 800A5C20 3C02800E */ lui $v0, %hi(D_800E7A3C) # $v0, 0x800e -/* 0A6824 800A5C24 3C01800F */ lui $at, %hi(D_800F1E88) # $at, 0x800f -/* 0A6828 800A5C28 3C11800E */ lui $s1, %hi(D_800E7A44) # $s1, 0x800e -/* 0A682C 800A5C2C 26317A44 */ addiu $s1, %lo(D_800E7A44) # addiu $s1, $s1, 0x7a44 -/* 0A6830 800A5C30 C4341E88 */ lwc1 $f20, %lo(D_800F1E88)($at) -/* 0A6834 800A5C34 24427A3C */ addiu $v0, %lo(D_800E7A3C) # addiu $v0, $v0, 0x7a3c -/* 0A6838 800A5C38 00008025 */ move $s0, $zero -/* 0A683C 800A5C3C 8E790010 */ lw $t9, 0x10($s3) -.L800A5C40: -/* 0A6840 800A5C40 AFA20050 */ sw $v0, 0x50($sp) -/* 0A6844 800A5C44 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6848 800A5C48 03302821 */ addu $a1, $t9, $s0 -/* 0A684C 800A5C4C 24A5006E */ addiu $a1, $a1, 0x6e -/* 0A6850 800A5C50 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6854 800A5C54 2404005A */ li $a0, 90 -/* 0A6858 800A5C58 8C460000 */ lw $a2, ($v0) -/* 0A685C 800A5C5C 0C024CC9 */ jal func_80093324 -/* 0A6860 800A5C60 00003825 */ move $a3, $zero -/* 0A6864 800A5C64 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6868 800A5C68 2610000D */ addiu $s0, $s0, 0xd -/* 0A686C 800A5C6C 24420004 */ addiu $v0, $v0, 4 -/* 0A6870 800A5C70 0051082B */ sltu $at, $v0, $s1 -/* 0A6874 800A5C74 5420FFF2 */ bnel $at, $zero, .L800A5C40 -/* 0A6878 800A5C78 8E790010 */ lw $t9, 0x10($s3) -/* 0A687C 800A5C7C 3C013F40 */ li $at, 0x3F400000 # 0.750000 -/* 0A6880 800A5C80 3C128019 */ lui $s2, %hi(D_8018EE10) # $s2, 0x8019 -/* 0A6884 800A5C84 4481A000 */ mtc1 $at, $f20 -/* 0A6888 800A5C88 2652EE10 */ addiu $s2, %lo(D_8018EE10) # addiu $s2, $s2, -0x11f0 -/* 0A688C 800A5C8C 00008825 */ move $s1, $zero -/* 0A6890 800A5C90 24100096 */ li $s0, 150 -.L800A5C94: -/* 0A6894 800A5C94 8E640004 */ lw $a0, 4($s3) -/* 0A6898 800A5C98 02202825 */ move $a1, $s1 -/* 0A689C 800A5C9C 24060001 */ li $a2, 1 -/* 0A68A0 800A5CA0 0C024870 */ jal text_rainbow_effect -/* 0A68A4 800A5CA4 2484FFE2 */ addiu $a0, $a0, -0x1e -/* 0A68A8 800A5CA8 26240001 */ addiu $a0, $s1, 1 -/* 0A68AC 800A5CAC AFA40054 */ sw $a0, 0x54($sp) -/* 0A68B0 800A5CB0 0C029E25 */ jal convert_number_to_ascii -/* 0A68B4 800A5CB4 27A5005C */ addiu $a1, $sp, 0x5c -/* 0A68B8 800A5CB8 8E69000C */ lw $t1, 0xc($s3) -/* 0A68BC 800A5CBC 240A005A */ li $t2, 90 -/* 0A68C0 800A5CC0 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A68C4 800A5CC4 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A68C8 800A5CC8 02002825 */ move $a1, $s0 -/* 0A68CC 800A5CCC 27A6005D */ addiu $a2, $sp, 0x5d -/* 0A68D0 800A5CD0 00003825 */ move $a3, $zero -/* 0A68D4 800A5CD4 0C024CC9 */ jal func_80093324 -/* 0A68D8 800A5CD8 01492023 */ subu $a0, $t2, $t1 -/* 0A68DC 800A5CDC 924B0004 */ lbu $t3, 4($s2) -/* 0A68E0 800A5CE0 240F0069 */ li $t7, 105 -/* 0A68E4 800A5CE4 02002825 */ move $a1, $s0 -/* 0A68E8 800A5CE8 1560000D */ bnez $t3, .L800A5D20 -/* 0A68EC 800A5CEC 3C06800E */ lui $a2, %hi(D_800E75C4) -/* 0A68F0 800A5CF0 8E6C000C */ lw $t4, 0xc($s3) -/* 0A68F4 800A5CF4 240D0069 */ li $t5, 105 -/* 0A68F8 800A5CF8 3C06800E */ lui $a2, %hi(D_800E7A44) # $a2, 0x800e -/* 0A68FC 800A5CFC 8CC67A44 */ lw $a2, %lo(D_800E7A44)($a2) -/* 0A6900 800A5D00 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6904 800A5D04 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6908 800A5D08 02002825 */ move $a1, $s0 -/* 0A690C 800A5D0C 00003825 */ move $a3, $zero -/* 0A6910 800A5D10 0C024CC9 */ jal func_80093324 -/* 0A6914 800A5D14 01AC2023 */ subu $a0, $t5, $t4 -/* 0A6918 800A5D18 1000001B */ b .L800A5D88 -/* 0A691C 800A5D1C 8FB10054 */ lw $s1, 0x54($sp) -.L800A5D20: -/* 0A6920 800A5D20 82420005 */ lb $v0, 5($s2) -/* 0A6924 800A5D24 3C0B800F */ lui $t3, %hi(gCupCourseOrder) -/* 0A6928 800A5D28 8E6E000C */ lw $t6, 0xc($s3) -/* 0A692C 800A5D2C E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6930 800A5D30 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6934 800A5D34 00003825 */ move $a3, $zero -/* 0A6938 800A5D38 01EE2023 */ subu $a0, $t7, $t6 -/* 0A693C 800A5D3C 04410003 */ bgez $v0, .L800A5D4C -/* 0A6940 800A5D40 0002C083 */ sra $t8, $v0, 2 -/* 0A6944 800A5D44 24410003 */ addiu $at, $v0, 3 -/* 0A6948 800A5D48 0001C083 */ sra $t8, $at, 2 -.L800A5D4C: -/* 0A694C 800A5D4C 001840C0 */ sll $t0, $t8, 3 -/* 0A6950 800A5D50 04410004 */ bgez $v0, .L800A5D64 -/* 0A6954 800A5D54 30590003 */ andi $t9, $v0, 3 -/* 0A6958 800A5D58 13200002 */ beqz $t9, .L800A5D64 -/* 0A695C 800A5D5C 00000000 */ nop -/* 0A6960 800A5D60 2739FFFC */ addiu $t9, $t9, -4 -.L800A5D64: -/* 0A6964 800A5D64 00195040 */ sll $t2, $t9, 1 -/* 0A6968 800A5D68 010A4821 */ addu $t1, $t0, $t2 -/* 0A696C 800A5D6C 01695821 */ addu $t3, $t3, $t1 -/* 0A6970 800A5D70 856B2BB4 */ lh $t3, %lo(gCupCourseOrder)($t3) -/* 0A6974 800A5D74 000B6880 */ sll $t5, $t3, 2 -/* 0A6978 800A5D78 00CD3021 */ addu $a2, $a2, $t5 -/* 0A697C 800A5D7C 0C024CC9 */ jal func_80093324 -/* 0A6980 800A5D80 8CC675C4 */ lw $a2, %lo(D_800E75C4)($a2) -/* 0A6984 800A5D84 8FB10054 */ lw $s1, 0x54($sp) -.L800A5D88: -/* 0A6988 800A5D88 24010002 */ li $at, 2 -/* 0A698C 800A5D8C 26100014 */ addiu $s0, $s0, 0x14 -/* 0A6990 800A5D90 1621FFC0 */ bne $s1, $at, .L800A5C94 -/* 0A6994 800A5D94 26520080 */ addiu $s2, $s2, 0x80 -/* 0A6998 800A5D98 1000007D */ b .L800A5F90 -/* 0A699C 800A5D9C 8E630004 */ lw $v1, 4($s3) -glabel L800A5DA0 -/* 0A69A0 800A5DA0 0C024C36 */ jal set_text_color -/* 0A69A4 800A5DA4 24040003 */ li $a0, 3 -/* 0A69A8 800A5DA8 3C02800E */ lui $v0, %hi(D_800E7A48) # $v0, 0x800e -/* 0A69AC 800A5DAC 3C01800F */ lui $at, %hi(D_800F1E8C) # $at, 0x800f -/* 0A69B0 800A5DB0 3C11800E */ lui $s1, %hi(D_800E7A54) # $s1, 0x800e -/* 0A69B4 800A5DB4 26317A54 */ addiu $s1, %lo(D_800E7A54) # addiu $s1, $s1, 0x7a54 -/* 0A69B8 800A5DB8 C4341E8C */ lwc1 $f20, %lo(D_800F1E8C)($at) -/* 0A69BC 800A5DBC 24427A48 */ addiu $v0, %lo(D_800E7A48) # addiu $v0, $v0, 0x7a48 -/* 0A69C0 800A5DC0 2410006E */ li $s0, 110 -/* 0A69C4 800A5DC4 24040064 */ li $a0, 100 -.L800A5DC8: -/* 0A69C8 800A5DC8 02002825 */ move $a1, $s0 -/* 0A69CC 800A5DCC 8C460000 */ lw $a2, ($v0) -/* 0A69D0 800A5DD0 00003825 */ move $a3, $zero -/* 0A69D4 800A5DD4 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A69D8 800A5DD8 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A69DC 800A5DDC 0C024CC9 */ jal func_80093324 -/* 0A69E0 800A5DE0 AFA20050 */ sw $v0, 0x50($sp) -/* 0A69E4 800A5DE4 8FA20050 */ lw $v0, 0x50($sp) -/* 0A69E8 800A5DE8 2610000D */ addiu $s0, $s0, 0xd -/* 0A69EC 800A5DEC 24420004 */ addiu $v0, $v0, 4 -/* 0A69F0 800A5DF0 5451FFF5 */ bnel $v0, $s1, .L800A5DC8 -/* 0A69F4 800A5DF4 24040064 */ li $a0, 100 -/* 0A69F8 800A5DF8 10000065 */ b .L800A5F90 -/* 0A69FC 800A5DFC 8E630004 */ lw $v1, 4($s3) -glabel L800A5E00 -/* 0A6A00 800A5E00 0C024C36 */ jal set_text_color -/* 0A6A04 800A5E04 24040003 */ li $a0, 3 -/* 0A6A08 800A5E08 3C02800E */ lui $v0, %hi(D_800E7A60) # $v0, 0x800e -/* 0A6A0C 800A5E0C 3C01800F */ lui $at, %hi(D_800F1E90) # $at, 0x800f -/* 0A6A10 800A5E10 3C11800E */ lui $s1, %hi(D_800E7A6C) # $s1, 0x800e -/* 0A6A14 800A5E14 26317A6C */ addiu $s1, %lo(D_800E7A6C) # addiu $s1, $s1, 0x7a6c -/* 0A6A18 800A5E18 C4341E90 */ lwc1 $f20, %lo(D_800F1E90)($at) -/* 0A6A1C 800A5E1C 24427A60 */ addiu $v0, %lo(D_800E7A60) # addiu $v0, $v0, 0x7a60 -/* 0A6A20 800A5E20 00008025 */ move $s0, $zero -/* 0A6A24 800A5E24 8E6C0010 */ lw $t4, 0x10($s3) -.L800A5E28: -/* 0A6A28 800A5E28 AFA20050 */ sw $v0, 0x50($sp) -/* 0A6A2C 800A5E2C E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6A30 800A5E30 01902821 */ addu $a1, $t4, $s0 -/* 0A6A34 800A5E34 24A5006E */ addiu $a1, $a1, 0x6e -/* 0A6A38 800A5E38 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6A3C 800A5E3C 24040055 */ li $a0, 85 -/* 0A6A40 800A5E40 8C460000 */ lw $a2, ($v0) -/* 0A6A44 800A5E44 0C024CC9 */ jal func_80093324 -/* 0A6A48 800A5E48 00003825 */ move $a3, $zero -/* 0A6A4C 800A5E4C 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6A50 800A5E50 2610000D */ addiu $s0, $s0, 0xd -/* 0A6A54 800A5E54 24420004 */ addiu $v0, $v0, 4 -/* 0A6A58 800A5E58 0051082B */ sltu $at, $v0, $s1 -/* 0A6A5C 800A5E5C 5420FFF2 */ bnel $at, $zero, .L800A5E28 -/* 0A6A60 800A5E60 8E6C0010 */ lw $t4, 0x10($s3) -/* 0A6A64 800A5E64 3C02800E */ lui $v0, %hi(D_800E7A6C) # $v0, 0x800e -/* 0A6A68 800A5E68 24427A6C */ addiu $v0, %lo(D_800E7A6C) # addiu $v0, $v0, 0x7a6c -/* 0A6A6C 800A5E6C 00008825 */ move $s1, $zero -/* 0A6A70 800A5E70 2410009B */ li $s0, 155 -/* 0A6A74 800A5E74 2412007D */ li $s2, 125 -.L800A5E78: -/* 0A6A78 800A5E78 8E640004 */ lw $a0, 4($s3) -/* 0A6A7C 800A5E7C AFA20050 */ sw $v0, 0x50($sp) -/* 0A6A80 800A5E80 02202825 */ move $a1, $s1 -/* 0A6A84 800A5E84 24060001 */ li $a2, 1 -/* 0A6A88 800A5E88 0C024870 */ jal text_rainbow_effect -/* 0A6A8C 800A5E8C 2484FFDD */ addiu $a0, $a0, -0x23 -/* 0A6A90 800A5E90 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6A94 800A5E94 8E6F000C */ lw $t7, 0xc($s3) -/* 0A6A98 800A5E98 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6A9C 800A5E9C E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6AA0 800A5EA0 02002825 */ move $a1, $s0 -/* 0A6AA4 800A5EA4 00003825 */ move $a3, $zero -/* 0A6AA8 800A5EA8 8C460000 */ lw $a2, ($v0) -/* 0A6AAC 800A5EAC 0C024CC9 */ jal func_80093324 -/* 0A6AB0 800A5EB0 024F2023 */ subu $a0, $s2, $t7 -/* 0A6AB4 800A5EB4 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6AB8 800A5EB8 26310001 */ addiu $s1, $s1, 1 -/* 0A6ABC 800A5EBC 24010002 */ li $at, 2 -/* 0A6AC0 800A5EC0 2610000F */ addiu $s0, $s0, 0xf -/* 0A6AC4 800A5EC4 1621FFEC */ bne $s1, $at, .L800A5E78 -/* 0A6AC8 800A5EC8 24420004 */ addiu $v0, $v0, 4 -/* 0A6ACC 800A5ECC 10000030 */ b .L800A5F90 -/* 0A6AD0 800A5ED0 8E630004 */ lw $v1, 4($s3) -glabel L800A5ED4 -/* 0A6AD4 800A5ED4 0C024C36 */ jal set_text_color -/* 0A6AD8 800A5ED8 24040003 */ li $a0, 3 -/* 0A6ADC 800A5EDC 3C02800E */ lui $v0, %hi(D_800E7A74) # $v0, 0x800e -/* 0A6AE0 800A5EE0 3C01800F */ lui $at, %hi(D_800F1E94) # $at, 0x800f -/* 0A6AE4 800A5EE4 3C11800E */ lui $s1, %hi(D_800E7A80) # $s1, 0x800e -/* 0A6AE8 800A5EE8 26317A80 */ addiu $s1, %lo(D_800E7A80) # addiu $s1, $s1, 0x7a80 -/* 0A6AEC 800A5EEC C4341E94 */ lwc1 $f20, %lo(D_800F1E94)($at) -/* 0A6AF0 800A5EF0 24427A74 */ addiu $v0, %lo(D_800E7A74) # addiu $v0, $v0, 0x7a74 -/* 0A6AF4 800A5EF4 2410006E */ li $s0, 110 -/* 0A6AF8 800A5EF8 24040055 */ li $a0, 85 -.L800A5EFC: -/* 0A6AFC 800A5EFC 02002825 */ move $a1, $s0 -/* 0A6B00 800A5F00 8C460000 */ lw $a2, ($v0) -/* 0A6B04 800A5F04 00003825 */ move $a3, $zero -/* 0A6B08 800A5F08 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6B0C 800A5F0C E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6B10 800A5F10 0C024CC9 */ jal func_80093324 -/* 0A6B14 800A5F14 AFA20050 */ sw $v0, 0x50($sp) -/* 0A6B18 800A5F18 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6B1C 800A5F1C 2610000D */ addiu $s0, $s0, 0xd -/* 0A6B20 800A5F20 24420004 */ addiu $v0, $v0, 4 -/* 0A6B24 800A5F24 5451FFF5 */ bnel $v0, $s1, .L800A5EFC -/* 0A6B28 800A5F28 24040055 */ li $a0, 85 -/* 0A6B2C 800A5F2C 10000018 */ b .L800A5F90 -/* 0A6B30 800A5F30 8E630004 */ lw $v1, 4($s3) -glabel L800A5F34 -/* 0A6B34 800A5F34 0C024C36 */ jal set_text_color -/* 0A6B38 800A5F38 24040003 */ li $a0, 3 -/* 0A6B3C 800A5F3C 3C02800E */ lui $v0, %hi(D_800E7A80) # $v0, 0x800e -/* 0A6B40 800A5F40 3C01800F */ lui $at, %hi(D_800F1E98) # $at, 0x800f -/* 0A6B44 800A5F44 3C11800E */ lui $s1, %hi(D_800E7A88) # $s1, 0x800e -/* 0A6B48 800A5F48 26317A88 */ addiu $s1, %lo(D_800E7A88) # addiu $s1, $s1, 0x7a88 -/* 0A6B4C 800A5F4C C4341E98 */ lwc1 $f20, %lo(D_800F1E98)($at) -/* 0A6B50 800A5F50 24427A80 */ addiu $v0, %lo(D_800E7A80) # addiu $v0, $v0, 0x7a80 -/* 0A6B54 800A5F54 2410006E */ li $s0, 110 -/* 0A6B58 800A5F58 2404005D */ li $a0, 93 -.L800A5F5C: -/* 0A6B5C 800A5F5C 02002825 */ move $a1, $s0 -/* 0A6B60 800A5F60 8C460000 */ lw $a2, ($v0) -/* 0A6B64 800A5F64 00003825 */ move $a3, $zero -/* 0A6B68 800A5F68 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0A6B6C 800A5F6C E7B40014 */ swc1 $f20, 0x14($sp) -/* 0A6B70 800A5F70 0C024CC9 */ jal func_80093324 -/* 0A6B74 800A5F74 AFA20050 */ sw $v0, 0x50($sp) -/* 0A6B78 800A5F78 8FA20050 */ lw $v0, 0x50($sp) -/* 0A6B7C 800A5F7C 2610000D */ addiu $s0, $s0, 0xd -/* 0A6B80 800A5F80 24420004 */ addiu $v0, $v0, 4 -/* 0A6B84 800A5F84 5451FFF5 */ bnel $v0, $s1, .L800A5F5C -/* 0A6B88 800A5F88 2404005D */ li $a0, 93 -/* 0A6B8C 800A5F8C 8E630004 */ lw $v1, 4($s3) -.L800A5F90: -glabel L800A5F90 -/* 0A6B90 800A5F90 246EFFF5 */ addiu $t6, $v1, -0xb -/* 0A6B94 800A5F94 2DC1001A */ sltiu $at, $t6, 0x1a -/* 0A6B98 800A5F98 1020001E */ beqz $at, .L800A6014 -/* 0A6B9C 800A5F9C 000E7080 */ sll $t6, $t6, 2 -/* 0A6BA0 800A5FA0 3C01800F */ lui $at, %hi(jpt_800F1E9C) -/* 0A6BA4 800A5FA4 002E0821 */ addu $at, $at, $t6 -/* 0A6BA8 800A5FA8 8C2E1E9C */ lw $t6, %lo(jpt_800F1E9C)($at) -/* 0A6BAC 800A5FAC 01C00008 */ jr $t6 -/* 0A6BB0 800A5FB0 00000000 */ nop -glabel L800A5FB4 -/* 0A6BB4 800A5FB4 0003C0C0 */ sll $t8, $v1, 3 -/* 0A6BB8 800A5FB8 3C08800E */ lui $t0, %hi(D_800E73E0) # $t0, 0x800e -/* 0A6BBC 800A5FBC 250873E0 */ addiu $t0, %lo(D_800E73E0) # addiu $t0, $t0, 0x73e0 -/* 0A6BC0 800A5FC0 2719FFA8 */ addiu $t9, $t8, -0x58 -/* 0A6BC4 800A5FC4 1000000C */ b .L800A5FF8 -/* 0A6BC8 800A5FC8 03281021 */ addu $v0, $t9, $t0 -glabel L800A5FCC -/* 0A6BCC 800A5FCC 000350C0 */ sll $t2, $v1, 3 -/* 0A6BD0 800A5FD0 3C0B800E */ lui $t3, %hi(D_800E7410) # $t3, 0x800e -/* 0A6BD4 800A5FD4 256B7410 */ addiu $t3, %lo(D_800E7410) # addiu $t3, $t3, 0x7410 -/* 0A6BD8 800A5FD8 2549FF10 */ addiu $t1, $t2, -0xf0 -/* 0A6BDC 800A5FDC 10000006 */ b .L800A5FF8 -/* 0A6BE0 800A5FE0 012B1021 */ addu $v0, $t1, $t3 -glabel L800A5FE4 -/* 0A6BE4 800A5FE4 000368C0 */ sll $t5, $v1, 3 -/* 0A6BE8 800A5FE8 3C0F800E */ lui $t7, %hi(D_800E7420) # $t7, 0x800e -/* 0A6BEC 800A5FEC 25EF7420 */ addiu $t7, %lo(D_800E7420) # addiu $t7, $t7, 0x7420 -/* 0A6BF0 800A5FF0 25ACFEE8 */ addiu $t4, $t5, -0x118 -/* 0A6BF4 800A5FF4 018F1021 */ addu $v0, $t4, $t7 -.L800A5FF8: -/* 0A6BF8 800A5FF8 844E0000 */ lh $t6, ($v0) -/* 0A6BFC 800A5FFC 02602025 */ move $a0, $s3 -/* 0A6C00 800A6000 27A50098 */ addiu $a1, $sp, 0x98 -/* 0A6C04 800A6004 A7AE0098 */ sh $t6, 0x98($sp) -/* 0A6C08 800A6008 84580002 */ lh $t8, 2($v0) -/* 0A6C0C 800A600C 0C0299AA */ jal func_800A66A8 -/* 0A6C10 800A6010 A7B8009A */ sh $t8, 0x9a($sp) -.L800A6014: -glabel L800A6014 -/* 0A6C14 800A6014 8FBF0044 */ lw $ra, 0x44($sp) -.L800A6018: -/* 0A6C18 800A6018 D7B40028 */ ldc1 $f20, 0x28($sp) -/* 0A6C1C 800A601C 8FB00034 */ lw $s0, 0x34($sp) -/* 0A6C20 800A6020 8FB10038 */ lw $s1, 0x38($sp) -/* 0A6C24 800A6024 8FB2003C */ lw $s2, 0x3c($sp) -/* 0A6C28 800A6028 8FB30040 */ lw $s3, 0x40($sp) -/* 0A6C2C 800A602C 03E00008 */ jr $ra -/* 0A6C30 800A6030 27BD00A0 */ addiu $sp, $sp, 0xa0 diff --git a/permuter_settings.toml b/permuter_settings.toml index f168fd746..96202e62e 100644 --- a/permuter_settings.toml +++ b/permuter_settings.toml @@ -4,7 +4,7 @@ compiler_type = "ido" [decompme.compilers] -"tools/ido5.3_recomp/cc" = "ido5.3" +"tools/ido-recomp/linux/cc" = "ido5.3" [preserve_macros] "gs?DP.*" = "void" diff --git a/src/buffers.h b/src/buffers.h index e4733579a..51c949536 100644 --- a/src/buffers.h +++ b/src/buffers.h @@ -15,7 +15,21 @@ */ typedef struct { u8 pixel_index_array[0x1000]; -} struct_D_802BFB80; // size = 0x1000 +} struct_D_802BFB80_8; // size = 0x1000 + +typedef struct { + u8 pixel_index_array[0x2000]; +} struct_D_802BFB80_4; // size = 0x1000 + +/* + * In render_player, spawn_players, and staff_ghosts D_802BFB80 is the arraySize8 entry + * But in code_80091750 its the arraySize4 entry + * The only way to unify those 2 things is to use a union +*/ +typedef union { + struct_D_802BFB80_4 arraySize4[2][2][4]; + struct_D_802BFB80_8 arraySize8[2][2][8]; +} union_D_802BFB80; /* * Texture prior to be being decoded via mio0decode @@ -55,7 +69,7 @@ typedef struct { extern u16 gRandomSeed16; extern u8 randomSeedPadding[216]; -extern struct_D_802BFB80 D_802BFB80[][2][8]; +extern union_D_802BFB80 D_802BFB80; extern struct_D_802DFB80 D_802DFB80[][2][8]; /** diff --git a/src/code_80091750.c b/src/code_80091750.c index b03d86051..16849d710 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -95,10 +95,11 @@ SaveData gSaveData; u8 D_8018ED90; u8 D_8018ED91; s32 s8018ED94; + f32 D_8018ED98; // Rotation f32 D_8018ED9C; // Rotation - f32 D_8018EDA0; // Rotation + f32 D_8018EDA4; f32 D_8018EDA8; f32 D_8018EDAC; @@ -4867,13 +4868,6 @@ void func_800996BC(MkTexture *arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_800996BC.s") #endif -#ifdef MIPS_TO_C -// Note that as it stands this function is NOT functionally identical -// However the diff is tiny and there's not really much left to be done -// A potential match found by Vetri: https://decomp.me/scratch/fnW6S -// The only problem with it is that it requires modifying D_802BFB80's dimesnions -// and that seems really really wrong. But a match is a match, so it demands -// more investigation. void func_80099958(MkTexture *arg0, s32 arg1, s32 arg2) { u16 var_a1; u8 *thing; @@ -4891,14 +4885,10 @@ void func_80099958(MkTexture *arg0, s32 arg1, s32 arg2) { var_a1 = ((var_a1 / 8) * 8) + 8; } dma_copy_base_729a30(temp_v0->textureData, var_a1, D_8018D9B4); - // `arg1 % 2` needs to be multiplied by 2, but doing that causes a large diff - mio0decode(D_8018D9B4, D_802BFB80[arg2][arg1 / 2][(arg1 % 2) + 4].pixel_index_array); + mio0decode(D_8018D9B4, D_802BFB80.arraySize4[arg2][arg1 / 2][(arg1 % 2) + 2].pixel_index_array); temp_v0++; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099958.s") -#endif // Possibly a debug print function? void func_80099A70(void) { @@ -4918,94 +4908,89 @@ void func_80099A94(MkTexture *arg0, s32 arg1) { var_v1->unk_4 = arg1; } -#ifdef MIPS_TO_C -//generated by m2c commit a39b70e85329b0bcaeb4350510ddb23dc9840dce on Feb-04-2024 +#ifdef NON_MATCHING +// https://decomp.me/scratch/rxEoi +// Something's up with the handling of `_textures_0aSegmentRomStart`, I don't know how to fix it void func_80099AEC(void) { - OSIoMesg sp6C; - void *sp68; + s8 var_s4; + s32 var_s0; + s32 stackPadding0; + s32 stackPadding1; + s32 huh; + OSIoMesg sp68; + OSMesg sp64; + u8 *test; 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_v0; - void *temp_v0_2; if (gGamestate == 4) { sp60 = 0x00000500; } else { sp60 = 0x00001000; } + + var_s4 = 0; var_s1 = D_8018E060; - temp_s2 = D_8018E060->texture; - var_s5 = 0; - if (temp_s2 != NULL) { - temp_v1 = temp_s2->size; + temp_s2 = var_s1->texture; + + if (temp_s2 == NULL) return; + + huh = temp_s2->size; + if (huh != 0) { + var_s0 = huh; + } else { var_s0 = 0x1400; - if (temp_v1 != 0) { - var_s0 = temp_v1; - } - if (((s32) var_s0 % 8) != 0) { - var_s0 = (((s32) var_s0 / 8) * 8) + 8; - } - osInvalDCache(D_8018D9B4, (u32) var_s0); - sp58 = _textures_0aSegmentRomStart; - 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; - if (temp_v0 == NULL) { - var_s5 += 1; + } + if (var_s0 % 8) { + var_s0 = ((var_s0 / 8) * 8) + 8; + } + osInvalDCache(D_8018D9B4, var_s0); + osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); + osRecvMesg(&gDmaMesgQueue, &sp64, 1); + while (1) { + if ((var_s1 + 1)->texture == NULL) { + var_s4 += 1; } else { - temp_v1_2 = temp_v0->unk10; - temp_t7 = sp60 * 4; - if (temp_v1_2 != 0) { - var_s0_2 = temp_v1_2; + temp_s2 = (var_s1 + 1)->texture; + huh = (var_s1 + 1)->texture->size; + if (huh != 0) { + var_s0 = huh; } else { - var_s0_2 = 0x1400; + var_s0 = 0x1400; } - if (((s32) var_s0_2 % 8) != 0) { - var_s0_2 = (((s32) var_s0_2 / 8) * 8) + 8; + if (var_s0 % 8) { + var_s0 = ((var_s0 / 8) * 8) + 8; } - 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); + osInvalDCache(D_8018D9B4 + sp60*4, var_s0); + osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4 + sp60*4, var_s0, &gDmaMesgQueue); } - mio0decode(D_8018D9B4, (u8 *) &D_8018D9B0[D_8018E118[var_s1->unk_4].offset]); + mio0decode(D_8018D9B4, &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); - temp_v0_2 = temp_s1->unk8; - if (temp_v0_2 == NULL) { - var_s5 += 1; + var_s1++; + if (var_s4 != 0) break; + osRecvMesg(&gDmaMesgQueue, &sp64, 1); + if ((var_s1 + 1)->texture == NULL) { + var_s4 += 1; + } else { + temp_s2 = (var_s1 + 1)->texture; + huh = (var_s1 + 1)->texture->size; + if (huh != 0) { + var_s0 = huh; } else { - temp_v1_3 = temp_v0_2->unk10; - var_s0_3 = 0x1400; - if (temp_v1_3 != 0) { - var_s0_3 = temp_v1_3; - } - if (((s32) var_s0_3 % 8) != 0) { - var_s0_3 = (((s32) var_s0_3 / 8) * 8) + 8; - } - 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); + var_s0 = 0x1400; } - 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); - goto loop_9; + if (var_s0 % 8) { + var_s0 = ((var_s0 / 8) * 8) + 8; } + osInvalDCache(D_8018D9B4, var_s0); + osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); } + mio0decode(D_8018D9B4 + sp60*4, &D_8018D9B0[D_8018E118[var_s1->unk_4].offset]); + var_s1->texture = NULL; + var_s1++; + if (var_s4 != 0) break; + osRecvMesg(&gDmaMesgQueue, &sp64, 1); } } #else @@ -5028,93 +5013,124 @@ void func_80099E60(MkTexture *arg0, s32 arg1, s32 arg2) { var_v1->unk6 = arg2; } -#ifdef MIPS_TO_C -//generated by m2c commit a39b70e85329b0bcaeb4350510ddb23dc9840dce on Feb-04-2024 +#ifdef NON_MATCHING +// https://decomp.me/scratch/rUXbD +// Some fakematch nonsense, may or may not be necessary +// Issue is with instruction ordering near the first `osPiStartDma` call 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; + s32 var_s0; + s32 stackPadding0; + s32 stackPadding1; + OSIoMesg sp68; + OSMesg sp64; + s32 huh; + u8 *test; + MkTexture *temp_s2; 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_v0; - void *temp_v0_3; - var_s1 = D_8018E0E8; - temp_s2 = D_8018E0E8->mk64Texture; var_s4 = 0; - if (temp_s2 != NULL) { - temp_v1 = temp_s2->size; + var_s1 = D_8018E0E8; + temp_s2 = var_s1->mk64Texture; + + if (temp_s2 == NULL) return; + + huh = temp_s2->size; + if (huh != 0) { + var_s0 = huh; + } else { var_s0 = 0x1400; - if (temp_v1 != 0) { - var_s0 = temp_v1; - } - if (((s32) var_s0 % 8) != 0) { - var_s0 = (((s32) var_s0 / 8) * 8) + 8; - } - osInvalDCache(D_8018D9B4, (u32) var_s0); - 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; - if (temp_v0 == NULL) { + } + if (var_s0 % 8) { + var_s0 = ((var_s0 / 8) * 8) + 8; + } + osInvalDCache(D_8018D9B4, var_s0); + test = &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)]; + osPiStartDma(&sp68, 0, 0, test, D_8018D9B4, var_s0, &gDmaMesgQueue); + if ((var_s0 && var_s0) && var_s0) {} + // osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); + osRecvMesg(&gDmaMesgQueue, &sp64, 1); + while (1) { + if ((var_s1 + 1)->mk64Texture == NULL) { var_s4 += 1; } else { - temp_v1_2 = temp_v0->unk10; - var_s0_2 = 0x1400; - if (temp_v1_2 != 0) { - var_s0_2 = temp_v1_2; - } - if (((s32) var_s0_2 % 8) != 0) { - var_s0_2 = (((s32) var_s0_2 / 8) * 8) + 8; - } - osInvalDCache(D_8018D9B4 + 0x1400, (u32) var_s0_2); - osPiStartDma(&sp68, 0, 0, (u32) &_textures_0aSegmentRomStart[temp_v0->unk4 & 0xFFFFFF], D_8018D9B4 + 0x1400, (u32) var_s0_2, &gDmaMesgQueue); - } - 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->mk64Texture = NULL; - temp_s1 = var_s1 + 8; - if (var_s4 == 0) { - osRecvMesg(&gDmaMesgQueue, &sp64, 1); - temp_v0_3 = temp_s1->unk8; - if (temp_v0_3 == NULL) { - var_s4 += 1; + temp_s2 = (var_s1 + 1)->mk64Texture; + huh = (var_s1 + 1)->mk64Texture->size; + if (huh != 0) { + var_s0 = huh; } else { - temp_v1_3 = temp_v0_3->unk10; - var_s0_3 = 0x1400; - if (temp_v1_3 != 0) { - var_s0_3 = temp_v1_3; - } - if (((s32) var_s0_3 % 8) != 0) { - var_s0_3 = (((s32) var_s0_3 / 8) * 8) + 8; - } - osInvalDCache(D_8018D9B4, (u32) var_s0_3); - osPiStartDma(&sp68, 0, 0, (u32) &_textures_0aSegmentRomStart[temp_v0_3->unk4 & 0xFFFFFF], D_8018D9B4, (u32) var_s0_3, &gDmaMesgQueue); + var_s0 = 0x1400; } - 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->mk64Texture = NULL; - var_s1 = temp_s1 + 8; - if (var_s4 == 0) { - osRecvMesg(&gDmaMesgQueue, &sp64, 1); - goto loop_6; + if (var_s0 % 8) { + var_s0 = ((var_s0 / 8) * 8) + 8; } + osInvalDCache(D_8018D9B4 + 0x1400, var_s0); + osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4 + 0x1400, var_s0, &gDmaMesgQueue); } + mio0decode(D_8018D9B4, D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array); + var_s1->mk64Texture = NULL; + var_s1++; + if (var_s4 != 0) break; + osRecvMesg(&gDmaMesgQueue, &sp64, 1); + if ((var_s1 + 1)->mk64Texture == NULL) { + var_s4 += 1; + } else { + temp_s2 = (var_s1 + 1)->mk64Texture; + huh = (var_s1 + 1)->mk64Texture->size; + if (huh != 0) { + var_s0 = huh; + } else { + var_s0 = 0x1400; + } + if (var_s0 % 8) { + var_s0 = ((var_s0 / 8) * 8) + 8; + } + osInvalDCache(D_8018D9B4, var_s0); + osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); + } + mio0decode(D_8018D9B4 + 0x1400, D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array); + var_s1->mk64Texture = NULL; + var_s1++; + if (var_s4 != 0) break; + osRecvMesg(&gDmaMesgQueue, &sp64, 1); } } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099EC4.s") #endif +void func_8009A238(MkTexture *arg0, s32 arg1) { + s32 var_a3; + s32 temp_v1; + u64 *sp24; + struct_8018E118_entry *temp_v0; + + temp_v1 = D_8018E118[arg1].offset; + sp24 = arg0->textureData; + var_a3 = arg0->size; + if (var_a3 % 8) { + var_a3 = ((var_a3 / 8) * 8) + 8; + } + dma_copy_base_7fa3c0(sp24, var_a3, D_8018D9B4); + tkmk00decode(D_8018D9B4, D_8018D9B8, &D_8018D9B0[temp_v1], 1); + D_8018E118[arg1].textureData = sp24; +} + +void func_8009A2F0(struct_8018E0E8_entry *arg0) { + MkTexture *var_a0; + struct_8018E0E8_entry *temp_v0; + + temp_v0 = segmented_to_virtual_dupe_2(arg0); + var_a0 = temp_v0->mk64Texture; + while (var_a0 != NULL) { + if (var_a0 == NULL) break; + func_800996BC(var_a0, 0); + if (1) {} + temp_v0++; + var_a0 = temp_v0->mk64Texture; + } +} + void func_8009A344(void) { s32 index; for(index = 0; index < D_8018DEE0_SIZE; index++) { @@ -5732,9 +5748,6 @@ Gfx *func_8009C434(Gfx *arg0, struct_8018DEE0_entry *arg1, s32 arg2, s32 arg3, s return arg0; } -#ifdef NON_MATCHING -// https://decomp.me/scratch/TK1UV -// Some register allocation differences when accessing `D_802BFB80` Gfx *func_8009C708(Gfx *arg0, struct_8018DEE0_entry *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { s32 var_t0; s32 thing; @@ -5764,15 +5777,12 @@ Gfx *func_8009C708(Gfx *arg0, struct_8018DEE0_entry *arg1, s32 arg2, s32 arg3, s break; } if (arg5 >= 0) { - arg0 = func_80097E58(arg0, var_t0, 0, 0U, var_s1->width, var_s1->height, var_s1->dX + arg2, var_s1->dY + arg3, D_802BFB80[arg1->unk14][arg4 / 2][((arg4 % 2) + 2) * 2].pixel_index_array, var_s1->width, var_s1->height, (u32) arg5); + arg0 = func_80097E58(arg0, var_t0, 0, 0U, var_s1->width, var_s1->height, var_s1->dX + arg2, var_s1->dY + arg3, D_802BFB80.arraySize4[arg1->unk14][arg4 / 2][(arg4 % 2) + 2].pixel_index_array, var_s1->width, var_s1->height, (u32) arg5); } var_s1++; } return arg0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009C708.s") -#endif void func_8009C918(void) { s32 someIndex; @@ -7596,10 +7606,6 @@ void func_800A0AD0(UNUSED struct_8018D9E0_entry *arg0) { } } -#ifdef NON_MATCHING -// There's something going on with the accessing of D_800E86C4 that's causing lots of issues -// Also, the `(D_800E86C4[var_s5] % 10) + 0x10` stuff is doing something weird with the %, -// lots of instruction ordering issues void func_800A0B80(struct_8018D9E0_entry *arg0) { s32 temp_a2; s32 temp_s1; @@ -7614,19 +7620,21 @@ void func_800A0B80(struct_8018D9E0_entry *arg0) { if (D_800E86C4[var_s5] == 0) continue; temp_s1 = var_s5 * 0xA; - if (D_800E86C4[var_s5] < 0xA) { - func_800A08D8((D_800E86C4[var_s5] + 0x10), 0x00000032, arg0->row + temp_s1 + 1); + var_s0 = D_800E86C4[var_s5]; + if (var_s0 < 0xA) { + func_800A08D8(var_s0 + 0x10, 0x00000032, arg0->row + temp_s1 + 1); } else { - func_800A08D8(((D_800E86C4[var_s5] % 10) + 0x10), 0x00000035, arg0->row + temp_s1 + 1); + var_s0 %= 10; + func_800A08D8(var_s0 + 0x10, 0x00000035, arg0->row + temp_s1 + 1); func_800A08D8(0x11U, 0x0000002F, arg0->row + temp_s1 + 1); } temp_s2 = arg0->row + temp_s1 + 1; if (pfsError[D_800E86C4[var_s5] - 1] == 0) { temp_s4 = &pfsState[D_800E86C4[var_s5] - 1]; - temp_s1 = func_800A095C(temp_s4->game_name, 0x00000010, 0x0000004F, temp_s2) * 8; + var_s0 = func_800A095C(temp_s4->game_name, 0x00000010, 0x0000004F, temp_s2); if (temp_s4->ext_name[0] != 0) { - func_800A08D8(0x3CU, temp_s1 + 0x4F, temp_s2); - func_800A08D8(temp_s4->ext_name[0], temp_s1 + 0x57, temp_s2); + func_800A08D8(0x3CU, (var_s0 * 8) + 0x4F, temp_s2); + func_800A08D8(temp_s4->ext_name[0], (var_s0 * 8) + 0x57, temp_s2); } var_s1 = 0x10; var_s0 = (temp_s4->file_size + 0xFF) >> 8; @@ -7640,9 +7648,6 @@ void func_800A0B80(struct_8018D9E0_entry *arg0) { } gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 319, 239); } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A0B80.s") -#endif void func_800A0DFC(void) { s32 temp_t6; @@ -8918,20 +8923,19 @@ void render_pause_battle(struct_8018D9E0_entry *arg0) { } } -#ifdef NON_MATCHING -// Pretty big diff honestly. Mostly register allocation stuff though void func_800A54EC(void) { Unk_D_800E70A0 sp50; - s32 why; - s32 whyTheSequel; - Unk_D_800E70A0 *huh; Unk_D_800E70A0 *var_v1; struct_8018D9E0_entry *sp48; + s32 whyTheSequel; + s32 why; + Unk_D_800E70A0 *huh; if (gIsGamePaused == 0) return; why = gModeSelection; sp48 = find_8018D9E0_entry(0x000000C7); + if (why) {} // ????? gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(D_802B8880)); guOrtho(&gGfxPool->mtxEffect[gMatrixEffectCount], 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxEffect[gMatrixEffectCount++]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); @@ -8942,13 +8946,13 @@ void func_800A54EC(void) { var_v1 = &D_800E8538[0]; break; case 2: - var_v1 = &D_800E8540[(gIsGamePaused - 1) + (gScreenModeSelection * 4)]; + var_v1 = &D_800E8540[(gScreenModeSelection * 4) + (gIsGamePaused - 1)]; break; case 0: - var_v1 = &D_800E85C0[(gIsGamePaused - 1) + (gScreenModeSelection * 4)]; + var_v1 = &D_800E85C0[(gScreenModeSelection * 4) + (gIsGamePaused - 1)]; break; case 3: - var_v1 = &D_800E8600[(gIsGamePaused - 1) + (gScreenModeSelection * 4)]; + var_v1 = &D_800E8600[(gScreenModeSelection * 4) + (gIsGamePaused - 1)]; break; } whyTheSequel = D_800F0B50[why]; @@ -8956,39 +8960,34 @@ void func_800A54EC(void) { sp50.row = (var_v1->row + ((sp48->cursor - whyTheSequel) * 0xD)) - 8; func_800A66A8(sp48, &sp50); } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A54EC.s") -#endif -#ifdef NON_MATCHING -// https://decomp.me/scratch/esKnl -// `var_v1` is ending up in `v0` instead of `v1`. For some reason :( void func_800A5738(struct_8018D9E0_entry *arg0) { Unk_D_800E70A0 sp98; - char **stackPadding0; + s32 stackPadding0; s32 stackPadding1; s32 stackPadding2; - s32 stackPadding3; + f32 why; char sp84[3]; + s32 stackPadding3; s32 stackPadding4; - Unk_D_800E70A0 *var_v0_9; s32 temp_a0; s32 var_v1; s32 var_s1; s32 var_s2; s32 temp_v0; s32 zero = 0; + Unk_D_800E70A0 *var_v0_9; char sp5C[3]; - var_v1 = arg0->cursor; - if (var_v1 == 0) { + if (arg0->cursor == 0) { if ((arg0->unk1C >= 0x1E) && ((gGlobalTimer / 16) % 2)) { - gDisplayListHead = draw_box(gDisplayListHead, 0x000000C0, 0x00000021, (s32) (get_string_width(gTextPauseButton[5]) * 0.8f) + 0xC6, 0x00000032, 0, 0, 0, 0x00000096); + why = get_string_width(gTextPauseButton[5]) * 0.8f; + gDisplayListHead = draw_box(gDisplayListHead, 0x000000C0, 0x00000021, (s32) (why) + 0xC6, 0x00000032, 0, 0, 0, 0x00000096); set_text_color(1); func_80093324(0x000000BF, 0x00000030, gTextPauseButton[5], 0, 0.8f, 0.8f); } } else { - if (var_v1 == 1) { + if (arg0->cursor == 1) { var_s1 = arg0->unk1C; var_s2 = (s32) (arg0->unk1C * 0xFF) / 140; } else { @@ -9109,6 +9108,7 @@ void func_800A5738(struct_8018D9E0_entry *arg0) { break; case 35: /* switch 2 */ case 36: /* switch 2 */ + if (0) { } // wtf? var_v0_9 = &D_800E7420[arg0->cursor - 35]; break; default: @@ -9119,9 +9119,6 @@ void func_800A5738(struct_8018D9E0_entry *arg0) { func_800A66A8(arg0, &sp98); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A5738.s") -#endif void func_800A6034(struct_8018D9E0_entry *arg0) { char *text; @@ -9223,77 +9220,47 @@ void func_800A638C(struct_8018D9E0_entry *arg0) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -// ? guMtxCatL(Mtx *, Mtx *, Mtx *); /* extern */ - -void func_800A66A8(struct_8018D9E0_entry *arg0, s16 *arg1) { - Gfx *temp_v0; - Gfx *temp_v0_2; - Gfx *temp_v0_3; - Gfx *temp_v0_4; - Gfx *temp_v0_5; - Gfx *temp_v0_6; +#ifdef NON_MATCHING +// https://decomp.me/scratch/GUqCE +// All the math stuff at the top is messed up +void func_800A66A8(struct_8018D9E0_entry *arg0, Unk_D_800E70A0 *arg1) { Mtx *temp_s0; Mtx *temp_s1; - f32 temp_f0_2; + f32 temp_f2; f32 temp_f12; f32 temp_f14; - f32 temp_f2; - f64 temp_f0; temp_s1 = &gGfxPool->mtxEffect[gMatrixEffectCount]; - temp_f0 = (f64) arg0->unk24; - if (temp_f0 > 1.5) { - arg0->unk24 = (f32) (temp_f0 * 0.95); + if (arg0->unk24 > 1.5) { + arg0->unk24 *= 0.95; } else { arg0->unk24 = 1.5f; } - temp_f0_2 = arg0->unk24; - temp_f2 = temp_f0_2 * 3.0f * (f32) arg0->unk8; - temp_f12 = temp_f0_2 * 4.0f; - temp_f14 = temp_f0_2 * 2.0f; - D_8018EDA0 += temp_f14; + temp_f2 = arg0->unk24 * 3.0f * arg0->unk8; + temp_f12 = arg0->unk24 * 4.0f; + temp_f14 = arg0->unk24 * 2.0f; D_8018EDA4 = temp_f2; D_8018EDA8 = temp_f12; D_8018EDAC = temp_f14; - D_8018ED98 += temp_f2; - D_8018ED9C += temp_f12; + D_8018ED98 += D_8018EDA4; + D_8018ED9C += D_8018EDA8; + D_8018EDA0 += D_8018EDAC; guScale(temp_s1, 1.2f, 1.2f, 1.2f); - temp_s0 = temp_s1 + 0x40; + temp_s0 = temp_s1 + 1; guRotate(temp_s0, D_8018ED9C, 0.0f, 1.0f, 0.0f); guMtxCatL(temp_s1, temp_s0, temp_s1); guRotate(temp_s0, D_8018EDA0, 0.0f, 0.0f, 1.0f); guMtxCatL(temp_s1, temp_s0, temp_s1); guRotate(temp_s0, D_8018ED98, 1.0f, 0.0f, 0.0f); guMtxCatL(temp_s1, temp_s0, temp_s1); - guTranslate(temp_s0, (f32) arg1->unk0, (f32) arg1->unk2, 0.0f); + guTranslate(temp_s0, arg1->column, arg1->row, 0.0f); guMtxCatL(temp_s1, temp_s0, temp_s1); - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->words.w0 = 0x01020040; - temp_v0->words.w1 = (s32) (&gGfxPool->mtxEffect[gMatrixEffectCount]) & 0x1FFFFFFF; - temp_v0_2 = gDisplayListHead; - gMatrixEffectCount += 1; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->words.w0 = 0xB6000000; - temp_v0_2->words.w1 = 0x00020000; - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->words.w1 = 0xFF33FFFF; - temp_v0_3->words.w0 = 0xFC121824; - temp_v0_4 = gDisplayListHead; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->words.w1 = 0; - temp_v0_4->words.w0 = 0xC0000000; - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->words.w1 = 0x00504340; - temp_v0_5->words.w0 = 0xB900031D; - temp_v0_6 = gDisplayListHead; - gDisplayListHead = temp_v0_6 + 8; - temp_v0_6->words.w0 = 0x06000000; - temp_v0_6->words.w1 = (u32) D_0D003090; + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxEffect[gMatrixEffectCount]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPNoOp(gDisplayListHead++); + gDPSetRenderMode(gDisplayListHead++, G_RM_CLD_SURF, G_RM_CLD_SURF2); + gSPDisplayList(gDisplayListHead++, D_0D003090); } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A66A8.s") diff --git a/src/code_80091750.h b/src/code_80091750.h index 0ddc39ffb..f09255be3 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -171,6 +171,8 @@ void func_80099EC4(void); void func_80099A70(void); void func_80099A94(MkTexture *, s32); void func_80099AEC(void); +void func_8009A238(MkTexture*, s32); +void func_8009A2F0(struct_8018E0E8_entry*); void func_8009A344(void); s32 func_8009A374(MkAnimation*); s32 func_8009A478(MkAnimation*, s32); @@ -599,4 +601,12 @@ extern s32 gControllerPak1NumPagesFree; extern s32 gControllerPak1FileNote; extern s32 gControllerPak2FileNote; +extern f32 D_8018ED98; +extern f32 D_8018ED9C; +extern f32 D_8018EDA0; + +extern f32 D_8018EDA4; +extern f32 D_8018EDA8; +extern f32 D_8018EDAC; + #endif diff --git a/src/data/buffers.c b/src/data/buffers.c index 0144513cf..b755fad6c 100644 --- a/src/data/buffers.c +++ b/src/data/buffers.c @@ -13,7 +13,7 @@ u8 frameBufferPadding[0x5750]; u8 frameBufferPadding[0x5810]; #endif -struct_D_802BFB80 D_802BFB80[2][2][8]; +union_D_802BFB80 D_802BFB80; struct_D_802DFB80 D_802DFB80[2][2][8]; #ifdef AVOID_UB struct_D_802F1F80 D_802F1F80[2][4][8]; diff --git a/src/render_player.c b/src/render_player.c index 542049bad..35f838286 100644 --- a/src/render_player.c +++ b/src/render_player.c @@ -265,12 +265,12 @@ void func_80020524(void) { func_80027560(D_80164AD0[i], D_80164AB0[i], D_80164AC0[i], D_80164AC0[i], D_801651D0[D_80164AC0[i]][D_80164AB0[i]]); mio0decode(D_802DFB80[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array); } void func_8002088C(void) { @@ -291,11 +291,11 @@ void func_8002088C(void) { for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) { func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0], D_80164AC0[var_s0], D_80164AC0[var_s0], D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]); mio0decode(D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array); } void func_80020BF4(void) { @@ -310,11 +310,11 @@ void func_80020BF4(void) { for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) { func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0] + 4, D_80164AC0[var_s0], D_80164AC0[var_s0] - 2, D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]); mio0decode(D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array); } void func_80020F1C(void) { @@ -329,11 +329,11 @@ void func_80020F1C(void) { for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) { func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0] + 4, D_80164AC0[var_s0], D_80164AC0[var_s0] - 2, D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]); mio0decode(D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, - D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array); + D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array); } void try_render_player(Player *player, s8 playerId, s8 arg2) { @@ -1392,11 +1392,11 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { gPlayerPalette = &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId * 0x100]; #endif if ((arg2 == 0) || (arg2 == 1)) { - D_80164B08 = &D_802BFB80[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0]; - D_80164B0C = &D_802BFB80[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0]; + D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0]; + D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0]; } else { - D_80164B08 = &D_802BFB80[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0]; - D_80164B0C = &D_802BFB80[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0]; + D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0]; + D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0]; } mtxf_translate_rotate(sp1A4, sp154, sp14C); mtxf_scale2(sp1A4, gCharacterSize[player->characterId] * player->size); @@ -1510,11 +1510,11 @@ void ghost_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { gPlayerPalette = &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId * 0x100]; #endif if ((arg2 == 0) || (arg2 == 1)) { - D_80164B08 = &D_802BFB80[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0]; - D_80164B0C = &D_802BFB80[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0]; + D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0]; + D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0]; } else { - D_80164B08 = &D_802BFB80[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0]; - D_80164B0C = &D_802BFB80[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0]; + D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0]; + D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0]; } mtxf_translate_rotate(sp12C, spDC, spD4); diff --git a/src/spawn_players.c b/src/spawn_players.c index d6664f1c5..e76677a37 100644 --- a/src/spawn_players.c +++ b/src/spawn_players.c @@ -1078,12 +1078,12 @@ void func_8003CD98(Player *player, Camera *camera, s8 playerId, s8 arg3) { load_kart_palette(player, playerId, arg3, 0); load_kart_palette(player, playerId, arg3, 1); load_kart_texture(player, playerId, arg3, arg3, 0); - mio0decode((u8 *) &D_802DFB80[0][arg3][playerId], (u8 *) &D_802BFB80[0][arg3][playerId]); + mio0decode((u8 *) &D_802DFB80[0][arg3][playerId], (u8 *) &D_802BFB80.arraySize8[0][arg3][playerId]); } else { load_kart_palette(player, playerId, arg3, 0); load_kart_palette(player, playerId, arg3, 1); load_kart_texture(player, (s8) (playerId + 4), arg3, (s8) (arg3 - 2), 0); - mio0decode((u8 *) &D_802DFB80[0][arg3 - 2][playerId + 4], (u8 *) &D_802BFB80[0][arg3 - 2][playerId + 4]); + mio0decode((u8 *) &D_802DFB80[0][arg3 - 2][playerId + 4], (u8 *) &D_802BFB80.arraySize8[0][arg3 - 2][playerId + 4]); } D_801650D0[arg3][playerId] = player->animFrameSelector[arg3]; diff --git a/src/staff_ghosts.c b/src/staff_ghosts.c index 9ccfa04e4..8fe043e87 100644 --- a/src/staff_ghosts.c +++ b/src/staff_ghosts.c @@ -58,8 +58,8 @@ s32 D_80162DFC; s32 D_80162E00; -u32 *D_800DC710 = (u32 *) &D_802BFB80[0][2][3]; -u32 *D_800DC714 = (u32 *) &D_802BFB80[1][1][3]; +u32 *D_800DC710 = (u32 *) &D_802BFB80.arraySize8[0][2][3]; +u32 *D_800DC714 = (u32 *) &D_802BFB80.arraySize8[1][1][3]; extern u8 _kart_texturesSegmentRomStart; @@ -70,7 +70,7 @@ extern StaffGhost *d_royal_raceway_staff_ghost; extern StaffGhost *d_luigi_raceway_staff_ghost; void func_80004EF0(void) { - D_80162DA4 = (u32 *) &D_802BFB80[0][2][3]; + D_80162DA4 = (u32 *) &D_802BFB80.arraySize8[0][2][3]; osInvalDCache(&D_80162DA4[0], 0x4000); osPiStartDma(&gDmaIoMesg, 0, 0, (uintptr_t) ((D_80162DC4 & 0xFFFFFF) + &_kart_texturesSegmentRomStart), D_80162DA4, 0x4000, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); @@ -79,13 +79,13 @@ void func_80004EF0(void) { } void func_80004FB0(void) { - D_80162DB4 = (u32 *) &D_802BFB80[0][D_80162DD0][3]; + D_80162DB4 = (u32 *) &D_802BFB80.arraySize8[0][D_80162DD0][3]; D_80162DAC = *D_80162DB4 & 0xFF0000; D_80162DB0 = 0; } void func_80004FF8(void) { - D_80162D94 = (u32 *) &D_802BFB80[0][D_80162DC8][3]; + D_80162D94 = (u32 *) &D_802BFB80.arraySize8[0][D_80162DC8][3]; D_80162D8C = (s32) *D_80162D94 & 0xFF0000; D_80162D90 = 0; } @@ -162,7 +162,7 @@ s32 func_800051C4(void) { } void func_8000522C(void) { - D_80162D94 = (u32 *) &D_802BFB80[0][D_80162DC8][3]; + D_80162D94 = (u32 *) &D_802BFB80.arraySize8[0][D_80162DC8][3]; mio0decode((u8 *) D_800DC714, (u8 *) D_80162D94); D_80162D8C = (s32) (*D_80162D94 & 0xFF0000); D_80162D90 = 0; @@ -180,7 +180,7 @@ void func_800052A4(void) { D_80162DCC = 0; } temp_v0 = D_80162DB8; - D_80162D80 = (void *) &D_802BFB80[0][D_80162DC8][3]; + D_80162D80 = (void *) &D_802BFB80.arraySize8[0][D_80162DC8][3]; D_80162D84 = temp_v0; D_80162D86 = temp_v0; } @@ -213,7 +213,7 @@ void func_80005310(void) { } else { D_80162DD8 = 1U; - D_80162DBC = (u32 *) &D_802BFB80[0][D_80162DCC][3]; + D_80162DBC = (u32 *) &D_802BFB80.arraySize8[0][D_80162DCC][3]; D_80162DBC[0] = -1; D_80162DB8 = 0; D_80162DDC = 0; @@ -498,7 +498,7 @@ void func_80005B18(void) { func_80005AE8(gPlayerTwo); func_80005AE8(gPlayerThree); } else { - D_80162D80 = D_802BFB80[0][D_80162DC8][3].pixel_index_array; + D_80162D80 = D_802BFB80.arraySize8[0][D_80162DC8][3].pixel_index_array; D_80162D84 = D_80162D86; D_80162DD0 = D_80162DCC; D_80162DE8 = gPlayerOne->characterId; @@ -510,7 +510,7 @@ void func_80005B18(void) { } } else { if ((gLapCountByPlayerId[0] == 3) && (D_80162DDC == 0) && (D_80162DF8 == 1)) { - D_80162D80 = D_802BFB80[0][D_80162DC8][3].pixel_index_array; + D_80162D80 = D_802BFB80.arraySize8[0][D_80162DC8][3].pixel_index_array; D_80162D84 = D_80162D86; D_80162DDC = 1; } diff --git a/tools/doxygen_syms.md b/tools/doxygen_syms.md index 7cf2f868f..9f033ac32 100644 --- a/tools/doxygen_syms.md +++ b/tools/doxygen_syms.md @@ -1939,6 +1939,8 @@ Variable Name | Memory Address [func_80099E54](@ref func_80099E54) | 0x80099E54 [func_80099E60](@ref func_80099E60) | 0x80099E60 [func_80099EC4](@ref func_80099EC4) | 0x80099EC4 +[func_8009A238](@ref func_8009A238) | 0x8009A238 +[func_8009A2F0](@ref func_8009A2F0) | 0x8009A2F0 [func_8009A344](@ref func_8009A344) | 0x8009A344 [func_8009A374](@ref func_8009A374) | 0x8009A374 [func_8009A478](@ref func_8009A478) | 0x8009A478 @@ -3640,10 +3642,6 @@ Variable Name | Memory Address [D_800F0C18](@ref D_800F0C18) | 0x800F0C18 [D_800F0C54](@ref D_800F0C54) | 0x800F0C54 [D_800F0C58](@ref D_800F0C58) | 0x800F0C58 -[D_800F0C6C](@ref D_800F0C6C) | 0x800F0C6C -[D_800F0C70](@ref D_800F0C70) | 0x800F0C70 -[D_800F0C74](@ref D_800F0C74) | 0x800F0C74 -[D_800F0C78](@ref D_800F0C78) | 0x800F0C78 [D_800F0CA0](@ref D_800F0CA0) | 0x800F0CA0 [D_800F0CD0](@ref D_800F0CD0) | 0x800F0CD0 [D_800F15E0](@ref D_800F15E0) | 0x800F15E0 @@ -3662,14 +3660,6 @@ Variable Name | Memory Address [D_800F1C40](@ref D_800F1C40) | 0x800F1C40 [D_800F1C44](@ref D_800F1C44) | 0x800F1C44 [D_800F1DC8](@ref D_800F1DC8) | 0x800F1DC8 -[D_800F1DD8](@ref D_800F1DD8) | 0x800F1DD8 -[D_800F1E80](@ref D_800F1E80) | 0x800F1E80 -[D_800F1E84](@ref D_800F1E84) | 0x800F1E84 -[D_800F1E88](@ref D_800F1E88) | 0x800F1E88 -[D_800F1E8C](@ref D_800F1E8C) | 0x800F1E8C -[D_800F1E90](@ref D_800F1E90) | 0x800F1E90 -[D_800F1E94](@ref D_800F1E94) | 0x800F1E94 -[D_800F1E98](@ref D_800F1E98) | 0x800F1E98 [D_800F1F18](@ref D_800F1F18) | 0x800F1F18 [D_800F1F20](@ref D_800F1F20) | 0x800F1F20 [D_800F2B38](@ref D_800F2B38) | 0x800F2B38