From d0ec047f4789a492e8f92198c020b9e97f50402a Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Wed, 16 Nov 2022 18:55:08 -0500 Subject: [PATCH] Get past that flea and into 37% (#286) * Minor tweaks * Match func_80072718 * Update score * Do some minor cleanup * More cleanup and renaming * Remove comment * Minor clenaup again * Remove semicolons * Match init_controller_paks with a couple of minor fakematch stuff * Udpate score --- README.md | 48 +-- asm/non_matchings/camera/func_8006A1C4.s | 2 +- asm/non_matchings/save_data/func_80072718.s | 369 ------------------ .../save_data/init_controller_paks.s | 120 ------ include/PR/pfs.h | 2 + src/save_data.c | 121 +++++- src/save_data.h | 3 +- 7 files changed, 131 insertions(+), 534 deletions(-) delete mode 100644 asm/non_matchings/save_data/func_80072718.s delete mode 100644 asm/non_matchings/save_data/init_controller_paks.s diff --git a/README.md b/README.md index 5825e01b..683c7ab2 100644 --- a/README.md +++ b/README.md @@ -120,31 +120,31 @@ s32 is_drumstick_unlocked(void) { ``` -As of November 13, 2022, this is our current score: +As of November 15, 2022, this is our current score: ``` -==================================================================== - ADVENTURE ONE (ASM -> C Decompilation) - ------------------------- 36.21% Complete -------------------------- - # Decompiled functions: 1324 - # GLOBAL_ASM remaining: 510 - # NON_MATCHING functions: 12 - # NON_EQUIVALENT WIP functions: 94 - --------------------------- Game Status ---------------------------- - Balloons: 17/47, Keys: 2/4, Trophies: 1/5 - T.T. Amulets: 2/4, Wizpig Amulets: 1/4 - -------------------------------------------------------------------- - We are collecting silver coins in Everfrost Peak. (8/8 silver coins) - ==================================================================== - ADVENTURE TWO (Cleanup & Documentation) - ------------------------- 8.24% Complete -------------------------- - # Documented functions: 235 - # Undocumented remaining: 1599 - --------------------------- Game Status ---------------------------- - Balloons: 5/47, Keys: 1/4, Trophies: 0/5 - T.T. Amulets: 0/4, Wizpig Amulets: 0/4 - -------------------------------------------------------------------- - We are racing in Fossil Canyon. (Lap 2/3) - ==================================================================== +================================================================= + ADVENTURE ONE (ASM -> C Decompilation) + ------------------------ 37.19% Complete ------------------------ + # Decompiled functions: 1336 + # GLOBAL_ASM remaining: 500 + # NON_MATCHING functions: 11 + # NON_EQUIVALENT WIP functions: 94 + -------------------------- Game Status -------------------------- + Balloons: 18/47, Keys: 2/4, Trophies: 1/5 + T.T. Amulets: 2/4, Wizpig Amulets: 1/4 + ----------------------------------------------------------------- + We are collecting silver coins in Walrus Cove. (4/8 silver coins) + ================================================================= + ADVENTURE TWO (Cleanup & Documentation) + ------------------------ 8.96% Complete ------------------------ + # Documented functions: 241 + # Undocumented remaining: 1595 + -------------------------- Game Status -------------------------- + Balloons: 5/47, Keys: 1/4, Trophies: 0/5 + T.T. Amulets: 0/4, Wizpig Amulets: 0/4 + ----------------------------------------------------------------- + We are racing in Fossil Canyon. (Lap 3/3) + ================================================================= ``` diff --git a/asm/non_matchings/camera/func_8006A1C4.s b/asm/non_matchings/camera/func_8006A1C4.s index 5eff40a9..56fbb2ef 100644 --- a/asm/non_matchings/camera/func_8006A1C4.s +++ b/asm/non_matchings/camera/func_8006A1C4.s @@ -111,7 +111,7 @@ glabel func_8006A1C4 .L8006A354: /* 06AF54 8006A354 8FA4005C */ lw $a0, 0x5c($sp) .L8006A358: -/* 06AF58 8006A358 0C01C9C6 */ jal func_80072718 +/* 06AF58 8006A358 0C01C9C6 */ jal rumble_controllers /* 06AF5C 8006A35C 00000000 */ nop /* 06AF60 8006A360 3C048012 */ lui $a0, %hi(sSIMesgQueue) # $a0, 0x8012 /* 06AF64 8006A364 0C0333F8 */ jal osContStartReadData diff --git a/asm/non_matchings/save_data/func_80072718.s b/asm/non_matchings/save_data/func_80072718.s deleted file mode 100644 index 462c4441..00000000 --- a/asm/non_matchings/save_data/func_80072718.s +++ /dev/null @@ -1,369 +0,0 @@ -.late_rodata -glabel D_800E77E8 -.double 3.6 -glabel D_800E77F0 -.double 490.0 - -.text -glabel func_80072718 -/* 073318 80072718 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 07331C 8007271C AFBE0048 */ sw $fp, 0x48($sp) -/* 073320 80072720 3C1E8012 */ lui $fp, %hi(D_801241E6) # $fp, 0x8012 -/* 073324 80072724 27DE41E6 */ addiu $fp, %lo(D_801241E6) # addiu $fp, $fp, 0x41e6 -/* 073328 80072728 93CE0000 */ lbu $t6, ($fp) -/* 07332C 8007272C AFBF004C */ sw $ra, 0x4c($sp) -/* 073330 80072730 AFB70044 */ sw $s7, 0x44($sp) -/* 073334 80072734 AFB60040 */ sw $s6, 0x40($sp) -/* 073338 80072738 AFB5003C */ sw $s5, 0x3c($sp) -/* 07333C 8007273C AFB40038 */ sw $s4, 0x38($sp) -/* 073340 80072740 AFB30034 */ sw $s3, 0x34($sp) -/* 073344 80072744 AFB20030 */ sw $s2, 0x30($sp) -/* 073348 80072748 AFB1002C */ sw $s1, 0x2c($sp) -/* 07334C 8007274C AFB00028 */ sw $s0, 0x28($sp) -/* 073350 80072750 E7B70020 */ swc1 $f23, 0x20($sp) -/* 073354 80072754 E7B60024 */ swc1 $f22, 0x24($sp) -/* 073358 80072758 E7B50018 */ swc1 $f21, 0x18($sp) -/* 07335C 8007275C E7B4001C */ swc1 $f20, 0x1c($sp) -/* 073360 80072760 15C00005 */ bnez $t6, .L80072778 -/* 073364 80072764 AFA40078 */ sw $a0, 0x78($sp) -/* 073368 80072768 3C0F800E */ lui $t7, %hi(D_800DE48C) # $t7, 0x800e -/* 07336C 8007276C 8DEFE48C */ lw $t7, %lo(D_800DE48C)($t7) -/* 073370 80072770 00000000 */ nop -/* 073374 80072774 11E00127 */ beqz $t7, .L80072C14 -.L80072778: -/* 073378 80072778 3C028012 */ lui $v0, %hi(D_801241E8) # $v0, 0x8012 -/* 07337C 8007277C 244241E8 */ addiu $v0, %lo(D_801241E8) # addiu $v0, $v0, 0x41e8 -/* 073380 80072780 8C580000 */ lw $t8, ($v0) -/* 073384 80072784 8FB90078 */ lw $t9, 0x78($sp) -/* 073388 80072788 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 -/* 07338C 8007278C 03194021 */ addu $t0, $t8, $t9 -/* 073390 80072790 29010079 */ slti $at, $t0, 0x79 -/* 073394 80072794 1420003B */ bnez $at, .L80072884 -/* 073398 80072798 AC480000 */ sw $t0, ($v0) -/* 07339C 8007279C AC400000 */ sw $zero, ($v0) -/* 0733A0 800727A0 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) -/* 0733A4 800727A4 0C0334A4 */ jal osPfsIsPlug -/* 0733A8 800727A8 27A5006D */ addiu $a1, $sp, 0x6d -/* 0733AC 800727AC 3C168012 */ lui $s6, %hi(pfs) # $s6, 0x8012 -/* 0733B0 800727B0 3C148012 */ lui $s4, %hi(D_801241E7) # $s4, 0x8012 -/* 0733B4 800727B4 269441E7 */ addiu $s4, %lo(D_801241E7) # addiu $s4, $s4, 0x41e7 -/* 0733B8 800727B8 26D64018 */ addiu $s6, %lo(pfs) # addiu $s6, $s6, 0x4018 -/* 0733BC 800727BC 00009825 */ move $s3, $zero -/* 0733C0 800727C0 24030001 */ li $v1, 1 -/* 0733C4 800727C4 24170068 */ li $s7, 104 -.L800727C8: -/* 0733C8 800727C8 93AA006D */ lbu $t2, 0x6d($sp) -/* 0733CC 800727CC 00608825 */ move $s1, $v1 -/* 0733D0 800727D0 01435824 */ and $t3, $t2, $v1 -/* 0733D4 800727D4 11600023 */ beqz $t3, .L80072864 -/* 0733D8 800727D8 3C0E8012 */ lui $t6, %hi(sRumblePaksPresent) # $t6, 0x8012 -/* 0733DC 800727DC 93CC0000 */ lbu $t4, ($fp) -/* 0733E0 800727E0 91CE41E5 */ lbu $t6, %lo(sRumblePaksPresent)($t6) -/* 0733E4 800727E4 01806827 */ not $t5, $t4 -/* 0733E8 800727E8 01AE7824 */ and $t7, $t5, $t6 -/* 0733EC 800727EC 01E3C024 */ and $t8, $t7, $v1 -/* 0733F0 800727F0 1700001C */ bnez $t8, .L80072864 -/* 0733F4 800727F4 00000000 */ nop -/* 0733F8 800727F8 02770019 */ multu $s3, $s7 -/* 0733FC 800727FC 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 -/* 073400 80072800 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) -/* 073404 80072804 02603025 */ move $a2, $s3 -/* 073408 80072808 0000C812 */ mflo $t9 -/* 07340C 8007280C 02D92821 */ addu $a1, $s6, $t9 -/* 073410 80072810 0C01C837 */ jal osMotorInit -/* 073414 80072814 00000000 */ nop -/* 073418 80072818 1040000E */ beqz $v0, .L80072854 -/* 07341C 8007281C 3C0E8012 */ lui $t6, %hi(sRumblePaksPresent) # $t6, 0x8012 -/* 073420 80072820 93C80000 */ lbu $t0, ($fp) -/* 073424 80072824 928A0000 */ lbu $t2, ($s4) -/* 073428 80072828 02201027 */ not $v0, $s1 -/* 07342C 8007282C 01024824 */ and $t1, $t0, $v0 -/* 073430 80072830 01425824 */ and $t3, $t2, $v0 -/* 073434 80072834 A3C90000 */ sb $t1, ($fp) -/* 073438 80072838 A28B0000 */ sb $t3, ($s4) -/* 07343C 8007283C 3C0C8012 */ lui $t4, %hi(sRumblePaksPresent) # $t4, 0x8012 -/* 073440 80072840 918C41E5 */ lbu $t4, %lo(sRumblePaksPresent)($t4) -/* 073444 80072844 3C018012 */ lui $at, %hi(sRumblePaksPresent) # $at, 0x8012 -/* 073448 80072848 01826824 */ and $t5, $t4, $v0 -/* 07344C 8007284C 10000005 */ b .L80072864 -/* 073450 80072850 A02D41E5 */ sb $t5, %lo(sRumblePaksPresent)($at) -.L80072854: -/* 073454 80072854 91CE41E5 */ lbu $t6, %lo(sRumblePaksPresent)($t6) -/* 073458 80072858 3C018012 */ lui $at, %hi(sRumblePaksPresent) # $at, 0x8012 -/* 07345C 8007285C 01D17825 */ or $t7, $t6, $s1 -/* 073460 80072860 A02F41E5 */ sb $t7, %lo(sRumblePaksPresent)($at) -.L80072864: -/* 073464 80072864 26730001 */ addiu $s3, $s3, 1 -/* 073468 80072868 327800FF */ andi $t8, $s3, 0xff -/* 07346C 8007286C 00111840 */ sll $v1, $s1, 1 -/* 073470 80072870 307900FF */ andi $t9, $v1, 0xff -/* 073474 80072874 2B010004 */ slti $at, $t8, 4 -/* 073478 80072878 03201825 */ move $v1, $t9 -/* 07347C 8007287C 1420FFD2 */ bnez $at, .L800727C8 -/* 073480 80072880 03009825 */ move $s3, $t8 -.L80072884: -/* 073484 80072884 3C088012 */ lui $t0, %hi(sRumblePaksPresent) # $t0, 0x8012 -/* 073488 80072888 910841E5 */ lbu $t0, %lo(sRumblePaksPresent)($t0) -/* 07348C 8007288C 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 073490 80072890 3C148012 */ lui $s4, %hi(D_801241E7) # $s4, 0x8012 -/* 073494 80072894 3C168012 */ lui $s6, %hi(pfs) # $s6, 0x8012 -/* 073498 80072898 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 07349C 8007289C 26D64018 */ addiu $s6, %lo(pfs) # addiu $s6, $s6, 0x4018 -/* 0734A0 800728A0 269441E7 */ addiu $s4, %lo(D_801241E7) # addiu $s4, $s4, 0x41e7 -/* 0734A4 800728A4 15000003 */ bnez $t0, .L800728B4 -/* 0734A8 800728A8 24170068 */ li $s7, 104 -/* 0734AC 800728AC 108000DA */ beqz $a0, .L80072C18 -/* 0734B0 800728B0 8FBF004C */ lw $ra, 0x4c($sp) -.L800728B4: -/* 0734B4 800728B4 10800008 */ beqz $a0, .L800728D8 -/* 0734B8 800728B8 0000A825 */ move $s5, $zero -/* 0734BC 800728BC 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 -/* 0734C0 800728C0 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) -/* 0734C4 800728C4 0C0334A4 */ jal osPfsIsPlug -/* 0734C8 800728C8 27A5006D */ addiu $a1, $sp, 0x6d -/* 0734CC 800728CC 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 0734D0 800728D0 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 0734D4 800728D4 00000000 */ nop -.L800728D8: -/* 0734D8 800728D8 3C01800E */ lui $at, %hi(D_800E77E8 + 4) # $at, 0x800e -/* 0734DC 800728DC C43777E8 */ lwc1 $f23, %lo(D_800E77E8)($at) -/* 0734E0 800728E0 C43677EC */ lwc1 $f22, %lo(D_800E77E8 + 4)($at) -/* 0734E4 800728E4 3C01800E */ lui $at, %hi(D_800E77F0 + 4) # $at, 0x800e -/* 0734E8 800728E8 3C108012 */ lui $s0, %hi(D_801241B8) # $s0, 0x8012 -/* 0734EC 800728EC C43577F0 */ lwc1 $f21, %lo(D_800E77F0)($at) -/* 0734F0 800728F0 C43477F4 */ lwc1 $f20, %lo(D_800E77F0 + 4)($at) -/* 0734F4 800728F4 261041B8 */ addiu $s0, %lo(D_801241B8) # addiu $s0, $s0, 0x41b8 -/* 0734F8 800728F8 00009825 */ move $s3, $zero -/* 0734FC 800728FC 24030001 */ li $v1, 1 -.L80072900: -/* 073500 80072900 1080001F */ beqz $a0, .L80072980 -/* 073504 80072904 3C0D8012 */ lui $t5, %hi(sRumblePaksPresent) # $t5, 0x8012 -/* 073508 80072908 2409FFFF */ li $t1, -1 -/* 07350C 8007290C A6090004 */ sh $t1, 4($s0) -/* 073510 80072910 86020004 */ lh $v0, 4($s0) -/* 073514 80072914 00608825 */ move $s1, $v1 -/* 073518 80072918 A6020006 */ sh $v0, 6($s0) -/* 07351C 8007291C A6020000 */ sh $v0, ($s0) -/* 073520 80072920 93AA006D */ lbu $t2, 0x6d($sp) -/* 073524 80072924 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 073528 80072928 01435824 */ and $t3, $t2, $v1 -/* 07352C 8007292C 15600004 */ bnez $t3, .L80072940 -/* 073530 80072930 00000000 */ nop -/* 073534 80072934 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 073538 80072938 100000A7 */ b .L80072BD8 -/* 07353C 8007293C 26730001 */ addiu $s3, $s3, 1 -.L80072940: -/* 073540 80072940 02770019 */ multu $s3, $s7 -/* 073544 80072944 3C048012 */ lui $a0, %hi(sControllerMesgQueue) # $a0, 0x8012 -/* 073548 80072948 8C844010 */ lw $a0, %lo(sControllerMesgQueue)($a0) -/* 07354C 8007294C 02603025 */ move $a2, $s3 -/* 073550 80072950 00006012 */ mflo $t4 -/* 073554 80072954 02CC9021 */ addu $s2, $s6, $t4 -/* 073558 80072958 0C01C837 */ jal osMotorInit -/* 07355C 8007295C 02402825 */ move $a1, $s2 -/* 073560 80072960 14400003 */ bnez $v0, .L80072970 -/* 073564 80072964 00000000 */ nop -/* 073568 80072968 0C01C74C */ jal osMotorStop -/* 07356C 8007296C 02402025 */ move $a0, $s2 -.L80072970: -/* 073570 80072970 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 073574 80072974 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 073578 80072978 10000097 */ b .L80072BD8 -/* 07357C 8007297C 26730001 */ addiu $s3, $s3, 1 -.L80072980: -/* 073580 80072980 93C20000 */ lbu $v0, ($fp) -/* 073584 80072984 91AD41E5 */ lbu $t5, %lo(sRumblePaksPresent)($t5) -/* 073588 80072988 00608825 */ move $s1, $v1 -/* 07358C 8007298C 004D7024 */ and $t6, $v0, $t5 -/* 073590 80072990 01C37824 */ and $t7, $t6, $v1 -/* 073594 80072994 11E0008F */ beqz $t7, .L80072BD4 -/* 073598 80072998 00000000 */ nop -/* 07359C 8007299C 86030004 */ lh $v1, 4($s0) -/* 0735A0 800729A0 8FAA0078 */ lw $t2, 0x78($sp) -/* 0735A4 800729A4 1C600010 */ bgtz $v1, .L800729E8 -/* 0735A8 800729A8 006A5823 */ subu $t3, $v1, $t2 -/* 0735AC 800729AC 02770019 */ multu $s3, $s7 -/* 0735B0 800729B0 0220C027 */ not $t8, $s1 -/* 0735B4 800729B4 0058C824 */ and $t9, $v0, $t8 -/* 0735B8 800729B8 A3D90000 */ sb $t9, ($fp) -/* 0735BC 800729BC 2408FFFF */ li $t0, -1 -/* 0735C0 800729C0 A6080000 */ sh $t0, ($s0) -/* 0735C4 800729C4 A6000008 */ sh $zero, 8($s0) -/* 0735C8 800729C8 00004812 */ mflo $t1 -/* 0735CC 800729CC 02C92021 */ addu $a0, $s6, $t1 -/* 0735D0 800729D0 0C01C74C */ jal osMotorStop -/* 0735D4 800729D4 00000000 */ nop -/* 0735D8 800729D8 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 0735DC 800729DC 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 0735E0 800729E0 1000007D */ b .L80072BD8 -/* 0735E4 800729E4 26730001 */ addiu $s3, $s3, 1 -.L800729E8: -/* 0735E8 800729E8 A60B0004 */ sh $t3, 4($s0) -/* 0735EC 800729EC 8FAD0078 */ lw $t5, 0x78($sp) -/* 0735F0 800729F0 860C0008 */ lh $t4, 8($s0) -/* 0735F4 800729F4 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 0735F8 800729F8 018D7021 */ addu $t6, $t4, $t5 -/* 0735FC 800729FC A60E0008 */ sh $t6, 8($s0) -/* 073600 80072A00 86020008 */ lh $v0, 8($s0) -/* 073604 80072A04 00000000 */ nop -/* 073608 80072A08 04410004 */ bgez $v0, .L80072A1C -/* 07360C 80072A0C 28410259 */ slti $at, $v0, 0x259 -/* 073610 80072A10 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 073614 80072A14 10000070 */ b .L80072BD8 -/* 073618 80072A18 26730001 */ addiu $s3, $s3, 1 -.L80072A1C: -/* 07361C 80072A1C 14200012 */ bnez $at, .L80072A68 -/* 073620 80072A20 00000000 */ nop -/* 073624 80072A24 02770019 */ multu $s3, $s7 -/* 073628 80072A28 93CF0000 */ lbu $t7, ($fp) -/* 07362C 80072A2C 0220C027 */ not $t8, $s1 -/* 073630 80072A30 01F8C824 */ and $t9, $t7, $t8 -/* 073634 80072A34 A3D90000 */ sb $t9, ($fp) -/* 073638 80072A38 2408FFFF */ li $t0, -1 -/* 07363C 80072A3C 2409FED4 */ li $t1, -300 -/* 073640 80072A40 A6080000 */ sh $t0, ($s0) -/* 073644 80072A44 A6090008 */ sh $t1, 8($s0) -/* 073648 80072A48 00005012 */ mflo $t2 -/* 07364C 80072A4C 02CA2021 */ addu $a0, $s6, $t2 -/* 073650 80072A50 0C01C74C */ jal osMotorStop -/* 073654 80072A54 00000000 */ nop -/* 073658 80072A58 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 07365C 80072A5C 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 073660 80072A60 1000005D */ b .L80072BD8 -/* 073664 80072A64 26730001 */ addiu $s3, $s3, 1 -.L80072A68: -/* 073668 80072A68 86040002 */ lh $a0, 2($s0) -/* 07366C 80072A6C 00000000 */ nop -/* 073670 80072A70 44842000 */ mtc1 $a0, $f4 -/* 073674 80072A74 00000000 */ nop -/* 073678 80072A78 46802021 */ cvt.d.w $f0, $f4 -/* 07367C 80072A7C 4620A03C */ c.lt.d $f20, $f0 -/* 073680 80072A80 00000000 */ nop -/* 073684 80072A84 45000010 */ bc1f .L80072AC8 -/* 073688 80072A88 00000000 */ nop -/* 07368C 80072A8C 928B0000 */ lbu $t3, ($s4) -/* 073690 80072A90 00000000 */ nop -/* 073694 80072A94 01716024 */ and $t4, $t3, $s1 -/* 073698 80072A98 1580004B */ bnez $t4, .L80072BC8 -/* 07369C 80072A9C 00000000 */ nop -/* 0736A0 80072AA0 02770019 */ multu $s3, $s7 -/* 0736A4 80072AA4 00006812 */ mflo $t5 -/* 0736A8 80072AA8 02CD2021 */ addu $a0, $s6, $t5 -/* 0736AC 80072AAC 0C01C796 */ jal osMotorStart -/* 0736B0 80072AB0 00000000 */ nop -/* 0736B4 80072AB4 928E0000 */ lbu $t6, ($s4) -/* 0736B8 80072AB8 02A2A825 */ or $s5, $s5, $v0 -/* 0736BC 80072ABC 01D17825 */ or $t7, $t6, $s1 -/* 0736C0 80072AC0 10000041 */ b .L80072BC8 -/* 0736C4 80072AC4 A28F0000 */ sb $t7, ($s4) -.L80072AC8: -/* 0736C8 80072AC8 4636003C */ c.lt.d $f0, $f22 -/* 0736CC 80072ACC 00000000 */ nop -/* 0736D0 80072AD0 45000011 */ bc1f .L80072B18 -/* 0736D4 80072AD4 00000000 */ nop -/* 0736D8 80072AD8 92980000 */ lbu $t8, ($s4) -/* 0736DC 80072ADC 00000000 */ nop -/* 0736E0 80072AE0 0311C824 */ and $t9, $t8, $s1 -/* 0736E4 80072AE4 13200038 */ beqz $t9, .L80072BC8 -/* 0736E8 80072AE8 00000000 */ nop -/* 0736EC 80072AEC 02770019 */ multu $s3, $s7 -/* 0736F0 80072AF0 00004012 */ mflo $t0 -/* 0736F4 80072AF4 02C82021 */ addu $a0, $s6, $t0 -/* 0736F8 80072AF8 0C01C74C */ jal osMotorStop -/* 0736FC 80072AFC 00000000 */ nop -/* 073700 80072B00 92890000 */ lbu $t1, ($s4) -/* 073704 80072B04 02205027 */ not $t2, $s1 -/* 073708 80072B08 012A5824 */ and $t3, $t1, $t2 -/* 07370C 80072B0C 02A2A825 */ or $s5, $s5, $v0 -/* 073710 80072B10 1000002D */ b .L80072BC8 -/* 073714 80072B14 A28B0000 */ sb $t3, ($s4) -.L80072B18: -/* 073718 80072B18 86030006 */ lh $v1, 6($s0) -/* 07371C 80072B1C 00000000 */ nop -/* 073720 80072B20 28610100 */ slti $at, $v1, 0x100 -/* 073724 80072B24 14200014 */ bnez $at, .L80072B78 -/* 073728 80072B28 00000000 */ nop -/* 07372C 80072B2C 928C0000 */ lbu $t4, ($s4) -/* 073730 80072B30 00000000 */ nop -/* 073734 80072B34 01916824 */ and $t5, $t4, $s1 -/* 073738 80072B38 15A0000D */ bnez $t5, .L80072B70 -/* 07373C 80072B3C 2479FF00 */ addiu $t9, $v1, -0x100 -/* 073740 80072B40 02770019 */ multu $s3, $s7 -/* 073744 80072B44 00007012 */ mflo $t6 -/* 073748 80072B48 02CE2021 */ addu $a0, $s6, $t6 -/* 07374C 80072B4C 0C01C796 */ jal osMotorStart -/* 073750 80072B50 00000000 */ nop -/* 073754 80072B54 928F0000 */ lbu $t7, ($s4) -/* 073758 80072B58 02A2A825 */ or $s5, $s5, $v0 -/* 07375C 80072B5C 01F1C025 */ or $t8, $t7, $s1 -/* 073760 80072B60 A2980000 */ sb $t8, ($s4) -/* 073764 80072B64 86030006 */ lh $v1, 6($s0) -/* 073768 80072B68 00000000 */ nop -/* 07376C 80072B6C 2479FF00 */ addiu $t9, $v1, -0x100 -.L80072B70: -/* 073770 80072B70 10000015 */ b .L80072BC8 -/* 073774 80072B74 A6190006 */ sh $t9, 6($s0) -.L80072B78: -/* 073778 80072B78 92880000 */ lbu $t0, ($s4) -/* 07377C 80072B7C 00000000 */ nop -/* 073780 80072B80 01114824 */ and $t1, $t0, $s1 -/* 073784 80072B84 1120000E */ beqz $t1, .L80072BC0 -/* 073788 80072B88 00647021 */ addu $t6, $v1, $a0 -/* 07378C 80072B8C 02770019 */ multu $s3, $s7 -/* 073790 80072B90 00005012 */ mflo $t2 -/* 073794 80072B94 02CA2021 */ addu $a0, $s6, $t2 -/* 073798 80072B98 0C01C74C */ jal osMotorStop -/* 07379C 80072B9C 00000000 */ nop -/* 0737A0 80072BA0 928B0000 */ lbu $t3, ($s4) -/* 0737A4 80072BA4 02206027 */ not $t4, $s1 -/* 0737A8 80072BA8 016C6824 */ and $t5, $t3, $t4 -/* 0737AC 80072BAC A28D0000 */ sb $t5, ($s4) -/* 0737B0 80072BB0 86030006 */ lh $v1, 6($s0) -/* 0737B4 80072BB4 86040002 */ lh $a0, 2($s0) -/* 0737B8 80072BB8 02A2A825 */ or $s5, $s5, $v0 -/* 0737BC 80072BBC 00647021 */ addu $t6, $v1, $a0 -.L80072BC0: -/* 0737C0 80072BC0 25CF0004 */ addiu $t7, $t6, 4 -/* 0737C4 80072BC4 A60F0006 */ sh $t7, 6($s0) -.L80072BC8: -/* 0737C8 80072BC8 3C04800E */ lui $a0, %hi(D_800DE48C) # $a0, 0x800e -/* 0737CC 80072BCC 8C84E48C */ lw $a0, %lo(D_800DE48C)($a0) -/* 0737D0 80072BD0 00000000 */ nop -.L80072BD4: -/* 0737D4 80072BD4 26730001 */ addiu $s3, $s3, 1 -.L80072BD8: -/* 0737D8 80072BD8 327800FF */ andi $t8, $s3, 0xff -/* 0737DC 80072BDC 00111840 */ sll $v1, $s1, 1 -/* 0737E0 80072BE0 307900FF */ andi $t9, $v1, 0xff -/* 0737E4 80072BE4 2B010004 */ slti $at, $t8, 4 -/* 0737E8 80072BE8 03201825 */ move $v1, $t9 -/* 0737EC 80072BEC 03009825 */ move $s3, $t8 -/* 0737F0 80072BF0 1420FF43 */ bnez $at, .L80072900 -/* 0737F4 80072BF4 2610000A */ addiu $s0, $s0, 0xa -/* 0737F8 80072BF8 12A00002 */ beqz $s5, .L80072C04 -/* 0737FC 80072BFC 3C018012 */ lui $at, %hi(sRumblePaksPresent) # $at, 0x8012 -/* 073800 80072C00 A02041E5 */ sb $zero, %lo(sRumblePaksPresent)($at) -.L80072C04: -/* 073804 80072C04 10800003 */ beqz $a0, .L80072C14 -/* 073808 80072C08 2488FFFF */ addiu $t0, $a0, -1 -/* 07380C 80072C0C 3C01800E */ lui $at, %hi(D_800DE48C) # $at, 0x800e -/* 073810 80072C10 AC28E48C */ sw $t0, %lo(D_800DE48C)($at) -.L80072C14: -/* 073814 80072C14 8FBF004C */ lw $ra, 0x4c($sp) -.L80072C18: -/* 073818 80072C18 C7B50018 */ lwc1 $f21, 0x18($sp) -/* 07381C 80072C1C C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 073820 80072C20 C7B70020 */ lwc1 $f23, 0x20($sp) -/* 073824 80072C24 C7B60024 */ lwc1 $f22, 0x24($sp) -/* 073828 80072C28 8FB00028 */ lw $s0, 0x28($sp) -/* 07382C 80072C2C 8FB1002C */ lw $s1, 0x2c($sp) -/* 073830 80072C30 8FB20030 */ lw $s2, 0x30($sp) -/* 073834 80072C34 8FB30034 */ lw $s3, 0x34($sp) -/* 073838 80072C38 8FB40038 */ lw $s4, 0x38($sp) -/* 07383C 80072C3C 8FB5003C */ lw $s5, 0x3c($sp) -/* 073840 80072C40 8FB60040 */ lw $s6, 0x40($sp) -/* 073844 80072C44 8FB70044 */ lw $s7, 0x44($sp) -/* 073848 80072C48 8FBE0048 */ lw $fp, 0x48($sp) -/* 07384C 80072C4C 03E00008 */ jr $ra -/* 073850 80072C50 27BD0078 */ addiu $sp, $sp, 0x78 - diff --git a/asm/non_matchings/save_data/init_controller_paks.s b/asm/non_matchings/save_data/init_controller_paks.s deleted file mode 100644 index ef0d8570..00000000 --- a/asm/non_matchings/save_data/init_controller_paks.s +++ /dev/null @@ -1,120 +0,0 @@ -glabel init_controller_paks -/* 076718 80075B18 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 07671C 80075B1C AFBF003C */ sw $ra, 0x3c($sp) -/* 076720 80075B20 AFBE0038 */ sw $fp, 0x38($sp) -/* 076724 80075B24 AFB70034 */ sw $s7, 0x34($sp) -/* 076728 80075B28 AFB60030 */ sw $s6, 0x30($sp) -/* 07672C 80075B2C AFB5002C */ sw $s5, 0x2c($sp) -/* 076730 80075B30 AFB40028 */ sw $s4, 0x28($sp) -/* 076734 80075B34 AFB30024 */ sw $s3, 0x24($sp) -/* 076738 80075B38 AFB20020 */ sw $s2, 0x20($sp) -/* 07673C 80075B3C AFB1001C */ sw $s1, 0x1c($sp) -/* 076740 80075B40 0C01A840 */ jal get_si_mesg_queue -/* 076744 80075B44 AFB00018 */ sw $s0, 0x18($sp) -/* 076748 80075B48 3C148012 */ lui $s4, %hi(sControllerMesgQueue) # $s4, 0x8012 -/* 07674C 80075B4C 26944010 */ addiu $s4, %lo(sControllerMesgQueue) # addiu $s4, $s4, 0x4010 -/* 076750 80075B50 AE820000 */ sw $v0, ($s4) -/* 076754 80075B54 0C0078A7 */ jal get_misc_asset -/* 076758 80075B58 24040013 */ li $a0, 19 -/* 07675C 80075B5C 3C018012 */ lui $at, %hi(sUnkMiscAsset19) # $at, 0x8012 -/* 076760 80075B60 AC2241E0 */ sw $v0, %lo(sUnkMiscAsset19)($at) -/* 076764 80075B64 3C038012 */ lui $v1, %hi(D_801241E7) # $v1, 0x8012 -/* 076768 80075B68 246341E7 */ addiu $v1, %lo(D_801241E7) # addiu $v1, $v1, 0x41e7 -/* 07676C 80075B6C 240F000F */ li $t7, 15 -/* 076770 80075B70 A06F0000 */ sb $t7, ($v1) -/* 076774 80075B74 3C018012 */ lui $at, %hi(D_801241E6) # $at, 0x8012 -/* 076778 80075B78 A02F41E6 */ sb $t7, %lo(D_801241E6)($at) -/* 07677C 80075B7C 3C018012 */ lui $at, %hi(D_801241E4) # $at, 0x8012 -/* 076780 80075B80 24180001 */ li $t8, 1 -/* 076784 80075B84 A03841E4 */ sb $t8, %lo(D_801241E4)($at) -/* 076788 80075B88 3C018012 */ lui $at, %hi(D_801241E8) # $at, 0x8012 -/* 07678C 80075B8C AC2041E8 */ sw $zero, %lo(D_801241E8)($at) -/* 076790 80075B90 3C01800E */ lui $at, %hi(D_800DE48C) # $at, 0x800e -/* 076794 80075B94 24190001 */ li $t9, 1 -/* 076798 80075B98 3C158012 */ lui $s5, %hi(sRumblePaksPresent) # $s5, 0x8012 -/* 07679C 80075B9C 3C16800E */ lui $s6, %hi(sControllerPaksPresent) # $s6, 0x800e -/* 0767A0 80075BA0 AC39E48C */ sw $t9, %lo(D_800DE48C)($at) -/* 0767A4 80075BA4 26D6E488 */ addiu $s6, %lo(sControllerPaksPresent) # addiu $s6, $s6, -0x1b78 -/* 0767A8 80075BA8 26B541E5 */ addiu $s5, %lo(sRumblePaksPresent) # addiu $s5, $s5, 0x41e5 -/* 0767AC 80075BAC 8E840000 */ lw $a0, ($s4) -/* 0767B0 80075BB0 A2A00000 */ sb $zero, ($s5) -/* 0767B4 80075BB4 A2C00000 */ sb $zero, ($s6) -/* 0767B8 80075BB8 0C0334A4 */ jal osPfsIsPlug -/* 0767BC 80075BBC 27A5004E */ addiu $a1, $sp, 0x4e -/* 0767C0 80075BC0 3C118012 */ lui $s1, %hi(D_801241B8) # $s1, 0x8012 -/* 0767C4 80075BC4 263141B8 */ addiu $s1, %lo(D_801241B8) # addiu $s1, $s1, 0x41b8 -/* 0767C8 80075BC8 00008025 */ move $s0, $zero -/* 0767CC 80075BCC 24030001 */ li $v1, 1 -/* 0767D0 80075BD0 241E0004 */ li $fp, 4 -/* 0767D4 80075BD4 2417FFFF */ li $s7, -1 -.L80075BD8: -/* 0767D8 80075BD8 93AA004E */ lbu $t2, 0x4e($sp) -/* 0767DC 80075BDC A6200002 */ sh $zero, 2($s1) -/* 0767E0 80075BE0 86290002 */ lh $t1, 2($s1) -/* 0767E4 80075BE4 01435824 */ and $t3, $t2, $v1 -/* 0767E8 80075BE8 A6370004 */ sh $s7, 4($s1) -/* 0767EC 80075BEC A6370000 */ sh $s7, ($s1) -/* 0767F0 80075BF0 00609825 */ move $s3, $v1 -/* 0767F4 80075BF4 11600025 */ beqz $t3, .L80075C8C -/* 0767F8 80075BF8 A6290006 */ sh $t1, 6($s1) -/* 0767FC 80075BFC 00106080 */ sll $t4, $s0, 2 -/* 076800 80075C00 01906023 */ subu $t4, $t4, $s0 -/* 076804 80075C04 000C6080 */ sll $t4, $t4, 2 -/* 076808 80075C08 01906021 */ addu $t4, $t4, $s0 -/* 07680C 80075C0C 3C0D8012 */ lui $t5, %hi(pfs) # $t5, 0x8012 -/* 076810 80075C10 25AD4018 */ addiu $t5, %lo(pfs) # addiu $t5, $t5, 0x4018 -/* 076814 80075C14 000C60C0 */ sll $t4, $t4, 3 -/* 076818 80075C18 018D9021 */ addu $s2, $t4, $t5 -/* 07681C 80075C1C 8E840000 */ lw $a0, ($s4) -/* 076820 80075C20 02402825 */ move $a1, $s2 -/* 076824 80075C24 0C033B48 */ jal osPfsInit -/* 076828 80075C28 02003025 */ move $a2, $s0 -/* 07682C 80075C2C 24010002 */ li $at, 2 -/* 076830 80075C30 14410004 */ bne $v0, $at, .L80075C44 -/* 076834 80075C34 02402825 */ move $a1, $s2 -/* 076838 80075C38 8E840000 */ lw $a0, ($s4) -/* 07683C 80075C3C 0C033B48 */ jal osPfsInit -/* 076840 80075C40 02003025 */ move $a2, $s0 -.L80075C44: -/* 076844 80075C44 14400006 */ bnez $v0, .L80075C60 -/* 076848 80075C48 2401000A */ li $at, 10 -/* 07684C 80075C4C 92CE0000 */ lbu $t6, ($s6) -/* 076850 80075C50 00000000 */ nop -/* 076854 80075C54 01D37825 */ or $t7, $t6, $s3 -/* 076858 80075C58 1000000C */ b .L80075C8C -/* 07685C 80075C5C A2CF0000 */ sb $t7, ($s6) -.L80075C60: -/* 076860 80075C60 1441000A */ bne $v0, $at, .L80075C8C -/* 076864 80075C64 02402825 */ move $a1, $s2 -/* 076868 80075C68 8E840000 */ lw $a0, ($s4) -/* 07686C 80075C6C 0C01C837 */ jal osMotorInit -/* 076870 80075C70 02003025 */ move $a2, $s0 -/* 076874 80075C74 14400006 */ bnez $v0, .L80075C90 -/* 076878 80075C78 00131840 */ sll $v1, $s3, 1 -/* 07687C 80075C7C 92B80000 */ lbu $t8, ($s5) -/* 076880 80075C80 00000000 */ nop -/* 076884 80075C84 0313C825 */ or $t9, $t8, $s3 -/* 076888 80075C88 A2B90000 */ sb $t9, ($s5) -.L80075C8C: -/* 07688C 80075C8C 00131840 */ sll $v1, $s3, 1 -.L80075C90: -/* 076890 80075C90 306800FF */ andi $t0, $v1, 0xff -/* 076894 80075C94 26100001 */ addiu $s0, $s0, 1 -/* 076898 80075C98 01001825 */ move $v1, $t0 -/* 07689C 80075C9C 161EFFCE */ bne $s0, $fp, .L80075BD8 -/* 0768A0 80075CA0 2631000A */ addiu $s1, $s1, 0xa -/* 0768A4 80075CA4 8E840000 */ lw $a0, ($s4) -/* 0768A8 80075CA8 0C0333F8 */ jal osContStartReadData -/* 0768AC 80075CAC 00000000 */ nop -/* 0768B0 80075CB0 8FBF003C */ lw $ra, 0x3c($sp) -/* 0768B4 80075CB4 8FB00018 */ lw $s0, 0x18($sp) -/* 0768B8 80075CB8 8FB1001C */ lw $s1, 0x1c($sp) -/* 0768BC 80075CBC 8FB20020 */ lw $s2, 0x20($sp) -/* 0768C0 80075CC0 8FB30024 */ lw $s3, 0x24($sp) -/* 0768C4 80075CC4 8FB40028 */ lw $s4, 0x28($sp) -/* 0768C8 80075CC8 8FB5002C */ lw $s5, 0x2c($sp) -/* 0768CC 80075CCC 8FB60030 */ lw $s6, 0x30($sp) -/* 0768D0 80075CD0 8FB70034 */ lw $s7, 0x34($sp) -/* 0768D4 80075CD4 8FBE0038 */ lw $fp, 0x38($sp) -/* 0768D8 80075CD8 03E00008 */ jr $ra -/* 0768DC 80075CDC 27BD0058 */ addiu $sp, $sp, 0x58 diff --git a/include/PR/pfs.h b/include/PR/pfs.h index f89566ff..f8e3ffe9 100644 --- a/include/PR/pfs.h +++ b/include/PR/pfs.h @@ -153,5 +153,7 @@ extern s32 osPfsIsPlug(OSMesgQueue *, u8 *); extern s32 osPfsFreeBlocks(OSPfs *, s32 *); extern s32 osPfsNumFiles(OSPfs *, s32 *, s32 *); extern s32 osMotorInit(OSMesgQueue *mq, OSPfs *pfs, int channel); +extern s32 osMotorStop(OSPfs *pfs); +extern s32 osMotorStart(OSPfs *pfs); #endif diff --git a/src/save_data.c b/src/save_data.c index 42e7a36e..ba870bf7 100644 --- a/src/save_data.c +++ b/src/save_data.c @@ -68,6 +68,7 @@ s32 D_80124014; OSPfs pfs[MAXCONTROLLERS]; +/* Size: 0xA bytes */ typedef struct unk_801241B8 { /* 0x00 */ s16 unk0; /* 0x02 */ s16 unk2; @@ -217,8 +218,97 @@ void func_80072708(void) { D_800DE48C = 3; } -//Rumbles controller? -GLOBAL_ASM("asm/non_matchings/save_data/func_80072718.s") +void rumble_controllers(s32 arg0) { + unk_801241B8 *temp; + s32 pfsStatus; + u8 i; + u8 controllerToCheck; + u8 pfsBitPattern; + + if ((D_801241E6 != 0) || ((D_800DE48C != 0))) { + D_801241E8 += arg0; + if (D_801241E8 >= 121) { + D_801241E8 = 0; + osPfsIsPlug(sControllerMesgQueue, &pfsBitPattern); + for (i = 0, controllerToCheck = 1; i < MAXCONTROLLERS; i++, controllerToCheck <<= 1) { + if ((pfsBitPattern & controllerToCheck) && !(~D_801241E6 & sRumblePaksPresent & controllerToCheck)) { + if (osMotorInit(sControllerMesgQueue, &pfs[i], i) != 0) { + D_801241E6 &= ~controllerToCheck; + D_801241E7 &= ~controllerToCheck; + sRumblePaksPresent &= ~controllerToCheck; + } else { + sRumblePaksPresent |= controllerToCheck; + } + } + } + } + if ((sRumblePaksPresent != 0) || (D_800DE48C != 0)) { + pfsStatus = 0; + if (D_800DE48C != 0) { + osPfsIsPlug(sControllerMesgQueue, &pfsBitPattern); + } + for (i = 0, controllerToCheck = 1, temp = D_801241B8; i < MAXCONTROLLERS; i++, controllerToCheck <<= 1, temp++) { + if (D_800DE48C != 0) { + temp->unk0 = temp->unk6 = temp->unk4 = -1; + if (!(pfsBitPattern & controllerToCheck)) { + continue; + } else if (osMotorInit(sControllerMesgQueue, &pfs[i], i) == 0) { + osMotorStop(&pfs[i]); + } + } else if (D_801241E6 & sRumblePaksPresent & controllerToCheck) { + if (temp->unk4 <= 0) { + D_801241E6 &= ~controllerToCheck; + temp->unk0 = -1; + temp->unk8 = 0; + osMotorStop(&pfs[i]); + } else { + temp->unk4 -= arg0; + temp->unk8 += arg0; + if (temp->unk8 < 0) { + continue; + } else if (temp->unk8 >= 601) { + D_801241E6 &= ~controllerToCheck; + temp->unk0 = -1; + temp->unk8 = -300; + osMotorStop(&pfs[i]); + } else { + if (temp->unk2 > 490.0) { + if (!(D_801241E7 & controllerToCheck)) { + pfsStatus |= osMotorStart(&pfs[i]); + D_801241E7 |= controllerToCheck; + } + } else if (temp->unk2 < 3.6) { + if (D_801241E7 & controllerToCheck) { + pfsStatus |= osMotorStop(&pfs[i]); + D_801241E7 &= ~controllerToCheck; + } + } else if (temp->unk6 >= 256) { + if (!(D_801241E7 & controllerToCheck)) { + pfsStatus |= osMotorStart(&pfs[i]); + D_801241E7 |= controllerToCheck; + } + temp->unk6 -= 256; + } else { + if (D_801241E7 & controllerToCheck) { + pfsStatus |= osMotorStop(&pfs[i]); + D_801241E7 &= ~controllerToCheck; + } + temp->unk6 += temp->unk2 + 4; + } + if (1) { } // fakematch + } + } + } + } + if (pfsStatus != 0) { + sRumblePaksPresent = 0; + } + if (D_800DE48C != 0) { + D_800DE48C--; + } + } + } +} #ifdef NON_EQUIVALENT u16 func_80072C54(s32 arg0) { @@ -450,12 +540,12 @@ s32 write_game_data_to_controller_pak(s32 controllerIndex, Settings *arg1) { *((s32 *)gameData) = GAMD; func_800732E8(arg1, gameData + 4); ret = func_80073C5C(controllerIndex, 3, &fileExt); - if (ret == 0) { + if (ret == CONTROLLER_PAK_GOOD) { // D_800E7680 = DKRACING-ADV ret = write_controller_pak_file(controllerIndex, -1, (char *) D_800E7680, (char *)&fileExt, gameData, fileSize); } free_from_memory_pool(gameData); - if (ret != 0) { + if (ret != CONTROLLER_PAK_GOOD) { ret |= (controllerIndex << 30); } return ret; @@ -510,7 +600,7 @@ s32 write_time_data_to_controller_pak(s32 controllerIndex, Settings *arg1) { u8 *timeData; //Should probably be a struct or maybe an array? s32 ret; s32 fileSize; - UNUSED s32 temp_v0; + UNUSED s32 pad; char *fileExt; fileSize = get_time_data_file_size(); // 512 bytes @@ -820,10 +910,6 @@ s32 start_reading_controller_data(UNUSED s32 controllerIndex) { return 0; } -#ifdef NON_MATCHING -// For some reason it seems likely that D_801241E7 is volatile. -// Still needs matching though to prove that. -// volatile u8 D_801241E7; void init_controller_paks(void) { s32 controllerIndex; s32 ret; @@ -832,20 +918,18 @@ void init_controller_paks(void) { s8 maxControllers; sControllerMesgQueue = get_si_mesg_queue(); - sUnkMiscAsset19 = (s16 *)get_misc_asset(ASSET_MISC_19), //Comma is here on purpose - D_801241E7 = 0xF; - D_801241E6 = 0xF; + sUnkMiscAsset19 = (s16 *)get_misc_asset(ASSET_MISC_19); + D_801241E6 = D_801241E7 = 0xF; D_801241E4 = 1; D_801241E8 = 0; D_800DE48C = 1; - sRumblePaksPresent = 0; //sRumblePaksPresent - sControllerPaksPresent = 0; //sControllerPaksPresent + sControllerPaksPresent = sRumblePaksPresent = 0; //pakPattern will set the first 4 bits representing each controller //and it will be 1 if there's something attached. osPfsIsPlug(sControllerMesgQueue, &pakPattern); - for (controllerIndex = 0, controllerBit = 1, maxControllers = MAXCONTROLLERS; controllerIndex != maxControllers; controllerIndex++, controllerBit <<= 1) { + for (controllerIndex = 0, controllerBit = 1, maxControllers = MAXCONTROLLERS; (0, controllerIndex) != maxControllers; controllerIndex++, controllerBit <<= 1) { D_801241B8[controllerIndex].unk2 = 0; D_801241B8[controllerIndex].unk4 = -1; D_801241B8[controllerIndex].unk0 = -1; @@ -862,7 +946,9 @@ void init_controller_paks(void) { sControllerPaksPresent |= controllerBit; } else if (ret == PFS_ERR_ID_FATAL) { - if (osMotorInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex) == 0) { + if (controllerIndex) { } + ret = osMotorInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex); + if (ret == 0) { //If we found a rumble pak, set the bit that has one sRumblePaksPresent |= controllerBit; } @@ -872,9 +958,6 @@ void init_controller_paks(void) { osContStartReadData(sControllerMesgQueue); } -#else -GLOBAL_ASM("asm/non_matchings/save_data/init_controller_paks.s") -#endif UNUSED SIDeviceStatus check_for_rumble_pak(s32 controllerIndex) { s32 ret; diff --git a/src/save_data.h b/src/save_data.h index 02a3552e..4d4246f8 100644 --- a/src/save_data.h +++ b/src/save_data.h @@ -77,6 +77,8 @@ s32 get_file_type(s32 controllerIndex, s32 fileNum); void func_80072578(s16 controllerIndex, s16 arg1, s16 arg2); void func_80072348(s16 controllerIndex, u8 arg1); void func_80072424(s16 controllerIndex, u8 arg1, f32 arg2); +void rumble_controllers(s32 arg0); +void init_controller_paks(void); s32 func_800738A4(Settings *arg0, u8 *arg1); //Non matching void func_800732E8(Settings *arg0, u8 *arg1); //Non matching @@ -88,7 +90,6 @@ s32 func_80074B34(s32 controllerIndex, s16 levelID, s16 vehicleID, s16 *ghostCha u8 func_80074204(s32 arg0, Settings *arg1); //Non Matching void func_8007431C(s32 arg0, Settings *arg1); //Non Matching s32 func_80072E28(s32, s32); //Non Matching arg2 seems to be many different types -void init_controller_paks(void); //Non Matching char *string_to_font_codes(char *inString, char *outString, s32 stringLength); //Reasonably certain about these names for now.