diff --git a/README.md b/README.md index 583c02eb..1b0f77ea 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of September 27, 2023, this is our current score: +As of September 29, 2023, this is our current score: -    Decomp progress: 55.01% +    Decomp progress: 55.56% -    Documentation progress: 28.42% +    Documentation progress: 28.44% --- @@ -128,25 +128,25 @@ s32 is_drumstick_unlocked(void) { ``` -As of September 27th, 2023, this is our current score: +As of September 29th, 2023, this is our current score: ``` =============================================================== ADVENTURE ONE (ASM -> C Decompilation) - ----------------------- 55.01% Complete ----------------------- - # Decompiled functions: 1571 - # GLOBAL_ASM remaining: 267 + ----------------------- 55.56% Complete ----------------------- + # Decompiled functions: 1577 + # GLOBAL_ASM remaining: 261 # NON_MATCHING functions: 13 - # NON_EQUIVALENT WIP functions: 67 + # NON_EQUIVALENT WIP functions: 64 ------------------------- Game Status ------------------------- Balloons: 26/47, Keys: 3/4, Trophies: 2/5 T.T. Amulets: 3/4, Wizpig Amulets: 2/4 --------------------------------------------------------------- - We are collecting silver coins in Whale Bay. (2/8 silver coins) + We are collecting silver coins in Whale Bay. (6/8 silver coins) =============================================================== ADVENTURE TWO (Cleanup & Documentation) - ----------------------- 28.42% Complete ----------------------- - # Documented functions: 623 - # Undocumented remaining: 947 + ----------------------- 28.44% Complete ----------------------- + # Documented functions: 624 + # Undocumented remaining: 946 ------------------------- Game Status ------------------------- Balloons: 14/47, Keys: 1/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 diff --git a/asm/non_matchings/menu/calculate_and_display_rom_checksum.s b/asm/non_matchings/menu/calculate_and_display_rom_checksum.s deleted file mode 100644 index 71cdd5cd..00000000 --- a/asm/non_matchings/menu/calculate_and_display_rom_checksum.s +++ /dev/null @@ -1,102 +0,0 @@ -glabel calculate_and_display_rom_checksum -/* 08B944 8008AD44 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 08B948 8008AD48 3C0E800E */ lui $t6, %hi(D_800E1E18) # $t6, 0x800e -/* 08B94C 8008AD4C 8DCE1E18 */ lw $t6, %lo(D_800E1E18)($t6) -/* 08B950 8008AD50 AFBF002C */ sw $ra, 0x2c($sp) -/* 08B954 8008AD54 AFB40028 */ sw $s4, 0x28($sp) -/* 08B958 8008AD58 AFB30024 */ sw $s3, 0x24($sp) -/* 08B95C 8008AD5C AFB20020 */ sw $s2, 0x20($sp) -/* 08B960 8008AD60 AFB1001C */ sw $s1, 0x1c($sp) -/* 08B964 8008AD64 15C0003B */ bnez $t6, .L8008AE54 -/* 08B968 8008AD68 AFB00018 */ sw $s0, 0x18($sp) -/* 08B96C 8008AD6C 3C1000AD */ lui $s0, %hi(__ROM_END) # $s0, 0xad -/* 08B970 8008AD70 26109630 */ addiu $s0, %lo(__ROM_END) # addiu $s0, $s0, -0x69d0 -/* 08B974 8008AD74 2610F000 */ addiu $s0, $s0, -0x1000 -/* 08B978 8008AD78 24131000 */ li $s3, 4096 -/* 08B97C 8008AD7C 02009025 */ move $s2, $s0 -/* 08B980 8008AD80 24045000 */ li $a0, 20480 -/* 08B984 8008AD84 0C01C327 */ jal allocate_from_main_pool_safe -/* 08B988 8008AD88 240500FF */ li $a1, 255 -/* 08B98C 8008AD8C 1200002C */ beqz $s0, .L8008AE40 -/* 08B990 8008AD90 0040A025 */ move $s4, $v0 -.L8008AD94: -/* 08B994 8008AD94 2A415001 */ slti $at, $s2, 0x5001 -/* 08B998 8008AD98 02408825 */ move $s1, $s2 -/* 08B99C 8008AD9C 14200002 */ bnez $at, .L8008ADA8 -/* 08B9A0 8008ADA0 00008025 */ move $s0, $zero -/* 08B9A4 8008ADA4 24115000 */ li $s1, 20480 -.L8008ADA8: -/* 08B9A8 8008ADA8 02602025 */ move $a0, $s3 -/* 08B9AC 8008ADAC 02802825 */ move $a1, $s4 -/* 08B9B0 8008ADB0 0C01DBDE */ jal dmacopy -/* 08B9B4 8008ADB4 02203025 */ move $a2, $s1 -/* 08B9B8 8008ADB8 1A20001F */ blez $s1, .L8008AE38 -/* 08B9BC 8008ADBC 02519023 */ subu $s2, $s2, $s1 -/* 08B9C0 8008ADC0 32240003 */ andi $a0, $s1, 3 -/* 08B9C4 8008ADC4 1080000C */ beqz $a0, .L8008ADF8 -/* 08B9C8 8008ADC8 00801825 */ move $v1, $a0 -/* 08B9CC 8008ADCC 3C05800E */ lui $a1, %hi(D_800E1E14) # $a1, 0x800e -/* 08B9D0 8008ADD0 8CA51E14 */ lw $a1, %lo(D_800E1E14)($a1) -/* 08B9D4 8008ADD4 02901021 */ addu $v0, $s4, $s0 -.L8008ADD8: -/* 08B9D8 8008ADD8 904F0000 */ lbu $t7, ($v0) -/* 08B9DC 8008ADDC 26100001 */ addiu $s0, $s0, 1 -/* 08B9E0 8008ADE0 24420001 */ addiu $v0, $v0, 1 -/* 08B9E4 8008ADE4 1470FFFC */ bne $v1, $s0, .L8008ADD8 -/* 08B9E8 8008ADE8 00AF2821 */ addu $a1, $a1, $t7 -/* 08B9EC 8008ADEC 3C01800E */ lui $at, %hi(D_800E1E14) # $at, 0x800e -/* 08B9F0 8008ADF0 12110011 */ beq $s0, $s1, .L8008AE38 -/* 08B9F4 8008ADF4 AC251E14 */ sw $a1, %lo(D_800E1E14)($at) -.L8008ADF8: -/* 08B9F8 8008ADF8 3C05800E */ lui $a1, %hi(D_800E1E14) # $a1, 0x800e -/* 08B9FC 8008ADFC 8CA51E14 */ lw $a1, %lo(D_800E1E14)($a1) -/* 08BA00 8008AE00 02901021 */ addu $v0, $s4, $s0 -.L8008AE04: -/* 08BA04 8008AE04 90580000 */ lbu $t8, ($v0) -/* 08BA08 8008AE08 90590001 */ lbu $t9, 1($v0) -/* 08BA0C 8008AE0C 90480002 */ lbu $t0, 2($v0) -/* 08BA10 8008AE10 00B82821 */ addu $a1, $a1, $t8 -/* 08BA14 8008AE14 90490003 */ lbu $t1, 3($v0) -/* 08BA18 8008AE18 00B92821 */ addu $a1, $a1, $t9 -/* 08BA1C 8008AE1C 26100004 */ addiu $s0, $s0, 4 -/* 08BA20 8008AE20 00A82821 */ addu $a1, $a1, $t0 -/* 08BA24 8008AE24 24420004 */ addiu $v0, $v0, 4 -/* 08BA28 8008AE28 1611FFF6 */ bne $s0, $s1, .L8008AE04 -/* 08BA2C 8008AE2C 00A92821 */ addu $a1, $a1, $t1 -/* 08BA30 8008AE30 3C01800E */ lui $at, %hi(D_800E1E14) # $at, 0x800e -/* 08BA34 8008AE34 AC251E14 */ sw $a1, %lo(D_800E1E14)($at) -.L8008AE38: -/* 08BA38 8008AE38 1640FFD6 */ bnez $s2, .L8008AD94 -/* 08BA3C 8008AE3C 02719821 */ addu $s3, $s3, $s1 -.L8008AE40: -/* 08BA40 8008AE40 0C01C450 */ jal free_from_memory_pool -/* 08BA44 8008AE44 02802025 */ move $a0, $s4 -/* 08BA48 8008AE48 240A0001 */ li $t2, 1 -/* 08BA4C 8008AE4C 3C01800E */ lui $at, %hi(D_800E1E18) # $at, 0x800e -/* 08BA50 8008AE50 AC2A1E18 */ sw $t2, %lo(D_800E1E18)($at) -.L8008AE54: -/* 08BA54 8008AE54 3C1000AD */ lui $s0, %hi(__ROM_END) # $s0, 0xad -/* 08BA58 8008AE58 26109630 */ addiu $s0, %lo(__ROM_END) # addiu $s0, $s0, -0x69d0 -/* 08BA5C 8008AE5C 00002025 */ move $a0, $zero -/* 08BA60 8008AE60 00002825 */ move $a1, $zero -/* 08BA64 8008AE64 00003025 */ move $a2, $zero -/* 08BA68 8008AE68 0C02D8AD */ jal set_render_printf_background_colour -/* 08BA6C 8008AE6C 24070080 */ li $a3, 128 -/* 08BA70 8008AE70 24040020 */ li $a0, 32 -/* 08BA74 8008AE74 0C02D8D7 */ jal set_render_printf_position -/* 08BA78 8008AE78 24050088 */ li $a1, 136 -/* 08BA7C 8008AE7C 3C05800E */ lui $a1, %hi(D_800E1E14) # $a1, 0x800e -/* 08BA80 8008AE80 8CA51E14 */ lw $a1, %lo(D_800E1E14)($a1) -/* 08BA84 8008AE84 3C04800F */ lui $a0, %hi(D_800E8218) # $a0, 0x800f -/* 08BA88 8008AE88 24848218 */ addiu $a0, %lo(D_800E8218) # addiu $a0, $a0, -0x7de8 -/* 08BA8C 8008AE8C 0C02D7B7 */ jal render_printf -/* 08BA90 8008AE90 02003025 */ move $a2, $s0 -/* 08BA94 8008AE94 8FBF002C */ lw $ra, 0x2c($sp) -/* 08BA98 8008AE98 8FB00018 */ lw $s0, 0x18($sp) -/* 08BA9C 8008AE9C 8FB1001C */ lw $s1, 0x1c($sp) -/* 08BAA0 8008AEA0 8FB20020 */ lw $s2, 0x20($sp) -/* 08BAA4 8008AEA4 8FB30024 */ lw $s3, 0x24($sp) -/* 08BAA8 8008AEA8 8FB40028 */ lw $s4, 0x28($sp) -/* 08BAAC 8008AEAC 03E00008 */ jr $ra -/* 08BAB0 8008AEB0 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/menu/func_80094A5C.s b/asm/non_matchings/menu/func_80094A5C.s deleted file mode 100644 index 7bfe3958..00000000 --- a/asm/non_matchings/menu/func_80094A5C.s +++ /dev/null @@ -1,119 +0,0 @@ -glabel func_80094A5C -/* 09565C 80094A5C 3C038012 */ lui $v1, %hi(D_80126C54) # $v1, 0x8012 -/* 095660 80094A60 24636C54 */ addiu $v1, %lo(D_80126C54) # addiu $v1, $v1, 0x6c54 -/* 095664 80094A64 8C620000 */ lw $v0, ($v1) -/* 095668 80094A68 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 09566C 80094A6C 04400065 */ bltz $v0, .L80094C04 -/* 095670 80094A70 AFBF0014 */ sw $ra, 0x14($sp) -/* 095674 80094A74 2841000A */ slti $at, $v0, 0xa -/* 095678 80094A78 10200004 */ beqz $at, .L80094A8C -/* 09567C 80094A7C 00027840 */ sll $t7, $v0, 1 -/* 095680 80094A80 244E0001 */ addiu $t6, $v0, 1 -/* 095684 80094A84 1000005F */ b .L80094C04 -/* 095688 80094A88 AC6E0000 */ sw $t6, ($v1) -.L80094A8C: -/* 09568C 80094A8C 3C04800E */ lui $a0, %hi(D_800E0A10) # $a0, 0x800e -/* 095690 80094A90 008F2021 */ addu $a0, $a0, $t7 -/* 095694 80094A94 84840A10 */ lh $a0, %lo(D_800E0A10)($a0) -/* 095698 80094A98 2401FFFF */ li $at, -1 -/* 09569C 80094A9C 14810052 */ bne $a0, $at, .L80094BE8 -/* 0956A0 80094AA0 00000000 */ nop -/* 0956A4 80094AA4 3C04800E */ lui $a0, %hi(D_800E0A40) # $a0, 0x800e -/* 0956A8 80094AA8 0C027229 */ jal allocate_menu_images -/* 0956AC 80094AAC 24840A40 */ addiu $a0, %lo(D_800E0A40) # addiu $a0, $a0, 0xa40 -/* 0956B0 80094AB0 0C025181 */ jal assign_racer_portrait_textures -/* 0956B4 80094AB4 00000000 */ nop -/* 0956B8 80094AB8 0C01BAA4 */ jal get_settings -/* 0956BC 80094ABC 00000000 */ nop -/* 0956C0 80094AC0 80580114 */ lb $t8, 0x114($v0) -/* 0956C4 80094AC4 3C05800E */ lui $a1, %hi(D_800E0AF0) # $a1, 0x800e -/* 0956C8 80094AC8 0018C880 */ sll $t9, $t8, 2 -/* 0956CC 80094ACC 0338C823 */ subu $t9, $t9, $t8 -/* 0956D0 80094AD0 0019C8C0 */ sll $t9, $t9, 3 -/* 0956D4 80094AD4 00595021 */ addu $t2, $v0, $t9 -/* 0956D8 80094AD8 814B0059 */ lb $t3, 0x59($t2) -/* 0956DC 80094ADC 24A50AF0 */ addiu $a1, %lo(D_800E0AF0) # addiu $a1, $a1, 0xaf0 -/* 0956E0 80094AE0 000B6080 */ sll $t4, $t3, 2 -/* 0956E4 80094AE4 00AC6821 */ addu $t5, $a1, $t4 -/* 0956E8 80094AE8 8DAE0000 */ lw $t6, ($t5) -/* 0956EC 80094AEC 3C01800E */ lui $at, %hi(D_800E0BEC+20) # $at, 0x800e -/* 0956F0 80094AF0 AFA2001C */ sw $v0, 0x1c($sp) -/* 0956F4 80094AF4 0C003932 */ jal is_time_trial_enabled -/* 0956F8 80094AF8 AC2E0C00 */ sw $t6, %lo(D_800E0BEC+20)($at) -/* 0956FC 80094AFC 3C05800E */ lui $a1, %hi(D_800E0AF0) # $a1, 0x800e -/* 095700 80094B00 8FA9001C */ lw $t1, 0x1c($sp) -/* 095704 80094B04 14400034 */ bnez $v0, .L80094BD8 -/* 095708 80094B08 24A50AF0 */ addiu $a1, %lo(D_800E0AF0) # addiu $a1, $a1, 0xaf0 -/* 09570C 80094B0C 3C06800E */ lui $a2, %hi(D_800E0CEC+224) # $a2, 0x800e -/* 095710 80094B10 24C60DCC */ addiu $a2, %lo(D_800E0CEC+224) # addiu $a2, $a2, 0xdcc -/* 095714 80094B14 00002025 */ move $a0, $zero -/* 095718 80094B18 240700C0 */ li $a3, 192 -/* 09571C 80094B1C 00001825 */ move $v1, $zero -.L80094B20: -/* 095720 80094B20 01201025 */ move $v0, $t1 -.L80094B24: -/* 095724 80094B24 804F005A */ lb $t7, 0x5a($v0) -/* 095728 80094B28 24630018 */ addiu $v1, $v1, 0x18 -/* 09572C 80094B2C 148F0008 */ bne $a0, $t7, .L80094B50 -/* 095730 80094B30 00046140 */ sll $t4, $a0, 5 -/* 095734 80094B34 80580059 */ lb $t8, 0x59($v0) -/* 095738 80094B38 000C6823 */ negu $t5, $t4 -/* 09573C 80094B3C 0018C880 */ sll $t9, $t8, 2 -/* 095740 80094B40 00B95021 */ addu $t2, $a1, $t9 -/* 095744 80094B44 8D4B0000 */ lw $t3, ($t2) -/* 095748 80094B48 00CD7021 */ addu $t6, $a2, $t5 -/* 09574C 80094B4C ADCB0014 */ sw $t3, 0x14($t6) -.L80094B50: -/* 095750 80094B50 1467FFF4 */ bne $v1, $a3, .L80094B24 -/* 095754 80094B54 24420018 */ addiu $v0, $v0, 0x18 -/* 095758 80094B58 24840001 */ addiu $a0, $a0, 1 -/* 09575C 80094B5C 28810008 */ slti $at, $a0, 8 -/* 095760 80094B60 1420FFEF */ bnez $at, .L80094B20 -/* 095764 80094B64 00001825 */ move $v1, $zero -/* 095768 80094B68 0C027B20 */ jal is_in_two_player_adventure -/* 09576C 80094B6C 00000000 */ nop -/* 095770 80094B70 10400019 */ beqz $v0, .L80094BD8 -/* 095774 80094B74 3C0F800E */ lui $t7, %hi(D_800E0CEC+84) # $t7, 0x800e -/* 095778 80094B78 8DEF0D40 */ lw $t7, %lo(D_800E0CEC+84)($t7) -/* 09577C 80094B7C 3C01800E */ lui $at, %hi(D_800E0CEC+52) # $at, 0x800e -/* 095780 80094B80 3C18800E */ lui $t8, %hi(D_800E0CEC+116) # $t8, 0x800e -/* 095784 80094B84 AC2F0D20 */ sw $t7, %lo(D_800E0CEC+52)($at) -/* 095788 80094B88 8F180D60 */ lw $t8, %lo(D_800E0CEC+116)($t8) -/* 09578C 80094B8C 24040002 */ li $a0, 2 -/* 095790 80094B90 3C03800E */ lui $v1, %hi(D_800E0CEC) # $v1, 0x800e -/* 095794 80094B94 24630CEC */ addiu $v1, %lo(D_800E0CEC) # addiu $v1, $v1, 0xcec -/* 095798 80094B98 3C01800E */ lui $at, %hi(D_800E0CEC+84) # $at, 0x800e -/* 09579C 80094B9C 0004C940 */ sll $t9, $a0, 5 -/* 0957A0 80094BA0 00791021 */ addu $v0, $v1, $t9 -/* 0957A4 80094BA4 AC380D40 */ sw $t8, %lo(D_800E0CEC+84)($at) -/* 0957A8 80094BA8 8C4D0094 */ lw $t5, 0x94($v0) -/* 0957AC 80094BAC 8C4B00B4 */ lw $t3, 0xb4($v0) -/* 0957B0 80094BB0 8C4C0074 */ lw $t4, 0x74($v0) -/* 0957B4 80094BB4 8C4A0054 */ lw $t2, 0x54($v0) -/* 0957B8 80094BB8 AC4D0074 */ sw $t5, 0x74($v0) -/* 0957BC 80094BBC AC4B0094 */ sw $t3, 0x94($v0) -/* 0957C0 80094BC0 AC4C0054 */ sw $t4, 0x54($v0) -/* 0957C4 80094BC4 AC4A0034 */ sw $t2, 0x34($v0) -/* 0957C8 80094BC8 3C028012 */ lui $v0, %hi(D_80126850) # $v0, 0x8012 -/* 0957CC 80094BCC 24426850 */ addiu $v0, %lo(D_80126850) # addiu $v0, $v0, 0x6850 -/* 0957D0 80094BD0 AC6200F4 */ sw $v0, 0xf4($v1) -/* 0957D4 80094BD4 AC620014 */ sw $v0, 0x14($v1) -.L80094BD8: -/* 0957D8 80094BD8 240EFFFF */ li $t6, -1 -/* 0957DC 80094BDC 3C018012 */ lui $at, %hi(D_80126C54) # $at, 0x8012 -/* 0957E0 80094BE0 10000008 */ b .L80094C04 -/* 0957E4 80094BE4 AC2E6C54 */ sw $t6, %lo(D_80126C54)($at) -.L80094BE8: -/* 0957E8 80094BE8 0C0271B5 */ jal func_8009C6D4 -/* 0957EC 80094BEC 00000000 */ nop -/* 0957F0 80094BF0 3C0F8012 */ lui $t7, %hi(D_80126C54) # $t7, 0x8012 -/* 0957F4 80094BF4 8DEF6C54 */ lw $t7, %lo(D_80126C54)($t7) -/* 0957F8 80094BF8 3C018012 */ lui $at, %hi(D_80126C54) # $at, 0x8012 -/* 0957FC 80094BFC 25F80001 */ addiu $t8, $t7, 1 -/* 095800 80094C00 AC386C54 */ sw $t8, %lo(D_80126C54)($at) -.L80094C04: -/* 095804 80094C04 8FBF0014 */ lw $ra, 0x14($sp) -/* 095808 80094C08 27BD0028 */ addiu $sp, $sp, 0x28 -/* 09580C 80094C0C 03E00008 */ jr $ra -/* 095810 80094C10 00000000 */ nop - diff --git a/asm/non_matchings/menu/menu_magic_codes_loop.s b/asm/non_matchings/menu/menu_magic_codes_loop.s deleted file mode 100644 index 8a2f8f72..00000000 --- a/asm/non_matchings/menu/menu_magic_codes_loop.s +++ /dev/null @@ -1,570 +0,0 @@ -glabel menu_magic_codes_loop -/* 08A8D8 80089CD8 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 08A8DC 80089CDC 3C0B8012 */ lui $t3, %hi(gOpacityDecayTimer) # $t3, 0x8012 -/* 08A8E0 80089CE0 256B63D8 */ addiu $t3, %lo(gOpacityDecayTimer) # addiu $t3, $t3, 0x63d8 -/* 08A8E4 80089CE4 8D620000 */ lw $v0, ($t3) -/* 08A8E8 80089CE8 AFBF0014 */ sw $ra, 0x14($sp) -/* 08A8EC 80089CEC AFA0004C */ sw $zero, 0x4c($sp) -/* 08A8F0 80089CF0 AFA00048 */ sw $zero, 0x48($sp) -/* 08A8F4 80089CF4 AFA00040 */ sw $zero, 0x40($sp) -/* 08A8F8 80089CF8 00003825 */ move $a3, $zero -/* 08A8FC 80089CFC AFA0003C */ sw $zero, 0x3c($sp) -/* 08A900 80089D00 AFA00038 */ sw $zero, 0x38($sp) -/* 08A904 80089D04 10400005 */ beqz $v0, .L80089D1C -/* 08A908 80089D08 AFA00034 */ sw $zero, 0x34($sp) -/* 08A90C 80089D0C 00447023 */ subu $t6, $v0, $a0 -/* 08A910 80089D10 05C10002 */ bgez $t6, .L80089D1C -/* 08A914 80089D14 AD6E0000 */ sw $t6, ($t3) -/* 08A918 80089D18 AD600000 */ sw $zero, ($t3) -.L80089D1C: -/* 08A91C 80089D1C 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 08A920 80089D20 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 08A924 80089D24 3C038012 */ lui $v1, %hi(gOptionBlinkTimer) # $v1, 0x8012 -/* 08A928 80089D28 1040000F */ beqz $v0, .L80089D68 -/* 08A92C 80089D2C 246363BC */ addiu $v1, %lo(gOptionBlinkTimer) # addiu $v1, $v1, 0x63bc -/* 08A930 80089D30 18400008 */ blez $v0, .L80089D54 -/* 08A934 80089D34 0044C823 */ subu $t9, $v0, $a0 -/* 08A938 80089D38 0044C021 */ addu $t8, $v0, $a0 -/* 08A93C 80089D3C 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 08A940 80089D40 AC38F47C */ sw $t8, %lo(gMenuDelay)($at) -/* 08A944 80089D44 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 08A948 80089D48 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 08A94C 80089D4C 10000007 */ b .L80089D6C -/* 08A950 80089D50 8C6E0000 */ lw $t6, ($v1) -.L80089D54: -/* 08A954 80089D54 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 08A958 80089D58 AC39F47C */ sw $t9, %lo(gMenuDelay)($at) -/* 08A95C 80089D5C 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 08A960 80089D60 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 08A964 80089D64 00000000 */ nop -.L80089D68: -/* 08A968 80089D68 8C6E0000 */ lw $t6, ($v1) -.L80089D6C: -/* 08A96C 80089D6C 2841FFED */ slti $at, $v0, -0x13 -/* 08A970 80089D70 01C47821 */ addu $t7, $t6, $a0 -/* 08A974 80089D74 31F8003F */ andi $t8, $t7, 0x3f -/* 08A978 80089D78 14200009 */ bnez $at, .L80089DA0 -/* 08A97C 80089D7C AC780000 */ sw $t8, ($v1) -/* 08A980 80089D80 28410014 */ slti $at, $v0, 0x14 -/* 08A984 80089D84 10200006 */ beqz $at, .L80089DA0 -/* 08A988 80089D88 00000000 */ nop -/* 08A98C 80089D8C 0C0225A9 */ jal render_magic_codes_ui -/* 08A990 80089D90 AFA70044 */ sw $a3, 0x44($sp) -/* 08A994 80089D94 3C0B8012 */ lui $t3, %hi(gOpacityDecayTimer) # $t3, 0x8012 -/* 08A998 80089D98 8FA70044 */ lw $a3, 0x44($sp) -/* 08A99C 80089D9C 256B63D8 */ addiu $t3, %lo(gOpacityDecayTimer) # addiu $t3, $t3, 0x63d8 -.L80089DA0: -/* 08A9A0 80089DA0 3C198012 */ lui $t9, %hi(gIgnorePlayerInputTime) # $t9, 0x8012 -/* 08A9A4 80089DA4 8F3963C4 */ lw $t9, %lo(gIgnorePlayerInputTime)($t9) -/* 08A9A8 80089DA8 00005025 */ move $t2, $zero -/* 08A9AC 80089DAC 00004025 */ move $t0, $zero -/* 08A9B0 80089DB0 17200025 */ bnez $t9, .L80089E48 -/* 08A9B4 80089DB4 00004825 */ move $t1, $zero -/* 08A9B8 80089DB8 3C0E800E */ lui $t6, %hi(gMenuDelay) # $t6, 0x800e -/* 08A9BC 80089DBC 8DCEF47C */ lw $t6, %lo(gMenuDelay)($t6) -/* 08A9C0 80089DC0 00003025 */ move $a2, $zero -/* 08A9C4 80089DC4 15C00020 */ bnez $t6, .L80089E48 -/* 08A9C8 80089DC8 3C038012 */ lui $v1, %hi(gControllersXAxisDirection) # $v1, 0x8012 -/* 08A9CC 80089DCC 3C058012 */ lui $a1, %hi(gControllersYAxisDirection) # $a1, 0x8012 -/* 08A9D0 80089DD0 24A56464 */ addiu $a1, %lo(gControllersYAxisDirection) # addiu $a1, $a1, 0x6464 -/* 08A9D4 80089DD4 2463645C */ addiu $v1, %lo(gControllersXAxisDirection) # addiu $v1, $v1, 0x645c -.L80089DD8: -/* 08A9D8 80089DD8 00C02025 */ move $a0, $a2 -/* 08A9DC 80089DDC AFA30020 */ sw $v1, 0x20($sp) -/* 08A9E0 80089DE0 AFA5001C */ sw $a1, 0x1c($sp) -/* 08A9E4 80089DE4 AFA6005C */ sw $a2, 0x5c($sp) -/* 08A9E8 80089DE8 AFA70044 */ sw $a3, 0x44($sp) -/* 08A9EC 80089DEC AFA80054 */ sw $t0, 0x54($sp) -/* 08A9F0 80089DF0 AFA90050 */ sw $t1, 0x50($sp) -/* 08A9F4 80089DF4 0C01A955 */ jal get_buttons_pressed_from_player -/* 08A9F8 80089DF8 AFAA0058 */ sw $t2, 0x58($sp) -/* 08A9FC 80089DFC 8FA30020 */ lw $v1, 0x20($sp) -/* 08AA00 80089E00 8FA5001C */ lw $a1, 0x1c($sp) -/* 08AA04 80089E04 8FA6005C */ lw $a2, 0x5c($sp) -/* 08AA08 80089E08 8FA80054 */ lw $t0, 0x54($sp) -/* 08AA0C 80089E0C 8FA90050 */ lw $t1, 0x50($sp) -/* 08AA10 80089E10 8FAA0058 */ lw $t2, 0x58($sp) -/* 08AA14 80089E14 806F0000 */ lb $t7, ($v1) -/* 08AA18 80089E18 80B80000 */ lb $t8, ($a1) -/* 08AA1C 80089E1C 24010004 */ li $at, 4 -/* 08AA20 80089E20 8FA70044 */ lw $a3, 0x44($sp) -/* 08AA24 80089E24 24C60001 */ addiu $a2, $a2, 1 -/* 08AA28 80089E28 24630001 */ addiu $v1, $v1, 1 -/* 08AA2C 80089E2C 24A50001 */ addiu $a1, $a1, 1 -/* 08AA30 80089E30 01425025 */ or $t2, $t2, $v0 -/* 08AA34 80089E34 010F4021 */ addu $t0, $t0, $t7 -/* 08AA38 80089E38 14C1FFE7 */ bne $a2, $at, .L80089DD8 -/* 08AA3C 80089E3C 01384821 */ addu $t1, $t1, $t8 -/* 08AA40 80089E40 3C0B8012 */ lui $t3, %hi(gOpacityDecayTimer) # $t3, 0x8012 -/* 08AA44 80089E44 256B63D8 */ addiu $t3, %lo(gOpacityDecayTimer) # addiu $t3, $t3, 0x63d8 -.L80089E48: -/* 08AA48 80089E48 3C0D8012 */ lui $t5, %hi(gOptionsMenuItemIndex) # $t5, 0x8012 -/* 08AA4C 80089E4C 25AD6C46 */ addiu $t5, %lo(gOptionsMenuItemIndex) # addiu $t5, $t5, 0x6c46 -/* 08AA50 80089E50 85A20000 */ lh $v0, ($t5) -/* 08AA54 80089E54 24010004 */ li $at, 4 -/* 08AA58 80089E58 14410009 */ bne $v0, $at, .L80089E80 -/* 08AA5C 80089E5C 240C0005 */ li $t4, 5 -/* 08AA60 80089E60 8D790000 */ lw $t9, ($t3) -/* 08AA64 80089E64 314E9000 */ andi $t6, $t2, 0x9000 -/* 08AA68 80089E68 13200003 */ beqz $t9, .L80089E78 -/* 08AA6C 80089E6C 00000000 */ nop -/* 08AA70 80089E70 11C00155 */ beqz $t6, .L8008A3C8 -/* 08AA74 80089E74 8FAF003C */ lw $t7, 0x3c($sp) -.L80089E78: -/* 08AA78 80089E78 10000152 */ b .L8008A3C4 -/* 08AA7C 80089E7C A5A00000 */ sh $zero, ($t5) -.L80089E80: -/* 08AA80 80089E80 158200CD */ bne $t4, $v0, .L8008A1B8 -/* 08AA84 80089E84 241F0006 */ li $ra, 6 -/* 08AA88 80089E88 3C028012 */ lui $v0, %hi(gCheatInputCurrentColumn) # $v0, 0x8012 -/* 08AA8C 80089E8C 24426C42 */ addiu $v0, %lo(gCheatInputCurrentColumn) # addiu $v0, $v0, 0x6c42 -/* 08AA90 80089E90 84430000 */ lh $v1, ($v0) -/* 08AA94 80089E94 3C058012 */ lui $a1, %hi(gCheatInputCurrentRow) # $a1, 0x8012 -/* 08AA98 80089E98 24A56C40 */ addiu $a1, %lo(gCheatInputCurrentRow) # addiu $a1, $a1, 0x6c40 -/* 08AA9C 80089E9C 84A40000 */ lh $a0, ($a1) -/* 08AAA0 80089EA0 306F000F */ andi $t7, $v1, 0xf -/* 08AAA4 80089EA4 000FC100 */ sll $t8, $t7, 4 -/* 08AAA8 80089EA8 0501000A */ bgez $t0, .L80089ED4 -/* 08AAAC 80089EAC 03043025 */ or $a2, $t8, $a0 -/* 08AAB0 80089EB0 2479FFFF */ addiu $t9, $v1, -1 -/* 08AAB4 80089EB4 A4590000 */ sh $t9, ($v0) -/* 08AAB8 80089EB8 84430000 */ lh $v1, ($v0) -/* 08AABC 80089EBC 241F0006 */ li $ra, 6 -/* 08AAC0 80089EC0 04610004 */ bgez $v1, .L80089ED4 -/* 08AAC4 80089EC4 00000000 */ nop -/* 08AAC8 80089EC8 A45F0000 */ sh $ra, ($v0) -/* 08AACC 80089ECC 84430000 */ lh $v1, ($v0) -/* 08AAD0 80089ED0 00000000 */ nop -.L80089ED4: -/* 08AAD4 80089ED4 1900000B */ blez $t0, .L80089F04 -/* 08AAD8 80089ED8 241F0006 */ li $ra, 6 -/* 08AADC 80089EDC 246E0001 */ addiu $t6, $v1, 1 -/* 08AAE0 80089EE0 A44E0000 */ sh $t6, ($v0) -/* 08AAE4 80089EE4 84430000 */ lh $v1, ($v0) -/* 08AAE8 80089EE8 00000000 */ nop -/* 08AAEC 80089EEC 28610007 */ slti $at, $v1, 7 -/* 08AAF0 80089EF0 14200004 */ bnez $at, .L80089F04 -/* 08AAF4 80089EF4 00000000 */ nop -/* 08AAF8 80089EF8 A4400000 */ sh $zero, ($v0) -/* 08AAFC 80089EFC 84430000 */ lh $v1, ($v0) -/* 08AB00 80089F00 00000000 */ nop -.L80089F04: -/* 08AB04 80089F04 3062000F */ andi $v0, $v1, 0xf -/* 08AB08 80089F08 00027900 */ sll $t7, $v0, 4 -/* 08AB0C 80089F0C 0521000B */ bgez $t1, .L80089F3C -/* 08AB10 80089F10 01E01025 */ move $v0, $t7 -/* 08AB14 80089F14 24980001 */ addiu $t8, $a0, 1 -/* 08AB18 80089F18 A4B80000 */ sh $t8, ($a1) -/* 08AB1C 80089F1C 84A40000 */ lh $a0, ($a1) -/* 08AB20 80089F20 00000000 */ nop -/* 08AB24 80089F24 28810004 */ slti $at, $a0, 4 -/* 08AB28 80089F28 14200004 */ bnez $at, .L80089F3C -/* 08AB2C 80089F2C 00000000 */ nop -/* 08AB30 80089F30 A4A00000 */ sh $zero, ($a1) -/* 08AB34 80089F34 84A40000 */ lh $a0, ($a1) -/* 08AB38 80089F38 00000000 */ nop -.L80089F3C: -/* 08AB3C 80089F3C 1920000A */ blez $t1, .L80089F68 -/* 08AB40 80089F40 31588000 */ andi $t8, $t2, 0x8000 -/* 08AB44 80089F44 2499FFFF */ addiu $t9, $a0, -1 -/* 08AB48 80089F48 A4B90000 */ sh $t9, ($a1) -/* 08AB4C 80089F4C 84A40000 */ lh $a0, ($a1) -/* 08AB50 80089F50 24080003 */ li $t0, 3 -/* 08AB54 80089F54 04810005 */ bgez $a0, .L80089F6C -/* 08AB58 80089F58 00447025 */ or $t6, $v0, $a0 -/* 08AB5C 80089F5C A4A80000 */ sh $t0, ($a1) -/* 08AB60 80089F60 84A40000 */ lh $a0, ($a1) -/* 08AB64 80089F64 00000000 */ nop -.L80089F68: -/* 08AB68 80089F68 00447025 */ or $t6, $v0, $a0 -.L80089F6C: -/* 08AB6C 80089F6C 10CE0003 */ beq $a2, $t6, .L80089F7C -/* 08AB70 80089F70 24080003 */ li $t0, 3 -/* 08AB74 80089F74 240F0001 */ li $t7, 1 -/* 08AB78 80089F78 AFAF0034 */ sw $t7, 0x34($sp) -.L80089F7C: -/* 08AB7C 80089F7C 13000020 */ beqz $t8, .L8008A000 -/* 08AB80 80089F80 00002825 */ move $a1, $zero -/* 08AB84 80089F84 15040005 */ bne $t0, $a0, .L80089F9C -/* 08AB88 80089F88 00000000 */ nop -/* 08AB8C 80089F8C 15830003 */ bne $t4, $v1, .L80089F9C -/* 08AB90 80089F90 24190001 */ li $t9, 1 -/* 08AB94 80089F94 1000001A */ b .L8008A000 -/* 08AB98 80089F98 AFB9004C */ sw $t9, 0x4c($sp) -.L80089F9C: -/* 08AB9C 80089F9C 15040005 */ bne $t0, $a0, .L80089FB4 -/* 08ABA0 80089FA0 3C068012 */ lui $a2, %hi(gCheatInputStringLength) # $a2, 0x8012 -/* 08ABA4 80089FA4 17E30003 */ bne $ra, $v1, .L80089FB4 -/* 08ABA8 80089FA8 240E0001 */ li $t6, 1 -/* 08ABAC 80089FAC 10000014 */ b .L8008A000 -/* 08ABB0 80089FB0 AFAE0048 */ sw $t6, 0x48($sp) -.L80089FB4: -/* 08ABB4 80089FB4 24C66C44 */ addiu $a2, %lo(gCheatInputStringLength) # addiu $a2, $a2, 0x6c44 -/* 08ABB8 80089FB8 84C20000 */ lh $v0, ($a2) -/* 08ABBC 80089FBC 240F0001 */ li $t7, 1 -/* 08ABC0 80089FC0 28410013 */ slti $at, $v0, 0x13 -/* 08ABC4 80089FC4 1020000E */ beqz $at, .L8008A000 -/* 08ABC8 80089FC8 0004C0C0 */ sll $t8, $a0, 3 -/* 08ABCC 80089FCC 0304C023 */ subu $t8, $t8, $a0 -/* 08ABD0 80089FD0 0303C821 */ addu $t9, $t8, $v1 -/* 08ABD4 80089FD4 3C018012 */ lui $at, %hi(D_80126C58) # $at, 0x8012 -/* 08ABD8 80089FD8 AFAF0038 */ sw $t7, 0x38($sp) -/* 08ABDC 80089FDC 00220821 */ addu $at, $at, $v0 -/* 08ABE0 80089FE0 272E0041 */ addiu $t6, $t9, 0x41 -/* 08ABE4 80089FE4 A02E6C58 */ sb $t6, %lo(D_80126C58)($at) -/* 08ABE8 80089FE8 244F0001 */ addiu $t7, $v0, 1 -/* 08ABEC 80089FEC A4CF0000 */ sh $t7, ($a2) -/* 08ABF0 80089FF0 84D80000 */ lh $t8, ($a2) -/* 08ABF4 80089FF4 3C018012 */ lui $at, %hi(D_80126C58) # $at, 0x8012 -/* 08ABF8 80089FF8 00380821 */ addu $at, $at, $t8 -/* 08ABFC 80089FFC A0206C58 */ sb $zero, %lo(D_80126C58)($at) -.L8008A000: -/* 08AC00 8008A000 3C068012 */ lui $a2, %hi(gCheatInputStringLength) # $a2, 0x8012 -/* 08AC04 8008A004 31594000 */ andi $t9, $t2, 0x4000 -/* 08AC08 8008A008 13200008 */ beqz $t9, .L8008A02C -/* 08AC0C 8008A00C 24C66C44 */ addiu $a2, %lo(gCheatInputStringLength) # addiu $a2, $a2, 0x6c44 -/* 08AC10 8008A010 84CE0000 */ lh $t6, ($a2) -/* 08AC14 8008A014 240F0001 */ li $t7, 1 -/* 08AC18 8008A018 19C00003 */ blez $t6, .L8008A028 -/* 08AC1C 8008A01C 00000000 */ nop -/* 08AC20 8008A020 10000002 */ b .L8008A02C -/* 08AC24 8008A024 AFAF004C */ sw $t7, 0x4c($sp) -.L8008A028: -/* 08AC28 8008A028 A5A00000 */ sh $zero, ($t5) -.L8008A02C: -/* 08AC2C 8008A02C 31581000 */ andi $t8, $t2, 0x1000 -/* 08AC30 8008A030 13000002 */ beqz $t8, .L8008A03C -/* 08AC34 8008A034 24190001 */ li $t9, 1 -/* 08AC38 8008A038 AFB90048 */ sw $t9, 0x48($sp) -.L8008A03C: -/* 08AC3C 8008A03C 8FAE004C */ lw $t6, 0x4c($sp) -/* 08AC40 8008A040 240400AE */ li $a0, 174 -/* 08AC44 8008A044 11C00011 */ beqz $t6, .L8008A08C -/* 08AC48 8008A048 8FB90048 */ lw $t9, 0x48($sp) -/* 08AC4C 8008A04C 0C000741 */ jal play_sound_global -/* 08AC50 8008A050 AFA70044 */ sw $a3, 0x44($sp) -/* 08AC54 8008A054 3C068012 */ lui $a2, %hi(gCheatInputStringLength) # $a2, 0x8012 -/* 08AC58 8008A058 24C66C44 */ addiu $a2, %lo(gCheatInputStringLength) # addiu $a2, $a2, 0x6c44 -/* 08AC5C 8008A05C 84C20000 */ lh $v0, ($a2) -/* 08AC60 8008A060 8FA70044 */ lw $a3, 0x44($sp) -/* 08AC64 8008A064 3C0D8012 */ lui $t5, %hi(gOptionsMenuItemIndex) # $t5, 0x8012 -/* 08AC68 8008A068 18400007 */ blez $v0, .L8008A088 -/* 08AC6C 8008A06C 25AD6C46 */ addiu $t5, %lo(gOptionsMenuItemIndex) # addiu $t5, $t5, 0x6c46 -/* 08AC70 8008A070 244FFFFF */ addiu $t7, $v0, -1 -/* 08AC74 8008A074 A4CF0000 */ sh $t7, ($a2) -/* 08AC78 8008A078 84D80000 */ lh $t8, ($a2) -/* 08AC7C 8008A07C 3C018012 */ lui $at, %hi(D_80126C58) # $at, 0x8012 -/* 08AC80 8008A080 00380821 */ addu $at, $at, $t8 -/* 08AC84 8008A084 A0206C58 */ sb $zero, %lo(D_80126C58)($at) -.L8008A088: -/* 08AC88 8008A088 8FB90048 */ lw $t9, 0x48($sp) -.L8008A08C: -/* 08AC8C 8008A08C 00000000 */ nop -/* 08AC90 8008A090 132000CD */ beqz $t9, .L8008A3C8 -/* 08AC94 8008A094 8FAF003C */ lw $t7, 0x3c($sp) -/* 08AC98 8008A098 84CF0000 */ lh $t7, ($a2) -/* 08AC9C 8008A09C 240E0001 */ li $t6, 1 -/* 08ACA0 8008A0A0 15E00003 */ bnez $t7, .L8008A0B0 -/* 08ACA4 8008A0A4 AFAE0038 */ sw $t6, 0x38($sp) -/* 08ACA8 8008A0A8 100000C6 */ b .L8008A3C4 -/* 08ACAC 8008A0AC A5A00000 */ sh $zero, ($t5) -.L8008A0B0: -/* 08ACB0 8008A0B0 3C0B8012 */ lui $t3, %hi(D_80126C4C) # $t3, 0x8012 -/* 08ACB4 8008A0B4 3C098012 */ lui $t1, %hi(gCheatsAssetData) # $t1, 0x8012 -/* 08ACB8 8008A0B8 8D296C30 */ lw $t1, %lo(gCheatsAssetData)($t1) -/* 08ACBC 8008A0BC 256B6C4C */ addiu $t3, %lo(D_80126C4C) # addiu $t3, $t3, 0x6c4c -/* 08ACC0 8008A0C0 A5600000 */ sh $zero, ($t3) -/* 08ACC4 8008A0C4 3C0A8012 */ lui $t2, %hi(gNumberOfCheats) # $t2, 0x8012 -/* 08ACC8 8008A0C8 8D4A6C38 */ lw $t2, %lo(gNumberOfCheats)($t2) -/* 08ACCC 8008A0CC 85680000 */ lh $t0, ($t3) -/* 08ACD0 8008A0D0 000AC040 */ sll $t8, $t2, 1 -/* 08ACD4 8008A0D4 0118082A */ slt $at, $t0, $t8 -/* 08ACD8 8008A0D8 03005025 */ move $t2, $t8 -/* 08ACDC 8008A0DC 1020001F */ beqz $at, .L8008A15C -/* 08ACE0 8008A0E0 252C0002 */ addiu $t4, $t1, 2 -/* 08ACE4 8008A0E4 0008C840 */ sll $t9, $t0, 1 -.L8008A0E8: -/* 08ACE8 8008A0E8 01997021 */ addu $t6, $t4, $t9 -/* 08ACEC 8008A0EC 95CF0000 */ lhu $t7, ($t6) -/* 08ACF0 8008A0F0 3C058012 */ lui $a1, %hi(D_80126C54 + 3) # $a1, 0x8012 -/* 08ACF4 8008A0F4 01E91021 */ addu $v0, $t7, $t1 -/* 08ACF8 8008A0F8 24070001 */ li $a3, 1 -/* 08ACFC 8008A0FC 2444FFFF */ addiu $a0, $v0, -1 -/* 08AD00 8008A100 24A56C57 */ addiu $a1, %lo(D_80126C54 + 3) # addiu $a1, $a1, 0x6c57 -.L8008A104: -/* 08AD04 8008A104 90820001 */ lbu $v0, 1($a0) -/* 08AD08 8008A108 90A30001 */ lbu $v1, 1($a1) -/* 08AD0C 8008A10C 24840001 */ addiu $a0, $a0, 1 -/* 08AD10 8008A110 10430002 */ beq $v0, $v1, .L8008A11C -/* 08AD14 8008A114 24A50001 */ addiu $a1, $a1, 1 -/* 08AD18 8008A118 00003825 */ move $a3, $zero -.L8008A11C: -/* 08AD1C 8008A11C 10E00005 */ beqz $a3, .L8008A134 -/* 08AD20 8008A120 00000000 */ nop -/* 08AD24 8008A124 10400003 */ beqz $v0, .L8008A134 -/* 08AD28 8008A128 00000000 */ nop -/* 08AD2C 8008A12C 1460FFF5 */ bnez $v1, .L8008A104 -/* 08AD30 8008A130 00000000 */ nop -.L8008A134: -/* 08AD34 8008A134 14E00004 */ bnez $a3, .L8008A148 -/* 08AD38 8008A138 25180002 */ addiu $t8, $t0, 2 -/* 08AD3C 8008A13C A5780000 */ sh $t8, ($t3) -/* 08AD40 8008A140 85680000 */ lh $t0, ($t3) -/* 08AD44 8008A144 00000000 */ nop -.L8008A148: -/* 08AD48 8008A148 010A082A */ slt $at, $t0, $t2 -/* 08AD4C 8008A14C 10200003 */ beqz $at, .L8008A15C -/* 08AD50 8008A150 00000000 */ nop -/* 08AD54 8008A154 10E0FFE4 */ beqz $a3, .L8008A0E8 -/* 08AD58 8008A158 0008C840 */ sll $t9, $t0, 1 -.L8008A15C: -/* 08AD5C 8008A15C 14E00003 */ bnez $a3, .L8008A16C -/* 08AD60 8008A160 2419FFFF */ li $t9, -1 -/* 08AD64 8008A164 1000000E */ b .L8008A1A0 -/* 08AD68 8008A168 A5790000 */ sh $t9, ($t3) -.L8008A16C: -/* 08AD6C 8008A16C 3C03800E */ lui $v1, %hi(gUnlockedMagicCodes) # $v1, 0x800e -/* 08AD70 8008A170 2463FD9C */ addiu $v1, %lo(gUnlockedMagicCodes) # addiu $v1, $v1, -0x264 -/* 08AD74 8008A174 8C780000 */ lw $t8, ($v1) -/* 08AD78 8008A178 00087043 */ sra $t6, $t0, 1 -/* 08AD7C 8008A17C 240F0001 */ li $t7, 1 -/* 08AD80 8008A180 01CF1004 */ sllv $v0, $t7, $t6 -/* 08AD84 8008A184 0302C825 */ or $t9, $t8, $v0 -/* 08AD88 8008A188 AC790000 */ sw $t9, ($v1) -/* 08AD8C 8008A18C 3C0F800E */ lui $t7, %hi(gActiveMagicCodes) # $t7, 0x800e -/* 08AD90 8008A190 8DEFFD98 */ lw $t7, %lo(gActiveMagicCodes)($t7) -/* 08AD94 8008A194 3C01800E */ lui $at, %hi(gActiveMagicCodes) # $at, 0x800e -/* 08AD98 8008A198 01E27025 */ or $t6, $t7, $v0 -/* 08AD9C 8008A19C AC2EFD98 */ sw $t6, %lo(gActiveMagicCodes)($at) -.L8008A1A0: -/* 08ADA0 8008A1A0 24180004 */ li $t8, 4 -/* 08ADA4 8008A1A4 A5B80000 */ sh $t8, ($t5) -/* 08ADA8 8008A1A8 241900F0 */ li $t9, 240 -/* 08ADAC 8008A1AC 3C018012 */ lui $at, %hi(gOpacityDecayTimer) # $at, 0x8012 -/* 08ADB0 8008A1B0 10000084 */ b .L8008A3C4 -/* 08ADB4 8008A1B4 AC3963D8 */ sw $t9, %lo(gOpacityDecayTimer)($at) -.L8008A1B8: -/* 08ADB8 8008A1B8 17E20009 */ bne $ra, $v0, .L8008A1E0 -/* 08ADBC 8008A1BC 3C048012 */ lui $a0, %hi(D_801263E0) # $a0, 0x8012 -/* 08ADC0 8008A1C0 8D6F0000 */ lw $t7, ($t3) -/* 08ADC4 8008A1C4 314E9000 */ andi $t6, $t2, 0x9000 -/* 08ADC8 8008A1C8 11E00003 */ beqz $t7, .L8008A1D8 -/* 08ADCC 8008A1CC 24180001 */ li $t8, 1 -/* 08ADD0 8008A1D0 11C0007D */ beqz $t6, .L8008A3C8 -/* 08ADD4 8008A1D4 8FAF003C */ lw $t7, 0x3c($sp) -.L8008A1D8: -/* 08ADD8 8008A1D8 1000007A */ b .L8008A3C4 -/* 08ADDC 8008A1DC A5B80000 */ sh $t8, ($t5) -.L8008A1E0: -/* 08ADE0 8008A1E0 248463E0 */ addiu $a0, %lo(D_801263E0) # addiu $a0, $a0, 0x63e0 -/* 08ADE4 8008A1E4 8C830000 */ lw $v1, ($a0) -/* 08ADE8 8008A1E8 31599000 */ andi $t9, $t2, 0x9000 -/* 08ADEC 8008A1EC 1060002C */ beqz $v1, .L8008A2A0 -/* 08ADF0 8008A1F0 31589000 */ andi $t8, $t2, 0x9000 -/* 08ADF4 8008A1F4 13200015 */ beqz $t9, .L8008A24C -/* 08ADF8 8008A1F8 314E4000 */ andi $t6, $t2, 0x4000 -/* 08ADFC 8008A1FC 24010001 */ li $at, 1 -/* 08AE00 8008A200 1461000E */ bne $v1, $at, .L8008A23C -/* 08AE04 8008A204 240F0001 */ li $t7, 1 -/* 08AE08 8008A208 3C03800E */ lui $v1, %hi(gUnlockedMagicCodes) # $v1, 0x800e -/* 08AE0C 8008A20C 3C01800E */ lui $at, %hi(gActiveMagicCodes) # $at, 0x800e -/* 08AE10 8008A210 2463FD9C */ addiu $v1, %lo(gUnlockedMagicCodes) # addiu $v1, $v1, -0x264 -/* 08AE14 8008A214 AC20FD98 */ sw $zero, %lo(gActiveMagicCodes)($at) -/* 08AE18 8008A218 8C6E0000 */ lw $t6, ($v1) -/* 08AE1C 8008A21C A5BF0000 */ sh $ra, ($t5) -/* 08AE20 8008A220 31D80003 */ andi $t8, $t6, 3 -/* 08AE24 8008A224 AC780000 */ sw $t8, ($v1) -/* 08AE28 8008A228 3C018012 */ lui $at, %hi(gOpacityDecayTimer) # $at, 0x8012 -/* 08AE2C 8008A22C 241900F0 */ li $t9, 240 -/* 08AE30 8008A230 AFAF0038 */ sw $t7, 0x38($sp) -/* 08AE34 8008A234 10000003 */ b .L8008A244 -/* 08AE38 8008A238 AC3963D8 */ sw $t9, %lo(gOpacityDecayTimer)($at) -.L8008A23C: -/* 08AE3C 8008A23C 240F0001 */ li $t7, 1 -/* 08AE40 8008A240 AFAF003C */ sw $t7, 0x3c($sp) -.L8008A244: -/* 08AE44 8008A244 1000005F */ b .L8008A3C4 -/* 08AE48 8008A248 AC800000 */ sw $zero, ($a0) -.L8008A24C: -/* 08AE4C 8008A24C 11C00004 */ beqz $t6, .L8008A260 -/* 08AE50 8008A250 24180001 */ li $t8, 1 -/* 08AE54 8008A254 AFB8003C */ sw $t8, 0x3c($sp) -/* 08AE58 8008A258 1000005A */ b .L8008A3C4 -/* 08AE5C 8008A25C AC800000 */ sw $zero, ($a0) -.L8008A260: -/* 08AE60 8008A260 05210007 */ bgez $t1, .L8008A280 -/* 08AE64 8008A264 24010001 */ li $at, 1 -/* 08AE68 8008A268 14610005 */ bne $v1, $at, .L8008A280 -/* 08AE6C 8008A26C 24190001 */ li $t9, 1 -/* 08AE70 8008A270 240F0002 */ li $t7, 2 -/* 08AE74 8008A274 AFB90034 */ sw $t9, 0x34($sp) -/* 08AE78 8008A278 10000052 */ b .L8008A3C4 -/* 08AE7C 8008A27C AC8F0000 */ sw $t7, ($a0) -.L8008A280: -/* 08AE80 8008A280 19200050 */ blez $t1, .L8008A3C4 -/* 08AE84 8008A284 24010002 */ li $at, 2 -/* 08AE88 8008A288 1461004E */ bne $v1, $at, .L8008A3C4 -/* 08AE8C 8008A28C 240E0001 */ li $t6, 1 -/* 08AE90 8008A290 24180001 */ li $t8, 1 -/* 08AE94 8008A294 AFAE0034 */ sw $t6, 0x34($sp) -/* 08AE98 8008A298 1000004A */ b .L8008A3C4 -/* 08AE9C 8008A29C AC980000 */ sw $t8, ($a0) -.L8008A2A0: -/* 08AEA0 8008A2A0 0521000B */ bgez $t1, .L8008A2D0 -/* 08AEA4 8008A2A4 00403025 */ move $a2, $v0 -/* 08AEA8 8008A2A8 24590001 */ addiu $t9, $v0, 1 -/* 08AEAC 8008A2AC A5B90000 */ sh $t9, ($t5) -/* 08AEB0 8008A2B0 85A20000 */ lh $v0, ($t5) -/* 08AEB4 8008A2B4 24080003 */ li $t0, 3 -/* 08AEB8 8008A2B8 28410004 */ slti $at, $v0, 4 -/* 08AEBC 8008A2BC 14200004 */ bnez $at, .L8008A2D0 -/* 08AEC0 8008A2C0 00000000 */ nop -/* 08AEC4 8008A2C4 A5A80000 */ sh $t0, ($t5) -/* 08AEC8 8008A2C8 85A20000 */ lh $v0, ($t5) -/* 08AECC 8008A2CC 00000000 */ nop -.L8008A2D0: -/* 08AED0 8008A2D0 1920000A */ blez $t1, .L8008A2FC -/* 08AED4 8008A2D4 24080003 */ li $t0, 3 -/* 08AED8 8008A2D8 244FFFFF */ addiu $t7, $v0, -1 -/* 08AEDC 8008A2DC A5AF0000 */ sh $t7, ($t5) -/* 08AEE0 8008A2E0 85A20000 */ lh $v0, ($t5) -/* 08AEE4 8008A2E4 00000000 */ nop -/* 08AEE8 8008A2E8 04410004 */ bgez $v0, .L8008A2FC -/* 08AEEC 8008A2EC 00000000 */ nop -/* 08AEF0 8008A2F0 A5A00000 */ sh $zero, ($t5) -/* 08AEF4 8008A2F4 85A20000 */ lh $v0, ($t5) -/* 08AEF8 8008A2F8 00000000 */ nop -.L8008A2FC: -/* 08AEFC 8008A2FC 10C20002 */ beq $a2, $v0, .L8008A308 -/* 08AF00 8008A300 240E0001 */ li $t6, 1 -/* 08AF04 8008A304 AFAE0034 */ sw $t6, 0x34($sp) -.L8008A308: -/* 08AF08 8008A308 1300001D */ beqz $t8, .L8008A380 -/* 08AF0C 8008A30C 24190001 */ li $t9, 1 -/* 08AF10 8008A310 15020004 */ bne $t0, $v0, .L8008A324 -/* 08AF14 8008A314 AFB90038 */ sw $t9, 0x38($sp) -/* 08AF18 8008A318 240FFFFF */ li $t7, -1 -/* 08AF1C 8008A31C 10000018 */ b .L8008A380 -/* 08AF20 8008A320 AFAF0040 */ sw $t7, 0x40($sp) -.L8008A324: -/* 08AF24 8008A324 1440000D */ bnez $v0, .L8008A35C -/* 08AF28 8008A328 3C058012 */ lui $a1, %hi(gCheatInputCurrentRow) # $a1, 0x8012 -/* 08AF2C 8008A32C 3C028012 */ lui $v0, %hi(gCheatInputCurrentColumn) # $v0, 0x8012 -/* 08AF30 8008A330 3C068012 */ lui $a2, %hi(gCheatInputStringLength) # $a2, 0x8012 -/* 08AF34 8008A334 24C66C44 */ addiu $a2, %lo(gCheatInputStringLength) # addiu $a2, $a2, 0x6c44 -/* 08AF38 8008A338 24426C42 */ addiu $v0, %lo(gCheatInputCurrentColumn) # addiu $v0, $v0, 0x6c42 -/* 08AF3C 8008A33C 24A56C40 */ addiu $a1, %lo(gCheatInputCurrentRow) # addiu $a1, $a1, 0x6c40 -/* 08AF40 8008A340 A4A00000 */ sh $zero, ($a1) -/* 08AF44 8008A344 A4400000 */ sh $zero, ($v0) -/* 08AF48 8008A348 A4C00000 */ sh $zero, ($a2) -/* 08AF4C 8008A34C 3C018012 */ lui $at, %hi(D_80126C58) # $at, 0x8012 -/* 08AF50 8008A350 A0206C58 */ sb $zero, %lo(D_80126C58)($at) -/* 08AF54 8008A354 1000000A */ b .L8008A380 -/* 08AF58 8008A358 A5AC0000 */ sh $t4, ($t5) -.L8008A35C: -/* 08AF5C 8008A35C 24010001 */ li $at, 1 -/* 08AF60 8008A360 14410003 */ bne $v0, $at, .L8008A370 -/* 08AF64 8008A364 240E0002 */ li $t6, 2 -/* 08AF68 8008A368 10000005 */ b .L8008A380 -/* 08AF6C 8008A36C AC8E0000 */ sw $t6, ($a0) -.L8008A370: -/* 08AF70 8008A370 24010002 */ li $at, 2 -/* 08AF74 8008A374 14410002 */ bne $v0, $at, .L8008A380 -/* 08AF78 8008A378 24180001 */ li $t8, 1 -/* 08AF7C 8008A37C AFB80040 */ sw $t8, 0x40($sp) -.L8008A380: -/* 08AF80 8008A380 31594000 */ andi $t9, $t2, 0x4000 -/* 08AF84 8008A384 13200002 */ beqz $t9, .L8008A390 -/* 08AF88 8008A388 240FFFFF */ li $t7, -1 -/* 08AF8C 8008A38C AFAF0040 */ sw $t7, 0x40($sp) -.L8008A390: -/* 08AF90 8008A390 8FAE0040 */ lw $t6, 0x40($sp) -/* 08AF94 8008A394 00000000 */ nop -/* 08AF98 8008A398 11C0000B */ beqz $t6, .L8008A3C8 -/* 08AF9C 8008A39C 8FAF003C */ lw $t7, 0x3c($sp) -/* 08AFA0 8008A3A0 05C10003 */ bgez $t6, .L8008A3B0 -/* 08AFA4 8008A3A4 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 08AFA8 8008A3A8 24180001 */ li $t8, 1 -/* 08AFAC 8008A3AC AFB8003C */ sw $t8, 0x3c($sp) -.L8008A3B0: -/* 08AFB0 8008A3B0 8FB90040 */ lw $t9, 0x40($sp) -/* 08AFB4 8008A3B4 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 08AFB8 8008A3B8 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 08AFBC 8008A3BC 0C030076 */ jal transition_begin -/* 08AFC0 8008A3C0 AC39F47C */ sw $t9, %lo(gMenuDelay)($at) -.L8008A3C4: -/* 08AFC4 8008A3C4 8FAF003C */ lw $t7, 0x3c($sp) -.L8008A3C8: -/* 08AFC8 8008A3C8 00000000 */ nop -/* 08AFCC 8008A3CC 11E00005 */ beqz $t7, .L8008A3E4 -/* 08AFD0 8008A3D0 24040241 */ li $a0, 577 -/* 08AFD4 8008A3D4 0C000741 */ jal play_sound_global -/* 08AFD8 8008A3D8 00002825 */ move $a1, $zero -/* 08AFDC 8008A3DC 1000000D */ b .L8008A414 -/* 08AFE0 8008A3E0 00000000 */ nop -.L8008A3E4: -/* 08AFE4 8008A3E4 8FAE0038 */ lw $t6, 0x38($sp) -/* 08AFE8 8008A3E8 8FB80034 */ lw $t8, 0x34($sp) -/* 08AFEC 8008A3EC 11C00005 */ beqz $t6, .L8008A404 -/* 08AFF0 8008A3F0 240400EF */ li $a0, 239 -/* 08AFF4 8008A3F4 0C000741 */ jal play_sound_global -/* 08AFF8 8008A3F8 00002825 */ move $a1, $zero -/* 08AFFC 8008A3FC 10000005 */ b .L8008A414 -/* 08B000 8008A400 00000000 */ nop -.L8008A404: -/* 08B004 8008A404 13000003 */ beqz $t8, .L8008A414 -/* 08B008 8008A408 240400EB */ li $a0, 235 -/* 08B00C 8008A40C 0C000741 */ jal play_sound_global -/* 08B010 8008A410 00002825 */ move $a1, $zero -.L8008A414: -/* 08B014 8008A414 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 08B018 8008A418 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 08B01C 8008A41C 3C018012 */ lui $at, %hi(gIgnorePlayerInputTime) # $at, 0x8012 -/* 08B020 8008A420 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInputTime)($at) -/* 08B024 8008A424 2841FFE2 */ slti $at, $v0, -0x1e -/* 08B028 8008A428 14200003 */ bnez $at, .L8008A438 -/* 08B02C 8008A42C 2841001F */ slti $at, $v0, 0x1f -/* 08B030 8008A430 14200022 */ bnez $at, .L8008A4BC -/* 08B034 8008A434 8FBF0014 */ lw $ra, 0x14($sp) -.L8008A438: -/* 08B038 8008A438 0C022932 */ jal unload_big_font_2 -/* 08B03C 8008A43C 00000000 */ nop -/* 08B040 8008A440 3C19800E */ lui $t9, %hi(gMenuDelay) # $t9, 0x800e -/* 08B044 8008A444 8F39F47C */ lw $t9, %lo(gMenuDelay)($t9) -/* 08B048 8008A448 3C0F800E */ lui $t7, %hi(gActiveMagicCodes) # $t7, 0x800e -/* 08B04C 8008A44C 07210018 */ bgez $t9, .L8008A4B0 -/* 08B050 8008A450 00000000 */ nop -/* 08B054 8008A454 8DEFFD98 */ lw $t7, %lo(gActiveMagicCodes)($t7) -/* 08B058 8008A458 00000000 */ nop -/* 08B05C 8008A45C 31EE0400 */ andi $t6, $t7, 0x400 -/* 08B060 8008A460 11C0000F */ beqz $t6, .L8008A4A0 -/* 08B064 8008A464 00000000 */ nop -/* 08B068 8008A468 0C0002CA */ jal func_80000B28 -/* 08B06C 8008A46C 00000000 */ nop -/* 08B070 8008A470 24180001 */ li $t8, 1 -/* 08B074 8008A474 3C01800E */ lui $at, %hi(gViewingCreditsFromCheat) # $at, 0x800e -/* 08B078 8008A478 AC381B4C */ sw $t8, %lo(gViewingCreditsFromCheat)($at) -/* 08B07C 8008A47C 0C0204F4 */ jal menu_init -/* 08B080 8008A480 24040019 */ li $a0, 25 -/* 08B084 8008A484 3C19800E */ lui $t9, %hi(gActiveMagicCodes) # $t9, 0x800e -/* 08B088 8008A488 8F39FD98 */ lw $t9, %lo(gActiveMagicCodes)($t9) -/* 08B08C 8008A48C 2401FBFF */ li $at, -1025 -/* 08B090 8008A490 03217824 */ and $t7, $t9, $at -/* 08B094 8008A494 3C01800E */ lui $at, %hi(gActiveMagicCodes) # $at, 0x800e -/* 08B098 8008A498 10000007 */ b .L8008A4B8 -/* 08B09C 8008A49C AC2FFD98 */ sw $t7, %lo(gActiveMagicCodes)($at) -.L8008A4A0: -/* 08B0A0 8008A4A0 0C0204F4 */ jal menu_init -/* 08B0A4 8008A4A4 2404000C */ li $a0, 12 -/* 08B0A8 8008A4A8 10000004 */ b .L8008A4BC -/* 08B0AC 8008A4AC 8FBF0014 */ lw $ra, 0x14($sp) -.L8008A4B0: -/* 08B0B0 8008A4B0 0C0204F4 */ jal menu_init -/* 08B0B4 8008A4B4 2404000B */ li $a0, 11 -.L8008A4B8: -/* 08B0B8 8008A4B8 8FBF0014 */ lw $ra, 0x14($sp) -.L8008A4BC: -/* 08B0BC 8008A4BC 27BD0060 */ addiu $sp, $sp, 0x60 -/* 08B0C0 8008A4C0 03E00008 */ jr $ra -/* 08B0C4 8008A4C4 00001025 */ move $v0, $zero - diff --git a/asm/non_matchings/menu/menu_trophy_race_rankings_loop.s b/asm/non_matchings/menu/menu_trophy_race_rankings_loop.s deleted file mode 100644 index 1776f4a7..00000000 --- a/asm/non_matchings/menu/menu_trophy_race_rankings_loop.s +++ /dev/null @@ -1,427 +0,0 @@ -glabel menu_trophy_race_rankings_loop -/* 099BD4 80098FD4 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 099BD8 80098FD8 AFBF001C */ sw $ra, 0x1c($sp) -/* 099BDC 80098FDC AFA40050 */ sw $a0, 0x50($sp) -/* 099BE0 80098FE0 0C01BAA4 */ jal get_settings -/* 099BE4 80098FE4 AFA0003C */ sw $zero, 0x3c($sp) -/* 099BE8 80098FE8 3C05800E */ lui $a1, %hi(gMenuDelay) # $a1, 0x800e -/* 099BEC 80098FEC 24A5F47C */ addiu $a1, %lo(gMenuDelay) # addiu $a1, $a1, -0xb84 -/* 099BF0 80098FF0 8CA30000 */ lw $v1, ($a1) -/* 099BF4 80098FF4 8FA40050 */ lw $a0, 0x50($sp) -/* 099BF8 80098FF8 2861FFED */ slti $at, $v1, -0x13 -/* 099BFC 80098FFC 14200008 */ bnez $at, .L80099020 -/* 099C00 80099000 00405825 */ move $t3, $v0 -/* 099C04 80099004 28610014 */ slti $at, $v1, 0x14 -/* 099C08 80099008 10200005 */ beqz $at, .L80099020 -/* 099C0C 8009900C 00000000 */ nop -/* 099C10 80099010 0C0263AF */ jal func_80098EBC -/* 099C14 80099014 AFA2002C */ sw $v0, 0x2c($sp) -/* 099C18 80099018 8FAB002C */ lw $t3, 0x2c($sp) -/* 099C1C 8009901C 00000000 */ nop -.L80099020: -/* 099C20 80099020 0C026FC8 */ jal update_controller_sticks -/* 099C24 80099024 AFAB002C */ sw $t3, 0x2c($sp) -/* 099C28 80099028 3C028012 */ lui $v0, %hi(D_801263E0) # $v0, 0x8012 -/* 099C2C 8009902C 8C4263E0 */ lw $v0, %lo(D_801263E0)($v0) -/* 099C30 80099030 8FA40050 */ lw $a0, 0x50($sp) -/* 099C34 80099034 3C05800E */ lui $a1, %hi(gMenuDelay) # $a1, 0x800e -/* 099C38 80099038 8FAB002C */ lw $t3, 0x2c($sp) -/* 099C3C 8009903C 1040000B */ beqz $v0, .L8009906C -/* 099C40 80099040 24A5F47C */ addiu $a1, %lo(gMenuDelay) # addiu $a1, $a1, -0xb84 -/* 099C44 80099044 24010001 */ li $at, 1 -/* 099C48 80099048 1041001B */ beq $v0, $at, .L800990B8 -/* 099C4C 8009904C 24010002 */ li $at, 2 -/* 099C50 80099050 10410026 */ beq $v0, $at, .L800990EC -/* 099C54 80099054 3C038012 */ lui $v1, %hi(gOpacityDecayTimer) # $v1, 0x8012 -/* 099C58 80099058 24010003 */ li $at, 3 -/* 099C5C 8009905C 104100B1 */ beq $v0, $at, .L80099324 -/* 099C60 80099060 00000000 */ nop -/* 099C64 80099064 10000161 */ b .L800995EC -/* 099C68 80099068 8FBF001C */ lw $ra, 0x1c($sp) -.L8009906C: -/* 099C6C 8009906C 0C0207D3 */ jal func_80081F4C -/* 099C70 80099070 00000000 */ nop -/* 099C74 80099074 1040015C */ beqz $v0, .L800995E8 -/* 099C78 80099078 240E0001 */ li $t6, 1 -/* 099C7C 8009907C 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 -/* 099C80 80099080 AC2E63E0 */ sw $t6, %lo(D_801263E0)($at) -/* 099C84 80099084 0C0261DD */ jal func_80098774 -/* 099C88 80099088 24040001 */ li $a0, 1 -/* 099C8C 8009908C 44800000 */ mtc1 $zero, $f0 -/* 099C90 80099090 3C04800E */ lui $a0, %hi(D_800E1048) # $a0, 0x800e -/* 099C94 80099094 44060000 */ mfc1 $a2, $f0 -/* 099C98 80099098 44070000 */ mfc1 $a3, $f0 -/* 099C9C 8009909C 24841048 */ addiu $a0, %lo(D_800E1048) # addiu $a0, $a0, 0x1048 -/* 099CA0 800990A0 3C053F00 */ lui $a1, 0x3f00 -/* 099CA4 800990A4 AFA00010 */ sw $zero, 0x10($sp) -/* 099CA8 800990A8 0C020795 */ jal func_80081E54 -/* 099CAC 800990AC AFA00014 */ sw $zero, 0x14($sp) -/* 099CB0 800990B0 1000014E */ b .L800995EC -/* 099CB4 800990B4 8FBF001C */ lw $ra, 0x1c($sp) -.L800990B8: -/* 099CB8 800990B8 0C0207D3 */ jal func_80081F4C -/* 099CBC 800990BC 00000000 */ nop -/* 099CC0 800990C0 10400149 */ beqz $v0, .L800995E8 -/* 099CC4 800990C4 240F0002 */ li $t7, 2 -/* 099CC8 800990C8 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 -/* 099CCC 800990CC 3C05800E */ lui $a1, %hi(D_800E1048) # $a1, 0x800e -/* 099CD0 800990D0 AC2F63E0 */ sw $t7, %lo(D_801263E0)($at) -/* 099CD4 800990D4 24A51048 */ addiu $a1, %lo(D_800E1048) # addiu $a1, $a1, 0x1048 -/* 099CD8 800990D8 24040001 */ li $a0, 1 -/* 099CDC 800990DC 0C02087B */ jal draw_menu_elements -/* 099CE0 800990E0 3C063F80 */ lui $a2, 0x3f80 -/* 099CE4 800990E4 10000141 */ b .L800995EC -/* 099CE8 800990E8 8FBF001C */ lw $ra, 0x1c($sp) -.L800990EC: -/* 099CEC 800990EC 246363D8 */ addiu $v1, %lo(gOpacityDecayTimer) # addiu $v1, $v1, 0x63d8 -/* 099CF0 800990F0 8C780000 */ lw $t8, ($v1) -/* 099CF4 800990F4 3C07800E */ lui $a3, %hi(D_800E0FE4) # $a3, 0x800e -/* 099CF8 800990F8 0304C821 */ addu $t9, $t8, $a0 -/* 099CFC 800990FC 2B21000B */ slti $at, $t9, 0xb -/* 099D00 80099100 14200026 */ bnez $at, .L8009919C -/* 099D04 80099104 AC790000 */ sw $t9, ($v1) -/* 099D08 80099108 272DFFF6 */ addiu $t5, $t9, -0xa -/* 099D0C 8009910C AC6D0000 */ sw $t5, ($v1) -/* 099D10 80099110 8CE70FE4 */ lw $a3, %lo(D_800E0FE4)($a3) -/* 099D14 80099114 00004025 */ move $t0, $zero -/* 099D18 80099118 18E00019 */ blez $a3, .L80099180 -/* 099D1C 8009911C 00002825 */ move $a1, $zero -/* 099D20 80099120 3C038012 */ lui $v1, %hi(D_801263F8) # $v1, 0x8012 -/* 099D24 80099124 246363F8 */ addiu $v1, %lo(D_801263F8) # addiu $v1, $v1, 0x63f8 -/* 099D28 80099128 24060018 */ li $a2, 24 -.L8009912C: -/* 099D2C 8009912C 8C640000 */ lw $a0, ($v1) -/* 099D30 80099130 00000000 */ nop -/* 099D34 80099134 1880000E */ blez $a0, .L80099170 -/* 099D38 80099138 00000000 */ nop -/* 099D3C 8009913C 00A60019 */ multu $a1, $a2 -/* 099D40 80099140 248EFFFF */ addiu $t6, $a0, -1 -/* 099D44 80099144 AC6E0000 */ sw $t6, ($v1) -/* 099D48 80099148 3C07800E */ lui $a3, %hi(D_800E0FE4) # $a3, 0x800e -/* 099D4C 8009914C 24080001 */ li $t0, 1 -/* 099D50 80099150 00007812 */ mflo $t7 -/* 099D54 80099154 016F1021 */ addu $v0, $t3, $t7 -/* 099D58 80099158 8C580054 */ lw $t8, 0x54($v0) -/* 099D5C 8009915C 00000000 */ nop -/* 099D60 80099160 27190001 */ addiu $t9, $t8, 1 -/* 099D64 80099164 AC590054 */ sw $t9, 0x54($v0) -/* 099D68 80099168 8CE70FE4 */ lw $a3, %lo(D_800E0FE4)($a3) -/* 099D6C 8009916C 00000000 */ nop -.L80099170: -/* 099D70 80099170 24A50001 */ addiu $a1, $a1, 1 -/* 099D74 80099174 00A7082A */ slt $at, $a1, $a3 -/* 099D78 80099178 1420FFEC */ bnez $at, .L8009912C -/* 099D7C 8009917C 24630004 */ addiu $v1, $v1, 4 -.L80099180: -/* 099D80 80099180 11000006 */ beqz $t0, .L8009919C -/* 099D84 80099184 2404005E */ li $a0, 94 -/* 099D88 80099188 00002825 */ move $a1, $zero -/* 099D8C 8009918C 0C000741 */ jal play_sound_global -/* 099D90 80099190 AFAB002C */ sw $t3, 0x2c($sp) -/* 099D94 80099194 8FAB002C */ lw $t3, 0x2c($sp) -/* 099D98 80099198 00000000 */ nop -.L8009919C: -/* 099D9C 8009919C 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 099DA0 800991A0 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 099DA4 800991A4 3C0D800E */ lui $t5, %hi(gNumberOfActivePlayers) # $t5, 0x800e -/* 099DA8 800991A8 8CC20000 */ lw $v0, ($a2) -/* 099DAC 800991AC 8DADF4BC */ lw $t5, %lo(gNumberOfActivePlayers)($t5) -/* 099DB0 800991B0 00004025 */ move $t0, $zero -/* 099DB4 800991B4 00002825 */ move $a1, $zero -/* 099DB8 800991B8 19A00023 */ blez $t5, .L80099248 -/* 099DBC 800991BC AFA20040 */ sw $v0, 0x40($sp) -/* 099DC0 800991C0 3C078012 */ lui $a3, %hi(gControllersYAxisDirection) # $a3, 0x8012 -/* 099DC4 800991C4 24E76464 */ addiu $a3, %lo(gControllersYAxisDirection) # addiu $a3, $a3, 0x6464 -.L800991C8: -/* 099DC8 800991C8 00A02025 */ move $a0, $a1 -/* 099DCC 800991CC AFA5004C */ sw $a1, 0x4c($sp) -/* 099DD0 800991D0 AFA70020 */ sw $a3, 0x20($sp) -/* 099DD4 800991D4 AFA80044 */ sw $t0, 0x44($sp) -/* 099DD8 800991D8 0C01A955 */ jal get_buttons_pressed_from_player -/* 099DDC 800991DC AFAB002C */ sw $t3, 0x2c($sp) -/* 099DE0 800991E0 8FA70020 */ lw $a3, 0x20($sp) -/* 099DE4 800991E4 8FA80044 */ lw $t0, 0x44($sp) -/* 099DE8 800991E8 80E30000 */ lb $v1, ($a3) -/* 099DEC 800991EC 8FA5004C */ lw $a1, 0x4c($sp) -/* 099DF0 800991F0 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 099DF4 800991F4 8FAB002C */ lw $t3, 0x2c($sp) -/* 099DF8 800991F8 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 099DFC 800991FC 04610005 */ bgez $v1, .L80099214 -/* 099E00 80099200 01024025 */ or $t0, $t0, $v0 -/* 099E04 80099204 8CCE0000 */ lw $t6, ($a2) -/* 099E08 80099208 00000000 */ nop -/* 099E0C 8009920C 25CF0001 */ addiu $t7, $t6, 1 -/* 099E10 80099210 ACCF0000 */ sw $t7, ($a2) -.L80099214: -/* 099E14 80099214 18600005 */ blez $v1, .L8009922C -/* 099E18 80099218 3C0D800E */ lui $t5, %hi(gNumberOfActivePlayers) # $t5, 0x800e -/* 099E1C 8009921C 8CD80000 */ lw $t8, ($a2) -/* 099E20 80099220 00000000 */ nop -/* 099E24 80099224 2719FFFF */ addiu $t9, $t8, -1 -/* 099E28 80099228 ACD90000 */ sw $t9, ($a2) -.L8009922C: -/* 099E2C 8009922C 8DADF4BC */ lw $t5, %lo(gNumberOfActivePlayers)($t5) -/* 099E30 80099230 24A50001 */ addiu $a1, $a1, 1 -/* 099E34 80099234 00AD082A */ slt $at, $a1, $t5 -/* 099E38 80099238 1420FFE3 */ bnez $at, .L800991C8 -/* 099E3C 8009923C 24E70001 */ addiu $a3, $a3, 1 -/* 099E40 80099240 8CC20000 */ lw $v0, ($a2) -/* 099E44 80099244 00000000 */ nop -.L80099248: -/* 099E48 80099248 04410003 */ bgez $v0, .L80099258 -/* 099E4C 8009924C 3C038012 */ lui $v1, %hi(D_80126C14) # $v1, 0x8012 -/* 099E50 80099250 ACC00000 */ sw $zero, ($a2) -/* 099E54 80099254 00001025 */ move $v0, $zero -.L80099258: -/* 099E58 80099258 8C636C14 */ lw $v1, %lo(D_80126C14)($v1) -/* 099E5C 8009925C 240400EB */ li $a0, 235 -/* 099E60 80099260 0043082A */ slt $at, $v0, $v1 -/* 099E64 80099264 14200003 */ bnez $at, .L80099274 -/* 099E68 80099268 00002825 */ move $a1, $zero -/* 099E6C 8009926C 2462FFFF */ addiu $v0, $v1, -1 -/* 099E70 80099270 ACC20000 */ sw $v0, ($a2) -.L80099274: -/* 099E74 80099274 8FAF0040 */ lw $t7, 0x40($sp) -/* 099E78 80099278 00000000 */ nop -/* 099E7C 8009927C 11E20008 */ beq $t7, $v0, .L800992A0 -/* 099E80 80099280 31189000 */ andi $t8, $t0, 0x9000 -/* 099E84 80099284 AFA80044 */ sw $t0, 0x44($sp) -/* 099E88 80099288 0C000741 */ jal play_sound_global -/* 099E8C 8009928C AFAB002C */ sw $t3, 0x2c($sp) -/* 099E90 80099290 8FA80044 */ lw $t0, 0x44($sp) -/* 099E94 80099294 8FAB002C */ lw $t3, 0x2c($sp) -/* 099E98 80099298 00000000 */ nop -/* 099E9C 8009929C 31189000 */ andi $t8, $t0, 0x9000 -.L800992A0: -/* 099EA0 800992A0 130000D1 */ beqz $t8, .L800995E8 -/* 099EA4 800992A4 2404FF80 */ li $a0, -128 -/* 099EA8 800992A8 00002825 */ move $a1, $zero -/* 099EAC 800992AC AFA0004C */ sw $zero, 0x4c($sp) -/* 099EB0 800992B0 0C000326 */ jal set_music_fade_timer -/* 099EB4 800992B4 AFAB002C */ sw $t3, 0x2c($sp) -/* 099EB8 800992B8 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 099EBC 800992BC 0C030076 */ jal transition_begin -/* 099EC0 800992C0 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 099EC4 800992C4 3C0D800E */ lui $t5, %hi(D_800E0FE4) # $t5, 0x800e -/* 099EC8 800992C8 8DAD0FE4 */ lw $t5, %lo(D_800E0FE4)($t5) -/* 099ECC 800992CC 8FA5004C */ lw $a1, 0x4c($sp) -/* 099ED0 800992D0 8FAB002C */ lw $t3, 0x2c($sp) -/* 099ED4 800992D4 24190003 */ li $t9, 3 -/* 099ED8 800992D8 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 -/* 099EDC 800992DC 19A000C2 */ blez $t5, .L800995E8 -/* 099EE0 800992E0 AC3963E0 */ sw $t9, %lo(D_801263E0)($at) -/* 099EE4 800992E4 3C038012 */ lui $v1, %hi(D_801263F8) # $v1, 0x8012 -/* 099EE8 800992E8 246363F8 */ addiu $v1, %lo(D_801263F8) # addiu $v1, $v1, 0x63f8 -/* 099EEC 800992EC 01601025 */ move $v0, $t3 -.L800992F0: -/* 099EF0 800992F0 8C4E0054 */ lw $t6, 0x54($v0) -/* 099EF4 800992F4 8C6F0000 */ lw $t7, ($v1) -/* 099EF8 800992F8 3C19800E */ lui $t9, %hi(D_800E0FE4) # $t9, 0x800e -/* 099EFC 800992FC 01CFC021 */ addu $t8, $t6, $t7 -/* 099F00 80099300 AC580054 */ sw $t8, 0x54($v0) -/* 099F04 80099304 8F390FE4 */ lw $t9, %lo(D_800E0FE4)($t9) -/* 099F08 80099308 24A50001 */ addiu $a1, $a1, 1 -/* 099F0C 8009930C 00B9082A */ slt $at, $a1, $t9 -/* 099F10 80099310 24630004 */ addiu $v1, $v1, 4 -/* 099F14 80099314 1420FFF6 */ bnez $at, .L800992F0 -/* 099F18 80099318 24420018 */ addiu $v0, $v0, 0x18 -/* 099F1C 8009931C 100000B3 */ b .L800995EC -/* 099F20 80099320 8FBF001C */ lw $ra, 0x1c($sp) -.L80099324: -/* 099F24 80099324 8CAD0000 */ lw $t5, ($a1) -/* 099F28 80099328 00000000 */ nop -/* 099F2C 8009932C 01A47021 */ addu $t6, $t5, $a0 -/* 099F30 80099330 29C1001F */ slti $at, $t6, 0x1f -/* 099F34 80099334 142000AC */ bnez $at, .L800995E8 -/* 099F38 80099338 ACAE0000 */ sw $t6, ($a1) -/* 099F3C 8009933C 0C026580 */ jal func_80099600 -/* 099F40 80099340 AFAB002C */ sw $t3, 0x2c($sp) -/* 099F44 80099344 0C031588 */ jal close_dialogue_box -/* 099F48 80099348 24040007 */ li $a0, 7 -/* 099F4C 8009934C 0C031525 */ jal assign_dialogue_box_id -/* 099F50 80099350 24040007 */ li $a0, 7 -/* 099F54 80099354 3C18800E */ lui $t8, %hi(gTrophyRaceRound) # $t8, 0x800e -/* 099F58 80099358 8F180FEC */ lw $t8, %lo(gTrophyRaceRound)($t8) -/* 099F5C 8009935C 8FAB002C */ lw $t3, 0x2c($sp) -/* 099F60 80099360 2B010004 */ slti $at, $t8, 4 -/* 099F64 80099364 10200005 */ beqz $at, .L8009937C -/* 099F68 80099368 3C07800E */ lui $a3, %hi(D_800E0FE4) # $a3, 0x800e -/* 099F6C 8009936C 0C0204F4 */ jal menu_init -/* 099F70 80099370 24040014 */ li $a0, 20 -/* 099F74 80099374 1000009D */ b .L800995EC -/* 099F78 80099378 8FBF001C */ lw $ra, 0x1c($sp) -.L8009937C: -/* 099F7C 8009937C 8CE70FE4 */ lw $a3, %lo(D_800E0FE4)($a3) -/* 099F80 80099380 00001825 */ move $v1, $zero -/* 099F84 80099384 18E0002B */ blez $a3, .L80099434 -/* 099F88 80099388 00002825 */ move $a1, $zero -/* 099F8C 8009938C 3C068012 */ lui $a2, %hi(D_80126420) # $a2, 0x8012 -/* 099F90 80099390 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012 -/* 099F94 80099394 3C088012 */ lui $t0, %hi(D_80126430) # $t0, 0x8012 -/* 099F98 80099398 8FAC0034 */ lw $t4, 0x34($sp) -/* 099F9C 8009939C 25086430 */ addiu $t0, %lo(D_80126430) # addiu $t0, $t0, 0x6430 -/* 099FA0 800993A0 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438 -/* 099FA4 800993A4 24C66420 */ addiu $a2, %lo(D_80126420) # addiu $a2, $a2, 0x6420 -/* 099FA8 800993A8 24090018 */ li $t1, 24 -.L800993AC: -/* 099FAC 800993AC 90D90000 */ lbu $t9, ($a2) -/* 099FB0 800993B0 01056821 */ addu $t5, $t0, $a1 -/* 099FB4 800993B4 1320001A */ beqz $t9, .L80099420 -/* 099FB8 800993B8 00000000 */ nop -/* 099FBC 800993BC 91AE0000 */ lbu $t6, ($t5) -/* 099FC0 800993C0 0143C021 */ addu $t8, $t2, $v1 -/* 099FC4 800993C4 01C90019 */ multu $t6, $t1 -/* 099FC8 800993C8 010C6821 */ addu $t5, $t0, $t4 -/* 099FCC 800993CC 00007812 */ mflo $t7 -/* 099FD0 800993D0 016F2021 */ addu $a0, $t3, $t7 -/* 099FD4 800993D4 80820059 */ lb $v0, 0x59($a0) -/* 099FD8 800993D8 14600005 */ bnez $v1, .L800993F0 -/* 099FDC 800993DC 00000000 */ nop -/* 099FE0 800993E0 00A06025 */ move $t4, $a1 -/* 099FE4 800993E4 A3020000 */ sb $v0, ($t8) -/* 099FE8 800993E8 1000000D */ b .L80099420 -/* 099FEC 800993EC 24630001 */ addiu $v1, $v1, 1 -.L800993F0: -/* 099FF0 800993F0 91AE0000 */ lbu $t6, ($t5) -/* 099FF4 800993F4 8C990054 */ lw $t9, 0x54($a0) -/* 099FF8 800993F8 01C90019 */ multu $t6, $t1 -/* 099FFC 800993FC 01437021 */ addu $t6, $t2, $v1 -/* 09A000 80099400 00007812 */ mflo $t7 -/* 09A004 80099404 016FC021 */ addu $t8, $t3, $t7 -/* 09A008 80099408 8F0D0054 */ lw $t5, 0x54($t8) -/* 09A00C 8009940C 00000000 */ nop -/* 09A010 80099410 172D0003 */ bne $t9, $t5, .L80099420 -/* 09A014 80099414 00000000 */ nop -/* 09A018 80099418 A1C20000 */ sb $v0, ($t6) -/* 09A01C 8009941C 24630001 */ addiu $v1, $v1, 1 -.L80099420: -/* 09A020 80099420 24A50001 */ addiu $a1, $a1, 1 -/* 09A024 80099424 00A7082A */ slt $at, $a1, $a3 -/* 09A028 80099428 1420FFE0 */ bnez $at, .L800993AC -/* 09A02C 8009942C 24C60001 */ addiu $a2, $a2, 1 -/* 09A030 80099430 AFAC0034 */ sw $t4, 0x34($sp) -.L80099434: -/* 09A034 80099434 3C0F800E */ lui $t7, %hi(gNumberOfActivePlayers) # $t7, 0x800e -/* 09A038 80099438 8DEFF4BC */ lw $t7, %lo(gNumberOfActivePlayers)($t7) -/* 09A03C 8009943C 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012 -/* 09A040 80099440 8FAC0034 */ lw $t4, 0x34($sp) -/* 09A044 80099444 24010001 */ li $at, 1 -/* 09A048 80099448 15E1000C */ bne $t7, $at, .L8009947C -/* 09A04C 8009944C 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438 -/* 09A050 80099450 AFA30048 */ sw $v1, 0x48($sp) -/* 09A054 80099454 AFAB002C */ sw $t3, 0x2c($sp) -/* 09A058 80099458 0C027B20 */ jal is_in_two_player_adventure -/* 09A05C 8009945C AFAC0034 */ sw $t4, 0x34($sp) -/* 09A060 80099460 8FA30048 */ lw $v1, 0x48($sp) -/* 09A064 80099464 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012 -/* 09A068 80099468 8FAB002C */ lw $t3, 0x2c($sp) -/* 09A06C 8009946C 8FAC0034 */ lw $t4, 0x34($sp) -/* 09A070 80099470 14400002 */ bnez $v0, .L8009947C -/* 09A074 80099474 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438 -/* 09A078 80099478 00001825 */ move $v1, $zero -.L8009947C: -/* 09A07C 8009947C 2418FFFF */ li $t8, -1 -/* 09A080 80099480 0143C821 */ addu $t9, $t2, $v1 -/* 09A084 80099484 A3380000 */ sb $t8, ($t9) -/* 09A088 80099488 3C0D800E */ lui $t5, %hi(gIsInTracksMode) # $t5, 0x800e -/* 09A08C 8009948C 8DADF4B8 */ lw $t5, %lo(gIsInTracksMode)($t5) -/* 09A090 80099490 24010001 */ li $at, 1 -/* 09A094 80099494 15A1000C */ bne $t5, $at, .L800994C8 -/* 09A098 80099498 240F0001 */ li $t7, 1 -/* 09A09C 8009949C 29810003 */ slti $at, $t4, 3 -/* 09A0A0 800994A0 14200007 */ bnez $at, .L800994C0 -/* 09A0A4 800994A4 240E0105 */ li $t6, 261 -/* 09A0A8 800994A8 2404000F */ li $a0, 15 -/* 09A0AC 800994AC 0C0204F4 */ jal menu_init -/* 09A0B0 800994B0 AFAC0034 */ sw $t4, 0x34($sp) -/* 09A0B4 800994B4 8FAC0034 */ lw $t4, 0x34($sp) -/* 09A0B8 800994B8 10000033 */ b .L80099588 -/* 09A0BC 800994BC 29810003 */ slti $at, $t4, 3 -.L800994C0: -/* 09A0C0 800994C0 10000030 */ b .L80099584 -/* 09A0C4 800994C4 AFAE003C */ sw $t6, 0x3c($sp) -.L800994C8: -/* 09A0C8 800994C8 AFAF003C */ sw $t7, 0x3c($sp) -/* 09A0CC 800994CC 91640048 */ lbu $a0, 0x48($t3) -/* 09A0D0 800994D0 AFAC0034 */ sw $t4, 0x34($sp) -/* 09A0D4 800994D4 0C01AC75 */ jal get_hub_area_id -/* 09A0D8 800994D8 AFAB002C */ sw $t3, 0x2c($sp) -/* 09A0DC 800994DC 8FAB002C */ lw $t3, 0x2c($sp) -/* 09A0E0 800994E0 3C03800E */ lui $v1, %hi(D_800DF450) # $v1, 0x800e -/* 09A0E4 800994E4 8FAC0034 */ lw $t4, 0x34($sp) -/* 09A0E8 800994E8 2463F450 */ addiu $v1, %lo(D_800DF450) # addiu $v1, $v1, -0xbb0 -/* 09A0EC 800994EC A1620049 */ sb $v0, 0x49($t3) -/* 09A0F0 800994F0 80780000 */ lb $t8, ($v1) -/* 09A0F4 800994F4 00000000 */ nop -/* 09A0F8 800994F8 13000023 */ beqz $t8, .L80099588 -/* 09A0FC 800994FC 29810003 */ slti $at, $t4, 3 -/* 09A100 80099500 A0600000 */ sb $zero, ($v1) -/* 09A104 80099504 91790049 */ lbu $t9, 0x49($t3) -/* 09A108 80099508 29810003 */ slti $at, $t4, 3 -/* 09A10C 8009950C 372D0200 */ ori $t5, $t9, 0x200 -/* 09A110 80099510 1020001C */ beqz $at, .L80099584 -/* 09A114 80099514 AFAD003C */ sw $t5, 0x3c($sp) -/* 09A118 80099518 91650048 */ lbu $a1, 0x48($t3) -/* 09A11C 8009951C 9564000E */ lhu $a0, 0xe($t3) -/* 09A120 80099520 24A5FFFF */ addiu $a1, $a1, -1 -/* 09A124 80099524 00057040 */ sll $t6, $a1, 1 -/* 09A128 80099528 24180003 */ li $t8, 3 -/* 09A12C 8009952C 030C1023 */ subu $v0, $t8, $t4 -/* 09A130 80099530 01C41807 */ srav $v1, $a0, $t6 -/* 09A134 80099534 306F0003 */ andi $t7, $v1, 3 -/* 09A138 80099538 30590003 */ andi $t9, $v0, 3 -/* 09A13C 8009953C 01F9082A */ slt $at, $t7, $t9 -/* 09A140 80099540 01C02825 */ move $a1, $t6 -/* 09A144 80099544 1020000F */ beqz $at, .L80099584 -/* 09A148 80099548 03201025 */ move $v0, $t9 -/* 09A14C 8009954C 240D0003 */ li $t5, 3 -/* 09A150 80099550 01CD7004 */ sllv $t6, $t5, $t6 -/* 09A154 80099554 01C07827 */ not $t7, $t6 -/* 09A158 80099558 008FC824 */ and $t9, $a0, $t7 -/* 09A15C 8009955C 00A26804 */ sllv $t5, $v0, $a1 -/* 09A160 80099560 A579000E */ sh $t9, 0xe($t3) -/* 09A164 80099564 032D7025 */ or $t6, $t9, $t5 -/* 09A168 80099568 A56E000E */ sh $t6, 0xe($t3) -/* 09A16C 8009956C 0C027068 */ jal get_save_file_index -/* 09A170 80099570 AFAC0034 */ sw $t4, 0x34($sp) -/* 09A174 80099574 0C01BB12 */ jal safe_mark_write_save_file -/* 09A178 80099578 00402025 */ move $a0, $v0 -/* 09A17C 8009957C 8FAC0034 */ lw $t4, 0x34($sp) -/* 09A180 80099580 00000000 */ nop -.L80099584: -/* 09A184 80099584 29810003 */ slti $at, $t4, 3 -.L80099588: -/* 09A188 80099588 10200015 */ beqz $at, .L800995E0 -/* 09A18C 8009958C 2404001F */ li $a0, 31 -/* 09A190 80099590 0C0078A7 */ jal get_misc_asset -/* 09A194 80099594 AFAC0034 */ sw $t4, 0x34($sp) -/* 09A198 80099598 3C0F800E */ lui $t7, %hi(gTrophyRaceWorldId) # $t7, 0x800e -/* 09A19C 8009959C 8DEF0FE8 */ lw $t7, %lo(gTrophyRaceWorldId)($t7) -/* 09A1A0 800995A0 8FAC0034 */ lw $t4, 0x34($sp) -/* 09A1A4 800995A4 000FC080 */ sll $t8, $t7, 2 -/* 09A1A8 800995A8 3C0A8012 */ lui $t2, %hi(D_80126438) # $t2, 0x8012 -/* 09A1AC 800995AC 030FC023 */ subu $t8, $t8, $t7 -/* 09A1B0 800995B0 254A6438 */ addiu $t2, %lo(D_80126438) # addiu $t2, $t2, 0x6438 -/* 09A1B4 800995B4 8FA6003C */ lw $a2, 0x3c($sp) -/* 09A1B8 800995B8 030C2821 */ addu $a1, $t8, $t4 -/* 09A1BC 800995BC 24A5FFFD */ addiu $a1, $a1, -3 -/* 09A1C0 800995C0 AFA0003C */ sw $zero, 0x3c($sp) -/* 09A1C4 800995C4 AFAA0014 */ sw $t2, 0x14($sp) -/* 09A1C8 800995C8 00402025 */ move $a0, $v0 -/* 09A1CC 800995CC 00003825 */ move $a3, $zero -/* 09A1D0 800995D0 0C026AF6 */ jal func_8009ABD8 -/* 09A1D4 800995D4 AFA00010 */ sw $zero, 0x10($sp) -/* 09A1D8 800995D8 0C0204F4 */ jal menu_init -/* 09A1DC 800995DC 24040017 */ li $a0, 23 -.L800995E0: -/* 09A1E0 800995E0 3C01800E */ lui $at, %hi(gTrophyRaceWorldId) # $at, 0x800e -/* 09A1E4 800995E4 AC200FE8 */ sw $zero, %lo(gTrophyRaceWorldId)($at) -.L800995E8: -/* 09A1E8 800995E8 8FBF001C */ lw $ra, 0x1c($sp) -.L800995EC: -/* 09A1EC 800995EC 3C018012 */ lui $at, %hi(gIgnorePlayerInputTime) # $at, 0x8012 -/* 09A1F0 800995F0 8FA2003C */ lw $v0, 0x3c($sp) -/* 09A1F4 800995F4 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInputTime)($at) -/* 09A1F8 800995F8 03E00008 */ jr $ra -/* 09A1FC 800995FC 27BD0050 */ addiu $sp, $sp, 0x50 - diff --git a/asm/non_matchings/textures_sprites/free_sprite.s b/asm/non_matchings/textures_sprites/free_sprite.s deleted file mode 100644 index 854ee9f2..00000000 --- a/asm/non_matchings/textures_sprites/free_sprite.s +++ /dev/null @@ -1,76 +0,0 @@ -glabel free_sprite -/* 07D8B0 8007CCB0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 07D8B4 8007CCB4 AFB2001C */ sw $s2, 0x1c($sp) -/* 07D8B8 8007CCB8 00809025 */ move $s2, $a0 -/* 07D8BC 8007CCBC AFBF0024 */ sw $ra, 0x24($sp) -/* 07D8C0 8007CCC0 AFB30020 */ sw $s3, 0x20($sp) -/* 07D8C4 8007CCC4 AFB10018 */ sw $s1, 0x18($sp) -/* 07D8C8 8007CCC8 10800036 */ beqz $a0, .L8007CDA4 -/* 07D8CC 8007CCCC AFB00014 */ sw $s0, 0x14($sp) -/* 07D8D0 8007CCD0 848E0004 */ lh $t6, 4($a0) -/* 07D8D4 8007CCD4 3C038012 */ lui $v1, %hi(D_80126358) # $v1, 0x8012 -/* 07D8D8 8007CCD8 25CFFFFF */ addiu $t7, $t6, -1 -/* 07D8DC 8007CCDC A48F0004 */ sh $t7, 4($a0) -/* 07D8E0 8007CCE0 84980004 */ lh $t8, 4($a0) -/* 07D8E4 8007CCE4 00000000 */ nop -/* 07D8E8 8007CCE8 1F00002F */ bgtz $t8, .L8007CDA8 -/* 07D8EC 8007CCEC 8FBF0024 */ lw $ra, 0x24($sp) -/* 07D8F0 8007CCF0 8C636358 */ lw $v1, %lo(D_80126358)($v1) -/* 07D8F4 8007CCF4 00001025 */ move $v0, $zero -/* 07D8F8 8007CCF8 1860002A */ blez $v1, .L8007CDA4 -/* 07D8FC 8007CCFC 3C048012 */ lui $a0, %hi(gSpriteCache) # $a0, 0x8012 -/* 07D900 8007CD00 8C84634C */ lw $a0, %lo(gSpriteCache)($a0) -/* 07D904 8007CD04 00000000 */ nop -/* 07D908 8007CD08 00409825 */ move $s3, $v0 -.L8007CD0C: -/* 07D90C 8007CD0C 0013C8C0 */ sll $t9, $s3, 3 -/* 07D910 8007CD10 00994021 */ addu $t0, $a0, $t9 -/* 07D914 8007CD14 8D090004 */ lw $t1, 4($t0) -/* 07D918 8007CD18 03209825 */ move $s3, $t9 -/* 07D91C 8007CD1C 1649001E */ bne $s2, $t1, .L8007CD98 -/* 07D920 8007CD20 24420001 */ addiu $v0, $v0, 1 -/* 07D924 8007CD24 864A0002 */ lh $t2, 2($s2) -/* 07D928 8007CD28 00008025 */ move $s0, $zero -/* 07D92C 8007CD2C 1940000C */ blez $t2, .L8007CD60 -/* 07D930 8007CD30 00008825 */ move $s1, $zero -.L8007CD34: -/* 07D934 8007CD34 8E4B0008 */ lw $t3, 8($s2) -/* 07D938 8007CD38 00000000 */ nop -/* 07D93C 8007CD3C 01716021 */ addu $t4, $t3, $s1 -/* 07D940 8007CD40 8D840000 */ lw $a0, ($t4) -/* 07D944 8007CD44 0C01ECAF */ jal free_texture -/* 07D948 8007CD48 00000000 */ nop -/* 07D94C 8007CD4C 864D0002 */ lh $t5, 2($s2) -/* 07D950 8007CD50 26100001 */ addiu $s0, $s0, 1 -/* 07D954 8007CD54 020D082A */ slt $at, $s0, $t5 -/* 07D958 8007CD58 1420FFF6 */ bnez $at, .L8007CD34 -/* 07D95C 8007CD5C 26310004 */ addiu $s1, $s1, 4 -.L8007CD60: -/* 07D960 8007CD60 0C01C450 */ jal free_from_memory_pool -/* 07D964 8007CD64 02402025 */ move $a0, $s2 -/* 07D968 8007CD68 3C028012 */ lui $v0, %hi(gSpriteCache) # $v0, 0x8012 -/* 07D96C 8007CD6C 2442634C */ addiu $v0, %lo(gSpriteCache) # addiu $v0, $v0, 0x634c -/* 07D970 8007CD70 8C4E0000 */ lw $t6, ($v0) -/* 07D974 8007CD74 2403FFFF */ li $v1, -1 -/* 07D978 8007CD78 01D37821 */ addu $t7, $t6, $s3 -/* 07D97C 8007CD7C ADE30000 */ sw $v1, ($t7) -/* 07D980 8007CD80 8C580000 */ lw $t8, ($v0) -/* 07D984 8007CD84 00000000 */ nop -/* 07D988 8007CD88 0313C821 */ addu $t9, $t8, $s3 -/* 07D98C 8007CD8C 10000005 */ b .L8007CDA4 -/* 07D990 8007CD90 AF230004 */ sw $v1, 4($t9) -/* 07D994 8007CD94 24420001 */ addiu $v0, $v0, 1 -.L8007CD98: -/* 07D998 8007CD98 0043082A */ slt $at, $v0, $v1 -/* 07D99C 8007CD9C 1420FFDB */ bnez $at, .L8007CD0C -/* 07D9A0 8007CDA0 00409825 */ move $s3, $v0 -.L8007CDA4: -/* 07D9A4 8007CDA4 8FBF0024 */ lw $ra, 0x24($sp) -.L8007CDA8: -/* 07D9A8 8007CDA8 8FB00014 */ lw $s0, 0x14($sp) -/* 07D9AC 8007CDAC 8FB10018 */ lw $s1, 0x18($sp) -/* 07D9B0 8007CDB0 8FB2001C */ lw $s2, 0x1c($sp) -/* 07D9B4 8007CDB4 8FB30020 */ lw $s3, 0x20($sp) -/* 07D9B8 8007CDB8 03E00008 */ jr $ra -/* 07D9BC 8007CDBC 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/textures_sprites/free_texture.s b/asm/non_matchings/textures_sprites/free_texture.s deleted file mode 100644 index 4e52e991..00000000 --- a/asm/non_matchings/textures_sprites/free_texture.s +++ /dev/null @@ -1,51 +0,0 @@ -glabel free_texture -/* 07BEBC 8007B2BC 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 07BEC0 8007B2C0 AFBF0014 */ sw $ra, 0x14($sp) -/* 07BEC4 8007B2C4 10800027 */ beqz $a0, .L8007B364 -/* 07BEC8 8007B2C8 00803025 */ move $a2, $a0 -/* 07BECC 8007B2CC 908E0005 */ lbu $t6, 5($a0) -/* 07BED0 8007B2D0 00000000 */ nop -/* 07BED4 8007B2D4 25CFFFFF */ addiu $t7, $t6, -1 -/* 07BED8 8007B2D8 31F800FF */ andi $t8, $t7, 0xff -/* 07BEDC 8007B2DC 1F000021 */ bgtz $t8, .L8007B364 -/* 07BEE0 8007B2E0 A08F0005 */ sb $t7, 5($a0) -/* 07BEE4 8007B2E4 3C048012 */ lui $a0, %hi(gNumberOfLoadedTextures) # $a0, 0x8012 -/* 07BEE8 8007B2E8 8C846330 */ lw $a0, %lo(gNumberOfLoadedTextures)($a0) -/* 07BEEC 8007B2EC 00001025 */ move $v0, $zero -/* 07BEF0 8007B2F0 1880001C */ blez $a0, .L8007B364 -/* 07BEF4 8007B2F4 3C058012 */ lui $a1, %hi(gTextureCache) # $a1, 0x8012 -/* 07BEF8 8007B2F8 8CA56328 */ lw $a1, %lo(gTextureCache)($a1) -/* 07BEFC 8007B2FC 00000000 */ nop -/* 07BF00 8007B300 0002C8C0 */ sll $t9, $v0, 3 -.L8007B304: -/* 07BF04 8007B304 00B94021 */ addu $t0, $a1, $t9 -/* 07BF08 8007B308 8D090004 */ lw $t1, 4($t0) -/* 07BF0C 8007B30C 00000000 */ nop -/* 07BF10 8007B310 14C90011 */ bne $a2, $t1, .L8007B358 -/* 07BF14 8007B314 24420001 */ addiu $v0, $v0, 1 -/* 07BF18 8007B318 00C02025 */ move $a0, $a2 -/* 07BF1C 8007B31C 0C01C450 */ jal free_from_memory_pool -/* 07BF20 8007B320 AFB90018 */ sw $t9, 0x18($sp) -/* 07BF24 8007B324 3C028012 */ lui $v0, %hi(gTextureCache) # $v0, 0x8012 -/* 07BF28 8007B328 24426328 */ addiu $v0, %lo(gTextureCache) # addiu $v0, $v0, 0x6328 -/* 07BF2C 8007B32C 8FA30018 */ lw $v1, 0x18($sp) -/* 07BF30 8007B330 8C4A0000 */ lw $t2, ($v0) -/* 07BF34 8007B334 2404FFFF */ li $a0, -1 -/* 07BF38 8007B338 01435821 */ addu $t3, $t2, $v1 -/* 07BF3C 8007B33C AD640000 */ sw $a0, ($t3) -/* 07BF40 8007B340 8C4C0000 */ lw $t4, ($v0) -/* 07BF44 8007B344 00000000 */ nop -/* 07BF48 8007B348 01836821 */ addu $t5, $t4, $v1 -/* 07BF4C 8007B34C 10000005 */ b .L8007B364 -/* 07BF50 8007B350 ADA40004 */ sw $a0, 4($t5) -/* 07BF54 8007B354 24420001 */ addiu $v0, $v0, 1 -.L8007B358: -/* 07BF58 8007B358 0044082A */ slt $at, $v0, $a0 -/* 07BF5C 8007B35C 1420FFE9 */ bnez $at, .L8007B304 -/* 07BF60 8007B360 0002C8C0 */ sll $t9, $v0, 3 -.L8007B364: -/* 07BF64 8007B364 8FBF0014 */ lw $ra, 0x14($sp) -/* 07BF68 8007B368 27BD0028 */ addiu $sp, $sp, 0x28 -/* 07BF6C 8007B36C 03E00008 */ jr $ra -/* 07BF70 8007B370 00000000 */ nop - diff --git a/include/structs.h b/include/structs.h index 96b91d8f..8e0b1821 100644 --- a/include/structs.h +++ b/include/structs.h @@ -322,7 +322,7 @@ typedef struct Settings { /* 0x004C */ Settings4C *unk4C; /* 0x0050 */ u32 filename; /* 0x0054 */ Racer racers[8]; - /* 0x0114 */ u8 timeTrialRacer; + /* 0x0114 */ s8 timeTrialRacer; /* 0x0115 */ char unk115[2]; /* 0x0117 */ u8 display_times; } Settings; diff --git a/src/camera.c b/src/camera.c index 82f9140d..375ba399 100644 --- a/src/camera.c +++ b/src/camera.c @@ -10,6 +10,7 @@ #include "lib/src/libc/rmonPrintf.h" #include "math_util.h" #include "weather.h" +#include "lib/src/os/piint.h" /************ .rodata ************/ @@ -135,21 +136,25 @@ Matrix D_801210A0; /******************************/ -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING extern s32 D_B0000578; /** * Official Name: camInit */ void func_80065EA0(void) { - s32 i, j; - for (i = 0; i < 5; i++) { - D_80120D70[i] = &D_80120DA0[i]; - }; + s32 i; + s32 j; + u32 stat; + + // This loop is not cooperating. + for (i = 0; i < 5; i++) { D_80120D70[i] = D_80120DA0 + i + i*0; } + for (j = 0; j < 8; j++) { gActiveCameraID = j; func_800663DC(200, 200, 200, 0, 0, 180); - }; - gCutsceneCameraActive = FALSE; + } + + gCutsceneCameraActive = FALSE; gActiveCameraID = 0; D_80120D1C = 0; D_80120D20 = 0; @@ -158,12 +163,14 @@ void func_80065EA0(void) { D_80120D18 = 0; gAdjustViewportHeight = 0; gAntiPiracyViewport = 0; - while (IO_READ(PI_STATUS_REG) & PI_STATUS_ERROR) { - } + + WAIT_ON_IOBUSY(stat); + //0xB0000578 is a direct read from the ROM as opposed to RAM - if ((D_B0000578 & 0xFFFF) != 0x8965) { + if (((D_B0000578 & 0xFFFF) & 0xFFFF) != 0x8965) { gAntiPiracyViewport = TRUE; } + guPerspectiveF(gPerspectiveMatrixF, &perspNorm, CAMERA_DEFAULT_FOV, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE); f32_matrix_to_s16_matrix(gPerspectiveMatrixF, gPerspectiveMatrixS); gCurCamFOV = CAMERA_DEFAULT_FOV; diff --git a/src/menu.c b/src/menu.c index 835548c9..ff7a51d0 100644 --- a/src/menu.c +++ b/src/menu.c @@ -71,7 +71,7 @@ u8 D_80126418[8]; u8 D_80126420[8]; u8 D_80126428[8]; u8 D_80126430[8]; //Contains the order of racer indices that tell you what place they are in. -s8 *D_80126438[4]; +s8 D_80126438[16]; //Eeeprom save data bits stored at address 0xF //bit 0 = Adventure Two is Unlocked @@ -265,9 +265,9 @@ u16 (*gCheatsAssetData)[30]; // Cheat table. s32 D_80126C34; s32 gNumberOfCheats; s32 D_80126C3C; -u16 gCheatInputCurrentRow; -u16 gCheatInputCurrentColumn; -u16 gCheatInputStringLength; +s16 gCheatInputCurrentRow; +s16 gCheatInputCurrentColumn; +s16 gCheatInputStringLength; s16 gOptionsMenuItemIndex; s32 D_80126C48; s16 D_80126C4C; @@ -942,7 +942,9 @@ char *D_800E09F8[3] = { 0, 0, 0 }; // If you wish to use / the Controller Pak / insert it now! char *sInsertControllerPakMenuText[3] = { 0, 0, 0 }; -s16 D_800E0A10 = 0; +s16 D_800E0A10[2] = { + 0x0000, 0x0000 +}; //If you wish to use / the Rumble Pak / insert it now! char *sInsertRumblePakMenuText[4] = { 0, 0, 0, 0 }; @@ -1498,25 +1500,6 @@ FadeTransition D_800E1E08 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FAD char *D_800E1E10 = " (ADV."; -s32 D_800E1E14 = 0; -s32 D_800E1E18 = 0; -s32 D_800E1E1C = 0; - -s8 D_800E1E20[8] = { - 0, -1, 1, 0, 0, 1, -1, 0 -}; - -s8 D_800E1E28 = 0; - -// TT Game Status textures, think these are potentially multi-part images. -s16 D_800E1E2C[10] = { - 0x4C, 0x4D, 0x4E, 0x4F, 0x5B, 0x5C, 0x00, 0x42, -1, 0 -}; - -// TT game status textures. And these maybe just standalone ones. -s16 D_800E1E40[10] = { - 0x0D, 0x0E, 0x0F, 0x10, 0x08, 0x09, 0x00, 0x0A, -1, 0 -}; /*******************************/ @@ -1526,7 +1509,7 @@ const char D_800E8208[] = "OK?"; const char D_800E820C[] = "~"; const char D_800E8210[] = "DEL"; const char D_800E8214[] = "OK"; -const char D_800E8218[] = "ROM checksum %08X,%d\n"; // Used with the "DODGYROMMER" cheat. +const char gROMChecksum[] = "ROM checksum %08X,%d\n"; // Used with the "DODGYROMMER" cheat. const char D_800E8230[] = "OK?"; const char D_800E8234[] = "OK?"; const char D_800E8238[] = "OK?"; @@ -2910,14 +2893,16 @@ void render_options_menu_ui(UNUSED s32 updateRate) { } } -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING s32 menu_options_loop(s32 updateRate) { s32 buttonsPressed; + s32 i; + UNUSED s32 pad0; s32 analogX; s32 analogY; + UNUSED s32 pad1[4]; gOptionBlinkTimer = (gOptionBlinkTimer + updateRate) & 0x3F; - if (gMenuDelay != 0) { if (gMenuDelay > 0) { gMenuDelay += updateRate; @@ -2929,20 +2914,18 @@ s32 menu_options_loop(s32 updateRate) { if (gMenuDelay >= -19 && gMenuDelay < 35) { render_options_menu_ui(updateRate); } - buttonsPressed = 0; analogX = 0; analogY = 0; if (gIgnorePlayerInputTime == 0 && gMenuDelay == 0) { - // Get input from all 4 controllers. - s32 i; - for (i = 0; i < 4; i++) { - analogY += gControllersYAxisDirection[i]; // Y axis (-1 = down, 1 = up) for controller - analogX += gControllersXAxisDirection[i]; // X axis (-1 = left, 1 = right) for controller - buttonsPressed |= get_buttons_pressed_from_player(i); // Button presses for controller + s8* xAxisPtr; + s8* yAxisPtr; + for (i = 0, xAxisPtr = gControllersXAxisDirection, yAxisPtr = gControllersYAxisDirection; i < 4; i++) { + buttonsPressed |= get_buttons_pressed_from_player(i); + analogX += *(xAxisPtr++); + analogY += *(yAxisPtr++); } } - if ((buttonsPressed & B_BUTTON) || ((buttonsPressed & (A_BUTTON | START_BUTTON)) && D_800DF460 == 5)) { // Leave the option menu set_music_fade_timer(-128); @@ -2953,48 +2936,45 @@ s32 menu_options_loop(s32 updateRate) { // Go to a sub-menu gMenuDelay = 31; play_sound_global(SOUND_SELECT2, NULL); - } else if (D_800DF460 == 0 && analogX != 0) { - // Change language - s32 currentLang = get_language(); - if ((currentLang >> 31) == 0 && currentLang == LANGUAGE_ENGLISH) { + + } else if ((D_800DF460 == 0) && (analogX != 0)) { + s32 curLanguage = get_language(); + if (!(curLanguage >> 31) && (curLanguage == LANGUAGE_ENGLISH)) { set_language(LANGUAGE_FRENCH); } else { set_language(LANGUAGE_ENGLISH); } play_sound_global(SOUND_MENU_PICK2, NULL); - } else if (D_800DF460 == 1 && analogX != 0) { - // Enable/Disable subtitles. + } else if ((D_800DF460 == 1) && (analogX != 0)) { if (sEepromSettings & 0x2000000) { play_sound_global(SOUND_MENU_PICK2, NULL); - unset_eeprom_settings_value(0); + unset_eeprom_settings_value(0x02000000); set_subtitles(0); - gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESOFF]; + gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESOFF]; } else { play_sound_global(SOUND_MENU_PICK2, NULL); - set_eeprom_settings_value(0); + set_eeprom_settings_value(0x02000000); set_subtitles(1); gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESON]; } } else { - // Move up & down the list + s32 prev_D_800DF460 = D_800DF460; if (analogY < 0) { - // Scroll down the list. D_800DF460++; if (D_800DF460 >= 6) { D_800DF460 = 5; } - play_sound_global(SOUND_MENU_PICK2, NULL); } if (analogY > 0) { - // Scroll up the list. D_800DF460--; if (D_800DF460 < 0) { D_800DF460 = 0; } + } + if (prev_D_800DF460 != D_800DF460) { play_sound_global(SOUND_MENU_PICK2, NULL); } } - if (gMenuDelay >= 31) { // Change screen to a sub-menu if (D_800DF460 == 2) { @@ -4396,8 +4376,250 @@ void render_magic_codes_ui(s32 arg0) { GLOBAL_ASM("asm/non_matchings/menu/render_magic_codes_ui.s") #endif -GLOBAL_ASM("asm/non_matchings/menu/menu_magic_codes_loop.s") +s32 menu_magic_codes_loop(s32 updateRate) { + s32 i; + s32 buttonsPressed; + s32 xDir; + s32 yDir; + s32 someBool; + s32 someBool2; + s32 foundCheat; + s32 menuDelay; + s32 playBackSound; + s32 playSelectSound; + s32 playPickSound; + s32 prevValue; + char *cheatCodeText; + u16 *cheatDataEntries; + someBool = FALSE; + someBool2 = FALSE; + menuDelay = 0; + foundCheat = FALSE; + playBackSound = FALSE; + playSelectSound = FALSE; + playPickSound = FALSE; + if (gOpacityDecayTimer != 0) { + gOpacityDecayTimer -= updateRate; + if (gOpacityDecayTimer < 0) { + gOpacityDecayTimer = 0; + } + } + if (gMenuDelay != 0) { + if (gMenuDelay > 0) { + gMenuDelay += updateRate; + } else { + gMenuDelay -= updateRate; + } + } + gOptionBlinkTimer = (gOptionBlinkTimer + updateRate) & 0x3F; + if (gMenuDelay > -20 && gMenuDelay < 20) { + foundCheat = 0; + render_magic_codes_ui(updateRate); + } + buttonsPressed = 0; + xDir = 0; + yDir = 0; + if (gIgnorePlayerInputTime == 0 && gMenuDelay == 0) { + for(i = 0; i < MAXCONTROLLERS; i++) { + buttonsPressed |= get_buttons_pressed_from_player(i); + xDir += gControllersXAxisDirection[i]; + yDir += gControllersYAxisDirection[i]; + } + } + if (gOptionsMenuItemIndex == 4) { + if (gOpacityDecayTimer == 0 || buttonsPressed & (A_BUTTON | START_BUTTON)) { + gOptionsMenuItemIndex = 0; + } + } else if (gOptionsMenuItemIndex == 5) { + prevValue = ((gCheatInputCurrentColumn & 0xF) * 16) | gCheatInputCurrentRow; + if (xDir < 0) { + gCheatInputCurrentColumn--; + if (gCheatInputCurrentColumn < 0) { + gCheatInputCurrentColumn = 6; + } + } + if (xDir > 0) { + gCheatInputCurrentColumn++; + if (gCheatInputCurrentColumn >= 7) { + gCheatInputCurrentColumn = 0; + } + } + if (yDir < 0) { + gCheatInputCurrentRow++; + if (gCheatInputCurrentRow >= 4) { + gCheatInputCurrentRow = 0; + } + } + if (yDir > 0) { + gCheatInputCurrentRow--; + if (gCheatInputCurrentRow < 0) { + gCheatInputCurrentRow = 3; + } + } + if ((((gCheatInputCurrentColumn & 0xF) * 16) | gCheatInputCurrentRow) != prevValue) { + playPickSound = TRUE; + } + if (buttonsPressed & A_BUTTON) { + if (gCheatInputCurrentRow == 3 && gCheatInputCurrentColumn == 5) { + someBool = TRUE; + } else if (gCheatInputCurrentRow == 3 && gCheatInputCurrentColumn == 6) { + someBool2 = TRUE; + } else if (gCheatInputStringLength <= 18) { + playSelectSound = TRUE; + D_80126C58[gCheatInputStringLength] = (gCheatInputCurrentRow * 7) + gCheatInputCurrentColumn + 65; + gCheatInputStringLength++; + D_80126C58[gCheatInputStringLength] = 0; + } + } + if (buttonsPressed & B_BUTTON) { + if (gCheatInputStringLength > 0) { + someBool = TRUE; + } else { + gOptionsMenuItemIndex = 0; + } + } + if (buttonsPressed & START_BUTTON) { + someBool2 = TRUE; + } + if (someBool) { + play_sound_global(SOUND_BOUNCE, NULL); + if (gCheatInputStringLength > 0) { + gCheatInputStringLength--; + D_80126C58[gCheatInputStringLength] = 0; + } + } + if (someBool2) { + playSelectSound = TRUE; + if (gCheatInputStringLength == 0) { + gOptionsMenuItemIndex = 0; + } else { + cheatDataEntries = &(*gCheatsAssetData)[1]; + D_80126C4C = 0; // Index into the gCheatsAssetData cheatsTable + while((D_80126C4C < (gNumberOfCheats * 2)) && !foundCheat) { + foundCheat = TRUE; + cheatCodeText = ((char *) (*gCheatsAssetData)) + cheatDataEntries[D_80126C4C]; + // D_80126C58 = char *gPlayerEnteredCode; (Or something like that) + i = -1; + do { + i++; + if (cheatCodeText[i] != D_80126C58[i]) { + foundCheat = FALSE; + } + if(!foundCheat) { + do { } while (0); // Fakematch + break; + } + } while(cheatCodeText[i] != '\0' && D_80126C58[i] != '\0'); + if(foundCheat) continue; + D_80126C4C += 2; + } + if (!foundCheat) { + D_80126C4C = -1; + } else { + gUnlockedMagicCodes |= 1 << (D_80126C4C >> 1); + gActiveMagicCodes |= 1 << (D_80126C4C >> 1); + } + gOptionsMenuItemIndex = 4; + gOpacityDecayTimer = 240; + } + } + } else if (gOptionsMenuItemIndex == 6) { + if (gOpacityDecayTimer == 0 || buttonsPressed & (A_BUTTON | START_BUTTON)) { + gOptionsMenuItemIndex = 1; + } + } else if (D_801263E0 != 0) { + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + if (D_801263E0 == 1) { + gActiveMagicCodes = 0; + gOptionsMenuItemIndex = 6; + playSelectSound = TRUE; + gUnlockedMagicCodes &= 3; + gOpacityDecayTimer = 0xF0; + } else { + playBackSound = TRUE; + } + D_801263E0 = 0; + } else if (buttonsPressed & B_BUTTON) { + playBackSound = TRUE; + D_801263E0 = 0; + } else if (yDir < 0 && D_801263E0 == 1) { + playPickSound = TRUE; + D_801263E0 = 2; + } else if (yDir > 0 && D_801263E0 == 2) { + playPickSound = TRUE; + D_801263E0 = 1; + } + } else { + prevValue = gOptionsMenuItemIndex; + if (yDir < 0) { + gOptionsMenuItemIndex += 1; + if (gOptionsMenuItemIndex >= 4) { + gOptionsMenuItemIndex = 3; + } + } + if (yDir > 0) { + gOptionsMenuItemIndex -= 1; + if (gOptionsMenuItemIndex < 0) { + gOptionsMenuItemIndex = 0; + } + } + if (prevValue != gOptionsMenuItemIndex) { + playPickSound = TRUE; + } + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + playSelectSound = TRUE; + if (gOptionsMenuItemIndex == 3) { + menuDelay = -1; + } else if (gOptionsMenuItemIndex == 0) { + gCheatInputCurrentRow = 0; + gCheatInputCurrentColumn = 0; + gCheatInputStringLength = 0; + *D_80126C58 = 0; + gOptionsMenuItemIndex = 5; + } else if (gOptionsMenuItemIndex == 1) { + D_801263E0 = 2; + } else if (gOptionsMenuItemIndex == 2) { + menuDelay = 1; + } + } + if (buttonsPressed & (B_BUTTON)) { + menuDelay = -1; + } + if (menuDelay != 0) { + if (menuDelay < 0) { + playBackSound = TRUE; + } + gMenuDelay = menuDelay; + transition_begin(&sMenuTransitionFadeIn); + } + } + if (playBackSound) { + play_sound_global(SOUND_MENU_BACK3, NULL); + } else if (playSelectSound) { + play_sound_global(SOUND_SELECT2, NULL); + } else if (playPickSound) { + play_sound_global(SOUND_MENU_PICK2, NULL); + } + + gIgnorePlayerInputTime = 0; + if (gMenuDelay < -30 || gMenuDelay > 30) { + unload_big_font_2(); + if (gMenuDelay < 0) { + if (gActiveMagicCodes & CHEAT_DISPLAY_CREDITS) { + func_80000B28(); + gViewingCreditsFromCheat = TRUE; + menu_init(MENU_CREDITS); + gActiveMagicCodes &= ~CHEAT_DISPLAY_CREDITS; + } else { + menu_init(MENU_OPTIONS); + } + } else { + menu_init(MENU_MAGIC_CODES_LIST); + } + } + return 0; +} /** * Explicitly says to unload the ASSET_FONTS_BIGFONT type. @@ -4600,46 +4822,66 @@ void func_8008AD1C(void) { unload_font(ASSET_FONTS_BIGFONT); } -#ifdef NON_EQUIVALENT - -extern u8 *__ROM_END; - void calculate_and_display_rom_checksum(void) { - s32 romOffset, numBytes, numBytesLeft; + static u32 cksum=0; + static u32 calculated=0; + s32 blockOffs; + s32 size; + s32 numBytes, numLeft; s32 i; u8 *tempBuffer; - if (!D_800E1E18) { - numBytesLeft = &__ROM_END; - numBytesLeft -= 0x1000; - romOffset = 0x1000; - tempBuffer = allocate_from_main_pool_safe(0x5000, COLOUR_TAG_BLACK); - while (numBytesLeft > 0) { - numBytes = numBytesLeft; - if (numBytesLeft >= 0x5001) { - numBytes = 0x5000; + if (!calculated) { + numBytes = 0x1000; + size = 0x5000; + blockOffs = 0x1000; + numLeft = (s32) &__ROM_END; + numLeft -= 0x1000; + tempBuffer = allocate_from_main_pool_safe(size, COLOUR_TAG_BLACK); + + while (numLeft != 0) { + numBytes = numLeft; + if (numBytes > size) { + numBytes = size; } - dmacopy(romOffset, tempBuffer, numBytes); - numBytesLeft -= numBytes; + dmacopy(blockOffs, (u32) tempBuffer, numBytes); + numLeft -= numBytes; for (i = 0; i < numBytes; i++) { - D_800E1E14 += tempBuffer[i]; + cksum += tempBuffer[i]; } - - romOffset += numBytes; + blockOffs += numBytes; } free_from_memory_pool(tempBuffer); - D_800E1E18 = TRUE; + calculated = TRUE; } set_render_printf_background_colour(0, 0, 0, 128); set_render_printf_position(32, 136); - render_printf(D_800E8218, D_800E1E14, &__ROM_END); // D_800E8218 = "ROM checksum %08X,%d\n" + numLeft = (s32) &__ROM_END; + render_printf(gROMChecksum, cksum, numLeft); // gROMChecksum = "ROM checksum %08X,%d\n" } -#else -GLOBAL_ASM("asm/non_matchings/menu/calculate_and_display_rom_checksum.s") -#endif + +//These vars have to be defined after calculate_and_display_rom_checksum since that function has a static var in it. + +s32 D_800E1E1C = 0; + +s8 D_800E1E20[8] = { + 0, -1, 1, 0, 0, 1, -1, 0 +}; + +s8 D_800E1E28 = 0; + +// TT Game Status textures, think these are potentially multi-part images. +s16 D_800E1E2C[10] = { + 0x4C, 0x4D, 0x4E, 0x4F, 0x5B, 0x5C, 0x00, 0x42, -1, 0 +}; + +// TT game status textures. And these maybe just standalone ones. +s16 D_800E1E40[10] = { + 0x0D, 0x0E, 0x0F, 0x10, 0x08, 0x09, 0x00, 0x0A, -1, 0 +}; void func_8008AEB4(s32 arg0, s32 *arg1) { switch (arg0) { @@ -7314,7 +7556,7 @@ void func_80094688(s32 arg0, s32 arg1) { s16 *var_v1; LevelHeader *header; - func_80072298(0U); + func_80072298(0); header = get_current_level_header(); D_80126C28 = arg0; if (is_in_two_player_adventure()) { @@ -7398,7 +7640,47 @@ void func_80094688(s32 arg0, s32 arg1) { adjust_audio_volume(VOLUME_LOWER_AMBIENT); } -GLOBAL_ASM("asm/non_matchings/menu/func_80094A5C.s") +void func_80094A5C(void) { + UNUSED s32 pad[2]; + Settings *settings; + s16 temp_a0; + s32 i; + s32 j; + + if (D_80126C54.unk0_s32 >= 0) { + if (D_80126C54.unk0_s32 < 10) { + D_80126C54.unk0_s32++; + return; + } + temp_a0 = D_800E0A10[D_80126C54.unk0_s32]; + if (temp_a0 == -1) { + allocate_menu_images(D_800E0A40); + assign_racer_portrait_textures(); + settings = get_settings(); + D_800E0BEC->unk14_a.element = D_800E0AF0[settings->racers[settings->timeTrialRacer].character]; + if (!is_time_trial_enabled()) { + for (i = 0; i < 8; i++) { + for (j = 0; j < 8; j++) { + if (i == settings->racers[j].starting_position) { + D_800E0CEC[7 - i].unk14_a.element = D_800E0AF0[settings->racers[j].character]; + } + } + } + if (is_in_two_player_adventure()) { + for (i = 0; i < 6; i++) { + D_800E0CEC[i + 1].unk14_a.element = D_800E0CEC[i + 2].unk14_a.element; + } + D_800E0CEC[7].unk14_a.element = &D_80126850; + D_800E0CEC[0].unk14_a.element = &D_80126850; + } + } + D_80126C54.unk0_s32 = -1; + return; + } + func_8009C6D4(temp_a0); + D_80126C54.unk0_s32++; + } +} void func_80094C14(s32 arg0) { gOptionBlinkTimer = (gOptionBlinkTimer + arg0) & 0x3F; @@ -8121,7 +8403,152 @@ void func_80098EBC(s32 arg0) { } } -GLOBAL_ASM("asm/non_matchings/menu/menu_trophy_race_rankings_loop.s") +s32 menu_trophy_race_rankings_loop(s32 updateRate) { + s32 i; + s32 temp6; + s32 buttonsPressed; + s32 temp1; + s32 ret; + s8 *miscAsset31; + s32 sp34; + s16 temp5; + s16 temp7; + Settings *settings; + s32 temp0; + + ret = 0; + settings = get_settings(); + if ((gMenuDelay > -20) && (gMenuDelay < 20)) { + func_80098EBC(updateRate); + } + update_controller_sticks(); + switch (D_801263E0) { // D_801263E0 = current Trophy Race Rankings state? + case 0: + if (func_80081F4C(updateRate) != 0) { + D_801263E0 = 1; + func_80098774(1); + func_80081E54(*D_800E1048, 0.5f, 0.0f, 0.0f, 0, 0); + } + break; + case 1: + if (func_80081F4C(updateRate) != 0) { + D_801263E0 = 2; + draw_menu_elements(1, *D_800E1048, 1.0f); + } + break; + case 2: + gOpacityDecayTimer += updateRate; + if (gOpacityDecayTimer > 10) { + gOpacityDecayTimer -= 10; + temp5 = 0; + for(i = 0; i < D_800E0FE4; i++) { + if (D_801263F8[i] > 0) { + D_801263F8[i]--; + temp5 = 1; + settings->racers[i].trophy_points++; + } + } + if (temp5) { + play_sound_global(SOUND_TING_HIGH, NULL); + } + } + + buttonsPressed = 0; + temp1 = gMenuOption; + for (i = 0; i < gNumberOfActivePlayers; i++) { + buttonsPressed |= get_buttons_pressed_from_player(i); + if (gControllersYAxisDirection[i] < 0) { + gMenuOption++; + } + if (gControllersYAxisDirection[i] > 0) { + gMenuOption--; + } + } + if (gMenuOption < 0) { + gMenuOption = 0; + } + if (gMenuOption >= D_80126C14) { + gMenuOption = D_80126C14 - 1; + } + if (temp1 != gMenuOption) { + play_sound_global(SOUND_MENU_PICK2, NULL); + } + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + set_music_fade_timer(-128); + transition_begin(&sMenuTransitionFadeIn); + D_801263E0 = 3; + for(i = 0; i < D_800E0FE4; i++){ + settings->racers[i].trophy_points += D_801263F8[i]; + } + } + break; + case 3: + gMenuDelay += updateRate; + if (gMenuDelay >= 31) { + func_80099600(); + close_dialogue_box(7); + assign_dialogue_box_id(7); + if (gTrophyRaceRound < 4) { + menu_init(MENU_TROPHY_RACE_ROUND); + } else { + for(temp6 = 0, i = 0; i < D_800E0FE4; i++) { + if (D_80126420[i] != 0) { + temp7 = settings->racers[D_80126430[i]].character; + if (temp6 == 0) { + sp34 = i; + D_80126438[temp6++] = temp7; + continue; + } + if (settings->racers[D_80126430[i]].trophy_points == settings->racers[D_80126430[sp34]].trophy_points) { + D_80126438[temp6++] = temp7; + } + } + } + + if (gNumberOfActivePlayers == 1 && !is_in_two_player_adventure()) { + temp6 = 0; + } + D_80126438[temp6] = -1; + if (gIsInTracksMode == 1) { + if (sp34 >= 3) { + menu_init(MENU_TRACK_SELECT); + } else { + ret = 0x105; + } + } else { + ret = 1; + settings->courseId = get_hub_area_id(settings->worldId); + if (D_800DF450 != 0) { + D_800DF450 = 0; + ret = settings->courseId | 0x200; + if (sp34 < 3) { + temp0 = settings->worldId - 1; + temp0 <<= 1; + temp1 = ((3 - sp34) & 3); + temp6 = (settings->trophies >> temp0) & 3; + if (temp6 < temp1) { + settings->trophies &= ~(3 << temp0); + settings->trophies |= (temp1 << temp0); + safe_mark_write_save_file(get_save_file_index()); + } + } + } + } + if (sp34 < 3) { + miscAsset31 = (s8 *) get_misc_asset(ASSET_MISC_31); + temp0 = ((gTrophyRaceWorldId * 3) + sp34) - 3; + func_8009ABD8(miscAsset31, temp0, ret, 0, 0, D_80126438); + ret = 0; + menu_init(MENU_UNKNOWN_23); + } + gTrophyRaceWorldId = 0; + } + } + break; + } + gIgnorePlayerInputTime = 0; + return ret; +} void func_80099600(void) { func_8009C4A8(D_800E1024); diff --git a/src/menu.h b/src/menu.h index 6fbd217d..638f8587 100644 --- a/src/menu.h +++ b/src/menu.h @@ -656,8 +656,6 @@ extern char gRareCopyrightString[24]; extern char *D_800E1E10; -extern s32 D_800E1E14; -extern s32 D_800E1E18; extern s32 D_800E1E1C; extern s8 D_800E1E20[8]; @@ -721,6 +719,8 @@ extern s32 D_801269F0; extern s32 gSelectedTrackX; extern s32 gSelectedTrackY; +extern u8 *__ROM_END; + s32 get_random_number_from_range(s32, s32); // No file to pull from yet. void func_8007FF88(void); @@ -883,6 +883,8 @@ s32 menu_save_options_loop(s32 updateRate); s32 menu_23_loop(s32 updateRate); s32 menu_magic_codes_list_loop(s32 updateRate); void menu_trophy_race_rankings_init(void); +void calculate_and_display_rom_checksum(void); +s32 menu_trophy_race_rankings_loop(s32 updateRate); // Non Matching functions below here void load_menu_text(s32 language); // Non Matching @@ -891,7 +893,6 @@ s32 menu_audio_options_loop(s32 arg0); s32 menu_options_loop(s32 updateRate); s32 menu_controller_pak_loop(s32 updateRate); void render_magic_codes_list_menu_text(s32 arg0); -void calculate_and_display_rom_checksum(void); void randomise_ai_racer_slots(s32 arg0); void menu_game_select_init(void); void render_file_select_menu(s32 arg0); @@ -910,7 +911,6 @@ void func_8009E3D0(void); s32 menu_title_screen_loop(s32 updateRate); s32 menu_magic_codes_loop(s32 updateRate); s32 menu_results_loop(s32 updateRate); -s32 menu_trophy_race_rankings_loop(s32 updateRate); s32 menu_credits_loop(s32 updateRate); void func_8009CA60(s32 imageID); void func_8007FFEC(s32 arg0); @@ -943,6 +943,7 @@ s32 func_80086AFC(void); s32 func_80087734(s32, s32); void func_80085B9C(UNUSED s32 updateRate); void func_80098774(s32); +void render_magic_codes_ui(s32 updateRate); typedef enum MenuTextures { /* 0x00 */ TEXTURE_UNK_00, diff --git a/src/object_models.h b/src/object_models.h index ff39dc42..ea003c23 100644 --- a/src/object_models.h +++ b/src/object_models.h @@ -20,5 +20,6 @@ void func_80061C0C(Object* obj); void free_object_model(ObjectModel *model); //Non Matching void func_8005FF40(ObjectModel **modelPtr); +void func_80060910(ObjectModel *); #endif diff --git a/src/objects.c b/src/objects.c index 4621712e..d17adb6d 100644 --- a/src/objects.c +++ b/src/objects.c @@ -2960,28 +2960,16 @@ GLOBAL_ASM("asm/non_matchings/objects/func_800159C8.s") GLOBAL_ASM("asm/non_matchings/objects/func_80016500.s") GLOBAL_ASM("asm/non_matchings/objects/func_80016748.s") -void func_80016BC4(Object *arg0) { - s32 var_s0; - s32 var_s1; - s32 *temp_v0; - s8 var_v1; +void func_80016BC4(Object *obj) { + s32 i; - arg0->unk5C->unk104 = 0; - func_8001709C(arg0); - func_8001709C(arg0); - var_s1 = 0; - var_v1 = arg0->segment.header->numberOfModelIds; - var_s0 = 0; - if (var_v1 > 0) { - do { - temp_v0 = (s32 *) *(arg0->unk68 + var_s0); - if (temp_v0 != NULL) { - func_8006017C(*temp_v0); - var_v1 = arg0->segment.header->numberOfModelIds; - } - var_s1 += 1; - var_s0 += 1; - } while (var_s1 < var_v1); + obj->unk5C->unk104 = 0; + func_8001709C(obj); + func_8001709C(obj); + for (i = 0; i < obj->segment.header->numberOfModelIds; i++) { + if (obj->unk68[i] != NULL) { + func_8006017C(obj->unk68[i]->objModel); + } } } @@ -3237,7 +3225,7 @@ void func_8001B3C4(s32 arg0, s16 *playerId) { D_800DC718 = 0; free_tt_ghost_data(); D_800DC734 = 0; - mainTrackIds = get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS); + mainTrackIds = (s8 *) get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS); trackIdCount = 0; while (mainTrackIds[trackIdCount] != -1 && mainTrackIds[trackIdCount] != arg0) { trackIdCount++; @@ -4132,7 +4120,6 @@ s8 func_800214C4(void) { } s8 func_800214E4(Object *obj, s32 updateRate) { - s16 temp_v1; s32 i; Object_AnimatedObject *animObj; @@ -4151,18 +4138,8 @@ s8 func_800214E4(Object *obj, s32 updateRate) { } if (animObj->unk36 <= 0) { obj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE; - i = 0; - if (D_8011AE78 > 0) { - temp_v1 = animObj->unk28; - if (temp_v1 != (s32) (*D_8011AE74)->properties.common.unk4) { -loop_11: - i++; - if (i < D_8011AE78) { - if (temp_v1 != (s32) D_8011AE74[i]->properties.common.unk4) { - goto loop_11; - } - } - } + for (i = 0; (i < D_8011AE78 && animObj->unk28 != D_8011AE74[i]->properties.common.unk4); i++) { + if (FALSE) {} //FAKEMATCH } func_8001EFA4(D_8011AE74[i], obj); return 1; @@ -4206,12 +4183,12 @@ f32 cubic_spline_interpolation(f32 *data, s32 index, f32 x, f32 *derivative) { GLOBAL_ASM("asm/non_matchings/objects/func_8002277C.s") -f32 lerp(f32 *arg0, u32 arg1, f32 arg2) { +UNUSED f32 lerp(f32 *arg0, u32 arg1, f32 arg2) { f32 result = arg0[arg1 + 1] + ((arg0[arg1 + 2] - arg0[arg1 + 1]) * arg2); return result; } -f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) { +UNUSED f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) { f32 new_var2; f32 temp_f12; f32 new_var; diff --git a/src/objects.h b/src/objects.h index c9bef007..ee9050d7 100644 --- a/src/objects.h +++ b/src/objects.h @@ -465,7 +465,7 @@ void func_80018CE0(Object* obj, f32 xPos, f32 yPos, f32 zPos, s32 updateRate); s32 func_800185E4(s8, Object* obj, f32 xPos, f32 yPos, f32 zPos, f32* checkpointDistance, u8*); /* extern */ void func_80011134(Object *, s32); Object *func_8002342C(f32 x, f32 z); -void func_8006017C(s32); +void func_8006017C(ObjectModel *); void func_80012F94(Object *); void render_3d_model(Object *); void func_800101AC(Object *, s32); diff --git a/src/save_data.c b/src/save_data.c index c2579028..6d4293d2 100644 --- a/src/save_data.c +++ b/src/save_data.c @@ -127,7 +127,7 @@ u8 func_80072250(s32 arg0) { void func_80072298(u8 arg0) { D_801241E4 = arg0; - if (arg0 != 0) { + if (arg0) { gRumbleDetectionTimer = 0x79; D_801241E6 = 0xF; return; @@ -192,10 +192,10 @@ void func_80072578(s16 controllerIndex, s16 arg1, s16 arg2) { s16 index; u8 new_var; - if (D_801241E4 != 0 && controllerIndex >= 0 && controllerIndex < 4) { + if (D_801241E4 && controllerIndex >= 0 && controllerIndex < 4) { new_var = func_80072250(controllerIndex); index = 0xFFFF; - index = index & new_var; + index &= new_var; new_var = 1 << index; D_801241E6 |= new_var; D_801241E7 &= ~new_var; @@ -1624,7 +1624,7 @@ void init_controller_paks(void) { sControllerMesgQueue = get_si_mesg_queue(); sUnkMiscAsset19 = (s16 *)get_misc_asset(ASSET_MISC_19); D_801241E6 = D_801241E7 = 0xF; - D_801241E4 = 1; + D_801241E4 = TRUE; gRumbleDetectionTimer = 0; D_800DE48C = 1; sControllerPaksPresent = sRumblePaksPresent = 0; diff --git a/src/textures_sprites.c b/src/textures_sprites.c index 7cf1756b..cbe41ec5 100644 --- a/src/textures_sprites.c +++ b/src/textures_sprites.c @@ -265,7 +265,7 @@ const char D_800E7C50[] = "TEXSPR Error: Tryed to deallocate non-existent sprite s32 *gTextureAssetTable[2]; -TextureCacheEntry *gTextureCache; +s32 *gTextureCache; u8 *gCiPalettes; s32 gNumberOfLoadedTextures; @@ -275,7 +275,7 @@ s32 gCiPalettesSize; s32 D_80126344; s32 *gSpriteOffsetTable; -SpriteCacheEntry *gSpriteCache; +s32 *gSpriteCache; Sprite *gCurrentSprite; s32 D_80126354; @@ -396,8 +396,8 @@ TextureHeader *load_texture(s32 arg0) { arg0 = 0; } for (i = 0; i < gNumberOfLoadedTextures; i++) { - if (arg0 == gTextureCache[i].id) { - tex = gTextureCache[i].texture; + if (arg0 == gTextureCache[(i << 1)]) { + tex = gTextureCache[(i << 1) + 1]; tex->numberOfInstances++; return tex; } @@ -429,15 +429,15 @@ TextureHeader *load_texture(s32 arg0) { } texIndex = -1; for (i = 0; i < gNumberOfLoadedTextures; i++) { - if (gTextureCache[i].id == -1) { + if (gTextureCache[(i << 1)] == -1) { texIndex = i; } } if (texIndex == -1) { texIndex = gNumberOfLoadedTextures++; } - gTextureCache[texIndex].id = arg0; - gTextureCache[texIndex].texture = tex; + gTextureCache[(texIndex << 1)] = arg0; + gTextureCache[(texIndex << 1) + 1] = tex; paletteOffset = -1; if ((tex->format & 0xF) == TEX_FORMAT_CI4) { if (D_80126344 == 0) { @@ -479,33 +479,27 @@ TextureHeader *load_texture(s32 arg0) { GLOBAL_ASM("asm/non_matchings/textures_sprites/load_texture.s") #endif -#ifdef NON_MATCHING /** - * The same difference preventing this from matching is the same as free_sprite + * This function frees textures * Official Name: texFreeTexture */ void free_texture(TextureHeader *tex) { s32 i; - s32 texId; - - if (tex != NULL) { - tex->numberOfInstances--; - if (tex->numberOfInstances <= 0) { + + if (tex != 0) { + if ((--tex->numberOfInstances) <= 0) { for (i = 0; i < gNumberOfLoadedTextures; i++) { - if (tex == gTextureCache[i].texture) { - texId = -1; + if ((s32)tex == gTextureCache[(i << 1) + 1]) { free_from_memory_pool(tex); - gTextureCache[i].id = texId; - gTextureCache[i].texture = (TextureHeader *) texId; - break; + + gTextureCache[(i << 1)] = -1; + gTextureCache[(i << 1) + 1] = -1; + return; } } } } } -#else -GLOBAL_ASM("asm/non_matchings/textures_sprites/free_texture.s") -#endif /** * Set the colour tag that determines which memory pool textures will be loaded into. @@ -516,15 +510,14 @@ void set_texture_colour_tag(s32 tagID) { gTexColourTag = tagID; } -UNUSED TextureHeader *func_8007B380(s32 arg0) { +UNUSED s32 func_8007B380(s32 arg0) { if ((arg0 < 0) || (arg0 >= gNumberOfLoadedTextures)) { return 0; } - // Regalloc issue here - if (gTextureCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].texture == (TextureHeader *)-1) { + if (gTextureCache[(arg0 << 1) + 1] == -1) { return 0; } - return gTextureCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].texture; + return gTextureCache[(arg0 << 1) + 1]; } /** @@ -804,16 +797,14 @@ GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007BF34.s") GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C12C.s") Sprite *func_8007C52C(s32 arg0) { - Sprite *sprite; if ((arg0 < 0) || (arg0 >= D_80126358)) { return NULL; } - // Fakematch! The shifts here is a hack to skip a register. - sprite = gSpriteCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].sprite; - if ((s32)sprite == -1) { + + if (gSpriteCache[(arg0 << 1) + 1] == -1) { return NULL; } - return sprite; + return gSpriteCache[(arg0 << 1) + 1]; } s32 get_texture_size_from_id(s32 id) { @@ -881,14 +872,14 @@ UNUSED s32 func_8007C860(s32 spriteIndex) { if ((spriteIndex < 0) || (spriteIndex >= gNumberOfLoadedTextures)) { return -1; } - return ((TextureCacheEntry *) ((s32*) gTextureCache + spriteIndex * 2))->id; + return gTextureCache[spriteIndex << 1]; } UNUSED s32 func_8007C8A0(s32 spriteIndex) { if ((spriteIndex < 0) || (spriteIndex >= D_80126358)) { return -1; } - return ((SpriteCacheEntry*) ((s32*) gSpriteCache + spriteIndex * 2))->id; + return gSpriteCache[spriteIndex << 1]; } s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut, s32 *sizeOut) { @@ -932,34 +923,28 @@ s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 * GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007CA68.s") -#ifdef NON_MATCHING /* Official name: texFreeSprite */ void free_sprite(Sprite *sprite) { s32 i; s32 frame; - s32 spriteId; if (sprite != NULL) { sprite->numberOfInstances--; if (sprite->numberOfInstances <= 0) { for (i = 0; i < D_80126358; i++) { - if (sprite == gSpriteCache[i].sprite) { + if ((s32)sprite == gSpriteCache[(i << 1) + 1]) { for (frame = 0; frame < sprite->numberOfFrames; frame++) { free_texture(sprite->frames[frame]); } - spriteId = -1; free_from_memory_pool(sprite); - gSpriteCache[i].id = spriteId; - gSpriteCache[i].sprite = (Sprite *)spriteId; + gSpriteCache[(i << 1) + 0] = -1; + gSpriteCache[(i << 1) + 1] = -1; // ? break; } } } } } -#else -GLOBAL_ASM("asm/non_matchings/textures_sprites/free_sprite.s") -#endif #ifdef NON_MATCHING void func_8007CDC0(Sprite *sprite1, Sprite *sprite2, s32 arg2) { diff --git a/src/textures_sprites.h b/src/textures_sprites.h index b7b2a6df..fce41ea0 100644 --- a/src/textures_sprites.h +++ b/src/textures_sprites.h @@ -121,6 +121,8 @@ void load_and_set_texture_no_offset(Gfx **dlist, TextureHeader *texhead, u32 fla void func_8007BF1C(s32 arg0); s32 func_8007EF64(s16 arg0); void load_and_set_texture(Gfx **dlist, TextureHeader *texhead, s32 flags, s32 offset); +void free_sprite(Sprite *sprite); +void free_texture(TextureHeader *tex); // There might be a file boundary here. void tex_animate_texture(TextureHeader *texture, u32 *triangleBatchInfoFlags, s32 *arg2, s32 updateRate); @@ -128,14 +130,11 @@ void func_8007F1E8(LevelHeader_70 *arg0); void init_pulsating_light_data(PulsatingLightData *data); void update_pulsating_light_data(PulsatingLightData *data, s32 timeDelta); TextureHeader *func_8007B46C(TextureHeader *arg0, s32 arg1); - TextureHeader *load_texture(s32 arg0); // Non Matching -void free_texture(TextureHeader *tex); // Non Matching s32 get_texture_size_from_id(s32 arg0); // Non Matching s32 func_8007C860(s32 spriteIndex); // Non Matching s32 load_sprite_info(s32 spriteID, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut, s32 *sizeOut); // Non Matching -void free_sprite(Sprite *sprite); // Non Matching void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor); // Non Matching void func_8007CA68(s32 spriteID, s32 arg1, s32 *arg2, s32 *arg3, s32 *arg4); // Non Matching MemoryPoolSlot *func_8007C12C(s32 spriteID, s32 arg1); // Non Matching diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 3795fb38..97043837 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -8,6 +8,8 @@ compiler_type = "ido" "OS_PHYSICAL_TO_K0" = "void *" "_SHIFTL" = "unsigned int" "G_IM_.*" = "unsigned int" +"KEEPLINEBREAK" = "void" +"IO_READ" = "volatile unsigned int *" [decompme.compilers] "./tools/ido-static-recomp/build/5.3/out/cc" = "ido5.3_irix"