Merge pull request #11 from JoshW-7/master

Working more on script-related functions
This commit is contained in:
Ethan Roseman 2020-08-14 23:49:01 -04:00 committed by GitHub
commit 31725376a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 227 additions and 470 deletions

View File

@ -1,22 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel does_script_exist_by_ref
/* 0E8B54 802C41A4 0000282D */ daddu $a1, $zero, $zero
/* 0E8B58 802C41A8 3C03802E */ lui $v1, 0x802e
/* 0E8B5C 802C41AC 8C63A890 */ lw $v1, -0x5770($v1)
.L802C41B0:
/* 0E8B60 802C41B0 8C620000 */ lw $v0, ($v1)
/* 0E8B64 802C41B4 14820003 */ bne $a0, $v0, .L802C41C4
/* 0E8B68 802C41B8 24A50001 */ addiu $a1, $a1, 1
/* 0E8B6C 802C41BC 03E00008 */ jr $ra
/* 0E8B70 802C41C0 24020001 */ addiu $v0, $zero, 1
.L802C41C4:
/* 0E8B74 802C41C4 28A20080 */ slti $v0, $a1, 0x80
/* 0E8B78 802C41C8 1440FFF9 */ bnez $v0, .L802C41B0
/* 0E8B7C 802C41CC 24630004 */ addiu $v1, $v1, 4
/* 0E8B80 802C41D0 03E00008 */ jr $ra
/* 0E8B84 802C41D4 0000102D */ daddu $v0, $zero, $zero

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel resume_all_group
/* 0E8FF8 802C4648 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E8FFC 802C464C AFB10014 */ sw $s1, 0x14($sp)
/* 0E9000 802C4650 0080882D */ daddu $s1, $a0, $zero
/* 0E9004 802C4654 AFB00010 */ sw $s0, 0x10($sp)
/* 0E9008 802C4658 0000802D */ daddu $s0, $zero, $zero
/* 0E900C 802C465C AFBF0018 */ sw $ra, 0x18($sp)
.L802C4660:
/* 0E9010 802C4660 3C03802E */ lui $v1, 0x802e
/* 0E9014 802C4664 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E9018 802C4668 00101080 */ sll $v0, $s0, 2
/* 0E901C 802C466C 00431021 */ addu $v0, $v0, $v1
/* 0E9020 802C4670 8C440000 */ lw $a0, ($v0)
/* 0E9024 802C4674 50800004 */ beql $a0, $zero, .L802C4688
/* 0E9028 802C4678 26100001 */ addiu $s0, $s0, 1
/* 0E902C 802C467C 0C0B10DF */ jal resume_group_script
/* 0E9030 802C4680 0220282D */ daddu $a1, $s1, $zero
/* 0E9034 802C4684 26100001 */ addiu $s0, $s0, 1
.L802C4688:
/* 0E9038 802C4688 2A020080 */ slti $v0, $s0, 0x80
/* 0E903C 802C468C 1440FFF4 */ bnez $v0, .L802C4660
/* 0E9040 802C4690 00000000 */ nop
/* 0E9044 802C4694 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E9048 802C4698 8FB10014 */ lw $s1, 0x14($sp)
/* 0E904C 802C469C 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9050 802C46A0 03E00008 */ jr $ra
/* 0E9054 802C46A4 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,35 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel resume_all_script
/* 0E8E3C 802C448C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E8E40 802C4490 AFB10014 */ sw $s1, 0x14($sp)
/* 0E8E44 802C4494 0080882D */ daddu $s1, $a0, $zero
/* 0E8E48 802C4498 AFB00010 */ sw $s0, 0x10($sp)
/* 0E8E4C 802C449C 0000802D */ daddu $s0, $zero, $zero
/* 0E8E50 802C44A0 AFBF0018 */ sw $ra, 0x18($sp)
.L802C44A4:
/* 0E8E54 802C44A4 3C03802E */ lui $v1, 0x802e
/* 0E8E58 802C44A8 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E8E5C 802C44AC 00101080 */ sll $v0, $s0, 2
/* 0E8E60 802C44B0 00431021 */ addu $v0, $v0, $v1
/* 0E8E64 802C44B4 8C440000 */ lw $a0, ($v0)
/* 0E8E68 802C44B8 50800007 */ beql $a0, $zero, .L802C44D8
/* 0E8E6C 802C44BC 26100001 */ addiu $s0, $s0, 1
/* 0E8E70 802C44C0 8C820144 */ lw $v0, 0x144($a0)
/* 0E8E74 802C44C4 54510004 */ bnel $v0, $s1, .L802C44D8
/* 0E8E78 802C44C8 26100001 */ addiu $s0, $s0, 1
/* 0E8E7C 802C44CC 0C0B10DF */ jal resume_group_script
/* 0E8E80 802C44D0 240500EF */ addiu $a1, $zero, 0xef
/* 0E8E84 802C44D4 26100001 */ addiu $s0, $s0, 1
.L802C44D8:
/* 0E8E88 802C44D8 2A020080 */ slti $v0, $s0, 0x80
/* 0E8E8C 802C44DC 1440FFF1 */ bnez $v0, .L802C44A4
/* 0E8E90 802C44E0 00000000 */ nop
/* 0E8E94 802C44E4 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E8E98 802C44E8 8FB10014 */ lw $s1, 0x14($sp)
/* 0E8E9C 802C44EC 8FB00010 */ lw $s0, 0x10($sp)
/* 0E8EA0 802C44F0 03E00008 */ jr $ra
/* 0E8EA4 802C44F4 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,37 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel resume_group_others
/* 0E90CC 802C471C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E90D0 802C4720 AFB10014 */ sw $s1, 0x14($sp)
/* 0E90D4 802C4724 0080882D */ daddu $s1, $a0, $zero
/* 0E90D8 802C4728 AFB20018 */ sw $s2, 0x18($sp)
/* 0E90DC 802C472C 00A0902D */ daddu $s2, $a1, $zero
/* 0E90E0 802C4730 AFB00010 */ sw $s0, 0x10($sp)
/* 0E90E4 802C4734 0000802D */ daddu $s0, $zero, $zero
/* 0E90E8 802C4738 AFBF001C */ sw $ra, 0x1c($sp)
.L802C473C:
/* 0E90EC 802C473C 3C03802E */ lui $v1, 0x802e
/* 0E90F0 802C4740 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E90F4 802C4744 00101080 */ sll $v0, $s0, 2
/* 0E90F8 802C4748 00431021 */ addu $v0, $v0, $v1
/* 0E90FC 802C474C 8C440000 */ lw $a0, ($v0)
/* 0E9100 802C4750 50800006 */ beql $a0, $zero, .L802C476C
/* 0E9104 802C4754 26100001 */ addiu $s0, $s0, 1
/* 0E9108 802C4758 50910004 */ beql $a0, $s1, .L802C476C
/* 0E910C 802C475C 26100001 */ addiu $s0, $s0, 1
/* 0E9110 802C4760 0C0B10DF */ jal resume_group_script
/* 0E9114 802C4764 0240282D */ daddu $a1, $s2, $zero
/* 0E9118 802C4768 26100001 */ addiu $s0, $s0, 1
.L802C476C:
/* 0E911C 802C476C 2A020080 */ slti $v0, $s0, 0x80
/* 0E9120 802C4770 1440FFF2 */ bnez $v0, .L802C473C
/* 0E9124 802C4774 00000000 */ nop
/* 0E9128 802C4778 8FBF001C */ lw $ra, 0x1c($sp)
/* 0E912C 802C477C 8FB20018 */ lw $s2, 0x18($sp)
/* 0E9130 802C4780 8FB10014 */ lw $s1, 0x14($sp)
/* 0E9134 802C4784 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9138 802C4788 03E00008 */ jr $ra
/* 0E913C 802C478C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,51 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel resume_group_script
/* 0E8D2C 802C437C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E8D30 802C4380 AFB10014 */ sw $s1, 0x14($sp)
/* 0E8D34 802C4384 0080882D */ daddu $s1, $a0, $zero
/* 0E8D38 802C4388 AFBF001C */ sw $ra, 0x1c($sp)
/* 0E8D3C 802C438C AFB20018 */ sw $s2, 0x18($sp)
/* 0E8D40 802C4390 AFB00010 */ sw $s0, 0x10($sp)
/* 0E8D44 802C4394 8E240068 */ lw $a0, 0x68($s1)
/* 0E8D48 802C4398 10800003 */ beqz $a0, .L802C43A8
/* 0E8D4C 802C439C 00A0902D */ daddu $s2, $a1, $zero
/* 0E8D50 802C43A0 0C0B10DF */ jal resume_group_script
/* 0E8D54 802C43A4 00000000 */ nop
.L802C43A8:
/* 0E8D58 802C43A8 0000802D */ daddu $s0, $zero, $zero
.L802C43AC:
/* 0E8D5C 802C43AC 3C03802E */ lui $v1, 0x802e
/* 0E8D60 802C43B0 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E8D64 802C43B4 00101080 */ sll $v0, $s0, 2
/* 0E8D68 802C43B8 00431021 */ addu $v0, $v0, $v1
/* 0E8D6C 802C43BC 8C440000 */ lw $a0, ($v0)
/* 0E8D70 802C43C0 50800007 */ beql $a0, $zero, .L802C43E0
/* 0E8D74 802C43C4 26100001 */ addiu $s0, $s0, 1
/* 0E8D78 802C43C8 8C82006C */ lw $v0, 0x6c($a0)
/* 0E8D7C 802C43CC 54510004 */ bnel $v0, $s1, .L802C43E0
/* 0E8D80 802C43D0 26100001 */ addiu $s0, $s0, 1
/* 0E8D84 802C43D4 0C0B10B6 */ jal suspend_group_script
/* 0E8D88 802C43D8 0240282D */ daddu $a1, $s2, $zero
/* 0E8D8C 802C43DC 26100001 */ addiu $s0, $s0, 1
.L802C43E0:
/* 0E8D90 802C43E0 2A020080 */ slti $v0, $s0, 0x80
/* 0E8D94 802C43E4 1440FFF1 */ bnez $v0, .L802C43AC
/* 0E8D98 802C43E8 00000000 */ nop
/* 0E8D9C 802C43EC 92220004 */ lbu $v0, 4($s1)
/* 0E8DA0 802C43F0 00521024 */ and $v0, $v0, $s2
/* 0E8DA4 802C43F4 10400004 */ beqz $v0, .L802C4408
/* 0E8DA8 802C43F8 00000000 */ nop
/* 0E8DAC 802C43FC 92220000 */ lbu $v0, ($s1)
/* 0E8DB0 802C4400 304200FD */ andi $v0, $v0, 0xfd
/* 0E8DB4 802C4404 A2220000 */ sb $v0, ($s1)
.L802C4408:
/* 0E8DB8 802C4408 8FBF001C */ lw $ra, 0x1c($sp)
/* 0E8DBC 802C440C 8FB20018 */ lw $s2, 0x18($sp)
/* 0E8DC0 802C4410 8FB10014 */ lw $s1, 0x14($sp)
/* 0E8DC4 802C4414 8FB00010 */ lw $s0, 0x10($sp)
/* 0E8DC8 802C4418 03E00008 */ jr $ra
/* 0E8DCC 802C441C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,38 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel resume_group_script_index
/* 0E8F20 802C4570 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E8F24 802C4574 AFB10014 */ sw $s1, 0x14($sp)
/* 0E8F28 802C4578 0080882D */ daddu $s1, $a0, $zero
/* 0E8F2C 802C457C AFB20018 */ sw $s2, 0x18($sp)
/* 0E8F30 802C4580 00A0902D */ daddu $s2, $a1, $zero
/* 0E8F34 802C4584 AFB00010 */ sw $s0, 0x10($sp)
/* 0E8F38 802C4588 0000802D */ daddu $s0, $zero, $zero
/* 0E8F3C 802C458C AFBF001C */ sw $ra, 0x1c($sp)
.L802C4590:
/* 0E8F40 802C4590 3C03802E */ lui $v1, 0x802e
/* 0E8F44 802C4594 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E8F48 802C4598 00101080 */ sll $v0, $s0, 2
/* 0E8F4C 802C459C 00431021 */ addu $v0, $v0, $v1
/* 0E8F50 802C45A0 8C440000 */ lw $a0, ($v0)
/* 0E8F54 802C45A4 50800007 */ beql $a0, $zero, .L802C45C4
/* 0E8F58 802C45A8 26100001 */ addiu $s0, $s0, 1
/* 0E8F5C 802C45AC 8C820144 */ lw $v0, 0x144($a0)
/* 0E8F60 802C45B0 54510004 */ bnel $v0, $s1, .L802C45C4
/* 0E8F64 802C45B4 26100001 */ addiu $s0, $s0, 1
/* 0E8F68 802C45B8 0C0B10DF */ jal resume_group_script
/* 0E8F6C 802C45BC 0240282D */ daddu $a1, $s2, $zero
/* 0E8F70 802C45C0 26100001 */ addiu $s0, $s0, 1
.L802C45C4:
/* 0E8F74 802C45C4 2A020080 */ slti $v0, $s0, 0x80
/* 0E8F78 802C45C8 1440FFF1 */ bnez $v0, .L802C4590
/* 0E8F7C 802C45CC 00000000 */ nop
/* 0E8F80 802C45D0 8FBF001C */ lw $ra, 0x1c($sp)
/* 0E8F84 802C45D4 8FB20018 */ lw $s2, 0x18($sp)
/* 0E8F88 802C45D8 8FB10014 */ lw $s1, 0x14($sp)
/* 0E8F8C 802C45DC 8FB00010 */ lw $s0, 0x10($sp)
/* 0E8F90 802C45E0 03E00008 */ jr $ra
/* 0E8F94 802C45E4 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,47 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel set_script_flags
/* 0E9198 802C47E8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E919C 802C47EC AFB10014 */ sw $s1, 0x14($sp)
/* 0E91A0 802C47F0 0080882D */ daddu $s1, $a0, $zero
/* 0E91A4 802C47F4 AFB20018 */ sw $s2, 0x18($sp)
/* 0E91A8 802C47F8 00A0902D */ daddu $s2, $a1, $zero
/* 0E91AC 802C47FC AFBF001C */ sw $ra, 0x1c($sp)
/* 0E91B0 802C4800 AFB00010 */ sw $s0, 0x10($sp)
/* 0E91B4 802C4804 92220000 */ lbu $v0, ($s1)
/* 0E91B8 802C4808 8E240068 */ lw $a0, 0x68($s1)
/* 0E91BC 802C480C 00521025 */ or $v0, $v0, $s2
/* 0E91C0 802C4810 10800003 */ beqz $a0, .L802C4820
/* 0E91C4 802C4814 A2220000 */ sb $v0, ($s1)
/* 0E91C8 802C4818 0C0B11FA */ jal set_script_flags
/* 0E91CC 802C481C 00000000 */ nop
.L802C4820:
/* 0E91D0 802C4820 0000802D */ daddu $s0, $zero, $zero
.L802C4824:
/* 0E91D4 802C4824 3C03802E */ lui $v1, 0x802e
/* 0E91D8 802C4828 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E91DC 802C482C 00101080 */ sll $v0, $s0, 2
/* 0E91E0 802C4830 00431021 */ addu $v0, $v0, $v1
/* 0E91E4 802C4834 8C420000 */ lw $v0, ($v0)
/* 0E91E8 802C4838 50400008 */ beql $v0, $zero, .L802C485C
/* 0E91EC 802C483C 26100001 */ addiu $s0, $s0, 1
/* 0E91F0 802C4840 8C42006C */ lw $v0, 0x6c($v0)
/* 0E91F4 802C4844 54510005 */ bnel $v0, $s1, .L802C485C
/* 0E91F8 802C4848 26100001 */ addiu $s0, $s0, 1
/* 0E91FC 802C484C 8E24006C */ lw $a0, 0x6c($s1)
/* 0E9200 802C4850 0C0B11FA */ jal set_script_flags
/* 0E9204 802C4854 0240282D */ daddu $a1, $s2, $zero
/* 0E9208 802C4858 26100001 */ addiu $s0, $s0, 1
.L802C485C:
/* 0E920C 802C485C 2A020080 */ slti $v0, $s0, 0x80
/* 0E9210 802C4860 1440FFF0 */ bnez $v0, .L802C4824
/* 0E9214 802C4864 00000000 */ nop
/* 0E9218 802C4868 8FBF001C */ lw $ra, 0x1c($sp)
/* 0E921C 802C486C 8FB20018 */ lw $s2, 0x18($sp)
/* 0E9220 802C4870 8FB10014 */ lw $s1, 0x14($sp)
/* 0E9224 802C4874 8FB00010 */ lw $s0, 0x10($sp)
/* 0E9228 802C4878 03E00008 */ jr $ra
/* 0E922C 802C487C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,8 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel set_script_group
/* 0E8BC8 802C4218 03E00008 */ jr $ra
/* 0E8BCC 802C421C A0850004 */ sb $a1, 4($a0)

View File

@ -1,8 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel set_script_priority
/* 0E8B88 802C41D8 03E00008 */ jr $ra
/* 0E8B8C 802C41DC A0850003 */ sb $a1, 3($a0)

View File

@ -1,14 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel set_script_timescale
/* 0E8B90 802C41E0 3C01802E */ lui $at, 0x802e
/* 0E8B94 802C41E4 C4209CA8 */ lwc1 $f0, -0x6358($at)
/* 0E8B98 802C41E8 44851000 */ mtc1 $a1, $f2
/* 0E8B9C 802C41EC 00000000 */ nop
/* 0E8BA0 802C41F0 46001002 */ mul.s $f0, $f2, $f0
/* 0E8BA4 802C41F4 00000000 */ nop
/* 0E8BA8 802C41F8 03E00008 */ jr $ra
/* 0E8BAC 802C41FC E4800150 */ swc1 $f0, 0x150($a0)

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel suspend_all_group
/* 0E8F98 802C45E8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E8F9C 802C45EC AFB10014 */ sw $s1, 0x14($sp)
/* 0E8FA0 802C45F0 0080882D */ daddu $s1, $a0, $zero
/* 0E8FA4 802C45F4 AFB00010 */ sw $s0, 0x10($sp)
/* 0E8FA8 802C45F8 0000802D */ daddu $s0, $zero, $zero
/* 0E8FAC 802C45FC AFBF0018 */ sw $ra, 0x18($sp)
.L802C4600:
/* 0E8FB0 802C4600 3C03802E */ lui $v1, 0x802e
/* 0E8FB4 802C4604 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E8FB8 802C4608 00101080 */ sll $v0, $s0, 2
/* 0E8FBC 802C460C 00431021 */ addu $v0, $v0, $v1
/* 0E8FC0 802C4610 8C440000 */ lw $a0, ($v0)
/* 0E8FC4 802C4614 50800004 */ beql $a0, $zero, .L802C4628
/* 0E8FC8 802C4618 26100001 */ addiu $s0, $s0, 1
/* 0E8FCC 802C461C 0C0B10B6 */ jal suspend_group_script
/* 0E8FD0 802C4620 0220282D */ daddu $a1, $s1, $zero
/* 0E8FD4 802C4624 26100001 */ addiu $s0, $s0, 1
.L802C4628:
/* 0E8FD8 802C4628 2A020080 */ slti $v0, $s0, 0x80
/* 0E8FDC 802C462C 1440FFF4 */ bnez $v0, .L802C4600
/* 0E8FE0 802C4630 00000000 */ nop
/* 0E8FE4 802C4634 8FBF0018 */ lw $ra, 0x18($sp)
/* 0E8FE8 802C4638 8FB10014 */ lw $s1, 0x14($sp)
/* 0E8FEC 802C463C 8FB00010 */ lw $s0, 0x10($sp)
/* 0E8FF0 802C4640 03E00008 */ jr $ra
/* 0E8FF4 802C4644 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,37 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel suspend_group_others
/* 0E9058 802C46A8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E905C 802C46AC AFB10014 */ sw $s1, 0x14($sp)
/* 0E9060 802C46B0 0080882D */ daddu $s1, $a0, $zero
/* 0E9064 802C46B4 AFB20018 */ sw $s2, 0x18($sp)
/* 0E9068 802C46B8 00A0902D */ daddu $s2, $a1, $zero
/* 0E906C 802C46BC AFB00010 */ sw $s0, 0x10($sp)
/* 0E9070 802C46C0 0000802D */ daddu $s0, $zero, $zero
/* 0E9074 802C46C4 AFBF001C */ sw $ra, 0x1c($sp)
.L802C46C8:
/* 0E9078 802C46C8 3C03802E */ lui $v1, 0x802e
/* 0E907C 802C46CC 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E9080 802C46D0 00101080 */ sll $v0, $s0, 2
/* 0E9084 802C46D4 00431021 */ addu $v0, $v0, $v1
/* 0E9088 802C46D8 8C440000 */ lw $a0, ($v0)
/* 0E908C 802C46DC 50800006 */ beql $a0, $zero, .L802C46F8
/* 0E9090 802C46E0 26100001 */ addiu $s0, $s0, 1
/* 0E9094 802C46E4 50910004 */ beql $a0, $s1, .L802C46F8
/* 0E9098 802C46E8 26100001 */ addiu $s0, $s0, 1
/* 0E909C 802C46EC 0C0B10B6 */ jal suspend_group_script
/* 0E90A0 802C46F0 0240282D */ daddu $a1, $s2, $zero
/* 0E90A4 802C46F4 26100001 */ addiu $s0, $s0, 1
.L802C46F8:
/* 0E90A8 802C46F8 2A020080 */ slti $v0, $s0, 0x80
/* 0E90AC 802C46FC 1440FFF2 */ bnez $v0, .L802C46C8
/* 0E90B0 802C4700 00000000 */ nop
/* 0E90B4 802C4704 8FBF001C */ lw $ra, 0x1c($sp)
/* 0E90B8 802C4708 8FB20018 */ lw $s2, 0x18($sp)
/* 0E90BC 802C470C 8FB10014 */ lw $s1, 0x14($sp)
/* 0E90C0 802C4710 8FB00010 */ lw $s0, 0x10($sp)
/* 0E90C4 802C4714 03E00008 */ jr $ra
/* 0E90C8 802C4718 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,51 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel suspend_group_script
/* 0E8C88 802C42D8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E8C8C 802C42DC AFB10014 */ sw $s1, 0x14($sp)
/* 0E8C90 802C42E0 0080882D */ daddu $s1, $a0, $zero
/* 0E8C94 802C42E4 AFBF001C */ sw $ra, 0x1c($sp)
/* 0E8C98 802C42E8 AFB20018 */ sw $s2, 0x18($sp)
/* 0E8C9C 802C42EC AFB00010 */ sw $s0, 0x10($sp)
/* 0E8CA0 802C42F0 8E240068 */ lw $a0, 0x68($s1)
/* 0E8CA4 802C42F4 10800003 */ beqz $a0, .L802C4304
/* 0E8CA8 802C42F8 00A0902D */ daddu $s2, $a1, $zero
/* 0E8CAC 802C42FC 0C0B10B6 */ jal suspend_group_script
/* 0E8CB0 802C4300 00000000 */ nop
.L802C4304:
/* 0E8CB4 802C4304 0000802D */ daddu $s0, $zero, $zero
.L802C4308:
/* 0E8CB8 802C4308 3C03802E */ lui $v1, 0x802e
/* 0E8CBC 802C430C 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E8CC0 802C4310 00101080 */ sll $v0, $s0, 2
/* 0E8CC4 802C4314 00431021 */ addu $v0, $v0, $v1
/* 0E8CC8 802C4318 8C440000 */ lw $a0, ($v0)
/* 0E8CCC 802C431C 50800007 */ beql $a0, $zero, .L802C433C
/* 0E8CD0 802C4320 26100001 */ addiu $s0, $s0, 1
/* 0E8CD4 802C4324 8C82006C */ lw $v0, 0x6c($a0)
/* 0E8CD8 802C4328 54510004 */ bnel $v0, $s1, .L802C433C
/* 0E8CDC 802C432C 26100001 */ addiu $s0, $s0, 1
/* 0E8CE0 802C4330 0C0B10B6 */ jal suspend_group_script
/* 0E8CE4 802C4334 0240282D */ daddu $a1, $s2, $zero
/* 0E8CE8 802C4338 26100001 */ addiu $s0, $s0, 1
.L802C433C:
/* 0E8CEC 802C433C 2A020080 */ slti $v0, $s0, 0x80
/* 0E8CF0 802C4340 1440FFF1 */ bnez $v0, .L802C4308
/* 0E8CF4 802C4344 00000000 */ nop
/* 0E8CF8 802C4348 92220004 */ lbu $v0, 4($s1)
/* 0E8CFC 802C434C 00521024 */ and $v0, $v0, $s2
/* 0E8D00 802C4350 10400004 */ beqz $v0, .L802C4364
/* 0E8D04 802C4354 00000000 */ nop
/* 0E8D08 802C4358 92220000 */ lbu $v0, ($s1)
/* 0E8D0C 802C435C 34420002 */ ori $v0, $v0, 2
/* 0E8D10 802C4360 A2220000 */ sb $v0, ($s1)
.L802C4364:
/* 0E8D14 802C4364 8FBF001C */ lw $ra, 0x1c($sp)
/* 0E8D18 802C4368 8FB20018 */ lw $s2, 0x18($sp)
/* 0E8D1C 802C436C 8FB10014 */ lw $s1, 0x14($sp)
/* 0E8D20 802C4370 8FB00010 */ lw $s0, 0x10($sp)
/* 0E8D24 802C4374 03E00008 */ jr $ra
/* 0E8D28 802C4378 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,38 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel suspend_group_script_index
/* 0E8EA8 802C44F8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0E8EAC 802C44FC AFB10014 */ sw $s1, 0x14($sp)
/* 0E8EB0 802C4500 0080882D */ daddu $s1, $a0, $zero
/* 0E8EB4 802C4504 AFB20018 */ sw $s2, 0x18($sp)
/* 0E8EB8 802C4508 00A0902D */ daddu $s2, $a1, $zero
/* 0E8EBC 802C450C AFB00010 */ sw $s0, 0x10($sp)
/* 0E8EC0 802C4510 0000802D */ daddu $s0, $zero, $zero
/* 0E8EC4 802C4514 AFBF001C */ sw $ra, 0x1c($sp)
.L802C4518:
/* 0E8EC8 802C4518 3C03802E */ lui $v1, 0x802e
/* 0E8ECC 802C451C 8C63A890 */ lw $v1, -0x5770($v1)
/* 0E8ED0 802C4520 00101080 */ sll $v0, $s0, 2
/* 0E8ED4 802C4524 00431021 */ addu $v0, $v0, $v1
/* 0E8ED8 802C4528 8C440000 */ lw $a0, ($v0)
/* 0E8EDC 802C452C 50800007 */ beql $a0, $zero, .L802C454C
/* 0E8EE0 802C4530 26100001 */ addiu $s0, $s0, 1
/* 0E8EE4 802C4534 8C820144 */ lw $v0, 0x144($a0)
/* 0E8EE8 802C4538 54510004 */ bnel $v0, $s1, .L802C454C
/* 0E8EEC 802C453C 26100001 */ addiu $s0, $s0, 1
/* 0E8EF0 802C4540 0C0B10B6 */ jal suspend_group_script
/* 0E8EF4 802C4544 0240282D */ daddu $a1, $s2, $zero
/* 0E8EF8 802C4548 26100001 */ addiu $s0, $s0, 1
.L802C454C:
/* 0E8EFC 802C454C 2A020080 */ slti $v0, $s0, 0x80
/* 0E8F00 802C4550 1440FFF1 */ bnez $v0, .L802C4518
/* 0E8F04 802C4554 00000000 */ nop
/* 0E8F08 802C4558 8FBF001C */ lw $ra, 0x1c($sp)
/* 0E8F0C 802C455C 8FB20018 */ lw $s2, 0x18($sp)
/* 0E8F10 802C4560 8FB10014 */ lw $s1, 0x14($sp)
/* 0E8F14 802C4564 8FB00010 */ lw $s0, 0x10($sp)
/* 0E8F18 802C4568 03E00008 */ jr $ra
/* 0E8F1C 802C456C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -317,7 +317,7 @@ typedef struct ui_status {
/* 0x36 */ s16 drawPosY; /* modulated as it appears, goes away */
/* 0x38 */ s16 showTimer;
/* 0x3A */ s8 hidden;
/* 0x3B */ s8 unk_3B[2];
/* 0x3B */ s8 unk_3B[
/* 0x3D */ u8 displayHP;
/* 0x3E */ u8 displayFP;
/* 0x3F */ char unk_3F;

View File

@ -15,6 +15,8 @@ extern script_context* gWorldScriptList[128];
extern script_context* gBattleScriptList[128];
extern script_context** gCurrentScriptListPtr[128];
extern f32 gGlobalTimeSpace;
extern s8 D_800A0900;
extern s16* D_80151328;
extern s16 D_8010CD10;

View File

@ -19,6 +19,28 @@ INCLUDE_ASM(code_e79b0_len_1920, start_child_script);
INCLUDE_ASM(code_e79b0_len_1920, func_802C39F8);
INCLUDE_ASM(code_e79b0_len_1920, restart_script);
// TODO: Find out why things break when script->timeScale = 1 goes after the previous lines
/*
script_context* restart_script(script_context* script) {
script->loopDepth = -1;
script->switchDepth = -1;
script->currentOpcode = 0;
script->frameCounter = 0;
script->frameCounter = 0;
script->unk_158 = 0;
//script->timeScale = 1;
script->ptrNextLine = script->ptrFirstLine;
script->ptrCurrentLine = script->ptrFirstLine;
script->timeScale = 1.0f;
script->timeScale = gGlobalTimeSpace;
find_script_labels();
func_802C3390(script);
return script;
}
*/
INCLUDE_ASM(code_e79b0_len_1920, update_scripts);
@ -64,41 +86,188 @@ s32 does_script_exist(s32 id) {
return 0;
}
INCLUDE_ASM(code_e79b0_len_1920, does_script_exist_by_ref);
s32 does_script_exist_by_ref(script_context* script) {
s32 i;
INCLUDE_ASM(code_e79b0_len_1920, set_script_priority);
for(i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
if(script == (*gCurrentScriptListPtr)[i]) {
return 1;
}
}
return 0;
}
void INCLUDE_ASM(code_e79b0_len_1920, set_script_timescale, script_context* script, f32 timescale);
void set_script_priority(script_context* script, s8 priority) {
script->priority = priority;
}
void set_script_timescale(script_context* script, f32 timeScale) {
script->timeScale = timeScale * gGlobalTimeSpace;
}
INCLUDE_ASM(code_e79b0_len_1920, set_global_timespace);
/*
// TODO: figure out why compiler/assembler isn't putting SWC1 in delay slot
void set_global_timespace(f32 timeScale) {
//gGlobalTimeSpace = timeScale;
}
*/
INCLUDE_ASM(code_e79b0_len_1920, get_global_timespace);
/*
// TODO: figure out why compiler/assembler isn't putting LWC1 in delay slot
f32 get_global_timespace(void) {
//return gGlobalTimeSpace;
}
*/
INCLUDE_ASM(code_e79b0_len_1920, set_script_group);
void set_script_group(script_context* script, s8 groupFlags) {
script->groupFlags = groupFlags;
}
INCLUDE_ASM(code_e79b0_len_1920, bind_trigger);
INCLUDE_ASM(code_e79b0_len_1920, bind_trigger_1);
INCLUDE_ASM(code_e79b0_len_1920, suspend_group_script);
void suspend_group_script(script_context* script, s32 groupFlags) {
int i;
script_context* scriptContextPtr;
script_context* childScript = script->childScript;
INCLUDE_ASM(code_e79b0_len_1920, resume_group_script);
if (childScript != NULL) {
suspend_group_script(childScript, groupFlags);
}
INCLUDE_ASM(code_e79b0_len_1920, suspend_all_script);
for(i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
suspend_group_script(scriptContextPtr, groupFlags);
}
}
INCLUDE_ASM(code_e79b0_len_1920, resume_all_script);
if ((script->groupFlags & groupFlags) != 0) {
script->state |= 0x2;
}
}
INCLUDE_ASM(code_e79b0_len_1920, suspend_group_script_index);
void resume_group_script(script_context* script, s32 groupFlags) {
int i;
script_context* scriptContextPtr;
script_context* childScript = script->childScript;
INCLUDE_ASM(code_e79b0_len_1920, resume_group_script_index);
if (childScript != NULL) {
resume_group_script(childScript, groupFlags);
}
INCLUDE_ASM(code_e79b0_len_1920, suspend_all_group);
for(i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
suspend_group_script(scriptContextPtr, groupFlags);
}
}
INCLUDE_ASM(code_e79b0_len_1920, resume_all_group);
if ((script->groupFlags & groupFlags) != 0) {
script->state &= 0xFD;
}
}
INCLUDE_ASM(code_e79b0_len_1920, suspend_group_others);
s32 suspend_all_script(s32 id) {
s32 i;
script_context* scriptContextPtr;
INCLUDE_ASM(code_e79b0_len_1920, resume_group_others);
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->uniqueID == id) {
suspend_group_script(scriptContextPtr, 0xEF);
}
}
}
s32 resume_all_script(s32 id) {
s32 i;
script_context* scriptContextPtr;
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->uniqueID == id) {
resume_group_script(scriptContextPtr, 0xEF);
}
}
}
void suspend_group_script_index(s32 id, s32 groupFlags) {
s32 i;
script_context* scriptContextPtr;
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->uniqueID == id) {
suspend_group_script(scriptContextPtr, groupFlags);
}
}
}
void resume_group_script_index(s32 id, s32 groupFlags) {
s32 i;
script_context* scriptContextPtr;
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->uniqueID == id) {
resume_group_script(scriptContextPtr, groupFlags);
}
}
}
s32 suspend_all_group(s32 groupFlags) {
s32 i;
script_context* scriptContextPtr;
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL) {
suspend_group_script(scriptContextPtr, groupFlags);
}
}
}
s32 resume_all_group(s32 groupFlags) {
s32 i;
script_context* scriptContextPtr;
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL) {
resume_group_script(scriptContextPtr, groupFlags);
}
}
}
void suspend_group_others(s32 script, s32 groupFlags) {
s32 i;
script_context* scriptContextPtr;
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr != script) {
suspend_group_script(scriptContextPtr, groupFlags);
}
}
}
void resume_group_others(s32 script, s32 groupFlags) {
s32 i;
script_context* scriptContextPtr;
for (i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr != script) {
resume_group_script(scriptContextPtr, groupFlags);
}
}
}
script_context* get_script_by_index(s32 index) {
return (*gCurrentScriptListPtr)[index];
@ -119,7 +288,42 @@ script_context* get_script_by_id(s32 id) {
return 0;
}
void set_script_flags(script_context* script, s32 flags) {
int i;
script_context* scriptContextPtr;
script_context* childScript = script->childScript;
INCLUDE_ASM(code_e79b0_len_1920, set_script_flags);
script->state |= flags;
if (childScript != NULL) {
set_script_flags(childScript, flags);
}
for(i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
set_script_flags(script->parentScript, flags);
}
}
}
INCLUDE_ASM(code_e79b0_len_1920, clear_script_flags);
/*
// TODO: Really close but some weirdness is going on
void clear_script_flags(script_context* script, s32 flags) {
int i;
script_context* scriptContextPtr;
script_context* childScript = script->childScript;
script->state &= ~flags;
if (childScript != NULL) {
clear_script_flags(childScript, flags);
}
for(i = 0; i < ARRAY_COUNT(gCurrentScriptListPtr); i++) {
scriptContextPtr = (*gCurrentScriptListPtr)[i];
if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
clear_script_flags(script->parentScript, flags);
}
}
}
*/

View File

@ -6,6 +6,7 @@ gItemTable = 0x800878E0;
gWorldScriptList = 0x802DA490;
gBattleScriptList = 0x802DA690;
gCurrentScriptListPtr = 0x802DA890;
gGlobalTimeSpace = 0x802D9CA8;
D_80147574 = 0x80147574;
gMapTransitionAlpha = 0x800A0940;