From fb48afaf4bed38a4868ace3bda411c02ab9971c4 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Sat, 12 Dec 2020 17:12:45 +0900 Subject: [PATCH] 5 more --- asm/data/code_1000_len_60.data.s | 33 ----- .../code_303c0_len_3e10/func_80055050.s | 10 -- .../code_303c0_len_3e10/func_80055240.s | 44 ------ .../code_303c0_len_3e10/func_800552D0.s | 30 ---- .../code_303c0_len_3e10/func_800557CC.s | 39 ----- .../code_303c0_len_3e10/func_80055848.s | 43 ------ src/code_303c0_len_3e10.c | 140 ++++++++++++++++-- tools/splat.yaml | 1 + 8 files changed, 127 insertions(+), 213 deletions(-) delete mode 100644 asm/nonmatchings/code_303c0_len_3e10/func_80055050.s delete mode 100644 asm/nonmatchings/code_303c0_len_3e10/func_80055240.s delete mode 100644 asm/nonmatchings/code_303c0_len_3e10/func_800552D0.s delete mode 100644 asm/nonmatchings/code_303c0_len_3e10/func_800557CC.s delete mode 100644 asm/nonmatchings/code_303c0_len_3e10/func_80055848.s diff --git a/asm/data/code_1000_len_60.data.s b/asm/data/code_1000_len_60.data.s index 0399abb91b..bdf82f5c9b 100644 --- a/asm/data/code_1000_len_60.data.s +++ b/asm/data/code_1000_len_60.data.s @@ -340,36 +340,3 @@ glabel D_800785A0 glabel D_80078730 .word 0x3F800000, 0x3F8012EF, 0x3F8025E1, 0x3F8038D6, 0x3F804BCD, 0x3F805EC7, 0x3F8071C4, 0x3F8084C4, 0x3F8097C7, 0x3F80AACC, 0x3F80BDD4, 0x3F80D0DF, 0x3F80E3ED, 0x3F80F6FE, 0x3F810A12, 0x3F811D28, 0x3F813041, 0x3F81435D, 0x3F81567C, 0x3F81699E, 0x3F817CC2, 0x3F818FE9, 0x3F81A313, 0x3F81B640, 0x3F81C970, 0x3F81DCA3, 0x3F81EFD9, 0x3F820311, 0x3F82164C, 0x3F82298A, 0x3F823CCB, 0x3F82500F, 0x3F826356, 0x3F82769F, 0x3F8289EB, 0x3F829D3A, 0x3F82B08C, 0x3F82C3E1, 0x3F82D739, 0x3F82EA94, 0x3F82FDF1, 0x3F831151, 0x3F8324B4, 0x3F83381A, 0x3F834B83, 0x3F835EEF, 0x3F83725E, 0x3F8385D0, 0x3F839944, 0x3F83ACBB, 0x3F83C035, 0x3F83D3B2, 0x3F83E732, 0x3F83FAB5, 0x3F840E3B, 0x3F8421C4, 0x3F84354F, 0x3F8448DD, 0x3F845C6E, 0x3F847002, 0x3F848399, 0x3F849733, 0x3F84AAD0, 0x3F84BE70, 0x3F84D213, 0x3F84E5B9, 0x3F84F961, 0x3F850D0C, 0x3F8520BA, 0x3F85346B, 0x3F85481F, 0x3F855BD6, 0x3F856F90, 0x3F85834D, 0x3F85970D, 0x3F85AAD0, 0x3F85BE96, 0x3F85D25F, 0x3F85E62A, 0x3F85F9F8, 0x3F860DC9, 0x3F86219D, 0x3F863574, 0x3F86494E, 0x3F865D2B, 0x3F86710B, 0x3F8684EE, 0x3F8698D4, 0x3F86ACBD, 0x3F86C0A9, 0x3F86D498, 0x3F86E88A, 0x3F86FC7F, 0x3F871077, 0x3F872472, 0x3F87386F, 0x3F874C6F, 0x3F876072, 0x3F877478, 0x3F878881, 0x3F879C8D, 0x3F87B09C, 0x3F87C4AE, 0x3F87D8C3, 0x3F87ECDB, 0x3F8800F6, 0x3F881514, 0x3F882935, 0x3F883D59, 0x3F885180, 0x3F8865AA, 0x3F8879D7, 0x3F888E07, 0x3F88A23A, 0x3F88B670, 0x3F88CAA9, 0x3F88DEE5, 0x3F88F324, 0x3F890766, 0x3F891BAB, 0x3F892FF3, 0x3F89443E, 0x3F89588C, 0x3F896CDD, 0x3F898131, 0x3F899588, 0x3F89A9E2, 0x3F89BE3F, 0x3F800000, 0x3F89D29F, 0x3F946637, 0x3F9FC997, 0x3FAC0CB1, 0x3FB940B0, 0x3FC77811, 0x3FD6C6BB, 0x3FE7421D, 0x3FF9014B, 0x40060E8F, 0x4010582B, 0x401B6BE2, 0x40275936, 0x403430DA, 0x404204C9, 0x4050E860, 0x4060F077, 0x40723381, 0x408264D5, 0x408C667B, 0x40972CB6, 0x40A2C69C, 0x40AF446B, 0x40BCB7A0, 0x40CB3311, 0x40DACB04, 0x40EB954F, 0x40FDA974, 0x41089062, 0x41130B3F, 0x411E53FF, 0x3F800000, 0x3F7FDA28, 0x3F7FB456, 0x3F7F8E89, 0x3F7F68C2, 0x3F7F4300, 0x3F7F1D44, 0x3F7EF78E, 0x3F7ED1DD, 0x3F7EAC32, 0x3F7E868C, 0x3F7E60EC, 0x3F7E3B51, 0x3F7E15BC, 0x3F7DF02C, 0x3F7DCAA2, 0x3F7DA51E, 0x3F7D7F9F, 0x3F7D5A26, 0x3F7D34B2, 0x3F7D0F44, 0x3F7CE9DB, 0x3F7CC478, 0x3F7C9F1A, 0x3F7C79C2, 0x3F7C546F, 0x3F7C2F22, 0x3F7C09DA, 0x3F7BE498, 0x3F7BBF5B, 0x3F7B9A24, 0x3F7B74F2, 0x3F7B4FC6, 0x3F7B2A9F, 0x3F7B057E, 0x3F7AE062, 0x3F7ABB4C, 0x3F7A963B, 0x3F7A7130, 0x3F7A4C2A, 0x3F7A272A, 0x3F7A022F, 0x3F79DD3A, 0x3F79B84A, 0x3F799360, 0x3F796E7B, 0x3F79499C, 0x3F7924C2, 0x3F78FFED, 0x3F78DB1E, 0x3F78B654, 0x3F789190, 0x3F786CD1, 0x3F784818, 0x3F782364, 0x3F77FEB6, 0x3F77DA0D, 0x3F77B569, 0x3F7790CB, 0x3F776C32, 0x3F77479F, 0x3F772311, 0x3F76FE88, 0x3F76DA05, 0x3F76B587, 0x3F76910F, 0x3F766C9C, 0x3F76482E, 0x3F7623C6, 0x3F75FF63, 0x3F75DB06, 0x3F75B6AE, 0x3F75925B, 0x3F756E0E, 0x3F7549C6, 0x3F752583, 0x3F750146, 0x3F74DD0E, 0x3F74B8DB, 0x3F7494AE, 0x3F747086, 0x3F744C63, 0x3F742846, 0x3F74042E, 0x3F73E01C, 0x3F73BC0F, 0x3F739807, 0x3F737404, 0x3F735007, 0x3F732C0F, 0x3F73081C, 0x3F72E42F, 0x3F72C047, 0x3F729C64, 0x3F727887, 0x3F7254AF, 0x3F7230DC, 0x3F720D0F, 0x3F71E947, 0x3F71C584, 0x3F71A1C6, 0x3F717E0E, 0x3F715A5B, 0x3F7136AD, 0x3F711305, 0x3F70EF62, 0x3F70CBC4, 0x3F70A82B, 0x3F708498, 0x3F70610A, 0x3F703D81, 0x3F7019FD, 0x3F6FF67F, 0x3F6FD306, 0x3F6FAF92, 0x3F6F8C23, 0x3F6F68BA, 0x3F6F4556, 0x3F6F21F7, 0x3F6EFE9D, 0x3F6EDB49, 0x3F6EB7FA, 0x3F6E94B0, 0x3F6E716B, 0x3F6E4E2B, 0x3F6E2AF1, 0x3F6E07BC, 0x3F6DE48C, 0x3F800000, 0x3F6DC161, 0x3F5CCFA0, 0x3F4D1303, 0x3F3E7583, 0x3F30E2A9, 0x3F244774, 0x3F18923F, 0x3F0DB2A4, 0x3F03996B, 0x3EF470E1, 0x3EE30526, 0x3ED2D741, 0x3EC3D08B, 0x3EB5DBFB, 0x3EA8E607, 0x3E9CDC8A, 0x3E91AEA9, 0x3E874CBE, 0x3E7B5080, 0x3E69675D, 0x3E58C500, 0x3E495220, 0x3E3AF91B, 0x3E2DA5DB, 0x3E2145B8, 0x3E15C75E, 0x3E0B1AB6, 0x3E0130CE, 0x3DEFF78B, 0x3DDEDD71, 0x3DCEFB5A, 0x3DC03B0C, 0x3DB287E0, 0x3DA5CEA6, 0x3D99FD90, 0x3D8F0410, 0x3D84D2CB, 0x3D76B6F6, 0x3D6521C0, 0x3D54CD52, 0x3D45A2D5, 0x3D378D0A, 0x3D2A7839, 0x3D1E5213, 0x3D130992, 0x3D088EF0, 0x3CFDA6F5, 0x3CEB932C, 0x3CDAC934, 0x3CCB318C, 0x3CBCB65A, 0x3CAF435F, 0x3CA2C5C3, 0x3C972C06, 0x3C8C65F5, 0x3C826474, 0x3C7232F8, 0x3C60F025, 0x3C50E83A, 0x3C4204D2, 0x3C3430FF, 0x3C275980, 0x3C1B6C42, 0x3C10589D, 0x3C060F18, 0x3BF90275, 0x3BE7435B, 0x3BD6C80E, 0x3BC7797C, 0x3BB9422B, 0x3BAC0E26, 0x3B9FCB0C, 0x3B9467C1, 0x3B89D42A, 0x3B800183, 0x3B6DC413, 0x3B5CD229, 0x3B4D1572, 0x3B3E77CA, 0x3B30E4BA, 0x3B24494B, 0x3B18940B, 0x3B0DB45E, 0x3B039B00, 0x3AF473B0, 0x3AE307F8, 0x3AD2D9AC, 0x3AC3D2FE, 0x3AB5DE1E, 0x3AA8E7EB, 0x3A9CDE48, 0x3A91B06C, 0x3A874E3D, 0x3A7B5348, 0x3A696A67, 0x3A58C7AD, 0x3A495447, 0x3A3AFB69, 0x3A2DA799, 0x3A214763, 0x3A15C955, 0x3A0B1CA9, 0x3A01329B, 0x39EFFA23, 0x39DEDFF5, 0x39CEFD29, 0x39C03D9D, 0x39B28A81, 0x39A5D10A, 0x3999FFC6, 0x398F0541, 0x3984D410, 0x3976BADD, 0x39652533, 0x3954CEFA, 0x3945A566, 0x39379050, 0x392A7A3D, 0x391E5312, 0x39130AB4, 0x39089109, 0x38FDABE8, 0x38EB9814, 0x38DACBBE, 0x38CB316C, 0x38BCB903, 0x38AF47AC - -glabel D_80078DB0 -.word 0x00000000 - -glabel D_80078DB4 -.short 0x0000 - -glabel D_80078DB6 -.short 0x0000 - -glabel D_80078DB8 -.word 0x025E0350, 0x04640554, 0x00000000 - -glabel D_80078DC4 -.word 0x0264036E, 0x045A0000 - -glabel D_80078DCC -.word 0x025F0000 - -glabel D_80078DD0 -.word 0x0546065A, 0x075A0864, 0x00000000 - -glabel D_80078DDC -.word 0x05000600, 0x07000800, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000 - -glabel D_80078DF8 -.word 0x05640666, 0x0758086E, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000 - -glabel D_80078E14 -.word 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C00, 0x0D000E00, 0x0F001000, 0x00000000 - -glabel D_80078E30 -.word 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C64, 0x0D6A0E64, 0x0F64106E, 0x00000000, 0x00000000 diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055050.s b/asm/nonmatchings/code_303c0_len_3e10/func_80055050.s deleted file mode 100644 index dd88d59e19..0000000000 --- a/asm/nonmatchings/code_303c0_len_3e10/func_80055050.s +++ /dev/null @@ -1,10 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80055050 -/* 30450 80055050 24020001 */ addiu $v0, $zero, 1 -/* 30454 80055054 3C018008 */ lui $at, 0x8008 -/* 30458 80055058 A4228DB4 */ sh $v0, -0x724c($at) -/* 3045C 8005505C 3C018008 */ lui $at, 0x8008 -/* 30460 80055060 03E00008 */ jr $ra -/* 30464 80055064 AC208DB0 */ sw $zero, -0x7250($at) diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055240.s b/asm/nonmatchings/code_303c0_len_3e10/func_80055240.s deleted file mode 100644 index e2fcc6b414..0000000000 --- a/asm/nonmatchings/code_303c0_len_3e10/func_80055240.s +++ /dev/null @@ -1,44 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80055240 -/* 30640 80055240 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 30644 80055244 0080582D */ daddu $t3, $a0, $zero -/* 30648 80055248 00C0502D */ daddu $t2, $a2, $zero -/* 3064C 8005524C 00E0402D */ daddu $t0, $a3, $zero -/* 30650 80055250 0100382D */ daddu $a3, $t0, $zero -/* 30654 80055254 30A500FF */ andi $a1, $a1, 0xff -/* 30658 80055258 00051A00 */ sll $v1, $a1, 8 -/* 3065C 8005525C 3C04800A */ lui $a0, %hi(D_8009A640) -/* 30660 80055260 8C84A640 */ lw $a0, %lo(D_8009A640)($a0) -/* 30664 80055264 0060482D */ daddu $t1, $v1, $zero -/* 30668 80055268 10A00002 */ beqz $a1, .L80055274 -/* 3066C 8005526C AFBF0018 */ sw $ra, 0x18($sp) -/* 30670 80055270 346900FF */ ori $t1, $v1, 0xff -.L80055274: -/* 30674 80055274 00061600 */ sll $v0, $a2, 0x18 -/* 30678 80055278 04420001 */ bltzl $v0, .L80055280 -/* 3067C 8005527C 240A007F */ addiu $t2, $zero, 0x7f -.L80055280: -/* 30680 80055280 00081400 */ sll $v0, $t0, 0x10 -/* 30684 80055284 00021C03 */ sra $v1, $v0, 0x10 -/* 30688 80055288 28620961 */ slti $v0, $v1, 0x961 -/* 3068C 8005528C 14400003 */ bnez $v0, .L8005529C -/* 30690 80055290 2862F6A0 */ slti $v0, $v1, -0x960 -/* 30694 80055294 080154A9 */ j .L800552A4 -/* 30698 80055298 24070960 */ addiu $a3, $zero, 0x960 -.L8005529C: -/* 3069C 8005529C 54400001 */ bnel $v0, $zero, .L800552A4 -/* 306A0 800552A0 2407F6A0 */ addiu $a3, $zero, -0x960 -.L800552A4: -/* 306A4 800552A4 314200FF */ andi $v0, $t2, 0xff -/* 306A8 800552A8 00093400 */ sll $a2, $t1, 0x10 -/* 306AC 800552AC 00073C00 */ sll $a3, $a3, 0x10 -/* 306B0 800552B0 0160282D */ daddu $a1, $t3, $zero -/* 306B4 800552B4 00063403 */ sra $a2, $a2, 0x10 -/* 306B8 800552B8 00073C03 */ sra $a3, $a3, 0x10 -/* 306BC 800552BC 0C012DB6 */ jal func_8004B6D8 -/* 306C0 800552C0 AFA20010 */ sw $v0, 0x10($sp) -/* 306C4 800552C4 8FBF0018 */ lw $ra, 0x18($sp) -/* 306C8 800552C8 03E00008 */ jr $ra -/* 306CC 800552CC 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_800552D0.s b/asm/nonmatchings/code_303c0_len_3e10/func_800552D0.s deleted file mode 100644 index 0b82c43298..0000000000 --- a/asm/nonmatchings/code_303c0_len_3e10/func_800552D0.s +++ /dev/null @@ -1,30 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_800552D0 -/* 306D0 800552D0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 306D4 800552D4 0080482D */ daddu $t1, $a0, $zero -/* 306D8 800552D8 00C0402D */ daddu $t0, $a2, $zero -/* 306DC 800552DC 30A500FF */ andi $a1, $a1, 0xff -/* 306E0 800552E0 00051A00 */ sll $v1, $a1, 8 -/* 306E4 800552E4 3C04800A */ lui $a0, %hi(D_8009A640) -/* 306E8 800552E8 8C84A640 */ lw $a0, %lo(D_8009A640)($a0) -/* 306EC 800552EC 0060382D */ daddu $a3, $v1, $zero -/* 306F0 800552F0 10A00002 */ beqz $a1, .L800552FC -/* 306F4 800552F4 AFBF0018 */ sw $ra, 0x18($sp) -/* 306F8 800552F8 346700FF */ ori $a3, $v1, 0xff -.L800552FC: -/* 306FC 800552FC 00061600 */ sll $v0, $a2, 0x18 -/* 30700 80055300 04420001 */ bltzl $v0, .L80055308 -/* 30704 80055304 2408007F */ addiu $t0, $zero, 0x7f -.L80055308: -/* 30708 80055308 310200FF */ andi $v0, $t0, 0xff -/* 3070C 8005530C 00073400 */ sll $a2, $a3, 0x10 -/* 30710 80055310 35251000 */ ori $a1, $t1, 0x1000 -/* 30714 80055314 00063403 */ sra $a2, $a2, 0x10 -/* 30718 80055318 0000382D */ daddu $a3, $zero, $zero -/* 3071C 8005531C 0C012DB6 */ jal func_8004B6D8 -/* 30720 80055320 AFA20010 */ sw $v0, 0x10($sp) -/* 30724 80055324 8FBF0018 */ lw $ra, 0x18($sp) -/* 30728 80055328 03E00008 */ jr $ra -/* 3072C 8005532C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_800557CC.s b/asm/nonmatchings/code_303c0_len_3e10/func_800557CC.s deleted file mode 100644 index bbe2c23395..0000000000 --- a/asm/nonmatchings/code_303c0_len_3e10/func_800557CC.s +++ /dev/null @@ -1,39 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_800557CC -/* 30BCC 800557CC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 30BD0 800557D0 AFB10014 */ sw $s1, 0x14($sp) -/* 30BD4 800557D4 0080882D */ daddu $s1, $a0, $zero -/* 30BD8 800557D8 AFB20018 */ sw $s2, 0x18($sp) -/* 30BDC 800557DC 24120004 */ addiu $s2, $zero, 4 -/* 30BE0 800557E0 AFB00010 */ sw $s0, 0x10($sp) -/* 30BE4 800557E4 0000802D */ daddu $s0, $zero, $zero -/* 30BE8 800557E8 AFBF001C */ sw $ra, 0x1c($sp) -.L800557EC: -/* 30BEC 800557EC 3C028008 */ lui $v0, %hi(D_80078DB6) -/* 30BF0 800557F0 94428DB6 */ lhu $v0, %lo(D_80078DB6)($v0) -/* 30BF4 800557F4 16020005 */ bne $s0, $v0, .L8005580C -/* 30BF8 800557F8 0200202D */ daddu $a0, $s0, $zero -/* 30BFC 800557FC 0C01553A */ jal func_800554E8 -/* 30C00 80055800 0220282D */ daddu $a1, $s1, $zero -/* 30C04 80055804 08015606 */ j .L80055818 -/* 30C08 80055808 0040182D */ daddu $v1, $v0, $zero -.L8005580C: -/* 30C0C 8005580C 0C015529 */ jal func_800554A4 -/* 30C10 80055810 0200202D */ daddu $a0, $s0, $zero -/* 30C14 80055814 0040182D */ daddu $v1, $v0, $zero -.L80055818: -/* 30C18 80055818 14600004 */ bnez $v1, .L8005582C -/* 30C1C 8005581C 26100001 */ addiu $s0, $s0, 1 -/* 30C20 80055820 0212102B */ sltu $v0, $s0, $s2 -/* 30C24 80055824 1440FFF1 */ bnez $v0, .L800557EC -/* 30C28 80055828 00000000 */ nop -.L8005582C: -/* 30C2C 8005582C 8FBF001C */ lw $ra, 0x1c($sp) -/* 30C30 80055830 8FB20018 */ lw $s2, 0x18($sp) -/* 30C34 80055834 8FB10014 */ lw $s1, 0x14($sp) -/* 30C38 80055838 8FB00010 */ lw $s0, 0x10($sp) -/* 30C3C 8005583C 0060102D */ daddu $v0, $v1, $zero -/* 30C40 80055840 03E00008 */ jr $ra -/* 30C44 80055844 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055848.s b/asm/nonmatchings/code_303c0_len_3e10/func_80055848.s deleted file mode 100644 index 90e0ef7ec1..0000000000 --- a/asm/nonmatchings/code_303c0_len_3e10/func_80055848.s +++ /dev/null @@ -1,43 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80055848 -/* 30C48 80055848 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 30C4C 8005584C AFB10014 */ sw $s1, 0x14($sp) -/* 30C50 80055850 0080882D */ daddu $s1, $a0, $zero -/* 30C54 80055854 3C028008 */ lui $v0, %hi(D_80078DB6) -/* 30C58 80055858 94428DB6 */ lhu $v0, %lo(D_80078DB6)($v0) -/* 30C5C 8005585C 0000182D */ daddu $v1, $zero, $zero -/* 30C60 80055860 AFB20018 */ sw $s2, 0x18($sp) -/* 30C64 80055864 24120004 */ addiu $s2, $zero, 4 -/* 30C68 80055868 AFBF001C */ sw $ra, 0x1c($sp) -/* 30C6C 8005586C 12220012 */ beq $s1, $v0, .L800558B8 -/* 30C70 80055870 AFB00010 */ sw $s0, 0x10($sp) -/* 30C74 80055874 0060802D */ daddu $s0, $v1, $zero -.L80055878: -/* 30C78 80055878 16110005 */ bne $s0, $s1, .L80055890 -/* 30C7C 8005587C 00000000 */ nop -/* 30C80 80055880 0C0155C6 */ jal func_80055718 -/* 30C84 80055884 0220202D */ daddu $a0, $s1, $zero -/* 30C88 80055888 08015627 */ j .L8005589C -/* 30C8C 8005588C 0040182D */ daddu $v1, $v0, $zero -.L80055890: -/* 30C90 80055890 0C0155B4 */ jal func_800556D0 -/* 30C94 80055894 0200202D */ daddu $a0, $s0, $zero -/* 30C98 80055898 0040182D */ daddu $v1, $v0, $zero -.L8005589C: -/* 30C9C 8005589C 14600006 */ bnez $v1, .L800558B8 -/* 30CA0 800558A0 26100001 */ addiu $s0, $s0, 1 -/* 30CA4 800558A4 0212102B */ sltu $v0, $s0, $s2 -/* 30CA8 800558A8 1440FFF3 */ bnez $v0, .L80055878 -/* 30CAC 800558AC 00000000 */ nop -/* 30CB0 800558B0 3C018008 */ lui $at, %hi(D_80078DB6) -/* 30CB4 800558B4 A4318DB6 */ sh $s1, %lo(D_80078DB6)($at) -.L800558B8: -/* 30CB8 800558B8 8FBF001C */ lw $ra, 0x1c($sp) -/* 30CBC 800558BC 8FB20018 */ lw $s2, 0x18($sp) -/* 30CC0 800558C0 8FB10014 */ lw $s1, 0x14($sp) -/* 30CC4 800558C4 8FB00010 */ lw $s0, 0x10($sp) -/* 30CC8 800558C8 0060102D */ daddu $v0, $v1, $zero -/* 30CCC 800558CC 03E00008 */ jr $ra -/* 30CD0 800558D0 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/src/code_303c0_len_3e10.c b/src/code_303c0_len_3e10.c index bd4ce8232e..fbac937890 100644 --- a/src/code_303c0_len_3e10.c +++ b/src/code_303c0_len_3e10.c @@ -1,20 +1,24 @@ #include "common.h" #include "audio.h" -// TODO: rodata -extern u16 D_80078DB4; +s32* D_80078DB0 = 0; +u16 D_80078DB4 = 0; +u16 D_80078DB6 = 0; +s32 D_80078DB8[] = { 0x025E0350, 0x04640554, 0x00000000, }; +s32 D_80078DC4[] = { 0x0264036E, 0x045A0000, }; +s32 D_80078DCC[] = { 0x025F0000, }; +s32 D_80078DD0[] = { 0x0546065A, 0x075A0864, 0x00000000, }; +s32 D_80078DDC[] = { 0x05000600, 0x07000800, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000, }; +s32 D_80078DF8[] = { 0x05640666, 0x0758086E, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000, }; +s32 D_80078E14[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C00, 0x0D000E00, 0x0F001000, 0x00000000, }; +s32 D_80078E30[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C64, 0x0D6A0E64, 0x0F64106E, 0x00000000, 0x00000000, }; INCLUDE_ASM(void, "code_303c0_len_3e10", al_LoadBKHeaders, UnkAl19E0* arg0, ALHeap* arg1); -#ifdef NON_MATCHING -// Delay slot (probably needs rodata) void func_80055050(void) { D_80078DB4 = 1; D_80078DB0 = 0; } -#else -INCLUDE_ASM(void, "code_303c0_len_3e10", func_80055050, void); -#endif INCLUDE_ASM(void, "code_303c0_len_3e10", func_80055068, u32 arg0); @@ -35,9 +39,41 @@ INCLUDE_ASM(s32, "code_303c0_len_3e10", func_8005513C); INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800551E0); -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055240); +void func_80055240(s32 arg0, u8 arg1, s8 arg2, s16 arg3) { + UnkAl6CC* sym = D_8009A640; + s16 a1temp = arg1 * 256; -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800552D0); + if (a1temp != 0) { + a1temp |= 0xFF; + } + + if (arg2 < 0) { + arg2 = 0x7F; + } + + if (arg3 > 0x960) { + arg3 = 0x960; + } else if (arg3 < -0x960) { + arg3 = -0x960; + } + + func_8004B6D8(sym, arg0, a1temp, arg3, arg2); +} + +void func_800552D0(s32 arg0, u8 arg1, s8 arg2) { + UnkAl6CC* sym = D_8009A640; + s16 a1temp = arg1 * 256; + + if (a1temp != 0) { + a1temp |= 0xFF; + } + + if (arg2 < 0) { + arg2 = 0x7F; + } + + func_8004B6D8(sym, arg0 | 0x1000, a1temp, 0, arg2); +} INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055330); @@ -63,7 +99,7 @@ s32 func_80055464(s32 arg0, s32 arg1) { } } -s32 func_800554A4(s32 arg0, s32 arg1) { +s32 func_800554A4(s32 arg0) { s32 ret = func_80050C30(arg0); if (ret == 0) { @@ -149,8 +185,6 @@ s32 func_80055718(s32 arg0) { return ret; } -void func_80055848(s32); - void func_80055760(s32 arg0) { u32 i; s32 lim = 4; @@ -166,9 +200,51 @@ void func_80055760(s32 arg0) { func_80055848(arg0); } -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800557CC); +s32 func_800557CC(s32 arg0) { + u32 i; + s32 lim = 4; + s32 phi_v1; -INCLUDE_ASM(void, "code_303c0_len_3e10", func_80055848, s32 arg1); + for (i = 0; i < lim; i++) { + if (i == D_80078DB6) { + phi_v1 = func_800554E8(i, arg0); + } else { + phi_v1 = func_800554A4(i); + } + + if (phi_v1 != 0) { + break; + } + } + return phi_v1; +} + +s32 func_80055848(s32 arg0) { + s32 lim = 4; + s32 phi_v1 = 0; + + if (arg0 != D_80078DB6) { + u32 i; + + for (i = 0; i < lim; i++) { + if (i == arg0) { + phi_v1 = func_80055718(arg0); + } else { + phi_v1 = func_800556D0(i); + } + + if (phi_v1 != 0) { + break; + } + } + + if (phi_v1 == 0) { + D_80078DB6 = arg0; + } + } + + return phi_v1; +} INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800558D4); @@ -222,7 +298,43 @@ INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055DDC); INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055E48); +// needs rodata +#ifdef NON_MATCHING +s32* func_80055EB4(s32 arg0) { + s32* ret = NULL; + + switch(arg0) { + case 0: + ret = &D_80078DB8; + break; + case 1: + ret = &D_80078DC4; + break; + case 2: + ret = &D_80078DCC; + break; + case 3: + ret = &D_80078DD0; + break; + case 4: + ret = &D_80078DDC; + break; + case 5: + ret = &D_80078DF8; + break; + case 6: + ret = &D_80078E14; + break; + case 7: + ret = &D_80078E30; + break; + } + + return ret; +} +#else INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055EB4); +#endif INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055F58); diff --git a/tools/splat.yaml b/tools/splat.yaml index c2080b6bce..858cbd5958 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -206,6 +206,7 @@ segments: - [0x4a360, c, os/code_4a360_len_930] - [0x4ac90, c, os/code_4ac90_len_3910] - [0x4E5A0, data, code_1000_len_60] # data until world + - [0x541B0, .data, code_303c0_len_3e10] - [0x54250, .data, code_31650] - [0x542E0, data, code_31650] - [0x6B450, .data, world/world]