diff --git a/asm/non_matchings/code_800393C0/func_8003CD98.s b/asm/non_matchings/code_800393C0/func_8003CD98.s new file mode 100644 index 000000000..ced89f267 --- /dev/null +++ b/asm/non_matchings/code_800393C0/func_8003CD98.s @@ -0,0 +1,192 @@ +glabel func_8003CD98 +/* 3D998 8003CD98 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 3D99C 8003CD9C AFBF002C */ sw $ra, 0x2c($sp) +/* 3D9A0 8003CDA0 AFB20028 */ sw $s2, 0x28($sp) +/* 3D9A4 8003CDA4 AFB10024 */ sw $s1, 0x24($sp) +/* 3D9A8 8003CDA8 AFB00020 */ sw $s0, 0x20($sp) +/* 3D9AC 8003CDAC AFA50034 */ sw $a1, 0x34($sp) +/* 3D9B0 8003CDB0 AFA60038 */ sw $a2, 0x38($sp) +/* 3D9B4 8003CDB4 AFA7003C */ sw $a3, 0x3c($sp) +/* 3D9B8 8003CDB8 94980000 */ lhu $t8, ($a0) +/* 3D9BC 8003CDBC 00078600 */ sll $s0, $a3, 0x18 +/* 3D9C0 8003CDC0 00068E00 */ sll $s1, $a2, 0x18 +/* 3D9C4 8003CDC4 00117603 */ sra $t6, $s1, 0x18 +/* 3D9C8 8003CDC8 00107E03 */ sra $t7, $s0, 0x18 +/* 3D9CC 8003CDCC 33198000 */ andi $t9, $t8, 0x8000 +/* 3D9D0 8003CDD0 01E08025 */ or $s0, $t7, $zero +/* 3D9D4 8003CDD4 01C08825 */ or $s1, $t6, $zero +/* 3D9D8 8003CDD8 132000A3 */ beqz $t9, .L8003D068 +/* 3D9DC 8003CDDC 00809025 */ or $s2, $a0, $zero +/* 3D9E0 8003CDE0 15E00007 */ bnez $t7, .L8003CE00 +/* 3D9E4 8003CDE4 000F3600 */ sll $a2, $t7, 0x18 +/* 3D9E8 8003CDE8 000E3E00 */ sll $a3, $t6, 0x18 +/* 3D9EC 8003CDEC 00074E03 */ sra $t1, $a3, 0x18 +/* 3D9F0 8003CDF0 00064603 */ sra $t0, $a2, 0x18 +/* 3D9F4 8003CDF4 01003025 */ or $a2, $t0, $zero +/* 3D9F8 8003CDF8 0C00B49A */ jal func_8002D268 +/* 3D9FC 8003CDFC 01203825 */ or $a3, $t1, $zero +.L8003CE00: +/* 3DA00 8003CE00 00103600 */ sll $a2, $s0, 0x18 +/* 3DA04 8003CE04 00113E00 */ sll $a3, $s1, 0x18 +/* 3DA08 8003CE08 00075E03 */ sra $t3, $a3, 0x18 +/* 3DA0C 8003CE0C 00065603 */ sra $t2, $a2, 0x18 +/* 3DA10 8003CE10 01403025 */ or $a2, $t2, $zero +/* 3DA14 8003CE14 01603825 */ or $a3, $t3, $zero +/* 3DA18 8003CE18 02402025 */ or $a0, $s2, $zero +/* 3DA1C 8003CE1C 0C00A4D3 */ jal func_8002934C +/* 3DA20 8003CE20 8FA50034 */ lw $a1, 0x34($sp) +/* 3DA24 8003CE24 12000003 */ beqz $s0, .L8003CE34 +/* 3DA28 8003CE28 24010001 */ addiu $at, $zero, 1 +/* 3DA2C 8003CE2C 16010036 */ bne $s0, $at, .L8003CF08 +/* 3DA30 8003CE30 02402025 */ or $a0, $s2, $zero +.L8003CE34: +/* 3DA34 8003CE34 00112E00 */ sll $a1, $s1, 0x18 +/* 3DA38 8003CE38 00103600 */ sll $a2, $s0, 0x18 +/* 3DA3C 8003CE3C 00066E03 */ sra $t5, $a2, 0x18 +/* 3DA40 8003CE40 00056603 */ sra $t4, $a1, 0x18 +/* 3DA44 8003CE44 01802825 */ or $a1, $t4, $zero +/* 3DA48 8003CE48 01A03025 */ or $a2, $t5, $zero +/* 3DA4C 8003CE4C 02402025 */ or $a0, $s2, $zero +/* 3DA50 8003CE50 0C009E88 */ jal func_80027A20 +/* 3DA54 8003CE54 00003825 */ or $a3, $zero, $zero +/* 3DA58 8003CE58 00112E00 */ sll $a1, $s1, 0x18 +/* 3DA5C 8003CE5C 00103600 */ sll $a2, $s0, 0x18 +/* 3DA60 8003CE60 00067E03 */ sra $t7, $a2, 0x18 +/* 3DA64 8003CE64 00057603 */ sra $t6, $a1, 0x18 +/* 3DA68 8003CE68 01C02825 */ or $a1, $t6, $zero +/* 3DA6C 8003CE6C 01E03025 */ or $a2, $t7, $zero +/* 3DA70 8003CE70 02402025 */ or $a0, $s2, $zero +/* 3DA74 8003CE74 0C009E88 */ jal func_80027A20 +/* 3DA78 8003CE78 24070001 */ addiu $a3, $zero, 1 +/* 3DA7C 8003CE7C 00112E00 */ sll $a1, $s1, 0x18 +/* 3DA80 8003CE80 00103600 */ sll $a2, $s0, 0x18 +/* 3DA84 8003CE84 00103E00 */ sll $a3, $s0, 0x18 +/* 3DA88 8003CE88 00074603 */ sra $t0, $a3, 0x18 +/* 3DA8C 8003CE8C 0006CE03 */ sra $t9, $a2, 0x18 +/* 3DA90 8003CE90 0005C603 */ sra $t8, $a1, 0x18 +/* 3DA94 8003CE94 03002825 */ or $a1, $t8, $zero +/* 3DA98 8003CE98 03203025 */ or $a2, $t9, $zero +/* 3DA9C 8003CE9C 01003825 */ or $a3, $t0, $zero +/* 3DAA0 8003CEA0 02402025 */ or $a0, $s2, $zero +/* 3DAA4 8003CEA4 0C009C10 */ jal func_80027040 +/* 3DAA8 8003CEA8 AFA00010 */ sw $zero, 0x10($sp) +/* 3DAAC 8003CEAC 001048C0 */ sll $t1, $s0, 3 +/* 3DAB0 8003CEB0 001150C0 */ sll $t2, $s1, 3 +/* 3DAB4 8003CEB4 01515021 */ addu $t2, $t2, $s1 +/* 3DAB8 8003CEB8 01304821 */ addu $t1, $t1, $s0 +/* 3DABC 8003CEBC 000948C0 */ sll $t1, $t1, 3 +/* 3DAC0 8003CEC0 000A50C0 */ sll $t2, $t2, 3 +/* 3DAC4 8003CEC4 01515021 */ addu $t2, $t2, $s1 +/* 3DAC8 8003CEC8 01304821 */ addu $t1, $t1, $s0 +/* 3DACC 8003CECC 00094A00 */ sll $t1, $t1, 8 +/* 3DAD0 8003CED0 000A5140 */ sll $t2, $t2, 5 +/* 3DAD4 8003CED4 3C0C802E */ lui $t4, 0x802e +/* 3DAD8 8003CED8 00106BC0 */ sll $t5, $s0, 0xf +/* 3DADC 8003CEDC 00117300 */ sll $t6, $s1, 0xc +/* 3DAE0 8003CEE0 3C18802C */ lui $t8, %hi(D_802BFB80) +/* 3DAE4 8003CEE4 2718FB80 */ addiu $t8, $t8, %lo(D_802BFB80) +/* 3DAE8 8003CEE8 01AE7821 */ addu $t7, $t5, $t6 +/* 3DAEC 8003CEEC 258CFB80 */ addiu $t4, $t4, -0x480 +/* 3DAF0 8003CEF0 012A5821 */ addu $t3, $t1, $t2 +/* 3DAF4 8003CEF4 016C2021 */ addu $a0, $t3, $t4 +/* 3DAF8 8003CEF8 0C010034 */ jal func_800400D0 +/* 3DAFC 8003CEFC 01F82821 */ addu $a1, $t7, $t8 +/* 3DB00 8003CF00 10000038 */ b .L8003CFE4 +/* 3DB04 8003CF04 0010C040 */ sll $t8, $s0, 1 +.L8003CF08: +/* 3DB08 8003CF08 00112E00 */ sll $a1, $s1, 0x18 +/* 3DB0C 8003CF0C 00103600 */ sll $a2, $s0, 0x18 +/* 3DB10 8003CF10 00064603 */ sra $t0, $a2, 0x18 +/* 3DB14 8003CF14 0005CE03 */ sra $t9, $a1, 0x18 +/* 3DB18 8003CF18 03202825 */ or $a1, $t9, $zero +/* 3DB1C 8003CF1C 01003025 */ or $a2, $t0, $zero +/* 3DB20 8003CF20 0C009E88 */ jal func_80027A20 +/* 3DB24 8003CF24 00003825 */ or $a3, $zero, $zero +/* 3DB28 8003CF28 00112E00 */ sll $a1, $s1, 0x18 +/* 3DB2C 8003CF2C 00103600 */ sll $a2, $s0, 0x18 +/* 3DB30 8003CF30 00065603 */ sra $t2, $a2, 0x18 +/* 3DB34 8003CF34 00054E03 */ sra $t1, $a1, 0x18 +/* 3DB38 8003CF38 01202825 */ or $a1, $t1, $zero +/* 3DB3C 8003CF3C 01403025 */ or $a2, $t2, $zero +/* 3DB40 8003CF40 02402025 */ or $a0, $s2, $zero +/* 3DB44 8003CF44 0C009E88 */ jal func_80027A20 +/* 3DB48 8003CF48 24070001 */ addiu $a3, $zero, 1 +/* 3DB4C 8003CF4C 26250004 */ addiu $a1, $s1, 4 +/* 3DB50 8003CF50 00103600 */ sll $a2, $s0, 0x18 +/* 3DB54 8003CF54 2607FFFE */ addiu $a3, $s0, -2 +/* 3DB58 8003CF58 00077600 */ sll $t6, $a3, 0x18 +/* 3DB5C 8003CF5C 00066E03 */ sra $t5, $a2, 0x18 +/* 3DB60 8003CF60 00055E00 */ sll $t3, $a1, 0x18 +/* 3DB64 8003CF64 000B2E03 */ sra $a1, $t3, 0x18 +/* 3DB68 8003CF68 01A03025 */ or $a2, $t5, $zero +/* 3DB6C 8003CF6C 000E3E03 */ sra $a3, $t6, 0x18 +/* 3DB70 8003CF70 02402025 */ or $a0, $s2, $zero +/* 3DB74 8003CF74 0C009C10 */ jal func_80027040 +/* 3DB78 8003CF78 AFA00010 */ sw $zero, 0x10($sp) +/* 3DB7C 8003CF7C 0010C0C0 */ sll $t8, $s0, 3 +/* 3DB80 8003CF80 0011C8C0 */ sll $t9, $s1, 3 +/* 3DB84 8003CF84 0331C821 */ addu $t9, $t9, $s1 +/* 3DB88 8003CF88 0310C021 */ addu $t8, $t8, $s0 +/* 3DB8C 8003CF8C 0018C0C0 */ sll $t8, $t8, 3 +/* 3DB90 8003CF90 0019C8C0 */ sll $t9, $t9, 3 +/* 3DB94 8003CF94 0331C821 */ addu $t9, $t9, $s1 +/* 3DB98 8003CF98 0310C021 */ addu $t8, $t8, $s0 +/* 3DB9C 8003CF9C 0018C200 */ sll $t8, $t8, 8 +/* 3DBA0 8003CFA0 0019C940 */ sll $t9, $t9, 5 +/* 3DBA4 8003CFA4 00105BC0 */ sll $t3, $s0, 0xf +/* 3DBA8 8003CFA8 00116300 */ sll $t4, $s1, 0xc +/* 3DBAC 8003CFAC 3C01FFFF */ lui $at, 0xffff +/* 3DBB0 8003CFB0 34214000 */ ori $at, $at, 0x4000 +/* 3DBB4 8003CFB4 016C6821 */ addu $t5, $t3, $t4 +/* 3DBB8 8003CFB8 03194021 */ addu $t0, $t8, $t9 +/* 3DBBC 8003CFBC 3C0A802E */ lui $t2, %hi(D_802DFB80) +/* 3DBC0 8003CFC0 3C0F802C */ lui $t7, %hi(D_802BFB80) +/* 3DBC4 8003CFC4 25EFFB80 */ addiu $t7, $t7, %lo(D_802BFB80) +/* 3DBC8 8003CFC8 254AFB80 */ addiu $t2, $t2, %lo(D_802DFB80) +/* 3DBCC 8003CFCC 25099280 */ addiu $t1, $t0, -0x6d80 +/* 3DBD0 8003CFD0 01A17021 */ addu $t6, $t5, $at +/* 3DBD4 8003CFD4 01CF2821 */ addu $a1, $t6, $t7 +/* 3DBD8 8003CFD8 0C010034 */ jal func_800400D0 +/* 3DBDC 8003CFDC 012A2021 */ addu $a0, $t1, $t2 +/* 3DBE0 8003CFE0 0010C040 */ sll $t8, $s0, 1 +.L8003CFE4: +/* 3DBE4 8003CFE4 02581821 */ addu $v1, $s2, $t8 +/* 3DBE8 8003CFE8 94790244 */ lhu $t9, 0x244($v1) +/* 3DBEC 8003CFEC 00111040 */ sll $v0, $s1, 1 +/* 3DBF0 8003CFF0 00104100 */ sll $t0, $s0, 4 +/* 3DBF4 8003CFF4 01024821 */ addu $t1, $t0, $v0 +/* 3DBF8 8003CFF8 3C018016 */ lui $at, %hi(D_801650D0) +/* 3DBFC 8003CFFC 00290821 */ addu $at, $at, $t1 +/* 3DC00 8003D000 A43950D0 */ sh $t9, %lo(D_801650D0)($at) +/* 3DC04 8003D004 946A024C */ lhu $t2, 0x24c($v1) +/* 3DC08 8003D008 00105900 */ sll $t3, $s0, 4 +/* 3DC0C 8003D00C 01626021 */ addu $t4, $t3, $v0 +/* 3DC10 8003D010 3C018016 */ lui $at, %hi(D_80165110) +/* 3DC14 8003D014 002C0821 */ addu $at, $at, $t4 +/* 3DC18 8003D018 A42A5110 */ sh $t2, %lo(D_80165110)($at) +/* 3DC1C 8003D01C 864D00A8 */ lh $t5, 0xa8($s2) +/* 3DC20 8003D020 00107100 */ sll $t6, $s0, 4 +/* 3DC24 8003D024 01C27821 */ addu $t7, $t6, $v0 +/* 3DC28 8003D028 3C018016 */ lui $at, %hi(D_80165150) +/* 3DC2C 8003D02C 002F0821 */ addu $at, $at, $t7 +/* 3DC30 8003D030 0010C100 */ sll $t8, $s0, 4 +/* 3DC34 8003D034 A42D5150 */ sh $t5, %lo(D_80165150)($at) +/* 3DC38 8003D038 3C018016 */ lui $at, 0x8016 +/* 3DC3C 8003D03C 03024021 */ addu $t0, $t8, $v0 +/* 3DC40 8003D040 00112E00 */ sll $a1, $s1, 0x18 +/* 3DC44 8003D044 00103600 */ sll $a2, $s0, 0x18 +/* 3DC48 8003D048 00280821 */ addu $at, $at, $t0 +/* 3DC4C 8003D04C 00064E03 */ sra $t1, $a2, 0x18 +/* 3DC50 8003D050 0005CE03 */ sra $t9, $a1, 0x18 +/* 3DC54 8003D054 A42051D0 */ sh $zero, 0x51d0($at) +/* 3DC58 8003D058 03202825 */ or $a1, $t9, $zero +/* 3DC5C 8003D05C 01203025 */ or $a2, $t1, $zero +/* 3DC60 8003D060 0C0099EB */ jal func_800267AC +/* 3DC64 8003D064 02402025 */ or $a0, $s2, $zero +.L8003D068: +/* 3DC68 8003D068 8FBF002C */ lw $ra, 0x2c($sp) +/* 3DC6C 8003D06C 8FB00020 */ lw $s0, 0x20($sp) +/* 3DC70 8003D070 8FB10024 */ lw $s1, 0x24($sp) +/* 3DC74 8003D074 8FB20028 */ lw $s2, 0x28($sp) +/* 3DC78 8003D078 03E00008 */ jr $ra +/* 3DC7C 8003D07C 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/code_actors/func_8029ABD4.s b/asm/non_matchings/code_actors/func_8029ABD4.s deleted file mode 100644 index 33dde6665..000000000 --- a/asm/non_matchings/code_actors/func_8029ABD4.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_8029ABD4 -/* 1041E4 8029ABD4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 1041E8 8029ABD8 AFBF0014 */ sw $ra, 0x14($sp) -/* 1041EC 8029ABDC AFA5001C */ sw $a1, 0x1c($sp) -/* 1041F0 8029ABE0 3C018015 */ lui $at, %hi(gNumActors) # $at, 0x8015 -/* 1041F4 8029ABE4 A4200110 */ sh $zero, %lo(gNumActors)($at) -/* 1041F8 8029ABE8 0C0A7B4E */ jal func_8029ED38 -/* 1041FC 8029ABEC 24050014 */ li $a1, 20 -/* 104200 8029ABF0 000278C0 */ sll $t7, $v0, 3 -/* 104204 8029ABF4 8FBF0014 */ lw $ra, 0x14($sp) -/* 104208 8029ABF8 01E27823 */ subu $t7, $t7, $v0 -/* 10420C 8029ABFC 87AE001E */ lh $t6, 0x1e($sp) -/* 104210 8029AC00 000F7900 */ sll $t7, $t7, 4 -/* 104214 8029AC04 3C018016 */ lui $at, %hi(gActorList) # 0x8016 -/* 104218 8029AC08 002F0821 */ addu $at, $at, $t7 -/* 10421C 8029AC0C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 104220 8029AC10 03E00008 */ jr $ra -/* 104224 8029AC14 A42EF9BE */ sh $t6, %lo(gActorList+6)($at) # -0x642($at) diff --git a/asm/non_matchings/code_actors/func_8029ED38.s b/asm/non_matchings/code_actors/func_8029ED98.s similarity index 76% rename from asm/non_matchings/code_actors/func_8029ED38.s rename to asm/non_matchings/code_actors/func_8029ED98.s index a8a455fb6..2e508ad54 100644 --- a/asm/non_matchings/code_actors/func_8029ED38.s +++ b/asm/non_matchings/code_actors/func_8029ED98.s @@ -1,29 +1,4 @@ -glabel func_8029ED38 -/* 108348 8029ED38 44800000 */ mtc1 $zero, $f0 -/* 10834C 8029ED3C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 108350 8029ED40 AFA50034 */ sw $a1, 0x34($sp) -/* 108354 8029ED44 AFBF0014 */ sw $ra, 0x14($sp) -/* 108358 8029ED48 AFA40030 */ sw $a0, 0x30($sp) -/* 10835C 8029ED4C 44050000 */ mfc1 $a1, $f0 -/* 108360 8029ED50 44060000 */ mfc1 $a2, $f0 -/* 108364 8029ED54 44070000 */ mfc1 $a3, $f0 -/* 108368 8029ED58 0C0AD4A7 */ jal vec3f_set -/* 10836C 8029ED5C 27A40024 */ addiu $a0, $sp, 0x24 -/* 108370 8029ED60 27A4001C */ addiu $a0, $sp, 0x1c -/* 108374 8029ED64 00002825 */ move $a1, $zero -/* 108378 8029ED68 00003025 */ move $a2, $zero -/* 10837C 8029ED6C 0C0AD4AF */ jal vec3s_set -/* 108380 8029ED70 00003825 */ move $a3, $zero -/* 108384 8029ED74 8FA40030 */ lw $a0, 0x30($sp) -/* 108388 8029ED78 27A5001C */ addiu $a1, $sp, 0x1c -/* 10838C 8029ED7C 27A60024 */ addiu $a2, $sp, 0x24 -/* 108390 8029ED80 0C0A7B22 */ jal func_8029EC88 -/* 108394 8029ED84 87A70036 */ lh $a3, 0x36($sp) -/* 108398 8029ED88 8FBF0014 */ lw $ra, 0x14($sp) -/* 10839C 8029ED8C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 1083A0 8029ED90 03E00008 */ jr $ra -/* 1083A4 8029ED94 00000000 */ nop - +glabel func_8029ED98 /* 1083A8 8029ED98 27BDFF90 */ addiu $sp, $sp, -0x70 /* 1083AC 8029ED9C 00057602 */ srl $t6, $a1, 0x18 /* 1083B0 8029EDA0 000E7880 */ sll $t7, $t6, 2 diff --git a/asm/non_matchings/memory/func_802AC114.s b/asm/non_matchings/memory/func_802AC114.s index 9878ee3f0..c4dd6e1eb 100644 --- a/asm/non_matchings/memory/func_802AC114.s +++ b/asm/non_matchings/memory/func_802AC114.s @@ -71,355 +71,3 @@ glabel func_802AC114 /* 115830 802AC220 D7B40008 */ ldc1 $f20, 8($sp) /* 115834 802AC224 03E00008 */ jr $ra /* 115838 802AC228 27BD0010 */ addiu $sp, $sp, 0x10 - -/* 11583C 802AC22C 27BDFEF0 */ addiu $sp, $sp, -0x110 -/* 115840 802AC230 3C01447A */ li $at, 0x447A0000 # 1000.000000 -/* 115844 802AC234 44810000 */ mtc1 $at, $f0 -/* 115848 802AC238 AFBF0064 */ sw $ra, 0x64($sp) -/* 11584C 802AC23C AFB60060 */ sw $s6, 0x60($sp) -/* 115850 802AC240 AFB5005C */ sw $s5, 0x5c($sp) -/* 115854 802AC244 AFB40058 */ sw $s4, 0x58($sp) -/* 115858 802AC248 AFB30054 */ sw $s3, 0x54($sp) -/* 11585C 802AC24C AFB20050 */ sw $s2, 0x50($sp) -/* 115860 802AC250 AFB1004C */ sw $s1, 0x4c($sp) -/* 115864 802AC254 AFB00048 */ sw $s0, 0x48($sp) -/* 115868 802AC258 F7BC0040 */ sdc1 $f28, 0x40($sp) -/* 11586C 802AC25C F7BA0038 */ sdc1 $f26, 0x38($sp) -/* 115870 802AC260 F7B80030 */ sdc1 $f24, 0x30($sp) -/* 115874 802AC264 F7B60028 */ sdc1 $f22, 0x28($sp) -/* 115878 802AC268 F7B40020 */ sdc1 $f20, 0x20($sp) -/* 11587C 802AC26C A7A000D0 */ sh $zero, 0xd0($sp) -/* 115880 802AC270 A7A000D2 */ sh $zero, 0xd2($sp) -/* 115884 802AC274 A7A000D4 */ sh $zero, 0xd4($sp) -/* 115888 802AC278 E7A000DC */ swc1 $f0, 0xdc($sp) -/* 11588C 802AC27C E7A000E0 */ swc1 $f0, 0xe0($sp) -/* 115890 802AC280 E7A000E4 */ swc1 $f0, 0xe4($sp) -/* 115894 802AC284 9082000D */ lbu $v0, 0xd($a0) -/* 115898 802AC288 24010020 */ li $at, 32 -/* 11589C 802AC28C 00809825 */ move $s3, $a0 -/* 1158A0 802AC290 C4960000 */ lwc1 $f22, ($a0) -/* 1158A4 802AC294 C4980004 */ lwc1 $f24, 4($a0) -/* 1158A8 802AC298 10410036 */ beq $v0, $at, .L802AC374 -/* 1158AC 802AC29C C49A0008 */ lwc1 $f26, 8($a0) -/* 1158B0 802AC2A0 24010040 */ li $at, 64 -/* 1158B4 802AC2A4 1041001E */ beq $v0, $at, .L802AC320 -/* 1158B8 802AC2A8 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 1158BC 802AC2AC 24010080 */ li $at, 128 -/* 1158C0 802AC2B0 10410006 */ beq $v0, $at, .L802AC2CC -/* 1158C4 802AC2B4 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 1158C8 802AC2B8 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 1158CC 802AC2BC 4481E000 */ mtc1 $at, $f28 -/* 1158D0 802AC2C0 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 1158D4 802AC2C4 10000041 */ b .L802AC3CC -/* 1158D8 802AC2C8 24150001 */ li $s5, 1 -.L802AC2CC: -/* 1158DC 802AC2CC 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 1158E0 802AC2D0 4481E000 */ mtc1 $at, $f28 -/* 1158E4 802AC2D4 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 1158E8 802AC2D8 966E000E */ lhu $t6, 0xe($s3) -/* 1158EC 802AC2DC 4406B000 */ mfc1 $a2, $f22 -/* 1158F0 802AC2E0 4407C000 */ mfc1 $a3, $f24 -/* 1158F4 802AC2E4 4405E000 */ mfc1 $a1, $f28 -/* 1158F8 802AC2E8 02C02025 */ move $a0, $s6 -/* 1158FC 802AC2EC 0C0AADB1 */ jal func_802AB6C4 -/* 115900 802AC2F0 AFAE0014 */ sw $t6, 0x14($sp) -/* 115904 802AC2F4 24150001 */ li $s5, 1 -/* 115908 802AC2F8 14550034 */ bne $v0, $s5, .L802AC3CC -/* 11590C 802AC2FC 00000000 */ nop -/* 115910 802AC300 4406D000 */ mfc1 $a2, $f26 -/* 115914 802AC304 4600B306 */ mov.s $f12, $f22 -/* 115918 802AC308 4600C386 */ mov.s $f14, $f24 -/* 11591C 802AC30C 0C0AAF8C */ jal func_802ABE30 -/* 115920 802AC310 9667000E */ lhu $a3, 0xe($s3) -/* 115924 802AC314 E6600010 */ swc1 $f0, 0x10($s3) -/* 115928 802AC318 10000102 */ b .L802AC724 -/* 11592C 802AC31C 24020001 */ li $v0, 1 -.L802AC320: -/* 115930 802AC320 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 115934 802AC324 4481E000 */ mtc1 $at, $f28 -/* 115938 802AC328 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 11593C 802AC32C 966F000E */ lhu $t7, 0xe($s3) -/* 115940 802AC330 4406B000 */ mfc1 $a2, $f22 -/* 115944 802AC334 4407C000 */ mfc1 $a3, $f24 -/* 115948 802AC338 4405E000 */ mfc1 $a1, $f28 -/* 11594C 802AC33C 02C02025 */ move $a0, $s6 -/* 115950 802AC340 0C0AAB93 */ jal func_802AAE4C -/* 115954 802AC344 AFAF0014 */ sw $t7, 0x14($sp) -/* 115958 802AC348 24150001 */ li $s5, 1 -/* 11595C 802AC34C 1455001F */ bne $v0, $s5, .L802AC3CC -/* 115960 802AC350 00000000 */ nop -/* 115964 802AC354 4406D000 */ mfc1 $a2, $f26 -/* 115968 802AC358 4600B306 */ mov.s $f12, $f22 -/* 11596C 802AC35C 4600C386 */ mov.s $f14, $f24 -/* 115970 802AC360 0C0AAF8C */ jal func_802ABE30 -/* 115974 802AC364 9667000E */ lhu $a3, 0xe($s3) -/* 115978 802AC368 E6600010 */ swc1 $f0, 0x10($s3) -/* 11597C 802AC36C 100000ED */ b .L802AC724 -/* 115980 802AC370 24020001 */ li $v0, 1 -.L802AC374: -/* 115984 802AC374 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 115988 802AC378 4481E000 */ mtc1 $at, $f28 -/* 11598C 802AC37C E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115990 802AC380 9678000E */ lhu $t8, 0xe($s3) -/* 115994 802AC384 27B600D0 */ addiu $s6, $sp, 0xd0 -/* 115998 802AC388 4406B000 */ mfc1 $a2, $f22 -/* 11599C 802AC38C 4407C000 */ mfc1 $a3, $f24 -/* 1159A0 802AC390 4405E000 */ mfc1 $a1, $f28 -/* 1159A4 802AC394 02C02025 */ move $a0, $s6 -/* 1159A8 802AC398 0C0AACA2 */ jal func_802AB288 -/* 1159AC 802AC39C AFB80014 */ sw $t8, 0x14($sp) -/* 1159B0 802AC3A0 24150001 */ li $s5, 1 -/* 1159B4 802AC3A4 14550009 */ bne $v0, $s5, .L802AC3CC -/* 1159B8 802AC3A8 00000000 */ nop -/* 1159BC 802AC3AC 4406D000 */ mfc1 $a2, $f26 -/* 1159C0 802AC3B0 4600B306 */ mov.s $f12, $f22 -/* 1159C4 802AC3B4 4600C386 */ mov.s $f14, $f24 -/* 1159C8 802AC3B8 0C0AAF8C */ jal func_802ABE30 -/* 1159CC 802AC3BC 9667000E */ lhu $a3, 0xe($s3) -/* 1159D0 802AC3C0 E6600010 */ swc1 $f0, 0x10($s3) -/* 1159D4 802AC3C4 100000D7 */ b .L802AC724 -/* 1159D8 802AC3C8 24020001 */ li $v0, 1 -.L802AC3CC: -/* 1159DC 802AC3CC 3C028016 */ lui $v0, %hi(D_8015F6EA) # $v0, 0x8016 -/* 1159E0 802AC3D0 8442F6EA */ lh $v0, %lo(D_8015F6EA)($v0) -/* 1159E4 802AC3D4 3C198016 */ lui $t9, %hi(D_8015F6E8) # $t9, 0x8016 -/* 1159E8 802AC3D8 8739F6E8 */ lh $t9, %lo(D_8015F6E8)($t9) -/* 1159EC 802AC3DC 44822000 */ mtc1 $v0, $f4 -/* 1159F0 802AC3E0 3C038016 */ lui $v1, %hi(D_8015F6F2) # $v1, 0x8016 -/* 1159F4 802AC3E4 03222023 */ subu $a0, $t9, $v0 -/* 1159F8 802AC3E8 468021A0 */ cvt.s.w $f6, $f4 -/* 1159FC 802AC3EC 8463F6F2 */ lh $v1, %lo(D_8015F6F2)($v1) -/* 115A00 802AC3F0 3C088016 */ lui $t0, %hi(D_8015F6F0) # $t0, 0x8016 -/* 115A04 802AC3F4 8508F6F0 */ lh $t0, %lo(D_8015F6F0)($t0) -/* 115A08 802AC3F8 4606B201 */ sub.s $f8, $f22, $f6 -/* 115A0C 802AC3FC 44833000 */ mtc1 $v1, $f6 -/* 115A10 802AC400 01032823 */ subu $a1, $t0, $v1 -/* 115A14 802AC404 04810003 */ bgez $a0, .L802AC414 -/* 115A18 802AC408 00044943 */ sra $t1, $a0, 5 -/* 115A1C 802AC40C 2481001F */ addiu $at, $a0, 0x1f -/* 115A20 802AC410 00014943 */ sra $t1, $at, 5 -.L802AC414: -/* 115A24 802AC414 44895000 */ mtc1 $t1, $f10 -/* 115A28 802AC418 00000000 */ nop -/* 115A2C 802AC41C 46805420 */ cvt.s.w $f16, $f10 -/* 115A30 802AC420 468032A0 */ cvt.s.w $f10, $f6 -/* 115A34 802AC424 46104483 */ div.s $f18, $f8, $f16 -/* 115A38 802AC428 460AD201 */ sub.s $f8, $f26, $f10 -/* 115A3C 802AC42C 4600910D */ trunc.w.s $f4, $f18 -/* 115A40 802AC430 44062000 */ mfc1 $a2, $f4 -/* 115A44 802AC434 00000000 */ nop -/* 115A48 802AC438 00065C00 */ sll $t3, $a2, 0x10 -/* 115A4C 802AC43C 000B6403 */ sra $t4, $t3, 0x10 -/* 115A50 802AC440 01803025 */ move $a2, $t4 -/* 115A54 802AC444 04A10003 */ bgez $a1, .L802AC454 -/* 115A58 802AC448 00056943 */ sra $t5, $a1, 5 -/* 115A5C 802AC44C 24A1001F */ addiu $at, $a1, 0x1f -/* 115A60 802AC450 00016943 */ sra $t5, $at, 5 -.L802AC454: -/* 115A64 802AC454 448D8000 */ mtc1 $t5, $f16 -/* 115A68 802AC458 00000000 */ nop -/* 115A6C 802AC45C 468084A0 */ cvt.s.w $f18, $f16 -/* 115A70 802AC460 46124103 */ div.s $f4, $f8, $f18 -/* 115A74 802AC464 4600218D */ trunc.w.s $f6, $f4 -/* 115A78 802AC468 44073000 */ mfc1 $a3, $f6 -/* 115A7C 802AC46C 00000000 */ nop -/* 115A80 802AC470 00077C00 */ sll $t7, $a3, 0x10 -/* 115A84 802AC474 04C10003 */ bgez $a2, .L802AC484 -/* 115A88 802AC478 000F3C03 */ sra $a3, $t7, 0x10 -/* 115A8C 802AC47C 100000A9 */ b .L802AC724 -/* 115A90 802AC480 00001025 */ move $v0, $zero -.L802AC484: -/* 115A94 802AC484 04E10003 */ bgez $a3, .L802AC494 -/* 115A98 802AC488 28C10020 */ slti $at, $a2, 0x20 -/* 115A9C 802AC48C 100000A5 */ b .L802AC724 -/* 115AA0 802AC490 00001025 */ move $v0, $zero -.L802AC494: -/* 115AA4 802AC494 54200004 */ bnel $at, $zero, .L802AC4A8 -/* 115AA8 802AC498 28E10020 */ slti $at, $a3, 0x20 -/* 115AAC 802AC49C 100000A1 */ b .L802AC724 -/* 115AB0 802AC4A0 00001025 */ move $v0, $zero -/* 115AB4 802AC4A4 28E10020 */ slti $at, $a3, 0x20 -.L802AC4A8: -/* 115AB8 802AC4A8 14200003 */ bnez $at, .L802AC4B8 -/* 115ABC 802AC4AC 0007C940 */ sll $t9, $a3, 5 -/* 115AC0 802AC4B0 1000009C */ b .L802AC724 -/* 115AC4 802AC4B4 00001025 */ move $v0, $zero -.L802AC4B8: -/* 115AC8 802AC4B8 00D94021 */ addu $t0, $a2, $t9 -/* 115ACC 802AC4BC 00084C00 */ sll $t1, $t0, 0x10 -/* 115AD0 802AC4C0 00095403 */ sra $t2, $t1, 0x10 -/* 115AD4 802AC4C4 3C0C8015 */ lui $t4, %hi(D_8014F110) # $t4, 0x8015 -/* 115AD8 802AC4C8 258CF110 */ addiu $t4, %lo(D_8014F110) # addiu $t4, $t4, -0xef0 -/* 115ADC 802AC4CC 000A5880 */ sll $t3, $t2, 2 -/* 115AE0 802AC4D0 016C1821 */ addu $v1, $t3, $t4 -/* 115AE4 802AC4D4 94620002 */ lhu $v0, 2($v1) -/* 115AE8 802AC4D8 14400003 */ bnez $v0, .L802AC4E8 -/* 115AEC 802AC4DC AFA20070 */ sw $v0, 0x70($sp) -/* 115AF0 802AC4E0 10000090 */ b .L802AC724 -/* 115AF4 802AC4E4 00001025 */ move $v0, $zero -.L802AC4E8: -/* 115AF8 802AC4E8 8FAE0070 */ lw $t6, 0x70($sp) -/* 115AFC 802AC4EC 94710000 */ lhu $s1, ($v1) -/* 115B00 802AC4F0 00009025 */ move $s2, $zero -/* 115B04 802AC4F4 19C00089 */ blez $t6, .L802AC71C -/* 115B08 802AC4F8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 115B0C 802AC4FC 4481A000 */ mtc1 $at, $f20 -/* 115B10 802AC500 00000000 */ nop -.L802AC504: -/* 115B14 802AC504 3C0F8016 */ lui $t7, %hi(D_8015F584) # $t7, 0x8016 -/* 115B18 802AC508 8DEFF584 */ lw $t7, %lo(D_8015F584)($t7) -/* 115B1C 802AC50C 0011C040 */ sll $t8, $s1, 1 -/* 115B20 802AC510 3C088016 */ lui $t0, %hi(D_8015F580) # $t0, 0x8016 -/* 115B24 802AC514 01F8C821 */ addu $t9, $t7, $t8 -/* 115B28 802AC518 97300000 */ lhu $s0, ($t9) -/* 115B2C 802AC51C 8D08F580 */ lw $t0, %lo(D_8015F580)($t0) -/* 115B30 802AC520 0010A080 */ sll $s4, $s0, 2 -/* 115B34 802AC524 0290A023 */ subu $s4, $s4, $s0 -/* 115B38 802AC528 0014A080 */ sll $s4, $s4, 2 -/* 115B3C 802AC52C 0290A023 */ subu $s4, $s4, $s0 -/* 115B40 802AC530 0014A080 */ sll $s4, $s4, 2 -/* 115B44 802AC534 01141021 */ addu $v0, $t0, $s4 -/* 115B48 802AC538 94430000 */ lhu $v1, ($v0) -/* 115B4C 802AC53C 30694000 */ andi $t1, $v1, 0x4000 -/* 115B50 802AC540 51200029 */ beql $t1, $zero, .L802AC5E8 -/* 115B54 802AC544 30698000 */ andi $t1, $v1, 0x8000 -/* 115B58 802AC548 966A000E */ lhu $t2, 0xe($s3) -/* 115B5C 802AC54C 02C02025 */ move $a0, $s6 -/* 115B60 802AC550 5150006A */ beql $t2, $s0, .L802AC6FC -/* 115B64 802AC554 8FAC0070 */ lw $t4, 0x70($sp) -/* 115B68 802AC558 4405E000 */ mfc1 $a1, $f28 -/* 115B6C 802AC55C 4406B000 */ mfc1 $a2, $f22 -/* 115B70 802AC560 4407C000 */ mfc1 $a3, $f24 -/* 115B74 802AC564 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115B78 802AC568 0C0AAB93 */ jal func_802AAE4C -/* 115B7C 802AC56C AFB00014 */ sw $s0, 0x14($sp) -/* 115B80 802AC570 54550062 */ bnel $v0, $s5, .L802AC6FC -/* 115B84 802AC574 8FAC0070 */ lw $t4, 0x70($sp) -/* 115B88 802AC578 4406D000 */ mfc1 $a2, $f26 -/* 115B8C 802AC57C 4600B306 */ mov.s $f12, $f22 -/* 115B90 802AC580 4600C386 */ mov.s $f14, $f24 -/* 115B94 802AC584 0C0AAF8C */ jal func_802ABE30 -/* 115B98 802AC588 3207FFFF */ andi $a3, $s0, 0xffff -/* 115B9C 802AC58C E6600010 */ swc1 $f0, 0x10($s3) -/* 115BA0 802AC590 3C0B8016 */ lui $t3, %hi(D_8015F580) # $t3, 0x8016 -/* 115BA4 802AC594 8D6BF580 */ lw $t3, %lo(D_8015F580)($t3) -/* 115BA8 802AC598 240E0040 */ li $t6, 64 -/* 115BAC 802AC59C 3C0F8016 */ lui $t7, %hi(D_8015F580) # $t7, 0x8016 -/* 115BB0 802AC5A0 01746021 */ addu $t4, $t3, $s4 -/* 115BB4 802AC5A4 958D0002 */ lhu $t5, 2($t4) -/* 115BB8 802AC5A8 A26E000D */ sb $t6, 0xd($s3) -/* 115BBC 802AC5AC A670000E */ sh $s0, 0xe($s3) -/* 115BC0 802AC5B0 A26D000C */ sb $t5, 0xc($s3) -/* 115BC4 802AC5B4 8DEFF580 */ lw $t7, %lo(D_8015F580)($t7) -/* 115BC8 802AC5B8 24020001 */ li $v0, 1 -/* 115BCC 802AC5BC 01F4C021 */ addu $t8, $t7, $s4 -/* 115BD0 802AC5C0 97190000 */ lhu $t9, ($t8) -/* 115BD4 802AC5C4 33281000 */ andi $t0, $t9, 0x1000 -/* 115BD8 802AC5C8 51000004 */ beql $t0, $zero, .L802AC5DC -/* 115BDC 802AC5CC AE600014 */ sw $zero, 0x14($s3) -/* 115BE0 802AC5D0 10000054 */ b .L802AC724 -/* 115BE4 802AC5D4 AE750014 */ sw $s5, 0x14($s3) -/* 115BE8 802AC5D8 AE600014 */ sw $zero, 0x14($s3) -.L802AC5DC: -/* 115BEC 802AC5DC 10000051 */ b .L802AC724 -/* 115BF0 802AC5E0 24020001 */ li $v0, 1 -/* 115BF4 802AC5E4 30698000 */ andi $t1, $v1, 0x8000 -.L802AC5E8: -/* 115BF8 802AC5E8 51200023 */ beql $t1, $zero, .L802AC678 -/* 115BFC 802AC5EC C4500024 */ lwc1 $f16, 0x24($v0) -/* 115C00 802AC5F0 C44A001C */ lwc1 $f10, 0x1c($v0) -/* 115C04 802AC5F4 460AA032 */ c.eq.s $f20, $f10 -/* 115C08 802AC5F8 00000000 */ nop -/* 115C0C 802AC5FC 4503003F */ bc1tl .L802AC6FC -/* 115C10 802AC600 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C14 802AC604 966A000E */ lhu $t2, 0xe($s3) -/* 115C18 802AC608 02C02025 */ move $a0, $s6 -/* 115C1C 802AC60C 5150003B */ beql $t2, $s0, .L802AC6FC -/* 115C20 802AC610 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C24 802AC614 4405E000 */ mfc1 $a1, $f28 -/* 115C28 802AC618 4406B000 */ mfc1 $a2, $f22 -/* 115C2C 802AC61C 4407C000 */ mfc1 $a3, $f24 -/* 115C30 802AC620 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115C34 802AC624 0C0AADB1 */ jal func_802AB6C4 -/* 115C38 802AC628 AFB00014 */ sw $s0, 0x14($sp) -/* 115C3C 802AC62C 54550033 */ bnel $v0, $s5, .L802AC6FC -/* 115C40 802AC630 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C44 802AC634 4406D000 */ mfc1 $a2, $f26 -/* 115C48 802AC638 4600B306 */ mov.s $f12, $f22 -/* 115C4C 802AC63C 4600C386 */ mov.s $f14, $f24 -/* 115C50 802AC640 0C0AAF8C */ jal func_802ABE30 -/* 115C54 802AC644 3207FFFF */ andi $a3, $s0, 0xffff -/* 115C58 802AC648 E6600010 */ swc1 $f0, 0x10($s3) -/* 115C5C 802AC64C 3C0B8016 */ lui $t3, %hi(D_8015F580) # $t3, 0x8016 -/* 115C60 802AC650 8D6BF580 */ lw $t3, %lo(D_8015F580)($t3) -/* 115C64 802AC654 240E0080 */ li $t6, 128 -/* 115C68 802AC658 24020001 */ li $v0, 1 -/* 115C6C 802AC65C 01746021 */ addu $t4, $t3, $s4 -/* 115C70 802AC660 958D0002 */ lhu $t5, 2($t4) -/* 115C74 802AC664 A26E000D */ sb $t6, 0xd($s3) -/* 115C78 802AC668 A670000E */ sh $s0, 0xe($s3) -/* 115C7C 802AC66C 1000002D */ b .L802AC724 -/* 115C80 802AC670 A26D000C */ sb $t5, 0xc($s3) -/* 115C84 802AC674 C4500024 */ lwc1 $f16, 0x24($v0) -.L802AC678: -/* 115C88 802AC678 4610A032 */ c.eq.s $f20, $f16 -/* 115C8C 802AC67C 00000000 */ nop -/* 115C90 802AC680 4503001E */ bc1tl .L802AC6FC -/* 115C94 802AC684 8FAC0070 */ lw $t4, 0x70($sp) -/* 115C98 802AC688 966F000E */ lhu $t7, 0xe($s3) -/* 115C9C 802AC68C 02C02025 */ move $a0, $s6 -/* 115CA0 802AC690 51F0001A */ beql $t7, $s0, .L802AC6FC -/* 115CA4 802AC694 8FAC0070 */ lw $t4, 0x70($sp) -/* 115CA8 802AC698 4405E000 */ mfc1 $a1, $f28 -/* 115CAC 802AC69C 4406B000 */ mfc1 $a2, $f22 -/* 115CB0 802AC6A0 4407C000 */ mfc1 $a3, $f24 -/* 115CB4 802AC6A4 E7BA0010 */ swc1 $f26, 0x10($sp) -/* 115CB8 802AC6A8 0C0AACA2 */ jal func_802AB288 -/* 115CBC 802AC6AC AFB00014 */ sw $s0, 0x14($sp) -/* 115CC0 802AC6B0 54550012 */ bnel $v0, $s5, .L802AC6FC -/* 115CC4 802AC6B4 8FAC0070 */ lw $t4, 0x70($sp) -/* 115CC8 802AC6B8 4406D000 */ mfc1 $a2, $f26 -/* 115CCC 802AC6BC 4600B306 */ mov.s $f12, $f22 -/* 115CD0 802AC6C0 4600C386 */ mov.s $f14, $f24 -/* 115CD4 802AC6C4 0C0AAF8C */ jal func_802ABE30 -/* 115CD8 802AC6C8 3207FFFF */ andi $a3, $s0, 0xffff -/* 115CDC 802AC6CC E6600010 */ swc1 $f0, 0x10($s3) -/* 115CE0 802AC6D0 3C188016 */ lui $t8, %hi(D_8015F580) # $t8, 0x8016 -/* 115CE4 802AC6D4 8F18F580 */ lw $t8, %lo(D_8015F580)($t8) -/* 115CE8 802AC6D8 24090020 */ li $t1, 32 -/* 115CEC 802AC6DC 24020001 */ li $v0, 1 -/* 115CF0 802AC6E0 0314C821 */ addu $t9, $t8, $s4 -/* 115CF4 802AC6E4 97280002 */ lhu $t0, 2($t9) -/* 115CF8 802AC6E8 A269000D */ sb $t1, 0xd($s3) -/* 115CFC 802AC6EC A670000E */ sh $s0, 0xe($s3) -/* 115D00 802AC6F0 1000000C */ b .L802AC724 -/* 115D04 802AC6F4 A268000C */ sb $t0, 0xc($s3) -/* 115D08 802AC6F8 8FAC0070 */ lw $t4, 0x70($sp) -.L802AC6FC: -/* 115D0C 802AC6FC 26520001 */ addiu $s2, $s2, 1 -/* 115D10 802AC700 324BFFFF */ andi $t3, $s2, 0xffff -/* 115D14 802AC704 26310001 */ addiu $s1, $s1, 1 -/* 115D18 802AC708 322AFFFF */ andi $t2, $s1, 0xffff -/* 115D1C 802AC70C 016C082A */ slt $at, $t3, $t4 -/* 115D20 802AC710 01609025 */ move $s2, $t3 -/* 115D24 802AC714 1420FF7B */ bnez $at, .L802AC504 -/* 115D28 802AC718 01408825 */ move $s1, $t2 -.L802AC71C: -/* 115D2C 802AC71C E6780010 */ swc1 $f24, 0x10($s3) -/* 115D30 802AC720 A260000C */ sb $zero, 0xc($s3) -.L802AC724: -/* 115D34 802AC724 8FBF0064 */ lw $ra, 0x64($sp) -/* 115D38 802AC728 D7B40020 */ ldc1 $f20, 0x20($sp) -/* 115D3C 802AC72C D7B60028 */ ldc1 $f22, 0x28($sp) -/* 115D40 802AC730 D7B80030 */ ldc1 $f24, 0x30($sp) -/* 115D44 802AC734 D7BA0038 */ ldc1 $f26, 0x38($sp) -/* 115D48 802AC738 D7BC0040 */ ldc1 $f28, 0x40($sp) -/* 115D4C 802AC73C 8FB00048 */ lw $s0, 0x48($sp) -/* 115D50 802AC740 8FB1004C */ lw $s1, 0x4c($sp) -/* 115D54 802AC744 8FB20050 */ lw $s2, 0x50($sp) -/* 115D58 802AC748 8FB30054 */ lw $s3, 0x54($sp) -/* 115D5C 802AC74C 8FB40058 */ lw $s4, 0x58($sp) -/* 115D60 802AC750 8FB5005C */ lw $s5, 0x5c($sp) -/* 115D64 802AC754 8FB60060 */ lw $s6, 0x60($sp) -/* 115D68 802AC758 03E00008 */ jr $ra -/* 115D6C 802AC75C 27BD0110 */ addiu $sp, $sp, 0x110 diff --git a/asm/non_matchings/memory/func_802AC22C.s b/asm/non_matchings/memory/func_802AC22C.s new file mode 100644 index 000000000..393cc10c4 --- /dev/null +++ b/asm/non_matchings/memory/func_802AC22C.s @@ -0,0 +1,352 @@ +glabel func_802AC22C +/* 11583C 802AC22C 27BDFEF0 */ addiu $sp, $sp, -0x110 +/* 115840 802AC230 3C01447A */ li $at, 0x447A0000 # 1000.000000 +/* 115844 802AC234 44810000 */ mtc1 $at, $f0 +/* 115848 802AC238 AFBF0064 */ sw $ra, 0x64($sp) +/* 11584C 802AC23C AFB60060 */ sw $s6, 0x60($sp) +/* 115850 802AC240 AFB5005C */ sw $s5, 0x5c($sp) +/* 115854 802AC244 AFB40058 */ sw $s4, 0x58($sp) +/* 115858 802AC248 AFB30054 */ sw $s3, 0x54($sp) +/* 11585C 802AC24C AFB20050 */ sw $s2, 0x50($sp) +/* 115860 802AC250 AFB1004C */ sw $s1, 0x4c($sp) +/* 115864 802AC254 AFB00048 */ sw $s0, 0x48($sp) +/* 115868 802AC258 F7BC0040 */ sdc1 $f28, 0x40($sp) +/* 11586C 802AC25C F7BA0038 */ sdc1 $f26, 0x38($sp) +/* 115870 802AC260 F7B80030 */ sdc1 $f24, 0x30($sp) +/* 115874 802AC264 F7B60028 */ sdc1 $f22, 0x28($sp) +/* 115878 802AC268 F7B40020 */ sdc1 $f20, 0x20($sp) +/* 11587C 802AC26C A7A000D0 */ sh $zero, 0xd0($sp) +/* 115880 802AC270 A7A000D2 */ sh $zero, 0xd2($sp) +/* 115884 802AC274 A7A000D4 */ sh $zero, 0xd4($sp) +/* 115888 802AC278 E7A000DC */ swc1 $f0, 0xdc($sp) +/* 11588C 802AC27C E7A000E0 */ swc1 $f0, 0xe0($sp) +/* 115890 802AC280 E7A000E4 */ swc1 $f0, 0xe4($sp) +/* 115894 802AC284 9082000D */ lbu $v0, 0xd($a0) +/* 115898 802AC288 24010020 */ li $at, 32 +/* 11589C 802AC28C 00809825 */ move $s3, $a0 +/* 1158A0 802AC290 C4960000 */ lwc1 $f22, ($a0) +/* 1158A4 802AC294 C4980004 */ lwc1 $f24, 4($a0) +/* 1158A8 802AC298 10410036 */ beq $v0, $at, .L802AC374 +/* 1158AC 802AC29C C49A0008 */ lwc1 $f26, 8($a0) +/* 1158B0 802AC2A0 24010040 */ li $at, 64 +/* 1158B4 802AC2A4 1041001E */ beq $v0, $at, .L802AC320 +/* 1158B8 802AC2A8 27B600D0 */ addiu $s6, $sp, 0xd0 +/* 1158BC 802AC2AC 24010080 */ li $at, 128 +/* 1158C0 802AC2B0 10410006 */ beq $v0, $at, .L802AC2CC +/* 1158C4 802AC2B4 27B600D0 */ addiu $s6, $sp, 0xd0 +/* 1158C8 802AC2B8 3C0140A0 */ li $at, 0x40A00000 # 5.000000 +/* 1158CC 802AC2BC 4481E000 */ mtc1 $at, $f28 +/* 1158D0 802AC2C0 27B600D0 */ addiu $s6, $sp, 0xd0 +/* 1158D4 802AC2C4 10000041 */ b .L802AC3CC +/* 1158D8 802AC2C8 24150001 */ li $s5, 1 +.L802AC2CC: +/* 1158DC 802AC2CC 3C0140A0 */ li $at, 0x40A00000 # 5.000000 +/* 1158E0 802AC2D0 4481E000 */ mtc1 $at, $f28 +/* 1158E4 802AC2D4 E7BA0010 */ swc1 $f26, 0x10($sp) +/* 1158E8 802AC2D8 966E000E */ lhu $t6, 0xe($s3) +/* 1158EC 802AC2DC 4406B000 */ mfc1 $a2, $f22 +/* 1158F0 802AC2E0 4407C000 */ mfc1 $a3, $f24 +/* 1158F4 802AC2E4 4405E000 */ mfc1 $a1, $f28 +/* 1158F8 802AC2E8 02C02025 */ move $a0, $s6 +/* 1158FC 802AC2EC 0C0AADB1 */ jal func_802AB6C4 +/* 115900 802AC2F0 AFAE0014 */ sw $t6, 0x14($sp) +/* 115904 802AC2F4 24150001 */ li $s5, 1 +/* 115908 802AC2F8 14550034 */ bne $v0, $s5, .L802AC3CC +/* 11590C 802AC2FC 00000000 */ nop +/* 115910 802AC300 4406D000 */ mfc1 $a2, $f26 +/* 115914 802AC304 4600B306 */ mov.s $f12, $f22 +/* 115918 802AC308 4600C386 */ mov.s $f14, $f24 +/* 11591C 802AC30C 0C0AAF8C */ jal func_802ABE30 +/* 115920 802AC310 9667000E */ lhu $a3, 0xe($s3) +/* 115924 802AC314 E6600010 */ swc1 $f0, 0x10($s3) +/* 115928 802AC318 10000102 */ b .L802AC724 +/* 11592C 802AC31C 24020001 */ li $v0, 1 +.L802AC320: +/* 115930 802AC320 3C0140A0 */ li $at, 0x40A00000 # 5.000000 +/* 115934 802AC324 4481E000 */ mtc1 $at, $f28 +/* 115938 802AC328 E7BA0010 */ swc1 $f26, 0x10($sp) +/* 11593C 802AC32C 966F000E */ lhu $t7, 0xe($s3) +/* 115940 802AC330 4406B000 */ mfc1 $a2, $f22 +/* 115944 802AC334 4407C000 */ mfc1 $a3, $f24 +/* 115948 802AC338 4405E000 */ mfc1 $a1, $f28 +/* 11594C 802AC33C 02C02025 */ move $a0, $s6 +/* 115950 802AC340 0C0AAB93 */ jal func_802AAE4C +/* 115954 802AC344 AFAF0014 */ sw $t7, 0x14($sp) +/* 115958 802AC348 24150001 */ li $s5, 1 +/* 11595C 802AC34C 1455001F */ bne $v0, $s5, .L802AC3CC +/* 115960 802AC350 00000000 */ nop +/* 115964 802AC354 4406D000 */ mfc1 $a2, $f26 +/* 115968 802AC358 4600B306 */ mov.s $f12, $f22 +/* 11596C 802AC35C 4600C386 */ mov.s $f14, $f24 +/* 115970 802AC360 0C0AAF8C */ jal func_802ABE30 +/* 115974 802AC364 9667000E */ lhu $a3, 0xe($s3) +/* 115978 802AC368 E6600010 */ swc1 $f0, 0x10($s3) +/* 11597C 802AC36C 100000ED */ b .L802AC724 +/* 115980 802AC370 24020001 */ li $v0, 1 +.L802AC374: +/* 115984 802AC374 3C0140A0 */ li $at, 0x40A00000 # 5.000000 +/* 115988 802AC378 4481E000 */ mtc1 $at, $f28 +/* 11598C 802AC37C E7BA0010 */ swc1 $f26, 0x10($sp) +/* 115990 802AC380 9678000E */ lhu $t8, 0xe($s3) +/* 115994 802AC384 27B600D0 */ addiu $s6, $sp, 0xd0 +/* 115998 802AC388 4406B000 */ mfc1 $a2, $f22 +/* 11599C 802AC38C 4407C000 */ mfc1 $a3, $f24 +/* 1159A0 802AC390 4405E000 */ mfc1 $a1, $f28 +/* 1159A4 802AC394 02C02025 */ move $a0, $s6 +/* 1159A8 802AC398 0C0AACA2 */ jal func_802AB288 +/* 1159AC 802AC39C AFB80014 */ sw $t8, 0x14($sp) +/* 1159B0 802AC3A0 24150001 */ li $s5, 1 +/* 1159B4 802AC3A4 14550009 */ bne $v0, $s5, .L802AC3CC +/* 1159B8 802AC3A8 00000000 */ nop +/* 1159BC 802AC3AC 4406D000 */ mfc1 $a2, $f26 +/* 1159C0 802AC3B0 4600B306 */ mov.s $f12, $f22 +/* 1159C4 802AC3B4 4600C386 */ mov.s $f14, $f24 +/* 1159C8 802AC3B8 0C0AAF8C */ jal func_802ABE30 +/* 1159CC 802AC3BC 9667000E */ lhu $a3, 0xe($s3) +/* 1159D0 802AC3C0 E6600010 */ swc1 $f0, 0x10($s3) +/* 1159D4 802AC3C4 100000D7 */ b .L802AC724 +/* 1159D8 802AC3C8 24020001 */ li $v0, 1 +.L802AC3CC: +/* 1159DC 802AC3CC 3C028016 */ lui $v0, %hi(D_8015F6EA) # $v0, 0x8016 +/* 1159E0 802AC3D0 8442F6EA */ lh $v0, %lo(D_8015F6EA)($v0) +/* 1159E4 802AC3D4 3C198016 */ lui $t9, %hi(D_8015F6E8) # $t9, 0x8016 +/* 1159E8 802AC3D8 8739F6E8 */ lh $t9, %lo(D_8015F6E8)($t9) +/* 1159EC 802AC3DC 44822000 */ mtc1 $v0, $f4 +/* 1159F0 802AC3E0 3C038016 */ lui $v1, %hi(D_8015F6F2) # $v1, 0x8016 +/* 1159F4 802AC3E4 03222023 */ subu $a0, $t9, $v0 +/* 1159F8 802AC3E8 468021A0 */ cvt.s.w $f6, $f4 +/* 1159FC 802AC3EC 8463F6F2 */ lh $v1, %lo(D_8015F6F2)($v1) +/* 115A00 802AC3F0 3C088016 */ lui $t0, %hi(D_8015F6F0) # $t0, 0x8016 +/* 115A04 802AC3F4 8508F6F0 */ lh $t0, %lo(D_8015F6F0)($t0) +/* 115A08 802AC3F8 4606B201 */ sub.s $f8, $f22, $f6 +/* 115A0C 802AC3FC 44833000 */ mtc1 $v1, $f6 +/* 115A10 802AC400 01032823 */ subu $a1, $t0, $v1 +/* 115A14 802AC404 04810003 */ bgez $a0, .L802AC414 +/* 115A18 802AC408 00044943 */ sra $t1, $a0, 5 +/* 115A1C 802AC40C 2481001F */ addiu $at, $a0, 0x1f +/* 115A20 802AC410 00014943 */ sra $t1, $at, 5 +.L802AC414: +/* 115A24 802AC414 44895000 */ mtc1 $t1, $f10 +/* 115A28 802AC418 00000000 */ nop +/* 115A2C 802AC41C 46805420 */ cvt.s.w $f16, $f10 +/* 115A30 802AC420 468032A0 */ cvt.s.w $f10, $f6 +/* 115A34 802AC424 46104483 */ div.s $f18, $f8, $f16 +/* 115A38 802AC428 460AD201 */ sub.s $f8, $f26, $f10 +/* 115A3C 802AC42C 4600910D */ trunc.w.s $f4, $f18 +/* 115A40 802AC430 44062000 */ mfc1 $a2, $f4 +/* 115A44 802AC434 00000000 */ nop +/* 115A48 802AC438 00065C00 */ sll $t3, $a2, 0x10 +/* 115A4C 802AC43C 000B6403 */ sra $t4, $t3, 0x10 +/* 115A50 802AC440 01803025 */ move $a2, $t4 +/* 115A54 802AC444 04A10003 */ bgez $a1, .L802AC454 +/* 115A58 802AC448 00056943 */ sra $t5, $a1, 5 +/* 115A5C 802AC44C 24A1001F */ addiu $at, $a1, 0x1f +/* 115A60 802AC450 00016943 */ sra $t5, $at, 5 +.L802AC454: +/* 115A64 802AC454 448D8000 */ mtc1 $t5, $f16 +/* 115A68 802AC458 00000000 */ nop +/* 115A6C 802AC45C 468084A0 */ cvt.s.w $f18, $f16 +/* 115A70 802AC460 46124103 */ div.s $f4, $f8, $f18 +/* 115A74 802AC464 4600218D */ trunc.w.s $f6, $f4 +/* 115A78 802AC468 44073000 */ mfc1 $a3, $f6 +/* 115A7C 802AC46C 00000000 */ nop +/* 115A80 802AC470 00077C00 */ sll $t7, $a3, 0x10 +/* 115A84 802AC474 04C10003 */ bgez $a2, .L802AC484 +/* 115A88 802AC478 000F3C03 */ sra $a3, $t7, 0x10 +/* 115A8C 802AC47C 100000A9 */ b .L802AC724 +/* 115A90 802AC480 00001025 */ move $v0, $zero +.L802AC484: +/* 115A94 802AC484 04E10003 */ bgez $a3, .L802AC494 +/* 115A98 802AC488 28C10020 */ slti $at, $a2, 0x20 +/* 115A9C 802AC48C 100000A5 */ b .L802AC724 +/* 115AA0 802AC490 00001025 */ move $v0, $zero +.L802AC494: +/* 115AA4 802AC494 54200004 */ bnel $at, $zero, .L802AC4A8 +/* 115AA8 802AC498 28E10020 */ slti $at, $a3, 0x20 +/* 115AAC 802AC49C 100000A1 */ b .L802AC724 +/* 115AB0 802AC4A0 00001025 */ move $v0, $zero +/* 115AB4 802AC4A4 28E10020 */ slti $at, $a3, 0x20 +.L802AC4A8: +/* 115AB8 802AC4A8 14200003 */ bnez $at, .L802AC4B8 +/* 115ABC 802AC4AC 0007C940 */ sll $t9, $a3, 5 +/* 115AC0 802AC4B0 1000009C */ b .L802AC724 +/* 115AC4 802AC4B4 00001025 */ move $v0, $zero +.L802AC4B8: +/* 115AC8 802AC4B8 00D94021 */ addu $t0, $a2, $t9 +/* 115ACC 802AC4BC 00084C00 */ sll $t1, $t0, 0x10 +/* 115AD0 802AC4C0 00095403 */ sra $t2, $t1, 0x10 +/* 115AD4 802AC4C4 3C0C8015 */ lui $t4, %hi(D_8014F110) # $t4, 0x8015 +/* 115AD8 802AC4C8 258CF110 */ addiu $t4, %lo(D_8014F110) # addiu $t4, $t4, -0xef0 +/* 115ADC 802AC4CC 000A5880 */ sll $t3, $t2, 2 +/* 115AE0 802AC4D0 016C1821 */ addu $v1, $t3, $t4 +/* 115AE4 802AC4D4 94620002 */ lhu $v0, 2($v1) +/* 115AE8 802AC4D8 14400003 */ bnez $v0, .L802AC4E8 +/* 115AEC 802AC4DC AFA20070 */ sw $v0, 0x70($sp) +/* 115AF0 802AC4E0 10000090 */ b .L802AC724 +/* 115AF4 802AC4E4 00001025 */ move $v0, $zero +.L802AC4E8: +/* 115AF8 802AC4E8 8FAE0070 */ lw $t6, 0x70($sp) +/* 115AFC 802AC4EC 94710000 */ lhu $s1, ($v1) +/* 115B00 802AC4F0 00009025 */ move $s2, $zero +/* 115B04 802AC4F4 19C00089 */ blez $t6, .L802AC71C +/* 115B08 802AC4F8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 115B0C 802AC4FC 4481A000 */ mtc1 $at, $f20 +/* 115B10 802AC500 00000000 */ nop +.L802AC504: +/* 115B14 802AC504 3C0F8016 */ lui $t7, %hi(D_8015F584) # $t7, 0x8016 +/* 115B18 802AC508 8DEFF584 */ lw $t7, %lo(D_8015F584)($t7) +/* 115B1C 802AC50C 0011C040 */ sll $t8, $s1, 1 +/* 115B20 802AC510 3C088016 */ lui $t0, %hi(D_8015F580) # $t0, 0x8016 +/* 115B24 802AC514 01F8C821 */ addu $t9, $t7, $t8 +/* 115B28 802AC518 97300000 */ lhu $s0, ($t9) +/* 115B2C 802AC51C 8D08F580 */ lw $t0, %lo(D_8015F580)($t0) +/* 115B30 802AC520 0010A080 */ sll $s4, $s0, 2 +/* 115B34 802AC524 0290A023 */ subu $s4, $s4, $s0 +/* 115B38 802AC528 0014A080 */ sll $s4, $s4, 2 +/* 115B3C 802AC52C 0290A023 */ subu $s4, $s4, $s0 +/* 115B40 802AC530 0014A080 */ sll $s4, $s4, 2 +/* 115B44 802AC534 01141021 */ addu $v0, $t0, $s4 +/* 115B48 802AC538 94430000 */ lhu $v1, ($v0) +/* 115B4C 802AC53C 30694000 */ andi $t1, $v1, 0x4000 +/* 115B50 802AC540 51200029 */ beql $t1, $zero, .L802AC5E8 +/* 115B54 802AC544 30698000 */ andi $t1, $v1, 0x8000 +/* 115B58 802AC548 966A000E */ lhu $t2, 0xe($s3) +/* 115B5C 802AC54C 02C02025 */ move $a0, $s6 +/* 115B60 802AC550 5150006A */ beql $t2, $s0, .L802AC6FC +/* 115B64 802AC554 8FAC0070 */ lw $t4, 0x70($sp) +/* 115B68 802AC558 4405E000 */ mfc1 $a1, $f28 +/* 115B6C 802AC55C 4406B000 */ mfc1 $a2, $f22 +/* 115B70 802AC560 4407C000 */ mfc1 $a3, $f24 +/* 115B74 802AC564 E7BA0010 */ swc1 $f26, 0x10($sp) +/* 115B78 802AC568 0C0AAB93 */ jal func_802AAE4C +/* 115B7C 802AC56C AFB00014 */ sw $s0, 0x14($sp) +/* 115B80 802AC570 54550062 */ bnel $v0, $s5, .L802AC6FC +/* 115B84 802AC574 8FAC0070 */ lw $t4, 0x70($sp) +/* 115B88 802AC578 4406D000 */ mfc1 $a2, $f26 +/* 115B8C 802AC57C 4600B306 */ mov.s $f12, $f22 +/* 115B90 802AC580 4600C386 */ mov.s $f14, $f24 +/* 115B94 802AC584 0C0AAF8C */ jal func_802ABE30 +/* 115B98 802AC588 3207FFFF */ andi $a3, $s0, 0xffff +/* 115B9C 802AC58C E6600010 */ swc1 $f0, 0x10($s3) +/* 115BA0 802AC590 3C0B8016 */ lui $t3, %hi(D_8015F580) # $t3, 0x8016 +/* 115BA4 802AC594 8D6BF580 */ lw $t3, %lo(D_8015F580)($t3) +/* 115BA8 802AC598 240E0040 */ li $t6, 64 +/* 115BAC 802AC59C 3C0F8016 */ lui $t7, %hi(D_8015F580) # $t7, 0x8016 +/* 115BB0 802AC5A0 01746021 */ addu $t4, $t3, $s4 +/* 115BB4 802AC5A4 958D0002 */ lhu $t5, 2($t4) +/* 115BB8 802AC5A8 A26E000D */ sb $t6, 0xd($s3) +/* 115BBC 802AC5AC A670000E */ sh $s0, 0xe($s3) +/* 115BC0 802AC5B0 A26D000C */ sb $t5, 0xc($s3) +/* 115BC4 802AC5B4 8DEFF580 */ lw $t7, %lo(D_8015F580)($t7) +/* 115BC8 802AC5B8 24020001 */ li $v0, 1 +/* 115BCC 802AC5BC 01F4C021 */ addu $t8, $t7, $s4 +/* 115BD0 802AC5C0 97190000 */ lhu $t9, ($t8) +/* 115BD4 802AC5C4 33281000 */ andi $t0, $t9, 0x1000 +/* 115BD8 802AC5C8 51000004 */ beql $t0, $zero, .L802AC5DC +/* 115BDC 802AC5CC AE600014 */ sw $zero, 0x14($s3) +/* 115BE0 802AC5D0 10000054 */ b .L802AC724 +/* 115BE4 802AC5D4 AE750014 */ sw $s5, 0x14($s3) +/* 115BE8 802AC5D8 AE600014 */ sw $zero, 0x14($s3) +.L802AC5DC: +/* 115BEC 802AC5DC 10000051 */ b .L802AC724 +/* 115BF0 802AC5E0 24020001 */ li $v0, 1 +/* 115BF4 802AC5E4 30698000 */ andi $t1, $v1, 0x8000 +.L802AC5E8: +/* 115BF8 802AC5E8 51200023 */ beql $t1, $zero, .L802AC678 +/* 115BFC 802AC5EC C4500024 */ lwc1 $f16, 0x24($v0) +/* 115C00 802AC5F0 C44A001C */ lwc1 $f10, 0x1c($v0) +/* 115C04 802AC5F4 460AA032 */ c.eq.s $f20, $f10 +/* 115C08 802AC5F8 00000000 */ nop +/* 115C0C 802AC5FC 4503003F */ bc1tl .L802AC6FC +/* 115C10 802AC600 8FAC0070 */ lw $t4, 0x70($sp) +/* 115C14 802AC604 966A000E */ lhu $t2, 0xe($s3) +/* 115C18 802AC608 02C02025 */ move $a0, $s6 +/* 115C1C 802AC60C 5150003B */ beql $t2, $s0, .L802AC6FC +/* 115C20 802AC610 8FAC0070 */ lw $t4, 0x70($sp) +/* 115C24 802AC614 4405E000 */ mfc1 $a1, $f28 +/* 115C28 802AC618 4406B000 */ mfc1 $a2, $f22 +/* 115C2C 802AC61C 4407C000 */ mfc1 $a3, $f24 +/* 115C30 802AC620 E7BA0010 */ swc1 $f26, 0x10($sp) +/* 115C34 802AC624 0C0AADB1 */ jal func_802AB6C4 +/* 115C38 802AC628 AFB00014 */ sw $s0, 0x14($sp) +/* 115C3C 802AC62C 54550033 */ bnel $v0, $s5, .L802AC6FC +/* 115C40 802AC630 8FAC0070 */ lw $t4, 0x70($sp) +/* 115C44 802AC634 4406D000 */ mfc1 $a2, $f26 +/* 115C48 802AC638 4600B306 */ mov.s $f12, $f22 +/* 115C4C 802AC63C 4600C386 */ mov.s $f14, $f24 +/* 115C50 802AC640 0C0AAF8C */ jal func_802ABE30 +/* 115C54 802AC644 3207FFFF */ andi $a3, $s0, 0xffff +/* 115C58 802AC648 E6600010 */ swc1 $f0, 0x10($s3) +/* 115C5C 802AC64C 3C0B8016 */ lui $t3, %hi(D_8015F580) # $t3, 0x8016 +/* 115C60 802AC650 8D6BF580 */ lw $t3, %lo(D_8015F580)($t3) +/* 115C64 802AC654 240E0080 */ li $t6, 128 +/* 115C68 802AC658 24020001 */ li $v0, 1 +/* 115C6C 802AC65C 01746021 */ addu $t4, $t3, $s4 +/* 115C70 802AC660 958D0002 */ lhu $t5, 2($t4) +/* 115C74 802AC664 A26E000D */ sb $t6, 0xd($s3) +/* 115C78 802AC668 A670000E */ sh $s0, 0xe($s3) +/* 115C7C 802AC66C 1000002D */ b .L802AC724 +/* 115C80 802AC670 A26D000C */ sb $t5, 0xc($s3) +/* 115C84 802AC674 C4500024 */ lwc1 $f16, 0x24($v0) +.L802AC678: +/* 115C88 802AC678 4610A032 */ c.eq.s $f20, $f16 +/* 115C8C 802AC67C 00000000 */ nop +/* 115C90 802AC680 4503001E */ bc1tl .L802AC6FC +/* 115C94 802AC684 8FAC0070 */ lw $t4, 0x70($sp) +/* 115C98 802AC688 966F000E */ lhu $t7, 0xe($s3) +/* 115C9C 802AC68C 02C02025 */ move $a0, $s6 +/* 115CA0 802AC690 51F0001A */ beql $t7, $s0, .L802AC6FC +/* 115CA4 802AC694 8FAC0070 */ lw $t4, 0x70($sp) +/* 115CA8 802AC698 4405E000 */ mfc1 $a1, $f28 +/* 115CAC 802AC69C 4406B000 */ mfc1 $a2, $f22 +/* 115CB0 802AC6A0 4407C000 */ mfc1 $a3, $f24 +/* 115CB4 802AC6A4 E7BA0010 */ swc1 $f26, 0x10($sp) +/* 115CB8 802AC6A8 0C0AACA2 */ jal func_802AB288 +/* 115CBC 802AC6AC AFB00014 */ sw $s0, 0x14($sp) +/* 115CC0 802AC6B0 54550012 */ bnel $v0, $s5, .L802AC6FC +/* 115CC4 802AC6B4 8FAC0070 */ lw $t4, 0x70($sp) +/* 115CC8 802AC6B8 4406D000 */ mfc1 $a2, $f26 +/* 115CCC 802AC6BC 4600B306 */ mov.s $f12, $f22 +/* 115CD0 802AC6C0 4600C386 */ mov.s $f14, $f24 +/* 115CD4 802AC6C4 0C0AAF8C */ jal func_802ABE30 +/* 115CD8 802AC6C8 3207FFFF */ andi $a3, $s0, 0xffff +/* 115CDC 802AC6CC E6600010 */ swc1 $f0, 0x10($s3) +/* 115CE0 802AC6D0 3C188016 */ lui $t8, %hi(D_8015F580) # $t8, 0x8016 +/* 115CE4 802AC6D4 8F18F580 */ lw $t8, %lo(D_8015F580)($t8) +/* 115CE8 802AC6D8 24090020 */ li $t1, 32 +/* 115CEC 802AC6DC 24020001 */ li $v0, 1 +/* 115CF0 802AC6E0 0314C821 */ addu $t9, $t8, $s4 +/* 115CF4 802AC6E4 97280002 */ lhu $t0, 2($t9) +/* 115CF8 802AC6E8 A269000D */ sb $t1, 0xd($s3) +/* 115CFC 802AC6EC A670000E */ sh $s0, 0xe($s3) +/* 115D00 802AC6F0 1000000C */ b .L802AC724 +/* 115D04 802AC6F4 A268000C */ sb $t0, 0xc($s3) +/* 115D08 802AC6F8 8FAC0070 */ lw $t4, 0x70($sp) +.L802AC6FC: +/* 115D0C 802AC6FC 26520001 */ addiu $s2, $s2, 1 +/* 115D10 802AC700 324BFFFF */ andi $t3, $s2, 0xffff +/* 115D14 802AC704 26310001 */ addiu $s1, $s1, 1 +/* 115D18 802AC708 322AFFFF */ andi $t2, $s1, 0xffff +/* 115D1C 802AC70C 016C082A */ slt $at, $t3, $t4 +/* 115D20 802AC710 01609025 */ move $s2, $t3 +/* 115D24 802AC714 1420FF7B */ bnez $at, .L802AC504 +/* 115D28 802AC718 01408825 */ move $s1, $t2 +.L802AC71C: +/* 115D2C 802AC71C E6780010 */ swc1 $f24, 0x10($s3) +/* 115D30 802AC720 A260000C */ sb $zero, 0xc($s3) +.L802AC724: +/* 115D34 802AC724 8FBF0064 */ lw $ra, 0x64($sp) +/* 115D38 802AC728 D7B40020 */ ldc1 $f20, 0x20($sp) +/* 115D3C 802AC72C D7B60028 */ ldc1 $f22, 0x28($sp) +/* 115D40 802AC730 D7B80030 */ ldc1 $f24, 0x30($sp) +/* 115D44 802AC734 D7BA0038 */ ldc1 $f26, 0x38($sp) +/* 115D48 802AC738 D7BC0040 */ ldc1 $f28, 0x40($sp) +/* 115D4C 802AC73C 8FB00048 */ lw $s0, 0x48($sp) +/* 115D50 802AC740 8FB1004C */ lw $s1, 0x4c($sp) +/* 115D54 802AC744 8FB20050 */ lw $s2, 0x50($sp) +/* 115D58 802AC748 8FB30054 */ lw $s3, 0x54($sp) +/* 115D5C 802AC74C 8FB40058 */ lw $s4, 0x58($sp) +/* 115D60 802AC750 8FB5005C */ lw $s5, 0x5c($sp) +/* 115D64 802AC754 8FB60060 */ lw $s6, 0x60($sp) +/* 115D68 802AC758 03E00008 */ jr $ra +/* 115D6C 802AC75C 27BD0110 */ addiu $sp, $sp, 0x110 diff --git a/src/code_80296A50.c b/src/code_80296A50.c index 7568ea289..450fea8e7 100644 --- a/src/code_80296A50.c +++ b/src/code_80296A50.c @@ -1676,19 +1676,10 @@ void update_obj_mario_raceway_sign(struct Actor *arg0) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 685418adfeb3794409e47b45ac5cab60b17d23fd -extern s16 gNumActors; -extern ? D_8015F9BE; - -void func_8029ABD4(s16 arg1, s32 arg1) { - arg1 = M2C_ERROR(Read from unset register $a1); +UNUSED void func_8029ABD4(f32 *pos, s16 state) { gNumActors = 0; - *(&D_8015F9BE + (func_8029ED38((f32 *) arg1, (s16 *)0x00000014) * 0x70)) = (s16) arg1; + gActorList[func_8029ED38(pos, 0x0014)].state = state; } -#else -GLOBAL_ASM("asm/non_matchings/code_actors/func_8029ABD4.s") -#endif #ifdef NEEDS_RODATA // needs jmpt table rodata aligned to match. //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 @@ -2357,121 +2348,90 @@ void place_falling_rocks(struct ActorSpawnData *spawnData) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 685418adfeb3794409e47b45ac5cab60b17d23fd -? func_800C98B8(f32 *, f32 *, ?); /* extern */ -? func_8029CF0C(? *, struct FallingRock *); /* extern */ -? func_802AC114(f32, f32 *, f32, f32 *, ?); /* extern */ -? func_802ADDC8(f32, f32, UnkActorInner *, ?, f32, f32, f32); /* extern */ -extern ? D_06007230; +#ifdef INCORRECT_REGALLOC +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +extern struct ActorSpawnData D_06007230; extern f32 D_8015F8E4; -static f32 D_802B9758 = 5461.0f; -static f64 D_802B9760 = 0.1; -static f32 D_802B9768 = -1.2f; -static f32 D_802B976C = -1.2f; -static f32 D_802B9770 = -1.2f; -static f32 D_802B9774 = -1.2f; -static f32 D_802B9778 = -1.2f; +extern f32 D_802B9758;// = 5461.0f; +extern f64 D_802B9760;// = 0.1; +extern f32 D_802B9768;// = -1.2f; +extern f32 D_802B976C;// = -1.2f; +extern f32 D_802B9770;// = -1.2f; +extern f32 D_802B9774;// = -1.2f; +extern f32 D_802B9778;// = -1.2f; + +void func_802AC114(Vec3f arg0, f32 arg1, Vec3f arg2, f32 arg3); void update_obj_falling_rocks(struct FallingRock *rock) { - f32 sp4C; - f32 sp48; - f32 sp44; - f32 sp3C; - f32 sp34; - f32 *sp30; - f32 *temp_s1; - f32 *temp_s1_2; - f32 *temp_s1_3; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_3; - f32 temp_f10; - f32 temp_f14; - f32 temp_f2; - f32 temp_f2_2; - f32 temp_f2_3; - f32 temp_f4; - s16 temp_v0; - f32 phi_f12; + Vec3f unkVec; + f32 pad0; + f32 pad1; + f32 pad2; if (rock->respawnTimer != 0) { rock->respawnTimer -= 1; return; } - if (rock->pos[1] < D_8015F8E4) { func_8029CF0C(&D_06007230, rock); } - rock->rot[0] += (s32) ((rock->velocity[2] * D_802B9758) / 20.0f); - rock->rot[2] += (s32) ((rock->velocity[0] * D_802B9758) / 20.0f); - rock->velocity[1] = (f32) ((f64) rock->velocity[1] - D_802B9760); - if (rock->velocity[1] < -2.0f) { + rock->rot[0] += (s16) ((rock->velocity[2] * 5461.0f) / 20.0f); + rock->rot[2] += (s16) ((rock->velocity[0] * 5461.0f) / 20.0f); + rock->velocity[1] -= 0.1; + if (rock->velocity[1] < (-2.0f)) { rock->velocity[1] = -2.0f; } rock->pos[0] += rock->velocity[0]; rock->pos[1] += rock->velocity[1]; rock->pos[2] += rock->velocity[2]; - sp3C = rock->velocity[1]; - func_802ADDC8(rock->velocity[0], D_802B9758, &rock->unk30, 10.0f, rock->pos[0], rock->pos[1], rock->pos[2]); - temp_f2 = ; - phi_f12 = 0.0f; - if (rock->unk30.unk44 < 0.0f) { - sp44 = -rock->unk30.unk60[0]; - sp48 = -rock->unk30.unk60[1]; - sp4C = -rock->unk30.unk60[2]; - temp_f0 = rock->unk30.unk44; - rock->pos[0] += sp44 * temp_f0; - rock->pos[1] += sp48 * temp_f0; - rock->pos[2] += sp4C * temp_f0; - func_802AC114(0.0f, &sp44, rock->unk30.unk44, rock->velocity, 0x40000000); - rock->velocity[1] = D_802B9768 * sp3C; - func_800C98B8(rock->pos, rock->velocity, 0x1900800F); + pad1 = rock->velocity[1]; + func_802ADDC8(&rock->unk30, 10.0f, rock->pos[0], rock->pos[1], rock->pos[2]); + pad0 = rock->unk30.unk44; + if (pad0 < 0.0f) { + unkVec[0] = -rock->unk30.unk60[0]; + unkVec[1] = -rock->unk30.unk60[1]; + unkVec[2] = -rock->unk30.unk60[2]; + rock->pos[0] += unkVec[0] * rock->unk30.unk44; + rock->pos[1] += unkVec[1] * rock->unk30.unk44; + rock->pos[2] += unkVec[2] * rock->unk30.unk44; + func_802AC114(unkVec, pad0, rock->velocity, 2.0f); + rock->velocity[1] = -1.2f * pad1; + func_800C98B8(rock->pos, rock->velocity, 0x1900800FU); } - temp_f2_2 = rock->unk30.unk3C; - phi_f12 = 0.0f; - if (temp_f2_2 < 0.0f) { - sp48 = -rock->unk30.unk48[1]; - if (sp48 == 0.0f) { - rock->velocity[1] *= D_802B976C; - return; + pad0 = rock->unk30.unk3C; + if (pad0 < 0.0f) { + unkVec[1] = -rock->unk30.unk48[1]; + if (unkVec[1] == 0.0f) { + rock->velocity[1] *= -1.2f; + } + else { + unkVec[0] = -rock->unk30.unk48[0]; + unkVec[2] = -rock->unk30.unk48[2]; + rock->pos[0] += unkVec[0] * rock->unk30.unk3C; + rock->pos[1] += unkVec[1] * rock->unk30.unk3C; + rock->pos[2] += unkVec[2] * rock->unk30.unk3C; + func_802AC114(unkVec, pad0, rock->velocity, 2.0f); + rock->velocity[1] = -1.2f * pad1; + func_800C98B8(rock->pos, rock->velocity, 0x1900800FU); } - temp_f4 = -rock->unk30.unk48[0]; - temp_s1_2 = rock->velocity; - sp44 = temp_f4; - sp4C = -rock->unk30.unk48[2]; - temp_f0_2 = rock->unk30.unk3C; - rock->pos[0] += temp_f4 * temp_f0_2; - rock->pos[1] += sp48 * temp_f0_2; - rock->pos[2] += sp4C * temp_f0_2; - sp30 = rock->pos; - sp34 = D_802B9770 * sp3C; - func_802AC114(0.0f, &sp44, temp_f2_2, temp_s1_2, 0x40000000); - rock->velocity[1] = sp34; - func_800C98B8(sp30, temp_s1_2, 0x1900800F); - goto block_12; } -block_12: - temp_f2_3 = rock->unk30.unk40; - if (temp_f2_3 < phi_f12) { - sp48 = -rock->unk30.unk54[1]; - if (phi_f12 == sp48) { - rock->velocity[1] *= D_802B9774; - return; + pad0 = rock->unk30.unk40; + if (pad0 < 0.0f) { + unkVec[1] = -rock->unk30.unk54[1]; + if (unkVec[1] == 0.0f) { + rock->velocity[1] *= -1.2f; + } + else { + unkVec[0] = -rock->unk30.unk54[0]; + unkVec[2] = -rock->unk30.unk54[2]; + rock->pos[0] += unkVec[0] * rock->unk30.unk40; + rock->pos[1] += unkVec[1] * rock->unk30.unk40; + rock->pos[2] += unkVec[2] * rock->unk30.unk40; + pad1 = rock->velocity[1]; + func_802AC114(unkVec, pad0, rock->velocity, 2.0f); + rock->velocity[1] = -1.2f * pad1; + func_800C98B8(rock->pos, rock->velocity, 0x1900800FU); } - temp_s1_3 = rock->velocity; - temp_f10 = -rock->unk30.unk54[0]; - sp44 = temp_f10; - sp4C = -rock->unk30.unk54[2]; - temp_f0_3 = rock->unk30.unk40; - rock->pos[0] += temp_f10 * temp_f0_3; - rock->pos[1] += sp48 * temp_f0_3; - rock->pos[2] += sp4C * temp_f0_3; - sp30 = rock->pos; - sp3C = rock->velocity[1]; - func_802AC114(phi_f12, &sp44, temp_f2_3, temp_s1_3, 0x40000000); - rock->velocity[1] = D_802B9778 * sp3C; - func_800C98B8(sp30, temp_s1_3, 0x1900800F); } } #else @@ -2479,119 +2439,100 @@ GLOBAL_ASM("asm/non_matchings/code_actors/update_obj_falling_rocks.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? func_802976D8(void *); /* extern */ -? func_802976EC(void *, void *); /* extern */ -s32 func_8029EC88(f32 *, s16 *, ? *, s16); /* extern */ -f32 func_802ABE30(?32, f32, ?32, u16); /* extern */ -? func_802ADDC8(void *, ?, ?32, f32, ?32); /* extern */ -? vec3f_set(? *, f32, f32, f32); /* extern */ -extern s32 D_800DC50C; -extern ? gActorList; -extern f32 gCourseDirection; -extern ? gSegmentTable; -static u16 gCurrentCourseId; /* type too large by 2; unable to generate initializer */ +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +s16 gCurrentCourseId; /* unable to generate initializer */ void place_segment_06(u32 arg0) { f32 sp94; f32 sp90; f32 sp8C; - ? sp80; + f32 sp80; s16 sp7C; s16 sp7A; s16 sp78; s16 sp74; - s16 *temp_s3; + UnkActorInner *temp_s1; + s16 *var_s3; s16 temp_v0; s16 temp_v0_2; - s16 temp_v0_3; - s16 temp_v0_4; + s16 var_s2; + s16 var_v0; + struct Actor *temp_s0; u16 temp_t3; - void *temp_s0; - void *temp_s1; - s16 phi_v0; - s16 *phi_s3; - s16 phi_s2; - temp_s3 = *(&gSegmentTable + ((arg0 >> 0x18) * 4)) + (arg0 & 0xFFFFFF) + 0x80000000; + var_s3 = gSegmentTable[arg0 >> 0x18] + (arg0 & 0xFFFFFF) + 0x80000000; vec3f_set(&sp80, 0.0f, 0.0f, 0.0f); sp78 = 0x4000; sp7A = 0; sp7C = 0; - temp_v0 = *temp_s3; - phi_v0 = temp_v0; - if (temp_v0 != -0x8000) { - phi_s3 = temp_s3; - phi_s2 = sp74; + var_v0 = *var_s3; + if (var_v0 != -0x8000) { + var_s2 = sp74; do { - temp_t3 = gCurrentCourseId; - sp8C = (f32) phi_v0 * gCourseDirection; - sp94 = (f32) phi_s3->unk_04; - sp90 = (f32) phi_s3->unk2; + temp_t3 = (u16) gCurrentCourseId; + sp8C = (f32) var_v0 * gCourseDirection; + sp94 = (f32) var_s3->unk4; + sp90 = (f32) var_s3->unk2; switch (temp_t3) { case 0: - phi_s2 = 2; + var_s2 = 2; break; case 2: - phi_s2 = 0x21; + var_s2 = 0x0021; break; case 4: - phi_s2 = 3; + var_s2 = 3; break; case 5: - phi_s2 = 0x1D; + var_s2 = 0x001D; break; case 7: - temp_v0_2 = phi_s3->unk6; - if (temp_v0_2 != 6) { - if (temp_v0_2 != 7) { - - } else { - phi_s2 = 4; - } - } else { - phi_s2 = 0x1C; + temp_v0 = var_s3->unk6; + switch (temp_v0) { /* switch 1; irregular */ + case 6: /* switch 1 */ + var_s2 = 0x001C; + break; + case 7: /* switch 1 */ + var_s2 = 4; + break; } break; case 8: - phi_s2 = 0x1A; + var_s2 = 0x001A; break; case 9: - phi_s2 = 0x13; + var_s2 = 0x0013; break; case 11: - temp_v0_3 = phi_s3->unk6; - if (temp_v0_3 != 5) { - if (temp_v0_3 != 6) { - if (temp_v0_3 != 7) { - - } else { - phi_s2 = 0x20; - } - } else { - phi_s2 = 0x1F; - } - } else { - phi_s2 = 0x1E; + temp_v0_2 = var_s3->unk6; + switch (temp_v0_2) { /* switch 2; irregular */ + case 5: /* switch 2 */ + var_s2 = 0x001E; + break; + case 6: /* switch 2 */ + var_s2 = 0x001F; + break; + case 7: /* switch 2 */ + var_s2 = 0x0020; + break; } break; } - temp_s0 = &gActorList + (func_8029EC88(&sp8C, &sp78, &sp80, phi_s2) * 0x70); - if (D_800DC50C == CREDITS_SEQUENCE) { - func_802976D8(temp_s0 + 0x10); + temp_s0 = &gActorList[func_8029EC88(&sp8C, &sp78, &sp80, var_s2)]; + if (D_800DC50C == 9) { + func_802976D8(temp_s0->rot); } else { - temp_s1 = temp_s0 + 0x30; - func_802ADDC8(temp_s1, 0x40A00000, temp_s0->pos, temp_s0->unk1C, temp_s0->unk20); - if (temp_s0->unk_044 < 0.0f) { - temp_s0->unk1C = func_802ABE30(temp_s0->pos, temp_s0->unk1C, temp_s0->unk20, temp_s0->unk3A); + temp_s1 = &temp_s0->unk30; + func_802ADDC8(temp_s1, 5.0f, temp_s0->pos[0], temp_s0->pos[1], temp_s0->pos[2]); + if (temp_s0->unk30.unk44 < 0.0f) { + temp_s0->pos[1] = func_802ABE30(temp_s0->pos[0], temp_s0->pos[1], temp_s0->pos[2], temp_s0->unk30.unk3A); } - func_802976EC(temp_s1, temp_s0 + 0x10); + func_802976EC(temp_s1, temp_s0->rot); } - temp_v0_4 = phi_s3->unk_08; - phi_v0 = temp_v0_4; - phi_s3 += 8; - } while (temp_v0_4 != -0x8000); - sp74 = phi_s2; + var_v0 = var_s3->unk8; + var_s3 += 8; + } while (var_v0 != -0x8000); + sp74 = var_s2; } } #else @@ -2668,99 +2609,71 @@ void destroy_all_actors(void) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 ? func_80298D10(); /* extern */ -? init_kiwano_fruit(); /* extern */ -s32 func_8029EC88(f32 *, ? *, ? *, ?); /* extern */ -? func_802A14BC(f32, ?, ?); /* extern */ -? vec3s_set(? *, ?, ?, ?); /* extern */ -? vec3f_set(f32 *, ?, ?, ?); /* extern */ -? place_all_item_boxes(? *); /* extern */ -? place_falling_rocks(? *); /* extern */ -? place_palm_trees(? *); /* extern */ -? place_piranha_plants(? *); /* extern */ ? place_segment_06(? *); /* extern */ -extern ? D_06000028; -extern ? D_06000038; -extern ? D_06000058; -extern ? D_06000080; -extern ? D_06007230; -extern ? D_06007250; +extern struct ActorSpawnData D_06000028; +extern struct ActorSpawnData D_06000038; +extern struct ActorSpawnData D_06000058; +extern struct ActorSpawnData D_06000080; +extern struct ActorSpawnData D_06007230; +extern struct ActorSpawnData D_06007250; extern ? D_06007718; -extern ? D_06007810; +extern struct ActorSpawnData D_06007810; extern ? D_06009290; -extern ? D_06009370; -extern ? D_06009498; -extern ? D_06009518; +extern struct ActorSpawnData D_06009370; +extern struct ActorSpawnData D_06009498; +extern struct ActorSpawnData D_06009518; extern ? D_06009570; -extern ? D_06009B80; -extern ? D_0600B3D0; -extern ? D_0600CB40; -extern ? D_0600D9F0; +extern struct ActorSpawnData D_06009B80; +extern struct ActorSpawnData D_0600B3D0; +extern struct ActorSpawnData D_0600CB40; +extern struct ActorSpawnData D_0600D9F0; extern ? D_0600DA78; -extern ? D_0600DB80; -extern ? D_0600FDE8; +extern struct ActorSpawnData D_0600DB80; +extern struct ActorSpawnData D_0600FDE8; extern ? D_0600FE80; -extern ? D_06013EC0; +extern struct ActorSpawnData D_06013EC0; extern ? D_06014330; -extern ? D_060143E0; -extern ? D_06016338; +extern struct ActorSpawnData D_060143E0; +extern struct ActorSpawnData D_06016338; extern ? D_060180A0; -extern ? D_06018110; -extern ? D_06018E78; -extern ? D_06018F70; -extern ? D_06022E88; +extern struct ActorSpawnData D_06018110; +extern struct ActorSpawnData D_06018E78; +extern struct ActorSpawnData D_06018F70; +extern struct ActorSpawnData D_06022E88; extern ? D_06022F08; -extern ? D_06023AE0; -extern u16 gNumActors; -extern u16 gNumPermanentActors; -extern ? gActorList; -extern ? D_8015F9BE; -extern f32 gCourseDirection; -extern s32 gPlayerCountSelection1; -static ? D_802B8850; /* unable to generate initializer */ -static ? D_802B885C; /* unable to generate initializer */ -static u16 gCurrentCourseId; /* type too large by 2; unable to generate initializer */ +extern struct ActorSpawnData D_06023AE0; +extern ? D_802B8850; +extern ? D_802B885C; +s16 gCurrentCourseId; /* unable to generate initializer */ -// Place course actors void func_8029DB44(void) { f32 sp40; - ? sp34; - ? sp2C; - f32 *temp_a0; - f32 *temp_a0_10; - f32 *temp_a0_2; - f32 *temp_a0_3; - f32 *temp_a0_4; - f32 *temp_a0_5; - f32 *temp_a0_6; - f32 *temp_a0_7; - f32 *temp_a0_8; - f32 *temp_a0_9; + f32 sp34; + s16 sp2C; + struct Actor *temp_v1; u16 temp_t9; - void *temp_v1; sp34.unk0 = D_802B8850.unk0; - sp34.unk4 = D_802B8850.unk4; - sp34.unk8 = D_802B8850.unk8; - sp2C.unk0 = D_802B885C.unk0; - sp2C.unk4 = D_802B885C.unk4; - temp_t9 = gCurrentCourseId; + sp34.unk4 = (s32) D_802B8850.unk4; + sp34.unk8 = (s32) D_802B8850.unk8; + sp2C.unk0 = (s32) D_802B885C.unk0; + sp2C.unk4 = (u16) D_802B885C.unk4; + temp_t9 = (u16) gCurrentCourseId; gNumPermanentActors = 0; switch (temp_t9) { case COURSE_MARIO_RACEWAY: place_segment_06(&D_06009570); place_piranha_plants(&D_06009518); place_all_item_boxes(&D_06009498); - vec3f_set(&sp40, 0x43160000, 0x42200000, 0xC4A28000); - temp_a0 = &sp40; + vec3f_set(&sp40, 150.0f, 40.0f, -1300.0f); sp40 *= gCourseDirection; - func_8029EC88(temp_a0, &sp2C, &sp34, 0x17); - vec3f_set(&sp40, 0x451D8000, 0, 0x449B0000); - temp_a0_2 = &sp40; + func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_MARIO_RACEWAY_SIGN); + vec3f_set(&sp40, 2520.0f, 0.0f, 1240.0f); sp40 *= gCourseDirection; - temp_v1 = (func_8029EC88(temp_a0_2, &sp2C, &sp34, 0x17) * 0x70) + &gActorList; - temp_v1->unk2 = temp_v1->unk2 | 0x4000; + temp_v1 = &gActorList[func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_MARIO_RACEWAY_SIGN)]; + temp_v1->flags |= 0x4000; break; case COURSE_CHOCO_MOUNTAIN: place_all_item_boxes(&D_06007250); @@ -2776,17 +2689,16 @@ void func_8029DB44(void) { case COURSE_YOSHI_VALLEY: place_segment_06(&D_060180A0); place_all_item_boxes(&D_06018110); - vec3f_set(&sp40, 0xC50FC000, 0, 0x441E8000); - temp_a0_3 = &sp40; + vec3f_set(&sp40, -2300.0f, 0.0f, 634.0f); sp40 *= gCourseDirection; - func_8029EC88(temp_a0_3, &sp2C, &sp34, 9); + func_8029EC88(&sp40, &sp2C, &sp34, 9); break; case COURSE_FRAPPE_SNOWLAND: place_segment_06(&D_06007718); place_all_item_boxes(&D_06007810); break; case COURSE_KOOPA_BEACH: - func_802A14BC(328.0f * gCourseDirection, 0x428C0000, 0x451ED000); + func_802A14BC(328.0f * gCourseDirection, 70.0f, 2541.0f); place_all_item_boxes(&D_06018E78); place_palm_trees(&D_06018F70); break; @@ -2811,29 +2723,19 @@ void func_8029DB44(void) { case COURSE_KALAMARI_DESERT: place_segment_06(&D_06022F08); place_all_item_boxes(&D_06022E88); - vec3f_set(&sp40, 0xC4D20000, 0x40000000, 0x420C0000); - temp_a0_4 = &sp40; + vec3f_set(&sp40, -1680.0f, 2.0f, 35.0f); sp40 *= gCourseDirection; - /* - D_8015F9BE is a fake variable. - func_8029EC88 returns an index in gActorList and D_8015F9BE represents accessing - the member 6 bytes into the actor at that index. - In this function, that's the `crossingId` member of a RailroadCrossing actor - */ - *(&D_8015F9BE + (func_8029EC88(temp_a0_4, &sp2C, &sp34, 0x27) * 0x70)) = 1; - vec3f_set(&sp40, 0xC4C80000, 0x40000000, 0x420C0000); - temp_a0_5 = &sp40; + gActorList[func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_RAILROAD_CROSSING)].crossingId = 1; + vec3f_set(&sp40, -1600.0f, 2.0f, 35.0f); sp40 *= gCourseDirection; - *(&D_8015F9BE + (func_8029EC88(temp_a0_5, &sp2C, &sp34, 0x27) * 0x70)) = 1; + gActorList[func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_RAILROAD_CROSSING)].crossingId = 1; vec3s_set(&sp2C, 0, -0x2000, 0); - vec3f_set(&sp40, 0xC519B000, 0x40000000, 0x450D7000); - temp_a0_6 = &sp40; + vec3f_set(&sp40, -2459.0f, 2.0f, 2263.0f); sp40 *= gCourseDirection; - *(&D_8015F9BE + (func_8029EC88(temp_a0_6, &sp2C, &sp34, 0x27) * 0x70)) = 0; - vec3f_set(&sp40, 0xC51A3000, 0x40000000, 0x45147000); - temp_a0_7 = &sp40; + gActorList[func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_RAILROAD_CROSSING)].crossingId = 0; + vec3f_set(&sp40, -2467.0f, 2.0f, 2375.0f); sp40 *= gCourseDirection; - *(&D_8015F9BE + (func_8029EC88(temp_a0_7, &sp2C, &sp34, 0x27) * 0x70)) = 0; + gActorList[func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_RAILROAD_CROSSING)].crossingId = 0; break; case COURSE_SHERBET_LAND: place_all_item_boxes(&D_06009B80); @@ -2843,18 +2745,15 @@ void func_8029DB44(void) { break; case COURSE_WARIO_STADIUM: place_all_item_boxes(&D_0600CB40); - vec3f_set(&sp40, 0xC3030000, 0x42A60000, 0x438F0000); - temp_a0_8 = &sp40; + vec3f_set(&sp40, -131.0f, 83.0f, 286.0f); sp40 *= gCourseDirection; - func_8029EC88(temp_a0_8, &sp2C, &sp34, 0x23); - vec3f_set(&sp40, 0xC5131000, 0x42900000, 0xC4C90000); - temp_a0_9 = &sp40; + func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_WARIO_STADIUM_SIGN); + vec3f_set(&sp40, -2353.0f, 72.0f, -1608.0f); sp40 *= gCourseDirection; - func_8029EC88(temp_a0_9, &sp2C, &sp34, 0x23); - vec3f_set(&sp40, 0xC523E000, 0x429E0000, 0x4438C000); - temp_a0_10 = &sp40; + func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_WARIO_STADIUM_SIGN); + vec3f_set(&sp40, -2622.0f, 79.0f, 739.0f); sp40 *= gCourseDirection; - func_8029EC88(temp_a0_10, &sp2C, &sp34, 0x23); + func_8029EC88(&sp40, &sp2C, &sp34, ACTOR_WARIO_STADIUM_SIGN); break; case COURSE_BLOCK_FORT: place_all_item_boxes(&D_06000038); @@ -2881,13 +2780,9 @@ GLOBAL_ASM("asm/non_matchings/code_actors/func_8029DB44.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 ? func_800122D8(); /* extern */ -? func_80297818(); /* extern */ -? destroy_all_actors(); /* extern */ ? func_8029DB44(); /* extern */ -s32 func_802A84F4(? *, ?, ?); /* extern */ -? set_segment_base_addr(?, s32); /* extern */ extern ? D_0F04CBE0; extern ? D_0F04CE30; extern ? D_0F04D080; @@ -2949,107 +2844,110 @@ extern ? D_0F057590; extern ? D_0F057EB4; extern ? D_0F0581E4; extern ? D_0F058550; -extern ? gTexture671A88; -extern ? gTexture6774D8; -extern ? gTextureShrub; -u16 gCurrentCourseId; /* unable to generate initializer */ +extern s32 D_802BA050; +extern s32 D_802BA054; +extern void *gPrevLoadedAddress; +static ? gTexture671A88; /* unable to generate initializer */ +static ? gTexture6774D8; /* unable to generate initializer */ +static ? gTextureShrub; /* unable to generate initializer */ +s16 gCurrentCourseId; /* unable to generate initializer */ void func_8029E158(void) { u16 temp_t6; set_segment_base_addr(3, gPrevLoadedAddress); - D_802BA050 = func_802A84F4(&D_0F04CBE0, 0x257, 0x400); // shell - func_802A84F4(&D_0F04CE30, 0x242, 0x400); - func_802A84F4(&D_0F04D080, 0x259, 0x400); - func_802A84F4(&D_0F04D2D8, 0x256, 0x400); - func_802A84F4(&D_0F04D538, 0x246, 0x400); - func_802A84F4(&D_0F04D790, 0x25E, 0x400); - func_802A84F4(&D_0F04D9FC, 0x25C, 0x400); - func_802A84F4(&D_0F04DC5C, 0x254, 0x400); - D_802BA054 = func_802A84F4(&D_0F04DEB0, 0x22A, 0x400); - func_802A84F4(&D_0F04E0DC, 0x237, 0x400); - func_802A84F4(&D_0F04E314, 0x23E, 0x400); - func_802A84F4(&D_0F04E554, 0x243, 0x400); - func_802A84F4(&D_0F04E798, 0x255, 0x400); - func_802A84F4(&D_0F04E9F0, 0x259, 0x400); - func_802A84F4(&D_0F04EC4C, 0x239, 0x400); - func_802A84F4(&D_0F04EE88, 0x236, 0x400); - func_802A84F4(&D_0F054C3C, 0x28E, 0x800); - func_802A84F4(&D_0F054ECC, 0x2FB, 0x800); - func_802A84F4(&D_0F0551C8, 0x302, 0x800); - func_802A84F4(&D_0F0554CC, 0x3B4, 0x800); - func_802A84F4(&D_0F055880, 0x31E, 0x800); - func_802A84F4(&D_0F055BA0, 0x36E, 0x800); - func_802A84F4(&D_0F055F10, 0x29C, 0x800); - func_802A84F4(&D_0F0561AC, 0x25B, 0x800); - func_802A84F4(&gTexture671A88, 0x400, 0x800); - func_802A84F4(&gTexture6774D8, 0x400, 0x800); - temp_t6 = gCurrentCourseId; + D_802BA050 = func_802A84F4((s32) &D_0F04CBE0, 0x00000257U, 0x00000400U); + func_802A84F4((s32) &D_0F04CE30, 0x00000242U, 0x00000400U); + func_802A84F4((s32) &D_0F04D080, 0x00000259U, 0x00000400U); + func_802A84F4((s32) &D_0F04D2D8, 0x00000256U, 0x00000400U); + func_802A84F4((s32) &D_0F04D538, 0x00000246U, 0x00000400U); + func_802A84F4((s32) &D_0F04D790, 0x0000025EU, 0x00000400U); + func_802A84F4((s32) &D_0F04D9FC, 0x0000025CU, 0x00000400U); + func_802A84F4((s32) &D_0F04DC5C, 0x00000254U, 0x00000400U); + D_802BA054 = func_802A84F4((s32) &D_0F04DEB0, 0x0000022AU, 0x00000400U); + func_802A84F4((s32) &D_0F04E0DC, 0x00000237U, 0x00000400U); + func_802A84F4((s32) &D_0F04E314, 0x0000023EU, 0x00000400U); + func_802A84F4((s32) &D_0F04E554, 0x00000243U, 0x00000400U); + func_802A84F4((s32) &D_0F04E798, 0x00000255U, 0x00000400U); + func_802A84F4((s32) &D_0F04E9F0, 0x00000259U, 0x00000400U); + func_802A84F4((s32) &D_0F04EC4C, 0x00000239U, 0x00000400U); + func_802A84F4((s32) &D_0F04EE88, 0x00000236U, 0x00000400U); + func_802A84F4((s32) &D_0F054C3C, 0x0000028EU, 0x00000800U); + func_802A84F4((s32) &D_0F054ECC, 0x000002FBU, 0x00000800U); + func_802A84F4((s32) &D_0F0551C8, 0x00000302U, 0x00000800U); + func_802A84F4((s32) &D_0F0554CC, 0x000003B4U, 0x00000800U); + func_802A84F4((s32) &D_0F055880, 0x0000031EU, 0x00000800U); + func_802A84F4((s32) &D_0F055BA0, 0x0000036EU, 0x00000800U); + func_802A84F4((s32) &D_0F055F10, 0x0000029CU, 0x00000800U); + func_802A84F4((s32) &D_0F0561AC, 0x0000025BU, 0x00000800U); + func_802A84F4((s32) &gTexture671A88, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &gTexture6774D8, 0x00000400U, 0x00000800U); + temp_t6 = (u16) gCurrentCourseId; switch (temp_t6) { case 0: - func_802A84F4(&D_0F04F45C, 0x35B, 0x800); - D_802BA058 = func_802A84F4(&D_0F056408, 0x3E8, 0x800); - func_802A84F4(&D_0F05662C, 0x3E8, 0x800); - func_802A84F4(&D_0F05688C, 0x3E8, 0x800); - func_802A84F4(&D_0F056AD0, 0x3E8, 0x800); - func_802A84F4(&D_0F056CF0, 0x3E8, 0x800); - func_802A84F4(&D_0F056EC8, 0x3E8, 0x800); - func_802A84F4(&D_0F057084, 0x3E8, 0x800); - func_802A84F4(&D_0F057288, 0x3E8, 0x800); - func_802A84F4(&D_0F057590, 0x3E8, 0x800); + func_802A84F4((s32) &D_0F04F45C, 0x0000035BU, 0x00000800U); + D_802BA058 = func_802A84F4((s32) &D_0F056408, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F05662C, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F05688C, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F056AD0, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F056CF0, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F056EC8, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F057084, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F057288, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F057590, 0x000003E8U, 0x00000800U); break; case 2: - func_802A84F4(&gTextureShrub, 0x3FF, 0x800); + func_802A84F4((s32) &gTextureShrub, 0x000003FFU, 0x00000800U); break; case 4: - func_802A84F4(&D_0F04F7A4, 0x3E8, 0x800); + func_802A84F4((s32) &D_0F04F7A4, 0x000003E8U, 0x00000800U); break; case 5: - func_802A84F4(&D_0F0513CC, 0x454, 0x800); - func_802A84F4(&D_0F051820, 0x432, 0x800); + func_802A84F4((s32) &D_0F0513CC, 0x00000454U, 0x00000800U); + func_802A84F4((s32) &D_0F051820, 0x00000432U, 0x00000800U); break; case 7: - func_802A84F4(&D_0F04FB3C, 0x3E8, 0x800); - func_802A84F4(&D_0F050D50, 0x3E8, 0x800); - D_802BA058 = func_802A84F4(&D_0F056408, 0x3E8, 0x800); - func_802A84F4(&D_0F05662C, 0x3E8, 0x800); - func_802A84F4(&D_0F05688C, 0x3E8, 0x800); - func_802A84F4(&D_0F056AD0, 0x3E8, 0x800); - func_802A84F4(&D_0F056CF0, 0x3E8, 0x800); - func_802A84F4(&D_0F056EC8, 0x3E8, 0x800); - func_802A84F4(&D_0F057084, 0x3E8, 0x800); - func_802A84F4(&D_0F057288, 0x3E8, 0x800); - func_802A84F4(&D_0F057590, 0x3E8, 0x800); + func_802A84F4((s32) &D_0F04FB3C, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F050D50, 0x000003E8U, 0x00000800U); + D_802BA058 = func_802A84F4((s32) &D_0F056408, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F05662C, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F05688C, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F056AD0, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F056CF0, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F056EC8, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F057084, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F057288, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F057590, 0x000003E8U, 0x00000800U); break; case 8: - func_802A84F4(&D_0F050468, 0x3E8, 0x800); - func_802A84F4(&D_0F050678, 0x3E8, 0x800); + func_802A84F4((s32) &D_0F050468, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F050678, 0x000003E8U, 0x00000800U); break; case 9: - func_802A84F4(&D_0F04FE28, 0x3E8, 0x800); - func_802A84F4(&D_0F050118, 0x3E8, 0x800); - func_802A84F4(&D_0F051C54, 0x400, 0x800); - func_802A84F4(&D_0F051FD8, 0x400, 0x800); - func_802A84F4(&D_0F05232C, 0x400, 0x800); - func_802A84F4(&D_0F0526B8, 0x400, 0x800); - func_802A84F4(&D_0F052A20, 0x400, 0x800); - func_802A84F4(&D_0F052D3C, 0x400, 0x800); - func_802A84F4(&D_0F05300C, 0x400, 0x800); - func_802A84F4(&D_0F0532F8, 0x400, 0x800); - func_802A84F4(&D_0F05363C, 0x400, 0x800); - func_802A84F4(&D_0F053950, 0x400, 0x800); + func_802A84F4((s32) &D_0F04FE28, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F050118, 0x000003E8U, 0x00000800U); + func_802A84F4((s32) &D_0F051C54, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F051FD8, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F05232C, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F0526B8, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F052A20, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F052D3C, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F05300C, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F0532F8, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F05363C, 0x00000400U, 0x00000800U); + func_802A84F4((s32) &D_0F053950, 0x00000400U, 0x00000800U); break; case 11: - func_802A84F4(&D_0F053C34, 0x33E, 0x800); - func_802A84F4(&D_0F053F74, 0x2FB, 0x800); - func_802A84F4(&D_0F054270, 0x2A8, 0x800); - func_802A84F4(&D_0F054518, 0x374, 0x800); - func_802A84F4(&D_0F05488C, 0x3AF, 0x800); + func_802A84F4((s32) &D_0F053C34, 0x0000033EU, 0x00000800U); + func_802A84F4((s32) &D_0F053F74, 0x000002FBU, 0x00000800U); + func_802A84F4((s32) &D_0F054270, 0x000002A8U, 0x00000800U); + func_802A84F4((s32) &D_0F054518, 0x00000374U, 0x00000800U); + func_802A84F4((s32) &D_0F05488C, 0x000003AFU, 0x00000800U); break; case 18: - func_802A84F4(&D_0F057EB4, 0x32F, 0x400); - func_802A84F4(&D_0F0581E4, 0x369, 0x400); - func_802A84F4(&D_0F058550, 0x364, 0x400); + func_802A84F4((s32) &D_0F057EB4, 0x0000032FU, 0x00000400U); + func_802A84F4((s32) &D_0F0581E4, 0x00000369U, 0x00000400U); + func_802A84F4((s32) &D_0F058550, 0x00000364U, 0x00000400U); break; } func_80297818(); @@ -3274,31 +3172,51 @@ s16 func_8029EC88(Vec3f pos, Vec3s rot, Vec3f velocity, s16 actorType) { return -1; } +s16 func_8029ED38(Vec3f pos, s16 actorType) { + Vec3f vel; + Vec3s rot; + + vec3f_set(vel, 0.0f, 0.0f, 0.0f); + vec3s_set(rot, 0, 0, 0); + return func_8029EC88(pos, rot, vel, actorType); +} + #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -//void func_8029EC88(s32, s32 *, s32 *, s32); // extern -//void vec3s_set(s32 *, s32, s32, s32); // extern +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +static f32 D_802B9888 = 0.8f; -void func_8029ED38(Vec3f arg0, Vec3s arg1) { - //? sp24; - //? sp1C; +void func_8029ED98(Player *player, u32 arg1) { + f32 sp6C; + f32 sp68; + f32 sp64; + s16 *var_s0; + s16 var_v0; - vec3f_set(arg0, 0, 0, 0); - vec3s_set(arg1, 0, 0, 0); - func_8029EC88(arg0, arg1, arg0, arg1); + var_s0 = gSegmentTable[arg1 >> 0x18] + (arg1 & 0xFFFFFF) + 0x80000000; + var_v0 = *var_s0; + if (var_v0 != -0x8000) { + do { + sp64 = (f32) var_v0 * gCourseDirection; + sp68 = (f32) var_s0->unk2; + sp6C = (f32) var_s0->unk4; + func_8029EEB8(player, &sp64, 5.0f, 40.0f, D_802B9888); + var_v0 = var_s0->unk6; + var_s0 += 6; + } while (var_v0 != -0x8000); + } } #else -GLOBAL_ASM("asm/non_matchings/code_actors/func_8029ED38.s") +GLOBAL_ASM("asm/non_matchings/code_actors/func_8029ED98.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 D_802B988C; -extern f32 D_802B9890; -extern f32 D_802B9894; -extern f32 D_802B9898; +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +static f32 D_802B988C = 0.1f; +static f32 D_802B9890 = 0.1f; +static f32 D_802B9894 = 1.2f; +static f32 D_802B9898 = 1.3f; -? func_8029EEB8(void *arg0, void *arg1, f32 arg2, f32 arg3, f32 arg4) { +s32 func_8029EEB8(Player *player, f32 *pos, f32 arg2, f32 arg3, f32 arg4) { f32 sp44; f32 sp40; f32 sp3C; @@ -3309,7 +3227,6 @@ extern f32 D_802B9898; f32 temp_f0_4; f32 temp_f0_5; f32 temp_f0_6; - f32 temp_f10; f32 temp_f12; f32 temp_f12_2; f32 temp_f14; @@ -3321,12 +3238,12 @@ extern f32 D_802B9898; f32 temp_f22; f32 temp_f2; f32 temp_f2_2; + f32 var_f2; s32 temp_v0; - f32 phi_f2; - temp_f0 = arg0->unk70; + temp_f0 = player->boundingBoxSize; temp_f22 = temp_f0 + arg2; - temp_f20 = arg1->unk0 - arg0->unk14; + temp_f20 = pos->unk0 - player->pos[0]; temp_f12 = temp_f0 + arg3; if (temp_f22 < temp_f20) { return 0; @@ -3335,14 +3252,14 @@ extern f32 D_802B9898; if (temp_f20 < temp_f2) { return 0; } - temp_f0_2 = arg1->unk_04 - arg0->pos; + temp_f0_2 = pos->unk4 - player->pos[1]; if (temp_f12 < temp_f0_2) { return 0; } if (temp_f0_2 < -temp_f12) { return 0; } - temp_f14 = arg1->unk_08 - arg0->unk1C; + temp_f14 = pos->unk8 - player->pos[2]; if (temp_f22 < temp_f14) { return 0; } @@ -3359,50 +3276,46 @@ extern f32 D_802B9898; sp44 = temp_f14; temp_f0_3 = sqrtf(temp_f12_2); sp28 = temp_f0_3 - temp_f22; - temp_v0 = arg0->unkBC; - temp_f16 = arg0->unk34; - temp_f18 = arg0->unk3C; + temp_v0 = player->unk_0BC; + temp_f16 = player->unk_034[0]; + temp_f18 = player->unk_034[2]; if ((temp_v0 & 0x200) != 0) { goto block_25; } if (temp_f0_3 < D_802B9890) { - temp_f10 = temp_f16 * temp_f16; - arg0 = arg0; sp40 = temp_f16; sp3C = temp_f18; - temp_f0_4 = sqrtf(temp_f10 + (temp_f18 * temp_f18)); - phi_f2 = temp_f0_4; + temp_f0_4 = sqrtf((temp_f16 * temp_f16) + (temp_f18 * temp_f18)); + var_f2 = temp_f0_4; if (temp_f0_4 < 0.5f) { - phi_f2 = 0.5f; + var_f2 = 0.5f; } - arg0->unk34 = 0.0f; - arg0->unk3C = 0.0f; - arg0->unk14 = arg0->unk14 + ((temp_f16 / phi_f2) * temp_f22); - arg0->unk1C = arg0->unk1C + ((temp_f18 / phi_f2) * temp_f22); + player->unk_034[0] = 0.0f; + player->unk_034[2] = 0.0f; + player->pos[0] += (temp_f16 / var_f2) * temp_f22; + player->pos[2] += (temp_f18 / var_f2) * temp_f22; goto block_25; } temp_f14_2 = temp_f14 / temp_f0_3; - arg0->unkBC = temp_v0 | 0x8000; + player->unk_0BC = temp_v0 | 0x8000; sp3C = temp_f18; sp40 = temp_f16; - arg1 = arg1; - arg0 = arg0; temp_f20_2 = temp_f20 / temp_f0_3; sp44 = temp_f14_2; temp_f0_5 = sqrtf((temp_f16 * temp_f16) + (temp_f18 * temp_f18)); if (temp_f0_5 < 0.25f) { temp_f0_6 = D_802B9894; - arg0->unk14 = arg1->unk0 - (temp_f20_2 * temp_f22 * temp_f0_6); - arg0->unk34 = 0.0f; - arg0->unk3C = 0.0f; - arg0->unk1C = arg1->unk_08 - (temp_f14_2 * temp_f22 * temp_f0_6); + player->pos[0] = pos->unk0 - (temp_f20_2 * temp_f22 * temp_f0_6); + player->unk_034[0] = 0.0f; + player->unk_034[2] = 0.0f; + player->pos[2] = pos->unk8 - (temp_f14_2 * temp_f22 * temp_f0_6); return 1; } temp_f2_2 = temp_f0_5 * (((temp_f20_2 * temp_f16) + (temp_f14_2 * temp_f18)) / temp_f0_5) * arg4 * D_802B9898; - arg0->unk34 = arg0->unk34 - (temp_f20_2 * temp_f2_2); - arg0->unk3C = arg0->unk3C - (temp_f14_2 * temp_f2_2); - arg0->unk14 = arg0->unk14 + (temp_f20_2 * sp28 * 0.5f); - arg0->unk1C = arg0->unk1C + (temp_f14_2 * sp28 * 0.5f); + player->unk_034[0] -= temp_f20_2 * temp_f2_2; + player->unk_034[2] -= temp_f14_2 * temp_f2_2; + player->pos[0] += temp_f20_2 * sp28 * 0.5f; + player->pos[2] += temp_f14_2 * sp28 * 0.5f; block_25: return 1; } @@ -3410,28 +3323,21 @@ block_25: GLOBAL_ASM("asm/non_matchings/code_actors/func_8029EEB8.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit a8f43e46d33dcb7e04d9cdc44a10b3daf4c92c3b -static f32 D_802B989C = 0.8f; +#ifdef NEEDS_RODATA +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +extern f32 D_802B989C;// = 0.8f; -s32 func_8029F1F8(Player *player, struct Actor *actor) { - u16 temp_v0; - - if (func_8029EEB8(player, actor->pos, 7.0f, 200.0f, D_802B989C) == 1) { - temp_v0 = player->unk_000; - if ((temp_v0 & 0x4000) != 0) { +s32 func_8029F1F8(Player *player, struct Actor *marioRacewaySign) { + if (func_8029EEB8(player, marioRacewaySign->pos, 7.0f, 200.0f, 0.8f) == 1) { + if ((player->unk_000 & 0x4000) != 0) { if ((player->unk_0BC & 0x200) != 0) { - actor->flags |= 0x400; + marioRacewaySign->flags |= 0x400; func_800C98B8(player->pos, player->unk_034, 0x19018010U); - func_800C90F4((Player *) (((s32) (player - gPlayerOne) / 3544) & 0xFF), (player->characterId * 0x10) + 0x2900800D); - return 1; + func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + 0x2900800D); + } else if ((player->unk_000 & 0x100) == 0) { + func_800C9060(player - gPlayerOne, 0x1900701AU); } - if ((temp_v0 & 0x100) == 0) { - func_800C9060((Player *) (((s32) (player - gPlayerOne) / 3544) & 0xFF), 0x1900701A); - } - goto block_6; } -block_6: return 1; } return 0; @@ -3440,35 +3346,21 @@ block_6: GLOBAL_ASM("asm/non_matchings/code_actors/func_8029F1F8.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit a8f43e46d33dcb7e04d9cdc44a10b3daf4c92c3b s32 func_8029F2FC(Player *player, struct PiranhaPlant *plant) { - f32 temp_f0; - u16 temp_v0; - - temp_f0 = plant->boundingBoxSize; - if (func_8029EEB8(player, plant->pos, temp_f0, temp_f0, 2.5f) == 1) { - temp_v0 = player->unk_000; - if ((temp_v0 & 0x4000) != 0) { + if (func_8029EEB8(player, plant->pos, plant->boundingBoxSize, plant->boundingBoxSize, 2.5f) == 1) { + if ((player->unk_000 & 0x4000) != 0) { if ((player->unk_0BC & 0x200) != 0) { plant->flags |= 0x400; func_800C98B8(player->pos, player->unk_034, 0x1901A24AU); - func_800C90F4((Player *) (((s32) (player - gPlayerOne) / 3544) & 0xFF), (player->characterId * 0x10) + 0x2900800D); - return 1; + func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + 0x2900800D); + } else if ((player->unk_000 & 0x100) == 0) { + func_800C9060(player - gPlayerOne, 0x1900A052U); } - if ((temp_v0 & 0x100) == 0) { - func_800C9060((Player *) (((s32) (player - gPlayerOne) / 3544) & 0xFF), 0x1900A052); - } - goto block_6; } -block_6: return 1; } return 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_actors/func_8029F2FC.s") -#endif s32 func_8029F408(Player *player, struct YoshiValleyEgg *egg) { f32 pad[5]; @@ -4001,11 +3893,9 @@ void func_802A0350(struct Actor *arg0, struct Actor *arg1) { } #ifdef MIPS_TO_C -//generated by m2c commit a8f43e46d33dcb7e04d9cdc44a10b3daf4c92c3b +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 ? func_8007ABFC(s32, ?); /* extern */ ? func_8029F1F8(Player *, struct Actor *); /* extern */ -? func_8029F2FC(Player *, struct Actor *); /* extern */ -? func_8029F408(Player *, struct Actor *); /* extern */ ? func_8029F69C(Player *, struct Actor *); /* extern */ extern s32 D_80162DF8; static f32 D_802B99C4 = 360000.0f; @@ -4019,7 +3909,7 @@ void func_802A0450(Player *player, struct Actor *actor) { Player *temp_v0_2; Player *temp_v0_3; Player *temp_v0_4; - Player *temp_v0_5; + Player *var_v0; f32 temp_f0; f32 temp_f0_2; f32 temp_f2; @@ -4029,21 +3919,21 @@ void func_802A0450(Player *player, struct Actor *actor) { s16 temp_v1_2; s16 temp_v1_3; s16 temp_v1_4; + s16 var_t0; s32 temp_f16; s32 temp_lo; - Player *phi_v0; temp_lo = (s32) (player - gPlayerOne) / 3544; temp_t2 = actor->type; switch (temp_t2) { - case ACTOR_YOSHI_VALLEY_EGG: + case 9: if (((player->unk_0BC << 0) >= 0) && ((player->unk_000 & 0x100) == 0)) { - func_8029F408(player, actor); + func_8029F408(player, (struct YoshiValleyEgg *) actor); return; } default: return; - case ACTOR_BANANA: + case 6: if (((player->unk_0BC & 0x800008C0) == 0) && ((player->unk_00C & 1) == 0) && ((temp_v1 = actor->rot[0], ((s16) temp_lo != temp_v1)) || ((actor->flags & 0x1000) == 0))) { sp36 = temp_v1; sp42 = (s16) temp_lo; @@ -4053,13 +3943,13 @@ void func_802A0450(Player *player, struct Actor *actor) { if ((temp_v0->unk_000 & 0x4000) != 0) { if ((actor->flags & 0xF) != 0) { if ((s16) temp_lo != temp_v1) { - func_800C90F4((Player *) (temp_v1 & 0xFF), (temp_v0->characterId * 0x10) + 0x29008006); + func_800C90F4(temp_v1 & 0xFF, (temp_v0->characterId * 0x10) + 0x29008006); } } else { temp_f0 = actor->pos[0] - temp_v0->pos[0]; temp_f2 = actor->pos[2] - temp_v0->pos[2]; if ((((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < D_802B99C4) && ((s16) temp_lo != temp_v1)) { - func_800C90F4((Player *) (temp_v1 & 0xFF), (temp_v0->characterId * 0x10) + 0x29008006); + func_800C90F4(temp_v1 & 0xFF, (temp_v0->characterId * 0x10) + 0x29008006); } } } @@ -4068,7 +3958,7 @@ void func_802A0450(Player *player, struct Actor *actor) { } } break; - case ACTOR_GREEN_SHELL: + case 7: if (((player->unk_0BC & 0x80000400) == 0) && ((player->unk_00C & 4) == 0) && ((temp_v1_2 = actor->rot[2], ((s16) temp_lo != temp_v1_2)) || ((actor->flags & 0x1000) == 0))) { sp36 = temp_v1_2; sp42 = (s16) temp_lo; @@ -4079,33 +3969,33 @@ void func_802A0450(Player *player, struct Actor *actor) { func_800C98B8(player->pos, player->unk_034, 0x19018010U); temp_v0_2 = &gPlayers[temp_v1_2]; if (((temp_v0_2->unk_000 & 0x4000) != 0) && ((s16) temp_lo != temp_v1_2)) { - func_800C90F4((Player *) (temp_v1_2 & 0xFF), (temp_v0_2->characterId * 0x10) + 0x29008006); + func_800C90F4(temp_v1_2 & 0xFF, (temp_v0_2->characterId * 0x10) + 0x29008006); } func_8029FDC8(actor); return; } } break; - case ACTOR_BLUE_SPINY_SHELL: - if (((player->unk_00C & 2) == 0) && ((temp_v1_3 = actor->rot[2], ((s16) temp_lo != temp_v1_3)) || ((actor->flags & 0x1000) == 0)) && (sp36 = temp_v1_3, sp42 = (s16) temp_lo, (func_8029FB80(player, actor) == 1))) { + case 42: + if (((player->unk_00C & 2) == 0) && ((temp_v1_3 = actor->rot[2], ((s16) temp_lo != temp_v1_3)) || ((actor->flags & 0x1000) == 0)) && (sp36 = temp_v1_3, sp42 = (s16) temp_lo, var_t0 = (s16) temp_lo, (func_8029FB80(player, actor) == 1))) { if ((player->unk_0BC << 0) >= 0) { player->unk_00C |= 2; - sp42 = (s16) temp_lo; + sp42 = var_t0; sp36 = temp_v1_3; func_800C98B8(player->pos, player->unk_034, 0x19018010U); } temp_v0_3 = &gPlayers[temp_v1_3]; - if (((temp_v0_3->unk_000 & 0x4000) != 0) && ((s16) temp_lo != temp_v1_3)) { - sp42 = (s16) temp_lo; - func_800C90F4((Player *) (temp_v1_3 & 0xFF), (temp_v0_3->characterId * 0x10) + 0x29008006); + if (((temp_v0_3->unk_000 & 0x4000) != 0) && (var_t0 != temp_v1_3)) { + sp42 = var_t0; + func_800C90F4(temp_v1_3 & 0xFF, (temp_v0_3->characterId * 0x10) + 0x29008006); } - if ((s16) temp_lo == actor->unk_04) { + if (var_t0 == actor->unk_04) { func_8029FDC8(actor); return; } } break; - case ACTOR_RED_SHELL: + case 8: if (((player->unk_0BC << 7) >= 0) && ((player->unk_00C & 2) == 0) && ((temp_v1_4 = actor->rot[2], ((s16) temp_lo != temp_v1_4)) || ((actor->flags & 0x1000) == 0))) { sp36 = temp_v1_4; sp42 = (s16) temp_lo; @@ -4118,20 +4008,20 @@ void func_802A0450(Player *player, struct Actor *actor) { } temp_v0_4 = &gPlayers[temp_v1_4]; if (((temp_v0_4->unk_000 & 0x4000) != 0) && ((s16) temp_lo != temp_v1_4)) { - func_800C90F4((Player *) (temp_v1_4 & 0xFF), (temp_v0_4->characterId * 0x10) + 0x29008006); + func_800C90F4(temp_v1_4 & 0xFF, (temp_v0_4->characterId * 0x10) + 0x29008006); } func_8029FDC8(actor); return; } } break; - case ACTOR_PIRANHA_PLANT: + case 10: if ((player->unk_0BC << 0) >= 0) { - func_8029F2FC(player, actor); + func_8029F2FC(player, (struct PiranhaPlant *) actor); return; } break; - case ACTOR_MARIO_RACEWAY_SIGN: + case 23: if ((player->unk_0BC << 0) >= 0) { func_8029F1F8(player, actor); return; @@ -4154,7 +4044,7 @@ void func_802A0450(Player *player, struct Actor *actor) { return; } break; - case ACTOR_FALLING_ROCK: + case 5: if (((player->unk_0BC << 0) >= 0) && ((player->unk_000 & 0x100) == 0) && (func_8029FB80(player, actor) == 1)) { func_800C98B8(actor->pos, actor->velocity, 0x19009005U); if ((gModeSelection == 1) && ((player->unk_000 & 0x1000) == 0)) { @@ -4168,32 +4058,32 @@ void func_802A0450(Player *player, struct Actor *actor) { return; } break; - case ACTOR_FAKE_ITEM_BOX: + case 13: if (((player->unk_0BC << 0) >= 0) && ((temp_f16 = (s32) actor->velocity[0], ((s16) temp_lo != (s16) temp_f16)) || ((actor->flags & 0x1000) == 0))) { sp36 = (s16) temp_f16; sp42 = (s16) temp_lo; if (func_8029FB80(player, actor) == 1) { player->unk_00C |= 0x400000; - temp_v0_5 = &gPlayers[(s16) temp_f16]; - phi_v0 = temp_v0_5; - if ((temp_v0_5->unk_000 & 0x4000) != 0) { + var_v0 = &gPlayers[(s16) temp_f16]; + if ((var_v0->unk_000 & 0x4000) != 0) { if ((actor->flags & 0xF) != 0) { if ((s16) temp_lo != (s16) temp_f16) { - sp24 = temp_v0_5; - func_800C90F4((Player *) ((s16) temp_f16 & 0xFF), (temp_v0_5->characterId * 0x10) + 0x29008006); - phi_v0 = sp24; + sp24 = var_v0; + func_800C90F4((s16) temp_f16 & 0xFF, (var_v0->characterId * 0x10) + 0x29008006); + goto block_75; } } else { - temp_f0_2 = actor->pos[0] - temp_v0_5->pos[0]; - temp_f2_2 = actor->pos[2] - temp_v0_5->pos[2]; + temp_f0_2 = actor->pos[0] - var_v0->pos[0]; + temp_f2_2 = actor->pos[2] - var_v0->pos[2]; if ((((temp_f0_2 * temp_f0_2) + (temp_f2_2 * temp_f2_2)) < D_802B99C8) && ((s16) temp_lo != (s16) temp_f16)) { - sp24 = temp_v0_5; - func_800C90F4((Player *) ((s16) temp_f16 & 0xFF), (temp_v0_5->characterId * 0x10) + 0x29008006); - phi_v0 = sp24; + sp24 = var_v0; + func_800C90F4((s16) temp_f16 & 0xFF, (var_v0->characterId * 0x10) + 0x29008006); +block_75: + var_v0 = sp24; } } if (actor->state == 0) { - phi_v0->unk_00C &= 0xFFFBFFFF; + var_v0->unk_00C &= 0xFFFBFFFF; } } actor->state = 2; @@ -4203,7 +4093,7 @@ void func_802A0450(Player *player, struct Actor *actor) { } } break; - case ACTOR_HOT_AIR_BALLOON_ITEM_BOX: + case 43: if (func_8029FB80(player, actor) == (s32) 1) { actor->state = 3; actor->flags = -0x8000; @@ -4214,10 +4104,11 @@ void func_802A0450(Player *player, struct Actor *actor) { } } else if (actor->state == 0) { actor->state = 1; +block_89: actor->flags = -0x8000; } break; - case ACTOR_ITEM_BOX: + case 12: if (func_8029FB80(player, actor) == (s32) 1) { actor->state = 3; actor->flags = -0x8000; @@ -4228,7 +4119,7 @@ void func_802A0450(Player *player, struct Actor *actor) { } } else if (actor->state == 0) { actor->state = 1; - actor->flags = -0x8000; + goto block_89; } break; } diff --git a/src/code_80296A50.h b/src/code_80296A50.h index 131b20ec5..9c619cde0 100644 --- a/src/code_80296A50.h +++ b/src/code_80296A50.h @@ -51,6 +51,7 @@ void func_8029A8F4(Camera*, Mat4, struct BananaActor*); void update_obj_wario_stadium_sign(struct Actor*); void update_obj_railroad_crossing(struct RailroadCrossing*); void update_obj_mario_raceway_sign(struct Actor*); +void func_8029ABD4(Vec3f, s16); void func_8029AC18(Camera*, Mat4, struct Actor*); void func_8029AE1C(Camera*, struct PaddleWheelBoat*, Mat4, u16); void func_8029B06C(Camera*, struct Actor*); @@ -73,7 +74,10 @@ void func_8029E7DC(struct Actor*); void destroy_actor(struct Actor*); s16 func_8029E890(f32 *, s16 *, f32 *, s16); s16 func_8029EC88(Vec3f, Vec3s, Vec3f, s16); +s16 func_8029ED38(Vec3f, s16); s32 func_8029EEB8(Player*, Vec3f, f32, f32, f32); +s32 func_8029F1F8(Player*, struct Actor*); +s32 func_8029F2FC(Player*, struct PiranhaPlant*); s32 func_8029F408(Player*, struct YoshiValleyEgg*); s32 func_8029FB80(Player*, struct Actor*); s32 func_8029FCA4(struct Actor*, struct Actor*); diff --git a/src/memory.c b/src/memory.c index de380b19b..34d2085cd 100644 --- a/src/memory.c +++ b/src/memory.c @@ -2366,39 +2366,194 @@ void func_802AC098(UnkActorInner *arg0, f32 *velocity) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_802AC114(void *arg0, f32 arg1, void *arg2, ? arg3) { +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +void func_802AC114(Vec3f arg0, f32 arg1, Vec3f arg2, f32 arg3) { f32 temp_f0; f32 temp_f12; f32 temp_f14; f32 temp_f16; f32 temp_f18; f32 temp_f20; - f32 temp_f20_2; f32 temp_f2; - temp_f0 = arg2->unk0; - temp_f2 = arg2->unk4; - temp_f12 = arg2->unk8; - temp_f14 = -arg0->unk0; - temp_f16 = -arg0->unk4; - temp_f18 = -arg0->unk8; + temp_f0 = arg2[0]; + temp_f2 = arg2[1]; + temp_f12 = arg2[2]; + temp_f14 = -arg0[0]; + temp_f16 = -arg0[1]; + temp_f18 = -arg0[2]; + temp_f20 = (temp_f14 * temp_f0) + (temp_f16 * temp_f2) + (temp_f18 * temp_f12); if (arg1 < -3.5) { - temp_f20 = (temp_f14 * temp_f0) + (temp_f16 * temp_f2) + (temp_f18 * temp_f12); - arg2->unk0 = (temp_f0 - (temp_f20 * temp_f14)) - (temp_f20 * temp_f14 * 0.5f); - arg2->unk4 = (temp_f2 - (temp_f20 * temp_f16)) - (temp_f20 * temp_f16 * 0.5f); - arg2->unk8 = (temp_f12 - (temp_f20 * temp_f18)) - (temp_f20 * temp_f18 * 0.5f); - return; + arg2[0] = temp_f0 - (temp_f20 * temp_f14) - (0.5f * temp_f14 * temp_f20); + arg2[1] = temp_f2 - (temp_f20 * temp_f16) - (0.5f * temp_f16 * temp_f20); + arg2[2] = temp_f12 - (temp_f20 * temp_f18) - (0.5f * temp_f18 * temp_f20); + } else { + arg2[0] = temp_f0 - (temp_f20 * temp_f14); + arg2[1] = temp_f2 - (temp_f20 * temp_f16); + arg2[2] = temp_f12 - (temp_f20 * temp_f18); } - temp_f20_2 = (temp_f14 * temp_f0) + (temp_f16 * temp_f2) + (temp_f18 * temp_f12); - arg2->unk0 = temp_f0 - (temp_f20_2 * temp_f14); - arg2->unk4 = temp_f2 - (temp_f20_2 * temp_f16); - arg2->unk8 = temp_f12 - (temp_f20_2 * temp_f18); } #else GLOBAL_ASM("asm/non_matchings/memory/func_802AC114.s") #endif +#ifdef MIPS_TO_C +//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +mk64_surface_map_ram *func_802AAE4C(s16 *, ?, f32, f32, f32, s32); /* extern */ +mk64_surface_map_ram *func_802AB288(s16 *, ?, f32, f32, f32, s32); /* extern */ +mk64_surface_map_ram *func_802AB6C4(s16 *, ?, f32, f32, f32, s32); /* extern */ +extern ? D_8014F110; +extern s32 D_8015F584; +extern s16 D_8015F6E8; +extern s16 D_8015F6EA; +extern s16 D_8015F6F0; +extern s16 D_8015F6F2; + +UNUSED mk64_surface_map_ram *func_802AC22C(void *arg0) { + f32 spE4; + f32 spE0; + f32 spDC; + s16 spD4; + s16 spD2; + s16 spD0; + s32 sp70; + f32 temp_f22; + f32 temp_f24; + f32 temp_f26; + s16 temp_v0_2; + s16 temp_v1; + s32 temp_at; + s32 temp_f4; + s32 temp_f6; + s32 temp_t3; + s32 var_s2; + u16 temp_s0; + u16 temp_v1_3; + u16 var_s1; + u16 var_v0; + u8 temp_v0; + void *temp_v1_2; + + spD0 = 0; + spD2 = 0; + spD4 = 0; + spDC = 1000.0f; + spE0 = 1000.0f; + spE4 = 1000.0f; + temp_v0 = arg0->unkD; + temp_f22 = arg0->unk0; + temp_f24 = arg0->unk4; + temp_f26 = arg0->unk8; + switch (temp_v0) { /* irregular */ + case 0x80: + if (func_802AB6C4(&spD0, 0x40A00000, temp_f22, temp_f24, temp_f26, (s32) arg0->unkE) == (mk64_surface_map_ram *)1) { + arg0->unk10 = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->unkE); + return (mk64_surface_map_ram *)1; + } + default: +block_10: + temp_v0_2 = D_8015F6EA; + temp_v1 = D_8015F6F2; + temp_f4 = (s32) ((temp_f22 - (f32) temp_v0_2) / (f32) ((s32) (D_8015F6E8 - temp_v0_2) / 32)); + temp_f6 = (s32) ((temp_f26 - (f32) temp_v1) / (f32) ((s32) (D_8015F6F0 - temp_v1) / 32)); + if ((s16) temp_f4 < 0) { + return NULL; + } + if ((s16) temp_f6 < 0) { + return NULL; + } + if ((s16) temp_f4 >= 0x20) { + return NULL; + } + if ((s16) temp_f6 >= 0x20) { + return NULL; + } + temp_v1_2 = ((s16) ((s16) temp_f4 + ((s16) temp_f6 << 5)) * 4) + &D_8014F110; + var_v0 = temp_v1_2->unk2; + sp70 = (s32) var_v0; + if (var_v0 == 0) { + return NULL; + } + var_s1 = temp_v1_2->unk0; + var_s2 = 0; + if (sp70 > 0) { +loop_22: + temp_s0 = *(D_8015F584 + (var_s1 * 2)); + var_v0 = (u16) &D_8015F580[temp_s0]; + temp_v1_3 = var_v0->unk0; + if ((temp_v1_3 & 0x4000) != 0) { + if (arg0->unkE != temp_s0) { + var_v0 = func_802AAE4C(&spD0, 0x40A00000, temp_f22, temp_f24, temp_f26, (s32) temp_s0); + if (var_v0 == (u16) (mk64_surface_map_ram *)1) { + arg0->unk10 = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0 & 0xFFFF); + arg0->unkD = 0x40U; + arg0->unkE = temp_s0; + arg0->unkC = (s8) D_8015F580[temp_s0].surfaceType; + if ((D_8015F580[temp_s0].flags & 0x1000) != 0) { + arg0->unk14 = (mk64_surface_map_ram *)1; + return (mk64_surface_map_ram *)1; + } + arg0->unk14 = NULL; + return (mk64_surface_map_ram *)1; + } + } + goto block_37; + } + if ((temp_v1_3 & 0x8000) != 0) { + if ((var_v0->unk1C != 1.0f) && (arg0->unkE != temp_s0)) { + var_v0 = func_802AB6C4(&spD0, 0x40A00000, temp_f22, temp_f24, temp_f26, (s32) temp_s0); + if (var_v0 == (u16) (mk64_surface_map_ram *)1) { + arg0->unk10 = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0 & 0xFFFF); + arg0->unkD = 0x80U; + arg0->unkE = temp_s0; + arg0->unkC = (s8) D_8015F580[temp_s0].surfaceType; + return (mk64_surface_map_ram *)1; + } + } + goto block_37; + } + if ((var_v0->unk24 != 1.0f) && (arg0->unkE != temp_s0)) { + var_v0 = func_802AB288(&spD0, 0x40A00000, temp_f22, temp_f24, temp_f26, (s32) temp_s0); + if (var_v0 == (u16) (mk64_surface_map_ram *)1) { + arg0->unk10 = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0 & 0xFFFF); + arg0->unkD = 0x20U; + arg0->unkE = temp_s0; + arg0->unkC = (s8) D_8015F580[temp_s0].surfaceType; + return (mk64_surface_map_ram *)1; + } + } +block_37: + temp_t3 = (var_s2 + 1) & 0xFFFF; + temp_at = temp_t3 < sp70; + var_s2 = temp_t3; + var_s1 = (var_s1 + 1) & 0xFFFF; + if (temp_at == 0) { + goto block_38; + } + goto loop_22; + } +block_38: + arg0->unk10 = temp_f24; + arg0->unkC = 0; + return (mk64_surface_map_ram *) var_v0; + case 0x40: + if (func_802AAE4C(&spD0, 0x40A00000, temp_f22, temp_f24, temp_f26, (s32) arg0->unkE) == (mk64_surface_map_ram *)1) { + arg0->unk10 = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->unkE); + return (mk64_surface_map_ram *)1; + } + goto block_10; + case 0x20: + if (func_802AB288(&spD0, 0x40A00000, temp_f22, temp_f24, temp_f26, (s32) arg0->unkE) == (mk64_surface_map_ram *)1) { + arg0->unk10 = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->unkE); + return (mk64_surface_map_ram *)1; + } + goto block_10; + } +} +#else +GLOBAL_ASM("asm/non_matchings/memory/func_802AC22C.s") +#endif + #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_802AC760(void *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, u16 arg5, f32 arg6, f32 arg7, f32 arg8) {