Merge pull request #42 from ethteck/si

Some more si funcs
This commit is contained in:
Ethan Roseman 2020-08-24 00:24:57 -04:00 committed by GitHub
commit a6c722060a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 202 additions and 641 deletions

View File

@ -1,29 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel SetGroupEnabled
/* 0EDCB8 802C9308 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0EDCBC 802C930C AFB10014 */ sw $s1, 0x14($sp)
/* 0EDCC0 802C9310 0080882D */ daddu $s1, $a0, $zero
/* 0EDCC4 802C9314 AFBF0018 */ sw $ra, 0x18($sp)
/* 0EDCC8 802C9318 AFB00010 */ sw $s0, 0x10($sp)
/* 0EDCCC 802C931C 8E30000C */ lw $s0, 0xc($s1)
/* 0EDCD0 802C9320 8E050000 */ lw $a1, ($s0)
/* 0EDCD4 802C9324 0C0B1EAF */ jal get_variable
/* 0EDCD8 802C9328 26100004 */ addiu $s0, $s0, 4
/* 0EDCDC 802C932C 0220202D */ daddu $a0, $s1, $zero
/* 0EDCE0 802C9330 8E050000 */ lw $a1, ($s0)
/* 0EDCE4 802C9334 0C0B1EAF */ jal get_variable
/* 0EDCE8 802C9338 0040802D */ daddu $s0, $v0, $zero
/* 0EDCEC 802C933C 3204FFFF */ andi $a0, $s0, 0xffff
/* 0EDCF0 802C9340 24050002 */ addiu $a1, $zero, 2
/* 0EDCF4 802C9344 0C046DF0 */ jal func_8011B7C0
/* 0EDCF8 802C9348 0040302D */ daddu $a2, $v0, $zero
/* 0EDCFC 802C934C 8FBF0018 */ lw $ra, 0x18($sp)
/* 0EDD00 802C9350 8FB10014 */ lw $s1, 0x14($sp)
/* 0EDD04 802C9354 8FB00010 */ lw $s0, 0x10($sp)
/* 0EDD08 802C9358 24020002 */ addiu $v0, $zero, 2
/* 0EDD0C 802C935C 03E00008 */ jr $ra
/* 0EDD10 802C9360 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_add
/* 0EA1B4 802C5804 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0EA1B8 802C5808 AFB10014 */ sw $s1, 0x14($sp)
/* 0EA1BC 802C580C 0080882D */ daddu $s1, $a0, $zero
/* 0EA1C0 802C5810 AFBF001C */ sw $ra, 0x1c($sp)
/* 0EA1C4 802C5814 AFB20018 */ sw $s2, 0x18($sp)
/* 0EA1C8 802C5818 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA1CC 802C581C 8E22000C */ lw $v0, 0xc($s1)
/* 0EA1D0 802C5820 8C450004 */ lw $a1, 4($v0)
/* 0EA1D4 802C5824 0C0B1EAF */ jal get_variable
/* 0EA1D8 802C5828 8C520000 */ lw $s2, ($v0)
/* 0EA1DC 802C582C 0040802D */ daddu $s0, $v0, $zero
/* 0EA1E0 802C5830 0220202D */ daddu $a0, $s1, $zero
/* 0EA1E4 802C5834 0C0B1EAF */ jal get_variable
/* 0EA1E8 802C5838 0240282D */ daddu $a1, $s2, $zero
/* 0EA1EC 802C583C 0220202D */ daddu $a0, $s1, $zero
/* 0EA1F0 802C5840 0240282D */ daddu $a1, $s2, $zero
/* 0EA1F4 802C5844 0C0B2026 */ jal set_variable
/* 0EA1F8 802C5848 02023021 */ addu $a2, $s0, $v0
/* 0EA1FC 802C584C 8FBF001C */ lw $ra, 0x1c($sp)
/* 0EA200 802C5850 8FB20018 */ lw $s2, 0x18($sp)
/* 0EA204 802C5854 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA208 802C5858 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA20C 802C585C 24020002 */ addiu $v0, $zero, 2
/* 0EA210 802C5860 03E00008 */ jr $ra
/* 0EA214 802C5864 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_addF
/* 0EA434 802C5A84 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0EA438 802C5A88 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA43C 802C5A8C 0080802D */ daddu $s0, $a0, $zero
/* 0EA440 802C5A90 AFBF0018 */ sw $ra, 0x18($sp)
/* 0EA444 802C5A94 AFB10014 */ sw $s1, 0x14($sp)
/* 0EA448 802C5A98 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0EA44C 802C5A9C 8E02000C */ lw $v0, 0xc($s0)
/* 0EA450 802C5AA0 8C450004 */ lw $a1, 4($v0)
/* 0EA454 802C5AA4 0C0B210B */ jal get_float_variable
/* 0EA458 802C5AA8 8C510000 */ lw $s1, ($v0)
/* 0EA45C 802C5AAC 46000506 */ mov.s $f20, $f0
/* 0EA460 802C5AB0 0200202D */ daddu $a0, $s0, $zero
/* 0EA464 802C5AB4 0C0B210B */ jal get_float_variable
/* 0EA468 802C5AB8 0220282D */ daddu $a1, $s1, $zero
/* 0EA46C 802C5ABC 4600A500 */ add.s $f20, $f20, $f0
/* 0EA470 802C5AC0 0200202D */ daddu $a0, $s0, $zero
/* 0EA474 802C5AC4 4406A000 */ mfc1 $a2, $f20
/* 0EA478 802C5AC8 0C0B2190 */ jal set_float_variable
/* 0EA47C 802C5ACC 0220282D */ daddu $a1, $s1, $zero
/* 0EA480 802C5AD0 8FBF0018 */ lw $ra, 0x18($sp)
/* 0EA484 802C5AD4 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA488 802C5AD8 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA48C 802C5ADC D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0EA490 802C5AE0 24020002 */ addiu $v0, $zero, 2
/* 0EA494 802C5AE4 03E00008 */ jr $ra
/* 0EA498 802C5AE8 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,42 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_divide
/* 0EA2E4 802C5934 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0EA2E8 802C5938 AFB10014 */ sw $s1, 0x14($sp)
/* 0EA2EC 802C593C 0080882D */ daddu $s1, $a0, $zero
/* 0EA2F0 802C5940 AFBF001C */ sw $ra, 0x1c($sp)
/* 0EA2F4 802C5944 AFB20018 */ sw $s2, 0x18($sp)
/* 0EA2F8 802C5948 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA2FC 802C594C 8E22000C */ lw $v0, 0xc($s1)
/* 0EA300 802C5950 8C450004 */ lw $a1, 4($v0)
/* 0EA304 802C5954 0C0B1EAF */ jal get_variable
/* 0EA308 802C5958 8C520000 */ lw $s2, ($v0)
/* 0EA30C 802C595C 0220202D */ daddu $a0, $s1, $zero
/* 0EA310 802C5960 0240282D */ daddu $a1, $s2, $zero
/* 0EA314 802C5964 0C0B1EAF */ jal get_variable
/* 0EA318 802C5968 0040802D */ daddu $s0, $v0, $zero
/* 0EA31C 802C596C 16000002 */ bnez $s0, .L802C5978
/* 0EA320 802C5970 0050001A */ div $zero, $v0, $s0
/* 0EA324 802C5974 0007000D */ break 7
.L802C5978:
/* 0EA328 802C5978 2401FFFF */ addiu $at, $zero, -1
/* 0EA32C 802C597C 16010004 */ bne $s0, $at, .L802C5990
/* 0EA330 802C5980 3C018000 */ lui $at, 0x8000
/* 0EA334 802C5984 14410002 */ bne $v0, $at, .L802C5990
/* 0EA338 802C5988 00000000 */ nop
/* 0EA33C 802C598C 0006000D */ break 6
.L802C5990:
/* 0EA340 802C5990 00003012 */ mflo $a2
/* 0EA344 802C5994 0220202D */ daddu $a0, $s1, $zero
/* 0EA348 802C5998 0C0B2026 */ jal set_variable
/* 0EA34C 802C599C 0240282D */ daddu $a1, $s2, $zero
/* 0EA350 802C59A0 8FBF001C */ lw $ra, 0x1c($sp)
/* 0EA354 802C59A4 8FB20018 */ lw $s2, 0x18($sp)
/* 0EA358 802C59A8 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA35C 802C59AC 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA360 802C59B0 24020002 */ addiu $v0, $zero, 2
/* 0EA364 802C59B4 03E00008 */ jr $ra
/* 0EA368 802C59B8 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_divideF
/* 0EA570 802C5BC0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0EA574 802C5BC4 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA578 802C5BC8 0080802D */ daddu $s0, $a0, $zero
/* 0EA57C 802C5BCC AFBF0018 */ sw $ra, 0x18($sp)
/* 0EA580 802C5BD0 AFB10014 */ sw $s1, 0x14($sp)
/* 0EA584 802C5BD4 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0EA588 802C5BD8 8E02000C */ lw $v0, 0xc($s0)
/* 0EA58C 802C5BDC 8C450004 */ lw $a1, 4($v0)
/* 0EA590 802C5BE0 0C0B210B */ jal get_float_variable
/* 0EA594 802C5BE4 8C510000 */ lw $s1, ($v0)
/* 0EA598 802C5BE8 46000506 */ mov.s $f20, $f0
/* 0EA59C 802C5BEC 0200202D */ daddu $a0, $s0, $zero
/* 0EA5A0 802C5BF0 0C0B210B */ jal get_float_variable
/* 0EA5A4 802C5BF4 0220282D */ daddu $a1, $s1, $zero
/* 0EA5A8 802C5BF8 0200202D */ daddu $a0, $s0, $zero
/* 0EA5AC 802C5BFC 46140003 */ div.s $f0, $f0, $f20
/* 0EA5B0 802C5C00 44060000 */ mfc1 $a2, $f0
/* 0EA5B4 802C5C04 0C0B2190 */ jal set_float_variable
/* 0EA5B8 802C5C08 0220282D */ daddu $a1, $s1, $zero
/* 0EA5BC 802C5C0C 8FBF0018 */ lw $ra, 0x18($sp)
/* 0EA5C0 802C5C10 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA5C4 802C5C14 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA5C8 802C5C18 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0EA5CC 802C5C1C 24020002 */ addiu $v0, $zero, 2
/* 0EA5D0 802C5C20 03E00008 */ jr $ra
/* 0EA5D4 802C5C24 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_if_equal
/* 0E95F0 802C4C40 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E95F4 802C4C44 AFB10014 */ sw $s1, 0x14($sp)
/* 0E95F8 802C4C48 0080882D */ daddu $s1, $a0, $zero
/* 0E95FC 802C4C4C AFBF0018 */ sw $ra, 0x18($sp)
/* 0E9600 802C4C50 AFB00010 */ sw $s0, 0x10($sp)
/* 0E9604 802C4C54 8E30000C */ lw $s0, 0xc($s1)
/* 0E9608 802C4C58 8E050000 */ lw $a1, ($s0)
/* 0E960C 802C4C5C 0C0B1EAF */ jal get_variable
/* 0E9610 802C4C60 26100004 */ addiu $s0, $s0, 4
/* 0E9614 802C4C64 0220202D */ daddu $a0, $s1, $zero
/* 0E9618 802C4C68 8E050000 */ lw $a1, ($s0)
/* 0E961C 802C4C6C 0C0B1EAF */ jal get_variable
/* 0E9620 802C4C70 0040802D */ daddu $s0, $v0, $zero
/* 0E9624 802C4C74 12020005 */ beq $s0, $v0, .L802C4C8C
/* 0E9628 802C4C78 24020002 */ addiu $v0, $zero, 2
/* 0E962C 802C4C7C 0C0B223F */ jal si_skip_if
/* 0E9630 802C4C80 0220202D */ daddu $a0, $s1, $zero
/* 0E9634 802C4C84 AE220008 */ sw $v0, 8($s1)
/* 0E9638 802C4C88 24020002 */ addiu $v0, $zero, 2
.L802C4C8C:
/* 0E963C 802C4C8C 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E9640 802C4C90 8FB10014 */ lw $s1, 0x14($sp)
/* 0E9644 802C4C94 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9648 802C4C98 03E00008 */ jr $ra
/* 0E964C 802C4C9C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_if_greater
/* 0E9714 802C4D64 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E9718 802C4D68 AFB10014 */ sw $s1, 0x14($sp)
/* 0E971C 802C4D6C 0080882D */ daddu $s1, $a0, $zero
/* 0E9720 802C4D70 AFBF0018 */ sw $ra, 0x18($sp)
/* 0E9724 802C4D74 AFB00010 */ sw $s0, 0x10($sp)
/* 0E9728 802C4D78 8E30000C */ lw $s0, 0xc($s1)
/* 0E972C 802C4D7C 8E050000 */ lw $a1, ($s0)
/* 0E9730 802C4D80 0C0B1EAF */ jal get_variable
/* 0E9734 802C4D84 26100004 */ addiu $s0, $s0, 4
/* 0E9738 802C4D88 0220202D */ daddu $a0, $s1, $zero
/* 0E973C 802C4D8C 8E050000 */ lw $a1, ($s0)
/* 0E9740 802C4D90 0C0B1EAF */ jal get_variable
/* 0E9744 802C4D94 0040802D */ daddu $s0, $v0, $zero
/* 0E9748 802C4D98 0050102A */ slt $v0, $v0, $s0
/* 0E974C 802C4D9C 14400005 */ bnez $v0, .L802C4DB4
/* 0E9750 802C4DA0 24020002 */ addiu $v0, $zero, 2
/* 0E9754 802C4DA4 0C0B223F */ jal si_skip_if
/* 0E9758 802C4DA8 0220202D */ daddu $a0, $s1, $zero
/* 0E975C 802C4DAC AE220008 */ sw $v0, 8($s1)
/* 0E9760 802C4DB0 24020002 */ addiu $v0, $zero, 2
.L802C4DB4:
/* 0E9764 802C4DB4 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E9768 802C4DB8 8FB10014 */ lw $s1, 0x14($sp)
/* 0E976C 802C4DBC 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9770 802C4DC0 03E00008 */ jr $ra
/* 0E9774 802C4DC4 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_if_greater_equal
/* 0E97DC 802C4E2C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E97E0 802C4E30 AFB10014 */ sw $s1, 0x14($sp)
/* 0E97E4 802C4E34 0080882D */ daddu $s1, $a0, $zero
/* 0E97E8 802C4E38 AFBF0018 */ sw $ra, 0x18($sp)
/* 0E97EC 802C4E3C AFB00010 */ sw $s0, 0x10($sp)
/* 0E97F0 802C4E40 8E30000C */ lw $s0, 0xc($s1)
/* 0E97F4 802C4E44 8E050000 */ lw $a1, ($s0)
/* 0E97F8 802C4E48 0C0B1EAF */ jal get_variable
/* 0E97FC 802C4E4C 26100004 */ addiu $s0, $s0, 4
/* 0E9800 802C4E50 0220202D */ daddu $a0, $s1, $zero
/* 0E9804 802C4E54 8E050000 */ lw $a1, ($s0)
/* 0E9808 802C4E58 0C0B1EAF */ jal get_variable
/* 0E980C 802C4E5C 0040802D */ daddu $s0, $v0, $zero
/* 0E9810 802C4E60 0202802A */ slt $s0, $s0, $v0
/* 0E9814 802C4E64 12000005 */ beqz $s0, .L802C4E7C
/* 0E9818 802C4E68 24020002 */ addiu $v0, $zero, 2
/* 0E981C 802C4E6C 0C0B223F */ jal si_skip_if
/* 0E9820 802C4E70 0220202D */ daddu $a0, $s1, $zero
/* 0E9824 802C4E74 AE220008 */ sw $v0, 8($s1)
/* 0E9828 802C4E78 24020002 */ addiu $v0, $zero, 2
.L802C4E7C:
/* 0E982C 802C4E7C 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E9830 802C4E80 8FB10014 */ lw $s1, 0x14($sp)
/* 0E9834 802C4E84 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9838 802C4E88 03E00008 */ jr $ra
/* 0E983C 802C4E8C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_if_less
/* 0E96B0 802C4D00 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E96B4 802C4D04 AFB10014 */ sw $s1, 0x14($sp)
/* 0E96B8 802C4D08 0080882D */ daddu $s1, $a0, $zero
/* 0E96BC 802C4D0C AFBF0018 */ sw $ra, 0x18($sp)
/* 0E96C0 802C4D10 AFB00010 */ sw $s0, 0x10($sp)
/* 0E96C4 802C4D14 8E30000C */ lw $s0, 0xc($s1)
/* 0E96C8 802C4D18 8E050000 */ lw $a1, ($s0)
/* 0E96CC 802C4D1C 0C0B1EAF */ jal get_variable
/* 0E96D0 802C4D20 26100004 */ addiu $s0, $s0, 4
/* 0E96D4 802C4D24 0220202D */ daddu $a0, $s1, $zero
/* 0E96D8 802C4D28 8E050000 */ lw $a1, ($s0)
/* 0E96DC 802C4D2C 0C0B1EAF */ jal get_variable
/* 0E96E0 802C4D30 0040802D */ daddu $s0, $v0, $zero
/* 0E96E4 802C4D34 0202802A */ slt $s0, $s0, $v0
/* 0E96E8 802C4D38 16000005 */ bnez $s0, .L802C4D50
/* 0E96EC 802C4D3C 24020002 */ addiu $v0, $zero, 2
/* 0E96F0 802C4D40 0C0B223F */ jal si_skip_if
/* 0E96F4 802C4D44 0220202D */ daddu $a0, $s1, $zero
/* 0E96F8 802C4D48 AE220008 */ sw $v0, 8($s1)
/* 0E96FC 802C4D4C 24020002 */ addiu $v0, $zero, 2
.L802C4D50:
/* 0E9700 802C4D50 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E9704 802C4D54 8FB10014 */ lw $s1, 0x14($sp)
/* 0E9708 802C4D58 8FB00010 */ lw $s0, 0x10($sp)
/* 0E970C 802C4D5C 03E00008 */ jr $ra
/* 0E9710 802C4D60 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_if_less_equal
/* 0E9778 802C4DC8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E977C 802C4DCC AFB10014 */ sw $s1, 0x14($sp)
/* 0E9780 802C4DD0 0080882D */ daddu $s1, $a0, $zero
/* 0E9784 802C4DD4 AFBF0018 */ sw $ra, 0x18($sp)
/* 0E9788 802C4DD8 AFB00010 */ sw $s0, 0x10($sp)
/* 0E978C 802C4DDC 8E30000C */ lw $s0, 0xc($s1)
/* 0E9790 802C4DE0 8E050000 */ lw $a1, ($s0)
/* 0E9794 802C4DE4 0C0B1EAF */ jal get_variable
/* 0E9798 802C4DE8 26100004 */ addiu $s0, $s0, 4
/* 0E979C 802C4DEC 0220202D */ daddu $a0, $s1, $zero
/* 0E97A0 802C4DF0 8E050000 */ lw $a1, ($s0)
/* 0E97A4 802C4DF4 0C0B1EAF */ jal get_variable
/* 0E97A8 802C4DF8 0040802D */ daddu $s0, $v0, $zero
/* 0E97AC 802C4DFC 0050102A */ slt $v0, $v0, $s0
/* 0E97B0 802C4E00 10400005 */ beqz $v0, .L802C4E18
/* 0E97B4 802C4E04 24020002 */ addiu $v0, $zero, 2
/* 0E97B8 802C4E08 0C0B223F */ jal si_skip_if
/* 0E97BC 802C4E0C 0220202D */ daddu $a0, $s1, $zero
/* 0E97C0 802C4E10 AE220008 */ sw $v0, 8($s1)
/* 0E97C4 802C4E14 24020002 */ addiu $v0, $zero, 2
.L802C4E18:
/* 0E97C8 802C4E18 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E97CC 802C4E1C 8FB10014 */ lw $s1, 0x14($sp)
/* 0E97D0 802C4E20 8FB00010 */ lw $s0, 0x10($sp)
/* 0E97D4 802C4E24 03E00008 */ jr $ra
/* 0E97D8 802C4E28 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_if_not_equal
/* 0E9650 802C4CA0 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E9654 802C4CA4 AFB10014 */ sw $s1, 0x14($sp)
/* 0E9658 802C4CA8 0080882D */ daddu $s1, $a0, $zero
/* 0E965C 802C4CAC AFBF0018 */ sw $ra, 0x18($sp)
/* 0E9660 802C4CB0 AFB00010 */ sw $s0, 0x10($sp)
/* 0E9664 802C4CB4 8E30000C */ lw $s0, 0xc($s1)
/* 0E9668 802C4CB8 8E050000 */ lw $a1, ($s0)
/* 0E966C 802C4CBC 0C0B1EAF */ jal get_variable
/* 0E9670 802C4CC0 26100004 */ addiu $s0, $s0, 4
/* 0E9674 802C4CC4 0220202D */ daddu $a0, $s1, $zero
/* 0E9678 802C4CC8 8E050000 */ lw $a1, ($s0)
/* 0E967C 802C4CCC 0C0B1EAF */ jal get_variable
/* 0E9680 802C4CD0 0040802D */ daddu $s0, $v0, $zero
/* 0E9684 802C4CD4 16020005 */ bne $s0, $v0, .L802C4CEC
/* 0E9688 802C4CD8 24020002 */ addiu $v0, $zero, 2
/* 0E968C 802C4CDC 0C0B223F */ jal si_skip_if
/* 0E9690 802C4CE0 0220202D */ daddu $a0, $s1, $zero
/* 0E9694 802C4CE4 AE220008 */ sw $v0, 8($s1)
/* 0E9698 802C4CE8 24020002 */ addiu $v0, $zero, 2
.L802C4CEC:
/* 0E969C 802C4CEC 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E96A0 802C4CF0 8FB10014 */ lw $s1, 0x14($sp)
/* 0E96A4 802C4CF4 8FB00010 */ lw $s0, 0x10($sp)
/* 0E96A8 802C4CF8 03E00008 */ jr $ra
/* 0E96AC 802C4CFC 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,58 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_mod
/* 0EA36C 802C59BC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0EA370 802C59C0 AFB10014 */ sw $s1, 0x14($sp)
/* 0EA374 802C59C4 0080882D */ daddu $s1, $a0, $zero
/* 0EA378 802C59C8 AFBF001C */ sw $ra, 0x1c($sp)
/* 0EA37C 802C59CC AFB20018 */ sw $s2, 0x18($sp)
/* 0EA380 802C59D0 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA384 802C59D4 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0EA388 802C59D8 8E22000C */ lw $v0, 0xc($s1)
/* 0EA38C 802C59DC 8C450004 */ lw $a1, 4($v0)
/* 0EA390 802C59E0 0C0B1EAF */ jal get_variable
/* 0EA394 802C59E4 8C520000 */ lw $s2, ($v0)
/* 0EA398 802C59E8 3C013FE0 */ lui $at, 0x3fe0
/* 0EA39C 802C59EC 4481A800 */ mtc1 $at, $f21
/* 0EA3A0 802C59F0 4480A000 */ mtc1 $zero, $f20
/* 0EA3A4 802C59F4 44820000 */ mtc1 $v0, $f0
/* 0EA3A8 802C59F8 00000000 */ nop
/* 0EA3AC 802C59FC 46800021 */ cvt.d.w $f0, $f0
/* 0EA3B0 802C5A00 46340000 */ add.d $f0, $f0, $f20
/* 0EA3B4 802C5A04 0220202D */ daddu $a0, $s1, $zero
/* 0EA3B8 802C5A08 4620008D */ trunc.w.d $f2, $f0
/* 0EA3BC 802C5A0C 44101000 */ mfc1 $s0, $f2
/* 0EA3C0 802C5A10 0C0B1EAF */ jal get_variable
/* 0EA3C4 802C5A14 0240282D */ daddu $a1, $s2, $zero
/* 0EA3C8 802C5A18 44820000 */ mtc1 $v0, $f0
/* 0EA3CC 802C5A1C 00000000 */ nop
/* 0EA3D0 802C5A20 46800021 */ cvt.d.w $f0, $f0
/* 0EA3D4 802C5A24 46340000 */ add.d $f0, $f0, $f20
/* 0EA3D8 802C5A28 4620008D */ trunc.w.d $f2, $f0
/* 0EA3DC 802C5A2C 44021000 */ mfc1 $v0, $f2
/* 0EA3E0 802C5A30 16000002 */ bnez $s0, .L802C5A3C
/* 0EA3E4 802C5A34 0050001A */ div $zero, $v0, $s0
/* 0EA3E8 802C5A38 0007000D */ break 7
.L802C5A3C:
/* 0EA3EC 802C5A3C 2401FFFF */ addiu $at, $zero, -1
/* 0EA3F0 802C5A40 16010004 */ bne $s0, $at, .L802C5A54
/* 0EA3F4 802C5A44 3C018000 */ lui $at, 0x8000
/* 0EA3F8 802C5A48 14410002 */ bne $v0, $at, .L802C5A54
/* 0EA3FC 802C5A4C 00000000 */ nop
/* 0EA400 802C5A50 0006000D */ break 6
.L802C5A54:
/* 0EA404 802C5A54 00003010 */ mfhi $a2
/* 0EA408 802C5A58 0220202D */ daddu $a0, $s1, $zero
/* 0EA40C 802C5A5C 0C0B2026 */ jal set_variable
/* 0EA410 802C5A60 0240282D */ daddu $a1, $s2, $zero
/* 0EA414 802C5A64 8FBF001C */ lw $ra, 0x1c($sp)
/* 0EA418 802C5A68 8FB20018 */ lw $s2, 0x18($sp)
/* 0EA41C 802C5A6C 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA420 802C5A70 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA424 802C5A74 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0EA428 802C5A78 24020002 */ addiu $v0, $zero, 2
/* 0EA42C 802C5A7C 03E00008 */ jr $ra
/* 0EA430 802C5A80 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_multiply
/* 0EA27C 802C58CC 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0EA280 802C58D0 AFB10014 */ sw $s1, 0x14($sp)
/* 0EA284 802C58D4 0080882D */ daddu $s1, $a0, $zero
/* 0EA288 802C58D8 AFBF001C */ sw $ra, 0x1c($sp)
/* 0EA28C 802C58DC AFB20018 */ sw $s2, 0x18($sp)
/* 0EA290 802C58E0 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA294 802C58E4 8E22000C */ lw $v0, 0xc($s1)
/* 0EA298 802C58E8 8C450004 */ lw $a1, 4($v0)
/* 0EA29C 802C58EC 0C0B1EAF */ jal get_variable
/* 0EA2A0 802C58F0 8C520000 */ lw $s2, ($v0)
/* 0EA2A4 802C58F4 0040802D */ daddu $s0, $v0, $zero
/* 0EA2A8 802C58F8 0220202D */ daddu $a0, $s1, $zero
/* 0EA2AC 802C58FC 0C0B1EAF */ jal get_variable
/* 0EA2B0 802C5900 0240282D */ daddu $a1, $s2, $zero
/* 0EA2B4 802C5904 02020018 */ mult $s0, $v0
/* 0EA2B8 802C5908 0220202D */ daddu $a0, $s1, $zero
/* 0EA2BC 802C590C 00003012 */ mflo $a2
/* 0EA2C0 802C5910 0C0B2026 */ jal set_variable
/* 0EA2C4 802C5914 0240282D */ daddu $a1, $s2, $zero
/* 0EA2C8 802C5918 8FBF001C */ lw $ra, 0x1c($sp)
/* 0EA2CC 802C591C 8FB20018 */ lw $s2, 0x18($sp)
/* 0EA2D0 802C5920 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA2D4 802C5924 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA2D8 802C5928 24020002 */ addiu $v0, $zero, 2
/* 0EA2DC 802C592C 03E00008 */ jr $ra
/* 0EA2E0 802C5930 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,33 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_multiplyF
/* 0EA504 802C5B54 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0EA508 802C5B58 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA50C 802C5B5C 0080802D */ daddu $s0, $a0, $zero
/* 0EA510 802C5B60 AFBF0018 */ sw $ra, 0x18($sp)
/* 0EA514 802C5B64 AFB10014 */ sw $s1, 0x14($sp)
/* 0EA518 802C5B68 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0EA51C 802C5B6C 8E02000C */ lw $v0, 0xc($s0)
/* 0EA520 802C5B70 8C450004 */ lw $a1, 4($v0)
/* 0EA524 802C5B74 0C0B210B */ jal get_float_variable
/* 0EA528 802C5B78 8C510000 */ lw $s1, ($v0)
/* 0EA52C 802C5B7C 46000506 */ mov.s $f20, $f0
/* 0EA530 802C5B80 0200202D */ daddu $a0, $s0, $zero
/* 0EA534 802C5B84 0C0B210B */ jal get_float_variable
/* 0EA538 802C5B88 0220282D */ daddu $a1, $s1, $zero
/* 0EA53C 802C5B8C 4600A502 */ mul.s $f20, $f20, $f0
/* 0EA540 802C5B90 00000000 */ nop
/* 0EA544 802C5B94 0200202D */ daddu $a0, $s0, $zero
/* 0EA548 802C5B98 4406A000 */ mfc1 $a2, $f20
/* 0EA54C 802C5B9C 0C0B2190 */ jal set_float_variable
/* 0EA550 802C5BA0 0220282D */ daddu $a1, $s1, $zero
/* 0EA554 802C5BA4 8FBF0018 */ lw $ra, 0x18($sp)
/* 0EA558 802C5BA8 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA55C 802C5BAC 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA560 802C5BB0 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0EA564 802C5BB4 24020002 */ addiu $v0, $zero, 2
/* 0EA568 802C5BB8 03E00008 */ jr $ra
/* 0EA56C 802C5BBC 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_subtract
/* 0EA218 802C5868 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0EA21C 802C586C AFB10014 */ sw $s1, 0x14($sp)
/* 0EA220 802C5870 0080882D */ daddu $s1, $a0, $zero
/* 0EA224 802C5874 AFBF001C */ sw $ra, 0x1c($sp)
/* 0EA228 802C5878 AFB20018 */ sw $s2, 0x18($sp)
/* 0EA22C 802C587C AFB00010 */ sw $s0, 0x10($sp)
/* 0EA230 802C5880 8E22000C */ lw $v0, 0xc($s1)
/* 0EA234 802C5884 8C450004 */ lw $a1, 4($v0)
/* 0EA238 802C5888 0C0B1EAF */ jal get_variable
/* 0EA23C 802C588C 8C520000 */ lw $s2, ($v0)
/* 0EA240 802C5890 0040802D */ daddu $s0, $v0, $zero
/* 0EA244 802C5894 0220202D */ daddu $a0, $s1, $zero
/* 0EA248 802C5898 0C0B1EAF */ jal get_variable
/* 0EA24C 802C589C 0240282D */ daddu $a1, $s2, $zero
/* 0EA250 802C58A0 0220202D */ daddu $a0, $s1, $zero
/* 0EA254 802C58A4 0240282D */ daddu $a1, $s2, $zero
/* 0EA258 802C58A8 0C0B2026 */ jal set_variable
/* 0EA25C 802C58AC 00503023 */ subu $a2, $v0, $s0
/* 0EA260 802C58B0 8FBF001C */ lw $ra, 0x1c($sp)
/* 0EA264 802C58B4 8FB20018 */ lw $s2, 0x18($sp)
/* 0EA268 802C58B8 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA26C 802C58BC 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA270 802C58C0 24020002 */ addiu $v0, $zero, 2
/* 0EA274 802C58C4 03E00008 */ jr $ra
/* 0EA278 802C58C8 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_subtractF
/* 0EA49C 802C5AEC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0EA4A0 802C5AF0 AFB00010 */ sw $s0, 0x10($sp)
/* 0EA4A4 802C5AF4 0080802D */ daddu $s0, $a0, $zero
/* 0EA4A8 802C5AF8 AFBF0018 */ sw $ra, 0x18($sp)
/* 0EA4AC 802C5AFC AFB10014 */ sw $s1, 0x14($sp)
/* 0EA4B0 802C5B00 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 0EA4B4 802C5B04 8E02000C */ lw $v0, 0xc($s0)
/* 0EA4B8 802C5B08 8C450004 */ lw $a1, 4($v0)
/* 0EA4BC 802C5B0C 0C0B210B */ jal get_float_variable
/* 0EA4C0 802C5B10 8C510000 */ lw $s1, ($v0)
/* 0EA4C4 802C5B14 46000506 */ mov.s $f20, $f0
/* 0EA4C8 802C5B18 0200202D */ daddu $a0, $s0, $zero
/* 0EA4CC 802C5B1C 0C0B210B */ jal get_float_variable
/* 0EA4D0 802C5B20 0220282D */ daddu $a1, $s1, $zero
/* 0EA4D4 802C5B24 46140001 */ sub.s $f0, $f0, $f20
/* 0EA4D8 802C5B28 0200202D */ daddu $a0, $s0, $zero
/* 0EA4DC 802C5B2C 44060000 */ mfc1 $a2, $f0
/* 0EA4E0 802C5B30 0C0B2190 */ jal set_float_variable
/* 0EA4E4 802C5B34 0220282D */ daddu $a1, $s1, $zero
/* 0EA4E8 802C5B38 8FBF0018 */ lw $ra, 0x18($sp)
/* 0EA4EC 802C5B3C 8FB10014 */ lw $s1, 0x14($sp)
/* 0EA4F0 802C5B40 8FB00010 */ lw $s0, 0x10($sp)
/* 0EA4F4 802C5B44 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 0EA4F8 802C5B48 24020002 */ addiu $v0, $zero, 2
/* 0EA4FC 802C5B4C 03E00008 */ jr $ra
/* 0EA500 802C5B50 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,33 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_wait
/* 0E950C 802C4B5C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0E9510 802C4B60 AFB00010 */ sw $s0, 0x10($sp)
/* 0E9514 802C4B64 0080802D */ daddu $s0, $a0, $zero
/* 0E9518 802C4B68 AFBF0014 */ sw $ra, 0x14($sp)
/* 0E951C 802C4B6C 82020005 */ lb $v0, 5($s0)
/* 0E9520 802C4B70 14400006 */ bnez $v0, .L802C4B8C
/* 0E9524 802C4B74 8E05000C */ lw $a1, 0xc($s0)
/* 0E9528 802C4B78 0C0B1EAF */ jal get_variable
/* 0E952C 802C4B7C 8CA50000 */ lw $a1, ($a1)
/* 0E9530 802C4B80 AE020070 */ sw $v0, 0x70($s0)
/* 0E9534 802C4B84 24020001 */ addiu $v0, $zero, 1
/* 0E9538 802C4B88 A2020005 */ sb $v0, 5($s0)
.L802C4B8C:
/* 0E953C 802C4B8C 8E020070 */ lw $v0, 0x70($s0)
/* 0E9540 802C4B90 10400004 */ beqz $v0, .L802C4BA4
/* 0E9544 802C4B94 2442FFFF */ addiu $v0, $v0, -1
/* 0E9548 802C4B98 AE020070 */ sw $v0, 0x70($s0)
/* 0E954C 802C4B9C 080B12EA */ j .L802C4BA8
/* 0E9550 802C4BA0 2C420001 */ sltiu $v0, $v0, 1
.L802C4BA4:
/* 0E9554 802C4BA4 24020002 */ addiu $v0, $zero, 2
.L802C4BA8:
/* 0E9558 802C4BA8 8FBF0014 */ lw $ra, 0x14($sp)
/* 0E955C 802C4BAC 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9560 802C4BB0 03E00008 */ jr $ra
/* 0E9564 802C4BB4 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,44 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_handle_wait_seconds
/* 0E9568 802C4BB8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0E956C 802C4BBC AFB00010 */ sw $s0, 0x10($sp)
/* 0E9570 802C4BC0 0080802D */ daddu $s0, $a0, $zero
/* 0E9574 802C4BC4 AFBF0014 */ sw $ra, 0x14($sp)
/* 0E9578 802C4BC8 82020005 */ lb $v0, 5($s0)
/* 0E957C 802C4BCC 14400011 */ bnez $v0, .L802C4C14
/* 0E9580 802C4BD0 8E05000C */ lw $a1, 0xc($s0)
/* 0E9584 802C4BD4 0C0B210B */ jal get_float_variable
/* 0E9588 802C4BD8 8CA50000 */ lw $a1, ($a1)
/* 0E958C 802C4BDC 3C0141F0 */ lui $at, 0x41f0
/* 0E9590 802C4BE0 44811000 */ mtc1 $at, $f2
/* 0E9594 802C4BE4 00000000 */ nop
/* 0E9598 802C4BE8 46020002 */ mul.s $f0, $f0, $f2
/* 0E959C 802C4BEC 00000000 */ nop
/* 0E95A0 802C4BF0 3C013FE0 */ lui $at, 0x3fe0
/* 0E95A4 802C4BF4 44811800 */ mtc1 $at, $f3
/* 0E95A8 802C4BF8 44801000 */ mtc1 $zero, $f2
/* 0E95AC 802C4BFC 46000021 */ cvt.d.s $f0, $f0
/* 0E95B0 802C4C00 46220000 */ add.d $f0, $f0, $f2
/* 0E95B4 802C4C04 24020001 */ addiu $v0, $zero, 1
/* 0E95B8 802C4C08 A2020005 */ sb $v0, 5($s0)
/* 0E95BC 802C4C0C 4620010D */ trunc.w.d $f4, $f0
/* 0E95C0 802C4C10 E6040070 */ swc1 $f4, 0x70($s0)
.L802C4C14:
/* 0E95C4 802C4C14 8E020070 */ lw $v0, 0x70($s0)
/* 0E95C8 802C4C18 10400004 */ beqz $v0, .L802C4C2C
/* 0E95CC 802C4C1C 2442FFFF */ addiu $v0, $v0, -1
/* 0E95D0 802C4C20 AE020070 */ sw $v0, 0x70($s0)
/* 0E95D4 802C4C24 080B130C */ j .L802C4C30
/* 0E95D8 802C4C28 2C420001 */ sltiu $v0, $v0, 1
.L802C4C2C:
/* 0E95DC 802C4C2C 24020002 */ addiu $v0, $zero, 2
.L802C4C30:
/* 0E95E0 802C4C30 8FBF0014 */ lw $ra, 0x14($sp)
/* 0E95E4 802C4C34 8FB00010 */ lw $s0, 0x10($sp)
/* 0E95E8 802C4C38 03E00008 */ jr $ra
/* 0E95EC 802C4C3C 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -230,7 +230,7 @@ typedef struct ScriptInstance {
/* 0x002 */ u8 currentOpcode;
/* 0x003 */ u8 priority;
/* 0x004 */ u8 groupFlags;
/* 0x005 */ u8 blocked; /* 1 = blocking */
/* 0x005 */ s8 blocked; /* 1 = blocking */
/* 0x006 */ s8 loopDepth; /* how many nested loops we are in, >= 8 hangs forever */
/* 0x007 */ s8 switchDepth; /* how many nested switches we are in, max = 8 */
/* 0x008 */ Bytecode* ptrNextLine;

View File

@ -23,6 +23,7 @@ s32 func_80055464(s32, s32);
s32 func_800554A4(s32, s32);
s32 func_800554E8(s32, s32);
s32 func_800555E4(s32);
void func_8011B7C0(u16, s32, s32);
void func_80137D88(s32, f32);
void func_80137DA4(s32, f32);
void func_80137E10(s32, u8, u8, u8);

View File

@ -178,7 +178,7 @@ INCLUDE_ASM("code_a5dd0_len_114e0", func_8011B660);
void INCLUDE_ASM("code_a5dd0_len_114e0", clone_model, u16 srcModelID, u16 newModelID);
INCLUDE_ASM("code_a5dd0_len_114e0", func_8011B7C0);
void INCLUDE_ASM("code_a5dd0_len_114e0", func_8011B7C0, u16 arg0, s32 arg1, s32 arg2);
INCLUDE_ASM("code_a5dd0_len_114e0", func_8011B950);

View File

@ -47,21 +47,102 @@ ApiStatus si_handle_break_loop(ScriptInstance* script) {
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_wait);
ApiStatus si_handle_wait(ScriptInstance* script) {
Bytecode* ptrReadPos = script->ptrReadPos;
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_wait_seconds);
if (!script->blocked) {
script->functionTemp[0] = get_variable(script, *ptrReadPos);
script->blocked = 1;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_if_equal);
if (script->functionTemp[0]) {
s32 todo = 1; // val can be anything
if (todo) {
script->functionTemp[0] -= 1;
}
return !script->functionTemp[0];
}
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_if_not_equal);
ApiStatus si_handle_wait_seconds(ScriptInstance* script) {
Bytecode* ptrReadPos = script->ptrReadPos;
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_if_less);
if (!script->blocked) {
script->functionTemp[0] = get_float_variable(script, *ptrReadPos) * 30.0f + 0.5;
script->blocked = 1;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_if_greater);
if (script->functionTemp[0]) {
s32 todo = 1; // val can be anything
if (todo) {
script->functionTemp[0] -= 1;
}
return !script->functionTemp[0];
}
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_if_less_equal);
ApiStatus si_handle_if_equal(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_if_greater_equal);
if (get_variable(script, *thisPos++) != get_variable(script, *thisPos++)) {
script->ptrNextLine = si_skip_if(script);
return ApiStatus_DONE2;
}
return ApiStatus_DONE2;
}
ApiStatus si_handle_if_not_equal(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
if (get_variable(script, *thisPos++) == get_variable(script, *thisPos++)) {
script->ptrNextLine = si_skip_if(script);
return ApiStatus_DONE2;
}
return ApiStatus_DONE2;
}
ApiStatus si_handle_if_less(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
if (get_variable(script, *thisPos++) >= get_variable(script, *thisPos++)) {
script->ptrNextLine = si_skip_if(script);
return ApiStatus_DONE2;
}
return ApiStatus_DONE2;
}
ApiStatus si_handle_if_greater(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
if (get_variable(script, *thisPos++) <= get_variable(script, *thisPos++)) {
script->ptrNextLine = si_skip_if(script);
return ApiStatus_DONE2;
}
return ApiStatus_DONE2;
}
ApiStatus si_handle_if_less_equal(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
if (get_variable(script, *thisPos++) > get_variable(script, *thisPos++)) {
script->ptrNextLine = si_skip_if(script);
return ApiStatus_DONE2;
}
return ApiStatus_DONE2;
}
ApiStatus si_handle_if_greater_equal(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
if (get_variable(script, *thisPos++) < get_variable(script, *thisPos++)) {
script->ptrNextLine = si_skip_if(script);
return ApiStatus_DONE2;
}
return ApiStatus_DONE2;
}
ApiStatus si_handle_if_AND(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
@ -180,23 +261,114 @@ ApiStatus si_handle_set_float(ScriptInstance* script) {
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_add);
ApiStatus si_handle_add(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
s32 result = get_variable(script, *thisPos++);
s32 addend = get_variable(script, var);
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_subtract);
result += addend;
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_multiply);
set_variable(script, var, result);
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_divide);
ApiStatus si_handle_subtract(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
s32 result = get_variable(script, *thisPos++);
s32 minuend = get_variable(script, var);
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_mod);
result = minuend - result;
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_addF);
set_variable(script, var, result);
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_subtractF);
ApiStatus si_handle_multiply(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
s32 result = get_variable(script, *thisPos++);
s32 multiplier = get_variable(script, var);
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_multiplyF);
result *= multiplier;
set_variable(script, var, result);
return ApiStatus_DONE2;
}
ApiStatus si_handle_divide(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
s32 result = get_variable(script, *thisPos++);
s32 dividend = get_variable(script, var);
result = dividend / result;
set_variable(script, var, result);
return ApiStatus_DONE2;
}
ApiStatus si_handle_mod(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
s32 result = get_variable(script, *thisPos++) + 0.5;
s32 num = get_variable(script, var) + 0.5;
result = num % result;
set_variable(script, var, result);
return ApiStatus_DONE2;
}
ApiStatus si_handle_addF(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
f32 result = get_float_variable(script, *thisPos++);
f32 addend = get_float_variable(script, var);
result += addend;
set_float_variable(script, var, result);
return ApiStatus_DONE2;
}
ApiStatus si_handle_subtractF(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
f32 result = get_float_variable(script, *thisPos++);
f32 minuend = get_float_variable(script, var);
result = minuend - result;
set_float_variable(script, var, result);
return ApiStatus_DONE2;
}
ApiStatus si_handle_multiplyF(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
f32 result = get_float_variable(script, *thisPos++);
f32 multiplier = get_float_variable(script, var);
result *= multiplier;
set_float_variable(script, var, result);
return ApiStatus_DONE2;
}
ApiStatus si_handle_divideF(ScriptInstance* script) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var = *thisPos++;
f32 result = get_float_variable(script, *thisPos++);
f32 dividend = get_float_variable(script, var);
result = dividend / result;
set_float_variable(script, var, result);
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_e92d0_len_5da0", si_handle_divideF);
ApiStatus si_handle_set_int_buffer_ptr(ScriptInstance* script) {
script->buffer = get_variable(script, *script->ptrReadPos);
@ -561,8 +733,8 @@ INCLUDE_API_ASM("code_e92d0_len_5da0", GetModelIndex);
ApiStatus CloneModel(ScriptInstance* script, s32 isInitialCall) {
Bytecode* thisPos = script->ptrReadPos;
s32 srcModelID = get_variable(script, *thisPos++);
s32 newModelID = get_variable(script, *thisPos++);
Bytecode srcModelID = get_variable(script, *thisPos++);
Bytecode newModelID = get_variable(script, *thisPos++);
clone_model(srcModelID, newModelID);
return ApiStatus_DONE2;
@ -578,7 +750,14 @@ INCLUDE_API_ASM("code_e92d0_len_5da0", EnableTexPanning);
INCLUDE_API_ASM("code_e92d0_len_5da0", EnableModel);
INCLUDE_API_ASM("code_e92d0_len_5da0", SetGroupEnabled);
ApiStatus SetGroupEnabled(ScriptInstance* script, s32 isInitialCall) {
Bytecode* thisPos = script->ptrReadPos;
Bytecode var1 = get_variable(script, *thisPos++);
Bytecode var2 = get_variable(script, *thisPos++);
func_8011B7C0(var1, 2, var2);
return ApiStatus_DONE2;
}
INCLUDE_API_ASM("code_e92d0_len_5da0", SetTexPanOffset);