diff --git a/README.md b/README.md index ed57022c..d7483505 100755 --- a/README.md +++ b/README.md @@ -113,14 +113,14 @@ s32 is_drumstick_unlocked(void) { } ``` -As of August 18th 2021, this is our current score: +As of August 23rd 2021, this is our current score: ``` ======================================================= ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 14.25% Complete ------------------- - # Decompiled functions: 884 - # GLOBAL_ASM remaining: 894 - # NON_MATCHING functions: 100 + ------------------- 14.63% Complete ------------------- + # Decompiled functions: 900 + # GLOBAL_ASM remaining: 880 + # NON_MATCHING functions: 106 --------------------- Game Status --------------------- Balloons: 8/47, Keys: 1/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 @@ -128,9 +128,9 @@ As of August 18th 2021, this is our current score: We are collecting eggs in Fire Mountain. (1/3 Eggs) ======================================================= ADVENTURE TWO (Cleanup & Documentation) - ------------------- 0.75% Complete ------------------- - # Documented functions: 61 - # Undocumented remaining: 1717 + ------------------- 0.77% Complete ------------------- + # Documented functions: 62 + # Undocumented remaining: 1718 --------------------- Game Status --------------------- Balloons: 0/47, Keys: 0/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 diff --git a/asm/non_matchings/font/func_800C5168.s b/asm/non_matchings/font/func_800C5168.s index 525737d3..992e193e 100644 --- a/asm/non_matchings/font/func_800C5168.s +++ b/asm/non_matchings/font/func_800C5168.s @@ -192,34 +192,3 @@ glabel func_800C5168 /* 0C6020 800C5420 03E00008 */ jr $ra /* 0C6024 800C5424 27BD0148 */ addiu $sp, $sp, 0x148 -/* 0C6028 800C5428 00047080 */ sll $t6, $a0, 2 -/* 0C602C 800C542C 3C0F8013 */ lui $t7, %hi(D_8012A7E8) # $t7, 0x8013 -/* 0C6030 800C5430 8DEFA7E8 */ lw $t7, %lo(D_8012A7E8)($t7) -/* 0C6034 800C5434 01C47021 */ addu $t6, $t6, $a0 -/* 0C6038 800C5438 000E70C0 */ sll $t6, $t6, 3 -/* 0C603C 800C543C 01CF1021 */ addu $v0, $t6, $t7 -/* 0C6040 800C5440 8C460024 */ lw $a2, 0x24($v0) -/* 0C6044 800C5444 24430024 */ addiu $v1, $v0, 0x24 -/* 0C6048 800C5448 10C0000A */ beqz $a2, .L800C5474 -/* 0C604C 800C544C 00000000 */ nop -/* 0C6050 800C5450 10C50008 */ beq $a2, $a1, .L800C5474 -/* 0C6054 800C5454 00000000 */ nop -.L800C5458: -/* 0C6058 800C5458 24C3001C */ addiu $v1, $a2, 0x1c -/* 0C605C 800C545C 8CC6001C */ lw $a2, 0x1c($a2) -/* 0C6060 800C5460 00000000 */ nop -/* 0C6064 800C5464 10C00003 */ beqz $a2, .L800C5474 -/* 0C6068 800C5468 00000000 */ nop -/* 0C606C 800C546C 14C5FFFA */ bne $a2, $a1, .L800C5458 -/* 0C6070 800C5470 00000000 */ nop -.L800C5474: -/* 0C6074 800C5474 10C00005 */ beqz $a2, .L800C548C -/* 0C6078 800C5478 00000000 */ nop -/* 0C607C 800C547C 8CD8001C */ lw $t8, 0x1c($a2) -/* 0C6080 800C5480 241900FF */ li $t9, 255 -/* 0C6084 800C5484 AC780000 */ sw $t8, ($v1) -/* 0C6088 800C5488 A0B90001 */ sb $t9, 1($a1) -.L800C548C: -/* 0C608C 800C548C 03E00008 */ jr $ra -/* 0C6090 800C5490 00000000 */ nop - diff --git a/asm/non_matchings/font/func_800C5494.s b/asm/non_matchings/font/func_800C5494.s deleted file mode 100644 index bfe3405e..00000000 --- a/asm/non_matchings/font/func_800C5494.s +++ /dev/null @@ -1,102 +0,0 @@ -glabel func_800C5494 -/* 0C6094 800C5494 00047080 */ sll $t6, $a0, 2 -/* 0C6098 800C5498 3C0F8013 */ lui $t7, %hi(D_8012A7E8) # $t7, 0x8013 -/* 0C609C 800C549C 8DEFA7E8 */ lw $t7, %lo(D_8012A7E8)($t7) -/* 0C60A0 800C54A0 01C47021 */ addu $t6, $t6, $a0 -/* 0C60A4 800C54A4 000E70C0 */ sll $t6, $t6, 3 -/* 0C60A8 800C54A8 01CF1021 */ addu $v0, $t6, $t7 -/* 0C60AC 800C54AC 8C430024 */ lw $v1, 0x24($v0) -/* 0C60B0 800C54B0 00000000 */ nop -/* 0C60B4 800C54B4 1060000A */ beqz $v1, .L800C54E0 -/* 0C60B8 800C54B8 00000000 */ nop -/* 0C60BC 800C54BC 10600007 */ beqz $v1, .L800C54DC -/* 0C60C0 800C54C0 00602025 */ move $a0, $v1 -/* 0C60C4 800C54C4 240300FF */ li $v1, 255 -.L800C54C8: -/* 0C60C8 800C54C8 A0830001 */ sb $v1, 1($a0) -/* 0C60CC 800C54CC 8C84001C */ lw $a0, 0x1c($a0) -/* 0C60D0 800C54D0 00000000 */ nop -/* 0C60D4 800C54D4 1480FFFC */ bnez $a0, .L800C54C8 -/* 0C60D8 800C54D8 00000000 */ nop -.L800C54DC: -/* 0C60DC 800C54DC AC400024 */ sw $zero, 0x24($v0) -.L800C54E0: -/* 0C60E0 800C54E0 03E00008 */ jr $ra -/* 0C60E4 800C54E4 00000000 */ nop - -/* 0C60E8 800C54E8 00047080 */ sll $t6, $a0, 2 -/* 0C60EC 800C54EC 3C0F8013 */ lui $t7, %hi(D_8012A7E8) # $t7, 0x8013 -/* 0C60F0 800C54F0 8DEFA7E8 */ lw $t7, %lo(D_8012A7E8)($t7) -/* 0C60F4 800C54F4 01C47021 */ addu $t6, $t6, $a0 -/* 0C60F8 800C54F8 000E70C0 */ sll $t6, $t6, 3 -/* 0C60FC 800C54FC AFA60008 */ sw $a2, 8($sp) -/* 0C6100 800C5500 10A0003A */ beqz $a1, .L800C55EC -/* 0C6104 800C5504 01CF1021 */ addu $v0, $t6, $t7 -/* 0C6108 800C5508 90A30019 */ lbu $v1, 0x19($a1) -/* 0C610C 800C550C 240100FF */ li $at, 255 -/* 0C6110 800C5510 10610036 */ beq $v1, $at, .L800C55EC -/* 0C6114 800C5514 0003C280 */ sll $t8, $v1, 0xa -/* 0C6118 800C5518 3C198013 */ lui $t9, %hi(gFonts) # $t9, 0x8013 -/* 0C611C 800C551C 8FA60010 */ lw $a2, 0x10($sp) -/* 0C6120 800C5520 8F39A7E4 */ lw $t9, %lo(gFonts)($t9) -/* 0C6124 800C5524 24010004 */ li $at, 4 -/* 0C6128 800C5528 10C1002E */ beq $a2, $at, .L800C55E4 -/* 0C612C 800C552C 03192021 */ addu $a0, $t8, $t9 -/* 0C6130 800C5530 24010001 */ li $at, 1 -/* 0C6134 800C5534 10C10005 */ beq $a2, $at, .L800C554C -/* 0C6138 800C5538 24010002 */ li $at, 2 -/* 0C613C 800C553C 10C10009 */ beq $a2, $at, .L800C5564 -/* 0C6140 800C5540 00000000 */ nop -/* 0C6144 800C5544 10000020 */ b .L800C55C8 -/* 0C6148 800C5548 84AC000C */ lh $t4, 0xc($a1) -.L800C554C: -/* 0C614C 800C554C 94880022 */ lhu $t0, 0x22($a0) -/* 0C6150 800C5550 00000000 */ nop -/* 0C6154 800C5554 00E80019 */ multu $a3, $t0 -/* 0C6158 800C5558 00003812 */ mflo $a3 -/* 0C615C 800C555C 1000001A */ b .L800C55C8 -/* 0C6160 800C5560 84AC000C */ lh $t4, 0xc($a1) -.L800C5564: -/* 0C6164 800C5564 94830022 */ lhu $v1, 0x22($a0) -/* 0C6168 800C5568 8449000E */ lh $t1, 0xe($v0) -/* 0C616C 800C556C 00000000 */ nop -/* 0C6170 800C5570 0123001A */ div $zero, $t1, $v1 -/* 0C6174 800C5574 14600002 */ bnez $v1, .L800C5580 -/* 0C6178 800C5578 00000000 */ nop -/* 0C617C 800C557C 0007000D */ break 7 -.L800C5580: -/* 0C6180 800C5580 2401FFFF */ li $at, -1 -/* 0C6184 800C5584 14610004 */ bne $v1, $at, .L800C5598 -/* 0C6188 800C5588 3C018000 */ lui $at, 0x8000 -/* 0C618C 800C558C 15210002 */ bne $t1, $at, .L800C5598 -/* 0C6190 800C5590 00000000 */ nop -/* 0C6194 800C5594 0006000D */ break 6 -.L800C5598: -/* 0C6198 800C5598 00005012 */ mflo $t2 -/* 0C619C 800C559C 00000000 */ nop -/* 0C61A0 800C55A0 00000000 */ nop -/* 0C61A4 800C55A4 00EA0019 */ multu $a3, $t2 -/* 0C61A8 800C55A8 00005812 */ mflo $t3 -/* 0C61AC 800C55AC 00000000 */ nop -/* 0C61B0 800C55B0 00000000 */ nop -/* 0C61B4 800C55B4 01630019 */ multu $t3, $v1 -/* 0C61B8 800C55B8 00003812 */ mflo $a3 -/* 0C61BC 800C55BC 00000000 */ nop -/* 0C61C0 800C55C0 00000000 */ nop -/* 0C61C4 800C55C4 84AC000C */ lh $t4, 0xc($a1) -.L800C55C8: -/* 0C61C8 800C55C8 8FAD0008 */ lw $t5, 8($sp) -/* 0C61CC 800C55CC 84AF000E */ lh $t7, 0xe($a1) -/* 0C61D0 800C55D0 018D7021 */ addu $t6, $t4, $t5 -/* 0C61D4 800C55D4 01E7C021 */ addu $t8, $t7, $a3 -/* 0C61D8 800C55D8 A4AE000C */ sh $t6, 0xc($a1) -/* 0C61DC 800C55DC 03E00008 */ jr $ra -/* 0C61E0 800C55E0 A4B8000E */ sh $t8, 0xe($a1) - -.L800C55E4: -/* 0C61E4 800C55E4 A4A0000C */ sh $zero, 0xc($a1) -/* 0C61E8 800C55E8 A4A0000E */ sh $zero, 0xe($a1) -.L800C55EC: -/* 0C61EC 800C55EC 03E00008 */ jr $ra -/* 0C61F0 800C55F0 00000000 */ nop - diff --git a/asm/non_matchings/font/func_800C5B58.s b/asm/non_matchings/font/func_800C5B58.s deleted file mode 100644 index a26472c2..00000000 --- a/asm/non_matchings/font/func_800C5B58.s +++ /dev/null @@ -1,276 +0,0 @@ -glabel func_800C5B58 -/* 0C6758 800C5B58 27BDFE80 */ addiu $sp, $sp, -0x180 -/* 0C675C 800C5B5C 00077080 */ sll $t6, $a3, 2 -/* 0C6760 800C5B60 3C0F8013 */ lui $t7, %hi(D_8012A7E8) # $t7, 0x8013 -/* 0C6764 800C5B64 8DEFA7E8 */ lw $t7, %lo(D_8012A7E8)($t7) -/* 0C6768 800C5B68 01C77021 */ addu $t6, $t6, $a3 -/* 0C676C 800C5B6C AFB10028 */ sw $s1, 0x28($sp) -/* 0C6770 800C5B70 000E70C0 */ sll $t6, $t6, 3 -/* 0C6774 800C5B74 AFBF0034 */ sw $ra, 0x34($sp) -/* 0C6778 800C5B78 AFB30030 */ sw $s3, 0x30($sp) -/* 0C677C 800C5B7C AFB2002C */ sw $s2, 0x2c($sp) -/* 0C6780 800C5B80 AFB00024 */ sw $s0, 0x24($sp) -/* 0C6784 800C5B84 E7B50018 */ swc1 $f21, 0x18($sp) -/* 0C6788 800C5B88 E7B4001C */ swc1 $f20, 0x1c($sp) -/* 0C678C 800C5B8C AFA60188 */ sw $a2, 0x188($sp) -/* 0C6790 800C5B90 01CF8821 */ addu $s1, $t6, $t7 -/* 0C6794 800C5B94 92380013 */ lbu $t8, 0x13($s1) -/* 0C6798 800C5B98 00A09025 */ move $s2, $a1 -/* 0C679C 800C5B9C 13000095 */ beqz $t8, .L800C5DF4 -/* 0C67A0 800C5BA0 00809825 */ move $s3, $a0 -/* 0C67A4 800C5BA4 8C820000 */ lw $v0, ($a0) -/* 0C67A8 800C5BA8 3C0B800E */ lui $t3, %hi(D_800E3690) # $t3, 0x800e -/* 0C67AC 800C5BAC 24590008 */ addiu $t9, $v0, 8 -/* 0C67B0 800C5BB0 AC990000 */ sw $t9, ($a0) -/* 0C67B4 800C5BB4 256B3690 */ addiu $t3, %lo(D_800E3690) # addiu $t3, $t3, 0x3690 -/* 0C67B8 800C5BB8 3C0A0600 */ lui $t2, 0x600 -/* 0C67BC 800C5BBC AC4A0000 */ sw $t2, ($v0) -/* 0C67C0 800C5BC0 AC4B0004 */ sw $t3, 4($v0) -/* 0C67C4 800C5BC4 8C820000 */ lw $v0, ($a0) -/* 0C67C8 800C5BC8 3C0D0702 */ lui $t5, (0x07020010 >> 16) # lui $t5, 0x702 -/* 0C67CC 800C5BCC 244C0008 */ addiu $t4, $v0, 8 -/* 0C67D0 800C5BD0 AE6C0000 */ sw $t4, ($s3) - # D_800E3690 - 0x7FFFFFB8 = 0xE36D8 -/* 0C67D4 800C5BD4 3C0E000E */ lui $t6, %hi(D_800E3690 - 0x7FFFFFB8) # $t6, 0xe - # D_800E3690 - 0x7FFFFFB8 = 0xE36D8 -/* 0C67D8 800C5BD8 25CE36D8 */ addiu $t6, %lo(D_800E3690 - 0x7FFFFFB8) # addiu $t6, $t6, 0x36d8 -/* 0C67DC 800C5BDC 35AD0010 */ ori $t5, (0x07020010 & 0xFFFF) # ori $t5, $t5, 0x10 -/* 0C67E0 800C5BE0 AC4D0000 */ sw $t5, ($v0) -/* 0C67E4 800C5BE4 AC4E0004 */ sw $t6, 4($v0) -/* 0C67E8 800C5BE8 8E620000 */ lw $v0, ($s3) -/* 0C67EC 800C5BEC 3C18FB00 */ lui $t8, 0xfb00 -/* 0C67F0 800C5BF0 244F0008 */ addiu $t7, $v0, 8 -/* 0C67F4 800C5BF4 AE6F0000 */ sw $t7, ($s3) -/* 0C67F8 800C5BF8 AC400004 */ sw $zero, 4($v0) -/* 0C67FC 800C5BFC AC580000 */ sw $t8, ($v0) -/* 0C6800 800C5C00 86290004 */ lh $t1, 4($s1) -/* 0C6804 800C5C04 86280008 */ lh $t0, 8($s1) -/* 0C6808 800C5C08 02602025 */ move $a0, $s3 -/* 0C680C 800C5C0C 0109C823 */ subu $t9, $t0, $t1 -/* 0C6810 800C5C10 2B21000A */ slti $at, $t9, 0xa -/* 0C6814 800C5C14 14200008 */ bnez $at, .L800C5C38 -/* 0C6818 800C5C18 2525FFFE */ addiu $a1, $t1, -2 -/* 0C681C 800C5C1C 8622000A */ lh $v0, 0xa($s1) -/* 0C6820 800C5C20 86300006 */ lh $s0, 6($s1) -/* 0C6824 800C5C24 25270002 */ addiu $a3, $t1, 2 -/* 0C6828 800C5C28 00505023 */ subu $t2, $v0, $s0 -/* 0C682C 800C5C2C 2941000A */ slti $at, $t2, 0xa -/* 0C6830 800C5C30 1020000A */ beqz $at, .L800C5C5C -/* 0C6834 800C5C34 26060002 */ addiu $a2, $s0, 2 -.L800C5C38: -/* 0C6838 800C5C38 862B000A */ lh $t3, 0xa($s1) -/* 0C683C 800C5C3C 86260006 */ lh $a2, 6($s1) -/* 0C6840 800C5C40 256C0002 */ addiu $t4, $t3, 2 -/* 0C6844 800C5C44 AFAC0010 */ sw $t4, 0x10($sp) -/* 0C6848 800C5C48 25070002 */ addiu $a3, $t0, 2 -/* 0C684C 800C5C4C 0C0316A8 */ jal render_fill_rectangle -/* 0C6850 800C5C50 24C6FFFE */ addiu $a2, $a2, -2 -/* 0C6854 800C5C54 10000025 */ b .L800C5CEC -/* 0C6858 800C5C58 8E620000 */ lw $v0, ($s3) -.L800C5C5C: -/* 0C685C 800C5C5C 244DFFFE */ addiu $t5, $v0, -2 -/* 0C6860 800C5C60 AFAD0010 */ sw $t5, 0x10($sp) -/* 0C6864 800C5C64 02602025 */ move $a0, $s3 -/* 0C6868 800C5C68 0C0316A8 */ jal render_fill_rectangle -/* 0C686C 800C5C6C 2525FFFE */ addiu $a1, $t1, -2 -/* 0C6870 800C5C70 86300006 */ lh $s0, 6($s1) -/* 0C6874 800C5C74 86250004 */ lh $a1, 4($s1) -/* 0C6878 800C5C78 86270008 */ lh $a3, 8($s1) -/* 0C687C 800C5C7C 260E0002 */ addiu $t6, $s0, 2 -/* 0C6880 800C5C80 AFAE0010 */ sw $t6, 0x10($sp) -/* 0C6884 800C5C84 02602025 */ move $a0, $s3 -/* 0C6888 800C5C88 2606FFFE */ addiu $a2, $s0, -2 -/* 0C688C 800C5C8C 24A5FFFE */ addiu $a1, $a1, -2 -/* 0C6890 800C5C90 0C0316A8 */ jal render_fill_rectangle -/* 0C6894 800C5C94 24E70002 */ addiu $a3, $a3, 2 -/* 0C6898 800C5C98 86280008 */ lh $t0, 8($s1) -/* 0C689C 800C5C9C 862F000A */ lh $t7, 0xa($s1) -/* 0C68A0 800C5CA0 86260006 */ lh $a2, 6($s1) -/* 0C68A4 800C5CA4 25F8FFFE */ addiu $t8, $t7, -2 -/* 0C68A8 800C5CA8 AFB80010 */ sw $t8, 0x10($sp) -/* 0C68AC 800C5CAC 02602025 */ move $a0, $s3 -/* 0C68B0 800C5CB0 2505FFFE */ addiu $a1, $t0, -2 -/* 0C68B4 800C5CB4 25070002 */ addiu $a3, $t0, 2 -/* 0C68B8 800C5CB8 0C0316A8 */ jal render_fill_rectangle -/* 0C68BC 800C5CBC 24C60002 */ addiu $a2, $a2, 2 -/* 0C68C0 800C5CC0 8622000A */ lh $v0, 0xa($s1) -/* 0C68C4 800C5CC4 86250004 */ lh $a1, 4($s1) -/* 0C68C8 800C5CC8 86270008 */ lh $a3, 8($s1) -/* 0C68CC 800C5CCC 24590002 */ addiu $t9, $v0, 2 -/* 0C68D0 800C5CD0 AFB90010 */ sw $t9, 0x10($sp) -/* 0C68D4 800C5CD4 02602025 */ move $a0, $s3 -/* 0C68D8 800C5CD8 2446FFFE */ addiu $a2, $v0, -2 -/* 0C68DC 800C5CDC 24A5FFFE */ addiu $a1, $a1, -2 -/* 0C68E0 800C5CE0 0C0316A8 */ jal render_fill_rectangle -/* 0C68E4 800C5CE4 24E70002 */ addiu $a3, $a3, 2 -/* 0C68E8 800C5CE8 8E620000 */ lw $v0, ($s3) -.L800C5CEC: -/* 0C68EC 800C5CEC 3C0BE700 */ lui $t3, 0xe700 -/* 0C68F0 800C5CF0 244A0008 */ addiu $t2, $v0, 8 -/* 0C68F4 800C5CF4 AE6A0000 */ sw $t2, ($s3) -/* 0C68F8 800C5CF8 AC400004 */ sw $zero, 4($v0) -/* 0C68FC 800C5CFC AC4B0000 */ sw $t3, ($v0) -/* 0C6900 800C5D00 8E620000 */ lw $v0, ($s3) -/* 0C6904 800C5D04 3C0DFB00 */ lui $t5, 0xfb00 -/* 0C6908 800C5D08 244C0008 */ addiu $t4, $v0, 8 -/* 0C690C 800C5D0C AE6C0000 */ sw $t4, ($s3) -/* 0C6910 800C5D10 AC4D0000 */ sw $t5, ($v0) -/* 0C6914 800C5D14 922F0010 */ lbu $t7, 0x10($s1) -/* 0C6918 800C5D18 922A0011 */ lbu $t2, 0x11($s1) -/* 0C691C 800C5D1C 000FC600 */ sll $t8, $t7, 0x18 -/* 0C6920 800C5D20 922E0012 */ lbu $t6, 0x12($s1) -/* 0C6924 800C5D24 000A5C00 */ sll $t3, $t2, 0x10 -/* 0C6928 800C5D28 030B6025 */ or $t4, $t8, $t3 -/* 0C692C 800C5D2C 92380013 */ lbu $t8, 0x13($s1) -/* 0C6930 800C5D30 000E7A00 */ sll $t7, $t6, 8 -/* 0C6934 800C5D34 018FC825 */ or $t9, $t4, $t7 -/* 0C6938 800C5D38 03385825 */ or $t3, $t9, $t8 -/* 0C693C 800C5D3C 3C0D800E */ lui $t5, %hi(D_800E3710) # $t5, 0x800e -/* 0C6940 800C5D40 AC4B0004 */ sw $t3, 4($v0) -/* 0C6944 800C5D44 81AD3710 */ lb $t5, %lo(D_800E3710)($t5) -/* 0C6948 800C5D48 3C0E800E */ lui $t6, %hi(D_800E3710) # $t6, 0x800e -/* 0C694C 800C5D4C 05A00023 */ bltz $t5, .L800C5DDC -/* 0C6950 800C5D50 25D03710 */ addiu $s0, $t6, %lo(D_800E3710) -/* 0C6954 800C5D54 82020000 */ lb $v0, ($s0) -/* 0C6958 800C5D58 00000000 */ nop -.L800C5D5C: -/* 0C695C 800C5D5C 862C0004 */ lh $t4, 4($s1) -/* 0C6960 800C5D60 820F0001 */ lb $t7, 1($s0) -/* 0C6964 800C5D64 02602025 */ move $a0, $s3 -/* 0C6968 800C5D68 11E00005 */ beqz $t7, .L800C5D80 -/* 0C696C 800C5D6C 004C2821 */ addu $a1, $v0, $t4 -/* 0C6970 800C5D70 820A0002 */ lb $t2, 2($s0) -/* 0C6974 800C5D74 8639000A */ lh $t9, 0xa($s1) -/* 0C6978 800C5D78 10000005 */ b .L800C5D90 -/* 0C697C 800C5D7C 01593021 */ addu $a2, $t2, $t9 -.L800C5D80: -/* 0C6980 800C5D80 82180002 */ lb $t8, 2($s0) -/* 0C6984 800C5D84 862B0006 */ lh $t3, 6($s1) -/* 0C6988 800C5D88 00000000 */ nop -/* 0C698C 800C5D8C 030B3021 */ addu $a2, $t8, $t3 -.L800C5D90: -/* 0C6990 800C5D90 862D0008 */ lh $t5, 8($s1) -/* 0C6994 800C5D94 820E0003 */ lb $t6, 3($s0) -/* 0C6998 800C5D98 01A23823 */ subu $a3, $t5, $v0 -/* 0C699C 800C5D9C 11C00005 */ beqz $t6, .L800C5DB4 -/* 0C69A0 800C5DA0 00000000 */ nop -/* 0C69A4 800C5DA4 820C0004 */ lb $t4, 4($s0) -/* 0C69A8 800C5DA8 862F000A */ lh $t7, 0xa($s1) -/* 0C69AC 800C5DAC 10000005 */ b .L800C5DC4 -/* 0C69B0 800C5DB0 018F1021 */ addu $v0, $t4, $t7 -.L800C5DB4: -/* 0C69B4 800C5DB4 820A0004 */ lb $t2, 4($s0) -/* 0C69B8 800C5DB8 86390006 */ lh $t9, 6($s1) -/* 0C69BC 800C5DBC 00000000 */ nop -/* 0C69C0 800C5DC0 01591021 */ addu $v0, $t2, $t9 -.L800C5DC4: -/* 0C69C4 800C5DC4 0C0316A8 */ jal render_fill_rectangle -/* 0C69C8 800C5DC8 AFA20010 */ sw $v0, 0x10($sp) -/* 0C69CC 800C5DCC 82020005 */ lb $v0, 5($s0) -/* 0C69D0 800C5DD0 26100005 */ addiu $s0, $s0, 5 -/* 0C69D4 800C5DD4 0441FFE1 */ bgez $v0, .L800C5D5C -/* 0C69D8 800C5DD8 00000000 */ nop -.L800C5DDC: -/* 0C69DC 800C5DDC 8E620000 */ lw $v0, ($s3) -/* 0C69E0 800C5DE0 3C0BE700 */ lui $t3, 0xe700 -/* 0C69E4 800C5DE4 24580008 */ addiu $t8, $v0, 8 -/* 0C69E8 800C5DE8 AE780000 */ sw $t8, ($s3) -/* 0C69EC 800C5DEC AC400004 */ sw $zero, 4($v0) -/* 0C69F0 800C5DF0 AC4B0000 */ sw $t3, ($v0) -.L800C5DF4: -/* 0C69F4 800C5DF4 12400015 */ beqz $s2, .L800C5E4C -/* 0C69F8 800C5DF8 00000000 */ nop -/* 0C69FC 800C5DFC 8FAD0188 */ lw $t5, 0x188($sp) -/* 0C6A00 800C5E00 3C10800E */ lui $s0, %hi(D_800E36E8) # $s0, 0x800e -/* 0C6A04 800C5E04 11A00011 */ beqz $t5, .L800C5E4C -/* 0C6A08 800C5E08 261036E8 */ addiu $s0, %lo(D_800E36E8) # addiu $s0, $s0, 0x36e8 -/* 0C6A0C 800C5E0C 820E0000 */ lb $t6, ($s0) -/* 0C6A10 800C5E10 00000000 */ nop -/* 0C6A14 800C5E14 15C00006 */ bnez $t6, .L800C5E30 -/* 0C6A18 800C5E18 240F0002 */ li $t7, 2 -/* 0C6A1C 800C5E1C 0C027A68 */ jal func_8009E9A0 -/* 0C6A20 800C5E20 00000000 */ nop -/* 0C6A24 800C5E24 240C0001 */ li $t4, 1 -/* 0C6A28 800C5E28 A20C0000 */ sb $t4, ($s0) -/* 0C6A2C 800C5E2C 240F0002 */ li $t7, 2 -.L800C5E30: -/* 0C6A30 800C5E30 3C018013 */ lui $at, %hi(D_8012A7F4) # $at, 0x8013 -/* 0C6A34 800C5E34 8FA70188 */ lw $a3, 0x188($sp) -/* 0C6A38 800C5E38 A02FA7F4 */ sb $t7, %lo(D_8012A7F4)($at) -/* 0C6A3C 800C5E3C 02202025 */ move $a0, $s1 -/* 0C6A40 800C5E40 02602825 */ move $a1, $s3 -/* 0C6A44 800C5E44 0C027A6C */ jal func_8009E9B0 -/* 0C6A48 800C5E48 02403025 */ move $a2, $s2 -.L800C5E4C: -/* 0C6A4C 800C5E4C 8E300024 */ lw $s0, 0x24($s1) -/* 0C6A50 800C5E50 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C6A54 800C5E54 1200003A */ beqz $s0, .L800C5F40 -/* 0C6A58 800C5E58 8FBF0034 */ lw $ra, 0x34($sp) -/* 0C6A5C 800C5E5C 4481A000 */ mtc1 $at, $f20 -/* 0C6A60 800C5E60 27B2006C */ addiu $s2, $sp, 0x6c -.L800C5E64: -/* 0C6A64 800C5E64 860A0008 */ lh $t2, 8($s0) -/* 0C6A68 800C5E68 8619000C */ lh $t9, 0xc($s0) -/* 0C6A6C 800C5E6C 02402825 */ move $a1, $s2 -/* 0C6A70 800C5E70 0159C021 */ addu $t8, $t2, $t9 -/* 0C6A74 800C5E74 A6380000 */ sh $t8, ($s1) -/* 0C6A78 800C5E78 860D000E */ lh $t5, 0xe($s0) -/* 0C6A7C 800C5E7C 860B000A */ lh $t3, 0xa($s0) -/* 0C6A80 800C5E80 00000000 */ nop -/* 0C6A84 800C5E84 016D7021 */ addu $t6, $t3, $t5 -/* 0C6A88 800C5E88 A62E0002 */ sh $t6, 2($s1) -/* 0C6A8C 800C5E8C 920C0010 */ lbu $t4, 0x10($s0) -/* 0C6A90 800C5E90 00000000 */ nop -/* 0C6A94 800C5E94 A22C0014 */ sb $t4, 0x14($s1) -/* 0C6A98 800C5E98 920F0011 */ lbu $t7, 0x11($s0) -/* 0C6A9C 800C5E9C 00000000 */ nop -/* 0C6AA0 800C5EA0 A22F0015 */ sb $t7, 0x15($s1) -/* 0C6AA4 800C5EA4 920A0012 */ lbu $t2, 0x12($s0) -/* 0C6AA8 800C5EA8 00000000 */ nop -/* 0C6AAC 800C5EAC A22A0016 */ sb $t2, 0x16($s1) -/* 0C6AB0 800C5EB0 92190013 */ lbu $t9, 0x13($s0) -/* 0C6AB4 800C5EB4 00000000 */ nop -/* 0C6AB8 800C5EB8 A2390017 */ sb $t9, 0x17($s1) -/* 0C6ABC 800C5EBC 92180014 */ lbu $t8, 0x14($s0) -/* 0C6AC0 800C5EC0 00000000 */ nop -/* 0C6AC4 800C5EC4 A2380018 */ sb $t8, 0x18($s1) -/* 0C6AC8 800C5EC8 920B0015 */ lbu $t3, 0x15($s0) -/* 0C6ACC 800C5ECC 00000000 */ nop -/* 0C6AD0 800C5ED0 A22B0019 */ sb $t3, 0x19($s1) -/* 0C6AD4 800C5ED4 920D0016 */ lbu $t5, 0x16($s0) -/* 0C6AD8 800C5ED8 00000000 */ nop -/* 0C6ADC 800C5EDC A22D001A */ sb $t5, 0x1a($s1) -/* 0C6AE0 800C5EE0 920E0017 */ lbu $t6, 0x17($s0) -/* 0C6AE4 800C5EE4 00000000 */ nop -/* 0C6AE8 800C5EE8 A22E001B */ sb $t6, 0x1b($s1) -/* 0C6AEC 800C5EEC 920C0018 */ lbu $t4, 0x18($s0) -/* 0C6AF0 800C5EF0 00000000 */ nop -/* 0C6AF4 800C5EF4 A22C001C */ sb $t4, 0x1c($s1) -/* 0C6AF8 800C5EF8 920F0019 */ lbu $t7, 0x19($s0) -/* 0C6AFC 800C5EFC 00000000 */ nop -/* 0C6B00 800C5F00 A22F001D */ sb $t7, 0x1d($s1) -/* 0C6B04 800C5F04 92060001 */ lbu $a2, 1($s0) -/* 0C6B08 800C5F08 8E040004 */ lw $a0, 4($s0) -/* 0C6B0C 800C5F0C 0C0317D8 */ jal parse_string_with_number -/* 0C6B10 800C5F10 00000000 */ nop -/* 0C6B14 800C5F14 02602025 */ move $a0, $s3 -/* 0C6B18 800C5F18 02202825 */ move $a1, $s1 -/* 0C6B1C 800C5F1C 02403025 */ move $a2, $s2 -/* 0C6B20 800C5F20 00003825 */ move $a3, $zero -/* 0C6B24 800C5F24 0C031169 */ jal func_800C45A4 -/* 0C6B28 800C5F28 E7B40010 */ swc1 $f20, 0x10($sp) -/* 0C6B2C 800C5F2C 8E10001C */ lw $s0, 0x1c($s0) -/* 0C6B30 800C5F30 00000000 */ nop -/* 0C6B34 800C5F34 1600FFCB */ bnez $s0, .L800C5E64 -/* 0C6B38 800C5F38 00000000 */ nop -/* 0C6B3C 800C5F3C 8FBF0034 */ lw $ra, 0x34($sp) -.L800C5F40: -/* 0C6B40 800C5F40 C7B50018 */ lwc1 $f21, 0x18($sp) -/* 0C6B44 800C5F44 C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 0C6B48 800C5F48 8FB00024 */ lw $s0, 0x24($sp) -/* 0C6B4C 800C5F4C 8FB10028 */ lw $s1, 0x28($sp) -/* 0C6B50 800C5F50 8FB2002C */ lw $s2, 0x2c($sp) -/* 0C6B54 800C5F54 8FB30030 */ lw $s3, 0x30($sp) -/* 0C6B58 800C5F58 03E00008 */ jr $ra -/* 0C6B5C 800C5F5C 27BD0180 */ addiu $sp, $sp, 0x180 - diff --git a/asm/non_matchings/memory/func_80071198.s b/asm/non_matchings/memory/func_80071198.s deleted file mode 100644 index cdfde8bd..00000000 --- a/asm/non_matchings/memory/func_80071198.s +++ /dev/null @@ -1,62 +0,0 @@ -glabel func_80071198 -/* 071D98 80071198 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 071D9C 8007119C AFBF0024 */ sw $ra, 0x24($sp) -/* 071DA0 800711A0 AFB20020 */ sw $s2, 0x20($sp) -/* 071DA4 800711A4 AFB1001C */ sw $s1, 0x1c($sp) -/* 071DA8 800711A8 0C01BD44 */ jal func_8006F510 -/* 071DAC 800711AC AFB00018 */ sw $s0, 0x18($sp) -/* 071DB0 800711B0 3C118012 */ lui $s1, %hi(gFreeQueueCount) # $s1, 0x8012 -/* 071DB4 800711B4 26313DC8 */ addiu $s1, %lo(gFreeQueueCount) # addiu $s1, $s1, 0x3dc8 -/* 071DB8 800711B8 8E230000 */ lw $v1, ($s1) -/* 071DBC 800711BC AFA20028 */ sw $v0, 0x28($sp) -/* 071DC0 800711C0 18600024 */ blez $v1, .L80071254 -/* 071DC4 800711C4 3C108012 */ lui $s0, %hi(gFreeQueue) # $s0, 0x8012 -/* 071DC8 800711C8 3C128012 */ lui $s2, %hi(gFreeQueue) # $s2, 0x8012 -/* 071DCC 800711CC 265235C8 */ addiu $s2, %lo(gFreeQueue) # addiu $s2, $s2, 0x35c8 -/* 071DD0 800711D0 261035C8 */ addiu $s0, %lo(gFreeQueue) # addiu $s0, $s0, 0x35c8 -.L800711D4: -/* 071DD4 800711D4 920E0004 */ lbu $t6, 4($s0) -/* 071DD8 800711D8 00000000 */ nop -/* 071DDC 800711DC 25CFFFFF */ addiu $t7, $t6, -1 -/* 071DE0 800711E0 31F800FF */ andi $t8, $t7, 0xff -/* 071DE4 800711E4 17000013 */ bnez $t8, .L80071234 -/* 071DE8 800711E8 A20F0004 */ sb $t7, 4($s0) -/* 071DEC 800711EC 8E040000 */ lw $a0, ($s0) -/* 071DF0 800711F0 0C01C49E */ jal free_slot_containing_address -/* 071DF4 800711F4 00000000 */ nop -/* 071DF8 800711F8 8E230000 */ lw $v1, ($s1) -/* 071DFC 800711FC 3C0C8012 */ lui $t4, %hi(gFreeQueue) # $t4, 0x8012 -/* 071E00 80071200 0003C8C0 */ sll $t9, $v1, 3 -/* 071E04 80071204 02591021 */ addu $v0, $s2, $t9 -/* 071E08 80071208 8C48FFF8 */ lw $t0, -8($v0) -/* 071E0C 8007120C 246AFFFF */ addiu $t2, $v1, -1 -/* 071E10 80071210 AE080000 */ sw $t0, ($s0) -/* 071E14 80071214 9049FFFC */ lbu $t1, -4($v0) -/* 071E18 80071218 000A58C0 */ sll $t3, $t2, 3 -/* 071E1C 8007121C 258C35C8 */ addiu $t4, %lo(gFreeQueue) # addiu $t4, $t4, 0x35c8 -/* 071E20 80071220 016C2021 */ addu $a0, $t3, $t4 -/* 071E24 80071224 AE2A0000 */ sw $t2, ($s1) -/* 071E28 80071228 01401825 */ move $v1, $t2 -/* 071E2C 8007122C 10000006 */ b .L80071248 -/* 071E30 80071230 A2090004 */ sb $t1, 4($s0) -.L80071234: -/* 071E34 80071234 3C0E8012 */ lui $t6, %hi(gFreeQueue) # $t6, 0x8012 -/* 071E38 80071238 25CE35C8 */ addiu $t6, %lo(gFreeQueue) # addiu $t6, $t6, 0x35c8 -/* 071E3C 8007123C 000368C0 */ sll $t5, $v1, 3 -/* 071E40 80071240 01AE2021 */ addu $a0, $t5, $t6 -/* 071E44 80071244 26100008 */ addiu $s0, $s0, 8 -.L80071248: -/* 071E48 80071248 0204082B */ sltu $at, $s0, $a0 -/* 071E4C 8007124C 1420FFE1 */ bnez $at, .L800711D4 -/* 071E50 80071250 00000000 */ nop -.L80071254: -/* 071E54 80071254 8FA40028 */ lw $a0, 0x28($sp) -/* 071E58 80071258 0C01BD4F */ jal func_8006F53C -/* 071E5C 8007125C 00000000 */ nop -/* 071E60 80071260 8FBF0024 */ lw $ra, 0x24($sp) -/* 071E64 80071264 8FB00018 */ lw $s0, 0x18($sp) -/* 071E68 80071268 8FB1001C */ lw $s1, 0x1c($sp) -/* 071E6C 8007126C 8FB20020 */ lw $s2, 0x20($sp) -/* 071E70 80071270 03E00008 */ jr $ra -/* 071E74 80071274 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/memory/func_80071CE8.s b/asm/non_matchings/memory/func_80071CE8.s deleted file mode 100644 index a1a8bae4..00000000 --- a/asm/non_matchings/memory/func_80071CE8.s +++ /dev/null @@ -1,25 +0,0 @@ -# Unused? - -glabel func_80071CE8 -/* 0728E8 80071CE8 3C028012 */ lui $v0, %hi(gNumberOfMemoryPools) # $v0, 0x8012 -/* 0728EC 80071CEC 8C4235C0 */ lw $v0, %lo(gNumberOfMemoryPools)($v0) -/* 0728F0 80071CF0 2405FFFF */ li $a1, -1 -/* 0728F4 80071CF4 1045000C */ beq $v0, $a1, .L80071D28 -/* 0728F8 80071CF8 24440001 */ addiu $a0, $v0, 1 -/* 0728FC 80071CFC 308E0003 */ andi $t6, $a0, 3 -/* 072900 80071D00 000E2023 */ negu $a0, $t6 -/* 072904 80071D04 10800005 */ beqz $a0, .L80071D1C -/* 072908 80071D08 00821821 */ addu $v1, $a0, $v0 -.L80071D0C: -/* 07290C 80071D0C 2442FFFF */ addiu $v0, $v0, -1 -/* 072910 80071D10 1462FFFE */ bne $v1, $v0, .L80071D0C -/* 072914 80071D14 00000000 */ nop -/* 072918 80071D18 10450003 */ beq $v0, $a1, .L80071D28 -.L80071D1C: -/* 07291C 80071D1C 2442FFFC */ addiu $v0, $v0, -4 -.L80071D20: -/* 072920 80071D20 1445FFFF */ bne $v0, $a1, .L80071D20 -/* 072924 80071D24 2442FFFC */ addiu $v0, $v0, -4 -.L80071D28: -/* 072928 80071D28 03E00008 */ jr $ra -/* 07292C 80071D2C 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/particles/func_800AEE14.s b/asm/non_matchings/particles/func_800AEE14.s deleted file mode 100644 index 6386ee82..00000000 --- a/asm/non_matchings/particles/func_800AEE14.s +++ /dev/null @@ -1,44 +0,0 @@ -glabel func_800AEE14 -/* 0AFA14 800AEE14 240E0003 */ li $t6, 3 -/* 0AFA18 800AEE18 A48E0004 */ sh $t6, 4($a0) -/* 0AFA1C 800AEE1C 8CAF0000 */ lw $t7, ($a1) -/* 0AFA20 800AEE20 3C03800E */ lui $v1, %hi(D_800E2E68) # $v1, 0x800e -/* 0AFA24 800AEE24 AC8F0008 */ sw $t7, 8($a0) -/* 0AFA28 800AEE28 8CA20000 */ lw $v0, ($a1) -/* 0AFA2C 800AEE2C 24632E68 */ addiu $v1, %lo(D_800E2E68) # addiu $v1, $v1, 0x2e68 -/* 0AFA30 800AEE30 00003825 */ move $a3, $zero -/* 0AFA34 800AEE34 240800FF */ li $t0, 255 -.L800AEE38: -/* 0AFA38 800AEE38 84780000 */ lh $t8, ($v1) -/* 0AFA3C 800AEE3C 24E70001 */ addiu $a3, $a3, 1 -/* 0AFA40 800AEE40 A4580000 */ sh $t8, ($v0) -/* 0AFA44 800AEE44 84790002 */ lh $t9, 2($v1) -/* 0AFA48 800AEE48 00074C00 */ sll $t1, $a3, 0x10 -/* 0AFA4C 800AEE4C 00093C03 */ sra $a3, $t1, 0x10 -/* 0AFA50 800AEE50 28E10003 */ slti $at, $a3, 3 -/* 0AFA54 800AEE54 24630004 */ addiu $v1, $v1, 4 -/* 0AFA58 800AEE58 A4400004 */ sh $zero, 4($v0) -/* 0AFA5C 800AEE5C A0480006 */ sb $t0, 6($v0) -/* 0AFA60 800AEE60 A0480007 */ sb $t0, 7($v0) -/* 0AFA64 800AEE64 A0480008 */ sb $t0, 8($v0) -/* 0AFA68 800AEE68 A0480009 */ sb $t0, 9($v0) -/* 0AFA6C 800AEE6C 2442000A */ addiu $v0, $v0, 0xa -/* 0AFA70 800AEE70 1420FFF1 */ bnez $at, .L800AEE38 -/* 0AFA74 800AEE74 A459FFF8 */ sh $t9, -8($v0) -/* 0AFA78 800AEE78 ACA20000 */ sw $v0, ($a1) -/* 0AFA7C 800AEE7C 240B0001 */ li $t3, 1 -/* 0AFA80 800AEE80 A48B0006 */ sh $t3, 6($a0) -/* 0AFA84 800AEE84 8CCC0000 */ lw $t4, ($a2) -/* 0AFA88 800AEE88 240D0040 */ li $t5, 64 -/* 0AFA8C 800AEE8C AC8C000C */ sw $t4, 0xc($a0) -/* 0AFA90 800AEE90 8CC30000 */ lw $v1, ($a2) -/* 0AFA94 800AEE94 240E0002 */ li $t6, 2 -/* 0AFA98 800AEE98 240F0001 */ li $t7, 1 -/* 0AFA9C 800AEE9C A06D0000 */ sb $t5, ($v1) -/* 0AFAA0 800AEEA0 A06E0001 */ sb $t6, 1($v1) -/* 0AFAA4 800AEEA4 A06F0002 */ sb $t7, 2($v1) -/* 0AFAA8 800AEEA8 A0600003 */ sb $zero, 3($v1) -/* 0AFAAC 800AEEAC 24630010 */ addiu $v1, $v1, 0x10 -/* 0AFAB0 800AEEB0 03E00008 */ jr $ra -/* 0AFAB4 800AEEB4 ACC30000 */ sw $v1, ($a2) - diff --git a/asm/non_matchings/particles/func_800AEEB8.s b/asm/non_matchings/particles/func_800AEEB8.s deleted file mode 100644 index 4ea6741a..00000000 --- a/asm/non_matchings/particles/func_800AEEB8.s +++ /dev/null @@ -1,55 +0,0 @@ -glabel func_800AEEB8 -/* 0AFAB8 800AEEB8 240E0004 */ li $t6, 4 -/* 0AFABC 800AEEBC A48E0004 */ sh $t6, 4($a0) -/* 0AFAC0 800AEEC0 8CAF0000 */ lw $t7, ($a1) -/* 0AFAC4 800AEEC4 3C03800E */ lui $v1, %hi(D_800E2E74) # $v1, 0x800e -/* 0AFAC8 800AEEC8 AC8F0008 */ sw $t7, 8($a0) -/* 0AFACC 800AEECC 8CA20000 */ lw $v0, ($a1) -/* 0AFAD0 800AEED0 24632E74 */ addiu $v1, %lo(D_800E2E74) # addiu $v1, $v1, 0x2e74 -/* 0AFAD4 800AEED4 00003825 */ move $a3, $zero -/* 0AFAD8 800AEED8 240800FF */ li $t0, 255 -.L800AEEDC: -/* 0AFADC 800AEEDC 84780000 */ lh $t8, ($v1) -/* 0AFAE0 800AEEE0 24E70001 */ addiu $a3, $a3, 1 -/* 0AFAE4 800AEEE4 A4580000 */ sh $t8, ($v0) -/* 0AFAE8 800AEEE8 84790002 */ lh $t9, 2($v1) -/* 0AFAEC 800AEEEC 00075400 */ sll $t2, $a3, 0x10 -/* 0AFAF0 800AEEF0 000A3C03 */ sra $a3, $t2, 0x10 -/* 0AFAF4 800AEEF4 28E10004 */ slti $at, $a3, 4 -/* 0AFAF8 800AEEF8 24630004 */ addiu $v1, $v1, 4 -/* 0AFAFC 800AEEFC A4400004 */ sh $zero, 4($v0) -/* 0AFB00 800AEF00 A0480006 */ sb $t0, 6($v0) -/* 0AFB04 800AEF04 A0480007 */ sb $t0, 7($v0) -/* 0AFB08 800AEF08 A0480008 */ sb $t0, 8($v0) -/* 0AFB0C 800AEF0C A0480009 */ sb $t0, 9($v0) -/* 0AFB10 800AEF10 2442000A */ addiu $v0, $v0, 0xa -/* 0AFB14 800AEF14 1420FFF1 */ bnez $at, .L800AEEDC -/* 0AFB18 800AEF18 A459FFF8 */ sh $t9, -8($v0) -/* 0AFB1C 800AEF1C ACA20000 */ sw $v0, ($a1) -/* 0AFB20 800AEF20 240C0002 */ li $t4, 2 -/* 0AFB24 800AEF24 A48C0006 */ sh $t4, 6($a0) -/* 0AFB28 800AEF28 8CCD0000 */ lw $t5, ($a2) -/* 0AFB2C 800AEF2C 24070040 */ li $a3, 64 -/* 0AFB30 800AEF30 AC8D000C */ sw $t5, 0xc($a0) -/* 0AFB34 800AEF34 8CC30000 */ lw $v1, ($a2) -/* 0AFB38 800AEF38 24080003 */ li $t0, 3 -/* 0AFB3C 800AEF3C 24090001 */ li $t1, 1 -/* 0AFB40 800AEF40 240E0002 */ li $t6, 2 -/* 0AFB44 800AEF44 A0670000 */ sb $a3, ($v1) -/* 0AFB48 800AEF48 A0680001 */ sb $t0, 1($v1) -/* 0AFB4C 800AEF4C A4600004 */ sh $zero, 4($v1) -/* 0AFB50 800AEF50 A0690002 */ sb $t1, 2($v1) -/* 0AFB54 800AEF54 A460000A */ sh $zero, 0xa($v1) -/* 0AFB58 800AEF58 A0600003 */ sb $zero, 3($v1) -/* 0AFB5C 800AEF5C A460000C */ sh $zero, 0xc($v1) -/* 0AFB60 800AEF60 A460000E */ sh $zero, 0xe($v1) -/* 0AFB64 800AEF64 A0670010 */ sb $a3, 0x10($v1) -/* 0AFB68 800AEF68 A0680011 */ sb $t0, 0x11($v1) -/* 0AFB6C 800AEF6C A4600014 */ sh $zero, 0x14($v1) -/* 0AFB70 800AEF70 A06E0012 */ sb $t6, 0x12($v1) -/* 0AFB74 800AEF74 A0690013 */ sb $t1, 0x13($v1) -/* 0AFB78 800AEF78 A460001E */ sh $zero, 0x1e($v1) -/* 0AFB7C 800AEF7C 24630020 */ addiu $v1, $v1, 0x20 -/* 0AFB80 800AEF80 03E00008 */ jr $ra -/* 0AFB84 800AEF84 ACC30000 */ sw $v1, ($a2) - diff --git a/asm/non_matchings/particles/func_800AEF88.s b/asm/non_matchings/particles/func_800AEF88.s deleted file mode 100644 index ca6a34c7..00000000 --- a/asm/non_matchings/particles/func_800AEF88.s +++ /dev/null @@ -1,41 +0,0 @@ -glabel func_800AEF88 -/* 0AFB88 800AEF88 240E0006 */ li $t6, 6 -/* 0AFB8C 800AEF8C 240F0004 */ li $t7, 4 -/* 0AFB90 800AEF90 A48E0004 */ sh $t6, 4($a0) -/* 0AFB94 800AEF94 A48F0006 */ sh $t7, 6($a0) -/* 0AFB98 800AEF98 8CB80000 */ lw $t8, ($a1) -/* 0AFB9C 800AEF9C 240300FF */ li $v1, 255 -/* 0AFBA0 800AEFA0 AC980008 */ sw $t8, 8($a0) -/* 0AFBA4 800AEFA4 8CD90000 */ lw $t9, ($a2) -/* 0AFBA8 800AEFA8 00000000 */ nop -/* 0AFBAC 800AEFAC AC99000C */ sw $t9, 0xc($a0) -/* 0AFBB0 800AEFB0 8CA20000 */ lw $v0, ($a1) -/* 0AFBB4 800AEFB4 00000000 */ nop -/* 0AFBB8 800AEFB8 A0430006 */ sb $v1, 6($v0) -/* 0AFBBC 800AEFBC A0430007 */ sb $v1, 7($v0) -/* 0AFBC0 800AEFC0 A0430008 */ sb $v1, 8($v0) -/* 0AFBC4 800AEFC4 A0430009 */ sb $v1, 9($v0) -/* 0AFBC8 800AEFC8 A0430010 */ sb $v1, 0x10($v0) -/* 0AFBCC 800AEFCC A0430011 */ sb $v1, 0x11($v0) -/* 0AFBD0 800AEFD0 A0430012 */ sb $v1, 0x12($v0) -/* 0AFBD4 800AEFD4 A0430013 */ sb $v1, 0x13($v0) -/* 0AFBD8 800AEFD8 A0430024 */ sb $v1, 0x24($v0) -/* 0AFBDC 800AEFDC A0430025 */ sb $v1, 0x25($v0) -/* 0AFBE0 800AEFE0 A0430026 */ sb $v1, 0x26($v0) -/* 0AFBE4 800AEFE4 A0430027 */ sb $v1, 0x27($v0) -/* 0AFBE8 800AEFE8 A043002E */ sb $v1, 0x2e($v0) -/* 0AFBEC 800AEFEC A043002F */ sb $v1, 0x2f($v0) -/* 0AFBF0 800AEFF0 A0430030 */ sb $v1, 0x30($v0) -/* 0AFBF4 800AEFF4 A0430031 */ sb $v1, 0x31($v0) -/* 0AFBF8 800AEFF8 A0430038 */ sb $v1, 0x38($v0) -/* 0AFBFC 800AEFFC A0430039 */ sb $v1, 0x39($v0) -/* 0AFC00 800AF000 A043003A */ sb $v1, 0x3a($v0) -/* 0AFC04 800AF004 A043003B */ sb $v1, 0x3b($v0) -/* 0AFC08 800AF008 2442003C */ addiu $v0, $v0, 0x3c -/* 0AFC0C 800AF00C A043FFDE */ sb $v1, -0x22($v0) -/* 0AFC10 800AF010 A043FFDF */ sb $v1, -0x21($v0) -/* 0AFC14 800AF014 A043FFE0 */ sb $v1, -0x20($v0) -/* 0AFC18 800AF018 A043FFE1 */ sb $v1, -0x1f($v0) -/* 0AFC1C 800AF01C 03E00008 */ jr $ra -/* 0AFC20 800AF020 ACA20000 */ sw $v0, ($a1) - diff --git a/asm/non_matchings/particles/func_800AF024.s b/asm/non_matchings/particles/func_800AF024.s deleted file mode 100644 index bb1bd6f3..00000000 --- a/asm/non_matchings/particles/func_800AF024.s +++ /dev/null @@ -1,35 +0,0 @@ -glabel func_800AF024 -/* 0AFC24 800AF024 24070008 */ li $a3, 8 -/* 0AFC28 800AF028 A4870004 */ sh $a3, 4($a0) -/* 0AFC2C 800AF02C A4870006 */ sh $a3, 6($a0) -/* 0AFC30 800AF030 8CAE0000 */ lw $t6, ($a1) -/* 0AFC34 800AF034 00001825 */ move $v1, $zero -/* 0AFC38 800AF038 AC8E0008 */ sw $t6, 8($a0) -/* 0AFC3C 800AF03C 8CCF0000 */ lw $t7, ($a2) -/* 0AFC40 800AF040 24060010 */ li $a2, 16 -/* 0AFC44 800AF044 AC8F000C */ sw $t7, 0xc($a0) -/* 0AFC48 800AF048 8CA20000 */ lw $v0, ($a1) -/* 0AFC4C 800AF04C 240400FF */ li $a0, 255 -.L800AF050: -/* 0AFC50 800AF050 24630004 */ addiu $v1, $v1, 4 -/* 0AFC54 800AF054 A0440010 */ sb $a0, 0x10($v0) -/* 0AFC58 800AF058 A0440011 */ sb $a0, 0x11($v0) -/* 0AFC5C 800AF05C A0440012 */ sb $a0, 0x12($v0) -/* 0AFC60 800AF060 A0440013 */ sb $a0, 0x13($v0) -/* 0AFC64 800AF064 A044001A */ sb $a0, 0x1a($v0) -/* 0AFC68 800AF068 A044001B */ sb $a0, 0x1b($v0) -/* 0AFC6C 800AF06C A044001C */ sb $a0, 0x1c($v0) -/* 0AFC70 800AF070 A044001D */ sb $a0, 0x1d($v0) -/* 0AFC74 800AF074 A0440024 */ sb $a0, 0x24($v0) -/* 0AFC78 800AF078 A0440025 */ sb $a0, 0x25($v0) -/* 0AFC7C 800AF07C A0440026 */ sb $a0, 0x26($v0) -/* 0AFC80 800AF080 A0440027 */ sb $a0, 0x27($v0) -/* 0AFC84 800AF084 24420028 */ addiu $v0, $v0, 0x28 -/* 0AFC88 800AF088 A044FFDE */ sb $a0, -0x22($v0) -/* 0AFC8C 800AF08C A044FFDF */ sb $a0, -0x21($v0) -/* 0AFC90 800AF090 A044FFE0 */ sb $a0, -0x20($v0) -/* 0AFC94 800AF094 1466FFEE */ bne $v1, $a2, .L800AF050 -/* 0AFC98 800AF098 A044FFE1 */ sb $a0, -0x1f($v0) -/* 0AFC9C 800AF09C 03E00008 */ jr $ra -/* 0AFCA0 800AF0A0 ACA20000 */ sw $v0, ($a1) - diff --git a/asm/non_matchings/particles/func_800AF0A4.s b/asm/non_matchings/particles/func_800AF0A4.s deleted file mode 100644 index be15d579..00000000 --- a/asm/non_matchings/particles/func_800AF0A4.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_800AF0A4 -/* 0AFCA4 800AF0A4 8C820044 */ lw $v0, 0x44($a0) -/* 0AFCA8 800AF0A8 00000000 */ nop -/* 0AFCAC 800AF0AC 8C460000 */ lw $a2, ($v0) -/* 0AFCB0 800AF0B0 8C43000C */ lw $v1, 0xc($v0) -/* 0AFCB4 800AF0B4 90C50000 */ lbu $a1, ($a2) -/* 0AFCB8 800AF0B8 90C70001 */ lbu $a3, 1($a2) -/* 0AFCBC 800AF0BC 24AEFFFF */ addiu $t6, $a1, -1 -/* 0AFCC0 800AF0C0 000E7D40 */ sll $t7, $t6, 0x15 -/* 0AFCC4 800AF0C4 000FC403 */ sra $t8, $t7, 0x10 -/* 0AFCC8 800AF0C8 24E7FFFF */ addiu $a3, $a3, -1 -/* 0AFCCC 800AF0CC 00074940 */ sll $t1, $a3, 5 -/* 0AFCD0 800AF0D0 00185043 */ sra $t2, $t8, 1 -/* 0AFCD4 800AF0D4 A46A0004 */ sh $t2, 4($v1) -/* 0AFCD8 800AF0D8 A4600006 */ sh $zero, 6($v1) -/* 0AFCDC 800AF0DC A4600008 */ sh $zero, 8($v1) -/* 0AFCE0 800AF0E0 A469000A */ sh $t1, 0xa($v1) -/* 0AFCE4 800AF0E4 A478000C */ sh $t8, 0xc($v1) -/* 0AFCE8 800AF0E8 03E00008 */ jr $ra -/* 0AFCEC 800AF0EC A469000E */ sh $t1, 0xe($v1) - diff --git a/asm/non_matchings/particles/func_800AF0F0.s b/asm/non_matchings/particles/func_800AF0F0.s deleted file mode 100644 index 654ee335..00000000 --- a/asm/non_matchings/particles/func_800AF0F0.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_800AF0F0 -/* 0AFCF0 800AF0F0 8C820044 */ lw $v0, 0x44($a0) -/* 0AFCF4 800AF0F4 00000000 */ nop -/* 0AFCF8 800AF0F8 8C460000 */ lw $a2, ($v0) -/* 0AFCFC 800AF0FC 8C43000C */ lw $v1, 0xc($v0) -/* 0AFD00 800AF100 90C50000 */ lbu $a1, ($a2) -/* 0AFD04 800AF104 90C70001 */ lbu $a3, 1($a2) -/* 0AFD08 800AF108 24A5FFFF */ addiu $a1, $a1, -1 -/* 0AFD0C 800AF10C 0005C140 */ sll $t8, $a1, 5 -/* 0AFD10 800AF110 24E7FFFF */ addiu $a3, $a3, -1 -/* 0AFD14 800AF114 00074940 */ sll $t1, $a3, 5 -/* 0AFD18 800AF118 A4690006 */ sh $t1, 6($v1) -/* 0AFD1C 800AF11C A4780008 */ sh $t8, 8($v1) -/* 0AFD20 800AF120 A4780016 */ sh $t8, 0x16($v1) -/* 0AFD24 800AF124 A4780018 */ sh $t8, 0x18($v1) -/* 0AFD28 800AF128 A469001A */ sh $t1, 0x1a($v1) -/* 0AFD2C 800AF12C 03E00008 */ jr $ra -/* 0AFD30 800AF130 A478001C */ sh $t8, 0x1c($v1) - diff --git a/asm/non_matchings/particles/func_800AF134.s b/asm/non_matchings/particles/func_800AF134.s index a7a72116..d425e215 100644 --- a/asm/non_matchings/particles/func_800AF134.s +++ b/asm/non_matchings/particles/func_800AF134.s @@ -1,6 +1,6 @@ glabel func_800AF134 -/* 0AFD34 800AF134 3C0E800E */ lui $t6, %hi(D_800E2CE8) # $t6, 0x800e -/* 0AFD38 800AF138 8DCE2CE8 */ lw $t6, %lo(D_800E2CE8)($t6) +/* 0AFD34 800AF134 3C0E800E */ lui $t6, %hi(gParticlesAssetTableCount) # $t6, 0x800e +/* 0AFD38 800AF138 8DCE2CE8 */ lw $t6, %lo(gParticlesAssetTableCount)($t6) /* 0AFD3C 800AF13C 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 0AFD40 800AF140 00CE082A */ slt $at, $a2, $t6 /* 0AFD44 800AF144 AFBF001C */ sw $ra, 0x1c($sp) @@ -8,15 +8,15 @@ glabel func_800AF134 /* 0AFD4C 800AF14C AFA7002C */ sw $a3, 0x2c($sp) /* 0AFD50 800AF150 00003025 */ move $a2, $zero .L800AF154: -/* 0AFD54 800AF154 3C0F800E */ lui $t7, %hi(D_800E2CF4) # $t7, 0x800e -/* 0AFD58 800AF158 8DEF2CF4 */ lw $t7, %lo(D_800E2CF4)($t7) -/* 0AFD5C 800AF15C 3C18800E */ lui $t8, %hi(D_800E2CFC) # $t8, 0x800e +/* 0AFD54 800AF154 3C0F800E */ lui $t7, %hi(gParticleBehaviorsAssetTableCount) # $t7, 0x800e +/* 0AFD58 800AF158 8DEF2CF4 */ lw $t7, %lo(gParticleBehaviorsAssetTableCount)($t7) +/* 0AFD5C 800AF15C 3C18800E */ lui $t8, %hi(gParticleBehaviorsAssetTable) # $t8, 0x800e /* 0AFD60 800AF160 00AF082A */ slt $at, $a1, $t7 /* 0AFD64 800AF164 14200002 */ bnez $at, .L800AF170 /* 0AFD68 800AF168 00000000 */ nop /* 0AFD6C 800AF16C 00002825 */ move $a1, $zero .L800AF170: -/* 0AFD70 800AF170 8F182CFC */ lw $t8, %lo(D_800E2CFC)($t8) +/* 0AFD70 800AF170 8F182CFC */ lw $t8, %lo(gParticleBehaviorsAssetTable)($t8) /* 0AFD74 800AF174 0005C880 */ sll $t9, $a1, 2 /* 0AFD78 800AF178 84890008 */ lh $t1, 8($a0) /* 0AFD7C 800AF17C 03194021 */ addu $t0, $t8, $t9 diff --git a/asm/non_matchings/particles/func_800AF1E0.s b/asm/non_matchings/particles/func_800AF1E0.s index 2ed0e4f0..60a98f1c 100644 --- a/asm/non_matchings/particles/func_800AF1E0.s +++ b/asm/non_matchings/particles/func_800AF1E0.s @@ -1,12 +1,12 @@ glabel func_800AF1E0 -/* 0AFDE0 800AF1E0 3C0E800E */ lui $t6, %hi(D_800E2CF4) # $t6, 0x800e -/* 0AFDE4 800AF1E4 8DCE2CF4 */ lw $t6, %lo(D_800E2CF4)($t6) +/* 0AFDE0 800AF1E0 3C0E800E */ lui $t6, %hi(gParticleBehaviorsAssetTableCount) # $t6, 0x800e +/* 0AFDE4 800AF1E4 8DCE2CF4 */ lw $t6, %lo(gParticleBehaviorsAssetTableCount)($t6) /* 0AFDE8 800AF1E8 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 0AFDEC 800AF1EC 00AE082A */ slt $at, $a1, $t6 /* 0AFDF0 800AF1F0 10200026 */ beqz $at, .L800AF28C /* 0AFDF4 800AF1F4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0AFDF8 800AF1F8 3C0F800E */ lui $t7, %hi(D_800E2CFC) # $t7, 0x800e -/* 0AFDFC 800AF1FC 8DEF2CFC */ lw $t7, %lo(D_800E2CFC)($t7) +/* 0AFDF8 800AF1F8 3C0F800E */ lui $t7, %hi(gParticleBehaviorsAssetTable) # $t7, 0x800e +/* 0AFDFC 800AF1FC 8DEF2CFC */ lw $t7, %lo(gParticleBehaviorsAssetTable)($t7) /* 0AFE00 800AF200 4448F800 */ cfc1 $t0, $31 /* 0AFE04 800AF204 0005C080 */ sll $t8, $a1, 2 /* 0AFE08 800AF208 01F8C821 */ addu $t9, $t7, $t8 diff --git a/asm/non_matchings/particles/func_800AF29C.s b/asm/non_matchings/particles/func_800AF29C.s deleted file mode 100644 index ce4d0102..00000000 --- a/asm/non_matchings/particles/func_800AF29C.s +++ /dev/null @@ -1,97 +0,0 @@ -glabel func_800AF29C -/* 0AFE9C 800AF29C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0AFEA0 800AF2A0 3C18800E */ lui $t8, %hi(D_800E2CFC) # $t8, 0x800e -/* 0AFEA4 800AF2A4 8F182CFC */ lw $t8, %lo(D_800E2CFC)($t8) -/* 0AFEA8 800AF2A8 0005C880 */ sll $t9, $a1, 2 -/* 0AFEAC 800AF2AC AFBF001C */ sw $ra, 0x1c($sp) -/* 0AFEB0 800AF2B0 AFB00018 */ sw $s0, 0x18($sp) -/* 0AFEB4 800AF2B4 AFA70034 */ sw $a3, 0x34($sp) -/* 0AFEB8 800AF2B8 03194021 */ addu $t0, $t8, $t9 -/* 0AFEBC 800AF2BC 8D030000 */ lw $v1, ($t0) -/* 0AFEC0 800AF2C0 A4860008 */ sh $a2, 8($a0) -/* 0AFEC4 800AF2C4 A4870018 */ sh $a3, 0x18($a0) -/* 0AFEC8 800AF2C8 AC830000 */ sw $v1, ($a0) -/* 0AFECC 800AF2CC 87A9003A */ lh $t1, 0x3a($sp) -/* 0AFED0 800AF2D0 00808025 */ move $s0, $a0 -/* 0AFED4 800AF2D4 A489001A */ sh $t1, 0x1a($a0) -/* 0AFED8 800AF2D8 87AA003E */ lh $t2, 0x3e($sp) -/* 0AFEDC 800AF2DC A480001E */ sh $zero, 0x1e($a0) -/* 0AFEE0 800AF2E0 A48A001C */ sh $t2, 0x1c($a0) -/* 0AFEE4 800AF2E4 8C620000 */ lw $v0, ($v1) -/* 0AFEE8 800AF2E8 240C4000 */ li $t4, 16384 -/* 0AFEEC 800AF2EC 304B4000 */ andi $t3, $v0, 0x4000 -/* 0AFEF0 800AF2F0 11600008 */ beqz $t3, .L800AF314 -/* 0AFEF4 800AF2F4 304D0400 */ andi $t5, $v0, 0x400 -/* 0AFEF8 800AF2F8 44800000 */ mtc1 $zero, $f0 -/* 0AFEFC 800AF2FC A48C0004 */ sh $t4, 4($a0) -/* 0AFF00 800AF300 A0800006 */ sb $zero, 6($a0) -/* 0AFF04 800AF304 E480000C */ swc1 $f0, 0xc($a0) -/* 0AFF08 800AF308 E4800010 */ swc1 $f0, 0x10($a0) -/* 0AFF0C 800AF30C 10000039 */ b .L800AF3F4 -/* 0AFF10 800AF310 E4800014 */ swc1 $f0, 0x14($a0) -.L800AF314: -/* 0AFF14 800AF314 11A00024 */ beqz $t5, .L800AF3A8 -/* 0AFF18 800AF318 240E0400 */ li $t6, 1024 -/* 0AFF1C 800AF31C A2000006 */ sb $zero, 6($s0) -/* 0AFF20 800AF320 A60E0004 */ sh $t6, 4($s0) -/* 0AFF24 800AF324 3C0F800E */ lui $t7, %hi(D_800E2CF0) # $t7, 0x800e -/* 0AFF28 800AF328 8DEF2CF0 */ lw $t7, %lo(D_800E2CF0)($t7) -/* 0AFF2C 800AF32C 0006C080 */ sll $t8, $a2, 2 -/* 0AFF30 800AF330 01F8C821 */ addu $t9, $t7, $t8 -/* 0AFF34 800AF334 8F280000 */ lw $t0, ($t9) -/* 0AFF38 800AF338 3C058080 */ lui $a1, (0x80808080 >> 16) # lui $a1, 0x8080 -/* 0AFF3C 800AF33C 85020008 */ lh $v0, 8($t0) -/* 0AFF40 800AF340 240900FF */ li $t1, 255 -/* 0AFF44 800AF344 28410100 */ slti $at, $v0, 0x100 -/* 0AFF48 800AF348 10200003 */ beqz $at, .L800AF358 -/* 0AFF4C 800AF34C 34A58080 */ ori $a1, (0x80808080 & 0xFFFF) # ori $a1, $a1, 0x8080 -/* 0AFF50 800AF350 10000002 */ b .L800AF35C -/* 0AFF54 800AF354 A2020007 */ sb $v0, 7($s0) -.L800AF358: -/* 0AFF58 800AF358 A2090007 */ sb $t1, 7($s0) -.L800AF35C: -/* 0AFF5C 800AF35C 92040007 */ lbu $a0, 7($s0) -/* 0AFF60 800AF360 AFA30024 */ sw $v1, 0x24($sp) -/* 0AFF64 800AF364 00045080 */ sll $t2, $a0, 2 -/* 0AFF68 800AF368 0C01C327 */ jal allocate_from_main_pool_safe -/* 0AFF6C 800AF36C 01402025 */ move $a0, $t2 -/* 0AFF70 800AF370 8FA30024 */ lw $v1, 0x24($sp) -/* 0AFF74 800AF374 AE02000C */ sw $v0, 0xc($s0) -/* 0AFF78 800AF378 846B0014 */ lh $t3, 0x14($v1) -/* 0AFF7C 800AF37C 00000000 */ nop -/* 0AFF80 800AF380 A60B0010 */ sh $t3, 0x10($s0) -/* 0AFF84 800AF384 846C0016 */ lh $t4, 0x16($v1) -/* 0AFF88 800AF388 00000000 */ nop -/* 0AFF8C 800AF38C A60C0012 */ sh $t4, 0x12($s0) -/* 0AFF90 800AF390 846D0022 */ lh $t5, 0x22($v1) -/* 0AFF94 800AF394 00000000 */ nop -/* 0AFF98 800AF398 A60D0014 */ sh $t5, 0x14($s0) -/* 0AFF9C 800AF39C 846E0024 */ lh $t6, 0x24($v1) -/* 0AFFA0 800AF3A0 10000014 */ b .L800AF3F4 -/* 0AFFA4 800AF3A4 A60E0016 */ sh $t6, 0x16($s0) -.L800AF3A8: -/* 0AFFA8 800AF3A8 A6000004 */ sh $zero, 4($s0) -/* 0AFFAC 800AF3AC 846F0014 */ lh $t7, 0x14($v1) -/* 0AFFB0 800AF3B0 00000000 */ nop -/* 0AFFB4 800AF3B4 A60F000C */ sh $t7, 0xc($s0) -/* 0AFFB8 800AF3B8 84780016 */ lh $t8, 0x16($v1) -/* 0AFFBC 800AF3BC 00000000 */ nop -/* 0AFFC0 800AF3C0 A618000E */ sh $t8, 0xe($s0) -/* 0AFFC4 800AF3C4 84790018 */ lh $t9, 0x18($v1) -/* 0AFFC8 800AF3C8 00000000 */ nop -/* 0AFFCC 800AF3CC A6190010 */ sh $t9, 0x10($s0) -/* 0AFFD0 800AF3D0 84680022 */ lh $t0, 0x22($v1) -/* 0AFFD4 800AF3D4 00000000 */ nop -/* 0AFFD8 800AF3D8 A6080012 */ sh $t0, 0x12($s0) -/* 0AFFDC 800AF3DC 84690024 */ lh $t1, 0x24($v1) -/* 0AFFE0 800AF3E0 00000000 */ nop -/* 0AFFE4 800AF3E4 A6090014 */ sh $t1, 0x14($s0) -/* 0AFFE8 800AF3E8 846A0026 */ lh $t2, 0x26($v1) -/* 0AFFEC 800AF3EC 00000000 */ nop -/* 0AFFF0 800AF3F0 A60A0016 */ sh $t2, 0x16($s0) -.L800AF3F4: -/* 0AFFF4 800AF3F4 8FBF001C */ lw $ra, 0x1c($sp) -/* 0AFFF8 800AF3F8 8FB00018 */ lw $s0, 0x18($sp) -/* 0AFFFC 800AF3FC 03E00008 */ jr $ra -/* 0B0000 800AF400 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/particles/func_800AF52C.s b/asm/non_matchings/particles/func_800AF52C.s index 2b9201ce..27ba6785 100644 --- a/asm/non_matchings/particles/func_800AF52C.s +++ b/asm/non_matchings/particles/func_800AF52C.s @@ -19,9 +19,9 @@ glabel func_800AF52C .L800AF570: /* 0B0170 800AF570 30D90400 */ andi $t9, $a2, 0x400 /* 0B0174 800AF574 13200030 */ beqz $t9, .L800AF638 -/* 0B0178 800AF578 3C08800E */ lui $t0, %hi(D_800E2CF0) # $t0, 0x800e +/* 0B0178 800AF578 3C08800E */ lui $t0, %hi(gParticlesAssetTable) # $t0, 0x800e /* 0B017C 800AF57C 84490008 */ lh $t1, 8($v0) -/* 0B0180 800AF580 8D082CF0 */ lw $t0, %lo(D_800E2CF0)($t0) +/* 0B0180 800AF580 8D082CF0 */ lw $t0, %lo(gParticlesAssetTable)($t0) /* 0B0184 800AF584 00095080 */ sll $t2, $t1, 2 /* 0B0188 800AF588 010A5821 */ addu $t3, $t0, $t2 /* 0B018C 800AF58C 8D6C0000 */ lw $t4, ($t3) diff --git a/asm/non_matchings/particles/func_800AF6E4.s b/asm/non_matchings/particles/func_800AF6E4.s deleted file mode 100644 index c66a94e9..00000000 --- a/asm/non_matchings/particles/func_800AF6E4.s +++ /dev/null @@ -1,14 +0,0 @@ -glabel func_800AF6E4 -/* 0B02E4 800AF6E4 8C8E006C */ lw $t6, 0x6c($a0) -/* 0B02E8 800AF6E8 00057940 */ sll $t7, $a1, 5 -/* 0B02EC 800AF6EC 01CF1021 */ addu $v0, $t6, $t7 -/* 0B02F0 800AF6F0 84580004 */ lh $t8, 4($v0) -/* 0B02F4 800AF6F4 00000000 */ nop -/* 0B02F8 800AF6F8 33197FFF */ andi $t9, $t8, 0x7fff -/* 0B02FC 800AF6FC A4590004 */ sh $t9, 4($v0) -/* 0B0300 800AF700 8488001A */ lh $t0, 0x1a($a0) -/* 0B0304 800AF704 00000000 */ nop -/* 0B0308 800AF708 2509FFFF */ addiu $t1, $t0, -1 -/* 0B030C 800AF70C 03E00008 */ jr $ra -/* 0B0310 800AF710 A489001A */ sh $t1, 0x1a($a0) - diff --git a/asm/non_matchings/particles/func_800AF714.s b/asm/non_matchings/particles/func_800AF714.s index 6f9dbca7..e3295518 100644 --- a/asm/non_matchings/particles/func_800AF714.s +++ b/asm/non_matchings/particles/func_800AF714.s @@ -47,14 +47,14 @@ glabel func_800AF714 /* 0B03C0 800AF7C0 8662016E */ lh $v0, 0x16e($s3) /* 0B03C4 800AF7C4 00106140 */ sll $t4, $s0, 5 /* 0B03C8 800AF7C8 04410002 */ bgez $v0, .L800AF7D4 -/* 0B03CC 800AF7CC 3C18800E */ lui $t8, %hi(D_800E2CF0) # $t8, 0x800e +/* 0B03CC 800AF7CC 3C18800E */ lui $t8, %hi(gParticlesAssetTable) # $t8, 0x800e /* 0B03D0 800AF7D0 00021023 */ negu $v0, $v0 .L800AF7D4: /* 0B03D4 800AF7D4 2442FFE8 */ addiu $v0, $v0, -0x18 /* 0B03D8 800AF7D8 1840009E */ blez $v0, .L800AFA54 /* 0B03DC 800AF7DC 28410021 */ slti $at, $v0, 0x21 /* 0B03E0 800AF7E0 8E59006C */ lw $t9, 0x6c($s2) -/* 0B03E4 800AF7E4 8F182CF0 */ lw $t8, %lo(D_800E2CF0)($t8) +/* 0B03E4 800AF7E4 8F182CF0 */ lw $t8, %lo(gParticlesAssetTable)($t8) /* 0B03E8 800AF7E8 032C6821 */ addu $t5, $t9, $t4 /* 0B03EC 800AF7EC 85AE0008 */ lh $t6, 8($t5) /* 0B03F0 800AF7F0 3C0D800E */ lui $t5, %hi(D_800E2EC4) # $t5, 0x800e diff --git a/asm/non_matchings/particles/func_800B0698.s b/asm/non_matchings/particles/func_800B0698.s index e1ac4947..33f6d8ab 100644 --- a/asm/non_matchings/particles/func_800B0698.s +++ b/asm/non_matchings/particles/func_800B0698.s @@ -4,8 +4,8 @@ glabel func_800B0698 /* 0B12A0 800B06A0 AFB00018 */ sw $s0, 0x18($sp) /* 0B12A4 800B06A4 AFA40030 */ sw $a0, 0x30($sp) /* 0B12A8 800B06A8 84AF0008 */ lh $t7, 8($a1) -/* 0B12AC 800B06AC 3C0E800E */ lui $t6, %hi(D_800E2CF0) # $t6, 0x800e -/* 0B12B0 800B06B0 8DCE2CF0 */ lw $t6, %lo(D_800E2CF0)($t6) +/* 0B12AC 800B06AC 3C0E800E */ lui $t6, %hi(gParticlesAssetTable) # $t6, 0x800e +/* 0B12B0 800B06B0 8DCE2CF0 */ lw $t6, %lo(gParticlesAssetTable)($t6) /* 0B12B4 800B06B4 000FC080 */ sll $t8, $t7, 2 /* 0B12B8 800B06B8 01D8C821 */ addu $t9, $t6, $t8 /* 0B12BC 800B06BC 8F230000 */ lw $v1, ($t9) diff --git a/asm/non_matchings/particles/func_800B0BAC.s b/asm/non_matchings/particles/func_800B0BAC.s index e50ac921..b5d12023 100644 --- a/asm/non_matchings/particles/func_800B0BAC.s +++ b/asm/non_matchings/particles/func_800B0BAC.s @@ -3,8 +3,8 @@ glabel func_800B0BAC /* 0B17B0 800B0BB0 AFBF001C */ sw $ra, 0x1c($sp) /* 0B17B4 800B0BB4 AFB00018 */ sw $s0, 0x18($sp) /* 0B17B8 800B0BB8 84AF0008 */ lh $t7, 8($a1) -/* 0B17BC 800B0BBC 3C0E800E */ lui $t6, %hi(D_800E2CF0) # $t6, 0x800e -/* 0B17C0 800B0BC0 8DCE2CF0 */ lw $t6, %lo(D_800E2CF0)($t6) +/* 0B17BC 800B0BBC 3C0E800E */ lui $t6, %hi(gParticlesAssetTable) # $t6, 0x800e +/* 0B17C0 800B0BC0 8DCE2CF0 */ lw $t6, %lo(gParticlesAssetTable)($t6) /* 0B17C4 800B0BC4 000FC080 */ sll $t8, $t7, 2 /* 0B17C8 800B0BC8 01D8C821 */ addu $t9, $t6, $t8 /* 0B17CC 800B0BCC 8F280000 */ lw $t0, ($t9) diff --git a/asm/non_matchings/particles/func_800B1130.s b/asm/non_matchings/particles/func_800B1130.s index eab8171f..7132e24c 100644 --- a/asm/non_matchings/particles/func_800B1130.s +++ b/asm/non_matchings/particles/func_800B1130.s @@ -14,8 +14,8 @@ glabel func_800B1130 /* 0B1D3C 800B113C AFB00014 */ sw $s0, 0x14($sp) /* 0B1D40 800B1140 AFA40040 */ sw $a0, 0x40($sp) /* 0B1D44 800B1144 84AF0008 */ lh $t7, 8($a1) -/* 0B1D48 800B1148 3C0E800E */ lui $t6, %hi(D_800E2CF0) # $t6, 0x800e -/* 0B1D4C 800B114C 8DCE2CF0 */ lw $t6, %lo(D_800E2CF0)($t6) +/* 0B1D48 800B1148 3C0E800E */ lui $t6, %hi(gParticlesAssetTable) # $t6, 0x800e +/* 0B1D4C 800B114C 8DCE2CF0 */ lw $t6, %lo(gParticlesAssetTable)($t6) /* 0B1D50 800B1150 000FC080 */ sll $t8, $t7, 2 /* 0B1D54 800B1154 01D8C821 */ addu $t9, $t6, $t8 /* 0B1D58 800B1158 8F270000 */ lw $a3, ($t9) diff --git a/asm/non_matchings/particles/func_800B2260.s b/asm/non_matchings/particles/func_800B2260.s deleted file mode 100644 index 0dfcdd7d..00000000 --- a/asm/non_matchings/particles/func_800B2260.s +++ /dev/null @@ -1,44 +0,0 @@ -glabel func_800B2260 -/* 0B2E60 800B2260 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0B2E64 800B2264 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B2E68 800B2268 848E0004 */ lh $t6, 4($a0) -/* 0B2E6C 800B226C 00802825 */ move $a1, $a0 -/* 0B2E70 800B2270 31CF0400 */ andi $t7, $t6, 0x400 -/* 0B2E74 800B2274 11E0001E */ beqz $t7, .L800B22F0 -/* 0B2E78 800B2278 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B2E7C 800B227C 8C84000C */ lw $a0, 0xc($a0) -/* 0B2E80 800B2280 00000000 */ nop -/* 0B2E84 800B2284 1080001A */ beqz $a0, .L800B22F0 -/* 0B2E88 800B2288 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B2E8C 800B228C 90B80006 */ lbu $t8, 6($a1) -/* 0B2E90 800B2290 00001825 */ move $v1, $zero -/* 0B2E94 800B2294 1B000010 */ blez $t8, .L800B22D8 -/* 0B2E98 800B2298 00000000 */ nop -/* 0B2E9C 800B229C 00002025 */ move $a0, $zero -.L800B22A0: -/* 0B2EA0 800B22A0 8CB9000C */ lw $t9, 0xc($a1) -/* 0B2EA4 800B22A4 24630001 */ addiu $v1, $v1, 1 -/* 0B2EA8 800B22A8 03244021 */ addu $t0, $t9, $a0 -/* 0B2EAC 800B22AC 8D020000 */ lw $v0, ($t0) -/* 0B2EB0 800B22B0 24840004 */ addiu $a0, $a0, 4 -/* 0B2EB4 800B22B4 A440003A */ sh $zero, 0x3a($v0) -/* 0B2EB8 800B22B8 AC400070 */ sw $zero, 0x70($v0) -/* 0B2EBC 800B22BC 90A90006 */ lbu $t1, 6($a1) -/* 0B2EC0 800B22C0 00000000 */ nop -/* 0B2EC4 800B22C4 0069082A */ slt $at, $v1, $t1 -/* 0B2EC8 800B22C8 1420FFF5 */ bnez $at, .L800B22A0 -/* 0B2ECC 800B22CC 00000000 */ nop -/* 0B2ED0 800B22D0 8CA4000C */ lw $a0, 0xc($a1) -/* 0B2ED4 800B22D4 00000000 */ nop -.L800B22D8: -/* 0B2ED8 800B22D8 0C01C450 */ jal free_from_memory_pool -/* 0B2EDC 800B22DC AFA50018 */ sw $a1, 0x18($sp) -/* 0B2EE0 800B22E0 8FA50018 */ lw $a1, 0x18($sp) -/* 0B2EE4 800B22E4 00000000 */ nop -/* 0B2EE8 800B22E8 ACA0000C */ sw $zero, 0xc($a1) -/* 0B2EEC 800B22EC 8FBF0014 */ lw $ra, 0x14($sp) -.L800B22F0: -/* 0B2EF0 800B22F0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0B2EF4 800B22F4 03E00008 */ jr $ra -/* 0B2EF8 800B22F8 00000000 */ nop - diff --git a/asm/non_matchings/particles/func_800AE530.s b/asm/non_matchings/particles/init_particle_assets.s similarity index 81% rename from asm/non_matchings/particles/func_800AE530.s rename to asm/non_matchings/particles/init_particle_assets.s index 4508062b..0badad9a 100644 --- a/asm/non_matchings/particles/func_800AE530.s +++ b/asm/non_matchings/particles/init_particle_assets.s @@ -1,4 +1,4 @@ -glabel func_800AE530 +glabel init_particle_assets /* 0AF130 800AE530 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 0AF134 800AE534 AFBF002C */ sw $ra, 0x2c($sp) /* 0AF138 800AE538 AFB50028 */ sw $s5, 0x28($sp) @@ -10,11 +10,11 @@ glabel func_800AE530 /* 0AF150 800AE550 AFB00014 */ sw $s0, 0x14($sp) /* 0AF154 800AE554 0C01DB16 */ jal load_asset_section_from_rom /* 0AF158 800AE558 24040028 */ li $a0, 40 -/* 0AF15C 800AE55C 3C05800E */ lui $a1, %hi(D_800E2CE8) # $a1, 0x800e +/* 0AF15C 800AE55C 3C05800E */ lui $a1, %hi(gParticlesAssetTableCount) # $a1, 0x800e /* 0AF160 800AE560 2406FFFF */ li $a2, -1 -/* 0AF164 800AE564 3C12800E */ lui $s2, %hi(D_800E2CF0) # $s2, 0x800e -/* 0AF168 800AE568 26522CF0 */ addiu $s2, %lo(D_800E2CF0) # addiu $s2, $s2, 0x2cf0 -/* 0AF16C 800AE56C 24A52CE8 */ addiu $a1, %lo(D_800E2CE8) # addiu $a1, $a1, 0x2ce8 +/* 0AF164 800AE564 3C12800E */ lui $s2, %hi(gParticlesAssetTable) # $s2, 0x800e +/* 0AF168 800AE568 26522CF0 */ addiu $s2, %lo(gParticlesAssetTable) # addiu $s2, $s2, 0x2cf0 +/* 0AF16C 800AE56C 24A52CE8 */ addiu $a1, %lo(gParticlesAssetTableCount) # addiu $a1, $a1, 0x2ce8 /* 0AF170 800AE570 00067080 */ sll $t6, $a2, 2 /* 0AF174 800AE574 AE420000 */ sw $v0, ($s2) /* 0AF178 800AE578 ACA60000 */ sw $a2, ($a1) @@ -35,11 +35,11 @@ glabel func_800AE530 .L800AE5B0: /* 0AF1B0 800AE5B0 0C01DB16 */ jal load_asset_section_from_rom /* 0AF1B4 800AE5B4 24040029 */ li $a0, 41 -/* 0AF1B8 800AE5B8 3C05800E */ lui $a1, %hi(D_800E2CE8) # $a1, 0x800e -/* 0AF1BC 800AE5BC 24A52CE8 */ addiu $a1, %lo(D_800E2CE8) # addiu $a1, $a1, 0x2ce8 +/* 0AF1B8 800AE5B8 3C05800E */ lui $a1, %hi(gParticlesAssetTableCount) # $a1, 0x800e +/* 0AF1BC 800AE5BC 24A52CE8 */ addiu $a1, %lo(gParticlesAssetTableCount) # addiu $a1, $a1, 0x2ce8 /* 0AF1C0 800AE5C0 8CAB0000 */ lw $t3, ($a1) -/* 0AF1C4 800AE5C4 3C03800E */ lui $v1, %hi(D_800E2CEC) # $v1, 0x800e -/* 0AF1C8 800AE5C8 24632CEC */ addiu $v1, %lo(D_800E2CEC) # addiu $v1, $v1, 0x2cec +/* 0AF1C4 800AE5C4 3C03800E */ lui $v1, %hi(gParticlesAssets) # $v1, 0x800e +/* 0AF1C8 800AE5C8 24632CEC */ addiu $v1, %lo(gParticlesAssets) # addiu $v1, $v1, 0x2cec /* 0AF1CC 800AE5CC AC620000 */ sw $v0, ($v1) /* 0AF1D0 800AE5D0 1960000F */ blez $t3, .L800AE610 /* 0AF1D4 800AE5D4 00008825 */ move $s1, $zero @@ -62,10 +62,10 @@ glabel func_800AE530 /* 0AF210 800AE610 0C01DB16 */ jal load_asset_section_from_rom /* 0AF214 800AE614 2404002A */ li $a0, 42 /* 0AF218 800AE618 2406FFFF */ li $a2, -1 -/* 0AF21C 800AE61C 3C12800E */ lui $s2, %hi(D_800E2CF4) # $s2, 0x800e -/* 0AF220 800AE620 3C13800E */ lui $s3, %hi(D_800E2CFC) # $s3, 0x800e -/* 0AF224 800AE624 26732CFC */ addiu $s3, %lo(D_800E2CFC) # addiu $s3, $s3, 0x2cfc -/* 0AF228 800AE628 26522CF4 */ addiu $s2, %lo(D_800E2CF4) # addiu $s2, $s2, 0x2cf4 +/* 0AF21C 800AE61C 3C12800E */ lui $s2, %hi(gParticleBehaviorsAssetTableCount) # $s2, 0x800e +/* 0AF220 800AE620 3C13800E */ lui $s3, %hi(gParticleBehaviorsAssetTable) # $s3, 0x800e +/* 0AF224 800AE624 26732CFC */ addiu $s3, %lo(gParticleBehaviorsAssetTable) # addiu $s3, $s3, 0x2cfc +/* 0AF228 800AE628 26522CF4 */ addiu $s2, %lo(gParticleBehaviorsAssetTableCount) # addiu $s2, $s2, 0x2cf4 /* 0AF22C 800AE62C 0006C880 */ sll $t9, $a2, 2 /* 0AF230 800AE630 AE620000 */ sw $v0, ($s3) /* 0AF234 800AE634 AE460000 */ sw $a2, ($s2) @@ -87,8 +87,8 @@ glabel func_800AE530 /* 0AF26C 800AE66C 0C01DB16 */ jal load_asset_section_from_rom /* 0AF270 800AE670 2404002B */ li $a0, 43 /* 0AF274 800AE674 8E4E0000 */ lw $t6, ($s2) -/* 0AF278 800AE678 3C15800E */ lui $s5, %hi(D_800E2CF8) # $s5, 0x800e -/* 0AF27C 800AE67C 26B52CF8 */ addiu $s5, %lo(D_800E2CF8) # addiu $s5, $s5, 0x2cf8 +/* 0AF278 800AE678 3C15800E */ lui $s5, %hi(gParticleBehaviorsAssets) # $s5, 0x800e +/* 0AF27C 800AE67C 26B52CF8 */ addiu $s5, %lo(gParticleBehaviorsAssets) # addiu $s5, $s5, 0x2cf8 /* 0AF280 800AE680 19C00020 */ blez $t6, .L800AE704 /* 0AF284 800AE684 AEA20000 */ sw $v0, ($s5) /* 0AF288 800AE688 00008025 */ move $s0, $zero diff --git a/asm/non_matchings/printf/func_800B3E64.s b/asm/non_matchings/printf/func_800B3E64.s index 133b0468..048977fb 100644 --- a/asm/non_matchings/printf/func_800B3E64.s +++ b/asm/non_matchings/printf/func_800B3E64.s @@ -398,13 +398,13 @@ glabel func_800B3E64 /* 0B5080 800B4480 03E00008 */ jr $ra /* 0B5084 800B4484 27BD0090 */ addiu $sp, $sp, 0x90 -/* 0B5088 800B4488 3C03800E */ lui $v1, %hi(D_800E2CE8) # $v1, 0x800e -/* 0B508C 800B448C 8C632CE8 */ lw $v1, %lo(D_800E2CE8)($v1) -/* 0B5090 800B4490 3C0E800E */ lui $t6, %hi(D_800E2CF0) # $t6, 0x800e +/* 0B5088 800B4488 3C03800E */ lui $v1, %hi(gParticlesAssetTableCount) # $v1, 0x800e +/* 0B508C 800B448C 8C632CE8 */ lw $v1, %lo(gParticlesAssetTableCount)($v1) +/* 0B5090 800B4490 3C0E800E */ lui $t6, %hi(gParticlesAssetTable) # $t6, 0x800e /* 0B5094 800B4494 0083082A */ slt $at, $a0, $v1 /* 0B5098 800B4498 10200007 */ beqz $at, .L800B44B8 -/* 0B509C 800B449C 3C19800E */ lui $t9, %hi(D_800E2CF0) # $t9, 0x800e -/* 0B50A0 800B44A0 8DCE2CF0 */ lw $t6, %lo(D_800E2CF0)($t6) +/* 0B509C 800B449C 3C19800E */ lui $t9, %hi(gParticlesAssetTable) # $t9, 0x800e +/* 0B50A0 800B44A0 8DCE2CF0 */ lw $t6, %lo(gParticlesAssetTable)($t6) /* 0B50A4 800B44A4 00047880 */ sll $t7, $a0, 2 /* 0B50A8 800B44A8 01CFC021 */ addu $t8, $t6, $t7 /* 0B50AC 800B44AC 8F020000 */ lw $v0, ($t8) @@ -412,7 +412,7 @@ glabel func_800B3E64 /* 0B50B4 800B44B4 00000000 */ nop .L800B44B8: -/* 0B50B8 800B44B8 8F392CF0 */ lw $t9, %lo(D_800E2CF0)($t9) +/* 0B50B8 800B44B8 8F392CF0 */ lw $t9, %lo(gParticlesAssetTable)($t9) /* 0B50BC 800B44BC 00034080 */ sll $t0, $v1, 2 /* 0B50C0 800B44C0 03284821 */ addu $t1, $t9, $t0 /* 0B50C4 800B44C4 8D22FFFC */ lw $v0, -4($t1) @@ -421,12 +421,12 @@ glabel func_800B3E64 /* 0B50D0 800B44D0 00000000 */ nop /* 0B50D4 800B44D4 8C8E0000 */ lw $t6, ($a0) -/* 0B50D8 800B44D8 3C05800E */ lui $a1, %hi(D_800E2CE8) # $a1, 0x800e +/* 0B50D8 800B44D8 3C05800E */ lui $a1, %hi(gParticlesAssetTableCount) # $a1, 0x800e /* 0B50DC 800B44DC 25C30001 */ addiu $v1, $t6, 1 -/* 0B50E0 800B44E0 24A52CE8 */ addiu $a1, %lo(D_800E2CE8) # addiu $a1, $a1, 0x2ce8 +/* 0B50E0 800B44E0 24A52CE8 */ addiu $a1, %lo(gParticlesAssetTableCount) # addiu $a1, $a1, 0x2ce8 /* 0B50E4 800B44E4 AC830000 */ sw $v1, ($a0) /* 0B50E8 800B44E8 8CA20000 */ lw $v0, ($a1) -/* 0B50EC 800B44EC 3C19800E */ lui $t9, %hi(D_800E2CF0) # $t9, 0x800e +/* 0B50EC 800B44EC 3C19800E */ lui $t9, %hi(gParticlesAssetTable) # $t9, 0x800e /* 0B50F0 800B44F0 0062082A */ slt $at, $v1, $v0 /* 0B50F4 800B44F4 14200007 */ bnez $at, .L800B4514 /* 0B50F8 800B44F8 0062C023 */ subu $t8, $v1, $v0 @@ -438,7 +438,7 @@ glabel func_800B3E64 /* 0B510C 800B450C 1020FFFB */ beqz $at, .L800B44FC /* 0B5110 800B4510 0062C023 */ subu $t8, $v1, $v0 .L800B4514: -/* 0B5114 800B4514 8F392CF0 */ lw $t9, %lo(D_800E2CF0)($t9) +/* 0B5114 800B4514 8F392CF0 */ lw $t9, %lo(gParticlesAssetTable)($t9) /* 0B5118 800B4518 00034080 */ sll $t0, $v1, 2 /* 0B511C 800B451C 03284821 */ addu $t1, $t9, $t0 /* 0B5120 800B4520 8D220000 */ lw $v0, ($t1) @@ -446,12 +446,12 @@ glabel func_800B3E64 /* 0B5128 800B4528 00000000 */ nop /* 0B512C 800B452C 8C8E0000 */ lw $t6, ($a0) -/* 0B5130 800B4530 3C08800E */ lui $t0, %hi(D_800E2CF0) # $t0, 0x800e +/* 0B5130 800B4530 3C08800E */ lui $t0, %hi(gParticlesAssetTable) # $t0, 0x800e /* 0B5134 800B4534 25C3FFFF */ addiu $v1, $t6, -1 /* 0B5138 800B4538 04610009 */ bgez $v1, .L800B4560 /* 0B513C 800B453C AC830000 */ sw $v1, ($a0) -/* 0B5140 800B4540 3C02800E */ lui $v0, %hi(D_800E2CE8) # $v0, 0x800e -/* 0B5144 800B4544 24422CE8 */ addiu $v0, %lo(D_800E2CE8) # addiu $v0, $v0, 0x2ce8 +/* 0B5140 800B4540 3C02800E */ lui $v0, %hi(gParticlesAssetTableCount) # $v0, 0x800e +/* 0B5144 800B4544 24422CE8 */ addiu $v0, %lo(gParticlesAssetTableCount) # addiu $v0, $v0, 0x2ce8 .L800B4548: /* 0B5148 800B4548 8C580000 */ lw $t8, ($v0) /* 0B514C 800B454C 00000000 */ nop @@ -460,20 +460,20 @@ glabel func_800B3E64 /* 0B5158 800B4558 0720FFFB */ bltz $t9, .L800B4548 /* 0B515C 800B455C 03201825 */ move $v1, $t9 .L800B4560: -/* 0B5160 800B4560 8D082CF0 */ lw $t0, %lo(D_800E2CF0)($t0) +/* 0B5160 800B4560 8D082CF0 */ lw $t0, %lo(gParticlesAssetTable)($t0) /* 0B5164 800B4564 00034880 */ sll $t1, $v1, 2 /* 0B5168 800B4568 01095021 */ addu $t2, $t0, $t1 /* 0B516C 800B456C 8D420000 */ lw $v0, ($t2) /* 0B5170 800B4570 03E00008 */ jr $ra /* 0B5174 800B4574 00000000 */ nop -/* 0B5178 800B4578 3C03800E */ lui $v1, %hi(D_800E2CF4) # $v1, 0x800e -/* 0B517C 800B457C 8C632CF4 */ lw $v1, %lo(D_800E2CF4)($v1) -/* 0B5180 800B4580 3C0E800E */ lui $t6, %hi(D_800E2CFC) # $t6, 0x800e +/* 0B5178 800B4578 3C03800E */ lui $v1, %hi(gParticleBehaviorsAssetTableCount) # $v1, 0x800e +/* 0B517C 800B457C 8C632CF4 */ lw $v1, %lo(gParticleBehaviorsAssetTableCount)($v1) +/* 0B5180 800B4580 3C0E800E */ lui $t6, %hi(gParticleBehaviorsAssetTable) # $t6, 0x800e /* 0B5184 800B4584 0083082A */ slt $at, $a0, $v1 /* 0B5188 800B4588 10200007 */ beqz $at, .L800B45A8 -/* 0B518C 800B458C 3C19800E */ lui $t9, %hi(D_800E2CFC) # $t9, 0x800e -/* 0B5190 800B4590 8DCE2CFC */ lw $t6, %lo(D_800E2CFC)($t6) +/* 0B518C 800B458C 3C19800E */ lui $t9, %hi(gParticleBehaviorsAssetTable) # $t9, 0x800e +/* 0B5190 800B4590 8DCE2CFC */ lw $t6, %lo(gParticleBehaviorsAssetTable)($t6) /* 0B5194 800B4594 00047880 */ sll $t7, $a0, 2 /* 0B5198 800B4598 01CFC021 */ addu $t8, $t6, $t7 /* 0B519C 800B459C 8F020000 */ lw $v0, ($t8) @@ -481,7 +481,7 @@ glabel func_800B3E64 /* 0B51A4 800B45A4 00000000 */ nop .L800B45A8: -/* 0B51A8 800B45A8 8F392CFC */ lw $t9, %lo(D_800E2CFC)($t9) +/* 0B51A8 800B45A8 8F392CFC */ lw $t9, %lo(gParticleBehaviorsAssetTable)($t9) /* 0B51AC 800B45AC 00034080 */ sll $t0, $v1, 2 /* 0B51B0 800B45B0 03284821 */ addu $t1, $t9, $t0 /* 0B51B4 800B45B4 8D22FFFC */ lw $v0, -4($t1) @@ -490,12 +490,12 @@ glabel func_800B3E64 /* 0B51C0 800B45C0 00000000 */ nop /* 0B51C4 800B45C4 8C8E0000 */ lw $t6, ($a0) -/* 0B51C8 800B45C8 3C05800E */ lui $a1, %hi(D_800E2CF4) # $a1, 0x800e +/* 0B51C8 800B45C8 3C05800E */ lui $a1, %hi(gParticleBehaviorsAssetTableCount) # $a1, 0x800e /* 0B51CC 800B45CC 25C30001 */ addiu $v1, $t6, 1 -/* 0B51D0 800B45D0 24A52CF4 */ addiu $a1, %lo(D_800E2CF4) # addiu $a1, $a1, 0x2cf4 +/* 0B51D0 800B45D0 24A52CF4 */ addiu $a1, %lo(gParticleBehaviorsAssetTableCount) # addiu $a1, $a1, 0x2cf4 /* 0B51D4 800B45D4 AC830000 */ sw $v1, ($a0) /* 0B51D8 800B45D8 8CA20000 */ lw $v0, ($a1) -/* 0B51DC 800B45DC 3C19800E */ lui $t9, %hi(D_800E2CFC) # $t9, 0x800e +/* 0B51DC 800B45DC 3C19800E */ lui $t9, %hi(gParticleBehaviorsAssetTable) # $t9, 0x800e /* 0B51E0 800B45E0 0062082A */ slt $at, $v1, $v0 /* 0B51E4 800B45E4 14200007 */ bnez $at, .L800B4604 /* 0B51E8 800B45E8 0062C023 */ subu $t8, $v1, $v0 @@ -507,7 +507,7 @@ glabel func_800B3E64 /* 0B51FC 800B45FC 1020FFFB */ beqz $at, .L800B45EC /* 0B5200 800B4600 0062C023 */ subu $t8, $v1, $v0 .L800B4604: -/* 0B5204 800B4604 8F392CFC */ lw $t9, %lo(D_800E2CFC)($t9) +/* 0B5204 800B4604 8F392CFC */ lw $t9, %lo(gParticleBehaviorsAssetTable)($t9) /* 0B5208 800B4608 00034080 */ sll $t0, $v1, 2 /* 0B520C 800B460C 03284821 */ addu $t1, $t9, $t0 /* 0B5210 800B4610 8D220000 */ lw $v0, ($t1) @@ -515,12 +515,12 @@ glabel func_800B3E64 /* 0B5218 800B4618 00000000 */ nop /* 0B521C 800B461C 8C8E0000 */ lw $t6, ($a0) -/* 0B5220 800B4620 3C08800E */ lui $t0, %hi(D_800E2CFC) # $t0, 0x800e +/* 0B5220 800B4620 3C08800E */ lui $t0, %hi(gParticleBehaviorsAssetTable) # $t0, 0x800e /* 0B5224 800B4624 25C3FFFF */ addiu $v1, $t6, -1 /* 0B5228 800B4628 04610009 */ bgez $v1, .L800B4650 /* 0B522C 800B462C AC830000 */ sw $v1, ($a0) -/* 0B5230 800B4630 3C02800E */ lui $v0, %hi(D_800E2CF4) # $v0, 0x800e -/* 0B5234 800B4634 24422CF4 */ addiu $v0, %lo(D_800E2CF4) # addiu $v0, $v0, 0x2cf4 +/* 0B5230 800B4630 3C02800E */ lui $v0, %hi(gParticleBehaviorsAssetTableCount) # $v0, 0x800e +/* 0B5234 800B4634 24422CF4 */ addiu $v0, %lo(gParticleBehaviorsAssetTableCount) # addiu $v0, $v0, 0x2cf4 .L800B4638: /* 0B5238 800B4638 8C580000 */ lw $t8, ($v0) /* 0B523C 800B463C 00000000 */ nop @@ -529,7 +529,7 @@ glabel func_800B3E64 /* 0B5248 800B4648 0720FFFB */ bltz $t9, .L800B4638 /* 0B524C 800B464C 03201825 */ move $v1, $t9 .L800B4650: -/* 0B5250 800B4650 8D082CFC */ lw $t0, %lo(D_800E2CFC)($t0) +/* 0B5250 800B4650 8D082CFC */ lw $t0, %lo(gParticleBehaviorsAssetTable)($t0) /* 0B5254 800B4654 00034880 */ sll $t1, $v1, 2 /* 0B5258 800B4658 01095021 */ addu $t2, $t0, $t1 /* 0B525C 800B465C 8D420000 */ lw $v0, ($t2) diff --git a/include/structs.h b/include/structs.h index b6066a66..9841772d 100644 --- a/include/structs.h +++ b/include/structs.h @@ -481,6 +481,32 @@ typedef struct Object_40 { u8 unk71; } Object_40; +typedef struct Object_44_0 { + u8 unk0; + u8 unk1; +} Object_44_0; + +typedef struct Object_44_C { + u8 pad0[0x4]; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; + u8 pad10[0x6]; + s16 unk16; + s16 unk18; + s16 unk1A; + s16 unk1C; +} Object_44_C; + +typedef struct Object_44 { + Object_44_0 *unk0; + u8 pad4[8]; + Object_44_C *unkC; +} Object_44; + typedef struct Object_4C { void *unk0; u8 pad4[0xC]; @@ -599,11 +625,18 @@ typedef struct Object_64 { u8 unk1F3; } Object_64; -typedef struct Object_68{ +typedef struct Object_68 { u8 pad00[0x20]; s8 unk20; } Object_68; +/* Size: 0x20 bytes */ +typedef struct Object_6C { + u8 pad0[0x4]; + s16 unk4; + u8 pad6[0x1A]; +} Object_6C; + /* Size: 0x0630 bytes */ typedef struct Object { /* 0x0000 */ s16 y_rotation; @@ -615,7 +648,7 @@ typedef struct Object { /* 0x0010 */ f32 y_position; /* 0x0014 */ f32 z_position; /* 0x0018 */ s16 unk18; - /* 0x001A */ u16 unk1A; + /* 0x001A */ s16 unk1A; /* 0x001C */ f32 x_velocity; /* 0x0020 */ f32 y_velocity; /* 0x0024 */ f32 z_velocity; @@ -652,7 +685,7 @@ typedef struct Object { /* 0x0060 */ Object_60 *unk60; //player + 0x340 /* 0x0064 */ Object_64 *unk64; //player + 0x98 /* 0x0068 */ Object_68 **unk68; //player + 0x80 - /* 0x006C */ void *unk6C; //player + 0x370 + /* 0x006C */ Object_6C *unk6C; //player + 0x370 /* 0x0070 */ u32 unk70; /* 0x0074 */ u32 unk74; diff --git a/asm/non_matchings/memory/func_80071D30.s b/lib/asm/non_matchings/unknown_072930/func_80071D30.s similarity index 100% rename from asm/non_matchings/memory/func_80071D30.s rename to lib/asm/non_matchings/unknown_072930/func_80071D30.s diff --git a/asm/non_matchings/memory/func_80071E58.s b/lib/asm/non_matchings/unknown_072930/func_80071E58.s similarity index 100% rename from asm/non_matchings/memory/func_80071E58.s rename to lib/asm/non_matchings/unknown_072930/func_80071E58.s diff --git a/asm/non_matchings/memory/func_80071F80.s b/lib/asm/non_matchings/unknown_072930/func_80071F80.s similarity index 100% rename from asm/non_matchings/memory/func_80071F80.s rename to lib/asm/non_matchings/unknown_072930/func_80071F80.s diff --git a/asm/non_matchings/memory/func_800720DC.s b/lib/asm/non_matchings/unknown_072930/func_800720DC.s similarity index 100% rename from asm/non_matchings/memory/func_800720DC.s rename to lib/asm/non_matchings/unknown_072930/func_800720DC.s diff --git a/lib/src/mips1/unknown_072930.c b/lib/src/mips1/unknown_072930.c new file mode 100644 index 00000000..289845da --- /dev/null +++ b/lib/src/mips1/unknown_072930.c @@ -0,0 +1,7 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80071D30 */ + +GLOBAL_ASM("lib/asm/non_matchings/unknown_072930/func_80071D30.s") +GLOBAL_ASM("lib/asm/non_matchings/unknown_072930/func_80071E58.s") +GLOBAL_ASM("lib/asm/non_matchings/unknown_072930/func_80071F80.s") +GLOBAL_ASM("lib/asm/non_matchings/unknown_072930/func_800720DC.s") diff --git a/src/font.c b/src/font.c index 873767c0..13efaf43 100644 --- a/src/font.c +++ b/src/font.c @@ -44,9 +44,15 @@ s32 gDescPowsOf10[9] = { }; s8 D_800E3710[48] = { - 4, 0, 0, 0, 1, 2, 0, 1, 0, 2, 1, 0, 2, 0, 4, 0, - 0, 4, 1, -4, 1, 1, -4, 1, -2, 2, 1, -2, 1, -1, 4, 1, - -1, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + 4, FALSE, 0, FALSE, 1, + 2, FALSE, 1, FALSE, 2, + 1, FALSE, 2, FALSE, 4, + 0, FALSE, 4, TRUE, -4, + 1, TRUE, -4, TRUE, -2, + 2, TRUE, -2, TRUE, -1, + 4, TRUE, -1, TRUE, 0, + -1, 0, 0, 0, 0, // End of Data + 0, 0, 0, 0, 0, 0, 0, 0 }; OSDevMgr __osPiDevMgr = { 0, NULL, NULL, NULL, NULL, NULL, NULL }; @@ -60,25 +66,49 @@ s32 gNumberOfFonts; /* Size: 8 bytes */ typedef struct FontCharData { u8 unk0; - u8 unk1[7]; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; } FontCharData; /* Size: 0x400 bytes */ typedef struct FontData { - char name[0x28]; - u8 unk28[24]; - s16 unk40[32]; - TextureHeader *texturePointers[32]; - FontCharData unk100[96]; +/* 0x000 */ s32 unk0; +/* 0x004 */ char name[0x1C]; +/* 0x020 */ u16 unk20; +/* 0x022 */ u16 unk22; +/* 0x024 */ u16 unk24; +/* 0x026 */ u16 unk26; +/* 0x028 */ u8 unk28[24]; +/* 0x040 */ s16 unk40[32]; +/* 0x080 */ TextureHeader *texturePointers[32]; +/* 0x100 */ FontCharData unk100[96]; } FontData; FontData* gFonts; -/* Size: 0x28 bytes */ typedef struct unk8012A7E8_24 { u8 unk00; u8 unk01; - u8 pad02[0x1A]; + char* unk4; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15; + u8 unk16; + u8 unk17; + u8 unk18; + u8 unk19; struct unk8012A7E8_24* unk1C; } unk8012A7E8_24; @@ -143,7 +173,8 @@ s32 D_8012A7FC; /******************************/ - +void func_800C5B58(Gfx **dlist, s32 *arg1, s32 *arg2, s32 arg3); +void parse_string_with_number(unsigned char *input, char *output, s32 number); void func_800C4170(s32 arg0); #define unk8012A7E8_COUNT 8 @@ -314,7 +345,7 @@ void set_text_background_color(s32 red, s32 green, s32 blue, s32 alpha) { (*D_8012A7E8)[0].bgAlpha = alpha; } -void func_800C45A4(s32, unk8012A7E8*, s32, s32, f32); +void func_800C45A4(Gfx **dlist, unk8012A7E8 *arg1, u8 *text, s32 alignmentFlags, f32 arg4); // Unused? void func_800C4404(Gfx** displayList, char* text, s32 alignmentFlags) { @@ -347,7 +378,51 @@ void func_800C4510(Gfx** displayList, s32 arg1, s32 xpos, s32 ypos, char* text, } GLOBAL_ASM("asm/non_matchings/font/func_800C45A4.s") + +// Should be functionally equivalent. +#ifdef NON_MATCHING +s32 func_800C4DA0(u8 *text, s32 x, s32 font) { + s32 diffX, thisDiffX; + FontData *fontData; + FontCharData *fontCharData; + + if (text == NULL) { + return 0; + } + diffX = x; + if (font < 0) { + font = (*D_8012A7E8)[0].font; + } + fontData = &gFonts[font]; + while(*text != '\0') { + u8 ch = *text; + thisDiffX = diffX; + if ((ch < 0x21) || (ch >= 0x80)) { + if (ch == '\t') { // Tab character + diffX = (diffX + fontData->unk26) - (diffX % fontData->unk26); + } else { + diffX += fontData->unk24; + } + } else { + fontCharData = &fontData->unk100[(ch - 0x20) & 0xFF]; + if (fontCharData->unk0 != 0xFF) { + if (fontData->unk20 == 0) { + diffX += fontCharData->unk1; + } else { + diffX += fontData->unk20; + } + } + } + if (D_8012A7F0 != 0 && thisDiffX != diffX) { + diffX--; + } + text++; + } + return diffX - x; +} +#else GLOBAL_ASM("asm/non_matchings/font/func_800C4DA0.s") +#endif void func_800C4EDC(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { if (arg0 > 0 && arg0 < 8) { @@ -446,7 +521,79 @@ void func_800C510C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { } GLOBAL_ASM("asm/non_matchings/font/func_800C5168.s") -GLOBAL_ASM("asm/non_matchings/font/func_800C5494.s") + +// Unused +void func_800C5428(s32 arg0, unk8012A7E8_24 *arg1) { + unk8012A7E8 *temp; + unk8012A7E8_24 *temp_24; + unk8012A7E8_24 **temp_24_ptr; + + temp = &D_8012A7E8[arg0]; + temp_24_ptr = &temp->unk24; + temp_24 = temp->unk24; + while ((temp_24 != NULL) && (temp_24 != arg1)) { + temp_24_ptr = &temp_24->unk1C; + temp_24 = temp_24->unk1C; + } + if (temp_24 != NULL) { + *temp_24_ptr = temp_24->unk1C; + arg1->unk01 = 0xFF; + } +} + +void func_800C5494(s32 arg0) { + unk8012A7E8 *temp; + unk8012A7E8_24 *temp_24, *temp_24_2; + + temp = &D_8012A7E8[arg0]; + temp_24 = temp->unk24; + if (temp_24 != NULL) { + temp_24_2 = temp_24; // This seems redundant. + while (temp_24_2 != NULL) { + temp_24_2->unk01 = 0xFF; + temp_24_2 = temp_24_2->unk1C; + } + temp->unk24 = NULL; + } +} + +typedef struct unk800C54E8 { + u8 pad0[0xC]; + s16 unkC; + s16 unkE; + u8 pad10[9]; + u8 unk19; +} unk800C54E8; + +// Unused +void func_800C54E8(s32 arg0, unk800C54E8 *arg1, s32 arg2, s32 arg3, s32 arg4) { + FontData *fontData; + unk8012A7E8 *temp; + + temp = &D_8012A7E8[arg0]; + + if(arg1 != NULL){ + if (arg1->unk19 != 0xFF) { + fontData = &gFonts[arg1->unk19]; + if(arg4 != 4) { + switch(arg4) { + case 1: + arg3 *= fontData->unk22; + break; + case 2: + arg3 *= (temp->unkE / fontData->unk22) * fontData->unk22; + break; + } + arg1->unkC += arg2; + arg1->unkE += arg3; + return; + } + arg1->unkC = 0; + arg1->unkE = 0; + return; + } + } +} void func_800C55F4(s32 arg0) { (*D_8012A7E8)[arg0].unk1E |= 0x8000; @@ -554,7 +701,66 @@ void render_fill_rectangle(Gfx **dlist, s32 ulx, s32 uly, s32 lrx, s32 lry) { } } -GLOBAL_ASM("asm/non_matchings/font/func_800C5B58.s") +void func_800C5B58(Gfx **dlist, s32 *arg1, s32 *arg2, s32 arg3) { + unk8012A7E8 *temp; + unk8012A7E8_24 *temp_24; + s32 i; + s32 x0, x1; + char sp6C[256]; + s32 y0, y1; + + temp = &D_8012A7E8[arg3]; + + if (temp->unk13 != 0) { + gSPDisplayList((*dlist)++, &D_800E3690) + gDkrDmaDisplayList((*dlist)++, ((u8*)&D_800E36C8[1]) + 0x80000000, 2) + gDPSetEnvColor((*dlist)++, 0, 0, 0, 0) + if ((temp->unk8 - temp->unk4) < 10 || (temp->unkA - temp->unk6) < 10) { + render_fill_rectangle(dlist, temp->unk4 - 2, temp->unk6 - 2, temp->unk8 + 2, temp->unkA + 2); + } else { + render_fill_rectangle(dlist, temp->unk4 - 2, temp->unk6 + 2, temp->unk4 + 2, temp->unkA - 2); + render_fill_rectangle(dlist, temp->unk4 - 2, temp->unk6 - 2, temp->unk8 + 2, temp->unk6 + 2); + render_fill_rectangle(dlist, temp->unk8 - 2, temp->unk6 + 2, temp->unk8 + 2, temp->unkA - 2); + render_fill_rectangle(dlist, temp->unk4 - 2, temp->unkA - 2, temp->unk8 + 2, temp->unkA + 2); + } + gDPPipeSync((*dlist)++) + gDPSetEnvColor((*dlist)++, temp->unk10, temp->unk11, temp->unk12, temp->unk13) + for (i = 0; D_800E3710[i] >= 0; i += 5) { + x0 = D_800E3710[i] + temp->unk4; + y0 = (D_800E3710[i + 1]) ? D_800E3710[i + 2] + temp->unkA : D_800E3710[i + 2] + temp->unk6; + x1 = temp->unk8 - D_800E3710[i]; + y1 = (D_800E3710[i + 3]) ? D_800E3710[i + 4] + temp->unkA : D_800E3710[i + 4] + temp->unk6; + render_fill_rectangle(dlist, x0, y0, x1, y1); + } + gDPPipeSync((*dlist)++) + } + if (arg1 != NULL && arg2 != NULL) { + if (!D_800E36E8) { + func_8009E9A0(); + D_800E36E8 = 1; + } + D_8012A7F4 = 2; + func_8009E9B0(temp, dlist, arg1, arg2); + } + temp_24 = temp->unk24; + while (temp_24 != NULL) { + temp->xpos = temp_24->unk8 + temp_24->unkC; + temp->ypos = temp_24->unkA + temp_24->unkE; + temp->colorRed = temp_24->unk10; + temp->colorGreen = temp_24->unk11; + temp->colorBlue = temp_24->unk12; + temp->colorAlpha = temp_24->unk13; + temp->bgRed = temp_24->unk14; + temp->bgGreen = temp_24->unk15; + temp->bgBlue = temp_24->unk16; + temp->bgAlpha = temp_24->unk17; + temp->opacity = temp_24->unk18; + temp->font = temp_24->unk19; + parse_string_with_number(temp_24->unk4, &sp6C, temp_24->unk01); + func_800C45A4(dlist, temp, &sp6C, 0, 1.0f); + temp_24 = temp_24->unk1C; + } +} /** * Takes in a string and a number, and replaces each instance of the diff --git a/src/memory.c b/src/memory.c index ce718435..cf6009cd 100644 --- a/src/memory.c +++ b/src/memory.c @@ -73,7 +73,7 @@ s32 D_801235C4; /* Size: 0x8 bytes */ typedef struct FreeQueueSlot { void *dataAddress; - s8 unk4; + u8 unk4; } FreeQueueSlot; FreeQueueSlot gFreeQueue[256]; @@ -323,7 +323,29 @@ void free_from_memory_pool(void *data) { func_8006F53C(sp1C); } -GLOBAL_ASM("asm/non_matchings/memory/func_80071198.s") +/** + * Frees all the addresses in the free queue. + */ +void clear_free_queue(void) { + s32 i; + s32 *sp28; + + sp28 = func_8006F510(); + + for(i = 0; i < gFreeQueueCount;) { + gFreeQueue[i].unk4--; + if (gFreeQueue[i].unk4 == 0) { + free_slot_containing_address(gFreeQueue[i].dataAddress); + gFreeQueue[i].dataAddress = gFreeQueue[gFreeQueueCount - 1].dataAddress; + gFreeQueue[i].unk4 = gFreeQueue[gFreeQueueCount - 1].unk4; + gFreeQueueCount--; + } else { + i++; + } + } + + func_8006F53C(sp28); +} #ifdef NON_MATCHING void free_slot_containing_address(u8 *address) { @@ -627,9 +649,33 @@ void render_memory_color_tags(void) { render_printf("ORANGE %d\n\n", get_memory_color_tag_count(COLOR_TAG_ORANGE)); } +#ifdef NON_MATCHING + +// Unused. Does nothing? +void func_80071C74(void) { + s32 i, flags; + MemoryPool *pool; + MemoryPoolSlot *slot; + + for(i = 0; i <= gNumberOfMemoryPools; i++) { + pool = &gMemoryPools[i]; + slot = &pool->slots[0]; + while(slot->nextIndex != -1) { + if(slot->flags) { // I don't know how to get this to appear. + + } + slot = &pool->slots[slot->nextIndex]; + } + } +} +#else GLOBAL_ASM("asm/non_matchings/memory/func_80071C74.s") -GLOBAL_ASM("asm/non_matchings/memory/func_80071CE8.s") -GLOBAL_ASM("asm/non_matchings/memory/func_80071D30.s") -GLOBAL_ASM("asm/non_matchings/memory/func_80071E58.s") -GLOBAL_ASM("asm/non_matchings/memory/func_80071F80.s") -GLOBAL_ASM("asm/non_matchings/memory/func_800720DC.s") +#endif + +// Unused. Does nothing? +void func_80071CE8(void) { + s32 i; + for(i = gNumberOfMemoryPools; i != -1; i--) { + // Nothing here. There might've been a printf or something similar. + } +} diff --git a/src/particles.c b/src/particles.c index f82fc3bf..360557f0 100644 --- a/src/particles.c +++ b/src/particles.c @@ -3,6 +3,8 @@ #include "types.h" #include "macros.h" +#include "structs.h" +#include "asset_sections.h" /************ .rodata ************/ @@ -33,6 +35,68 @@ const char D_800E8B44[] = "\nError :: particle %x is not indexed correctly in tr /*********************************/ +/* Size: 0xA0 bytes */ +typedef struct ParticleBehavior { + s32 flags; + f32 unk4; + f32 unk8; + f32 unkC; + u8 pad10[4]; + s16 unk14; + s16 unk16; + s16 unk18; + s16 unk1A; + s16 unk1C; + s16 unk1E; + s16 unk20; + s16 unk22; + s16 unk24; + s16 unk26; + u8 pad28[0x74]; + s32 *unk9C; +} ParticleBehavior; + +typedef struct unk800AF29C_C_4000 { + f32 unkC; + f32 unk10; + f32 unk14; +} unk800AF29C_C_4000; + +typedef struct unk800AF29C_C_400 { + s32 *unkC; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; +} unk800AF29C_C_400; + +typedef struct unk800AF29C_C { + s16 unkC; + s16 unkE; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; +} unk800AF29C_C; + +typedef struct unk800AF29C { + ParticleBehavior *unk0; + s16 unk4; + u8 unk6; + u8 unk7; + s16 unk8; + s16 unkA; + union { + unk800AF29C_C_4000 unkC_4000; + unk800AF29C_C_400 unkC_400; + unk800AF29C_C unkC; + }; + s16 unk18; + s16 unk1A; + s16 unk1C; + s16 unk1E; +} unk800AF29C; + /************ .data ************/ // I woundn't be suprised if most of these zeroes are really just null pointers. @@ -54,19 +118,31 @@ s32 *D_800E2CD8 = NULL; s32 D_800E2CDC = 0; s32 *D_800E2CE0 = NULL; s32 *D_800E2CE4 = NULL; -s32 D_800E2CE8 = 0; -s32 *D_800E2CEC = NULL; -s32 *D_800E2CF0 = NULL; -s32 D_800E2CF4 = 0; -s32 *D_800E2CF8 = NULL; -s32 *D_800E2CFC = NULL; +s32 gParticlesAssetTableCount = 0; +s32 *gParticlesAssets = NULL; + +typedef struct unk800E2CF0 { + u8 pad0[8]; + s16 unk8; +} unk800E2CF0; + +unk800E2CF0 **gParticlesAssetTable = NULL; +s32 gParticleBehaviorsAssetTableCount = 0; +s32 *gParticleBehaviorsAssets = NULL; +ParticleBehavior **gParticleBehaviorsAssetTable = NULL; s32 D_800E2D00[2] = { 0, 0 }; -/* Size: 0x10 bytes, might just be an array? */ +/* Size: 0x10 bytes */ typedef struct unk800E2D08 { s16 unk0, unk2, unk4, unk6, unk8, unkA, unkC, unkE; } unk800E2D08; +/* Size: 6 bytes */ +typedef struct unk800E2D58 { + s16 unk0, unk2, unk4; +} unk800E2D58; + +// Are these just Triangles? unk800E2D08 D_800E2D08[5] = { { 0x4000, 0x0102, 0x0100, 0x0000, 0x0000, 0x01E0, 0x0100, 0x01E0 }, { 0x4000, 0x0203, 0x0100, 0x0000, 0x0100, 0x01E0, 0x01E0, 0x01E0 }, @@ -75,53 +151,38 @@ unk800E2D08 D_800E2D08[5] = { { 0x4000, 0x0103, 0x0100, 0x0000, 0x0000, 0x01E0, 0x01E0, 0x01E0 } }; -// This might be a different struct/type -unk800E2D08 D_800E2D58[2] = { - { 0x0000, 0x01FF, 0x01FF, 0x0000, 0x01FF, 0x01FF, 0x0000, 0x0000 }, - { 0x01FF, 0x0000, 0x0000, 0x01FF, 0x0000, 0x01FF, 0x01FF, 0x0000 } +unk800E2D58 D_800E2D58[5] = { + { 0x0000, 0x01FF, 0x01FF }, + { 0x0000, 0x01FF, 0x01FF }, + { 0x0000, 0x0000, 0x01FF }, + { 0x0000, 0x0000, 0x01FF }, + { 0x0000, 0x01FF, 0x01FF }, }; -/* Size: 0x40 bytes, might just be an array? */ -typedef struct unk800E2D78 { - s16 unk0, unk2, unk4, unk6, unk8, unkA, unkC, unkE; - s16 unk10, unk12, unk14, unk16, unk18, unk1A, unk1C, unk1E; - s16 unk20, unk22, unk24, unk26, unk28, unk2A, unk2C, unk2E; - s16 unk30, unk32, unk34, unk36, unk38, unk3A, unk3C, unk3E; -} unk800E2D78; - -unk800E2D78 D_800E2D78[2] = { - { - 0x0000, 0x0105, 0x0000, 0x0000, 0x0080, 0x0000, 0x0080, 0x01FF, - 0x0000, 0x0504, 0x0000, 0x0000, 0x0080, 0x01FF, 0x0000, 0x01FF, - 0x0001, 0x0206, 0x0080, 0x0000, 0x0100, 0x0000, 0x0100, 0x01FF, - 0x0001, 0x0605, 0x0080, 0x0000, 0x0100, 0x01FF, 0x0080, 0x01FF - }, - { - 0x0002, 0x0307, 0x0100, 0x0000, 0x0180, 0x0000, 0x0180, 0x01FF, - 0x0002, 0x0706, 0x0100, 0x0000, 0x0180, 0x01FF, 0x0100, 0x01FF, - 0x0003, 0x0004, 0x0180, 0x0000, 0x0200, 0x0000, 0x0200, 0x01FF, - 0x0003, 0x0407, 0x0180, 0x0000, 0x0200, 0x01FF, 0x0180, 0x01FF - }, +// Are these just Triangles? +unk800E2D08 D_800E2D78[8] = { + { 0x0000, 0x0105, 0x0000, 0x0000, 0x0080, 0x0000, 0x0080, 0x01FF }, + { 0x0000, 0x0504, 0x0000, 0x0000, 0x0080, 0x01FF, 0x0000, 0x01FF }, + { 0x0001, 0x0206, 0x0080, 0x0000, 0x0100, 0x0000, 0x0100, 0x01FF }, + { 0x0001, 0x0605, 0x0080, 0x0000, 0x0100, 0x01FF, 0x0080, 0x01FF }, + { 0x0002, 0x0307, 0x0100, 0x0000, 0x0180, 0x0000, 0x0180, 0x01FF }, + { 0x0002, 0x0706, 0x0100, 0x0000, 0x0180, 0x01FF, 0x0100, 0x01FF }, + { 0x0003, 0x0004, 0x0180, 0x0000, 0x0200, 0x0000, 0x0200, 0x01FF }, + { 0x0003, 0x0407, 0x0180, 0x0000, 0x0200, 0x01FF, 0x0180, 0x01FF }, }; -/* Size: 0x18 bytes, might just be an array? */ -typedef struct unk800E2DF8 { - s16 unk0, unk2, unk4, unk6, unk8, unkA, unkC, unkE; - s16 unk10, unk12, unk14, unk16; -} unk800E2DF8; - -unk800E2DF8 D_800E2DF8[2] = { - { - 0x0000, 0x0000, 0x01FF, 0x0000, 0x01FF, 0x01FF, 0x0000, 0x0000, - 0x01FF, 0x0000, 0x01FF, 0x01FF - }, - { - 0x0000, 0x0000, 0x01FF, 0x0000, 0x01FF, 0x01FF, 0x0000, 0x0000, - 0x01FF, 0x0000, 0x01FF, 0x01FF - }, +unk800E2D58 D_800E2DF8[8] = { + { 0x0000, 0x0000, 0x01FF }, + { 0x0000, 0x01FF, 0x01FF }, + { 0x0000, 0x0000, 0x01FF }, + { 0x0000, 0x01FF, 0x01FF }, + { 0x0000, 0x0000, 0x01FF }, + { 0x0000, 0x01FF, 0x01FF }, + { 0x0000, 0x0000, 0x01FF }, + { 0x0000, 0x01FF, 0x01FF }, }; -f32 D_800E2E28 = 0.0f; +s16 D_800E2E28 = 0; f32 D_800E2E2C[8] = { 0.0f, 0.1, 0.2f, 0.3f, 0.45f, 0.525f, 0.6f, 0.8f @@ -136,11 +197,16 @@ s32 *D_800E2E60 = NULL; s32 D_800E2E64 = 0; s16 D_800E2E68[6] = { - 0, 8, 7, -4, -7, -4 + 0, 8, + 7, -4, + -7, -4, }; s16 D_800E2E74[8] = { - -6, 6, 6, 6, 6, -6, -6, -6 + -6, 6, + 6, 6, + 6, -6, + -6, -6, }; s32 D_800E2E84[16] = { @@ -264,39 +330,344 @@ void func_800AE438(void) { } void func_800AE490(void) { - if (D_800E2CEC != NULL) { - free_from_memory_pool(D_800E2CEC); - D_800E2CEC = NULL; + if (gParticlesAssets != NULL) { + free_from_memory_pool(gParticlesAssets); + gParticlesAssets = NULL; } - if (D_800E2CF0 != NULL) { - free_from_memory_pool(D_800E2CF0); - D_800E2CF0 = NULL; + if (gParticlesAssetTable != NULL) { + free_from_memory_pool(gParticlesAssetTable); + gParticlesAssetTable = NULL; } - if (D_800E2CF8 != NULL) { - free_from_memory_pool(D_800E2CF8); - D_800E2CF8 = NULL; + if (gParticleBehaviorsAssets != NULL) { + free_from_memory_pool(gParticleBehaviorsAssets); + gParticleBehaviorsAssets = NULL; } - if (D_800E2CFC != NULL) { - free_from_memory_pool(D_800E2CFC); - D_800E2CFC = NULL; + if (gParticleBehaviorsAssetTable != NULL) { + free_from_memory_pool(gParticleBehaviorsAssetTable); + gParticleBehaviorsAssetTable = NULL; } } -// Particles -GLOBAL_ASM("asm/non_matchings/particles/func_800AE530.s") +typedef struct unk800AF024 { + u8 pad0[4]; + s16 unk4; + s16 unk6; + Vertex *unk8; + Triangle *unkC; +} unk800AF024; + +#ifdef NON_MATCHING +void init_particle_assets(void) { + s32 i; + + func_800AE490(); + gParticlesAssetTable = load_asset_section_from_rom(ASSET_PARTICLES_TABLE); + + for(gParticlesAssetTableCount = -1; (s32)gParticlesAssetTable[gParticlesAssetTableCount + 1] != -1; gParticlesAssetTableCount++){ + } + gParticlesAssets = load_asset_section_from_rom(ASSET_PARTICLES); + for(i = 0; i < gParticlesAssetTableCount; i++) { + gParticlesAssetTable[i] = (u8*)gParticlesAssets + (s32)gParticlesAssetTable[i]; + } + gParticleBehaviorsAssetTable = load_asset_section_from_rom(ASSET_PARTICLE_BEHAVIORS_TABLE); + for(gParticleBehaviorsAssetTableCount = -1; (s32)gParticleBehaviorsAssetTable[gParticleBehaviorsAssetTableCount + 1] != -1; gParticleBehaviorsAssetTableCount++){ + } + gParticleBehaviorsAssets = load_asset_section_from_rom(ASSET_PARTICLE_BEHAVIORS); + for(i = 0; i < gParticleBehaviorsAssetTableCount; i++) { + gParticleBehaviorsAssetTable[i] = (u8*)gParticleBehaviorsAssets + (s32)gParticleBehaviorsAssetTable[i]; + if((s32)gParticleBehaviorsAssetTable[i]->unk9C != -1) { + gParticleBehaviorsAssetTable[i]->unk9C = get_misc_asset(gParticleBehaviorsAssetTable[i]->unk9C); + } + } +} + +#else +GLOBAL_ASM("asm/non_matchings/particles/init_particle_assets.s") +#endif + GLOBAL_ASM("asm/non_matchings/particles/func_800AE728.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AEE14.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AEEB8.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AEF88.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AF024.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AF0A4.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AF0F0.s") + +void func_800AEE14(unk800AF024 *arg0, Vertex **arg1, Triangle **arg2) { + s16 i; + Vertex *temp; + Triangle *tri; + s16 *temp2; + + arg0->unk4 = 3; + arg0->unk8 = *arg1; + temp = *arg1; + temp2 = &D_800E2E68; + for(i = 0; i < 3; i++) { + temp->x = temp2[0]; + temp->y = temp2[1]; + temp2 += 2; + temp->z = 0; + temp->r = 255; + temp->g = 255; + temp->b = 255; + temp->a = 255; + temp++; + } + *arg1 = temp; + arg0->unk6 = 1; + arg0->unkC = *arg2; + tri = *arg2; + tri->drawBackface = 0x40; + tri->vi0 = 2; + tri->vi1 = 1; + tri->vi2 = 0; + tri++; + *arg2 = tri; +} + +void func_800AEEB8(unk800AF024 *arg0, Vertex **arg1, Triangle **arg2) { + s16 i; + Vertex *temp; + Triangle *tri; + s16 *temp2; + + arg0->unk4 = 4; + arg0->unk8 = *arg1; + temp = *arg1; + temp2 = &D_800E2E74; + for(i = 0; i < 4; i++) { + temp->x = temp2[0]; + temp->y = temp2[1]; + temp2 += 2; + temp->z = 0; + temp->r = 255; + temp->g = 255; + temp->b = 255; + temp->a = 255; + temp++; + } + *arg1 = temp; + arg0->unk6 = 2; + arg0->unkC = *arg2; + tri = *arg2; + tri[0].drawBackface = 0x40; + tri[0].vi0 = 3; + tri[0].uv0.u = 0; + tri[0].vi1 = 1; + tri[0].uv1.v = 0; + tri[0].vi2 = 0; + tri[0].uv2.u = 0; + tri[0].uv2.v = 0; + tri[1].drawBackface = 0x40; + tri[1].vi0 = 3; + tri[1].uv0.u = 0; + tri[1].vi1 = 2; + tri[1].vi2 = 1; + tri[1].uv2.v = 0; + tri+=2; + *arg2 = tri; +} + +void func_800AEF88(unk800AF024 *arg0, Vertex **arg1, Triangle **arg2) { + s32 i; + Vertex *temp; + + arg0->unk4 = 6; + arg0->unk6 = 4; + arg0->unk8 = *arg1; + arg0->unkC = *arg2; + temp = *arg1; + for(i = 0; i < 6; i++) { + temp->r = 255; + temp->g = 255; + temp->b = 255; + temp->a = 255; + temp++; + } + *arg1 = temp; +} + +void func_800AF024(unk800AF024 *arg0, Vertex **arg1, Triangle **arg2) { + s32 i; + Vertex *temp; + + arg0->unk4 = 8; + arg0->unk6 = 8; + arg0->unk8 = *arg1; + arg0->unkC = *arg2; + temp = *arg1; + for(i = 0; i < 16; i++) { + temp->r = 255; + temp->g = 255; + temp->b = 255; + temp->a = 255; + temp++; + } + *arg1 = temp; +} + +void func_800AF0A4(Object *obj) { + Object_44 *temp_v0; + Object_44_C *temp_v1; + s16 temp_t1, temp_t8_0; + s32 temp_t8; + + temp_v0 = obj->unk44; + temp_v1 = temp_v0->unkC; + temp_t8_0 = (temp_v0->unk0->unk0 - 1) << 5; + temp_t8 = (s32)temp_t8_0; + temp_t1 = (temp_v0->unk0->unk1 - 1) << 5; + temp_v1->unk4 = temp_t8 >> 1; + temp_v1->unk6 = 0; + temp_v1->unk8 = 0; + temp_v1->unkA = temp_t1; + temp_v1->unkC = temp_t8; + temp_v1->unkE = temp_t1; +} + +void func_800AF0F0(Object *obj) { + Object_44 *temp_v0; + Object_44_C *temp_v1; + s16 temp_t8, temp_t1; + + temp_v0 = obj->unk44; + temp_v1 = temp_v0->unkC; + temp_t8 = (temp_v0->unk0->unk0 - 1) << 5; + temp_t1 = (temp_v0->unk0->unk1 - 1) << 5; + temp_v1->unk6 = temp_t1; + temp_v1->unk8 = temp_t8; + temp_v1->unk16 = temp_t8; + temp_v1->unk18 = temp_t8; + temp_v1->unk1A = temp_t1; + temp_v1->unk1C = temp_t8; +} + +void func_800AF29C(unk800AF29C *arg0, s32 arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5); + +typedef struct unk800B2260_C { + s32 unk0; + s32 unk4; + u8 pad8[0x32]; + s16 unk3A; + u8 pad3C[0x34]; + void *unk70; // unk800B2260 * + u8 unk74; +} unk800B2260_C; + +typedef struct unk800B2260 { + s32 unk0; + s16 unk4; + u8 unk6; + s16 unk8; + s16 unkA; + unk800B2260_C **unkC; +} unk800B2260; + +void func_800B2260(unk800B2260 *arg0); + +#ifdef NON_MATCHING +void func_800AF134(unk800B2260 *arg0, s32 arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5) { + if (arg2 >= gParticlesAssetTableCount) { + arg2 = 0; + } + if (arg1 >= gParticleBehaviorsAssetTableCount) { + arg1 = 0; + } + // Minor issue with these if statements. + if (arg0->unk8 == arg2) { + if(arg0->unk0 != gParticleBehaviorsAssetTable[arg1]) { + func_800B2260(arg0); + func_800AF29C(arg0, arg1, arg2, arg3, arg4, arg5); + } + } +} +#else GLOBAL_ASM("asm/non_matchings/particles/func_800AF134.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AF1E0.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AF29C.s") +#endif + +void func_800AF1E0(unk800AF29C *arg0, s32 arg1, s32 arg2) { + ParticleBehavior *temp_v0; + + if (arg1 < gParticleBehaviorsAssetTableCount) { + temp_v0 = (ParticleBehavior *)gParticleBehaviorsAssetTable[arg1]; + func_800AF29C(arg0, arg1, arg2, temp_v0->unk4, temp_v0->unk8, temp_v0->unkC); + } +} + +void func_800AF29C(unk800AF29C *arg0, s32 arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5) { + ParticleBehavior *temp_v1; + s32 temp_v0_2; + s32 flags; + + temp_v1 = gParticleBehaviorsAssetTable[arg1]; + arg0->unk8 = arg2; + arg0->unk18 = arg3; + arg0->unk0 = temp_v1; + arg0->unk1A = arg4; + arg0->unk1C = arg5; + arg0->unk1E = 0; + + flags = temp_v1->flags; + + if (flags & 0x4000) { + arg0->unk4 = 0x4000; + arg0->unk6 = 0; + arg0->unkC_4000.unkC = 0.0f; + arg0->unkC_4000.unk10 = 0.0f; + arg0->unkC_4000.unk14 = 0.0f; + } else if (flags & 0x400) { + arg0->unk6 = 0; + arg0->unk4 = 0x400; + temp_v0_2 = gParticlesAssetTable[arg2]->unk8; + if (temp_v0_2 < 0x100) { + arg0->unk7 = temp_v0_2; + } else { + arg0->unk7 = 0xFF; + } + arg0->unkC_400.unkC = (s32*)allocate_from_main_pool_safe(arg0->unk7 * 4, 0x80808080); + arg0->unkC_400.unk10 = temp_v1->unk14; + arg0->unkC_400.unk12 = temp_v1->unk16; + arg0->unkC_400.unk14 = temp_v1->unk22; + arg0->unkC_400.unk16 = temp_v1->unk24; + } else { + arg0->unk4 = 0; + arg0->unkC.unkC = temp_v1->unk14; + arg0->unkC.unkE = temp_v1->unk16; + arg0->unkC.unk10 = temp_v1->unk18; + arg0->unkC.unk12 = temp_v1->unk22; + arg0->unkC.unk14 = temp_v1->unk24; + arg0->unkC.unk16 = temp_v1->unk26; + } +} + +#ifdef NON_MATCHING + +// Should be functionally equivalent. +void func_800AF404(s32 arg0) { + s32 i; + + D_800E2E28 = (D_800E2E28 + (arg0 * 64)) & 0x1FF; + for(i = 0; i < 5; i++) { + D_800E2D08[i].unk6 = D_800E2D58[i].unk0 + D_800E2E28; + D_800E2D08[i].unkA = D_800E2D58[i].unk2 + D_800E2E28; + D_800E2D08[i].unkE = D_800E2D58[i].unk4 + D_800E2E28; + } + for(i = 0; i < 8; i++) { + D_800E2D78[i].unk6 = D_800E2DF8[i].unk0 + D_800E2E28; + D_800E2D78[i].unkA = D_800E2DF8[i].unk2 + D_800E2E28; + D_800E2D78[i].unkE = D_800E2DF8[i].unk4 + D_800E2E28; + } +} + +#else GLOBAL_ASM("asm/non_matchings/particles/func_800AF404.s") +#endif GLOBAL_ASM("asm/non_matchings/particles/func_800AF52C.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800AF6E4.s") + +void func_800AF6E4(Object *obj, s32 arg1) { + Object_6C *obj6C; + + obj6C = &obj->unk6C[arg1]; + + obj6C->unk4 &= 0x7FFF; + obj->unk1A--; +} + GLOBAL_ASM("asm/non_matchings/particles/func_800AF714.s") GLOBAL_ASM("asm/non_matchings/particles/func_800AFC3C.s") GLOBAL_ASM("asm/non_matchings/particles/func_800AFE5C.s") @@ -308,9 +679,49 @@ GLOBAL_ASM("asm/non_matchings/particles/func_800B1130.s") GLOBAL_ASM("asm/non_matchings/particles/func_800B1CB8.s") GLOBAL_ASM("asm/non_matchings/particles/func_800B2040.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B2260.s") +void func_800B2260(unk800B2260 *arg0) { + unk800B2260_C *temp_v0; + s32 i; + + if (arg0->unk4 & 0x400) { + if (arg0->unkC != NULL) { + for (i = 0; i < arg0->unk6; i++) { + temp_v0 = arg0->unkC[i]; + temp_v0->unk3A = 0; + temp_v0->unk70 = 0; + } + free_from_memory_pool(arg0->unkC); + arg0->unkC = NULL; + } + } +} + GLOBAL_ASM("asm/non_matchings/particles/func_800B22FC.s") + +#ifdef NON_MATCHING + +// Has regalloc issues. +void func_800B263C(unk800B2260_C *arg0) { + unk800B2260 *temp_v0; + s32 i; + + temp_v0 = (unk800B2260 *)arg0->unk70; + if (temp_v0 != NULL) { + if (temp_v0->unk6 != 0) { + if (arg0 == temp_v0->unkC[arg0->unk74]) { + temp_v0->unk6--; + for(i = arg0->unk74; i < temp_v0->unk6; i++) { + temp_v0->unkC[i] = temp_v0->unkC[i + 1]; + temp_v0->unkC[i]->unk74 = i; + } + } + } + } +} +#else GLOBAL_ASM("asm/non_matchings/particles/func_800B263C.s") +#endif + GLOBAL_ASM("asm/non_matchings/particles/func_800B26E0.s") GLOBAL_ASM("asm/non_matchings/particles/func_800B2FBC.s") diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index ce93f75c..fe31f610 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -890,7 +890,7 @@ void func_8006C3E0(void) { func_8000BF8C(); func_800B5E88(); func_800598D0(); - func_800AE530(); + init_particle_assets(); func_800AB1F0(); calc_and_alloc_heap_for_settings(); func_8006EFDC(); @@ -1006,7 +1006,7 @@ void render(void) { D_800DD3F0 = 0; } D_800DD38C = 0; - func_80071198(); + clear_free_queue(); if (!gIsPaused) { func_80066520(); }