From aacc45612e4235da67137355bd8d6e1f345d1e04 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Tue, 9 Sep 2025 11:31:59 -0400 Subject: [PATCH] Splat upgrade (#705) * Upgrade to splat 0.35.1 and spimdisasm 1.36.0 * Upgrade to splat 0.35.2 and spimdisasm 1.36.1 and do the submodule updates required for that as well. --- include/macro.inc | 154 ++++++++++++++++++++++++------- requirements.txt | 4 +- src/hasm/collision.s | 12 +-- src/hasm/entrypoint.s | 4 +- src/hasm/gzip_asm.s | 20 ++-- src/hasm/llmuldiv_gcc.s | 48 +++++----- src/hasm/math_util.s | 184 ++++++++++++++++++------------------- src/hasm/obj_animate.s | 4 +- src/hasm/obj_shade_fast.s | 8 +- tools/asm-processor | 2 +- tools/m2c | 2 +- ver/splat/dkr.jpn.v79.yaml | 4 +- ver/splat/dkr.pal.v77.yaml | 4 +- ver/splat/dkr.pal.v80.yaml | 4 +- ver/splat/dkr.us.v77.yaml | 4 +- ver/splat/dkr.us.v80.yaml | 4 +- 16 files changed, 278 insertions(+), 184 deletions(-) diff --git a/include/macro.inc b/include/macro.inc index 0b283ffd..f2f16bfc 100644 --- a/include/macro.inc +++ b/include/macro.inc @@ -1,52 +1,136 @@ -# common macros +# This file is used by modern gas. +# Defines the expected assembly macros -# Assembly Macros +# Evaluate this file only once in case it's included more than once +.ifndef _MACRO_INC_GUARD +.internal _MACRO_INC_GUARD +.set _MACRO_INC_GUARD, 1 -.set K0BASE, 0x80000000 -.set K1BASE, 0xA0000000 -.set K2BASE, 0xC0000000 - -.macro glabel label - .global \label +# A function symbol. +.macro glabel label, visibility=global + .\visibility \label .type \label, @function + \label: + .ent \label +.endm + +# The end of a function symbol. +.macro endlabel label + .size \label, . - \label + .end \label +.endm + +# An alternative entry to a function. +.macro alabel label, visibility=global + .\visibility \label + .type \label, @function + \label: + .aent \label +.endm + +# A label referenced by an error handler table. +.macro ehlabel label, visibility=global + .\visibility \label \label: .endm -.macro dlabel label - .global \label + +# A label referenced by a jumptable. +.macro jlabel label, visibility=global + .\visibility \label + \label: +.endm + + +# A data symbol. +.macro dlabel label, visibility=global + .\visibility \label .type \label, @object \label: .endm -.macro jlabel label - .global \label - \label: +# End of a data symbol. +.macro enddlabel label + .size \label, . - \label .endm -.macro .word32 x - .word \x + +# Label to signal the symbol haven't been matched yet. +.macro nonmatching label, size=1 + .global \label\().NON_MATCHING + .type \label\().NON_MATCHING, @object + .size \label\().NON_MATCHING, \size + \label\().NON_MATCHING: .endm -.macro BANK_INDEX bank, index - .half \bank - .half \index -.endm +# COP0 register aliases -.macro move a, b - addu \a, \b, $zero -.endm +.set Index, $0 +.set Random, $1 +.set EntryLo0, $2 +.set EntryLo1, $3 +.set Context, $4 +.set PageMask, $5 +.set Wired, $6 +.set Reserved07, $7 +.set BadVaddr, $8 +.set Count, $9 +.set EntryHi, $10 +.set Compare, $11 +.set Status, $12 +.set Cause, $13 +.set EPC, $14 +.set PRevID, $15 +.set Config, $16 +.set LLAddr, $17 +.set WatchLo, $18 +.set WatchHi, $19 +.set XContext, $20 +.set Reserved21, $21 +.set Reserved22, $22 +.set Reserved23, $23 +.set Reserved24, $24 +.set Reserved25, $25 +.set PErr, $26 +.set CacheErr, $27 +.set TagLo, $28 +.set TagHi, $29 +.set ErrorEPC, $30 +.set Reserved31, $31 -.macro leaf label - .global \label - .type \label, @function - \label: - .ent \label -.endm +# Float register aliases -# Used for alternative entries for Sin functions -.macro altleaf label - .global \label - .type \label, @function - \label: - .aent \label -.endm +.set $fv0, $f0 +.set $fv0f, $f1 +.set $fv1, $f2 +.set $fv1f, $f3 +.set $ft0, $f4 +.set $ft0f, $f5 +.set $ft1, $f6 +.set $ft1f, $f7 +.set $ft2, $f8 +.set $ft2f, $f9 +.set $ft3, $f10 +.set $ft3f, $f11 +.set $fa0, $f12 +.set $fa0f, $f13 +.set $fa1, $f14 +.set $fa1f, $f15 +.set $ft4, $f16 +.set $ft4f, $f17 +.set $ft5, $f18 +.set $ft5f, $f19 +.set $fs0, $f20 +.set $fs0f, $f21 +.set $fs1, $f22 +.set $fs1f, $f23 +.set $fs2, $f24 +.set $fs2f, $f25 +.set $fs3, $f26 +.set $fs3f, $f27 +.set $fs4, $f28 +.set $fs4f, $f29 +.set $fs5, $f30 +.set $fs5f, $f31 + +.endif diff --git a/requirements.txt b/requirements.txt index 0d78878e..37e0ddaa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -splat64[mips]==0.34.1 -spimdisasm==1.35.0 +splat64[mips]==0.35.2 +spimdisasm==1.36.1 pycparser>=2.22 colorama>=0.4.6 watchdog>=6.0.0 diff --git a/src/hasm/collision.s b/src/hasm/collision.s index 54e405d6..319ab781 100644 --- a/src/hasm/collision.s +++ b/src/hasm/collision.s @@ -22,7 +22,7 @@ dlabel D_800E5F70 /* Generated by spimdisasm 1.30.2 */ -leaf generate_collision_candidates +glabel generate_collision_candidates /* 31D30 80031130 27BDFF90 */ addiu $sp, $sp, -0x70 /* 31D34 80031134 3C080001 */ lui $t0, (0x186A0 >> 16) /* 31D38 80031138 3C09FFFE */ lui $t1, (0xFFFE7960 >> 16) @@ -286,9 +286,9 @@ leaf generate_collision_candidates /* 320D0 800314D0 00001025 */ or $v0, $zero, $zero /* 320D4 800314D4 03E00008 */ jr $ra /* 320D8 800314D8 27BD0070 */ addiu $sp, $sp, 0x70 -.end generate_collision_candidates +endlabel generate_collision_candidates -leaf compute_grid_overlap_mask +glabel compute_grid_overlap_mask /* 320DC 800314DC 10800046 */ beqz $a0, .L800315F8 /* 320E0 800314E0 00001025 */ or $v0, $zero, $zero /* 320E4 800314E4 84880000 */ lh $t0, 0x0($a0) @@ -377,9 +377,9 @@ leaf compute_grid_overlap_mask .L800315F8: /* 321F8 800315F8 03E00008 */ jr $ra /* 321FC 800315FC 00000000 */ nop -.end compute_grid_overlap_mask +endlabel compute_grid_overlap_mask -leaf resolve_collisions +glabel resolve_collisions /* 32200 80031600 24080001 */ addiu $t0, $zero, 0x1 /* 32204 80031604 A3A80001 */ sb $t0, 0x1($sp) /* 32208 80031608 3C088012 */ lui $t0, %hi(gNumCollisionCandidates) @@ -750,4 +750,4 @@ leaf resolve_collisions .L80031B4C: /* 3274C 80031B4C 03E00008 */ jr $ra /* 32750 80031B50 83A20000 */ lb $v0, 0x0($sp) -.end resolve_collisions +endlabel resolve_collisions diff --git a/src/hasm/entrypoint.s b/src/hasm/entrypoint.s index 0837386b..09921247 100644 --- a/src/hasm/entrypoint.s +++ b/src/hasm/entrypoint.s @@ -14,7 +14,7 @@ dlabel entrypointThreadStack .section .text, "ax" -leaf entrypoint +glabel entrypoint lui $t0, %hi(__BSS_SECTION_START) lui $t1, %hi(__BSS_SECTION_SIZE) addiu $t0, $t0, %lo(__BSS_SECTION_START) @@ -36,4 +36,4 @@ nop nop nop nop -.end entrypoint +endlabel entrypoint diff --git a/src/hasm/gzip_asm.s b/src/hasm/gzip_asm.s index 269bf096..f426a903 100644 --- a/src/hasm/gzip_asm.s +++ b/src/hasm/gzip_asm.s @@ -29,7 +29,7 @@ dlabel gzip_mask_bits /* Generated by spimdisasm 1.30.0 */ -leaf gzip_inflate_block +glabel gzip_inflate_block /* C74C0 800C68C0 3C0B8013 */ lui $t3, %hi(gzip_num_bits) /* C74C4 800C68C4 8D6BAAD4 */ lw $t3, %lo(gzip_num_bits)($t3) /* C74C8 800C68C8 3C018013 */ lui $at, %hi(gHuftTablePos) @@ -102,9 +102,9 @@ leaf gzip_inflate_block /* C75B8 800C69B8 8FB00018 */ lw $s0, 0x18($sp) /* C75BC 800C69BC 03E00008 */ jr $ra /* C75C0 800C69C0 27BD0020 */ addiu $sp, $sp, 0x20 -.end gzip_inflate_block +endlabel gzip_inflate_block -leaf gzip_inflate_dynamic +glabel gzip_inflate_dynamic /* C75C4 800C69C4 27BDFAC0 */ addiu $sp, $sp, -0x540 /* C75C8 800C69C8 AFB30028 */ sw $s3, 0x28($sp) /* C75CC 800C69CC 3C138013 */ lui $s3, %hi(gzip_num_bits) @@ -394,9 +394,9 @@ leaf gzip_inflate_dynamic /* C79D0 800C6DD0 8FB0001C */ lw $s0, 0x1C($sp) /* C79D4 800C6DD4 03E00008 */ jr $ra /* C79D8 800C6DD8 27BD0540 */ addiu $sp, $sp, 0x540 -.end gzip_inflate_dynamic +endlabel gzip_inflate_dynamic -leaf gzip_inflate_fixed +glabel gzip_inflate_fixed /* C79DC 800C6DDC 27BDFAD0 */ addiu $sp, $sp, -0x530 /* C79E0 800C6DE0 AFBF001C */ sw $ra, 0x1C($sp) /* C79E4 800C6DE4 23AB0044 */ addi $t3, $sp, 0x44 /* handwritten instruction */ @@ -487,9 +487,9 @@ leaf gzip_inflate_fixed /* C7B28 800C6F28 27BD0530 */ addiu $sp, $sp, 0x530 /* C7B2C 800C6F2C 03E00008 */ jr $ra /* C7B30 800C6F30 00000000 */ nop -.end gzip_inflate_fixed +endlabel gzip_inflate_fixed -leaf gzip_inflate_stored +glabel gzip_inflate_stored /* C7B34 800C6F34 3C0D8013 */ lui $t5, %hi(gzip_num_bits) /* C7B38 800C6F38 8DADAAD4 */ lw $t5, %lo(gzip_num_bits)($t5) /* C7B3C 800C6F3C 3C0C8013 */ lui $t4, %hi(gzip_bit_buffer) @@ -564,9 +564,9 @@ leaf gzip_inflate_stored /* C7C34 800C7034 3C018013 */ lui $at, %hi(gzip_num_bits) /* C7C38 800C7038 03E00008 */ jr $ra /* C7C3C 800C703C AC2DAAD4 */ sw $t5, %lo(gzip_num_bits)($at) -.end gzip_inflate_stored +endlabel gzip_inflate_stored -leaf gzip_inflate_codes +glabel gzip_inflate_codes /* C7C40 800C7040 27BDFFF0 */ addiu $sp, $sp, -0x10 /* C7C44 800C7044 3C0B800F */ lui $t3, %hi(gzip_mask_bits) /* C7C48 800C7048 AFB20008 */ sw $s2, 0x8($sp) @@ -778,4 +778,4 @@ leaf gzip_inflate_codes /* C7F28 800C7328 8FB00000 */ lw $s0, 0x0($sp) /* C7F2C 800C732C 03E00008 */ jr $ra /* C7F30 800C7330 27BD0010 */ addiu $sp, $sp, 0x10 -.end gzip_inflate_codes +endlabel gzip_inflate_codes diff --git a/src/hasm/llmuldiv_gcc.s b/src/hasm/llmuldiv_gcc.s index d0fc973d..feb96dd4 100644 --- a/src/hasm/llmuldiv_gcc.s +++ b/src/hasm/llmuldiv_gcc.s @@ -25,7 +25,7 @@ dlabel D_800E9558 /* TODO: Is there a non-insane way to fix this hack that doesn't involve the user compiling */ /* a library themselves? */ -leaf __umoddi3 +glabel __umoddi3 sw $a0, ($sp) sw $a1, 4($sp) sw $a2, 8($sp) @@ -42,9 +42,9 @@ leaf __umoddi3 dsra32 $v1, $v1, 0 jr $ra dsra32 $v0, $v0, 0 -.end __umoddi3 +endlabel __umoddi3 -leaf __udivdi3 +glabel __udivdi3 sw $a0, ($sp) sw $a1, 4($sp) sw $a2, 8($sp) @@ -61,9 +61,9 @@ leaf __udivdi3 dsra32 $v1, $v1, 0 jr $ra dsra32 $v0, $v0, 0 -.end __udivdi3 +endlabel __udivdi3 -leaf __moddi3 +glabel __moddi3 sw $a0, ($sp) sw $a1, 4($sp) sw $a2, 8($sp) @@ -80,9 +80,9 @@ leaf __moddi3 dsra32 $v1, $v1, 0 jr $ra dsra32 $v0, $v0, 0 -.end __moddi3 +endlabel __moddi3 -leaf __divdi3 +glabel __divdi3 sw $a0, ($sp) sw $a1, 4($sp) sw $a2, 8($sp) @@ -108,9 +108,9 @@ leaf __divdi3 dsra32 $v1, $v1, 0 jr $ra dsra32 $v0, $v0, 0 -.end __divdi3 +endlabel __divdi3 -leaf __d_to_ll +glabel __d_to_ll /* 0CA730 800C9B30 46206109 */ trunc.l.d $f4, $f12 /* 0CA734 800C9B34 44222000 */ dmfc1 $v0, $f4 /* 0CA738 800C9B38 00000000 */ nop @@ -118,9 +118,9 @@ leaf __d_to_ll /* 0CA740 800C9B40 0003183F */ dsra32 $v1, $v1, 0 /* 0CA744 800C9B44 03E00008 */ jr $ra /* 0CA748 800C9B48 0002103F */ dsra32 $v0, $v0, 0 -.end __d_to_ll +endlabel __d_to_ll -leaf __f_to_ll +glabel __f_to_ll /* 0CA74C 800C9B4C 46006109 */ trunc.l.s $f4, $f12 /* 0CA750 800C9B50 44222000 */ dmfc1 $v0, $f4 /* 0CA754 800C9B54 00000000 */ nop @@ -128,9 +128,9 @@ leaf __f_to_ll /* 0CA75C 800C9B5C 0003183F */ dsra32 $v1, $v1, 0 /* 0CA760 800C9B60 03E00008 */ jr $ra /* 0CA764 800C9B64 0002103F */ dsra32 $v0, $v0, 0 -.end __f_to_ll +endlabel __f_to_ll -leaf __d_to_ull +glabel __d_to_ull /* 0CA768 800C9B68 444EF800 */ cfc1 $t6, $31 /* 0CA76C 800C9B6C 24020001 */ li $v0, 1 /* 0CA770 800C9B70 44C2F800 */ ctc1 $v0, $31 @@ -174,9 +174,9 @@ leaf __d_to_ull /* 0CA7FC 800C9BFC 0003183F */ dsra32 $v1, $v1, 0 /* 0CA800 800C9C00 03E00008 */ jr $ra /* 0CA804 800C9C04 0002103F */ dsra32 $v0, $v0, 0 -.end __d_to_ull +endlabel __d_to_ull -leaf __f_to_ull +glabel __f_to_ull /* 0CA808 800C9C08 444EF800 */ cfc1 $t6, $31 /* 0CA80C 800C9C0C 24020001 */ li $v0, 1 /* 0CA810 800C9C10 44C2F800 */ ctc1 $v0, $31 @@ -219,27 +219,27 @@ leaf __f_to_ull /* 0CA898 800C9C98 0003183F */ dsra32 $v1, $v1, 0 /* 0CA89C 800C9C9C 03E00008 */ jr $ra /* 0CA8A0 800C9CA0 0002103F */ dsra32 $v0, $v0, 0 -.end __f_to_ull +endlabel __f_to_ull -leaf __ll_to_d +glabel __ll_to_d /* 0CA8A4 800C9CA4 AFA40000 */ sw $a0, ($sp) /* 0CA8A8 800C9CA8 AFA50004 */ sw $a1, 4($sp) /* 0CA8AC 800C9CAC DFAE0000 */ ld $t6, ($sp) /* 0CA8B0 800C9CB0 44AE2000 */ dmtc1 $t6, $f4 /* 0CA8B4 800C9CB4 03E00008 */ jr $ra /* 0CA8B8 800C9CB8 46A02021 */ cvt.d.l $f0, $f4 -.end __ll_to_d +endlabel __ll_to_d -leaf __ll_to_f +glabel __ll_to_f /* 0CA8BC 800C9CBC AFA40000 */ sw $a0, ($sp) /* 0CA8C0 800C9CC0 AFA50004 */ sw $a1, 4($sp) /* 0CA8C4 800C9CC4 DFAE0000 */ ld $t6, ($sp) /* 0CA8C8 800C9CC8 44AE2000 */ dmtc1 $t6, $f4 /* 0CA8CC 800C9CCC 03E00008 */ jr $ra /* 0CA8D0 800C9CD0 46A02020 */ cvt.s.l $f0, $f4 -.end __ll_to_f +endlabel __ll_to_f -leaf __ull_to_d +glabel __ull_to_d /* 0CA8D4 800C9CD4 AFA40000 */ sw $a0, ($sp) /* 0CA8D8 800C9CD8 AFA50004 */ sw $a1, 4($sp) /* 0CA8DC 800C9CDC DFAE0000 */ ld $t6, ($sp) @@ -254,9 +254,9 @@ leaf __ull_to_d .L800C9D00: /* 0CA900 800C9D00 03E00008 */ jr $ra /* 0CA904 800C9D04 00000000 */ nop -.end __ull_to_d +endlabel __ull_to_d -leaf __ull_to_f +glabel __ull_to_f /* 0CA908 800C9D08 AFA40000 */ sw $a0, ($sp) /* 0CA90C 800C9D0C AFA50004 */ sw $a1, 4($sp) /* 0CA910 800C9D10 DFAE0000 */ ld $t6, ($sp) @@ -270,6 +270,6 @@ leaf __ull_to_f .L800C9D30: /* 0CA930 800C9D30 03E00008 */ jr $ra /* 0CA934 800C9D34 00000000 */ nop -.end __ull_to_f +endlabel __ull_to_f .endif diff --git a/src/hasm/math_util.s b/src/hasm/math_util.s index ce89eadc..8b3c79bc 100644 --- a/src/hasm/math_util.s +++ b/src/hasm/math_util.s @@ -164,7 +164,7 @@ dlabel gArcTanTable .section .text, "ax" /* Official Name: disableInterrupts */ -leaf interrupts_disable +glabel interrupts_disable lui $t0, %hi(gIntDisFlag) lb $t0, %lo(gIntDisFlag)($t0) beqz $t0, .L8006F534 @@ -177,10 +177,10 @@ nop .L8006F534: jr $ra nop -.end interrupts_disable +endlabel interrupts_disable /* Official Name: enableInterrupts */ -leaf interrupts_enable +glabel interrupts_enable lui $t0, %hi(gIntDisFlag) lb $t0, %lo(gIntDisFlag)($t0) beqz $t0, .L8006F55C @@ -192,23 +192,23 @@ nop .L8006F55C: jr $ra nop -.end interrupts_enable +endlabel interrupts_enable /* Official Name: setIntDisFlag */ -leaf set_gIntDisFlag +glabel set_gIntDisFlag lui $at, %hi(gIntDisFlag) jr $ra sb $a0, %lo(gIntDisFlag)($at) -.end set_gIntDisFlag +endlabel set_gIntDisFlag /* Official Name: getIntDisFlag */ -leaf get_gIntDisFlag +glabel get_gIntDisFlag lui $v0, %hi(gIntDisFlag) jr $ra lbu $v0, %lo(gIntDisFlag)($v0) -.end get_gIntDisFlag +endlabel get_gIntDisFlag -leaf mtx_to_mtxs +glabel mtx_to_mtxs ori $t0, $zero, 0x4 lui $t7, 0xFFFF .L8006F584: @@ -235,9 +235,9 @@ bnel $t0, $zero, .L8006F584 nop jr $ra nop -.end mtx_to_mtxs +endlabel mtx_to_mtxs -leaf mtxf_to_mtxs +glabel mtxf_to_mtxs li.s $at, 65536.0 mtc1 $at, $f12 ori $t0, $zero, 0x4 @@ -266,10 +266,10 @@ bnel $t0, $zero, .L8006F5EC nop jr $ra nop -.end mtxf_to_mtxs +endlabel mtxf_to_mtxs /* Official Name: mathMtxXFMF */ -leaf mtxf_transform_point +glabel mtxf_transform_point mtc1 $a1, $f12 lwc1 $f4, 0x0($a0) mtc1 $a2, $f14 @@ -310,10 +310,10 @@ add.s $f10, $f18, $f6 add.s $f4, $f8, $f10 jr $ra swc1 $f4, 0x0($t8) -.end mtxf_transform_point +endlabel mtxf_transform_point /* Official Name: mathMtxFastXFMF */ -leaf mtxf_transform_dir +glabel mtxf_transform_dir lwc1 $f4, 0x0($a1) lwc1 $f10, 0x0($a0) lwc1 $f6, 0x4($a1) @@ -345,10 +345,10 @@ mul.s $f14, $f8, $f14 add.s $f14, $f12, $f14 jr $ra swc1 $f14, 0x8($a2) -.end mtxf_transform_dir +endlabel mtxf_transform_dir /* Official Name: mathMtxCatF */ -leaf mtxf_mul +glabel mtxf_mul addiu $sp, $sp, -0x8 sdc1 $f2, 0x0($sp) ori $t0, $zero, 0x4 @@ -416,10 +416,10 @@ bnel $t0, $zero, .L8006F774 ldc1 $f2, 0x0($sp) jr $ra addiu $sp, $sp, 0x8 -.end mtxf_mul +endlabel mtxf_mul /* Official Name: mathMtxF2L */ -leaf mtxf_to_mtx +glabel mtxf_to_mtx li.s $at, 65536.0 mtc1 $at, $f12 ori $t0, $zero, 0x4 @@ -460,39 +460,39 @@ bnel $t0, $zero, .L8006F87C nop jr $ra nop -.end mtxf_to_mtx +endlabel mtxf_to_mtx /* Official Name: mathSeed */ -leaf set_rng_seed +glabel set_rng_seed lui $at, %hi(gCurrentRNGSeed) jr $ra sw $a0, %lo(gCurrentRNGSeed)($at) -.end set_rng_seed +endlabel set_rng_seed -leaf save_rng_seed +glabel save_rng_seed lui $a0, %hi(gCurrentRNGSeed) lw $a0, %lo(gCurrentRNGSeed)($a0) lui $at, %hi(gPrevRNGSeed) jr $ra sw $a0, %lo(gPrevRNGSeed)($at) -.end save_rng_seed +endlabel save_rng_seed -leaf load_rng_seed +glabel load_rng_seed lui $a0, %hi(gPrevRNGSeed) lw $a0, %lo(gPrevRNGSeed)($a0) lui $at, %hi(gCurrentRNGSeed) jr $ra sw $a0, %lo(gCurrentRNGSeed)($at) -.end load_rng_seed +endlabel load_rng_seed -leaf get_rng_seed +glabel get_rng_seed lui $v0, %hi(gCurrentRNGSeed) jr $ra lw $v0, %lo(gCurrentRNGSeed)($v0) -.end get_rng_seed +endlabel get_rng_seed /* Official Name: mathRnd */ -leaf rand_range +glabel rand_range lui $t0, %hi(gCurrentRNGSeed) lw $t0, %lo(gCurrentRNGSeed)($t0) lui $at, %hi(gCurrentRNGSeed) @@ -521,10 +521,10 @@ break 7 .L8006F9B0: jr $ra nop -.end rand_range +endlabel rand_range /* Official Name: fastShortReflection */ -leaf vec3s_reflect +glabel vec3s_reflect lh $t0, 0x0($a0) lh $t3, 0x0($a1) lh $t1, 0x2($a0) @@ -559,9 +559,9 @@ sra $t5, $t5, 13 sub $t5, $t5, $t0 jr $ra sh $t5, 0xA($a0) -.end vec3s_reflect +endlabel vec3s_reflect -leaf mtx_to_mtxs_2 +glabel mtx_to_mtxs_2 ori $t2, $zero, 0x10 xor $t3, $t3, $t3 .L8006FA48: @@ -577,9 +577,9 @@ bnel $t3, $t2, .L8006FA48 nop jr $ra nop -.end mtx_to_mtxs_2 +endlabel mtx_to_mtxs_2 -leaf mtxs_transform_point +glabel mtxs_transform_point lh $t0, 0x0($a1) lw $t3, 0x0($a0) lh $t1, 0x2($a1) @@ -638,9 +638,9 @@ add $t4, $t4, $t3 sra $t4, $t4, 16 jr $ra sh $t4, 0x4($a1) -.end mtxs_transform_point +endlabel mtxs_transform_point -leaf mtxs_transform_dir +glabel mtxs_transform_dir lw $t3, 0x0($a0) lh $t0, 0x0($a1) lh $t1, 0x2($a1) @@ -693,9 +693,9 @@ add $t4, $t4, $t6 sra $t4, $t4, 16 jr $ra sh $t4, 0x4($a1) -.end mtxs_transform_dir +endlabel mtxs_transform_dir -leaf mtxf_from_transform +glabel mtxf_from_transform addiu $sp, $sp, -0x8 li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ sd $ra, 0x0($sp) @@ -813,10 +813,10 @@ ld $ra, 0x0($sp) addiu $sp, $sp, 0x8 jr $ra nop -.end mtxf_from_transform +endlabel mtxf_from_transform /* Official Name: mathSquashY */ -leaf mtxf_scale_y +glabel mtxf_scale_y mtc1 $a1, $f18 lwc1 $f16, 0x10($a0) mul.s $f16, $f16, $f18 @@ -828,10 +828,10 @@ lwc1 $f16, 0x18($a0) mul.s $f16, $f16, $f18 jr $ra swc1 $f16, 0x18($a0) -.end mtxf_scale_y +endlabel mtxf_scale_y /* Official Name: mathTransY */ -leaf mtxf_translate_y +glabel mtxf_translate_y mtc1 $a1, $f16 lwc1 $f0, 0x10($a0) lwc1 $f4, 0x14($a0) @@ -849,10 +849,10 @@ add.s $f8, $f8, $f10 swc1 $f4, 0x34($a0) jr $ra swc1 $f8, 0x38($a0) -.end mtxf_translate_y +endlabel mtxf_translate_y /* Official Name: mathRpyXyzMtx */ -leaf mtxf_from_inverse_transform +glabel mtxf_from_inverse_transform addiu $sp, $sp, -0x8 li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ sd $ra, 0x0($sp) @@ -974,9 +974,9 @@ ld $ra, 0x0($sp) addiu $sp, $sp, 0x8 jr $ra nop -.end mtxf_from_inverse_transform +endlabel mtxf_from_inverse_transform -leaf func_80070058 +glabel func_80070058 addiu $sp, $sp, -0x8 li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ sd $ra, 0x0($sp) @@ -1031,9 +1031,9 @@ nop mul.s $f16, $f0, $f8 jr $ra nop -.end func_80070058 +endlabel func_80070058 -leaf mtxf_billboard +glabel mtxf_billboard addiu $sp, $sp, -0x8 or $t9, $a3, $zero li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ @@ -1079,9 +1079,9 @@ ld $ra, 0x0($sp) addiu $sp, $sp, 0x8 jr $ra nop -.end mtxf_billboard +endlabel mtxf_billboard -leaf vec3s_rotate_rpy +glabel vec3s_rotate_rpy addiu $sp, $sp, -0x8 sd $ra, 0x0($sp) or $a2, $a0, $zero @@ -1161,10 +1161,10 @@ ld $ra, 0x0($sp) addiu $sp, $sp, 0x8 jr $ra nop -.end vec3s_rotate_rpy +endlabel vec3s_rotate_rpy /* Official Name: mathOneFloatRPY */ -leaf vec3f_rotate +glabel vec3f_rotate addiu $sp, $sp, -0x8 sd $ra, 0x0($sp) or $a2, $a0, $zero @@ -1211,10 +1211,10 @@ ld $ra, 0x0($sp) addiu $sp, $sp, 0x8 jr $ra nop -.end vec3f_rotate +endlabel vec3f_rotate /* Official Name: mathOneFloatYPR */ -leaf vec3f_rotate_ypr +glabel vec3f_rotate_ypr addiu $sp, $sp, -0x8 sd $ra, 0x0($sp) or $a2, $a0, $zero @@ -1261,10 +1261,10 @@ ld $ra, 0x0($sp) addiu $sp, $sp, 0x8 jr $ra nop -.end vec3f_rotate_ypr +endlabel vec3f_rotate_ypr /* Official Name: mathOneFloatPY */ -leaf vec3f_rotate_py +glabel vec3f_rotate_py addiu $sp, $sp, -0x8 sd $ra, 0x0($sp) or $a2, $a0, $zero @@ -1289,10 +1289,10 @@ ld $ra, 0x0($sp) addiu $sp, $sp, 0x8 jr $ra nop -.end vec3f_rotate_py +endlabel vec3f_rotate_py /* Official Name: mathXZInTri */ -leaf tri2d_xz_contains_point +glabel tri2d_xz_contains_point lw $t6, 0x10($sp) lh $t0, 0x0($a2) lh $t1, 0x4($a2) @@ -1363,10 +1363,10 @@ ori $v0, $zero, 0x1 .L800705F0: jr $ra nop -.end tri2d_xz_contains_point +endlabel tri2d_xz_contains_point /* Official Name: mathTranslateMtx */ -leaf mtxf_from_translation +glabel mtxf_from_translation or $t0, $a0, $zero addiu $t1, $t0, 0x40 .L80070600: @@ -1384,10 +1384,10 @@ sw $a1, 0x30($a0) sw $a2, 0x34($a0) jr $ra sw $a3, 0x38($a0) -.end mtxf_from_translation +endlabel mtxf_from_translation /* Official Name: mathScaleMtx */ -leaf mtxf_from_scale +glabel mtxf_from_scale or $t0, $a0, $zero addiu $t1, $t0, 0x40 .L80070640: @@ -1402,9 +1402,9 @@ sw $a1, 0x0($a0) sw $a2, 0x14($a0) jr $ra sw $a3, 0x28($a0) -.end mtxf_from_scale +endlabel mtxf_from_scale -leaf atan2s +glabel atan2s or $t0, $a0, $a1 bne $zero, $t0, .L80070680 nop @@ -1471,9 +1471,9 @@ lh $t0, 0x0($t1) addu $v0, $v0, $t0 jr $ra andi $v0, $v0, 0xFFFF -.end atan2s +endlabel atan2s -leaf arctan2_f +glabel arctan2_f li.s $at, 255.0 mtc1 $at, $f0 nop @@ -1486,9 +1486,9 @@ mfc1 $a0, $f12 mfc1 $a1, $f14 j atan2s nop -.end arctan2_f +endlabel arctan2_f -leaf fix32_sqrt +glabel fix32_sqrt mtc1 $a0, $f0 li.s $at, 65536.0 mtc1 $at, $f2 @@ -1500,18 +1500,18 @@ cvt.w.s $f0, $f0 mfc1 $v0, $f0 jr $ra nop -.end fix32_sqrt +endlabel fix32_sqrt -leaf bad_int_sqrt +glabel bad_int_sqrt mtc1 $a0, $f0 nop sqrt.s $f0, $f0 mfc1 $v0, $f0 jr $ra nop -.end bad_int_sqrt +endlabel bad_int_sqrt -leaf sins_f +glabel sins_f addiu $sp, $sp, -0x8 sd $ra, 0x0($sp) jal sins_s16 @@ -1525,9 +1525,9 @@ addiu $sp, $sp, 0x8 mul.s $f0, $f0, $f2 jr $ra nop -.end sins_f +endlabel sins_f -leaf coss_f +glabel coss_f addiu $sp, $sp, -0x8 sd $ra, 0x0($sp) jal coss_s16 @@ -1541,15 +1541,15 @@ addiu $sp, $sp, 0x8 mul.s $f0, $f0, $f2 jr $ra nop -.end coss_f +endlabel coss_f /* Official Name: mathCosInterp */ -leaf coss_s16 +glabel coss_s16 addiu $a0, $a0, 0x4000 /* Fall through */ /* Official Name: mathSinInterp */ -altleaf sins_s16 +alabel sins_s16 sll $v0, $a0, 17 bgezl $v0, .L80070844 srl $t2, $a0, 3 @@ -1575,16 +1575,16 @@ negu $v0, $v0 .L80070884: jr $ra nop -.end coss_s16 +endlabel coss_s16 .size sins_s16, . - sins_s16 /* Official Name: mathCos */ -leaf coss_2 +glabel coss_2 addiu $a0, $a0, 0x4000 /* Fall through */ /* Official Name: mathSin */ -altleaf sins_2 +alabel sins_2 sll $v0, $a0, 17 bgezl $v0, .L800708A4 srl $t2, $a0, 3 @@ -1603,10 +1603,10 @@ negu $v0, $v0 .L800708C8: jr $ra nop -.end coss_2 +endlabel coss_2 .size sins_2, . - sins_2 -leaf calc_dyn_lighting_for_level_segment +glabel calc_dyn_lighting_for_level_segment lw $t1, 0x0($a1) lw $t2, 0x4($a1) lw $t3, 0x8($a1) @@ -1688,9 +1688,9 @@ bnel $t0, $zero, .L800708F0 nop jr $ra nop -.end calc_dyn_lighting_for_level_segment +endlabel calc_dyn_lighting_for_level_segment -leaf func_80070A04 +glabel func_80070A04 lhu $t4, 0x2($a2) .L80070A08: lhu $t5, 0xE($a2) @@ -1702,9 +1702,9 @@ bnel $t0, $zero, .L800708F0 nop jr $ra nop -.end func_80070A04 +endlabel func_80070A04 -leaf area_triangle_2d +glabel area_triangle_2d mtc1 $a2, $f4 mov.s $f0, $f12 mtc1 $a3, $f6 @@ -1749,9 +1749,9 @@ mov.s $f0, $f2 .L80070AD0: jr $ra sqrt.s $f0, $f0 -.end area_triangle_2d +endlabel area_triangle_2d -leaf set_breakpoint +glabel set_breakpoint ori $a0, $a0, 0x1 mtc0 $a0, $18 addiu $t0, $zero, 0xF @@ -1763,9 +1763,9 @@ nop nop jr $ra nop -.end set_breakpoint +endlabel set_breakpoint -leaf dmacopy_doubleword +glabel dmacopy_doubleword ld $t0, 0x0($a0) ld $t1, 0x8($a0) addi $a1, $a1, 0x10 @@ -1775,4 +1775,4 @@ bne $a1, $a2, dmacopy_doubleword sd $t1, -0x8($a1) jr $ra nop -.end dmacopy_doubleword +endlabel dmacopy_doubleword diff --git a/src/hasm/obj_animate.s b/src/hasm/obj_animate.s index 319021f3..98211de7 100644 --- a/src/hasm/obj_animate.s +++ b/src/hasm/obj_animate.s @@ -9,7 +9,7 @@ /* Generated by spimdisasm 1.30.0 */ -leaf obj_animate +glabel obj_animate /* 62930 80061D30 27BDFFF8 */ addiu $sp, $sp, -0x8 /* 62934 80061D34 AFB10004 */ sw $s1, 0x4($sp) /* 62938 80061D38 AFB00000 */ sw $s0, 0x0($sp) @@ -380,4 +380,4 @@ leaf obj_animate /* 62E80 80062280 8FB10004 */ lw $s1, 0x4($sp) /* 62E84 80062284 03E00008 */ jr $ra /* 62E88 80062288 27BD0008 */ addiu $sp, $sp, 0x8 -.end obj_animate +endlabel obj_animate diff --git a/src/hasm/obj_shade_fast.s b/src/hasm/obj_shade_fast.s index 7c4cda2c..000686ff 100644 --- a/src/hasm/obj_shade_fast.s +++ b/src/hasm/obj_shade_fast.s @@ -9,7 +9,7 @@ /* Generated by spimdisasm 1.30.0 */ -leaf obj_shade_fast +glabel obj_shade_fast /* 251F0 800245F0 8CA70054 */ lw $a3, 0x54($a1) /* 251F4 800245F4 10E00051 */ beqz $a3, .L8002473C /* 251F8 800245F8 00000000 */ nop @@ -102,9 +102,9 @@ leaf obj_shade_fast .L8002473C: /* 2533C 8002473C 03E00008 */ jr $ra /* 25340 80024740 00000000 */ nop -.end obj_shade_fast +endlabel obj_shade_fast -leaf calc_dynamic_lighting_for_object_2 +glabel calc_dynamic_lighting_for_object_2 /* 25344 80024744 27BDFF80 */ addiu $sp, $sp, -0x80 /* 25348 80024748 AFB00080 */ sw $s0, 0x80($sp) /* 2534C 8002474C AFBF0078 */ sw $ra, 0x78($sp) @@ -279,4 +279,4 @@ leaf calc_dynamic_lighting_for_object_2 /* 255D0 800249D0 03E00008 */ jr $ra /* 255D4 800249D4 27BD0080 */ addiu $sp, $sp, 0x80 /* 255D8 800249D8 00000000 */ nop -.end calc_dynamic_lighting_for_object_2 +endlabel calc_dynamic_lighting_for_object_2 diff --git a/tools/asm-processor b/tools/asm-processor index b296bcca..52d6454e 160000 --- a/tools/asm-processor +++ b/tools/asm-processor @@ -1 +1 @@ -Subproject commit b296bcca13495af9bbcab85282bbc00fa743526a +Subproject commit 52d6454e9d2ac8ed30fe523c0b58647d65d6199a diff --git a/tools/m2c b/tools/m2c index 6983af41..507659bc 160000 --- a/tools/m2c +++ b/tools/m2c @@ -1 +1 @@ -Subproject commit 6983af41fd78e3e025a07ab0c2bb069be57e6ccc +Subproject commit 507659bc6d4158df6920399848f650e17c78a1cd diff --git a/ver/splat/dkr.jpn.v79.yaml b/ver/splat/dkr.jpn.v79.yaml index ecbb34f3..5e244da3 100644 --- a/ver/splat/dkr.jpn.v79.yaml +++ b/ver/splat/dkr.jpn.v79.yaml @@ -20,7 +20,9 @@ options: asm_function_macro: glabel asm_jtbl_label_macro: jlabel asm_data_macro: dlabel - asm_emit_size_directive: True + asm_function_alt_macro: alabel + asm_end_label: endlabel + asm_emit_size_directive: False section_order: [".text", ".data", ".rodata", ".bss"] migrate_rodata_to_functions: True hasm_in_src_path: True diff --git a/ver/splat/dkr.pal.v77.yaml b/ver/splat/dkr.pal.v77.yaml index 0a2dfe81..d6e67913 100644 --- a/ver/splat/dkr.pal.v77.yaml +++ b/ver/splat/dkr.pal.v77.yaml @@ -20,7 +20,9 @@ options: asm_function_macro: glabel asm_jtbl_label_macro: jlabel asm_data_macro: dlabel - asm_emit_size_directive: True + asm_function_alt_macro: alabel + asm_end_label: endlabel + asm_emit_size_directive: False section_order: [".text", ".data", ".rodata", ".bss"] migrate_rodata_to_functions: True hasm_in_src_path: True diff --git a/ver/splat/dkr.pal.v80.yaml b/ver/splat/dkr.pal.v80.yaml index 9e5ec589..bbaf805f 100644 --- a/ver/splat/dkr.pal.v80.yaml +++ b/ver/splat/dkr.pal.v80.yaml @@ -20,7 +20,9 @@ options: asm_function_macro: glabel asm_jtbl_label_macro: jlabel asm_data_macro: dlabel - asm_emit_size_directive: True + asm_function_alt_macro: alabel + asm_end_label: endlabel + asm_emit_size_directive: False section_order: [".text", ".data", ".rodata", ".bss"] migrate_rodata_to_functions: True hasm_in_src_path: True diff --git a/ver/splat/dkr.us.v77.yaml b/ver/splat/dkr.us.v77.yaml index 92601a5a..161a5743 100644 --- a/ver/splat/dkr.us.v77.yaml +++ b/ver/splat/dkr.us.v77.yaml @@ -20,7 +20,9 @@ options: asm_function_macro: glabel asm_jtbl_label_macro: jlabel asm_data_macro: dlabel - asm_emit_size_directive: True + asm_function_alt_macro: alabel + asm_end_label: endlabel + asm_emit_size_directive: False section_order: [".text", ".data", ".rodata", ".bss"] migrate_rodata_to_functions: True hasm_in_src_path: True diff --git a/ver/splat/dkr.us.v80.yaml b/ver/splat/dkr.us.v80.yaml index bfa299fc..3e4e71d7 100644 --- a/ver/splat/dkr.us.v80.yaml +++ b/ver/splat/dkr.us.v80.yaml @@ -20,7 +20,9 @@ options: asm_function_macro: glabel asm_jtbl_label_macro: jlabel asm_data_macro: dlabel - asm_emit_size_directive: True + asm_function_alt_macro: alabel + asm_end_label: endlabel + asm_emit_size_directive: False section_order: [".text", ".data", ".rodata", ".bss"] migrate_rodata_to_functions: True hasm_in_src_path: True