From f45c24f7c84301793a8d4d9491fb2efe07add7fc Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 15 Oct 2020 18:11:56 -0400 Subject: [PATCH 1/4] Some shtuff --- Makefile | 3 + .../code_196AA0/GetActionSuccess.s | 15 -- .../code_196AA0/GetActionSuccessCopy.s | 15 -- asm/nonmatchings/code_196AA0/GetBlockResult.s | 15 -- .../code_196AA0/SetActionSuccess.s | 15 -- asm/nonmatchings/code_196AA0/func_802693F0.s | 12 - .../code_1AF120/GetDamageIntensity.s | 23 -- asm/nonmatchings/code_E21870/func_802B704C.s | 67 ++++++ asm/nonmatchings/code_E21870/func_802B7140.s | 41 ++++ asm/nonmatchings/code_E21870/func_802B71D4.s | 209 ++++++++++++++++++ asm/nonmatchings/code_E21870/func_802B74F0.s | 95 ++++++++ .../os/nusys/nuContRmbMgr/func_8005FB10.s | 109 --------- include/common_structs.h | 18 +- include/variables.h | 6 + src/code_196AA0.c | 25 ++- src/code_197F40.c | 2 +- src/code_1AF120.c | 25 ++- src/code_E21870.c | 21 ++ tools/splat.yaml | 16 +- tools/symbol_addrs.txt | 2 + undefined_funcs.txt | 7 +- undefined_syms.txt | 2 + 22 files changed, 522 insertions(+), 221 deletions(-) delete mode 100644 asm/nonmatchings/code_196AA0/GetActionSuccess.s delete mode 100644 asm/nonmatchings/code_196AA0/GetActionSuccessCopy.s delete mode 100644 asm/nonmatchings/code_196AA0/GetBlockResult.s delete mode 100644 asm/nonmatchings/code_196AA0/SetActionSuccess.s delete mode 100644 asm/nonmatchings/code_196AA0/func_802693F0.s delete mode 100644 asm/nonmatchings/code_1AF120/GetDamageIntensity.s create mode 100644 asm/nonmatchings/code_E21870/func_802B704C.s create mode 100644 asm/nonmatchings/code_E21870/func_802B7140.s create mode 100644 asm/nonmatchings/code_E21870/func_802B71D4.s create mode 100644 asm/nonmatchings/code_E21870/func_802B74F0.s delete mode 100644 asm/nonmatchings/os/nusys/nuContRmbMgr/func_8005FB10.s create mode 100644 src/code_E21870.c diff --git a/Makefile b/Makefile index 3df2b8bec2..7d3b41a03c 100644 --- a/Makefile +++ b/Makefile @@ -70,6 +70,9 @@ submodules: split: rm -rf $(DATA_DIRS) && ./tools/n64splat/split.py baserom.z64 tools/splat.yaml . --modes ld bin +split-all: + rm -rf $(DATA_DIRS) && ./tools/n64splat/split.py baserom.z64 tools/splat.yaml . --modes all + $(TARGET).ld: tools/splat.yaml ./tools/n64splat/split.py baserom.z64 tools/splat.yaml . --modes ld diff --git a/asm/nonmatchings/code_196AA0/GetActionSuccess.s b/asm/nonmatchings/code_196AA0/GetActionSuccess.s deleted file mode 100644 index 437aaf4114..0000000000 --- a/asm/nonmatchings/code_196AA0/GetActionSuccess.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetActionSuccess -/* 197B74 80269294 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 197B78 80269298 AFBF0010 */ sw $ra, 0x10($sp) -/* 197B7C 8026929C 8C82000C */ lw $v0, 0xc($a0) -/* 197B80 802692A0 3C06800E */ lui $a2, 0x800e -/* 197B84 802692A4 80C6C0F1 */ lb $a2, -0x3f0f($a2) -/* 197B88 802692A8 0C0B2026 */ jal set_variable -/* 197B8C 802692AC 8C450000 */ lw $a1, ($v0) -/* 197B90 802692B0 8FBF0010 */ lw $ra, 0x10($sp) -/* 197B94 802692B4 24020002 */ addiu $v0, $zero, 2 -/* 197B98 802692B8 03E00008 */ jr $ra -/* 197B9C 802692BC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_196AA0/GetActionSuccessCopy.s b/asm/nonmatchings/code_196AA0/GetActionSuccessCopy.s deleted file mode 100644 index 9cddb104f7..0000000000 --- a/asm/nonmatchings/code_196AA0/GetActionSuccessCopy.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetActionSuccessCopy -/* 197DD8 802694F8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 197DDC 802694FC AFBF0010 */ sw $ra, 0x10($sp) -/* 197DE0 80269500 8C82000C */ lw $v0, 0xc($a0) -/* 197DE4 80269504 3C06800E */ lui $a2, 0x800e -/* 197DE8 80269508 80C6C0F1 */ lb $a2, -0x3f0f($a2) -/* 197DEC 8026950C 0C0B2026 */ jal set_variable -/* 197DF0 80269510 8C450000 */ lw $a1, ($v0) -/* 197DF4 80269514 8FBF0010 */ lw $ra, 0x10($sp) -/* 197DF8 80269518 24020002 */ addiu $v0, $zero, 2 -/* 197DFC 8026951C 03E00008 */ jr $ra -/* 197E00 80269520 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_196AA0/GetBlockResult.s b/asm/nonmatchings/code_196AA0/GetBlockResult.s deleted file mode 100644 index 4c624ac947..0000000000 --- a/asm/nonmatchings/code_196AA0/GetBlockResult.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetBlockResult -/* 197E5C 8026957C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 197E60 80269580 AFBF0010 */ sw $ra, 0x10($sp) -/* 197E64 80269584 8C82000C */ lw $v0, 0xc($a0) -/* 197E68 80269588 3C06800E */ lui $a2, 0x800e -/* 197E6C 8026958C 80C6C0F7 */ lb $a2, -0x3f09($a2) -/* 197E70 80269590 0C0B2026 */ jal set_variable -/* 197E74 80269594 8C450000 */ lw $a1, ($v0) -/* 197E78 80269598 8FBF0010 */ lw $ra, 0x10($sp) -/* 197E7C 8026959C 24020002 */ addiu $v0, $zero, 2 -/* 197E80 802695A0 03E00008 */ jr $ra -/* 197E84 802695A4 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_196AA0/SetActionSuccess.s b/asm/nonmatchings/code_196AA0/SetActionSuccess.s deleted file mode 100644 index 0be12fe810..0000000000 --- a/asm/nonmatchings/code_196AA0/SetActionSuccess.s +++ /dev/null @@ -1,15 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel SetActionSuccess -/* 197BA0 802692C0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 197BA4 802692C4 AFBF0010 */ sw $ra, 0x10($sp) -/* 197BA8 802692C8 8C82000C */ lw $v0, 0xc($a0) -/* 197BAC 802692CC 0C0B1EAF */ jal get_variable -/* 197BB0 802692D0 8C450000 */ lw $a1, ($v0) -/* 197BB4 802692D4 8FBF0010 */ lw $ra, 0x10($sp) -/* 197BB8 802692D8 3C01800E */ lui $at, 0x800e -/* 197BBC 802692DC A022C0F1 */ sb $v0, -0x3f0f($at) -/* 197BC0 802692E0 24020002 */ addiu $v0, $zero, 2 -/* 197BC4 802692E4 03E00008 */ jr $ra -/* 197BC8 802692E8 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_196AA0/func_802693F0.s b/asm/nonmatchings/code_196AA0/func_802693F0.s deleted file mode 100644 index 38a4d190cc..0000000000 --- a/asm/nonmatchings/code_196AA0/func_802693F0.s +++ /dev/null @@ -1,12 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802693F0 -/* 197CD0 802693F0 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 197CD4 802693F4 2442C070 */ addiu $v0, $v0, %lo(gBattleStatus) -/* 197CD8 802693F8 8C430000 */ lw $v1, ($v0) -/* 197CDC 802693FC 2404BFFF */ addiu $a0, $zero, -0x4001 -/* 197CE0 80269400 00641824 */ and $v1, $v1, $a0 -/* 197CE4 80269404 AC430000 */ sw $v1, ($v0) -/* 197CE8 80269408 03E00008 */ jr $ra -/* 197CEC 8026940C 24020002 */ addiu $v0, $zero, 2 diff --git a/asm/nonmatchings/code_1AF120/GetDamageIntensity.s b/asm/nonmatchings/code_1AF120/GetDamageIntensity.s deleted file mode 100644 index f790801297..0000000000 --- a/asm/nonmatchings/code_1AF120/GetDamageIntensity.s +++ /dev/null @@ -1,23 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetDamageIntensity -/* 1AF120 80280840 3C03800E */ lui $v1, 0x800e -/* 1AF124 80280844 8463C1F0 */ lh $v1, -0x3e10($v1) -/* 1AF128 80280848 28620004 */ slti $v0, $v1, 4 -/* 1AF12C 8028084C 10400003 */ beqz $v0, .L8028085C -/* 1AF130 80280850 28620007 */ slti $v0, $v1, 7 -/* 1AF134 80280854 080A021E */ j .L80280878 -/* 1AF138 80280858 AC800084 */ sw $zero, 0x84($a0) -.L8028085C: -/* 1AF13C 8028085C 14400005 */ bnez $v0, .L80280874 -/* 1AF140 80280860 24020001 */ addiu $v0, $zero, 1 -/* 1AF144 80280864 2862000A */ slti $v0, $v1, 0xa -/* 1AF148 80280868 50400002 */ beql $v0, $zero, .L80280874 -/* 1AF14C 8028086C 24020003 */ addiu $v0, $zero, 3 -/* 1AF150 80280870 24020002 */ addiu $v0, $zero, 2 -.L80280874: -/* 1AF154 80280874 AC820084 */ sw $v0, 0x84($a0) -.L80280878: -/* 1AF158 80280878 03E00008 */ jr $ra -/* 1AF15C 8028087C 24020002 */ addiu $v0, $zero, 2 diff --git a/asm/nonmatchings/code_E21870/func_802B704C.s b/asm/nonmatchings/code_E21870/func_802B704C.s new file mode 100644 index 0000000000..55faab2529 --- /dev/null +++ b/asm/nonmatchings/code_E21870/func_802B704C.s @@ -0,0 +1,67 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802B704C +/* E218BC 802B704C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* E218C0 802B7050 AFB00010 */ sw $s0, 0x10($sp) +/* E218C4 802B7054 3C108011 */ lui $s0, %hi(gPlayerStatus) +/* E218C8 802B7058 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus) +/* E218CC 802B705C AFBF0014 */ sw $ra, 0x14($sp) +/* E218D0 802B7060 0C011052 */ jal func_80044148 +/* E218D4 802B7064 00000000 */ nop +/* E218D8 802B7068 14400031 */ bnez $v0, .L802B7130 +/* E218DC 802B706C 0000102D */ daddu $v0, $zero, $zero +/* E218E0 802B7070 8E020000 */ lw $v0, ($s0) +/* E218E4 802B7074 30420020 */ andi $v0, $v0, 0x20 +/* E218E8 802B7078 1440002D */ bnez $v0, .L802B7130 +/* E218EC 802B707C 0000102D */ daddu $v0, $zero, $zero +/* E218F0 802B7080 8E020004 */ lw $v0, 4($s0) +/* E218F4 802B7084 30420080 */ andi $v0, $v0, 0x80 +/* E218F8 802B7088 10400029 */ beqz $v0, .L802B7130 +/* E218FC 802B708C 0000102D */ daddu $v0, $zero, $zero +/* E21900 802B7090 0C03814E */ jal func_800E0538 +/* E21904 802B7094 00000000 */ nop +/* E21908 802B7098 14400025 */ bnez $v0, .L802B7130 +/* E2190C 802B709C 0000102D */ daddu $v0, $zero, $zero +/* E21910 802B70A0 0C0381B6 */ jal func_800E06D8 +/* E21914 802B70A4 00000000 */ nop +/* E21918 802B70A8 14400021 */ bnez $v0, .L802B7130 +/* E2191C 802B70AC 0000102D */ daddu $v0, $zero, $zero +/* E21920 802B70B0 3C028007 */ lui $v0, %hi(gGameStatusPtr) +/* E21924 802B70B4 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) +/* E21928 802B70B8 3C049249 */ lui $a0, 0x9249 +/* E2192C 802B70BC 9443008C */ lhu $v1, 0x8c($v0) +/* E21930 802B70C0 34842493 */ ori $a0, $a0, 0x2493 +/* E21934 802B70C4 00031C00 */ sll $v1, $v1, 0x10 +/* E21938 802B70C8 00031403 */ sra $v0, $v1, 0x10 +/* E2193C 802B70CC 00440018 */ mult $v0, $a0 +/* E21940 802B70D0 00031FC3 */ sra $v1, $v1, 0x1f +/* E21944 802B70D4 00002810 */ mfhi $a1 +/* E21948 802B70D8 00A22021 */ addu $a0, $a1, $v0 +/* E2194C 802B70DC 00042083 */ sra $a0, $a0, 2 +/* E21950 802B70E0 00832023 */ subu $a0, $a0, $v1 +/* E21954 802B70E4 000418C0 */ sll $v1, $a0, 3 +/* E21958 802B70E8 00641823 */ subu $v1, $v1, $a0 +/* E2195C 802B70EC 00431023 */ subu $v0, $v0, $v1 +/* E21960 802B70F0 00021400 */ sll $v0, $v0, 0x10 +/* E21964 802B70F4 00021403 */ sra $v0, $v0, 0x10 +/* E21968 802B70F8 2442FFFE */ addiu $v0, $v0, -2 +/* E2196C 802B70FC 04420001 */ bltzl $v0, .L802B7104 +/* E21970 802B7100 00021023 */ negu $v0, $v0 +.L802B7104: +/* E21974 802B7104 00042400 */ sll $a0, $a0, 0x10 +/* E21978 802B7108 00042403 */ sra $a0, $a0, 0x10 +/* E2197C 802B710C 00441021 */ addu $v0, $v0, $a0 +/* E21980 802B7110 28420006 */ slti $v0, $v0, 6 +/* E21984 802B7114 10400006 */ beqz $v0, .L802B7130 +/* E21988 802B7118 0000102D */ daddu $v0, $zero, $zero +/* E2198C 802B711C 0C0ADC00 */ jal func_802B7000_2 +/* E21990 802B7120 00000000 */ nop +/* E21994 802B7124 14400002 */ bnez $v0, .L802B7130 +/* E21998 802B7128 0000102D */ daddu $v0, $zero, $zero +/* E2199C 802B712C 24020001 */ addiu $v0, $zero, 1 +.L802B7130: +/* E219A0 802B7130 8FBF0014 */ lw $ra, 0x14($sp) +/* E219A4 802B7134 8FB00010 */ lw $s0, 0x10($sp) +/* E219A8 802B7138 03E00008 */ jr $ra +/* E219AC 802B713C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_E21870/func_802B7140.s b/asm/nonmatchings/code_E21870/func_802B7140.s new file mode 100644 index 0000000000..8501e7e930 --- /dev/null +++ b/asm/nonmatchings/code_E21870/func_802B7140.s @@ -0,0 +1,41 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802B7140 +/* E219B0 802B7140 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* E219B4 802B7144 AFB00010 */ sw $s0, 0x10($sp) +/* E219B8 802B7148 3C10802B */ lui $s0, 0x802b +/* E219BC 802B714C 26107D18 */ addiu $s0, $s0, 0x7d18 +/* E219C0 802B7150 AFBF0014 */ sw $ra, 0x14($sp) +/* E219C4 802B7154 8E040000 */ lw $a0, ($s0) +/* E219C8 802B7158 0C00A580 */ jal mem_clear +/* E219CC 802B715C 24050028 */ addiu $a1, $zero, 0x28 +/* E219D0 802B7160 3C048011 */ lui $a0, %hi(gPlayerStatus) +/* E219D4 802B7164 2484EFC8 */ addiu $a0, $a0, %lo(gPlayerStatus) +/* E219D8 802B7168 8E030000 */ lw $v1, ($s0) +/* E219DC 802B716C C4800028 */ lwc1 $f0, 0x28($a0) +/* E219E0 802B7170 E4600000 */ swc1 $f0, ($v1) +/* E219E4 802B7174 848200B0 */ lh $v0, 0xb0($a0) +/* E219E8 802B7178 C480002C */ lwc1 $f0, 0x2c($a0) +/* E219EC 802B717C 44821000 */ mtc1 $v0, $f2 +/* E219F0 802B7180 00000000 */ nop +/* E219F4 802B7184 468010A0 */ cvt.s.w $f2, $f2 +/* E219F8 802B7188 46020000 */ add.s $f0, $f0, $f2 +/* E219FC 802B718C 3C014100 */ lui $at, 0x4100 +/* E21A00 802B7190 44811000 */ mtc1 $at, $f2 +/* E21A04 802B7194 00000000 */ nop +/* E21A08 802B7198 46020000 */ add.s $f0, $f0, $f2 +/* E21A0C 802B719C E4600004 */ swc1 $f0, 4($v1) +/* E21A10 802B71A0 C4800030 */ lwc1 $f0, 0x30($a0) +/* E21A14 802B71A4 E4600008 */ swc1 $f0, 8($v1) +/* E21A18 802B71A8 8C820004 */ lw $v0, 4($a0) +/* E21A1C 802B71AC 34420040 */ ori $v0, $v0, 0x40 +/* E21A20 802B71B0 AC820004 */ sw $v0, 4($a0) +/* E21A24 802B71B4 8FBF0014 */ lw $ra, 0x14($sp) +/* E21A28 802B71B8 8FB00010 */ lw $s0, 0x10($sp) +/* E21A2C 802B71BC 3C03802B */ lui $v1, 0x802b +/* E21A30 802B71C0 246374F0 */ addiu $v1, $v1, 0x74f0 +/* E21A34 802B71C4 3C018011 */ lui $at, 0x8011 +/* E21A38 802B71C8 AC23C920 */ sw $v1, -0x36e0($at) +/* E21A3C 802B71CC 03E00008 */ jr $ra +/* E21A40 802B71D0 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_E21870/func_802B71D4.s b/asm/nonmatchings/code_E21870/func_802B71D4.s new file mode 100644 index 0000000000..2c9f505215 --- /dev/null +++ b/asm/nonmatchings/code_E21870/func_802B71D4.s @@ -0,0 +1,209 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802B71D4 +/* E21A44 802B71D4 3C028011 */ lui $v0, 0x8011 +/* E21A48 802B71D8 8C42EFCC */ lw $v0, -0x1034($v0) +/* E21A4C 802B71DC 27BDFF38 */ addiu $sp, $sp, -0xc8 +/* E21A50 802B71E0 AFBF00C0 */ sw $ra, 0xc0($sp) +/* E21A54 802B71E4 AFB300BC */ sw $s3, 0xbc($sp) +/* E21A58 802B71E8 AFB200B8 */ sw $s2, 0xb8($sp) +/* E21A5C 802B71EC AFB100B4 */ sw $s1, 0xb4($sp) +/* E21A60 802B71F0 30420040 */ andi $v0, $v0, 0x40 +/* E21A64 802B71F4 104000B7 */ beqz $v0, .L802B74D4 +/* E21A68 802B71F8 AFB000B0 */ sw $s0, 0xb0($sp) +/* E21A6C 802B71FC 3C13802B */ lui $s3, 0x802b +/* E21A70 802B7200 26737D18 */ addiu $s3, $s3, 0x7d18 +/* E21A74 802B7204 8E620000 */ lw $v0, ($s3) +/* E21A78 802B7208 27A40018 */ addiu $a0, $sp, 0x18 +/* E21A7C 802B720C 8C45000C */ lw $a1, 0xc($v0) +/* E21A80 802B7210 3C120001 */ lui $s2, 1 +/* E21A84 802B7214 00A0302D */ daddu $a2, $a1, $zero +/* E21A88 802B7218 0C019DF0 */ jal guScaleF +/* E21A8C 802B721C 00A0382D */ daddu $a3, $a1, $zero +/* E21A90 802B7220 27B00058 */ addiu $s0, $sp, 0x58 +/* E21A94 802B7224 3C038007 */ lui $v1, %hi(gCurrentCameraID) +/* E21A98 802B7228 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1) +/* E21A9C 802B722C 44800000 */ mtc1 $zero, $f0 +/* E21AA0 802B7230 00031080 */ sll $v0, $v1, 2 +/* E21AA4 802B7234 00431021 */ addu $v0, $v0, $v1 +/* E21AA8 802B7238 00021080 */ sll $v0, $v0, 2 +/* E21AAC 802B723C 00431023 */ subu $v0, $v0, $v1 +/* E21AB0 802B7240 000218C0 */ sll $v1, $v0, 3 +/* E21AB4 802B7244 00431021 */ addu $v0, $v0, $v1 +/* E21AB8 802B7248 000210C0 */ sll $v0, $v0, 3 +/* E21ABC 802B724C 44060000 */ mfc1 $a2, $f0 +/* E21AC0 802B7250 3C01800B */ lui $at, 0x800b +/* E21AC4 802B7254 00220821 */ addu $at, $at, $v0 +/* E21AC8 802B7258 C4201DEC */ lwc1 $f0, 0x1dec($at) +/* E21ACC 802B725C 3C073F80 */ lui $a3, 0x3f80 +/* E21AD0 802B7260 46000007 */ neg.s $f0, $f0 +/* E21AD4 802B7264 44050000 */ mfc1 $a1, $f0 +/* E21AD8 802B7268 0200202D */ daddu $a0, $s0, $zero +/* E21ADC 802B726C 0C019EC8 */ jal guRotateF +/* E21AE0 802B7270 AFA60010 */ sw $a2, 0x10($sp) +/* E21AE4 802B7274 27A40018 */ addiu $a0, $sp, 0x18 +/* E21AE8 802B7278 0200282D */ daddu $a1, $s0, $zero +/* E21AEC 802B727C 0C019D80 */ jal guMtxCatF +/* E21AF0 802B7280 0080302D */ daddu $a2, $a0, $zero +/* E21AF4 802B7284 8E620000 */ lw $v0, ($s3) +/* E21AF8 802B7288 36521630 */ ori $s2, $s2, 0x1630 +/* E21AFC 802B728C 8C450000 */ lw $a1, ($v0) +/* E21B00 802B7290 8C460004 */ lw $a2, 4($v0) +/* E21B04 802B7294 8C470008 */ lw $a3, 8($v0) +/* E21B08 802B7298 0C019E40 */ jal guTranslateF +/* E21B0C 802B729C 0200202D */ daddu $a0, $s0, $zero +/* E21B10 802B72A0 27A40018 */ addiu $a0, $sp, 0x18 +/* E21B14 802B72A4 0200282D */ daddu $a1, $s0, $zero +/* E21B18 802B72A8 0C019D80 */ jal guMtxCatF +/* E21B1C 802B72AC 0200302D */ daddu $a2, $s0, $zero +/* E21B20 802B72B0 0200202D */ daddu $a0, $s0, $zero +/* E21B24 802B72B4 3C108007 */ lui $s0, 0x8007 +/* E21B28 802B72B8 261041F0 */ addiu $s0, $s0, 0x41f0 +/* E21B2C 802B72BC 3C11800A */ lui $s1, 0x800a +/* E21B30 802B72C0 2631A674 */ addiu $s1, $s1, -0x598c +/* E21B34 802B72C4 96050000 */ lhu $a1, ($s0) +/* E21B38 802B72C8 8E220000 */ lw $v0, ($s1) +/* E21B3C 802B72CC 00052980 */ sll $a1, $a1, 6 +/* E21B40 802B72D0 00B22821 */ addu $a1, $a1, $s2 +/* E21B44 802B72D4 0C019D40 */ jal guMtxF2L +/* E21B48 802B72D8 00452821 */ addu $a1, $v0, $a1 +/* E21B4C 802B72DC 3C02DA38 */ lui $v0, 0xda38 +/* E21B50 802B72E0 34420002 */ ori $v0, $v0, 2 +/* E21B54 802B72E4 3C07800A */ lui $a3, 0x800a +/* E21B58 802B72E8 24E7A66C */ addiu $a3, $a3, -0x5994 +/* E21B5C 802B72EC 3C089249 */ lui $t0, 0x9249 +/* E21B60 802B72F0 35082493 */ ori $t0, $t0, 0x2493 +/* E21B64 802B72F4 8CE50000 */ lw $a1, ($a3) +/* E21B68 802B72F8 96060000 */ lhu $a2, ($s0) +/* E21B6C 802B72FC 00A0202D */ daddu $a0, $a1, $zero +/* E21B70 802B7300 24A50008 */ addiu $a1, $a1, 8 +/* E21B74 802B7304 AC820000 */ sw $v0, ($a0) +/* E21B78 802B7308 30C2FFFF */ andi $v0, $a2, 0xffff +/* E21B7C 802B730C 00021180 */ sll $v0, $v0, 6 +/* E21B80 802B7310 8E230000 */ lw $v1, ($s1) +/* E21B84 802B7314 00521021 */ addu $v0, $v0, $s2 +/* E21B88 802B7318 00621821 */ addu $v1, $v1, $v0 +/* E21B8C 802B731C AC830004 */ sw $v1, 4($a0) +/* E21B90 802B7320 3C038007 */ lui $v1, %hi(gGameStatusPtr) +/* E21B94 802B7324 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1) +/* E21B98 802B7328 3C02DE00 */ lui $v0, 0xde00 +/* E21B9C 802B732C ACA20000 */ sw $v0, ($a1) +/* E21BA0 802B7330 3C02802B */ lui $v0, 0x802b +/* E21BA4 802B7334 24427CA0 */ addiu $v0, $v0, 0x7ca0 +/* E21BA8 802B7338 ACA20004 */ sw $v0, 4($a1) +/* E21BAC 802B733C 9462008C */ lhu $v0, 0x8c($v1) +/* E21BB0 802B7340 24C60001 */ addiu $a2, $a2, 1 +/* E21BB4 802B7344 ACE50000 */ sw $a1, ($a3) +/* E21BB8 802B7348 00021400 */ sll $v0, $v0, 0x10 +/* E21BBC 802B734C 00022403 */ sra $a0, $v0, 0x10 +/* E21BC0 802B7350 00880018 */ mult $a0, $t0 +/* E21BC4 802B7354 24A50008 */ addiu $a1, $a1, 8 +/* E21BC8 802B7358 A6060000 */ sh $a2, ($s0) +/* E21BCC 802B735C 000217C3 */ sra $v0, $v0, 0x1f +/* E21BD0 802B7360 00004810 */ mfhi $t1 +/* E21BD4 802B7364 01241821 */ addu $v1, $t1, $a0 +/* E21BD8 802B7368 00031883 */ sra $v1, $v1, 2 +/* E21BDC 802B736C 00621823 */ subu $v1, $v1, $v0 +/* E21BE0 802B7370 000310C0 */ sll $v0, $v1, 3 +/* E21BE4 802B7374 00431023 */ subu $v0, $v0, $v1 +/* E21BE8 802B7378 00822023 */ subu $a0, $a0, $v0 +/* E21BEC 802B737C 00042400 */ sll $a0, $a0, 0x10 +/* E21BF0 802B7380 00042403 */ sra $a0, $a0, 0x10 +/* E21BF4 802B7384 2484FFFE */ addiu $a0, $a0, -2 +/* E21BF8 802B7388 04820001 */ bltzl $a0, .L802B7390 +/* E21BFC 802B738C 00042023 */ negu $a0, $a0 +.L802B7390: +/* E21C00 802B7390 00031C00 */ sll $v1, $v1, 0x10 +/* E21C04 802B7394 00031C03 */ sra $v1, $v1, 0x10 +/* E21C08 802B7398 00832021 */ addu $a0, $a0, $v1 +/* E21C0C 802B739C 2C820006 */ sltiu $v0, $a0, 6 +/* E21C10 802B73A0 10400013 */ beqz $v0, .L802B73F0 +/* E21C14 802B73A4 ACE50000 */ sw $a1, ($a3) +/* E21C18 802B73A8 00041080 */ sll $v0, $a0, 2 +/* E21C1C 802B73AC 3C01802B */ lui $at, 0x802b +/* E21C20 802B73B0 00220821 */ addu $at, $at, $v0 +/* E21C24 802B73B4 8C227D20 */ lw $v0, 0x7d20($at) +/* E21C28 802B73B8 00400008 */ jr $v0 +/* E21C2C 802B73BC 00000000 */ nop +/* E21C30 802B73C0 080ADCFF */ j .L802B73FC +/* E21C34 802B73C4 24030004 */ addiu $v1, $zero, 4 +/* E21C38 802B73C8 080ADCFF */ j .L802B73FC +/* E21C3C 802B73CC 24030008 */ addiu $v1, $zero, 8 +/* E21C40 802B73D0 080ADCFF */ j .L802B73FC +/* E21C44 802B73D4 24030010 */ addiu $v1, $zero, 0x10 +/* E21C48 802B73D8 080ADCFF */ j .L802B73FC +/* E21C4C 802B73DC 24030020 */ addiu $v1, $zero, 0x20 +/* E21C50 802B73E0 080ADCFF */ j .L802B73FC +/* E21C54 802B73E4 24030040 */ addiu $v1, $zero, 0x40 +/* E21C58 802B73E8 080ADCFF */ j .L802B73FC +/* E21C5C 802B73EC 24030080 */ addiu $v1, $zero, 0x80 +.L802B73F0: +/* E21C60 802B73F0 8E620000 */ lw $v0, ($s3) +/* E21C64 802B73F4 2403FFFF */ addiu $v1, $zero, -1 +/* E21C68 802B73F8 AC400020 */ sw $zero, 0x20($v0) +.L802B73FC: +/* E21C6C 802B73FC 3C11802B */ lui $s1, 0x802b +/* E21C70 802B7400 26317C60 */ addiu $s1, $s1, 0x7c60 +/* E21C74 802B7404 04600017 */ bltz $v1, .L802B7464 +/* E21C78 802B7408 AFB1009C */ sw $s1, 0x9c($sp) +/* E21C7C 802B740C 3C10802B */ lui $s0, 0x802b +/* E21C80 802B7410 26107D18 */ addiu $s0, $s0, 0x7d18 +/* E21C84 802B7414 8E040000 */ lw $a0, ($s0) +/* E21C88 802B7418 8C820020 */ lw $v0, 0x20($a0) +/* E21C8C 802B741C 24630002 */ addiu $v1, $v1, 2 +/* E21C90 802B7420 24420001 */ addiu $v0, $v0, 1 +/* E21C94 802B7424 AC820020 */ sw $v0, 0x20($a0) +/* E21C98 802B7428 0043102A */ slt $v0, $v0, $v1 +/* E21C9C 802B742C 14400005 */ bnez $v0, .L802B7444 +/* E21CA0 802B7430 00000000 */ nop +/* E21CA4 802B7434 AC800020 */ sw $zero, 0x20($a0) +/* E21CA8 802B7438 2404007D */ addiu $a0, $zero, 0x7d +/* E21CAC 802B743C 0C052736 */ jal play_sound_at_player +/* E21CB0 802B7440 0000282D */ daddu $a1, $zero, $zero +.L802B7444: +/* E21CB4 802B7444 8E020000 */ lw $v0, ($s0) +/* E21CB8 802B7448 8C420020 */ lw $v0, 0x20($v0) +/* E21CBC 802B744C 28420002 */ slti $v0, $v0, 2 +/* E21CC0 802B7450 50400004 */ beql $v0, $zero, .L802B7464 +/* E21CC4 802B7454 AFB1009C */ sw $s1, 0x9c($sp) +/* E21CC8 802B7458 3C02802B */ lui $v0, 0x802b +/* E21CCC 802B745C 24427C80 */ addiu $v0, $v0, 0x7c80 +/* E21CD0 802B7460 AFA2009C */ sw $v0, 0x9c($sp) +.L802B7464: +/* E21CD4 802B7464 0000202D */ daddu $a0, $zero, $zero +/* E21CD8 802B7468 27A50098 */ addiu $a1, $sp, 0x98 +/* E21CDC 802B746C 0080302D */ daddu $a2, $a0, $zero +/* E21CE0 802B7470 27A70058 */ addiu $a3, $sp, 0x58 +/* E21CE4 802B7474 3C02802B */ lui $v0, 0x802b +/* E21CE8 802B7478 24427640 */ addiu $v0, $v0, 0x7640 +/* E21CEC 802B747C AFA20098 */ sw $v0, 0x98($sp) +/* E21CF0 802B7480 24020038 */ addiu $v0, $zero, 0x38 +/* E21CF4 802B7484 A7A200A0 */ sh $v0, 0xa0($sp) +/* E21CF8 802B7488 A7A200A2 */ sh $v0, 0xa2($sp) +/* E21CFC 802B748C 2402FFE4 */ addiu $v0, $zero, -0x1c +/* E21D00 802B7490 A7A200A4 */ sh $v0, 0xa4($sp) +/* E21D04 802B7494 2402002E */ addiu $v0, $zero, 0x2e +/* E21D08 802B7498 A7A200A6 */ sh $v0, 0xa6($sp) +/* E21D0C 802B749C 240200FF */ addiu $v0, $zero, 0xff +/* E21D10 802B74A0 0C04EBDC */ jal func_8013AF70 +/* E21D14 802B74A4 A3A200A8 */ sb $v0, 0xa8($sp) +/* E21D18 802B74A8 3C05D838 */ lui $a1, 0xd838 +/* E21D1C 802B74AC 3C03800A */ lui $v1, 0x800a +/* E21D20 802B74B0 2463A66C */ addiu $v1, $v1, -0x5994 +/* E21D24 802B74B4 8C620000 */ lw $v0, ($v1) +/* E21D28 802B74B8 34A50002 */ ori $a1, $a1, 2 +/* E21D2C 802B74BC 0040202D */ daddu $a0, $v0, $zero +/* E21D30 802B74C0 24420008 */ addiu $v0, $v0, 8 +/* E21D34 802B74C4 AC620000 */ sw $v0, ($v1) +/* E21D38 802B74C8 24020040 */ addiu $v0, $zero, 0x40 +/* E21D3C 802B74CC AC850000 */ sw $a1, ($a0) +/* E21D40 802B74D0 AC820004 */ sw $v0, 4($a0) +.L802B74D4: +/* E21D44 802B74D4 8FBF00C0 */ lw $ra, 0xc0($sp) +/* E21D48 802B74D8 8FB300BC */ lw $s3, 0xbc($sp) +/* E21D4C 802B74DC 8FB200B8 */ lw $s2, 0xb8($sp) +/* E21D50 802B74E0 8FB100B4 */ lw $s1, 0xb4($sp) +/* E21D54 802B74E4 8FB000B0 */ lw $s0, 0xb0($sp) +/* E21D58 802B74E8 03E00008 */ jr $ra +/* E21D5C 802B74EC 27BD00C8 */ addiu $sp, $sp, 0xc8 diff --git a/asm/nonmatchings/code_E21870/func_802B74F0.s b/asm/nonmatchings/code_E21870/func_802B74F0.s new file mode 100644 index 0000000000..b701d79475 --- /dev/null +++ b/asm/nonmatchings/code_E21870/func_802B74F0.s @@ -0,0 +1,95 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802B74F0 +/* E21D60 802B74F0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* E21D64 802B74F4 AFB00010 */ sw $s0, 0x10($sp) +/* E21D68 802B74F8 3C108011 */ lui $s0, %hi(gPlayerStatus) +/* E21D6C 802B74FC 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus) +/* E21D70 802B7500 AFB10014 */ sw $s1, 0x14($sp) +/* E21D74 802B7504 3C11802B */ lui $s1, 0x802b +/* E21D78 802B7508 26317D18 */ addiu $s1, $s1, 0x7d18 +/* E21D7C 802B750C AFBF0018 */ sw $ra, 0x18($sp) +/* E21D80 802B7510 860200B0 */ lh $v0, 0xb0($s0) +/* E21D84 802B7514 C600002C */ lwc1 $f0, 0x2c($s0) +/* E21D88 802B7518 44821000 */ mtc1 $v0, $f2 +/* E21D8C 802B751C 00000000 */ nop +/* E21D90 802B7520 468010A0 */ cvt.s.w $f2, $f2 +/* E21D94 802B7524 46020000 */ add.s $f0, $f0, $f2 +/* E21D98 802B7528 3C014120 */ lui $at, 0x4120 +/* E21D9C 802B752C 44811000 */ mtc1 $at, $f2 +/* E21DA0 802B7530 8E220000 */ lw $v0, ($s1) +/* E21DA4 802B7534 46020000 */ add.s $f0, $f0, $f2 +/* E21DA8 802B7538 C4420004 */ lwc1 $f2, 4($v0) +/* E21DAC 802B753C 46020001 */ sub.s $f0, $f0, $f2 +/* E21DB0 802B7540 3C013FC0 */ lui $at, 0x3fc0 +/* E21DB4 802B7544 44812000 */ mtc1 $at, $f4 +/* E21DB8 802B7548 00000000 */ nop +/* E21DBC 802B754C 46040003 */ div.s $f0, $f0, $f4 +/* E21DC0 802B7550 46001080 */ add.s $f2, $f2, $f0 +/* E21DC4 802B7554 E4420004 */ swc1 $f2, 4($v0) +/* E21DC8 802B7558 C6000028 */ lwc1 $f0, 0x28($s0) +/* E21DCC 802B755C E4400000 */ swc1 $f0, ($v0) +/* E21DD0 802B7560 C6000030 */ lwc1 $f0, 0x30($s0) +/* E21DD4 802B7564 0C0ADC13 */ jal func_802B704C +/* E21DD8 802B7568 E4400008 */ swc1 $f0, 8($v0) +/* E21DDC 802B756C 14400008 */ bnez $v0, .L802B7590 +/* E21DE0 802B7570 24020001 */ addiu $v0, $zero, 1 +/* E21DE4 802B7574 8E020004 */ lw $v0, 4($s0) +/* E21DE8 802B7578 2403FFBF */ addiu $v1, $zero, -0x41 +/* E21DEC 802B757C 3C018011 */ lui $at, 0x8011 +/* E21DF0 802B7580 AC20C920 */ sw $zero, -0x36e0($at) +/* E21DF4 802B7584 00431024 */ and $v0, $v0, $v1 +/* E21DF8 802B7588 080ADD8B */ j .L802B762C +/* E21DFC 802B758C AE020004 */ sw $v0, 4($s0) +.L802B7590: +/* E21E00 802B7590 8E240000 */ lw $a0, ($s1) +/* E21E04 802B7594 8C830024 */ lw $v1, 0x24($a0) +/* E21E08 802B7598 10620017 */ beq $v1, $v0, .L802B75F8 +/* E21E0C 802B759C 28620002 */ slti $v0, $v1, 2 +/* E21E10 802B75A0 50400005 */ beql $v0, $zero, .L802B75B8 +/* E21E14 802B75A4 24020002 */ addiu $v0, $zero, 2 +/* E21E18 802B75A8 10600007 */ beqz $v1, .L802B75C8 +/* E21E1C 802B75AC 00000000 */ nop +/* E21E20 802B75B0 080ADD8B */ j .L802B762C +/* E21E24 802B75B4 00000000 */ nop +.L802B75B8: +/* E21E28 802B75B8 10620015 */ beq $v1, $v0, .L802B7610 +/* E21E2C 802B75BC 00000000 */ nop +/* E21E30 802B75C0 080ADD8B */ j .L802B762C +/* E21E34 802B75C4 00000000 */ nop +.L802B75C8: +/* E21E38 802B75C8 8C820018 */ lw $v0, 0x18($a0) +/* E21E3C 802B75CC 0040182D */ daddu $v1, $v0, $zero +/* E21E40 802B75D0 24420001 */ addiu $v0, $v0, 1 +/* E21E44 802B75D4 28630006 */ slti $v1, $v1, 6 +/* E21E48 802B75D8 14600014 */ bnez $v1, .L802B762C +/* E21E4C 802B75DC AC820018 */ sw $v0, 0x18($a0) +/* E21E50 802B75E0 8C820024 */ lw $v0, 0x24($a0) +/* E21E54 802B75E4 3C013EB8 */ lui $at, 0x3eb8 +/* E21E58 802B75E8 342151EC */ ori $at, $at, 0x51ec +/* E21E5C 802B75EC 44810000 */ mtc1 $at, $f0 +/* E21E60 802B75F0 080ADD89 */ j .L802B7624 +/* E21E64 802B75F4 24420001 */ addiu $v0, $v0, 1 +.L802B75F8: +/* E21E68 802B75F8 8C820024 */ lw $v0, 0x24($a0) +/* E21E6C 802B75FC 3C013F11 */ lui $at, 0x3f11 +/* E21E70 802B7600 3421EB85 */ ori $at, $at, 0xeb85 +/* E21E74 802B7604 44810000 */ mtc1 $at, $f0 +/* E21E78 802B7608 080ADD89 */ j .L802B7624 +/* E21E7C 802B760C 24420001 */ addiu $v0, $v0, 1 +.L802B7610: +/* E21E80 802B7610 8C820024 */ lw $v0, 0x24($a0) +/* E21E84 802B7614 3C013F07 */ lui $at, 0x3f07 +/* E21E88 802B7618 3421AE14 */ ori $at, $at, 0xae14 +/* E21E8C 802B761C 44810000 */ mtc1 $at, $f0 +/* E21E90 802B7620 24420001 */ addiu $v0, $v0, 1 +.L802B7624: +/* E21E94 802B7624 E480000C */ swc1 $f0, 0xc($a0) +/* E21E98 802B7628 AC820024 */ sw $v0, 0x24($a0) +.L802B762C: +/* E21E9C 802B762C 8FBF0018 */ lw $ra, 0x18($sp) +/* E21EA0 802B7630 8FB10014 */ lw $s1, 0x14($sp) +/* E21EA4 802B7634 8FB00010 */ lw $s0, 0x10($sp) +/* E21EA8 802B7638 03E00008 */ jr $ra +/* E21EAC 802B763C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/os/nusys/nuContRmbMgr/func_8005FB10.s b/asm/nonmatchings/os/nusys/nuContRmbMgr/func_8005FB10.s deleted file mode 100644 index e071375137..0000000000 --- a/asm/nonmatchings/os/nusys/nuContRmbMgr/func_8005FB10.s +++ /dev/null @@ -1,109 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8005FB10 -/* 3AF10 8005FB10 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 3AF14 8005FB14 AFB10014 */ sw $s1, 0x14($sp) -/* 3AF18 8005FB18 0000882D */ daddu $s1, $zero, $zero -/* 3AF1C 8005FB1C AFB40020 */ sw $s4, 0x20($sp) -/* 3AF20 8005FB20 24140002 */ addiu $s4, $zero, 2 -/* 3AF24 8005FB24 AFB50024 */ sw $s5, 0x24($sp) -/* 3AF28 8005FB28 24150001 */ addiu $s5, $zero, 1 -/* 3AF2C 8005FB2C AFB3001C */ sw $s3, 0x1c($sp) -/* 3AF30 8005FB30 0220982D */ daddu $s3, $s1, $zero -/* 3AF34 8005FB34 AFB20018 */ sw $s2, 0x18($sp) -/* 3AF38 8005FB38 0220902D */ daddu $s2, $s1, $zero -/* 3AF3C 8005FB3C AFBF0028 */ sw $ra, 0x28($sp) -/* 3AF40 8005FB40 AFB00010 */ sw $s0, 0x10($sp) -.L8005FB44: -/* 3AF44 8005FB44 3C02800B */ lui $v0, %hi(nuContRmbCtl) -/* 3AF48 8005FB48 24421D40 */ addiu $v0, $v0, %lo(nuContRmbCtl) -/* 3AF4C 8005FB4C 02428021 */ addu $s0, $s2, $v0 -/* 3AF50 8005FB50 92030007 */ lbu $v1, 7($s0) -/* 3AF54 8005FB54 10740015 */ beq $v1, $s4, .L8005FBAC -/* 3AF58 8005FB58 28620003 */ slti $v0, $v1, 3 -/* 3AF5C 8005FB5C 50400007 */ beql $v0, $zero, .L8005FB7C -/* 3AF60 8005FB60 28620083 */ slti $v0, $v1, 0x83 -/* 3AF64 8005FB64 5060003B */ beql $v1, $zero, .L8005FC54 -/* 3AF68 8005FB68 26730068 */ addiu $s3, $s3, 0x68 -/* 3AF6C 8005FB6C 10750009 */ beq $v1, $s5, .L8005FB94 -/* 3AF70 8005FB70 0200202D */ daddu $a0, $s0, $zero -/* 3AF74 8005FB74 08017F15 */ j .L8005FC54 -/* 3AF78 8005FB78 26730068 */ addiu $s3, $s3, 0x68 -.L8005FB7C: -/* 3AF7C 8005FB7C 10400034 */ beqz $v0, .L8005FC50 -/* 3AF80 8005FB80 28620081 */ slti $v0, $v1, 0x81 -/* 3AF84 8005FB84 54400033 */ bnel $v0, $zero, .L8005FC54 -/* 3AF88 8005FB88 26730068 */ addiu $s3, $s3, 0x68 -/* 3AF8C 8005FB8C 08017F0E */ j .L8005FC38 -/* 3AF90 8005FB90 00000000 */ nop -.L8005FB94: -/* 3AF94 8005FB94 0C017E48 */ jal contRmbControl -/* 3AF98 8005FB98 0220282D */ daddu $a1, $s1, $zero -/* 3AF9C 8005FB9C 5440002C */ bnel $v0, $zero, .L8005FC50 -/* 3AFA0 8005FBA0 A2000007 */ sb $zero, 7($s0) -/* 3AFA4 8005FBA4 08017F15 */ j .L8005FC54 -/* 3AFA8 8005FBA8 26730068 */ addiu $s3, $s3, 0x68 -.L8005FBAC: -/* 3AFAC 8005FBAC 92020008 */ lbu $v0, 8($s0) -/* 3AFB0 8005FBB0 14400019 */ bnez $v0, .L8005FC18 -/* 3AFB4 8005FBB4 0200202D */ daddu $a0, $s0, $zero -/* 3AFB8 8005FBB8 96030004 */ lhu $v1, 4($s0) -/* 3AFBC 8005FBBC 3C028009 */ lui $v0, %hi(nuContRmbSearchTime) -/* 3AFC0 8005FBC0 8C423CE0 */ lw $v0, %lo(nuContRmbSearchTime)($v0) -/* 3AFC4 8005FBC4 14400002 */ bnez $v0, .L8005FBD0 -/* 3AFC8 8005FBC8 0062001B */ divu $zero, $v1, $v0 -/* 3AFCC 8005FBCC 0007000D */ break 7 -.L8005FBD0: -/* 3AFD0 8005FBD0 00001010 */ mfhi $v0 -/* 3AFD4 8005FBD4 1440000C */ bnez $v0, .L8005FC08 -/* 3AFD8 8005FBD8 00000000 */ nop -/* 3AFDC 8005FBDC 3C04800E */ lui $a0, %hi(nuSiMesgQ) -/* 3AFE0 8005FBE0 2484AC78 */ addiu $a0, $a0, %lo(nuSiMesgQ) -/* 3AFE4 8005FBE4 3C05800E */ lui $a1, %hi(nuContPfs) -/* 3AFE8 8005FBE8 24A5AAD8 */ addiu $a1, $a1, %lo(nuContPfs) -/* 3AFEC 8005FBEC 02652821 */ addu $a1, $s3, $a1 -/* 3AFF0 8005FBF0 0C019FD1 */ jal osMotorInit -/* 3AFF4 8005FBF4 0220302D */ daddu $a2, $s1, $zero -/* 3AFF8 8005FBF8 14400003 */ bnez $v0, .L8005FC08 -/* 3AFFC 8005FBFC 00000000 */ nop -/* 3B000 8005FC00 A2150008 */ sb $s5, 8($s0) -/* 3B004 8005FC04 A2140009 */ sb $s4, 9($s0) -.L8005FC08: -/* 3B008 8005FC08 96020004 */ lhu $v0, 4($s0) -/* 3B00C 8005FC0C 24420001 */ addiu $v0, $v0, 1 -/* 3B010 8005FC10 08017F14 */ j .L8005FC50 -/* 3B014 8005FC14 A6020004 */ sh $v0, 4($s0) -.L8005FC18: -/* 3B018 8005FC18 0C017E48 */ jal contRmbControl -/* 3B01C 8005FC1C 0220282D */ daddu $a1, $s1, $zero -/* 3B020 8005FC20 5040000C */ beql $v0, $zero, .L8005FC54 -/* 3B024 8005FC24 26730068 */ addiu $s3, $s3, 0x68 -/* 3B028 8005FC28 A6110004 */ sh $s1, 4($s0) -/* 3B02C 8005FC2C A2000008 */ sb $zero, 8($s0) -/* 3B030 8005FC30 08017F14 */ j .L8005FC50 -/* 3B034 8005FC34 A2000009 */ sb $zero, 9($s0) -.L8005FC38: -/* 3B038 8005FC38 92020009 */ lbu $v0, 9($s0) -/* 3B03C 8005FC3C 54540005 */ bnel $v0, $s4, .L8005FC54 -/* 3B040 8005FC40 26730068 */ addiu $s3, $s3, 0x68 -/* 3B044 8005FC44 0200202D */ daddu $a0, $s0, $zero -/* 3B048 8005FC48 0C017E48 */ jal contRmbControl -/* 3B04C 8005FC4C 0220282D */ daddu $a1, $s1, $zero -.L8005FC50: -/* 3B050 8005FC50 26730068 */ addiu $s3, $s3, 0x68 -.L8005FC54: -/* 3B054 8005FC54 26310001 */ addiu $s1, $s1, 1 -/* 3B058 8005FC58 2E220004 */ sltiu $v0, $s1, 4 -/* 3B05C 8005FC5C 1440FFB9 */ bnez $v0, .L8005FB44 -/* 3B060 8005FC60 2652000A */ addiu $s2, $s2, 0xa -/* 3B064 8005FC64 8FBF0028 */ lw $ra, 0x28($sp) -/* 3B068 8005FC68 8FB50024 */ lw $s5, 0x24($sp) -/* 3B06C 8005FC6C 8FB40020 */ lw $s4, 0x20($sp) -/* 3B070 8005FC70 8FB3001C */ lw $s3, 0x1c($sp) -/* 3B074 8005FC74 8FB20018 */ lw $s2, 0x18($sp) -/* 3B078 8005FC78 8FB10014 */ lw $s1, 0x14($sp) -/* 3B07C 8005FC7C 8FB00010 */ lw $s0, 0x10($sp) -/* 3B080 8005FC80 0000102D */ daddu $v0, $zero, $zero -/* 3B084 8005FC84 03E00008 */ jr $ra -/* 3B088 8005FC88 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/include/common_structs.h b/include/common_structs.h index ed90b86878..747fce56fc 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -537,8 +537,12 @@ typedef struct BattleStatus { /* 0x07A */ u8 incrementStarPointDelay; /* related to star points, set to 0x28 when they are dropped */ /* 0x07B */ u8 damageTaken; /* 0x07C */ u8 changePartnerAllowed; - /* 0x07D */ char unk_7D[10]; - /* 0x087 */ u8 blockResult; /* 0 = fail, 1 = success, -1 = mashed */ + /* 0x07D */ char unk_7D[4]; + /* 0x081 */ s8 actionSuccess; + /* 0x072 */ char unk_7C[3]; + /* 0x085 */ s8 unk_85; + /* 0x086 */ char unk_86; + /* 0x087 */ s8 blockResult; /* 0 = fail, 1 = success, -1 = mashed */ /* 0x088 */ u8 itemUsesLeft; /* set to 2 for doublke dip, 3 for triple */ /* 0x089 */ u8 hpDrainCount; /* 0x08A */ char unk_8A; @@ -575,7 +579,6 @@ typedef struct BattleStatus { /* 0x0D8 */ struct Actor* playerActor; /* 0x0DC */ struct Actor* partnerActor; /* 0x0E0 */ struct Actor* enemyActors[24]; - /* 0x0E4 */ char unk_E4[92]; /* 0x140 */ s16 enemyIDs[24]; /* 0x170 */ char unk_170; /* 0x171 */ u8 numEnemyActors; @@ -770,6 +773,15 @@ typedef struct Effect { /* 0x00 */ char unk_00[32]; } Effect; // size = 0x20 +typedef struct EffectTableEntry { + /* 0x00 */ s32 dmaStart; + /* 0x04 */ s32 dmaEnd; + /* 0x08 */ s32 dmaDest; + /* 0x0C */ s32 unkStartRom; + /* 0x10 */ s32 unkEndRom; + /* 0x14 */ UNK_FUN_PTR(delegate); +} EffectTableEntry; // size = 0x18 + typedef struct ItemEntity { /* 0x00 */ s32 flags; /* 0x04 */ s16 boundVar; /* see make_item_entity */ diff --git a/include/variables.h b/include/variables.h index 523037696c..851fb587be 100644 --- a/include/variables.h +++ b/include/variables.h @@ -105,6 +105,9 @@ extern u8 D_800A095F; extern s32 D_800A0960; extern s32 D_800A0964; +// Pause +//extern s32 gPauseMenuStrings[348]; + extern s32 gGameState; extern s32 D_8009A650[1]; extern u16 D_8009A6A0; @@ -123,6 +126,9 @@ extern UNK_TYPE D_80108558; extern UNK_TYPE D_8010F250; // play_sound state struct? extern s8 D_8010EBB0[]; +// Effects +extern EffectTableEntry gEffectTable[135]; + //nusys extern OSPiHandle* carthandle; diff --git a/src/code_196AA0.c b/src/code_196AA0.c index baf90e6bf9..411d9c46c4 100644 --- a/src/code_196AA0.c +++ b/src/code_196AA0.c @@ -38,9 +38,15 @@ INCLUDE_ASM(s32, "code_196AA0", func_8026919C); INCLUDE_ASM(s32, "code_196AA0", func_802691C8); -INCLUDE_ASM(s32, "code_196AA0", GetActionSuccess); +ApiStatus GetActionSuccess(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.actionSuccess); + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "code_196AA0", SetActionSuccess); +ApiStatus SetActionSuccess(ScriptInstance* script, s32 isInitialCall) { + gBattleStatus.actionSuccess = get_variable(script, *script->ptrReadPos); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_196AA0", func_802692EC); @@ -52,7 +58,10 @@ INCLUDE_ASM(s32, "code_196AA0", func_80269370); INCLUDE_ASM(s32, "code_196AA0", func_8026939C); -INCLUDE_ASM(s32, "code_196AA0", func_802693F0); +ApiStatus func_802693F0(ScriptInstance* script, s32 isInitialCall) { + gBattleStatus.flags1 &= ~0x4000; + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_196AA0", CloseActionCommandInfo); @@ -60,13 +69,19 @@ INCLUDE_ASM(s32, "code_196AA0", func_80269470); INCLUDE_ASM(s32, "code_196AA0", func_802694A4); -INCLUDE_ASM(s32, "code_196AA0", GetActionSuccessCopy); +ApiStatus GetActionSuccessCopy(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.actionSuccess); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_196AA0", func_80269524); INCLUDE_ASM(s32, "code_196AA0", func_80269550); -INCLUDE_ASM(s32, "code_196AA0", GetBlockResult); +ApiStatus GetBlockResult(ScriptInstance* script, s32 isInitialCall) { + set_variable(script, *script->ptrReadPos, gBattleStatus.blockResult); + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_196AA0", func_802695A8); diff --git a/src/code_197F40.c b/src/code_197F40.c index 42a8a8f4f5..214d471a90 100644 --- a/src/code_197F40.c +++ b/src/code_197F40.c @@ -206,7 +206,7 @@ ApiStatus ActorExists(ScriptInstance* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; ActorId actorID = get_variable(script, *args++); - if (actorID == -0x7F) { + if (actorID == ActorId_SELF) { actorID = script->ownerActorID; } diff --git a/src/code_1AF120.c b/src/code_1AF120.c index 91d2a4adbe..778e091aa0 100644 --- a/src/code_1AF120.c +++ b/src/code_1AF120.c @@ -1,5 +1,28 @@ #include "common.h" -INCLUDE_ASM(s32, "code_1AF120", GetDamageIntensity); +ApiStatus GetDamageIntensity(ScriptInstance* script, s32 isInitialCall) { + if (gBattleStatus.lastAttackDamage < 4) { + script->varTable[0] = 0; + } else if (gBattleStatus.lastAttackDamage < 7) { + script->varTable[0] = 1; + } else if (gBattleStatus.lastAttackDamage < 10){ + script->varTable[0] = 2; + } else { + script->varTable[0] = 3; + } + return ApiStatus_DONE2; +} INCLUDE_ASM(s32, "code_1AF120", ActorAddMovePos); +/*ApiStatus ActorAddMovePos(ScriptInstance* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + Actor* actor; + Vec3f* actorMoveCurrentPos; + + actor = (Actor*)get_variable(script, *args++); + actorMoveCurrentPos = &actor->moveCurrentPos; + actorMoveCurrentPos->x += get_variable(script, *args++); + actorMoveCurrentPos->y += get_variable(script, *args++); + actorMoveCurrentPos->z += get_variable(script, *args++); + return ApiStatus_DONE2; +}*/ diff --git a/src/code_E21870.c b/src/code_E21870.c new file mode 100644 index 0000000000..999c6f2af2 --- /dev/null +++ b/src/code_E21870.c @@ -0,0 +1,21 @@ +#include "common.h" + +s32 func_802B7000_2(void) { + s8* something = &D_8010EBB0; + ActionState* actionState = gPlayerActionState; + + if (actionState != ActionState_USE_TWEESTER) { + if (something[0] != 1 || (something[3] != 9 && something[3] != 4)) { + return 0; + } + } + return 1; +} + +INCLUDE_ASM(s32, "code_E21870", func_802B704C); + +INCLUDE_ASM(s32, "code_E21870", func_802B7140); + +INCLUDE_ASM(s32, "code_E21870", func_802B71D4); + +INCLUDE_ASM(s32, "code_E21870", func_802B74F0); diff --git a/tools/splat.yaml b/tools/splat.yaml index ba3b82d461..c547041009 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -345,7 +345,7 @@ segments: start: 0x415D90 vram: 0x802A1000 files: - - [0x415D90, "c", "code_415D90"] + - [0x415D90, "c"] - [0x4200C0, "bin"] # todo split this further - name: code type: code @@ -353,8 +353,8 @@ segments: vram: 0x80280000 files: - [0x7e0e80, "c", "code_7e0e80"] - - [0x7E2AA0, "c", "code_7E2AA0"] - - [0x7E3700, "c", "code_7E3700"] + - [0x7E2AA0, "c"] + - [0x7E3700, "c"] - [0x7e4d00, "bin"] - [0x7E73A0, "bin"] # todo split this further - name: code @@ -363,7 +363,15 @@ segments: vram: 0x802B7000 files: - [0xe20eb0, "c", "code_e20eb0"] - - [0xe215c0, "bin"] + - [0xE215C0, "bin"] + - name: code + type: code + start: 0xE21870 + vram: 0x802B7000 + files: + - [0xE21870, "c"] + - [0xE21EB0, "bin"] + - [0xE225B0, "bin"] - [0xF007C0, "bin", "Battle_Fanfare_02"] # BGM start - [0xF02160, "bin", "Hey_You_03"] - [0xF03740, "bin", "The_Goomba_King_s_Decree_07"] diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index c95eaa23d2..51494df520 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1876,3 +1876,5 @@ SetTattleString;0x80045A58 !osEnqueueThread;0x8006B174 !send_mesg;0x8006AF7C !handle_CPU;0x8006B038 +gPauseMenuStrings;0x8026F778 +gEffectTable;0x8007F214 diff --git a/undefined_funcs.txt b/undefined_funcs.txt index 5507ebeee6..49c0a69fe6 100644 --- a/undefined_funcs.txt +++ b/undefined_funcs.txt @@ -1,3 +1,4 @@ -func_8006AF7C = 0x8006AF7C; -func_8006B174 = 0x8006B174; -func_8006B1BC = 0x8006B1BC; +func_802B704C = 0x802B704C; +func_83273000 = 0x83273000; +func_832A6664 = 0x832A6664; +func_832B3000 = 0x832B3000; diff --git a/undefined_syms.txt b/undefined_syms.txt index bbf62f937c..94f17ab24c 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -213,6 +213,8 @@ gCurrentSaveFile = 0x800DACC0; gMapFlags = 0x802DA480; gMapVars = 0x802DA484; +gEffectTable = 0x8007F214; + MarioEnterStage = 0x80284A40; PeachEnterStage = 0x80284D04; HandleEvent_Player = 0x802852D4; From 67719a662fae28418886e14e5ab6c8cc2a2a12ff Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 15 Oct 2020 18:26:59 -0400 Subject: [PATCH 2/4] Cleanup --- src/code_1AF120.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/code_1AF120.c b/src/code_1AF120.c index 778e091aa0..cc7e7701a9 100644 --- a/src/code_1AF120.c +++ b/src/code_1AF120.c @@ -14,15 +14,3 @@ ApiStatus GetDamageIntensity(ScriptInstance* script, s32 isInitialCall) { } INCLUDE_ASM(s32, "code_1AF120", ActorAddMovePos); -/*ApiStatus ActorAddMovePos(ScriptInstance* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - Actor* actor; - Vec3f* actorMoveCurrentPos; - - actor = (Actor*)get_variable(script, *args++); - actorMoveCurrentPos = &actor->moveCurrentPos; - actorMoveCurrentPos->x += get_variable(script, *args++); - actorMoveCurrentPos->y += get_variable(script, *args++); - actorMoveCurrentPos->z += get_variable(script, *args++); - return ApiStatus_DONE2; -}*/ From 02aa37c31da1a4e5f9a1a777922b2cfa2f615355 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 15 Oct 2020 18:42:54 -0400 Subject: [PATCH 3/4] Fix coverage.py --- .vscode/settings.json | 1 + coverage.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 869206fe21..a9f885c65d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,4 +11,5 @@ "-Isrc", "-D_LANGUAGE_C", ], + "python.pythonPath": "/usr/bin/python3", } diff --git a/coverage.py b/coverage.py index d5a124f6db..5f5630deb8 100755 --- a/coverage.py +++ b/coverage.py @@ -74,10 +74,10 @@ if __name__ == "__main__": for func in matched_but_undeleted_asm: f = next(NONMATCHINGS_DIR.rglob(func + ".s")) remove(f) - elif len(asm) != len(non_matched): + elif len(set(asm)) != len(set(non_matched)): #print(f"warning: number of INCLUDE_ASM macros ({len(asm)}) != number of asm files ({len(non_matched)})") - if len(non_matched) > len(asm): + if len(set(non_matched)) > len(set(asm)): print(f"The following functions are unmatched but are also unINCLUDEd: {set(non_matched) - set(asm)}") if "--fail-unincluded" in argv: From 3fcceae5be3e3167f119b31a6d4427ec6f26c39b Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 15 Oct 2020 18:44:42 -0400 Subject: [PATCH 4/4] format --- src/code_1AF120.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code_1AF120.c b/src/code_1AF120.c index cc7e7701a9..dfad65a6d8 100644 --- a/src/code_1AF120.c +++ b/src/code_1AF120.c @@ -5,7 +5,7 @@ ApiStatus GetDamageIntensity(ScriptInstance* script, s32 isInitialCall) { script->varTable[0] = 0; } else if (gBattleStatus.lastAttackDamage < 7) { script->varTable[0] = 1; - } else if (gBattleStatus.lastAttackDamage < 10){ + } else if (gBattleStatus.lastAttackDamage < 10) { script->varTable[0] = 2; } else { script->varTable[0] = 3;