diff --git a/asm/non_matchings/objects/func_8000C718.s b/asm/non_matchings/objects/func_8000C718.s deleted file mode 100644 index 7efba882..00000000 --- a/asm/non_matchings/objects/func_8000C718.s +++ /dev/null @@ -1,82 +0,0 @@ -glabel func_8000C718 -/* 00D318 8000C718 3C0E8012 */ lui $t6, %hi(D_8011AE4C) # $t6, 0x8012 -/* 00D31C 8000C71C 8DCEAE4C */ lw $t6, %lo(D_8011AE4C)($t6) -/* 00D320 8000C720 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00D324 8000C724 AFBF0014 */ sw $ra, 0x14($sp) -/* 00D328 8000C728 AFA40028 */ sw $a0, 0x28($sp) -/* 00D32C 8000C72C 01C41821 */ addu $v1, $t6, $a0 -/* 00D330 8000C730 90650000 */ lbu $a1, ($v1) -/* 00D334 8000C734 3C0C8012 */ lui $t4, %hi(gAssetsObjectHeadersTable) # $t4, 0x8012 -/* 00D338 8000C738 10A0000B */ beqz $a1, .L8000C768 -/* 00D33C 8000C73C 3C048012 */ lui $a0, %hi(gObjectMemoryPool) # $a0, 0x8012 -/* 00D340 8000C740 24B80001 */ addiu $t8, $a1, 1 -/* 00D344 8000C744 A0780000 */ sb $t8, ($v1) -/* 00D348 8000C748 8FA80028 */ lw $t0, 0x28($sp) -/* 00D34C 8000C74C 3C198012 */ lui $t9, %hi(D_8011AE48) # $t9, 0x8012 -/* 00D350 8000C750 8F39AE48 */ lw $t9, %lo(D_8011AE48)($t9) -/* 00D354 8000C754 00084880 */ sll $t1, $t0, 2 -/* 00D358 8000C758 03295021 */ addu $t2, $t9, $t1 -/* 00D35C 8000C75C 8D420000 */ lw $v0, ($t2) -/* 00D360 8000C760 10000035 */ b .L8000C838 -/* 00D364 8000C764 8FBF0014 */ lw $ra, 0x14($sp) -.L8000C768: -/* 00D368 8000C768 8FA30028 */ lw $v1, 0x28($sp) -/* 00D36C 8000C76C 8D8CAD64 */ lw $t4, %lo(gAssetsObjectHeadersTable)($t4) -/* 00D370 8000C770 00035880 */ sll $t3, $v1, 2 -/* 00D374 8000C774 018B1021 */ addu $v0, $t4, $t3 -/* 00D378 8000C778 8C460000 */ lw $a2, ($v0) -/* 00D37C 8000C77C 8C4D0004 */ lw $t5, 4($v0) -/* 00D380 8000C780 8C84AE68 */ lw $a0, %lo(gObjectMemoryPool)($a0) -/* 00D384 8000C784 01A62823 */ subu $a1, $t5, $a2 -/* 00D388 8000C788 AFA50020 */ sw $a1, 0x20($sp) -/* 00D38C 8000C78C AFAB0018 */ sw $t3, 0x18($sp) -/* 00D390 8000C790 0C01C3A4 */ jal allocate_from_pool_containing_slots -/* 00D394 8000C794 AFA60024 */ sw $a2, 0x24($sp) -/* 00D398 8000C798 8FA60024 */ lw $a2, 0x24($sp) -/* 00D39C 8000C79C 8FA70020 */ lw $a3, 0x20($sp) -/* 00D3A0 8000C7A0 10400021 */ beqz $v0, .L8000C828 -/* 00D3A4 8000C7A4 00402825 */ move $a1, $v0 -/* 00D3A8 8000C7A8 24040022 */ li $a0, 34 -/* 00D3AC 8000C7AC 0C01DB9A */ jal load_asset_to_address -/* 00D3B0 8000C7B0 AFA2001C */ sw $v0, 0x1c($sp) -/* 00D3B4 8000C7B4 8FA5001C */ lw $a1, 0x1c($sp) -/* 00D3B8 8000C7B8 00000000 */ nop -/* 00D3BC 8000C7BC 8CAE0024 */ lw $t6, 0x24($a1) -/* 00D3C0 8000C7C0 8CB8001C */ lw $t8, 0x1c($a1) -/* 00D3C4 8000C7C4 8CB90014 */ lw $t9, 0x14($a1) -/* 00D3C8 8000C7C8 8CAA0018 */ lw $t2, 0x18($a1) -/* 00D3CC 8000C7CC 8CAC0010 */ lw $t4, 0x10($a1) -/* 00D3D0 8000C7D0 00AE7821 */ addu $t7, $a1, $t6 -/* 00D3D4 8000C7D4 00B84021 */ addu $t0, $a1, $t8 -/* 00D3D8 8000C7D8 00B94821 */ addu $t1, $a1, $t9 -/* 00D3DC 8000C7DC 00AA5821 */ addu $t3, $a1, $t2 -/* 00D3E0 8000C7E0 00AC6821 */ addu $t5, $a1, $t4 -/* 00D3E4 8000C7E4 ACAF0024 */ sw $t7, 0x24($a1) -/* 00D3E8 8000C7E8 ACA8001C */ sw $t0, 0x1c($a1) -/* 00D3EC 8000C7EC ACA90014 */ sw $t1, 0x14($a1) -/* 00D3F0 8000C7F0 ACAB0018 */ sw $t3, 0x18($a1) -/* 00D3F4 8000C7F4 ACAD0010 */ sw $t5, 0x10($a1) -/* 00D3F8 8000C7F8 3C0E8012 */ lui $t6, %hi(D_8011AE48) # $t6, 0x8012 -/* 00D3FC 8000C7FC 8DCEAE48 */ lw $t6, %lo(D_8011AE48)($t6) -/* 00D400 8000C800 8FAF0018 */ lw $t7, 0x18($sp) -/* 00D404 8000C804 3C198012 */ lui $t9, %hi(D_8011AE4C) # $t9, 0x8012 -/* 00D408 8000C808 01CFC021 */ addu $t8, $t6, $t7 -/* 00D40C 8000C80C AF050000 */ sw $a1, ($t8) -/* 00D410 8000C810 8FA90028 */ lw $t1, 0x28($sp) -/* 00D414 8000C814 8F39AE4C */ lw $t9, %lo(D_8011AE4C)($t9) -/* 00D418 8000C818 24080001 */ li $t0, 1 -/* 00D41C 8000C81C 03295021 */ addu $t2, $t9, $t1 -/* 00D420 8000C820 10000003 */ b .L8000C830 -/* 00D424 8000C824 A1480000 */ sb $t0, ($t2) -.L8000C828: -/* 00D428 8000C828 10000002 */ b .L8000C834 -/* 00D42C 8000C82C 00001025 */ move $v0, $zero -.L8000C830: -/* 00D430 8000C830 00A01025 */ move $v0, $a1 -.L8000C834: -/* 00D434 8000C834 8FBF0014 */ lw $ra, 0x14($sp) -.L8000C838: -/* 00D438 8000C838 27BD0028 */ addiu $sp, $sp, 0x28 -/* 00D43C 8000C83C 03E00008 */ jr $ra -/* 00D440 8000C840 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_8000F7EC.s b/asm/non_matchings/objects/func_8000F7EC.s deleted file mode 100644 index ed3f01b2..00000000 --- a/asm/non_matchings/objects/func_8000F7EC.s +++ /dev/null @@ -1,116 +0,0 @@ -glabel func_8000F7EC -/* 0103EC 8000F7EC 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0103F0 8000F7F0 AFBF0024 */ sw $ra, 0x24($sp) -/* 0103F4 8000F7F4 AFB00020 */ sw $s0, 0x20($sp) -/* 0103F8 8000F7F8 8C880040 */ lw $t0, 0x40($a0) -/* 0103FC 8000F7FC AC850054 */ sw $a1, 0x54($a0) -/* 010400 8000F800 81020053 */ lb $v0, 0x53($t0) -/* 010404 8000F804 00808025 */ move $s0, $a0 -/* 010408 8000F808 1440004F */ bnez $v0, .L8000F948 -/* 01040C 8000F80C 00003025 */ move $a2, $zero -/* 010410 8000F810 8C840068 */ lw $a0, 0x68($a0) -/* 010414 8000F814 00001825 */ move $v1, $zero -/* 010418 8000F818 8C8E0000 */ lw $t6, ($a0) -/* 01041C 8000F81C 00801025 */ move $v0, $a0 -/* 010420 8000F820 15C00006 */ bnez $t6, .L8000F83C -/* 010424 8000F824 0003C080 */ sll $t8, $v1, 2 -.L8000F828: -/* 010428 8000F828 8C4F0004 */ lw $t7, 4($v0) -/* 01042C 8000F82C 24630001 */ addiu $v1, $v1, 1 -/* 010430 8000F830 11E0FFFD */ beqz $t7, .L8000F828 -/* 010434 8000F834 24420004 */ addiu $v0, $v0, 4 -/* 010438 8000F838 0003C080 */ sll $t8, $v1, 2 -.L8000F83C: -/* 01043C 8000F83C 0098C821 */ addu $t9, $a0, $t8 -/* 010440 8000F840 8F220000 */ lw $v0, ($t9) -/* 010444 8000F844 00000000 */ nop -/* 010448 8000F848 1040004B */ beqz $v0, .L8000F978 -/* 01044C 8000F84C 00000000 */ nop -/* 010450 8000F850 8C490000 */ lw $t1, ($v0) -/* 010454 8000F854 00003825 */ move $a3, $zero -/* 010458 8000F858 8D2A0040 */ lw $t2, 0x40($t1) -/* 01045C 8000F85C 00000000 */ nop -/* 010460 8000F860 11400045 */ beqz $t2, .L8000F978 -/* 010464 8000F864 00000000 */ nop -/* 010468 8000F868 850B003E */ lh $t3, 0x3e($t0) -/* 01046C 8000F86C 8E040054 */ lw $a0, 0x54($s0) -/* 010470 8000F870 8D050028 */ lw $a1, 0x28($t0) -/* 010474 8000F874 8D06002C */ lw $a2, 0x2c($t0) -/* 010478 8000F878 AFAB0010 */ sw $t3, 0x10($sp) -/* 01047C 8000F87C 850C0040 */ lh $t4, 0x40($t0) -/* 010480 8000F880 0C00752D */ jal func_8001D4B4 -/* 010484 8000F884 AFAC0014 */ sw $t4, 0x14($sp) -/* 010488 8000F888 8E080040 */ lw $t0, 0x40($s0) -/* 01048C 8000F88C 00000000 */ nop -/* 010490 8000F890 910D003D */ lbu $t5, 0x3d($t0) -/* 010494 8000F894 00000000 */ nop -/* 010498 8000F898 11A00029 */ beqz $t5, .L8000F940 -/* 01049C 8000F89C 00000000 */ nop -/* 0104A0 8000F8A0 910E003A */ lbu $t6, 0x3a($t0) -/* 0104A4 8000F8A4 8E0F0054 */ lw $t7, 0x54($s0) -/* 0104A8 8000F8A8 00000000 */ nop -/* 0104AC 8000F8AC A1EE0004 */ sb $t6, 4($t7) -/* 0104B0 8000F8B0 8E180040 */ lw $t8, 0x40($s0) -/* 0104B4 8000F8B4 8E090054 */ lw $t1, 0x54($s0) -/* 0104B8 8000F8B8 9319003B */ lbu $t9, 0x3b($t8) -/* 0104BC 8000F8BC 00000000 */ nop -/* 0104C0 8000F8C0 A1390005 */ sb $t9, 5($t1) -/* 0104C4 8000F8C4 8E0A0040 */ lw $t2, 0x40($s0) -/* 0104C8 8000F8C8 8E0C0054 */ lw $t4, 0x54($s0) -/* 0104CC 8000F8CC 914B003C */ lbu $t3, 0x3c($t2) -/* 0104D0 8000F8D0 00000000 */ nop -/* 0104D4 8000F8D4 A18B0006 */ sb $t3, 6($t4) -/* 0104D8 8000F8D8 8E0D0040 */ lw $t5, 0x40($s0) -/* 0104DC 8000F8DC 8E0F0054 */ lw $t7, 0x54($s0) -/* 0104E0 8000F8E0 91AE003D */ lbu $t6, 0x3d($t5) -/* 0104E4 8000F8E4 00000000 */ nop -/* 0104E8 8000F8E8 A1EE0007 */ sb $t6, 7($t7) -/* 0104EC 8000F8EC 8E020054 */ lw $v0, 0x54($s0) -/* 0104F0 8000F8F0 00000000 */ nop -/* 0104F4 8000F8F4 8458001C */ lh $t8, 0x1c($v0) -/* 0104F8 8000F8F8 00000000 */ nop -/* 0104FC 8000F8FC 0018C843 */ sra $t9, $t8, 1 -/* 010500 8000F900 00194823 */ negu $t1, $t9 -/* 010504 8000F904 A4490008 */ sh $t1, 8($v0) -/* 010508 8000F908 8E020054 */ lw $v0, 0x54($s0) -/* 01050C 8000F90C 00000000 */ nop -/* 010510 8000F910 844A001E */ lh $t2, 0x1e($v0) -/* 010514 8000F914 00000000 */ nop -/* 010518 8000F918 000A5843 */ sra $t3, $t2, 1 -/* 01051C 8000F91C 000B6023 */ negu $t4, $t3 -/* 010520 8000F920 A44C000A */ sh $t4, 0xa($v0) -/* 010524 8000F924 8E020054 */ lw $v0, 0x54($s0) -/* 010528 8000F928 00000000 */ nop -/* 01052C 8000F92C 844D0020 */ lh $t5, 0x20($v0) -/* 010530 8000F930 00000000 */ nop -/* 010534 8000F934 000D7043 */ sra $t6, $t5, 1 -/* 010538 8000F938 000E7823 */ negu $t7, $t6 -/* 01053C 8000F93C A44F000C */ sh $t7, 0xc($v0) -.L8000F940: -/* 010540 8000F940 1000000D */ b .L8000F978 -/* 010544 8000F944 24060030 */ li $a2, 48 -.L8000F948: -/* 010548 8000F948 24010001 */ li $at, 1 -/* 01054C 8000F94C 1441000A */ bne $v0, $at, .L8000F978 -/* 010550 8000F950 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 010554 8000F954 44812000 */ mtc1 $at, $f4 -/* 010558 8000F958 8E180054 */ lw $t8, 0x54($s0) -/* 01055C 8000F95C 240200FF */ li $v0, 255 -/* 010560 8000F960 E7040000 */ swc1 $f4, ($t8) -/* 010564 8000F964 A0A20004 */ sb $v0, 4($a1) -/* 010568 8000F968 A0A20005 */ sb $v0, 5($a1) -/* 01056C 8000F96C A0A20006 */ sb $v0, 6($a1) -/* 010570 8000F970 A0A00007 */ sb $zero, 7($a1) -/* 010574 8000F974 24060008 */ li $a2, 8 -.L8000F978: -/* 010578 8000F978 14C00002 */ bnez $a2, .L8000F984 -/* 01057C 8000F97C 2401FFFC */ li $at, -4 -/* 010580 8000F980 AE000054 */ sw $zero, 0x54($s0) -.L8000F984: -/* 010584 8000F984 8FBF0024 */ lw $ra, 0x24($sp) -/* 010588 8000F988 00C11024 */ and $v0, $a2, $at -/* 01058C 8000F98C 8FB00020 */ lw $s0, 0x20($sp) -/* 010590 8000F990 27BD0028 */ addiu $sp, $sp, 0x28 -/* 010594 8000F994 03E00008 */ jr $ra -/* 010598 8000F998 24420004 */ addiu $v0, $v0, 4 - diff --git a/asm/non_matchings/objects/func_8000F99C.s b/asm/non_matchings/objects/func_8000F99C.s deleted file mode 100644 index 548ac025..00000000 --- a/asm/non_matchings/objects/func_8000F99C.s +++ /dev/null @@ -1,84 +0,0 @@ -glabel func_8000F99C -/* 01059C 8000F99C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0105A0 8000F9A0 AFBF002C */ sw $ra, 0x2c($sp) -/* 0105A4 8000F9A4 AFB40028 */ sw $s4, 0x28($sp) -/* 0105A8 8000F9A8 AFB30024 */ sw $s3, 0x24($sp) -/* 0105AC 8000F9AC AFB20020 */ sw $s2, 0x20($sp) -/* 0105B0 8000F9B0 AFB1001C */ sw $s1, 0x1c($sp) -/* 0105B4 8000F9B4 AFB00018 */ sw $s0, 0x18($sp) -/* 0105B8 8000F9B8 8C8E0040 */ lw $t6, 0x40($a0) -/* 0105BC 8000F9BC 8C930060 */ lw $s3, 0x60($a0) -/* 0105C0 8000F9C0 81C20056 */ lb $v0, 0x56($t6) -/* 0105C4 8000F9C4 00808025 */ move $s0, $a0 -/* 0105C8 8000F9C8 AE620000 */ sw $v0, ($s3) -/* 0105CC 8000F9CC 0000A025 */ move $s4, $zero -/* 0105D0 8000F9D0 00009025 */ move $s2, $zero -/* 0105D4 8000F9D4 18400012 */ blez $v0, .L8000FA20 -/* 0105D8 8000F9D8 AE620000 */ sw $v0, ($s3) -/* 0105DC 8000F9DC 02608825 */ move $s1, $s3 -.L8000F9E0: -/* 0105E0 8000F9E0 8E190040 */ lw $t9, 0x40($s0) -/* 0105E4 8000F9E4 00124880 */ sll $t1, $s2, 2 -/* 0105E8 8000F9E8 8F280014 */ lw $t0, 0x14($t9) -/* 0105EC 8000F9EC 00000000 */ nop -/* 0105F0 8000F9F0 01095021 */ addu $t2, $t0, $t1 -/* 0105F4 8000F9F4 8D440000 */ lw $a0, ($t2) -/* 0105F8 8000F9F8 0C003F55 */ jal func_8000FD54 -/* 0105FC 8000F9FC 00000000 */ nop -/* 010600 8000FA00 14400002 */ bnez $v0, .L8000FA0C -/* 010604 8000FA04 AE220004 */ sw $v0, 4($s1) -/* 010608 8000FA08 24140001 */ li $s4, 1 -.L8000FA0C: -/* 01060C 8000FA0C 8E620000 */ lw $v0, ($s3) -/* 010610 8000FA10 26520001 */ addiu $s2, $s2, 1 -/* 010614 8000FA14 0242082A */ slt $at, $s2, $v0 -/* 010618 8000FA18 1420FFF1 */ bnez $at, .L8000F9E0 -/* 01061C 8000FA1C 26310004 */ addiu $s1, $s1, 4 -.L8000FA20: -/* 010620 8000FA20 1280001B */ beqz $s4, .L8000FA90 -/* 010624 8000FA24 00000000 */ nop -/* 010628 8000FA28 18400017 */ blez $v0, .L8000FA88 -/* 01062C 8000FA2C 00009025 */ move $s2, $zero -/* 010630 8000FA30 02608825 */ move $s1, $s3 -.L8000FA34: -/* 010634 8000FA34 8E300004 */ lw $s0, 4($s1) -/* 010638 8000FA38 00000000 */ nop -/* 01063C 8000FA3C 1200000E */ beqz $s0, .L8000FA78 -/* 010640 8000FA40 00000000 */ nop -/* 010644 8000FA44 8E020040 */ lw $v0, 0x40($s0) -/* 010648 8000FA48 02002025 */ move $a0, $s0 -/* 01064C 8000FA4C 80450055 */ lb $a1, 0x55($v0) -/* 010650 8000FA50 80460053 */ lb $a2, 0x53($v0) -/* 010654 8000FA54 0C003D92 */ jal objFreeAssets -/* 010658 8000FA58 00000000 */ nop -/* 01065C 8000FA5C 8604002C */ lh $a0, 0x2c($s0) -/* 010660 8000FA60 0C003211 */ jal func_8000C844 -/* 010664 8000FA64 00000000 */ nop -/* 010668 8000FA68 0C01C450 */ jal free_from_memory_pool -/* 01066C 8000FA6C 02002025 */ move $a0, $s0 -/* 010670 8000FA70 8E620000 */ lw $v0, ($s3) -/* 010674 8000FA74 00000000 */ nop -.L8000FA78: -/* 010678 8000FA78 26520001 */ addiu $s2, $s2, 1 -/* 01067C 8000FA7C 0242082A */ slt $at, $s2, $v0 -/* 010680 8000FA80 1420FFEC */ bnez $at, .L8000FA34 -/* 010684 8000FA84 26310004 */ addiu $s1, $s1, 4 -.L8000FA88: -/* 010688 8000FA88 10000006 */ b .L8000FAA4 -/* 01068C 8000FA8C 24020001 */ li $v0, 1 -.L8000FA90: -/* 010690 8000FA90 8E0B0040 */ lw $t3, 0x40($s0) -/* 010694 8000FA94 00001025 */ move $v0, $zero -/* 010698 8000FA98 8D6C0018 */ lw $t4, 0x18($t3) -/* 01069C 8000FA9C 00000000 */ nop -/* 0106A0 8000FAA0 AE6C002C */ sw $t4, 0x2c($s3) -.L8000FAA4: -/* 0106A4 8000FAA4 8FBF002C */ lw $ra, 0x2c($sp) -/* 0106A8 8000FAA8 8FB00018 */ lw $s0, 0x18($sp) -/* 0106AC 8000FAAC 8FB1001C */ lw $s1, 0x1c($sp) -/* 0106B0 8000FAB0 8FB20020 */ lw $s2, 0x20($sp) -/* 0106B4 8000FAB4 8FB30024 */ lw $s3, 0x24($sp) -/* 0106B8 8000FAB8 8FB40028 */ lw $s4, 0x28($sp) -/* 0106BC 8000FABC 03E00008 */ jr $ra -/* 0106C0 8000FAC0 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/objects/func_8001D2A0.s b/asm/non_matchings/objects/func_8001D2A0.s deleted file mode 100644 index d8898f21..00000000 --- a/asm/non_matchings/objects/func_8001D2A0.s +++ /dev/null @@ -1,146 +0,0 @@ -.late_rodata -glabel D_800E5660 -.float 1.99 - -.text -glabel func_8001D2A0 -/* 01DEA0 8001D2A0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 01DEA4 8001D2A4 AFBF0024 */ sw $ra, 0x24($sp) -/* 01DEA8 8001D2A8 AFB10020 */ sw $s1, 0x20($sp) -/* 01DEAC 8001D2AC AFB0001C */ sw $s0, 0x1c($sp) -/* 01DEB0 8001D2B0 AFA70034 */ sw $a3, 0x34($sp) -/* 01DEB4 8001D2B4 8C900054 */ lw $s0, 0x54($a0) -/* 01DEB8 8001D2B8 44856000 */ mtc1 $a1, $f12 -/* 01DEBC 8001D2BC 44867000 */ mtc1 $a2, $f14 -/* 01DEC0 8001D2C0 12000077 */ beqz $s0, .L8001D4A0 -/* 01DEC4 8001D2C4 00808825 */ move $s1, $a0 -/* 01DEC8 8001D2C8 C6040028 */ lwc1 $f4, 0x28($s0) -/* 01DECC 8001D2CC 44801000 */ mtc1 $zero, $f2 -/* 01DED0 8001D2D0 460C2180 */ add.s $f6, $f4, $f12 -/* 01DED4 8001D2D4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 01DED8 8001D2D8 E6060028 */ swc1 $f6, 0x28($s0) -/* 01DEDC 8001D2DC 8C900054 */ lw $s0, 0x54($a0) -/* 01DEE0 8001D2E0 00000000 */ nop -/* 01DEE4 8001D2E4 C6000028 */ lwc1 $f0, 0x28($s0) -/* 01DEE8 8001D2E8 00000000 */ nop -/* 01DEEC 8001D2EC 4602003C */ c.lt.s $f0, $f2 -/* 01DEF0 8001D2F0 00000000 */ nop -/* 01DEF4 8001D2F4 45000005 */ bc1f .L8001D30C -/* 01DEF8 8001D2F8 00000000 */ nop -/* 01DEFC 8001D2FC E6020028 */ swc1 $f2, 0x28($s0) -/* 01DF00 8001D300 8C900054 */ lw $s0, 0x54($a0) -/* 01DF04 8001D304 1000000B */ b .L8001D334 -/* 01DF08 8001D308 C608002C */ lwc1 $f8, 0x2c($s0) -.L8001D30C: -/* 01DF0C 8001D30C 44816000 */ mtc1 $at, $f12 -/* 01DF10 8001D310 00000000 */ nop -/* 01DF14 8001D314 4600603C */ c.lt.s $f12, $f0 -/* 01DF18 8001D318 00000000 */ nop -/* 01DF1C 8001D31C 45000004 */ bc1f .L8001D330 -/* 01DF20 8001D320 00000000 */ nop -/* 01DF24 8001D324 E60C0028 */ swc1 $f12, 0x28($s0) -/* 01DF28 8001D328 8E300054 */ lw $s0, 0x54($s1) -/* 01DF2C 8001D32C 00000000 */ nop -.L8001D330: -/* 01DF30 8001D330 C608002C */ lwc1 $f8, 0x2c($s0) -.L8001D334: -/* 01DF34 8001D334 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 01DF38 8001D338 460E4280 */ add.s $f10, $f8, $f14 -/* 01DF3C 8001D33C 44818000 */ mtc1 $at, $f16 -/* 01DF40 8001D340 E60A002C */ swc1 $f10, 0x2c($s0) -/* 01DF44 8001D344 8E300054 */ lw $s0, 0x54($s1) -/* 01DF48 8001D348 3C01800E */ lui $at, %hi(D_800E5660) # $at, 0x800e -/* 01DF4C 8001D34C C600002C */ lwc1 $f0, 0x2c($s0) -/* 01DF50 8001D350 00000000 */ nop -/* 01DF54 8001D354 4602003C */ c.lt.s $f0, $f2 -/* 01DF58 8001D358 00000000 */ nop -/* 01DF5C 8001D35C 45000006 */ bc1f .L8001D378 -/* 01DF60 8001D360 00000000 */ nop -/* 01DF64 8001D364 E602002C */ swc1 $f2, 0x2c($s0) -/* 01DF68 8001D368 8E300054 */ lw $s0, 0x54($s1) -/* 01DF6C 8001D36C 00000000 */ nop -/* 01DF70 8001D370 C600002C */ lwc1 $f0, 0x2c($s0) -/* 01DF74 8001D374 00000000 */ nop -.L8001D378: -/* 01DF78 8001D378 4600803E */ c.le.s $f16, $f0 -/* 01DF7C 8001D37C 00000000 */ nop -/* 01DF80 8001D380 45000008 */ bc1f .L8001D3A4 -/* 01DF84 8001D384 00000000 */ nop -/* 01DF88 8001D388 C4325660 */ lwc1 $f18, %lo(D_800E5660)($at) -/* 01DF8C 8001D38C 00000000 */ nop -/* 01DF90 8001D390 E612002C */ swc1 $f18, 0x2c($s0) -/* 01DF94 8001D394 8E300054 */ lw $s0, 0x54($s1) -/* 01DF98 8001D398 00000000 */ nop -/* 01DF9C 8001D39C C600002C */ lwc1 $f0, 0x2c($s0) -/* 01DFA0 8001D3A0 00000000 */ nop -.L8001D3A4: -/* 01DFA4 8001D3A4 86080024 */ lh $t0, 0x24($s0) -/* 01DFA8 8001D3A8 87A9003A */ lh $t1, 0x3a($sp) -/* 01DFAC 8001D3AC 860E0022 */ lh $t6, 0x22($s0) -/* 01DFB0 8001D3B0 8E050028 */ lw $a1, 0x28($s0) -/* 01DFB4 8001D3B4 01095021 */ addu $t2, $t0, $t1 -/* 01DFB8 8001D3B8 87AF0036 */ lh $t7, 0x36($sp) -/* 01DFBC 8001D3BC AFAA0010 */ sw $t2, 0x10($sp) -/* 01DFC0 8001D3C0 860B0026 */ lh $t3, 0x26($s0) -/* 01DFC4 8001D3C4 87AC003E */ lh $t4, 0x3e($sp) -/* 01DFC8 8001D3C8 01CF3821 */ addu $a3, $t6, $t7 -/* 01DFCC 8001D3CC 0007C400 */ sll $t8, $a3, 0x10 -/* 01DFD0 8001D3D0 44060000 */ mfc1 $a2, $f0 -/* 01DFD4 8001D3D4 016C6821 */ addu $t5, $t3, $t4 -/* 01DFD8 8001D3D8 AFAD0014 */ sw $t5, 0x14($sp) -/* 01DFDC 8001D3DC 00183C03 */ sra $a3, $t8, 0x10 -/* 01DFE0 8001D3E0 0C00752D */ jal func_8001D4B4 -/* 01DFE4 8001D3E4 02002025 */ move $a0, $s0 -/* 01DFE8 8001D3E8 8E220040 */ lw $v0, 0x40($s1) -/* 01DFEC 8001D3EC 00000000 */ nop -/* 01DFF0 8001D3F0 904E003D */ lbu $t6, 0x3d($v0) -/* 01DFF4 8001D3F4 00000000 */ nop -/* 01DFF8 8001D3F8 11C0002A */ beqz $t6, .L8001D4A4 -/* 01DFFC 8001D3FC 8FBF0024 */ lw $ra, 0x24($sp) -/* 01E000 8001D400 904F003A */ lbu $t7, 0x3a($v0) -/* 01E004 8001D404 8E380054 */ lw $t8, 0x54($s1) -/* 01E008 8001D408 00000000 */ nop -/* 01E00C 8001D40C A30F0004 */ sb $t7, 4($t8) -/* 01E010 8001D410 8E390040 */ lw $t9, 0x40($s1) -/* 01E014 8001D414 8E290054 */ lw $t1, 0x54($s1) -/* 01E018 8001D418 9328003B */ lbu $t0, 0x3b($t9) -/* 01E01C 8001D41C 00000000 */ nop -/* 01E020 8001D420 A1280005 */ sb $t0, 5($t1) -/* 01E024 8001D424 8E2A0040 */ lw $t2, 0x40($s1) -/* 01E028 8001D428 8E2C0054 */ lw $t4, 0x54($s1) -/* 01E02C 8001D42C 914B003C */ lbu $t3, 0x3c($t2) -/* 01E030 8001D430 00000000 */ nop -/* 01E034 8001D434 A18B0006 */ sb $t3, 6($t4) -/* 01E038 8001D438 8E2D0040 */ lw $t5, 0x40($s1) -/* 01E03C 8001D43C 8E2F0054 */ lw $t7, 0x54($s1) -/* 01E040 8001D440 91AE003D */ lbu $t6, 0x3d($t5) -/* 01E044 8001D444 00000000 */ nop -/* 01E048 8001D448 A1EE0007 */ sb $t6, 7($t7) -/* 01E04C 8001D44C 8E300054 */ lw $s0, 0x54($s1) -/* 01E050 8001D450 00000000 */ nop -/* 01E054 8001D454 8618001C */ lh $t8, 0x1c($s0) -/* 01E058 8001D458 00000000 */ nop -/* 01E05C 8001D45C 0018C843 */ sra $t9, $t8, 1 -/* 01E060 8001D460 00194023 */ negu $t0, $t9 -/* 01E064 8001D464 A6080008 */ sh $t0, 8($s0) -/* 01E068 8001D468 8E300054 */ lw $s0, 0x54($s1) -/* 01E06C 8001D46C 00000000 */ nop -/* 01E070 8001D470 8609001E */ lh $t1, 0x1e($s0) -/* 01E074 8001D474 00000000 */ nop -/* 01E078 8001D478 00095043 */ sra $t2, $t1, 1 -/* 01E07C 8001D47C 000A5823 */ negu $t3, $t2 -/* 01E080 8001D480 A60B000A */ sh $t3, 0xa($s0) -/* 01E084 8001D484 8E300054 */ lw $s0, 0x54($s1) -/* 01E088 8001D488 00000000 */ nop -/* 01E08C 8001D48C 860C0020 */ lh $t4, 0x20($s0) -/* 01E090 8001D490 00000000 */ nop -/* 01E094 8001D494 000C6843 */ sra $t5, $t4, 1 -/* 01E098 8001D498 000D7023 */ negu $t6, $t5 -/* 01E09C 8001D49C A60E000C */ sh $t6, 0xc($s0) -.L8001D4A0: -/* 01E0A0 8001D4A0 8FBF0024 */ lw $ra, 0x24($sp) -.L8001D4A4: -/* 01E0A4 8001D4A4 8FB0001C */ lw $s0, 0x1c($sp) -/* 01E0A8 8001D4A8 8FB10020 */ lw $s1, 0x20($sp) -/* 01E0AC 8001D4AC 03E00008 */ jr $ra -/* 01E0B0 8001D4B0 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/objects/func_8001D4B4.s b/asm/non_matchings/objects/func_8001D4B4.s deleted file mode 100644 index 2f05a893..00000000 --- a/asm/non_matchings/objects/func_8001D4B4.s +++ /dev/null @@ -1,77 +0,0 @@ -glabel func_8001D4B4 -/* 01E0B4 8001D4B4 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 01E0B8 8001D4B8 AFBF0014 */ sw $ra, 0x14($sp) -/* 01E0BC 8001D4BC AFA40030 */ sw $a0, 0x30($sp) -/* 01E0C0 8001D4C0 AFA7003C */ sw $a3, 0x3c($sp) -/* 01E0C4 8001D4C4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 01E0C8 8001D4C8 44856000 */ mtc1 $a1, $f12 -/* 01E0CC 8001D4CC 44867000 */ mtc1 $a2, $f14 -/* 01E0D0 8001D4D0 44812000 */ mtc1 $at, $f4 -/* 01E0D4 8001D4D4 A4870022 */ sh $a3, 0x22($a0) -/* 01E0D8 8001D4D8 E48C0028 */ swc1 $f12, 0x28($a0) -/* 01E0DC 8001D4DC E48E002C */ swc1 $f14, 0x2c($a0) -/* 01E0E0 8001D4E0 E4840000 */ swc1 $f4, ($a0) -/* 01E0E4 8001D4E4 87B80042 */ lh $t8, 0x42($sp) -/* 01E0E8 8001D4E8 44800000 */ mtc1 $zero, $f0 -/* 01E0EC 8001D4EC A4980024 */ sh $t8, 0x24($a0) -/* 01E0F0 8001D4F0 87B90046 */ lh $t9, 0x46($sp) -/* 01E0F4 8001D4F4 3C01C680 */ li $at, 0xC6800000 # -16384.000000 -/* 01E0F8 8001D4F8 A4990026 */ sh $t9, 0x26($a0) -/* 01E0FC 8001D4FC 87A80046 */ lh $t0, 0x46($sp) -/* 01E100 8001D500 87A90042 */ lh $t1, 0x42($sp) -/* 01E104 8001D504 44813000 */ mtc1 $at, $f6 -/* 01E108 8001D508 00803025 */ move $a2, $a0 -/* 01E10C 8001D50C A7A7002C */ sh $a3, 0x2c($sp) -/* 01E110 8001D510 AFA60030 */ sw $a2, 0x30($sp) -/* 01E114 8001D514 27A40028 */ addiu $a0, $sp, 0x28 -/* 01E118 8001D518 27A5001C */ addiu $a1, $sp, 0x1c -/* 01E11C 8001D51C E7A0001C */ swc1 $f0, 0x1c($sp) -/* 01E120 8001D520 E7A00020 */ swc1 $f0, 0x20($sp) -/* 01E124 8001D524 A7A80028 */ sh $t0, 0x28($sp) -/* 01E128 8001D528 A7A9002A */ sh $t1, 0x2a($sp) -/* 01E12C 8001D52C 0C01C0C8 */ jal f32_vec3_apply_object_rotation -/* 01E130 8001D530 E7A60024 */ swc1 $f6, 0x24($sp) -/* 01E134 8001D534 C7A8001C */ lwc1 $f8, 0x1c($sp) -/* 01E138 8001D538 8FA60030 */ lw $a2, 0x30($sp) -/* 01E13C 8001D53C 46004287 */ neg.s $f10, $f8 -/* 01E140 8001D540 444AF800 */ cfc1 $t2, $31 -/* 01E144 8001D544 00000000 */ nop -/* 01E148 8001D548 35410003 */ ori $at, $t2, 3 -/* 01E14C 8001D54C 38210002 */ xori $at, $at, 2 -/* 01E150 8001D550 44C1F800 */ ctc1 $at, $31 -/* 01E154 8001D554 00000000 */ nop -/* 01E158 8001D558 46005424 */ cvt.w.s $f16, $f10 -/* 01E15C 8001D55C 440B8000 */ mfc1 $t3, $f16 -/* 01E160 8001D560 44CAF800 */ ctc1 $t2, $31 -/* 01E164 8001D564 A4CB001C */ sh $t3, 0x1c($a2) -/* 01E168 8001D568 C7B20020 */ lwc1 $f18, 0x20($sp) -/* 01E16C 8001D56C 00000000 */ nop -/* 01E170 8001D570 46009107 */ neg.s $f4, $f18 -/* 01E174 8001D574 444CF800 */ cfc1 $t4, $31 -/* 01E178 8001D578 00000000 */ nop -/* 01E17C 8001D57C 35810003 */ ori $at, $t4, 3 -/* 01E180 8001D580 38210002 */ xori $at, $at, 2 -/* 01E184 8001D584 44C1F800 */ ctc1 $at, $31 -/* 01E188 8001D588 00000000 */ nop -/* 01E18C 8001D58C 460021A4 */ cvt.w.s $f6, $f4 -/* 01E190 8001D590 440D3000 */ mfc1 $t5, $f6 -/* 01E194 8001D594 44CCF800 */ ctc1 $t4, $31 -/* 01E198 8001D598 A4CD001E */ sh $t5, 0x1e($a2) -/* 01E19C 8001D59C C7A80024 */ lwc1 $f8, 0x24($sp) -/* 01E1A0 8001D5A0 A0C00018 */ sb $zero, 0x18($a2) -/* 01E1A4 8001D5A4 46004287 */ neg.s $f10, $f8 -/* 01E1A8 8001D5A8 444EF800 */ cfc1 $t6, $31 -/* 01E1AC 8001D5AC A0C00019 */ sb $zero, 0x19($a2) -/* 01E1B0 8001D5B0 35C10003 */ ori $at, $t6, 3 -/* 01E1B4 8001D5B4 38210002 */ xori $at, $at, 2 -/* 01E1B8 8001D5B8 44C1F800 */ ctc1 $at, $31 -/* 01E1BC 8001D5BC A0C0001A */ sb $zero, 0x1a($a2) -/* 01E1C0 8001D5C0 46005424 */ cvt.w.s $f16, $f10 -/* 01E1C4 8001D5C4 440F8000 */ mfc1 $t7, $f16 -/* 01E1C8 8001D5C8 44CEF800 */ ctc1 $t6, $31 -/* 01E1CC 8001D5CC A4CF0020 */ sh $t7, 0x20($a2) -/* 01E1D0 8001D5D0 8FBF0014 */ lw $ra, 0x14($sp) -/* 01E1D4 8001D5D4 27BD0030 */ addiu $sp, $sp, 0x30 -/* 01E1D8 8001D5D8 03E00008 */ jr $ra -/* 01E1DC 8001D5DC 00000000 */ nop - diff --git a/include/structs.h b/include/structs.h index 0ddf5685..a7e945e5 100644 --- a/include/structs.h +++ b/include/structs.h @@ -679,14 +679,16 @@ typedef struct ObjectHeader { /* 0x1C */ ObjHeaderParticleEntry *objectParticles; s32 pad20; /* 0x24 */ ObjectHeader24 *unk24; - u8 pad28[8]; + /* 0x28 */ f32 unk28; + /* 0x2C */ f32 unk2C; /* 0x30 */ u16 unk30; /* 0x32 */ s16 unk32; /* 0x32 */ s16 unk34; /* 0x32 */ s16 unk36; u8 pad38[5]; /* 0x3D */ u8 unk3D; - u8 pad3E[4]; + /* 0x3E */ s16 unk3E; + /* 0x40 */ s16 unk40; /* 0x42 */ s16 unk42; /* 0x44 */ s16 unk44; /* 0x48 */ s16 unk46; @@ -698,7 +700,7 @@ typedef struct ObjectHeader { /* 0x53 */ s8 modelType; /* 0x54 */ s8 behaviorId; /* 0x55 */ s8 numberOfModelIds; // size of array pointed by Object->unk68 - /* 0x56 */ u8 pad56; + /* 0x56 */ s8 unk56; /* 0x57 */ s8 unk57; /* 0x58 */ s8 unk58; /* 0x59 */ u8 pad59; @@ -782,7 +784,12 @@ typedef struct Object_54 { u8 unk19; u8 unk1A; u8 unk1B; - u8 pad1C[12]; + s16 unk1C; + s16 unk1E; + s16 unk20; + s16 unk22; + s16 unk24; + s16 unk26; f32 unk28; f32 unk2C; } Object_54; @@ -813,8 +820,7 @@ typedef struct Object_5C { typedef struct Object_60 { s32 unk0; - struct Object *unk4; - u8 unk8[0x24]; + struct Object *unk4[10]; s8 *unk2C; } Object_60; diff --git a/src/object_functions.c b/src/object_functions.c index 102ad9cf..11bd3c55 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -1073,7 +1073,7 @@ void obj_loop_unknown58(Object *obj, s32 updateRate) { if (obj60->unk0 == 1) { vehicleID = someOtherObj64->vehicleID; if (vehicleID == VEHICLE_HOVERCRAFT || vehicleID == VEHICLE_PLANE) { - someObj = (Object *) obj60->unk4; + someObj = (Object *) obj60->unk4[0]; someObj->segment.trans.y_rotation = 0x4000; someObj->segment.object.numModelIDs++; someObj->segment.object.numModelIDs &= 1; @@ -4290,7 +4290,7 @@ block_25: block_37: obj->properties.projectile.unk4 += updateRate; if (obj->unk60 != NULL) { - temp_s1_2 = (Object *) obj->unk60->unk4; + temp_s1_2 = (Object *) obj->unk60->unk4[0]; if (obj->properties.projectile.unk4 < 8) { temp_s1_2->segment.trans.scale = obj->properties.projectile.unk4 * 0.5f; } else if (obj->properties.projectile.unk4 < 16) { diff --git a/src/objects.c b/src/objects.c index 7a185545..11dcd1b5 100644 --- a/src/objects.c +++ b/src/objects.c @@ -203,7 +203,7 @@ s8 D_8011AE01; s8 gIsNonCarRacers; s8 gIsSilverCoinRace; Object *D_8011AE08[16]; -s32 (*D_8011AE48)[8]; // Unknown number of entries. +AssetObjectHeaders *(*D_8011AE48)[8]; // Unknown number of entries. u8 (*D_8011AE4C)[8]; // Unknown number of entries. s32 D_8011AE50; TextureHeader *D_8011AE54; @@ -260,7 +260,7 @@ s32 D_8011AF10[2]; f32 D_8011AF18[4]; s32 D_8011AF28; s32 D_8011AF2C; -s32 D_8011AF30; +Object_54 *D_8011AF30; s32 D_8011AF34; s32 D_8011AF38[10]; s32 D_8011AF60[2]; @@ -379,7 +379,7 @@ void allocate_object_pools(void) { gAssetsObjectHeadersTableLength++; } gAssetsObjectHeadersTableLength--; - D_8011AE48 = allocate_from_main_pool_safe(gAssetsObjectHeadersTableLength * 4, COLOUR_TAG_WHITE); + D_8011AE48 = (AssetObjectHeaders * (*)[8]) allocate_from_main_pool_safe(gAssetsObjectHeadersTableLength * 4, COLOUR_TAG_WHITE); D_8011AE4C = allocate_from_main_pool_safe(gAssetsObjectHeadersTableLength, COLOUR_TAG_WHITE); for (i = 0; i < gAssetsObjectHeadersTableLength; i++) { @@ -504,7 +504,32 @@ void func_8000C604(void) { free_from_memory_pool((void *) D_8011AEB0[1]); } -GLOBAL_ASM("asm/non_matchings/objects/func_8000C718.s") +AssetObjectHeaders *func_8000C718(s32 index) { + s32 assetOffset; + s32 size; + AssetObjectHeaders *address; + + if ((*D_8011AE4C)[index] != 0) { + (*D_8011AE4C)[index]++; + return (*D_8011AE48)[index]; + } + assetOffset = gAssetsObjectHeadersTable[index]; + size = gAssetsObjectHeadersTable[index + 1] - assetOffset; + address = allocate_from_pool_containing_slots((MemoryPoolSlot *) gObjectMemoryPool, size); + if (address != NULL) { + load_asset_to_address(ASSET_OBJECT_HEADERS, (u32) address, assetOffset, size); + address->unk24 = (u32) address + address->unk24; + address->unk1C = (u32) address + address->unk1C; + address->unk14 = (u32) address + address->unk14; + address->unk18 = (u32) address + address->unk18; + address->unk10 = (u32) address + address->unk10; + (*D_8011AE48)[index] = address; + (*D_8011AE4C)[index] = 1; + } else { + return NULL; + } + return address; +} void func_8000C844(s32 arg0) { if ((*D_8011AE4C)[arg0] != 0) { @@ -933,8 +958,72 @@ void light_setup_light_sources(Object *obj) { } } -GLOBAL_ASM("asm/non_matchings/objects/func_8000F7EC.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8000F99C.s") +s32 func_8000F7EC(Object *arg0, Object_54 *arg1) { + s32 var_a2; + s32 var_v1; + + arg0->unk54 = arg1; + var_a2 = 0; + if (arg0->segment.header->modelType == OBJECT_MODEL_TYPE_3D_MODEL) { + for (var_v1 = 0; arg0->unk68[var_v1] == NULL; var_v1++) { } + if ((arg0->unk68[var_v1] != NULL) && (arg0->unk68[var_v1]->objModel->unk40 != NULL)) { + func_8001D4B4(arg0->unk54, arg0->segment.header->unk28, arg0->segment.header->unk2C, 0, arg0->segment.header->unk3E, arg0->segment.header->unk40); + if (arg0->segment.header->unk3D != 0) { + arg0->unk54->unk4 = arg0->segment.header->pad38[2]; + arg0->unk54->unk5 = arg0->segment.header->pad38[3]; + arg0->unk54->unk6 = arg0->segment.header->pad38[4]; + arg0->unk54->unk7 = arg0->segment.header->unk3D; + arg0->unk54->unk8 = -(arg0->unk54->unk1C >> 1); + arg0->unk54->unkA = -(arg0->unk54->unk1E >> 1); + arg0->unk54->unkC = -(arg0->unk54->unk20 >> 1); + } + var_a2 = 0x30; + } + } else if (arg0->segment.header->modelType == OBJECT_MODEL_TYPE_SPRITE_BILLBOARD) { + arg0->unk54->unk0 = 1.0f; + arg1->unk4 = 0xFF; + arg1->unk5 = 0xFF; + arg1->unk6 = 0xFF; + arg1->unk7 = 0; + var_a2 = 8; + } + if (var_a2 == 0) { + arg0->unk54 = NULL; + } + return (var_a2 & ~3) + 4; +} + +s32 func_8000F99C(Object *obj) { + Object *temp_v0; + Object_60 *obj60; + s32 i; + s32 var_s4; + s32 var_v0; + + obj60 = obj->unk60; + obj60->unk0 = obj->segment.header->unk56; + obj60->unk0 = obj60->unk0; //Fakematch? + var_s4 = FALSE; + for (i = 0; i < obj60->unk0; i++) { + obj60->unk4[i] = func_8000FD54(obj->segment.header->vehiclePartIds[i ^ 0]); //i ^ 0 fakematch + if (obj60->unk4[i] == NULL) { + var_s4 = TRUE; + } + } + if (var_s4) { + for (i = 0; i < obj60->unk0; i++) { + temp_v0 = obj60->unk4[i]; + if (temp_v0 != NULL) { + objFreeAssets(temp_v0, temp_v0->segment.header->numberOfModelIds, temp_v0->segment.header->modelType); + func_8000C844(temp_v0->segment.object.unk2C); + free_from_memory_pool(temp_v0); + } + } + return 1; + } + obj60->unk2C = obj->segment.header->vehiclePartIndices; + return 0; +} s32 func_8000FAC4(Object *obj, Object_6C *arg1) { ObjHeaderParticleEntry *particleDataEntry; @@ -3140,8 +3229,61 @@ void func_8001D258(f32 arg0, f32 arg1, s16 arg2, s16 arg3, s16 arg4) { func_8001D4B4(&D_8011AF30, arg0, arg1, arg2, arg3, arg4); } -GLOBAL_ASM("asm/non_matchings/objects/func_8001D2A0.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001D4B4.s") +UNUSED void func_8001D2A0(Object *obj, f32 arg1, f32 arg2, s16 arg3, s16 arg4, s16 arg5) { + if (obj->unk54 != NULL) { + obj->unk54->unk28 += arg1; + if (obj->unk54->unk28 < 0.0f) { + obj->unk54->unk28 = 0.0f; + } else if (obj->unk54->unk28 > 1.0f) { + obj->unk54->unk28 = 1.0f; + } + obj->unk54->unk2C += arg2; + if (obj->unk54->unk2C < 0.0f) { + obj->unk54->unk2C = 0.0f; + } + if (obj->unk54->unk2C >= 2.0f) { + obj->unk54->unk2C = 1.99f; + } + func_8001D4B4(obj->unk54, obj->unk54->unk28, obj->unk54->unk2C, + (obj->unk54->unk22 + arg3), + (obj->unk54->unk24 + arg4), + (obj->unk54->unk26 + arg5)); + if (obj->segment.header->unk3D != 0) { + obj->unk54->unk4 = obj->segment.header->pad38[2]; + obj->unk54->unk5 = obj->segment.header->pad38[3]; + obj->unk54->unk6 = obj->segment.header->pad38[4]; + obj->unk54->unk7 = obj->segment.header->unk3D; + obj->unk54->unk8 = -(obj->unk54->unk1C >> 1); + obj->unk54->unkA = -(obj->unk54->unk1E >> 1); + obj->unk54->unkC = -(obj->unk54->unk20 >> 1); + } + } +} + +void func_8001D4B4(Object_54 *arg0, f32 arg1, f32 arg2, s16 arg3, s16 arg4, s16 arg5) { + Vec3s angle; + Vec3f velocityPos; + + arg0->unk22 = arg3; + arg0->unk28 = arg1; + arg0->unk2C = arg2; + arg0->unk0 = 1.0f; + arg0->unk24 = arg4; + arg0->unk26 = arg5; + angle.z = arg3; + angle.x = arg5; + angle.y = arg4; + velocityPos.z = -16384.0f; + velocityPos.x = 0.0f; + velocityPos.y = 0.0f; + f32_vec3_apply_object_rotation((ObjectTransform *) &angle, (f32 *) &velocityPos); + arg0->unk1C = -velocityPos.x; + arg0->unk1E = -velocityPos.y; + arg0->unk20 = -velocityPos.z; + arg0->unk18 = 0; + arg0->unk19 = 0; + arg0->unk1A = 0; +} /** * Take the normalised length of the position set by the perspective and set the world angle for the envmap. diff --git a/src/objects.h b/src/objects.h index cc8e9b2e..a21c30a6 100644 --- a/src/objects.h +++ b/src/objects.h @@ -174,6 +174,19 @@ typedef struct BossRaceVehicles { u8 bossVehicle; } BossRaceVehicles; +typedef struct AssetObjectHeaders { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; +} AssetObjectHeaders; + /* Size: 0x8 bytes */ typedef struct unknown800DC6F0 { union { @@ -375,7 +388,7 @@ void func_8001D1BC(s32 arg0); Object *func_8001D1E4(s32 *arg0); Object *func_8001D214(s32 arg0); void func_8001D258(f32 arg0, f32 arg1, s16 arg2, s16 arg3, s16 arg4); -void func_8001D4B4(s32*, f32, f32, s16, s16, s16); +void func_8001D4B4(Object_54*, f32, f32, s16, s16, s16); void calc_dyn_light_and_env_map_for_object(ObjectModel *model, Object *object, s32 arg2, f32 intensity); s32 *get_misc_asset(s32 index); s32 func_8001E2EC(s32 arg0); @@ -433,6 +446,9 @@ s32 init_object_shadow(Object *obj, ShadowData *shadow); s32 func_800143A8(ObjectModel *objModel, Object *obj, s32 startIndex, s32 flags, s32 someBool); void render_bubble_trap(ObjectTransform *trans, Object_68 *gfxData, Object *obj, s32 flags); void gParticlePtrList_flush(void); +s32 func_8000F7EC(Object *arg0, Object_54 *arg1); +AssetObjectHeaders *func_8000C718(s32 index); +s32 func_8000F99C(Object *); //Non Matching void calc_dynamic_lighting_for_object_1(Object *, ObjectModel *, s16, Object *, f32, f32); @@ -478,5 +494,6 @@ void func_80011264(ObjectModel *, Object *); void func_800245F0(ObjectModel *, Object *, f32); //asm func in unknown_0251F0 s32 func_80061D30(Object *); //asm func in unknown_062930 void func_8000C8F8(s32, s32); +Object *func_8000FD54(s32); #endif