Some more SI funcs

This commit is contained in:
Ethan Roseman 2020-09-17 21:28:34 -04:00
parent 0a46a30571
commit 7f6b34c29b
12 changed files with 264 additions and 262 deletions

View File

@ -1,60 +1,7 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel get_npc_pos
/* 039210 8005DE10 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 039214 8005DE14 AFB00010 */ sw $s0, 0x10($sp)
/* 039218 8005DE18 00A0802D */ daddu $s0, $a1, $zero
/* 03921C 8005DE1C AFB10014 */ sw $s1, 0x14($sp)
/* 039220 8005DE20 00C0882D */ daddu $s1, $a2, $zero
/* 039224 8005DE24 AFB20018 */ sw $s2, 0x18($sp)
/* 039228 8005DE28 00E0902D */ daddu $s2, $a3, $zero
/* 03922C 8005DE2C 3C038011 */ lui $v1, 0x8011
/* 039230 8005DE30 2463EFC8 */ addiu $v1, $v1, -0x1038
/* 039234 8005DE34 AFB3001C */ sw $s3, 0x1c($sp)
/* 039238 8005DE38 8FB30038 */ lw $s3, 0x38($sp)
/* 03923C 8005DE3C 2402FFFF */ addiu $v0, $zero, -1
/* 039240 8005DE40 AFBF0020 */ sw $ra, 0x20($sp)
/* 039244 8005DE44 AE000000 */ sw $zero, ($s0)
/* 039248 8005DE48 AE200000 */ sw $zero, ($s1)
/* 03924C 8005DE4C AE400000 */ sw $zero, ($s2)
/* 039250 8005DE50 1482000A */ bne $a0, $v0, .L8005DE7C
/* 039254 8005DE54 AE600000 */ sw $zero, ($s3)
/* 039258 8005DE58 C4600028 */ lwc1 $f0, 0x28($v1)
/* 03925C 8005DE5C E6000000 */ swc1 $f0, ($s0)
/* 039260 8005DE60 C460002C */ lwc1 $f0, 0x2c($v1)
/* 039264 8005DE64 E6200000 */ swc1 $f0, ($s1)
/* 039268 8005DE68 C4600030 */ lwc1 $f0, 0x30($v1)
/* 03926C 8005DE6C E6400000 */ swc1 $f0, ($s2)
/* 039270 8005DE70 8C620000 */ lw $v0, ($v1)
/* 039274 8005DE74 080177A9 */ j .L8005DEA4
/* 039278 8005DE78 30420006 */ andi $v0, $v0, 6
.L8005DE7C:
/* 03927C 8005DE7C 0C00EABB */ jal get_npc_unsafe
/* 039280 8005DE80 00000000 */ nop
/* 039284 8005DE84 C4400038 */ lwc1 $f0, 0x38($v0)
/* 039288 8005DE88 E6000000 */ swc1 $f0, ($s0)
/* 03928C 8005DE8C C440003C */ lwc1 $f0, 0x3c($v0)
/* 039290 8005DE90 E6200000 */ swc1 $f0, ($s1)
/* 039294 8005DE94 C4400040 */ lwc1 $f0, 0x40($v0)
/* 039298 8005DE98 E6400000 */ swc1 $f0, ($s2)
/* 03929C 8005DE9C 8C420000 */ lw $v0, ($v0)
/* 0392A0 8005DEA0 30420800 */ andi $v0, $v0, 0x800
.L8005DEA4:
/* 0392A4 8005DEA4 10400002 */ beqz $v0, .L8005DEB0
/* 0392A8 8005DEA8 24020001 */ addiu $v0, $zero, 1
/* 0392AC 8005DEAC AE620000 */ sw $v0, ($s3)
.L8005DEB0:
/* 0392B0 8005DEB0 8FBF0020 */ lw $ra, 0x20($sp)
/* 0392B4 8005DEB4 8FB3001C */ lw $s3, 0x1c($sp)
/* 0392B8 8005DEB8 8FB20018 */ lw $s2, 0x18($sp)
/* 0392BC 8005DEBC 8FB10014 */ lw $s1, 0x14($sp)
/* 0392C0 8005DEC0 8FB00010 */ lw $s0, 0x10($sp)
/* 0392C4 8005DEC4 03E00008 */ jr $ra
/* 0392C8 8005DEC8 27BD0028 */ addiu $sp, $sp, 0x28
glabel func_8005DECC
/* 0392CC 8005DECC 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0392D0 8005DED0 AFB10014 */ sw $s1, 0x14($sp)
/* 0392D4 8005DED4 0080882D */ daddu $s1, $a0, $zero
@ -741,5 +688,3 @@ glabel get_npc_pos
/* 039CA8 8005E8A8 00000000 */ nop
/* 039CAC 8005E8AC 00000000 */ nop

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel SetRenderMode
/* 0EEEA4 802CA4F4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0EEEA8 802CA4F8 AFB10014 */ sw $s1, 0x14($sp)
/* 0EEEAC 802CA4FC 0080882D */ daddu $s1, $a0, $zero
/* 0EEEB0 802CA500 AFBF0018 */ sw $ra, 0x18($sp)
/* 0EEEB4 802CA504 AFB00010 */ sw $s0, 0x10($sp)
/* 0EEEB8 802CA508 8E30000C */ lw $s0, 0xc($s1)
/* 0EEEBC 802CA50C 8E050000 */ lw $a1, ($s0)
/* 0EEEC0 802CA510 0C0B1EAF */ jal get_variable
/* 0EEEC4 802CA514 26100004 */ addiu $s0, $s0, 4
/* 0EEEC8 802CA518 0220202D */ daddu $a0, $s1, $zero
/* 0EEECC 802CA51C 8E050000 */ lw $a1, ($s0)
/* 0EEED0 802CA520 0C0B1EAF */ jal get_variable
/* 0EEED4 802CA524 0040802D */ daddu $s0, $v0, $zero
/* 0EEED8 802CA528 0200202D */ daddu $a0, $s0, $zero
/* 0EEEDC 802CA52C 0C046C04 */ jal get_model_list_index_from_tree_index
/* 0EEEE0 802CA530 0040802D */ daddu $s0, $v0, $zero
/* 0EEEE4 802CA534 0C046B4C */ jal get_model_from_list_index
/* 0EEEE8 802CA538 0040202D */ daddu $a0, $v0, $zero
/* 0EEEEC 802CA53C A05000A6 */ sb $s0, 0xa6($v0)
/* 0EEEF0 802CA540 8FBF0018 */ lw $ra, 0x18($sp)
/* 0EEEF4 802CA544 8FB10014 */ lw $s1, 0x14($sp)
/* 0EEEF8 802CA548 8FB00010 */ lw $s0, 0x10($sp)
/* 0EEEFC 802CA54C 24020002 */ addiu $v0, $zero, 2
/* 0EEF00 802CA550 03E00008 */ jr $ra
/* 0EEF04 802CA554 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -32,475 +32,506 @@ glabel si_execute_next_command
/* 0EBE18 802C7468 00041080 */ sll $v0, $a0, 2
/* 0EBE1C 802C746C 00621821 */ addu $v1, $v1, $v0
/* 0EBE20 802C7470 A2040001 */ sb $a0, 1($s0)
/* 0EBE24 802C7474 080B1E95 */ j si_handle_end
/* 0EBE24 802C7474 080B1E95 */ j .L802C7A54
/* 0EBE28 802C7478 AE030008 */ sw $v1, 8($s0)
/* 0EBE2C 802C747C 0C0B1266 */ jal si_handle_return
/* 0EBE30 802C7480 0200202D */ daddu $a0, $s0, $zero
/* 0EBE34 802C7484 080B1E95 */ j si_handle_end
/* 0EBE34 802C7484 080B1E95 */ j .L802C7A54
/* 0EBE38 802C7488 0040282D */ daddu $a1, $v0, $zero
/* 0EBE3C 802C748C 0C0B126E */ jal si_handle_label
/* 0EBE40 802C7490 0200202D */ daddu $a0, $s0, $zero
/* 0EBE44 802C7494 080B1E95 */ j si_handle_end
/* 0EBE44 802C7494 080B1E95 */ j .L802C7A54
/* 0EBE48 802C7498 0040282D */ daddu $a1, $v0, $zero
/* 0EBE4C 802C749C 0C0B1270 */ jal si_handle_goto
/* 0EBE50 802C74A0 0200202D */ daddu $a0, $s0, $zero
/* 0EBE54 802C74A4 080B1E95 */ j si_handle_end
/* 0EBE54 802C74A4 080B1E95 */ j .L802C7A54
/* 0EBE58 802C74A8 0040282D */ daddu $a1, $v0, $zero
/* 0EBE5C 802C74AC 0C0B1280 */ jal si_handle_Loop
/* 0EBE60 802C74B0 0200202D */ daddu $a0, $s0, $zero
/* 0EBE64 802C74B4 080B1E95 */ j si_handle_end
/* 0EBE64 802C74B4 080B1E95 */ j .L802C7A54
/* 0EBE68 802C74B8 0040282D */ daddu $a1, $v0, $zero
/* 0EBE6C 802C74BC 0C0B1292 */ jal si_handle_end_loop
/* 0EBE70 802C74C0 0200202D */ daddu $a0, $s0, $zero
/* 0EBE74 802C74C4 080B1E95 */ j si_handle_end
/* 0EBE74 802C74C4 080B1E95 */ j .L802C7A54
/* 0EBE78 802C74C8 0040282D */ daddu $a1, $v0, $zero
/* 0EBE7C 802C74CC 0C0B12C3 */ jal si_handle_break_loop
/* 0EBE80 802C74D0 0200202D */ daddu $a0, $s0, $zero
/* 0EBE84 802C74D4 080B1E95 */ j si_handle_end
/* 0EBE84 802C74D4 080B1E95 */ j .L802C7A54
/* 0EBE88 802C74D8 0040282D */ daddu $a1, $v0, $zero
/* 0EBE8C 802C74DC 0C0B12D7 */ jal si_handle_wait
/* 0EBE90 802C74E0 0200202D */ daddu $a0, $s0, $zero
/* 0EBE94 802C74E4 080B1E95 */ j si_handle_end
/* 0EBE94 802C74E4 080B1E95 */ j .L802C7A54
/* 0EBE98 802C74E8 0040282D */ daddu $a1, $v0, $zero
/* 0EBE9C 802C74EC 0C0B12EE */ jal si_handle_wait_seconds
/* 0EBEA0 802C74F0 0200202D */ daddu $a0, $s0, $zero
/* 0EBEA4 802C74F4 080B1E95 */ j si_handle_end
/* 0EBEA4 802C74F4 080B1E95 */ j .L802C7A54
/* 0EBEA8 802C74F8 0040282D */ daddu $a1, $v0, $zero
/* 0EBEAC 802C74FC 0C0B1310 */ jal si_handle_if_equal
/* 0EBEB0 802C7500 0200202D */ daddu $a0, $s0, $zero
/* 0EBEB4 802C7504 080B1E95 */ j si_handle_end
/* 0EBEB4 802C7504 080B1E95 */ j .L802C7A54
/* 0EBEB8 802C7508 0040282D */ daddu $a1, $v0, $zero
/* 0EBEBC 802C750C 0C0B1328 */ jal si_handle_if_not_equal
/* 0EBEC0 802C7510 0200202D */ daddu $a0, $s0, $zero
/* 0EBEC4 802C7514 080B1E95 */ j si_handle_end
/* 0EBEC4 802C7514 080B1E95 */ j .L802C7A54
/* 0EBEC8 802C7518 0040282D */ daddu $a1, $v0, $zero
/* 0EBECC 802C751C 0C0B1340 */ jal si_handle_if_less
/* 0EBED0 802C7520 0200202D */ daddu $a0, $s0, $zero
/* 0EBED4 802C7524 080B1E95 */ j si_handle_end
/* 0EBED4 802C7524 080B1E95 */ j .L802C7A54
/* 0EBED8 802C7528 0040282D */ daddu $a1, $v0, $zero
/* 0EBEDC 802C752C 0C0B1359 */ jal si_handle_if_greater
/* 0EBEE0 802C7530 0200202D */ daddu $a0, $s0, $zero
/* 0EBEE4 802C7534 080B1E95 */ j si_handle_end
/* 0EBEE4 802C7534 080B1E95 */ j .L802C7A54
/* 0EBEE8 802C7538 0040282D */ daddu $a1, $v0, $zero
/* 0EBEEC 802C753C 0C0B1372 */ jal si_handle_if_less_equal
/* 0EBEF0 802C7540 0200202D */ daddu $a0, $s0, $zero
/* 0EBEF4 802C7544 080B1E95 */ j si_handle_end
/* 0EBEF4 802C7544 080B1E95 */ j .L802C7A54
/* 0EBEF8 802C7548 0040282D */ daddu $a1, $v0, $zero
/* 0EBEFC 802C754C 0C0B138B */ jal si_handle_if_greater_equal
/* 0EBF00 802C7550 0200202D */ daddu $a0, $s0, $zero
/* 0EBF04 802C7554 080B1E95 */ j si_handle_end
/* 0EBF04 802C7554 080B1E95 */ j .L802C7A54
/* 0EBF08 802C7558 0040282D */ daddu $a1, $v0, $zero
/* 0EBF0C 802C755C 0C0B13A4 */ jal si_handle_if_AND
/* 0EBF10 802C7560 0200202D */ daddu $a0, $s0, $zero
/* 0EBF14 802C7564 080B1E95 */ j si_handle_end
/* 0EBF14 802C7564 080B1E95 */ j .L802C7A54
/* 0EBF18 802C7568 0040282D */ daddu $a1, $v0, $zero
/* 0EBF1C 802C756C 0C0B13BA */ jal si_handle_if_not_AND
/* 0EBF20 802C7570 0200202D */ daddu $a0, $s0, $zero
/* 0EBF24 802C7574 080B1E95 */ j si_handle_end
/* 0EBF24 802C7574 080B1E95 */ j .L802C7A54
/* 0EBF28 802C7578 0040282D */ daddu $a1, $v0, $zero
/* 0EBF2C 802C757C 0C0B13D0 */ jal si_handle_else
/* 0EBF30 802C7580 0200202D */ daddu $a0, $s0, $zero
/* 0EBF34 802C7584 080B1E95 */ j si_handle_end
/* 0EBF34 802C7584 080B1E95 */ j .L802C7A54
/* 0EBF38 802C7588 0040282D */ daddu $a1, $v0, $zero
/* 0EBF3C 802C758C 0C0B13DB */ jal si_handle_end_if
/* 0EBF40 802C7590 0200202D */ daddu $a0, $s0, $zero
/* 0EBF44 802C7594 080B1E95 */ j si_handle_end
/* 0EBF44 802C7594 080B1E95 */ j .L802C7A54
/* 0EBF48 802C7598 0040282D */ daddu $a1, $v0, $zero
/* 0EBF4C 802C759C 0C0B13DD */ jal si_handle_switch
/* 0EBF50 802C75A0 0200202D */ daddu $a0, $s0, $zero
/* 0EBF54 802C75A4 080B1E95 */ j si_handle_end
/* 0EBF54 802C75A4 080B1E95 */ j .L802C7A54
/* 0EBF58 802C75A8 0040282D */ daddu $a1, $v0, $zero
/* 0EBF5C 802C75AC 0C0B13F9 */ jal si_handle_switch_const
/* 0EBF60 802C75B0 0200202D */ daddu $a0, $s0, $zero
/* 0EBF64 802C75B4 080B1E95 */ j si_handle_end
/* 0EBF64 802C75B4 080B1E95 */ j .L802C7A54
/* 0EBF68 802C75B8 0040282D */ daddu $a1, $v0, $zero
/* 0EBF6C 802C75BC 0C0B140C */ jal si_handle_case_equal
/* 0EBF70 802C75C0 0200202D */ daddu $a0, $s0, $zero
/* 0EBF74 802C75C4 080B1E95 */ j si_handle_end
/* 0EBF74 802C75C4 080B1E95 */ j .L802C7A54
/* 0EBF78 802C75C8 0040282D */ daddu $a1, $v0, $zero
/* 0EBF7C 802C75CC 0C0B142F */ jal si_handle_case_not_equal
/* 0EBF80 802C75D0 0200202D */ daddu $a0, $s0, $zero
/* 0EBF84 802C75D4 080B1E95 */ j si_handle_end
/* 0EBF84 802C75D4 080B1E95 */ j .L802C7A54
/* 0EBF88 802C75D8 0040282D */ daddu $a1, $v0, $zero
/* 0EBF8C 802C75DC 0C0B1452 */ jal si_handle_case_less
/* 0EBF90 802C75E0 0200202D */ daddu $a0, $s0, $zero
/* 0EBF94 802C75E4 080B1E95 */ j si_handle_end
/* 0EBF94 802C75E4 080B1E95 */ j .L802C7A54
/* 0EBF98 802C75E8 0040282D */ daddu $a1, $v0, $zero
/* 0EBF9C 802C75EC 0C0B1476 */ jal si_handle_case_less_equal
/* 0EBFA0 802C75F0 0200202D */ daddu $a0, $s0, $zero
/* 0EBFA4 802C75F4 080B1E95 */ j si_handle_end
/* 0EBFA4 802C75F4 080B1E95 */ j .L802C7A54
/* 0EBFA8 802C75F8 0040282D */ daddu $a1, $v0, $zero
/* 0EBFAC 802C75FC 0C0B149A */ jal si_handle_case_greater
/* 0EBFB0 802C7600 0200202D */ daddu $a0, $s0, $zero
/* 0EBFB4 802C7604 080B1E95 */ j si_handle_end
/* 0EBFB4 802C7604 080B1E95 */ j .L802C7A54
/* 0EBFB8 802C7608 0040282D */ daddu $a1, $v0, $zero
/* 0EBFBC 802C760C 0C0B14BE */ jal si_handle_case_greater_equal
/* 0EBFC0 802C7610 0200202D */ daddu $a0, $s0, $zero
/* 0EBFC4 802C7614 080B1E95 */ j si_handle_end
/* 0EBFC4 802C7614 080B1E95 */ j .L802C7A54
/* 0EBFC8 802C7618 0040282D */ daddu $a1, $v0, $zero
/* 0EBFCC 802C761C 0C0B1511 */ jal si_handle_case_default
/* 0EBFD0 802C7620 0200202D */ daddu $a0, $s0, $zero
/* 0EBFD4 802C7624 080B1E95 */ j si_handle_end
/* 0EBFD4 802C7624 080B1E95 */ j .L802C7A54
/* 0EBFD8 802C7628 0040282D */ daddu $a1, $v0, $zero
/* 0EBFDC 802C762C 0C0B15B5 */ jal si_handle_break_case
/* 0EBFE0 802C7630 0200202D */ daddu $a0, $s0, $zero
/* 0EBFE4 802C7634 080B1E95 */ j si_handle_end
/* 0EBFE4 802C7634 080B1E95 */ j .L802C7A54
/* 0EBFE8 802C7638 0040282D */ daddu $a1, $v0, $zero
/* 0EBFEC 802C763C 0C0B1546 */ jal si_handle_case_equal_OR
/* 0EBFF0 802C7640 0200202D */ daddu $a0, $s0, $zero
/* 0EBFF4 802C7644 080B1E95 */ j si_handle_end
/* 0EBFF4 802C7644 080B1E95 */ j .L802C7A54
/* 0EBFF8 802C7648 0040282D */ daddu $a1, $v0, $zero
/* 0EBFFC 802C764C 0C0B1597 */ jal si_handle_end_case_group
/* 0EC000 802C7650 0200202D */ daddu $a0, $s0, $zero
/* 0EC004 802C7654 080B1E95 */ j si_handle_end
/* 0EC004 802C7654 080B1E95 */ j .L802C7A54
/* 0EC008 802C7658 0040282D */ daddu $a1, $v0, $zero
/* 0EC00C 802C765C 0C0B156E */ jal si_handle_case_equal_AND
/* 0EC010 802C7660 0200202D */ daddu $a0, $s0, $zero
/* 0EC014 802C7664 080B1E95 */ j si_handle_end
/* 0EC014 802C7664 080B1E95 */ j .L802C7A54
/* 0EC018 802C7668 0040282D */ daddu $a1, $v0, $zero
/* 0EC01C 802C766C 0C0B1527 */ jal si_handle_case_AND
/* 0EC020 802C7670 0200202D */ daddu $a0, $s0, $zero
/* 0EC024 802C7674 080B1E95 */ j si_handle_end
/* 0EC024 802C7674 080B1E95 */ j .L802C7A54
/* 0EC028 802C7678 0040282D */ daddu $a1, $v0, $zero
/* 0EC02C 802C767C 0C0B14E2 */ jal si_handle_case_range
/* 0EC030 802C7680 0200202D */ daddu $a0, $s0, $zero
/* 0EC034 802C7684 080B1E95 */ j si_handle_end
/* 0EC034 802C7684 080B1E95 */ j .L802C7A54
/* 0EC038 802C7688 0040282D */ daddu $a1, $v0, $zero
/* 0EC03C 802C768C 0C0B15C6 */ jal si_handle_end_switch
/* 0EC040 802C7690 0200202D */ daddu $a0, $s0, $zero
/* 0EC044 802C7694 080B1E95 */ j si_handle_end
/* 0EC044 802C7694 080B1E95 */ j .L802C7A54
/* 0EC048 802C7698 0040282D */ daddu $a1, $v0, $zero
/* 0EC04C 802C769C 0C0B15D1 */ jal si_handle_set_var
/* 0EC050 802C76A0 0200202D */ daddu $a0, $s0, $zero
/* 0EC054 802C76A4 080B1E95 */ j si_handle_end
/* 0EC054 802C76A4 080B1E95 */ j .L802C7A54
/* 0EC058 802C76A8 0040282D */ daddu $a1, $v0, $zero
/* 0EC05C 802C76AC 0C0B15E4 */ jal si_handle_set_const
/* 0EC060 802C76B0 0200202D */ daddu $a0, $s0, $zero
/* 0EC064 802C76B4 080B1E95 */ j si_handle_end
/* 0EC064 802C76B4 080B1E95 */ j .L802C7A54
/* 0EC068 802C76B8 0040282D */ daddu $a1, $v0, $zero
/* 0EC06C 802C76BC 0C0B15EE */ jal si_handle_set_float
/* 0EC070 802C76C0 0200202D */ daddu $a0, $s0, $zero
/* 0EC074 802C76C4 080B1E95 */ j si_handle_end
/* 0EC074 802C76C4 080B1E95 */ j .L802C7A54
/* 0EC078 802C76C8 0040282D */ daddu $a1, $v0, $zero
/* 0EC07C 802C76CC 0C0B1601 */ jal si_handle_add
/* 0EC080 802C76D0 0200202D */ daddu $a0, $s0, $zero
/* 0EC084 802C76D4 080B1E95 */ j si_handle_end
/* 0EC084 802C76D4 080B1E95 */ j .L802C7A54
/* 0EC088 802C76D8 0040282D */ daddu $a1, $v0, $zero
/* 0EC08C 802C76DC 0C0B161A */ jal si_handle_subtract
/* 0EC090 802C76E0 0200202D */ daddu $a0, $s0, $zero
/* 0EC094 802C76E4 080B1E95 */ j si_handle_end
/* 0EC094 802C76E4 080B1E95 */ j .L802C7A54
/* 0EC098 802C76E8 0040282D */ daddu $a1, $v0, $zero
/* 0EC09C 802C76EC 0C0B1633 */ jal si_handle_multiply
/* 0EC0A0 802C76F0 0200202D */ daddu $a0, $s0, $zero
/* 0EC0A4 802C76F4 080B1E95 */ j si_handle_end
/* 0EC0A4 802C76F4 080B1E95 */ j .L802C7A54
/* 0EC0A8 802C76F8 0040282D */ daddu $a1, $v0, $zero
/* 0EC0AC 802C76FC 0C0B164D */ jal si_handle_divide
/* 0EC0B0 802C7700 0200202D */ daddu $a0, $s0, $zero
/* 0EC0B4 802C7704 080B1E95 */ j si_handle_end
/* 0EC0B4 802C7704 080B1E95 */ j .L802C7A54
/* 0EC0B8 802C7708 0040282D */ daddu $a1, $v0, $zero
/* 0EC0BC 802C770C 0C0B166F */ jal si_handle_mod
/* 0EC0C0 802C7710 0200202D */ daddu $a0, $s0, $zero
/* 0EC0C4 802C7714 080B1E95 */ j si_handle_end
/* 0EC0C4 802C7714 080B1E95 */ j .L802C7A54
/* 0EC0C8 802C7718 0040282D */ daddu $a1, $v0, $zero
/* 0EC0CC 802C771C 0C0B16A1 */ jal si_handle_addF
/* 0EC0D0 802C7720 0200202D */ daddu $a0, $s0, $zero
/* 0EC0D4 802C7724 080B1E95 */ j si_handle_end
/* 0EC0D4 802C7724 080B1E95 */ j .L802C7A54
/* 0EC0D8 802C7728 0040282D */ daddu $a1, $v0, $zero
/* 0EC0DC 802C772C 0C0B16BB */ jal si_handle_subtractF
/* 0EC0E0 802C7730 0200202D */ daddu $a0, $s0, $zero
/* 0EC0E4 802C7734 080B1E95 */ j si_handle_end
/* 0EC0E4 802C7734 080B1E95 */ j .L802C7A54
/* 0EC0E8 802C7738 0040282D */ daddu $a1, $v0, $zero
/* 0EC0EC 802C773C 0C0B16D5 */ jal si_handle_multiplyF
/* 0EC0F0 802C7740 0200202D */ daddu $a0, $s0, $zero
/* 0EC0F4 802C7744 080B1E95 */ j si_handle_end
/* 0EC0F4 802C7744 080B1E95 */ j .L802C7A54
/* 0EC0F8 802C7748 0040282D */ daddu $a1, $v0, $zero
/* 0EC0FC 802C774C 0C0B16F0 */ jal si_handle_divideF
/* 0EC100 802C7750 0200202D */ daddu $a0, $s0, $zero
/* 0EC104 802C7754 080B1E95 */ j si_handle_end
/* 0EC104 802C7754 080B1E95 */ j .L802C7A54
/* 0EC108 802C7758 0040282D */ daddu $a1, $v0, $zero
/* 0EC10C 802C775C 0C0B170A */ jal si_handle_set_int_buffer_ptr
/* 0EC110 802C7760 0200202D */ daddu $a0, $s0, $zero
/* 0EC114 802C7764 080B1E95 */ j si_handle_end
/* 0EC114 802C7764 080B1E95 */ j .L802C7A54
/* 0EC118 802C7768 0040282D */ daddu $a1, $v0, $zero
/* 0EC11C 802C776C 0C0B1724 */ jal si_handle_get_1_word
/* 0EC120 802C7770 0200202D */ daddu $a0, $s0, $zero
/* 0EC124 802C7774 080B1E95 */ j si_handle_end
/* 0EC124 802C7774 080B1E95 */ j .L802C7A54
/* 0EC128 802C7778 0040282D */ daddu $a1, $v0, $zero
/* 0EC12C 802C777C 0C0B1731 */ jal si_handle_get_2_word
/* 0EC130 802C7780 0200202D */ daddu $a0, $s0, $zero
/* 0EC134 802C7784 080B1E95 */ j si_handle_end
/* 0EC134 802C7784 080B1E95 */ j .L802C7A54
/* 0EC138 802C7788 0040282D */ daddu $a1, $v0, $zero
/* 0EC13C 802C778C 0C0B174B */ jal si_handle_get_3_word
/* 0EC140 802C7790 0200202D */ daddu $a0, $s0, $zero
/* 0EC144 802C7794 080B1E95 */ j si_handle_end
/* 0EC144 802C7794 080B1E95 */ j .L802C7A54
/* 0EC148 802C7798 0040282D */ daddu $a1, $v0, $zero
/* 0EC14C 802C779C 0C0B176D */ jal si_handle_get_4_word
/* 0EC150 802C77A0 0200202D */ daddu $a0, $s0, $zero
/* 0EC154 802C77A4 080B1E95 */ j si_handle_end
/* 0EC154 802C77A4 080B1E95 */ j .L802C7A54
/* 0EC158 802C77A8 0040282D */ daddu $a1, $v0, $zero
/* 0EC15C 802C77AC 0C0B1797 */ jal si_handle_get_Nth_word
/* 0EC160 802C77B0 0200202D */ daddu $a0, $s0, $zero
/* 0EC164 802C77B4 080B1E95 */ j si_handle_end
/* 0EC164 802C77B4 080B1E95 */ j .L802C7A54
/* 0EC168 802C77B8 0040282D */ daddu $a1, $v0, $zero
/* 0EC16C 802C77BC 0C0B1717 */ jal si_handle_set_float_buffer_ptr
/* 0EC170 802C77C0 0200202D */ daddu $a0, $s0, $zero
/* 0EC174 802C77C4 080B1E95 */ j si_handle_end
/* 0EC174 802C77C4 080B1E95 */ j .L802C7A54
/* 0EC178 802C77C8 0040282D */ daddu $a1, $v0, $zero
/* 0EC17C 802C77CC 0C0B17AD */ jal si_handle_get_1_float
/* 0EC180 802C77D0 0200202D */ daddu $a0, $s0, $zero
/* 0EC184 802C77D4 080B1E95 */ j si_handle_end
/* 0EC184 802C77D4 080B1E95 */ j .L802C7A54
/* 0EC188 802C77D8 0040282D */ daddu $a1, $v0, $zero
/* 0EC18C 802C77DC 0C0B17C3 */ jal si_handle_get_2_float
/* 0EC190 802C77E0 0200202D */ daddu $a0, $s0, $zero
/* 0EC194 802C77E4 080B1E95 */ j si_handle_end
/* 0EC194 802C77E4 080B1E95 */ j .L802C7A54
/* 0EC198 802C77E8 0040282D */ daddu $a1, $v0, $zero
/* 0EC19C 802C77EC 0C0B17E7 */ jal si_handle_get_3_float
/* 0EC1A0 802C77F0 0200202D */ daddu $a0, $s0, $zero
/* 0EC1A4 802C77F4 080B1E95 */ j si_handle_end
/* 0EC1A4 802C77F4 080B1E95 */ j .L802C7A54
/* 0EC1A8 802C77F8 0040282D */ daddu $a1, $v0, $zero
/* 0EC1AC 802C77FC 0C0B1817 */ jal si_handle_get_4_float
/* 0EC1B0 802C7800 0200202D */ daddu $a0, $s0, $zero
/* 0EC1B4 802C7804 080B1E95 */ j si_handle_end
/* 0EC1B4 802C7804 080B1E95 */ j .L802C7A54
/* 0EC1B8 802C7808 0040282D */ daddu $a1, $v0, $zero
/* 0EC1BC 802C780C 0C0B1853 */ jal si_handle_get_Nth_float
/* 0EC1C0 802C7810 0200202D */ daddu $a0, $s0, $zero
/* 0EC1C4 802C7814 080B1E95 */ j si_handle_end
/* 0EC1C4 802C7814 080B1E95 */ j .L802C7A54
/* 0EC1C8 802C7818 0040282D */ daddu $a1, $v0, $zero
/* 0EC1CC 802C781C 0C0B186B */ jal si_handle_set_array
/* 0EC1D0 802C7820 0200202D */ daddu $a0, $s0, $zero
/* 0EC1D4 802C7824 080B1E95 */ j si_handle_end
/* 0EC1D4 802C7824 080B1E95 */ j .L802C7A54
/* 0EC1D8 802C7828 0040282D */ daddu $a1, $v0, $zero
/* 0EC1DC 802C782C 0C0B1878 */ jal si_handle_set_flag_array
/* 0EC1E0 802C7830 0200202D */ daddu $a0, $s0, $zero
/* 0EC1E4 802C7834 080B1E95 */ j si_handle_end
/* 0EC1E4 802C7834 080B1E95 */ j .L802C7A54
/* 0EC1E8 802C7838 0040282D */ daddu $a1, $v0, $zero
/* 0EC1EC 802C783C 0C0B1885 */ jal si_handle_allocate_array
/* 0EC1F0 802C7840 0200202D */ daddu $a0, $s0, $zero
/* 0EC1F4 802C7844 080B1E95 */ j si_handle_end
/* 0EC1F4 802C7844 080B1E95 */ j .L802C7A54
/* 0EC1F8 802C7848 0040282D */ daddu $a1, $v0, $zero
/* 0EC1FC 802C784C 0C0B1A1C */ jal si_handle_kill
/* 0EC200 802C7850 0200202D */ daddu $a0, $s0, $zero
/* 0EC204 802C7854 080B1E95 */ j si_handle_end
/* 0EC204 802C7854 080B1E95 */ j .L802C7A54
/* 0EC208 802C7858 0040282D */ daddu $a1, $v0, $zero
/* 0EC20C 802C785C 0C0B189C */ jal si_handle_AND
/* 0EC210 802C7860 0200202D */ daddu $a0, $s0, $zero
/* 0EC214 802C7864 080B1E95 */ j si_handle_end
/* 0EC214 802C7864 080B1E95 */ j .L802C7A54
/* 0EC218 802C7868 0040282D */ daddu $a1, $v0, $zero
/* 0EC21C 802C786C 0C0B18B5 */ jal si_handle_AND_const
/* 0EC220 802C7870 0200202D */ daddu $a0, $s0, $zero
/* 0EC224 802C7874 080B1E95 */ j si_handle_end
/* 0EC224 802C7874 080B1E95 */ j .L802C7A54
/* 0EC228 802C7878 0040282D */ daddu $a1, $v0, $zero
/* 0EC22C 802C787C 0C0B18CB */ jal si_handle_OR
/* 0EC230 802C7880 0200202D */ daddu $a0, $s0, $zero
/* 0EC234 802C7884 080B1E95 */ j si_handle_end
/* 0EC234 802C7884 080B1E95 */ j .L802C7A54
/* 0EC238 802C7888 0040282D */ daddu $a1, $v0, $zero
/* 0EC23C 802C788C 0C0B18E4 */ jal si_handle_OR_const
/* 0EC240 802C7890 0200202D */ daddu $a0, $s0, $zero
/* 0EC244 802C7894 080B1E95 */ j si_handle_end
/* 0EC244 802C7894 080B1E95 */ j .L802C7A54
/* 0EC248 802C7898 0040282D */ daddu $a1, $v0, $zero
/* 0EC24C 802C789C 0C0B18FA */ jal si_handle_call
/* 0EC250 802C78A0 0200202D */ daddu $a0, $s0, $zero
/* 0EC254 802C78A4 080B1E95 */ j si_handle_end
/* 0EC254 802C78A4 080B1E95 */ j .L802C7A54
/* 0EC258 802C78A8 0040282D */ daddu $a1, $v0, $zero
/* 0EC25C 802C78AC 0C0B191B */ jal si_handle_exec1
/* 0EC260 802C78B0 0200202D */ daddu $a0, $s0, $zero
/* 0EC264 802C78B4 080B1E95 */ j si_handle_end
/* 0EC264 802C78B4 080B1E95 */ j .L802C7A54
/* 0EC268 802C78B8 0040282D */ daddu $a1, $v0, $zero
/* 0EC26C 802C78BC 0C0B1949 */ jal si_handle_exec2
/* 0EC270 802C78C0 0200202D */ daddu $a0, $s0, $zero
/* 0EC274 802C78C4 080B1E95 */ j si_handle_end
/* 0EC274 802C78C4 080B1E95 */ j .L802C7A54
/* 0EC278 802C78C8 0040282D */ daddu $a1, $v0, $zero
/* 0EC27C 802C78CC 0C0B197F */ jal si_handle_exec_wait
/* 0EC280 802C78D0 0200202D */ daddu $a0, $s0, $zero
/* 0EC284 802C78D4 080B1E95 */ j si_handle_end
/* 0EC284 802C78D4 080B1E95 */ j .L802C7A54
/* 0EC288 802C78D8 0040282D */ daddu $a1, $v0, $zero
/* 0EC28C 802C78DC 0C0B19C5 */ jal si_handle_bind
/* 0EC290 802C78E0 0200202D */ daddu $a0, $s0, $zero
/* 0EC294 802C78E4 080B1E95 */ j si_handle_end
/* 0EC294 802C78E4 080B1E95 */ j .L802C7A54
/* 0EC298 802C78E8 0040282D */ daddu $a1, $v0, $zero
/* 0EC29C 802C78EC 0C0B1A14 */ jal si_handle_unbind
/* 0EC2A0 802C78F0 0200202D */ daddu $a0, $s0, $zero
/* 0EC2A4 802C78F4 080B1E95 */ j si_handle_end
/* 0EC2A4 802C78F4 080B1E95 */ j .L802C7A54
/* 0EC2A8 802C78F8 0040282D */ daddu $a1, $v0, $zero
/* 0EC2AC 802C78FC 0C0B1A27 */ jal si_handle_set_priority
/* 0EC2B0 802C7900 0200202D */ daddu $a0, $s0, $zero
/* 0EC2B4 802C7904 080B1E95 */ j si_handle_end
/* 0EC2B4 802C7904 080B1E95 */ j .L802C7A54
/* 0EC2B8 802C7908 0040282D */ daddu $a1, $v0, $zero
/* 0EC2BC 802C790C 0C0B1A36 */ jal si_handle_set_timescale
/* 0EC2C0 802C7910 0200202D */ daddu $a0, $s0, $zero
/* 0EC2C4 802C7914 080B1E95 */ j si_handle_end
/* 0EC2C4 802C7914 080B1E95 */ j .L802C7A54
/* 0EC2C8 802C7918 0040282D */ daddu $a1, $v0, $zero
/* 0EC2CC 802C791C 0C0B1A45 */ jal si_handle_set_group
/* 0EC2D0 802C7920 0200202D */ daddu $a0, $s0, $zero
/* 0EC2D4 802C7924 080B1E95 */ j si_handle_end
/* 0EC2D4 802C7924 080B1E95 */ j .L802C7A54
/* 0EC2D8 802C7928 0040282D */ daddu $a1, $v0, $zero
/* 0EC2DC 802C792C 0C0B1990 */ jal si_handle_jump
/* 0EC2E0 802C7930 0200202D */ daddu $a0, $s0, $zero
/* 0EC2E4 802C7934 080B1E95 */ j si_handle_end
/* 0EC2E4 802C7934 080B1E95 */ j .L802C7A54
/* 0EC2E8 802C7938 0040282D */ daddu $a1, $v0, $zero
/* 0EC2EC 802C793C 0C0B1AD5 */ jal si_handle_bind_lock
/* 0EC2F0 802C7940 0200202D */ daddu $a0, $s0, $zero
/* 0EC2F4 802C7944 080B1E95 */ j si_handle_end
/* 0EC2F4 802C7944 080B1E95 */ j .L802C7A54
/* 0EC2F8 802C7948 0040282D */ daddu $a1, $v0, $zero
/* 0EC2FC 802C794C 0C0B1A54 */ jal si_handle_suspend_all
/* 0EC300 802C7950 0200202D */ daddu $a0, $s0, $zero
/* 0EC304 802C7954 080B1E95 */ j si_handle_end
/* 0EC304 802C7954 080B1E95 */ j .L802C7A54
/* 0EC308 802C7958 0040282D */ daddu $a1, $v0, $zero
/* 0EC30C 802C795C 0C0B1A5F */ jal si_handle_resume_all
/* 0EC310 802C7960 0200202D */ daddu $a0, $s0, $zero
/* 0EC314 802C7964 080B1E95 */ j si_handle_end
/* 0EC314 802C7964 080B1E95 */ j .L802C7A54
/* 0EC318 802C7968 0040282D */ daddu $a1, $v0, $zero
/* 0EC31C 802C796C 0C0B1A6A */ jal si_handle_suspend_others
/* 0EC320 802C7970 0200202D */ daddu $a0, $s0, $zero
/* 0EC324 802C7974 080B1E95 */ j si_handle_end
/* 0EC324 802C7974 080B1E95 */ j .L802C7A54
/* 0EC328 802C7978 0040282D */ daddu $a1, $v0, $zero
/* 0EC32C 802C797C 0C0B1A79 */ jal si_handle_resume_others
/* 0EC330 802C7980 0200202D */ daddu $a0, $s0, $zero
/* 0EC334 802C7984 080B1E95 */ j si_handle_end
/* 0EC334 802C7984 080B1E95 */ j .L802C7A54
/* 0EC338 802C7988 0040282D */ daddu $a1, $v0, $zero
/* 0EC33C 802C798C 0C0B1A88 */ jal si_handle_suspend
/* 0EC340 802C7990 0200202D */ daddu $a0, $s0, $zero
/* 0EC344 802C7994 080B1E95 */ j si_handle_end
/* 0EC344 802C7994 080B1E95 */ j .L802C7A54
/* 0EC348 802C7998 0040282D */ daddu $a1, $v0, $zero
/* 0EC34C 802C799C 0C0B1A93 */ jal si_handle_resume
/* 0EC350 802C79A0 0200202D */ daddu $a0, $s0, $zero
/* 0EC354 802C79A4 080B1E95 */ j si_handle_end
/* 0EC354 802C79A4 080B1E95 */ j .L802C7A54
/* 0EC358 802C79A8 0040282D */ daddu $a1, $v0, $zero
/* 0EC35C 802C79AC 0C0B1A9E */ jal si_handle_does_script_exist
/* 0EC360 802C79B0 0200202D */ daddu $a0, $s0, $zero
/* 0EC364 802C79B4 080B1E95 */ j si_handle_end
/* 0EC364 802C79B4 080B1E95 */ j .L802C7A54
/* 0EC368 802C79B8 0040282D */ daddu $a1, $v0, $zero
/* 0EC36C 802C79BC 0C0B1B1E */ jal si_handle_thread
/* 0EC370 802C79C0 0200202D */ daddu $a0, $s0, $zero
/* 0EC374 802C79C4 080B1E95 */ j si_handle_end
/* 0EC374 802C79C4 080B1E95 */ j .L802C7A54
/* 0EC378 802C79C8 0040282D */ daddu $a1, $v0, $zero
/* 0EC37C 802C79CC 0C0B1B53 */ jal si_handle_end_thread
/* 0EC380 802C79D0 0200202D */ daddu $a0, $s0, $zero
/* 0EC384 802C79D4 080B1E95 */ j si_handle_end
/* 0EC384 802C79D4 080B1E95 */ j .L802C7A54
/* 0EC388 802C79D8 0040282D */ daddu $a1, $v0, $zero
/* 0EC38C 802C79DC 0C0B1B5B */ jal si_handle_child_thread
/* 0EC390 802C79E0 0200202D */ daddu $a0, $s0, $zero
/* 0EC394 802C79E4 080B1E95 */ j si_handle_end
/* 0EC394 802C79E4 080B1E95 */ j .L802C7A54
/* 0EC398 802C79E8 0040282D */ daddu $a1, $v0, $zero
/* 0EC39C 802C79EC 0C0B1B7D */ jal si_handle_end_child_thread
/* 0EC3A0 802C79F0 0200202D */ daddu $a0, $s0, $zero
/* 0EC3A4 802C79F4 080B1E95 */ j si_handle_end
/* 0EC3A4 802C79F4 080B1E95 */ j .L802C7A54
/* 0EC3A8 802C79F8 0040282D */ daddu $a1, $v0, $zero
/* 0EC3AC 802C79FC 0C0B1B85 */ jal func_802C6E14
/* 0EC3B0 802C7A00 0200202D */ daddu $a0, $s0, $zero
/* 0EC3B4 802C7A04 080B1E95 */ j si_handle_end
/* 0EC3B4 802C7A04 080B1E95 */ j .L802C7A54
/* 0EC3B8 802C7A08 0040282D */ daddu $a1, $v0, $zero
/* 0EC3BC 802C7A0C 0C0B1B87 */ jal si_handle_print_debug_var
/* 0EC3C0 802C7A10 0200202D */ daddu $a0, $s0, $zero
/* 0EC3C4 802C7A14 080B1E95 */ j si_handle_end
/* 0EC3C4 802C7A14 080B1E95 */ j .L802C7A54
/* 0EC3C8 802C7A18 0040282D */ daddu $a1, $v0, $zero
/* 0EC3CC 802C7A1C 0C0B1CE7 */ jal func_802C739C
/* 0EC3D0 802C7A20 0200202D */ daddu $a0, $s0, $zero
/* 0EC3D4 802C7A24 080B1E95 */ j si_handle_end
/* 0EC3D4 802C7A24 080B1E95 */ j .L802C7A54
/* 0EC3D8 802C7A28 0040282D */ daddu $a1, $v0, $zero
/* 0EC3DC 802C7A2C 0C0B1CEC */ jal func_802C73B0
/* 0EC3E0 802C7A30 0200202D */ daddu $a0, $s0, $zero
/* 0EC3E4 802C7A34 080B1E95 */ j si_handle_end
/* 0EC3E4 802C7A34 080B1E95 */ j .L802C7A54
/* 0EC3E8 802C7A38 0040282D */ daddu $a1, $v0, $zero
/* 0EC3EC 802C7A3C 0C0B1CEE */ jal func_802C73B8
/* 0EC3F0 802C7A40 0200202D */ daddu $a0, $s0, $zero
/* 0EC3F4 802C7A44 080B1E95 */ j si_handle_end
/* 0EC3F4 802C7A44 080B1E95 */ j .L802C7A54
/* 0EC3F8 802C7A48 0040282D */ daddu $a1, $v0, $zero
.L802C7A4C:
/* 0EC3FC 802C7A4C 080B1E93 */ j .L802C7A4C
/* 0EC400 802C7A50 00000000 */ nop
.L802C7A54:
/* 0EC404 802C7A54 24020003 */ addiu $v0, $zero, 3
/* 0EC408 802C7A58 10A2FE6E */ beq $a1, $v0, .L802C7414
/* 0EC40C 802C7A5C 240200FF */ addiu $v0, $zero, 0xff
/* 0EC410 802C7A60 10A20012 */ beq $a1, $v0, .L802C7AAC
/* 0EC414 802C7A64 2402FFFF */ addiu $v0, $zero, -1
/* 0EC418 802C7A68 04A00010 */ bltz $a1, .L802C7AAC
/* 0EC41C 802C7A6C 24020001 */ addiu $v0, $zero, 1
/* 0EC420 802C7A70 50A0000E */ beql $a1, $zero, .L802C7AAC
/* 0EC424 802C7A74 0000102D */ daddu $v0, $zero, $zero
/* 0EC428 802C7A78 14A20003 */ bne $a1, $v0, .L802C7A88
/* 0EC42C 802C7A7C 24020002 */ addiu $v0, $zero, 2
/* 0EC430 802C7A80 080B1EAA */ j .L802C7AA8
/* 0EC434 802C7A84 A2000002 */ sb $zero, 2($s0)
.L802C7A88:
/* 0EC438 802C7A88 14A2FE62 */ bne $a1, $v0, .L802C7414
/* 0EC43C 802C7A8C 00000000 */ nop
/* 0EC440 802C7A90 A2000002 */ sb $zero, 2($s0)
/* 0EC444 802C7A94 3C028007 */ lui $v0, 0x8007
/* 0EC448 802C7A98 8C42419C */ lw $v0, 0x419c($v0)
/* 0EC44C 802C7A9C 80420078 */ lb $v0, 0x78($v0)
/* 0EC450 802C7AA0 1445FE5C */ bne $v0, $a1, .L802C7414
/* 0EC454 802C7AA4 00000000 */ nop
.L802C7AA8:
/* 0EC458 802C7AA8 0000102D */ daddu $v0, $zero, $zero
.L802C7AAC:
/* 0EC45C 802C7AAC 8FBF0014 */ lw $ra, 0x14($sp)
/* 0EC460 802C7AB0 8FB00010 */ lw $s0, 0x10($sp)
/* 0EC464 802C7AB4 03E00008 */ jr $ra
/* 0EC468 802C7AB8 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,34 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_case_default
/* 0E9DF4 802C5444 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0E9DF8 802C5448 AFB00010 */ sw $s0, 0x10($sp)
/* 0E9DFC 802C544C 0080802D */ daddu $s0, $a0, $zero
/* 0E9E00 802C5450 AFBF0014 */ sw $ra, 0x14($sp)
/* 0E9E04 802C5454 82020007 */ lb $v0, 7($s0)
/* 0E9E08 802C5458 04410003 */ bgez $v0, .L802C5468
/* 0E9E0C 802C545C 02021821 */ addu $v1, $s0, $v0
.L802C5460:
/* 0E9E10 802C5460 080B1518 */ j .L802C5460
/* 0E9E14 802C5464 00000000 */ nop
.L802C5468:
/* 0E9E18 802C5468 80620110 */ lb $v0, 0x110($v1)
/* 0E9E1C 802C546C 18400003 */ blez $v0, .L802C547C
/* 0E9E20 802C5470 00000000 */ nop
/* 0E9E24 802C5474 080B1522 */ j .L802C5488
/* 0E9E28 802C5478 A0600110 */ sb $zero, 0x110($v1)
.L802C547C:
/* 0E9E2C 802C547C 0C0B2279 */ jal si_goto_end_case
/* 0E9E30 802C5480 0200202D */ daddu $a0, $s0, $zero
/* 0E9E34 802C5484 AE020008 */ sw $v0, 8($s0)
.L802C5488:
/* 0E9E38 802C5488 24020002 */ addiu $v0, $zero, 2
/* 0E9E3C 802C548C 8FBF0014 */ lw $ra, 0x14($sp)
/* 0E9E40 802C5490 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9E44 802C5494 03E00008 */ jr $ra
/* 0E9E48 802C5498 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,36 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_end
/* 0EC404 802C7A54 24020003 */ addiu $v0, $zero, 3
/* 0EC408 802C7A58 10A2FE6E */ beq $a1, $v0, .L802C7414
/* 0EC40C 802C7A5C 240200FF */ addiu $v0, $zero, 0xff
/* 0EC410 802C7A60 10A20012 */ beq $a1, $v0, .L802C7AAC
/* 0EC414 802C7A64 2402FFFF */ addiu $v0, $zero, -1
/* 0EC418 802C7A68 04A00010 */ bltz $a1, .L802C7AAC
/* 0EC41C 802C7A6C 24020001 */ addiu $v0, $zero, 1
/* 0EC420 802C7A70 50A0000E */ beql $a1, $zero, .L802C7AAC
/* 0EC424 802C7A74 0000102D */ daddu $v0, $zero, $zero
/* 0EC428 802C7A78 14A20003 */ bne $a1, $v0, .L802C7A88
/* 0EC42C 802C7A7C 24020002 */ addiu $v0, $zero, 2
/* 0EC430 802C7A80 080B1EAA */ j .L802C7AA8
/* 0EC434 802C7A84 A2000002 */ sb $zero, 2($s0)
.L802C7A88:
/* 0EC438 802C7A88 14A2FE62 */ bne $a1, $v0, .L802C7414
/* 0EC43C 802C7A8C 00000000 */ nop
/* 0EC440 802C7A90 A2000002 */ sb $zero, 2($s0)
/* 0EC444 802C7A94 3C028007 */ lui $v0, 0x8007
/* 0EC448 802C7A98 8C42419C */ lw $v0, 0x419c($v0)
/* 0EC44C 802C7A9C 80420078 */ lb $v0, 0x78($v0)
/* 0EC450 802C7AA0 1445FE5C */ bne $v0, $a1, .L802C7414
/* 0EC454 802C7AA4 00000000 */ nop
.L802C7AA8:
/* 0EC458 802C7AA8 0000102D */ daddu $v0, $zero, $zero
.L802C7AAC:
/* 0EC45C 802C7AAC 8FBF0014 */ lw $ra, 0x14($sp)
/* 0EC460 802C7AB0 8FB00010 */ lw $s0, 0x10($sp)
/* 0EC464 802C7AB4 03E00008 */ jr $ra
/* 0EC468 802C7AB8 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -5,10 +5,13 @@ from os import remove
from sys import argv
import re
from glob import glob
from pathlib import Path
DIR = path.dirname(__file__)
C_FILES = glob(path.join(DIR, "src/*.c"))
ASM_FILES = glob(path.join(DIR, "asm/nonmatchings/**/*.s"))
NONMATCHINGS_DIR = Path(path.join(DIR, "asm", "nonmatchings"))
C_FILES = Path(path.join(DIR, "src")).rglob("*.c")
ASM_FILES = NONMATCHINGS_DIR.rglob("*.s")
def strip_c_comments(text):
def replacer(match):
@ -67,7 +70,7 @@ if __name__ == "__main__":
exit(1)
elif "--delete-matched" in argv or input("Delete them [y/N]? ").upper() == "Y":
for func in matched_but_undeleted_asm:
file = glob(path.join(DIR, f"asm/nonmatchings/*/{func}.s"))[0]
remove(file)
f = next(NONMATCHINGS_DIR.rglob(func + ".s"))
remove(f)
elif len(asm) != len(non_matched):
print(f"warning: number of INCLUDE_ASM macros ({len(asm)}) != number of asm files ({len(non_matched)})")

View File

@ -247,7 +247,7 @@ typedef struct ScriptInstance {
/* 0x0C4 */ s32 varFlags[3];
/* 0x0D0 */ s32 loopStartTable[8];
/* 0x0F0 */ s32 loopCounterTable[8];
/* 0x110 */ u8 switchBlockState[8];
/* 0x110 */ s8 switchBlockState[8];
/* 0x118 */ s32 switchBlockValue[8];
/* 0x138 */ s32* buffer;
/* 0x13C */ s32* array;

View File

@ -11,6 +11,8 @@ s32 heap_malloc(s32 size);
HeapNode* _heap_create(void* addr, s32 size);
void clone_model(u16 srcModelID, u16 newModelID);
Model* get_model_from_list_index(s32 listIndex);
void update_collider_transform(s16 colliderID);
void get_collider_center(s32 colliderID, f32* x, f32* y, f32* z);
@ -31,6 +33,7 @@ s32 func_80055464(s32, s32);
s32 func_800554A4(s32, s32);
s32 func_800554E8(s32, s32);
s32 func_800555E4(s32);
s32 osGetId();
void func_8011B7C0(u16, s32, s32);
void func_80137D88(s32, f32);
void func_80137DA4(s32, f32);

View File

@ -8,6 +8,7 @@
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
#define ASSERT(condition) if (!(condition)) { while (1) {} }
#define PANIC() ASSERT(0)
#define GAME_STATUS (*gGameStatusPtr)

View File

@ -1,3 +1,31 @@
#include "common.h"
INCLUDE_ASM("code_39210_len_aa0", get_npc_pos);
void get_npc_pos(s32 arg0, f32* outX, f32* outY, f32* outZ, s32* arg4) {
PlayerStatus* playerStatus = &gPlayerStatus;
Npc* npc;
s32 phi_v0;
*outX = 0.0f;
*outY = 0.0f;
*outZ = 0.0f;
*arg4 = 0;
if (arg0 == -1) {
*outX = playerStatus->position.x;
*outY = playerStatus->position.y;
*outZ = playerStatus->position.z;
phi_v0 = playerStatus->flags & 6;
} else {
npc = get_npc_unsafe(arg0);
*outX = npc->pos.x;
*outY = npc->pos.y;
*outZ = npc->pos.z;
phi_v0 = npc->flags & 0x800;
}
if (phi_v0 != 0) {
*arg4 = 1;
}
}
INCLUDE_ASM("code_39210_len_aa0", func_8005DECC);

View File

@ -154,7 +154,7 @@ INCLUDE_ASM("code_a5dd0_len_114e0", func_80117E74);
INCLUDE_ASM("code_a5dd0_len_114e0", func_801180E8);
INCLUDE_ASM("code_a5dd0_len_114e0", get_model_from_list_index);
Model* INCLUDE_ASM("code_a5dd0_len_114e0", get_model_from_list_index, s32 listIndex);
INCLUDE_ASM("code_a5dd0_len_114e0", load_data_for_models);

View File

@ -213,7 +213,20 @@ INCLUDE_ASM("code_e92d0_len_5da0", si_handle_case_greater_equal);
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_case_range);
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_case_default);
ApiStatus si_handle_case_default(ScriptInstance* script) {
s32 switchDepth = script->switchDepth;
ASSERT(switchDepth >= 0);
if (script->switchBlockState[switchDepth] > 0) {
script->switchBlockState[switchDepth] = 0;
} else {
script->ptrNextLine = si_goto_end_case(script);
}
return ApiStatus_DONE2;
do {} while (0); // Necessary to match
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_case_AND);
@ -705,8 +718,6 @@ s32 func_802C73B8(ScriptInstance* script) {
INCLUDE_ASM("code_e92d0_len_5da0", si_execute_next_command);
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_end);
s32 INCLUDE_ASM("code_e92d0_len_5da0", get_variable, ScriptInstance* script, Bytecode var);
INCLUDE_ASM("code_e92d0_len_5da0", get_variable_index);
@ -722,8 +733,80 @@ f32 INCLUDE_ASM("code_e92d0_len_5da0", set_float_variable, ScriptInstance* scrip
INCLUDE_ASM("code_e92d0_len_5da0", si_goto_label);
INCLUDE_ASM("code_e92d0_len_5da0", si_skip_if);
// Matching but needs rodata support
/*Bytecode* si_skip_if(ScriptInstance* script) {
s32 nestedIfDepth = 0;
Bytecode* pos = script->ptrNextLine;
Bytecode opcode;
s32 nargs;
do {
opcode = *pos++;
nargs = *pos++;
pos += nargs;
switch(opcode) {
case 1:
PANIC();
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 19:
nestedIfDepth--;
if (nestedIfDepth < 0) {
return pos;
}
break;
case 17:
nestedIfDepth++;
break;
case 18:
if (nestedIfDepth == 0) {
return pos;
}
break;
}
} while(1);
}*/
INCLUDE_ASM("code_e92d0_len_5da0", si_skip_else);
// Matching but needs rodata support
/*Bytecode* si_skip_else(ScriptInstance* script) {
s32 nestedIfDepth = 0;
Bytecode* pos = script->ptrNextLine;
Bytecode opcode;
s32 nargs;
do {
opcode = *pos++;
nargs = *pos++;
pos += nargs;
switch(opcode) {
case 1:
PANIC();
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 19:
nestedIfDepth--;
if (nestedIfDepth < 0) {
return pos;
}
break;
case 17:
nestedIfDepth++;
break;
}
} while(1);
}*/
INCLUDE_ASM("code_e92d0_len_5da0", si_goto_end_case);
@ -731,6 +814,7 @@ INCLUDE_ASM("code_e92d0_len_5da0", si_goto_next_case);
INCLUDE_ASM("code_e92d0_len_5da0", si_goto_end_loop);
// Ethan: I think this is the start of a new file
INCLUDE_API_ASM("code_e92d0_len_5da0", TranslateModel);
INCLUDE_API_ASM("code_e92d0_len_5da0", RotateModel);
@ -842,7 +926,15 @@ ApiStatus GetLoadType(ScriptInstance* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
INCLUDE_API_ASM("code_e92d0_len_5da0", SetRenderMode);
ApiStatus SetRenderMode(ScriptInstance* script, s32 isInitialCall) {
Bytecode* thisPos = script->ptrReadPos;
s32 treeIndex = get_variable(script, *thisPos++);
s8 renderMode = get_variable(script, *thisPos++);
get_model_from_list_index(get_model_list_index_from_tree_index(treeIndex))->renderMode = renderMode;
return ApiStatus_DONE2;
}
INCLUDE_API_ASM("code_e92d0_len_5da0", PlaySoundAtModel);