Changed most numbers to hex in assembly.
This commit is contained in:
@@ -5,10 +5,10 @@
|
||||
.section "section_f0"
|
||||
.global f0
|
||||
f0:
|
||||
addiu $sp, -24
|
||||
sw $ra, 16($sp)
|
||||
addiu $sp, -0x18
|
||||
sw $ra, 0x10($sp)
|
||||
|
||||
# If the return from `idx = f1()` is negative, return 0
|
||||
# If the return from `idx = f1()` is negative, return 0x0
|
||||
jal f1
|
||||
nop
|
||||
move_ $v1, $v0
|
||||
@@ -25,7 +25,7 @@ f0:
|
||||
addu $v0, $v1
|
||||
|
||||
.Lexit:
|
||||
lw $ra, 16($sp)
|
||||
lw $ra, 0x10($sp)
|
||||
nop
|
||||
jr $ra
|
||||
addiu $sp, 24
|
||||
addiu $sp, 0x18
|
||||
|
||||
@@ -22,15 +22,15 @@ cur_ptr=$a1
|
||||
move_ $v0, cur_idx
|
||||
|
||||
# Else try the next one
|
||||
addiu cur_idx, 1
|
||||
slti $v0, cur_idx, 52
|
||||
addiu cur_idx, 0x1
|
||||
slti $v0, cur_idx, 0x34
|
||||
bnez $v0, .Lloop
|
||||
addiu cur_ptr, 88
|
||||
addiu cur_ptr, 0x58
|
||||
|
||||
# Return -1 if we didn't find it
|
||||
# Return -0x1 if we didn't find it
|
||||
.Lnot_found:
|
||||
jr $ra
|
||||
li $v0, -1
|
||||
li $v0, -0x1
|
||||
|
||||
.Lfound:
|
||||
jr $ra
|
||||
|
||||
@@ -7,8 +7,8 @@ f10:
|
||||
offset=$a0
|
||||
item_idx=$s1
|
||||
|
||||
addiu $sp, -32
|
||||
sw $s1, 20($sp)
|
||||
addiu $sp, -0x20
|
||||
sw $s1, 0x14($sp)
|
||||
move_ $s1, $a1
|
||||
|
||||
# `offset_bytes = offset * 0x3dc`
|
||||
@@ -22,21 +22,21 @@ offset_bytes=$v0
|
||||
# `stats = &DIGIMON_CUR_STATS[offset]`
|
||||
stats=$s0
|
||||
la_ $v1, DIGIMON_CUR_STATS
|
||||
sw $s0, 16($sp)
|
||||
sw $s0, 0x10($sp)
|
||||
addu stats, offset_bytes, $v1
|
||||
|
||||
# `f5_ret: *Unknown1 = f5(item_idx)`
|
||||
lui $v0, %hi(D0x80042b98)
|
||||
lw $v0, %lo(D0x80042b98)($v0)
|
||||
sw $ra, 24($sp)
|
||||
sw $ra, 0x18($sp)
|
||||
jalr $v0
|
||||
move_ $a0, item_idx
|
||||
|
||||
# `$v1 = &stats.items`
|
||||
cur_item=$v1
|
||||
move_ $a0, $zr
|
||||
li $a2, 7
|
||||
addiu cur_item, stats, 960
|
||||
li $a2, 0x7
|
||||
addiu cur_item, stats, 0x3c0
|
||||
|
||||
# `$a1: *const () = f5_ret.f0`
|
||||
lw $a1, ($v0)
|
||||
@@ -49,38 +49,38 @@ cur_item=$v1
|
||||
bne $v0, $s1, .Lcontinue
|
||||
nop
|
||||
|
||||
# `if $a1.f1 != 7 { *cur_item = 0; return 1; }`
|
||||
# `if $a1.f1 != 0x7 { *cur_item = 0x0; return 0x1; }`
|
||||
# TODO: If `f5_ret.f0` points to `D0x8005cb54`, this doesn't make as much sense, check why
|
||||
lbu $v0, 2($a1)
|
||||
lbu $v0, 0x2($a1)
|
||||
nop
|
||||
bne $v0, $a2, .Lunequip_cur_return_1
|
||||
nop
|
||||
|
||||
# Else unequip left and right items and return 1
|
||||
sh $zr, 964(stats) # `stats.items.right`
|
||||
# Else unequip left and right items and return 0x1
|
||||
sh $zr, 0x3c4(stats) # `stats.items.right`
|
||||
j .Lreturn_1
|
||||
sh $zr, 966(stats) # `stats.items.left`
|
||||
sh $zr, 0x3c6(stats) # `stats.items.left`
|
||||
|
||||
# Unequips the current items and exits
|
||||
.Lunequip_cur_return_1:
|
||||
sh $zr, (cur_item)
|
||||
|
||||
# Exits with 1
|
||||
# Exits with 0x1
|
||||
.Lreturn_1:
|
||||
j .Lexit
|
||||
li $v0, 1
|
||||
li $v0, 0x1
|
||||
|
||||
# Continues to the next loop, or exits with 0
|
||||
# Continues to the next loop, or exits with 0x0
|
||||
.Lcontinue:
|
||||
addiu $a0, 1
|
||||
slti $v0, $a0, 6
|
||||
addiu $a0, 0x1
|
||||
slti $v0, $a0, 0x6
|
||||
bnez $v0, .Lloop
|
||||
addiu cur_item, 2
|
||||
addiu cur_item, 0x2
|
||||
move_ $v0, $zr
|
||||
|
||||
.Lexit:
|
||||
lw $ra, 24($sp)
|
||||
lw $s1, 20($sp)
|
||||
lw $s0, 16($sp)
|
||||
lw $ra, 0x18($sp)
|
||||
lw $s1, 0x14($sp)
|
||||
lw $s0, 0x10($sp)
|
||||
jr $ra
|
||||
addiu $sp, 32
|
||||
addiu $sp, 0x20
|
||||
|
||||
@@ -22,10 +22,10 @@ stats=$v0
|
||||
addu stats, offset_bytes, $v1
|
||||
|
||||
cur_stat=$a0
|
||||
addiu cur_stat, stats, 28
|
||||
addiu cur_stat, stats, 0x1c
|
||||
|
||||
# `if stat_idx >= 19 { return; }`
|
||||
sltiu $v0, stat_idx, 19
|
||||
# `if stat_idx >= 0x13 { return; }`
|
||||
sltiu $v0, stat_idx, 0x13
|
||||
beqz $v0, .Lexit
|
||||
|
||||
# `cur_stat = &stats.stats[stat_idx]`
|
||||
@@ -34,7 +34,7 @@ cur_stat=$a0
|
||||
|
||||
# `*cur_stat = value;`
|
||||
# `value_i16 = value = 0xffff`
|
||||
# `if value_i16 < 0 { *cur_stat = 0; return; }`
|
||||
# `if value_i16 < 0x0 { *cur_stat = 0x0; return; }`
|
||||
sll $v0, value, 0x10
|
||||
sra $v1, $v0, 0x10
|
||||
value_i16=$v1
|
||||
@@ -45,32 +45,32 @@ value_i16=$v1
|
||||
sh $zr, (cur_stat)
|
||||
|
||||
|
||||
# `if stat_idx < 2 { if value >= 100 { *cur_stat = 99; } }`
|
||||
# `if stat_idx < 0x2 { if value >= 0x64 { *cur_stat = 0x63; } }`
|
||||
.Lcheck99:
|
||||
sltiu $v0, stat_idx, 2
|
||||
sltiu $v0, stat_idx, 0x2
|
||||
beqz $v0, .Lcheck9999
|
||||
slti $v0, value_i16, 100
|
||||
slti $v0, value_i16, 0x64
|
||||
bnez $v0, .Lexit
|
||||
li $v0, 99
|
||||
li $v0, 0x63
|
||||
jr $ra
|
||||
sh $v0, (cur_stat)
|
||||
|
||||
# `else if stat_idx - 2 < 4 { if value >= 10000 { *cur_stat = 9999; } }`
|
||||
# `else if stat_idx - 0x2 < 0x4 { if value >= 0x2710 { *cur_stat = 0x270f; } }`
|
||||
.Lcheck9999:
|
||||
addiu $v0, stat_idx, -2
|
||||
sltiu $v0, 4
|
||||
addiu $v0, stat_idx, -0x2
|
||||
sltiu $v0, 0x4
|
||||
beqz $v0, .Lcheck999
|
||||
slti $v0, value_i16, 10000
|
||||
slti $v0, value_i16, 0x2710
|
||||
bnez $v0, .Lexit
|
||||
li $v0, 9999
|
||||
li $v0, 0x270f
|
||||
jr $ra
|
||||
sh $v0, (cur_stat)
|
||||
|
||||
# `else { if value >= 1000 { *cur_stat = 999; } }`
|
||||
# `else { if value >= 0x3e8 { *cur_stat = 0x3e7; } }`
|
||||
.Lcheck999:
|
||||
slti $v0, value_i16, 1000
|
||||
slti $v0, value_i16, 0x3e8
|
||||
bnez $v0, .Lexit
|
||||
li $v0, 999
|
||||
li $v0, 0x3e7
|
||||
sh $v0, (cur_stat)
|
||||
|
||||
.Lexit:
|
||||
|
||||
@@ -6,26 +6,26 @@ f2:
|
||||
var_a=$s0
|
||||
var_b=$s1
|
||||
|
||||
addiu $sp, -32
|
||||
sw $s0, 16($sp)
|
||||
addiu $sp, -0x20
|
||||
sw $s0, 0x10($sp)
|
||||
move_ $s0, $a0
|
||||
sw $s1, 20($sp)
|
||||
sw $s1, 0x14($sp)
|
||||
move_ $s1, $a1
|
||||
|
||||
# `F0x80014504(&F0x8001270c, 160, 172)`
|
||||
# `F0x80014504(&F0x8001270c, 0xa0, 0xac)`
|
||||
la_ $a0, F0x8001270c
|
||||
li $a1, 160
|
||||
sw $ra, 24($sp)
|
||||
li $a1, 0xa0
|
||||
sw $ra, 0x18($sp)
|
||||
jal F0x80014504
|
||||
li $a2, 172
|
||||
li $a2, 0xac
|
||||
|
||||
li $v1, 1
|
||||
sw var_a, 80($v0)
|
||||
sw $v1, 84($v0)
|
||||
sw var_b, 88($v0)
|
||||
li $v1, 0x1
|
||||
sw var_a, 0x50($v0)
|
||||
sw $v1, 0x54($v0)
|
||||
sw var_b, 0x58($v0)
|
||||
|
||||
lw $ra, 24($sp)
|
||||
lw $s1, 20($sp)
|
||||
lw $s0, 16($sp)
|
||||
lw $ra, 0x18($sp)
|
||||
lw $s1, 0x14($sp)
|
||||
lw $s0, 0x10($sp)
|
||||
jr $ra
|
||||
addiu $sp, 32
|
||||
addiu $sp, 0x20
|
||||
|
||||
@@ -7,14 +7,14 @@ f3:
|
||||
dst=$a1 # *mut i16
|
||||
idx_is_neg=$t0 # bool
|
||||
|
||||
# Return `0` if `(idx = 0x7fff_ffff) >= 5`
|
||||
# Note: This means `idx` must be within `0..5` (or `i32::MIN..i32::MIN+5`, for some reason)
|
||||
# Return `0x0` if `(idx = 0x7fff_ffff) >= 0x5`
|
||||
# Note: This means `idx` must be within `0x0..0x5` (or `i32::MIN..i32::MIN+0x5`, for some reason)
|
||||
lui $v0, 0x7fff
|
||||
ori $v0, 0xffff
|
||||
and $v1, $a0, $v0
|
||||
slti $v0, $v1, 5
|
||||
slti $v0, $v1, 0x5
|
||||
bnez $v0, .Lidx_valid
|
||||
slti idx_is_neg, $a0, 0
|
||||
slti idx_is_neg, $a0, 0x0
|
||||
jr $ra
|
||||
move_ $v0, $zr
|
||||
|
||||
@@ -23,14 +23,14 @@ cur_ptr=$v1 # *const i16
|
||||
cur_idx=$a3 # u32
|
||||
ptr2=$t1 # *mut i8
|
||||
|
||||
# `cur_ptr = &D0x80042bc8[idx][0]`
|
||||
# `cur_ptr = &D0x80042bc8[idx][0x0]`
|
||||
la_ $v0, D0x80042bc8
|
||||
sll $v1, 0x2
|
||||
addu $v1, $v0
|
||||
lw cur_ptr, ($v1)
|
||||
nop
|
||||
|
||||
# Return `0` if `*cur_ptr == 0`
|
||||
# Return `0x0` if `*cur_ptr == 0x0`
|
||||
lhu $v0, ($v1)
|
||||
nop
|
||||
beqz $v0, .Lexit
|
||||
@@ -43,7 +43,7 @@ ptr2=$t1 # *mut i8
|
||||
.Lloop:
|
||||
cur_value=$a2 # i16
|
||||
|
||||
# Write the output if `ptr2[0x7c + cur_value] != 0`
|
||||
# Write the output if `ptr2[0x7c + cur_value] != 0x0`
|
||||
lhu cur_value, (cur_ptr)
|
||||
nop
|
||||
addu $a0, cur_value, ptr2
|
||||
@@ -52,7 +52,7 @@ cur_value=$a2 # i16
|
||||
bnez $v0, .Lwrite_output
|
||||
nop
|
||||
|
||||
# Else, write the output if `ptr2[0x20f + cur_value] != 0`
|
||||
# Else, write the output if `ptr2[0x20f + cur_value] != 0x0`
|
||||
beqz idx_is_neg, .Lloop_cond
|
||||
nop
|
||||
lb $v0, 0x20f($a0)
|
||||
@@ -62,13 +62,13 @@ cur_value=$a2 # i16
|
||||
|
||||
.Lwrite_output:
|
||||
sh cur_value, (dst) # cur_value = *dst
|
||||
addiu dst, 2 # dst += 1
|
||||
addiu cur_idx, 1 # cur_idx += 1
|
||||
addiu dst, 0x2 # dst += 0x1
|
||||
addiu cur_idx, 0x1 # cur_idx += 0x1
|
||||
|
||||
.Lloop_cond:
|
||||
addiu cur_ptr, 2 # cur_ptr += 1
|
||||
addiu cur_ptr, 0x2 # cur_ptr += 0x1
|
||||
|
||||
# Continue while `*cur_ptr != 0`
|
||||
# Continue while `*cur_ptr != 0x0`
|
||||
lhu $v0, (cur_ptr)
|
||||
nop
|
||||
bnez $v0, .Lloop
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
.section section_f4
|
||||
.global f4
|
||||
f4:
|
||||
arr_len=8
|
||||
li $v1, arr_len-1
|
||||
arr_len=0x8
|
||||
li $v1, arr_len-0x1
|
||||
la_ $v0, D0x80042b1c
|
||||
addiu $v0, (arr_len-1)*2 # D0x80042b2a
|
||||
addiu $v0, (arr_len-0x1)*0x2 # D0x80042b2a
|
||||
|
||||
.Lloop:
|
||||
sh $zr, 0x58($v0)
|
||||
addiu $v1, -1
|
||||
addiu $v1, -0x1
|
||||
bgez $v1, .Lloop
|
||||
addiu $v0, -2
|
||||
addiu $v0, -0x2
|
||||
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.include "macros.s"
|
||||
|
||||
# Returns `&D0x80041844[idx + 1]`
|
||||
# Returns `&D0x80041844[idx + 0x1]`
|
||||
# `fn f5(idx: i32) -> *Unknown1`
|
||||
.section section_f5
|
||||
.global f5
|
||||
f5:
|
||||
idx=$a0
|
||||
# If `idx <= 0`, return NULL
|
||||
# If `idx <= 0x0`, return NULL
|
||||
blez idx, .Lexit_0
|
||||
|
||||
# Else calculate `offset = idx * 0xc`
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
.include "macros.s"
|
||||
|
||||
# Returns `D0x80042ba8[D0x80041844[idx + 1].f4]`
|
||||
# Returns `D0x80042ba8[D0x80041844[idx + 0x1].f4]`
|
||||
# `fn f6(idx: i32) -> u8`
|
||||
.section section_f6
|
||||
.global f6
|
||||
f6:
|
||||
addiu $sp, -24
|
||||
sw $s0, 16($sp)
|
||||
addiu $sp, -0x18
|
||||
sw $s0, 0x10($sp)
|
||||
lui $s0, %hi(D0x80042ba8)
|
||||
sw $ra, 20($sp)
|
||||
sw $ra, 0x14($sp)
|
||||
|
||||
# Returns `addr = &D0x80041844[idx + 1]`
|
||||
# Returns `addr = &D0x80041844[idx + 0x1]`
|
||||
jal f5
|
||||
addiu $s0, %lo(D0x80042ba8)
|
||||
lbu $v0, 9($v0) # `offset = *(addr + offsettof(Unknown1.f4))`
|
||||
lbu $v0, 0x9($v0) # `offset = *(addr + offsettof(Unknown1.f4))`
|
||||
|
||||
lw $ra, 20($sp)
|
||||
lw $ra, 0x14($sp)
|
||||
addu $v0, $s0 # `final_addr = D0x80042ba8 + offset`
|
||||
lbu $v0, 0($v0) # `return *final_addr`
|
||||
lw $s0, 16($sp)
|
||||
lbu $v0, ($v0) # `return *final_addr`
|
||||
lw $s0, 0x10($sp)
|
||||
jr $ra
|
||||
addiu $sp, 24
|
||||
addiu $sp, 0x18
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
.include "macros.s"
|
||||
|
||||
# Returns `D0x80041844[idx + 1].f3 ^ mask < 1`
|
||||
# Returns `D0x80041844[idx + 0x1].f3 ^ mask < 0x1`
|
||||
# `fn f7(idx: i32, mask: i32) -> bool`
|
||||
.section section_f7
|
||||
.global f7
|
||||
f7:
|
||||
addiu $sp, -24
|
||||
sw $s0, 16($sp)
|
||||
sw $ra, 20($sp)
|
||||
addiu $sp, -0x18
|
||||
sw $s0, 0x10($sp)
|
||||
sw $ra, 0x14($sp)
|
||||
|
||||
# Returns `addr = &D0x80041844[idx + 1]`
|
||||
# Returns `addr = &D0x80041844[idx + 0x1]`
|
||||
jal f5
|
||||
move_ $s0, $a1
|
||||
lbu $v0, 8($v0) # `offset = *(addr + offsettof(Unknown1.f3))`
|
||||
lbu $v0, 0x8($v0) # `offset = *(addr + offsettof(Unknown1.f3))`
|
||||
|
||||
lw $ra, 20($sp)
|
||||
lw $ra, 0x14($sp)
|
||||
xor $v0, $s0 # `offset ^= mask`
|
||||
lw $s0, 16($sp)
|
||||
sltiu $v0, 1 # `return offset < 1`
|
||||
lw $s0, 0x10($sp)
|
||||
sltiu $v0, 0x1 # `return offset < 0x1`
|
||||
jr $ra
|
||||
addiu $sp, 24
|
||||
addiu $sp, 0x18
|
||||
|
||||
@@ -4,16 +4,16 @@
|
||||
.section section_f8
|
||||
.global f8
|
||||
f8:
|
||||
addiu $sp, -24
|
||||
sw $s0, 16($sp)
|
||||
addiu $sp, -0x18
|
||||
sw $s0, 0x10($sp)
|
||||
|
||||
la_ $s0, D0x8005cd28
|
||||
move_ $a0, $s0
|
||||
sw $ra, 20($sp)
|
||||
sw $ra, 0x14($sp)
|
||||
|
||||
# F0x8002e65c(&D0x8005cd28, 3)
|
||||
# F0x8002e65c(&D0x8005cd28, 0x3)
|
||||
jal F0x8002e65c
|
||||
li $a1, 3
|
||||
li $a1, 0x3
|
||||
|
||||
# `value = F0x8002badc(&D0x8005cd28)`
|
||||
jal F0x8002badc
|
||||
@@ -22,24 +22,24 @@ f8:
|
||||
# Load `D0x80044b2c`
|
||||
lui $v1, %hi(D0x80044b04)
|
||||
addiu $a0, $v1, %lo(D0x80044b04)
|
||||
lw $v1, 40($a0)
|
||||
lw $v1, 0x28($a0)
|
||||
nop
|
||||
|
||||
# If `D0x80044b2c == value`, write back `value + 1`
|
||||
# If `D0x80044b2c == value`, write back `value + 0x1`
|
||||
beq $v0, $v1, .Lwrite_D0x80044b2c
|
||||
addiu $v0, 1
|
||||
addiu $v0, 0x1
|
||||
|
||||
# Else return `-1`
|
||||
# Else return `-0x1`
|
||||
j .Lexit
|
||||
li $v0, -1
|
||||
li $v0, -0x1
|
||||
|
||||
# Store the value back and return 0
|
||||
# Store the value back and return 0x0
|
||||
.Lwrite_D0x80044b2c:
|
||||
sw $v0, 40($a0)
|
||||
sw $v0, 0x28($a0)
|
||||
move_ $v0, $zr
|
||||
|
||||
.Lexit:
|
||||
lw $ra, 20($sp)
|
||||
lw $s0, 16($sp)
|
||||
lw $ra, 0x14($sp)
|
||||
lw $s0, 0x10($sp)
|
||||
jr $ra
|
||||
addiu $sp, 24
|
||||
addiu $sp, 0x18
|
||||
|
||||
@@ -4,57 +4,57 @@
|
||||
.section section_f9
|
||||
.global f9
|
||||
f9:
|
||||
addiu $sp, -24
|
||||
li $v0, 1
|
||||
sw $ra, 20($sp)
|
||||
addiu $sp, -0x18
|
||||
li $v0, 0x1
|
||||
sw $ra, 0x14($sp)
|
||||
|
||||
# If `arg0 != 1`, `D0x80044b24 = -1`
|
||||
# If `arg0 != 0x1`, `D0x80044b24 = -0x1`
|
||||
bne $a0, $v0, .L0
|
||||
sw $s0, 16($sp)
|
||||
sw $s0, 0x10($sp)
|
||||
|
||||
# If `f8() != 0`, `D0x80044b24 = -1`
|
||||
# If `f8() != 0x0`, `D0x80044b24 = -0x1`
|
||||
jal f8
|
||||
nop
|
||||
bnez $v0, .L1
|
||||
lui $v1, %hi(D0x80044b24)
|
||||
|
||||
# `F0x8002e65c(D0x80044b28, 512)`
|
||||
# `F0x8002e65c(D0x80044b28, 0x200)`
|
||||
la_ $s0, D0x80044b04
|
||||
lw $a0, 36($s0)
|
||||
lw $a0, 0x24($s0)
|
||||
jal F0x8002e65c
|
||||
li $a1, 512
|
||||
li $a1, 0x200
|
||||
|
||||
lw $v0, 36($s0)
|
||||
lw $v1, 32($s0)
|
||||
lw $v0, 0x24($s0)
|
||||
lw $v1, 0x20($s0)
|
||||
|
||||
addiu $v0, 2048
|
||||
addiu $v1, -1
|
||||
sw $v0, 36($s0) # `D0x80044b28 = 2048`
|
||||
addiu $v0, 0x800
|
||||
addiu $v1, -0x1
|
||||
sw $v0, 0x24($s0) # `D0x80044b28 = 0x800`
|
||||
bnez $v1, .Lexit
|
||||
sw $v1, 32($s0) # `D0x80044b24 == -1`
|
||||
sw $v1, 0x20($s0) # `D0x80044b24 == -0x1`
|
||||
|
||||
j .L2
|
||||
nop
|
||||
|
||||
# `D0x80044b24 = -1`
|
||||
# `D0x80044b24 = -0x1`
|
||||
.L0:
|
||||
lui $v1, %hi(D0x80044b24)
|
||||
.L1:
|
||||
li $v0, -1
|
||||
li $v0, -0x1
|
||||
sw $v0, %lo(D0x80044b24)($v1)
|
||||
|
||||
.L2:
|
||||
# `F0x8002e27c(0)`
|
||||
# `F0x8002e27c(0x0)`
|
||||
jal F0x8002e27c
|
||||
move_ $a0, $zr
|
||||
|
||||
# `F0x8002e3d8(9, 0)`
|
||||
li $a0, 9
|
||||
# `F0x8002e3d8(0x9, 0x0)`
|
||||
li $a0, 0x9
|
||||
jal F0x8002e3d8
|
||||
move_ $a1, $zr
|
||||
|
||||
.Lexit:
|
||||
lw $ra, 20($sp)
|
||||
lw $s0, 16($sp)
|
||||
lw $ra, 0x14($sp)
|
||||
lw $s0, 0x10($sp)
|
||||
jr $ra
|
||||
addiu $sp, 24
|
||||
addiu $sp, 0x18
|
||||
|
||||
38264
asm/dw2003/exe/fns.s
38264
asm/dw2003/exe/fns.s
File diff suppressed because it is too large
Load Diff
@@ -12,12 +12,12 @@ end_ptr=$v1
|
||||
la_ end_ptr, D0x80082cb0
|
||||
.Lzero_loop:
|
||||
sw $zr, (cur_ptr)
|
||||
addiu cur_ptr, 4
|
||||
addiu cur_ptr, 0x4
|
||||
bltu cur_ptr, end_ptr, .Lzero_loop
|
||||
nop
|
||||
|
||||
# Setup the stack pointer from `data[1]` adjusted to `KSEG0`
|
||||
li $v0, 4
|
||||
# Setup the stack pointer from `data[0x1]` adjusted to `KSEG0`
|
||||
li $v0, 0x4
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
@@ -29,7 +29,7 @@ stack_ptr_kuseg=$v0
|
||||
lui $t0, 0x8000
|
||||
or $sp, stack_ptr_kuseg, $t0
|
||||
|
||||
# Initialize the heap at `D0x80082cb0 + 4` until `$sp - HEAP_END_RESERVED`
|
||||
# Initialize the heap at `D0x80082cb0 + 0x4` until `$sp - HEAP_END_RESERVED`
|
||||
# 0x80082cb4..(0x80200004 - 0x8000) (size 0x175350)
|
||||
la_ $a0, D0x80082cb0
|
||||
sll $a0, 0x3
|
||||
@@ -43,7 +43,7 @@ stack_ptr_kuseg=$v0
|
||||
la_ $gp, D0x8005cb50
|
||||
move_ $s8, $sp
|
||||
jal InitHeap
|
||||
addi $a0, 4
|
||||
addi $a0, 0x4
|
||||
lw $ra, 0x8005cce8
|
||||
nop
|
||||
|
||||
@@ -54,7 +54,7 @@ stack_ptr_kuseg=$v0
|
||||
# Then break if we get back from it
|
||||
break 0x0, 0x1
|
||||
|
||||
# [u32; 4]
|
||||
# [u32; 0x4]
|
||||
.Ldata:
|
||||
.word 0x200000
|
||||
.word 0x200000 # Stack pointer (in KUSEG)
|
||||
|
||||
@@ -11,16 +11,16 @@ STFGTREP_f0:
|
||||
sw $s2, 0x20($sp)
|
||||
sw $s0, 0x18($sp)
|
||||
|
||||
lw $v0, 0xc($s1) # $v0 = src[3]
|
||||
lw $v0, 0xc($s1) # $v0 = src[0x3]
|
||||
nop
|
||||
|
||||
beqz $v0, .L0 # $v0 == 0
|
||||
beqz $v0, .L0 # $v0 == 0x0
|
||||
move_ $s2, $a1 # $s2 = dst
|
||||
|
||||
bltz $v0, .L0 # $v0 < 0
|
||||
bltz $v0, .L0 # $v0 < 0x0
|
||||
slti $v0, 0x4
|
||||
|
||||
bnez $v0, .Lexit # $v0 != 0
|
||||
bnez $v0, .Lexit # $v0 != 0x0
|
||||
nop
|
||||
|
||||
.L0:
|
||||
@@ -49,7 +49,7 @@ STFGTREP_f0:
|
||||
jalr $v0
|
||||
move_ $a3, $a2
|
||||
|
||||
# args: (&sp[0x10], 0x3, 0x1000, 0, 0, 0x140, 0xf0)
|
||||
# args: (&sp[0x10], 0x3, 0x1000, 0x0, 0x0, 0x140, 0xf0)
|
||||
addiu $a0, $sp, 0x10
|
||||
li $a1, 0x3
|
||||
li $a2, 0x1000
|
||||
@@ -62,7 +62,7 @@ STFGTREP_f0:
|
||||
jalr $v0
|
||||
sh $v1, 0x16($sp)
|
||||
|
||||
# args: (prev_fn_ret, 0, 0, 0)
|
||||
# args: (prev_fn_ret, 0x0, 0x0, 0x0)
|
||||
move_ $a0, $v0
|
||||
move_ $a1, $zr
|
||||
move_ $a2, $a1
|
||||
|
||||
Reference in New Issue
Block a user