From f1ee257cdf79f960c53dca29f3418e91cd55bf02 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Sat, 28 Nov 2020 19:08:38 -0500 Subject: [PATCH] more --- asm/nonmatchings/code_197F40/HPBarToCurrent.s | 89 --------- asm/nonmatchings/code_197F40/HPBarToHome.s | 89 --------- asm/nonmatchings/code_197F40/func_8026D51C.s | 39 ---- asm/nonmatchings/code_197F40/func_8026D5A4.s | 55 ----- asm/nonmatchings/code_197F40/func_8026D8EC.s | 26 --- asm/nonmatchings/code_197F40/func_8026D940.s | 91 --------- asm/nonmatchings/code_197F40/func_8026DA94.s | 57 ------ asm/nonmatchings/code_197F40/func_8026DEF0.s | 43 ---- asm/nonmatchings/code_197F40/func_8026DF88.s | 43 ---- include/common_structs.h | 26 ++- src/code_197F40.c | 188 +++++++++++++++++- 11 files changed, 197 insertions(+), 549 deletions(-) delete mode 100644 asm/nonmatchings/code_197F40/HPBarToCurrent.s delete mode 100644 asm/nonmatchings/code_197F40/HPBarToHome.s delete mode 100644 asm/nonmatchings/code_197F40/func_8026D51C.s delete mode 100644 asm/nonmatchings/code_197F40/func_8026D5A4.s delete mode 100644 asm/nonmatchings/code_197F40/func_8026D8EC.s delete mode 100644 asm/nonmatchings/code_197F40/func_8026D940.s delete mode 100644 asm/nonmatchings/code_197F40/func_8026DA94.s delete mode 100644 asm/nonmatchings/code_197F40/func_8026DEF0.s delete mode 100644 asm/nonmatchings/code_197F40/func_8026DF88.s diff --git a/asm/nonmatchings/code_197F40/HPBarToCurrent.s b/asm/nonmatchings/code_197F40/HPBarToCurrent.s deleted file mode 100644 index 088c7a846d..0000000000 --- a/asm/nonmatchings/code_197F40/HPBarToCurrent.s +++ /dev/null @@ -1,89 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel HPBarToCurrent -/* 19C088 8026D7A8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19C08C 8026D7AC AFB00010 */ sw $s0, 0x10($sp) -/* 19C090 8026D7B0 0080802D */ daddu $s0, $a0, $zero -/* 19C094 8026D7B4 AFBF0014 */ sw $ra, 0x14($sp) -/* 19C098 8026D7B8 8E02000C */ lw $v0, 0xc($s0) -/* 19C09C 8026D7BC 0C0B1EAF */ jal get_variable -/* 19C0A0 8026D7C0 8C450000 */ lw $a1, ($v0) -/* 19C0A4 8026D7C4 0040202D */ daddu $a0, $v0, $zero -/* 19C0A8 8026D7C8 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19C0AC 8026D7CC 14820002 */ bne $a0, $v0, .L8026D7D8 -/* 19C0B0 8026D7D0 00000000 */ nop -/* 19C0B4 8026D7D4 8E040148 */ lw $a0, 0x148($s0) -.L8026D7D8: -/* 19C0B8 8026D7D8 0C09A75B */ jal get_actor -/* 19C0BC 8026D7DC 00000000 */ nop -/* 19C0C0 8026D7E0 0040282D */ daddu $a1, $v0, $zero -/* 19C0C4 8026D7E4 8CA20008 */ lw $v0, 8($a1) -/* 19C0C8 8026D7E8 80420022 */ lb $v0, 0x22($v0) -/* 19C0CC 8026D7EC C4A00144 */ lwc1 $f0, 0x144($a1) -/* 19C0D0 8026D7F0 44821000 */ mtc1 $v0, $f2 -/* 19C0D4 8026D7F4 00000000 */ nop -/* 19C0D8 8026D7F8 468010A0 */ cvt.s.w $f2, $f2 -/* 19C0DC 8026D7FC 46020000 */ add.s $f0, $f0, $f2 -/* 19C0E0 8026D800 8CA30008 */ lw $v1, 8($a1) -/* 19C0E4 8026D804 C4A2014C */ lwc1 $f2, 0x14c($a1) -/* 19C0E8 8026D808 4600018D */ trunc.w.s $f6, $f0 -/* 19C0EC 8026D80C 44023000 */ mfc1 $v0, $f6 -/* 19C0F0 8026D810 00000000 */ nop -/* 19C0F4 8026D814 A4A20156 */ sh $v0, 0x156($a1) -/* 19C0F8 8026D818 80620023 */ lb $v0, 0x23($v1) -/* 19C0FC 8026D81C C4A00148 */ lwc1 $f0, 0x148($a1) -/* 19C100 8026D820 44822000 */ mtc1 $v0, $f4 -/* 19C104 8026D824 00000000 */ nop -/* 19C108 8026D828 46802120 */ cvt.s.w $f4, $f4 -/* 19C10C 8026D82C 4600118D */ trunc.w.s $f6, $f2 -/* 19C110 8026D830 44023000 */ mfc1 $v0, $f6 -/* 19C114 8026D834 46040000 */ add.s $f0, $f0, $f4 -/* 19C118 8026D838 A4A2015A */ sh $v0, 0x15a($a1) -/* 19C11C 8026D83C 8CA20000 */ lw $v0, ($a1) -/* 19C120 8026D840 30420800 */ andi $v0, $v0, 0x800 -/* 19C124 8026D844 4600018D */ trunc.w.s $f6, $f0 -/* 19C128 8026D848 44033000 */ mfc1 $v1, $f6 -/* 19C12C 8026D84C 10400011 */ beqz $v0, .L8026D894 -/* 19C130 8026D850 A4A30158 */ sh $v1, 0x158($a1) -/* 19C134 8026D854 90A20191 */ lbu $v0, 0x191($a1) -/* 19C138 8026D858 C4A00148 */ lwc1 $f0, 0x148($a1) -/* 19C13C 8026D85C 44821000 */ mtc1 $v0, $f2 -/* 19C140 8026D860 00000000 */ nop -/* 19C144 8026D864 468010A0 */ cvt.s.w $f2, $f2 -/* 19C148 8026D868 8CA20008 */ lw $v0, 8($a1) -/* 19C14C 8026D86C 46020001 */ sub.s $f0, $f0, $f2 -/* 19C150 8026D870 80420023 */ lb $v0, 0x23($v0) -/* 19C154 8026D874 44821000 */ mtc1 $v0, $f2 -/* 19C158 8026D878 00000000 */ nop -/* 19C15C 8026D87C 468010A0 */ cvt.s.w $f2, $f2 -/* 19C160 8026D880 46020001 */ sub.s $f0, $f0, $f2 -/* 19C164 8026D884 4600018D */ trunc.w.s $f6, $f0 -/* 19C168 8026D888 44023000 */ mfc1 $v0, $f6 -/* 19C16C 8026D88C 00000000 */ nop -/* 19C170 8026D890 A4A20158 */ sh $v0, 0x158($a1) -.L8026D894: -/* 19C174 8026D894 80A201B8 */ lb $v0, 0x1b8($a1) -/* 19C178 8026D898 80A401B9 */ lb $a0, 0x1b9($a1) -/* 19C17C 8026D89C 00021840 */ sll $v1, $v0, 1 -/* 19C180 8026D8A0 00621821 */ addu $v1, $v1, $v0 -/* 19C184 8026D8A4 000318C0 */ sll $v1, $v1, 3 -/* 19C188 8026D8A8 00621821 */ addu $v1, $v1, $v0 -/* 19C18C 8026D8AC 14800002 */ bnez $a0, .L8026D8B8 -/* 19C190 8026D8B0 0064001A */ div $zero, $v1, $a0 -/* 19C194 8026D8B4 0007000D */ break 7 -.L8026D8B8: -/* 19C198 8026D8B8 2401FFFF */ addiu $at, $zero, -1 -/* 19C19C 8026D8BC 14810004 */ bne $a0, $at, .L8026D8D0 -/* 19C1A0 8026D8C0 3C018000 */ lui $at, 0x8000 -/* 19C1A4 8026D8C4 14610002 */ bne $v1, $at, .L8026D8D0 -/* 19C1A8 8026D8C8 00000000 */ nop -/* 19C1AC 8026D8CC 0006000D */ break 6 -.L8026D8D0: -/* 19C1B0 8026D8D0 00001812 */ mflo $v1 -/* 19C1B4 8026D8D4 A0A301BC */ sb $v1, 0x1bc($a1) -/* 19C1B8 8026D8D8 8FBF0014 */ lw $ra, 0x14($sp) -/* 19C1BC 8026D8DC 8FB00010 */ lw $s0, 0x10($sp) -/* 19C1C0 8026D8E0 24020002 */ addiu $v0, $zero, 2 -/* 19C1C4 8026D8E4 03E00008 */ jr $ra -/* 19C1C8 8026D8E8 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/HPBarToHome.s b/asm/nonmatchings/code_197F40/HPBarToHome.s deleted file mode 100644 index d42087e342..0000000000 --- a/asm/nonmatchings/code_197F40/HPBarToHome.s +++ /dev/null @@ -1,89 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel HPBarToHome -/* 19BF44 8026D664 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19BF48 8026D668 AFB00010 */ sw $s0, 0x10($sp) -/* 19BF4C 8026D66C 0080802D */ daddu $s0, $a0, $zero -/* 19BF50 8026D670 AFBF0014 */ sw $ra, 0x14($sp) -/* 19BF54 8026D674 8E02000C */ lw $v0, 0xc($s0) -/* 19BF58 8026D678 0C0B1EAF */ jal get_variable -/* 19BF5C 8026D67C 8C450000 */ lw $a1, ($v0) -/* 19BF60 8026D680 0040202D */ daddu $a0, $v0, $zero -/* 19BF64 8026D684 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19BF68 8026D688 14820002 */ bne $a0, $v0, .L8026D694 -/* 19BF6C 8026D68C 00000000 */ nop -/* 19BF70 8026D690 8E040148 */ lw $a0, 0x148($s0) -.L8026D694: -/* 19BF74 8026D694 0C09A75B */ jal get_actor -/* 19BF78 8026D698 00000000 */ nop -/* 19BF7C 8026D69C 0040282D */ daddu $a1, $v0, $zero -/* 19BF80 8026D6A0 8CA20008 */ lw $v0, 8($a1) -/* 19BF84 8026D6A4 80420022 */ lb $v0, 0x22($v0) -/* 19BF88 8026D6A8 C4A00138 */ lwc1 $f0, 0x138($a1) -/* 19BF8C 8026D6AC 44821000 */ mtc1 $v0, $f2 -/* 19BF90 8026D6B0 00000000 */ nop -/* 19BF94 8026D6B4 468010A0 */ cvt.s.w $f2, $f2 -/* 19BF98 8026D6B8 46020000 */ add.s $f0, $f0, $f2 -/* 19BF9C 8026D6BC 8CA30008 */ lw $v1, 8($a1) -/* 19BFA0 8026D6C0 C4A20140 */ lwc1 $f2, 0x140($a1) -/* 19BFA4 8026D6C4 4600018D */ trunc.w.s $f6, $f0 -/* 19BFA8 8026D6C8 44023000 */ mfc1 $v0, $f6 -/* 19BFAC 8026D6CC 00000000 */ nop -/* 19BFB0 8026D6D0 A4A20156 */ sh $v0, 0x156($a1) -/* 19BFB4 8026D6D4 80620023 */ lb $v0, 0x23($v1) -/* 19BFB8 8026D6D8 C4A0013C */ lwc1 $f0, 0x13c($a1) -/* 19BFBC 8026D6DC 44822000 */ mtc1 $v0, $f4 -/* 19BFC0 8026D6E0 00000000 */ nop -/* 19BFC4 8026D6E4 46802120 */ cvt.s.w $f4, $f4 -/* 19BFC8 8026D6E8 4600118D */ trunc.w.s $f6, $f2 -/* 19BFCC 8026D6EC 44023000 */ mfc1 $v0, $f6 -/* 19BFD0 8026D6F0 46040000 */ add.s $f0, $f0, $f4 -/* 19BFD4 8026D6F4 A4A2015A */ sh $v0, 0x15a($a1) -/* 19BFD8 8026D6F8 8CA20000 */ lw $v0, ($a1) -/* 19BFDC 8026D6FC 30420800 */ andi $v0, $v0, 0x800 -/* 19BFE0 8026D700 4600018D */ trunc.w.s $f6, $f0 -/* 19BFE4 8026D704 44033000 */ mfc1 $v1, $f6 -/* 19BFE8 8026D708 10400011 */ beqz $v0, .L8026D750 -/* 19BFEC 8026D70C A4A30158 */ sh $v1, 0x158($a1) -/* 19BFF0 8026D710 90A20191 */ lbu $v0, 0x191($a1) -/* 19BFF4 8026D714 C4A0013C */ lwc1 $f0, 0x13c($a1) -/* 19BFF8 8026D718 44821000 */ mtc1 $v0, $f2 -/* 19BFFC 8026D71C 00000000 */ nop -/* 19C000 8026D720 468010A0 */ cvt.s.w $f2, $f2 -/* 19C004 8026D724 8CA20008 */ lw $v0, 8($a1) -/* 19C008 8026D728 46020001 */ sub.s $f0, $f0, $f2 -/* 19C00C 8026D72C 80420023 */ lb $v0, 0x23($v0) -/* 19C010 8026D730 44821000 */ mtc1 $v0, $f2 -/* 19C014 8026D734 00000000 */ nop -/* 19C018 8026D738 468010A0 */ cvt.s.w $f2, $f2 -/* 19C01C 8026D73C 46020001 */ sub.s $f0, $f0, $f2 -/* 19C020 8026D740 4600018D */ trunc.w.s $f6, $f0 -/* 19C024 8026D744 44023000 */ mfc1 $v0, $f6 -/* 19C028 8026D748 00000000 */ nop -/* 19C02C 8026D74C A4A20158 */ sh $v0, 0x158($a1) -.L8026D750: -/* 19C030 8026D750 80A201B8 */ lb $v0, 0x1b8($a1) -/* 19C034 8026D754 80A401B9 */ lb $a0, 0x1b9($a1) -/* 19C038 8026D758 00021840 */ sll $v1, $v0, 1 -/* 19C03C 8026D75C 00621821 */ addu $v1, $v1, $v0 -/* 19C040 8026D760 000318C0 */ sll $v1, $v1, 3 -/* 19C044 8026D764 00621821 */ addu $v1, $v1, $v0 -/* 19C048 8026D768 14800002 */ bnez $a0, .L8026D774 -/* 19C04C 8026D76C 0064001A */ div $zero, $v1, $a0 -/* 19C050 8026D770 0007000D */ break 7 -.L8026D774: -/* 19C054 8026D774 2401FFFF */ addiu $at, $zero, -1 -/* 19C058 8026D778 14810004 */ bne $a0, $at, .L8026D78C -/* 19C05C 8026D77C 3C018000 */ lui $at, 0x8000 -/* 19C060 8026D780 14610002 */ bne $v1, $at, .L8026D78C -/* 19C064 8026D784 00000000 */ nop -/* 19C068 8026D788 0006000D */ break 6 -.L8026D78C: -/* 19C06C 8026D78C 00001812 */ mflo $v1 -/* 19C070 8026D790 A0A301BC */ sb $v1, 0x1bc($a1) -/* 19C074 8026D794 8FBF0014 */ lw $ra, 0x14($sp) -/* 19C078 8026D798 8FB00010 */ lw $s0, 0x10($sp) -/* 19C07C 8026D79C 24020002 */ addiu $v0, $zero, 2 -/* 19C080 8026D7A0 03E00008 */ jr $ra -/* 19C084 8026D7A4 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/func_8026D51C.s b/asm/nonmatchings/code_197F40/func_8026D51C.s deleted file mode 100644 index dfe8ca0399..0000000000 --- a/asm/nonmatchings/code_197F40/func_8026D51C.s +++ /dev/null @@ -1,39 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8026D51C -/* 19BDFC 8026D51C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 19BE00 8026D520 AFB20018 */ sw $s2, 0x18($sp) -/* 19BE04 8026D524 0080902D */ daddu $s2, $a0, $zero -/* 19BE08 8026D528 AFBF001C */ sw $ra, 0x1c($sp) -/* 19BE0C 8026D52C AFB10014 */ sw $s1, 0x14($sp) -/* 19BE10 8026D530 AFB00010 */ sw $s0, 0x10($sp) -/* 19BE14 8026D534 8E51000C */ lw $s1, 0xc($s2) -/* 19BE18 8026D538 8E250000 */ lw $a1, ($s1) -/* 19BE1C 8026D53C 0C0B1EAF */ jal get_variable -/* 19BE20 8026D540 26310004 */ addiu $s1, $s1, 4 -/* 19BE24 8026D544 0040802D */ daddu $s0, $v0, $zero -/* 19BE28 8026D548 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19BE2C 8026D54C 16020002 */ bne $s0, $v0, .L8026D558 -/* 19BE30 8026D550 00000000 */ nop -/* 19BE34 8026D554 8E500148 */ lw $s0, 0x148($s2) -.L8026D558: -/* 19BE38 8026D558 8E250000 */ lw $a1, ($s1) -/* 19BE3C 8026D55C 26310004 */ addiu $s1, $s1, 4 -/* 19BE40 8026D560 0C0B1EAF */ jal get_variable -/* 19BE44 8026D564 0240202D */ daddu $a0, $s2, $zero -/* 19BE48 8026D568 0200202D */ daddu $a0, $s0, $zero -/* 19BE4C 8026D56C 8E310000 */ lw $s1, ($s1) -/* 19BE50 8026D570 0C09A75B */ jal get_actor -/* 19BE54 8026D574 0040802D */ daddu $s0, $v0, $zero -/* 19BE58 8026D578 0040202D */ daddu $a0, $v0, $zero -/* 19BE5C 8026D57C 0C099117 */ jal get_actor_part -/* 19BE60 8026D580 0200282D */ daddu $a1, $s0, $zero -/* 19BE64 8026D584 AC510080 */ sw $s1, 0x80($v0) -/* 19BE68 8026D588 8FBF001C */ lw $ra, 0x1c($sp) -/* 19BE6C 8026D58C 8FB20018 */ lw $s2, 0x18($sp) -/* 19BE70 8026D590 8FB10014 */ lw $s1, 0x14($sp) -/* 19BE74 8026D594 8FB00010 */ lw $s0, 0x10($sp) -/* 19BE78 8026D598 24020002 */ addiu $v0, $zero, 2 -/* 19BE7C 8026D59C 03E00008 */ jr $ra -/* 19BE80 8026D5A0 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_197F40/func_8026D5A4.s b/asm/nonmatchings/code_197F40/func_8026D5A4.s deleted file mode 100644 index 244df662a0..0000000000 --- a/asm/nonmatchings/code_197F40/func_8026D5A4.s +++ /dev/null @@ -1,55 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8026D5A4 -/* 19BE84 8026D5A4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 19BE88 8026D5A8 AFB10014 */ sw $s1, 0x14($sp) -/* 19BE8C 8026D5AC 0080882D */ daddu $s1, $a0, $zero -/* 19BE90 8026D5B0 AFBF0020 */ sw $ra, 0x20($sp) -/* 19BE94 8026D5B4 AFB3001C */ sw $s3, 0x1c($sp) -/* 19BE98 8026D5B8 AFB20018 */ sw $s2, 0x18($sp) -/* 19BE9C 8026D5BC AFB00010 */ sw $s0, 0x10($sp) -/* 19BEA0 8026D5C0 8E30000C */ lw $s0, 0xc($s1) -/* 19BEA4 8026D5C4 8E050000 */ lw $a1, ($s0) -/* 19BEA8 8026D5C8 0C0B1EAF */ jal get_variable -/* 19BEAC 8026D5CC 26100004 */ addiu $s0, $s0, 4 -/* 19BEB0 8026D5D0 0040902D */ daddu $s2, $v0, $zero -/* 19BEB4 8026D5D4 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19BEB8 8026D5D8 16420002 */ bne $s2, $v0, .L8026D5E4 -/* 19BEBC 8026D5DC 00000000 */ nop -/* 19BEC0 8026D5E0 8E320148 */ lw $s2, 0x148($s1) -.L8026D5E4: -/* 19BEC4 8026D5E4 8E050000 */ lw $a1, ($s0) -/* 19BEC8 8026D5E8 26100004 */ addiu $s0, $s0, 4 -/* 19BECC 8026D5EC 0C0B1EAF */ jal get_variable -/* 19BED0 8026D5F0 0220202D */ daddu $a0, $s1, $zero -/* 19BED4 8026D5F4 0220202D */ daddu $a0, $s1, $zero -/* 19BED8 8026D5F8 8E050004 */ lw $a1, 4($s0) -/* 19BEDC 8026D5FC 8E130000 */ lw $s3, ($s0) -/* 19BEE0 8026D600 0C0B1EAF */ jal get_variable -/* 19BEE4 8026D604 0040882D */ daddu $s1, $v0, $zero -/* 19BEE8 8026D608 0240202D */ daddu $a0, $s2, $zero -/* 19BEEC 8026D60C 0C09A75B */ jal get_actor -/* 19BEF0 8026D610 0040802D */ daddu $s0, $v0, $zero -/* 19BEF4 8026D614 0040202D */ daddu $a0, $v0, $zero -/* 19BEF8 8026D618 0C099117 */ jal get_actor_part -/* 19BEFC 8026D61C 0220282D */ daddu $a1, $s1, $zero -/* 19BF00 8026D620 12000004 */ beqz $s0, .L8026D634 -/* 19BF04 8026D624 0040202D */ daddu $a0, $v0, $zero -/* 19BF08 8026D628 8C820080 */ lw $v0, 0x80($a0) -/* 19BF0C 8026D62C 0809B590 */ j .L8026D640 -/* 19BF10 8026D630 00531025 */ or $v0, $v0, $s3 -.L8026D634: -/* 19BF14 8026D634 8C820080 */ lw $v0, 0x80($a0) -/* 19BF18 8026D638 00131827 */ nor $v1, $zero, $s3 -/* 19BF1C 8026D63C 00431024 */ and $v0, $v0, $v1 -.L8026D640: -/* 19BF20 8026D640 AC820080 */ sw $v0, 0x80($a0) -/* 19BF24 8026D644 8FBF0020 */ lw $ra, 0x20($sp) -/* 19BF28 8026D648 8FB3001C */ lw $s3, 0x1c($sp) -/* 19BF2C 8026D64C 8FB20018 */ lw $s2, 0x18($sp) -/* 19BF30 8026D650 8FB10014 */ lw $s1, 0x14($sp) -/* 19BF34 8026D654 8FB00010 */ lw $s0, 0x10($sp) -/* 19BF38 8026D658 24020002 */ addiu $v0, $zero, 2 -/* 19BF3C 8026D65C 03E00008 */ jr $ra -/* 19BF40 8026D660 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_197F40/func_8026D8EC.s b/asm/nonmatchings/code_197F40/func_8026D8EC.s deleted file mode 100644 index eb483172df..0000000000 --- a/asm/nonmatchings/code_197F40/func_8026D8EC.s +++ /dev/null @@ -1,26 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8026D8EC -/* 19C1CC 8026D8EC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19C1D0 8026D8F0 AFB00010 */ sw $s0, 0x10($sp) -/* 19C1D4 8026D8F4 0080802D */ daddu $s0, $a0, $zero -/* 19C1D8 8026D8F8 AFBF0014 */ sw $ra, 0x14($sp) -/* 19C1DC 8026D8FC 8E02000C */ lw $v0, 0xc($s0) -/* 19C1E0 8026D900 0C0B1EAF */ jal get_variable -/* 19C1E4 8026D904 8C450000 */ lw $a1, ($v0) -/* 19C1E8 8026D908 0040202D */ daddu $a0, $v0, $zero -/* 19C1EC 8026D90C 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19C1F0 8026D910 14820002 */ bne $a0, $v0, .L8026D91C -/* 19C1F4 8026D914 00000000 */ nop -/* 19C1F8 8026D918 8E040148 */ lw $a0, 0x148($s0) -.L8026D91C: -/* 19C1FC 8026D91C 0C09A75B */ jal get_actor -/* 19C200 8026D920 00000000 */ nop -/* 19C204 8026D924 0C099ABE */ jal func_80266AF8 -/* 19C208 8026D928 0040202D */ daddu $a0, $v0, $zero -/* 19C20C 8026D92C 8FBF0014 */ lw $ra, 0x14($sp) -/* 19C210 8026D930 8FB00010 */ lw $s0, 0x10($sp) -/* 19C214 8026D934 24020002 */ addiu $v0, $zero, 2 -/* 19C218 8026D938 03E00008 */ jr $ra -/* 19C21C 8026D93C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/func_8026D940.s b/asm/nonmatchings/code_197F40/func_8026D940.s deleted file mode 100644 index 2c4d1e2ffa..0000000000 --- a/asm/nonmatchings/code_197F40/func_8026D940.s +++ /dev/null @@ -1,91 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8026D940 -/* 19C220 8026D940 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 19C224 8026D944 AFB10014 */ sw $s1, 0x14($sp) -/* 19C228 8026D948 0080882D */ daddu $s1, $a0, $zero -/* 19C22C 8026D94C AFBF001C */ sw $ra, 0x1c($sp) -/* 19C230 8026D950 AFB20018 */ sw $s2, 0x18($sp) -/* 19C234 8026D954 AFB00010 */ sw $s0, 0x10($sp) -/* 19C238 8026D958 8E30000C */ lw $s0, 0xc($s1) -/* 19C23C 8026D95C 8E050000 */ lw $a1, ($s0) -/* 19C240 8026D960 0C0B1EAF */ jal get_variable -/* 19C244 8026D964 26100004 */ addiu $s0, $s0, 4 -/* 19C248 8026D968 0040902D */ daddu $s2, $v0, $zero -/* 19C24C 8026D96C 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19C250 8026D970 16420002 */ bne $s2, $v0, .L8026D97C -/* 19C254 8026D974 00000000 */ nop -/* 19C258 8026D978 8E320148 */ lw $s2, 0x148($s1) -.L8026D97C: -/* 19C25C 8026D97C 8E050000 */ lw $a1, ($s0) -/* 19C260 8026D980 26100004 */ addiu $s0, $s0, 4 -/* 19C264 8026D984 0C0B1EAF */ jal get_variable -/* 19C268 8026D988 0220202D */ daddu $a0, $s1, $zero -/* 19C26C 8026D98C 0220202D */ daddu $a0, $s1, $zero -/* 19C270 8026D990 8E050000 */ lw $a1, ($s0) -/* 19C274 8026D994 0C0B1EAF */ jal get_variable -/* 19C278 8026D998 0040882D */ daddu $s1, $v0, $zero -/* 19C27C 8026D99C 0240202D */ daddu $a0, $s2, $zero -/* 19C280 8026D9A0 0C09A75B */ jal get_actor -/* 19C284 8026D9A4 0040802D */ daddu $s0, $v0, $zero -/* 19C288 8026D9A8 0040202D */ daddu $a0, $v0, $zero -/* 19C28C 8026D9AC 8C820008 */ lw $v0, 8($a0) -/* 19C290 8026D9B0 A0910198 */ sb $s1, 0x198($a0) -/* 19C294 8026D9B4 A0900199 */ sb $s0, 0x199($a0) -/* 19C298 8026D9B8 80420022 */ lb $v0, 0x22($v0) -/* 19C29C 8026D9BC C4820138 */ lwc1 $f2, 0x138($a0) -/* 19C2A0 8026D9C0 44820000 */ mtc1 $v0, $f0 -/* 19C2A4 8026D9C4 00000000 */ nop -/* 19C2A8 8026D9C8 46800020 */ cvt.s.w $f0, $f0 -/* 19C2AC 8026D9CC 46001080 */ add.s $f2, $f2, $f0 -/* 19C2B0 8026D9D0 80820198 */ lb $v0, 0x198($a0) -/* 19C2B4 8026D9D4 44820000 */ mtc1 $v0, $f0 -/* 19C2B8 8026D9D8 00000000 */ nop -/* 19C2BC 8026D9DC 46800020 */ cvt.s.w $f0, $f0 -/* 19C2C0 8026D9E0 46001080 */ add.s $f2, $f2, $f0 -/* 19C2C4 8026D9E4 8C830008 */ lw $v1, 8($a0) -/* 19C2C8 8026D9E8 4600118D */ trunc.w.s $f6, $f2 -/* 19C2CC 8026D9EC 44023000 */ mfc1 $v0, $f6 -/* 19C2D0 8026D9F0 00000000 */ nop -/* 19C2D4 8026D9F4 A4820156 */ sh $v0, 0x156($a0) -/* 19C2D8 8026D9F8 80620023 */ lb $v0, 0x23($v1) -/* 19C2DC 8026D9FC C482013C */ lwc1 $f2, 0x13c($a0) -/* 19C2E0 8026DA00 44820000 */ mtc1 $v0, $f0 -/* 19C2E4 8026DA04 00000000 */ nop -/* 19C2E8 8026DA08 46800020 */ cvt.s.w $f0, $f0 -/* 19C2EC 8026DA0C 46001080 */ add.s $f2, $f2, $f0 -/* 19C2F0 8026DA10 80820199 */ lb $v0, 0x199($a0) -/* 19C2F4 8026DA14 C4800140 */ lwc1 $f0, 0x140($a0) -/* 19C2F8 8026DA18 44822000 */ mtc1 $v0, $f4 -/* 19C2FC 8026DA1C 00000000 */ nop -/* 19C300 8026DA20 46802120 */ cvt.s.w $f4, $f4 -/* 19C304 8026DA24 4600018D */ trunc.w.s $f6, $f0 -/* 19C308 8026DA28 44023000 */ mfc1 $v0, $f6 -/* 19C30C 8026DA2C 00000000 */ nop -/* 19C310 8026DA30 A482015A */ sh $v0, 0x15a($a0) -/* 19C314 8026DA34 8C820000 */ lw $v0, ($a0) -/* 19C318 8026DA38 46041080 */ add.s $f2, $f2, $f4 -/* 19C31C 8026DA3C 30420800 */ andi $v0, $v0, 0x800 -/* 19C320 8026DA40 4600118D */ trunc.w.s $f6, $f2 -/* 19C324 8026DA44 44033000 */ mfc1 $v1, $f6 -/* 19C328 8026DA48 1040000B */ beqz $v0, .L8026DA78 -/* 19C32C 8026DA4C A4830158 */ sh $v1, 0x158($a0) -/* 19C330 8026DA50 90820191 */ lbu $v0, 0x191($a0) -/* 19C334 8026DA54 C480013C */ lwc1 $f0, 0x13c($a0) -/* 19C338 8026DA58 44821000 */ mtc1 $v0, $f2 -/* 19C33C 8026DA5C 00000000 */ nop -/* 19C340 8026DA60 468010A0 */ cvt.s.w $f2, $f2 -/* 19C344 8026DA64 46020001 */ sub.s $f0, $f0, $f2 -/* 19C348 8026DA68 4600018D */ trunc.w.s $f6, $f0 -/* 19C34C 8026DA6C 44023000 */ mfc1 $v0, $f6 -/* 19C350 8026DA70 00000000 */ nop -/* 19C354 8026DA74 A4820158 */ sh $v0, 0x158($a0) -.L8026DA78: -/* 19C358 8026DA78 8FBF001C */ lw $ra, 0x1c($sp) -/* 19C35C 8026DA7C 8FB20018 */ lw $s2, 0x18($sp) -/* 19C360 8026DA80 8FB10014 */ lw $s1, 0x14($sp) -/* 19C364 8026DA84 8FB00010 */ lw $s0, 0x10($sp) -/* 19C368 8026DA88 24020002 */ addiu $v0, $zero, 2 -/* 19C36C 8026DA8C 03E00008 */ jr $ra -/* 19C370 8026DA90 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_197F40/func_8026DA94.s b/asm/nonmatchings/code_197F40/func_8026DA94.s deleted file mode 100644 index 3bb207a193..0000000000 --- a/asm/nonmatchings/code_197F40/func_8026DA94.s +++ /dev/null @@ -1,57 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8026DA94 -/* 19C374 8026DA94 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 19C378 8026DA98 AFB10014 */ sw $s1, 0x14($sp) -/* 19C37C 8026DA9C 0080882D */ daddu $s1, $a0, $zero -/* 19C380 8026DAA0 AFBF0024 */ sw $ra, 0x24($sp) -/* 19C384 8026DAA4 AFB40020 */ sw $s4, 0x20($sp) -/* 19C388 8026DAA8 AFB3001C */ sw $s3, 0x1c($sp) -/* 19C38C 8026DAAC AFB20018 */ sw $s2, 0x18($sp) -/* 19C390 8026DAB0 AFB00010 */ sw $s0, 0x10($sp) -/* 19C394 8026DAB4 8E30000C */ lw $s0, 0xc($s1) -/* 19C398 8026DAB8 8E050000 */ lw $a1, ($s0) -/* 19C39C 8026DABC 0C0B1EAF */ jal get_variable -/* 19C3A0 8026DAC0 26100004 */ addiu $s0, $s0, 4 -/* 19C3A4 8026DAC4 0040A02D */ daddu $s4, $v0, $zero -/* 19C3A8 8026DAC8 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19C3AC 8026DACC 16820002 */ bne $s4, $v0, .L8026DAD8 -/* 19C3B0 8026DAD0 00000000 */ nop -/* 19C3B4 8026DAD4 8E340148 */ lw $s4, 0x148($s1) -.L8026DAD8: -/* 19C3B8 8026DAD8 8E050000 */ lw $a1, ($s0) -/* 19C3BC 8026DADC 26100004 */ addiu $s0, $s0, 4 -/* 19C3C0 8026DAE0 0C0B1EAF */ jal get_variable -/* 19C3C4 8026DAE4 0220202D */ daddu $a0, $s1, $zero -/* 19C3C8 8026DAE8 8E050000 */ lw $a1, ($s0) -/* 19C3CC 8026DAEC 26100004 */ addiu $s0, $s0, 4 -/* 19C3D0 8026DAF0 0220202D */ daddu $a0, $s1, $zero -/* 19C3D4 8026DAF4 0C0B1EAF */ jal get_variable -/* 19C3D8 8026DAF8 0040982D */ daddu $s3, $v0, $zero -/* 19C3DC 8026DAFC 8E050000 */ lw $a1, ($s0) -/* 19C3E0 8026DB00 26100004 */ addiu $s0, $s0, 4 -/* 19C3E4 8026DB04 0220202D */ daddu $a0, $s1, $zero -/* 19C3E8 8026DB08 0C0B1EAF */ jal get_variable -/* 19C3EC 8026DB0C 0040902D */ daddu $s2, $v0, $zero -/* 19C3F0 8026DB10 0220202D */ daddu $a0, $s1, $zero -/* 19C3F4 8026DB14 8E050000 */ lw $a1, ($s0) -/* 19C3F8 8026DB18 0C0B1EAF */ jal get_variable -/* 19C3FC 8026DB1C 0040882D */ daddu $s1, $v0, $zero -/* 19C400 8026DB20 0280202D */ daddu $a0, $s4, $zero -/* 19C404 8026DB24 0C09A75B */ jal get_actor -/* 19C408 8026DB28 0040802D */ daddu $s0, $v0, $zero -/* 19C40C 8026DB2C 0040182D */ daddu $v1, $v0, $zero -/* 19C410 8026DB30 A0730194 */ sb $s3, 0x194($v1) -/* 19C414 8026DB34 A0720195 */ sb $s2, 0x195($v1) -/* 19C418 8026DB38 A0710196 */ sb $s1, 0x196($v1) -/* 19C41C 8026DB3C A0700197 */ sb $s0, 0x197($v1) -/* 19C420 8026DB40 8FBF0024 */ lw $ra, 0x24($sp) -/* 19C424 8026DB44 8FB40020 */ lw $s4, 0x20($sp) -/* 19C428 8026DB48 8FB3001C */ lw $s3, 0x1c($sp) -/* 19C42C 8026DB4C 8FB20018 */ lw $s2, 0x18($sp) -/* 19C430 8026DB50 8FB10014 */ lw $s1, 0x14($sp) -/* 19C434 8026DB54 8FB00010 */ lw $s0, 0x10($sp) -/* 19C438 8026DB58 24020002 */ addiu $v0, $zero, 2 -/* 19C43C 8026DB5C 03E00008 */ jr $ra -/* 19C440 8026DB60 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_197F40/func_8026DEF0.s b/asm/nonmatchings/code_197F40/func_8026DEF0.s deleted file mode 100644 index 490d893d7f..0000000000 --- a/asm/nonmatchings/code_197F40/func_8026DEF0.s +++ /dev/null @@ -1,43 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8026DEF0 -/* 19C7D0 8026DEF0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 19C7D4 8026DEF4 AFB20018 */ sw $s2, 0x18($sp) -/* 19C7D8 8026DEF8 0080902D */ daddu $s2, $a0, $zero -/* 19C7DC 8026DEFC AFBF0020 */ sw $ra, 0x20($sp) -/* 19C7E0 8026DF00 AFB3001C */ sw $s3, 0x1c($sp) -/* 19C7E4 8026DF04 AFB10014 */ sw $s1, 0x14($sp) -/* 19C7E8 8026DF08 AFB00010 */ sw $s0, 0x10($sp) -/* 19C7EC 8026DF0C 8E50000C */ lw $s0, 0xc($s2) -/* 19C7F0 8026DF10 8E050000 */ lw $a1, ($s0) -/* 19C7F4 8026DF14 0C0B1EAF */ jal get_variable -/* 19C7F8 8026DF18 26100004 */ addiu $s0, $s0, 4 -/* 19C7FC 8026DF1C 0040882D */ daddu $s1, $v0, $zero -/* 19C800 8026DF20 8E050000 */ lw $a1, ($s0) -/* 19C804 8026DF24 26100004 */ addiu $s0, $s0, 4 -/* 19C808 8026DF28 0C0B1EAF */ jal get_variable -/* 19C80C 8026DF2C 0240202D */ daddu $a0, $s2, $zero -/* 19C810 8026DF30 0040982D */ daddu $s3, $v0, $zero -/* 19C814 8026DF34 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19C818 8026DF38 16220002 */ bne $s1, $v0, .L8026DF44 -/* 19C81C 8026DF3C 8E100000 */ lw $s0, ($s0) -/* 19C820 8026DF40 8E510148 */ lw $s1, 0x148($s2) -.L8026DF44: -/* 19C824 8026DF44 0C09A75B */ jal get_actor -/* 19C828 8026DF48 0220202D */ daddu $a0, $s1, $zero -/* 19C82C 8026DF4C 0040202D */ daddu $a0, $v0, $zero -/* 19C830 8026DF50 0C099117 */ jal get_actor_part -/* 19C834 8026DF54 0260282D */ daddu $a1, $s3, $zero -/* 19C838 8026DF58 0240202D */ daddu $a0, $s2, $zero -/* 19C83C 8026DF5C 8C460084 */ lw $a2, 0x84($v0) -/* 19C840 8026DF60 0C0B2026 */ jal set_variable -/* 19C844 8026DF64 0200282D */ daddu $a1, $s0, $zero -/* 19C848 8026DF68 8FBF0020 */ lw $ra, 0x20($sp) -/* 19C84C 8026DF6C 8FB3001C */ lw $s3, 0x1c($sp) -/* 19C850 8026DF70 8FB20018 */ lw $s2, 0x18($sp) -/* 19C854 8026DF74 8FB10014 */ lw $s1, 0x14($sp) -/* 19C858 8026DF78 8FB00010 */ lw $s0, 0x10($sp) -/* 19C85C 8026DF7C 24020002 */ addiu $v0, $zero, 2 -/* 19C860 8026DF80 03E00008 */ jr $ra -/* 19C864 8026DF84 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_197F40/func_8026DF88.s b/asm/nonmatchings/code_197F40/func_8026DF88.s deleted file mode 100644 index b6cbbf521d..0000000000 --- a/asm/nonmatchings/code_197F40/func_8026DF88.s +++ /dev/null @@ -1,43 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8026DF88 -/* 19C868 8026DF88 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 19C86C 8026DF8C AFB20018 */ sw $s2, 0x18($sp) -/* 19C870 8026DF90 0080902D */ daddu $s2, $a0, $zero -/* 19C874 8026DF94 AFBF0020 */ sw $ra, 0x20($sp) -/* 19C878 8026DF98 AFB3001C */ sw $s3, 0x1c($sp) -/* 19C87C 8026DF9C AFB10014 */ sw $s1, 0x14($sp) -/* 19C880 8026DFA0 AFB00010 */ sw $s0, 0x10($sp) -/* 19C884 8026DFA4 8E50000C */ lw $s0, 0xc($s2) -/* 19C888 8026DFA8 8E050000 */ lw $a1, ($s0) -/* 19C88C 8026DFAC 0C0B1EAF */ jal get_variable -/* 19C890 8026DFB0 26100004 */ addiu $s0, $s0, 4 -/* 19C894 8026DFB4 0040882D */ daddu $s1, $v0, $zero -/* 19C898 8026DFB8 8E050000 */ lw $a1, ($s0) -/* 19C89C 8026DFBC 26100004 */ addiu $s0, $s0, 4 -/* 19C8A0 8026DFC0 0C0B1EAF */ jal get_variable -/* 19C8A4 8026DFC4 0240202D */ daddu $a0, $s2, $zero -/* 19C8A8 8026DFC8 0040982D */ daddu $s3, $v0, $zero -/* 19C8AC 8026DFCC 2402FF81 */ addiu $v0, $zero, -0x7f -/* 19C8B0 8026DFD0 16220002 */ bne $s1, $v0, .L8026DFDC -/* 19C8B4 8026DFD4 8E100000 */ lw $s0, ($s0) -/* 19C8B8 8026DFD8 8E510148 */ lw $s1, 0x148($s2) -.L8026DFDC: -/* 19C8BC 8026DFDC 0C09A75B */ jal get_actor -/* 19C8C0 8026DFE0 0220202D */ daddu $a0, $s1, $zero -/* 19C8C4 8026DFE4 0040202D */ daddu $a0, $v0, $zero -/* 19C8C8 8026DFE8 0C099117 */ jal get_actor_part -/* 19C8CC 8026DFEC 0260282D */ daddu $a1, $s3, $zero -/* 19C8D0 8026DFF0 0240202D */ daddu $a0, $s2, $zero -/* 19C8D4 8026DFF4 8C46008C */ lw $a2, 0x8c($v0) -/* 19C8D8 8026DFF8 0C0B2026 */ jal set_variable -/* 19C8DC 8026DFFC 0200282D */ daddu $a1, $s0, $zero -/* 19C8E0 8026E000 8FBF0020 */ lw $ra, 0x20($sp) -/* 19C8E4 8026E004 8FB3001C */ lw $s3, 0x1c($sp) -/* 19C8E8 8026E008 8FB20018 */ lw $s2, 0x18($sp) -/* 19C8EC 8026E00C 8FB10014 */ lw $s1, 0x14($sp) -/* 19C8F0 8026E010 8FB00010 */ lw $s0, 0x10($sp) -/* 19C8F4 8026E014 24020002 */ addiu $v0, $zero, 2 -/* 19C8F8 8026E018 03E00008 */ jr $ra -/* 19C8FC 8026E01C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/include/common_structs.h b/include/common_structs.h index 1690e72f24..f53b71e623 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -12,9 +12,14 @@ struct ScriptInstance; typedef ApiStatus(*ApiFunc)(struct ScriptInstance*, s32); typedef struct Vec2b { + /* 0x00 */ s8 x; + /* 0x01 */ s8 y; +} Vec2b; // size = 0x02 + +typedef struct Vec2bu { /* 0x00 */ u8 x; /* 0x01 */ u8 y; -} Vec2b; // size = 0x02 +} Vec2bu; // size = 0x02 typedef struct Vec3f { /* 0x00 */ f32 x; @@ -673,7 +678,7 @@ typedef struct StaticActorData { /* 0x1E */ u8 powerBounceChance; /* 0x1F */ u8 coinReward; /* 0x20 */ u8 size[2]; - /* 0x22 */ u8 hpBarOffset[2]; + /* 0x22 */ Vec2b hpBarOffset; /* 0x24 */ u8 statusIconOffset[2]; /* 0x26 */ u8 statusMessageOffset[2]; } StaticActorData; // size = 0x28 @@ -1059,9 +1064,9 @@ typedef struct ActorPart { /* 0x78 */ u32* defenseTable; /* 0x7C */ s32 eventFlags; /* 0x80 */ s32 partFlags3; - /* 0x84 */ char unk_84[4]; + /* 0x84 */ s32 unk_84; /* 0x88 */ s32 currentAnimation; - /* 0x8C */ char unk_8C[4]; + /* 0x8C */ s32 unk_8C; /* 0x90 */ f32 animationRate; /* 0x94 */ u32* idleAnimations; /* 0x98 */ s16 opacity; @@ -1268,7 +1273,7 @@ typedef struct Actor { /* 0x138 */ Vec3f homePos; /* 0x144 */ Vec3f currentPos; /* 0x150 */ Vec3s headOffset; - /* 0x156 */ s16 healthBarPosition[3]; + /* 0x156 */ Vec3s healthBarPosition; /* 0x15C */ Vec3f rotation; /* 0x168 */ Vec3s rotationPivotOffset; /* 0x16E */ char unk_16E[2]; @@ -1276,12 +1281,17 @@ typedef struct Actor { /* 0x17C */ Vec3f scaleModifier; /* multiplies normal scale factors componentwise */ /* 0x188 */ f32 scalingFactor; /* 0x18C */ f32 yaw; - /* 0x190 */ Vec2b size; + /* 0x190 */ Vec2bu size; /* 0x192 */ s16 actorID; - /* 0x194 */ char unk_194[8]; + /* 0x194 */ s8 unk_194; + /* 0x195 */ s8 unk_195; + /* 0x196 */ s8 unk_196; + /* 0x197 */ s8 unk_197; + /* 0x198 */ Vec2b unk_198; + /* 0x19A */ char unk_19A[2]; /* 0x19C */ s32 actorTypeData1[6]; /* 4 = jump sound */ /* 0x1B4 */ s16 actorTypeData1b[2]; - /* 0x1B8 */ u8 currentHP; + /* 0x1B8 */ s8 currentHP; /* 0x1B9 */ s8 maxHP; /* 0x1BA */ char unk_1BA[2]; /* 0x1BC */ u8 hpFraction; /* used to render HP bar */ diff --git a/src/code_197F40.c b/src/code_197F40.c index 8491d7fbe2..b4a16af1af 100644 --- a/src/code_197F40.c +++ b/src/code_197F40.c @@ -1760,19 +1760,163 @@ ApiStatus GetPartEventFlags(ScriptInstance* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "code_197F40", func_8026D51C); +ApiStatus func_8026D51C(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + ActorPart* actorPart; + s32 flags; + s32 partIndex; + s32 cond; -INCLUDE_ASM(s32, "code_197F40", func_8026D5A4); + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } -INCLUDE_ASM(s32, "code_197F40", HPBarToHome); + partIndex = get_variable(script, *args++); + flags = *args++; -INCLUDE_ASM(s32, "code_197F40", HPBarToCurrent); + get_actor_part(get_actor(actorID), partIndex)->partFlags3 = flags; -INCLUDE_ASM(s32, "code_197F40", func_8026D8EC); + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "code_197F40", func_8026D940); +ApiStatus func_8026D5A4(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + ActorPart* actorPart; + s32 partIndex; + s32 bits; + s32 cond; -INCLUDE_ASM(s32, "code_197F40", func_8026DA94); + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + partIndex = get_variable(script, *args++); + bits = *args++; + cond = get_variable(script, *args++); + + actorPart = get_actor_part(get_actor(actorID), partIndex); + + if (cond != 0) { + actorPart->partFlags3 |= bits; + } else { + actorPart->partFlags3 &= ~bits; + } + + return ApiStatus_DONE2; +} + +ApiStatus HPBarToHome(ScriptInstance *script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + Actor* actor; + + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + actor = get_actor(actorID); + actor->healthBarPosition.x = actor->homePos.x + actor->staticActorData->hpBarOffset.x; + actor->healthBarPosition.y = actor->homePos.y + actor->staticActorData->hpBarOffset.y; + actor->healthBarPosition.z = actor->homePos.z; + + if (actor->flags & 0x800) { + actor->healthBarPosition.y = actor->homePos.y - actor->size.y - actor->staticActorData->hpBarOffset.y; + } + + actor->hpFraction = (actor->currentHP * 25) / actor->maxHP; + + return ApiStatus_DONE2; +} + +ApiStatus HPBarToCurrent(ScriptInstance *script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + Actor* actor; + + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + actor = get_actor(actorID); + actor->healthBarPosition.x = actor->currentPos.x + actor->staticActorData->hpBarOffset.x; + actor->healthBarPosition.y = actor->currentPos.y + actor->staticActorData->hpBarOffset.y; + actor->healthBarPosition.z = actor->currentPos.z; + + if (actor->flags & 0x800) { + actor->healthBarPosition.y = actor->currentPos.y - actor->size.y - actor->staticActorData->hpBarOffset.y; + } + + actor->hpFraction = (actor->currentHP * 25) / actor->maxHP; + + return ApiStatus_DONE2; +} + +ApiStatus func_8026D8EC(ScriptInstance *script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + func_80266AF8(get_actor(actorID)); + + return ApiStatus_DONE2; +} + +ApiStatus func_8026D940(ScriptInstance *script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + Actor* actor; + s32 x, y; + + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + x = get_variable(script, *args++); + y = get_variable(script, *args++); + + actor = get_actor(actorID); + + actor->unk_198.x = x; + actor->unk_198.y = y; + actor->healthBarPosition.x = actor->homePos.x + actor->staticActorData->hpBarOffset.x + actor->unk_198.x; + actor->healthBarPosition.y = actor->homePos.y + actor->staticActorData->hpBarOffset.y + actor->unk_198.y; + actor->healthBarPosition.z = actor->homePos.z; + + if (actor->flags & 0x800) { + actor->healthBarPosition.y = actor->homePos.y - actor->size.y; + } + + return ApiStatus_DONE2; +} + +ApiStatus func_8026DA94(ScriptInstance *script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + Actor* actor; + s32 a, b, c, d; + + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + a = get_variable(script, *args++); + b = get_variable(script, *args++); + c = get_variable(script, *args++); + d = get_variable(script, *args++); + + actor = get_actor(actorID); + actor->unk_194 = a; + actor->unk_195 = b; + actor->unk_196 = c; + actor->unk_197 = d; + + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_197F40", SummonEnemy); @@ -1805,9 +1949,35 @@ ApiStatus ActorExists(ScriptInstance* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "code_197F40", func_8026DEF0); +ApiStatus func_8026DEF0(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + s32 partIndex = get_variable(script, *args++); + s32 a2 = *args++; -INCLUDE_ASM(s32, "code_197F40", func_8026DF88); + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + set_variable(script, a2, get_actor_part(get_actor(actorID), partIndex)->unk_84); + + return ApiStatus_DONE2; +} + +ApiStatus func_8026DF88(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + s32 partIndex = get_variable(script, *args++); + s32 a2 = *args++; + + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + set_variable(script, a2, get_actor_part(get_actor(actorID), partIndex)->unk_8C); + + return ApiStatus_DONE2; +} ApiStatus func_8026E020(ScriptInstance* script, s32 isInitialCall) { s32 a0 = *script->ptrReadPos;