diff --git a/README.md b/README.md index 32f35391..83434ade 100755 --- a/README.md +++ b/README.md @@ -113,14 +113,14 @@ s32 is_drumstick_unlocked(void) { } ``` -As of August 6th 2021, this is our current score: +As of August 14th 2021, this is our current score: ``` ======================================================= ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 13.16% Complete ------------------- - # Decompiled functions: 852 - # GLOBAL_ASM remaining: 918 - # NON_MATCHING functions: 76 + ------------------- 13.58% Complete ------------------- + # Decompiled functions: 865 + # GLOBAL_ASM remaining: 910 + # NON_MATCHING functions: 86 --------------------- Game Status --------------------- Balloons: 8/47, Keys: 1/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 @@ -130,7 +130,7 @@ As of August 6th 2021, this is our current score: ADVENTURE TWO (Cleanup & Documentation) ------------------- 0.75% Complete ------------------- # Documented functions: 61 - # Undocumented remaining: 1709 + # Undocumented remaining: 1714 --------------------- Game Status --------------------- Balloons: 0/47, Keys: 0/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 diff --git a/asm/non_matchings/menu/func_80081218.s b/asm/non_matchings/menu/func_80081218.s index 55f1d538..7ae5bbfc 100644 --- a/asm/non_matchings/menu/func_80081218.s +++ b/asm/non_matchings/menu/func_80081218.s @@ -82,11 +82,11 @@ glabel func_80081218 /* 081F58 80081358 24636C30 */ addiu $v1, %lo(gCheatsAssetData) # addiu $v1, $v1, 0x6c30 /* 081F5C 8008135C AC620000 */ sw $v0, ($v1) /* 081F60 80081360 94580000 */ lhu $t8, ($v0) -/* 081F64 80081364 3C018012 */ lui $at, %hi(D_80126C38) # $at, 0x8012 +/* 081F64 80081364 3C018012 */ lui $at, %hi(gNumberOfCheats) # $at, 0x8012 /* 081F68 80081368 24041000 */ li $a0, 4096 /* 081F6C 8008136C 2405FFFF */ li $a1, -1 /* 081F70 80081370 0C01C327 */ jal allocate_from_main_pool_safe -/* 081F74 80081374 AC386C38 */ sw $t8, %lo(D_80126C38)($at) +/* 081F74 80081374 AC386C38 */ sw $t8, %lo(gNumberOfCheats)($at) /* 081F78 80081378 3C01800E */ lui $at, %hi(gMenuText) # $at, 0x800e /* 081F7C 8008137C AC22F4A0 */ sw $v0, %lo(gMenuText)($at) /* 081F80 80081380 0C01FE40 */ jal load_menu_text diff --git a/asm/non_matchings/menu/func_8009CFEC.s b/asm/non_matchings/menu/func_8009CFEC.s index 74e2f196..cc43e457 100644 --- a/asm/non_matchings/menu/func_8009CFEC.s +++ b/asm/non_matchings/menu/func_8009CFEC.s @@ -64,7 +64,7 @@ glabel L8009D0B8 /* 09DCC0 8009D0C0 10000010 */ b .L8009D104 /* 09DCC4 8009D0C4 00401825 */ move $v1, $v0 glabel L8009D0C8 -/* 09DCC8 8009D0C8 0C0276CF */ jal func_8009DB3C +/* 09DCC8 8009D0C8 0C0276CF */ jal tt_menu_loop /* 09DCCC 8009D0CC 00000000 */ nop /* 09DCD0 8009D0D0 1000000C */ b .L8009D104 /* 09DCD4 8009D0D4 00401825 */ move $v1, $v0 diff --git a/asm/non_matchings/menu/menu_character_select_loop.s b/asm/non_matchings/menu/menu_character_select_loop.s index c2ea4a7a..9b9cfdd5 100644 --- a/asm/non_matchings/menu/menu_character_select_loop.s +++ b/asm/non_matchings/menu/menu_character_select_loop.s @@ -114,7 +114,7 @@ glabel menu_character_select_loop /* 08CAC8 8008BEC8 24420001 */ addiu $v0, $v0, 1 /* 08CACC 8008BECC 1449FFF0 */ bne $v0, $t1, .L8008BE90 /* 08CAD0 8008BED0 24630001 */ addiu $v1, $v1, 1 -/* 08CAD4 8008BED4 0C022ECF */ jal func_8008BB3C +/* 08CAD4 8008BED4 0C022ECF */ jal randomize_ai_racer_slots /* 08CAD8 8008BED8 AFAB0024 */ sw $t3, 0x24($sp) /* 08CADC 8008BEDC 3C048012 */ lui $a0, %hi(gActivePlayersArray) # $a0, 0x8012 /* 08CAE0 8008BEE0 0C01A916 */ jal func_8006A458 diff --git a/asm/non_matchings/menu/menu_ghost_data_init.s b/asm/non_matchings/menu/menu_ghost_data_init.s index 3dccf784..58118dca 100644 --- a/asm/non_matchings/menu/menu_ghost_data_init.s +++ b/asm/non_matchings/menu/menu_ghost_data_init.s @@ -41,26 +41,26 @@ glabel menu_ghost_data_init /* 09A6F4 80099AF4 3C01800E */ lui $at, %hi(D_800E153C) # $at, 0x800e /* 09A6F8 80099AF8 AC37153C */ sw $s7, %lo(D_800E153C)($at) /* 09A6FC 80099AFC 8C5E003C */ lw $fp, 0x3c($v0) -/* 09A700 80099B00 3C01800E */ lui $at, %hi(D_800E1564) # $at, 0x800e -/* 09A704 80099B04 AC3E1564 */ sw $fp, %lo(D_800E1564)($at) +/* 09A700 80099B00 3C01800E */ lui $at, %hi(D_800E153C+0x28) # $at, 0x800e +/* 09A704 80099B04 AC3E1564 */ sw $fp, %lo(D_800E153C+0x28)($at) /* 09A708 80099B08 8C430040 */ lw $v1, 0x40($v0) /* 09A70C 80099B0C 3C01800E */ lui $at, %hi(D_800E1594) # $at, 0x800e /* 09A710 80099B10 AC231594 */ sw $v1, %lo(D_800E1594)($at) /* 09A714 80099B14 8C440044 */ lw $a0, 0x44($v0) -/* 09A718 80099B18 3C01800E */ lui $at, %hi(D_800E15BC) # $at, 0x800e -/* 09A71C 80099B1C AC2415BC */ sw $a0, %lo(D_800E15BC)($at) +/* 09A718 80099B18 3C01800E */ lui $at, %hi(D_800E1594+0x28) # $at, 0x800e +/* 09A71C 80099B1C AC2415BC */ sw $a0, %lo(D_800E1594+0x28)($at) /* 09A720 80099B20 8C450048 */ lw $a1, 0x48($v0) /* 09A724 80099B24 3C01800E */ lui $at, %hi(D_800E15EC) # $at, 0x800e /* 09A728 80099B28 AC2515EC */ sw $a1, %lo(D_800E15EC)($at) /* 09A72C 80099B2C 8C46004C */ lw $a2, 0x4c($v0) -/* 09A730 80099B30 3C01800E */ lui $at, %hi(D_800E1614) # $at, 0x800e -/* 09A734 80099B34 AC261614 */ sw $a2, %lo(D_800E1614)($at) +/* 09A730 80099B30 3C01800E */ lui $at, %hi(D_800E15EC+0x28) # $at, 0x800e +/* 09A734 80099B34 AC261614 */ sw $a2, %lo(D_800E15EC+0x28)($at) /* 09A738 80099B38 8C470050 */ lw $a3, 0x50($v0) /* 09A73C 80099B3C 3C01800E */ lui $at, %hi(D_800E1644) # $at, 0x800e /* 09A740 80099B40 AC271644 */ sw $a3, %lo(D_800E1644)($at) /* 09A744 80099B44 8C490054 */ lw $t1, 0x54($v0) -/* 09A748 80099B48 3C01800E */ lui $at, %hi(D_800E166C) # $at, 0x800e -/* 09A74C 80099B4C AC29166C */ sw $t1, %lo(D_800E166C)($at) +/* 09A748 80099B48 3C01800E */ lui $at, %hi(D_800E1644+0x28) # $at, 0x800e +/* 09A74C 80099B4C AC29166C */ sw $t1, %lo(D_800E1644+0x28)($at) /* 09A750 80099B50 8C4A0058 */ lw $t2, 0x58($v0) /* 09A754 80099B54 3C01800E */ lui $at, %hi(D_800E169C) # $at, 0x800e /* 09A758 80099B58 24080001 */ li $t0, 1 @@ -71,8 +71,8 @@ glabel menu_ghost_data_init /* 09A76C 80099B6C 310A0001 */ andi $t2, $t0, 1 /* 09A770 80099B70 01460019 */ multu $t2, $a2 /* 09A774 80099B74 8C4B005C */ lw $t3, 0x5c($v0) -/* 09A778 80099B78 3C01800E */ lui $at, %hi(D_800E16C4) # $at, 0x800e -/* 09A77C 80099B7C AC2B16C4 */ sw $t3, %lo(D_800E16C4)($at) +/* 09A778 80099B78 3C01800E */ lui $at, %hi(D_800E169C+0x28) # $at, 0x800e +/* 09A77C 80099B7C AC2B16C4 */ sw $t3, %lo(D_800E169C+0x28)($at) /* 09A780 80099B80 AFAB0048 */ sw $t3, 0x48($sp) /* 09A784 80099B84 3C0F800E */ lui $t7, %hi(D_800E153C) # $t7, 0x800e /* 09A788 80099B88 AFA5005C */ sw $a1, 0x5c($sp) diff --git a/asm/non_matchings/menu/menu_init.s b/asm/non_matchings/menu/menu_init.s deleted file mode 100644 index cc86d717..00000000 --- a/asm/non_matchings/menu/menu_init.s +++ /dev/null @@ -1,147 +0,0 @@ -.late_rodata -glabel jpt_800E8284 -.word L80081464, L80081454, L8008158C, L800814C4, L8008158C, L80081504, L800814E4, L8008158C, L8008158C, L8008158C, L800814A4, L800814B4, L80081474, L80081484, L80081494, L800814F4, L8008158C, L80081514, L8008158C, L800814D4, L80081524, L80081534, L8008158C, L80081544, L80081554, L80081564, L80081574, L8008158C, L80081584 - -.text -glabel menu_init -/* 081FD0 800813D0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 081FD4 800813D4 AFBF0014 */ sw $ra, 0x14($sp) -/* 081FD8 800813D8 3C01800E */ lui $at, %hi(gCurrentMenuId) # $at, 0x800e -/* 081FDC 800813DC 0C026F97 */ jal reset_controller_sticks -/* 081FE0 800813E0 AC24F470 */ sw $a0, %lo(gCurrentMenuId)($at) -/* 081FE4 800813E4 240E0001 */ li $t6, 1 -/* 081FE8 800813E8 3C018012 */ lui $at, %hi(gIgnorePlayerInput) # $at, 0x8012 -/* 081FEC 800813EC AC2E63C4 */ sw $t6, %lo(gIgnorePlayerInput)($at) -/* 081FF0 800813F0 3C018012 */ lui $at, %hi(D_801263BC) # $at, 0x8012 -/* 081FF4 800813F4 AC2063BC */ sw $zero, %lo(D_801263BC)($at) -/* 081FF8 800813F8 3C018012 */ lui $at, %hi(D_801263C8) # $at, 0x8012 -/* 081FFC 800813FC AC2063C8 */ sw $zero, %lo(D_801263C8)($at) -/* 082000 80081400 3C018012 */ lui $at, %hi(D_80126828) # $at, 0x8012 -/* 082004 80081404 A0206828 */ sb $zero, %lo(D_80126828)($at) -/* 082008 80081408 3C018012 */ lui $at, %hi(D_8012680C) # $at, 0x8012 -/* 08200C 8008140C AC206808 */ sw $zero, %lo(D_80126808)($at) -/* 082010 80081410 AC20680C */ sw $zero, %lo(D_8012680C)($at) -/* 082014 80081414 3C018012 */ lui $at, %hi(D_80126814) # $at, 0x8012 -/* 082018 80081418 AC206810 */ sw $zero, %lo(D_80126810)($at) -/* 08201C 8008141C 0C000611 */ jal func_80001844 -/* 082020 80081420 AC206814 */ sw $zero, %lo(D_80126814)($at) -/* 082024 80081424 3C0F800E */ lui $t7, %hi(gCurrentMenuId) # $t7, 0x800e -/* 082028 80081428 8DEFF470 */ lw $t7, %lo(gCurrentMenuId)($t7) -/* 08202C 8008142C 00000000 */ nop -/* 082030 80081430 2DE1001D */ sltiu $at, $t7, 0x1d -/* 082034 80081434 10200055 */ beqz $at, .L8008158C -/* 082038 80081438 000F7880 */ sll $t7, $t7, 2 -/* 08203C 8008143C 3C01800F */ lui $at, %hi(jpt_800E8284) # $at, 0x800f -/* 082040 80081440 002F0821 */ addu $at, $at, $t7 -/* 082044 80081444 8C2F8284 */ lw $t7, %lo(jpt_800E8284)($at) -/* 082048 80081448 00000000 */ nop -/* 08204C 8008144C 01E00008 */ jr $t7 -/* 082050 80081450 00000000 */ nop -glabel L80081454 -/* 082054 80081454 0C020AAB */ jal menu_logos_screen_init -/* 082058 80081458 00000000 */ nop -/* 08205C 8008145C 1000004C */ b .L80081590 -/* 082060 80081460 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081464 -/* 082064 80081464 0C020D4F */ jal menu_title_screen_init -/* 082068 80081468 00000000 */ nop -/* 08206C 8008146C 10000048 */ b .L80081590 -/* 082070 80081470 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081474 -/* 082074 80081474 0C021057 */ jal menu_options_init -/* 082078 80081478 00000000 */ nop -/* 08207C 8008147C 10000044 */ b .L80081590 -/* 082080 80081480 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081484 -/* 082084 80081484 0C0211D5 */ jal menu_audio_options_init -/* 082088 80081488 00000000 */ nop -/* 08208C 8008148C 10000040 */ b .L80081590 -/* 082090 80081490 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081494 -/* 082094 80081494 0C02149C */ jal menu_save_options_init -/* 082098 80081498 00000000 */ nop -/* 08209C 8008149C 1000003C */ b .L80081590 -/* 0820A0 800814A0 8FBF0014 */ lw $ra, 0x14($sp) -glabel L800814A4 -/* 0820A4 800814A4 0C022577 */ jal menu_magic_codes_init -/* 0820A8 800814A8 00000000 */ nop -/* 0820AC 800814AC 10000038 */ b .L80081590 -/* 0820B0 800814B0 8FBF0014 */ lw $ra, 0x14($sp) -glabel L800814B4 -/* 0820B4 800814B4 0C02293A */ jal menu_magic_codes_list_init -/* 0820B8 800814B8 00000000 */ nop -/* 0820BC 800814BC 10000034 */ b .L80081590 -/* 0820C0 800814C0 8FBF0014 */ lw $ra, 0x14($sp) -glabel L800814C4 -/* 0820C4 800814C4 0C022BF3 */ jal menu_character_select_init -/* 0820C8 800814C8 00000000 */ nop -/* 0820CC 800814CC 10000030 */ b .L80081590 -/* 0820D0 800814D0 8FBF0014 */ lw $ra, 0x14($sp) -glabel L800814D4 -/* 0820D4 800814D4 0C023142 */ jal menu_game_select_init -/* 0820D8 800814D8 00000000 */ nop -/* 0820DC 800814DC 1000002C */ b .L80081590 -/* 0820E0 800814E0 8FBF0014 */ lw $ra, 0x14($sp) -glabel L800814E4 -/* 0820E4 800814E4 0C0232BF */ jal menu_file_select_init -/* 0820E8 800814E8 00000000 */ nop -/* 0820EC 800814EC 10000028 */ b .L80081590 -/* 0820F0 800814F0 8FBF0014 */ lw $ra, 0x14($sp) -glabel L800814F4 -/* 0820F4 800814F4 0C0239E8 */ jal menu_track_select_init -/* 0820F8 800814F8 00000000 */ nop -/* 0820FC 800814FC 10000024 */ b .L80081590 -/* 082100 80081500 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081504 -/* 082104 80081504 0C024B21 */ jal menu_5_init -/* 082108 80081508 00000000 */ nop -/* 08210C 8008150C 10000020 */ b .L80081590 -/* 082110 80081510 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081514 -/* 082114 80081514 0C025A12 */ jal menu_11_init -/* 082118 80081518 00000000 */ nop -/* 08211C 8008151C 1000001C */ b .L80081590 -/* 082120 80081520 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081524 -/* 082124 80081524 0C02609B */ jal menu_trophy_race_round_init -/* 082128 80081528 00000000 */ nop -/* 08212C 8008152C 10000018 */ b .L80081590 -/* 082130 80081530 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081534 -/* 082134 80081534 0C026289 */ jal menu_trophy_race_rankings_init -/* 082138 80081538 00000000 */ nop -/* 08213C 8008153C 10000014 */ b .L80081590 -/* 082140 80081540 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081544 -/* 082144 80081544 0C026B26 */ jal menu_23_init -/* 082148 80081548 00000000 */ nop -/* 08214C 8008154C 10000010 */ b .L80081590 -/* 082150 80081550 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081554 -/* 082154 80081554 0C026697 */ jal menu_ghost_data_init -/* 082158 80081558 00000000 */ nop -/* 08215C 8008155C 1000000C */ b .L80081590 -/* 082160 80081560 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081564 -/* 082164 80081564 0C026BD2 */ jal menu_credits_init -/* 082168 80081568 00000000 */ nop -/* 08216C 8008156C 10000008 */ b .L80081590 -/* 082170 80081570 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081574 -/* 082174 80081574 0C02213D */ jal menu_boot_init -/* 082178 80081578 00000000 */ nop -/* 08217C 8008157C 10000004 */ b .L80081590 -/* 082180 80081580 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80081584 -/* 082184 80081584 0C0230ED */ jal menu_caution_init -/* 082188 80081588 00000000 */ nop -.L8008158C: -glabel L8008158C -/* 08218C 8008158C 8FBF0014 */ lw $ra, 0x14($sp) -.L80081590: -/* 082190 80081590 3418D000 */ li $t8, 53248 -/* 082194 80081594 3C018012 */ lui $at, %hi(D_80126470) # $at, 0x8012 -/* 082198 80081598 AC386470 */ sw $t8, %lo(D_80126470)($at) -/* 08219C 8008159C 03E00008 */ jr $ra -/* 0821A0 800815A0 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/menu/menu_logo_screen_loop.s b/asm/non_matchings/menu/menu_logo_screen_loop.s deleted file mode 100644 index 2ac27a5d..00000000 --- a/asm/non_matchings/menu/menu_logo_screen_loop.s +++ /dev/null @@ -1,294 +0,0 @@ -.late_rodata -glabel D_800E838C -.float 2.6 -glabel D_800E8390 -.float 2.17 -.word 0 # Padding -glabel D_800E8398 -.double 510.0 -glabel D_800E83A0 -.double 510.0 -glabel D_800E83A8 -.double 510.0 - -.text -glabel menu_logo_screen_loop -/* 083784 80082B84 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 083788 80082B88 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 08378C 80082B8C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 083790 80082B90 AFBF001C */ sw $ra, 0x1c($sp) -/* 083794 80082B94 15C00020 */ bnez $t6, .L80082C18 -/* 083798 80082B98 AFA40030 */ sw $a0, 0x30($sp) -/* 08379C 80082B9C 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 0837A0 80082BA0 C4206450 */ lwc1 $f0, %lo(D_80126450)($at) -/* 0837A4 80082BA4 3C01800F */ lui $at, %hi(D_800E838C) # $at, 0x800f -/* 0837A8 80082BA8 C424838C */ lwc1 $f4, %lo(D_800E838C)($at) -/* 0837AC 80082BAC 240F001A */ li $t7, 26 -/* 0837B0 80082BB0 4604003C */ c.lt.s $f0, $f4 -/* 0837B4 80082BB4 AFAF0028 */ sw $t7, 0x28($sp) -/* 0837B8 80082BB8 4500000D */ bc1f .L80082BF0 -/* 0837BC 80082BBC 3C18800E */ lui $t8, %hi(gMenuDelay) # $t8, 0x800e -/* 0837C0 80082BC0 8F18F47C */ lw $t8, %lo(gMenuDelay)($t8) -/* 0837C4 80082BC4 3C04800E */ lui $a0, %hi(D_800E1DE8) # $a0, 0x800e -/* 0837C8 80082BC8 1700000A */ bnez $t8, .L80082BF4 -/* 0837CC 80082BCC 8FA80030 */ lw $t0, 0x30($sp) -/* 0837D0 80082BD0 0C030076 */ jal func_800C01D8 -/* 0837D4 80082BD4 24841DE8 */ addiu $a0, %lo(D_800E1DE8) # addiu $a0, $a0, 0x1de8 -/* 0837D8 80082BD8 24190001 */ li $t9, 1 -/* 0837DC 80082BDC 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 0837E0 80082BE0 AC39F47C */ sw $t9, %lo(gMenuDelay)($at) -/* 0837E4 80082BE4 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 0837E8 80082BE8 C4206450 */ lwc1 $f0, %lo(D_80126450)($at) -/* 0837EC 80082BEC 00000000 */ nop -.L80082BF0: -/* 0837F0 80082BF0 8FA80030 */ lw $t0, 0x30($sp) -.L80082BF4: -/* 0837F4 80082BF4 3C014248 */ li $at, 0x42480000 # 50.000000 -/* 0837F8 80082BF8 44883000 */ mtc1 $t0, $f6 -/* 0837FC 80082BFC 44815000 */ mtc1 $at, $f10 -/* 083800 80082C00 46803220 */ cvt.s.w $f8, $f6 -/* 083804 80082C04 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 083808 80082C08 460A4403 */ div.s $f16, $f8, $f10 -/* 08380C 80082C0C 46100481 */ sub.s $f18, $f0, $f16 -/* 083810 80082C10 1000001F */ b .L80082C90 -/* 083814 80082C14 E4326450 */ swc1 $f18, %lo(D_80126450)($at) -.L80082C18: -/* 083818 80082C18 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 08381C 80082C1C C4206450 */ lwc1 $f0, %lo(D_80126450)($at) -/* 083820 80082C20 3C01800F */ lui $at, %hi(D_800E8390) # $at, 0x800f -/* 083824 80082C24 C4248390 */ lwc1 $f4, %lo(D_800E8390)($at) -/* 083828 80082C28 AFA00028 */ sw $zero, 0x28($sp) -/* 08382C 80082C2C 4604003C */ c.lt.s $f0, $f4 -/* 083830 80082C30 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 083834 80082C34 4500000E */ bc1f .L80082C70 -/* 083838 80082C38 8FAB0030 */ lw $t3, 0x30($sp) -/* 08383C 80082C3C 8D29F47C */ lw $t1, %lo(gMenuDelay)($t1) -/* 083840 80082C40 3C04800E */ lui $a0, %hi(D_800E1DE8) # $a0, 0x800e -/* 083844 80082C44 1520000A */ bnez $t1, .L80082C70 -/* 083848 80082C48 8FAB0030 */ lw $t3, 0x30($sp) -/* 08384C 80082C4C 0C030076 */ jal func_800C01D8 -/* 083850 80082C50 24841DE8 */ addiu $a0, %lo(D_800E1DE8) # addiu $a0, $a0, 0x1de8 -/* 083854 80082C54 240A0001 */ li $t2, 1 -/* 083858 80082C58 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 08385C 80082C5C AC2AF47C */ sw $t2, %lo(gMenuDelay)($at) -/* 083860 80082C60 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 083864 80082C64 C4206450 */ lwc1 $f0, %lo(D_80126450)($at) -/* 083868 80082C68 00000000 */ nop -/* 08386C 80082C6C 8FAB0030 */ lw $t3, 0x30($sp) -.L80082C70: -/* 083870 80082C70 3C014270 */ li $at, 0x42700000 # 60.000000 -/* 083874 80082C74 448B3000 */ mtc1 $t3, $f6 -/* 083878 80082C78 44815000 */ mtc1 $at, $f10 -/* 08387C 80082C7C 46803220 */ cvt.s.w $f8, $f6 -/* 083880 80082C80 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 083884 80082C84 460A4403 */ div.s $f16, $f8, $f10 -/* 083888 80082C88 46100481 */ sub.s $f18, $f0, $f16 -/* 08388C 80082C8C E4326450 */ swc1 $f18, %lo(D_80126450)($at) -.L80082C90: -/* 083890 80082C90 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 083894 80082C94 C4206450 */ lwc1 $f0, %lo(D_80126450)($at) -/* 083898 80082C98 44802000 */ mtc1 $zero, $f4 -/* 08389C 80082C9C 00002025 */ move $a0, $zero -/* 0838A0 80082CA0 4604003E */ c.le.s $f0, $f4 -/* 0838A4 80082CA4 00000000 */ nop -/* 0838A8 80082CA8 45000012 */ bc1f .L80082CF4 -/* 0838AC 80082CAC 3C014021 */ lui $at, 0x4021 -/* 0838B0 80082CB0 0C019A25 */ jal func_80066894 -/* 0838B4 80082CB4 00002825 */ move $a1, $zero -/* 0838B8 80082CB8 340C8000 */ li $t4, 32768 -/* 0838BC 80082CBC AFAC0010 */ sw $t4, 0x10($sp) -/* 0838C0 80082CC0 00002025 */ move $a0, $zero -/* 0838C4 80082CC4 34058000 */ li $a1, 32768 -/* 0838C8 80082CC8 34068000 */ li $a2, 32768 -/* 0838CC 80082CCC 0C019AAA */ jal func_80066AA8 -/* 0838D0 80082CD0 34078000 */ li $a3, 32768 -/* 0838D4 80082CD4 0C020BEB */ jal func_80082FAC -/* 0838D8 80082CD8 00000000 */ nop -/* 0838DC 80082CDC 0C0204F4 */ jal menu_init -/* 0838E0 80082CE0 00002025 */ move $a0, $zero -/* 0838E4 80082CE4 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 0838E8 80082CE8 C4206450 */ lwc1 $f0, %lo(D_80126450)($at) -/* 0838EC 80082CEC 00000000 */ nop -/* 0838F0 80082CF0 3C014021 */ li $at, 0x40210000 # 2.515625 -.L80082CF4: -/* 0838F4 80082CF4 44814800 */ mtc1 $at, $f9 -/* 0838F8 80082CF8 44804000 */ mtc1 $zero, $f8 -/* 0838FC 80082CFC 460001A1 */ cvt.d.s $f6, $f0 -/* 083900 80082D00 4628303C */ c.lt.d $f6, $f8 -/* 083904 80082D04 00000000 */ nop -/* 083908 80082D08 450000A5 */ bc1f .L80082FA0 -/* 08390C 80082D0C 8FBF001C */ lw $ra, 0x1c($sp) -/* 083910 80082D10 0C0310BB */ jal set_text_font -/* 083914 80082D14 24040001 */ li $a0, 1 -/* 083918 80082D18 00002025 */ move $a0, $zero -/* 08391C 80082D1C 00002825 */ move $a1, $zero -/* 083920 80082D20 00003025 */ move $a2, $zero -/* 083924 80082D24 0C0310F3 */ jal set_text_background_color -/* 083928 80082D28 00003825 */ move $a3, $zero -/* 08392C 80082D2C 3C014020 */ li $at, 0x40200000 # 2.500000 -/* 083930 80082D30 44816800 */ mtc1 $at, $f13 -/* 083934 80082D34 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 083938 80082D38 C42A6450 */ lwc1 $f10, %lo(D_80126450)($at) -/* 08393C 80082D3C 44806000 */ mtc1 $zero, $f12 -/* 083940 80082D40 46005021 */ cvt.d.s $f0, $f10 -/* 083944 80082D44 462C003C */ c.lt.d $f0, $f12 -/* 083948 80082D48 3C01401E */ li $at, 0x401E0000 # 2.468750 -/* 08394C 80082D4C 45000018 */ bc1f .L80082DB0 -/* 083950 80082D50 240400FF */ li $a0, 255 -/* 083954 80082D54 44818800 */ mtc1 $at, $f17 -/* 083958 80082D58 44808000 */ mtc1 $zero, $f16 -/* 08395C 80082D5C 3C01800F */ lui $at, %hi(D_800E8398 + 4) # $at, 0x800f -/* 083960 80082D60 4620803E */ c.le.d $f16, $f0 -/* 083964 80082D64 00000000 */ nop -/* 083968 80082D68 45000011 */ bc1f .L80082DB0 -/* 08396C 80082D6C 00000000 */ nop -/* 083970 80082D70 46206481 */ sub.d $f18, $f12, $f0 -/* 083974 80082D74 C4258398 */ lwc1 $f5, %lo(D_800E8398)($at) -/* 083978 80082D78 C424839C */ lwc1 $f4, %lo(D_800E8398 + 4)($at) -/* 08397C 80082D7C 00000000 */ nop -/* 083980 80082D80 46249182 */ mul.d $f6, $f18, $f4 -/* 083984 80082D84 444DF800 */ cfc1 $t5, $31 -/* 083988 80082D88 00000000 */ nop -/* 08398C 80082D8C 35A10003 */ ori $at, $t5, 3 -/* 083990 80082D90 38210002 */ xori $at, $at, 2 -/* 083994 80082D94 44C1F800 */ ctc1 $at, $31 -/* 083998 80082D98 00000000 */ nop -/* 08399C 80082D9C 46203224 */ cvt.w.d $f8, $f6 -/* 0839A0 80082DA0 44024000 */ mfc1 $v0, $f8 -/* 0839A4 80082DA4 44CDF800 */ ctc1 $t5, $31 -/* 0839A8 80082DA8 10000020 */ b .L80082E2C -/* 0839AC 80082DAC 00000000 */ nop -.L80082DB0: -/* 0839B0 80082DB0 3C01401E */ li $at, 0x401E0000 # 2.468750 -/* 0839B4 80082DB4 44815800 */ mtc1 $at, $f11 -/* 0839B8 80082DB8 44805000 */ mtc1 $zero, $f10 -/* 0839BC 80082DBC 3C01401C */ li $at, 0x401C0000 # 2.437500 -/* 0839C0 80082DC0 462A003C */ c.lt.d $f0, $f10 -/* 0839C4 80082DC4 00001025 */ move $v0, $zero -/* 0839C8 80082DC8 45000018 */ bc1f .L80082E2C -/* 0839CC 80082DCC 00000000 */ nop -/* 0839D0 80082DD0 44811800 */ mtc1 $at, $f3 -/* 0839D4 80082DD4 44801000 */ mtc1 $zero, $f2 -/* 0839D8 80082DD8 3C01800F */ lui $at, %hi(D_800E83A0 + 4) # $at, 0x800f -/* 0839DC 80082DDC 4620103E */ c.le.d $f2, $f0 -/* 0839E0 80082DE0 00000000 */ nop -/* 0839E4 80082DE4 45000011 */ bc1f .L80082E2C -/* 0839E8 80082DE8 00000000 */ nop -/* 0839EC 80082DEC 46220401 */ sub.d $f16, $f0, $f2 -/* 0839F0 80082DF0 C43383A0 */ lwc1 $f19, %lo(D_800E83A0)($at) -/* 0839F4 80082DF4 C43283A4 */ lwc1 $f18, %lo(D_800E83A0 + 4)($at) -/* 0839F8 80082DF8 00000000 */ nop -/* 0839FC 80082DFC 46328102 */ mul.d $f4, $f16, $f18 -/* 083A00 80082E00 444EF800 */ cfc1 $t6, $31 -/* 083A04 80082E04 00000000 */ nop -/* 083A08 80082E08 35C10003 */ ori $at, $t6, 3 -/* 083A0C 80082E0C 38210002 */ xori $at, $at, 2 -/* 083A10 80082E10 44C1F800 */ ctc1 $at, $31 -/* 083A14 80082E14 00000000 */ nop -/* 083A18 80082E18 462021A4 */ cvt.w.d $f6, $f4 -/* 083A1C 80082E1C 44023000 */ mfc1 $v0, $f6 -/* 083A20 80082E20 44CEF800 */ ctc1 $t6, $31 -/* 083A24 80082E24 10000001 */ b .L80082E2C -/* 083A28 80082E28 00000000 */ nop -.L80082E2C: -/* 083A2C 80082E2C 10400033 */ beqz $v0, .L80082EFC -/* 083A30 80082E30 240500FF */ li $a1, 255 -/* 083A34 80082E34 00003025 */ move $a2, $zero -/* 083A38 80082E38 240700FF */ li $a3, 255 -/* 083A3C 80082E3C 0C0310E1 */ jal set_text_color -/* 083A40 80082E40 AFA20010 */ sw $v0, 0x10($sp) -/* 083A44 80082E44 8FA60028 */ lw $a2, 0x28($sp) -/* 083A48 80082E48 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 083A4C 80082E4C 3C07800E */ lui $a3, %hi(gRareCopyrightString) # $a3, 0x800e -/* 083A50 80082E50 240F000C */ li $t7, 12 -/* 083A54 80082E54 24C600D4 */ addiu $a2, $a2, 0xd4 -/* 083A58 80082E58 AFA60020 */ sw $a2, 0x20($sp) -/* 083A5C 80082E5C AFAF0010 */ sw $t7, 0x10($sp) -/* 083A60 80082E60 24E71DF0 */ addiu $a3, %lo(gRareCopyrightString) # addiu $a3, $a3, 0x1df0 -/* 083A64 80082E64 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -/* 083A68 80082E68 0C031110 */ jal draw_text -/* 083A6C 80082E6C 2405009F */ li $a1, 159 -/* 083A70 80082E70 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 083A74 80082E74 8FA60020 */ lw $a2, 0x20($sp) -/* 083A78 80082E78 3C07800E */ lui $a3, %hi(gRareCopyrightString) # $a3, 0x800e -/* 083A7C 80082E7C 2418000C */ li $t8, 12 -/* 083A80 80082E80 AFB80010 */ sw $t8, 0x10($sp) -/* 083A84 80082E84 24E71DF0 */ addiu $a3, %lo(gRareCopyrightString) # addiu $a3, $a3, 0x1df0 -/* 083A88 80082E88 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -/* 083A8C 80082E8C 0C031110 */ jal draw_text -/* 083A90 80082E90 240500A1 */ li $a1, 161 -/* 083A94 80082E94 8FA60028 */ lw $a2, 0x28($sp) -/* 083A98 80082E98 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 083A9C 80082E9C 3C07800E */ lui $a3, %hi(gRareCopyrightString) # $a3, 0x800e -/* 083AA0 80082EA0 2419000C */ li $t9, 12 -/* 083AA4 80082EA4 AFB90010 */ sw $t9, 0x10($sp) -/* 083AA8 80082EA8 24E71DF0 */ addiu $a3, %lo(gRareCopyrightString) # addiu $a3, $a3, 0x1df0 -/* 083AAC 80082EAC 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -/* 083AB0 80082EB0 24058000 */ li $a1, -32768 -/* 083AB4 80082EB4 0C031110 */ jal draw_text -/* 083AB8 80082EB8 24C600D3 */ addiu $a2, $a2, 0xd3 -/* 083ABC 80082EBC 8FA60028 */ lw $a2, 0x28($sp) -/* 083AC0 80082EC0 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 083AC4 80082EC4 3C07800E */ lui $a3, %hi(gRareCopyrightString) # $a3, 0x800e -/* 083AC8 80082EC8 2408000C */ li $t0, 12 -/* 083ACC 80082ECC AFA80010 */ sw $t0, 0x10($sp) -/* 083AD0 80082ED0 24E71DF0 */ addiu $a3, %lo(gRareCopyrightString) # addiu $a3, $a3, 0x1df0 -/* 083AD4 80082ED4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -/* 083AD8 80082ED8 24058000 */ li $a1, -32768 -/* 083ADC 80082EDC 0C031110 */ jal draw_text -/* 083AE0 80082EE0 24C600D5 */ addiu $a2, $a2, 0xd5 -/* 083AE4 80082EE4 3C018012 */ lui $at, %hi(D_80126450) # $at, 0x8012 -/* 083AE8 80082EE8 C4286450 */ lwc1 $f8, %lo(D_80126450)($at) -/* 083AEC 80082EEC 3C014020 */ li $at, 0x40200000 # 2.500000 -/* 083AF0 80082EF0 44816800 */ mtc1 $at, $f13 -/* 083AF4 80082EF4 44806000 */ mtc1 $zero, $f12 -/* 083AF8 80082EF8 46004021 */ cvt.d.s $f0, $f8 -.L80082EFC: -/* 083AFC 80082EFC 8FA90028 */ lw $t1, 0x28($sp) -/* 083B00 80082F00 4620603C */ c.lt.d $f12, $f0 -/* 083B04 80082F04 252A00D4 */ addiu $t2, $t1, 0xd4 -/* 083B08 80082F08 45000014 */ bc1f .L80082F5C -/* 083B0C 80082F0C AFAA0020 */ sw $t2, 0x20($sp) -/* 083B10 80082F10 3C014021 */ li $at, 0x40210000 # 2.515625 -/* 083B14 80082F14 44815800 */ mtc1 $at, $f11 -/* 083B18 80082F18 44805000 */ mtc1 $zero, $f10 -/* 083B1C 80082F1C 3C01800F */ lui $at, %hi(D_800E83A8 + 4) # $at, 0x800f -/* 083B20 80082F20 C43383A8 */ lwc1 $f19, %lo(D_800E83A8)($at) -/* 083B24 80082F24 C43283AC */ lwc1 $f18, %lo(D_800E83A8 + 4)($at) -/* 083B28 80082F28 46205401 */ sub.d $f16, $f10, $f0 -/* 083B2C 80082F2C 46328102 */ mul.d $f4, $f16, $f18 -/* 083B30 80082F30 444BF800 */ cfc1 $t3, $31 -/* 083B34 80082F34 00000000 */ nop -/* 083B38 80082F38 35610003 */ ori $at, $t3, 3 -/* 083B3C 80082F3C 38210002 */ xori $at, $at, 2 -/* 083B40 80082F40 44C1F800 */ ctc1 $at, $31 -/* 083B44 80082F44 00000000 */ nop -/* 083B48 80082F48 462021A4 */ cvt.w.d $f6, $f4 -/* 083B4C 80082F4C 44023000 */ mfc1 $v0, $f6 -/* 083B50 80082F50 44CBF800 */ ctc1 $t3, $31 -/* 083B54 80082F54 10000003 */ b .L80082F64 -/* 083B58 80082F58 240400FF */ li $a0, 255 -.L80082F5C: -/* 083B5C 80082F5C 240200FF */ li $v0, 255 -/* 083B60 80082F60 240400FF */ li $a0, 255 -.L80082F64: -/* 083B64 80082F64 240500FF */ li $a1, 255 -/* 083B68 80082F68 240600FF */ li $a2, 255 -/* 083B6C 80082F6C 240700FF */ li $a3, 255 -/* 083B70 80082F70 0C0310E1 */ jal set_text_color -/* 083B74 80082F74 AFA20010 */ sw $v0, 0x10($sp) -/* 083B78 80082F78 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 083B7C 80082F7C 8FA60020 */ lw $a2, 0x20($sp) -/* 083B80 80082F80 3C07800E */ lui $a3, %hi(gRareCopyrightString) # $a3, 0x800e -/* 083B84 80082F84 240C000C */ li $t4, 12 -/* 083B88 80082F88 AFAC0010 */ sw $t4, 0x10($sp) -/* 083B8C 80082F8C 24E71DF0 */ addiu $a3, %lo(gRareCopyrightString) # addiu $a3, $a3, 0x1df0 -/* 083B90 80082F90 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -/* 083B94 80082F94 0C031110 */ jal draw_text -/* 083B98 80082F98 24058000 */ li $a1, -32768 -/* 083B9C 80082F9C 8FBF001C */ lw $ra, 0x1c($sp) -.L80082FA0: -/* 083BA0 80082FA0 27BD0030 */ addiu $sp, $sp, 0x30 -/* 083BA4 80082FA4 03E00008 */ jr $ra -/* 083BA8 80082FA8 00001025 */ move $v0, $zero - diff --git a/asm/non_matchings/menu/menu_magic_codes_loop.s b/asm/non_matchings/menu/menu_magic_codes_loop.s index eac09303..6a44c5bc 100644 --- a/asm/non_matchings/menu/menu_magic_codes_loop.s +++ b/asm/non_matchings/menu/menu_magic_codes_loop.s @@ -274,8 +274,8 @@ glabel menu_magic_codes_loop /* 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(D_80126C38) # $t2, 0x8012 -/* 08ACC8 8008A0C8 8D4A6C38 */ lw $t2, %lo(D_80126C38)($t2) +/* 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 diff --git a/asm/non_matchings/menu/func_8008BB3C.s b/asm/non_matchings/menu/randomize_ai_racer_slots.s similarity index 99% rename from asm/non_matchings/menu/func_8008BB3C.s rename to asm/non_matchings/menu/randomize_ai_racer_slots.s index 17d7d60a..db9e1802 100644 --- a/asm/non_matchings/menu/func_8008BB3C.s +++ b/asm/non_matchings/menu/randomize_ai_racer_slots.s @@ -1,4 +1,4 @@ -glabel func_8008BB3C +glabel randomize_ai_racer_slots /* 08C73C 8008BB3C 27BDFFC8 */ addiu $sp, $sp, -0x38 /* 08C740 8008BB40 AFBF0034 */ sw $ra, 0x34($sp) /* 08C744 8008BB44 AFB60030 */ sw $s6, 0x30($sp) diff --git a/asm/non_matchings/menu/func_8009DB3C.s b/asm/non_matchings/menu/tt_menu_loop.s similarity index 99% rename from asm/non_matchings/menu/func_8009DB3C.s rename to asm/non_matchings/menu/tt_menu_loop.s index e8892f01..0ea1df58 100644 --- a/asm/non_matchings/menu/func_8009DB3C.s +++ b/asm/non_matchings/menu/tt_menu_loop.s @@ -5,7 +5,7 @@ glabel jpt_800E860C .word L8009E2D0, L8009E2F4, L8009E354, L8009E354, L8009E314, L8009E354, L8009E314, L8009E2E4, L8009E354, L8009E334 .text -glabel func_8009DB3C +glabel tt_menu_loop /* 09E73C 8009DB3C 27BDFFB8 */ addiu $sp, $sp, -0x48 /* 09E740 8009DB40 AFBF001C */ sw $ra, 0x1c($sp) /* 09E744 8009DB44 0C01BAA4 */ jal get_settings diff --git a/asm/non_matchings/unknown_043920/func_8004C0A0.s b/asm/non_matchings/unknown_043920/func_8004C0A0.s deleted file mode 100644 index 15c3a615..00000000 --- a/asm/non_matchings/unknown_043920/func_8004C0A0.s +++ /dev/null @@ -1,48 +0,0 @@ -glabel func_8004C0A0 -/* 04CCA0 8004C0A0 80CE01D7 */ lb $t6, 0x1d7($a2) -/* 04CCA4 8004C0A4 2401000A */ li $at, 10 -/* 04CCA8 8004C0A8 11C10023 */ beq $t6, $at, .L8004C138 -/* 04CCAC 8004C0AC 00803825 */ move $a3, $a0 -/* 04CCB0 8004C0B0 300F00FF */ andi $t7, $zero, 0xff -/* 04CCB4 8004C0B4 15E00020 */ bnez $t7, .L8004C138 -/* 04CCB8 8004C0B8 A0C001F2 */ sb $zero, 0x1f2($a2) -/* 04CCBC 8004C0BC 80C201E1 */ lb $v0, 0x1e1($a2) -/* 04CCC0 8004C0C0 24190028 */ li $t9, 40 -/* 04CCC4 8004C0C4 0002C043 */ sra $t8, $v0, 1 -/* 04CCC8 8004C0C8 03381023 */ subu $v0, $t9, $t8 -/* 04CCCC 8004C0CC 04410002 */ bgez $v0, .L8004C0D8 -/* 04CCD0 8004C0D0 00073080 */ sll $a2, $a3, 2 -/* 04CCD4 8004C0D4 00001025 */ move $v0, $zero -.L8004C0D8: -/* 04CCD8 8004C0D8 2841004A */ slti $at, $v0, 0x4a -/* 04CCDC 8004C0DC 14200002 */ bnez $at, .L8004C0E8 -/* 04CCE0 8004C0E0 00000000 */ nop -/* 04CCE4 8004C0E4 24020049 */ li $v0, 73 -.L8004C0E8: -/* 04CCE8 8004C0E8 84A40018 */ lh $a0, 0x18($a1) -/* 04CCEC 8004C0EC 00000000 */ nop -/* 04CCF0 8004C0F0 00441823 */ subu $v1, $v0, $a0 -/* 04CCF4 8004C0F4 18600006 */ blez $v1, .L8004C110 -/* 04CCF8 8004C0F8 00001025 */ move $v0, $zero -/* 04CCFC 8004C0FC 00C71023 */ subu $v0, $a2, $a3 -/* 04CD00 8004C100 0062082A */ slt $at, $v1, $v0 -/* 04CD04 8004C104 10200002 */ beqz $at, .L8004C110 -/* 04CD08 8004C108 00000000 */ nop -/* 04CD0C 8004C10C 00601025 */ move $v0, $v1 -.L8004C110: -/* 04CD10 8004C110 04610007 */ bgez $v1, .L8004C130 -/* 04CD14 8004C114 00070823 */ negu $at, $a3 -/* 04CD18 8004C118 00013080 */ sll $a2, $at, 2 -/* 04CD1C 8004C11C 00C11023 */ subu $v0, $a2, $at -/* 04CD20 8004C120 0043082A */ slt $at, $v0, $v1 -/* 04CD24 8004C124 10200003 */ beqz $at, .L8004C134 -/* 04CD28 8004C128 00824021 */ addu $t0, $a0, $v0 -/* 04CD2C 8004C12C 00601025 */ move $v0, $v1 -.L8004C130: -/* 04CD30 8004C130 00824021 */ addu $t0, $a0, $v0 -.L8004C134: -/* 04CD34 8004C134 A4A80018 */ sh $t0, 0x18($a1) -.L8004C138: -/* 04CD38 8004C138 03E00008 */ jr $ra -/* 04CD3C 8004C13C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_8004C140.s b/asm/non_matchings/unknown_043920/func_8004C140.s deleted file mode 100644 index 3bcba56e..00000000 --- a/asm/non_matchings/unknown_043920/func_8004C140.s +++ /dev/null @@ -1,112 +0,0 @@ -.late_rodata -glabel D_800E6550 -.double 0.7 - -.text -glabel func_8004C140 -/* 04CD40 8004C140 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 04CD44 8004C144 AFBF001C */ sw $ra, 0x1c($sp) -/* 04CD48 8004C148 AFB00018 */ sw $s0, 0x18($sp) -/* 04CD4C 8004C14C 84AE0000 */ lh $t6, ($a1) -/* 04CD50 8004C150 2401FFFF */ li $at, -1 -/* 04CD54 8004C154 15C10003 */ bne $t6, $at, .L8004C164 -/* 04CD58 8004C158 00A08025 */ move $s0, $a1 -/* 04CD5C 8004C15C 10000003 */ b .L8004C16C -/* 04CD60 8004C160 00001825 */ move $v1, $zero -.L8004C164: -/* 04CD64 8004C164 82030185 */ lb $v1, 0x185($s0) -/* 04CD68 8004C168 00000000 */ nop -.L8004C16C: -/* 04CD6C 8004C16C 82020187 */ lb $v0, 0x187($s0) -/* 04CD70 8004C170 00000000 */ nop -/* 04CD74 8004C174 10400005 */ beqz $v0, .L8004C18C -/* 04CD78 8004C178 00000000 */ nop -/* 04CD7C 8004C17C 860F018E */ lh $t7, 0x18e($s0) -/* 04CD80 8004C180 24010004 */ li $at, 4 -/* 04CD84 8004C184 19E00003 */ blez $t7, .L8004C194 -/* 04CD88 8004C188 00000000 */ nop -.L8004C18C: -/* 04CD8C 8004C18C 10000044 */ b .L8004C2A0 -/* 04CD90 8004C190 A2000187 */ sb $zero, 0x187($s0) -.L8004C194: -/* 04CD94 8004C194 10410008 */ beq $v0, $at, .L8004C1B8 -/* 04CD98 8004C198 02002825 */ move $a1, $s0 -/* 04CD9C 8004C19C 24060002 */ li $a2, 2 -/* 04CDA0 8004C1A0 A3A30027 */ sb $v1, 0x27($sp) -/* 04CDA4 8004C1A4 0C015DB8 */ jal func_800576E0 -/* 04CDA8 8004C1A8 AFA40028 */ sw $a0, 0x28($sp) -/* 04CDAC 8004C1AC 83A30027 */ lb $v1, 0x27($sp) -/* 04CDB0 8004C1B0 8FA40028 */ lw $a0, 0x28($sp) -/* 04CDB4 8004C1B4 00000000 */ nop -.L8004C1B8: -/* 04CDB8 8004C1B8 921901C9 */ lbu $t9, 0x1c9($s0) -/* 04CDBC 8004C1BC 24180168 */ li $t8, 360 -/* 04CDC0 8004C1C0 24010008 */ li $at, 8 -/* 04CDC4 8004C1C4 17210002 */ bne $t9, $at, .L8004C1D0 -/* 04CDC8 8004C1C8 A618018C */ sh $t8, 0x18c($s0) -/* 04CDCC 8004C1CC A20001C9 */ sb $zero, 0x1c9($s0) -.L8004C1D0: -/* 04CDD0 8004C1D0 820801D6 */ lb $t0, 0x1d6($s0) -/* 04CDD4 8004C1D4 240501C2 */ li $a1, 450 -/* 04CDD8 8004C1D8 29010005 */ slti $at, $t0, 5 -/* 04CDDC 8004C1DC 10200030 */ beqz $at, .L8004C2A0 -/* 04CDE0 8004C1E0 24060008 */ li $a2, 8 -/* 04CDE4 8004C1E4 24070081 */ li $a3, 129 -/* 04CDE8 8004C1E8 A3A30027 */ sb $v1, 0x27($sp) -/* 04CDEC 8004C1EC 0C015C2E */ jal func_800570B8 -/* 04CDF0 8004C1F0 AFA40028 */ sw $a0, 0x28($sp) -/* 04CDF4 8004C1F4 82020187 */ lb $v0, 0x187($s0) -/* 04CDF8 8004C1F8 83A30027 */ lb $v1, 0x27($sp) -/* 04CDFC 8004C1FC 8FA40028 */ lw $a0, 0x28($sp) -/* 04CE00 8004C200 24010001 */ li $at, 1 -/* 04CE04 8004C204 10410009 */ beq $v0, $at, .L8004C22C -/* 04CE08 8004C208 24010002 */ li $at, 2 -/* 04CE0C 8004C20C 10410007 */ beq $v0, $at, .L8004C22C -/* 04CE10 8004C210 24010003 */ li $at, 3 -/* 04CE14 8004C214 1041000C */ beq $v0, $at, .L8004C248 -/* 04CE18 8004C218 24010006 */ li $at, 6 -/* 04CE1C 8004C21C 10410011 */ beq $v0, $at, .L8004C264 -/* 04CE20 8004C220 240D0078 */ li $t5, 120 -/* 04CE24 8004C224 1000001E */ b .L8004C2A0 -/* 04CE28 8004C228 A2000187 */ sb $zero, 0x187($s0) -.L8004C22C: -/* 04CE2C 8004C22C 10600004 */ beqz $v1, .L8004C240 -/* 04CE30 8004C230 240A003C */ li $t2, 60 -/* 04CE34 8004C234 24090028 */ li $t1, 40 -/* 04CE38 8004C238 10000018 */ b .L8004C29C -/* 04CE3C 8004C23C A20901DB */ sb $t1, 0x1db($s0) -.L8004C240: -/* 04CE40 8004C240 10000016 */ b .L8004C29C -/* 04CE44 8004C244 A20A01DB */ sb $t2, 0x1db($s0) -.L8004C248: -/* 04CE48 8004C248 10600004 */ beqz $v1, .L8004C25C -/* 04CE4C 8004C24C 240C003C */ li $t4, 60 -/* 04CE50 8004C250 240B0028 */ li $t3, 40 -/* 04CE54 8004C254 10000011 */ b .L8004C29C -/* 04CE58 8004C258 A20B01DB */ sb $t3, 0x1db($s0) -.L8004C25C: -/* 04CE5C 8004C25C 1000000F */ b .L8004C29C -/* 04CE60 8004C260 A20C01DB */ sb $t4, 0x1db($s0) -.L8004C264: -/* 04CE64 8004C264 3C01800E */ lui $at, %hi(D_800E6550 + 4) # $at, 0x800e -/* 04CE68 8004C268 C4216550 */ lwc1 $f1, %lo(D_800E6550)($at) -/* 04CE6C 8004C26C C4206554 */ lwc1 $f0, %lo(D_800E6550 + 4)($at) -/* 04CE70 8004C270 A60D0204 */ sh $t5, 0x204($s0) -/* 04CE74 8004C274 C484001C */ lwc1 $f4, 0x1c($a0) -/* 04CE78 8004C278 C4900024 */ lwc1 $f16, 0x24($a0) -/* 04CE7C 8004C27C 460021A1 */ cvt.d.s $f6, $f4 -/* 04CE80 8004C280 46203202 */ mul.d $f8, $f6, $f0 -/* 04CE84 8004C284 460084A1 */ cvt.d.s $f18, $f16 -/* 04CE88 8004C288 46209102 */ mul.d $f4, $f18, $f0 -/* 04CE8C 8004C28C 462042A0 */ cvt.s.d $f10, $f8 -/* 04CE90 8004C290 E48A001C */ swc1 $f10, 0x1c($a0) -/* 04CE94 8004C294 462021A0 */ cvt.s.d $f6, $f4 -/* 04CE98 8004C298 E4860024 */ swc1 $f6, 0x24($a0) -.L8004C29C: -/* 04CE9C 8004C29C A2000187 */ sb $zero, 0x187($s0) -.L8004C2A0: -/* 04CEA0 8004C2A0 8FBF001C */ lw $ra, 0x1c($sp) -/* 04CEA4 8004C2A4 8FB00018 */ lw $s0, 0x18($sp) -/* 04CEA8 8004C2A8 03E00008 */ jr $ra -/* 04CEAC 8004C2AC 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_043920/func_8004D95C.s b/asm/non_matchings/unknown_043920/func_8004D95C.s deleted file mode 100644 index c429f1d5..00000000 --- a/asm/non_matchings/unknown_043920/func_8004D95C.s +++ /dev/null @@ -1,90 +0,0 @@ -glabel func_8004D95C -/* 04E55C 8004D95C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 04E560 8004D960 AFBF001C */ sw $ra, 0x1c($sp) -/* 04E564 8004D964 AFB00018 */ sw $s0, 0x18($sp) -/* 04E568 8004D968 AFA40028 */ sw $a0, 0x28($sp) -/* 04E56C 8004D96C AFA5002C */ sw $a1, 0x2c($sp) -/* 04E570 8004D970 8CEE0118 */ lw $t6, 0x118($a3) -/* 04E574 8004D974 00C08025 */ move $s0, $a2 -/* 04E578 8004D978 11C00005 */ beqz $t6, .L8004D990 -/* 04E57C 8004D97C 00C02025 */ move $a0, $a2 -/* 04E580 8004D980 0C001AB2 */ jal func_80006AC8 -/* 04E584 8004D984 AFA70034 */ sw $a3, 0x34($sp) -/* 04E588 8004D988 8FA70034 */ lw $a3, 0x34($sp) -/* 04E58C 8004D98C 00000000 */ nop -.L8004D990: -/* 04E590 8004D990 0C008D07 */ jal func_8002341C -/* 04E594 8004D994 AFA70034 */ sw $a3, 0x34($sp) -/* 04E598 8004D998 8FA70034 */ lw $a3, 0x34($sp) -/* 04E59C 8004D99C 10400008 */ beqz $v0, .L8004D9C0 -/* 04E5A0 8004D9A0 2408000A */ li $t0, 10 -/* 04E5A4 8004D9A4 80EF01D6 */ lb $t7, 0x1d6($a3) -/* 04E5A8 8004D9A8 2401000A */ li $at, 10 -/* 04E5AC 8004D9AC 15E10004 */ bne $t7, $at, .L8004D9C0 -/* 04E5B0 8004D9B0 00000000 */ nop -/* 04E5B4 8004D9B4 8E18004C */ lw $t8, 0x4c($s0) -/* 04E5B8 8004D9B8 00000000 */ nop -/* 04E5BC 8004D9BC A7000014 */ sh $zero, 0x14($t8) -.L8004D9C0: -/* 04E5C0 8004D9C0 86190018 */ lh $t9, 0x18($s0) -/* 04E5C4 8004D9C4 02003025 */ move $a2, $s0 -/* 04E5C8 8004D9C8 A7B90026 */ sh $t9, 0x26($sp) -/* 04E5CC 8004D9CC A0E801D6 */ sb $t0, 0x1d6($a3) -/* 04E5D0 8004D9D0 8FA5002C */ lw $a1, 0x2c($sp) -/* 04E5D4 8004D9D4 8FA40028 */ lw $a0, 0x28($sp) -/* 04E5D8 8004D9D8 0C0125E5 */ jal func_80049794 -/* 04E5DC 8004D9DC AFA70034 */ sw $a3, 0x34($sp) -/* 04E5E0 8004D9E0 8FA70034 */ lw $a3, 0x34($sp) -/* 04E5E4 8004D9E4 2401000A */ li $at, 10 -/* 04E5E8 8004D9E8 80E901D7 */ lb $t1, 0x1d7($a3) -/* 04E5EC 8004D9EC 00000000 */ nop -/* 04E5F0 8004D9F0 A0E901D6 */ sb $t1, 0x1d6($a3) -/* 04E5F4 8004D9F4 A200003B */ sb $zero, 0x3b($s0) -/* 04E5F8 8004D9F8 80EA01D6 */ lb $t2, 0x1d6($a3) -/* 04E5FC 8004D9FC 00000000 */ nop -/* 04E600 8004DA00 15410028 */ bne $t2, $at, .L8004DAA4 -/* 04E604 8004DA04 8FBF001C */ lw $ra, 0x1c($sp) -/* 04E608 8004DA08 8CE20154 */ lw $v0, 0x154($a3) -/* 04E60C 8004DA0C 00000000 */ nop -/* 04E610 8004DA10 10400024 */ beqz $v0, .L8004DAA4 -/* 04E614 8004DA14 8FBF001C */ lw $ra, 0x1c($sp) -/* 04E618 8004DA18 C604000C */ lwc1 $f4, 0xc($s0) -/* 04E61C 8004DA1C 02002025 */ move $a0, $s0 -/* 04E620 8004DA20 E444000C */ swc1 $f4, 0xc($v0) -/* 04E624 8004DA24 8CEB0154 */ lw $t3, 0x154($a3) -/* 04E628 8004DA28 C6060010 */ lwc1 $f6, 0x10($s0) -/* 04E62C 8004DA2C 00000000 */ nop -/* 04E630 8004DA30 E5660010 */ swc1 $f6, 0x10($t3) -/* 04E634 8004DA34 8CEC0154 */ lw $t4, 0x154($a3) -/* 04E638 8004DA38 C6080014 */ lwc1 $f8, 0x14($s0) -/* 04E63C 8004DA3C 00000000 */ nop -/* 04E640 8004DA40 E5880014 */ swc1 $f8, 0x14($t4) -/* 04E644 8004DA44 8CEE0154 */ lw $t6, 0x154($a3) -/* 04E648 8004DA48 860D002E */ lh $t5, 0x2e($s0) -/* 04E64C 8004DA4C 00000000 */ nop -/* 04E650 8004DA50 A5CD002E */ sh $t5, 0x2e($t6) -/* 04E654 8004DA54 8CF80154 */ lw $t8, 0x154($a3) -/* 04E658 8004DA58 860F0000 */ lh $t7, ($s0) -/* 04E65C 8004DA5C 00000000 */ nop -/* 04E660 8004DA60 A70F0000 */ sh $t7, ($t8) -/* 04E664 8004DA64 8CE80154 */ lw $t0, 0x154($a3) -/* 04E668 8004DA68 86190002 */ lh $t9, 2($s0) -/* 04E66C 8004DA6C 00000000 */ nop -/* 04E670 8004DA70 A5190002 */ sh $t9, 2($t0) -/* 04E674 8004DA74 8CEA0154 */ lw $t2, 0x154($a3) -/* 04E678 8004DA78 86090004 */ lh $t1, 4($s0) -/* 04E67C 8004DA7C 00000000 */ nop -/* 04E680 8004DA80 A5490004 */ sh $t1, 4($t2) -/* 04E684 8004DA84 A200003B */ sb $zero, 0x3b($s0) -/* 04E688 8004DA88 8FAC0028 */ lw $t4, 0x28($sp) -/* 04E68C 8004DA8C 87AB0026 */ lh $t3, 0x26($sp) -/* 04E690 8004DA90 00000000 */ nop -/* 04E694 8004DA94 016C6821 */ addu $t5, $t3, $t4 -/* 04E698 8004DA98 0C018703 */ jal func_80061C0C -/* 04E69C 8004DA9C A60D0018 */ sh $t5, 0x18($s0) -/* 04E6A0 8004DAA0 8FBF001C */ lw $ra, 0x1c($sp) -.L8004DAA4: -/* 04E6A4 8004DAA4 8FB00018 */ lw $s0, 0x18($sp) -/* 04E6A8 8004DAA8 03E00008 */ jr $ra -/* 04E6AC 8004DAAC 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_043920/func_80053478.s b/asm/non_matchings/unknown_043920/func_80053478.s deleted file mode 100644 index 4acb685e..00000000 --- a/asm/non_matchings/unknown_043920/func_80053478.s +++ /dev/null @@ -1,101 +0,0 @@ -.late_rodata -glabel D_800E6750 -.double 1.8 -glabel D_800E6758 -.float 1.8 -.word 0 # Padding -glabel D_800E6760 -.double 0.2 - -.text -glabel func_80053478 -/* 054078 80053478 C480002C */ lwc1 $f0, 0x2c($a0) -/* 05407C 8005347C 44806800 */ mtc1 $zero, $f13 -/* 054080 80053480 44806000 */ mtc1 $zero, $f12 -/* 054084 80053484 460000A1 */ cvt.d.s $f2, $f0 -/* 054088 80053488 462C103C */ c.lt.d $f2, $f12 -/* 05408C 8005348C 3C01800E */ lui $at, %hi(D_800E6750 + 4) # $at, 0x800e -/* 054090 80053490 45000003 */ bc1f .L800534A0 -/* 054094 80053494 00000000 */ nop -/* 054098 80053498 46000007 */ neg.s $f0, $f0 -/* 05409C 8005349C 460000A1 */ cvt.d.s $f2, $f0 -.L800534A0: -/* 0540A0 800534A0 C4256750 */ lwc1 $f5, %lo(D_800E6750)($at) -/* 0540A4 800534A4 C4246754 */ lwc1 $f4, %lo(D_800E6750 + 4)($at) -/* 0540A8 800534A8 3C01800E */ lui $at, %hi(D_800E6758) # $at, 0x800e -/* 0540AC 800534AC 4622203C */ c.lt.d $f4, $f2 -/* 0540B0 800534B0 00000000 */ nop -/* 0540B4 800534B4 45000004 */ bc1f .L800534C8 -/* 0540B8 800534B8 00000000 */ nop -/* 0540BC 800534BC C4206758 */ lwc1 $f0, %lo(D_800E6758)($at) -/* 0540C0 800534C0 00000000 */ nop -/* 0540C4 800534C4 460000A1 */ cvt.d.s $f2, $f0 -.L800534C8: -/* 0540C8 800534C8 3C01800E */ lui $at, %hi(D_800E6760 + 4) # $at, 0x800e -/* 0540CC 800534CC C4276760 */ lwc1 $f7, %lo(D_800E6760)($at) -/* 0540D0 800534D0 C4266764 */ lwc1 $f6, %lo(D_800E6760 + 4)($at) -/* 0540D4 800534D4 3C014268 */ li $at, 0x42680000 # 58.000000 -/* 0540D8 800534D8 46261201 */ sub.d $f8, $f2, $f6 -/* 0540DC 800534DC 46204020 */ cvt.s.d $f0, $f8 -/* 0540E0 800534E0 460002A1 */ cvt.d.s $f10, $f0 -/* 0540E4 800534E4 462C503C */ c.lt.d $f10, $f12 -/* 0540E8 800534E8 00000000 */ nop -/* 0540EC 800534EC 45000003 */ bc1f .L800534FC -/* 0540F0 800534F0 00000000 */ nop -/* 0540F4 800534F4 44800000 */ mtc1 $zero, $f0 -/* 0540F8 800534F8 00000000 */ nop -.L800534FC: -/* 0540FC 800534FC 808E01E6 */ lb $t6, 0x1e6($a0) -/* 054100 80053500 00000000 */ nop -/* 054104 80053504 11C00010 */ beqz $t6, .L80053548 -/* 054108 80053508 00000000 */ nop -/* 05410C 8005350C 3C014288 */ li $at, 0x42880000 # 68.000000 -/* 054110 80053510 44818000 */ mtc1 $at, $f16 -/* 054114 80053514 00000000 */ nop -/* 054118 80053518 46100482 */ mul.s $f18, $f0, $f16 -/* 05411C 8005351C 444FF800 */ cfc1 $t7, $31 -/* 054120 80053520 00000000 */ nop -/* 054124 80053524 35E10003 */ ori $at, $t7, 3 -/* 054128 80053528 38210002 */ xori $at, $at, 2 -/* 05412C 8005352C 44C1F800 */ ctc1 $at, $31 -/* 054130 80053530 00000000 */ nop -/* 054134 80053534 46009124 */ cvt.w.s $f4, $f18 -/* 054138 80053538 44022000 */ mfc1 $v0, $f4 -/* 05413C 8005353C 44CFF800 */ ctc1 $t7, $31 -/* 054140 80053540 1000000F */ b .L80053580 -/* 054144 80053544 808801E1 */ lb $t0, 0x1e1($a0) -.L80053548: -/* 054148 80053548 44813000 */ mtc1 $at, $f6 -/* 05414C 8005354C 00000000 */ nop -/* 054150 80053550 46060202 */ mul.s $f8, $f0, $f6 -/* 054154 80053554 4458F800 */ cfc1 $t8, $31 -/* 054158 80053558 00000000 */ nop -/* 05415C 8005355C 37010003 */ ori $at, $t8, 3 -/* 054160 80053560 38210002 */ xori $at, $at, 2 -/* 054164 80053564 44C1F800 */ ctc1 $at, $31 -/* 054168 80053568 00000000 */ nop -/* 05416C 8005356C 460042A4 */ cvt.w.s $f10, $f8 -/* 054170 80053570 44D8F800 */ ctc1 $t8, $31 -/* 054174 80053574 44025000 */ mfc1 $v0, $f10 -/* 054178 80053578 00000000 */ nop -/* 05417C 8005357C 808801E1 */ lb $t0, 0x1e1($a0) -.L80053580: -/* 054180 80053580 3C038012 */ lui $v1, %hi(D_8011D554) # $v1, 0x8012 -/* 054184 80053584 01020019 */ multu $t0, $v0 -/* 054188 80053588 2463D554 */ addiu $v1, %lo(D_8011D554) # addiu $v1, $v1, -0x2aac -/* 05418C 8005358C 8C790000 */ lw $t9, ($v1) -/* 054190 80053590 44808000 */ mtc1 $zero, $f16 -/* 054194 80053594 00004812 */ mflo $t1 -/* 054198 80053598 03295023 */ subu $t2, $t9, $t1 -/* 05419C 8005359C AC6A0000 */ sw $t2, ($v1) -/* 0541A0 800535A0 C492002C */ lwc1 $f18, 0x2c($a0) -/* 0541A4 800535A4 000A6023 */ negu $t4, $t2 -/* 0541A8 800535A8 4612803C */ c.lt.s $f16, $f18 -/* 0541AC 800535AC 00000000 */ nop -/* 0541B0 800535B0 45000002 */ bc1f .L800535BC -/* 0541B4 800535B4 00000000 */ nop -/* 0541B8 800535B8 AC6C0000 */ sw $t4, ($v1) -.L800535BC: -/* 0541BC 800535BC 03E00008 */ jr $ra -/* 0541C0 800535C0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_043920/func_800575EC.s b/asm/non_matchings/unknown_043920/func_800575EC.s deleted file mode 100644 index 1b53c7f5..00000000 --- a/asm/non_matchings/unknown_043920/func_800575EC.s +++ /dev/null @@ -1,63 +0,0 @@ -glabel func_800575EC -/* 0581EC 800575EC 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 0581F0 800575F0 AFB00030 */ sw $s0, 0x30($sp) -/* 0581F4 800575F4 00A08025 */ move $s0, $a1 -/* 0581F8 800575F8 AFBF0034 */ sw $ra, 0x34($sp) -/* 0581FC 800575FC E7B50028 */ swc1 $f21, 0x28($sp) -/* 058200 80057600 E7B4002C */ swc1 $f20, 0x2c($sp) -/* 058204 80057604 848E0000 */ lh $t6, ($a0) -/* 058208 80057608 3C058012 */ lui $a1, %hi(D_8011D510) # $a1, 0x8012 -/* 05820C 8005760C 24A5D510 */ addiu $a1, %lo(D_8011D510) # addiu $a1, $a1, -0x2af0 -/* 058210 80057610 A4AE0000 */ sh $t6, ($a1) -/* 058214 80057614 848F0002 */ lh $t7, 2($a0) -/* 058218 80057618 4480A000 */ mtc1 $zero, $f20 -/* 05821C 8005761C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 058220 80057620 44812000 */ mtc1 $at, $f4 -/* 058224 80057624 A4A00004 */ sh $zero, 4($a1) -/* 058228 80057628 27A40038 */ addiu $a0, $sp, 0x38 -/* 05822C 8005762C A4AF0002 */ sh $t7, 2($a1) -/* 058230 80057630 E4B4000C */ swc1 $f20, 0xc($a1) -/* 058234 80057634 E4B40010 */ swc1 $f20, 0x10($a1) -/* 058238 80057638 E4B40014 */ swc1 $f20, 0x14($a1) -/* 05823C 8005763C 0C01BF0C */ jal func_8006FC30 -/* 058240 80057640 E4A40008 */ swc1 $f4, 8($a1) -/* 058244 80057644 4405A000 */ mfc1 $a1, $f20 -/* 058248 80057648 4406A000 */ mfc1 $a2, $f20 -/* 05824C 8005764C 26180038 */ addiu $t8, $s0, 0x38 -/* 058250 80057650 2619003C */ addiu $t9, $s0, 0x3c -/* 058254 80057654 26080040 */ addiu $t0, $s0, 0x40 -/* 058258 80057658 AFA80018 */ sw $t0, 0x18($sp) -/* 05825C 8005765C AFB90014 */ sw $t9, 0x14($sp) -/* 058260 80057660 AFB80010 */ sw $t8, 0x10($sp) -/* 058264 80057664 27A40038 */ addiu $a0, $sp, 0x38 -/* 058268 80057668 0C01BD93 */ jal guMtxXFMF -/* 05826C 8005766C 3C073F80 */ lui $a3, 0x3f80 -/* 058270 80057670 4405A000 */ mfc1 $a1, $f20 -/* 058274 80057674 4407A000 */ mfc1 $a3, $f20 -/* 058278 80057678 26090044 */ addiu $t1, $s0, 0x44 -/* 05827C 8005767C 260A0048 */ addiu $t2, $s0, 0x48 -/* 058280 80057680 260B004C */ addiu $t3, $s0, 0x4c -/* 058284 80057684 AFAB0018 */ sw $t3, 0x18($sp) -/* 058288 80057688 AFAA0014 */ sw $t2, 0x14($sp) -/* 05828C 8005768C AFA90010 */ sw $t1, 0x10($sp) -/* 058290 80057690 27A40038 */ addiu $a0, $sp, 0x38 -/* 058294 80057694 0C01BD93 */ jal guMtxXFMF -/* 058298 80057698 3C063F80 */ lui $a2, 0x3f80 -/* 05829C 8005769C 4406A000 */ mfc1 $a2, $f20 -/* 0582A0 800576A0 4407A000 */ mfc1 $a3, $f20 -/* 0582A4 800576A4 260C0050 */ addiu $t4, $s0, 0x50 -/* 0582A8 800576A8 260D0054 */ addiu $t5, $s0, 0x54 -/* 0582AC 800576AC 260E0058 */ addiu $t6, $s0, 0x58 -/* 0582B0 800576B0 AFAE0018 */ sw $t6, 0x18($sp) -/* 0582B4 800576B4 AFAD0014 */ sw $t5, 0x14($sp) -/* 0582B8 800576B8 AFAC0010 */ sw $t4, 0x10($sp) -/* 0582BC 800576BC 27A40038 */ addiu $a0, $sp, 0x38 -/* 0582C0 800576C0 0C01BD93 */ jal guMtxXFMF -/* 0582C4 800576C4 3C053F80 */ lui $a1, 0x3f80 -/* 0582C8 800576C8 8FBF0034 */ lw $ra, 0x34($sp) -/* 0582CC 800576CC C7B50028 */ lwc1 $f21, 0x28($sp) -/* 0582D0 800576D0 C7B4002C */ lwc1 $f20, 0x2c($sp) -/* 0582D4 800576D4 8FB00030 */ lw $s0, 0x30($sp) -/* 0582D8 800576D8 03E00008 */ jr $ra -/* 0582DC 800576DC 27BD0078 */ addiu $sp, $sp, 0x78 - diff --git a/asm/non_matchings/unknown_043920/func_800580B4.s b/asm/non_matchings/unknown_043920/func_800580B4.s deleted file mode 100644 index 92317d4f..00000000 --- a/asm/non_matchings/unknown_043920/func_800580B4.s +++ /dev/null @@ -1,81 +0,0 @@ -glabel func_800580B4 -/* 058CB4 800580B4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 058CB8 800580B8 3C0E8012 */ lui $t6, %hi(D_8011D55C) # $t6, 0x8012 -/* 058CBC 800580BC 8DCED55C */ lw $t6, %lo(D_8011D55C)($t6) -/* 058CC0 800580C0 AFA70034 */ sw $a3, 0x34($sp) -/* 058CC4 800580C4 2401FFFF */ li $at, -1 -/* 058CC8 800580C8 00C03825 */ move $a3, $a2 -/* 058CCC 800580CC AFBF0014 */ sw $ra, 0x14($sp) -/* 058CD0 800580D0 AFA40028 */ sw $a0, 0x28($sp) -/* 058CD4 800580D4 11C10040 */ beq $t6, $at, .L800581D8 -/* 058CD8 800580D8 AFA60030 */ sw $a2, 0x30($sp) -/* 058CDC 800580DC 80AF01D8 */ lb $t7, 0x1d8($a1) -/* 058CE0 800580E0 24010001 */ li $at, 1 -/* 058CE4 800580E4 11E1003C */ beq $t7, $at, .L800581D8 -/* 058CE8 800580E8 3C038012 */ lui $v1, %hi(gCameraObject) # $v1, 0x8012 -/* 058CEC 800580EC 2463D508 */ addiu $v1, %lo(gCameraObject) # addiu $v1, $v1, -0x2af8 -/* 058CF0 800580F0 8C780000 */ lw $t8, ($v1) -/* 058CF4 800580F4 00000000 */ nop -/* 058CF8 800580F8 87190036 */ lh $t9, 0x36($t8) -/* 058CFC 800580FC 00000000 */ nop -/* 058D00 80058100 10D90036 */ beq $a2, $t9, .L800581DC -/* 058D04 80058104 8FBF0014 */ lw $ra, 0x14($sp) -/* 058D08 80058108 8FA60034 */ lw $a2, 0x34($sp) -/* 058D0C 8005810C AFA5002C */ sw $a1, 0x2c($sp) -/* 058D10 80058110 0C015E90 */ jal func_80057A40 -/* 058D14 80058114 AFA70030 */ sw $a3, 0x30($sp) -/* 058D18 80058118 3C038012 */ lui $v1, %hi(gCameraObject) # $v1, 0x8012 -/* 058D1C 8005811C 2463D508 */ addiu $v1, %lo(gCameraObject) # addiu $v1, $v1, -0x2af8 -/* 058D20 80058120 8C620000 */ lw $v0, ($v1) -/* 058D24 80058124 8FA70030 */ lw $a3, 0x30($sp) -/* 058D28 80058128 C444000C */ lwc1 $f4, 0xc($v0) -/* 058D2C 8005812C 8FA5002C */ lw $a1, 0x2c($sp) -/* 058D30 80058130 E7A40024 */ swc1 $f4, 0x24($sp) -/* 058D34 80058134 C4460010 */ lwc1 $f6, 0x10($v0) -/* 058D38 80058138 00000000 */ nop -/* 058D3C 8005813C E7A60020 */ swc1 $f6, 0x20($sp) -/* 058D40 80058140 C4480014 */ lwc1 $f8, 0x14($v0) -/* 058D44 80058144 00000000 */ nop -/* 058D48 80058148 E7A8001C */ swc1 $f8, 0x1c($sp) -/* 058D4C 8005814C A4470036 */ sh $a3, 0x36($v0) -/* 058D50 80058150 8FA60034 */ lw $a2, 0x34($sp) -/* 058D54 80058154 8FA40028 */ lw $a0, 0x28($sp) -/* 058D58 80058158 0C015E90 */ jal func_80057A40 -/* 058D5C 8005815C 00000000 */ nop -/* 058D60 80058160 3C088012 */ lui $t0, %hi(D_8011D540) # $t0, 0x8012 -/* 058D64 80058164 8D08D540 */ lw $t0, %lo(D_8011D540)($t0) -/* 058D68 80058168 3C038012 */ lui $v1, %hi(gCameraObject) # $v1, 0x8012 -/* 058D6C 8005816C 1500001A */ bnez $t0, .L800581D8 -/* 058D70 80058170 2463D508 */ addiu $v1, %lo(gCameraObject) # addiu $v1, $v1, -0x2af8 -/* 058D74 80058174 3C098012 */ lui $t1, %hi(D_8011D582) # $t1, 0x8012 -/* 058D78 80058178 8129D582 */ lb $t1, %lo(D_8011D582)($t1) -/* 058D7C 8005817C 00000000 */ nop -/* 058D80 80058180 15200016 */ bnez $t1, .L800581DC -/* 058D84 80058184 8FBF0014 */ lw $ra, 0x14($sp) -/* 058D88 80058188 8C620000 */ lw $v0, ($v1) -/* 058D8C 8005818C C7AA0024 */ lwc1 $f10, 0x24($sp) -/* 058D90 80058190 C450000C */ lwc1 $f16, 0xc($v0) -/* 058D94 80058194 00000000 */ nop -/* 058D98 80058198 46105481 */ sub.s $f18, $f10, $f16 -/* 058D9C 8005819C E4520024 */ swc1 $f18, 0x24($v0) -/* 058DA0 800581A0 8C620000 */ lw $v0, ($v1) -/* 058DA4 800581A4 C7AA0020 */ lwc1 $f10, 0x20($sp) -/* 058DA8 800581A8 C4440010 */ lwc1 $f4, 0x10($v0) -/* 058DAC 800581AC C4460030 */ lwc1 $f6, 0x30($v0) -/* 058DB0 800581B0 00000000 */ nop -/* 058DB4 800581B4 46062200 */ add.s $f8, $f4, $f6 -/* 058DB8 800581B8 46085401 */ sub.s $f16, $f10, $f8 -/* 058DBC 800581BC E4500028 */ swc1 $f16, 0x28($v0) -/* 058DC0 800581C0 8C620000 */ lw $v0, ($v1) -/* 058DC4 800581C4 C7B2001C */ lwc1 $f18, 0x1c($sp) -/* 058DC8 800581C8 C4440014 */ lwc1 $f4, 0x14($v0) -/* 058DCC 800581CC 00000000 */ nop -/* 058DD0 800581D0 46049181 */ sub.s $f6, $f18, $f4 -/* 058DD4 800581D4 E446002C */ swc1 $f6, 0x2c($v0) -.L800581D8: -/* 058DD8 800581D8 8FBF0014 */ lw $ra, 0x14($sp) -.L800581DC: -/* 058DDC 800581DC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 058DE0 800581E0 03E00008 */ jr $ra -/* 058DE4 800581E4 00000000 */ nop - diff --git a/src/menu.c b/src/menu.c index d7ec758b..94d1b142 100644 --- a/src/menu.c +++ b/src/menu.c @@ -34,7 +34,7 @@ unk800DFC10 *D_80126394; s32 D_80126398; s32 D_8012639C; Gfx *D_801263A0; -s32 D_801263A4; +s32 **D_801263A4; s32 *D_801263A8; s32 *D_801263AC; s32 *D_801263B0; @@ -108,6 +108,20 @@ s8 D_801264D8; s32 D_801264DC; s8 D_801264E0; s8 D_801264E1; + +#define TT_MENU_ROOT 0 +#define TT_MENU_CONT_PAK_ERROR_1 1 +#define TT_MENU_CONT_PAK_ERROR_2 2 +#define TT_MENU_CONT_PAK_ERROR_3 3 +#define TT_MENU_GAME_STATUS 4 +#define TT_MENU_INTRODUCTION 5 +#define TT_MENU_INSERT_CONT_PAK 6 +#define TT_MENU_INSERT_RUMBLE_PAK 7 +#define TT_MENU_SAVE_GHOST 8 +#define TT_MENU_EXIT 10 + +s8 D_801264E2; + s8 D_801264E2; s32 D_801264E4; s32 D_801264E8; @@ -257,7 +271,7 @@ s32 D_80126C28; s32 *D_80126C2C; u16 (*gCheatsAssetData)[30]; // Cheat table. s32 D_80126C34; -s32 D_80126C38; +s32 gNumberOfCheats; s32 D_80126C3C; u16 gCheatInputCurrentRow; u16 gCheatInputCurrentColumn; @@ -294,7 +308,7 @@ s32 D_800DF46C = 0; s32 gCurrentMenuId = 0; // Currently unknown, might be a different type. s32 D_800DF474 = 0; // Currently unknown, might be a different type. s32 D_800DF478 = 0; // Currently unknown, might be a different type. -s32 gMenuDelay = 0; // Currently unknown, might be a different type. +s32 gMenuDelay = 0; s32 gNumberOfReadyPlayers = 0; s32 D_800DF484 = 0; // Currently unknown, might be a different type. s32 D_800DF488 = 0; @@ -1154,84 +1168,78 @@ s16 *D_800E14BC[32] = { NULL, NULL, &D_800E13A8[0], &D_800E13A8[48] }; -// Not sure what these arrays are supposed to be -s32 D_800E153C[10] = { - 0, 0x00000000, - 0, 0x00400000, - 0, 0x00800000, - 0, 0x00C00000, - 0, 0x01000000 +typedef struct unk800E153C { + TextureHeader *texture; + u32 unk4; // Flags? +} unk800E153C; + +unk800E153C D_800E153C[] = { + { NULL, 0x00000000 }, + { NULL, 0x00400000 }, + { NULL, 0x00800000 }, + { NULL, 0x00C00000 }, + { NULL, 0x01000000 }, + { NULL, 0x00000020 }, + { NULL, 0x00400020 }, + { NULL, 0x00800020 }, + { NULL, 0x00C00020 }, + { NULL, 0x01000020 }, + { NULL, 0x00000000 }, }; -s32 D_800E1564[12] = { - 0, 0x00000020, - 0, 0x00400020, - 0, 0x00800020, - 0, 0x00C00020, - 0, 0x01000020, - 0, 0x00000000 +unk800E153C D_800E1594[] = { + { NULL, 0x00000000 }, + { NULL, 0x00400000 }, + { NULL, 0x00800000 }, + { NULL, 0x00C00000 }, + { NULL, 0x01000000 }, + { NULL, 0x00000020 }, + { NULL, 0x00400020 }, + { NULL, 0x00800020 }, + { NULL, 0x00C00020 }, + { NULL, 0x01000020 }, + { NULL, 0x00000000 }, }; -s32 D_800E1594[10] = { - 0, 0x00000000, - 0, 0x00400000, - 0, 0x00800000, - 0, 0x00C00000, - 0, 0x01000000 +unk800E153C D_800E15EC[] = { + { NULL, 0x00000000 }, + { NULL, 0x00400000 }, + { NULL, 0x00800000 }, + { NULL, 0x00C00000 }, + { NULL, 0x01000000 }, + { NULL, 0x00000020 }, + { NULL, 0x00400020 }, + { NULL, 0x00800020 }, + { NULL, 0x00C00020 }, + { NULL, 0x01000020 }, + { NULL, 0x00000000 }, }; -s32 D_800E15BC[12] = { - 0, 0x00000020, - 0, 0x00400020, - 0, 0x00800020, - 0, 0x00C00020, - 0, 0x01000020, - 0, 0x00000000 +unk800E153C D_800E1644[] = { + { NULL, 0x00000000 }, + { NULL, 0x00400000 }, + { NULL, 0x00800000 }, + { NULL, 0x00C00000 }, + { NULL, 0x01000000 }, + { NULL, 0x00000020 }, + { NULL, 0x00400020 }, + { NULL, 0x00800020 }, + { NULL, 0x00C00020 }, + { NULL, 0x01000020 }, + { NULL, 0x00000000 }, }; -s32 D_800E15EC[10] = { - 0, 0x00000000, - 0, 0x00400000, - 0, 0x00800000, - 0, 0x00C00000, - 0, 0x01000000 -}; -s32 D_800E1614[12] = { - 0, 0x00000020, - 0, 0x00400020, - 0, 0x00800020, - 0, 0x00C00020, - 0, 0x01000020, - 0, 0x00000000 -}; -s32 D_800E1644[10] = { - 0, 0x00000000, - 0, 0x00400000, - 0, 0x00800000, - 0, 0x00C00000, - 0, 0x01000000 -}; -s32 D_800E166C[12] = { - 0, 0x00000020, - 0, 0x00400020, - 0, 0x00800020, - 0, 0x00C00020, - 0, 0x01000020, - 0, 0x00000000 -}; -s32 D_800E169C[10] = { - 0, 0x00000000, - 0, 0x00400000, - 0, 0x00800000, - 0, 0x00C00000, - 0, 0x01000000 -}; -s32 D_800E16C4[12] = { - 0, 0x00000020, - 0, 0x00400020, - 0, 0x00800020, - 0, 0x00C00020, - 0, 0x01000020, - 0, 0x00000000 +unk800E153C D_800E169C[] = { + { NULL, 0x00000000 }, + { NULL, 0x00400000 }, + { NULL, 0x00800000 }, + { NULL, 0x00C00000 }, + { NULL, 0x01000000 }, + { NULL, 0x00000020 }, + { NULL, 0x00400020 }, + { NULL, 0x00800020 }, + { NULL, 0x00C00020 }, + { NULL, 0x01000020 }, + { NULL, 0x00000000 }, }; -s32 *D_800E16F4[5] = { +unk800E153C *D_800E16F4[5] = { D_800E153C, D_800E1594, D_800E15EC, D_800E1644, D_800E169C }; @@ -1555,6 +1563,9 @@ void calculate_and_display_rom_checksum(void); void func_800851FC(void); void set_music_volume_slider(s32); s32 music_is_playing(void); +void set_text_color(s32 red, s32 green, s32 blue, s32 alpha, s32 opacity); +void func_80082FAC(void); +void func_8009ABAC(void); void reset_controller_sticks(void); void menu_logos_screen_init(void); @@ -1759,7 +1770,43 @@ void func_80080E6C(void) { } GLOBAL_ASM("asm/non_matchings/menu/func_80080E90.s") + +#ifdef NON_MATCHING +// Should be functionally equivalent. +void func_80081218(void) { + s32 numLevels; // sp34 + s32 numWorlds; // sp30 + s32 i; + s32 sp28; + s32 sp20; + + get_number_of_levels_and_worlds(&numLevels, &numWorlds); + sp20 = ((numLevels * 4) + (numWorlds * 2) + 0x11B) & ~3; + sp28 = numLevels * 4; + D_80126530[0] = allocate_from_main_pool_safe(sp20 * 4, COLOR_TAG_WHITE); + D_80126530[0] = D_80126530[0]; + D_80126530[0]->courseFlagsPtr = (u8*)D_80126530[0] + sizeof(Settings); + D_80126530[0]->balloonsPtr = (u8*)D_80126530[0]->courseFlagsPtr + sp28; + D_80126530[1] = (u8*)D_80126530[0] + sp20; + D_80126530[1]->courseFlagsPtr = (u8*)D_80126530[1] + sizeof(Settings); + D_80126530[1]->balloonsPtr = (u8*)D_80126530[1]->courseFlagsPtr + sp28; + D_80126530[2] = (u8*)D_80126530[1] + sp20; + D_80126530[2]->courseFlagsPtr = (u8*)D_80126530[2] + sizeof(Settings); + D_80126530[2]->balloonsPtr = (u8*)D_80126530[2]->courseFlagsPtr + sp28; + D_80126530[3] = (u8*)D_80126530[2] + sp20; + D_80126530[3]->courseFlagsPtr = (u8*)D_80126530[3] + sizeof(Settings); + D_80126530[3]->balloonsPtr = (u8*)D_80126530[3]->courseFlagsPtr + sp28; + gCheatsAssetData = get_misc_asset(0x41); + gNumberOfCheats = (s32)(*gCheatsAssetData); + gMenuText = allocate_from_main_pool_safe(1024 * sizeof(char*), COLOR_TAG_WHITE); + load_menu_text(ENGLISH); + for(i = 0; i < 128; i++) { + D_80126550[i] = NULL; + } +} +#else GLOBAL_ASM("asm/non_matchings/menu/func_80081218.s") +#endif void func_800813C0(void) { D_800DF458 = 1; @@ -2066,7 +2113,7 @@ void func_800829F8(s32 arg0, s32 arg1) { void menu_logos_screen_init(void) { gMenuDelay = 0; - D_80126450 = 16.0f; + D_80126450 = 16.0f; // 16 seconds func_80077B5C(0, 0, 0); if (osTvType == 0) { func_80066940(0, 0, 0x26, 0x140, 0xE0); @@ -2079,7 +2126,62 @@ void menu_logos_screen_init(void) { func_80066818(0, 1); } -GLOBAL_ASM("asm/non_matchings/menu/menu_logo_screen_loop.s") +s32 menu_logo_screen_loop(s32 arg0) { + s32 phi_v0; // sp24? + s32 yOffset; // sp28 + s32 sp20; + + if (osTvType == TV_TYPE_PAL) { + yOffset = 0x1A; + if (D_80126450 < 2.6f && gMenuDelay == 0) { + func_800C01D8(&D_800E1DE8); + gMenuDelay = 1; + } + D_80126450 -= arg0 / 50.0f; + } else { + yOffset = 0; + if (D_80126450 < 2.17f && gMenuDelay == 0) { + func_800C01D8(&D_800E1DE8); + gMenuDelay = 1; + } + D_80126450 -= arg0 / 60.0f; + } + if (D_80126450 <= 0.0f) { + func_80066894(0, 0); + func_80066AA8(0, 0x8000, 0x8000, 0x8000, 0x8000); + func_80082FAC(); + menu_init(MENU_TITLE); + } + if (8.5 > D_80126450) { // This is a little weird, but it matches. + set_text_font(1); + set_text_background_color(0, 0, 0, 0); + if ((D_80126450 < 8.0) && (D_80126450 >= 7.5)) { + phi_v0 = (8.0 - D_80126450) * 510.0; + } else { + if ((D_80126450 < 7.5) && (D_80126450 >= 7.0)) { + phi_v0 = (D_80126450 - 7.0) * 510.0; + } else { + phi_v0 = 0; + } + } + if (phi_v0 != 0) { + set_text_color(0xFF, 0xFF, 0, 0xFF, phi_v0); + draw_text(&D_801263A0, 0x9F, yOffset + 0xD4, gRareCopyrightString, 0xC); + draw_text(&D_801263A0, 0xA1, yOffset + 0xD4, gRareCopyrightString, 0xC); + draw_text(&D_801263A0, -0x8000, yOffset + 0xD3, gRareCopyrightString, 0xC); + draw_text(&D_801263A0, -0x8000, yOffset + 0xD5, gRareCopyrightString, 0xC); + } + sp20 = yOffset + 0xD4; + if (D_80126450 > 8.0) { + phi_v0 = (8.5 - D_80126450) * 510.0; + } else { + phi_v0 = 0xFF; + } + set_text_color(0xFF, 0xFF, 0xFF, 0xFF, phi_v0); + draw_text(&D_801263A0, -0x8000, sp20, gRareCopyrightString, 0xC); + } + return 0; +} void set_magic_code_flags(s32 flags); @@ -2905,10 +3007,10 @@ void render_magic_codes_ui(s32 arg0) { set_text_font(2); set_text_color(0, 0, 0, 0xFF, 0x80); draw_text(&D_801263A0, 0xA1, 0x23, gMenuText[17], 0xC); // gMenuText[17] = "MAGIC CODES" - set_text_color(0xFF, 0xFF, 0xFF, NULL, 0xFF); + set_text_color(0xFF, 0xFF, 0xFF, 0, 0xFF); draw_text(&D_801263A0, 0xA0, 0x20, gMenuText[17], 0xC); // gMenuText[17] = "MAGIC CODES" set_text_font(0); - set_text_color(0xFF, 0xFF, 0xFF, NULL, 0xFF); + set_text_color(0xFF, 0xFF, 0xFF, 0, 0xFF); c = 'A'; yPos = 60; @@ -3337,7 +3439,53 @@ void draw_character_select_text(s32 arg0) { GLOBAL_ASM("asm/non_matchings/menu/func_8008B358.s") GLOBAL_ASM("asm/non_matchings/menu/func_8008B4C8.s") GLOBAL_ASM("asm/non_matchings/menu/func_8008B758.s") -GLOBAL_ASM("asm/non_matchings/menu/func_8008BB3C.s") + +#ifdef NON_MATCHING + +// Should be functionally equivalent +void randomize_ai_racer_slots(s32 arg0) { + s32 i, j; + s32 numCharacters; + s32 s1; + + numCharacters = 7; + if (is_drumstick_unlocked()) { + numCharacters = 8; + } + if (is_tt_unlocked()) { + numCharacters++; + } + + if(arg0 < 8) { + s1 = FALSE; + for(i = 0; (i < arg0) && (!s1); i++) { + if(gCharacterIdSlots[i] == 9) { + s1 = TRUE; + } + } + if (!s1) { + gCharacterIdSlots[arg0] = 9; + arg0++; + } + } + i = arg0; + while(i < 8) { + s1 = FALSE; // Check for duplicate racer id. + gCharacterIdSlots[i] = (*D_801263CC)[get_random_number_from_range(0, numCharacters)].unkC; + for(j = 0; j < i; j++){ + if (gCharacterIdSlots[i] == gCharacterIdSlots[j]) { + s1 = TRUE; // Duplicate found! + } + } + if(s1) { + continue; // Redo if duplicate was found. + } + i++; + } +} +#else +GLOBAL_ASM("asm/non_matchings/menu/randomize_ai_racer_slots.s") +#endif #if 1 GLOBAL_ASM("asm/non_matchings/menu/menu_character_select_loop.s") @@ -3393,7 +3541,7 @@ s32 menu_character_select_loop(s32 arg0) { phi_a0++; } } - func_8008BB3C(phi_a0); + randomize_ai_racer_slots(phi_a0); func_8006A458(gActivePlayersArray); gIsInTracksMode = 1; @@ -5066,9 +5214,185 @@ s32 get_trophy_race_world_id(void) { GLOBAL_ASM("asm/non_matchings/menu/func_8009963C.s") GLOBAL_ASM("asm/non_matchings/menu/func_800998E0.s") + +#ifdef NON_MATCHING + +// Should be functionally equivalent +void menu_ghost_data_init(void) { + s32 i; + s32 sp70; + + sp70 = func_800756D4(D_801264D0, &D_801264DC, &D_801264EC, &D_801264E4, &D_801264F8); + if (sp70 == 0) { + func_8009963C(); + } + func_8009C674(&D_800E1708); + func_8009C8A4(&D_800E174C); + func_800C4170(2); + D_800E153C[0].texture = D_80126550[14]; + D_800E153C[5].texture = D_80126550[15]; + D_800E1594[0].texture = D_80126550[16]; + D_800E1594[5].texture = D_80126550[17]; + D_800E15EC[0].texture = D_80126550[18]; + D_800E15EC[5].texture = D_80126550[19]; + D_800E1644[0].texture = D_80126550[20]; + D_800E1644[5].texture = D_80126550[21]; + D_800E169C[0].texture = D_80126550[22]; + D_800E169C[5].texture = D_80126550[23]; + for(i = 0; i < 4; i++) { + D_800E153C[i + 1].texture = D_800E153C[0].texture; + D_800E153C[i + 6].texture = D_800E153C[5].texture; + if(i & 1 == 1) { + D_800E1594[i + 1].texture = D_800E1594[0].texture; + D_800E1594[i + 6].texture = D_800E1594[5].texture; + } else { + D_800E1594[i + 1].texture = D_800E1594[5].texture; + D_800E1594[i + 6].texture = D_800E1594[0].texture; + } + D_800E15EC[i + 1].texture = D_800E15EC[0].texture; + D_800E15EC[i + 6].texture = D_800E15EC[5].texture; + D_800E1644[i + 1].texture = D_800E1644[0].texture; + D_800E1644[i + 6].texture = D_800E1644[5].texture; + if(i & 1 == 1) { + D_800E169C[i + 1].texture = D_800E169C[0].texture; + D_800E169C[i + 6].texture = D_800E169C[5].texture; + } else { + D_800E169C[i + 1].texture = D_800E169C[5].texture; + D_800E169C[i + 6].texture = D_800E169C[0].texture; + } + } + func_8008E45C(); + func_80094604(); + func_8008E4B0(); + D_801263BC = 0; + D_801263E0 = 0; + D_801263D8 = 0; + gMenuDelay = 0; + D_80126498 = 0; + if (sp70 == 0) { + func_800C01D8(&D_800DF77C); + return; + } + gMenuDelay = 0x1E; +} +#else GLOBAL_ASM("asm/non_matchings/menu/menu_ghost_data_init.s") +#endif + GLOBAL_ASM("asm/non_matchings/menu/func_80099E8C.s") + +#ifdef NON_MATCHING + +// Regalloc issue: v0 & v1 need to swap! +s32 menu_ghost_data_loop(s32 arg0) { + s32 i; + s32 pressedButtons, xStick, yStick; + s32 temp; + s32 tempDelay; + + D_801263BC = (D_801263BC + arg0) & 0x3F; + + if ((gMenuDelay >= -0x13) && (gMenuDelay < 0x14)) { + func_80099E8C(); + } + + pressedButtons = 0; + if (gMenuDelay != 0) { + if (gMenuDelay < 0) { + gMenuDelay -= arg0; + } else { + gMenuDelay += arg0; + } + } + + xStick = 0; + yStick = 0; + if (!gIgnorePlayerInput && gMenuDelay == 0) { + for(i = 0; i < 4; i++) { + pressedButtons |= get_buttons_pressed_from_player(i); + xStick += gControllersXAxisDirection[i]; + yStick += gControllersYAxisDirection[i]; + } + } + + switch(D_801263E0) { + case 0: + if ((pressedButtons & (START_BUTTON | A_BUTTON)) && (D_801264D4 > 0)) { + D_801263E0 = 2; + func_80001D04(0xEF, 0); + } else if ((pressedButtons & B_BUTTON) || ((pressedButtons & (START_BUTTON | A_BUTTON)) && (D_801264D4 == 0))) { + gMenuDelay = 1; + func_800C01D8(&D_800DF774); + func_80001D04(0x241, 0); + } else { + temp = D_80126498; + if (yStick < 0 && D_80126498 < (D_801264D4 - 1)) { + D_80126498++; + if (D_80126498 >= D_801263D8 + 3) { + D_801263D8 = D_80126498 - 2; + } + } + if (yStick > 0 && D_80126498 > 0) { + D_80126498--; + if (D_80126498 < D_801263D8) { + D_801263D8 = D_80126498; + } + } + if (temp != D_80126498) { + func_80001D04(0xEB, 0); + } + } + break; + case 1: + if (pressedButtons & B_BUTTON) { + D_801263E0 = 0; + func_80001D04(0x241, 0); + } else { + if (pressedButtons & (START_BUTTON | A_BUTTON)) { + if (func_800998E0(D_80126498) == 0) { + if (D_80126498 >= D_801264D4) { + D_80126498 = D_801264D4 - 1; + } + if (D_80126498 < 0) { + D_80126498 = 0; + } + if (D_80126498 < D_801263D8) { + D_801263D8 = D_80126498; + } + func_80001D04(0xEF, 0); + } else { + gMenuDelay = 1; + func_800C01D8(&D_800DF774); + func_80001D04(0x241, 0); + } + D_801263E0 = 0; + } else if (yStick < 0) { + D_801263E0 = 2; + func_80001D04(0xEB, 0); + } + } + break; + case 2: + if (pressedButtons & (START_BUTTON | A_BUTTON | B_BUTTON)) { + D_801263E0 = 0; + func_80001D04(0x241, 0); + } else if (yStick > 0) { + D_801263E0 = 1; + func_80001D04(0xEB, 0); + } + break; + } + + gIgnorePlayerInput = FALSE; + if (gMenuDelay >= 0x1F) { + func_8009ABAC(); + menu_init(MENU_SAVE_OPTIONS); + } + return 0; +} +#else GLOBAL_ASM("asm/non_matchings/menu/menu_ghost_data_loop.s") +#endif void func_8009ABAC(void) { func_8009C4A8(D_800E1708); @@ -5662,7 +5986,215 @@ s32 func_8009D9F4(void) { return state; } -GLOBAL_ASM("asm/non_matchings/menu/func_8009DB3C.s") +#ifdef NON_MATCHING + +// Has a couple minor issues, but should be functionally equivalent. +s32 tt_menu_loop(void) { + Settings *settings; + s32 sp44; + s32 buttonsPressed; // sp40 + s32 sp3C; + s32 sp38; + s32 sp24; + s32 sp20; + s32 i; + + settings = get_settings(); + + if (is_in_two_player_adventure()) { + settings->cutsceneFlags |= 2; + } + if (!(settings->cutsceneFlags & 2)) { + D_801264E2 = TT_MENU_INTRODUCTION; + } + if ((D_801264E2 != TT_MENU_GAME_STATUS) && (D_801264E2 != TT_MENU_INTRODUCTION)) { + sp44 = 0x78; + if (func_8001B780() != 0) { + sp44 = 0x88; + } + func_800C4EDC(1, 0x18, 0x10, 0xC0, sp44); + } else { + func_800C4EDC(1, 0x18, 0x10, 0xB8, 0xDC); + } + func_800C4F7C(1, 0); + sp44 = 0; + buttonsPressed = get_buttons_pressed_from_player(0); + D_80126504 = 0; + D_8012650E = 0x20; + switch (D_801264E2) { + case TT_MENU_ROOT: + case TT_MENU_EXIT: + func_800C5168(1, -0x8000, 6, gMenuText[36], 1, 4); // OPTIONS + func_8009D1B8(gMenuText[71], 0x14, 3); // STATUS + if (!is_in_two_player_adventure()) { + if (is_time_trial_enabled()) { + func_8009D1B8(gMenuText[65], 0x14, 0); // TIME TRIAL ON + } else { + func_8009D1B8(gMenuText[66], 0x14, 0); // TIME TRIAL OFF + } + if (func_8001B780() != 0) { + func_8009D1B8(gMenuText[27], 0x14, 1); // SAVE GHOST + } + } + func_8009D1B8(gMenuText[5], 0x14, 2); // RETURN + func_8009D26C(); + if (D_80126516 == 0) { + if (gControllersXAxisDirection[0] > 0) { + if (!is_time_trial_enabled()) { + func_80036BCC(0x231, 1); + } + set_time_trial_enabled(TRUE); + } else if (gControllersXAxisDirection[0] < 0) { + if (is_time_trial_enabled() == 1) { + func_80036BCC(0x230, 1); + } + set_time_trial_enabled(FALSE); + } + } + if ((buttonsPressed & A_BUTTON) && (D_801264E2 != TT_MENU_EXIT)) { + switch(D_80126516) { + case 1: + func_80001D04(0xEF, 0); + D_80126398 = 0; + D_8012639C = TT_MENU_ROOT; + D_801264E2 = TT_MENU_SAVE_GHOST; + break; + case 3: + func_80001D04(0xEF, 0); + func_80036BCC(0x22E, 1); + func_8009C674(&D_800E1E2C); + func_8009C8A4(&D_800E1E40); + D_800E1E28 = 1; + D_801264E2 = TT_MENU_GAME_STATUS; + break; + } + sp44 = D_80126516 + 1; + } else if (buttonsPressed & B_BUTTON) { + func_80001D04(0x241, 0); + sp44 = 3; + } + if (D_801264E2 == TT_MENU_GAME_STATUS) { + sp44 = 0; + } + if (sp44 == 3) { + D_801264E2 = TT_MENU_EXIT; + } + if (D_801264E2 == TT_MENU_EXIT) { + sp44 = 3; + } + break; + case TT_MENU_CONT_PAK_ERROR_1: + sp24 = 0; + while (D_801263A4[sp24] != NULL) { + sp24++; + } + sp38 = 0x3A; + if (sp24 > 0) { + sp24--; + sp38 -= sp24 * 8; + sp24 = 0; + while (D_801263A4[sp24] != NULL) { + func_800C5168(1, -0x8000, sp38, D_801263A4[sp24], 1, 4); + sp38 += 0x10; + sp24++; + } + } + if (buttonsPressed & (A_BUTTON | B_BUTTON)) { + D_801264E2 = TT_MENU_ROOT; + } + break; + case TT_MENU_GAME_STATUS: + if (buttonsPressed & (A_BUTTON | B_BUTTON)) { + D_801264E2 = TT_MENU_ROOT; + D_800E1E28 = 0; + func_8009C4A8(&D_800E1E2C); + func_80036BCC(0x22F, 1); + } + break; + case TT_MENU_INTRODUCTION: + sp20 = 6; + for(i = 52; gMenuText[i] != NULL; i++) { + func_800C5168(1, -0x8000, sp20, gMenuText[i], 1, 4); + sp20 += 0x10; + } + if (buttonsPressed & (A_BUTTON | B_BUTTON)) { + settings->cutsceneFlags |= 2; + D_801264E2 = TT_MENU_ROOT; + } + break; + case TT_MENU_INSERT_CONT_PAK: + func_800C5168(1, -0x8000, 0x22, gMenuText[159], 1, 4); // If you wish to use + func_800C5168(1, -0x8000, 0x32, gMenuText[160], 1, 4); // the Controller Pak + func_800C5168(1, -0x8000, 0x42, gMenuText[162], 1, 4); // insert it now! + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + func_80001D04(0xEF, 0); + D_80126398 = 0; + D_8012639C = TT_MENU_INSERT_RUMBLE_PAK; + D_801264E2 = TT_MENU_SAVE_GHOST; + } else if (buttonsPressed & B_BUTTON) { + func_80001D04(0x241, 0); + D_801264E2 = TT_MENU_ROOT; + } + break; + case TT_MENU_INSERT_RUMBLE_PAK: + func_800C5168(1, -0x8000, 0x22, gMenuText[159], 1, 4); // If you wish to use + func_800C5168(1, -0x8000, 0x32, gMenuText[161], 1, 4); // the Rumble Pak + func_800C5168(1, -0x8000, 0x42, gMenuText[162], 1, 4); // insert it now! + if (buttonsPressed & (A_BUTTON | B_BUTTON | START_BUTTON)) { + D_801264E2 = TT_MENU_ROOT; + } + break; + case TT_MENU_SAVE_GHOST: + func_800C5168(1, -0x8000, 0x32, gMenuText[124], 1, 4); // PLEASE WAIT + D_80126398++; + if (D_80126398 >= 5) { + s32 result = func_8001B738(0) & 0xFF; + if(result == 5) { + result = func_8001B738(0) & 0xFF; + } + switch (result) { + case 0: + D_801264E2 = D_8012639C; + break; + case 7: + D_801264E2 = TT_MENU_INSERT_CONT_PAK; + break; + case 1: + D_801263A4 = &D_800E09D8; + D_801264E2 = TT_MENU_CONT_PAK_ERROR_1; + break; + case 4: + case 6: + D_801263A4 = &D_800E09C4; + D_801264E2 = TT_MENU_CONT_PAK_ERROR_1; + break; + case 9: + D_801263A4 = &D_800E09EC; + D_801264E2 = TT_MENU_CONT_PAK_ERROR_1; + break; + case 2: + case 3: + case 5: + case 8: + D_801263A4 = &D_800E09B0; + D_801264E2 = TT_MENU_CONT_PAK_ERROR_1; + break; + } + } + break; + } + if ((D_801264E2 == TT_MENU_CONT_PAK_ERROR_1) || + (D_801264E2 == TT_MENU_CONT_PAK_ERROR_2) || + (D_801264E2 == TT_MENU_CONT_PAK_ERROR_3)) { + func_800C5168(1, -0x8000, 6, gMenuText[64], 1, 4); // PAK ERROR + } + return sp44; +} +#else +GLOBAL_ASM("asm/non_matchings/menu/tt_menu_loop.s") +#endif + + GLOBAL_ASM("asm/non_matchings/menu/func_8009E3D0.s") GLOBAL_ASM("asm/non_matchings/menu/func_8009E7E8.s") diff --git a/src/menu.h b/src/menu.h index 3cb002cc..cb3c3477 100644 --- a/src/menu.h +++ b/src/menu.h @@ -486,20 +486,6 @@ extern s16 D_800E13A8[138]; extern s16* D_800E14BC[32]; -// Not sure what these arrays are supposed to be -extern s32 D_800E153C[10]; -extern s32 D_800E1564[12]; -extern s32 D_800E1594[10]; -extern s32 D_800E15BC[12]; -extern s32 D_800E15EC[10]; -extern s32 D_800E1614[12]; -extern s32 D_800E1644[10]; -extern s32 D_800E166C[12]; -extern s32 D_800E169C[10]; -extern s32 D_800E16C4[12]; - -extern s32 *D_800E16F4[5]; - extern s16 D_800E1708[34]; extern s16 D_800E174C[4]; diff --git a/src/unknown_043920.c b/src/unknown_043920.c index 14e24279..7690422c 100644 --- a/src/unknown_043920.c +++ b/src/unknown_043920.c @@ -147,7 +147,29 @@ const char D_800E62A0[] = "Back\n"; s32 D_8011D4F0[2]; s32 D_8011D4F8[3]; s32 D_8011D504; -Object *gCameraObject; + +typedef struct ObjectCamera { +/* 0x0000 */ s16 y_rotation; +/* 0x0002 */ s16 x_rotation; +/* 0x0004 */ s16 z_rotation; +/* 0x0006 */ s16 unk6; +/* 0x0008 */ f32 scale; +/* 0x000C */ f32 x_position; +/* 0x0010 */ f32 y_position; +/* 0x0014 */ f32 z_position; + u8 pad18[0xC]; +/* 0x0024 */ f32 unk24; +/* 0x0028 */ f32 unk28; +/* 0x002C */ f32 unk2C; +/* 0x0030 */ f32 unk30; + s16 unk34; +/* 0x0036 */ s16 unk36; +} ObjectCamera; + +ObjectCamera *gCameraObject; + + + s32 D_8011D50C; /* Size: 0x18 bytes */ @@ -221,6 +243,9 @@ s8 D_8011D5BC; /******************************/ +void func_80011570(Object *, f32, f32, f32); +void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3); + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80042D20.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80043ECC.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80044170.s") @@ -238,12 +263,166 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80048C7C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80048E64.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800494E0.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80049794.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004C0A0.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004C140.s") + +/* Unknown size */ +typedef struct Object_64_8004C0A0 { + u8 pad0[0x1D7]; + s8 unk1D7; + u8 pad1D8[9]; + s8 unk1E1; + u8 pad1E2[0x10]; + u8 unk1F2; +} Object_64_8004C0A0; + +// Something Plane related. +void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) { + s32 temp_v1; + s32 phi_v0; + + if (planeObj64->unk1D7 != 10) { + //!@bug Typo. Should've been `== 0`, not `= 0`. + if (planeObj64->unk1F2 = 0) { + return; // This never gets called because of the typo. + } + phi_v0 = planeObj64->unk1E1; + phi_v0 = 40 - (phi_v0 >> 1); + if (phi_v0 < 0) { + phi_v0 = 0; + } + if (phi_v0 >= 0x4A) { + phi_v0 = 0x49; + } + temp_v1 = phi_v0 - planeObj->unk18; + phi_v0 = 0; + if (temp_v1 > 0) { + phi_v0 = arg0 * 3; + if (temp_v1 < phi_v0) { + phi_v0 = temp_v1; + } + } + if (temp_v1 < 0) { + phi_v0 = arg0 * -3; + if (phi_v0 < temp_v1) { + phi_v0 = temp_v1; + } + } + planeObj->unk18 += phi_v0; + } +} + +typedef struct Object_64_8004C140 { + s16 unk0; + u8 pad2[0x183]; + s8 unk185; + u8 unk186; + s8 unk187; + u8 pad188[4]; + s16 unk18C; + s16 unk18E; + u8 pad190[0x39]; + u8 unk1C9; + u8 pad1CA[0xC]; + s8 unk1D6; + u8 pad1D7[4]; + s8 unk1DB; + u8 pad1DC[0x28]; + s16 unk204; +} Object_64_8004C140; + +void func_800576E0(Object *obj, Object_64_8004C140 *obj64, s32); + +void func_8004C140(Object *obj, Object_64_8004C140 *obj64) { + s8 phi_v1; + s8 temp; + if (obj64->unk0 == -1) { + phi_v1 = 0; + } else { + phi_v1 = obj64->unk185; + } + temp = obj64->unk187; + if (temp == 0 || obj64->unk18E > 0) { + obj64->unk187 = 0; + return; + } + if (temp != 4) { + func_800576E0(obj, obj64, 2); + } + obj64->unk18C = 0x168; + if (obj64->unk1C9 == 8) { + obj64->unk1C9 = 0; + } + if (obj64->unk1D6 < 5) { + func_800570B8(obj, 0x1C2, 8, 0x81); + switch(obj64->unk187) { + case 1: + case 2: + if (phi_v1 != 0) { + obj64->unk1DB = 0x28; + } else { + obj64->unk1DB = 0x3C; + } + break; + case 3: + if (phi_v1 != 0) { + obj64->unk1DB = 0x28; + } else { + obj64->unk1DB = 0x3C; + } + break; + case 6: + obj64->unk204 = 0x78; + obj->x_velocity *= 0.7; + obj->z_velocity *= 0.7; + break; + } + obj64->unk187 = 0; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004C2B0.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004CC20.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004D590.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004D95C.s") + +typedef struct Object_64_8004D95C { + u8 unk0[0x118]; + s32 unk118; + u8 unk11C[0x38]; + Object *someObject; + u8 unk158[0x7E]; + s8 unk1D6; + s8 unk1D7; +} Object_64_8004D95C; + +void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64) { + s16 sp26; + + if (obj64->unk118 != 0) { + func_80006AC8(obj); + } + if ((func_8002341C() != 0) && (obj64->unk1D6 == 0xA)) { + obj->unk4C->unk14 = 0; + } + sp26 = obj->unk18; + obj64->unk1D6 = 0xA; + func_80049794(arg0, arg1, obj, obj64); + obj64->unk1D6 = obj64->unk1D7; + obj->unk3B = 0; + if (obj64->unk1D6 == 0xA) { + if (obj64->someObject != NULL) { + obj64->someObject->x_position = obj->x_position; + obj64->someObject->y_position = obj->y_position; + obj64->someObject->z_position = obj->z_position; + obj64->someObject->unk2E = obj->unk2E; + obj64->someObject->y_rotation = obj->y_rotation; + obj64->someObject->x_rotation = obj->x_rotation; + obj64->someObject->z_rotation = obj->z_rotation; + obj->unk3B = 0; + obj->unk18 = sp26 + arg0; + func_80061C0C(obj); + } + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004DAB0.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004DE38.s") @@ -277,7 +456,51 @@ void func_8004F77C(unk8004F77C *arg0) { } GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8004F7F4.s") + +#ifdef NON_MATCHING + +typedef struct Object_64_80050754 { + u8 unk0[0x2C]; + f32 unk2C; + f32 unk30; + u8 unk34[0x114]; +/* 0x148 */ Object *someObj; + u8 unk14C[0x54]; +/* 0x1A0 */ s16 unk1A0; +/* 0x1A2 */ s16 unk1A2; +/* 0x1A4 */ s16 unk1A4; + u8 unk1A6[0x4C]; +/* 0x1F2 */ s8 unk1F2; +} Object_64_80050754; + +// Mainly has regalloc issues. +void func_80050754(Object *obj, Object_64_80050754 *obj64, f32 arg2) { + f32 xDiff, yDiff, zDiff; + Object *someObj; + + obj->unk3B = 0; + obj->unk18 = 0x28; + someObj = obj64->someObj; + xDiff = someObj->x_position - obj->x_position; + yDiff = someObj->y_position - obj->y_position; + zDiff = someObj->z_position - obj->z_position; + func_80011570(obj, xDiff, yDiff, zDiff); + obj->y_rotation = obj64->someObj->y_rotation; + obj->x_rotation = obj64->someObj->x_rotation; + obj->z_rotation = obj64->someObj->z_rotation; + obj64->unk1A4 = obj->z_rotation; + obj64->unk1A0 = obj->y_rotation; + obj->x_velocity = xDiff / arg2; + obj->y_velocity = yDiff / arg2; + obj->z_velocity = zDiff / arg2; + obj64->unk1F2 = 0; + obj64->unk2C = 0.0f; + obj64->unk30 = 0.0f; +} +#else GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80050754.s") +#endif + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80050850.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80050A28.s") @@ -373,8 +596,40 @@ void func_80052988(Object* arg0, Object_64* arg1, s32 arg2, s32 arg3, s32 arg4, GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052B64.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052D7C.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80053478.s") +typedef struct Object_64_80053478 { + u8 unk0[0x2C]; + f32 unk2C; + u8 unk30[0x1B1]; + s8 unk1E1; + u8 unk1E2[4]; + s8 unk1E6; +} Object_64_80053478; + +void func_80053478(Object_64_80053478 *obj) { + s32 phi_v0; + f32 phi_f0 = obj->unk2C; + + if (phi_f0 < 0.0) { + phi_f0 = -phi_f0; + } + if (phi_f0 > 1.8) { + phi_f0 = 1.8f; + } + phi_f0 -= 0.2; + if (phi_f0 < 0.0) { + phi_f0 = 0.0f; + } + if (obj->unk1E6 != 0) { + phi_v0 = phi_f0 * 68.0f; + } else { + phi_v0 = phi_f0 * 58.0f; + } + D_8011D554 -= (obj->unk1E1 * phi_v0); + if (obj->unk2C > 0.0f) { + D_8011D554 = -D_8011D554; + } +} extern unk8011D510 D_8011D510; @@ -502,9 +757,87 @@ void func_800570A4(unk800570A4_2 *arg0, s32 arg1, s32 arg2) { temp->unk210 = arg2; } +#ifdef NON_MATCHING + +void func_80009558(u16, f32, f32, f32, s32, s32 *); + +typedef struct Object_64_800570B8 { + u8 pad0[3]; + s8 unk3; + u8 pad4[0x20]; + s32 unk24; + u16 unk28; + u16 unk2A; + u8 pad2C[0xDC]; + s32 unk108; +} Object_64_800570B8; + +void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3) { + s32 phi_t0; + Object_64_800570B8 *obj64; + + obj64 = obj->unk64; + if ((obj64->unk108 == 0) && ((!(arg3 & 0x80)) || (D_8011D55C != -1))) { + if (arg3 == 2) { + if ((obj64->unk24 != 0) && (arg1 != obj64->unk2A)) { + func_800096F8(obj64->unk24); + obj64->unk24 = 0; + } + } + if (obj64->unk24 == 0) { + if (arg3 != 3 || get_random_number_from_range(0, 1) != 0) { + obj64->unk2A = arg1; + arg1 += obj64->unk3; + arg2--; + phi_t0 = (get_random_number_from_range(0, arg2) * 12) + arg1; + if (arg2 > 0) { + while (phi_t0 == obj64->unk28) { + phi_t0 = (get_random_number_from_range(0, arg2) * 12) + arg1; + } + } + //sp34 = phi_t0; + func_80009558(phi_t0, obj->x_position, obj->y_position, obj->z_position, 4, &obj64->unk24); + obj64->unk28 = phi_t0; + } + } + } +} +#else GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800570B8.s") +#endif + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057220.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800575EC.s") + +/* Unknown size */ +typedef struct Object_64_800575EC { + u8 pad0[0x38]; + f32 unk38; + f32 unk3C; + f32 unk40; + f32 unk44; + f32 unk48; + f32 unk4C; + f32 unk50; + f32 unk54; + f32 unk58; +} Object_64_800575EC; + +void func_800575EC(Object *obj, Object_64_800575EC *obj64) { + f32 sp38[4][4]; + + D_8011D510.unk0 = obj->y_rotation; + D_8011D510.unk2 = obj->x_rotation; + D_8011D510.unk4 = 0; + D_8011D510.unkC = 0.0f; + D_8011D510.unk10 = 0.0f; + D_8011D510.unk14 = 0.0f; + D_8011D510.unk8 = 1.0f; + func_8006FC30(&sp38, &D_8011D510); + guMtxXFMF(&sp38, 0.0f, 0.0f, 1.0f, &obj64->unk38, &obj64->unk3C, &obj64->unk40); + guMtxXFMF(&sp38, 0.0f, 1.0f, 0.0f, &obj64->unk44, &obj64->unk48, &obj64->unk4C); + guMtxXFMF(&sp38, 1.0f, 0.0f, 0.0f, &obj64->unk50, &obj64->unk54, &obj64->unk58); +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800576E0.s") extern s32 D_8011D534; @@ -534,7 +867,33 @@ void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2) { } GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057A40.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800580B4.s") + +typedef struct Object_64_800580B4 { + u8 unk0[0x1D8]; + s8 unk1D8; +} Object_64_800580B4; + +void func_80057A40(Object *, Object_64_800580B4 *, f32); + +void func_800580B4(Object *arg0, Object_64_800580B4 *arg1, s32 arg2, f32 arg3) { + f32 xPos, yPos, zPos; + if ((D_8011D55C != -1) && (arg1->unk1D8 != 1)) { + if (arg2 != gCameraObject->unk36) { + func_80057A40(arg0, arg1, arg3); + xPos = gCameraObject->x_position; + yPos = gCameraObject->y_position; + zPos = gCameraObject->z_position; + gCameraObject->unk36 = arg2; + func_80057A40(arg0, arg1, arg3); + if (D_8011D540 == 0 && D_8011D582 == 0) { + gCameraObject->unk24 = xPos - gCameraObject->x_position; + gCameraObject->unk28 = yPos - (gCameraObject->y_position + gCameraObject->unk30); + gCameraObject->unk2C = zPos - gCameraObject->z_position; + } + } + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800581E8.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80058B84.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80058D5C.s") @@ -550,7 +909,7 @@ void func_80058F44(f32 arg0, Object *arg1, Object *arg2) { temp1 = func_8007066C(gCameraObject->x_position - arg1->x_position, gCameraObject->z_position - arg1->z_position); gCameraObject->y_rotation += (((-temp1 - gCameraObject->y_rotation) + 0x8000) * temp0) >> 4; gCameraObject->z_rotation -= (gCameraObject->z_rotation * temp0) >> 4; - gCameraObject->unk34_s = func_80029F18(gCameraObject->x_position, arg2->unk3C_f, gCameraObject->z_position); + gCameraObject->unk34 = func_80029F18(gCameraObject->x_position, arg2->unk3C_f, gCameraObject->z_position); } #else