Changed most numbers to hex in assembly.

This commit is contained in:
2023-02-12 02:34:50 +00:00
parent 327774e674
commit f60680f696
15 changed files with 19283 additions and 19283 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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`

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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)

View File

@@ -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