From e1b4b8b59426a84188ed81ee2b5395275bdc8730 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Fri, 16 Oct 2020 16:29:55 -0400 Subject: [PATCH] :cat: --- .../code_197F40/CheckButtonDown.s | 18 --- .../code_197F40/CheckButtonHeld.s | 18 --- .../code_197F40/CheckButtonPress.s | 18 --- .../code_197F40/EnemyCreateTargetList.s | 21 --- asm/nonmatchings/code_197F40/GetBattleFlags.s | 15 -- .../code_197F40/GetBattleFlags2.s | 15 -- asm/nonmatchings/code_197F40/GetBattlePhase.s | 15 -- asm/nonmatchings/code_197F40/GetBattleState.s | 15 -- asm/nonmatchings/code_197F40/GetLastElement.s | 15 -- asm/nonmatchings/code_197F40/GetOwnerID.s | 14 -- .../code_197F40/GetPlayerActorID.s | 15 -- asm/nonmatchings/code_197F40/GetPlayerHP.s | 15 -- .../code_197F40/PlayerCreateTargetList.s | 21 --- .../code_197F40/RemovePlayerBuffs.s | 13 -- .../code_197F40/SetBattleFlagBits.s | 31 ---- .../code_197F40/SetBattleInputButtons.s | 16 -- asm/nonmatchings/code_197F40/SetOwnerID.s | 17 -- asm/nonmatchings/code_197F40/count_targets.s | 18 --- .../dispatch_damage_event_player_0.s | 15 -- .../dispatch_damage_event_player_1.s | 11 -- include/common_structs.h | 5 +- include/variables.h | 1 + src/code_197F40.c | 149 +++++++++++++++--- tools/symbol_addrs.txt | 6 +- undefined_syms.txt | 4 +- 25 files changed, 139 insertions(+), 362 deletions(-) delete mode 100644 asm/nonmatchings/code_197F40/CheckButtonDown.s delete mode 100644 asm/nonmatchings/code_197F40/CheckButtonHeld.s delete mode 100644 asm/nonmatchings/code_197F40/CheckButtonPress.s delete mode 100644 asm/nonmatchings/code_197F40/EnemyCreateTargetList.s delete mode 100644 asm/nonmatchings/code_197F40/GetBattleFlags.s delete mode 100644 asm/nonmatchings/code_197F40/GetBattleFlags2.s delete mode 100644 asm/nonmatchings/code_197F40/GetBattlePhase.s delete mode 100644 asm/nonmatchings/code_197F40/GetBattleState.s delete mode 100644 asm/nonmatchings/code_197F40/GetLastElement.s delete mode 100644 asm/nonmatchings/code_197F40/GetOwnerID.s delete mode 100644 asm/nonmatchings/code_197F40/GetPlayerActorID.s delete mode 100644 asm/nonmatchings/code_197F40/GetPlayerHP.s delete mode 100644 asm/nonmatchings/code_197F40/PlayerCreateTargetList.s delete mode 100644 asm/nonmatchings/code_197F40/RemovePlayerBuffs.s delete mode 100644 asm/nonmatchings/code_197F40/SetBattleFlagBits.s delete mode 100644 asm/nonmatchings/code_197F40/SetBattleInputButtons.s delete mode 100644 asm/nonmatchings/code_197F40/SetOwnerID.s delete mode 100644 asm/nonmatchings/code_197F40/count_targets.s delete mode 100644 asm/nonmatchings/code_197F40/dispatch_damage_event_player_0.s delete mode 100644 asm/nonmatchings/code_197F40/dispatch_damage_event_player_1.s diff --git a/asm/nonmatchings/code_197F40/CheckButtonDown.s b/asm/nonmatchings/code_197F40/CheckButtonDown.s deleted file mode 100644 index e4b83cce42..0000000000 --- a/asm/nonmatchings/code_197F40/CheckButtonDown.s +++ /dev/null @@ -1,18 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel CheckButtonDown -/* 19C9E8 8026E108 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19C9EC 8026E10C AFBF0010 */ sw $ra, 0x10($sp) -/* 19C9F0 8026E110 8C82000C */ lw $v0, 0xc($a0) -/* 19C9F4 8026E114 3C06800E */ lui $a2, 0x800e -/* 19C9F8 8026E118 8CC6C280 */ lw $a2, -0x3d80($a2) -/* 19C9FC 8026E11C 8C430000 */ lw $v1, ($v0) -/* 19CA00 8026E120 8C450004 */ lw $a1, 4($v0) -/* 19CA04 8026E124 00C33024 */ and $a2, $a2, $v1 -/* 19CA08 8026E128 0C0B2026 */ jal set_variable -/* 19CA0C 8026E12C 0006302B */ sltu $a2, $zero, $a2 -/* 19CA10 8026E130 8FBF0010 */ lw $ra, 0x10($sp) -/* 19CA14 8026E134 24020002 */ addiu $v0, $zero, 2 -/* 19CA18 8026E138 03E00008 */ jr $ra -/* 19CA1C 8026E13C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/CheckButtonHeld.s b/asm/nonmatchings/code_197F40/CheckButtonHeld.s deleted file mode 100644 index 9e9bfc24ad..0000000000 --- a/asm/nonmatchings/code_197F40/CheckButtonHeld.s +++ /dev/null @@ -1,18 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel CheckButtonHeld -/* 19C9B0 8026E0D0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19C9B4 8026E0D4 AFBF0010 */ sw $ra, 0x10($sp) -/* 19C9B8 8026E0D8 8C82000C */ lw $v0, 0xc($a0) -/* 19C9BC 8026E0DC 3C06800E */ lui $a2, 0x800e -/* 19C9C0 8026E0E0 8CC6C288 */ lw $a2, -0x3d78($a2) -/* 19C9C4 8026E0E4 8C430000 */ lw $v1, ($v0) -/* 19C9C8 8026E0E8 8C450004 */ lw $a1, 4($v0) -/* 19C9CC 8026E0EC 00C33024 */ and $a2, $a2, $v1 -/* 19C9D0 8026E0F0 0C0B2026 */ jal set_variable -/* 19C9D4 8026E0F4 0006302B */ sltu $a2, $zero, $a2 -/* 19C9D8 8026E0F8 8FBF0010 */ lw $ra, 0x10($sp) -/* 19C9DC 8026E0FC 24020002 */ addiu $v0, $zero, 2 -/* 19C9E0 8026E100 03E00008 */ jr $ra -/* 19C9E4 8026E104 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/CheckButtonPress.s b/asm/nonmatchings/code_197F40/CheckButtonPress.s deleted file mode 100644 index f191aa9572..0000000000 --- a/asm/nonmatchings/code_197F40/CheckButtonPress.s +++ /dev/null @@ -1,18 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel CheckButtonPress -/* 19C978 8026E098 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19C97C 8026E09C AFBF0010 */ sw $ra, 0x10($sp) -/* 19C980 8026E0A0 8C82000C */ lw $v0, 0xc($a0) -/* 19C984 8026E0A4 3C06800E */ lui $a2, 0x800e -/* 19C988 8026E0A8 8CC6C284 */ lw $a2, -0x3d7c($a2) -/* 19C98C 8026E0AC 8C430000 */ lw $v1, ($v0) -/* 19C990 8026E0B0 8C450004 */ lw $a1, 4($v0) -/* 19C994 8026E0B4 00C33024 */ and $a2, $a2, $v1 -/* 19C998 8026E0B8 0C0B2026 */ jal set_variable -/* 19C99C 8026E0BC 0006302B */ sltu $a2, $zero, $a2 -/* 19C9A0 8026E0C0 8FBF0010 */ lw $ra, 0x10($sp) -/* 19C9A4 8026E0C4 24020002 */ addiu $v0, $zero, 2 -/* 19C9A8 8026E0C8 03E00008 */ jr $ra -/* 19C9AC 8026E0CC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/EnemyCreateTargetList.s b/asm/nonmatchings/code_197F40/EnemyCreateTargetList.s deleted file mode 100644 index 303d952f3b..0000000000 --- a/asm/nonmatchings/code_197F40/EnemyCreateTargetList.s +++ /dev/null @@ -1,21 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel EnemyCreateTargetList -/* 19CBF0 8026E310 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19CBF4 8026E314 0080102D */ daddu $v0, $a0, $zero -/* 19CBF8 8026E318 AFBF0014 */ sw $ra, 0x14($sp) -/* 19CBFC 8026E31C AFB00010 */ sw $s0, 0x10($sp) -/* 19CC00 8026E320 8C440148 */ lw $a0, 0x148($v0) -/* 19CC04 8026E324 0C09A75B */ jal get_actor -/* 19CC08 8026E328 8C50000C */ lw $s0, 0xc($v0) -/* 19CC0C 8026E32C 8E030000 */ lw $v1, ($s0) -/* 19CC10 8026E330 3C01800E */ lui $at, 0x800e -/* 19CC14 8026E334 AC23C1F4 */ sw $v1, -0x3e0c($at) -/* 19CC18 8026E338 0C098C12 */ jal enemy_create_target_list -/* 19CC1C 8026E33C 0040202D */ daddu $a0, $v0, $zero -/* 19CC20 8026E340 8FBF0014 */ lw $ra, 0x14($sp) -/* 19CC24 8026E344 8FB00010 */ lw $s0, 0x10($sp) -/* 19CC28 8026E348 24020002 */ addiu $v0, $zero, 2 -/* 19CC2C 8026E34C 03E00008 */ jr $ra -/* 19CC30 8026E350 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetBattleFlags.s b/asm/nonmatchings/code_197F40/GetBattleFlags.s deleted file mode 100644 index 67c82789c9..0000000000 --- a/asm/nonmatchings/code_197F40/GetBattleFlags.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetBattleFlags -/* 19B5F0 8026CD10 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19B5F4 8026CD14 AFBF0010 */ sw $ra, 0x10($sp) -/* 19B5F8 8026CD18 8C82000C */ lw $v0, 0xc($a0) -/* 19B5FC 8026CD1C 3C06800E */ lui $a2, %hi(gBattleStatus) -/* 19B600 8026CD20 8CC6C070 */ lw $a2, %lo(gBattleStatus)($a2) -/* 19B604 8026CD24 0C0B2026 */ jal set_variable -/* 19B608 8026CD28 8C450000 */ lw $a1, ($v0) -/* 19B60C 8026CD2C 8FBF0010 */ lw $ra, 0x10($sp) -/* 19B610 8026CD30 24020002 */ addiu $v0, $zero, 2 -/* 19B614 8026CD34 03E00008 */ jr $ra -/* 19B618 8026CD38 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetBattleFlags2.s b/asm/nonmatchings/code_197F40/GetBattleFlags2.s deleted file mode 100644 index aec0db8717..0000000000 --- a/asm/nonmatchings/code_197F40/GetBattleFlags2.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetBattleFlags2 -/* 19B680 8026CDA0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19B684 8026CDA4 AFBF0010 */ sw $ra, 0x10($sp) -/* 19B688 8026CDA8 8C82000C */ lw $v0, 0xc($a0) -/* 19B68C 8026CDAC 3C06800E */ lui $a2, 0x800e -/* 19B690 8026CDB0 8CC6C074 */ lw $a2, -0x3f8c($a2) -/* 19B694 8026CDB4 0C0B2026 */ jal set_variable -/* 19B698 8026CDB8 8C450000 */ lw $a1, ($v0) -/* 19B69C 8026CDBC 8FBF0010 */ lw $ra, 0x10($sp) -/* 19B6A0 8026CDC0 24020002 */ addiu $v0, $zero, 2 -/* 19B6A4 8026CDC4 03E00008 */ jr $ra -/* 19B6A8 8026CDC8 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetBattlePhase.s b/asm/nonmatchings/code_197F40/GetBattlePhase.s deleted file mode 100644 index 22f5fd21f0..0000000000 --- a/asm/nonmatchings/code_197F40/GetBattlePhase.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetBattlePhase -/* 198708 80269E28 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19870C 80269E2C AFBF0010 */ sw $ra, 0x10($sp) -/* 198710 80269E30 8C82000C */ lw $v0, 0xc($a0) -/* 198714 80269E34 3C06800E */ lui $a2, 0x800e -/* 198718 80269E38 80C6C217 */ lb $a2, -0x3de9($a2) -/* 19871C 80269E3C 0C0B2026 */ jal set_variable -/* 198720 80269E40 8C450000 */ lw $a1, ($v0) -/* 198724 80269E44 8FBF0010 */ lw $ra, 0x10($sp) -/* 198728 80269E48 24020002 */ addiu $v0, $zero, 2 -/* 19872C 80269E4C 03E00008 */ jr $ra -/* 198730 80269E50 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetBattleState.s b/asm/nonmatchings/code_197F40/GetBattleState.s deleted file mode 100644 index 4ba8f16670..0000000000 --- a/asm/nonmatchings/code_197F40/GetBattleState.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetBattleState -/* 19CA20 8026E140 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19CA24 8026E144 AFBF0010 */ sw $ra, 0x10($sp) -/* 19CA28 8026E148 8C82000C */ lw $v0, 0xc($a0) -/* 19CA2C 8026E14C 3C06800E */ lui $a2, 0x800e -/* 19CA30 8026E150 8CC6C068 */ lw $a2, -0x3f98($a2) -/* 19CA34 8026E154 0C0B2026 */ jal set_variable -/* 19CA38 8026E158 8C450000 */ lw $a1, ($v0) -/* 19CA3C 8026E15C 8FBF0010 */ lw $ra, 0x10($sp) -/* 19CA40 8026E160 24020002 */ addiu $v0, $zero, 2 -/* 19CA44 8026E164 03E00008 */ jr $ra -/* 19CA48 8026E168 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetLastElement.s b/asm/nonmatchings/code_197F40/GetLastElement.s deleted file mode 100644 index 51dbcd25e7..0000000000 --- a/asm/nonmatchings/code_197F40/GetLastElement.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetLastElement -/* 198734 80269E54 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 198738 80269E58 AFBF0010 */ sw $ra, 0x10($sp) -/* 19873C 80269E5C 8C82000C */ lw $v0, 0xc($a0) -/* 198740 80269E60 3C06800E */ lui $a2, 0x800e -/* 198744 80269E64 8CC6C1F8 */ lw $a2, -0x3e08($a2) -/* 198748 80269E68 0C0B2026 */ jal set_variable -/* 19874C 80269E6C 8C450000 */ lw $a1, ($v0) -/* 198750 80269E70 8FBF0010 */ lw $ra, 0x10($sp) -/* 198754 80269E74 24020002 */ addiu $v0, $zero, 2 -/* 198758 80269E78 03E00008 */ jr $ra -/* 19875C 80269E7C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetOwnerID.s b/asm/nonmatchings/code_197F40/GetOwnerID.s deleted file mode 100644 index 77a186cf94..0000000000 --- a/asm/nonmatchings/code_197F40/GetOwnerID.s +++ /dev/null @@ -1,14 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetOwnerID -/* 19C6E0 8026DE00 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19C6E4 8026DE04 AFBF0010 */ sw $ra, 0x10($sp) -/* 19C6E8 8026DE08 8C82000C */ lw $v0, 0xc($a0) -/* 19C6EC 8026DE0C 8C860148 */ lw $a2, 0x148($a0) -/* 19C6F0 8026DE10 0C0B2026 */ jal set_variable -/* 19C6F4 8026DE14 8C450000 */ lw $a1, ($v0) -/* 19C6F8 8026DE18 8FBF0010 */ lw $ra, 0x10($sp) -/* 19C6FC 8026DE1C 24020002 */ addiu $v0, $zero, 2 -/* 19C700 8026DE20 03E00008 */ jr $ra -/* 19C704 8026DE24 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetPlayerActorID.s b/asm/nonmatchings/code_197F40/GetPlayerActorID.s deleted file mode 100644 index fab2e538b6..0000000000 --- a/asm/nonmatchings/code_197F40/GetPlayerActorID.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetPlayerActorID -/* 19D254 8026E974 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19D258 8026E978 AFBF0010 */ sw $ra, 0x10($sp) -/* 19D25C 8026E97C 8C82000C */ lw $v0, 0xc($a0) -/* 19D260 8026E980 3C06800E */ lui $a2, 0x800e -/* 19D264 8026E984 84C6C218 */ lh $a2, -0x3de8($a2) -/* 19D268 8026E988 0C0B2026 */ jal set_variable -/* 19D26C 8026E98C 8C450000 */ lw $a1, ($v0) -/* 19D270 8026E990 8FBF0010 */ lw $ra, 0x10($sp) -/* 19D274 8026E994 24020002 */ addiu $v0, $zero, 2 -/* 19D278 8026E998 03E00008 */ jr $ra -/* 19D27C 8026E99C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/GetPlayerHP.s b/asm/nonmatchings/code_197F40/GetPlayerHP.s deleted file mode 100644 index b563dcd9c8..0000000000 --- a/asm/nonmatchings/code_197F40/GetPlayerHP.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetPlayerHP -/* 1A2B14 80274234 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 1A2B18 80274238 AFBF0010 */ sw $ra, 0x10($sp) -/* 1A2B1C 8027423C 8C82000C */ lw $v0, 0xc($a0) -/* 1A2B20 80274240 3C068011 */ lui $a2, 0x8011 -/* 1A2B24 80274244 80C6F292 */ lb $a2, -0xd6e($a2) -/* 1A2B28 80274248 0C0B2026 */ jal set_variable -/* 1A2B2C 8027424C 8C450000 */ lw $a1, ($v0) -/* 1A2B30 80274250 8FBF0010 */ lw $ra, 0x10($sp) -/* 1A2B34 80274254 24020002 */ addiu $v0, $zero, 2 -/* 1A2B38 80274258 03E00008 */ jr $ra -/* 1A2B3C 8027425C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/PlayerCreateTargetList.s b/asm/nonmatchings/code_197F40/PlayerCreateTargetList.s deleted file mode 100644 index b0e7b0a27c..0000000000 --- a/asm/nonmatchings/code_197F40/PlayerCreateTargetList.s +++ /dev/null @@ -1,21 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel PlayerCreateTargetList -/* 19CBAC 8026E2CC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19CBB0 8026E2D0 0080102D */ daddu $v0, $a0, $zero -/* 19CBB4 8026E2D4 AFBF0014 */ sw $ra, 0x14($sp) -/* 19CBB8 8026E2D8 AFB00010 */ sw $s0, 0x10($sp) -/* 19CBBC 8026E2DC 8C440148 */ lw $a0, 0x148($v0) -/* 19CBC0 8026E2E0 0C09A75B */ jal get_actor -/* 19CBC4 8026E2E4 8C50000C */ lw $s0, 0xc($v0) -/* 19CBC8 8026E2E8 8E030000 */ lw $v1, ($s0) -/* 19CBCC 8026E2EC 3C01800E */ lui $at, 0x800e -/* 19CBD0 8026E2F0 AC23C1F4 */ sw $v1, -0x3e0c($at) -/* 19CBD4 8026E2F4 0C098C0B */ jal player_create_target_list -/* 19CBD8 8026E2F8 0040202D */ daddu $a0, $v0, $zero -/* 19CBDC 8026E2FC 8FBF0014 */ lw $ra, 0x14($sp) -/* 19CBE0 8026E300 8FB00010 */ lw $s0, 0x10($sp) -/* 19CBE4 8026E304 24020002 */ addiu $v0, $zero, 2 -/* 19CBE8 8026E308 03E00008 */ jr $ra -/* 19CBEC 8026E30C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/RemovePlayerBuffs.s b/asm/nonmatchings/code_197F40/RemovePlayerBuffs.s deleted file mode 100644 index d299cc37f8..0000000000 --- a/asm/nonmatchings/code_197F40/RemovePlayerBuffs.s +++ /dev/null @@ -1,13 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel RemovePlayerBuffs -/* 19DD2C 8026F44C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19DD30 8026F450 AFBF0010 */ sw $ra, 0x10($sp) -/* 19DD34 8026F454 8C82000C */ lw $v0, 0xc($a0) -/* 19DD38 8026F458 0C099D15 */ jal remove_player_buffs -/* 19DD3C 8026F45C 8C440000 */ lw $a0, ($v0) -/* 19DD40 8026F460 8FBF0010 */ lw $ra, 0x10($sp) -/* 19DD44 8026F464 24020002 */ addiu $v0, $zero, 2 -/* 19DD48 8026F468 03E00008 */ jr $ra -/* 19DD4C 8026F46C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/SetBattleFlagBits.s b/asm/nonmatchings/code_197F40/SetBattleFlagBits.s deleted file mode 100644 index 5d393d0dcf..0000000000 --- a/asm/nonmatchings/code_197F40/SetBattleFlagBits.s +++ /dev/null @@ -1,31 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel SetBattleFlagBits -/* 19B61C 8026CD3C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19B620 8026CD40 AFBF0014 */ sw $ra, 0x14($sp) -/* 19B624 8026CD44 AFB00010 */ sw $s0, 0x10($sp) -/* 19B628 8026CD48 8C82000C */ lw $v0, 0xc($a0) -/* 19B62C 8026CD4C 8C450004 */ lw $a1, 4($v0) -/* 19B630 8026CD50 0C0B1EAF */ jal get_variable -/* 19B634 8026CD54 8C500000 */ lw $s0, ($v0) -/* 19B638 8026CD58 10400007 */ beqz $v0, .L8026CD78 -/* 19B63C 8026CD5C 00102027 */ nor $a0, $zero, $s0 -/* 19B640 8026CD60 3C03800E */ lui $v1, %hi(gBattleStatus) -/* 19B644 8026CD64 2463C070 */ addiu $v1, $v1, %lo(gBattleStatus) -/* 19B648 8026CD68 8C620000 */ lw $v0, ($v1) -/* 19B64C 8026CD6C 00501025 */ or $v0, $v0, $s0 -/* 19B650 8026CD70 0809B363 */ j .L8026CD8C -/* 19B654 8026CD74 AC620000 */ sw $v0, ($v1) -.L8026CD78: -/* 19B658 8026CD78 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 19B65C 8026CD7C 2442C070 */ addiu $v0, $v0, %lo(gBattleStatus) -/* 19B660 8026CD80 8C430000 */ lw $v1, ($v0) -/* 19B664 8026CD84 00641824 */ and $v1, $v1, $a0 -/* 19B668 8026CD88 AC430000 */ sw $v1, ($v0) -.L8026CD8C: -/* 19B66C 8026CD8C 8FBF0014 */ lw $ra, 0x14($sp) -/* 19B670 8026CD90 8FB00010 */ lw $s0, 0x10($sp) -/* 19B674 8026CD94 24020002 */ addiu $v0, $zero, 2 -/* 19B678 8026CD98 03E00008 */ jr $ra -/* 19B67C 8026CD9C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/SetBattleInputButtons.s b/asm/nonmatchings/code_197F40/SetBattleInputButtons.s deleted file mode 100644 index 675c6835f5..0000000000 --- a/asm/nonmatchings/code_197F40/SetBattleInputButtons.s +++ /dev/null @@ -1,16 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel SetBattleInputButtons -/* 19C948 8026E068 8C82000C */ lw $v0, 0xc($a0) -/* 19C94C 8026E06C 8C450000 */ lw $a1, ($v0) -/* 19C950 8026E070 24420004 */ addiu $v0, $v0, 4 -/* 19C954 8026E074 8C430000 */ lw $v1, ($v0) -/* 19C958 8026E078 8C440004 */ lw $a0, 4($v0) -/* 19C95C 8026E07C 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 19C960 8026E080 2442C070 */ addiu $v0, $v0, %lo(gBattleStatus) -/* 19C964 8026E084 AC450210 */ sw $a1, 0x210($v0) -/* 19C968 8026E088 AC430214 */ sw $v1, 0x214($v0) -/* 19C96C 8026E08C AC440218 */ sw $a0, 0x218($v0) -/* 19C970 8026E090 03E00008 */ jr $ra -/* 19C974 8026E094 24020002 */ addiu $v0, $zero, 2 diff --git a/asm/nonmatchings/code_197F40/SetOwnerID.s b/asm/nonmatchings/code_197F40/SetOwnerID.s deleted file mode 100644 index 7d425d4774..0000000000 --- a/asm/nonmatchings/code_197F40/SetOwnerID.s +++ /dev/null @@ -1,17 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel SetOwnerID -/* 19C708 8026DE28 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 19C70C 8026DE2C AFB00010 */ sw $s0, 0x10($sp) -/* 19C710 8026DE30 0080802D */ daddu $s0, $a0, $zero -/* 19C714 8026DE34 AFBF0014 */ sw $ra, 0x14($sp) -/* 19C718 8026DE38 8E02000C */ lw $v0, 0xc($s0) -/* 19C71C 8026DE3C 0C0B1EAF */ jal get_variable -/* 19C720 8026DE40 8C450000 */ lw $a1, ($v0) -/* 19C724 8026DE44 AE020148 */ sw $v0, 0x148($s0) -/* 19C728 8026DE48 8FBF0014 */ lw $ra, 0x14($sp) -/* 19C72C 8026DE4C 8FB00010 */ lw $s0, 0x10($sp) -/* 19C730 8026DE50 24020002 */ addiu $v0, $zero, 2 -/* 19C734 8026DE54 03E00008 */ jr $ra -/* 19C738 8026DE58 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/count_targets.s b/asm/nonmatchings/code_197F40/count_targets.s deleted file mode 100644 index bd6641a549..0000000000 --- a/asm/nonmatchings/code_197F40/count_targets.s +++ /dev/null @@ -1,18 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel count_targets -/* 197F40 80269660 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 197F44 80269664 AFB00010 */ sw $s0, 0x10($sp) -/* 197F48 80269668 0080802D */ daddu $s0, $a0, $zero -/* 197F4C 8026966C 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 197F50 80269670 2442C070 */ addiu $v0, $v0, %lo(gBattleStatus) -/* 197F54 80269674 AFBF0014 */ sw $ra, 0x14($sp) -/* 197F58 80269678 A0450197 */ sb $a1, 0x197($v0) -/* 197F5C 8026967C 0C098C0B */ jal player_create_target_list -/* 197F60 80269680 AC460184 */ sw $a2, 0x184($v0) -/* 197F64 80269684 8202040C */ lb $v0, 0x40c($s0) -/* 197F68 80269688 8FBF0014 */ lw $ra, 0x14($sp) -/* 197F6C 8026968C 8FB00010 */ lw $s0, 0x10($sp) -/* 197F70 80269690 03E00008 */ jr $ra -/* 197F74 80269694 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/dispatch_damage_event_player_0.s b/asm/nonmatchings/code_197F40/dispatch_damage_event_player_0.s deleted file mode 100644 index 0779c29d00..0000000000 --- a/asm/nonmatchings/code_197F40/dispatch_damage_event_player_0.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel dispatch_damage_event_player_0 -/* 1A1C5C 8027337C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 1A1C60 80273380 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1A1C64 80273384 2442C070 */ addiu $v0, $v0, %lo(gBattleStatus) -/* 1A1C68 80273388 0000302D */ daddu $a2, $zero, $zero -/* 1A1C6C 8027338C AFBF0010 */ sw $ra, 0x10($sp) -/* 1A1C70 80273390 AC400188 */ sw $zero, 0x188($v0) -/* 1A1C74 80273394 0C09CC6F */ jal dispatch_damage_event_player -/* 1A1C78 80273398 A040019A */ sb $zero, 0x19a($v0) -/* 1A1C7C 8027339C 8FBF0010 */ lw $ra, 0x10($sp) -/* 1A1C80 802733A0 03E00008 */ jr $ra -/* 1A1C84 802733A4 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_197F40/dispatch_damage_event_player_1.s b/asm/nonmatchings/code_197F40/dispatch_damage_event_player_1.s deleted file mode 100644 index 9444912291..0000000000 --- a/asm/nonmatchings/code_197F40/dispatch_damage_event_player_1.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel dispatch_damage_event_player_1 -/* 1A1C88 802733A8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 1A1C8C 802733AC AFBF0010 */ sw $ra, 0x10($sp) -/* 1A1C90 802733B0 0C09CC6F */ jal dispatch_damage_event_player -/* 1A1C94 802733B4 24060001 */ addiu $a2, $zero, 1 -/* 1A1C98 802733B8 8FBF0010 */ lw $ra, 0x10($sp) -/* 1A1C9C 802733BC 03E00008 */ jr $ra -/* 1A1CA0 802733C0 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/include/common_structs.h b/include/common_structs.h index 46ad0bec62..7f706ada01 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -603,13 +603,14 @@ typedef struct BattleStatus { /* 0x197 */ u8 targetHomeIndex; /* some sort of home idnex used for target list construction */ /* 0x198 */ u8 powerBounceCounter; /* 0x199 */ u8 wasStatusInflicted; /* during last attack */ - /* 0x19A */ char unk_19A[6]; + /* 0x19A */ s8 unk_19A; + /* 0x19B */ char unk_19B[5]; /* 0x1A0 */ s16 currentTargetID; /* selected? */ /* 0x1A2 */ u8 currentTargetPart; /* selected? */ /* 0x1A3 */ char unk_1A3; /* 0x1A4 */ s16 currentTargetID2; /* 0x1A6 */ u8 currentTargetPart2; - /* 0x1A7 */ u8 battlePhase; + /* 0x1A7 */ s8 battlePhase; /* 0x1A8 */ s16 attackerActorID; /* 0x1AA */ char unk_1AA[4]; /* 0x1AE */ s16 submenuIcons[24]; /* icon IDs */ diff --git a/include/variables.h b/include/variables.h index a66f952e04..d32c0c5277 100644 --- a/include/variables.h +++ b/include/variables.h @@ -20,6 +20,7 @@ extern StaticItem gItemTable[364]; extern s16 gMainGameState; /* 0 = battle, 1 = pause, 2 = world */ extern UNK_FUN_PTR(gCurrentUpdateFunction); +extern s32 gBattleState; extern BattleStatus gBattleStatus; extern ScriptList gWorldScriptList; diff --git a/src/code_197F40.c b/src/code_197F40.c index c7e6e31d61..41398f8678 100644 --- a/src/code_197F40.c +++ b/src/code_197F40.c @@ -1,6 +1,13 @@ #include "common.h" -INCLUDE_ASM(s32, "code_197F40", count_targets); +s8 count_targets(Actor* actor, s32 targetHomeIndex, s32 targetSelectionFlags) { + BattleStatus* battleStatus = &gBattleStatus; + + battleStatus->targetHomeIndex = targetHomeIndex; + battleStatus->currentTargetListFlags = targetSelectionFlags; + player_create_target_list(actor); + return actor->targetListLength; +} INCLUDE_ASM(s32, "code_197F40", get_nearest_home_index); @@ -18,9 +25,15 @@ INCLUDE_ASM(Actor*, "code_197F40", get_actor, s32 actorID); INCLUDE_ASM(s32, "code_197F40", LoadBattleSection); -INCLUDE_ASM(s32, "code_197F40", GetBattlePhase); +ApiStatus GetBattlePhase(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.battlePhase); + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "code_197F40", GetLastElement); +ApiStatus GetLastElement(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.currentAttackElement); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_197F40", func_80269E80); @@ -148,11 +161,28 @@ INCLUDE_ASM(s32, "code_197F40", SetPartScale); INCLUDE_ASM(s32, "code_197F40", GetPartScale); -INCLUDE_ASM(s32, "code_197F40", GetBattleFlags); +ApiStatus GetBattleFlags(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.flags1); + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "code_197F40", SetBattleFlagBits); +ApiStatus SetBattleFlagBits(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Bytecode a0 = *args++; -INCLUDE_ASM(s32, "code_197F40", GetBattleFlags2); + if (get_variable(script, *args)) { + gBattleStatus.flags1 |= a0; + } else { + gBattleStatus.flags1 &= ~a0; + } + + return ApiStatus_DONE2; +} + +ApiStatus GetBattleFlags2(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.flags2); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_197F40", SetBattleFlagBits2); @@ -196,9 +226,15 @@ INCLUDE_ASM(s32, "code_197F40", func_8026DA94); INCLUDE_ASM(s32, "code_197F40", SummonEnemy); -INCLUDE_ASM(s32, "code_197F40", GetOwnerID); +ApiStatus GetOwnerID(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, script->ownerActorID); + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "code_197F40", SetOwnerID); +ApiStatus SetOwnerID(ScriptInstance* script, s32 isInitialCall) { + script->ownerActorID = get_variable(script, *script->ptrReadPos); + return ApiStatus_DONE2; +} ApiStatus ActorExists(ScriptInstance* script, s32 isInitialCall) { Bytecode isExist; @@ -235,15 +271,54 @@ ApiStatus SetBattleInputMask(ScriptInstance* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "code_197F40", SetBattleInputButtons); +ApiStatus SetBattleInputButtons(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + BattleStatus* battleStatus = &gBattleStatus; + s32 currentButtonsDown = *args++; + s32 currentButtonsPressed = *args++; + s32 currentButtonsHeld = *args; -INCLUDE_ASM(s32, "code_197F40", CheckButtonPress); + battleStatus->currentButtonsDown = currentButtonsDown; + battleStatus->currentButtonsPressed = currentButtonsPressed; + battleStatus->currentButtonsHeld = currentButtonsHeld; -INCLUDE_ASM(s32, "code_197F40", CheckButtonHeld); + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "code_197F40", CheckButtonDown); +ApiStatus CheckButtonPress(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Bytecode buttons = *args++; + Bytecode out = *args; + s32 buttonsPressed = gBattleStatus.currentButtonsPressed; -INCLUDE_ASM(s32, "code_197F40", GetBattleState); + set_variable(script, out, (buttonsPressed & buttons) != 0); + return ApiStatus_DONE2; +} + +ApiStatus CheckButtonHeld(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Bytecode buttons = *args++; + Bytecode out = *args; + s32 buttonsHeld = gBattleStatus.currentButtonsHeld; + + set_variable(script, out, (buttonsHeld & buttons) != 0); + return ApiStatus_DONE2; +} + +ApiStatus CheckButtonDown(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Bytecode buttons = *args++; + Bytecode out = *args; + s32 buttonsDown = gBattleStatus.currentButtonsDown; + + set_variable(script, out, (buttonsDown & buttons) != 0); + return ApiStatus_DONE2; +} + +ApiStatus GetBattleState(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleState); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_197F40", func_8026E16C); @@ -253,9 +328,25 @@ INCLUDE_ASM(s32, "code_197F40", func_8026E208); INCLUDE_ASM(s32, "code_197F40", func_8026E260); -INCLUDE_ASM(s32, "code_197F40", PlayerCreateTargetList); +ApiStatus PlayerCreateTargetList(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Actor* actor = get_actor(script->ownerActorID); -INCLUDE_ASM(s32, "code_197F40", EnemyCreateTargetList); + gBattleStatus.currentTargetListFlags = *args; + player_create_target_list(actor); + + return ApiStatus_DONE2; +} + +ApiStatus EnemyCreateTargetList(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Actor* actor = get_actor(script->ownerActorID); + + gBattleStatus.currentTargetListFlags = *args; + enemy_create_target_list(actor); + + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_197F40", InitTargetIterator); @@ -271,7 +362,10 @@ INCLUDE_ASM(s32, "code_197F40", GetOwnerTarget); INCLUDE_ASM(s32, "code_197F40", func_8026E914); -INCLUDE_ASM(s32, "code_197F40", GetPlayerActorID); +ApiStatus GetAttackerActorID(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.attackerActorID); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_197F40", func_8026E9A0); @@ -299,7 +393,10 @@ INCLUDE_ASM(s32, "code_197F40", func_8026F1A0); INCLUDE_ASM(s32, "code_197F40", GetStatusFlags); -INCLUDE_ASM(s32, "code_197F40", RemovePlayerBuffs); +ApiStatus RemovePlayerBuffs(ScriptInstance* script, s32 isInitialCall) { + remove_player_buffs(*script->ptrReadPos); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_197F40", SetPartAlpha); @@ -369,9 +466,17 @@ INCLUDE_ASM(s32, "code_197F40", calc_player_damage_enemy); INCLUDE_ASM(s32, "code_197F40", dispatch_damage_event_player); -INCLUDE_ASM(s32, "code_197F40", dispatch_damage_event_player_0); +void dispatch_damage_event_player_0(s32 damageAmount, Event event) { + BattleStatus* battleStatus = &gBattleStatus; -INCLUDE_ASM(s32, "code_197F40", dispatch_damage_event_player_1); + battleStatus->currentAttackElement = Element_END; + battleStatus->unk_19A = 0; + dispatch_damage_event_player(damageAmount, event, FALSE); +} + +void dispatch_damage_event_player_1(s32 damageAmount, Event event) { + dispatch_damage_event_player(damageAmount, event, TRUE); +} INCLUDE_ASM(s32, "code_197F40", GetMenuSelection); @@ -385,7 +490,11 @@ INCLUDE_ASM(s32, "code_197F40", PlayerRunToGoal); INCLUDE_ASM(s32, "code_197F40", CancelablePlayerRunToGoal); -INCLUDE_ASM(s32, "code_197F40", GetPlayerHP); +ApiStatus GetPlayerHP(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gPlayerData.curHP); + return ApiStatus_DONE2; +} + INCLUDE_ASM(s32, "code_197F40", PlayerDamageEnemy); diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index cfe9b9120e..c2e2448c09 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -242,7 +242,7 @@ GetPartTargetFlags;0x8026D2AC GetPartYaw;0x8026B4C0 GetPartnerPos;0x802CF438 GetPlayerActionState;0x802D1DD0 -GetPlayerActorID;0x8026E974 +GetAttackerActorID;0x8026E974 GetPlayerAnimation;0x802D1E94 GetPlayerHP;0x80274234 GetPlayerPos;0x802D1DFC @@ -1879,3 +1879,7 @@ SetTattleString;0x80045A58 gPauseMenuStrings;0x8026F778 gEffectTable;0x8007F214 gMoveScriptTable;0x80293E80 +gStaticScriptCounter;0x802D9CA0 +D_802D9CA4;0x802D9CA4 +gGlobalTimeSpace;0x802D9CA8 +gBattleState;0x800DC068 diff --git a/undefined_syms.txt b/undefined_syms.txt index 838ecab45b..7a21c80f4c 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -13,9 +13,6 @@ gWorldScriptList = 0x802DA490; gBattleScriptList = 0x802DA690; gNumScripts = 0x802DA488; gCurrentScriptListPtr = 0x802DA890; -gStaticScriptCounter = 0x802D9CA0; -D_802D9CA4 = 0x802D9CA4; -gGlobalTimeSpace = 0x802D9CA8; gPlayerNpcPtr = 0x802D9D20; D_80147574 = 0x80147574; D_8010EBB0 = 0x8010EBB0; @@ -59,6 +56,7 @@ D_8010F094 = 0x8010F094; D_800D9620 = 0x800D9620; +gBattleState = 0x800DC068; gBattleStatus = 0x800DC070; mapScriptLibStart = 0x7E0E80;