From cca87e34e035f975d2bfc4560b45a8e117d3a472 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Wed, 29 Jul 2020 09:30:04 -0500 Subject: [PATCH] Found handwritten asm files --- .../EntryPoint.s => entrypoint.s} | 13 +- asm/gzip.s | 15 ++ .../gzip_inflate_block.s} | 38 ++-- .../gzip_inflate_codes.s} | 40 ++-- .../gzip_inflate_dynamic.s} | 44 ++-- .../gzip_inflate_fixed.s} | 8 +- .../gzip_inflate_stored.s} | 30 +-- .../unknown_0255E0/func_800318C8.s | 36 ---- .../unknown_0255E0/func_80031944.s | 6 - .../unknown_0255E0/func_80031954.s | 124 ----------- .../unknown_0255E0/func_80031B18.s | 6 - .../unknown_0255E0/func_80031B24.s | 19 -- .../unknown_070110/func_8006F940.s | 5 - .../unknown_070110/func_8007066C.s | 29 --- .../unknown_070110/func_800706BC.s | 4 - .../unknown_072E50/func_80075E60.s | 2 +- .../unknown_0AEE70/func_800B7460.s | 4 +- .../{func_800C6274.s => gzip_huft_build.s} | 4 +- .../unknown_0CCF90/func_800CC5A0.s | 2 +- .../{func_800D04E0.s => memzero.s} | 2 +- .../unknown_0D3020/func_800D2B10.s | 2 +- asm/unknown_0251F0.s | 12 ++ .../func_800245F0.s | 0 .../func_80024744.s | 0 asm/unknown_031D30.s | 13 ++ .../func_80031130.s | 0 .../func_800314DC.s | 0 .../func_80031600.s | 195 +++++++++++++++++- asm/unknown_062930.s | 11 + .../func_80061D30.s | 0 asm/unknown_070110.s | 41 ++++ .../unknown_070110/func_8006F510.s | 0 .../unknown_070110/func_8006F53C.s | 0 .../unknown_070110/func_8006F564.s | 0 .../unknown_070110/func_8006F5E0.s | 0 .../unknown_070110/func_8006F64C.s | 0 .../unknown_070110/func_8006F6EC.s | 0 .../unknown_070110/func_8006F768.s | 0 .../unknown_070110/func_8006F870.s | 0 .../unknown_070110/func_8006F94C.s | 0 .../unknown_070110/func_8006F9B8.s | 0 .../unknown_070110/func_8006FB60.s | 0 .../unknown_070110/func_8006FC30.s | 0 .../unknown_070110/func_8006FE04.s | 0 .../unknown_070110/func_8006FE30.s | 0 .../unknown_070110/func_8006FE74.s | 0 .../unknown_070110/func_80070130.s | 0 .../unknown_070110/func_800701E4.s | 0 .../unknown_070110/func_80070320.s | 0 .../unknown_070110/func_800703D8.s | 0 .../unknown_070110/func_80070490.s | 0 .../unknown_070110/func_800704F0.s | 0 .../unknown_070110/func_800705F8.s | 0 .../unknown_070110/func_80070638.s | 0 .../func_8007066C.s} | 32 ++- .../unknown_070110/func_80070750.s | 0 .../unknown_070110/func_800707C4.s | 0 .../unknown_070110/func_800707F8.s | 0 .../unknown_070110/func_8007082C.s | 1 - .../unknown_070110/func_80070890.s | 1 + .../unknown_070110/func_80070A2C.s | 0 .../unknown_070110/func_80070B04.s | 0 asm/unknown_070110/rng.s | 60 ++++++ data/dkr.data.s | 4 +- src/mips1/entrypoint_001000.c | 7 - src/mips1/gzip.c | 14 -- src/mips1/unknown_00BC20.c | 4 - src/mips1/unknown_0255E0.c | 8 - src/mips1/unknown_061D30.c | 3 +- src/mips1/unknown_0B8920.c | 22 +- src/mips1/unknown_0D10E0.c | 2 +- src/mips2/unknown_070110.c | 69 ------- tools/python/generate_ld.py | 8 +- tools/python/score.py | 23 +++ undefined_syms.txt | 8 +- 75 files changed, 521 insertions(+), 450 deletions(-) rename asm/{non_matchings/entrypoint_001000/EntryPoint.s => entrypoint.s} (79%) create mode 100644 asm/gzip.s rename asm/{non_matchings/gzip/func_800C68C0.s => gzip/gzip_inflate_block.s} (67%) rename asm/{non_matchings/gzip/func_800C7040.s => gzip/gzip_inflate_codes.s} (87%) rename asm/{non_matchings/gzip/func_800C69C4.s => gzip/gzip_inflate_dynamic.s} (90%) rename asm/{non_matchings/gzip/func_800C6DDC.s => gzip/gzip_inflate_fixed.s} (95%) rename asm/{non_matchings/gzip/func_800C6F34.s => gzip/gzip_inflate_stored.s} (72%) delete mode 100644 asm/non_matchings/unknown_0255E0/func_800318C8.s delete mode 100644 asm/non_matchings/unknown_0255E0/func_80031944.s delete mode 100644 asm/non_matchings/unknown_0255E0/func_80031954.s delete mode 100644 asm/non_matchings/unknown_0255E0/func_80031B18.s delete mode 100644 asm/non_matchings/unknown_0255E0/func_80031B24.s delete mode 100644 asm/non_matchings/unknown_070110/func_8006F940.s delete mode 100644 asm/non_matchings/unknown_070110/func_8007066C.s delete mode 100644 asm/non_matchings/unknown_070110/func_800706BC.s rename asm/non_matchings/unknown_0B8920/{func_800C6274.s => gzip_huft_build.s} (99%) rename asm/non_matchings/unknown_0D10E0/{func_800D04E0.s => memzero.s} (99%) create mode 100644 asm/unknown_0251F0.s rename asm/{non_matchings/unknown_00BC20 => unknown_0251F0}/func_800245F0.s (100%) rename asm/{non_matchings/unknown_00BC20 => unknown_0251F0}/func_80024744.s (100%) create mode 100644 asm/unknown_031D30.s rename asm/{non_matchings/unknown_0255E0 => unknown_031D30}/func_80031130.s (100%) rename asm/{non_matchings/unknown_0255E0 => unknown_031D30}/func_800314DC.s (100%) rename asm/{non_matchings/unknown_0255E0 => unknown_031D30}/func_80031600.s (51%) create mode 100644 asm/unknown_062930.s rename asm/{non_matchings/unknown_061D30 => unknown_062930}/func_80061D30.s (100%) create mode 100644 asm/unknown_070110.s rename asm/{non_matchings => }/unknown_070110/func_8006F510.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F53C.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F564.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F5E0.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F64C.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F6EC.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F768.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F870.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F94C.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006F9B8.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006FB60.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006FC30.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006FE04.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006FE30.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8006FE74.s (100%) rename asm/{non_matchings => }/unknown_070110/func_80070130.s (100%) rename asm/{non_matchings => }/unknown_070110/func_800701E4.s (100%) rename asm/{non_matchings => }/unknown_070110/func_80070320.s (100%) rename asm/{non_matchings => }/unknown_070110/func_800703D8.s (100%) rename asm/{non_matchings => }/unknown_070110/func_80070490.s (100%) rename asm/{non_matchings => }/unknown_070110/func_800704F0.s (100%) rename asm/{non_matchings => }/unknown_070110/func_800705F8.s (100%) rename asm/{non_matchings => }/unknown_070110/func_80070638.s (100%) rename asm/{non_matchings/unknown_070110/func_800706C8.s => unknown_070110/func_8007066C.s} (59%) rename asm/{non_matchings => }/unknown_070110/func_80070750.s (100%) rename asm/{non_matchings => }/unknown_070110/func_800707C4.s (100%) rename asm/{non_matchings => }/unknown_070110/func_800707F8.s (100%) rename asm/{non_matchings => }/unknown_070110/func_8007082C.s (96%) rename asm/{non_matchings => }/unknown_070110/func_80070890.s (98%) rename asm/{non_matchings => }/unknown_070110/func_80070A2C.s (100%) rename asm/{non_matchings => }/unknown_070110/func_80070B04.s (100%) create mode 100644 asm/unknown_070110/rng.s delete mode 100644 src/mips1/entrypoint_001000.c delete mode 100644 src/mips1/gzip.c delete mode 100644 src/mips2/unknown_070110.c diff --git a/asm/non_matchings/entrypoint_001000/EntryPoint.s b/asm/entrypoint.s similarity index 79% rename from asm/non_matchings/entrypoint_001000/EntryPoint.s rename to asm/entrypoint.s index 8d80253a..907491b8 100644 --- a/asm/non_matchings/entrypoint_001000/EntryPoint.s +++ b/asm/entrypoint.s @@ -1,4 +1,14 @@ -glabel EntryPoint +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80000400 */ + +.include "globals.inc" +.include "macros.inc" + +.set noat # allow manual use of $at +.set noreorder # dont insert nops after branches +.set gp=64 # 64-bit instructions are used + +glabel entrypoint /* 001000 80000400 3C08800F */ lui $t0, %hi(D_800EBF60) # $t0, 0x800f /* 001004 80000404 3C090004 */ lui $t1, (0x00041490 >> 16) # lui $t1, 4 /* 001008 80000408 2508BF60 */ addiu $t0, %lo(D_800EBF60) # addiu $t0, $t0, -0x40a0 @@ -20,4 +30,3 @@ glabel EntryPoint /* 001044 80000444 00000000 */ nop /* 001048 80000448 00000000 */ nop /* 00104C 8000044C 00000000 */ nop - diff --git a/asm/gzip.s b/asm/gzip.s new file mode 100644 index 00000000..017f2f0e --- /dev/null +++ b/asm/gzip.s @@ -0,0 +1,15 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x800C68C0 */ + +.include "globals.inc" +.include "macros.inc" + +.set noat # allow manual use of $at +.set noreorder # dont insert nops after branches +.set gp=64 # 64-bit instructions are used + +.include "asm/gzip/gzip_inflate_block.s" +.include "asm/gzip/gzip_inflate_dynamic.s" +.include "asm/gzip/gzip_inflate_fixed.s" +.include "asm/gzip/gzip_inflate_stored.s" +.include "asm/gzip/gzip_inflate_codes.s" diff --git a/asm/non_matchings/gzip/func_800C68C0.s b/asm/gzip/gzip_inflate_block.s similarity index 67% rename from asm/non_matchings/gzip/func_800C68C0.s rename to asm/gzip/gzip_inflate_block.s index 6aba56a4..0eba9367 100644 --- a/asm/non_matchings/gzip/func_800C68C0.s +++ b/asm/gzip/gzip_inflate_block.s @@ -1,18 +1,18 @@ -glabel func_800C68C0 -/* 0C74C0 800C68C0 3C0B8013 */ lui $t3, %hi(D_8012AAD4) # $t3, 0x8013 -/* 0C74C4 800C68C4 8D6BAAD4 */ lw $t3, %lo(D_8012AAD4)($t3) +glabel gzip_inflate_block +/* 0C74C0 800C68C0 3C0B8013 */ lui $t3, %hi(gzip_num_bits) # $t3, 0x8013 +/* 0C74C4 800C68C4 8D6BAAD4 */ lw $t3, %lo(gzip_num_bits)($t3) /* 0C74C8 800C68C8 3C018013 */ lui $at, %hi(D_8012AAD8) # $at, 0x8013 /* 0C74CC 800C68CC AC20AAD8 */ sw $zero, %lo(D_8012AAD8)($at) /* 0C74D0 800C68D0 24080001 */ li $t0, 1 /* 0C74D4 800C68D4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0C74D8 800C68D8 3C0C800E */ lui $t4, %hi(D_800E3768) # $t4, 0x800e -/* 0C74DC 800C68DC 3C0A8013 */ lui $t2, %hi(D_8012AAD0) # $t2, 0x8013 +/* 0C74D8 800C68D8 3C0C800E */ lui $t4, %hi(gzip_inflate_input) # $t4, 0x800e +/* 0C74DC 800C68DC 3C0A8013 */ lui $t2, %hi(gzip_bit_buffer) # $t2, 0x8013 /* 0C74E0 800C68E0 0168082B */ sltu $at, $t3, $t0 /* 0C74E4 800C68E4 AFBF001C */ sw $ra, 0x1c($sp) /* 0C74E8 800C68E8 AFB00018 */ sw $s0, 0x18($sp) -/* 0C74EC 800C68EC 8D8C3768 */ lw $t4, %lo(D_800E3768)($t4) +/* 0C74EC 800C68EC 8D8C3768 */ lw $t4, %lo(gzip_inflate_input)($t4) /* 0C74F0 800C68F0 10200008 */ beqz $at, .L800C6914 -/* 0C74F4 800C68F4 8D4AAAD0 */ lw $t2, %lo(D_8012AAD0)($t2) +/* 0C74F4 800C68F4 8D4AAAD0 */ lw $t2, %lo(gzip_bit_buffer)($t2) .L800C68F8: /* 0C74F8 800C68F8 91820000 */ lbu $v0, ($t4) /* 0C74FC 800C68FC 258C0001 */ addiu $t4, $t4, 1 @@ -38,33 +38,33 @@ glabel func_800C68C0 /* 0C7544 800C6944 1420FFFA */ bnez $at, .L800C6930 /* 0C7548 800C6948 01425025 */ or $t2, $t2, $v0 .L800C694C: -/* 0C754C 800C694C 3C01800E */ lui $at, %hi(D_800E3768) # $at, 0x800e +/* 0C754C 800C694C 3C01800E */ lui $at, %hi(gzip_inflate_input) # $at, 0x800e /* 0C7550 800C6950 31490003 */ andi $t1, $t2, 3 -/* 0C7554 800C6954 AC2C3768 */ sw $t4, %lo(D_800E3768)($at) +/* 0C7554 800C6954 AC2C3768 */ sw $t4, %lo(gzip_inflate_input)($at) /* 0C7558 800C6958 010A5006 */ srlv $t2, $t2, $t0 -/* 0C755C 800C695C 3C018013 */ lui $at, %hi(D_8012AAD0) # $at, 0x8013 -/* 0C7560 800C6960 AC2AAAD0 */ sw $t2, %lo(D_8012AAD0)($at) +/* 0C755C 800C695C 3C018013 */ lui $at, %hi(gzip_bit_buffer) # $at, 0x8013 +/* 0C7560 800C6960 AC2AAAD0 */ sw $t2, %lo(gzip_bit_buffer)($at) /* 0C7564 800C6964 01685822 */ sub $t3, $t3, $t0 -/* 0C7568 800C6968 3C018013 */ lui $at, %hi(D_8012AAD4) # $at, 0x8013 -/* 0C756C 800C696C AC2BAAD4 */ sw $t3, %lo(D_8012AAD4)($at) +/* 0C7568 800C6968 3C018013 */ lui $at, %hi(gzip_num_bits) # $at, 0x8013 +/* 0C756C 800C696C AC2BAAD4 */ sw $t3, %lo(gzip_num_bits)($at) /* 0C7570 800C6970 24010002 */ li $at, 2 /* 0C7574 800C6974 1121000B */ beq $t1, $at, .L800C69A4 /* 0C7578 800C6978 24010001 */ li $at, 1 /* 0C757C 800C697C 11210005 */ beq $t1, $at, .L800C6994 /* 0C7580 800C6980 00000000 */ nop -/* 0C7584 800C6984 0C031BCD */ jal func_800C6F34 +/* 0C7584 800C6984 0C031BCD */ jal gzip_inflate_stored /* 0C7588 800C6988 00000000 */ nop -/* 0C758C 800C698C 08031A6B */ j func_800C69AC +/* 0C758C 800C698C 08031A6B */ j .L800C69AC /* 0C7590 800C6990 00000000 */ nop .L800C6994: -/* 0C7594 800C6994 0C031B77 */ jal func_800C6DDC +/* 0C7594 800C6994 0C031B77 */ jal gzip_inflate_fixed /* 0C7598 800C6998 00000000 */ nop -/* 0C759C 800C699C 08031A6B */ j func_800C69AC +/* 0C759C 800C699C 08031A6B */ j .L800C69AC /* 0C75A0 800C69A0 00000000 */ nop .L800C69A4: -/* 0C75A4 800C69A4 0C031A71 */ jal func_800C69C4 +/* 0C75A4 800C69A4 0C031A71 */ jal gzip_inflate_dynamic /* 0C75A8 800C69A8 00000000 */ nop -glabel func_800C69AC +.L800C69AC: /* 0C75AC 800C69AC 8FBF001C */ lw $ra, 0x1c($sp) /* 0C75B0 800C69B0 24020001 */ li $v0, 1 /* 0C75B4 800C69B4 00501022 */ sub $v0, $v0, $s0 diff --git a/asm/non_matchings/gzip/func_800C7040.s b/asm/gzip/gzip_inflate_codes.s similarity index 87% rename from asm/non_matchings/gzip/func_800C7040.s rename to asm/gzip/gzip_inflate_codes.s index 1b64cf34..017c4fb8 100644 --- a/asm/non_matchings/gzip/func_800C7040.s +++ b/asm/gzip/gzip_inflate_codes.s @@ -1,4 +1,4 @@ -glabel func_800C7040 +glabel gzip_inflate_codes /* 0C7C40 800C7040 27BDFFF0 */ addiu $sp, $sp, -0x10 /* 0C7C44 800C7044 3C0B800F */ lui $t3, %hi(gzip_mask_bits) # $t3, 0x800f /* 0C7C48 800C7048 AFB20008 */ sw $s2, 8($sp) @@ -7,19 +7,19 @@ glabel func_800C7040 /* 0C7C54 800C7054 256B948C */ addiu $t3, %lo(gzip_mask_bits) # addiu $t3, $t3, -0x6b74 /* 0C7C58 800C7058 00061040 */ sll $v0, $a2, 1 /* 0C7C5C 800C705C 00074040 */ sll $t0, $a3, 1 -/* 0C7C60 800C7060 3C12800E */ lui $s2, %hi(D_800E3768) # $s2, 0x800e -/* 0C7C64 800C7064 3C11800E */ lui $s1, %hi(D_800E376C) # $s1, 0x800e -/* 0C7C68 800C7068 3C198013 */ lui $t9, %hi(D_8012AAD0) # $t9, 0x8013 -/* 0C7C6C 800C706C 3C108013 */ lui $s0, %hi(D_8012AAD4) # $s0, 0x8013 +/* 0C7C60 800C7060 3C12800E */ lui $s2, %hi(gzip_inflate_input) # $s2, 0x800e +/* 0C7C64 800C7064 3C11800E */ lui $s1, %hi(gzip_inflate_output) # $s1, 0x800e +/* 0C7C68 800C7068 3C198013 */ lui $t9, %hi(gzip_bit_buffer) # $t9, 0x8013 +/* 0C7C6C 800C706C 3C108013 */ lui $s0, %hi(gzip_num_bits) # $s0, 0x8013 /* 0C7C70 800C7070 01621821 */ addu $v1, $t3, $v0 /* 0C7C74 800C7074 01684821 */ addu $t1, $t3, $t0 -/* 0C7C78 800C7078 8E523768 */ lw $s2, %lo(D_800E3768)($s2) -/* 0C7C7C 800C707C 8E31376C */ lw $s1, %lo(D_800E376C)($s1) -/* 0C7C80 800C7080 8F39AAD0 */ lw $t9, %lo(D_8012AAD0)($t9) -/* 0C7C84 800C7084 8E10AAD4 */ lw $s0, %lo(D_8012AAD4)($s0) +/* 0C7C78 800C7078 8E523768 */ lw $s2, %lo(gzip_inflate_input)($s2) +/* 0C7C7C 800C707C 8E31376C */ lw $s1, %lo(gzip_inflate_output)($s1) +/* 0C7C80 800C7080 8F39AAD0 */ lw $t9, %lo(gzip_bit_buffer)($t9) +/* 0C7C84 800C7084 8E10AAD4 */ lw $s0, %lo(gzip_num_bits)($s0) /* 0C7C88 800C7088 946D0000 */ lhu $t5, ($v1) /* 0C7C8C 800C708C 952C0000 */ lhu $t4, ($t1) -glabel func_800C7090 +.L800C7090: /* 0C7C90 800C7090 0206082B */ sltu $at, $s0, $a2 .L800C7094: /* 0C7C94 800C7094 50200009 */ beql $at, $zero, .L800C70BC @@ -75,7 +75,7 @@ glabel func_800C7090 /* 0C7D44 800C7144 02028022 */ sub $s0, $s0, $v0 /* 0C7D48 800C7148 95E20004 */ lhu $v0, 4($t7) /* 0C7D4C 800C714C 26310001 */ addiu $s1, $s1, 1 -/* 0C7D50 800C7150 08031C24 */ j func_800C7090 +/* 0C7D50 800C7150 08031C24 */ j .L800C7090 /* 0C7D54 800C7154 A222FFFF */ sb $v0, -1($s1) .L800C7158: /* 0C7D58 800C7158 2401000F */ li $at, 15 @@ -194,17 +194,17 @@ glabel func_800C7090 /* 0C7EEC 800C72EC 910AFFFF */ lbu $t2, -1($t0) /* 0C7EF0 800C72F0 15C0FFF5 */ bnez $t6, .L800C72C8 /* 0C7EF4 800C72F4 A22AFFFF */ sb $t2, -1($s1) -/* 0C7EF8 800C72F8 08031C24 */ j func_800C7090 +/* 0C7EF8 800C72F8 08031C24 */ j .L800C7090 /* 0C7EFC 800C72FC 00000000 */ nop .L800C7300: -/* 0C7F00 800C7300 3C01800E */ lui $at, %hi(D_800E3768) # $at, 0x800e -/* 0C7F04 800C7304 AC323768 */ sw $s2, %lo(D_800E3768)($at) -/* 0C7F08 800C7308 3C01800E */ lui $at, %hi(D_800E376C) # $at, 0x800e -/* 0C7F0C 800C730C AC31376C */ sw $s1, %lo(D_800E376C)($at) -/* 0C7F10 800C7310 3C018013 */ lui $at, %hi(D_8012AAD0) # $at, 0x8013 -/* 0C7F14 800C7314 AC39AAD0 */ sw $t9, %lo(D_8012AAD0)($at) -/* 0C7F18 800C7318 3C018013 */ lui $at, %hi(D_8012AAD4) # $at, 0x8013 -/* 0C7F1C 800C731C AC30AAD4 */ sw $s0, %lo(D_8012AAD4)($at) +/* 0C7F00 800C7300 3C01800E */ lui $at, %hi(gzip_inflate_input) # $at, 0x800e +/* 0C7F04 800C7304 AC323768 */ sw $s2, %lo(gzip_inflate_input)($at) +/* 0C7F08 800C7308 3C01800E */ lui $at, %hi(gzip_inflate_output) # $at, 0x800e +/* 0C7F0C 800C730C AC31376C */ sw $s1, %lo(gzip_inflate_output)($at) +/* 0C7F10 800C7310 3C018013 */ lui $at, %hi(gzip_bit_buffer) # $at, 0x8013 +/* 0C7F14 800C7314 AC39AAD0 */ sw $t9, %lo(gzip_bit_buffer)($at) +/* 0C7F18 800C7318 3C018013 */ lui $at, %hi(gzip_num_bits) # $at, 0x8013 +/* 0C7F1C 800C731C AC30AAD4 */ sw $s0, %lo(gzip_num_bits)($at) /* 0C7F20 800C7320 8FB20008 */ lw $s2, 8($sp) /* 0C7F24 800C7324 8FB10004 */ lw $s1, 4($sp) /* 0C7F28 800C7328 8FB00000 */ lw $s0, ($sp) diff --git a/asm/non_matchings/gzip/func_800C69C4.s b/asm/gzip/gzip_inflate_dynamic.s similarity index 90% rename from asm/non_matchings/gzip/func_800C69C4.s rename to asm/gzip/gzip_inflate_dynamic.s index 8eaee477..9d646209 100644 --- a/asm/non_matchings/gzip/func_800C69C4.s +++ b/asm/gzip/gzip_inflate_dynamic.s @@ -1,20 +1,20 @@ -glabel func_800C69C4 +glabel gzip_inflate_dynamic /* 0C75C4 800C69C4 27BDFAC0 */ addiu $sp, $sp, -0x540 /* 0C75C8 800C69C8 AFB30028 */ sw $s3, 0x28($sp) -/* 0C75CC 800C69CC 3C138013 */ lui $s3, %hi(D_8012AAD4) # $s3, 0x8013 -/* 0C75D0 800C69D0 8E73AAD4 */ lw $s3, %lo(D_8012AAD4)($s3) +/* 0C75CC 800C69CC 3C138013 */ lui $s3, %hi(gzip_num_bits) # $s3, 0x8013 +/* 0C75D0 800C69D0 8E73AAD4 */ lw $s3, %lo(gzip_num_bits)($s3) /* 0C75D4 800C69D4 AFB4002C */ sw $s4, 0x2c($sp) /* 0C75D8 800C69D8 AFB20024 */ sw $s2, 0x24($sp) /* 0C75DC 800C69DC 24080005 */ li $t0, 5 -/* 0C75E0 800C69E0 3C14800E */ lui $s4, %hi(D_800E3768) # $s4, 0x800e -/* 0C75E4 800C69E4 3C128013 */ lui $s2, %hi(D_8012AAD0) # $s2, 0x8013 +/* 0C75E0 800C69E0 3C14800E */ lui $s4, %hi(gzip_inflate_input) # $s4, 0x800e +/* 0C75E4 800C69E4 3C128013 */ lui $s2, %hi(gzip_bit_buffer) # $s2, 0x8013 /* 0C75E8 800C69E8 0268082B */ sltu $at, $s3, $t0 /* 0C75EC 800C69EC AFBF0030 */ sw $ra, 0x30($sp) /* 0C75F0 800C69F0 AFB10020 */ sw $s1, 0x20($sp) /* 0C75F4 800C69F4 AFB0001C */ sw $s0, 0x1c($sp) -/* 0C75F8 800C69F8 8E943768 */ lw $s4, %lo(D_800E3768)($s4) +/* 0C75F8 800C69F8 8E943768 */ lw $s4, %lo(gzip_inflate_input)($s4) /* 0C75FC 800C69FC 10200008 */ beqz $at, .L800C6A20 -/* 0C7600 800C6A00 8E52AAD0 */ lw $s2, %lo(D_8012AAD0)($s2) +/* 0C7600 800C6A00 8E52AAD0 */ lw $s2, %lo(gzip_bit_buffer)($s2) .L800C6A04: /* 0C7604 800C6A04 92820000 */ lbu $v0, ($s4) /* 0C7608 800C6A08 26940001 */ addiu $s4, $s4, 1 @@ -111,7 +111,7 @@ glabel func_800C69C4 /* 0C774C 800C6B4C 24070000 */ li $a3, 0 /* 0C7750 800C6B50 AFA00010 */ sw $zero, 0x10($sp) /* 0C7754 800C6B54 AFA80014 */ sw $t0, 0x14($sp) -/* 0C7758 800C6B58 0C03189D */ jal func_800C6274 +/* 0C7758 800C6B58 0C03189D */ jal gzip_huft_build /* 0C775C 800C6B5C AFA90018 */ sw $t1, 0x18($sp) /* 0C7760 800C6B60 23A90038 */ addi $t1, $sp, 0x38 /* 0C7764 800C6B64 8D2D0000 */ lw $t5, ($t1) @@ -125,7 +125,7 @@ glabel func_800C69C4 /* 0C7784 800C6B84 84580000 */ lh $t8, ($v0) /* 0C7788 800C6B88 23AF0044 */ addi $t7, $sp, 0x44 /* 0C778C 800C6B8C 240A0000 */ li $t2, 0 -glabel func_800C6B90 +.L800C6B90: /* 0C7790 800C6B90 1320005F */ beqz $t9, .L800C6D10 /* 0C7794 800C6B94 026D082B */ sltu $at, $s3, $t5 /* 0C7798 800C6B98 50200009 */ beql $at, $zero, .L800C6BC0 @@ -176,14 +176,14 @@ glabel func_800C6B90 /* 0C7838 800C6C38 ADE00000 */ sw $zero, ($t7) /* 0C783C 800C6C3C 1520FFFD */ bnez $t1, .L800C6C34 /* 0C7840 800C6C40 25EF0004 */ addiu $t7, $t7, 4 -/* 0C7844 800C6C44 08031AE4 */ j func_800C6B90 +/* 0C7844 800C6C44 08031AE4 */ j .L800C6B90 /* 0C7848 800C6C48 240A0000 */ li $t2, 0 .L800C6C4C: /* 0C784C 800C6C4C ADE80000 */ sw $t0, ($t7) /* 0C7850 800C6C50 25EF0004 */ addiu $t7, $t7, 4 /* 0C7854 800C6C54 2739FFFF */ addiu $t9, $t9, -1 -/* 0C7858 800C6C58 08031AE4 */ j func_800C6B90 +/* 0C7858 800C6C58 08031AE4 */ j .L800C6B90 /* 0C785C 800C6C5C 00085025 */ or $t2, $zero, $t0 .L800C6C60: @@ -210,7 +210,7 @@ glabel func_800C6B90 /* 0C78A4 800C6CA4 ADEA0000 */ sw $t2, ($t7) /* 0C78A8 800C6CA8 1520FFFD */ bnez $t1, .L800C6CA0 /* 0C78AC 800C6CAC 25EF0004 */ addiu $t7, $t7, 4 -/* 0C78B0 800C6CB0 08031AE4 */ j func_800C6B90 +/* 0C78B0 800C6CB0 08031AE4 */ j .L800C6B90 /* 0C78B4 800C6CB4 00000000 */ nop /* 0C78B8 800C6CB8 24080003 */ li $t0, 3 @@ -237,30 +237,30 @@ glabel func_800C6B90 /* 0C78FC 800C6CFC ADE00000 */ sw $zero, ($t7) /* 0C7900 800C6D00 1520FFFD */ bnez $t1, .L800C6CF8 /* 0C7904 800C6D04 25EF0004 */ addiu $t7, $t7, 4 -/* 0C7908 800C6D08 08031AE4 */ j func_800C6B90 +/* 0C7908 800C6D08 08031AE4 */ j .L800C6B90 /* 0C790C 800C6D0C 240A0000 */ li $t2, 0 .L800C6D10: -/* 0C7910 800C6D10 3C01800E */ lui $at, %hi(D_800E3768) # $at, 0x800e -/* 0C7914 800C6D14 AC343768 */ sw $s4, %lo(D_800E3768)($at) -/* 0C7918 800C6D18 3C018013 */ lui $at, %hi(D_8012AAD0) # $at, 0x8013 +/* 0C7910 800C6D10 3C01800E */ lui $at, %hi(gzip_inflate_input) # $at, 0x800e +/* 0C7914 800C6D14 AC343768 */ sw $s4, %lo(gzip_inflate_input)($at) +/* 0C7918 800C6D18 3C018013 */ lui $at, %hi(gzip_bit_buffer) # $at, 0x8013 /* 0C791C 800C6D1C 24080009 */ li $t0, 9 -/* 0C7920 800C6D20 AC32AAD0 */ sw $s2, %lo(D_8012AAD0)($at) +/* 0C7920 800C6D20 AC32AAD0 */ sw $s2, %lo(gzip_bit_buffer)($at) /* 0C7924 800C6D24 AFA80038 */ sw $t0, 0x38($sp) /* 0C7928 800C6D28 3C02800F */ lui $v0, %hi(gzip_cplext) # $v0, 0x800f -/* 0C792C 800C6D2C 3C018013 */ lui $at, %hi(D_8012AAD4) # $at, 0x8013 +/* 0C792C 800C6D2C 3C018013 */ lui $at, %hi(gzip_num_bits) # $at, 0x8013 /* 0C7930 800C6D30 3C07800F */ lui $a3, %hi(gzip_cplens) # $a3, 0x800f /* 0C7934 800C6D34 24429412 */ addiu $v0, %lo(gzip_cplext) # addiu $v0, $v0, -0x6bee /* 0C7938 800C6D38 23A30034 */ addi $v1, $sp, 0x34 /* 0C793C 800C6D3C 23A80038 */ addi $t0, $sp, 0x38 -/* 0C7940 800C6D40 AC33AAD4 */ sw $s3, %lo(D_8012AAD4)($at) +/* 0C7940 800C6D40 AC33AAD4 */ sw $s3, %lo(gzip_num_bits)($at) /* 0C7944 800C6D44 23A40044 */ addi $a0, $sp, 0x44 /* 0C7948 800C6D48 00112825 */ or $a1, $zero, $s1 /* 0C794C 800C6D4C 24060101 */ li $a2, 257 /* 0C7950 800C6D50 24E793D4 */ addiu $a3, %lo(gzip_cplens) # addiu $a3, $a3, -0x6c2c /* 0C7954 800C6D54 AFA20010 */ sw $v0, 0x10($sp) /* 0C7958 800C6D58 AFA30014 */ sw $v1, 0x14($sp) -/* 0C795C 800C6D5C 0C03189D */ jal func_800C6274 +/* 0C795C 800C6D5C 0C03189D */ jal gzip_huft_build /* 0C7960 800C6D60 AFA80018 */ sw $t0, 0x18($sp) /* 0C7964 800C6D64 23A40044 */ addi $a0, $sp, 0x44 /* 0C7968 800C6D68 00111080 */ sll $v0, $s1, 2 @@ -277,12 +277,12 @@ glabel func_800C6B90 /* 0C7994 800C6D94 24E79432 */ addiu $a3, %lo(gzip_cpdist) # addiu $a3, $a3, -0x6bce /* 0C7998 800C6D98 AFA20010 */ sw $v0, 0x10($sp) /* 0C799C 800C6D9C AFA30014 */ sw $v1, 0x14($sp) -/* 0C79A0 800C6DA0 0C03189D */ jal func_800C6274 +/* 0C79A0 800C6DA0 0C03189D */ jal gzip_huft_build /* 0C79A4 800C6DA4 AFA80018 */ sw $t0, 0x18($sp) /* 0C79A8 800C6DA8 8FA40034 */ lw $a0, 0x34($sp) /* 0C79AC 800C6DAC 8FA5003C */ lw $a1, 0x3c($sp) /* 0C79B0 800C6DB0 8FA60038 */ lw $a2, 0x38($sp) -/* 0C79B4 800C6DB4 0C031C10 */ jal func_800C7040 +/* 0C79B4 800C6DB4 0C031C10 */ jal gzip_inflate_codes /* 0C79B8 800C6DB8 8FA70040 */ lw $a3, 0x40($sp) /* 0C79BC 800C6DBC 8FBF0030 */ lw $ra, 0x30($sp) /* 0C79C0 800C6DC0 8FB4002C */ lw $s4, 0x2c($sp) diff --git a/asm/non_matchings/gzip/func_800C6DDC.s b/asm/gzip/gzip_inflate_fixed.s similarity index 95% rename from asm/non_matchings/gzip/func_800C6DDC.s rename to asm/gzip/gzip_inflate_fixed.s index 4152471b..a23f6294 100644 --- a/asm/non_matchings/gzip/func_800C6DDC.s +++ b/asm/gzip/gzip_inflate_fixed.s @@ -1,4 +1,4 @@ -glabel func_800C6DDC +glabel gzip_inflate_fixed /* 0C79DC 800C6DDC 27BDFAD0 */ addiu $sp, $sp, -0x530 /* 0C79E0 800C6DE0 AFBF001C */ sw $ra, 0x1c($sp) /* 0C79E4 800C6DE4 23AB0044 */ addi $t3, $sp, 0x44 @@ -54,7 +54,7 @@ glabel func_800C6DDC /* 0C7AA0 800C6EA0 24E793D4 */ addiu $a3, %lo(gzip_cplens) # addiu $a3, $a3, -0x6c2c /* 0C7AA4 800C6EA4 AFA20010 */ sw $v0, 0x10($sp) /* 0C7AA8 800C6EA8 AFA30014 */ sw $v1, 0x14($sp) -/* 0C7AAC 800C6EAC 0C03189D */ jal func_800C6274 +/* 0C7AAC 800C6EAC 0C03189D */ jal gzip_huft_build /* 0C7AB0 800C6EB0 AFA80018 */ sw $t0, 0x18($sp) /* 0C7AB4 800C6EB4 23AB0044 */ addi $t3, $sp, 0x44 /* 0C7AB8 800C6EB8 2408000A */ li $t0, 10 @@ -78,12 +78,12 @@ glabel func_800C6DDC /* 0C7AFC 800C6EFC 24E79432 */ addiu $a3, %lo(gzip_cpdist) # addiu $a3, $a3, -0x6bce /* 0C7B00 800C6F00 AFA20010 */ sw $v0, 0x10($sp) /* 0C7B04 800C6F04 AFA30014 */ sw $v1, 0x14($sp) -/* 0C7B08 800C6F08 0C03189D */ jal func_800C6274 +/* 0C7B08 800C6F08 0C03189D */ jal gzip_huft_build /* 0C7B0C 800C6F0C AFA80018 */ sw $t0, 0x18($sp) /* 0C7B10 800C6F10 8FA40020 */ lw $a0, 0x20($sp) /* 0C7B14 800C6F14 8FA50028 */ lw $a1, 0x28($sp) /* 0C7B18 800C6F18 8FA60024 */ lw $a2, 0x24($sp) -/* 0C7B1C 800C6F1C 0C031C10 */ jal func_800C7040 +/* 0C7B1C 800C6F1C 0C031C10 */ jal gzip_inflate_codes /* 0C7B20 800C6F20 8FA7002C */ lw $a3, 0x2c($sp) /* 0C7B24 800C6F24 8FBF001C */ lw $ra, 0x1c($sp) /* 0C7B28 800C6F28 27BD0530 */ addiu $sp, $sp, 0x530 diff --git a/asm/non_matchings/gzip/func_800C6F34.s b/asm/gzip/gzip_inflate_stored.s similarity index 72% rename from asm/non_matchings/gzip/func_800C6F34.s rename to asm/gzip/gzip_inflate_stored.s index d5c81bbb..66c96937 100644 --- a/asm/non_matchings/gzip/func_800C6F34.s +++ b/asm/gzip/gzip_inflate_stored.s @@ -1,18 +1,18 @@ -glabel func_800C6F34 -/* 0C7B34 800C6F34 3C0D8013 */ lui $t5, %hi(D_8012AAD4) # $t5, 0x8013 -/* 0C7B38 800C6F38 8DADAAD4 */ lw $t5, %lo(D_8012AAD4)($t5) -/* 0C7B3C 800C6F3C 3C0C8013 */ lui $t4, %hi(D_8012AAD0) # $t4, 0x8013 -/* 0C7B40 800C6F40 8D8CAAD0 */ lw $t4, %lo(D_8012AAD0)($t4) +glabel gzip_inflate_stored +/* 0C7B34 800C6F34 3C0D8013 */ lui $t5, %hi(gzip_num_bits) # $t5, 0x8013 +/* 0C7B38 800C6F38 8DADAAD4 */ lw $t5, %lo(gzip_num_bits)($t5) +/* 0C7B3C 800C6F3C 3C0C8013 */ lui $t4, %hi(gzip_bit_buffer) # $t4, 0x8013 +/* 0C7B40 800C6F40 8D8CAAD0 */ lw $t4, %lo(gzip_bit_buffer)($t4) /* 0C7B44 800C6F44 31A80007 */ andi $t0, $t5, 7 /* 0C7B48 800C6F48 01A86822 */ sub $t5, $t5, $t0 /* 0C7B4C 800C6F4C 010C6006 */ srlv $t4, $t4, $t0 /* 0C7B50 800C6F50 24080010 */ li $t0, 16 -/* 0C7B54 800C6F54 3C0F800E */ lui $t7, %hi(D_800E3768) # $t7, 0x800e -/* 0C7B58 800C6F58 3C0E800E */ lui $t6, %hi(D_800E376C) # $t6, 0x800e +/* 0C7B54 800C6F54 3C0F800E */ lui $t7, %hi(gzip_inflate_input) # $t7, 0x800e +/* 0C7B58 800C6F58 3C0E800E */ lui $t6, %hi(gzip_inflate_output) # $t6, 0x800e /* 0C7B5C 800C6F5C 01A8082B */ sltu $at, $t5, $t0 -/* 0C7B60 800C6F60 8DEF3768 */ lw $t7, %lo(D_800E3768)($t7) +/* 0C7B60 800C6F60 8DEF3768 */ lw $t7, %lo(gzip_inflate_input)($t7) /* 0C7B64 800C6F64 10200008 */ beqz $at, .L800C6F88 -/* 0C7B68 800C6F68 8DCE376C */ lw $t6, %lo(D_800E376C)($t6) +/* 0C7B68 800C6F68 8DCE376C */ lw $t6, %lo(gzip_inflate_output)($t6) .L800C6F6C: /* 0C7B6C 800C6F6C 91E20000 */ lbu $v0, ($t7) /* 0C7B70 800C6F70 25EF0001 */ addiu $t7, $t7, 1 @@ -64,12 +64,12 @@ glabel func_800C6F34 /* 0C7C14 800C7014 1520FFF5 */ bnez $t1, .L800C6FEC /* 0C7C18 800C7018 A1CBFFFF */ sb $t3, -1($t6) .L800C701C: -/* 0C7C1C 800C701C 3C01800E */ lui $at, %hi(D_800E3768) # $at, 0x800e -/* 0C7C20 800C7020 AC2F3768 */ sw $t7, %lo(D_800E3768)($at) -/* 0C7C24 800C7024 3C01800E */ lui $at, %hi(D_800E376C) # $at, 0x800e -/* 0C7C28 800C7028 AC2E376C */ sw $t6, %lo(D_800E376C)($at) -/* 0C7C2C 800C702C 3C018013 */ lui $at, %hi(D_8012AAD0) # $at, 0x8013 -/* 0C7C30 800C7030 AC2CAAD0 */ sw $t4, %lo(D_8012AAD0)($at) +/* 0C7C1C 800C701C 3C01800E */ lui $at, %hi(gzip_inflate_input) # $at, 0x800e +/* 0C7C20 800C7020 AC2F3768 */ sw $t7, %lo(gzip_inflate_input)($at) +/* 0C7C24 800C7024 3C01800E */ lui $at, %hi(gzip_inflate_output) # $at, 0x800e +/* 0C7C28 800C7028 AC2E376C */ sw $t6, %lo(gzip_inflate_output)($at) +/* 0C7C2C 800C702C 3C018013 */ lui $at, %hi(gzip_bit_buffer) # $at, 0x8013 +/* 0C7C30 800C7030 AC2CAAD0 */ sw $t4, %lo(gzip_bit_buffer)($at) /* 0C7C34 800C7034 3C018013 */ lui $at, 0x8013 /* 0C7C38 800C7038 03E00008 */ jr $ra /* 0C7C3C 800C703C AC2DAAD4 */ sw $t5, -0x552c($at) diff --git a/asm/non_matchings/unknown_0255E0/func_800318C8.s b/asm/non_matchings/unknown_0255E0/func_800318C8.s deleted file mode 100644 index 730bd893..00000000 --- a/asm/non_matchings/unknown_0255E0/func_800318C8.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel func_800318C8 -/* 0324C8 800318C8 3C038012 */ lui $v1, %hi(D_8011B0F0) # $v1, 0x8012 -/* 0324CC 800318CC 8C63B0F0 */ lw $v1, %lo(D_8011B0F0)($v1) -/* 0324D0 800318D0 5460000B */ bnezl $v1, .L80031900 -/* 0324D4 800318D4 81AC0000 */ lb $t4, ($t5) -/* 0324D8 800318D8 C4460000 */ lwc1 $f6, ($v0) -/* 0324DC 800318DC 3C018012 */ lui $at, %hi(D_8011B0E4) # $at, 0x8012 -/* 0324E0 800318E0 E426B0E4 */ swc1 $f6, %lo(D_8011B0E4)($at) -/* 0324E4 800318E4 C4460004 */ lwc1 $f6, 4($v0) -/* 0324E8 800318E8 3C018012 */ lui $at, %hi(D_8011B0E8) # $at, 0x8012 -/* 0324EC 800318EC E426B0E8 */ swc1 $f6, %lo(D_8011B0E8)($at) -/* 0324F0 800318F0 C4460008 */ lwc1 $f6, 8($v0) -/* 0324F4 800318F4 3C018012 */ lui $at, %hi(D_8011B0EC) # $at, 0x8012 -/* 0324F8 800318F8 E426B0EC */ swc1 $f6, %lo(D_8011B0EC)($at) -/* 0324FC 800318FC 81AC0000 */ lb $t4, ($t5) -.L80031900: -/* 032500 80031900 80E20000 */ lb $v0, ($a3) -/* 032504 80031904 004C082A */ slt $at, $v0, $t4 -/* 032508 80031908 50200003 */ beql $at, $zero, .L80031918 -/* 03250C 8003190C 25CE0001 */ addiu $t6, $t6, 1 -/* 032510 80031910 A0EC0000 */ sb $t4, ($a3) -/* 032514 80031914 25CE0001 */ addiu $t6, $t6, 1 -.L80031918: -/* 032518 80031918 29C1000B */ slti $at, $t6, 0xb -/* 03251C 8003191C 14200005 */ bnez $at, .L80031934 -/* 032520 80031920 240F0001 */ li $t7, 1 -/* 032524 80031924 00007825 */ move $t7, $zero -/* 032528 80031928 C4800000 */ lwc1 $f0, ($a0) -/* 03252C 8003192C C4820004 */ lwc1 $f2, 4($a0) -/* 032530 80031930 C4840008 */ lwc1 $f4, 8($a0) -.L80031934: -/* 032534 80031934 E4A00000 */ swc1 $f0, ($a1) -/* 032538 80031938 E4A20004 */ swc1 $f2, 4($a1) -/* 03253C 8003193C 0800C655 */ j func_80031954 -/* 032540 80031940 E4A40008 */ swc1 $f4, 8($a1) - diff --git a/asm/non_matchings/unknown_0255E0/func_80031944.s b/asm/non_matchings/unknown_0255E0/func_80031944.s deleted file mode 100644 index e100d1b9..00000000 --- a/asm/non_matchings/unknown_0255E0/func_80031944.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_80031944 -/* 032544 80031944 2508FFFF */ addiu $t0, $t0, -1 -.L80031948: -/* 032548 80031948 25AD0001 */ addiu $t5, $t5, 1 -/* 03254C 8003194C 1500FF3C */ bnez $t0, .L80031640 -/* 032550 80031950 25290004 */ addiu $t1, $t1, 4 diff --git a/asm/non_matchings/unknown_0255E0/func_80031954.s b/asm/non_matchings/unknown_0255E0/func_80031954.s deleted file mode 100644 index 4e23b59c..00000000 --- a/asm/non_matchings/unknown_0255E0/func_80031954.s +++ /dev/null @@ -1,124 +0,0 @@ -glabel func_80031954 -/* 032554 80031954 15E0FF33 */ bnez $t7, .L80031624 -/* 032558 80031958 00000000 */ nop -/* 03255C 8003195C 11C00008 */ beqz $t6, .L80031980 -/* 032560 80031960 93AA0001 */ lbu $t2, 1($sp) -/* 032564 80031964 8FA90014 */ lw $t1, 0x14($sp) -/* 032568 80031968 8D280000 */ lw $t0, ($t1) -/* 03256C 8003196C 25080001 */ addiu $t0, $t0, 1 -/* 032570 80031970 AD280000 */ sw $t0, ($t1) -/* 032574 80031974 93A80000 */ lbu $t0, ($sp) -/* 032578 80031978 010A4025 */ or $t0, $t0, $t2 -/* 03257C 8003197C A3A80000 */ sb $t0, ($sp) -.L80031980: -/* 032580 80031980 000A5040 */ sll $t2, $t2, 1 -/* 032584 80031984 A3AA0001 */ sb $t2, 1($sp) -/* 032588 80031988 00007025 */ move $t6, $zero -.L8003198C: -/* 03258C 8003198C 3C098012 */ lui $t1, %hi(D_8011D370) # $t1, 0x8012 -/* 032590 80031990 3C088012 */ lui $t0, %hi(D_8011D378) # $t0, 0x8012 -/* 032594 80031994 00007825 */ move $t7, $zero -/* 032598 80031998 8D29D370 */ lw $t1, %lo(D_8011D370)($t1) -/* 03259C 8003199C 8D08D378 */ lw $t0, %lo(D_8011D378)($t0) -.L800319A0: -/* 0325A0 800319A0 8D2A0000 */ lw $t2, ($t1) -/* 0325A4 800319A4 59400006 */ blezl $t2, .L800319C0 -/* 0325A8 800319A8 95420000 */ lhu $v0, ($t2) -/* 0325AC 800319AC 3C0B8000 */ lui $t3, %hi(D_80000018) # $t3, 0x8000 -/* 0325B0 800319B0 016A5825 */ or $t3, $t3, $t2 -/* 0325B4 800319B4 0800C6C6 */ j func_80031B18 -/* 0325B8 800319B8 8D6B0018 */ lw $t3, %lo(D_80000018)($t3) - -/* 0325BC 800319BC 95420000 */ lhu $v0, ($t2) -.L800319C0: -/* 0325C0 800319C0 C4A80000 */ lwc1 $f8, ($a1) -/* 0325C4 800319C4 C4AA0004 */ lwc1 $f10, 4($a1) -/* 0325C8 800319C8 00021100 */ sll $v0, $v0, 4 -/* 0325CC 800319CC 004B1021 */ addu $v0, $v0, $t3 -/* 0325D0 800319D0 C4400000 */ lwc1 $f0, ($v0) -/* 0325D4 800319D4 C4420004 */ lwc1 $f2, 4($v0) -/* 0325D8 800319D8 C4440008 */ lwc1 $f4, 8($v0) -/* 0325DC 800319DC 46004202 */ mul.s $f8, $f8, $f0 -/* 0325E0 800319E0 C4B00008 */ lwc1 $f16, 8($a1) -/* 0325E4 800319E4 C446000C */ lwc1 $f6, 0xc($v0) -/* 0325E8 800319E8 46025282 */ mul.s $f10, $f10, $f2 -/* 0325EC 800319EC 3C01800E */ lui $at, %hi(D_800E5F70) # $at, 0x800e -/* 0325F0 800319F0 46048402 */ mul.s $f16, $f16, $f4 -/* 0325F4 800319F4 460A4200 */ add.s $f8, $f8, $f10 -/* 0325F8 800319F8 46104200 */ add.s $f8, $f8, $f16 -/* 0325FC 800319FC 46064480 */ add.s $f18, $f8, $f6 -/* 032600 80031A00 C4C80000 */ lwc1 $f8, ($a2) -/* 032604 80031A04 46089481 */ sub.s $f18, $f18, $f8 -/* 032608 80031A08 C4285F70 */ lwc1 $f8, %lo(D_800E5F70)($at) -/* 03260C 80031A0C 46089034 */ c.olt.s $f18, $f8 -/* 032610 80031A10 45000041 */ bc1f .L80031B18 -/* 032614 80031A14 3C014040 */ li $at, 0x40400000 # 3.000000 -/* 032618 80031A18 44815000 */ mtc1 $at, $f10 -/* 03261C 80031A1C C4C80000 */ lwc1 $f8, ($a2) -/* 032620 80031A20 460A4200 */ add.s $f8, $f8, $f10 -/* 032624 80031A24 46004207 */ neg.s $f8, $f8 -/* 032628 80031A28 46089036 */ c.ole.s $f18, $f8 -/* 03262C 80031A2C 4501003A */ bc1t .L80031B18 -/* 032630 80031A30 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 032634 80031A34 44815000 */ mtc1 $at, $f10 -/* 032638 80031A38 C4A00000 */ lwc1 $f0, ($a1) -/* 03263C 80031A3C C4A20004 */ lwc1 $f2, 4($a1) -/* 032640 80031A40 C4A40008 */ lwc1 $f4, 8($a1) -/* 032644 80031A44 240C0003 */ li $t4, 3 -.L80031A48: -/* 032648 80031A48 95430002 */ lhu $v1, 2($t2) -/* 03264C 80031A4C 0000C025 */ move $t8, $zero -/* 032650 80031A50 30798000 */ andi $t9, $v1, 0x8000 -/* 032654 80031A54 53200004 */ beql $t9, $zero, .L80031A68 -/* 032658 80031A58 00031900 */ sll $v1, $v1, 4 -/* 03265C 80031A5C 30637FFF */ andi $v1, $v1, 0x7fff -/* 032660 80031A60 24180001 */ li $t8, 1 -/* 032664 80031A64 00031900 */ sll $v1, $v1, 4 -.L80031A68: -/* 032668 80031A68 006B1821 */ addu $v1, $v1, $t3 -/* 03266C 80031A6C C4660000 */ lwc1 $f6, ($v1) -/* 032670 80031A70 C4680004 */ lwc1 $f8, 4($v1) -/* 032674 80031A74 46060182 */ mul.s $f6, $f0, $f6 -/* 032678 80031A78 00000000 */ nop -/* 03267C 80031A7C 46081202 */ mul.s $f8, $f2, $f8 -/* 032680 80031A80 46083180 */ add.s $f6, $f6, $f8 -/* 032684 80031A84 C4680008 */ lwc1 $f8, 8($v1) -/* 032688 80031A88 46082202 */ mul.s $f8, $f4, $f8 -/* 03268C 80031A8C 46083180 */ add.s $f6, $f6, $f8 -/* 032690 80031A90 C468000C */ lwc1 $f8, 0xc($v1) -/* 032694 80031A94 13000002 */ beqz $t8, .L80031AA0 -/* 032698 80031A98 46083180 */ add.s $f6, $f6, $f8 -/* 03269C 80031A9C 46003187 */ neg.s $f6, $f6 -.L80031AA0: -/* 0326A0 80031AA0 460A3036 */ c.ole.s $f6, $f10 -/* 0326A4 80031AA4 4502001D */ bc1fl .L80031B1C -/* 0326A8 80031AA8 2508FFFF */ addiu $t0, $t0, -1 -/* 0326AC 80031AAC 258CFFFF */ addiu $t4, $t4, -1 -/* 0326B0 80031AB0 1580FFE5 */ bnez $t4, .L80031A48 -/* 0326B4 80031AB4 254A0002 */ addiu $t2, $t2, 2 -/* 0326B8 80031AB8 C4400000 */ lwc1 $f0, ($v0) -/* 0326BC 80031ABC C4420004 */ lwc1 $f2, 4($v0) -/* 0326C0 80031AC0 C4A60000 */ lwc1 $f6, ($a1) -/* 0326C4 80031AC4 46120002 */ mul.s $f0, $f0, $f18 -/* 0326C8 80031AC8 C4440008 */ lwc1 $f4, 8($v0) -/* 0326CC 80031ACC 25CE0001 */ addiu $t6, $t6, 1 -/* 0326D0 80031AD0 46121082 */ mul.s $f2, $f2, $f18 -/* 0326D4 80031AD4 29C1000B */ slti $at, $t6, 0xb -/* 0326D8 80031AD8 240F0001 */ li $t7, 1 -/* 0326DC 80031ADC 46122102 */ mul.s $f4, $f4, $f18 -/* 0326E0 80031AE0 46003001 */ sub.s $f0, $f6, $f0 -/* 0326E4 80031AE4 C4A60004 */ lwc1 $f6, 4($a1) -/* 0326E8 80031AE8 46023081 */ sub.s $f2, $f6, $f2 -/* 0326EC 80031AEC C4A60008 */ lwc1 $f6, 8($a1) -/* 0326F0 80031AF0 14200005 */ bnez $at, .L80031B08 -/* 0326F4 80031AF4 46043101 */ sub.s $f4, $f6, $f4 -/* 0326F8 80031AF8 00007825 */ move $t7, $zero -/* 0326FC 80031AFC C4800000 */ lwc1 $f0, ($a0) -/* 032700 80031B00 C4820004 */ lwc1 $f2, 4($a0) -/* 032704 80031B04 C4840008 */ lwc1 $f4, 8($a0) -.L80031B08: -/* 032708 80031B08 E4A00000 */ swc1 $f0, ($a1) -/* 03270C 80031B0C E4A20004 */ swc1 $f2, 4($a1) -/* 032710 80031B10 0800C6C9 */ j func_80031B24 -/* 032714 80031B14 E4A40008 */ swc1 $f4, 8($a1) - diff --git a/asm/non_matchings/unknown_0255E0/func_80031B18.s b/asm/non_matchings/unknown_0255E0/func_80031B18.s deleted file mode 100644 index 57cb93a5..00000000 --- a/asm/non_matchings/unknown_0255E0/func_80031B18.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_80031B18 -.L80031B18: -/* 032718 80031B18 2508FFFF */ addiu $t0, $t0, -1 -.L80031B1C: -/* 03271C 80031B1C 1500FFA0 */ bnez $t0, .L800319A0 -/* 032720 80031B20 25290004 */ addiu $t1, $t1, 4 diff --git a/asm/non_matchings/unknown_0255E0/func_80031B24.s b/asm/non_matchings/unknown_0255E0/func_80031B24.s deleted file mode 100644 index 25666768..00000000 --- a/asm/non_matchings/unknown_0255E0/func_80031B24.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_80031B24 -/* 032724 80031B24 15E0FF99 */ bnez $t7, .L8003198C -/* 032728 80031B28 00000000 */ nop -/* 03272C 80031B2C 8FA80010 */ lw $t0, 0x10($sp) -/* 032730 80031B30 2484000C */ addiu $a0, $a0, 0xc -/* 032734 80031B34 24A5000C */ addiu $a1, $a1, 0xc -/* 032738 80031B38 2508FFFF */ addiu $t0, $t0, -1 -/* 03273C 80031B3C 24C60004 */ addiu $a2, $a2, 4 -/* 032740 80031B40 24E70001 */ addiu $a3, $a3, 1 -/* 032744 80031B44 1500FEB6 */ bnez $t0, .L80031620 -/* 032748 80031B48 AFA80010 */ sw $t0, 0x10($sp) -.L80031B4C: -/* 03274C 80031B4C 03E00008 */ jr $ra -/* 032750 80031B50 83A20000 */ lb $v0, ($sp) - -/* 032754 80031B54 00000000 */ nop -/* 032758 80031B58 00000000 */ nop -/* 03275C 80031B5C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_070110/func_8006F940.s b/asm/non_matchings/unknown_070110/func_8006F940.s deleted file mode 100644 index e43111ce..00000000 --- a/asm/non_matchings/unknown_070110/func_8006F940.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel get_rng_seed -/* 070540 8006F940 3C02800E */ lui $v0, 0x800e -/* 070544 8006F944 03E00008 */ jr $ra -/* 070548 8006F948 8C42D434 */ lw $v0, -0x2bcc($v0) - diff --git a/asm/non_matchings/unknown_070110/func_8007066C.s b/asm/non_matchings/unknown_070110/func_8007066C.s deleted file mode 100644 index 55ec4f74..00000000 --- a/asm/non_matchings/unknown_070110/func_8007066C.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel func_8007066C -/* 07126C 8007066C 00854025 */ or $t0, $a0, $a1 -/* 071270 80070670 14080003 */ bne $zero, $t0, .L80070680 -/* 071274 80070674 00000000 */ nop -/* 071278 80070678 03E00008 */ jr $ra -/* 07127C 8007067C 24020000 */ li $v0, 0 - -.L80070680: -/* 071280 80070680 04800005 */ bltz $a0, .L80070698 -/* 071284 80070684 00000000 */ nop -/* 071288 80070688 04A2000B */ bltzl $a1, .L800706B8 -/* 07128C 8007068C 00052823 */ negu $a1, $a1 -/* 071290 80070690 0801C1B2 */ j func_800706C8 -/* 071294 80070694 24020000 */ li $v0, 0 - -.L80070698: -/* 071298 80070698 04A00003 */ bltz $a1, .L800706A8 -/* 07129C 8007069C 00042023 */ negu $a0, $a0 -/* 0712A0 800706A0 0801C1AF */ j func_800706BC -/* 0712A4 800706A4 3402C000 */ li $v0, 49152 - -.L800706A8: -/* 0712A8 800706A8 00052823 */ negu $a1, $a1 -/* 0712AC 800706AC 0801C1B2 */ j func_800706C8 -/* 0712B0 800706B0 34028000 */ li $v0, 32768 - -/* 0712B4 800706B4 00052823 */ negu $a1, $a1 -.L800706B8: -/* 0712B8 800706B8 24024000 */ li $v0, 16384 diff --git a/asm/non_matchings/unknown_070110/func_800706BC.s b/asm/non_matchings/unknown_070110/func_800706BC.s deleted file mode 100644 index 332a4f66..00000000 --- a/asm/non_matchings/unknown_070110/func_800706BC.s +++ /dev/null @@ -1,4 +0,0 @@ -glabel func_800706BC -/* 0712BC 800706BC 00852026 */ xor $a0, $a0, $a1 -/* 0712C0 800706C0 00852826 */ xor $a1, $a0, $a1 -/* 0712C4 800706C4 00852026 */ xor $a0, $a0, $a1 diff --git a/asm/non_matchings/unknown_072E50/func_80075E60.s b/asm/non_matchings/unknown_072E50/func_80075E60.s index d4b74114..bf60232a 100644 --- a/asm/non_matchings/unknown_072E50/func_80075E60.s +++ b/asm/non_matchings/unknown_072E50/func_80075E60.s @@ -83,7 +83,7 @@ glabel func_80075E60 /* 076B8C 80075F8C AFA40064 */ sw $a0, 0x64($sp) /* 076B90 80075F90 8FA50064 */ lw $a1, 0x64($sp) /* 076B94 80075F94 AE020000 */ sw $v0, ($s0) -/* 076B98 80075F98 0C034138 */ jal func_800D04E0 +/* 076B98 80075F98 0C034138 */ jal memzero /* 076B9C 80075F9C 00402025 */ move $a0, $v0 /* 076BA0 80075FA0 8FAB0068 */ lw $t3, 0x68($sp) /* 076BA4 80075FA4 8E030000 */ lw $v1, ($s0) diff --git a/asm/non_matchings/unknown_0AEE70/func_800B7460.s b/asm/non_matchings/unknown_0AEE70/func_800B7460.s index 03ef1a1e..2d14f015 100644 --- a/asm/non_matchings/unknown_0AEE70/func_800B7460.s +++ b/asm/non_matchings/unknown_0AEE70/func_800B7460.s @@ -8,7 +8,7 @@ glabel func_800B7460 /* 0B8078 800B7478 00027100 */ sll $t6, $v0, 4 /* 0B807C 800B747C 05C1008A */ bgez $t6, .L800B76A8 /* 0B8080 800B7480 27A40840 */ addiu $a0, $sp, 0x840 -/* 0B8084 800B7484 0C034138 */ jal func_800D04E0 +/* 0B8084 800B7484 0C034138 */ jal memzero /* 0B8088 800B7488 240501B0 */ li $a1, 432 /* 0B808C 800B748C 3C028013 */ lui $v0, %hi(D_80129FB0) # $v0, 0x8013 /* 0B8090 800B7490 24429FB0 */ addiu $v0, %lo(D_80129FB0) # addiu $v0, $v0, -0x6050 @@ -41,7 +41,7 @@ glabel func_800B7460 /* 0B80FC 800B74FC 0C032768 */ jal bcopy /* 0B8100 800B7500 AFAC0884 */ sw $t4, 0x884($sp) /* 0B8104 800B7504 27A40240 */ addiu $a0, $sp, 0x240 -/* 0B8108 800B7508 0C034138 */ jal func_800D04E0 +/* 0B8108 800B7508 0C034138 */ jal memzero /* 0B810C 800B750C 24050200 */ li $a1, 512 /* 0B8110 800B7510 27A40038 */ addiu $a0, $sp, 0x38 /* 0B8114 800B7514 0C009165 */ jal func_80024594 diff --git a/asm/non_matchings/unknown_0B8920/func_800C6274.s b/asm/non_matchings/unknown_0B8920/gzip_huft_build.s similarity index 99% rename from asm/non_matchings/unknown_0B8920/func_800C6274.s rename to asm/non_matchings/unknown_0B8920/gzip_huft_build.s index a3b1ed23..90cb7cbd 100644 --- a/asm/non_matchings/unknown_0B8920/func_800C6274.s +++ b/asm/non_matchings/unknown_0B8920/gzip_huft_build.s @@ -1,4 +1,4 @@ -glabel func_800C6274 +glabel gzip_huft_build /* 0C6E74 800C6274 27BDFA08 */ addiu $sp, $sp, -0x5f8 /* 0C6E78 800C6278 AFB20020 */ sw $s2, 0x20($sp) /* 0C6E7C 800C627C AFB1001C */ sw $s1, 0x1c($sp) @@ -16,7 +16,7 @@ glabel func_800C6274 /* 0C6EAC 800C62AC AFA60600 */ sw $a2, 0x600($sp) /* 0C6EB0 800C62B0 AFA70604 */ sw $a3, 0x604($sp) /* 0C6EB4 800C62B4 24050044 */ li $a1, 68 -/* 0C6EB8 800C62B8 0C034138 */ jal func_800D04E0 +/* 0C6EB8 800C62B8 0C034138 */ jal memzero /* 0C6EBC 800C62BC 02202025 */ move $a0, $s1 /* 0C6EC0 800C62C0 8FAE05FC */ lw $t6, 0x5fc($sp) /* 0C6EC4 800C62C4 0240F025 */ move $fp, $s2 diff --git a/asm/non_matchings/unknown_0CCF90/func_800CC5A0.s b/asm/non_matchings/unknown_0CCF90/func_800CC5A0.s index fe2cf382..8a207faf 100644 --- a/asm/non_matchings/unknown_0CCF90/func_800CC5A0.s +++ b/asm/non_matchings/unknown_0CCF90/func_800CC5A0.s @@ -137,7 +137,7 @@ glabel func_800CC5A0 /* 0CD3A8 800CC7A8 AC2338A4 */ sw $v1, %lo(D_800E38A4)($at) /* 0CD3AC 800CC7AC 3C048000 */ lui $a0, %hi(osAppNMIBuffer) # $a0, 0x8000 /* 0CD3B0 800CC7B0 2484031C */ addiu $a0, %lo(osAppNMIBuffer) # addiu $a0, $a0, 0x31c -/* 0CD3B4 800CC7B4 0C034138 */ jal func_800D04E0 +/* 0CD3B4 800CC7B4 0C034138 */ jal memzero /* 0CD3B8 800CC7B8 24050040 */ li $a1, 64 .L800CC7BC: /* 0CD3BC 800CC7BC 3C0DA460 */ lui $t5, %hi(D_A4600010) # $t5, 0xa460 diff --git a/asm/non_matchings/unknown_0D10E0/func_800D04E0.s b/asm/non_matchings/unknown_0D10E0/memzero.s similarity index 99% rename from asm/non_matchings/unknown_0D10E0/func_800D04E0.s rename to asm/non_matchings/unknown_0D10E0/memzero.s index b42b0b59..36180d98 100644 --- a/asm/non_matchings/unknown_0D10E0/func_800D04E0.s +++ b/asm/non_matchings/unknown_0D10E0/memzero.s @@ -1,4 +1,4 @@ -glabel func_800D04E0 +glabel memzero /* 0D10E0 800D04E0 28A1000C */ slti $at, $a1, 0xc /* 0D10E4 800D04E4 1420001D */ bnez $at, .L800D055C /* 0D10E8 800D04E8 00041823 */ negu $v1, $a0 diff --git a/asm/non_matchings/unknown_0D3020/func_800D2B10.s b/asm/non_matchings/unknown_0D3020/func_800D2B10.s index 0564551a..8a62a75a 100644 --- a/asm/non_matchings/unknown_0D3020/func_800D2B10.s +++ b/asm/non_matchings/unknown_0D3020/func_800D2B10.s @@ -3,7 +3,7 @@ glabel func_800D2B10 /* 0D3714 800D2B14 AFBF0014 */ sw $ra, 0x14($sp) /* 0D3718 800D2B18 3C04800E */ lui $a0, %hi(D_800E4810) # $a0, 0x800e /* 0D371C 800D2B1C 24844810 */ addiu $a0, %lo(D_800E4810) # addiu $a0, $a0, 0x4810 -/* 0D3720 800D2B20 0C034138 */ jal func_800D04E0 +/* 0D3720 800D2B20 0C034138 */ jal memzero /* 0D3724 800D2B24 24050060 */ li $a1, 96 /* 0D3728 800D2B28 3C0E800E */ lui $t6, %hi(D_800E4810) # $t6, 0x800e /* 0D372C 800D2B2C 25CE4810 */ addiu $t6, %lo(D_800E4810) # addiu $t6, $t6, 0x4810 diff --git a/asm/unknown_0251F0.s b/asm/unknown_0251F0.s new file mode 100644 index 00000000..297976ec --- /dev/null +++ b/asm/unknown_0251F0.s @@ -0,0 +1,12 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x800245F0 */ + +.include "globals.inc" +.include "macros.inc" + +.set noat # allow manual use of $at +.set noreorder # dont insert nops after branches +.set gp=64 # 64-bit instructions are used + +.include "asm/unknown_0251F0/func_800245F0.s" +.include "asm/unknown_0251F0/func_80024744.s" diff --git a/asm/non_matchings/unknown_00BC20/func_800245F0.s b/asm/unknown_0251F0/func_800245F0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800245F0.s rename to asm/unknown_0251F0/func_800245F0.s diff --git a/asm/non_matchings/unknown_00BC20/func_80024744.s b/asm/unknown_0251F0/func_80024744.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80024744.s rename to asm/unknown_0251F0/func_80024744.s diff --git a/asm/unknown_031D30.s b/asm/unknown_031D30.s new file mode 100644 index 00000000..4f13b63e --- /dev/null +++ b/asm/unknown_031D30.s @@ -0,0 +1,13 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80031130 */ + +.include "globals.inc" +.include "macros.inc" + +.set noat # allow manual use of $at +.set noreorder # dont insert nops after branches +.set gp=64 # 64-bit instructions are used + +.include "asm/unknown_031D30/func_80031130.s" +.include "asm/unknown_031D30/func_800314DC.s" +.include "asm/unknown_031D30/func_80031600.s" diff --git a/asm/non_matchings/unknown_0255E0/func_80031130.s b/asm/unknown_031D30/func_80031130.s similarity index 100% rename from asm/non_matchings/unknown_0255E0/func_80031130.s rename to asm/unknown_031D30/func_80031130.s diff --git a/asm/non_matchings/unknown_0255E0/func_800314DC.s b/asm/unknown_031D30/func_800314DC.s similarity index 100% rename from asm/non_matchings/unknown_0255E0/func_800314DC.s rename to asm/unknown_031D30/func_800314DC.s diff --git a/asm/non_matchings/unknown_0255E0/func_80031600.s b/asm/unknown_031D30/func_80031600.s similarity index 51% rename from asm/non_matchings/unknown_0255E0/func_80031600.s rename to asm/unknown_031D30/func_80031600.s index f0060d91..e3081a99 100644 --- a/asm/non_matchings/unknown_0255E0/func_80031600.s +++ b/asm/unknown_031D30/func_80031600.s @@ -23,7 +23,7 @@ glabel func_80031600 /* 032248 80031648 95420000 */ lhu $v0, ($t2) /* 03224C 8003164C 3C0B8000 */ lui $t3, %hi(D_80000018) # $t3, 0x8000 /* 032250 80031650 016A5825 */ or $t3, $t3, $t2 -/* 032254 80031654 0800C651 */ j func_80031944 +/* 032254 80031654 0800C651 */ j .L80031944 /* 032258 80031658 8D6B0018 */ lw $t3, %lo(D_80000018)($t3) /* 03225C 8003165C 95420000 */ lhu $v0, ($t2) @@ -152,7 +152,7 @@ glabel func_80031600 /* 032434 80031834 C4C60000 */ lwc1 $f6, ($a2) /* 032438 80031838 46003001 */ sub.s $f0, $f6, $f0 /* 03243C 8003183C 46020083 */ div.s $f2, $f0, $f2 -/* 032440 80031840 0800C632 */ j func_800318C8 +/* 032440 80031840 0800C632 */ j .L800318C8 /* 032444 80031844 C4A00000 */ lwc1 $f0, ($a1) .L80031848: @@ -189,3 +189,194 @@ glabel func_80031600 /* 0324BC 800318BC 46023081 */ sub.s $f2, $f6, $f2 /* 0324C0 800318C0 C4A60008 */ lwc1 $f6, 8($a1) /* 0324C4 800318C4 46043101 */ sub.s $f4, $f6, $f4 + +.L800318C8: +/* 0324C8 800318C8 3C038012 */ lui $v1, %hi(D_8011B0F0) # $v1, 0x8012 +/* 0324CC 800318CC 8C63B0F0 */ lw $v1, %lo(D_8011B0F0)($v1) +/* 0324D0 800318D0 5460000B */ bnezl $v1, .L80031900 +/* 0324D4 800318D4 81AC0000 */ lb $t4, ($t5) +/* 0324D8 800318D8 C4460000 */ lwc1 $f6, ($v0) +/* 0324DC 800318DC 3C018012 */ lui $at, %hi(D_8011B0E4) # $at, 0x8012 +/* 0324E0 800318E0 E426B0E4 */ swc1 $f6, %lo(D_8011B0E4)($at) +/* 0324E4 800318E4 C4460004 */ lwc1 $f6, 4($v0) +/* 0324E8 800318E8 3C018012 */ lui $at, %hi(D_8011B0E8) # $at, 0x8012 +/* 0324EC 800318EC E426B0E8 */ swc1 $f6, %lo(D_8011B0E8)($at) +/* 0324F0 800318F0 C4460008 */ lwc1 $f6, 8($v0) +/* 0324F4 800318F4 3C018012 */ lui $at, %hi(D_8011B0EC) # $at, 0x8012 +/* 0324F8 800318F8 E426B0EC */ swc1 $f6, %lo(D_8011B0EC)($at) +/* 0324FC 800318FC 81AC0000 */ lb $t4, ($t5) +.L80031900: +/* 032500 80031900 80E20000 */ lb $v0, ($a3) +/* 032504 80031904 004C082A */ slt $at, $v0, $t4 +/* 032508 80031908 50200003 */ beql $at, $zero, .L80031918 +/* 03250C 8003190C 25CE0001 */ addiu $t6, $t6, 1 +/* 032510 80031910 A0EC0000 */ sb $t4, ($a3) +/* 032514 80031914 25CE0001 */ addiu $t6, $t6, 1 +.L80031918: +/* 032518 80031918 29C1000B */ slti $at, $t6, 0xb +/* 03251C 8003191C 14200005 */ bnez $at, .L80031934 +/* 032520 80031920 240F0001 */ li $t7, 1 +/* 032524 80031924 00007825 */ move $t7, $zero +/* 032528 80031928 C4800000 */ lwc1 $f0, ($a0) +/* 03252C 8003192C C4820004 */ lwc1 $f2, 4($a0) +/* 032530 80031930 C4840008 */ lwc1 $f4, 8($a0) +.L80031934: +/* 032534 80031934 E4A00000 */ swc1 $f0, ($a1) +/* 032538 80031938 E4A20004 */ swc1 $f2, 4($a1) +/* 03253C 8003193C 0800C655 */ j func_80031954 +/* 032540 80031940 E4A40008 */ swc1 $f4, 8($a1) +.L80031944: +/* 032544 80031944 2508FFFF */ addiu $t0, $t0, -1 +.L80031948: +/* 032548 80031948 25AD0001 */ addiu $t5, $t5, 1 +/* 03254C 8003194C 1500FF3C */ bnez $t0, .L80031640 +/* 032550 80031950 25290004 */ addiu $t1, $t1, 4 +glabel func_80031954 +/* 032554 80031954 15E0FF33 */ bnez $t7, .L80031624 +/* 032558 80031958 00000000 */ nop +/* 03255C 8003195C 11C00008 */ beqz $t6, .L80031980 +/* 032560 80031960 93AA0001 */ lbu $t2, 1($sp) +/* 032564 80031964 8FA90014 */ lw $t1, 0x14($sp) +/* 032568 80031968 8D280000 */ lw $t0, ($t1) +/* 03256C 8003196C 25080001 */ addiu $t0, $t0, 1 +/* 032570 80031970 AD280000 */ sw $t0, ($t1) +/* 032574 80031974 93A80000 */ lbu $t0, ($sp) +/* 032578 80031978 010A4025 */ or $t0, $t0, $t2 +/* 03257C 8003197C A3A80000 */ sb $t0, ($sp) +.L80031980: +/* 032580 80031980 000A5040 */ sll $t2, $t2, 1 +/* 032584 80031984 A3AA0001 */ sb $t2, 1($sp) +/* 032588 80031988 00007025 */ move $t6, $zero +.L8003198C: +/* 03258C 8003198C 3C098012 */ lui $t1, %hi(D_8011D370) # $t1, 0x8012 +/* 032590 80031990 3C088012 */ lui $t0, %hi(D_8011D378) # $t0, 0x8012 +/* 032594 80031994 00007825 */ move $t7, $zero +/* 032598 80031998 8D29D370 */ lw $t1, %lo(D_8011D370)($t1) +/* 03259C 8003199C 8D08D378 */ lw $t0, %lo(D_8011D378)($t0) +.L800319A0: +/* 0325A0 800319A0 8D2A0000 */ lw $t2, ($t1) +/* 0325A4 800319A4 59400006 */ blezl $t2, .L800319C0 +/* 0325A8 800319A8 95420000 */ lhu $v0, ($t2) +/* 0325AC 800319AC 3C0B8000 */ lui $t3, %hi(D_80000018) # $t3, 0x8000 +/* 0325B0 800319B0 016A5825 */ or $t3, $t3, $t2 +/* 0325B4 800319B4 0800C6C6 */ j .L80031B18 +/* 0325B8 800319B8 8D6B0018 */ lw $t3, %lo(D_80000018)($t3) + +/* 0325BC 800319BC 95420000 */ lhu $v0, ($t2) +.L800319C0: +/* 0325C0 800319C0 C4A80000 */ lwc1 $f8, ($a1) +/* 0325C4 800319C4 C4AA0004 */ lwc1 $f10, 4($a1) +/* 0325C8 800319C8 00021100 */ sll $v0, $v0, 4 +/* 0325CC 800319CC 004B1021 */ addu $v0, $v0, $t3 +/* 0325D0 800319D0 C4400000 */ lwc1 $f0, ($v0) +/* 0325D4 800319D4 C4420004 */ lwc1 $f2, 4($v0) +/* 0325D8 800319D8 C4440008 */ lwc1 $f4, 8($v0) +/* 0325DC 800319DC 46004202 */ mul.s $f8, $f8, $f0 +/* 0325E0 800319E0 C4B00008 */ lwc1 $f16, 8($a1) +/* 0325E4 800319E4 C446000C */ lwc1 $f6, 0xc($v0) +/* 0325E8 800319E8 46025282 */ mul.s $f10, $f10, $f2 +/* 0325EC 800319EC 3C01800E */ lui $at, %hi(D_800E5F70) # $at, 0x800e +/* 0325F0 800319F0 46048402 */ mul.s $f16, $f16, $f4 +/* 0325F4 800319F4 460A4200 */ add.s $f8, $f8, $f10 +/* 0325F8 800319F8 46104200 */ add.s $f8, $f8, $f16 +/* 0325FC 800319FC 46064480 */ add.s $f18, $f8, $f6 +/* 032600 80031A00 C4C80000 */ lwc1 $f8, ($a2) +/* 032604 80031A04 46089481 */ sub.s $f18, $f18, $f8 +/* 032608 80031A08 C4285F70 */ lwc1 $f8, %lo(D_800E5F70)($at) +/* 03260C 80031A0C 46089034 */ c.olt.s $f18, $f8 +/* 032610 80031A10 45000041 */ bc1f .L80031B18 +/* 032614 80031A14 3C014040 */ li $at, 0x40400000 # 3.000000 +/* 032618 80031A18 44815000 */ mtc1 $at, $f10 +/* 03261C 80031A1C C4C80000 */ lwc1 $f8, ($a2) +/* 032620 80031A20 460A4200 */ add.s $f8, $f8, $f10 +/* 032624 80031A24 46004207 */ neg.s $f8, $f8 +/* 032628 80031A28 46089036 */ c.ole.s $f18, $f8 +/* 03262C 80031A2C 4501003A */ bc1t .L80031B18 +/* 032630 80031A30 3C014080 */ li $at, 0x40800000 # 4.000000 +/* 032634 80031A34 44815000 */ mtc1 $at, $f10 +/* 032638 80031A38 C4A00000 */ lwc1 $f0, ($a1) +/* 03263C 80031A3C C4A20004 */ lwc1 $f2, 4($a1) +/* 032640 80031A40 C4A40008 */ lwc1 $f4, 8($a1) +/* 032644 80031A44 240C0003 */ li $t4, 3 +.L80031A48: +/* 032648 80031A48 95430002 */ lhu $v1, 2($t2) +/* 03264C 80031A4C 0000C025 */ move $t8, $zero +/* 032650 80031A50 30798000 */ andi $t9, $v1, 0x8000 +/* 032654 80031A54 53200004 */ beql $t9, $zero, .L80031A68 +/* 032658 80031A58 00031900 */ sll $v1, $v1, 4 +/* 03265C 80031A5C 30637FFF */ andi $v1, $v1, 0x7fff +/* 032660 80031A60 24180001 */ li $t8, 1 +/* 032664 80031A64 00031900 */ sll $v1, $v1, 4 +.L80031A68: +/* 032668 80031A68 006B1821 */ addu $v1, $v1, $t3 +/* 03266C 80031A6C C4660000 */ lwc1 $f6, ($v1) +/* 032670 80031A70 C4680004 */ lwc1 $f8, 4($v1) +/* 032674 80031A74 46060182 */ mul.s $f6, $f0, $f6 +/* 032678 80031A78 00000000 */ nop +/* 03267C 80031A7C 46081202 */ mul.s $f8, $f2, $f8 +/* 032680 80031A80 46083180 */ add.s $f6, $f6, $f8 +/* 032684 80031A84 C4680008 */ lwc1 $f8, 8($v1) +/* 032688 80031A88 46082202 */ mul.s $f8, $f4, $f8 +/* 03268C 80031A8C 46083180 */ add.s $f6, $f6, $f8 +/* 032690 80031A90 C468000C */ lwc1 $f8, 0xc($v1) +/* 032694 80031A94 13000002 */ beqz $t8, .L80031AA0 +/* 032698 80031A98 46083180 */ add.s $f6, $f6, $f8 +/* 03269C 80031A9C 46003187 */ neg.s $f6, $f6 +.L80031AA0: +/* 0326A0 80031AA0 460A3036 */ c.ole.s $f6, $f10 +/* 0326A4 80031AA4 4502001D */ bc1fl .L80031B1C +/* 0326A8 80031AA8 2508FFFF */ addiu $t0, $t0, -1 +/* 0326AC 80031AAC 258CFFFF */ addiu $t4, $t4, -1 +/* 0326B0 80031AB0 1580FFE5 */ bnez $t4, .L80031A48 +/* 0326B4 80031AB4 254A0002 */ addiu $t2, $t2, 2 +/* 0326B8 80031AB8 C4400000 */ lwc1 $f0, ($v0) +/* 0326BC 80031ABC C4420004 */ lwc1 $f2, 4($v0) +/* 0326C0 80031AC0 C4A60000 */ lwc1 $f6, ($a1) +/* 0326C4 80031AC4 46120002 */ mul.s $f0, $f0, $f18 +/* 0326C8 80031AC8 C4440008 */ lwc1 $f4, 8($v0) +/* 0326CC 80031ACC 25CE0001 */ addiu $t6, $t6, 1 +/* 0326D0 80031AD0 46121082 */ mul.s $f2, $f2, $f18 +/* 0326D4 80031AD4 29C1000B */ slti $at, $t6, 0xb +/* 0326D8 80031AD8 240F0001 */ li $t7, 1 +/* 0326DC 80031ADC 46122102 */ mul.s $f4, $f4, $f18 +/* 0326E0 80031AE0 46003001 */ sub.s $f0, $f6, $f0 +/* 0326E4 80031AE4 C4A60004 */ lwc1 $f6, 4($a1) +/* 0326E8 80031AE8 46023081 */ sub.s $f2, $f6, $f2 +/* 0326EC 80031AEC C4A60008 */ lwc1 $f6, 8($a1) +/* 0326F0 80031AF0 14200005 */ bnez $at, .L80031B08 +/* 0326F4 80031AF4 46043101 */ sub.s $f4, $f6, $f4 +/* 0326F8 80031AF8 00007825 */ move $t7, $zero +/* 0326FC 80031AFC C4800000 */ lwc1 $f0, ($a0) +/* 032700 80031B00 C4820004 */ lwc1 $f2, 4($a0) +/* 032704 80031B04 C4840008 */ lwc1 $f4, 8($a0) +.L80031B08: +/* 032708 80031B08 E4A00000 */ swc1 $f0, ($a1) +/* 03270C 80031B0C E4A20004 */ swc1 $f2, 4($a1) +/* 032710 80031B10 0800C6C9 */ j func_80031B24 +/* 032714 80031B14 E4A40008 */ swc1 $f4, 8($a1) +.L80031B18: +/* 032718 80031B18 2508FFFF */ addiu $t0, $t0, -1 +.L80031B1C: +/* 03271C 80031B1C 1500FFA0 */ bnez $t0, .L800319A0 +/* 032720 80031B20 25290004 */ addiu $t1, $t1, 4 +glabel func_80031B24 +/* 032724 80031B24 15E0FF99 */ bnez $t7, .L8003198C +/* 032728 80031B28 00000000 */ nop +/* 03272C 80031B2C 8FA80010 */ lw $t0, 0x10($sp) +/* 032730 80031B30 2484000C */ addiu $a0, $a0, 0xc +/* 032734 80031B34 24A5000C */ addiu $a1, $a1, 0xc +/* 032738 80031B38 2508FFFF */ addiu $t0, $t0, -1 +/* 03273C 80031B3C 24C60004 */ addiu $a2, $a2, 4 +/* 032740 80031B40 24E70001 */ addiu $a3, $a3, 1 +/* 032744 80031B44 1500FEB6 */ bnez $t0, .L80031620 +/* 032748 80031B48 AFA80010 */ sw $t0, 0x10($sp) +.L80031B4C: +/* 03274C 80031B4C 03E00008 */ jr $ra +/* 032750 80031B50 83A20000 */ lb $v0, ($sp) + +/* 032754 80031B54 00000000 */ nop +/* 032758 80031B58 00000000 */ nop +/* 03275C 80031B5C 00000000 */ nop + + + diff --git a/asm/unknown_062930.s b/asm/unknown_062930.s new file mode 100644 index 00000000..bd59e96e --- /dev/null +++ b/asm/unknown_062930.s @@ -0,0 +1,11 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80061D30 */ + +.include "globals.inc" +.include "macros.inc" + +.set noat # allow manual use of $at +.set noreorder # dont insert nops after branches +.set gp=64 # 64-bit instructions are used + +.include "asm/unknown_062930/func_80061D30.s" diff --git a/asm/non_matchings/unknown_061D30/func_80061D30.s b/asm/unknown_062930/func_80061D30.s similarity index 100% rename from asm/non_matchings/unknown_061D30/func_80061D30.s rename to asm/unknown_062930/func_80061D30.s diff --git a/asm/unknown_070110.s b/asm/unknown_070110.s new file mode 100644 index 00000000..713595e4 --- /dev/null +++ b/asm/unknown_070110.s @@ -0,0 +1,41 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80065F10 */ + +.include "globals.inc" +.include "macros.inc" + +.set noat # allow manual use of $at +.set noreorder # dont insert nops after branches +.set gp=64 # 64-bit instructions are used + +.include "asm/unknown_070110/func_8006F510.s" +.include "asm/unknown_070110/func_8006F53C.s" +.include "asm/unknown_070110/func_8006F564.s" +.include "asm/unknown_070110/func_8006F5E0.s" +.include "asm/unknown_070110/func_8006F64C.s" +.include "asm/unknown_070110/func_8006F6EC.s" +.include "asm/unknown_070110/func_8006F768.s" +.include "asm/unknown_070110/func_8006F870.s" +.include "asm/unknown_070110/rng.s" +.include "asm/unknown_070110/func_8006F9B8.s" +.include "asm/unknown_070110/func_8006FB60.s" +.include "asm/unknown_070110/func_8006FC30.s" +.include "asm/unknown_070110/func_8006FE04.s" +.include "asm/unknown_070110/func_8006FE30.s" +.include "asm/unknown_070110/func_8006FE74.s" +.include "asm/unknown_070110/func_80070130.s" +.include "asm/unknown_070110/func_800701E4.s" +.include "asm/unknown_070110/func_80070320.s" +.include "asm/unknown_070110/func_800703D8.s" +.include "asm/unknown_070110/func_80070490.s" +.include "asm/unknown_070110/func_800704F0.s" +.include "asm/unknown_070110/func_800705F8.s" +.include "asm/unknown_070110/func_80070638.s" +.include "asm/unknown_070110/func_8007066C.s" +.include "asm/unknown_070110/func_80070750.s" +.include "asm/unknown_070110/func_800707C4.s" +.include "asm/unknown_070110/func_800707F8.s" +.include "asm/unknown_070110/func_8007082C.s" +.include "asm/unknown_070110/func_80070890.s" +.include "asm/unknown_070110/func_80070A2C.s" +.include "asm/unknown_070110/func_80070B04.s" diff --git a/asm/non_matchings/unknown_070110/func_8006F510.s b/asm/unknown_070110/func_8006F510.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F510.s rename to asm/unknown_070110/func_8006F510.s diff --git a/asm/non_matchings/unknown_070110/func_8006F53C.s b/asm/unknown_070110/func_8006F53C.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F53C.s rename to asm/unknown_070110/func_8006F53C.s diff --git a/asm/non_matchings/unknown_070110/func_8006F564.s b/asm/unknown_070110/func_8006F564.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F564.s rename to asm/unknown_070110/func_8006F564.s diff --git a/asm/non_matchings/unknown_070110/func_8006F5E0.s b/asm/unknown_070110/func_8006F5E0.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F5E0.s rename to asm/unknown_070110/func_8006F5E0.s diff --git a/asm/non_matchings/unknown_070110/func_8006F64C.s b/asm/unknown_070110/func_8006F64C.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F64C.s rename to asm/unknown_070110/func_8006F64C.s diff --git a/asm/non_matchings/unknown_070110/func_8006F6EC.s b/asm/unknown_070110/func_8006F6EC.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F6EC.s rename to asm/unknown_070110/func_8006F6EC.s diff --git a/asm/non_matchings/unknown_070110/func_8006F768.s b/asm/unknown_070110/func_8006F768.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F768.s rename to asm/unknown_070110/func_8006F768.s diff --git a/asm/non_matchings/unknown_070110/func_8006F870.s b/asm/unknown_070110/func_8006F870.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F870.s rename to asm/unknown_070110/func_8006F870.s diff --git a/asm/non_matchings/unknown_070110/func_8006F94C.s b/asm/unknown_070110/func_8006F94C.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F94C.s rename to asm/unknown_070110/func_8006F94C.s diff --git a/asm/non_matchings/unknown_070110/func_8006F9B8.s b/asm/unknown_070110/func_8006F9B8.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006F9B8.s rename to asm/unknown_070110/func_8006F9B8.s diff --git a/asm/non_matchings/unknown_070110/func_8006FB60.s b/asm/unknown_070110/func_8006FB60.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006FB60.s rename to asm/unknown_070110/func_8006FB60.s diff --git a/asm/non_matchings/unknown_070110/func_8006FC30.s b/asm/unknown_070110/func_8006FC30.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006FC30.s rename to asm/unknown_070110/func_8006FC30.s diff --git a/asm/non_matchings/unknown_070110/func_8006FE04.s b/asm/unknown_070110/func_8006FE04.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006FE04.s rename to asm/unknown_070110/func_8006FE04.s diff --git a/asm/non_matchings/unknown_070110/func_8006FE30.s b/asm/unknown_070110/func_8006FE30.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006FE30.s rename to asm/unknown_070110/func_8006FE30.s diff --git a/asm/non_matchings/unknown_070110/func_8006FE74.s b/asm/unknown_070110/func_8006FE74.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_8006FE74.s rename to asm/unknown_070110/func_8006FE74.s diff --git a/asm/non_matchings/unknown_070110/func_80070130.s b/asm/unknown_070110/func_80070130.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_80070130.s rename to asm/unknown_070110/func_80070130.s diff --git a/asm/non_matchings/unknown_070110/func_800701E4.s b/asm/unknown_070110/func_800701E4.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_800701E4.s rename to asm/unknown_070110/func_800701E4.s diff --git a/asm/non_matchings/unknown_070110/func_80070320.s b/asm/unknown_070110/func_80070320.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_80070320.s rename to asm/unknown_070110/func_80070320.s diff --git a/asm/non_matchings/unknown_070110/func_800703D8.s b/asm/unknown_070110/func_800703D8.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_800703D8.s rename to asm/unknown_070110/func_800703D8.s diff --git a/asm/non_matchings/unknown_070110/func_80070490.s b/asm/unknown_070110/func_80070490.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_80070490.s rename to asm/unknown_070110/func_80070490.s diff --git a/asm/non_matchings/unknown_070110/func_800704F0.s b/asm/unknown_070110/func_800704F0.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_800704F0.s rename to asm/unknown_070110/func_800704F0.s diff --git a/asm/non_matchings/unknown_070110/func_800705F8.s b/asm/unknown_070110/func_800705F8.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_800705F8.s rename to asm/unknown_070110/func_800705F8.s diff --git a/asm/non_matchings/unknown_070110/func_80070638.s b/asm/unknown_070110/func_80070638.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_80070638.s rename to asm/unknown_070110/func_80070638.s diff --git a/asm/non_matchings/unknown_070110/func_800706C8.s b/asm/unknown_070110/func_8007066C.s similarity index 59% rename from asm/non_matchings/unknown_070110/func_800706C8.s rename to asm/unknown_070110/func_8007066C.s index 1c486007..6f0589bf 100644 --- a/asm/non_matchings/unknown_070110/func_800706C8.s +++ b/asm/unknown_070110/func_8007066C.s @@ -1,4 +1,33 @@ -glabel func_800706C8 +glabel func_8007066C +/* 07126C 8007066C 00854025 */ or $t0, $a0, $a1 +/* 071270 80070670 14080003 */ bne $zero, $t0, .L80070680 +/* 071274 80070674 00000000 */ nop +/* 071278 80070678 03E00008 */ jr $ra +/* 07127C 8007067C 24020000 */ li $v0, 0 +.L80070680: +/* 071280 80070680 04800005 */ bltz $a0, .L80070698 +/* 071284 80070684 00000000 */ nop +/* 071288 80070688 04A2000B */ bltzl $a1, .L800706B8 +/* 07128C 8007068C 00052823 */ negu $a1, $a1 +/* 071290 80070690 0801C1B2 */ j .L800706C8 +/* 071294 80070694 24020000 */ li $v0, 0 +.L80070698: +/* 071298 80070698 04A00003 */ bltz $a1, .L800706A8 +/* 07129C 8007069C 00042023 */ negu $a0, $a0 +/* 0712A0 800706A0 0801C1AF */ j .L800706BC +/* 0712A4 800706A4 3402C000 */ li $v0, 49152 +.L800706A8: +/* 0712A8 800706A8 00052823 */ negu $a1, $a1 +/* 0712AC 800706AC 0801C1B2 */ j .L800706C8 +/* 0712B0 800706B0 34028000 */ li $v0, 32768 +/* 0712B4 800706B4 00052823 */ negu $a1, $a1 +.L800706B8: +/* 0712B8 800706B8 24024000 */ li $v0, 16384 +.L800706BC: +/* 0712BC 800706BC 00852026 */ xor $a0, $a0, $a1 +/* 0712C0 800706C0 00852826 */ xor $a1, $a0, $a1 +/* 0712C4 800706C4 00852026 */ xor $a0, $a0, $a1 +.L800706C8: /* 0712C8 800706C8 00854023 */ subu $t0, $a0, $a1 /* 0712CC 800706CC 05020012 */ bltzl $t0, .L80070718 /* 0712D0 800706D0 000442F8 */ dsll $t0, $a0, 0xb @@ -19,7 +48,6 @@ glabel func_800706C8 /* 071308 80070708 00481023 */ subu $v0, $v0, $t0 /* 07130C 8007070C 03E00008 */ jr $ra /* 071310 80070710 3042FFFF */ andi $v0, $v0, 0xffff - /* 071314 80070714 000442F8 */ dsll $t0, $a0, 0xb .L80070718: /* 071318 80070718 0105001F */ ddivu $zero, $t0, $a1 diff --git a/asm/non_matchings/unknown_070110/func_80070750.s b/asm/unknown_070110/func_80070750.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_80070750.s rename to asm/unknown_070110/func_80070750.s diff --git a/asm/non_matchings/unknown_070110/func_800707C4.s b/asm/unknown_070110/func_800707C4.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_800707C4.s rename to asm/unknown_070110/func_800707C4.s diff --git a/asm/non_matchings/unknown_070110/func_800707F8.s b/asm/unknown_070110/func_800707F8.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_800707F8.s rename to asm/unknown_070110/func_800707F8.s diff --git a/asm/non_matchings/unknown_070110/func_8007082C.s b/asm/unknown_070110/func_8007082C.s similarity index 96% rename from asm/non_matchings/unknown_070110/func_8007082C.s rename to asm/unknown_070110/func_8007082C.s index 277be0ba..36e86b3b 100644 --- a/asm/non_matchings/unknown_070110/func_8007082C.s +++ b/asm/unknown_070110/func_8007082C.s @@ -27,4 +27,3 @@ glabel func_80070830 /* 071484 80070884 03E00008 */ jr $ra /* 071488 80070888 00000000 */ nop -/* 07148C 8007088C 24844000 */ addiu $a0, $a0, 0x4000 diff --git a/asm/non_matchings/unknown_070110/func_80070890.s b/asm/unknown_070110/func_80070890.s similarity index 98% rename from asm/non_matchings/unknown_070110/func_80070890.s rename to asm/unknown_070110/func_80070890.s index 2f1a092d..2b682f41 100644 --- a/asm/non_matchings/unknown_070110/func_80070890.s +++ b/asm/unknown_070110/func_80070890.s @@ -1,3 +1,4 @@ +/* 07148C 8007088C 24844000 */ addiu $a0, $a0, 0x4000 glabel func_80070890 /* 071490 80070890 00041440 */ sll $v0, $a0, 0x11 /* 071494 80070894 04430003 */ bgezl $v0, .L800708A4 diff --git a/asm/non_matchings/unknown_070110/func_80070A2C.s b/asm/unknown_070110/func_80070A2C.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_80070A2C.s rename to asm/unknown_070110/func_80070A2C.s diff --git a/asm/non_matchings/unknown_070110/func_80070B04.s b/asm/unknown_070110/func_80070B04.s similarity index 100% rename from asm/non_matchings/unknown_070110/func_80070B04.s rename to asm/unknown_070110/func_80070B04.s diff --git a/asm/unknown_070110/rng.s b/asm/unknown_070110/rng.s new file mode 100644 index 00000000..bc781836 --- /dev/null +++ b/asm/unknown_070110/rng.s @@ -0,0 +1,60 @@ +glabel set_rng_seed +/* 07050C 8006F90C 3C01800E */ lui $at, %hi(D_800DD434) +/* 070510 8006F910 03E00008 */ jr $ra +/* 070514 8006F914 AC24D434 */ sw $a0, %lo(D_800DD434)($at) + +glabel save_rng_seed +/* 070518 8006F918 3C04800E */ lui $a0, %hi(D_800DD434) +/* 07051C 8006F91C 8C84D434 */ lw $a0, %lo(D_800DD434)($a0) +/* 070520 8006F920 3C01800E */ lui $at, %hi(D_800DD438) +/* 070524 8006F924 03E00008 */ jr $ra +/* 070528 8006F928 AC24D438 */ sw $a0, %lo(D_800DD438)($at) + +glabel load_rng_seed +/* 07052C 8006F92C 3C04800E */ lui $a0, %hi(D_800DD438) +/* 070530 8006F930 8C84D438 */ lw $a0, %lo(D_800DD438)($a0) +/* 070534 8006F934 3C01800E */ lui $at, %hi(D_800DD434) +/* 070538 8006F938 03E00008 */ jr $ra +/* 07053C 8006F93C AC24D434 */ sw $a0, %lo(D_800DD434)($at) + +glabel get_rng_seed +/* 070540 8006F940 3C02800E */ lui $v0, %hi(D_800DD434) +/* 070544 8006F944 03E00008 */ jr $ra +/* 070548 8006F948 8C42D434 */ lw $v0, %lo(D_800DD434)($v0) + +/* + * func_8006F94C(start, end) = Gets a random number within a range. + * Start is inclusive, end is exclusive; also changes the RNG seed. + * + * func_8006F94C(0, 5) will return a number from 0 to 4. + * func_8006F94C(20, 30) will return a number from 20 to 29. +*/ +glabel func_8006F94C +/* 07054C 8006F94C 3C08800E */ lui $t0, %hi(D_800DD434) # $t0, 0x800e +/* 070550 8006F950 8D08D434 */ lw $t0, %lo(D_800DD434)($t0) +/* 070554 8006F954 3C01800E */ lui $at, %hi(D_800DD434) # $at, 0x800e +/* 070558 8006F958 00A42822 */ sub $a1, $a1, $a0 +/* 07055C 8006F95C 00084FFC */ dsll32 $t1, $t0, 0x1f +/* 070560 8006F960 000857F8 */ dsll $t2, $t0, 0x1f +/* 070564 8006F964 00094FFA */ dsrl $t1, $t1, 0x1f +/* 070568 8006F968 000A503E */ dsrl32 $t2, $t2, 0 +/* 07056C 8006F96C 00085B3C */ dsll32 $t3, $t0, 0xc +/* 070570 8006F970 012A4825 */ or $t1, $t1, $t2 +/* 070574 8006F974 000B583E */ dsrl32 $t3, $t3, 0 +/* 070578 8006F978 012B4826 */ xor $t1, $t1, $t3 +/* 07057C 8006F97C 00095D3A */ dsrl $t3, $t1, 0x14 +/* 070580 8006F980 316B0FFF */ andi $t3, $t3, 0xfff +/* 070584 8006F984 01694026 */ xor $t0, $t3, $t1 +/* 070588 8006F988 AC28D434 */ sw $t0, %lo(D_800DD434)($at) +/* 07058C 8006F98C 20A50001 */ addi $a1, $a1, 1 +/* 070590 8006F990 01044023 */ subu $t0, $t0, $a0 +/* 070594 8006F994 0105001B */ divu $zero, $t0, $a1 +/* 070598 8006F998 00004012 */ mflo $t0 +/* 07059C 8006F99C 00001010 */ mfhi $v0 +/* 0705A0 8006F9A0 00441020 */ add $v0, $v0, $a0 +/* 0705A4 8006F9A4 14A00002 */ bnez $a1, .L8006F9B0 +/* 0705A8 8006F9A8 00000000 */ nop +/* 0705AC 8006F9AC 0007000D */ break 7 +.L8006F9B0: +/* 0705B0 8006F9B0 03E00008 */ jr $ra +/* 0705B4 8006F9B4 00000000 */ nop diff --git a/data/dkr.data.s b/data/dkr.data.s index e0e0375c..3826207c 100644 --- a/data/dkr.data.s +++ b/data/dkr.data.s @@ -8102,10 +8102,10 @@ glabel D_800E3760 glabel D_800E3764 .word 0x00000000 -glabel D_800E3768 +glabel gzip_inflate_input .word 0x00000000 -glabel D_800E376C +glabel gzip_inflate_output .word 0x00000000 glabel D_800E3770 diff --git a/src/mips1/entrypoint_001000.c b/src/mips1/entrypoint_001000.c deleted file mode 100644 index 347dd9d8..00000000 --- a/src/mips1/entrypoint_001000.c +++ /dev/null @@ -1,7 +0,0 @@ -/* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x80000400 */ - -#include "types.h" -#include "macros.h" - -GLOBAL_ASM("asm/non_matchings/entrypoint_001000/EntryPoint.s") diff --git a/src/mips1/gzip.c b/src/mips1/gzip.c deleted file mode 100644 index 6e1c02a8..00000000 --- a/src/mips1/gzip.c +++ /dev/null @@ -1,14 +0,0 @@ -/* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x800C69C4 */ - -/* - * NOTE: - * The code for the gzip decompression routine was most likely - * written in assembly. This file is just temporary. - */ - -GLOBAL_ASM("asm/non_matchings/gzip/func_800C68C0.s") -GLOBAL_ASM("asm/non_matchings/gzip/func_800C69C4.s") -GLOBAL_ASM("asm/non_matchings/gzip/func_800C6DDC.s") -GLOBAL_ASM("asm/non_matchings/gzip/func_800C6F34.s") -GLOBAL_ASM("asm/non_matchings/gzip/func_800C7040.s") diff --git a/src/mips1/unknown_00BC20.c b/src/mips1/unknown_00BC20.c index 40c056cb..d3ac8ba3 100644 --- a/src/mips1/unknown_00BC20.c +++ b/src/mips1/unknown_00BC20.c @@ -773,7 +773,3 @@ void func_800245B4(s16 arg0) { } } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800245F0.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80024744.s") - - diff --git a/src/mips1/unknown_0255E0.c b/src/mips1/unknown_0255E0.c index b6e7e330..e89d8d4f 100644 --- a/src/mips1/unknown_0255E0.c +++ b/src/mips1/unknown_0255E0.c @@ -118,11 +118,3 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8003093C.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80030A74.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80030DE0.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80031018.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80031130.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800314DC.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80031600.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800318C8.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80031944.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80031954.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80031B18.s") -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80031B24.s") diff --git a/src/mips1/unknown_061D30.c b/src/mips1/unknown_061D30.c index 74a05702..ce2c3a94 100644 --- a/src/mips1/unknown_061D30.c +++ b/src/mips1/unknown_061D30.c @@ -1,10 +1,9 @@ /* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x80061D30 */ +/* RAM_POS: 0x80062290 */ #include "types.h" #include "macros.h" -GLOBAL_ASM("asm/non_matchings/unknown_061D30/func_80061D30.s") GLOBAL_ASM("asm/non_matchings/unknown_061D30/func_80062290.s") GLOBAL_ASM("asm/non_matchings/unknown_061D30/D_80062408.s") GLOBAL_ASM("asm/non_matchings/unknown_061D30/func_800629CC.s") diff --git a/src/mips1/unknown_0B8920.c b/src/mips1/unknown_0B8920.c index 5a8eb655..e6e5a8b3 100644 --- a/src/mips1/unknown_0B8920.c +++ b/src/mips1/unknown_0B8920.c @@ -25,16 +25,16 @@ extern s32 D_800E3678; extern s32 D_800E3680; extern u8* D_800E3760; extern u8* D_800E3764; -extern u8* D_800E3768; -extern u8* D_800E376C; +extern u8* gzip_inflate_input; +extern u8* gzip_inflate_output; extern s32 D_8012A0D8; extern s32 D_8012A0DC; extern u16 D_8012A7B6; extern s32* D_8012A7C8; extern s32 D_8012A7F0; extern s32 D_8012AAD8; -extern u32 D_8012AAD4; -extern u32 D_8012AAD0; +extern u32 gzip_num_bits; +extern u32 gzip_bit_buffer; u8* func_80070C9C(s32 arg0, s32 arg1); void func_80071140(s32* arg0); @@ -255,16 +255,16 @@ s32 func_800C61DC(s32 arg0, s32 arg1) { return byteswap32(D_800E3764); } -s32 func_800C68C0(void); +s32 gzip_inflate_block(void); u8* func_800C6218(u8* arg0, u8* arg1) { // The compression header is 5 bytes. Maybe this is part of the decompression routine? - D_800E3768 = arg0 + 5; - D_800E376C = arg1; - D_8012AAD4 = 0; - D_8012AAD0 = 0; - while(func_800C68C0() != 0) {} // Keep calling func_800C68C0() until it returns 0. + gzip_inflate_input = arg0 + 5; + gzip_inflate_output = arg1; + gzip_num_bits = 0; + gzip_bit_buffer = 0; + while(gzip_inflate_block() != 0) {} // Keep calling gzip_inflate_block() until it returns 0. return arg1; } -GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C6274.s") +GLOBAL_ASM("asm/non_matchings/unknown_0B8920/gzip_huft_build.s") diff --git a/src/mips1/unknown_0D10E0.c b/src/mips1/unknown_0D10E0.c index 698ef2d5..167d1930 100644 --- a/src/mips1/unknown_0D10E0.c +++ b/src/mips1/unknown_0D10E0.c @@ -4,4 +4,4 @@ #include "types.h" #include "macros.h" -GLOBAL_ASM("asm/non_matchings/unknown_0D10E0/func_800D04E0.s") +GLOBAL_ASM("asm/non_matchings/unknown_0D10E0/memzero.s") diff --git a/src/mips2/unknown_070110.c b/src/mips2/unknown_070110.c deleted file mode 100644 index 148fd9b8..00000000 --- a/src/mips2/unknown_070110.c +++ /dev/null @@ -1,69 +0,0 @@ -/* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x80065F10 */ - -#include "types.h" -#include "macros.h" - -extern s32 D_800DD434; -extern s32 D_800DD438; - -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F510.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F53C.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F564.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F5E0.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F64C.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F6EC.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F768.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F870.s") - -void set_rng_seed(s32 arg0) { - D_800DD434 = arg0; -} - -void save_rng_seed(s32 arg0) { - arg0 = D_800DD434; - D_800DD438 = arg0; -} - -void load_rng_seed(s32 arg0) { - arg0 = D_800DD438; - D_800DD434 = arg0; -} - -s32 get_rng_seed(void) { - return D_800DD434; -} - -/* - * func_8006F94C(start, end) = Gets a random number within a range. - * Start is inclusive, end is exclusive; also changes the RNG seed. - * - * func_8006F94C(0, 5) will return a number from 0 to 4. - * func_8006F94C(20, 30) will return a number from 20 to 29. -*/ -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F94C.s") - -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006F9B8.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006FB60.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006FC30.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006FE04.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006FE30.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8006FE74.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070130.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800701E4.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070320.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800703D8.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070490.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800704F0.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800705F8.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070638.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8007066C.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800706BC.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800706C8.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070750.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800707C4.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_800707F8.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_8007082C.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070890.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070A2C.s") -GLOBAL_ASM("asm/non_matchings/unknown_070110/func_80070B04.s") diff --git a/tools/python/generate_ld.py b/tools/python/generate_ld.py index 17a8397c..64c7b9a4 100755 --- a/tools/python/generate_ld.py +++ b/tools/python/generate_ld.py @@ -68,8 +68,8 @@ class LD: def gen_main_section(self): self.gen_line('.main 0x80000400 : AT(romPos) SUBALIGN(16)') self.gen_open_block() - for asmFile in self.files: - self.gen_line(asmFile[0] + '(.text);') + for file in self.files: + self.gen_line(file[0] + '(.text);') self.gen_close_block() self.gen_line('romPos += SIZEOF(.main);') self.gen_newline() @@ -141,7 +141,7 @@ class LD: def get_code_files(self): files = [] asmFilenames = FileUtil.get_filenames_from_directory(ASM_DIR, ('.s',)) - regex = r'[\/][*]\s*([0-9A-Fa-f]{6})\s*([0-9A-Fa-f]{8})\s*([0-9A-Fa-f]{8})\s*[*][\/]' + regex = r'[\/][*]+\s*RAM_POS:\s*0x([0-9a-fA-F]+)\s*[*]+[\/]' for filename in asmFilenames: with open(ASM_DIR + '/' + filename, 'r') as asmFile: notDone = True @@ -152,7 +152,7 @@ class LD: line = asmFile.readline() continue matchedGroups = matches.groups() - files.append(('build/asm/' + filename[:-2] + '.o', matchedGroups[0], matchedGroups[1], 1)) + files.append(('build/asm/' + filename[:-2] + '.o', '', matchedGroups[0], 0)) break srcFilenames = FileUtil.get_filenames_from_directory_recursive(SRC_DIR, ('.c','.2')) regex = r'[\/][*]+\s*RAM_POS:\s*0x([0-9a-fA-F]+)\s*[*]+[\/]' diff --git a/tools/python/score.py b/tools/python/score.py index 04026816..2eeaf8ec 100644 --- a/tools/python/score.py +++ b/tools/python/score.py @@ -2,6 +2,26 @@ import re import sys from file_util import FileUtil +ASM_FOLDERS = [ + './asm/unknown_0251F0', + './asm/unknown_031D30', + './asm/unknown_062930', + './asm/unknown_070110', + './asm/gzip', +] + +# These will automatically be added to the adventure one percentage. +ASM_FUNCTIONS = [ 'entrypoint' ] +for folder in ASM_FOLDERS: + GLABEL_REGEX = r'glabel ([0-9A-Za-z_]+)' + filenames = FileUtil.get_filenames_from_directory(folder, extensions=('.s',)) + for filename in filenames: + with open(folder + '/' + filename, 'r') as asmFile: + text = asmFile.read() + matches = re.finditer(GLABEL_REGEX, text, re.MULTILINE) + for matchNum, match in enumerate(matches, start=1): + ASM_FUNCTIONS.append(match.groups()[0]) + SRC_DIRECTORY = './src' FUNCTION_REGEX = r'([/][*]([^*]|([*][^/]))*[*][/][\n]\s*)?(void|s64|s32|s16|s8|u64|u32|u16|u8|f32|f64)(\s|[*])*([0-9A-Za-z_]+)\s*[(][^)]*[)]\s*{' GLOBAL_ASM_REGEX = r'GLOBAL_ASM[(]\"[^/]*/[^/]*/[^/]*/([a-zA-Z0-9_]*).s\"[)]' @@ -121,6 +141,9 @@ def main(): scoreFiles.append(scoreFile) totalNumberOfFunctions = MAP_FILE.numFunctions + for asm_function in ASM_FUNCTIONS: + totalSizeOfDecompiledFunctions += MAP_FILE.functionSizes[asm_function] + adventureOnePercentage = (totalSizeOfDecompiledFunctions / CODE_SIZE) * 100 adventureTwoPercentage = (totalSizeOfDocumentedFunctions / CODE_SIZE) * 100 diff --git a/undefined_syms.txt b/undefined_syms.txt index e761c1ba..e598ab93 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -757,8 +757,8 @@ D_800E3740 = 0x800E3740; D_800E3748 = 0x800E3748; D_800E3760 = 0x800E3760; D_800E3764 = 0x800E3764; -D_800E3768 = 0x800E3768; -D_800E376C = 0x800E376C; +gzip_inflate_input = 0x800E3768; +gzip_inflate_output = 0x800E376C; D_800E3770 = 0x800E3770; D_800E3774 = 0x800E3774; D_800E3778 = 0x800E3778; @@ -2802,8 +2802,8 @@ D_8012A7F4 = 0x8012A7F4; D_8012A800 = 0x8012A800; D_8012AAB0 = 0x8012AAB0; D_8012AAC8 = 0x8012AAC8; -D_8012AAD0 = 0x8012AAD0; -D_8012AAD4 = 0x8012AAD4; +gzip_bit_buffer = 0x8012AAD0; +gzip_num_bits = 0x8012AAD4; D_8012AAD8 = 0x8012AAD8; D_8012AAE0 = 0x8012AAE0; D_8012AAF0 = 0x8012AAF0;