From 1e02c566ad926710b010e75182f61dc4c5768adc Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 26 Nov 2020 16:19:34 -0500 Subject: [PATCH] a few more --- .../code_181810/MakeStatusField.s | 39 ------ .../code_181810/MultiplyVec2ByActorScale.s | 41 ------- .../code_181810/MultiplyVec3ByActorScale.s | 51 -------- .../code_181810/ShowBattleChoice.s | 37 ------ .../code_181810/StopLoopingSoundAtActor.s | 42 ------- asm/nonmatchings/code_181810/func_802536A8.s | 41 ------- asm/nonmatchings/code_181810/func_80253734.s | 44 ------- include/common_structs.h | 7 +- src/code_181810.c | 116 ++++++++++++++++-- tools/symbol_addrs.txt | 1 + undefined_syms.txt | 1 + 11 files changed, 115 insertions(+), 305 deletions(-) delete mode 100644 asm/nonmatchings/code_181810/MakeStatusField.s delete mode 100644 asm/nonmatchings/code_181810/MultiplyVec2ByActorScale.s delete mode 100644 asm/nonmatchings/code_181810/MultiplyVec3ByActorScale.s delete mode 100644 asm/nonmatchings/code_181810/ShowBattleChoice.s delete mode 100644 asm/nonmatchings/code_181810/StopLoopingSoundAtActor.s delete mode 100644 asm/nonmatchings/code_181810/func_802536A8.s delete mode 100644 asm/nonmatchings/code_181810/func_80253734.s diff --git a/asm/nonmatchings/code_181810/MakeStatusField.s b/asm/nonmatchings/code_181810/MakeStatusField.s deleted file mode 100644 index eed1f6e4c5..0000000000 --- a/asm/nonmatchings/code_181810/MakeStatusField.s +++ /dev/null @@ -1,39 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel MakeStatusField -/* 182474 80253B94 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 182478 80253B98 AFB10014 */ sw $s1, 0x14($sp) -/* 18247C 80253B9C 0080882D */ daddu $s1, $a0, $zero -/* 182480 80253BA0 AFBF0020 */ sw $ra, 0x20($sp) -/* 182484 80253BA4 AFB3001C */ sw $s3, 0x1c($sp) -/* 182488 80253BA8 AFB20018 */ sw $s2, 0x18($sp) -/* 18248C 80253BAC AFB00010 */ sw $s0, 0x10($sp) -/* 182490 80253BB0 8E30000C */ lw $s0, 0xc($s1) -/* 182494 80253BB4 8E130000 */ lw $s3, ($s0) -/* 182498 80253BB8 26100004 */ addiu $s0, $s0, 4 -/* 18249C 80253BBC 8E120000 */ lw $s2, ($s0) -/* 1824A0 80253BC0 26100004 */ addiu $s0, $s0, 4 -/* 1824A4 80253BC4 8E050000 */ lw $a1, ($s0) -/* 1824A8 80253BC8 0C0B1EAF */ jal get_variable -/* 1824AC 80253BCC 26100004 */ addiu $s0, $s0, 4 -/* 1824B0 80253BD0 0220202D */ daddu $a0, $s1, $zero -/* 1824B4 80253BD4 8E050000 */ lw $a1, ($s0) -/* 1824B8 80253BD8 0C0B1EAF */ jal get_variable -/* 1824BC 80253BDC 0040802D */ daddu $s0, $v0, $zero -/* 1824C0 80253BE0 0220202D */ daddu $a0, $s1, $zero -/* 1824C4 80253BE4 0260282D */ daddu $a1, $s3, $zero -/* 1824C8 80253BE8 00021200 */ sll $v0, $v0, 8 -/* 1824CC 80253BEC 3C038000 */ lui $v1, 0x8000 -/* 1824D0 80253BF0 00431025 */ or $v0, $v0, $v1 -/* 1824D4 80253BF4 02429025 */ or $s2, $s2, $v0 -/* 1824D8 80253BF8 0C0B2026 */ jal set_variable -/* 1824DC 80253BFC 02503025 */ or $a2, $s2, $s0 -/* 1824E0 80253C00 8FBF0020 */ lw $ra, 0x20($sp) -/* 1824E4 80253C04 8FB3001C */ lw $s3, 0x1c($sp) -/* 1824E8 80253C08 8FB20018 */ lw $s2, 0x18($sp) -/* 1824EC 80253C0C 8FB10014 */ lw $s1, 0x14($sp) -/* 1824F0 80253C10 8FB00010 */ lw $s0, 0x10($sp) -/* 1824F4 80253C14 24020002 */ addiu $v0, $zero, 2 -/* 1824F8 80253C18 03E00008 */ jr $ra -/* 1824FC 80253C1C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_181810/MultiplyVec2ByActorScale.s b/asm/nonmatchings/code_181810/MultiplyVec2ByActorScale.s deleted file mode 100644 index 11f1f5a0b5..0000000000 --- a/asm/nonmatchings/code_181810/MultiplyVec2ByActorScale.s +++ /dev/null @@ -1,41 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel MultiplyVec2ByActorScale -/* 182928 80254048 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 18292C 8025404C AFB00010 */ sw $s0, 0x10($sp) -/* 182930 80254050 0080802D */ daddu $s0, $a0, $zero -/* 182934 80254054 AFBF001C */ sw $ra, 0x1c($sp) -/* 182938 80254058 AFB20018 */ sw $s2, 0x18($sp) -/* 18293C 8025405C AFB10014 */ sw $s1, 0x14($sp) -/* 182940 80254060 8E040148 */ lw $a0, 0x148($s0) -/* 182944 80254064 0C09A75B */ jal get_actor -/* 182948 80254068 8E11000C */ lw $s1, 0xc($s0) -/* 18294C 8025406C 0200202D */ daddu $a0, $s0, $zero -/* 182950 80254070 8E250000 */ lw $a1, ($s1) -/* 182954 80254074 0C0B210B */ jal get_float_variable -/* 182958 80254078 0040902D */ daddu $s2, $v0, $zero -/* 18295C 8025407C C6420188 */ lwc1 $f2, 0x188($s2) -/* 182960 80254080 46020002 */ mul.s $f0, $f0, $f2 -/* 182964 80254084 00000000 */ nop -/* 182968 80254088 8E250000 */ lw $a1, ($s1) -/* 18296C 8025408C 44060000 */ mfc1 $a2, $f0 -/* 182970 80254090 0C0B2190 */ jal set_float_variable -/* 182974 80254094 0200202D */ daddu $a0, $s0, $zero -/* 182978 80254098 8E250004 */ lw $a1, 4($s1) -/* 18297C 8025409C 0C0B210B */ jal get_float_variable -/* 182980 802540A0 0200202D */ daddu $a0, $s0, $zero -/* 182984 802540A4 C6420188 */ lwc1 $f2, 0x188($s2) -/* 182988 802540A8 46020002 */ mul.s $f0, $f0, $f2 -/* 18298C 802540AC 00000000 */ nop -/* 182990 802540B0 8E250004 */ lw $a1, 4($s1) -/* 182994 802540B4 44060000 */ mfc1 $a2, $f0 -/* 182998 802540B8 0C0B2190 */ jal set_float_variable -/* 18299C 802540BC 0200202D */ daddu $a0, $s0, $zero -/* 1829A0 802540C0 8FBF001C */ lw $ra, 0x1c($sp) -/* 1829A4 802540C4 8FB20018 */ lw $s2, 0x18($sp) -/* 1829A8 802540C8 8FB10014 */ lw $s1, 0x14($sp) -/* 1829AC 802540CC 8FB00010 */ lw $s0, 0x10($sp) -/* 1829B0 802540D0 24020002 */ addiu $v0, $zero, 2 -/* 1829B4 802540D4 03E00008 */ jr $ra -/* 1829B8 802540D8 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_181810/MultiplyVec3ByActorScale.s b/asm/nonmatchings/code_181810/MultiplyVec3ByActorScale.s deleted file mode 100644 index f44de1f59a..0000000000 --- a/asm/nonmatchings/code_181810/MultiplyVec3ByActorScale.s +++ /dev/null @@ -1,51 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel MultiplyVec3ByActorScale -/* 1829BC 802540DC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 1829C0 802540E0 AFB00010 */ sw $s0, 0x10($sp) -/* 1829C4 802540E4 0080802D */ daddu $s0, $a0, $zero -/* 1829C8 802540E8 AFBF001C */ sw $ra, 0x1c($sp) -/* 1829CC 802540EC AFB20018 */ sw $s2, 0x18($sp) -/* 1829D0 802540F0 AFB10014 */ sw $s1, 0x14($sp) -/* 1829D4 802540F4 8E040148 */ lw $a0, 0x148($s0) -/* 1829D8 802540F8 0C09A75B */ jal get_actor -/* 1829DC 802540FC 8E11000C */ lw $s1, 0xc($s0) -/* 1829E0 80254100 0200202D */ daddu $a0, $s0, $zero -/* 1829E4 80254104 8E250000 */ lw $a1, ($s1) -/* 1829E8 80254108 0C0B210B */ jal get_float_variable -/* 1829EC 8025410C 0040902D */ daddu $s2, $v0, $zero -/* 1829F0 80254110 C6420188 */ lwc1 $f2, 0x188($s2) -/* 1829F4 80254114 46020002 */ mul.s $f0, $f0, $f2 -/* 1829F8 80254118 00000000 */ nop -/* 1829FC 8025411C 8E250000 */ lw $a1, ($s1) -/* 182A00 80254120 44060000 */ mfc1 $a2, $f0 -/* 182A04 80254124 0C0B2190 */ jal set_float_variable -/* 182A08 80254128 0200202D */ daddu $a0, $s0, $zero -/* 182A0C 8025412C 8E250004 */ lw $a1, 4($s1) -/* 182A10 80254130 0C0B210B */ jal get_float_variable -/* 182A14 80254134 0200202D */ daddu $a0, $s0, $zero -/* 182A18 80254138 C6420188 */ lwc1 $f2, 0x188($s2) -/* 182A1C 8025413C 46020002 */ mul.s $f0, $f0, $f2 -/* 182A20 80254140 00000000 */ nop -/* 182A24 80254144 8E250004 */ lw $a1, 4($s1) -/* 182A28 80254148 44060000 */ mfc1 $a2, $f0 -/* 182A2C 8025414C 0C0B2190 */ jal set_float_variable -/* 182A30 80254150 0200202D */ daddu $a0, $s0, $zero -/* 182A34 80254154 8E250008 */ lw $a1, 8($s1) -/* 182A38 80254158 0C0B210B */ jal get_float_variable -/* 182A3C 8025415C 0200202D */ daddu $a0, $s0, $zero -/* 182A40 80254160 C6420188 */ lwc1 $f2, 0x188($s2) -/* 182A44 80254164 46020002 */ mul.s $f0, $f0, $f2 -/* 182A48 80254168 00000000 */ nop -/* 182A4C 8025416C 8E250008 */ lw $a1, 8($s1) -/* 182A50 80254170 44060000 */ mfc1 $a2, $f0 -/* 182A54 80254174 0C0B2190 */ jal set_float_variable -/* 182A58 80254178 0200202D */ daddu $a0, $s0, $zero -/* 182A5C 8025417C 8FBF001C */ lw $ra, 0x1c($sp) -/* 182A60 80254180 8FB20018 */ lw $s2, 0x18($sp) -/* 182A64 80254184 8FB10014 */ lw $s1, 0x14($sp) -/* 182A68 80254188 8FB00010 */ lw $s0, 0x10($sp) -/* 182A6C 8025418C 24020002 */ addiu $v0, $zero, 2 -/* 182A70 80254190 03E00008 */ jr $ra -/* 182A74 80254194 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_181810/ShowBattleChoice.s b/asm/nonmatchings/code_181810/ShowBattleChoice.s deleted file mode 100644 index 98bca31fee..0000000000 --- a/asm/nonmatchings/code_181810/ShowBattleChoice.s +++ /dev/null @@ -1,37 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel ShowBattleChoice -/* 181E18 80253538 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 181E1C 8025353C AFB00010 */ sw $s0, 0x10($sp) -/* 181E20 80253540 0080802D */ daddu $s0, $a0, $zero -/* 181E24 80253544 AFBF0014 */ sw $ra, 0x14($sp) -/* 181E28 80253548 10A00009 */ beqz $a1, .L80253570 -/* 181E2C 8025354C 8E02000C */ lw $v0, 0xc($s0) -/* 181E30 80253550 0C0B1EAF */ jal get_variable -/* 181E34 80253554 8C450000 */ lw $a1, ($v0) -/* 181E38 80253558 0040202D */ daddu $a0, $v0, $zero -/* 181E3C 8025355C 26050074 */ addiu $a1, $s0, 0x74 -/* 181E40 80253560 0C049640 */ jal load_string -/* 181E44 80253564 AE000074 */ sw $zero, 0x74($s0) -/* 181E48 80253568 3C01802A */ lui $at, 0x802a -/* 181E4C 8025356C AC22FA64 */ sw $v0, -0x59c($at) -.L80253570: -/* 181E50 80253570 8E030074 */ lw $v1, 0x74($s0) -/* 181E54 80253574 24020001 */ addiu $v0, $zero, 1 -/* 181E58 80253578 1462000A */ bne $v1, $v0, .L802535A4 -/* 181E5C 8025357C 0000102D */ daddu $v0, $zero, $zero -/* 181E60 80253580 3C02802A */ lui $v0, 0x802a -/* 181E64 80253584 8C42FA64 */ lw $v0, -0x59c($v0) -/* 181E68 80253588 3C04802A */ lui $a0, %hi(gSpeakingActorPrintCtx) -/* 181E6C 8025358C 8C84FA60 */ lw $a0, %lo(gSpeakingActorPrintCtx)($a0) -/* 181E70 80253590 904304E8 */ lbu $v1, 0x4e8($v0) -/* 181E74 80253594 24020001 */ addiu $v0, $zero, 1 -/* 181E78 80253598 A08304E8 */ sb $v1, 0x4e8($a0) -/* 181E7C 8025359C 306300FF */ andi $v1, $v1, 0xff -/* 181E80 802535A0 AE030084 */ sw $v1, 0x84($s0) -.L802535A4: -/* 181E84 802535A4 8FBF0014 */ lw $ra, 0x14($sp) -/* 181E88 802535A8 8FB00010 */ lw $s0, 0x10($sp) -/* 181E8C 802535AC 03E00008 */ jr $ra -/* 181E90 802535B0 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_181810/StopLoopingSoundAtActor.s b/asm/nonmatchings/code_181810/StopLoopingSoundAtActor.s deleted file mode 100644 index e4d7744735..0000000000 --- a/asm/nonmatchings/code_181810/StopLoopingSoundAtActor.s +++ /dev/null @@ -1,42 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel StopLoopingSoundAtActor -/* 1822F8 80253A18 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 1822FC 80253A1C AFB20018 */ sw $s2, 0x18($sp) -/* 182300 80253A20 0080902D */ daddu $s2, $a0, $zero -/* 182304 80253A24 AFBF001C */ sw $ra, 0x1c($sp) -/* 182308 80253A28 AFB10014 */ sw $s1, 0x14($sp) -/* 18230C 80253A2C AFB00010 */ sw $s0, 0x10($sp) -/* 182310 80253A30 8E50000C */ lw $s0, 0xc($s2) -/* 182314 80253A34 8E050000 */ lw $a1, ($s0) -/* 182318 80253A38 0C0B1EAF */ jal get_variable -/* 18231C 80253A3C 26100004 */ addiu $s0, $s0, 4 -/* 182320 80253A40 0040882D */ daddu $s1, $v0, $zero -/* 182324 80253A44 8E050000 */ lw $a1, ($s0) -/* 182328 80253A48 0C0B1EAF */ jal get_variable -/* 18232C 80253A4C 0240202D */ daddu $a0, $s2, $zero -/* 182330 80253A50 0040802D */ daddu $s0, $v0, $zero -/* 182334 80253A54 2402FF81 */ addiu $v0, $zero, -0x7f -/* 182338 80253A58 16220002 */ bne $s1, $v0, .L80253A64 -/* 18233C 80253A5C 00000000 */ nop -/* 182340 80253A60 8E510148 */ lw $s1, 0x148($s2) -.L80253A64: -/* 182344 80253A64 0C09A75B */ jal get_actor -/* 182348 80253A68 0220202D */ daddu $a0, $s1, $zero -/* 18234C 80253A6C 00101880 */ sll $v1, $s0, 2 -/* 182350 80253A70 00438021 */ addu $s0, $v0, $v1 -/* 182354 80253A74 8E040438 */ lw $a0, 0x438($s0) -/* 182358 80253A78 10800005 */ beqz $a0, .L80253A90 -/* 18235C 80253A7C 24020002 */ addiu $v0, $zero, 2 -/* 182360 80253A80 0C05271B */ jal stop_sound -/* 182364 80253A84 00000000 */ nop -/* 182368 80253A88 AE000438 */ sw $zero, 0x438($s0) -/* 18236C 80253A8C 24020002 */ addiu $v0, $zero, 2 -.L80253A90: -/* 182370 80253A90 8FBF001C */ lw $ra, 0x1c($sp) -/* 182374 80253A94 8FB20018 */ lw $s2, 0x18($sp) -/* 182378 80253A98 8FB10014 */ lw $s1, 0x14($sp) -/* 18237C 80253A9C 8FB00010 */ lw $s0, 0x10($sp) -/* 182380 80253AA0 03E00008 */ jr $ra -/* 182384 80253AA4 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_181810/func_802536A8.s b/asm/nonmatchings/code_181810/func_802536A8.s deleted file mode 100644 index 1e885b5114..0000000000 --- a/asm/nonmatchings/code_181810/func_802536A8.s +++ /dev/null @@ -1,41 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802536A8 -/* 181F88 802536A8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 181F8C 802536AC AFBF0018 */ sw $ra, 0x18($sp) -/* 181F90 802536B0 AFB10014 */ sw $s1, 0x14($sp) -/* 181F94 802536B4 AFB00010 */ sw $s0, 0x10($sp) -/* 181F98 802536B8 8C82000C */ lw $v0, 0xc($a0) -/* 181F9C 802536BC 3C10800E */ lui $s0, %hi(gBattleStatus) -/* 181FA0 802536C0 2610C070 */ addiu $s0, $s0, %lo(gBattleStatus) -/* 181FA4 802536C4 8C450000 */ lw $a1, ($v0) -/* 181FA8 802536C8 0C0B1EAF */ jal get_variable -/* 181FAC 802536CC 0200882D */ daddu $s1, $s0, $zero -/* 181FB0 802536D0 1040000A */ beqz $v0, .L802536FC -/* 181FB4 802536D4 2403FF7F */ addiu $v1, $zero, -0x81 -/* 181FB8 802536D8 3C02800A */ lui $v0, %hi(D_8009A650) -/* 181FBC 802536DC 2442A650 */ addiu $v0, $v0, %lo(D_8009A650) -/* 181FC0 802536E0 92030092 */ lbu $v1, 0x92($s0) -/* 181FC4 802536E4 8C440000 */ lw $a0, ($v0) -/* 181FC8 802536E8 34630001 */ ori $v1, $v1, 1 -/* 181FCC 802536EC 34840080 */ ori $a0, $a0, 0x80 -/* 181FD0 802536F0 A2030092 */ sb $v1, 0x92($s0) -/* 181FD4 802536F4 08094DC7 */ j .L8025371C -/* 181FD8 802536F8 AC440000 */ sw $a0, ($v0) -.L802536FC: -/* 181FDC 802536FC 92220092 */ lbu $v0, 0x92($s1) -/* 181FE0 80253700 3C04800A */ lui $a0, %hi(D_8009A650) -/* 181FE4 80253704 2484A650 */ addiu $a0, $a0, %lo(D_8009A650) -/* 181FE8 80253708 304200FE */ andi $v0, $v0, 0xfe -/* 181FEC 8025370C A2220092 */ sb $v0, 0x92($s1) -/* 181FF0 80253710 8C820000 */ lw $v0, ($a0) -/* 181FF4 80253714 00431024 */ and $v0, $v0, $v1 -/* 181FF8 80253718 AC820000 */ sw $v0, ($a0) -.L8025371C: -/* 181FFC 8025371C 8FBF0018 */ lw $ra, 0x18($sp) -/* 182000 80253720 8FB10014 */ lw $s1, 0x14($sp) -/* 182004 80253724 8FB00010 */ lw $s0, 0x10($sp) -/* 182008 80253728 24020002 */ addiu $v0, $zero, 2 -/* 18200C 8025372C 03E00008 */ jr $ra -/* 182010 80253730 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_181810/func_80253734.s b/asm/nonmatchings/code_181810/func_80253734.s deleted file mode 100644 index 664c366da2..0000000000 --- a/asm/nonmatchings/code_181810/func_80253734.s +++ /dev/null @@ -1,44 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80253734 -/* 182014 80253734 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 182018 80253738 AFBF0014 */ sw $ra, 0x14($sp) -/* 18201C 8025373C AFB00010 */ sw $s0, 0x10($sp) -/* 182020 80253740 8C82000C */ lw $v0, 0xc($a0) -/* 182024 80253744 0C0B1EAF */ jal get_variable -/* 182028 80253748 8C450000 */ lw $a1, ($v0) -/* 18202C 8025374C 3C10800E */ lui $s0, %hi(gBattleStatus) -/* 182030 80253750 2610C070 */ addiu $s0, $s0, %lo(gBattleStatus) -/* 182034 80253754 0040182D */ daddu $v1, $v0, $zero -/* 182038 80253758 24040001 */ addiu $a0, $zero, 1 -/* 18203C 8025375C 10640012 */ beq $v1, $a0, .L802537A8 -/* 182040 80253760 28620002 */ slti $v0, $v1, 2 -/* 182044 80253764 10400005 */ beqz $v0, .L8025377C -/* 182048 80253768 24020002 */ addiu $v0, $zero, 2 -/* 18204C 8025376C 10600009 */ beqz $v1, .L80253794 -/* 182050 80253770 2402FFFF */ addiu $v0, $zero, -1 -/* 182054 80253774 08094DEB */ j .L802537AC -/* 182058 80253778 00000000 */ nop -.L8025377C: -/* 18205C 8025377C 10620007 */ beq $v1, $v0, .L8025379C -/* 182060 80253780 24020003 */ addiu $v0, $zero, 3 -/* 182064 80253784 50620009 */ beql $v1, $v0, .L802537AC -/* 182068 80253788 A2040432 */ sb $a0, 0x432($s0) -/* 18206C 8025378C 08094DEB */ j .L802537AC -/* 182070 80253790 00000000 */ nop -.L80253794: -/* 182074 80253794 08094DEB */ j .L802537AC -/* 182078 80253798 A2020432 */ sb $v0, 0x432($s0) -.L8025379C: -/* 18207C 8025379C 2402FFFE */ addiu $v0, $zero, -2 -/* 182080 802537A0 08094DEB */ j .L802537AC -/* 182084 802537A4 A2020432 */ sb $v0, 0x432($s0) -.L802537A8: -/* 182088 802537A8 A2040432 */ sb $a0, 0x432($s0) -.L802537AC: -/* 18208C 802537AC 8FBF0014 */ lw $ra, 0x14($sp) -/* 182090 802537B0 8FB00010 */ lw $s0, 0x10($sp) -/* 182094 802537B4 24020002 */ addiu $v0, $zero, 2 -/* 182098 802537B8 03E00008 */ jr $ra -/* 18209C 802537BC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/include/common_structs.h b/include/common_structs.h index bb65e10fcf..de7ca66817 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -533,7 +533,9 @@ typedef struct BattleStatus { /* 0x08B */ u8 hustleTurns; /* numTurns from hustle drink, normally 0 */ /* 0x08C */ char unk_8C[2]; /* 0x08E */ u8 initialEnemyCount; /* used for SP award bonus */ - /* 0x08F */ char unk_8F[7]; + /* 0x08F */ char unk_8F[3]; + /* 0x092 */ s8 unk_92; + /* 0x093 */ char unk_93[3]; /* 0x096 */ s8 hammerCharge; /* 0x097 */ s8 jumpCharge; /* 0x098 */ char unk_98; @@ -612,7 +614,8 @@ typedef struct BattleStatus { /* 0x330 */ s32 pushInputBuffer[64]; /* 0x430 */ u8 holdInputBufferPos; /* 0x431 */ u8 inputBufferPos; - /* 0x432 */ char unk_432[2]; + /* 0x432 */ s8 unk_432; + /* 0x433 */ char unk_433; /* 0x434 */ s32 unk_434; /* 0x438 */ FGModelData* foregroundModelData; /* 0x43C */ BattleStatusUnk* unk_43C; diff --git a/src/code_181810.c b/src/code_181810.c index b2544cc037..5ecd951741 100644 --- a/src/code_181810.c +++ b/src/code_181810.c @@ -1,6 +1,7 @@ #include "common.h" extern PrintContext* gSpeakingActorPrintCtx; +extern PrintContext* D_8029FA64; extern s32 gSpeakingActorPrintIsDone; // unk_08 extern s32 gSpeakingActorTalkAnim; extern s32 gSpeakingActorIdleAnim; @@ -114,7 +115,27 @@ INCLUDE_ASM(s32, "code_181810", ActorSpeak); INCLUDE_ASM(s32, "code_181810", EndActorSpeech); -INCLUDE_ASM(s32, "code_181810", ShowBattleChoice); +ApiStatus ShowBattleChoice(ScriptInstance *script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + + if (isInitialCall) { + s32 stringID = get_variable(script, *args); + + script->functionTemp[1].s = 0; + D_8029FA64 = load_string(stringID, &script->functionTemp[1].s); + } + + if (script->functionTemp[1].s == 1) { + u8 unk_4E8 = D_8029FA64->unk_4E8; + + gSpeakingActorPrintCtx->unk_4E8 = D_8029FA64->unk_4E8; + script->varTable[0] = unk_4E8; + + return ApiStatus_DONE1; + } + + return ApiStatus_BLOCK; +} ApiStatus func_802535B4(ScriptInstance* script, s32 isInitialCall) { if (get_variable(script, *script->ptrReadPos)) { @@ -132,9 +153,43 @@ ApiStatus OverrideBattleDmaDest(ScriptInstance* script, s32 isInitialCall) { INCLUDE_ASM(s32, "code_181810", LoadBattleDmaData); -INCLUDE_ASM(s32, "code_181810", func_802536A8); +ApiStatus func_802536A8(ScriptInstance* script, s32 isInitialCall) { + BattleStatus* battleStatus = BATTLE_STATUS; + BattleStatus* battleStatus2 = battleStatus; -INCLUDE_ASM(s32, "code_181810", func_80253734); + if (get_variable(script, *script->ptrReadPos) != 0) { + battleStatus2->unk_92 |= 1; + D_8009A650[0] |= 0x80; + } else { + battleStatus2->unk_92 &= ~1; + D_8009A650[0] &= ~0x80; + } + + return ApiStatus_DONE2; +} + + +ApiStatus func_80253734(ScriptInstance* script, s32 isInitialCall) { + BattleStatus* battleStatus = BATTLE_STATUS; + s32 val = get_variable(script, *script->ptrReadPos); + + switch (val) { + case 0: + battleStatus->unk_432 = -1; + break; + case 1: + battleStatus->unk_432 = 1; + break; + case 2: + battleStatus->unk_432 = -2; + break; + case 3: + battleStatus->unk_432 = 1; + break; + } + + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_181810", func_802537C0); @@ -158,7 +213,26 @@ INCLUDE_ASM(s32, "code_181810", PlaySoundAtPart); INCLUDE_ASM(s32, "code_181810", PlayLoopingSoundAtActor); -INCLUDE_ASM(s32, "code_181810", StopLoopingSoundAtActor); +ApiStatus StopLoopingSoundAtActor(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + ActorID actorID = get_variable(script, *args++); + s32 idx = get_variable(script, *args++); + Actor* actor; + + if (actorID == ActorID_SELF) { + actorID = script->owner1.actorID; + } + + actor = get_actor(actorID); + + if (actor->x[idx] == 0) { + return ApiStatus_DONE2; + } + + stop_sound(actor->x[idx]); + actor->x[idx] = 0; + return ApiStatus_DONE2; +} ApiStatus SetForegroundModelsVisibleUnsafe(ScriptInstance* script, s32 isInitialCall) { if (get_variable(script, *script->ptrReadPos)) { @@ -188,7 +262,16 @@ ApiStatus func_80253B30(ScriptInstance* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "code_181810", MakeStatusField); +ApiStatus MakeStatusField(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + s32 outVar = *args++; + s32 a = *args++; + s32 b = get_variable(script, *args++); + s32 c = get_variable(script, *args++); + + set_variable(script, outVar, a | 0x80000000 | (c << 8) | b); + return ApiStatus_DONE2; +} s32 is_actor_hp_bar_visible(Actor* actor) { BattleStatus* battleStatus = BATTLE_STATUS; @@ -232,13 +315,30 @@ ApiStatus MultiplyByActorScale(ScriptInstance* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Actor* actor = get_actor(script->owner1.actorID); - set_float_variable(script, *args, get_float_variable(script, *args) * actor->scalingFactor); + set_float_variable(script, args[0], get_float_variable(script, args[0]) * actor->scalingFactor); return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "code_181810", MultiplyVec2ByActorScale); +ApiStatus MultiplyVec2ByActorScale(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Actor* actor = get_actor(script->owner1.actorID); -INCLUDE_ASM(s32, "code_181810", MultiplyVec3ByActorScale); + set_float_variable(script, args[0], get_float_variable(script, args[0]) * actor->scalingFactor); + set_float_variable(script, args[1], get_float_variable(script, args[1]) * actor->scalingFactor); + + return ApiStatus_DONE2; +} + +ApiStatus MultiplyVec3yActorScale(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Actor* actor = get_actor(script->owner1.actorID); + + set_float_variable(script, args[0], get_float_variable(script, args[0]) * actor->scalingFactor); + set_float_variable(script, args[1], get_float_variable(script, args[1]) * actor->scalingFactor); + set_float_variable(script, args[2], get_float_variable(script, args[2]) * actor->scalingFactor); + + return ApiStatus_DONE2; +} ApiStatus ApplyShrinkFromOwner(ScriptInstance* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index dda23ceeca..93a0c4fec6 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1440,6 +1440,7 @@ DoRecover = 0x8029BFA0; DoAirLift = 0x8029C37C; DoBlowAway = 0x8029C4A8; gSpeakingActorPrintCtx = 0x8029FA60; +D_8029FA64 = 0x8029FA64; gSpeakingActorPrintIsDone = 0x8029FA68; gSpeakingActorTalkAnim = 0x8029FA6C; gSpeakingActorIdleAnim = 0x8029FA70; diff --git a/undefined_syms.txt b/undefined_syms.txt index 49a9259557..313f9950d8 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -61,6 +61,7 @@ D_8010F094 = 0x8010F094; D_800D9620 = 0x800D9620; gSpeakingActorPrintCtx = 0x8029FA60; +D_8029FA64 = 0x8029FA64; gSpeakingActorPrintIsDone = 0x8029FA68; gSpeakingActorTalkAnim = 0x8029FA6C; gSpeakingActorIdleAnim = 0x8029FA70;