From d5383c27f2090cc047879550d38539145bdbd4bc Mon Sep 17 00:00:00 2001 From: David Benepe Date: Fri, 30 Jul 2021 00:41:14 -0500 Subject: [PATCH] Decompiled 22 functions within unknown_032760 & unknown_0348C0 --- README.md | 20 +- .../unknown_00BC20/func_80023F48.s | 2 +- .../unknown_032760/func_80032398.s | 39 - .../unknown_032760/func_80033C08.s | 50 -- .../unknown_032760/func_80034AF0.s | 26 - .../unknown_032760/func_80034E9C.s | 2 +- .../unknown_032760/func_8003564C.s | 59 -- .../unknown_032760/func_8003572C.s | 46 -- .../unknown_032760/func_800357D4.s | 50 -- .../unknown_032760/func_8003588C.s | 61 -- .../unknown_032760/func_80035E34.s | 54 -- .../unknown_032760/func_8003827C.s | 4 - .../unknown_032760/func_80038710.s | 52 -- .../unknown_032760/func_800387CC.s | 39 - .../unknown_032760/func_800389B8.s | 54 -- .../unknown_032760/func_80038AD4.s | 49 -- .../unknown_032760/func_800391FC.s | 53 -- .../unknown_032760/func_8003ACBC.s | 30 - .../unknown_032760/func_8003B988.s | 2 +- .../unknown_032760/func_8003C2E4.s | 2 +- .../unknown_032760/func_8003DBA0.s | 52 -- .../unknown_032760/func_8003DC5C.s | 51 -- .../unknown_032760/func_8003DD14.s | 2 +- .../unknown_032760/func_8003DE74.s | 41 -- .../unknown_032760/func_8003DF08.s | 52 -- .../unknown_032760/func_8003E630.s | 37 - .../unknown_032760/func_8004001C.s | 36 - .../unknown_032760/func_800400A4.s | 46 -- .../unknown_032760/func_8004049C.s | 56 -- .../unknown_032760/func_80042178.s | 43 -- .../unknown_032760/func_80042998.s | 37 - include/structs.h | 60 +- src/audio.c | 2 +- src/unknown_0255E0.c | 59 +- src/unknown_0255E0.h | 50 +- src/unknown_032760.c | 44 +- src/unknown_0348C0.c | 677 +++++++++++++++++- src/video.c | 7 - src/video.h | 5 + 39 files changed, 771 insertions(+), 1280 deletions(-) delete mode 100644 asm/non_matchings/unknown_032760/func_80032398.s delete mode 100644 asm/non_matchings/unknown_032760/func_80033C08.s delete mode 100644 asm/non_matchings/unknown_032760/func_80034AF0.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003564C.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003572C.s delete mode 100644 asm/non_matchings/unknown_032760/func_800357D4.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003588C.s delete mode 100644 asm/non_matchings/unknown_032760/func_80035E34.s delete mode 100644 asm/non_matchings/unknown_032760/func_80038710.s delete mode 100644 asm/non_matchings/unknown_032760/func_800387CC.s delete mode 100644 asm/non_matchings/unknown_032760/func_800389B8.s delete mode 100644 asm/non_matchings/unknown_032760/func_80038AD4.s delete mode 100644 asm/non_matchings/unknown_032760/func_800391FC.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003ACBC.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003DBA0.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003DC5C.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003DE74.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003DF08.s delete mode 100644 asm/non_matchings/unknown_032760/func_8003E630.s delete mode 100644 asm/non_matchings/unknown_032760/func_8004001C.s delete mode 100644 asm/non_matchings/unknown_032760/func_800400A4.s delete mode 100644 asm/non_matchings/unknown_032760/func_8004049C.s delete mode 100644 asm/non_matchings/unknown_032760/func_80042178.s delete mode 100644 asm/non_matchings/unknown_032760/func_80042998.s diff --git a/README.md b/README.md index f7e2b76b..25d9c7cc 100755 --- a/README.md +++ b/README.md @@ -113,24 +113,24 @@ s32 is_drumstick_unlocked(void) { } ``` -As of July 15th 2021, this is our current score: +As of July 30th 2021, this is our current score: ``` ======================================================= ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 10.57% Complete ------------------- - # Decompiled functions: 742 - # GLOBAL_ASM remaining: 1020 - # NON_MATCHING functions: 39 + ------------------- 12.14% Complete ------------------- + # Decompiled functions: 830 + # GLOBAL_ASM remaining: 938 + # NON_MATCHING functions: 58 --------------------- Game Status --------------------- - Balloons: 6/47, Keys: 1/4, Trophies: 0/5 + Balloons: 8/47, Keys: 1/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 ------------------------------------------------------- - We are racing in Jungle Falls. (Lap 3/3) + We are racing the dinosaur boss Trickytops ======================================================= ADVENTURE TWO (Cleanup & Documentation) - ------------------- 0.69% Complete ------------------- - # Documented functions: 56 - # Undocumented remaining: 1706 + ------------------- 0.75% Complete ------------------- + # Documented functions: 61 + # Undocumented remaining: 1707 --------------------- 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/unknown_00BC20/func_80023F48.s b/asm/non_matchings/unknown_00BC20/func_80023F48.s index b4c19696..d5fe06b5 100644 --- a/asm/non_matchings/unknown_00BC20/func_80023F48.s +++ b/asm/non_matchings/unknown_00BC20/func_80023F48.s @@ -303,7 +303,7 @@ glabel L80024320 /* 024F30 80024330 24040001 */ li $a0, 1 glabel L80024334 /* 024F34 80024334 00C02025 */ move $a0, $a2 -/* 024F38 80024338 0C00F7C2 */ jal func_8003DF08 +/* 024F38 80024338 0C00F7C2 */ jal obj_loop_world_key /* 024F3C 8002433C 00E02825 */ move $a1, $a3 /* 024F40 80024340 1000008C */ b .L80024574 /* 024F44 80024344 24040001 */ li $a0, 1 diff --git a/asm/non_matchings/unknown_032760/func_80032398.s b/asm/non_matchings/unknown_032760/func_80032398.s deleted file mode 100644 index 7402fe33..00000000 --- a/asm/non_matchings/unknown_032760/func_80032398.s +++ /dev/null @@ -1,39 +0,0 @@ -glabel func_80032398 -/* 032F98 80032398 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 032F9C 8003239C AFB30024 */ sw $s3, 0x24($sp) -/* 032FA0 800323A0 3C13800E */ lui $s3, %hi(D_800DC95C) # $s3, 0x800e -/* 032FA4 800323A4 2673C95C */ addiu $s3, %lo(D_800DC95C) # addiu $s3, $s3, -0x36a4 -/* 032FA8 800323A8 8E6E0000 */ lw $t6, ($s3) -/* 032FAC 800323AC AFB20020 */ sw $s2, 0x20($sp) -/* 032FB0 800323B0 AFB00018 */ sw $s0, 0x18($sp) -/* 032FB4 800323B4 00809025 */ move $s2, $a0 -/* 032FB8 800323B8 AFBF002C */ sw $ra, 0x2c($sp) -/* 032FBC 800323BC AFB40028 */ sw $s4, 0x28($sp) -/* 032FC0 800323C0 AFB1001C */ sw $s1, 0x1c($sp) -/* 032FC4 800323C4 19C0000F */ blez $t6, .L80032404 -/* 032FC8 800323C8 00008025 */ move $s0, $zero -/* 032FCC 800323CC 3C14800E */ lui $s4, %hi(D_800DC950) # $s4, 0x800e -/* 032FD0 800323D0 2694C950 */ addiu $s4, %lo(D_800DC950) # addiu $s4, $s4, -0x36b0 -/* 032FD4 800323D4 00008825 */ move $s1, $zero -.L800323D8: -/* 032FD8 800323D8 8E8F0000 */ lw $t7, ($s4) -/* 032FDC 800323DC 02402825 */ move $a1, $s2 -/* 032FE0 800323E0 01F1C021 */ addu $t8, $t7, $s1 -/* 032FE4 800323E4 8F040000 */ lw $a0, ($t8) -/* 032FE8 800323E8 0C00C909 */ jal func_80032424 -/* 032FEC 800323EC 00000000 */ nop -/* 032FF0 800323F0 8E790000 */ lw $t9, ($s3) -/* 032FF4 800323F4 26100001 */ addiu $s0, $s0, 1 -/* 032FF8 800323F8 0219082A */ slt $at, $s0, $t9 -/* 032FFC 800323FC 1420FFF6 */ bnez $at, .L800323D8 -/* 033000 80032400 26310004 */ addiu $s1, $s1, 4 -.L80032404: -/* 033004 80032404 8FBF002C */ lw $ra, 0x2c($sp) -/* 033008 80032408 8FB00018 */ lw $s0, 0x18($sp) -/* 03300C 8003240C 8FB1001C */ lw $s1, 0x1c($sp) -/* 033010 80032410 8FB20020 */ lw $s2, 0x20($sp) -/* 033014 80032414 8FB30024 */ lw $s3, 0x24($sp) -/* 033018 80032418 8FB40028 */ lw $s4, 0x28($sp) -/* 03301C 8003241C 03E00008 */ jr $ra -/* 033020 80032420 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/unknown_032760/func_80033C08.s b/asm/non_matchings/unknown_032760/func_80033C08.s deleted file mode 100644 index 133506a9..00000000 --- a/asm/non_matchings/unknown_032760/func_80033C08.s +++ /dev/null @@ -1,50 +0,0 @@ -glabel func_80033C08 -/* 034808 80033C08 3C018012 */ lui $at, %hi(D_8011D4C0) # $at, 0x8012 -/* 03480C 80033C0C 44807000 */ mtc1 $zero, $f14 -/* 034810 80033C10 C42CD4C0 */ lwc1 $f12, %lo(D_8011D4C0)($at) -/* 034814 80033C14 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 034818 80033C18 460C703C */ c.lt.s $f14, $f12 -/* 03481C 80033C1C AFBF0014 */ sw $ra, 0x14($sp) -/* 034820 80033C20 45000020 */ bc1f .L80033CA4 -/* 034824 80033C24 3C013F80 */ lui $at, 0x3f80 -/* 034828 80033C28 0C0326B4 */ jal sqrtf -/* 03482C 80033C2C AFA40018 */ sw $a0, 0x18($sp) -/* 034830 80033C30 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 034834 80033C34 44812000 */ mtc1 $at, $f4 -/* 034838 80033C38 3C018012 */ lui $at, %hi(D_8011D4C4) # $at, 0x8012 -/* 03483C 80033C3C 46002083 */ div.s $f2, $f4, $f0 -/* 034840 80033C40 C426D4C4 */ lwc1 $f6, %lo(D_8011D4C4)($at) -/* 034844 80033C44 8FA40018 */ lw $a0, 0x18($sp) -/* 034848 80033C48 3C018012 */ lui $at, %hi(D_8011D4C8) # $at, 0x8012 -/* 03484C 80033C4C C48A007C */ lwc1 $f10, 0x7c($a0) -/* 034850 80033C50 C432D4C8 */ lwc1 $f18, %lo(D_8011D4C8)($at) -/* 034854 80033C54 3C018012 */ lui $at, %hi(D_8011D4CC) # $at, 0x8012 -/* 034858 80033C58 44807000 */ mtc1 $zero, $f14 -/* 03485C 80033C5C 46023202 */ mul.s $f8, $f6, $f2 -/* 034860 80033C60 C4860080 */ lwc1 $f6, 0x80($a0) -/* 034864 80033C64 460A4402 */ mul.s $f16, $f8, $f10 -/* 034868 80033C68 00000000 */ nop -/* 03486C 80033C6C 46029102 */ mul.s $f4, $f18, $f2 -/* 034870 80033C70 C432D4CC */ lwc1 $f18, %lo(D_8011D4CC)($at) -/* 034874 80033C74 46062202 */ mul.s $f8, $f4, $f6 -/* 034878 80033C78 C4860084 */ lwc1 $f6, 0x84($a0) -/* 03487C 80033C7C 46029102 */ mul.s $f4, $f18, $f2 -/* 034880 80033C80 46088280 */ add.s $f10, $f16, $f8 -/* 034884 80033C84 46062402 */ mul.s $f16, $f4, $f6 -/* 034888 80033C88 46105300 */ add.s $f12, $f10, $f16 -/* 03488C 80033C8C 460E603C */ c.lt.s $f12, $f14 -/* 034890 80033C90 00000000 */ nop -/* 034894 80033C94 45000005 */ bc1f .L80033CAC -/* 034898 80033C98 00000000 */ nop -/* 03489C 80033C9C 10000003 */ b .L80033CAC -/* 0348A0 80033CA0 46007306 */ mov.s $f12, $f14 -.L80033CA4: -/* 0348A4 80033CA4 44816000 */ mtc1 $at, $f12 -/* 0348A8 80033CA8 00000000 */ nop -.L80033CAC: -/* 0348AC 80033CAC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0348B0 80033CB0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0348B4 80033CB4 03E00008 */ jr $ra -/* 0348B8 80033CB8 46006006 */ mov.s $f0, $f12 - -/* 0348BC 80033CBC 00000000 */ nop diff --git a/asm/non_matchings/unknown_032760/func_80034AF0.s b/asm/non_matchings/unknown_032760/func_80034AF0.s deleted file mode 100644 index ce04da31..00000000 --- a/asm/non_matchings/unknown_032760/func_80034AF0.s +++ /dev/null @@ -1,26 +0,0 @@ -glabel func_80034AF0 -/* 0356F0 80034AF0 90AF0009 */ lbu $t7, 9($a1) -/* 0356F4 80034AF4 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 0356F8 80034AF8 448F2000 */ mtc1 $t7, $f4 -/* 0356FC 80034AFC 44811000 */ mtc1 $at, $f2 -/* 035700 80034B00 46802020 */ cvt.s.w $f0, $f4 -/* 035704 80034B04 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 035708 80034B08 44813000 */ mtc1 $at, $f6 -/* 03570C 80034B0C 4602003C */ c.lt.s $f0, $f2 -/* 035710 80034B10 00000000 */ nop -/* 035714 80034B14 45000003 */ bc1f .L80034B24 -/* 035718 80034B18 00000000 */ nop -/* 03571C 80034B1C 46001006 */ mov.s $f0, $f2 -/* 035720 80034B20 00000000 */ nop -.L80034B24: -/* 035724 80034B24 46060003 */ div.s $f0, $f0, $f6 -/* 035728 80034B28 8C980040 */ lw $t8, 0x40($a0) -/* 03572C 80034B2C 00000000 */ nop -/* 035730 80034B30 C708000C */ lwc1 $f8, 0xc($t8) -/* 035734 80034B34 00000000 */ nop -/* 035738 80034B38 46004282 */ mul.s $f10, $f8, $f0 -/* 03573C 80034B3C E48A0008 */ swc1 $f10, 8($a0) -/* 035740 80034B40 90B90008 */ lbu $t9, 8($a1) -/* 035744 80034B44 03E00008 */ jr $ra -/* 035748 80034B48 AC990078 */ sw $t9, 0x78($a0) - diff --git a/asm/non_matchings/unknown_032760/func_80034E9C.s b/asm/non_matchings/unknown_032760/func_80034E9C.s index 9a1a3435..32e987a9 100644 --- a/asm/non_matchings/unknown_032760/func_80034E9C.s +++ b/asm/non_matchings/unknown_032760/func_80034E9C.s @@ -145,7 +145,7 @@ glabel func_80034E9C /* 035CB0 800350B0 ADAE0000 */ sw $t6, ($t5) /* 035CB4 800350B4 0C000326 */ jal func_80000C98 /* 035CB8 800350B8 2404FFF8 */ li $a0, -8 -/* 035CBC 800350BC 0C0006F0 */ jal func_80001BC0 +/* 035CBC 800350BC 0C0006F0 */ jal play_sound /* 035CC0 800350C0 24040011 */ li $a0, 17 .L800350C4: /* 035CC4 800350C4 8FA30050 */ lw $v1, 0x50($sp) diff --git a/asm/non_matchings/unknown_032760/func_8003564C.s b/asm/non_matchings/unknown_032760/func_8003564C.s deleted file mode 100644 index 8a822205..00000000 --- a/asm/non_matchings/unknown_032760/func_8003564C.s +++ /dev/null @@ -1,59 +0,0 @@ -glabel func_8003564C -/* 03624C 8003564C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 036250 80035650 AFBF0014 */ sw $ra, 0x14($sp) -/* 036254 80035654 AFA5002C */ sw $a1, 0x2c($sp) -/* 036258 80035658 8C8E0078 */ lw $t6, 0x78($a0) -/* 03625C 8003565C 00803025 */ move $a2, $a0 -/* 036260 80035660 15C0002F */ bnez $t6, .L80035720 -/* 036264 80035664 8FBF0014 */ lw $ra, 0x14($sp) -/* 036268 80035668 444FF800 */ cfc1 $t7, $31 -/* 03626C 8003566C C484000C */ lwc1 $f4, 0xc($a0) -/* 036270 80035670 35E10003 */ ori $at, $t7, 3 -/* 036274 80035674 38210002 */ xori $at, $at, 2 -/* 036278 80035678 44C1F800 */ ctc1 $at, $31 -/* 03627C 8003567C 240B0008 */ li $t3, 8 -/* 036280 80035680 460021A4 */ cvt.w.s $f6, $f4 -/* 036284 80035684 240C0034 */ li $t4, 52 -/* 036288 80035688 44CFF800 */ ctc1 $t7, $31 -/* 03628C 8003568C 44183000 */ mfc1 $t8, $f6 -/* 036290 80035690 24050001 */ li $a1, 1 -/* 036294 80035694 4459F800 */ cfc1 $t9, $31 -/* 036298 80035698 A7B80022 */ sh $t8, 0x22($sp) -/* 03629C 8003569C 37210003 */ ori $at, $t9, 3 -/* 0362A0 800356A0 38210002 */ xori $at, $at, 2 -/* 0362A4 800356A4 44C1F800 */ ctc1 $at, $31 -/* 0362A8 800356A8 C4880010 */ lwc1 $f8, 0x10($a0) -/* 0362AC 800356AC 00000000 */ nop -/* 0362B0 800356B0 460042A4 */ cvt.w.s $f10, $f8 -/* 0362B4 800356B4 44D9F800 */ ctc1 $t9, $31 -/* 0362B8 800356B8 44085000 */ mfc1 $t0, $f10 -/* 0362BC 800356BC 00000000 */ nop -/* 0362C0 800356C0 4449F800 */ cfc1 $t1, $31 -/* 0362C4 800356C4 A7A80024 */ sh $t0, 0x24($sp) -/* 0362C8 800356C8 35210003 */ ori $at, $t1, 3 -/* 0362CC 800356CC 38210002 */ xori $at, $at, 2 -/* 0362D0 800356D0 44C1F800 */ ctc1 $at, $31 -/* 0362D4 800356D4 C4900014 */ lwc1 $f16, 0x14($a0) -/* 0362D8 800356D8 A3AB0021 */ sb $t3, 0x21($sp) -/* 0362DC 800356DC 460084A4 */ cvt.w.s $f18, $f16 -/* 0362E0 800356E0 A3AC0020 */ sb $t4, 0x20($sp) -/* 0362E4 800356E4 440A9000 */ mfc1 $t2, $f18 -/* 0362E8 800356E8 44C9F800 */ ctc1 $t1, $31 -/* 0362EC 800356EC AFA60028 */ sw $a2, 0x28($sp) -/* 0362F0 800356F0 27A40020 */ addiu $a0, $sp, 0x20 -/* 0362F4 800356F4 0C003A95 */ jal func_8000EA54 -/* 0362F8 800356F8 A7AA0026 */ sh $t2, 0x26($sp) -/* 0362FC 800356FC 8FA60028 */ lw $a2, 0x28($sp) -/* 036300 80035700 10400007 */ beqz $v0, .L80035720 -/* 036304 80035704 8FBF0014 */ lw $ra, 0x14($sp) -/* 036308 80035708 8C430064 */ lw $v1, 0x64($v0) -/* 03630C 8003570C 00000000 */ nop -/* 036310 80035710 AC660004 */ sw $a2, 4($v1) -/* 036314 80035714 ACC20078 */ sw $v0, 0x78($a2) -/* 036318 80035718 AC40003C */ sw $zero, 0x3c($v0) -/* 03631C 8003571C 8FBF0014 */ lw $ra, 0x14($sp) -.L80035720: -/* 036320 80035720 27BD0028 */ addiu $sp, $sp, 0x28 -/* 036324 80035724 03E00008 */ jr $ra -/* 036328 80035728 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003572C.s b/asm/non_matchings/unknown_032760/func_8003572C.s deleted file mode 100644 index 7fd113ff..00000000 --- a/asm/non_matchings/unknown_032760/func_8003572C.s +++ /dev/null @@ -1,46 +0,0 @@ -glabel func_8003572C -/* 03632C 8003572C 90AF0009 */ lbu $t7, 9($a1) -/* 036330 80035730 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 036334 80035734 448F2000 */ mtc1 $t7, $f4 -/* 036338 80035738 44811000 */ mtc1 $at, $f2 -/* 03633C 8003573C 46802020 */ cvt.s.w $f0, $f4 -/* 036340 80035740 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 036344 80035744 44813000 */ mtc1 $at, $f6 -/* 036348 80035748 4602003C */ c.lt.s $f0, $f2 -/* 03634C 8003574C 00000000 */ nop -/* 036350 80035750 45000003 */ bc1f .L80035760 -/* 036354 80035754 00000000 */ nop -/* 036358 80035758 46001006 */ mov.s $f0, $f2 -/* 03635C 8003575C 00000000 */ nop -.L80035760: -/* 036360 80035760 46060003 */ div.s $f0, $f0, $f6 -/* 036364 80035764 8C820040 */ lw $v0, 0x40($a0) -/* 036368 80035768 8089003A */ lb $t1, 0x3a($a0) -/* 03636C 8003576C C448000C */ lwc1 $f8, 0xc($v0) -/* 036370 80035770 00000000 */ nop -/* 036374 80035774 46004282 */ mul.s $f10, $f8, $f0 -/* 036378 80035778 E48A0008 */ swc1 $f10, 8($a0) -/* 03637C 8003577C 90B9000A */ lbu $t9, 0xa($a1) -/* 036380 80035780 00000000 */ nop -/* 036384 80035784 00194280 */ sll $t0, $t9, 0xa -/* 036388 80035788 A4880000 */ sh $t0, ($a0) -/* 03638C 8003578C 804A0055 */ lb $t2, 0x55($v0) -/* 036390 80035790 00000000 */ nop -/* 036394 80035794 012A082A */ slt $at, $t1, $t2 -/* 036398 80035798 14200002 */ bnez $at, .L800357A4 -/* 03639C 8003579C 00000000 */ nop -/* 0363A0 800357A0 A080003A */ sb $zero, 0x3a($a0) -.L800357A4: -/* 0363A4 800357A4 8C8C004C */ lw $t4, 0x4c($a0) -/* 0363A8 800357A8 240B0001 */ li $t3, 1 -/* 0363AC 800357AC A58B0014 */ sh $t3, 0x14($t4) -/* 0363B0 800357B0 8C8E004C */ lw $t6, 0x4c($a0) -/* 0363B4 800357B4 240D0002 */ li $t5, 2 -/* 0363B8 800357B8 A1CD0011 */ sb $t5, 0x11($t6) -/* 0363BC 800357BC 8C98004C */ lw $t8, 0x4c($a0) -/* 0363C0 800357C0 240F0014 */ li $t7, 20 -/* 0363C4 800357C4 A30F0010 */ sb $t7, 0x10($t8) -/* 0363C8 800357C8 8C99004C */ lw $t9, 0x4c($a0) -/* 0363CC 800357CC 03E00008 */ jr $ra -/* 0363D0 800357D0 A3200012 */ sb $zero, 0x12($t9) - diff --git a/asm/non_matchings/unknown_032760/func_800357D4.s b/asm/non_matchings/unknown_032760/func_800357D4.s deleted file mode 100644 index 165ba83c..00000000 --- a/asm/non_matchings/unknown_032760/func_800357D4.s +++ /dev/null @@ -1,50 +0,0 @@ -glabel func_800357D4 -/* 0363D4 800357D4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0363D8 800357D8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0363DC 800357DC AFA40020 */ sw $a0, 0x20($sp) -/* 0363E0 800357E0 AFA50024 */ sw $a1, 0x24($sp) -/* 0363E4 800357E4 0C006EB2 */ jal get_object_struct -/* 0363E8 800357E8 00002025 */ move $a0, $zero -/* 0363EC 800357EC 1040001F */ beqz $v0, .L8003586C -/* 0363F0 800357F0 8FAC0020 */ lw $t4, 0x20($sp) -/* 0363F4 800357F4 8FAE0020 */ lw $t6, 0x20($sp) -/* 0363F8 800357F8 00000000 */ nop -/* 0363FC 800357FC 8DC3004C */ lw $v1, 0x4c($t6) -/* 036400 80035800 00000000 */ nop -/* 036404 80035804 906F0013 */ lbu $t7, 0x13($v1) -/* 036408 80035808 00000000 */ nop -/* 03640C 8003580C 29E100C8 */ slti $at, $t7, 0xc8 -/* 036410 80035810 10200016 */ beqz $at, .L8003586C -/* 036414 80035814 8FAC0020 */ lw $t4, 0x20($sp) -/* 036418 80035818 8C780000 */ lw $t8, ($v1) -/* 03641C 8003581C 00002025 */ move $a0, $zero -/* 036420 80035820 14580012 */ bne $v0, $t8, .L8003586C -/* 036424 80035824 8FAC0020 */ lw $t4, 0x20($sp) -/* 036428 80035828 0C01A955 */ jal get_button_inputs_from_player -/* 03642C 8003582C AFA2001C */ sw $v0, 0x1c($sp) -/* 036430 80035830 8FA5001C */ lw $a1, 0x1c($sp) -/* 036434 80035834 30592000 */ andi $t9, $v0, 0x2000 -/* 036438 80035838 17200009 */ bnez $t9, .L80035860 -/* 03643C 8003583C 00000000 */ nop -/* 036440 80035840 8FA80020 */ lw $t0, 0x20($sp) -/* 036444 80035844 00000000 */ nop -/* 036448 80035848 8D09005C */ lw $t1, 0x5c($t0) -/* 03644C 8003584C 00000000 */ nop -/* 036450 80035850 8D2A0100 */ lw $t2, 0x100($t1) -/* 036454 80035854 00000000 */ nop -/* 036458 80035858 14AA0004 */ bne $a1, $t2, .L8003586C -/* 03645C 8003585C 8FAC0020 */ lw $t4, 0x20($sp) -.L80035860: -/* 036460 80035860 0C01BCA7 */ jal func_8006F29C -/* 036464 80035864 00000000 */ nop -/* 036468 80035868 8FAC0020 */ lw $t4, 0x20($sp) -.L8003586C: -/* 03646C 8003586C 240B00FF */ li $t3, 255 -/* 036470 80035870 8D8D004C */ lw $t5, 0x4c($t4) -/* 036474 80035874 00000000 */ nop -/* 036478 80035878 A1AB0013 */ sb $t3, 0x13($t5) -/* 03647C 8003587C 8FBF0014 */ lw $ra, 0x14($sp) -/* 036480 80035880 27BD0020 */ addiu $sp, $sp, 0x20 -/* 036484 80035884 03E00008 */ jr $ra -/* 036488 80035888 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003588C.s b/asm/non_matchings/unknown_032760/func_8003588C.s deleted file mode 100644 index ac0ef891..00000000 --- a/asm/non_matchings/unknown_032760/func_8003588C.s +++ /dev/null @@ -1,61 +0,0 @@ -glabel func_8003588C -/* 03648C 8003588C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 036490 80035890 AFBF0014 */ sw $ra, 0x14($sp) -/* 036494 80035894 90AF0009 */ lbu $t7, 9($a1) -/* 036498 80035898 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 03649C 8003589C 448F2000 */ mtc1 $t7, $f4 -/* 0364A0 800358A0 44811000 */ mtc1 $at, $f2 -/* 0364A4 800358A4 46802020 */ cvt.s.w $f0, $f4 -/* 0364A8 800358A8 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 0364AC 800358AC 44813000 */ mtc1 $at, $f6 -/* 0364B0 800358B0 4602003C */ c.lt.s $f0, $f2 -/* 0364B4 800358B4 00000000 */ nop -/* 0364B8 800358B8 45000003 */ bc1f .L800358C8 -/* 0364BC 800358BC 00000000 */ nop -/* 0364C0 800358C0 46001006 */ mov.s $f0, $f2 -/* 0364C4 800358C4 00000000 */ nop -.L800358C8: -/* 0364C8 800358C8 46060003 */ div.s $f0, $f0, $f6 -/* 0364CC 800358CC 8C820040 */ lw $v0, 0x40($a0) -/* 0364D0 800358D0 8089003A */ lb $t1, 0x3a($a0) -/* 0364D4 800358D4 C448000C */ lwc1 $f8, 0xc($v0) -/* 0364D8 800358D8 00000000 */ nop -/* 0364DC 800358DC 46004282 */ mul.s $f10, $f8, $f0 -/* 0364E0 800358E0 E48A0008 */ swc1 $f10, 8($a0) -/* 0364E4 800358E4 90B9000A */ lbu $t9, 0xa($a1) -/* 0364E8 800358E8 00000000 */ nop -/* 0364EC 800358EC 00194280 */ sll $t0, $t9, 0xa -/* 0364F0 800358F0 A4880000 */ sh $t0, ($a0) -/* 0364F4 800358F4 804A0055 */ lb $t2, 0x55($v0) -/* 0364F8 800358F8 00000000 */ nop -/* 0364FC 800358FC 012A082A */ slt $at, $t1, $t2 -/* 036500 80035900 14200002 */ bnez $at, .L8003590C -/* 036504 80035904 00000000 */ nop -/* 036508 80035908 A080003A */ sb $zero, 0x3a($a0) -.L8003590C: -/* 03650C 8003590C 8C8C004C */ lw $t4, 0x4c($a0) -/* 036510 80035910 240B0002 */ li $t3, 2 -/* 036514 80035914 A58B0014 */ sh $t3, 0x14($t4) -/* 036518 80035918 8C8D004C */ lw $t5, 0x4c($a0) -/* 03651C 8003591C 240E0014 */ li $t6, 20 -/* 036520 80035920 A1A00011 */ sb $zero, 0x11($t5) -/* 036524 80035924 8C8F004C */ lw $t7, 0x4c($a0) -/* 036528 80035928 00000000 */ nop -/* 03652C 8003592C A1EE0010 */ sb $t6, 0x10($t7) -/* 036530 80035930 8C98004C */ lw $t8, 0x4c($a0) -/* 036534 80035934 00000000 */ nop -/* 036538 80035938 A3000012 */ sb $zero, 0x12($t8) -/* 03653C 8003593C 0C0270C3 */ jal get_filtered_cheats -/* 036540 80035940 AFA40018 */ sw $a0, 0x18($sp) -/* 036544 80035944 8FA40018 */ lw $a0, 0x18($sp) -/* 036548 80035948 0002CA80 */ sll $t9, $v0, 0xa -/* 03654C 8003594C 07210004 */ bgez $t9, .L80035960 -/* 036550 80035950 8FBF0014 */ lw $ra, 0x14($sp) -/* 036554 80035954 0C003FEE */ jal gParticlePtrList_addObject -/* 036558 80035958 00000000 */ nop -/* 03655C 8003595C 8FBF0014 */ lw $ra, 0x14($sp) -.L80035960: -/* 036560 80035960 27BD0018 */ addiu $sp, $sp, 0x18 -/* 036564 80035964 03E00008 */ jr $ra -/* 036568 80035968 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_80035E34.s b/asm/non_matchings/unknown_032760/func_80035E34.s deleted file mode 100644 index a95ee146..00000000 --- a/asm/non_matchings/unknown_032760/func_80035E34.s +++ /dev/null @@ -1,54 +0,0 @@ -glabel func_80035E34 -/* 036A34 80035E34 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 036A38 80035E38 AFBF001C */ sw $ra, 0x1c($sp) -/* 036A3C 80035E3C AFB00018 */ sw $s0, 0x18($sp) -/* 036A40 80035E40 AFA50024 */ sw $a1, 0x24($sp) -/* 036A44 80035E44 240E0028 */ li $t6, 40 -/* 036A48 80035E48 00808025 */ move $s0, $a0 -/* 036A4C 80035E4C A080003B */ sb $zero, 0x3b($a0) -/* 036A50 80035E50 0C0044E7 */ jal func_8001139C -/* 036A54 80035E54 A48E0018 */ sh $t6, 0x18($a0) -/* 036A58 80035E58 14400006 */ bnez $v0, .L80035E74 -/* 036A5C 80035E5C 00000000 */ nop -/* 036A60 80035E60 8E0F0078 */ lw $t7, 0x78($s0) -/* 036A64 80035E64 8FB80024 */ lw $t8, 0x24($sp) -/* 036A68 80035E68 00000000 */ nop -/* 036A6C 80035E6C 01F8C821 */ addu $t9, $t7, $t8 -/* 036A70 80035E70 AE190078 */ sw $t9, 0x78($s0) -.L80035E74: -/* 036A74 80035E74 0C016790 */ jal set_ghost_position_and_rotation -/* 036A78 80035E78 02002025 */ move $a0, $s0 -/* 036A7C 80035E7C 8FA50024 */ lw $a1, 0x24($sp) -/* 036A80 80035E80 0C02BF0F */ jal func_800AFC3C -/* 036A84 80035E84 02002025 */ move $a0, $s0 -/* 036A88 80035E88 0C006EB2 */ jal get_object_struct -/* 036A8C 80035E8C 00002025 */ move $a0, $zero -/* 036A90 80035E90 8E030060 */ lw $v1, 0x60($s0) -/* 036A94 80035E94 24050001 */ li $a1, 1 -/* 036A98 80035E98 8C680000 */ lw $t0, ($v1) -/* 036A9C 80035E9C 8C440064 */ lw $a0, 0x64($v0) -/* 036AA0 80035EA0 14A80012 */ bne $a1, $t0, .L80035EEC -/* 036AA4 80035EA4 8FBF001C */ lw $ra, 0x1c($sp) -/* 036AA8 80035EA8 808201D6 */ lb $v0, 0x1d6($a0) -/* 036AAC 80035EAC 24010002 */ li $at, 2 -/* 036AB0 80035EB0 10450003 */ beq $v0, $a1, .L80035EC0 -/* 036AB4 80035EB4 00000000 */ nop -/* 036AB8 80035EB8 1441000C */ bne $v0, $at, .L80035EEC -/* 036ABC 80035EBC 8FBF001C */ lw $ra, 0x1c($sp) -.L80035EC0: -/* 036AC0 80035EC0 8C620004 */ lw $v0, 4($v1) -/* 036AC4 80035EC4 24094000 */ li $t1, 16384 -/* 036AC8 80035EC8 804A003A */ lb $t2, 0x3a($v0) -/* 036ACC 80035ECC A4490000 */ sh $t1, ($v0) -/* 036AD0 80035ED0 254B0001 */ addiu $t3, $t2, 1 -/* 036AD4 80035ED4 A04B003A */ sb $t3, 0x3a($v0) -/* 036AD8 80035ED8 804C003A */ lb $t4, 0x3a($v0) -/* 036ADC 80035EDC 00000000 */ nop -/* 036AE0 80035EE0 318D0001 */ andi $t5, $t4, 1 -/* 036AE4 80035EE4 A04D003A */ sb $t5, 0x3a($v0) -/* 036AE8 80035EE8 8FBF001C */ lw $ra, 0x1c($sp) -.L80035EEC: -/* 036AEC 80035EEC 8FB00018 */ lw $s0, 0x18($sp) -/* 036AF0 80035EF0 03E00008 */ jr $ra -/* 036AF4 80035EF4 27BD0020 */ addiu $sp, $sp, 0x20 - diff --git a/asm/non_matchings/unknown_032760/func_8003827C.s b/asm/non_matchings/unknown_032760/func_8003827C.s index 33d2f2e9..72f6a460 100644 --- a/asm/non_matchings/unknown_032760/func_8003827C.s +++ b/asm/non_matchings/unknown_032760/func_8003827C.s @@ -48,7 +48,3 @@ glabel func_8003827C /* 038F28 80038328 03E00008 */ jr $ra /* 038F2C 8003832C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 038F30 80038330 AFA40000 */ sw $a0, ($sp) -/* 038F34 80038334 03E00008 */ jr $ra -/* 038F38 80038338 AFA50004 */ sw $a1, 4($sp) - diff --git a/asm/non_matchings/unknown_032760/func_80038710.s b/asm/non_matchings/unknown_032760/func_80038710.s deleted file mode 100644 index 77ad3f43..00000000 --- a/asm/non_matchings/unknown_032760/func_80038710.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_80038710 -/* 039310 80038710 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 039314 80038714 AFB00028 */ sw $s0, 0x28($sp) -/* 039318 80038718 00808025 */ move $s0, $a0 -/* 03931C 8003871C AFBF002C */ sw $ra, 0x2c($sp) -/* 039320 80038720 0C007D18 */ jal func_8001F460 -/* 039324 80038724 02003025 */ move $a2, $s0 -/* 039328 80038728 860E0006 */ lh $t6, 6($s0) -/* 03932C 8003872C 8E180064 */ lw $t8, 0x64($s0) -/* 039330 80038730 35CF4000 */ ori $t7, $t6, 0x4000 -/* 039334 80038734 A60F0006 */ sh $t7, 6($s0) -/* 039338 80038738 1440001D */ bnez $v0, .L800387B0 -/* 03933C 8003873C AFB80034 */ sw $t8, 0x34($sp) -/* 039340 80038740 0C019884 */ jal get_viewport_count -/* 039344 80038744 00000000 */ nop -/* 039348 80038748 14400008 */ bnez $v0, .L8003876C -/* 03934C 8003874C 24030001 */ li $v1, 1 -/* 039350 80038750 8FB90034 */ lw $t9, 0x34($sp) -/* 039354 80038754 00000000 */ nop -/* 039358 80038758 83240044 */ lb $a0, 0x44($t9) -/* 03935C 8003875C 0C008433 */ jal func_800210CC -/* 039360 80038760 00000000 */ nop -/* 039364 80038764 10000001 */ b .L8003876C -/* 039368 80038768 00401825 */ move $v1, $v0 -.L8003876C: -/* 03936C 8003876C 10600010 */ beqz $v1, .L800387B0 -/* 039370 80038770 340A8000 */ li $t2, 32768 -/* 039374 80038774 8FA80034 */ lw $t0, 0x34($sp) -/* 039378 80038778 86090000 */ lh $t1, ($s0) -/* 03937C 8003877C 8E05000C */ lw $a1, 0xc($s0) -/* 039380 80038780 8E060010 */ lw $a2, 0x10($s0) -/* 039384 80038784 8E070014 */ lw $a3, 0x14($s0) -/* 039388 80038788 81040030 */ lb $a0, 0x30($t0) -/* 03938C 8003878C 01495823 */ subu $t3, $t2, $t1 -/* 039390 80038790 AFAB0010 */ sw $t3, 0x10($sp) -/* 039394 80038794 860C0002 */ lh $t4, 2($s0) -/* 039398 80038798 00000000 */ nop -/* 03939C 8003879C 000C6823 */ negu $t5, $t4 -/* 0393A0 800387A0 AFAD0014 */ sw $t5, 0x14($sp) -/* 0393A4 800387A4 860E0004 */ lh $t6, 4($s0) -/* 0393A8 800387A8 0C019922 */ jal func_80066488 -/* 0393AC 800387AC AFAE0018 */ sw $t6, 0x18($sp) -.L800387B0: -/* 0393B0 800387B0 8FBF002C */ lw $ra, 0x2c($sp) -/* 0393B4 800387B4 8FB00028 */ lw $s0, 0x28($sp) -/* 0393B8 800387B8 03E00008 */ jr $ra -/* 0393BC 800387BC 27BD0040 */ addiu $sp, $sp, 0x40 - -/* 0393C0 800387C0 AFA40000 */ sw $a0, ($sp) -/* 0393C4 800387C4 03E00008 */ jr $ra -/* 0393C8 800387C8 AFA50004 */ sw $a1, 4($sp) - diff --git a/asm/non_matchings/unknown_032760/func_800387CC.s b/asm/non_matchings/unknown_032760/func_800387CC.s deleted file mode 100644 index c17718d8..00000000 --- a/asm/non_matchings/unknown_032760/func_800387CC.s +++ /dev/null @@ -1,39 +0,0 @@ -glabel func_800387CC -/* 0393CC 800387CC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0393D0 800387D0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0393D4 800387D4 AFA50024 */ sw $a1, 0x24($sp) -/* 0393D8 800387D8 8C820078 */ lw $v0, 0x78($a0) -/* 0393DC 800387DC 00803825 */ move $a3, $a0 -/* 0393E0 800387E0 10400006 */ beqz $v0, .L800387FC -/* 0393E4 800387E4 00001825 */ move $v1, $zero -/* 0393E8 800387E8 2444FFFF */ addiu $a0, $v0, -1 -/* 0393EC 800387EC 0C006EB2 */ jal get_object_struct -/* 0393F0 800387F0 AFA70020 */ sw $a3, 0x20($sp) -/* 0393F4 800387F4 8FA70020 */ lw $a3, 0x20($sp) -/* 0393F8 800387F8 00401825 */ move $v1, $v0 -.L800387FC: -/* 0393FC 800387FC 8FA50024 */ lw $a1, 0x24($sp) -/* 039400 80038800 00E02025 */ move $a0, $a3 -/* 039404 80038804 00E03025 */ move $a2, $a3 -/* 039408 80038808 AFA3001C */ sw $v1, 0x1c($sp) -/* 03940C 8003880C 0C007D18 */ jal func_8001F460 -/* 039410 80038810 AFA70020 */ sw $a3, 0x20($sp) -/* 039414 80038814 8FA70020 */ lw $a3, 0x20($sp) -/* 039418 80038818 8FA3001C */ lw $v1, 0x1c($sp) -/* 03941C 8003881C 84EE0006 */ lh $t6, 6($a3) -/* 039420 80038820 ACE2007C */ sw $v0, 0x7c($a3) -/* 039424 80038824 35CF4000 */ ori $t7, $t6, 0x4000 -/* 039428 80038828 14400006 */ bnez $v0, .L80038844 -/* 03942C 8003882C A4EF0006 */ sh $t7, 6($a3) -/* 039430 80038830 10600005 */ beqz $v1, .L80038848 -/* 039434 80038834 8FBF0014 */ lw $ra, 0x14($sp) -/* 039438 80038838 8C620064 */ lw $v0, 0x64($v1) -/* 03943C 8003883C 00000000 */ nop -/* 039440 80038840 AC470148 */ sw $a3, 0x148($v0) -.L80038844: -/* 039444 80038844 8FBF0014 */ lw $ra, 0x14($sp) -.L80038848: -/* 039448 80038848 27BD0020 */ addiu $sp, $sp, 0x20 -/* 03944C 8003884C 03E00008 */ jr $ra -/* 039450 80038850 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_800389B8.s b/asm/non_matchings/unknown_032760/func_800389B8.s deleted file mode 100644 index 7835a9d5..00000000 --- a/asm/non_matchings/unknown_032760/func_800389B8.s +++ /dev/null @@ -1,54 +0,0 @@ -.late_rodata -glabel D_800E6050 -.double 1.2 - -.text -glabel func_800389B8 -/* 0395B8 800389B8 44852000 */ mtc1 $a1, $f4 -/* 0395BC 800389BC 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 0395C0 800389C0 468020A0 */ cvt.s.w $f2, $f4 -/* 0395C4 800389C4 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 0395C8 800389C8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0395CC 800389CC AFBF0014 */ sw $ra, 0x14($sp) -/* 0395D0 800389D0 15C00007 */ bnez $t6, .L800389F0 -/* 0395D4 800389D4 46001006 */ mov.s $f0, $f2 -/* 0395D8 800389D8 3C01800E */ lui $at, %hi(D_800E6050 + 4) # $at, 0x800e -/* 0395DC 800389DC C4296050 */ lwc1 $f9, %lo(D_800E6050)($at) -/* 0395E0 800389E0 C4286054 */ lwc1 $f8, %lo(D_800E6050 + 4)($at) -/* 0395E4 800389E4 460011A1 */ cvt.d.s $f6, $f2 -/* 0395E8 800389E8 46283282 */ mul.d $f10, $f6, $f8 -/* 0395EC 800389EC 46205020 */ cvt.s.d $f0, $f10 -.L800389F0: -/* 0395F0 800389F0 C492001C */ lwc1 $f18, 0x1c($a0) -/* 0395F4 800389F4 C490000C */ lwc1 $f16, 0xc($a0) -/* 0395F8 800389F8 46009102 */ mul.s $f4, $f18, $f0 -/* 0395FC 800389FC C48A0020 */ lwc1 $f10, 0x20($a0) -/* 039600 80038A00 848F0018 */ lh $t7, 0x18($a0) -/* 039604 80038A04 0005C100 */ sll $t8, $a1, 4 -/* 039608 80038A08 46048180 */ add.s $f6, $f16, $f4 -/* 03960C 80038A0C 01F8C821 */ addu $t9, $t7, $t8 -/* 039610 80038A10 46005482 */ mul.s $f18, $f10, $f0 -/* 039614 80038A14 E486000C */ swc1 $f6, 0xc($a0) -/* 039618 80038A18 C4860024 */ lwc1 $f6, 0x24($a0) -/* 03961C 80038A1C C4880010 */ lwc1 $f8, 0x10($a0) -/* 039620 80038A20 46003282 */ mul.s $f10, $f6, $f0 -/* 039624 80038A24 A4990018 */ sh $t9, 0x18($a0) -/* 039628 80038A28 C4840014 */ lwc1 $f4, 0x14($a0) -/* 03962C 80038A2C 84880018 */ lh $t0, 0x18($a0) -/* 039630 80038A30 46124400 */ add.s $f16, $f8, $f18 -/* 039634 80038A34 29010100 */ slti $at, $t0, 0x100 -/* 039638 80038A38 460A2200 */ add.s $f8, $f4, $f10 -/* 03963C 80038A3C E4900010 */ swc1 $f16, 0x10($a0) -/* 039640 80038A40 14200006 */ bnez $at, .L80038A5C -/* 039644 80038A44 E4880014 */ swc1 $f8, 0x14($a0) -/* 039648 80038A48 0C003FEE */ jal gParticlePtrList_addObject -/* 03964C 80038A4C AFA40018 */ sw $a0, 0x18($sp) -/* 039650 80038A50 8FA40018 */ lw $a0, 0x18($sp) -/* 039654 80038A54 240900FF */ li $t1, 255 -/* 039658 80038A58 A4890018 */ sh $t1, 0x18($a0) -.L80038A5C: -/* 03965C 80038A5C 8FBF0014 */ lw $ra, 0x14($sp) -/* 039660 80038A60 27BD0018 */ addiu $sp, $sp, 0x18 -/* 039664 80038A64 03E00008 */ jr $ra -/* 039668 80038A68 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_80038AD4.s b/asm/non_matchings/unknown_032760/func_80038AD4.s deleted file mode 100644 index cbaef2f8..00000000 --- a/asm/non_matchings/unknown_032760/func_80038AD4.s +++ /dev/null @@ -1,49 +0,0 @@ -.late_rodata -glabel D_800E6058 -.double 1.2 - -.text -glabel func_80038AD4 -/* 0396D4 80038AD4 44852000 */ mtc1 $a1, $f4 -/* 0396D8 80038AD8 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 0396DC 80038ADC 468020A0 */ cvt.s.w $f2, $f4 -/* 0396E0 80038AE0 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 0396E4 80038AE4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0396E8 80038AE8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0396EC 80038AEC 15C00007 */ bnez $t6, .L80038B0C -/* 0396F0 80038AF0 46001006 */ mov.s $f0, $f2 -/* 0396F4 80038AF4 3C01800E */ lui $at, %hi(D_800E6058 + 4) # $at, 0x800e -/* 0396F8 80038AF8 C4296058 */ lwc1 $f9, %lo(D_800E6058)($at) -/* 0396FC 80038AFC C428605C */ lwc1 $f8, %lo(D_800E6058 + 4)($at) -/* 039700 80038B00 460011A1 */ cvt.d.s $f6, $f2 -/* 039704 80038B04 46283282 */ mul.d $f10, $f6, $f8 -/* 039708 80038B08 46205020 */ cvt.s.d $f0, $f10 -.L80038B0C: -/* 03970C 80038B0C 3C013FD0 */ li $at, 0x3FD00000 # 1.625000 -/* 039710 80038B10 44819800 */ mtc1 $at, $f19 -/* 039714 80038B14 44809000 */ mtc1 $zero, $f18 -/* 039718 80038B18 46000421 */ cvt.d.s $f16, $f0 -/* 03971C 80038B1C 46328102 */ mul.d $f4, $f16, $f18 -/* 039720 80038B20 848F0018 */ lh $t7, 0x18($a0) -/* 039724 80038B24 C4860010 */ lwc1 $f6, 0x10($a0) -/* 039728 80038B28 0005C080 */ sll $t8, $a1, 2 -/* 03972C 80038B2C 01F8C821 */ addu $t9, $t7, $t8 -/* 039730 80038B30 A4990018 */ sh $t9, 0x18($a0) -/* 039734 80038B34 46003221 */ cvt.d.s $f8, $f6 -/* 039738 80038B38 46244280 */ add.d $f10, $f8, $f4 -/* 03973C 80038B3C 84880018 */ lh $t0, 0x18($a0) -/* 039740 80038B40 46205420 */ cvt.s.d $f16, $f10 -/* 039744 80038B44 29010100 */ slti $at, $t0, 0x100 -/* 039748 80038B48 14200006 */ bnez $at, .L80038B64 -/* 03974C 80038B4C E4900010 */ swc1 $f16, 0x10($a0) -/* 039750 80038B50 0C003FEE */ jal gParticlePtrList_addObject -/* 039754 80038B54 AFA40018 */ sw $a0, 0x18($sp) -/* 039758 80038B58 8FA40018 */ lw $a0, 0x18($sp) -/* 03975C 80038B5C 240900FF */ li $t1, 255 -/* 039760 80038B60 A4890018 */ sh $t1, 0x18($a0) -.L80038B64: -/* 039764 80038B64 8FBF0014 */ lw $ra, 0x14($sp) -/* 039768 80038B68 27BD0018 */ addiu $sp, $sp, 0x18 -/* 03976C 80038B6C 03E00008 */ jr $ra -/* 039770 80038B70 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_800391FC.s b/asm/non_matchings/unknown_032760/func_800391FC.s deleted file mode 100644 index 88826b81..00000000 --- a/asm/non_matchings/unknown_032760/func_800391FC.s +++ /dev/null @@ -1,53 +0,0 @@ -glabel func_800391FC -/* 039DFC 800391FC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 039E00 80039200 AFBF0024 */ sw $ra, 0x24($sp) -/* 039E04 80039204 AFB00020 */ sw $s0, 0x20($sp) -/* 039E08 80039208 8C820078 */ lw $v0, 0x78($a0) -/* 039E0C 8003920C 00808025 */ move $s0, $a0 -/* 039E10 80039210 18400006 */ blez $v0, .L8003922C -/* 039E14 80039214 02003025 */ move $a2, $s0 -/* 039E18 80039218 00457023 */ subu $t6, $v0, $a1 -/* 039E1C 8003921C 00057840 */ sll $t7, $a1, 1 -/* 039E20 80039220 AC8E0078 */ sw $t6, 0x78($a0) -/* 039E24 80039224 10000002 */ b .L80039230 -/* 039E28 80039228 01E02825 */ move $a1, $t7 -.L8003922C: -/* 039E2C 8003922C AE000078 */ sw $zero, 0x78($s0) -.L80039230: -/* 039E30 80039230 86180018 */ lh $t8, 0x18($s0) -/* 039E34 80039234 02002025 */ move $a0, $s0 -/* 039E38 80039238 0C007D18 */ jal func_8001F460 -/* 039E3C 8003923C AFB8002C */ sw $t8, 0x2c($sp) -/* 039E40 80039240 8FA6002C */ lw $a2, 0x2c($sp) -/* 039E44 80039244 241900AD */ li $t9, 173 -/* 039E48 80039248 AFB90010 */ sw $t9, 0x10($sp) -/* 039E4C 8003924C 02002025 */ move $a0, $s0 -/* 039E50 80039250 00002825 */ move $a1, $zero -/* 039E54 80039254 0C0044F3 */ jal func_800113CC -/* 039E58 80039258 240700AC */ li $a3, 172 -/* 039E5C 8003925C 8E08004C */ lw $t0, 0x4c($s0) -/* 039E60 80039260 00000000 */ nop -/* 039E64 80039264 91090013 */ lbu $t1, 0x13($t0) -/* 039E68 80039268 00000000 */ nop -/* 039E6C 8003926C 292100FF */ slti $at, $t1, 0xff -/* 039E70 80039270 1020000E */ beqz $at, .L800392AC -/* 039E74 80039274 8FBF0024 */ lw $ra, 0x24($sp) -/* 039E78 80039278 8E0A0078 */ lw $t2, 0x78($s0) -/* 039E7C 8003927C 240B003C */ li $t3, 60 -/* 039E80 80039280 15400009 */ bnez $t2, .L800392A8 -/* 039E84 80039284 2404023B */ li $a0, 571 -/* 039E88 80039288 8E05000C */ lw $a1, 0xc($s0) -/* 039E8C 8003928C 8E060010 */ lw $a2, 0x10($s0) -/* 039E90 80039290 8E070014 */ lw $a3, 0x14($s0) -/* 039E94 80039294 AE0B0078 */ sw $t3, 0x78($s0) -/* 039E98 80039298 240C0004 */ li $t4, 4 -/* 039E9C 8003929C AFAC0010 */ sw $t4, 0x10($sp) -/* 039EA0 800392A0 0C002556 */ jal func_80009558 -/* 039EA4 800392A4 AFA00014 */ sw $zero, 0x14($sp) -.L800392A8: -/* 039EA8 800392A8 8FBF0024 */ lw $ra, 0x24($sp) -.L800392AC: -/* 039EAC 800392AC 8FB00020 */ lw $s0, 0x20($sp) -/* 039EB0 800392B0 03E00008 */ jr $ra -/* 039EB4 800392B4 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/unknown_032760/func_8003ACBC.s b/asm/non_matchings/unknown_032760/func_8003ACBC.s deleted file mode 100644 index 9b882233..00000000 --- a/asm/non_matchings/unknown_032760/func_8003ACBC.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel func_8003ACBC -/* 03B8BC 8003ACBC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 03B8C0 8003ACC0 AFBF0014 */ sw $ra, 0x14($sp) -/* 03B8C4 8003ACC4 AFA60020 */ sw $a2, 0x20($sp) -/* 03B8C8 8003ACC8 90AF0008 */ lbu $t7, 8($a1) -/* 03B8CC 8003ACCC 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 03B8D0 8003ACD0 448F2000 */ mtc1 $t7, $f4 -/* 03B8D4 8003ACD4 44811000 */ mtc1 $at, $f2 -/* 03B8D8 8003ACD8 46802020 */ cvt.s.w $f0, $f4 -/* 03B8DC 8003ACDC 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 03B8E0 8003ACE0 44813000 */ mtc1 $at, $f6 -/* 03B8E4 8003ACE4 4602003C */ c.lt.s $f0, $f2 -/* 03B8E8 8003ACE8 00000000 */ nop -/* 03B8EC 8003ACEC 45000003 */ bc1f .L8003ACFC -/* 03B8F0 8003ACF0 00000000 */ nop -/* 03B8F4 8003ACF4 46001006 */ mov.s $f0, $f2 -/* 03B8F8 8003ACF8 00000000 */ nop -.L8003ACFC: -/* 03B8FC 8003ACFC 46060003 */ div.s $f0, $f0, $f6 -/* 03B900 8003AD00 E4800008 */ swc1 $f0, 8($a0) -/* 03B904 8003AD04 90B9000A */ lbu $t9, 0xa($a1) -/* 03B908 8003AD08 00000000 */ nop -/* 03B90C 8003AD0C 00194280 */ sll $t0, $t9, 0xa -/* 03B910 8003AD10 0C0044E4 */ jal func_80011390 -/* 03B914 8003AD14 A4880000 */ sh $t0, ($a0) -/* 03B918 8003AD18 8FBF0014 */ lw $ra, 0x14($sp) -/* 03B91C 8003AD1C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 03B920 8003AD20 03E00008 */ jr $ra -/* 03B924 8003AD24 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003B988.s b/asm/non_matchings/unknown_032760/func_8003B988.s index 855d9eac..e9e9efc5 100644 --- a/asm/non_matchings/unknown_032760/func_8003B988.s +++ b/asm/non_matchings/unknown_032760/func_8003B988.s @@ -109,7 +109,7 @@ glabel func_8003B988 /* 03C710 8003BB10 AD0F0008 */ sw $t7, 8($t0) /* 03C714 8003BB14 0C002050 */ jal func_80008140 /* 03C718 8003BB18 00000000 */ nop -/* 03C71C 8003BB1C 0C0006F0 */ jal func_80001BC0 +/* 03C71C 8003BB1C 0C0006F0 */ jal play_sound /* 03C720 8003BB20 24040011 */ li $a0, 17 /* 03C724 8003BB24 8FA80044 */ lw $t0, 0x44($sp) /* 03C728 8003BB28 00000000 */ nop diff --git a/asm/non_matchings/unknown_032760/func_8003C2E4.s b/asm/non_matchings/unknown_032760/func_8003C2E4.s index 524e488a..5fe87bf0 100644 --- a/asm/non_matchings/unknown_032760/func_8003C2E4.s +++ b/asm/non_matchings/unknown_032760/func_8003C2E4.s @@ -86,7 +86,7 @@ glabel func_8003C2E4 /* 03D028 8003C428 AE0B0008 */ sw $t3, 8($s0) /* 03D02C 8003C42C 0C00030E */ jal func_80000C38 /* 03D030 8003C430 24040010 */ li $a0, 16 -/* 03D034 8003C434 0C0006F0 */ jal func_80001BC0 +/* 03D034 8003C434 0C0006F0 */ jal play_sound /* 03D038 8003C438 24040011 */ li $a0, 17 /* 03D03C 8003C43C 82040013 */ lb $a0, 0x13($s0) /* 03D040 8003C440 00000000 */ nop diff --git a/asm/non_matchings/unknown_032760/func_8003DBA0.s b/asm/non_matchings/unknown_032760/func_8003DBA0.s deleted file mode 100644 index b80eaa50..00000000 --- a/asm/non_matchings/unknown_032760/func_8003DBA0.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_8003DBA0 -/* 03E7A0 8003DBA0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 03E7A4 8003DBA4 AFBF0014 */ sw $ra, 0x14($sp) -/* 03E7A8 8003DBA8 AFA5001C */ sw $a1, 0x1c($sp) -/* 03E7AC 8003DBAC 8C8F004C */ lw $t7, 0x4c($a0) -/* 03E7B0 8003DBB0 240E0002 */ li $t6, 2 -/* 03E7B4 8003DBB4 A5EE0014 */ sh $t6, 0x14($t7) -/* 03E7B8 8003DBB8 8C98004C */ lw $t8, 0x4c($a0) -/* 03E7BC 8003DBBC 2419001E */ li $t9, 30 -/* 03E7C0 8003DBC0 A3000011 */ sb $zero, 0x11($t8) -/* 03E7C4 8003DBC4 8C88004C */ lw $t0, 0x4c($a0) -/* 03E7C8 8003DBC8 24090003 */ li $t1, 3 -/* 03E7CC 8003DBCC A1190010 */ sb $t9, 0x10($t0) -/* 03E7D0 8003DBD0 240A0010 */ li $t2, 16 -/* 03E7D4 8003DBD4 AC890078 */ sw $t1, 0x78($a0) -/* 03E7D8 8003DBD8 AC8A007C */ sw $t2, 0x7c($a0) -/* 03E7DC 8003DBDC 0C0270B4 */ jal is_in_tracks_mode -/* 03E7E0 8003DBE0 AFA40018 */ sw $a0, 0x18($sp) -/* 03E7E4 8003DBE4 8FA40018 */ lw $a0, 0x18($sp) -/* 03E7E8 8003DBE8 1440000F */ bnez $v0, .L8003DC28 -/* 03E7EC 8003DBEC 00000000 */ nop -/* 03E7F0 8003DBF0 0C003877 */ jal func_8000E1DC -/* 03E7F4 8003DBF4 AFA40018 */ sw $a0, 0x18($sp) -/* 03E7F8 8003DBF8 8FA40018 */ lw $a0, 0x18($sp) -/* 03E7FC 8003DBFC 10400009 */ beqz $v0, .L8003DC24 -/* 03E800 8003DC00 240B0003 */ li $t3, 3 -/* 03E804 8003DC04 0C027B1C */ jal is_in_adventure_two -/* 03E808 8003DC08 AFA40018 */ sw $a0, 0x18($sp) -/* 03E80C 8003DC0C 8FA40018 */ lw $a0, 0x18($sp) -/* 03E810 8003DC10 10400004 */ beqz $v0, .L8003DC24 -/* 03E814 8003DC14 240B0003 */ li $t3, 3 -/* 03E818 8003DC18 10000003 */ b .L8003DC28 -/* 03E81C 8003DC1C AC800078 */ sw $zero, 0x78($a0) -/* 03E820 8003DC20 240B0003 */ li $t3, 3 -.L8003DC24: -/* 03E824 8003DC24 AC8B0078 */ sw $t3, 0x78($a0) -.L8003DC28: -/* 03E828 8003DC28 8C8C0078 */ lw $t4, 0x78($a0) -/* 03E82C 8003DC2C 24010003 */ li $at, 3 -/* 03E830 8003DC30 15810007 */ bne $t4, $at, .L8003DC50 -/* 03E834 8003DC34 8FBF0014 */ lw $ra, 0x14($sp) -/* 03E838 8003DC38 848D0006 */ lh $t5, 6($a0) -/* 03E83C 8003DC3C 00000000 */ nop -/* 03E840 8003DC40 35AE0600 */ ori $t6, $t5, 0x600 -/* 03E844 8003DC44 0C003FEE */ jal gParticlePtrList_addObject -/* 03E848 8003DC48 A48E0006 */ sh $t6, 6($a0) -/* 03E84C 8003DC4C 8FBF0014 */ lw $ra, 0x14($sp) -.L8003DC50: -/* 03E850 8003DC50 27BD0018 */ addiu $sp, $sp, 0x18 -/* 03E854 8003DC54 03E00008 */ jr $ra -/* 03E858 8003DC58 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003DC5C.s b/asm/non_matchings/unknown_032760/func_8003DC5C.s deleted file mode 100644 index 54ec6413..00000000 --- a/asm/non_matchings/unknown_032760/func_8003DC5C.s +++ /dev/null @@ -1,51 +0,0 @@ -glabel func_8003DC5C -/* 03E85C 8003DC5C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 03E860 8003DC60 AFBF0014 */ sw $ra, 0x14($sp) -/* 03E864 8003DC64 AFA5001C */ sw $a1, 0x1c($sp) -/* 03E868 8003DC68 8C8F004C */ lw $t7, 0x4c($a0) -/* 03E86C 8003DC6C 240E0002 */ li $t6, 2 -/* 03E870 8003DC70 A5EE0014 */ sh $t6, 0x14($t7) -/* 03E874 8003DC74 8C98004C */ lw $t8, 0x4c($a0) -/* 03E878 8003DC78 2419001E */ li $t9, 30 -/* 03E87C 8003DC7C A3000011 */ sb $zero, 0x11($t8) -/* 03E880 8003DC80 8C88004C */ lw $t0, 0x4c($a0) -/* 03E884 8003DC84 24090003 */ li $t1, 3 -/* 03E888 8003DC88 A1190010 */ sb $t9, 0x10($t0) -/* 03E88C 8003DC8C AC890078 */ sw $t1, 0x78($a0) -/* 03E890 8003DC90 AC80007C */ sw $zero, 0x7c($a0) -/* 03E894 8003DC94 0C0270B4 */ jal is_in_tracks_mode -/* 03E898 8003DC98 AFA40018 */ sw $a0, 0x18($sp) -/* 03E89C 8003DC9C 8FA40018 */ lw $a0, 0x18($sp) -/* 03E8A0 8003DCA0 1440000F */ bnez $v0, .L8003DCE0 -/* 03E8A4 8003DCA4 00000000 */ nop -/* 03E8A8 8003DCA8 0C003877 */ jal func_8000E1DC -/* 03E8AC 8003DCAC AFA40018 */ sw $a0, 0x18($sp) -/* 03E8B0 8003DCB0 8FA40018 */ lw $a0, 0x18($sp) -/* 03E8B4 8003DCB4 10400009 */ beqz $v0, .L8003DCDC -/* 03E8B8 8003DCB8 240A0003 */ li $t2, 3 -/* 03E8BC 8003DCBC 0C027B1C */ jal is_in_adventure_two -/* 03E8C0 8003DCC0 AFA40018 */ sw $a0, 0x18($sp) -/* 03E8C4 8003DCC4 8FA40018 */ lw $a0, 0x18($sp) -/* 03E8C8 8003DCC8 14400004 */ bnez $v0, .L8003DCDC -/* 03E8CC 8003DCCC 240A0003 */ li $t2, 3 -/* 03E8D0 8003DCD0 10000003 */ b .L8003DCE0 -/* 03E8D4 8003DCD4 AC800078 */ sw $zero, 0x78($a0) -/* 03E8D8 8003DCD8 240A0003 */ li $t2, 3 -.L8003DCDC: -/* 03E8DC 8003DCDC AC8A0078 */ sw $t2, 0x78($a0) -.L8003DCE0: -/* 03E8E0 8003DCE0 8C8B0078 */ lw $t3, 0x78($a0) -/* 03E8E4 8003DCE4 24010003 */ li $at, 3 -/* 03E8E8 8003DCE8 15610007 */ bne $t3, $at, .L8003DD08 -/* 03E8EC 8003DCEC 8FBF0014 */ lw $ra, 0x14($sp) -/* 03E8F0 8003DCF0 848C0006 */ lh $t4, 6($a0) -/* 03E8F4 8003DCF4 00000000 */ nop -/* 03E8F8 8003DCF8 358D0600 */ ori $t5, $t4, 0x600 -/* 03E8FC 8003DCFC 0C003FEE */ jal gParticlePtrList_addObject -/* 03E900 8003DD00 A48D0006 */ sh $t5, 6($a0) -/* 03E904 8003DD04 8FBF0014 */ lw $ra, 0x14($sp) -.L8003DD08: -/* 03E908 8003DD08 27BD0018 */ addiu $sp, $sp, 0x18 -/* 03E90C 8003DD0C 03E00008 */ jr $ra -/* 03E910 8003DD10 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003DD14.s b/asm/non_matchings/unknown_032760/func_8003DD14.s index 7c2876ca..a5200d01 100644 --- a/asm/non_matchings/unknown_032760/func_8003DD14.s +++ b/asm/non_matchings/unknown_032760/func_8003DD14.s @@ -64,7 +64,7 @@ glabel func_8003DD14 /* 03EA04 8003DE04 2484002B */ addiu $a0, $a0, 0x2b /* 03EA08 8003DE08 309900FF */ andi $t9, $a0, 0xff /* 03EA0C 8003DE0C 03202025 */ move $a0, $t9 -/* 03EA10 8003DE10 0C0006F0 */ jal func_80001BC0 +/* 03EA10 8003DE10 0C0006F0 */ jal play_sound /* 03EA14 8003DE14 AFA20018 */ sw $v0, 0x18($sp) /* 03EA18 8003DE18 8FA20018 */ lw $v0, 0x18($sp) /* 03EA1C 8003DE1C 8FA60020 */ lw $a2, 0x20($sp) diff --git a/asm/non_matchings/unknown_032760/func_8003DE74.s b/asm/non_matchings/unknown_032760/func_8003DE74.s deleted file mode 100644 index d3f4cba8..00000000 --- a/asm/non_matchings/unknown_032760/func_8003DE74.s +++ /dev/null @@ -1,41 +0,0 @@ -glabel func_8003DE74 -/* 03EA74 8003DE74 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 03EA78 8003DE78 AFBF0014 */ sw $ra, 0x14($sp) -/* 03EA7C 8003DE7C 8C8F004C */ lw $t7, 0x4c($a0) -/* 03EA80 8003DE80 240E0002 */ li $t6, 2 -/* 03EA84 8003DE84 A5EE0014 */ sh $t6, 0x14($t7) -/* 03EA88 8003DE88 8C98004C */ lw $t8, 0x4c($a0) -/* 03EA8C 8003DE8C 2419001E */ li $t9, 30 -/* 03EA90 8003DE90 A3000011 */ sb $zero, 0x11($t8) -/* 03EA94 8003DE94 8C88004C */ lw $t0, 0x4c($a0) -/* 03EA98 8003DE98 00000000 */ nop -/* 03EA9C 8003DE9C A1190010 */ sb $t9, 0x10($t0) -/* 03EAA0 8003DEA0 90A90008 */ lbu $t1, 8($a1) -/* 03EAA4 8003DEA4 00000000 */ nop -/* 03EAA8 8003DEA8 312A000F */ andi $t2, $t1, 0xf -/* 03EAAC 8003DEAC A0AA0008 */ sb $t2, 8($a1) -/* 03EAB0 8003DEB0 314B00FF */ andi $t3, $t2, 0xff -/* 03EAB4 8003DEB4 AC8B0078 */ sw $t3, 0x78($a0) -/* 03EAB8 8003DEB8 0C01BAA4 */ jal get_settings -/* 03EABC 8003DEBC AFA40020 */ sw $a0, 0x20($sp) -/* 03EAC0 8003DEC0 0C0270B4 */ jal is_in_tracks_mode -/* 03EAC4 8003DEC4 AFA2001C */ sw $v0, 0x1c($sp) -/* 03EAC8 8003DEC8 8FA40020 */ lw $a0, 0x20($sp) -/* 03EACC 8003DECC 14400008 */ bnez $v0, .L8003DEF0 -/* 03EAD0 8003DED0 240F0001 */ li $t7, 1 -/* 03EAD4 8003DED4 8FAC001C */ lw $t4, 0x1c($sp) -/* 03EAD8 8003DED8 8C8E0078 */ lw $t6, 0x78($a0) -/* 03EADC 8003DEDC 958D0008 */ lhu $t5, 8($t4) -/* 03EAE0 8003DEE0 01CFC004 */ sllv $t8, $t7, $t6 -/* 03EAE4 8003DEE4 01B8C824 */ and $t9, $t5, $t8 -/* 03EAE8 8003DEE8 13200004 */ beqz $t9, .L8003DEFC -/* 03EAEC 8003DEEC 8FBF0014 */ lw $ra, 0x14($sp) -.L8003DEF0: -/* 03EAF0 8003DEF0 0C003FEE */ jal gParticlePtrList_addObject -/* 03EAF4 8003DEF4 00000000 */ nop -/* 03EAF8 8003DEF8 8FBF0014 */ lw $ra, 0x14($sp) -.L8003DEFC: -/* 03EAFC 8003DEFC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 03EB00 8003DF00 03E00008 */ jr $ra -/* 03EB04 8003DF04 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003DF08.s b/asm/non_matchings/unknown_032760/func_8003DF08.s deleted file mode 100644 index 7f4bf75a..00000000 --- a/asm/non_matchings/unknown_032760/func_8003DF08.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_8003DF08 -/* 03EB08 8003DF08 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 03EB0C 8003DF0C AFBF0014 */ sw $ra, 0x14($sp) -/* 03EB10 8003DF10 AFA5001C */ sw $a1, 0x1c($sp) -/* 03EB14 8003DF14 8C83004C */ lw $v1, 0x4c($a0) -/* 03EB18 8003DF18 00803025 */ move $a2, $a0 -/* 03EB1C 8003DF1C 906E0013 */ lbu $t6, 0x13($v1) -/* 03EB20 8003DF20 00000000 */ nop -/* 03EB24 8003DF24 29C10032 */ slti $at, $t6, 0x32 -/* 03EB28 8003DF28 10200020 */ beqz $at, .L8003DFAC -/* 03EB2C 8003DF2C 8FAE001C */ lw $t6, 0x1c($sp) -/* 03EB30 8003DF30 8C620000 */ lw $v0, ($v1) -/* 03EB34 8003DF34 00000000 */ nop -/* 03EB38 8003DF38 1040001C */ beqz $v0, .L8003DFAC -/* 03EB3C 8003DF3C 8FAE001C */ lw $t6, 0x1c($sp) -/* 03EB40 8003DF40 8C4F0040 */ lw $t7, 0x40($v0) -/* 03EB44 8003DF44 24010001 */ li $at, 1 -/* 03EB48 8003DF48 81F80054 */ lb $t8, 0x54($t7) -/* 03EB4C 8003DF4C 00000000 */ nop -/* 03EB50 8003DF50 17010016 */ bne $t8, $at, .L8003DFAC -/* 03EB54 8003DF54 8FAE001C */ lw $t6, 0x1c($sp) -/* 03EB58 8003DF58 8C430064 */ lw $v1, 0x64($v0) -/* 03EB5C 8003DF5C 2401FFFF */ li $at, -1 -/* 03EB60 8003DF60 84790000 */ lh $t9, ($v1) -/* 03EB64 8003DF64 24040036 */ li $a0, 54 -/* 03EB68 8003DF68 13210010 */ beq $t9, $at, .L8003DFAC -/* 03EB6C 8003DF6C 8FAE001C */ lw $t6, 0x1c($sp) -/* 03EB70 8003DF70 0C0006F0 */ jal func_80001BC0 -/* 03EB74 8003DF74 AFA60018 */ sw $a2, 0x18($sp) -/* 03EB78 8003DF78 0C01BAA4 */ jal get_settings -/* 03EB7C 8003DF7C 00000000 */ nop -/* 03EB80 8003DF80 8FA40018 */ lw $a0, 0x18($sp) -/* 03EB84 8003DF84 94480008 */ lhu $t0, 8($v0) -/* 03EB88 8003DF88 8C890078 */ lw $t1, 0x78($a0) -/* 03EB8C 8003DF8C 240A0001 */ li $t2, 1 -/* 03EB90 8003DF90 012A5804 */ sllv $t3, $t2, $t1 -/* 03EB94 8003DF94 010B6025 */ or $t4, $t0, $t3 -/* 03EB98 8003DF98 0C003FEE */ jal gParticlePtrList_addObject -/* 03EB9C 8003DF9C A44C0008 */ sh $t4, 8($v0) -/* 03EBA0 8003DFA0 8FA60018 */ lw $a2, 0x18($sp) -/* 03EBA4 8003DFA4 00000000 */ nop -/* 03EBA8 8003DFA8 8FAE001C */ lw $t6, 0x1c($sp) -.L8003DFAC: -/* 03EBAC 8003DFAC 84CD0000 */ lh $t5, ($a2) -/* 03EBB0 8003DFB0 000E7A00 */ sll $t7, $t6, 8 -/* 03EBB4 8003DFB4 01AFC021 */ addu $t8, $t5, $t7 -/* 03EBB8 8003DFB8 A4D80000 */ sh $t8, ($a2) -/* 03EBBC 8003DFBC 8FBF0014 */ lw $ra, 0x14($sp) -/* 03EBC0 8003DFC0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 03EBC4 8003DFC4 03E00008 */ jr $ra -/* 03EBC8 8003DFC8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003E630.s b/asm/non_matchings/unknown_032760/func_8003E630.s deleted file mode 100644 index 41cf28a5..00000000 --- a/asm/non_matchings/unknown_032760/func_8003E630.s +++ /dev/null @@ -1,37 +0,0 @@ -.late_rodata -glabel jpt_800E61C0 -.word L8003E66C, L8003E66C, L8003E67C, L8003E67C, L8003E684, L8003E684, L8003E684, L8003E684, L8003E684, L8003E684, L8003E67C, L8003E67C - -.text -glabel func_8003E630 -/* 03F230 8003E630 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 03F234 8003E634 AFBF0014 */ sw $ra, 0x14($sp) -/* 03F238 8003E638 8C820064 */ lw $v0, 0x64($a0) -/* 03F23C 8003E63C 00000000 */ nop -/* 03F240 8003E640 904E0018 */ lbu $t6, 0x18($v0) -/* 03F244 8003E644 00000000 */ nop -/* 03F248 8003E648 2DC1000C */ sltiu $at, $t6, 0xc -/* 03F24C 8003E64C 1020000D */ beqz $at, .L8003E684 -/* 03F250 8003E650 000E7080 */ sll $t6, $t6, 2 -/* 03F254 8003E654 3C01800E */ lui $at, %hi(jpt_800E61C0) # $at, 0x800e -/* 03F258 8003E658 002E0821 */ addu $at, $at, $t6 -/* 03F25C 8003E65C 8C2E61C0 */ lw $t6, %lo(jpt_800E61C0)($at) -/* 03F260 8003E660 00000000 */ nop -/* 03F264 8003E664 01C00008 */ jr $t6 -/* 03F268 8003E668 00000000 */ nop -glabel L8003E66C -/* 03F26C 8003E66C 0C00F9A5 */ jal func_8003E694 -/* 03F270 8003E670 00000000 */ nop -/* 03F274 8003E674 10000004 */ b .L8003E688 -/* 03F278 8003E678 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8003E67C -/* 03F27C 8003E67C 0C00FCBA */ jal func_8003F2E8 -/* 03F280 8003E680 00000000 */ nop -.L8003E684: -glabel L8003E684 -/* 03F284 8003E684 8FBF0014 */ lw $ra, 0x14($sp) -.L8003E688: -/* 03F288 8003E688 27BD0018 */ addiu $sp, $sp, 0x18 -/* 03F28C 8003E68C 03E00008 */ jr $ra -/* 03F290 8003E690 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8004001C.s b/asm/non_matchings/unknown_032760/func_8004001C.s deleted file mode 100644 index 007d1d7b..00000000 --- a/asm/non_matchings/unknown_032760/func_8004001C.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel func_8004001C -/* 040C1C 8004001C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 040C20 80040020 AFBF001C */ sw $ra, 0x1c($sp) -/* 040C24 80040024 AFA40020 */ sw $a0, 0x20($sp) -/* 040C28 80040028 8C820064 */ lw $v0, 0x64($a0) -/* 040C2C 8004002C 90AF0008 */ lbu $t7, 8($a1) -/* 040C30 80040030 00000000 */ nop -/* 040C34 80040034 A44F0002 */ sh $t7, 2($v0) -/* 040C38 80040038 90B80009 */ lbu $t8, 9($a1) -/* 040C3C 8004003C 90470003 */ lbu $a3, 3($v0) -/* 040C40 80040040 A0580004 */ sb $t8, 4($v0) -/* 040C44 80040044 90B9000A */ lbu $t9, 0xa($a1) -/* 040C48 80040048 330B00FF */ andi $t3, $t8, 0xff -/* 040C4C 8004004C A0590005 */ sb $t9, 5($v0) -/* 040C50 80040050 84AA0006 */ lh $t2, 6($a1) -/* 040C54 80040054 84A90004 */ lh $t1, 4($a1) -/* 040C58 80040058 448A4000 */ mtc1 $t2, $f8 -/* 040C5C 8004005C 84A80002 */ lh $t0, 2($a1) -/* 040C60 80040060 46804220 */ cvt.s.w $f8, $f8 -/* 040C64 80040064 AFAB0010 */ sw $t3, 0x10($sp) -/* 040C68 80040068 904C0005 */ lbu $t4, 5($v0) -/* 040C6C 8004006C 44893000 */ mtc1 $t1, $f6 -/* 040C70 80040070 44882000 */ mtc1 $t0, $f4 -/* 040C74 80040074 44064000 */ mfc1 $a2, $f8 -/* 040C78 80040078 AFAC0014 */ sw $t4, 0x14($sp) -/* 040C7C 8004007C 468033A0 */ cvt.s.w $f14, $f6 -/* 040C80 80040080 0C00265A */ jal func_80009968 -/* 040C84 80040084 46802320 */ cvt.s.w $f12, $f4 -/* 040C88 80040088 8FA40020 */ lw $a0, 0x20($sp) -/* 040C8C 8004008C 0C003FEE */ jal gParticlePtrList_addObject -/* 040C90 80040090 00000000 */ nop -/* 040C94 80040094 8FBF001C */ lw $ra, 0x1c($sp) -/* 040C98 80040098 27BD0020 */ addiu $sp, $sp, 0x20 -/* 040C9C 8004009C 03E00008 */ jr $ra -/* 040CA0 800400A0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_800400A4.s b/asm/non_matchings/unknown_032760/func_800400A4.s deleted file mode 100644 index 565a7ba8..00000000 --- a/asm/non_matchings/unknown_032760/func_800400A4.s +++ /dev/null @@ -1,46 +0,0 @@ -glabel func_800400A4 -/* 040CA4 800400A4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 040CA8 800400A8 AFBF0014 */ sw $ra, 0x14($sp) -/* 040CAC 800400AC AFA60028 */ sw $a2, 0x28($sp) -/* 040CB0 800400B0 8C830064 */ lw $v1, 0x64($a0) -/* 040CB4 800400B4 AFA50024 */ sw $a1, 0x24($sp) -/* 040CB8 800400B8 0C00B1F1 */ jal func_8002C7C4 -/* 040CBC 800400BC AFA3001C */ sw $v1, 0x1c($sp) -/* 040CC0 800400C0 8FA70024 */ lw $a3, 0x24($sp) -/* 040CC4 800400C4 8FA3001C */ lw $v1, 0x1c($sp) -/* 040CC8 800400C8 84EE0008 */ lh $t6, 8($a3) -/* 040CCC 800400CC 00000000 */ nop -/* 040CD0 800400D0 A46E0000 */ sh $t6, ($v1) -/* 040CD4 800400D4 84640000 */ lh $a0, ($v1) -/* 040CD8 800400D8 00000000 */ nop -/* 040CDC 800400DC 04810004 */ bgez $a0, .L800400F0 -/* 040CE0 800400E0 00000000 */ nop -/* 040CE4 800400E4 A4600000 */ sh $zero, ($v1) -/* 040CE8 800400E8 84640000 */ lh $a0, ($v1) -/* 040CEC 800400EC 00000000 */ nop -.L800400F0: -/* 040CF0 800400F0 84450018 */ lh $a1, 0x18($v0) -/* 040CF4 800400F4 00000000 */ nop -/* 040CF8 800400F8 0085082A */ slt $at, $a0, $a1 -/* 040CFC 800400FC 14200002 */ bnez $at, .L80040108 -/* 040D00 80040100 24AFFFFF */ addiu $t7, $a1, -1 -/* 040D04 80040104 A46F0000 */ sh $t7, ($v1) -.L80040108: -/* 040D08 80040108 80F8000A */ lb $t8, 0xa($a3) -/* 040D0C 8004010C 00000000 */ nop -/* 040D10 80040110 A4780004 */ sh $t8, 4($v1) -/* 040D14 80040114 80F9000B */ lb $t9, 0xb($a3) -/* 040D18 80040118 00000000 */ nop -/* 040D1C 8004011C A4790006 */ sh $t9, 6($v1) -/* 040D20 80040120 8FA80028 */ lw $t0, 0x28($sp) -/* 040D24 80040124 00000000 */ nop -/* 040D28 80040128 15000004 */ bnez $t0, .L8004013C -/* 040D2C 8004012C 8FBF0014 */ lw $ra, 0x14($sp) -/* 040D30 80040130 A4600008 */ sh $zero, 8($v1) -/* 040D34 80040134 A460000A */ sh $zero, 0xa($v1) -/* 040D38 80040138 8FBF0014 */ lw $ra, 0x14($sp) -.L8004013C: -/* 040D3C 8004013C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 040D40 80040140 03E00008 */ jr $ra -/* 040D44 80040144 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8004049C.s b/asm/non_matchings/unknown_032760/func_8004049C.s deleted file mode 100644 index fe381cf6..00000000 --- a/asm/non_matchings/unknown_032760/func_8004049C.s +++ /dev/null @@ -1,56 +0,0 @@ -glabel func_8004049C -/* 04109C 8004049C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0410A0 800404A0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0410A4 800404A4 AFA5001C */ sw $a1, 0x1c($sp) -/* 0410A8 800404A8 AFA60020 */ sw $a2, 0x20($sp) -/* 0410AC 800404AC 00803825 */ move $a3, $a0 -/* 0410B0 800404B0 8CE5000C */ lw $a1, 0xc($a3) -/* 0410B4 800404B4 8CE60014 */ lw $a2, 0x14($a3) -/* 0410B8 800404B8 8484002E */ lh $a0, 0x2e($a0) -/* 0410BC 800404BC 0C02F995 */ jal func_800BE654 -/* 0410C0 800404C0 AFA70018 */ sw $a3, 0x18($sp) -/* 0410C4 800404C4 8FA70018 */ lw $a3, 0x18($sp) -/* 0410C8 800404C8 8FA3001C */ lw $v1, 0x1c($sp) -/* 0410CC 800404CC 8CEF004C */ lw $t7, 0x4c($a3) -/* 0410D0 800404D0 240E0001 */ li $t6, 1 -/* 0410D4 800404D4 ACE20064 */ sw $v0, 0x64($a3) -/* 0410D8 800404D8 A5EE0014 */ sh $t6, 0x14($t7) -/* 0410DC 800404DC 8CF9004C */ lw $t9, 0x4c($a3) -/* 0410E0 800404E0 24180002 */ li $t8, 2 -/* 0410E4 800404E4 A3380011 */ sb $t8, 0x11($t9) -/* 0410E8 800404E8 8CE9004C */ lw $t1, 0x4c($a3) -/* 0410EC 800404EC 2408001E */ li $t0, 30 -/* 0410F0 800404F0 A1280010 */ sb $t0, 0x10($t1) -/* 0410F4 800404F4 906B0009 */ lbu $t3, 9($v1) -/* 0410F8 800404F8 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 0410FC 800404FC 448B2000 */ mtc1 $t3, $f4 -/* 041100 80040500 44811000 */ mtc1 $at, $f2 -/* 041104 80040504 46802020 */ cvt.s.w $f0, $f4 -/* 041108 80040508 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 04110C 8004050C 44813000 */ mtc1 $at, $f6 -/* 041110 80040510 4602003C */ c.lt.s $f0, $f2 -/* 041114 80040514 00000000 */ nop -/* 041118 80040518 45000003 */ bc1f .L80040528 -/* 04111C 8004051C 00000000 */ nop -/* 041120 80040520 46001006 */ mov.s $f0, $f2 -/* 041124 80040524 00000000 */ nop -.L80040528: -/* 041128 80040528 46060003 */ div.s $f0, $f0, $f6 -/* 04112C 8004052C 8CEC0040 */ lw $t4, 0x40($a3) -/* 041130 80040530 00000000 */ nop -/* 041134 80040534 C588000C */ lwc1 $f8, 0xc($t4) -/* 041138 80040538 00000000 */ nop -/* 04113C 8004053C 46004282 */ mul.s $f10, $f8, $f0 -/* 041140 80040540 E4EA0008 */ swc1 $f10, 8($a3) -/* 041144 80040544 906D0008 */ lbu $t5, 8($v1) -/* 041148 80040548 00000000 */ nop -/* 04114C 8004054C A0ED003A */ sb $t5, 0x3a($a3) -/* 041150 80040550 906F000A */ lbu $t7, 0xa($v1) -/* 041154 80040554 00000000 */ nop -/* 041158 80040558 000FC280 */ sll $t8, $t7, 0xa -/* 04115C 8004055C A4F80000 */ sh $t8, ($a3) -/* 041160 80040560 8FBF0014 */ lw $ra, 0x14($sp) -/* 041164 80040564 27BD0018 */ addiu $sp, $sp, 0x18 -/* 041168 80040568 03E00008 */ jr $ra -/* 04116C 8004056C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_80042178.s b/asm/non_matchings/unknown_032760/func_80042178.s deleted file mode 100644 index c283bebe..00000000 --- a/asm/non_matchings/unknown_032760/func_80042178.s +++ /dev/null @@ -1,43 +0,0 @@ -glabel func_80042178 -/* 042D78 80042178 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 042D7C 8004217C AFBF001C */ sw $ra, 0x1c($sp) -/* 042D80 80042180 AFA5004C */ sw $a1, 0x4c($sp) -/* 042D84 80042184 8C83003C */ lw $v1, 0x3c($a0) -/* 042D88 80042188 8C860014 */ lw $a2, 0x14($a0) -/* 042D8C 8004218C 946E0008 */ lhu $t6, 8($v1) -/* 042D90 80042190 C48C000C */ lwc1 $f12, 0xc($a0) -/* 042D94 80042194 448E2000 */ mtc1 $t6, $f4 -/* 042D98 80042198 44807000 */ mtc1 $zero, $f14 -/* 042D9C 8004219C 05C10005 */ bgez $t6, .L800421B4 -/* 042DA0 800421A0 46802120 */ cvt.s.w $f4, $f4 -/* 042DA4 800421A4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 042DA8 800421A8 44813000 */ mtc1 $at, $f6 -/* 042DAC 800421AC 00000000 */ nop -/* 042DB0 800421B0 46062100 */ add.s $f4, $f4, $f6 -.L800421B4: -/* 042DB4 800421B4 44072000 */ mfc1 $a3, $f4 -/* 042DB8 800421B8 240F0001 */ li $t7, 1 -/* 042DBC 800421BC 27B80020 */ addiu $t8, $sp, 0x20 -/* 042DC0 800421C0 AFB80014 */ sw $t8, 0x14($sp) -/* 042DC4 800421C4 AFAF0010 */ sw $t7, 0x10($sp) -/* 042DC8 800421C8 AFA30040 */ sw $v1, 0x40($sp) -/* 042DCC 800421CC 0C005B7A */ jal func_80016DE8 -/* 042DD0 800421D0 AFA40048 */ sw $a0, 0x48($sp) -/* 042DD4 800421D4 8FA30040 */ lw $v1, 0x40($sp) -/* 042DD8 800421D8 8FA40048 */ lw $a0, 0x48($sp) -/* 042DDC 800421DC 18400004 */ blez $v0, .L800421F0 -/* 042DE0 800421E0 00000000 */ nop -/* 042DE4 800421E4 9479000A */ lhu $t9, 0xa($v1) -/* 042DE8 800421E8 10000002 */ b .L800421F4 -/* 042DEC 800421EC AC990074 */ sw $t9, 0x74($a0) -.L800421F0: -/* 042DF0 800421F0 AC800074 */ sw $zero, 0x74($a0) -.L800421F4: -/* 042DF4 800421F4 8FA5004C */ lw $a1, 0x4c($sp) -/* 042DF8 800421F8 0C02BF0F */ jal func_800AFC3C -/* 042DFC 800421FC 00000000 */ nop -/* 042E00 80042200 8FBF001C */ lw $ra, 0x1c($sp) -/* 042E04 80042204 27BD0048 */ addiu $sp, $sp, 0x48 -/* 042E08 80042208 03E00008 */ jr $ra -/* 042E0C 8004220C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_80042998.s b/asm/non_matchings/unknown_032760/func_80042998.s deleted file mode 100644 index 8bd1c656..00000000 --- a/asm/non_matchings/unknown_032760/func_80042998.s +++ /dev/null @@ -1,37 +0,0 @@ -glabel func_80042998 -/* 043598 80042998 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 04359C 8004299C AFBF001C */ sw $ra, 0x1c($sp) -/* 0435A0 800429A0 AFA50024 */ sw $a1, 0x24($sp) -/* 0435A4 800429A4 AFA40020 */ sw $a0, 0x20($sp) -/* 0435A8 800429A8 0C007D18 */ jal func_8001F460 -/* 0435AC 800429AC 00803025 */ move $a2, $a0 -/* 0435B0 800429B0 0C002FD1 */ jal func_8000BF44 -/* 0435B4 800429B4 2404FFFF */ li $a0, -1 -/* 0435B8 800429B8 10400015 */ beqz $v0, .L80042A10 -/* 0435BC 800429BC 8FBF001C */ lw $ra, 0x1c($sp) -/* 0435C0 800429C0 8C430064 */ lw $v1, 0x64($v0) -/* 0435C4 800429C4 AC400078 */ sw $zero, 0x78($v0) -/* 0435C8 800429C8 10600010 */ beqz $v1, .L80042A0C -/* 0435CC 800429CC 24190002 */ li $t9, 2 -/* 0435D0 800429D0 8FAF0024 */ lw $t7, 0x24($sp) -/* 0435D4 800429D4 906E0072 */ lbu $t6, 0x72($v1) -/* 0435D8 800429D8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0435DC 800429DC 44812000 */ mtc1 $at, $f4 -/* 0435E0 800429E0 01CFC021 */ addu $t8, $t6, $t7 -/* 0435E4 800429E4 A0780072 */ sb $t8, 0x72($v1) -/* 0435E8 800429E8 A0790070 */ sb $t9, 0x70($v1) -/* 0435EC 800429EC E4640074 */ swc1 $f4, 0x74($v1) -/* 0435F0 800429F0 8FA40020 */ lw $a0, 0x20($sp) -/* 0435F4 800429F4 24080001 */ li $t0, 1 -/* 0435F8 800429F8 AFA80010 */ sw $t0, 0x10($sp) -/* 0435FC 800429FC 2405FFFF */ li $a1, -1 -/* 043600 80042A00 24060002 */ li $a2, 2 -/* 043604 80042A04 0C002DD4 */ jal func_8000B750 -/* 043608 80042A08 24070001 */ li $a3, 1 -.L80042A0C: -/* 04360C 80042A0C 8FBF001C */ lw $ra, 0x1c($sp) -.L80042A10: -/* 043610 80042A10 27BD0020 */ addiu $sp, $sp, 0x20 -/* 043614 80042A14 03E00008 */ jr $ra -/* 043618 80042A18 00000000 */ nop - diff --git a/include/structs.h b/include/structs.h index c051694a..33135d44 100644 --- a/include/structs.h +++ b/include/structs.h @@ -346,10 +346,35 @@ typedef struct ObjectModel { /* 0x48 */ s16 numberOfAnimations; } ObjectModel; +typedef struct LevelModelSegment { +/* 0x00 */ Vertex *vertices; +/* 0x04 */ Triangle *triangles; + u8 pad8[4]; +/* 0x0C */ TriangleBatchInfo *batches; + u8 pad10[0x0C]; +/* 0x1C */ s16 numberOfVertices; +/* 0x1E */ s16 numberOfTriangles; +/* 0x20 */ s16 numberOfBatches; + u8 pad22[0x09]; +/* 0x2B */ s8 unk2B; + u8 pad2C[0x14]; +/* 0x40 */ u8 unk40; + u8 pad41[0x3]; +} LevelModelSegment; + +typedef struct LevelModelSegmentBoundingBox { + s16 unk00; + s16 unk02; + s16 unk04; + s16 unk06; + s16 unk08; + s16 unk0A; +} LevelModelSegmentBoundingBox; + typedef struct LevelModel { /* 0x00 */ TextureInfo *textures; -/* 0x04 */ s32 *segments; -/* 0x08 */ s32 *segmentsBoundingBoxes; +/* 0x04 */ LevelModelSegment *segments; +/* 0x08 */ LevelModelSegmentBoundingBox *segmentsBoundingBoxes; /* 0x0C */ s32 unkC; /* 0x10 */ s32 *segmentsBitfields; /* 0x14 */ s32 *segmentsBspTree; @@ -381,15 +406,29 @@ typedef struct Object_40 { u8 unk71; } Object_40; -typedef struct Player_4C { - u8 pad0[0x10]; +typedef struct Object_4C { + void *unk0; + u8 pad4[0xC]; u8 unk10; u8 unk11; u8 unk12; u8 unk13; u16 unk14; -} Player_4C; +} Object_4C; +typedef struct Object_5C { + u8 pad0[0x100]; + void *unk100; +} Object_5C; + +typedef struct Object_60 { + s32 unk0; + void *unk4; // Object* pointer +} Object_60; + +// This REALLY needs to be refactored at some point. +// This structure differs based on the type of object being loaded. +// See functions in unknown_0348C0.c for how these get loaded. typedef struct Object_64 { union { f32 unk0; @@ -413,7 +452,9 @@ typedef struct Object_64 { s8 unkF; u8 unk10; u8 unk11; - u8 pad12[0x0E]; + u8 pad12[6]; + u8 unk18; + u8 pad19[7]; u32 unk20; u32 unk24; s16 unk28; @@ -461,6 +502,7 @@ typedef struct Object_68{ u8 pad00[0x20]; s8 unk20; } Object_68; + /* Size: 0x0630 bytes */ typedef struct Object { /* 0x0000 */ s16 y_rotation; @@ -500,13 +542,13 @@ typedef struct Object { /* 0x0044 */ void *unk44; /* 0x0048 */ s16 unk48; /* 0x004A */ s16 unk4A; - /* 0x004C */ Player_4C *unk4C; //player + 0x318 + /* 0x004C */ Object_4C *unk4C; //player + 0x318 /* 0x0050 */ void *unk50; //player + 0x2F4 /* 0x0054 */ void *unk54; //player + 0x2C0 /* 0x0058 */ void *unk58; //player + 0x304 - /* 0x005C */ u32 unk5C; + /* 0x005C */ Object_5C *unk5C; - /* 0x0060 */ void *unk60; //player + 0x340 + /* 0x0060 */ Object_60 *unk60; //player + 0x340 /* 0x0064 */ Object_64 *unk64; //player + 0x98 /* 0x0068 */ Object_68 **unk68; //player + 0x80 /* 0x006C */ void *unk6C; //player + 0x370 diff --git a/src/audio.c b/src/audio.c index 31a2ab2c..e8a1e811 100644 --- a/src/audio.c +++ b/src/audio.c @@ -717,7 +717,7 @@ void sfxSetPan(ALPan pan){ return; } -void func_80001BC0(u8 arg0){ +void play_sound(u8 arg0){ D_800DC644 = 1; func_800022BC( D_80115D05 = arg0, gSndFxPlayer); } diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index 29ca3280..15a8f13e 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -52,7 +52,7 @@ f32 D_800DC8AC[27] = { -130.0f, 60.0f, -68.0f }; -unk800DC918* D_800DC918 = NULL; +LevelModel* D_800DC918 = NULL; LevelHeader *D_800DC91C = NULL; s32 D_800DC920 = -1; @@ -252,10 +252,10 @@ void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u if(arg2 < 2){ D_8011D384 = 0; - for(i = 0; i < D_800DC918->count; i++){ - if(D_800DC918->unk04[i].unk2B != 0){ + for(i = 0; i < D_800DC918->numberOfSegments; i++){ + if(D_800DC918->segments[i].unk2B != 0){ D_8011D384++; - D_800DC918->unk04[i].unk2B = 1; + D_800DC918->segments[i].unk2B = 1; } } } @@ -329,26 +329,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80026E54.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027184.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027568.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800278E8.s") -#if 1 GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027E24.s") -#else -typedef struct{ - u32 unk00; - u8 pad04[0x10]; - u32 unk14; - -}unk80027E24_sp58; - -void func_80027E24(u32 arg0){ - unk80027E24_sp58 sp58; - unk800DC918_04 *s6; - unk800DC918_04_0C * s0; - unk800DC918_04_0C * s5; - unk800DC918_00_00 * tmp_a0; - s32 i;//sp_6c - s32 j; -} -#endif GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027FC4.s") @@ -421,9 +402,9 @@ func_80029F18(){ s32 func_8002A05C(s32 arg0, s32 arg1, s32* arg2){ s32 i; s32 cnt = 0; - unk800DC918_08 * a0; - for(i = 0; i < D_800DC918->count; i++){ - a0 = D_800DC918->unk08 + i; + LevelModelSegmentBoundingBox * a0; + for(i = 0; i < D_800DC918->numberOfSegments; i++){ + a0 = D_800DC918->segmentsBoundingBoxes + i; if(arg0 < a0->unk06 + 4 && a0->unk00 - 4 < arg0 && arg1 < a0->unk0A + 4 && a0->unk04 - 4 < arg1 ){ @@ -438,11 +419,11 @@ s32 func_8002A05C(s32 arg0, s32 arg1, s32* arg2){ #if 1 GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A134.s") #else -s32 func_8002A134(s32* arg0, unk800DC918_08 arg1){ +s32 func_8002A134(s32* arg0, LevelModelSegmentBoundingBox arg1){ s32 i; - unk800DC918_08 * a0; + LevelModelSegmentBoundingBox * a0; s32 cnt = 0; - unk800DC918_08 bnd; + LevelModelSegmentBoundingBox bnd; //BAD variable assignments; bnd.unk00 = arg1.unk00 - 4; @@ -453,8 +434,8 @@ s32 func_8002A134(s32* arg0, unk800DC918_08 arg1){ bnd.unk0A = arg1.unk0A + 4; - for(i = 0; i < D_800DC918->count; i++){ - a0 = D_800DC918->unk08 + i; + for(i = 0; i < D_800DC918->numberOfSegments; i++){ + a0 = D_800DC918->segmentsBoundingBoxes + i; if( a0->unk06 >= bnd.unk00 && bnd.unk06 >= a0->unk00 && a0->unk0A >= bnd.unk04 && bnd.unk0A >= a0->unk04 && a0->unk08 >= bnd.unk02 && bnd.unk08 >= a0->unk02 @@ -468,20 +449,18 @@ s32 func_8002A134(s32* arg0, unk800DC918_08 arg1){ } #endif -unk800DC918_04 *func_8002A2C8(s32 arg0){ - if(arg0 < 0 || D_800DC918->count < arg0) +LevelModelSegment *func_8002A2C8(s32 arg0){ + if(arg0 < 0 || D_800DC918->numberOfSegments < arg0) return NULL; - return D_800DC918->unk04 + arg0; + return D_800DC918->segments + arg0; } - - -unk800DC918_08 *func_8002A2DC(s32 arg0){ - if(arg0 < 0 || D_800DC918->count < arg0) +LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0){ + if(arg0 < 0 || D_800DC918->numberOfSegments < arg0) return NULL; - return D_800DC918->unk08 + arg0; + return D_800DC918->segmentsBoundingBoxes + arg0; } GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A31C.s") @@ -506,7 +485,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002BAB0.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002C0C4.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002C71C.s") -unk800DC918* func_8002C7C4(void) { +LevelModel* func_8002C7C4(void) { return D_800DC918; } diff --git a/src/unknown_0255E0.h b/src/unknown_0255E0.h index 21d9402c..54887e73 100644 --- a/src/unknown_0255E0.h +++ b/src/unknown_0255E0.h @@ -22,55 +22,7 @@ extern f32 D_800DC884[10]; extern f32 D_800DC8AC[27]; -typedef struct{ - u8 pad00[0x12]; - u16 unk12; - u16 unk14; -} unk800DC918_00_00; - -typedef struct{ - unk800DC918_00_00 *unk00; - u8 pad00[0x04]; -} unk800DC918_00; - -typedef struct{ - u8 unk00; - u8 pad01[0x05]; - u8 unk06; - u8 unk07; - u32 unk08; -} unk800DC918_04_0C; - -typedef struct{ - u8 pad00[0x0C]; - unk800DC918_04_0C* unk0C; - u8 pad0C[0x10]; - s16 unk20; - u8 pad22[0x09]; - s8 unk2B; - u8 pad2C[0x14]; - u8 unk40; - u8 pad41[0x3]; -} unk800DC918_04; - -typedef struct{ - s16 unk00; //sx - s16 unk02; //sy - s16 unk04; //sz - s16 unk06; //lx - s16 unk08; //ly - s16 unk0A; //lz -} unk800DC918_08; //bounding box - -typedef struct{ - unk800DC918_00 *unk00; - unk800DC918_04 *unk04; - unk800DC918_08 *unk08; - u8 pad0C[0x0E]; - s16 count; -} unk800DC918; - -extern unk800DC918* D_800DC918; +extern LevelModel* D_800DC918; extern LevelHeader *D_800DC91C; extern s32 D_800DC920; diff --git a/src/unknown_032760.c b/src/unknown_032760.c index 2ac610f0..5f560581 100644 --- a/src/unknown_032760.c +++ b/src/unknown_032760.c @@ -20,10 +20,10 @@ s32 D_800DC968 = 0; // Currently unknown, might be a different type. /************ .bss ************/ -s32 D_8011D4C0; -s32 D_8011D4C4; -s32 D_8011D4C8; -s32 D_8011D4CC; +f32 D_8011D4C0; +f32 D_8011D4C4; +f32 D_8011D4C8; +f32 D_8011D4CC; /*******************************/ @@ -42,7 +42,14 @@ void func_80031B60(void) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80031BB8.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80031CAC.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80031F88.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80032398.s") + +void func_80032398(s32 arg0) { + s32 i; + for (i = 0; i < D_800DC95C; i++) { + func_80032424(D_800DC950[i], arg0); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80032424.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80032BAC.s") @@ -53,4 +60,29 @@ s32 func_80032C6C(void) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80032C7C.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800337E4.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80033A14.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80033C08.s") + +typedef struct unk80033C08 { + u8 pad0[0x7C]; + f32 unk7C; + f32 unk80; + f32 unk84; +} unk80033C08; + +f32 sqrtf(f32); + +f32 func_80033C08(unk80033C08 *arg0) { + f32 temp_f2; + f32 phi_f12; + + phi_f12 = D_8011D4C0; + if (phi_f12 > 0.0f) { + temp_f2 = 1.0f / sqrtf(phi_f12); + phi_f12 = (D_8011D4C4 * temp_f2 * arg0->unk7C) + (D_8011D4C8 * temp_f2 * arg0->unk80) + (D_8011D4CC * temp_f2 * arg0->unk84); + if (phi_f12 < 0.0f) { + phi_f12 = 0.0f; + } + } else { + phi_f12 = 1.0f; + } + return phi_f12; +} diff --git a/src/unknown_0348C0.c b/src/unknown_0348C0.c index 49259601..fdb73ab8 100644 --- a/src/unknown_0348C0.c +++ b/src/unknown_0348C0.c @@ -3,9 +3,13 @@ #include "unknown_0348C0.h" +#include "PR/os_cont.h" #include "types.h" #include "macros.h" #include "structs.h" +#include "video.h" +#include "camera.h" +#include "menu.h" // For cheats /************ .data ************/ @@ -115,9 +119,20 @@ s16 D_8011D4E2; /******************************/ +/* Size: 8 bytes. */ +typedef struct LevelObjectEntryCommon { + u16 id; // Upper 9 bits = Object ID to load, Lower 7 bits = Total entry length. + s16 x, y, z; // Position in level +} LevelObjectEntryCommon; + +extern u32 osTvType; + Settings* get_settings(); Object_64 *func_800BE654(s16, f32, f32); void func_80000FDC(s32, s32, f32); +void func_80009558(s32, f32, f32, f32, s32, s32*); +void func_80009968(f32, f32, f32, u8, u8, s32); +s32 func_8001F460(Object*, s32, Object*); GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80033CC0.s") @@ -164,12 +179,8 @@ void func_80034844(Object *arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80034860.s") -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80034AF0.s") -#else -// regalloc issues void func_80034AF0(Object *arg0, u8 *arg1) { - f32 phi_f0 = (s32)arg1[9]; + f32 phi_f0 = (s32)(arg1[9] & 0xFF); if (phi_f0 < 10.0f) { phi_f0 = 10.0f; } @@ -177,7 +188,6 @@ void func_80034AF0(Object *arg0, u8 *arg1) { arg0->scale = arg0->descriptor_ptr->unkC * phi_f0; arg0->unk78 = arg1[8]; } -#endif typedef struct unk80034B4C { u8 pad0[0x18]; @@ -217,10 +227,114 @@ void func_80035640(s32 arg0, s32 arg1) { } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003564C.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003572C.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800357D4.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003588C.s") +typedef struct unk8003564C { + s8 unk0; + s8 unk1; + s16 unk2; + s16 unk4; + s16 unk6; +} unk8003564C; + +typedef struct Object_64_8003564C { + u8 pad0[4]; + Object *unk4; +} Object_64_8003564C; + +void func_8003564C(Object *arg0, s32 arg1) { + unk8003564C sp20; + Object *someObj; + + if (arg0->unk78 == 0) { + sp20.unk2 = arg0->x_position; + sp20.unk4 = arg0->y_position; + sp20.unk6 = arg0->z_position; + sp20.unk1 = 8; + sp20.unk0 = 0x34; + someObj = func_8000EA54(&sp20, 1, arg0); + if (someObj != NULL) { + Object_64_8003564C *someObj64 = someObj->unk64; + someObj64->unk4 = arg0; + arg0->unk78 = someObj; + someObj->unk3C = 0; + } + } +} + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry8003572C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8003572C; + +void func_8003572C(Object *arg0, LevelObjectEntry8003572C *arg1) { + f32 phi_f0 = arg1->unk9 & 0xFF; + if (phi_f0 < 10) { + phi_f0 = 10; + } + phi_f0 /= 64; + arg0->scale = arg0->descriptor_ptr->unkC * phi_f0; + arg0->y_rotation = arg1->unkA << 6 << 4; + if (arg0->unk3A >= arg0->descriptor_ptr->unk55) { + arg0->unk3A = 0; + } + arg0->unk4C->unk14 = 1; + arg0->unk4C->unk11 = 2; + arg0->unk4C->unk10 = 0x14; + arg0->unk4C->unk12 = 0; +} + +void func_800357D4(Object *obj, s32 arg1) { + Object *someObj; + Object_4C *temp_v1; + + someObj = get_object_struct(0); + if (someObj != NULL) { + temp_v1 = obj->unk4C; + if (temp_v1->unk13 < 0xC8) { + if (someObj == temp_v1->unk0) { + if ((get_button_inputs_from_player(0) & Z_TRIG) || someObj == obj->unk5C->unk100) { + func_8006F29C(); + } + } + } + } + obj->unk4C->unk13 = 0xFF; +} + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry8003588C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8003588C; + +void func_8003588C(Object *arg0, LevelObjectEntry8003588C *arg1) { + Object_40 *obj40; + f32 phi_f0; + + phi_f0 = arg1->unk9 & 0xFF; + if (phi_f0 < 10.0f) { + phi_f0 = 10.0f; + } + obj40 = arg0->descriptor_ptr; + phi_f0 /= 64; + arg0->scale = obj40->unkC * phi_f0; + arg0->y_rotation = arg1->unkA << 6 << 4; + if (arg0->unk3A >= obj40->unk55) { + arg0->unk3A = 0; + } + arg0->unk4C->unk14 = 2; + arg0->unk4C->unk11 = 0; + arg0->unk4C->unk10 = 0x14; + arg0->unk4C->unk12 = 0; + if (get_filtered_cheats() & CHEAT_TURN_OFF_ZIPPERS) { + gParticlePtrList_addObject(arg0); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003596C.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80035AE8.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80035C50.s") @@ -238,7 +352,37 @@ void func_80035E20(unk80035E20 *arg0, s32 arg1) { arg0->unk7C = arg0->unk40; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80035E34.s") +typedef struct Object_64_80035E34 { + u8 pad0[0x1D6]; + s8 unk1D6; +} Object_64_80035E34; + +void func_80035E34(Object *obj, s32 arg1) { + Object *someObj; + Object *someOtherObj; + Object_64_80035E34 *someOtherObj64; + Object_60 *obj60; + + obj->unk3B = 0; + obj->unk18 = 0x28; + if (func_8001139C() == 0) { + obj->unk78 += arg1; + } + set_ghost_position_and_rotation(obj); + func_800AFC3C(obj, arg1); + someOtherObj = get_object_struct(0); + someOtherObj64 = someOtherObj->unk64; + obj60 = obj->unk60; + if (obj60->unk0 == 1) { + s8 temp = someOtherObj64->unk1D6; + if ((temp == 1) || (temp == 2)) { + someObj = (Object*)obj60->unk4; + someObj->y_rotation = 0x4000; + someObj->unk3A++; + someObj->unk3A &= 1; + } + } +} typedef struct unk80035EF8 { u8 pad0[0xA]; @@ -301,7 +445,24 @@ void func_80037578(unk80037578 *arg0, u8 *arg1) { arg0->unk7C = arg1[8]; } +#ifdef NON_MATCHING +// Regalloc issues +void func_80037594(Object *obj, s32 arg1) { + if (obj->unk78 > 0) { + obj->unk78 -= arg1; + obj->unk6 |= 0x4000; + } else { + obj->unk18 += arg1 * 4; + obj->unk6 &= 0xBFFF; + if (obj->unk18 >= 256) { + obj->unk18 = 0; + obj->unk78 = get_random_number_from_range(0, 30) + obj->unk7C.word; + } + } +} +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80037594.s") +#endif typedef struct unk80037624 { u8 pad0[6]; @@ -357,7 +518,42 @@ void func_80037D6C(s32 arg0, s32 arg1) { } GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80037D78.s") + +#ifdef NON_MATCHING + +// Not sure if Object_60 differs between objects yet. +typedef struct Object_60_800380F8 { + s32 unk0; + Object *unk4; + s32 pad8; + Object *unkC; +} Object_60_800380F8; + +// Regalloc issues +void func_800380F8(Object *obj, s32 arg1) { + Object_60_800380F8 *obj60; + Object *someObj; + + func_8001F460(obj, arg1, obj); + obj60 = obj->unk60; + if (obj60 != NULL) { + if (obj60->unk0 > 0) { + if (obj60->unk0 == 3) { + someObj = obj60->unkC; + } else { + someObj = obj60->unk4; + } + someObj->unk3A++; + someObj->y_rotation = 0x4000; + if (someObj->descriptor_ptr->unk55 == someObj->unk3A) { + someObj->unk3A = 0; + } + } + } +} +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800380F8.s") +#endif void func_8003818C(Object *arg0, s32 arg1) { arg0->unk4C->unk14 = 0x81; @@ -394,10 +590,99 @@ void func_80038248(Object *arg0, s32 arg1) { arg0->unk4C->unk12 = 0; } +#ifdef NON_MATCHING + +void func_800096D8(s32, f32, f32, f32); + +typedef struct Object_64_8003827C { + u8 pad0[0x20]; + s32 unk20; + s16 unk24; + u8 pad28[0x12]; + s8 unk38; +} Object_64_8003827C; + +// Regalloc issues +void func_8003827C(Object *obj, s32 arg1) { + Object_64_8003827C *obj64 = obj->unk64; + if (obj64->unk24 == 0) { + if (obj64->unk38 != 0) { + obj64->unk24 = (s16) (obj64->unk38 & 0xFF); + } + } + if (obj64->unk24 != 0) { + if (obj64->unk20 == 0) { + func_80009558(obj64->unk24 & 0xFFFF, obj->x_position, obj->y_position, obj->z_position, 1, &obj64->unk20); + } else { + func_800096D8(obj64->unk20, obj->x_position, obj->y_position, obj->z_position); + } + } + func_8001F460(obj, arg1, obj); +} + +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003827C.s") +#endif + +// Unused +void func_80038330(Object *obj, s32 arg1) { +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003833C.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80038710.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800387CC.s") + +typedef struct Object_64_80038710 { + u8 pad0[0x30]; + s8 unk30; + u8 pad31[0x13]; + s8 unk44; +} Object_64_80038710; + +void func_80066488(s32, f32, f32, f32, s16, s16, s16); + +void func_80038710(Object *obj, s32 arg1) { + s32 temp_v0; + s32 phi_v1; + Object_64_80038710 *obj64; + + temp_v0 = func_8001F460(obj, arg1, obj); + obj->unk6 |= 0x4000; + obj64 = obj->unk64; + if (temp_v0 == 0) { + if (get_viewport_count() == VIEWPORTS_COUNT_1_PLAYER) { + phi_v1 = func_800210CC(obj64->unk44); + } else { + phi_v1 = 1; + } + if (phi_v1) { + func_80066488(obj64->unk30, obj->x_position, obj->y_position, obj->z_position, 0x8000 - obj->y_rotation, -obj->x_rotation, obj->z_rotation); + } + } +} + +// Unused +void func_800387C0(Object *obj, s32 arg1) { +} + +typedef struct Object_64_800387CC { + u8 pad0[0x148]; + Object *unk148; +} Object_64_800387CC; + +void func_800387CC(Object *obj, s32 arg1) { + Object *someObj; + s32 temp_v0; + temp_v0 = obj->unk78; + someObj = NULL; + if (temp_v0 != 0) { + someObj = get_object_struct(temp_v0 - 1); + } + obj->unk7C.word = func_8001F460(obj, arg1, obj); + obj->unk6 |= 0x4000; + if (obj->unk7C.word == 0 && someObj != NULL) { + Object_64_800387CC* someObj64 = someObj->unk64; + someObj64->unk148 = obj; + } +} void func_80038854(Object *arg0, u8 *arg1) { if (arg1[9] != 0) { @@ -419,12 +704,26 @@ void func_800389AC(s32 arg0, s32 arg1) { } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800389B8.s") +void func_800389B8(Object *obj, s32 arg1) { + f32 temp_f2 = arg1; + if (osTvType == TV_TYPE_PAL) { + temp_f2 *= 1.2; + } + obj->x_position += obj->x_velocity * temp_f2; + obj->unk18 += arg1 * 16; + obj->y_position += obj->y_velocity * temp_f2; + obj->z_position += obj->z_velocity * temp_f2; + if (obj->unk18 >= 256) { + gParticlePtrList_addObject(); + obj->unk18 = 255; + } +} void func_80038A6C(s32 arg0, s32 arg1) { } +// Probably just Object? typedef struct unk80038A78 { u8 pad0[0x18]; s16 unk18; @@ -432,9 +731,9 @@ typedef struct unk80038A78 { void func_80038A78(unk80038A78 *arg0, s32 arg1) { arg0->unk18 += arg1 * 8; - if (arg0->unk18 >= 0x100) { + if (arg0->unk18 >= 256) { gParticlePtrList_addObject(); - arg0->unk18 = 0xFF; + arg0->unk18 = 255; } } @@ -442,8 +741,47 @@ void func_80038AC8(s32 arg0, s32 arg1) { } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80038AD4.s") +void func_80038AD4(Object *arg0, s32 arg1) { + f32 temp_f2; + + temp_f2 = (f32) arg1; + if (osTvType == TV_TYPE_PAL) { + temp_f2 *= 1.2; + } + arg0->unk18 += arg1 * 4; + arg0->y_position += temp_f2 * 0.25; + if (arg0->unk18 >= 256) { + gParticlePtrList_addObject(); + arg0->unk18 = 255; + } +} + +#ifdef NON_MATCHING + +typedef struct unk80038B74 { + u8 pad0[8]; + s8 unk8; +} unk80038B74; + +// regalloc issues +void func_80038B74(Object *obj, unk80038B74 *arg1) { + s32 temp; + obj->unk18 = 0; + obj->scale = 0.5f; + obj->unk3A = get_random_number_from_range(0, obj->descriptor_ptr->unk55 - 1); + obj->unk78 = 0; + obj->unk7C.word = 0xFF; + temp = (s32)arg1->unk8; + if (temp != 0) { + obj->unk7C.word |= (temp << 8) & 0xFF00; + } + obj->unk74 = 1; +} + +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80038B74.s") +#endif + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80038BF4.s") void func_80038D58(Object *arg0, s32 arg1) { @@ -456,9 +794,14 @@ void func_80038D58(Object *arg0, s32 arg1) { } } +typedef struct Object_3C_80038DC4 { + u8 pad0[8]; + s8 unk8; +} Object_3C_80038DC4; + void func_80038DC4(Object *arg0, s32 arg1) { if (arg0->unk78 != 0) { - Object_3C* temp = arg0->unk3C; + Object_3C_80038DC4* temp = arg0->unk3C; if(arg0->unk4C->unk13 < 0x78) { func_8006F338(temp->unk8); arg0->unk78 = 0; @@ -510,7 +853,25 @@ void func_800391C8(Object *arg0, s32 arg1) { arg0->unk4C->unk12 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800391FC.s") +void func_800391FC(Object *obj, s32 arg1) { + s32 sp2C; + + if (obj->unk78 > 0) { + obj->unk78 -= arg1; + arg1 *= 2; + } else { + obj->unk78 = 0; + } + sp2C = obj->unk18; + func_8001F460(obj, arg1, obj); + func_800113CC(obj, 0, sp2C, 0xAC, 0xAD); + if (obj->unk4C->unk13 < 0xFF) { + if (obj->unk78 == 0) { + obj->unk78 = 0x3C; + func_80009558(0x23B, obj->x_position, obj->y_position, obj->z_position, 4, NULL); + } + } +} void func_800392B8(Object *arg0, s32 arg1) { Object_64* temp; @@ -553,12 +914,8 @@ f32 func_8003ACAC(void) { return D_8011D4D0; } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003ACBC.s") -#else - void func_8003ACBC(Object *arg0, u8 *arg1, s32 arg2) { - f32 phi_f0 = (s32)arg1[8]; // Regalloc issue here + f32 phi_f0 = (s32)(arg1[8] & 0xFF); if (phi_f0 < 5.0f) { phi_f0 = 5.0f; } @@ -567,7 +924,6 @@ void func_8003ACBC(Object *arg0, u8 *arg1, s32 arg2) { arg0->y_rotation = arg1[10] << 6 << 4; // Not sure about the values here. func_80011390(); } -#endif void func_8003AD28(s32 arg0, s32 arg1) { @@ -701,17 +1057,110 @@ void func_8003D534(Object *arg0, s32 arg1) { arg0->unk4C->unk10 = 0x1E; arg0->unk7C.half.upper = 0x14; arg0->unk7C.half.lower = 0x10; - if (get_filtered_cheats() & 0x1000) { + if (get_filtered_cheats() & CHEAT_DISABLE_BANANAS) { gParticlePtrList_addObject(arg0); } } GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003D5A0.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DBA0.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DC5C.s") + +void func_8003DBA0(Object *obj, s32 arg1) { + obj->unk4C->unk14 = 2; + obj->unk4C->unk11 = 0; + obj->unk4C->unk10 = 0x1E; + obj->unk78 = 3; + obj->unk7C.word = 16; + if(!is_in_tracks_mode()) { + if (func_8000E1DC() && is_in_adventure_two()) { + obj->unk78 = 0; + } else { + obj->unk78 = 3; + } + } + if (obj->unk78 == 3) { + obj->unk6 |= 0x600; + gParticlePtrList_addObject(obj); + } +} + +void func_8003DC5C(Object *obj, s32 arg1) { + obj->unk4C->unk14 = 2; + obj->unk4C->unk11 = 0; + obj->unk4C->unk10 = 0x1E; + obj->unk78 = 3; + obj->unk7C.word = 0; + if(!is_in_tracks_mode()) { + if (func_8000E1DC() && !is_in_adventure_two()) { + obj->unk78 = 0; + } else { + obj->unk78 = 3; + } + } + if (obj->unk78 == 3) { + obj->unk6 |= 0x600; + gParticlePtrList_addObject(obj); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DD14.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DE74.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DF08.s") + +typedef struct unk8003DE74 { + u8 pad0[8]; + u8 unk8; +} unk8003DE74; + +void func_8003DE74(Object *obj, unk8003DE74 *arg1) { + Settings *settings; + obj->unk4C->unk14 = 2; + obj->unk4C->unk11 = 0; + obj->unk4C->unk10 = 0x1E; + arg1->unk8 &= 0xF; + obj->unk78 = arg1->unk8; + settings = get_settings(); + if (!is_in_tracks_mode() && !(settings->keys & (1 << obj->unk78))) { + return; + } + gParticlePtrList_addObject(obj); +} + +#define WORLD_KEY_GRAB_CHECK_RADIUS 50 +#define SOUND_WORLD_KEY_GRAB 54 + +typedef struct Object_64_8003DF08 { + s16 unk0; +} Object_64_8003DF08; + +/** + * Rotates the key and checks to see if the player grabbed it. + */ +void obj_loop_world_key(Object *worldKeyObj, s32 speed) { + Settings *settings; + Object *playerObj; + + // Check if the player is near the key + // "worldKeyObj->unk4C->unk13" is the player's distance from the key (Up to 255). + if (worldKeyObj->unk4C->unk13 < WORLD_KEY_GRAB_CHECK_RADIUS) { + // "worldKeyObj->unk4C->unk0" is only set when the player is within 255 units of + // the key object, otherwise it is NULL. + playerObj = worldKeyObj->unk4C->unk0; + if (playerObj != NULL) { + if (playerObj->descriptor_ptr->unk54 == 1) { + Object_64_8003DF08 *obj64 = playerObj->unk64; + if (obj64->unk0 != -1) { + // Player has grabbed the key! + play_sound(SOUND_WORLD_KEY_GRAB); + settings = get_settings(); + settings->keys |= 1 << worldKeyObj->unk78; // Set key flag + gParticlePtrList_addObject(worldKeyObj); // Makes the key unload. + } + } + } + } + + // Rotate world key + worldKeyObj->y_rotation += speed * 256; +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DFCC.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003E140.s") @@ -732,7 +1181,23 @@ void func_8003E5C8(Object *arg0, s32 arg1) { arg0->unk7C.word = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003E630.s") +void func_8003E630(Object *arg0) { + Object_64 *temp = arg0->unk64; + switch (temp->unk18) { + case 0: + case 1: + func_8003E694(); + break; + case 2: + case 3: + case 10: + case 11: + func_8003F2E8(); + break; + } + return; +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003E694.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003EC14.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003EDD8.s") @@ -750,8 +1215,73 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003F2E8.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003FC44.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003FD68.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003FEF4.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8004001C.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800400A4.s") + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry8004001C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8004001C; + +typedef struct Object_64_8004001C { + u16 pad0; + s16 unk2; + u8 unk4; + u8 unk5; +} Object_64_8004001C; + +void func_8004001C(Object *arg0, LevelObjectEntry8004001C *entry) { + s32 temp; + Object_64_8004001C *obj64 = (Object_64_8004001C*)arg0->unk64; + obj64->unk2 = entry->unk8; + temp = entry->unk9; + obj64->unk4 = temp & 0xFF; + obj64->unk5 = entry->unkA; + func_80009968(entry->common.x, entry->common.y, entry->common.z, obj64->unk2, obj64->unk4, obj64->unk5); + gParticlePtrList_addObject(arg0); +} + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry800400A4 { + LevelObjectEntryCommon common; + s16 unk8; + s8 unkA; + s8 unkB; +} LevelObjectEntry800400A4; + +typedef struct Object_64_800400A4 { + s16 unk0; + s16 pad2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; +} Object_64_800400A4; + +void func_800400A4(Object *obj, LevelObjectEntry800400A4 *arg1, s32 arg2) { + Object_64_800400A4 *obj64; + LevelModel *levelModel; + s16 numberOfTexturesInLevel; + + obj64 = obj->unk64; + levelModel = func_8002C7C4(); + obj64->unk0 = arg1->unk8; + if (obj64->unk0 < 0) { + obj64->unk0 = 0; + } + numberOfTexturesInLevel = levelModel->numberOfTextures; + if (obj64->unk0 >= numberOfTexturesInLevel) { + obj64->unk0 = numberOfTexturesInLevel - 1; + } + obj64->unk4 = (s16) arg1->unkA; + obj64->unk6 = (s16) arg1->unkB; + if (arg2 == 0) { + obj64->unk8 = 0; + obj64->unkA = 0; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80040148.s") typedef struct unk800403A8 { @@ -780,7 +1310,30 @@ void func_80040448(Object *arg0, s32 arg1) { arg0->unk18 += arg1 * 8; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8004049C.s") +/* Size: 12 bytes */ +typedef struct LevelObjectEntry8004049C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8004049C; + +void func_8004049C(Object *arg0, LevelObjectEntry8004049C *arg1, s32 arg2) { + f32 phi_f0; + arg0->unk64 = func_800BE654(arg0->unk2E, arg0->x_position, arg0->z_position); + arg0->unk4C->unk14 = 1; + arg0->unk4C->unk11 = 2; + arg0->unk4C->unk10 = 0x1E; + phi_f0 = arg1->unk9 & 0xFF; + if (phi_f0 < 10.0f) { + phi_f0 = 10.0f; + } + phi_f0 /= 64; + arg0->scale = arg0->descriptor_ptr->unkC * phi_f0; + arg0->unk3A = arg1->unk8; + arg0->y_rotation = arg1->unkA << 6 << 4; +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80040570.s") typedef struct unk80040800 { @@ -887,10 +1440,62 @@ void func_8004216C(s32 arg0, s32 arg1) { } -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80042178.s") +typedef struct unk80042178 { + u8 pad0[0x20]; +} unk80042178; + +s32 func_80016DE8(f32, f32, f32, f32, s32, unk80042178*); + +typedef struct Object_3C_80042178 { + u8 pad0[8]; + u16 unk8; + u16 unkA; +} Object_3C_80042178; + +void func_80042178(Object *obj, s32 arg1) { + s32 temp; + Object_3C_80042178* obj3C; + unk80042178 sp20; + + obj3C = obj->unk3C; + if (func_80016DE8(obj->x_position, 0, obj->z_position, (f32) obj3C->unk8, 1, &sp20) > 0) { + obj->unk74 = obj3C->unkA; + } else { + obj->unk74 = 0; + } + func_800AFC3C(obj, arg1); +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80042210.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800422F0.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80042998.s") + +typedef struct Object_64_80042998 { + u8 pad0[0x70]; + u8 unk70; + u8 pad71; + u8 unk72; + u8 pad73; + f32 unk74; +} Object_64_80042998; + +void func_80042998(s32 arg0, s32 arg1) { + Object *obj; + Object_64_80042998 *obj64; + + func_8001F460(arg0, arg1, arg0); + obj = func_8000BF44(-1); + + if (obj != NULL) { + obj64 = obj->unk64; + obj->unk78 = 0; + if (obj64 != 0) { + obj64->unk72 += arg1; + obj64->unk70 = 2; + obj64->unk74 = 1.0f; + func_8000B750(arg0, -1, 2, 1, 1); + } + } +} typedef struct unk80042A1C { u8 pad0[0x78]; diff --git a/src/video.c b/src/video.c index 4e45decb..83a4477b 100644 --- a/src/video.c +++ b/src/video.c @@ -3,13 +3,6 @@ #include "video.h" -#include "types.h" -#include "macros.h" -#include "memory.h" -#include "PR/libultra.h" -#include "PR/os_message.h" -#include "PR/os_vi.h" - /************ .data ************/ u16 *gVideoDepthBuffer = NULL; diff --git a/src/video.h b/src/video.h index 042d1993..c7d095cf 100644 --- a/src/video.h +++ b/src/video.h @@ -2,6 +2,11 @@ #define _VIDEO_H_ #include "types.h" +#include "macros.h" +#include "memory.h" +#include "PR/libultra.h" +#include "PR/os_message.h" +#include "PR/os_vi.h" #define REFRESH_50HZ 50 #define REFRESH_60HZ 60