Merge pull request #207 from DavidSM64/objects

Decompiled 8 functions in object_functions.c
This commit is contained in:
David Benepe
2022-02-16 00:14:35 -05:00
committed by GitHub
13 changed files with 526 additions and 943 deletions
+8 -8
View File
@@ -113,25 +113,25 @@ s32 is_drumstick_unlocked(void) {
}
```
As of Feburary 8th, 2022, this is our current score:
As of Feburary 15th, 2022, this is our current score:
```
=====================================================================
ADVENTURE ONE (ASM -> C Decompilation)
-------------------------- 20.02% Complete --------------------------
# Decompiled functions: 1026
# GLOBAL_ASM remaining: 722
# NON_MATCHING functions: 3
# NON_EQUIVALENT WIP functions: 93
-------------------------- 20.51% Complete --------------------------
# Decompiled functions: 1036
# GLOBAL_ASM remaining: 713
# NON_MATCHING functions: 4
# NON_EQUIVALENT WIP functions: 95
---------------------------- Game Status ----------------------------
Balloons: 11/47, Keys: 1/4, Trophies: 0/5
T.T. Amulets: 1/4, Wizpig Amulets: 0/4
---------------------------------------------------------------------
We are collecting silver coins in Hot Top Volcano. (1/8 silver coins)
We are collecting silver coins in Hot Top Volcano. (4/8 silver coins)
=====================================================================
ADVENTURE TWO (Cleanup & Documentation)
-------------------------- 2.54% Complete --------------------------
# Documented functions: 134
# Undocumented remaining: 1614
# Undocumented remaining: 1615
---------------------------- Game Status ----------------------------
Balloons: 1/47, Keys: 0/4, Trophies: 0/5
T.T. Amulets: 0/4, Wizpig Amulets: 0/4
@@ -1,123 +0,0 @@
.rdata
glabel D_800E5FB4
.asciz "Illegal door no!!!\n"
.text
glabel obj_init_door
/* 03C3CC 8003B7CC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 03C3D0 8003B7D0 AFBF001C */ sw $ra, 0x1c($sp)
/* 03C3D4 8003B7D4 AFB00018 */ sw $s0, 0x18($sp)
/* 03C3D8 8003B7D8 80A7000C */ lb $a3, 0xc($a1)
/* 03C3DC 8003B7DC 8C830064 */ lw $v1, 0x64($a0)
/* 03C3E0 8003B7E0 2401FFFF */ li $at, -1
/* 03C3E4 8003B7E4 00808025 */ move $s0, $a0
/* 03C3E8 8003B7E8 14E10008 */ bne $a3, $at, .L8003B80C
/* 03C3EC 8003B7EC 00A03025 */ move $a2, $a1
/* 03C3F0 8003B7F0 AFA30024 */ sw $v1, 0x24($sp)
/* 03C3F4 8003B7F4 0C003308 */ jal func_8000CC20
/* 03C3F8 8003B7F8 AFA5002C */ sw $a1, 0x2c($sp)
/* 03C3FC 8003B7FC 8FA6002C */ lw $a2, 0x2c($sp)
/* 03C400 8003B800 8FA30024 */ lw $v1, 0x24($sp)
/* 03C404 8003B804 10000009 */ b .L8003B82C
/* 03C408 8003B808 A0C2000C */ sb $v0, 0xc($a2)
.L8003B80C:
/* 03C40C 8003B80C 02002025 */ move $a0, $s0
/* 03C410 8003B810 00E02825 */ move $a1, $a3
/* 03C414 8003B814 AFA30024 */ sw $v1, 0x24($sp)
/* 03C418 8003B818 0C0032FC */ jal func_8000CBF0
/* 03C41C 8003B81C AFA6002C */ sw $a2, 0x2c($sp)
/* 03C420 8003B820 8FA30024 */ lw $v1, 0x24($sp)
/* 03C424 8003B824 8FA6002C */ lw $a2, 0x2c($sp)
/* 03C428 8003B828 00000000 */ nop
.L8003B82C:
/* 03C42C 8003B82C 80CE000C */ lb $t6, 0xc($a2)
/* 03C430 8003B830 2401FFFF */ li $at, -1
/* 03C434 8003B834 A06E000E */ sb $t6, 0xe($v1)
/* 03C438 8003B838 90CF000E */ lbu $t7, 0xe($a2)
/* 03C43C 8003B83C 8069000E */ lb $t1, 0xe($v1)
/* 03C440 8003B840 A06F000F */ sb $t7, 0xf($v1)
/* 03C444 8003B844 90D8000D */ lbu $t8, 0xd($a2)
/* 03C448 8003B848 3C04800E */ lui $a0, %hi(D_800E5FB4) # $a0, 0x800e
/* 03C44C 8003B84C A0780011 */ sb $t8, 0x11($v1)
/* 03C450 8003B850 90D9000D */ lbu $t9, 0xd($a2)
/* 03C454 8003B854 24845FB4 */ addiu $a0, %lo(D_800E5FB4) # addiu $a0, $a0, 0x5fb4
/* 03C458 8003B858 A0790010 */ sb $t9, 0x10($v1)
/* 03C45C 8003B85C 90C8000B */ lbu $t0, 0xb($a2)
/* 03C460 8003B860 15210007 */ bne $t1, $at, .L8003B880
/* 03C464 8003B864 A0680012 */ sb $t0, 0x12($v1)
/* 03C468 8003B868 AFA30024 */ sw $v1, 0x24($sp)
/* 03C46C 8003B86C 0C032755 */ jal rmonPrintf
/* 03C470 8003B870 AFA6002C */ sw $a2, 0x2c($sp)
/* 03C474 8003B874 8FA30024 */ lw $v1, 0x24($sp)
/* 03C478 8003B878 8FA6002C */ lw $a2, 0x2c($sp)
/* 03C47C 8003B87C 00000000 */ nop
.L8003B880:
/* 03C480 8003B880 90CA000A */ lbu $t2, 0xa($a2)
/* 03C484 8003B884 C6040010 */ lwc1 $f4, 0x10($s0)
/* 03C488 8003B888 A20A003A */ sb $t2, 0x3a($s0)
/* 03C48C 8003B88C 90CC0008 */ lbu $t4, 8($a2)
/* 03C490 8003B890 3C014120 */ li $at, 0x41200000 # 10.000000
/* 03C494 8003B894 000C6A80 */ sll $t5, $t4, 0xa
/* 03C498 8003B898 A60D0000 */ sh $t5, ($s0)
/* 03C49C 8003B89C AC600008 */ sw $zero, 8($v1)
/* 03C4A0 8003B8A0 E4640000 */ swc1 $f4, ($v1)
/* 03C4A4 8003B8A4 860E0000 */ lh $t6, ($s0)
/* 03C4A8 8003B8A8 44811000 */ mtc1 $at, $f2
/* 03C4AC 8003B8AC AE0E0078 */ sw $t6, 0x78($s0)
/* 03C4B0 8003B8B0 90CF0009 */ lbu $t7, 9($a2)
/* 03C4B4 8003B8B4 3C014280 */ li $at, 0x42800000 # 64.000000
/* 03C4B8 8003B8B8 31F8003F */ andi $t8, $t7, 0x3f
/* 03C4BC 8003B8BC 0018CA80 */ sll $t9, $t8, 0xa
/* 03C4C0 8003B8C0 AE19007C */ sw $t9, 0x7c($s0)
/* 03C4C4 8003B8C4 90C90012 */ lbu $t1, 0x12($a2)
/* 03C4C8 8003B8C8 44814000 */ mtc1 $at, $f8
/* 03C4CC 8003B8CC 44893000 */ mtc1 $t1, $f6
/* 03C4D0 8003B8D0 00000000 */ nop
/* 03C4D4 8003B8D4 46803020 */ cvt.s.w $f0, $f6
/* 03C4D8 8003B8D8 4602003C */ c.lt.s $f0, $f2
/* 03C4DC 8003B8DC 00000000 */ nop
/* 03C4E0 8003B8E0 45000003 */ bc1f .L8003B8F0
/* 03C4E4 8003B8E4 00000000 */ nop
/* 03C4E8 8003B8E8 46001006 */ mov.s $f0, $f2
/* 03C4EC 8003B8EC 00000000 */ nop
.L8003B8F0:
/* 03C4F0 8003B8F0 46080003 */ div.s $f0, $f0, $f8
/* 03C4F4 8003B8F4 8E0A0040 */ lw $t2, 0x40($s0)
/* 03C4F8 8003B8F8 240D0021 */ li $t5, 33
/* 03C4FC 8003B8FC C54A000C */ lwc1 $f10, 0xc($t2)
/* 03C500 8003B900 240F0002 */ li $t7, 2
/* 03C504 8003B904 24190014 */ li $t9, 20
/* 03C508 8003B908 46005402 */ mul.s $f16, $f10, $f0
/* 03C50C 8003B90C E6100008 */ swc1 $f16, 8($s0)
/* 03C510 8003B910 90CB000F */ lbu $t3, 0xf($a2)
/* 03C514 8003B914 00000000 */ nop
/* 03C518 8003B918 A06B0013 */ sb $t3, 0x13($v1)
/* 03C51C 8003B91C 80CC0011 */ lb $t4, 0x11($a2)
/* 03C520 8003B920 00000000 */ nop
/* 03C524 8003B924 A06C0014 */ sb $t4, 0x14($v1)
/* 03C528 8003B928 8E0E004C */ lw $t6, 0x4c($s0)
/* 03C52C 8003B92C 00000000 */ nop
/* 03C530 8003B930 A5CD0014 */ sh $t5, 0x14($t6)
/* 03C534 8003B934 8E18004C */ lw $t8, 0x4c($s0)
/* 03C538 8003B938 00000000 */ nop
/* 03C53C 8003B93C A30F0011 */ sb $t7, 0x11($t8)
/* 03C540 8003B940 8E08004C */ lw $t0, 0x4c($s0)
/* 03C544 8003B944 00000000 */ nop
/* 03C548 8003B948 A1190010 */ sb $t9, 0x10($t0)
/* 03C54C 8003B94C 8E09004C */ lw $t1, 0x4c($s0)
/* 03C550 8003B950 00000000 */ nop
/* 03C554 8003B954 A1200012 */ sb $zero, 0x12($t1)
/* 03C558 8003B958 8E0B0040 */ lw $t3, 0x40($s0)
/* 03C55C 8003B95C 820A003A */ lb $t2, 0x3a($s0)
/* 03C560 8003B960 816C0055 */ lb $t4, 0x55($t3)
/* 03C564 8003B964 00000000 */ nop
/* 03C568 8003B968 014C082A */ slt $at, $t2, $t4
/* 03C56C 8003B96C 14200003 */ bnez $at, .L8003B97C
/* 03C570 8003B970 8FBF001C */ lw $ra, 0x1c($sp)
/* 03C574 8003B974 A200003A */ sb $zero, 0x3a($s0)
/* 03C578 8003B978 8FBF001C */ lw $ra, 0x1c($sp)
.L8003B97C:
/* 03C57C 8003B97C 8FB00018 */ lw $s0, 0x18($sp)
/* 03C580 8003B980 03E00008 */ jr $ra
/* 03C584 8003B984 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,99 +0,0 @@
.rdata
glabel D_800E5FA0
.asciz "Illegal door no!!!\n"
.text
glabel obj_init_goldenballoon
/* 03BF68 8003B368 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 03BF6C 8003B36C AFBF001C */ sw $ra, 0x1c($sp)
/* 03BF70 8003B370 AFB00018 */ sw $s0, 0x18($sp)
/* 03BF74 8003B374 80A70008 */ lb $a3, 8($a1)
/* 03BF78 8003B378 2401FFFF */ li $at, -1
/* 03BF7C 8003B37C 00808025 */ move $s0, $a0
/* 03BF80 8003B380 14E10006 */ bne $a3, $at, .L8003B39C
/* 03BF84 8003B384 00A03025 */ move $a2, $a1
/* 03BF88 8003B388 0C003308 */ jal func_8000CC20
/* 03BF8C 8003B38C AFA50024 */ sw $a1, 0x24($sp)
/* 03BF90 8003B390 8FA60024 */ lw $a2, 0x24($sp)
/* 03BF94 8003B394 10000007 */ b .L8003B3B4
/* 03BF98 8003B398 A0C20008 */ sb $v0, 8($a2)
.L8003B39C:
/* 03BF9C 8003B39C 02002025 */ move $a0, $s0
/* 03BFA0 8003B3A0 00E02825 */ move $a1, $a3
/* 03BFA4 8003B3A4 0C0032FC */ jal func_8000CBF0
/* 03BFA8 8003B3A8 AFA60024 */ sw $a2, 0x24($sp)
/* 03BFAC 8003B3AC 8FA60024 */ lw $a2, 0x24($sp)
/* 03BFB0 8003B3B0 00000000 */ nop
.L8003B3B4:
/* 03BFB4 8003B3B4 80CE0008 */ lb $t6, 8($a2)
/* 03BFB8 8003B3B8 2401FFFF */ li $at, -1
/* 03BFBC 8003B3BC 15C10006 */ bne $t6, $at, .L8003B3D8
/* 03BFC0 8003B3C0 3C04800E */ lui $a0, %hi(D_800E5FA0) # $a0, 0x800e
/* 03BFC4 8003B3C4 24845FA0 */ addiu $a0, %lo(D_800E5FA0) # addiu $a0, $a0, 0x5fa0
/* 03BFC8 8003B3C8 0C032755 */ jal rmonPrintf
/* 03BFCC 8003B3CC AFA60024 */ sw $a2, 0x24($sp)
/* 03BFD0 8003B3D0 8FA60024 */ lw $a2, 0x24($sp)
/* 03BFD4 8003B3D4 00000000 */ nop
.L8003B3D8:
/* 03BFD8 8003B3D8 8E18004C */ lw $t8, 0x4c($s0)
/* 03BFDC 8003B3DC 240F0002 */ li $t7, 2
/* 03BFE0 8003B3E0 A70F0014 */ sh $t7, 0x14($t8)
/* 03BFE4 8003B3E4 8E08004C */ lw $t0, 0x4c($s0)
/* 03BFE8 8003B3E8 24190004 */ li $t9, 4
/* 03BFEC 8003B3EC A1190011 */ sb $t9, 0x11($t0)
/* 03BFF0 8003B3F0 8E0A004C */ lw $t2, 0x4c($s0)
/* 03BFF4 8003B3F4 24090014 */ li $t1, 20
/* 03BFF8 8003B3F8 A1490010 */ sb $t1, 0x10($t2)
/* 03BFFC 8003B3FC 8E0B004C */ lw $t3, 0x4c($s0)
/* 03C000 8003B400 3C014120 */ li $at, 0x41200000 # 10.000000
/* 03C004 8003B404 A1600012 */ sb $zero, 0x12($t3)
/* 03C008 8003B408 90CD0009 */ lbu $t5, 9($a2)
/* 03C00C 8003B40C 44811000 */ mtc1 $at, $f2
/* 03C010 8003B410 448D2000 */ mtc1 $t5, $f4
/* 03C014 8003B414 3C014280 */ li $at, 0x42800000 # 64.000000
/* 03C018 8003B418 46802020 */ cvt.s.w $f0, $f4
/* 03C01C 8003B41C 44813000 */ mtc1 $at, $f6
/* 03C020 8003B420 4602003C */ c.lt.s $f0, $f2
/* 03C024 8003B424 00000000 */ nop
/* 03C028 8003B428 45000003 */ bc1f .L8003B438
/* 03C02C 8003B42C 00000000 */ nop
/* 03C030 8003B430 46001006 */ mov.s $f0, $f2
/* 03C034 8003B434 00000000 */ nop
.L8003B438:
/* 03C038 8003B438 46060003 */ div.s $f0, $f0, $f6
/* 03C03C 8003B43C 8E0E0040 */ lw $t6, 0x40($s0)
/* 03C040 8003B440 8E020064 */ lw $v0, 0x64($s0)
/* 03C044 8003B444 C5C8000C */ lwc1 $f8, 0xc($t6)
/* 03C048 8003B448 44808000 */ mtc1 $zero, $f16
/* 03C04C 8003B44C 240F00FF */ li $t7, 255
/* 03C050 8003B450 46004282 */ mul.s $f10, $f8, $f0
/* 03C054 8003B454 E60A0008 */ swc1 $f10, 8($s0)
/* 03C058 8003B458 A04F000D */ sb $t7, 0xd($v0)
/* 03C05C 8003B45C E4500000 */ swc1 $f16, ($v0)
/* 03C060 8003B460 AE000078 */ sw $zero, 0x78($s0)
/* 03C064 8003B464 80D8000A */ lb $t8, 0xa($a2)
/* 03C068 8003B468 00000000 */ nop
/* 03C06C 8003B46C 13000010 */ beqz $t8, .L8003B4B0
/* 03C070 8003B470 8FBF001C */ lw $ra, 0x1c($sp)
/* 03C074 8003B474 0C01BAA4 */ jal get_settings
/* 03C078 8003B478 AFA60024 */ sw $a2, 0x24($sp)
/* 03C07C 8003B47C 8FA60024 */ lw $a2, 0x24($sp)
/* 03C080 8003B480 94590014 */ lhu $t9, 0x14($v0)
/* 03C084 8003B484 80C8000A */ lb $t0, 0xa($a2)
/* 03C088 8003B488 240A0001 */ li $t2, 1
/* 03C08C 8003B48C 25090002 */ addiu $t1, $t0, 2
/* 03C090 8003B490 012A5804 */ sllv $t3, $t2, $t1
/* 03C094 8003B494 032B6024 */ and $t4, $t9, $t3
/* 03C098 8003B498 11800003 */ beqz $t4, .L8003B4A8
/* 03C09C 8003B49C 240D0001 */ li $t5, 1
/* 03C0A0 8003B4A0 10000002 */ b .L8003B4AC
/* 03C0A4 8003B4A4 AE000078 */ sw $zero, 0x78($s0)
.L8003B4A8:
/* 03C0A8 8003B4A8 AE0D0078 */ sw $t5, 0x78($s0)
.L8003B4AC:
/* 03C0AC 8003B4AC 8FBF001C */ lw $ra, 0x1c($sp)
.L8003B4B0:
/* 03C0B0 8003B4B0 8FB00018 */ lw $s0, 0x18($sp)
/* 03C0B4 8003B4B4 03E00008 */ jr $ra
/* 03C0B8 8003B4B8 27BD0020 */ addiu $sp, $sp, 0x20
@@ -1,97 +0,0 @@
glabel obj_init_groundzipper
/* 0366E8 80035AE8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0366EC 80035AEC AFBF0014 */ sw $ra, 0x14($sp)
/* 0366F0 80035AF0 90AF0009 */ lbu $t7, 9($a1)
/* 0366F4 80035AF4 3C014120 */ li $at, 0x41200000 # 10.000000
/* 0366F8 80035AF8 448F2000 */ mtc1 $t7, $f4
/* 0366FC 80035AFC 44811000 */ mtc1 $at, $f2
/* 036700 80035B00 46802020 */ cvt.s.w $f0, $f4
/* 036704 80035B04 3C014280 */ li $at, 0x42800000 # 64.000000
/* 036708 80035B08 44813000 */ mtc1 $at, $f6
/* 03670C 80035B0C 4602003C */ c.lt.s $f0, $f2
/* 036710 80035B10 240F00FF */ li $t7, 255
/* 036714 80035B14 45000003 */ bc1f .L80035B24
/* 036718 80035B18 00000000 */ nop
/* 03671C 80035B1C 46001006 */ mov.s $f0, $f2
/* 036720 80035B20 00000000 */ nop
.L80035B24:
/* 036724 80035B24 46060003 */ div.s $f0, $f0, $f6
/* 036728 80035B28 8C820040 */ lw $v0, 0x40($a0)
/* 03672C 80035B2C 8C980050 */ lw $t8, 0x50($a0)
/* 036730 80035B30 C448000C */ lwc1 $f8, 0xc($v0)
/* 036734 80035B34 00000000 */ nop
/* 036738 80035B38 46004282 */ mul.s $f10, $f8, $f0
/* 03673C 80035B3C E48A0008 */ swc1 $f10, 8($a0)
/* 036740 80035B40 C4500004 */ lwc1 $f16, 4($v0)
/* 036744 80035B44 00000000 */ nop
/* 036748 80035B48 46008482 */ mul.s $f18, $f16, $f0
/* 03674C 80035B4C E7120000 */ swc1 $f18, ($t8)
/* 036750 80035B50 90A8000A */ lbu $t0, 0xa($a1)
/* 036754 80035B54 8C8B0040 */ lw $t3, 0x40($a0)
/* 036758 80035B58 00084A80 */ sll $t1, $t0, 0xa
/* 03675C 80035B5C A4890000 */ sh $t1, ($a0)
/* 036760 80035B60 808A003A */ lb $t2, 0x3a($a0)
/* 036764 80035B64 816C0055 */ lb $t4, 0x55($t3)
/* 036768 80035B68 00000000 */ nop
/* 03676C 80035B6C 014C082A */ slt $at, $t2, $t4
/* 036770 80035B70 14200003 */ bnez $at, .L80035B80
/* 036774 80035B74 3C0141E0 */ lui $at, 0x41e0
/* 036778 80035B78 A080003A */ sb $zero, 0x3a($a0)
/* 03677C 80035B7C 3C0141E0 */ li $at, 0x41E00000 # 28.000000
.L80035B80:
/* 036780 80035B80 44812000 */ mtc1 $at, $f4
/* 036784 80035B84 00000000 */ nop
/* 036788 80035B88 46002182 */ mul.s $f6, $f4, $f0
/* 03678C 80035B8C 444DF800 */ cfc1 $t5, $31
/* 036790 80035B90 00000000 */ nop
/* 036794 80035B94 35A10003 */ ori $at, $t5, 3
/* 036798 80035B98 38210002 */ xori $at, $at, 2
/* 03679C 80035B9C 44C1F800 */ ctc1 $at, $31
/* 0367A0 80035BA0 00000000 */ nop
/* 0367A4 80035BA4 46003224 */ cvt.w.s $f8, $f6
/* 0367A8 80035BA8 44024000 */ mfc1 $v0, $f8
/* 0367AC 80035BAC 44CDF800 */ ctc1 $t5, $31
/* 0367B0 80035BB0 2442000F */ addiu $v0, $v0, 0xf
/* 0367B4 80035BB4 04410002 */ bgez $v0, .L80035BC0
/* 0367B8 80035BB8 AC820078 */ sw $v0, 0x78($a0)
/* 0367BC 80035BBC AC800078 */ sw $zero, 0x78($a0)
.L80035BC0:
/* 0367C0 80035BC0 8C8E0078 */ lw $t6, 0x78($a0)
/* 0367C4 80035BC4 00000000 */ nop
/* 0367C8 80035BC8 29C10100 */ slti $at, $t6, 0x100
/* 0367CC 80035BCC 14200002 */ bnez $at, .L80035BD8
/* 0367D0 80035BD0 00000000 */ nop
/* 0367D4 80035BD4 AC8F0078 */ sw $t7, 0x78($a0)
.L80035BD8:
/* 0367D8 80035BD8 8C99004C */ lw $t9, 0x4c($a0)
/* 0367DC 80035BDC 24180002 */ li $t8, 2
/* 0367E0 80035BE0 A7380014 */ sh $t8, 0x14($t9)
/* 0367E4 80035BE4 8C88004C */ lw $t0, 0x4c($a0)
/* 0367E8 80035BE8 24090014 */ li $t1, 20
/* 0367EC 80035BEC A1000011 */ sb $zero, 0x11($t0)
/* 0367F0 80035BF0 8C8B004C */ lw $t3, 0x4c($a0)
/* 0367F4 80035BF4 240CFF9C */ li $t4, -100
/* 0367F8 80035BF8 A1690010 */ sb $t1, 0x10($t3)
/* 0367FC 80035BFC 8C8A004C */ lw $t2, 0x4c($a0)
/* 036800 80035C00 240E0064 */ li $t6, 100
/* 036804 80035C04 A1400012 */ sb $zero, 0x12($t2)
/* 036808 80035C08 8C8D004C */ lw $t5, 0x4c($a0)
/* 03680C 80035C0C 00000000 */ nop
/* 036810 80035C10 A1AC0016 */ sb $t4, 0x16($t5)
/* 036814 80035C14 8C8F004C */ lw $t7, 0x4c($a0)
/* 036818 80035C18 00000000 */ nop
/* 03681C 80035C1C A1EE0017 */ sb $t6, 0x17($t7)
/* 036820 80035C20 0C0270C3 */ jal get_filtered_cheats
/* 036824 80035C24 AFA40018 */ sw $a0, 0x18($sp)
/* 036828 80035C28 8FA40018 */ lw $a0, 0x18($sp)
/* 03682C 80035C2C 0002C280 */ sll $t8, $v0, 0xa
/* 036830 80035C30 07010004 */ bgez $t8, .L80035C44
/* 036834 80035C34 8FBF0014 */ lw $ra, 0x14($sp)
/* 036838 80035C38 0C003FEE */ jal gParticlePtrList_addObject
/* 03683C 80035C3C 00000000 */ nop
/* 036840 80035C40 8FBF0014 */ lw $ra, 0x14($sp)
.L80035C44:
/* 036844 80035C44 27BD0018 */ addiu $sp, $sp, 0x18
/* 036848 80035C48 03E00008 */ jr $ra
/* 03684C 80035C4C 00000000 */ nop
@@ -1,99 +0,0 @@
.rdata
glabel D_800E5FC8
.asciz "Illegal door no!!!\n"
.text
glabel obj_init_trigger
/* 03D244 8003C644 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 03D248 8003C648 AFBF001C */ sw $ra, 0x1c($sp)
/* 03D24C 8003C64C AFB10018 */ sw $s1, 0x18($sp)
/* 03D250 8003C650 AFB00014 */ sw $s0, 0x14($sp)
/* 03D254 8003C654 80A60009 */ lb $a2, 9($a1)
/* 03D258 8003C658 2401FFFF */ li $at, -1
/* 03D25C 8003C65C 00808025 */ move $s0, $a0
/* 03D260 8003C660 14C10005 */ bne $a2, $at, .L8003C678
/* 03D264 8003C664 00A08825 */ move $s1, $a1
/* 03D268 8003C668 0C003308 */ jal func_8000CC20
/* 03D26C 8003C66C 00000000 */ nop
/* 03D270 8003C670 10000004 */ b .L8003C684
/* 03D274 8003C674 A2220009 */ sb $v0, 9($s1)
.L8003C678:
/* 03D278 8003C678 02002025 */ move $a0, $s0
/* 03D27C 8003C67C 0C0032FC */ jal func_8000CBF0
/* 03D280 8003C680 00C02825 */ move $a1, $a2
.L8003C684:
/* 03D284 8003C684 822E0009 */ lb $t6, 9($s1)
/* 03D288 8003C688 2401FFFF */ li $at, -1
/* 03D28C 8003C68C 15C10003 */ bne $t6, $at, .L8003C69C
/* 03D290 8003C690 3C04800E */ lui $a0, %hi(D_800E5FC8) # $a0, 0x800e
/* 03D294 8003C694 0C032755 */ jal rmonPrintf
/* 03D298 8003C698 24845FC8 */ addiu $a0, %lo(D_800E5FC8) # addiu $a0, $a0, 0x5fc8
.L8003C69C:
/* 03D29C 8003C69C 92380008 */ lbu $t8, 8($s1)
/* 03D2A0 8003C6A0 3C0140A0 */ li $at, 0x40A00000 # 5.000000
/* 03D2A4 8003C6A4 44982000 */ mtc1 $t8, $f4
/* 03D2A8 8003C6A8 44811000 */ mtc1 $at, $f2
/* 03D2AC 8003C6AC 46802020 */ cvt.s.w $f0, $f4
/* 03D2B0 8003C6B0 3C014300 */ li $at, 0x43000000 # 128.000000
/* 03D2B4 8003C6B4 44813000 */ mtc1 $at, $f6
/* 03D2B8 8003C6B8 4602003C */ c.lt.s $f0, $f2
/* 03D2BC 8003C6BC 00000000 */ nop
/* 03D2C0 8003C6C0 45000003 */ bc1f .L8003C6D0
/* 03D2C4 8003C6C4 00000000 */ nop
/* 03D2C8 8003C6C8 46001006 */ mov.s $f0, $f2
/* 03D2CC 8003C6CC 00000000 */ nop
.L8003C6D0:
/* 03D2D0 8003C6D0 46060003 */ div.s $f0, $f0, $f6
/* 03D2D4 8003C6D4 8E020064 */ lw $v0, 0x64($s0)
/* 03D2D8 8003C6D8 E6000008 */ swc1 $f0, 8($s0)
/* 03D2DC 8003C6DC 9228000A */ lbu $t0, 0xa($s1)
/* 03D2E0 8003C6E0 00000000 */ nop
/* 03D2E4 8003C6E4 00084A80 */ sll $t1, $t0, 0xa
/* 03D2E8 8003C6E8 A6090000 */ sh $t1, ($s0)
/* 03D2EC 8003C6EC 86040000 */ lh $a0, ($s0)
/* 03D2F0 8003C6F0 0C01C1F1 */ jal func_800707C4
/* 03D2F4 8003C6F4 AFA20020 */ sw $v0, 0x20($sp)
/* 03D2F8 8003C6F8 8FA20020 */ lw $v0, 0x20($sp)
/* 03D2FC 8003C6FC 44804000 */ mtc1 $zero, $f8
/* 03D300 8003C700 E4400000 */ swc1 $f0, ($v0)
/* 03D304 8003C704 E4480004 */ swc1 $f8, 4($v0)
/* 03D308 8003C708 86040000 */ lh $a0, ($s0)
/* 03D30C 8003C70C 0C01C1FE */ jal func_800707F8
/* 03D310 8003C710 00000000 */ nop
/* 03D314 8003C714 8FA20020 */ lw $v0, 0x20($sp)
/* 03D318 8003C718 240C0002 */ li $t4, 2
/* 03D31C 8003C71C E4400008 */ swc1 $f0, 8($v0)
/* 03D320 8003C720 C610000C */ lwc1 $f16, 0xc($s0)
/* 03D324 8003C724 C44A0000 */ lwc1 $f10, ($v0)
/* 03D328 8003C728 C6040014 */ lwc1 $f4, 0x14($s0)
/* 03D32C 8003C72C 46105482 */ mul.s $f18, $f10, $f16
/* 03D330 8003C730 00000000 */ nop
/* 03D334 8003C734 46040182 */ mul.s $f6, $f0, $f4
/* 03D338 8003C738 46069200 */ add.s $f8, $f18, $f6
/* 03D33C 8003C73C 46004287 */ neg.s $f10, $f8
/* 03D340 8003C740 E44A000C */ swc1 $f10, 0xc($v0)
/* 03D344 8003C744 922A0008 */ lbu $t2, 8($s1)
/* 03D348 8003C748 00000000 */ nop
/* 03D34C 8003C74C AC4A0010 */ sw $t2, 0x10($v0)
/* 03D350 8003C750 922B000D */ lbu $t3, 0xd($s1)
/* 03D354 8003C754 00000000 */ nop
/* 03D358 8003C758 A04B0014 */ sb $t3, 0x14($v0)
/* 03D35C 8003C75C 8E0D004C */ lw $t5, 0x4c($s0)
/* 03D360 8003C760 00000000 */ nop
/* 03D364 8003C764 A5AC0014 */ sh $t4, 0x14($t5)
/* 03D368 8003C768 8E0E004C */ lw $t6, 0x4c($s0)
/* 03D36C 8003C76C 00000000 */ nop
/* 03D370 8003C770 A1C00011 */ sb $zero, 0x11($t6)
/* 03D374 8003C774 8E18004C */ lw $t8, 0x4c($s0)
/* 03D378 8003C778 922F0008 */ lbu $t7, 8($s1)
/* 03D37C 8003C77C 00000000 */ nop
/* 03D380 8003C780 A30F0010 */ sb $t7, 0x10($t8)
/* 03D384 8003C784 8E19004C */ lw $t9, 0x4c($s0)
/* 03D388 8003C788 00000000 */ nop
/* 03D38C 8003C78C A3200012 */ sb $zero, 0x12($t9)
/* 03D390 8003C790 8FBF001C */ lw $ra, 0x1c($sp)
/* 03D394 8003C794 8FB10018 */ lw $s1, 0x18($sp)
/* 03D398 8003C798 8FB00014 */ lw $s0, 0x14($sp)
/* 03D39C 8003C79C 03E00008 */ jr $ra
/* 03D3A0 8003C7A0 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,103 +0,0 @@
glabel obj_loop_airzippers_waterzippers
/* 03656C 8003596C 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 036570 80035970 AFBF002C */ sw $ra, 0x2c($sp)
/* 036574 80035974 AFB30024 */ sw $s3, 0x24($sp)
/* 036578 80035978 00809825 */ move $s3, $a0
/* 03657C 8003597C AFB40028 */ sw $s4, 0x28($sp)
/* 036580 80035980 AFB20020 */ sw $s2, 0x20($sp)
/* 036584 80035984 AFB1001C */ sw $s1, 0x1c($sp)
/* 036588 80035988 AFB00018 */ sw $s0, 0x18($sp)
/* 03658C 8003598C 0C003873 */ jal func_8000E1CC
/* 036590 80035990 AFA5005C */ sw $a1, 0x5c($sp)
/* 036594 80035994 14400006 */ bnez $v0, .L800359B0
/* 036598 80035998 00000000 */ nop
/* 03659C 8003599C 866E0006 */ lh $t6, 6($s3)
/* 0365A0 800359A0 00000000 */ nop
/* 0365A4 800359A4 35CF4000 */ ori $t7, $t6, 0x4000
/* 0365A8 800359A8 10000005 */ b .L800359C0
/* 0365AC 800359AC A66F0006 */ sh $t7, 6($s3)
.L800359B0:
/* 0365B0 800359B0 86780006 */ lh $t8, 6($s3)
/* 0365B4 800359B4 00000000 */ nop
/* 0365B8 800359B8 3319BFFF */ andi $t9, $t8, 0xbfff
/* 0365BC 800359BC A6790006 */ sh $t9, 6($s3)
.L800359C0:
/* 0365C0 800359C0 8E68004C */ lw $t0, 0x4c($s3)
/* 0365C4 800359C4 00000000 */ nop
/* 0365C8 800359C8 91090013 */ lbu $t1, 0x13($t0)
/* 0365CC 800359CC 00000000 */ nop
/* 0365D0 800359D0 29210064 */ slti $at, $t1, 0x64
/* 0365D4 800359D4 1020003D */ beqz $at, .L80035ACC
/* 0365D8 800359D8 8FBF002C */ lw $ra, 0x2c($sp)
/* 0365DC 800359DC 866A0006 */ lh $t2, 6($s3)
/* 0365E0 800359E0 00000000 */ nop
/* 0365E4 800359E4 314B4000 */ andi $t3, $t2, 0x4000
/* 0365E8 800359E8 15600038 */ bnez $t3, .L80035ACC
/* 0365EC 800359EC 8FBF002C */ lw $ra, 0x2c($sp)
/* 0365F0 800359F0 0C006E9D */ jal get_object_struct_array
/* 0365F4 800359F4 27A40040 */ addiu $a0, $sp, 0x40
/* 0365F8 800359F8 8FAC0040 */ lw $t4, 0x40($sp)
/* 0365FC 800359FC 00008825 */ move $s1, $zero
/* 036600 80035A00 19800031 */ blez $t4, .L80035AC8
/* 036604 80035A04 00409025 */ move $s2, $v0
/* 036608 80035A08 24140001 */ li $s4, 1
.L80035A0C:
/* 03660C 80035A0C 8E420000 */ lw $v0, ($s2)
/* 036610 80035A10 00000000 */ nop
/* 036614 80035A14 8C500064 */ lw $s0, 0x64($v0)
/* 036618 80035A18 00000000 */ nop
/* 03661C 80035A1C 920D01F5 */ lbu $t5, 0x1f5($s0)
/* 036620 80035A20 00000000 */ nop
/* 036624 80035A24 15A00024 */ bnez $t5, .L80035AB8
/* 036628 80035A28 8FB90040 */ lw $t9, 0x40($sp)
/* 03662C 80035A2C 820E01D3 */ lb $t6, 0x1d3($s0)
/* 036630 80035A30 00000000 */ nop
/* 036634 80035A34 29C1000F */ slti $at, $t6, 0xf
/* 036638 80035A38 1020001F */ beqz $at, .L80035AB8
/* 03663C 80035A3C 8FB90040 */ lw $t9, 0x40($sp)
/* 036640 80035A40 C444000C */ lwc1 $f4, 0xc($v0)
/* 036644 80035A44 C666000C */ lwc1 $f6, 0xc($s3)
/* 036648 80035A48 C4480010 */ lwc1 $f8, 0x10($v0)
/* 03664C 80035A4C 46062001 */ sub.s $f0, $f4, $f6
/* 036650 80035A50 C66A0010 */ lwc1 $f10, 0x10($s3)
/* 036654 80035A54 46000102 */ mul.s $f4, $f0, $f0
/* 036658 80035A58 460A4081 */ sub.s $f2, $f8, $f10
/* 03665C 80035A5C C4500014 */ lwc1 $f16, 0x14($v0)
/* 036660 80035A60 C6720014 */ lwc1 $f18, 0x14($s3)
/* 036664 80035A64 46021182 */ mul.s $f6, $f2, $f2
/* 036668 80035A68 46128381 */ sub.s $f14, $f16, $f18
/* 03666C 80035A6C 460E7282 */ mul.s $f10, $f14, $f14
/* 036670 80035A70 46062200 */ add.s $f8, $f4, $f6
/* 036674 80035A74 0C0326B4 */ jal sqrtf
/* 036678 80035A78 460A4300 */ add.s $f12, $f8, $f10
/* 03667C 80035A7C 444FF800 */ cfc1 $t7, $31
/* 036680 80035A80 00000000 */ nop
/* 036684 80035A84 35E10003 */ ori $at, $t7, 3
/* 036688 80035A88 38210002 */ xori $at, $at, 2
/* 03668C 80035A8C 44C1F800 */ ctc1 $at, $31
/* 036690 80035A90 00000000 */ nop
/* 036694 80035A94 46000424 */ cvt.w.s $f16, $f0
/* 036698 80035A98 44188000 */ mfc1 $t8, $f16
/* 03669C 80035A9C 44CFF800 */ ctc1 $t7, $31
/* 0366A0 80035AA0 2B010064 */ slti $at, $t8, 0x64
/* 0366A4 80035AA4 10200004 */ beqz $at, .L80035AB8
/* 0366A8 80035AA8 8FB90040 */ lw $t9, 0x40($sp)
/* 0366AC 80035AAC A21401F5 */ sb $s4, 0x1f5($s0)
/* 0366B0 80035AB0 AE13014C */ sw $s3, 0x14c($s0)
/* 0366B4 80035AB4 8FB90040 */ lw $t9, 0x40($sp)
.L80035AB8:
/* 0366B8 80035AB8 26310001 */ addiu $s1, $s1, 1
/* 0366BC 80035ABC 0239082A */ slt $at, $s1, $t9
/* 0366C0 80035AC0 1420FFD2 */ bnez $at, .L80035A0C
/* 0366C4 80035AC4 26520004 */ addiu $s2, $s2, 4
.L80035AC8:
/* 0366C8 80035AC8 8FBF002C */ lw $ra, 0x2c($sp)
.L80035ACC:
/* 0366CC 80035ACC 8FB00018 */ lw $s0, 0x18($sp)
/* 0366D0 80035AD0 8FB1001C */ lw $s1, 0x1c($sp)
/* 0366D4 80035AD4 8FB20020 */ lw $s2, 0x20($sp)
/* 0366D8 80035AD8 8FB30024 */ lw $s3, 0x24($sp)
/* 0366DC 80035ADC 8FB40028 */ lw $s4, 0x28($sp)
/* 0366E0 80035AE0 03E00008 */ jr $ra
/* 0366E4 80035AE4 27BD0058 */ addiu $sp, $sp, 0x58
@@ -1,131 +0,0 @@
glabel obj_loop_bonus
/* 03BD74 8003B174 27BDFF70 */ addiu $sp, $sp, -0x90
/* 03BD78 8003B178 AFBF0054 */ sw $ra, 0x54($sp)
/* 03BD7C 8003B17C AFB60050 */ sw $s6, 0x50($sp)
/* 03BD80 8003B180 AFB5004C */ sw $s5, 0x4c($sp)
/* 03BD84 8003B184 AFB40048 */ sw $s4, 0x48($sp)
/* 03BD88 8003B188 AFB30044 */ sw $s3, 0x44($sp)
/* 03BD8C 8003B18C AFB20040 */ sw $s2, 0x40($sp)
/* 03BD90 8003B190 AFB1003C */ sw $s1, 0x3c($sp)
/* 03BD94 8003B194 AFB00038 */ sw $s0, 0x38($sp)
/* 03BD98 8003B198 E7B90030 */ swc1 $f25, 0x30($sp)
/* 03BD9C 8003B19C E7B80034 */ swc1 $f24, 0x34($sp)
/* 03BDA0 8003B1A0 E7B70028 */ swc1 $f23, 0x28($sp)
/* 03BDA4 8003B1A4 E7B6002C */ swc1 $f22, 0x2c($sp)
/* 03BDA8 8003B1A8 E7B50020 */ swc1 $f21, 0x20($sp)
/* 03BDAC 8003B1AC E7B40024 */ swc1 $f20, 0x24($sp)
/* 03BDB0 8003B1B0 AFA50094 */ sw $a1, 0x94($sp)
/* 03BDB4 8003B1B4 8C940064 */ lw $s4, 0x64($a0)
/* 03BDB8 8003B1B8 8C8E004C */ lw $t6, 0x4c($a0)
/* 03BDBC 8003B1BC 8E820010 */ lw $v0, 0x10($s4)
/* 03BDC0 8003B1C0 91CF0013 */ lbu $t7, 0x13($t6)
/* 03BDC4 8003B1C4 0080A825 */ move $s5, $a0
/* 03BDC8 8003B1C8 01E2082A */ slt $at, $t7, $v0
/* 03BDCC 8003B1CC 10200056 */ beqz $at, .L8003B328
/* 03BDD0 8003B1D0 27A40084 */ addiu $a0, $sp, 0x84
/* 03BDD4 8003B1D4 44822000 */ mtc1 $v0, $f4
/* 03BDD8 8003B1D8 0C006E9D */ jal get_object_struct_array
/* 03BDDC 8003B1DC 468025A0 */ cvt.s.w $f22, $f4
/* 03BDE0 8003B1E0 8FB80084 */ lw $t8, 0x84($sp)
/* 03BDE4 8003B1E4 00009025 */ move $s2, $zero
/* 03BDE8 8003B1E8 1B00004F */ blez $t8, .L8003B328
/* 03BDEC 8003B1EC 3C013FE0 */ li $at, 0x3FE00000 # 1.750000
/* 03BDF0 8003B1F0 44814800 */ mtc1 $at, $f9
/* 03BDF4 8003B1F4 44804000 */ mtc1 $zero, $f8
/* 03BDF8 8003B1F8 4600B1A1 */ cvt.d.s $f6, $f22
/* 03BDFC 8003B1FC 46283282 */ mul.d $f10, $f6, $f8
/* 03BE00 8003B200 4480C000 */ mtc1 $zero, $f24
/* 03BE04 8003B204 00409825 */ move $s3, $v0
/* 03BE08 8003B208 2416000A */ li $s6, 10
/* 03BE0C 8003B20C 46205520 */ cvt.s.d $f20, $f10
.L8003B210:
/* 03BE10 8003B210 8E700000 */ lw $s0, ($s3)
/* 03BE14 8003B214 C6B20010 */ lwc1 $f18, 0x10($s5)
/* 03BE18 8003B218 C6100010 */ lwc1 $f16, 0x10($s0)
/* 03BE1C 8003B21C 8E110064 */ lw $s1, 0x64($s0)
/* 03BE20 8003B220 46128381 */ sub.s $f14, $f16, $f18
/* 03BE24 8003B224 4614703C */ c.lt.s $f14, $f20
/* 03BE28 8003B228 00000000 */ nop
/* 03BE2C 8003B22C 4500003A */ bc1f .L8003B318
/* 03BE30 8003B230 8FAA0084 */ lw $t2, 0x84($sp)
/* 03BE34 8003B234 4600A107 */ neg.s $f4, $f20
/* 03BE38 8003B238 460E203C */ c.lt.s $f4, $f14
/* 03BE3C 8003B23C 00000000 */ nop
/* 03BE40 8003B240 45000035 */ bc1f .L8003B318
/* 03BE44 8003B244 8FAA0084 */ lw $t2, 0x84($sp)
/* 03BE48 8003B248 C606000C */ lwc1 $f6, 0xc($s0)
/* 03BE4C 8003B24C C6A8000C */ lwc1 $f8, 0xc($s5)
/* 03BE50 8003B250 C60A0014 */ lwc1 $f10, 0x14($s0)
/* 03BE54 8003B254 46083001 */ sub.s $f0, $f6, $f8
/* 03BE58 8003B258 C6B00014 */ lwc1 $f16, 0x14($s5)
/* 03BE5C 8003B25C 46000482 */ mul.s $f18, $f0, $f0
/* 03BE60 8003B260 46105081 */ sub.s $f2, $f10, $f16
/* 03BE64 8003B264 460E7102 */ mul.s $f4, $f14, $f14
/* 03BE68 8003B268 00000000 */ nop
/* 03BE6C 8003B26C 46021202 */ mul.s $f8, $f2, $f2
/* 03BE70 8003B270 46049180 */ add.s $f6, $f18, $f4
/* 03BE74 8003B274 0C0326B4 */ jal sqrtf
/* 03BE78 8003B278 46083300 */ add.s $f12, $f6, $f8
/* 03BE7C 8003B27C 4616003C */ c.lt.s $f0, $f22
/* 03BE80 8003B280 00000000 */ nop
/* 03BE84 8003B284 45000024 */ bc1f .L8003B318
/* 03BE88 8003B288 8FAA0084 */ lw $t2, 0x84($sp)
/* 03BE8C 8003B28C C68A0000 */ lwc1 $f10, ($s4)
/* 03BE90 8003B290 C610000C */ lwc1 $f16, 0xc($s0)
/* 03BE94 8003B294 C6840008 */ lwc1 $f4, 8($s4)
/* 03BE98 8003B298 46105482 */ mul.s $f18, $f10, $f16
/* 03BE9C 8003B29C C6060014 */ lwc1 $f6, 0x14($s0)
/* 03BEA0 8003B2A0 C690000C */ lwc1 $f16, 0xc($s4)
/* 03BEA4 8003B2A4 46062202 */ mul.s $f8, $f4, $f6
/* 03BEA8 8003B2A8 46089280 */ add.s $f10, $f18, $f8
/* 03BEAC 8003B2AC 46105000 */ add.s $f0, $f10, $f16
/* 03BEB0 8003B2B0 4618003C */ c.lt.s $f0, $f24
/* 03BEB4 8003B2B4 00000000 */ nop
/* 03BEB8 8003B2B8 45000017 */ bc1f .L8003B318
/* 03BEBC 8003B2BC 8FAA0084 */ lw $t2, 0x84($sp)
/* 03BEC0 8003B2C0 82390185 */ lb $t9, 0x185($s1)
/* 03BEC4 8003B2C4 24040022 */ li $a0, 34
/* 03BEC8 8003B2C8 2B21000A */ slti $at, $t9, 0xa
/* 03BECC 8003B2CC 10200011 */ beqz $at, .L8003B314
/* 03BED0 8003B2D0 24080004 */ li $t0, 4
/* 03BED4 8003B2D4 A2360185 */ sb $s6, 0x185($s1)
/* 03BED8 8003B2D8 8E070014 */ lw $a3, 0x14($s0)
/* 03BEDC 8003B2DC 8E060010 */ lw $a2, 0x10($s0)
/* 03BEE0 8003B2E0 8E05000C */ lw $a1, 0xc($s0)
/* 03BEE4 8003B2E4 AFA00014 */ sw $zero, 0x14($sp)
/* 03BEE8 8003B2E8 0C002556 */ jal func_80009558
/* 03BEEC 8003B2EC AFA80010 */ sw $t0, 0x10($sp)
/* 03BEF0 8003B2F0 82240003 */ lb $a0, 3($s1)
/* 03BEF4 8003B2F4 8E05000C */ lw $a1, 0xc($s0)
/* 03BEF8 8003B2F8 2484007B */ addiu $a0, $a0, 0x7b
/* 03BEFC 8003B2FC 3089FFFF */ andi $t1, $a0, 0xffff
/* 03BF00 8003B300 8E060010 */ lw $a2, 0x10($s0)
/* 03BF04 8003B304 8E070014 */ lw $a3, 0x14($s0)
/* 03BF08 8003B308 AFA00010 */ sw $zero, 0x10($sp)
/* 03BF0C 8003B30C 0C0007AA */ jal func_80001EA8
/* 03BF10 8003B310 01202025 */ move $a0, $t1
.L8003B314:
/* 03BF14 8003B314 8FAA0084 */ lw $t2, 0x84($sp)
.L8003B318:
/* 03BF18 8003B318 26520001 */ addiu $s2, $s2, 1
/* 03BF1C 8003B31C 024A082A */ slt $at, $s2, $t2
/* 03BF20 8003B320 1420FFBB */ bnez $at, .L8003B210
/* 03BF24 8003B324 26730004 */ addiu $s3, $s3, 4
.L8003B328:
/* 03BF28 8003B328 8FBF0054 */ lw $ra, 0x54($sp)
/* 03BF2C 8003B32C C7B50020 */ lwc1 $f21, 0x20($sp)
/* 03BF30 8003B330 C7B40024 */ lwc1 $f20, 0x24($sp)
/* 03BF34 8003B334 C7B70028 */ lwc1 $f23, 0x28($sp)
/* 03BF38 8003B338 C7B6002C */ lwc1 $f22, 0x2c($sp)
/* 03BF3C 8003B33C C7B90030 */ lwc1 $f25, 0x30($sp)
/* 03BF40 8003B340 C7B80034 */ lwc1 $f24, 0x34($sp)
/* 03BF44 8003B344 8FB00038 */ lw $s0, 0x38($sp)
/* 03BF48 8003B348 8FB1003C */ lw $s1, 0x3c($sp)
/* 03BF4C 8003B34C 8FB20040 */ lw $s2, 0x40($sp)
/* 03BF50 8003B350 8FB30044 */ lw $s3, 0x44($sp)
/* 03BF54 8003B354 8FB40048 */ lw $s4, 0x48($sp)
/* 03BF58 8003B358 8FB5004C */ lw $s5, 0x4c($sp)
/* 03BF5C 8003B35C 8FB60050 */ lw $s6, 0x50($sp)
/* 03BF60 8003B360 03E00008 */ jr $ra
/* 03BF64 8003B364 27BD0090 */ addiu $sp, $sp, 0x90
@@ -1,138 +0,0 @@
glabel obj_loop_exit
/* 039B58 80038F58 27BDFF80 */ addiu $sp, $sp, -0x80
/* 039B5C 80038F5C AFBF0044 */ sw $ra, 0x44($sp)
/* 039B60 80038F60 AFB70040 */ sw $s7, 0x40($sp)
/* 039B64 80038F64 AFB6003C */ sw $s6, 0x3c($sp)
/* 039B68 80038F68 AFB50038 */ sw $s5, 0x38($sp)
/* 039B6C 80038F6C AFB40034 */ sw $s4, 0x34($sp)
/* 039B70 80038F70 AFB30030 */ sw $s3, 0x30($sp)
/* 039B74 80038F74 AFB2002C */ sw $s2, 0x2c($sp)
/* 039B78 80038F78 AFB10028 */ sw $s1, 0x28($sp)
/* 039B7C 80038F7C AFB00024 */ sw $s0, 0x24($sp)
/* 039B80 80038F80 E7B70018 */ swc1 $f23, 0x18($sp)
/* 039B84 80038F84 E7B6001C */ swc1 $f22, 0x1c($sp)
/* 039B88 80038F88 E7B50010 */ swc1 $f21, 0x10($sp)
/* 039B8C 80038F8C E7B40014 */ swc1 $f20, 0x14($sp)
/* 039B90 80038F90 AFA50084 */ sw $a1, 0x84($sp)
/* 039B94 80038F94 8C950064 */ lw $s5, 0x64($a0)
/* 039B98 80038F98 0080A025 */ move $s4, $a0
/* 039B9C 80038F9C 0C01BAA4 */ jal get_settings
/* 039BA0 80038FA0 24100001 */ li $s0, 1
/* 039BA4 80038FA4 82A30014 */ lb $v1, 0x14($s5)
/* 039BA8 80038FA8 00000000 */ nop
/* 039BAC 80038FAC 1460000B */ bnez $v1, .L80038FDC
/* 039BB0 80038FB0 24010001 */ li $at, 1
/* 039BB4 80038FB4 904F0048 */ lbu $t7, 0x48($v0)
/* 039BB8 80038FB8 8C4E0000 */ lw $t6, ($v0)
/* 039BBC 80038FBC 000FC040 */ sll $t8, $t7, 1
/* 039BC0 80038FC0 01D8C821 */ addu $t9, $t6, $t8
/* 039BC4 80038FC4 87280000 */ lh $t0, ($t9)
/* 039BC8 80038FC8 24010008 */ li $at, 8
/* 039BCC 80038FCC 15010003 */ bne $t0, $at, .L80038FDC
/* 039BD0 80038FD0 24010001 */ li $at, 1
/* 039BD4 80038FD4 00008025 */ move $s0, $zero
/* 039BD8 80038FD8 24010001 */ li $at, 1
.L80038FDC:
/* 039BDC 80038FDC 1461000B */ bne $v1, $at, .L8003900C
/* 039BE0 80038FE0 00000000 */ nop
/* 039BE4 80038FE4 904A0048 */ lbu $t2, 0x48($v0)
/* 039BE8 80038FE8 8C490000 */ lw $t1, ($v0)
/* 039BEC 80038FEC 000A5840 */ sll $t3, $t2, 1
/* 039BF0 80038FF0 012B6021 */ addu $t4, $t1, $t3
/* 039BF4 80038FF4 858D0000 */ lh $t5, ($t4)
/* 039BF8 80038FF8 00000000 */ nop
/* 039BFC 80038FFC 29A10008 */ slti $at, $t5, 8
/* 039C00 80039000 10200002 */ beqz $at, .L8003900C
/* 039C04 80039004 00000000 */ nop
/* 039C08 80039008 00008025 */ move $s0, $zero
.L8003900C:
/* 039C0C 8003900C 12000046 */ beqz $s0, .L80039128
/* 039C10 80039010 8FBF0044 */ lw $ra, 0x44($sp)
/* 039C14 80039014 8E8F004C */ lw $t7, 0x4c($s4)
/* 039C18 80039018 8EA20010 */ lw $v0, 0x10($s5)
/* 039C1C 8003901C 91EE0013 */ lbu $t6, 0x13($t7)
/* 039C20 80039020 27A40074 */ addiu $a0, $sp, 0x74
/* 039C24 80039024 01C2082A */ slt $at, $t6, $v0
/* 039C28 80039028 1020003F */ beqz $at, .L80039128
/* 039C2C 8003902C 8FBF0044 */ lw $ra, 0x44($sp)
/* 039C30 80039030 44822000 */ mtc1 $v0, $f4
/* 039C34 80039034 0C006E9D */ jal get_object_struct_array
/* 039C38 80039038 468025A0 */ cvt.s.w $f22, $f4
/* 039C3C 8003903C 8FB80074 */ lw $t8, 0x74($sp)
/* 039C40 80039040 00009025 */ move $s2, $zero
/* 039C44 80039044 1B000037 */ blez $t8, .L80039124
/* 039C48 80039048 00409825 */ move $s3, $v0
/* 039C4C 8003904C 4480A000 */ mtc1 $zero, $f20
/* 039C50 80039050 2417FF88 */ li $s7, -120
/* 039C54 80039054 2416FFFF */ li $s6, -1
.L80039058:
/* 039C58 80039058 8E700000 */ lw $s0, ($s3)
/* 039C5C 8003905C 00000000 */ nop
/* 039C60 80039060 8E110064 */ lw $s1, 0x64($s0)
/* 039C64 80039064 00000000 */ nop
/* 039C68 80039068 86390000 */ lh $t9, ($s1)
/* 039C6C 8003906C 00000000 */ nop
/* 039C70 80039070 12D90028 */ beq $s6, $t9, .L80039114
/* 039C74 80039074 8FAA0074 */ lw $t2, 0x74($sp)
/* 039C78 80039078 8E280108 */ lw $t0, 0x108($s1)
/* 039C7C 8003907C 00000000 */ nop
/* 039C80 80039080 15000024 */ bnez $t0, .L80039114
/* 039C84 80039084 8FAA0074 */ lw $t2, 0x74($sp)
/* 039C88 80039088 C606000C */ lwc1 $f6, 0xc($s0)
/* 039C8C 8003908C C688000C */ lwc1 $f8, 0xc($s4)
/* 039C90 80039090 C60A0010 */ lwc1 $f10, 0x10($s0)
/* 039C94 80039094 46083001 */ sub.s $f0, $f6, $f8
/* 039C98 80039098 C6900010 */ lwc1 $f16, 0x10($s4)
/* 039C9C 8003909C 46000182 */ mul.s $f6, $f0, $f0
/* 039CA0 800390A0 46105081 */ sub.s $f2, $f10, $f16
/* 039CA4 800390A4 C6120014 */ lwc1 $f18, 0x14($s0)
/* 039CA8 800390A8 C6840014 */ lwc1 $f4, 0x14($s4)
/* 039CAC 800390AC 46021202 */ mul.s $f8, $f2, $f2
/* 039CB0 800390B0 46049381 */ sub.s $f14, $f18, $f4
/* 039CB4 800390B4 460E7402 */ mul.s $f16, $f14, $f14
/* 039CB8 800390B8 46083280 */ add.s $f10, $f6, $f8
/* 039CBC 800390BC 0C0326B4 */ jal sqrtf
/* 039CC0 800390C0 46105300 */ add.s $f12, $f10, $f16
/* 039CC4 800390C4 4616003C */ c.lt.s $f0, $f22
/* 039CC8 800390C8 00000000 */ nop
/* 039CCC 800390CC 45000011 */ bc1f .L80039114
/* 039CD0 800390D0 8FAA0074 */ lw $t2, 0x74($sp)
/* 039CD4 800390D4 C6B20000 */ lwc1 $f18, ($s5)
/* 039CD8 800390D8 C604000C */ lwc1 $f4, 0xc($s0)
/* 039CDC 800390DC C6A80008 */ lwc1 $f8, 8($s5)
/* 039CE0 800390E0 46049182 */ mul.s $f6, $f18, $f4
/* 039CE4 800390E4 C60A0014 */ lwc1 $f10, 0x14($s0)
/* 039CE8 800390E8 C6A4000C */ lwc1 $f4, 0xc($s5)
/* 039CEC 800390EC 460A4402 */ mul.s $f16, $f8, $f10
/* 039CF0 800390F0 46103480 */ add.s $f18, $f6, $f16
/* 039CF4 800390F4 46049000 */ add.s $f0, $f18, $f4
/* 039CF8 800390F8 4614003C */ c.lt.s $f0, $f20
/* 039CFC 800390FC 00000000 */ nop
/* 039D00 80039100 45000004 */ bc1f .L80039114
/* 039D04 80039104 8FAA0074 */ lw $t2, 0x74($sp)
/* 039D08 80039108 AE340108 */ sw $s4, 0x108($s1)
/* 039D0C 8003910C A2370200 */ sb $s7, 0x200($s1)
/* 039D10 80039110 8FAA0074 */ lw $t2, 0x74($sp)
.L80039114:
/* 039D14 80039114 26520001 */ addiu $s2, $s2, 1
/* 039D18 80039118 024A082A */ slt $at, $s2, $t2
/* 039D1C 8003911C 1420FFCE */ bnez $at, .L80039058
/* 039D20 80039120 26730004 */ addiu $s3, $s3, 4
.L80039124:
/* 039D24 80039124 8FBF0044 */ lw $ra, 0x44($sp)
.L80039128:
/* 039D28 80039128 C7B50010 */ lwc1 $f21, 0x10($sp)
/* 039D2C 8003912C C7B40014 */ lwc1 $f20, 0x14($sp)
/* 039D30 80039130 C7B70018 */ lwc1 $f23, 0x18($sp)
/* 039D34 80039134 C7B6001C */ lwc1 $f22, 0x1c($sp)
/* 039D38 80039138 8FB00024 */ lw $s0, 0x24($sp)
/* 039D3C 8003913C 8FB10028 */ lw $s1, 0x28($sp)
/* 039D40 80039140 8FB2002C */ lw $s2, 0x2c($sp)
/* 039D44 80039144 8FB30030 */ lw $s3, 0x30($sp)
/* 039D48 80039148 8FB40034 */ lw $s4, 0x34($sp)
/* 039D4C 8003914C 8FB50038 */ lw $s5, 0x38($sp)
/* 039D50 80039150 8FB6003C */ lw $s6, 0x3c($sp)
/* 039D54 80039154 8FB70040 */ lw $s7, 0x40($sp)
/* 039D58 80039158 03E00008 */ jr $ra
/* 039D5C 8003915C 27BD0080 */ addiu $sp, $sp, 0x80
@@ -1,124 +0,0 @@
glabel obj_loop_groundzipper
/* 036850 80035C50 27BDFF98 */ addiu $sp, $sp, -0x68
/* 036854 80035C54 AFBF003C */ sw $ra, 0x3c($sp)
/* 036858 80035C58 AFB60038 */ sw $s6, 0x38($sp)
/* 03685C 80035C5C AFB50034 */ sw $s5, 0x34($sp)
/* 036860 80035C60 AFB40030 */ sw $s4, 0x30($sp)
/* 036864 80035C64 AFB3002C */ sw $s3, 0x2c($sp)
/* 036868 80035C68 AFB20028 */ sw $s2, 0x28($sp)
/* 03686C 80035C6C AFB10024 */ sw $s1, 0x24($sp)
/* 036870 80035C70 AFB00020 */ sw $s0, 0x20($sp)
/* 036874 80035C74 AFA5006C */ sw $a1, 0x6c($sp)
/* 036878 80035C78 848E0006 */ lh $t6, 6($a0)
/* 03687C 80035C7C 00809025 */ move $s2, $a0
/* 036880 80035C80 31CFBFFF */ andi $t7, $t6, 0xbfff
/* 036884 80035C84 A48F0006 */ sh $t7, 6($a0)
/* 036888 80035C88 84980006 */ lh $t8, 6($a0)
/* 03688C 80035C8C 00000000 */ nop
/* 036890 80035C90 37191000 */ ori $t9, $t8, 0x1000
/* 036894 80035C94 A4990006 */ sh $t9, 6($a0)
/* 036898 80035C98 0C006EB2 */ jal get_object_struct
/* 03689C 80035C9C 00002025 */ move $a0, $zero
/* 0368A0 80035CA0 8E48004C */ lw $t0, 0x4c($s2)
/* 0368A4 80035CA4 8E4A0078 */ lw $t2, 0x78($s2)
/* 0368A8 80035CA8 91090013 */ lbu $t1, 0x13($t0)
/* 0368AC 80035CAC 00000000 */ nop
/* 0368B0 80035CB0 012A082A */ slt $at, $t1, $t2
/* 0368B4 80035CB4 10200051 */ beqz $at, .L80035DFC
/* 0368B8 80035CB8 8FBF003C */ lw $ra, 0x3c($sp)
/* 0368BC 80035CBC 0C006E9D */ jal get_object_struct_array
/* 0368C0 80035CC0 27A40054 */ addiu $a0, $sp, 0x54
/* 0368C4 80035CC4 8FAB0054 */ lw $t3, 0x54($sp)
/* 0368C8 80035CC8 00009825 */ move $s3, $zero
/* 0368CC 80035CCC 1960004A */ blez $t3, .L80035DF8
/* 0368D0 80035CD0 0040A025 */ move $s4, $v0
/* 0368D4 80035CD4 24160002 */ li $s6, 2
/* 0368D8 80035CD8 2415FFFF */ li $s5, -1
.L80035CDC:
/* 0368DC 80035CDC 8E910000 */ lw $s1, ($s4)
/* 0368E0 80035CE0 00000000 */ nop
/* 0368E4 80035CE4 8E300064 */ lw $s0, 0x64($s1)
/* 0368E8 80035CE8 00000000 */ nop
/* 0368EC 80035CEC 820C01D3 */ lb $t4, 0x1d3($s0)
/* 0368F0 80035CF0 00000000 */ nop
/* 0368F4 80035CF4 2981000F */ slti $at, $t4, 0xf
/* 0368F8 80035CF8 1020003B */ beqz $at, .L80035DE8
/* 0368FC 80035CFC 8FAC0054 */ lw $t4, 0x54($sp)
/* 036900 80035D00 820D01E2 */ lb $t5, 0x1e2($s0)
/* 036904 80035D04 00000000 */ nop
/* 036908 80035D08 11A00037 */ beqz $t5, .L80035DE8
/* 03690C 80035D0C 8FAC0054 */ lw $t4, 0x54($sp)
/* 036910 80035D10 C624000C */ lwc1 $f4, 0xc($s1)
/* 036914 80035D14 C646000C */ lwc1 $f6, 0xc($s2)
/* 036918 80035D18 C6280010 */ lwc1 $f8, 0x10($s1)
/* 03691C 80035D1C 46062001 */ sub.s $f0, $f4, $f6
/* 036920 80035D20 C64A0010 */ lwc1 $f10, 0x10($s2)
/* 036924 80035D24 46000102 */ mul.s $f4, $f0, $f0
/* 036928 80035D28 460A4081 */ sub.s $f2, $f8, $f10
/* 03692C 80035D2C C6300014 */ lwc1 $f16, 0x14($s1)
/* 036930 80035D30 C6520014 */ lwc1 $f18, 0x14($s2)
/* 036934 80035D34 46021182 */ mul.s $f6, $f2, $f2
/* 036938 80035D38 46128381 */ sub.s $f14, $f16, $f18
/* 03693C 80035D3C 460E7282 */ mul.s $f10, $f14, $f14
/* 036940 80035D40 46062200 */ add.s $f8, $f4, $f6
/* 036944 80035D44 0C0326B4 */ jal sqrtf
/* 036948 80035D48 460A4300 */ add.s $f12, $f8, $f10
/* 03694C 80035D4C 444EF800 */ cfc1 $t6, $31
/* 036950 80035D50 8E580078 */ lw $t8, 0x78($s2)
/* 036954 80035D54 35C10003 */ ori $at, $t6, 3
/* 036958 80035D58 38210002 */ xori $at, $at, 2
/* 03695C 80035D5C 44C1F800 */ ctc1 $at, $31
/* 036960 80035D60 00000000 */ nop
/* 036964 80035D64 46000424 */ cvt.w.s $f16, $f0
/* 036968 80035D68 440F8000 */ mfc1 $t7, $f16
/* 03696C 80035D6C 44CEF800 */ ctc1 $t6, $31
/* 036970 80035D70 01F8082A */ slt $at, $t7, $t8
/* 036974 80035D74 1020001C */ beqz $at, .L80035DE8
/* 036978 80035D78 8FAC0054 */ lw $t4, 0x54($sp)
/* 03697C 80035D7C 86190000 */ lh $t9, ($s0)
/* 036980 80035D80 24040107 */ li $a0, 263
/* 036984 80035D84 12B90006 */ beq $s5, $t9, .L80035DA0
/* 036988 80035D88 00000000 */ nop
/* 03698C 80035D8C 8E25000C */ lw $a1, 0xc($s1)
/* 036990 80035D90 8E260010 */ lw $a2, 0x10($s1)
/* 036994 80035D94 8E270014 */ lw $a3, 0x14($s1)
/* 036998 80035D98 0C0007AA */ jal func_80001EA8
/* 03699C 80035D9C AFA00010 */ sw $zero, 0x10($sp)
.L80035DA0:
/* 0369A0 80035DA0 0C00322D */ jal func_8000C8B4
/* 0369A4 80035DA4 2404002D */ li $a0, 45
/* 0369A8 80035DA8 9208020C */ lbu $t0, 0x20c($s0)
/* 0369AC 80035DAC A20201D3 */ sb $v0, 0x1d3($s0)
/* 0369B0 80035DB0 11000005 */ beqz $t0, .L80035DC8
/* 0369B4 80035DB4 A2160203 */ sb $s6, 0x203($s0)
/* 0369B8 80035DB8 82090203 */ lb $t1, 0x203($s0)
/* 0369BC 80035DBC 00000000 */ nop
/* 0369C0 80035DC0 352A0004 */ ori $t2, $t1, 4
/* 0369C4 80035DC4 A20A0203 */ sb $t2, 0x203($s0)
.L80035DC8:
/* 0369C8 80035DC8 820B01D8 */ lb $t3, 0x1d8($s0)
/* 0369CC 80035DCC 00000000 */ nop
/* 0369D0 80035DD0 15600005 */ bnez $t3, .L80035DE8
/* 0369D4 80035DD4 8FAC0054 */ lw $t4, 0x54($sp)
/* 0369D8 80035DD8 86040000 */ lh $a0, ($s0)
/* 0369DC 80035DDC 0C01C8D2 */ jal func_80072348
/* 0369E0 80035DE0 24050008 */ li $a1, 8
/* 0369E4 80035DE4 8FAC0054 */ lw $t4, 0x54($sp)
.L80035DE8:
/* 0369E8 80035DE8 26730001 */ addiu $s3, $s3, 1
/* 0369EC 80035DEC 026C082A */ slt $at, $s3, $t4
/* 0369F0 80035DF0 1420FFBA */ bnez $at, .L80035CDC
/* 0369F4 80035DF4 26940004 */ addiu $s4, $s4, 4
.L80035DF8:
/* 0369F8 80035DF8 8FBF003C */ lw $ra, 0x3c($sp)
.L80035DFC:
/* 0369FC 80035DFC 8FB00020 */ lw $s0, 0x20($sp)
/* 036A00 80035E00 8FB10024 */ lw $s1, 0x24($sp)
/* 036A04 80035E04 8FB20028 */ lw $s2, 0x28($sp)
/* 036A08 80035E08 8FB3002C */ lw $s3, 0x2c($sp)
/* 036A0C 80035E0C 8FB40030 */ lw $s4, 0x30($sp)
/* 036A10 80035E10 8FB50034 */ lw $s5, 0x34($sp)
/* 036A14 80035E14 8FB60038 */ lw $s6, 0x38($sp)
/* 036A18 80035E18 03E00008 */ jr $ra
/* 036A1C 80035E1C 27BD0068 */ addiu $sp, $sp, 0x68
+23
View File
@@ -91,6 +91,17 @@ typedef struct LevelObjectEntry_Checkpoint {
typedef struct LevelObjectEntry_Door {
/* 0x00 */ LevelObjectEntryCommon common;
/* 0x08 */ u8 closedRotation;
/* 0x09 */ u8 openRotation;
/* 0x0A */ u8 modelIndex;
/* 0x0B */ u8 distanceToOpen;
/* 0x0C */ s8 unkC;
/* 0x0D */ u8 numBalloonsToOpen;
/* 0x0E */ u8 unkE;
/* 0x0F */ u8 unkF;
/* 0x10 */ u8 unk10;
/* 0x11 */ s8 unk11;
/* 0x12 */ u8 scale;
} LevelObjectEntry_Door;
typedef struct LevelObjectEntry_FogChanger {
@@ -246,6 +257,12 @@ typedef struct LevelObjectEntry_InfoPoint {
typedef struct LevelObjectEntry_Trigger {
/* 0x00 */ LevelObjectEntryCommon common;
/* 0x08 */ u8 scale;
/* 0x09 */ s8 unk9;
/* 0x0A */ u8 rotation;
/* 0x0B */ u8 unkB;
/* 0x0C */ u8 unkC;
/* 0x0D */ u8 unkD;
} LevelObjectEntry_Trigger;
typedef struct LevelObjectEntry_AirZippers_WaterZippers {
@@ -336,6 +353,9 @@ typedef struct LevelObjectEntry_FlyCoin {
typedef struct LevelObjectEntry_GoldenBalloon {
/* 0x00 */ LevelObjectEntryCommon common;
/* 0x08 */ s8 unk8;
/* 0x09 */ u8 scale;
/* 0x0A */ s8 unkA;
} LevelObjectEntry_GoldenBalloon;
typedef struct LevelObjectEntry_Laserbolt {
@@ -354,6 +374,9 @@ typedef struct LevelObjectEntry_Lasergun {
typedef struct LevelObjectEntry_GroundZipper {
/* 0x00 */ LevelObjectEntryCommon common;
/* 0x08 */ u8 unk8;
/* 0x09 */ u8 scale;
/* 0x0A */ u8 rotation;
} LevelObjectEntry_GroundZipper;
typedef struct LevelObjectEntry_OverridePos {
+2 -1
View File
@@ -530,7 +530,8 @@ typedef struct Object_4C {
} Object_4C;
typedef struct Object_50 {
u8 pad0[0x8];
f32 unk0;
u8 pad4[0x4];
s16 unk8;
s16 unkA;
} Object_50;
+397 -11
View File
@@ -241,7 +241,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 speed) {
Object80033F60_64 *obj64;
Object *obj4C_obj;
f32 phi_f2;
s32* temp;
s32 *temp;
f32 sp4C[7];
obj78 = (Object*)obj->unk78;
@@ -806,9 +806,113 @@ void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_W
}
}
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_airzippers_waterzippers.s")
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_groundzipper.s")
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_groundzipper.s")
void obj_loop_airzippers_waterzippers(Object *obj, s32 speed) {
Object *curRacerObj;
Object_64_Racer *racerObj64;
f32 xDiff;
f32 yDiff;
f32 zDiff;
s32 numObjects;
Object** racerObjs;
s32 i;
if (func_8000E1CC() == 0) {
obj->unk6 |= 0x4000;
} else {
obj->unk6 &= 0xBFFF;
}
if ((obj->unk4C->unk13 < 100) && !(obj->unk6 & 0x4000)) {
racerObjs = get_object_struct_array(&numObjects);
for (i = 0; i < numObjects; i++) {
curRacerObj = racerObjs[i];
racerObj64 = (Object_64_Racer*)curRacerObj->unk64;
if ((racerObj64->unk1F5 == 0) && (racerObj64->unk1D3 < 15)) {
xDiff = curRacerObj->x_position - obj->x_position;
yDiff = curRacerObj->y_position - obj->y_position;
zDiff = curRacerObj->z_position - obj->z_position;
if ((s32) sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < 100) {
racerObj64->unk1F5 = 1;
racerObj64->unk14C = obj;
}
}
}
}
}
void obj_init_groundzipper(Object *arg0, LevelObjectEntry_GroundZipper *entry) {
ObjectHeader *header;
f32 objScale;
objScale = entry->scale & 0xFF;
if (objScale < 10.0f) {
objScale = 10.0f;
}
objScale /= 64;
header = arg0->header;
arg0->scale = header->scale * objScale;
arg0->unk50->unk0 = header->unk4 * objScale;
arg0->y_rotation = entry->rotation << 6 << 4;
if (arg0->unk3A >= arg0->header->numberOfModelIds) {
arg0->unk3A = 0;
}
arg0->unk78 = (s32)(28.0f * objScale) + 15;
if (arg0->unk78 < 0) {
arg0->unk78 = 0;
}
if (arg0->unk78 >= 0x100) {
arg0->unk78 = 0xFF;
}
arg0->unk4C->unk14 = 2;
arg0->unk4C->unk11 = 0;
arg0->unk4C->unk10 = 0x14;
arg0->unk4C->unk12 = 0;
arg0->unk4C->unk16 = -0x64;
arg0->unk4C->unk17 = 0x64;
if (get_filtered_cheats() & CHEAT_TURN_OFF_ZIPPERS) {
gParticlePtrList_addObject(arg0);
}
}
void obj_loop_groundzipper(Object *obj, s32 speed) {
Object *curRacerObj;
Object_64_Racer *racerObj64;
f32 xDiff;
f32 yDiff;
s32 numObjects;
f32 zDiff;
Object** racerObjs;
s32 i;
obj->unk6 &= 0xBFFF;
obj->unk6 |= 0x1000;
get_object_struct(0); // Unused. I guess the developers forgot to remove this?
if ((s32) obj->unk4C->unk13 < obj->unk78) {
racerObjs = get_object_struct_array(&numObjects);
for (i = 0; i < numObjects; i++) {
curRacerObj = racerObjs[i];
racerObj64 = (Object_64_Racer*)curRacerObj->unk64;
if ((racerObj64->unk1D3 < 15) && (racerObj64->unk1E2 != 0)) {
xDiff = curRacerObj->x_position - obj->x_position;
yDiff = curRacerObj->y_position - obj->y_position;
zDiff = curRacerObj->z_position - obj->z_position;
if ((s32) sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < obj->unk78) {
if (racerObj64->unk0 != -1) {
func_80001EA8(263, curRacerObj->x_position, curRacerObj->y_position, curRacerObj->z_position, NULL);
}
racerObj64->unk1D3 = func_8000C8B4(45);
racerObj64->unk203 = 2;
if (racerObj64->unk20C) {
racerObj64->unk203 |= 4;
}
if (racerObj64->unk1D8 == 0) {
func_80072348(racerObj64->unk0, 8);
}
}
}
}
}
}
void obj_init_unknown58(Object *obj, LevelObjectEntry_Unknown58 *entry) {
obj->unk78 = 0;
@@ -1270,7 +1374,54 @@ void obj_init_exit(Object *obj, LevelObjectEntry_Exit *entry) {
obj->unk4C->unk12 = 0;
}
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_exit.s")
void obj_loop_exit(Object *obj, s32 speed) {
Object *racerObj;
Object_64_Racer *racerObj64;
s32 numberOfRacers;
Settings *settings;
f32 xDiff;
f32 zDiff;
f32 dist;
f32 yDiff;
Object_64_Exit *obj64;
s32 someBool;
Object** racerObjects;
s32 i;
f32 temp;
obj64 = (Object_64_Exit*)obj->unk64;
someBool = TRUE;
settings = get_settings();
if ((obj64->unk14 == 0) && (settings->balloonsPtr[settings->worldId] == 8)) {
someBool = FALSE;
}
if ((obj64->unk14 == 1) && (settings->balloonsPtr[settings->worldId] < 8)) {
someBool = FALSE;
}
if (someBool) {
if (obj->unk4C->unk13 < obj64->unk10) {
dist = obj64->unk10;
racerObjects = get_object_struct_array(&numberOfRacers);
for (i = 0; i < numberOfRacers; i++) {
racerObj = racerObjects[i];
racerObj64 = (Object_64_Racer*)racerObj->unk64;
if ((racerObj64->unk0 != -1) && (racerObj64->unk108 == 0)) {
xDiff = racerObj->x_position - obj->x_position;
yDiff = racerObj->y_position - obj->y_position;
zDiff = racerObj->z_position - obj->z_position;
if ((sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < dist)) {
temp = (obj64->unk0 * racerObj->x_position) + (obj64->unk8 * racerObj->z_position) + obj64->unkC;
if (temp < 0.0f) {
racerObj64->unk108 = obj;
racerObj64->unk200 = -120;
}
}
}
}
}
}
}
void obj_init_cameracontrol(Object *obj, LevelObjectEntry_CameraControl *entry) {
obj->unk78 = entry->unk8;
@@ -1373,7 +1524,7 @@ void obj_loop_checkpoint(Object *obj, s32 speed) {
void obj_init_modechange(Object *obj, LevelObjectEntry_ModeChange *entry) {
f32 phi_f0;
Object_64_8003AD34 *obj64;
Object_64_ModeChange *obj64;
phi_f0 = entry->unk8 & 0xFF;
if (phi_f0 < 5) {
phi_f0 = 5;
@@ -1398,7 +1549,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_modechange.s")
void obj_init_bonus(Object *obj, LevelObjectEntry_Bonus *entry) {
f32 phi_f0;
Object_64_8003AD34 *obj64;
Object_64_Bonus *obj64;
phi_f0 = entry->unk8 & 0xFF;
if (phi_f0 < 5) {
phi_f0 = 5;
@@ -1419,10 +1570,213 @@ void obj_init_bonus(Object *obj, LevelObjectEntry_Bonus *entry) {
obj->unk4C->unk12 = 0;
}
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_bonus.s")
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_goldenballoon.s")
void obj_loop_bonus(Object *obj, s32 speed) {
Object *racerObj;
Object_64_Racer *racerObj64;
s32 numberOfRacers;
f32 xDiff;
f32 yDiff;
f32 halfDist;
f32 dist;
f32 zDiff;
Object_64_Bonus *obj64;
Object **racerObjects;
s32 i;
obj64 = (Object_64_Bonus *)obj->unk64;
if (obj->unk4C->unk13 < obj64->unk10) {
dist = obj64->unk10;
halfDist = dist * 0.5;
racerObjects = get_object_struct_array(&numberOfRacers);
for (i = 0; i < numberOfRacers; i++) {
racerObj = racerObjects[i];
racerObj64 = (Object_64_Racer *)racerObj->unk64;
yDiff = racerObj->y_position - obj->y_position;
if ((yDiff < halfDist) && (-halfDist < yDiff)) {
xDiff = racerObj->x_position - obj->x_position;
zDiff = racerObj->z_position - obj->z_position;
if ((sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < dist)) {
f32 temp = (obj64->unk0 * racerObj->x_position) + (obj64->unk8 * racerObj->z_position) + obj64->unkC;
if (temp < 0.0f) {
if ((s32) racerObj64->unk185 < 10) {
racerObj64->unk185 = 10;
func_80009558(34, racerObj->x_position, racerObj->y_position, racerObj->z_position, 4, NULL);
func_80001EA8(racerObj64->unk3 + 123, racerObj->x_position, racerObj->y_position, racerObj->z_position, NULL);
}
}
}
}
}
}
}
void obj_init_goldenballoon(Object *obj, LevelObjectEntry_GoldenBalloon *entry) {
Object_64_GoldenBalloon *obj64;
f32 scalef;
if (entry->unk8 == -1) {
entry->unk8 = func_8000CC20(obj);
} else {
func_8000CBF0(obj, entry->unk8);
}
if (entry->unk8 == -1) {
rmonPrintf("Illegal door no!!!\n"); // Did the devs just copy-paste the door init function?
}
obj->unk4C->unk14 = 2;
obj->unk4C->unk11 = 4;
obj->unk4C->unk10 = 20;
obj->unk4C->unk12 = 0;
scalef = entry->scale & 0xFF;
if (scalef < 10.0f) {
scalef = 10.0f;
}
scalef /= 64;
obj->scale = obj->header->scale * scalef;
obj64 = obj->unk64;
obj64->unkD = 255;
obj64->unk0 = 0.0f;
obj->unk78 = 0;
if (entry->unkA != 0) {
if ((get_settings()->tajFlags & (1 << (entry->unkA + 2))) != 0) {
obj->unk78 = 0;
} else {
obj->unk78 = 1;
}
}
}
#ifdef NON_EQUIVALENT
// Has regalloc issues.
void obj_loop_goldenballoon(Object *obj, s32 speed) {
s32 padding[1];
Object_3C *obj3C;
Object_4C *obj4C;
Object_64_GoldenBalloon *obj64;
Settings *settings;
s32 flag;
s32 doubleSpeed;
Object *racerObj;
f32 sp2C;
f32 speedf;
s32 someBool;
sp2C = speed;
if (osTvType == TV_TYPE_PAL) {
sp2C *= 1.2;
}
someBool = FALSE;
if ((*(s32*)0xA0000284) != 0x240B17D7) {
someBool = TRUE;
}
speedf = sp2C;
settings = get_settings();
obj3C = obj->unk3C_a.unk3C;
flag = 0x10000 << obj3C->unk8;
if (settings->courseFlagsPtr[settings->courseId] & flag) {
if (obj->unk7C.word > 0) {
obj->unk74 = 2;
func_800AFC3C(obj, speed);
obj->unk7C.word -= speed;
} else {
gParticlePtrList_addObject(obj);
}
} else {
obj->unk6 |= 0x4000;
if (obj->unk78 == 0) {
obj->unk6 &= 0xBFFF;
doubleSpeed = speed * 2;
if (obj->unk39 < (255 - doubleSpeed)) {
obj->unk39 += doubleSpeed;
} else {
obj->unk39 = 255;
}
obj4C = obj->unk4C;
if ((obj4C->unk13 < 45) && (someBool == FALSE)) {
racerObj = obj4C->unk0;
if (racerObj && (racerObj->header->behaviorId == 1) && (((Object_64_Racer *)racerObj->unk64)->unk0 == 0)) {
settings->balloonsPtr[settings->worldId]++;
if (settings->worldId != 0) {
settings->balloonsPtr[0]++;
}
settings->courseFlagsPtr[settings->courseId] |= flag;
func_80001EA8(573, obj->x_position, obj->y_position, obj->z_position, NULL);
obj->unk7C.word = 16;
obj->unk74 = 2;
obj->unk6 |= 0x4000;
func_800AFC3C(obj, speed);
}
}
obj64 = (Object_64_GoldenBalloon *)obj->unk64;
obj->unk3B = 0;
obj64->unk14 = 0.0f;
if (obj->unk39 < 255) {
speedf = 0.0f;
} else {
speedf = 1.0f;
}
if (obj64->unkD == 255) {
obj64->unkD = func_8001C524(obj->x_position, obj->y_position, obj->z_position, 0);
if (obj64->unkD != 255) {
obj64->unkE = func_8001CC48(obj64->unkD, -1, 0);
obj64->unkF = func_8001CC48(obj64->unkE, obj64->unkD, 0);
obj64->unk10 = func_8001CC48(obj64->unkF, obj64->unkE, 0);
obj64->unkC = obj64->unkD;
}
} else {
func_8001C6C4(obj64, obj, sp2C, speedf, 0);
}
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_goldenballoon.s")
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_door.s")
#endif
void obj_init_door(Object *obj, LevelObjectEntry_Door *entry) {
Object_64_Door *obj64;
f32 phi_f0;
obj64 = (Object_64_Door *)obj->unk64;
if (entry->unkC == -1) {
entry->unkC = func_8000CC20(obj);
} else {
func_8000CBF0(obj, entry->unkC);
}
obj64->unkE = entry->unkC;
obj64->unkF = entry->unkE;
obj64->unk11 = entry->numBalloonsToOpen;
obj64->unk10 = entry->numBalloonsToOpen;
obj64->unk12 = entry->distanceToOpen;
if (obj64->unkE == -1) {
rmonPrintf("Illegal door no!!!\n");
}
obj->unk3A = entry->modelIndex;
obj->y_rotation = entry->closedRotation << 6 << 4;
obj64->unk0 = obj->y_position;
obj64->unk8 = 0;
obj->unk78 = obj->y_rotation;
obj->unk7C.word = (s32) ((entry->openRotation & 0x3F) << 10);
phi_f0 = entry->scale & 0xFF;
if (phi_f0 < 10.0f) {
phi_f0 = 10.0f;
}
phi_f0 /= 64;
obj->scale = obj->header->scale * phi_f0;
obj64->unk13 = (u8) entry->unkF;
obj64->unk14 = (s8) entry->unk11;
obj->unk4C->unk14 = 0x21;
obj->unk4C->unk11 = 2;
obj->unk4C->unk10 = 0x14;
obj->unk4C->unk12 = 0;
if (obj->unk3A >= obj->header->numberOfModelIds) {
obj->unk3A = 0;
}
}
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_door.s")
void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) {
@@ -1456,7 +1810,39 @@ void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) {
}
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_ttdoor.s")
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_trigger.s")
void obj_init_trigger(Object *obj, LevelObjectEntry_Trigger *entry) {
f32 phi_f0;
Object_64_Trigger *obj64;
if (entry->unk9 == -1) {
entry->unk9 = func_8000CC20(obj);
} else {
func_8000CBF0(obj, entry->unk9);
}
if (entry->unk9 == -1) {
rmonPrintf("Illegal door no!!!\n");
}
phi_f0 = (s32)entry->scale & 0xFF;
if (phi_f0 < 5.0f) {
phi_f0 = 5.0f;
}
obj64 = (Object_64_Trigger*)obj->unk64;
phi_f0 /= 128;
obj->scale = phi_f0;
obj->y_rotation = entry->rotation << 6 << 4;
obj64->unk0 = func_800707C4(obj->y_rotation);
obj64->unk4 = 0.0f;
obj64->unk8 = func_800707F8(obj->y_rotation);
obj64->unkC = -((obj64->unk0 * obj->x_position) + (obj64->unk8 * obj->z_position));
obj64->unk10 = entry->scale;
obj64->unk14 = entry->unkD;
obj->unk4C->unk14 = 2;
obj->unk4C->unk11 = 0;
obj->unk4C->unk10 = entry->scale;
obj->unk4C->unk12 = 0;
}
GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_trigger.s")
void obj_init_bridge_whaleramp(Object *obj, LevelObjectEntry_Bridge_WhaleRamp *entry) {
+96 -9
View File
@@ -182,15 +182,6 @@ typedef struct unk80039190 {
s32 unk7C;
} unk80039190;
typedef struct Object_64_8003AD34 {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_8003AD34;
typedef struct Object_64_8003C1E0 {
f32 unk0;
u8 pad4[4];
@@ -368,6 +359,97 @@ typedef struct unk80042CD0 {
s16 unk18;
} unk80042CD0;
//void func_80072348(s16 obj, u8 arg1);
typedef struct Object_64_Exit {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_Exit;
typedef struct Object_64_Racer {
s16 unk0;
u8 pad2;
s8 unk3;
u8 pad4[0x104];
s32 unk108;
u8 pad10C[0x40];
Object *unk14C;
u8 pad150[0x33];
s8 unk183;
s8 pad184;
s8 unk185;
u8 pad186[0x4D];
s8 unk1D3;
u8 pad1D4[0x4];
s8 unk1D8;
u8 pad1D9[0x9];
s8 unk1E2;
u8 pad1E3[0x12];
u8 unk1F5;
u8 pad1F6[0xA];
s8 unk200;
u8 pad201[0x2];
s8 unk203;
u8 pad204[0x8];
u8 unk20C;
} Object_64_Racer;
typedef struct Object_64_Bonus {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_Bonus;
typedef struct Object_64_ModeChange {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_ModeChange;
typedef struct Object_64_GoldenBalloon {
f32 unk0;
u8 pad4[0x8];
u8 unkC;
u8 unkD;
u8 unkE;
u8 unkF;
s8 unk10;
f32 unk14;
} Object_64_GoldenBalloon;
typedef struct Object_64_Door {
f32 unk0;
u8 pad4[0x4];
s32 unk8;
s16 padA;
s8 unkE;
u8 unkF;
u8 unk10;
u8 unk11;
u8 unk12;
u8 unk13;
u8 unk14;
} Object_64_Door;
typedef struct Object_64_Trigger {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_Trigger;
// Unsure about the signed/unsigned with these arrays.
extern u16 D_800DC970[4];
extern u16 D_800DC978[4];
@@ -506,4 +588,9 @@ void obj_loop_vehicleanim(Object *obj, s32 speed);
void obj_loop_snowball(Object *obj, s32 speed);
void obj_loop_goldenballoon(Object *obj, s32 speed);
s32 func_8001C524(f32 x, f32 y, f32 z, s32 arg3);
s32 func_8001CC48(s32, s32, s32);
void func_8001C6C4(Object_64_GoldenBalloon *obj64, Object *obj, f32, f32, s32);
void func_8000CBF0(Object*, s32);
#endif