From dec110160c69d6d41c649727c0f9c0d8a2da9c7a Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Tue, 18 Apr 2023 04:51:16 +0900 Subject: [PATCH] appendGfx_animator_node (#1018) * appendGfx_animator_node Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com> * find_similar_areas improvements * oopz --------- Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com> --- src/B4580.c | 75 ++-- tools/find_similar_areas.py | 33 +- .../B4580/appendGfx_animator_node.s | 360 ------------------ .../B4580/appendGfx_animator_node.s | 358 ----------------- 4 files changed, 67 insertions(+), 759 deletions(-) delete mode 100644 ver/ique/asm/nonmatchings/B4580/appendGfx_animator_node.s delete mode 100644 ver/us/asm/nonmatchings/B4580/appendGfx_animator_node.s diff --git a/src/B4580.c b/src/B4580.c index ddd36dd7ef..cd9e312dac 100644 --- a/src/B4580.c +++ b/src/B4580.c @@ -815,15 +815,11 @@ void appendGfx_animator(ModelAnimator* animator) { gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW); } -#ifdef NON_EQUIVALENT void appendGfx_animator_node(ModelAnimator* animator, AnimatorNode* node, Matrix4f mtx) { - s32 i, dlSize, bufferIdx; DisplayListBufferHandle* bufferHandle; - Gfx* gfxPos; - s32 j; u32 w0,w1; - s32 totalVtxCount; s32 cmd; + s32 i; if (node->flags & MODEL_ANIMATOR_FLAG_HIDDEN) { for (i = 0; i < ARRAY_COUNT(node->children); i++) { @@ -854,45 +850,51 @@ void appendGfx_animator_node(ModelAnimator* animator, AnimatorNode* node, Matrix } gDPPipeSync(gMainGfxPos++); - if (animator->fpRenderCallback != NULL) { - animator->fpRenderCallback(animator->renderCallbackArg); - } + if (animator->fpRenderCallback != NULL) animator->fpRenderCallback(animator->renderCallbackArg); + gDPPipeSync(gMainGfxPos++); if (node->displayList != NULL) { if (node->vertexStartOffset < 0) { gSPDisplayList(gMainGfxPos++, node->displayList); } else { - dlSize = 0; - if (node->displayList[dlSize].words.w0 >> 0x18 != G_ENDDL) { - while (TRUE) { - w0 = node->displayList[dlSize++].words.w0; + Gfx* gfxPos; + s32 vtxIdx, dlIdx; + s32 j = 0; + s32 k; + + if ((node->displayList[0].words.w0 >> 0x18) != G_ENDDL) { + Gfx* gfxPtr = node->displayList; + s32 endDL = G_ENDDL; + + for(;; j++) { + w0 = gfxPtr->words.w0; + gfxPtr++; cmd = w0 >> 0x18; - if (cmd == G_ENDDL) { + if (cmd == endDL) { break; } } } - - for (bufferIdx = 0; bufferIdx < ARRAY_COUNT(D_801536C0); bufferIdx++) { - bufferHandle = &D_801536C0[bufferIdx]; + j++; + for (k = 0; k < ARRAY_COUNT(D_801536C0); k++) { + bufferHandle = &D_801536C0[k]; if (bufferHandle->ttl < 0) { break; } } - ASSERT(bufferIdx < ARRAY_COUNT(D_801536C0)); + ASSERT(k < ARRAY_COUNT(D_801536C0)); - gfxPos = general_heap_malloc(dlSize * sizeof(Gfx)); - bufferHandle->addr = gfxPos; + bufferHandle->addr = gfxPos = general_heap_malloc(j * sizeof(Gfx)); ASSERT(gfxPos != NULL); bufferHandle->ttl = 3; + vtxIdx = 0; + dlIdx = 0; - totalVtxCount = 0; - j = 0; do { - w0 = ((s32*)node->displayList)[j++]; - w1 = ((s32*)node->displayList)[j++]; + w0 = ((s32*)node->displayList)[dlIdx++]; + w1 = ((s32*)node->displayList)[dlIdx++]; cmd = w0 >> 0x18; if (cmd == G_ENDDL) { break; @@ -900,22 +902,32 @@ void appendGfx_animator_node(ModelAnimator* animator, AnimatorNode* node, Matrix if (cmd == G_VTX) { s32 startIdx = _SHIFTR(w0,1,7); s32 vtxCount = _SHIFTR(w0,12,8); + Vtx* newBuffer; + startIdx -= vtxCount; + if (node->fcData.vtxList == NULL) { - Vtx* newBuffer = &((Vtx*)w1)[node->vertexStartOffset + totalVtxCount]; + newBuffer = &((Vtx*)w1)[node->vertexStartOffset + vtxIdx]; gSPVertex(gfxPos++, newBuffer, vtxCount, startIdx); } else { - // if node->fcData.vtxList != NULL, all vertex buffers in gSPVertex commands are pointers to Vec3s, not to Vtx - Vtx* newBuffer = animator_copy_vertices_to_buffer(animator, node, w1 + (node->vertexStartOffset + totalVtxCount) * 0x6, vtxCount, startIdx, totalVtxCount); + newBuffer = animator_copy_vertices_to_buffer( + animator, + node, + (Vec3s*)(w1 + (node->vertexStartOffset + vtxIdx) * 0x6), + vtxCount, + startIdx, + vtxIdx + ); gSPVertex(gfxPos++, newBuffer, vtxCount, startIdx); } - totalVtxCount += vtxCount; + vtxIdx += vtxCount; } else { - gfxPos++; - gfxPos->words.w0 = w0; - gfxPos->words.w1 = w1; + Gfx* temp[1] = {gfxPos++}; // required to match + temp[0]->words.w0 = w0; + temp[0]->words.w1 = w1; } } while (TRUE); + gSPEndDisplayList(gfxPos++); gSPDisplayList(gMainGfxPos++, bufferHandle->addr); } @@ -928,9 +940,6 @@ void appendGfx_animator_node(ModelAnimator* animator, AnimatorNode* node, Matrix } } } -#else -INCLUDE_ASM(s32, "B4580", appendGfx_animator_node); -#endif AnimatorNode* get_animator_node_for_tree_index(ModelAnimator* animator, s32 arg1) { return get_animator_child_with_id(animator->rootNode, animator->staticNodeIDs[arg1 - 1]); diff --git a/tools/find_similar_areas.py b/tools/find_similar_areas.py index 07167faf34..ab38f06492 100755 --- a/tools/find_similar_areas.py +++ b/tools/find_similar_areas.py @@ -41,7 +41,7 @@ class Symbol: class Bytes: offset: int normalized: str - bytes: list[int] + bytes: bytes def read_rom() -> bytes: @@ -83,6 +83,7 @@ def get_symbol_bytes(func: str) -> Optional[Bytes]: sym = syms[func] bs = list(rom_bytes[sym.rom_start : sym.rom_end]) + # trim nops while len(bs) > 0 and bs[-1] == 0: bs.pop() @@ -92,7 +93,7 @@ def get_symbol_bytes(func: str) -> Optional[Bytes]: for ins in insns: ret.append(ins >> 2) - return Bytes(0, bytes(ret).decode("utf-8"), bs) + return Bytes(0, bytes(ret).decode("utf-8"), rom_bytes[sym.rom_start : sym.rom_end]) def parse_map() -> OrderedDict[str, Symbol]: @@ -349,7 +350,7 @@ def get_c_range(insn_start: int, insn_end: int, line_numbers: Dict[int, int]) -> return range -def get_matches(query: str, window_size: int, min: Optional[int], max: Optional[int], contains: Optional[int]): +def get_matches(query: str, window_size: int, min: Optional[int], max: Optional[int], contains: Optional[int], show_disasm: bool): query_bytes: Optional[Bytes] = get_symbol_bytes(query) if query_bytes is None: @@ -366,7 +367,7 @@ def get_matches(query: str, window_size: int, min: Optional[int], max: Optional[ if not sym_bytes: continue - if len(sym_bytes.bytes) < window_size: + if len(sym_bytes.bytes) / 4 < window_size: continue sym_hashes = get_hashes(sym_bytes, window_size) @@ -375,7 +376,7 @@ def get_matches(query: str, window_size: int, min: Optional[int], max: Optional[ if not matches: continue - results = group_matches(query, symbol, matches, window_size, min, max, contains) + results: list[Result] = group_matches(query, symbol, matches, window_size, min, max, contains) if not results: continue @@ -412,11 +413,26 @@ def get_matches(query: str, window_size: int, min: Optional[int], max: Optional[ ) print(f"\t{query_str} matches {target_str}") + if show_disasm: + try: + import rabbitizer + except ImportError: + print("rabbitizer not found, cannot show disassembly") + sys.exit(1) + result_query_bytes = query_bytes.bytes[result.query_start * 4 : result.query_end * 4] + result_target_bytes = sym_bytes.bytes[result.target_start * 4 : result.target_end * 4] + + for i in range(0, len(result_query_bytes), 4): + q_insn = rabbitizer.Instruction(int.from_bytes(result_query_bytes[i:i+4], "big")) + t_insn = rabbitizer.Instruction(int.from_bytes(result_target_bytes[i:i+4], "big")) + + print(f"\t\t{q_insn.disassemble():35} | {t_insn.disassemble()}") + return OrderedDict(sorted(ret.items(), key=lambda kv: kv[1], reverse=True)) -def do_query(query, window_size, min, max, contains): - get_matches(query, window_size, min, max, contains) +def do_query(query, window_size, min, max, contains, show_disasm): + get_matches(query, window_size, min, max, contains, show_disasm) parser = argparse.ArgumentParser( @@ -434,6 +450,7 @@ parser.add_argument( parser.add_argument("--min", help="lower bound of instruction for matches against query", type=int, required=False) parser.add_argument("--max", help="upper bound of instruction for matches against query", type=int, required=False) parser.add_argument("--contains", help="All matches must contain this number'th instruction from the query", type=int, required=False) +parser.add_argument("--show-disasm", help="Show disassembly of matches", action="store_true", required=False) args = parser.parse_args() @@ -443,4 +460,4 @@ if __name__ == "__main__": func_sizes = get_func_sizes() syms = parse_map() - do_query(args.query, args.window_size, args.min, args.max, args.contains) + do_query(args.query, args.window_size, args.min, args.max, args.contains, args.show_disasm) diff --git a/ver/ique/asm/nonmatchings/B4580/appendGfx_animator_node.s b/ver/ique/asm/nonmatchings/B4580/appendGfx_animator_node.s deleted file mode 100644 index d0574a155f..0000000000 --- a/ver/ique/asm/nonmatchings/B4580/appendGfx_animator_node.s +++ /dev/null @@ -1,360 +0,0 @@ -.set noat /* allow manual use of $at */ -.set noreorder /* don't insert nops after branches */ - -/* Generated by spimdisasm 1.11.1 */ - -glabel appendGfx_animator_node -/* B4D14 8011DE34 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* B4D18 8011DE38 AFB60030 */ sw $s6, 0x30($sp) -/* B4D1C 8011DE3C 00A0B02D */ daddu $s6, $a1, $zero -/* B4D20 8011DE40 AFBF003C */ sw $ra, 0x3C($sp) -/* B4D24 8011DE44 AFBE0038 */ sw $fp, 0x38($sp) -/* B4D28 8011DE48 AFB70034 */ sw $s7, 0x34($sp) -/* B4D2C 8011DE4C AFB5002C */ sw $s5, 0x2C($sp) -/* B4D30 8011DE50 AFB40028 */ sw $s4, 0x28($sp) -/* B4D34 8011DE54 AFB30024 */ sw $s3, 0x24($sp) -/* B4D38 8011DE58 AFB20020 */ sw $s2, 0x20($sp) -/* B4D3C 8011DE5C AFB1001C */ sw $s1, 0x1C($sp) -/* B4D40 8011DE60 AFB00018 */ sw $s0, 0x18($sp) -/* B4D44 8011DE64 AFA40040 */ sw $a0, 0x40($sp) -/* B4D48 8011DE68 96C200F4 */ lhu $v0, 0xF4($s6) -/* B4D4C 8011DE6C 30420080 */ andi $v0, $v0, 0x80 -/* B4D50 8011DE70 10400015 */ beqz $v0, .LIQUE_8011DEC8 -/* B4D54 8011DE74 00C0982D */ daddu $s3, $a2, $zero -/* B4D58 8011DE78 0000882D */ daddu $s1, $zero, $zero -/* B4D5C 8011DE7C 26D200B4 */ addiu $s2, $s6, 0xB4 -/* B4D60 8011DE80 02C0802D */ daddu $s0, $s6, $zero -.LIQUE_8011DE84: -/* B4D64 8011DE84 8E020004 */ lw $v0, 0x4($s0) -/* B4D68 8011DE88 5040000A */ beql $v0, $zero, .LIQUE_8011DEB4 -/* B4D6C 8011DE8C 26310001 */ addiu $s1, $s1, 0x1 -/* B4D70 8011DE90 0240202D */ daddu $a0, $s2, $zero -/* B4D74 8011DE94 0260282D */ daddu $a1, $s3, $zero -/* B4D78 8011DE98 0C0196F0 */ jal guMtxCatF -/* B4D7C 8011DE9C 0240302D */ daddu $a2, $s2, $zero -/* B4D80 8011DEA0 8FA40040 */ lw $a0, 0x40($sp) -/* B4D84 8011DEA4 8E050004 */ lw $a1, 0x4($s0) -/* B4D88 8011DEA8 0C04778D */ jal appendGfx_animator_node -/* B4D8C 8011DEAC 0240302D */ daddu $a2, $s2, $zero -/* B4D90 8011DEB0 26310001 */ addiu $s1, $s1, 0x1 -.LIQUE_8011DEB4: -/* B4D94 8011DEB4 2A220020 */ slti $v0, $s1, 0x20 -/* B4D98 8011DEB8 1440FFF2 */ bnez $v0, .LIQUE_8011DE84 -/* B4D9C 8011DEBC 26100004 */ addiu $s0, $s0, 0x4 -/* B4DA0 8011DEC0 080478C9 */ j .LIQUE_8011E324 -/* B4DA4 8011DEC4 00000000 */ nop -.LIQUE_8011DEC8: -/* B4DA8 8011DEC8 26D000B4 */ addiu $s0, $s6, 0xB4 -/* B4DAC 8011DECC 0200202D */ daddu $a0, $s0, $zero -/* B4DB0 8011DED0 0260282D */ daddu $a1, $s3, $zero -/* B4DB4 8011DED4 0C0196F0 */ jal guMtxCatF -/* B4DB8 8011DED8 0200302D */ daddu $a2, $s0, $zero -/* B4DBC 8011DEDC 3C120001 */ lui $s2, (0x12230 >> 16) -/* B4DC0 8011DEE0 36522230 */ ori $s2, $s2, (0x12230 & 0xFFFF) -/* B4DC4 8011DEE4 0200202D */ daddu $a0, $s0, $zero -/* B4DC8 8011DEE8 3C108007 */ lui $s0, %hi(gMatrixListPos) -/* B4DCC 8011DEEC 26102E60 */ addiu $s0, $s0, %lo(gMatrixListPos) -/* B4DD0 8011DEF0 3C11800A */ lui $s1, %hi(gDisplayContext) -/* B4DD4 8011DEF4 2631924C */ addiu $s1, $s1, %lo(gDisplayContext) -/* B4DD8 8011DEF8 96050000 */ lhu $a1, 0x0($s0) -/* B4DDC 8011DEFC 8E220000 */ lw $v0, 0x0($s1) -/* B4DE0 8011DF00 00052980 */ sll $a1, $a1, 6 -/* B4DE4 8011DF04 00B22821 */ addu $a1, $a1, $s2 -/* B4DE8 8011DF08 0C0196B0 */ jal guMtxF2L -/* B4DEC 8011DF0C 00452821 */ addu $a1, $v0, $a1 -/* B4DF0 8011DF10 3C03DA38 */ lui $v1, (0xDA380003 >> 16) -/* B4DF4 8011DF14 34630003 */ ori $v1, $v1, (0xDA380003 & 0xFFFF) -/* B4DF8 8011DF18 3C05E300 */ lui $a1, (0xE3000F00 >> 16) -/* B4DFC 8011DF1C 34A50F00 */ ori $a1, $a1, (0xE3000F00 & 0xFFFF) -/* B4E00 8011DF20 3C06E300 */ lui $a2, (0xE3001001 >> 16) -/* B4E04 8011DF24 34C61001 */ ori $a2, $a2, (0xE3001001 & 0xFFFF) -/* B4E08 8011DF28 3C07D9FD */ lui $a3, (0xD9FDFFFF >> 16) -/* B4E0C 8011DF2C 3C09800A */ lui $t1, %hi(gMainGfxPos) -/* B4E10 8011DF30 25299244 */ addiu $t1, $t1, %lo(gMainGfxPos) -/* B4E14 8011DF34 34E7FFFF */ ori $a3, $a3, (0xD9FDFFFF & 0xFFFF) -/* B4E18 8011DF38 8D280000 */ lw $t0, 0x0($t1) -/* B4E1C 8011DF3C 96020000 */ lhu $v0, 0x0($s0) -/* B4E20 8011DF40 0100202D */ daddu $a0, $t0, $zero -/* B4E24 8011DF44 25080008 */ addiu $t0, $t0, 0x8 -/* B4E28 8011DF48 AD280000 */ sw $t0, 0x0($t1) -/* B4E2C 8011DF4C AC830000 */ sw $v1, 0x0($a0) -/* B4E30 8011DF50 24430001 */ addiu $v1, $v0, 0x1 -/* B4E34 8011DF54 3042FFFF */ andi $v0, $v0, 0xFFFF -/* B4E38 8011DF58 00021180 */ sll $v0, $v0, 6 -/* B4E3C 8011DF5C A6030000 */ sh $v1, 0x0($s0) -/* B4E40 8011DF60 8E230000 */ lw $v1, 0x0($s1) -/* B4E44 8011DF64 00521021 */ addu $v0, $v0, $s2 -/* B4E48 8011DF68 00621821 */ addu $v1, $v1, $v0 -/* B4E4C 8011DF6C 25020008 */ addiu $v0, $t0, 0x8 -/* B4E50 8011DF70 AC830004 */ sw $v1, 0x4($a0) -/* B4E54 8011DF74 AD220000 */ sw $v0, 0x0($t1) -/* B4E58 8011DF78 3C02E700 */ lui $v0, (0xE7000000 >> 16) -/* B4E5C 8011DF7C AD020000 */ sw $v0, 0x0($t0) -/* B4E60 8011DF80 25020010 */ addiu $v0, $t0, 0x10 -/* B4E64 8011DF84 AD000004 */ sw $zero, 0x4($t0) -/* B4E68 8011DF88 AD220000 */ sw $v0, 0x0($t1) -/* B4E6C 8011DF8C 3C02D700 */ lui $v0, (0xD7000000 >> 16) -/* B4E70 8011DF90 AD020008 */ sw $v0, 0x8($t0) -/* B4E74 8011DF94 25020018 */ addiu $v0, $t0, 0x18 -/* B4E78 8011DF98 AD00000C */ sw $zero, 0xC($t0) -/* B4E7C 8011DF9C AD220000 */ sw $v0, 0x0($t1) -/* B4E80 8011DFA0 25020020 */ addiu $v0, $t0, 0x20 -/* B4E84 8011DFA4 AD050010 */ sw $a1, 0x10($t0) -/* B4E88 8011DFA8 AD000014 */ sw $zero, 0x14($t0) -/* B4E8C 8011DFAC AD220000 */ sw $v0, 0x0($t1) -/* B4E90 8011DFB0 25020028 */ addiu $v0, $t0, 0x28 -/* B4E94 8011DFB4 AD060018 */ sw $a2, 0x18($t0) -/* B4E98 8011DFB8 AD00001C */ sw $zero, 0x1C($t0) -/* B4E9C 8011DFBC AD220000 */ sw $v0, 0x0($t1) -/* B4EA0 8011DFC0 AD070020 */ sw $a3, 0x20($t0) -/* B4EA4 8011DFC4 AD000024 */ sw $zero, 0x24($t0) -/* B4EA8 8011DFC8 8FAA0040 */ lw $t2, 0x40($sp) -/* B4EAC 8011DFCC 8D420000 */ lw $v0, 0x0($t2) -/* B4EB0 8011DFD0 3C030001 */ lui $v1, (0x10000 >> 16) -/* B4EB4 8011DFD4 00431024 */ and $v0, $v0, $v1 -/* B4EB8 8011DFD8 10400007 */ beqz $v0, .LIQUE_8011DFF8 -/* B4EBC 8011DFDC 3C02D9FF */ lui $v0, (0xD9FFFFFF >> 16) -/* B4EC0 8011DFE0 3442FFFF */ ori $v0, $v0, (0xD9FFFFFF & 0xFFFF) -/* B4EC4 8011DFE4 25030030 */ addiu $v1, $t0, 0x30 -/* B4EC8 8011DFE8 AD230000 */ sw $v1, 0x0($t1) -/* B4ECC 8011DFEC AD020028 */ sw $v0, 0x28($t0) -/* B4ED0 8011DFF0 24020400 */ addiu $v0, $zero, 0x400 -/* B4ED4 8011DFF4 AD02002C */ sw $v0, 0x2C($t0) -.LIQUE_8011DFF8: -/* B4ED8 8011DFF8 3C028015 */ lui $v0, %hi(gAnimModelFogEnabled) -/* B4EDC 8011DFFC 8C4221C4 */ lw $v0, %lo(gAnimModelFogEnabled)($v0) -/* B4EE0 8011E000 1440000C */ bnez $v0, .LIQUE_8011E034 -/* B4EE4 8011E004 3C04FC12 */ lui $a0, (0xFC121E04 >> 16) -/* B4EE8 8011E008 3C05FCFF */ lui $a1, (0xFCFFFFFF >> 16) -/* B4EEC 8011E00C 34A5FFFF */ ori $a1, $a1, (0xFCFFFFFF & 0xFFFF) -/* B4EF0 8011E010 3C04FFFC */ lui $a0, (0xFFFCF279 >> 16) -/* B4EF4 8011E014 8D220000 */ lw $v0, 0x0($t1) -/* B4EF8 8011E018 3484F279 */ ori $a0, $a0, (0xFFFCF279 & 0xFFFF) -/* B4EFC 8011E01C 0040182D */ daddu $v1, $v0, $zero -/* B4F00 8011E020 24420008 */ addiu $v0, $v0, 0x8 -/* B4F04 8011E024 AD220000 */ sw $v0, 0x0($t1) -/* B4F08 8011E028 AC650000 */ sw $a1, 0x0($v1) -/* B4F0C 8011E02C 08047815 */ j .LIQUE_8011E054 -/* B4F10 8011E030 AC640004 */ sw $a0, 0x4($v1) -.LIQUE_8011E034: -/* B4F14 8011E034 8D220000 */ lw $v0, 0x0($t1) -/* B4F18 8011E038 34841E04 */ ori $a0, $a0, (0xFC121E04 & 0xFFFF) -/* B4F1C 8011E03C 0040182D */ daddu $v1, $v0, $zero -/* B4F20 8011E040 24420008 */ addiu $v0, $v0, 0x8 -/* B4F24 8011E044 AD220000 */ sw $v0, 0x0($t1) -/* B4F28 8011E048 2402F3F8 */ addiu $v0, $zero, -0xC08 -/* B4F2C 8011E04C AC640000 */ sw $a0, 0x0($v1) -/* B4F30 8011E050 AC620004 */ sw $v0, 0x4($v1) -.LIQUE_8011E054: -/* B4F34 8011E054 3C10800A */ lui $s0, %hi(gMainGfxPos) -/* B4F38 8011E058 26109244 */ addiu $s0, $s0, %lo(gMainGfxPos) -/* B4F3C 8011E05C 8E020000 */ lw $v0, 0x0($s0) -/* B4F40 8011E060 3C11E700 */ lui $s1, (0xE7000000 >> 16) -/* B4F44 8011E064 0040182D */ daddu $v1, $v0, $zero -/* B4F48 8011E068 AC710000 */ sw $s1, 0x0($v1) -/* B4F4C 8011E06C AC600004 */ sw $zero, 0x4($v1) -/* B4F50 8011E070 8FAA0040 */ lw $t2, 0x40($sp) -/* B4F54 8011E074 8D4302D4 */ lw $v1, 0x2D4($t2) -/* B4F58 8011E078 24420008 */ addiu $v0, $v0, 0x8 -/* B4F5C 8011E07C 10600004 */ beqz $v1, .LIQUE_8011E090 -/* B4F60 8011E080 AE020000 */ sw $v0, 0x0($s0) -/* B4F64 8011E084 8D4402D8 */ lw $a0, 0x2D8($t2) -/* B4F68 8011E088 0060F809 */ jalr $v1 -/* B4F6C 8011E08C 00000000 */ nop -.LIQUE_8011E090: -/* B4F70 8011E090 8E040000 */ lw $a0, 0x0($s0) -/* B4F74 8011E094 0080102D */ daddu $v0, $a0, $zero -/* B4F78 8011E098 AC510000 */ sw $s1, 0x0($v0) -/* B4F7C 8011E09C AC400004 */ sw $zero, 0x4($v0) -/* B4F80 8011E0A0 8EC50000 */ lw $a1, 0x0($s6) -/* B4F84 8011E0A4 24840008 */ addiu $a0, $a0, 0x8 -/* B4F88 8011E0A8 10A00089 */ beqz $a1, .LIQUE_8011E2D0 -/* B4F8C 8011E0AC AE040000 */ sw $a0, 0x0($s0) -/* B4F90 8011E0B0 86C200F8 */ lh $v0, 0xF8($s6) -/* B4F94 8011E0B4 04410008 */ bgez $v0, .LIQUE_8011E0D8 -/* B4F98 8011E0B8 240200DF */ addiu $v0, $zero, 0xDF -/* B4F9C 8011E0BC 3C02DE00 */ lui $v0, (0xDE000000 >> 16) -/* B4FA0 8011E0C0 AC820000 */ sw $v0, 0x0($a0) -/* B4FA4 8011E0C4 8EC30000 */ lw $v1, 0x0($s6) -/* B4FA8 8011E0C8 24820008 */ addiu $v0, $a0, 0x8 -/* B4FAC 8011E0CC AE020000 */ sw $v0, 0x0($s0) -/* B4FB0 8011E0D0 080478B4 */ j .LIQUE_8011E2D0 -/* B4FB4 8011E0D4 AC830004 */ sw $v1, 0x4($a0) -.LIQUE_8011E0D8: -/* B4FB8 8011E0D8 90A30000 */ lbu $v1, 0x0($a1) -/* B4FBC 8011E0DC 10620008 */ beq $v1, $v0, .LIQUE_8011E100 -/* B4FC0 8011E0E0 0000202D */ daddu $a0, $zero, $zero -/* B4FC4 8011E0E4 0040302D */ daddu $a2, $v0, $zero -/* B4FC8 8011E0E8 24A20008 */ addiu $v0, $a1, 0x8 -.LIQUE_8011E0EC: -/* B4FCC 8011E0EC 24840001 */ addiu $a0, $a0, 0x1 -/* B4FD0 8011E0F0 8C450000 */ lw $a1, 0x0($v0) -/* B4FD4 8011E0F4 00051E02 */ srl $v1, $a1, 24 -/* B4FD8 8011E0F8 1466FFFC */ bne $v1, $a2, .LIQUE_8011E0EC -/* B4FDC 8011E0FC 24420008 */ addiu $v0, $v0, 0x8 -.LIQUE_8011E100: -/* B4FE0 8011E100 24840001 */ addiu $a0, $a0, 0x1 -/* B4FE4 8011E104 0000182D */ daddu $v1, $zero, $zero -/* B4FE8 8011E108 3C058015 */ lui $a1, %hi(D_801536C0) -/* B4FEC 8011E10C 24A51E40 */ addiu $a1, $a1, %lo(D_801536C0) -/* B4FF0 8011E110 000310C0 */ sll $v0, $v1, 3 -.LIQUE_8011E114: -/* B4FF4 8011E114 0045B821 */ addu $s7, $v0, $a1 -/* B4FF8 8011E118 8EE20000 */ lw $v0, 0x0($s7) -/* B4FFC 8011E11C 04400006 */ bltz $v0, .LIQUE_8011E138 -/* B5000 8011E120 28620060 */ slti $v0, $v1, 0x60 -/* B5004 8011E124 24630001 */ addiu $v1, $v1, 0x1 -/* B5008 8011E128 28620060 */ slti $v0, $v1, 0x60 -/* B500C 8011E12C 1440FFF9 */ bnez $v0, .LIQUE_8011E114 -/* B5010 8011E130 000310C0 */ sll $v0, $v1, 3 -/* B5014 8011E134 28620060 */ slti $v0, $v1, 0x60 -.LIQUE_8011E138: -/* B5018 8011E138 14400003 */ bnez $v0, .LIQUE_8011E148 -/* B501C 8011E13C 00000000 */ nop -.LIQUE_8011E140: -/* B5020 8011E140 08047850 */ j .LIQUE_8011E140 -/* B5024 8011E144 00000000 */ nop -.LIQUE_8011E148: -/* B5028 8011E148 0C00AA3E */ jal general_heap_malloc -/* B502C 8011E14C 000420C0 */ sll $a0, $a0, 3 -/* B5030 8011E150 0040982D */ daddu $s3, $v0, $zero -/* B5034 8011E154 16600003 */ bnez $s3, .LIQUE_8011E164 -/* B5038 8011E158 AEF30004 */ sw $s3, 0x4($s7) -.LIQUE_8011E15C: -/* B503C 8011E15C 08047857 */ j .LIQUE_8011E15C -/* B5040 8011E160 00000000 */ nop -.LIQUE_8011E164: -/* B5044 8011E164 0000A82D */ daddu $s5, $zero, $zero -/* B5048 8011E168 24020003 */ addiu $v0, $zero, 0x3 -/* B504C 8011E16C AEE20000 */ sw $v0, 0x0($s7) -/* B5050 8011E170 8EC20000 */ lw $v0, 0x0($s6) -/* B5054 8011E174 8C450000 */ lw $a1, 0x0($v0) -/* B5058 8011E178 8C470004 */ lw $a3, 0x4($v0) -/* B505C 8011E17C 240200DF */ addiu $v0, $zero, 0xDF -/* B5060 8011E180 00051E02 */ srl $v1, $a1, 24 -/* B5064 8011E184 10620044 */ beq $v1, $v0, .LIQUE_8011E298 -/* B5068 8011E188 24140002 */ addiu $s4, $zero, 0x2 -/* B506C 8011E18C 3C1E0100 */ lui $fp, (0x1000000 >> 16) -/* B5070 8011E190 2672FFFC */ addiu $s2, $s3, -0x4 -.LIQUE_8011E194: -/* B5074 8011E194 24020001 */ addiu $v0, $zero, 0x1 -/* B5078 8011E198 5462002F */ bnel $v1, $v0, .LIQUE_8011E258 -/* B507C 8011E19C 0260102D */ daddu $v0, $s3, $zero -/* B5080 8011E1A0 00451006 */ srlv $v0, $a1, $v0 -/* B5084 8011E1A4 3051007F */ andi $s1, $v0, 0x7F -/* B5088 8011E1A8 00051302 */ srl $v0, $a1, 12 -/* B508C 8011E1AC 305000FF */ andi $s0, $v0, 0xFF -/* B5090 8011E1B0 8EC200FC */ lw $v0, 0xFC($s6) -/* B5094 8011E1B4 14400010 */ bnez $v0, .LIQUE_8011E1F8 -/* B5098 8011E1B8 02308823 */ subu $s1, $s1, $s0 -/* B509C 8011E1BC 26520008 */ addiu $s2, $s2, 0x8 -/* B50A0 8011E1C0 26730008 */ addiu $s3, $s3, 0x8 -/* B50A4 8011E1C4 00101300 */ sll $v0, $s0, 12 -/* B50A8 8011E1C8 02301821 */ addu $v1, $s1, $s0 -/* B50AC 8011E1CC 3063007F */ andi $v1, $v1, 0x7F -/* B50B0 8011E1D0 00031840 */ sll $v1, $v1, 1 -/* B50B4 8011E1D4 007E1825 */ or $v1, $v1, $fp -/* B50B8 8011E1D8 86C400F8 */ lh $a0, 0xF8($s6) -/* B50BC 8011E1DC 00431025 */ or $v0, $v0, $v1 -/* B50C0 8011E1E0 AE42FFFC */ sw $v0, -0x4($s2) -/* B50C4 8011E1E4 00952021 */ addu $a0, $a0, $s5 -/* B50C8 8011E1E8 00042100 */ sll $a0, $a0, 4 -/* B50CC 8011E1EC 00E41821 */ addu $v1, $a3, $a0 -/* B50D0 8011E1F0 08047894 */ j .LIQUE_8011E250 -/* B50D4 8011E1F4 AE430000 */ sw $v1, 0x0($s2) -.LIQUE_8011E1F8: -/* B50D8 8011E1F8 02C0282D */ daddu $a1, $s6, $zero -/* B50DC 8011E1FC 26520008 */ addiu $s2, $s2, 0x8 -/* B50E0 8011E200 8FA40040 */ lw $a0, 0x40($sp) -/* B50E4 8011E204 86C200F8 */ lh $v0, 0xF8($s6) -/* B50E8 8011E208 26730008 */ addiu $s3, $s3, 0x8 -/* B50EC 8011E20C AFB10010 */ sw $s1, 0x10($sp) -/* B50F0 8011E210 AFB50014 */ sw $s5, 0x14($sp) -/* B50F4 8011E214 00551021 */ addu $v0, $v0, $s5 -/* B50F8 8011E218 00023040 */ sll $a2, $v0, 1 -/* B50FC 8011E21C 00C23021 */ addu $a2, $a2, $v0 -/* B5100 8011E220 00063040 */ sll $a2, $a2, 1 -/* B5104 8011E224 00E63021 */ addu $a2, $a3, $a2 -/* B5108 8011E228 0C047098 */ jal animator_copy_vertices_to_buffer -/* B510C 8011E22C 0200382D */ daddu $a3, $s0, $zero -/* B5110 8011E230 00102300 */ sll $a0, $s0, 12 -/* B5114 8011E234 02301821 */ addu $v1, $s1, $s0 -/* B5118 8011E238 3063007F */ andi $v1, $v1, 0x7F -/* B511C 8011E23C 00031840 */ sll $v1, $v1, 1 -/* B5120 8011E240 007E1825 */ or $v1, $v1, $fp -/* B5124 8011E244 00832025 */ or $a0, $a0, $v1 -/* B5128 8011E248 AE44FFFC */ sw $a0, -0x4($s2) -/* B512C 8011E24C AE420000 */ sw $v0, 0x0($s2) -.LIQUE_8011E250: -/* B5130 8011E250 0804789A */ j .LIQUE_8011E268 -/* B5134 8011E254 02B0A821 */ addu $s5, $s5, $s0 -.LIQUE_8011E258: -/* B5138 8011E258 26520008 */ addiu $s2, $s2, 0x8 -/* B513C 8011E25C 26730008 */ addiu $s3, $s3, 0x8 -/* B5140 8011E260 AC450000 */ sw $a1, 0x0($v0) -/* B5144 8011E264 AC470004 */ sw $a3, 0x4($v0) -.LIQUE_8011E268: -/* B5148 8011E268 00141080 */ sll $v0, $s4, 2 -/* B514C 8011E26C 26940001 */ addiu $s4, $s4, 0x1 -/* B5150 8011E270 00141880 */ sll $v1, $s4, 2 -/* B5154 8011E274 8EC40000 */ lw $a0, 0x0($s6) -/* B5158 8011E278 00441021 */ addu $v0, $v0, $a0 -/* B515C 8011E27C 00641821 */ addu $v1, $v1, $a0 -/* B5160 8011E280 8C450000 */ lw $a1, 0x0($v0) -/* B5164 8011E284 240200DF */ addiu $v0, $zero, 0xDF -/* B5168 8011E288 8C670000 */ lw $a3, 0x0($v1) -/* B516C 8011E28C 00051E02 */ srl $v1, $a1, 24 -/* B5170 8011E290 1462FFC0 */ bne $v1, $v0, .LIQUE_8011E194 -/* B5174 8011E294 26940001 */ addiu $s4, $s4, 0x1 -.LIQUE_8011E298: -/* B5178 8011E298 3C05800A */ lui $a1, %hi(gMainGfxPos) -/* B517C 8011E29C 24A59244 */ addiu $a1, $a1, %lo(gMainGfxPos) -/* B5180 8011E2A0 0260202D */ daddu $a0, $s3, $zero -/* B5184 8011E2A4 8CA30000 */ lw $v1, 0x0($a1) -/* B5188 8011E2A8 3C02DF00 */ lui $v0, (0xDF000000 >> 16) -/* B518C 8011E2AC AC820000 */ sw $v0, 0x0($a0) -/* B5190 8011E2B0 3C02DE00 */ lui $v0, (0xDE000000 >> 16) -/* B5194 8011E2B4 AC800004 */ sw $zero, 0x4($a0) -/* B5198 8011E2B8 0060202D */ daddu $a0, $v1, $zero -/* B519C 8011E2BC AC820000 */ sw $v0, 0x0($a0) -/* B51A0 8011E2C0 8EE20004 */ lw $v0, 0x4($s7) -/* B51A4 8011E2C4 24630008 */ addiu $v1, $v1, 0x8 -/* B51A8 8011E2C8 ACA30000 */ sw $v1, 0x0($a1) -/* B51AC 8011E2CC AC820004 */ sw $v0, 0x4($a0) -.LIQUE_8011E2D0: -/* B51B0 8011E2D0 0000882D */ daddu $s1, $zero, $zero -/* B51B4 8011E2D4 3C03800A */ lui $v1, %hi(gMainGfxPos) -/* B51B8 8011E2D8 24639244 */ addiu $v1, $v1, %lo(gMainGfxPos) -/* B51BC 8011E2DC 8C620000 */ lw $v0, 0x0($v1) -/* B51C0 8011E2E0 02C0802D */ daddu $s0, $s6, $zero -/* B51C4 8011E2E4 0040202D */ daddu $a0, $v0, $zero -/* B51C8 8011E2E8 24420008 */ addiu $v0, $v0, 0x8 -/* B51CC 8011E2EC AC620000 */ sw $v0, 0x0($v1) -/* B51D0 8011E2F0 3C02E700 */ lui $v0, (0xE7000000 >> 16) -/* B51D4 8011E2F4 AC820000 */ sw $v0, 0x0($a0) -/* B51D8 8011E2F8 AC800004 */ sw $zero, 0x4($a0) -.LIQUE_8011E2FC: -/* B51DC 8011E2FC 8E050004 */ lw $a1, 0x4($s0) -/* B51E0 8011E300 50A00005 */ beql $a1, $zero, .LIQUE_8011E318 -/* B51E4 8011E304 26310001 */ addiu $s1, $s1, 0x1 -/* B51E8 8011E308 8FA40040 */ lw $a0, 0x40($sp) -/* B51EC 8011E30C 0C04778D */ jal appendGfx_animator_node -/* B51F0 8011E310 26C600B4 */ addiu $a2, $s6, 0xB4 -/* B51F4 8011E314 26310001 */ addiu $s1, $s1, 0x1 -.LIQUE_8011E318: -/* B51F8 8011E318 2A220020 */ slti $v0, $s1, 0x20 -/* B51FC 8011E31C 1440FFF7 */ bnez $v0, .LIQUE_8011E2FC -/* B5200 8011E320 26100004 */ addiu $s0, $s0, 0x4 -.LIQUE_8011E324: -/* B5204 8011E324 8FBF003C */ lw $ra, 0x3C($sp) -/* B5208 8011E328 8FBE0038 */ lw $fp, 0x38($sp) -/* B520C 8011E32C 8FB70034 */ lw $s7, 0x34($sp) -/* B5210 8011E330 8FB60030 */ lw $s6, 0x30($sp) -/* B5214 8011E334 8FB5002C */ lw $s5, 0x2C($sp) -/* B5218 8011E338 8FB40028 */ lw $s4, 0x28($sp) -/* B521C 8011E33C 8FB30024 */ lw $s3, 0x24($sp) -/* B5220 8011E340 8FB20020 */ lw $s2, 0x20($sp) -/* B5224 8011E344 8FB1001C */ lw $s1, 0x1C($sp) -/* B5228 8011E348 8FB00018 */ lw $s0, 0x18($sp) -/* B522C 8011E34C 03E00008 */ jr $ra -/* B5230 8011E350 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/ver/us/asm/nonmatchings/B4580/appendGfx_animator_node.s b/ver/us/asm/nonmatchings/B4580/appendGfx_animator_node.s deleted file mode 100644 index 658f0d0ecf..0000000000 --- a/ver/us/asm/nonmatchings/B4580/appendGfx_animator_node.s +++ /dev/null @@ -1,358 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel appendGfx_animator_node -/* B6154 8011FA54 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* B6158 8011FA58 AFB60030 */ sw $s6, 0x30($sp) -/* B615C 8011FA5C 00A0B02D */ daddu $s6, $a1, $zero -/* B6160 8011FA60 AFBF003C */ sw $ra, 0x3c($sp) -/* B6164 8011FA64 AFBE0038 */ sw $fp, 0x38($sp) -/* B6168 8011FA68 AFB70034 */ sw $s7, 0x34($sp) -/* B616C 8011FA6C AFB5002C */ sw $s5, 0x2c($sp) -/* B6170 8011FA70 AFB40028 */ sw $s4, 0x28($sp) -/* B6174 8011FA74 AFB30024 */ sw $s3, 0x24($sp) -/* B6178 8011FA78 AFB20020 */ sw $s2, 0x20($sp) -/* B617C 8011FA7C AFB1001C */ sw $s1, 0x1c($sp) -/* B6180 8011FA80 AFB00018 */ sw $s0, 0x18($sp) -/* B6184 8011FA84 AFA40040 */ sw $a0, 0x40($sp) -/* B6188 8011FA88 96C200F4 */ lhu $v0, 0xf4($s6) -/* B618C 8011FA8C 30420080 */ andi $v0, $v0, 0x80 -/* B6190 8011FA90 10400015 */ beqz $v0, .L8011FAE8 -/* B6194 8011FA94 00C0982D */ daddu $s3, $a2, $zero -/* B6198 8011FA98 0000882D */ daddu $s1, $zero, $zero -/* B619C 8011FA9C 26D200B4 */ addiu $s2, $s6, 0xb4 -/* B61A0 8011FAA0 02C0802D */ daddu $s0, $s6, $zero -.L8011FAA4: -/* B61A4 8011FAA4 8E020004 */ lw $v0, 4($s0) -/* B61A8 8011FAA8 5040000A */ beql $v0, $zero, .L8011FAD4 -/* B61AC 8011FAAC 26310001 */ addiu $s1, $s1, 1 -/* B61B0 8011FAB0 0240202D */ daddu $a0, $s2, $zero -/* B61B4 8011FAB4 0260282D */ daddu $a1, $s3, $zero -/* B61B8 8011FAB8 0C019D80 */ jal guMtxCatF -/* B61BC 8011FABC 0240302D */ daddu $a2, $s2, $zero -/* B61C0 8011FAC0 8FA40040 */ lw $a0, 0x40($sp) -/* B61C4 8011FAC4 8E050004 */ lw $a1, 4($s0) -/* B61C8 8011FAC8 0C047E95 */ jal appendGfx_animator_node -/* B61CC 8011FACC 0240302D */ daddu $a2, $s2, $zero -/* B61D0 8011FAD0 26310001 */ addiu $s1, $s1, 1 -.L8011FAD4: -/* B61D4 8011FAD4 2A220020 */ slti $v0, $s1, 0x20 -/* B61D8 8011FAD8 1440FFF2 */ bnez $v0, .L8011FAA4 -/* B61DC 8011FADC 26100004 */ addiu $s0, $s0, 4 -/* B61E0 8011FAE0 08047FD1 */ j .L8011FF44 -/* B61E4 8011FAE4 00000000 */ nop -.L8011FAE8: -/* B61E8 8011FAE8 26D000B4 */ addiu $s0, $s6, 0xb4 -/* B61EC 8011FAEC 0200202D */ daddu $a0, $s0, $zero -/* B61F0 8011FAF0 0260282D */ daddu $a1, $s3, $zero -/* B61F4 8011FAF4 0C019D80 */ jal guMtxCatF -/* B61F8 8011FAF8 0200302D */ daddu $a2, $s0, $zero -/* B61FC 8011FAFC 3C120001 */ lui $s2, 1 -/* B6200 8011FB00 36521630 */ ori $s2, $s2, 0x1630 -/* B6204 8011FB04 0200202D */ daddu $a0, $s0, $zero -/* B6208 8011FB08 3C108007 */ lui $s0, %hi(gMatrixListPos) -/* B620C 8011FB0C 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos) -/* B6210 8011FB10 3C11800A */ lui $s1, %hi(gDisplayContext) -/* B6214 8011FB14 2631A674 */ addiu $s1, $s1, %lo(gDisplayContext) -/* B6218 8011FB18 96050000 */ lhu $a1, ($s0) -/* B621C 8011FB1C 8E220000 */ lw $v0, ($s1) -/* B6220 8011FB20 00052980 */ sll $a1, $a1, 6 -/* B6224 8011FB24 00B22821 */ addu $a1, $a1, $s2 -/* B6228 8011FB28 0C019D40 */ jal guMtxF2L -/* B622C 8011FB2C 00452821 */ addu $a1, $v0, $a1 -/* B6230 8011FB30 3C03DA38 */ lui $v1, 0xda38 -/* B6234 8011FB34 34630003 */ ori $v1, $v1, 3 -/* B6238 8011FB38 3C05E300 */ lui $a1, 0xe300 -/* B623C 8011FB3C 34A50F00 */ ori $a1, $a1, 0xf00 -/* B6240 8011FB40 3C06E300 */ lui $a2, 0xe300 -/* B6244 8011FB44 34C61001 */ ori $a2, $a2, 0x1001 -/* B6248 8011FB48 3C07D9FD */ lui $a3, 0xd9fd -/* B624C 8011FB4C 3C09800A */ lui $t1, %hi(gMainGfxPos) -/* B6250 8011FB50 2529A66C */ addiu $t1, $t1, %lo(gMainGfxPos) -/* B6254 8011FB54 34E7FFFF */ ori $a3, $a3, 0xffff -/* B6258 8011FB58 8D280000 */ lw $t0, ($t1) -/* B625C 8011FB5C 96020000 */ lhu $v0, ($s0) -/* B6260 8011FB60 0100202D */ daddu $a0, $t0, $zero -/* B6264 8011FB64 25080008 */ addiu $t0, $t0, 8 -/* B6268 8011FB68 AD280000 */ sw $t0, ($t1) -/* B626C 8011FB6C AC830000 */ sw $v1, ($a0) -/* B6270 8011FB70 24430001 */ addiu $v1, $v0, 1 -/* B6274 8011FB74 3042FFFF */ andi $v0, $v0, 0xffff -/* B6278 8011FB78 00021180 */ sll $v0, $v0, 6 -/* B627C 8011FB7C A6030000 */ sh $v1, ($s0) -/* B6280 8011FB80 8E230000 */ lw $v1, ($s1) -/* B6284 8011FB84 00521021 */ addu $v0, $v0, $s2 -/* B6288 8011FB88 00621821 */ addu $v1, $v1, $v0 -/* B628C 8011FB8C 25020008 */ addiu $v0, $t0, 8 -/* B6290 8011FB90 AC830004 */ sw $v1, 4($a0) -/* B6294 8011FB94 AD220000 */ sw $v0, ($t1) -/* B6298 8011FB98 3C02E700 */ lui $v0, 0xe700 -/* B629C 8011FB9C AD020000 */ sw $v0, ($t0) -/* B62A0 8011FBA0 25020010 */ addiu $v0, $t0, 0x10 -/* B62A4 8011FBA4 AD000004 */ sw $zero, 4($t0) -/* B62A8 8011FBA8 AD220000 */ sw $v0, ($t1) -/* B62AC 8011FBAC 3C02D700 */ lui $v0, 0xd700 -/* B62B0 8011FBB0 AD020008 */ sw $v0, 8($t0) -/* B62B4 8011FBB4 25020018 */ addiu $v0, $t0, 0x18 -/* B62B8 8011FBB8 AD00000C */ sw $zero, 0xc($t0) -/* B62BC 8011FBBC AD220000 */ sw $v0, ($t1) -/* B62C0 8011FBC0 25020020 */ addiu $v0, $t0, 0x20 -/* B62C4 8011FBC4 AD050010 */ sw $a1, 0x10($t0) -/* B62C8 8011FBC8 AD000014 */ sw $zero, 0x14($t0) -/* B62CC 8011FBCC AD220000 */ sw $v0, ($t1) -/* B62D0 8011FBD0 25020028 */ addiu $v0, $t0, 0x28 -/* B62D4 8011FBD4 AD060018 */ sw $a2, 0x18($t0) -/* B62D8 8011FBD8 AD00001C */ sw $zero, 0x1c($t0) -/* B62DC 8011FBDC AD220000 */ sw $v0, ($t1) -/* B62E0 8011FBE0 AD070020 */ sw $a3, 0x20($t0) -/* B62E4 8011FBE4 AD000024 */ sw $zero, 0x24($t0) -/* B62E8 8011FBE8 8FAA0040 */ lw $t2, 0x40($sp) -/* B62EC 8011FBEC 8D420000 */ lw $v0, ($t2) -/* B62F0 8011FBF0 3C030001 */ lui $v1, 1 -/* B62F4 8011FBF4 00431024 */ and $v0, $v0, $v1 -/* B62F8 8011FBF8 10400007 */ beqz $v0, .L8011FC18 -/* B62FC 8011FBFC 3C02D9FF */ lui $v0, 0xd9ff -/* B6300 8011FC00 3442FFFF */ ori $v0, $v0, 0xffff -/* B6304 8011FC04 25030030 */ addiu $v1, $t0, 0x30 -/* B6308 8011FC08 AD230000 */ sw $v1, ($t1) -/* B630C 8011FC0C AD020028 */ sw $v0, 0x28($t0) -/* B6310 8011FC10 24020400 */ addiu $v0, $zero, 0x400 -/* B6314 8011FC14 AD02002C */ sw $v0, 0x2c($t0) -.L8011FC18: -/* B6318 8011FC18 3C028015 */ lui $v0, %hi(gAnimModelFogEnabled) -/* B631C 8011FC1C 8C423A44 */ lw $v0, %lo(gAnimModelFogEnabled)($v0) -/* B6320 8011FC20 1440000C */ bnez $v0, .L8011FC54 -/* B6324 8011FC24 3C04FC12 */ lui $a0, 0xfc12 -/* B6328 8011FC28 3C05FCFF */ lui $a1, 0xfcff -/* B632C 8011FC2C 34A5FFFF */ ori $a1, $a1, 0xffff -/* B6330 8011FC30 3C04FFFC */ lui $a0, 0xfffc -/* B6334 8011FC34 8D220000 */ lw $v0, ($t1) -/* B6338 8011FC38 3484F279 */ ori $a0, $a0, 0xf279 -/* B633C 8011FC3C 0040182D */ daddu $v1, $v0, $zero -/* B6340 8011FC40 24420008 */ addiu $v0, $v0, 8 -/* B6344 8011FC44 AD220000 */ sw $v0, ($t1) -/* B6348 8011FC48 AC650000 */ sw $a1, ($v1) -/* B634C 8011FC4C 08047F1D */ j .L8011FC74 -/* B6350 8011FC50 AC640004 */ sw $a0, 4($v1) -.L8011FC54: -/* B6354 8011FC54 8D220000 */ lw $v0, ($t1) -/* B6358 8011FC58 34841E04 */ ori $a0, $a0, 0x1e04 -/* B635C 8011FC5C 0040182D */ daddu $v1, $v0, $zero -/* B6360 8011FC60 24420008 */ addiu $v0, $v0, 8 -/* B6364 8011FC64 AD220000 */ sw $v0, ($t1) -/* B6368 8011FC68 2402F3F8 */ addiu $v0, $zero, -0xc08 -/* B636C 8011FC6C AC640000 */ sw $a0, ($v1) -/* B6370 8011FC70 AC620004 */ sw $v0, 4($v1) -.L8011FC74: -/* B6374 8011FC74 3C10800A */ lui $s0, %hi(gMainGfxPos) -/* B6378 8011FC78 2610A66C */ addiu $s0, $s0, %lo(gMainGfxPos) -/* B637C 8011FC7C 8E020000 */ lw $v0, ($s0) -/* B6380 8011FC80 3C11E700 */ lui $s1, 0xe700 -/* B6384 8011FC84 0040182D */ daddu $v1, $v0, $zero -/* B6388 8011FC88 AC710000 */ sw $s1, ($v1) -/* B638C 8011FC8C AC600004 */ sw $zero, 4($v1) -/* B6390 8011FC90 8FAA0040 */ lw $t2, 0x40($sp) -/* B6394 8011FC94 8D4302D4 */ lw $v1, 0x2d4($t2) -/* B6398 8011FC98 24420008 */ addiu $v0, $v0, 8 -/* B639C 8011FC9C 10600004 */ beqz $v1, .L8011FCB0 -/* B63A0 8011FCA0 AE020000 */ sw $v0, ($s0) -/* B63A4 8011FCA4 8D4402D8 */ lw $a0, 0x2d8($t2) -/* B63A8 8011FCA8 0060F809 */ jalr $v1 -/* B63AC 8011FCAC 00000000 */ nop -.L8011FCB0: -/* B63B0 8011FCB0 8E040000 */ lw $a0, ($s0) -/* B63B4 8011FCB4 0080102D */ daddu $v0, $a0, $zero -/* B63B8 8011FCB8 AC510000 */ sw $s1, ($v0) -/* B63BC 8011FCBC AC400004 */ sw $zero, 4($v0) -/* B63C0 8011FCC0 8EC50000 */ lw $a1, ($s6) -/* B63C4 8011FCC4 24840008 */ addiu $a0, $a0, 8 -/* B63C8 8011FCC8 10A00089 */ beqz $a1, .L8011FEF0 -/* B63CC 8011FCCC AE040000 */ sw $a0, ($s0) -/* B63D0 8011FCD0 86C200F8 */ lh $v0, 0xf8($s6) -/* B63D4 8011FCD4 04410008 */ bgez $v0, .L8011FCF8 -/* B63D8 8011FCD8 240200DF */ addiu $v0, $zero, 0xdf -/* B63DC 8011FCDC 3C02DE00 */ lui $v0, 0xde00 -/* B63E0 8011FCE0 AC820000 */ sw $v0, ($a0) -/* B63E4 8011FCE4 8EC30000 */ lw $v1, ($s6) -/* B63E8 8011FCE8 24820008 */ addiu $v0, $a0, 8 -/* B63EC 8011FCEC AE020000 */ sw $v0, ($s0) -/* B63F0 8011FCF0 08047FBC */ j .L8011FEF0 -/* B63F4 8011FCF4 AC830004 */ sw $v1, 4($a0) -.L8011FCF8: -/* B63F8 8011FCF8 90A30000 */ lbu $v1, ($a1) -/* B63FC 8011FCFC 10620008 */ beq $v1, $v0, .L8011FD20 -/* B6400 8011FD00 0000202D */ daddu $a0, $zero, $zero -/* B6404 8011FD04 0040302D */ daddu $a2, $v0, $zero -/* B6408 8011FD08 24A20008 */ addiu $v0, $a1, 8 -.L8011FD0C: -/* B640C 8011FD0C 24840001 */ addiu $a0, $a0, 1 -/* B6410 8011FD10 8C450000 */ lw $a1, ($v0) -/* B6414 8011FD14 00051E02 */ srl $v1, $a1, 0x18 -/* B6418 8011FD18 1466FFFC */ bne $v1, $a2, .L8011FD0C -/* B641C 8011FD1C 24420008 */ addiu $v0, $v0, 8 -.L8011FD20: -/* B6420 8011FD20 24840001 */ addiu $a0, $a0, 1 -/* B6424 8011FD24 0000182D */ daddu $v1, $zero, $zero -/* B6428 8011FD28 3C058015 */ lui $a1, %hi(D_801536C0) -/* B642C 8011FD2C 24A536C0 */ addiu $a1, $a1, %lo(D_801536C0) -/* B6430 8011FD30 000310C0 */ sll $v0, $v1, 3 -.L8011FD34: -/* B6434 8011FD34 0045B821 */ addu $s7, $v0, $a1 -/* B6438 8011FD38 8EE20000 */ lw $v0, ($s7) -/* B643C 8011FD3C 04400006 */ bltz $v0, .L8011FD58 -/* B6440 8011FD40 28620060 */ slti $v0, $v1, 0x60 -/* B6444 8011FD44 24630001 */ addiu $v1, $v1, 1 -/* B6448 8011FD48 28620060 */ slti $v0, $v1, 0x60 -/* B644C 8011FD4C 1440FFF9 */ bnez $v0, .L8011FD34 -/* B6450 8011FD50 000310C0 */ sll $v0, $v1, 3 -/* B6454 8011FD54 28620060 */ slti $v0, $v1, 0x60 -.L8011FD58: -/* B6458 8011FD58 14400003 */ bnez $v0, .L8011FD68 -/* B645C 8011FD5C 00000000 */ nop -.L8011FD60: -/* B6460 8011FD60 08047F58 */ j .L8011FD60 -/* B6464 8011FD64 00000000 */ nop -.L8011FD68: -/* B6468 8011FD68 0C00AB0A */ jal general_heap_malloc -/* B646C 8011FD6C 000420C0 */ sll $a0, $a0, 3 -/* B6470 8011FD70 0040982D */ daddu $s3, $v0, $zero -/* B6474 8011FD74 16600003 */ bnez $s3, .L8011FD84 -/* B6478 8011FD78 AEF30004 */ sw $s3, 4($s7) -.L8011FD7C: -/* B647C 8011FD7C 08047F5F */ j .L8011FD7C -/* B6480 8011FD80 00000000 */ nop -.L8011FD84: -/* B6484 8011FD84 0000A82D */ daddu $s5, $zero, $zero -/* B6488 8011FD88 24020003 */ addiu $v0, $zero, 3 -/* B648C 8011FD8C AEE20000 */ sw $v0, ($s7) -/* B6490 8011FD90 8EC20000 */ lw $v0, ($s6) -/* B6494 8011FD94 8C450000 */ lw $a1, ($v0) -/* B6498 8011FD98 8C470004 */ lw $a3, 4($v0) -/* B649C 8011FD9C 240200DF */ addiu $v0, $zero, 0xdf -/* B64A0 8011FDA0 00051E02 */ srl $v1, $a1, 0x18 -/* B64A4 8011FDA4 10620044 */ beq $v1, $v0, .L8011FEB8 -/* B64A8 8011FDA8 24140002 */ addiu $s4, $zero, 2 -/* B64AC 8011FDAC 3C1E0100 */ lui $fp, 0x100 -/* B64B0 8011FDB0 2672FFFC */ addiu $s2, $s3, -4 -.L8011FDB4: -/* B64B4 8011FDB4 24020001 */ addiu $v0, $zero, 1 -/* B64B8 8011FDB8 5462002F */ bnel $v1, $v0, .L8011FE78 -/* B64BC 8011FDBC 0260102D */ daddu $v0, $s3, $zero -/* B64C0 8011FDC0 00451006 */ srlv $v0, $a1, $v0 -/* B64C4 8011FDC4 3051007F */ andi $s1, $v0, 0x7f -/* B64C8 8011FDC8 00051302 */ srl $v0, $a1, 0xc -/* B64CC 8011FDCC 305000FF */ andi $s0, $v0, 0xff -/* B64D0 8011FDD0 8EC200FC */ lw $v0, 0xfc($s6) -/* B64D4 8011FDD4 14400010 */ bnez $v0, .L8011FE18 -/* B64D8 8011FDD8 02308823 */ subu $s1, $s1, $s0 -/* B64DC 8011FDDC 26520008 */ addiu $s2, $s2, 8 -/* B64E0 8011FDE0 26730008 */ addiu $s3, $s3, 8 -/* B64E4 8011FDE4 00101300 */ sll $v0, $s0, 0xc -/* B64E8 8011FDE8 02301821 */ addu $v1, $s1, $s0 -/* B64EC 8011FDEC 3063007F */ andi $v1, $v1, 0x7f -/* B64F0 8011FDF0 00031840 */ sll $v1, $v1, 1 -/* B64F4 8011FDF4 007E1825 */ or $v1, $v1, $fp -/* B64F8 8011FDF8 86C400F8 */ lh $a0, 0xf8($s6) -/* B64FC 8011FDFC 00431025 */ or $v0, $v0, $v1 -/* B6500 8011FE00 AE42FFFC */ sw $v0, -4($s2) -/* B6504 8011FE04 00952021 */ addu $a0, $a0, $s5 -/* B6508 8011FE08 00042100 */ sll $a0, $a0, 4 -/* B650C 8011FE0C 00E41821 */ addu $v1, $a3, $a0 -/* B6510 8011FE10 08047F9C */ j .L8011FE70 -/* B6514 8011FE14 AE430000 */ sw $v1, ($s2) -.L8011FE18: -/* B6518 8011FE18 02C0282D */ daddu $a1, $s6, $zero -/* B651C 8011FE1C 26520008 */ addiu $s2, $s2, 8 -/* B6520 8011FE20 8FA40040 */ lw $a0, 0x40($sp) -/* B6524 8011FE24 86C200F8 */ lh $v0, 0xf8($s6) -/* B6528 8011FE28 26730008 */ addiu $s3, $s3, 8 -/* B652C 8011FE2C AFB10010 */ sw $s1, 0x10($sp) -/* B6530 8011FE30 AFB50014 */ sw $s5, 0x14($sp) -/* B6534 8011FE34 00551021 */ addu $v0, $v0, $s5 -/* B6538 8011FE38 00023040 */ sll $a2, $v0, 1 -/* B653C 8011FE3C 00C23021 */ addu $a2, $a2, $v0 -/* B6540 8011FE40 00063040 */ sll $a2, $a2, 1 -/* B6544 8011FE44 00E63021 */ addu $a2, $a3, $a2 -/* B6548 8011FE48 0C0477A0 */ jal animator_copy_vertices_to_buffer -/* B654C 8011FE4C 0200382D */ daddu $a3, $s0, $zero -/* B6550 8011FE50 00102300 */ sll $a0, $s0, 0xc -/* B6554 8011FE54 02301821 */ addu $v1, $s1, $s0 -/* B6558 8011FE58 3063007F */ andi $v1, $v1, 0x7f -/* B655C 8011FE5C 00031840 */ sll $v1, $v1, 1 -/* B6560 8011FE60 007E1825 */ or $v1, $v1, $fp -/* B6564 8011FE64 00832025 */ or $a0, $a0, $v1 -/* B6568 8011FE68 AE44FFFC */ sw $a0, -4($s2) -/* B656C 8011FE6C AE420000 */ sw $v0, ($s2) -.L8011FE70: -/* B6570 8011FE70 08047FA2 */ j .L8011FE88 -/* B6574 8011FE74 02B0A821 */ addu $s5, $s5, $s0 -.L8011FE78: -/* B6578 8011FE78 26520008 */ addiu $s2, $s2, 8 -/* B657C 8011FE7C 26730008 */ addiu $s3, $s3, 8 -/* B6580 8011FE80 AC450000 */ sw $a1, ($v0) -/* B6584 8011FE84 AC470004 */ sw $a3, 4($v0) -.L8011FE88: -/* B6588 8011FE88 00141080 */ sll $v0, $s4, 2 -/* B658C 8011FE8C 26940001 */ addiu $s4, $s4, 1 -/* B6590 8011FE90 00141880 */ sll $v1, $s4, 2 -/* B6594 8011FE94 8EC40000 */ lw $a0, ($s6) -/* B6598 8011FE98 00441021 */ addu $v0, $v0, $a0 -/* B659C 8011FE9C 00641821 */ addu $v1, $v1, $a0 -/* B65A0 8011FEA0 8C450000 */ lw $a1, ($v0) -/* B65A4 8011FEA4 240200DF */ addiu $v0, $zero, 0xdf -/* B65A8 8011FEA8 8C670000 */ lw $a3, ($v1) -/* B65AC 8011FEAC 00051E02 */ srl $v1, $a1, 0x18 -/* B65B0 8011FEB0 1462FFC0 */ bne $v1, $v0, .L8011FDB4 -/* B65B4 8011FEB4 26940001 */ addiu $s4, $s4, 1 -.L8011FEB8: -/* B65B8 8011FEB8 3C05800A */ lui $a1, %hi(gMainGfxPos) -/* B65BC 8011FEBC 24A5A66C */ addiu $a1, $a1, %lo(gMainGfxPos) -/* B65C0 8011FEC0 0260202D */ daddu $a0, $s3, $zero -/* B65C4 8011FEC4 8CA30000 */ lw $v1, ($a1) -/* B65C8 8011FEC8 3C02DF00 */ lui $v0, 0xdf00 -/* B65CC 8011FECC AC820000 */ sw $v0, ($a0) -/* B65D0 8011FED0 3C02DE00 */ lui $v0, 0xde00 -/* B65D4 8011FED4 AC800004 */ sw $zero, 4($a0) -/* B65D8 8011FED8 0060202D */ daddu $a0, $v1, $zero -/* B65DC 8011FEDC AC820000 */ sw $v0, ($a0) -/* B65E0 8011FEE0 8EE20004 */ lw $v0, 4($s7) -/* B65E4 8011FEE4 24630008 */ addiu $v1, $v1, 8 -/* B65E8 8011FEE8 ACA30000 */ sw $v1, ($a1) -/* B65EC 8011FEEC AC820004 */ sw $v0, 4($a0) -.L8011FEF0: -/* B65F0 8011FEF0 0000882D */ daddu $s1, $zero, $zero -/* B65F4 8011FEF4 3C03800A */ lui $v1, %hi(gMainGfxPos) -/* B65F8 8011FEF8 2463A66C */ addiu $v1, $v1, %lo(gMainGfxPos) -/* B65FC 8011FEFC 8C620000 */ lw $v0, ($v1) -/* B6600 8011FF00 02C0802D */ daddu $s0, $s6, $zero -/* B6604 8011FF04 0040202D */ daddu $a0, $v0, $zero -/* B6608 8011FF08 24420008 */ addiu $v0, $v0, 8 -/* B660C 8011FF0C AC620000 */ sw $v0, ($v1) -/* B6610 8011FF10 3C02E700 */ lui $v0, 0xe700 -/* B6614 8011FF14 AC820000 */ sw $v0, ($a0) -/* B6618 8011FF18 AC800004 */ sw $zero, 4($a0) -.L8011FF1C: -/* B661C 8011FF1C 8E050004 */ lw $a1, 4($s0) -/* B6620 8011FF20 50A00005 */ beql $a1, $zero, .L8011FF38 -/* B6624 8011FF24 26310001 */ addiu $s1, $s1, 1 -/* B6628 8011FF28 8FA40040 */ lw $a0, 0x40($sp) -/* B662C 8011FF2C 0C047E95 */ jal appendGfx_animator_node -/* B6630 8011FF30 26C600B4 */ addiu $a2, $s6, 0xb4 -/* B6634 8011FF34 26310001 */ addiu $s1, $s1, 1 -.L8011FF38: -/* B6638 8011FF38 2A220020 */ slti $v0, $s1, 0x20 -/* B663C 8011FF3C 1440FFF7 */ bnez $v0, .L8011FF1C -/* B6640 8011FF40 26100004 */ addiu $s0, $s0, 4 -.L8011FF44: -/* B6644 8011FF44 8FBF003C */ lw $ra, 0x3c($sp) -/* B6648 8011FF48 8FBE0038 */ lw $fp, 0x38($sp) -/* B664C 8011FF4C 8FB70034 */ lw $s7, 0x34($sp) -/* B6650 8011FF50 8FB60030 */ lw $s6, 0x30($sp) -/* B6654 8011FF54 8FB5002C */ lw $s5, 0x2c($sp) -/* B6658 8011FF58 8FB40028 */ lw $s4, 0x28($sp) -/* B665C 8011FF5C 8FB30024 */ lw $s3, 0x24($sp) -/* B6660 8011FF60 8FB20020 */ lw $s2, 0x20($sp) -/* B6664 8011FF64 8FB1001C */ lw $s1, 0x1c($sp) -/* B6668 8011FF68 8FB00018 */ lw $s0, 0x18($sp) -/* B666C 8011FF6C 03E00008 */ jr $ra -/* B6670 8011FF70 27BD0040 */ addiu $sp, $sp, 0x40