diff --git a/asm/dw2003/pro/STGTRAIN.s b/asm/dw2003/pro/STGTRAIN.s index 7a9c05c55..c64fe34d2 100644 --- a/asm/dw2003/pro/STGTRAIN.s +++ b/asm/dw2003/pro/STGTRAIN.s @@ -1,8 +1,8 @@ .include "macros.s" -.section "section_STGTRAIN" -.global STGTRAIN -STGTRAIN: +.section "section_STGTRAIN_0" +.global STGTRAIN_0 +STGTRAIN_0: .L0x00000000: .word 0x800851d0 # lb $t0, 0x51d0($zr) .L0x00000004: .word 0x80085208 # lb $t0, 0x5208($zr) .L0x00000008: .word 0x800852a8 # lb $t0, 0x52a8($zr) @@ -238,14 +238,10 @@ STGTRAIN: .L0x000003a0: .word 0x8008b704 # lb $t0, -0x48fc($zr) .L0x000003a4: .word 0x8008b710 # lb $t0, -0x48f0($zr) # Start of code -.L0x000003a8: sw $a1, 0x80($a0) # .word 0xac850080 -.L0x000003ac: sw $a2, 0x88($a0) # .word 0xac860088 -.L0x000003b0: lhu $v0, 0x2($a1) # .word 0x94a20002 -.L0x000003b4: nop # .word 0x00000000 -.L0x000003b8: sh $v0, 0x84($a0) # .word 0xa4820084 -.L0x000003bc: lhu $v0, 0x4($a1) # .word 0x94a20004 -.L0x000003c0: jr $ra # .word 0x03e00008 -.L0x000003c4: sh $v0, 0x86($a0) # .word 0xa4820086 + +.section "section_STGTRAIN_1" +.global STGTRAIN_1 +STGTRAIN_1: .L0x000003c8: beqz $a1, .L0x000003e8 # .word 0x10a00007 .L0x000003cc: nop # .word 0x00000000 .L0x000003d0: sw $a1, 0x8c($a0) # .word 0xac85008c diff --git a/asm/dw2003/pro/STGTRAIN/f0.s b/asm/dw2003/pro/STGTRAIN/f0.s new file mode 100644 index 000000000..462596ae6 --- /dev/null +++ b/asm/dw2003/pro/STGTRAIN/f0.s @@ -0,0 +1,24 @@ +.include "macros.s" + +# struct Arg0 { +# _: [u8; 0x80], // 0x0 +# a0: *u16, // 0x80 +# a1: u16, // 0x84 +# a2: u16, // 0x86 +# a3: u32, // 0x88 +# } + +# `fn f0(arg0: *Arg0, arg1: *u16, arg2: u32) -> u16` +.section "section_STGTRAIN_f0" +.global STGTRAIN_f0 +STGTRAIN_f0: + sw $a1, 0x80($a0) # arg0.a0 = arg1 + sw $a2, 0x88($a0) # arg0.a3 = arg2 + + lhu $v0, 0x2($a1) + nop + sh $v0, 0x84($a0) # arg0.a1 = arg1[0x1] + + lhu $v0, 0x4($a1) + jr $ra # return arg1[0x2] + sh $v0, 0x86($a0) # arg0.a2 = arg1[0x2] diff --git a/elf/dw2003/pro/STGTRAIN.yaml b/elf/dw2003/pro/STGTRAIN.yaml index da6b405eb..5d38659ff 100644 --- a/elf/dw2003/pro/STGTRAIN.yaml +++ b/elf/dw2003/pro/STGTRAIN.yaml @@ -2,5 +2,8 @@ start_addr: 0x0 objs: - /build/asm/dw2003/pro/STGTRAIN.o + - /build/asm/dw2003/pro/STGTRAIN/f0.o sections: - - section_STGTRAIN + - section_STGTRAIN_0 + - section_STGTRAIN_f0 + - section_STGTRAIN_1