diff --git a/asm/nonmatchings/code_724240/func_802A1000_724240.s b/asm/nonmatchings/code_724240/func_802A1000_724240.s new file mode 100644 index 0000000000..1fc7384597 --- /dev/null +++ b/asm/nonmatchings/code_724240/func_802A1000_724240.s @@ -0,0 +1,125 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802A1000_724240 +/* 724240 802A1000 27BDFF98 */ addiu $sp, $sp, -0x68 +/* 724244 802A1004 AFB50044 */ sw $s5, 0x44($sp) +/* 724248 802A1008 0080A82D */ daddu $s5, $a0, $zero +/* 72424C 802A100C AFB10034 */ sw $s1, 0x34($sp) +/* 724250 802A1010 0000882D */ daddu $s1, $zero, $zero +/* 724254 802A1014 2405001D */ addiu $a1, $zero, 0x1d +/* 724258 802A1018 F7B40050 */ sdc1 $f20, 0x50($sp) +/* 72425C 802A101C 4480A000 */ mtc1 $zero, $f20 +/* 724260 802A1020 3C02800E */ lui $v0, %hi(gBattleStatus) +/* 724264 802A1024 2442C070 */ addiu $v0, $v0, %lo(gBattleStatus) +/* 724268 802A1028 AFBF0048 */ sw $ra, 0x48($sp) +/* 72426C 802A102C AFB40040 */ sw $s4, 0x40($sp) +/* 724270 802A1030 AFB3003C */ sw $s3, 0x3c($sp) +/* 724274 802A1034 AFB20038 */ sw $s2, 0x38($sp) +/* 724278 802A1038 AFB00030 */ sw $s0, 0x30($sp) +/* 72427C 802A103C F7B80060 */ sdc1 $f24, 0x60($sp) +/* 724280 802A1040 F7B60058 */ sdc1 $f22, 0x58($sp) +/* 724284 802A1044 8C5300D8 */ lw $s3, 0xd8($v0) +/* 724288 802A1048 8442017A */ lh $v0, 0x17a($v0) +/* 72428C 802A104C 0260202D */ daddu $a0, $s3, $zero +/* 724290 802A1050 00021140 */ sll $v0, $v0, 5 +/* 724294 802A1054 3C128008 */ lui $s2, %hi(gItemTable+0xC) +/* 724298 802A1058 02429021 */ addu $s2, $s2, $v0 +/* 72429C 802A105C 865278EC */ lh $s2, %lo(gItemTable+0xC)($s2) +/* 7242A0 802A1060 92620191 */ lbu $v0, 0x191($s3) +/* 7242A4 802A1064 C6620148 */ lwc1 $f2, 0x148($s3) +/* 7242A8 802A1068 44820000 */ mtc1 $v0, $f0 +/* 7242AC 802A106C 00000000 */ nop +/* 7242B0 802A1070 46800020 */ cvt.s.w $f0, $f0 +/* 7242B4 802A1074 0C099CAB */ jal heroes_is_ability_active +/* 7242B8 802A1078 46001580 */ add.s $f22, $f2, $f0 +/* 7242BC 802A107C 50400048 */ beql $v0, $zero, .L802A11A0 +/* 7242C0 802A1080 AEB10084 */ sw $s1, 0x84($s5) +/* 7242C4 802A1084 1A400045 */ blez $s2, .L802A119C +/* 7242C8 802A1088 3C0451EB */ lui $a0, 0x51eb +/* 7242CC 802A108C 3484851F */ ori $a0, $a0, 0x851f +/* 7242D0 802A1090 00121880 */ sll $v1, $s2, 2 +/* 7242D4 802A1094 00721821 */ addu $v1, $v1, $s2 +/* 7242D8 802A1098 00031100 */ sll $v0, $v1, 4 +/* 7242DC 802A109C 00431023 */ subu $v0, $v0, $v1 +/* 7242E0 802A10A0 24420063 */ addiu $v0, $v0, 0x63 +/* 7242E4 802A10A4 00440018 */ mult $v0, $a0 +/* 7242E8 802A10A8 000217C3 */ sra $v0, $v0, 0x1f +/* 7242EC 802A10AC 00004010 */ mfhi $t0 +/* 7242F0 802A10B0 00081943 */ sra $v1, $t0, 5 +/* 7242F4 802A10B4 00629023 */ subu $s2, $v1, $v0 +/* 7242F8 802A10B8 0232102A */ slt $v0, $s1, $s2 +/* 7242FC 802A10BC 10400019 */ beqz $v0, .L802A1124 +/* 724300 802A10C0 0220802D */ daddu $s0, $s1, $zero +/* 724304 802A10C4 24140017 */ addiu $s4, $zero, 0x17 +/* 724308 802A10C8 3C0141F0 */ lui $at, 0x41f0 +/* 72430C 802A10CC 4481C000 */ mtc1 $at, $f24 +/* 724310 802A10D0 24110001 */ addiu $s1, $zero, 1 +.L802A10D4: +/* 724314 802A10D4 C6600144 */ lwc1 $f0, 0x144($s3) +/* 724318 802A10D8 C662014C */ lwc1 $f2, 0x14c($s3) +/* 72431C 802A10DC 4600A10D */ trunc.w.s $f4, $f20 +/* 724320 802A10E0 E7A40018 */ swc1 $f4, 0x18($sp) +/* 724324 802A10E4 24040157 */ addiu $a0, $zero, 0x157 +/* 724328 802A10E8 AFB10014 */ sw $s1, 0x14($sp) +/* 72432C 802A10EC 26310003 */ addiu $s1, $s1, 3 +/* 724330 802A10F0 26100001 */ addiu $s0, $s0, 1 +/* 724334 802A10F4 4406B000 */ mfc1 $a2, $f22 +/* 724338 802A10F8 44050000 */ mfc1 $a1, $f0 +/* 72433C 802A10FC 44071000 */ mfc1 $a3, $f2 +/* 724340 802A1100 4618A500 */ add.s $f20, $f20, $f24 +/* 724344 802A1104 AFB40010 */ sw $s4, 0x10($sp) +/* 724348 802A1108 0C04C4FD */ jal make_item_entity +/* 72434C 802A110C AFA0001C */ sw $zero, 0x1c($sp) +/* 724350 802A1110 0C03A830 */ jal add_coins +/* 724354 802A1114 24040001 */ addiu $a0, $zero, 1 +/* 724358 802A1118 0212102A */ slt $v0, $s0, $s2 +/* 72435C 802A111C 1440FFED */ bnez $v0, .L802A10D4 +/* 724360 802A1120 00000000 */ nop +.L802A1124: +/* 724364 802A1124 00101040 */ sll $v0, $s0, 1 +/* 724368 802A1128 00501021 */ addu $v0, $v0, $s0 +/* 72436C 802A112C 2451001E */ addiu $s1, $v0, 0x1e +/* 724370 802A1130 C6600144 */ lwc1 $f0, 0x144($s3) +/* 724374 802A1134 C6760148 */ lwc1 $f22, 0x148($s3) +/* 724378 802A1138 C662014C */ lwc1 $f2, 0x14c($s3) +/* 72437C 802A113C 3C048007 */ lui $a0, %hi(gCurrentCameraID) +/* 724380 802A1140 8C847410 */ lw $a0, %lo(gCurrentCameraID)($a0) +/* 724384 802A1144 27A20020 */ addiu $v0, $sp, 0x20 +/* 724388 802A1148 AFA20010 */ sw $v0, 0x10($sp) +/* 72438C 802A114C 27A20024 */ addiu $v0, $sp, 0x24 +/* 724390 802A1150 AFA20014 */ sw $v0, 0x14($sp) +/* 724394 802A1154 44050000 */ mfc1 $a1, $f0 +/* 724398 802A1158 4406B000 */ mfc1 $a2, $f22 +/* 72439C 802A115C 44071000 */ mfc1 $a3, $f2 +/* 7243A0 802A1160 27A20028 */ addiu $v0, $sp, 0x28 +/* 7243A4 802A1164 0C00B94E */ jal get_screen_coords +/* 7243A8 802A1168 AFA20018 */ sw $v0, 0x18($sp) +/* 7243AC 802A116C 3C048011 */ lui $a0, %hi(D_80108A64) +/* 7243B0 802A1170 24848A64 */ addiu $a0, $a0, %lo(D_80108A64) +/* 7243B4 802A1174 0C050529 */ jal create_icon +/* 7243B8 802A1178 00000000 */ nop +/* 7243BC 802A117C 8FA50020 */ lw $a1, 0x20($sp) +/* 7243C0 802A1180 8FA60024 */ lw $a2, 0x24($sp) +/* 7243C4 802A1184 0040202D */ daddu $a0, $v0, $zero +/* 7243C8 802A1188 3C01802A */ lui $at, %hi(D_802A1AA0) +/* 7243CC 802A118C AC241AA0 */ sw $a0, %lo(D_802A1AA0)($at) +/* 7243D0 802A1190 24A50024 */ addiu $a1, $a1, 0x24 +/* 7243D4 802A1194 0C051261 */ jal set_icon_render_pos +/* 7243D8 802A1198 24C6FFC1 */ addiu $a2, $a2, -0x3f +.L802A119C: +/* 7243DC 802A119C AEB10084 */ sw $s1, 0x84($s5) +.L802A11A0: +/* 7243E0 802A11A0 8FBF0048 */ lw $ra, 0x48($sp) +/* 7243E4 802A11A4 8FB50044 */ lw $s5, 0x44($sp) +/* 7243E8 802A11A8 8FB40040 */ lw $s4, 0x40($sp) +/* 7243EC 802A11AC 8FB3003C */ lw $s3, 0x3c($sp) +/* 7243F0 802A11B0 8FB20038 */ lw $s2, 0x38($sp) +/* 7243F4 802A11B4 8FB10034 */ lw $s1, 0x34($sp) +/* 7243F8 802A11B8 8FB00030 */ lw $s0, 0x30($sp) +/* 7243FC 802A11BC D7B80060 */ ldc1 $f24, 0x60($sp) +/* 724400 802A11C0 D7B60058 */ ldc1 $f22, 0x58($sp) +/* 724404 802A11C4 D7B40050 */ ldc1 $f20, 0x50($sp) +/* 724408 802A11C8 24020002 */ addiu $v0, $zero, 2 +/* 72440C 802A11CC 03E00008 */ jr $ra +/* 724410 802A11D0 27BD0068 */ addiu $sp, $sp, 0x68 diff --git a/asm/nonmatchings/code_724240/func_802A11D4_724414.s b/asm/nonmatchings/code_724240/func_802A11D4_724414.s new file mode 100644 index 0000000000..a2683f7dc9 --- /dev/null +++ b/asm/nonmatchings/code_724240/func_802A11D4_724414.s @@ -0,0 +1,31 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802A11D4_724414 +/* 724414 802A11D4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 724418 802A11D8 3C03800E */ lui $v1, %hi(gBattleStatus) +/* 72441C 802A11DC 2463C070 */ addiu $v1, $v1, %lo(gBattleStatus) +/* 724420 802A11E0 AFBF0014 */ sw $ra, 0x14($sp) +/* 724424 802A11E4 AFB00010 */ sw $s0, 0x10($sp) +/* 724428 802A11E8 8462017A */ lh $v0, 0x17a($v1) +/* 72442C 802A11EC 8C6400D8 */ lw $a0, 0xd8($v1) +/* 724430 802A11F0 00021140 */ sll $v0, $v0, 5 +/* 724434 802A11F4 3C108008 */ lui $s0, %hi(gItemTable+0xC) +/* 724438 802A11F8 02028021 */ addu $s0, $s0, $v0 +/* 72443C 802A11FC 861078EC */ lh $s0, %lo(gItemTable+0xC)($s0) +/* 724440 802A1200 0C099CAB */ jal heroes_is_ability_active +/* 724444 802A1204 2405001D */ addiu $a1, $zero, 0x1d +/* 724448 802A1208 10400007 */ beqz $v0, .L802A1228 +/* 72444C 802A120C 00000000 */ nop +/* 724450 802A1210 1A000005 */ blez $s0, .L802A1228 +/* 724454 802A1214 00000000 */ nop +/* 724458 802A1218 3C04802A */ lui $a0, %hi(D_802A1AA0) +/* 72445C 802A121C 8C841AA0 */ lw $a0, %lo(D_802A1AA0)($a0) +/* 724460 802A1220 0C05123D */ jal free_icon +/* 724464 802A1224 00000000 */ nop +.L802A1228: +/* 724468 802A1228 8FBF0014 */ lw $ra, 0x14($sp) +/* 72446C 802A122C 8FB00010 */ lw $s0, 0x10($sp) +/* 724470 802A1230 24020002 */ addiu $v0, $zero, 2 +/* 724474 802A1234 03E00008 */ jr $ra +/* 724478 802A1238 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_724240/func_802A123C_72447C.s b/asm/nonmatchings/code_724240/func_802A123C_72447C.s new file mode 100644 index 0000000000..c3b1ba7675 --- /dev/null +++ b/asm/nonmatchings/code_724240/func_802A123C_72447C.s @@ -0,0 +1,52 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802A123C_72447C +/* 72447C 802A123C 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 724480 802A1240 AFB1001C */ sw $s1, 0x1c($sp) +/* 724484 802A1244 0080882D */ daddu $s1, $a0, $zero +/* 724488 802A1248 AFBF0028 */ sw $ra, 0x28($sp) +/* 72448C 802A124C AFB30024 */ sw $s3, 0x24($sp) +/* 724490 802A1250 AFB20020 */ sw $s2, 0x20($sp) +/* 724494 802A1254 AFB00018 */ sw $s0, 0x18($sp) +/* 724498 802A1258 8E30000C */ lw $s0, 0xc($s1) +/* 72449C 802A125C 8E050000 */ lw $a1, ($s0) +/* 7244A0 802A1260 0C0B1EAF */ jal get_variable +/* 7244A4 802A1264 26100004 */ addiu $s0, $s0, 4 +/* 7244A8 802A1268 8E050000 */ lw $a1, ($s0) +/* 7244AC 802A126C 26100004 */ addiu $s0, $s0, 4 +/* 7244B0 802A1270 0220202D */ daddu $a0, $s1, $zero +/* 7244B4 802A1274 0C0B1EAF */ jal get_variable +/* 7244B8 802A1278 0040982D */ daddu $s3, $v0, $zero +/* 7244BC 802A127C 8E050000 */ lw $a1, ($s0) +/* 7244C0 802A1280 26100004 */ addiu $s0, $s0, 4 +/* 7244C4 802A1284 0220202D */ daddu $a0, $s1, $zero +/* 7244C8 802A1288 0C0B1EAF */ jal get_variable +/* 7244CC 802A128C 0040902D */ daddu $s2, $v0, $zero +/* 7244D0 802A1290 0220202D */ daddu $a0, $s1, $zero +/* 7244D4 802A1294 8E050000 */ lw $a1, ($s0) +/* 7244D8 802A1298 0C0B1EAF */ jal get_variable +/* 7244DC 802A129C 0040802D */ daddu $s0, $v0, $zero +/* 7244E0 802A12A0 44930000 */ mtc1 $s3, $f0 +/* 7244E4 802A12A4 00000000 */ nop +/* 7244E8 802A12A8 46800020 */ cvt.s.w $f0, $f0 +/* 7244EC 802A12AC 44050000 */ mfc1 $a1, $f0 +/* 7244F0 802A12B0 44920000 */ mtc1 $s2, $f0 +/* 7244F4 802A12B4 00000000 */ nop +/* 7244F8 802A12B8 46800020 */ cvt.s.w $f0, $f0 +/* 7244FC 802A12BC 44060000 */ mfc1 $a2, $f0 +/* 724500 802A12C0 44900000 */ mtc1 $s0, $f0 +/* 724504 802A12C4 00000000 */ nop +/* 724508 802A12C8 46800020 */ cvt.s.w $f0, $f0 +/* 72450C 802A12CC 44070000 */ mfc1 $a3, $f0 +/* 724510 802A12D0 0000202D */ daddu $a0, $zero, $zero +/* 724514 802A12D4 0C01C424 */ jal func_80071090 +/* 724518 802A12D8 AFA20010 */ sw $v0, 0x10($sp) +/* 72451C 802A12DC 8FBF0028 */ lw $ra, 0x28($sp) +/* 724520 802A12E0 8FB30024 */ lw $s3, 0x24($sp) +/* 724524 802A12E4 8FB20020 */ lw $s2, 0x20($sp) +/* 724528 802A12E8 8FB1001C */ lw $s1, 0x1c($sp) +/* 72452C 802A12EC 8FB00018 */ lw $s0, 0x18($sp) +/* 724530 802A12F0 24020002 */ addiu $v0, $zero, 2 +/* 724534 802A12F4 03E00008 */ jr $ra +/* 724538 802A12F8 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/nonmatchings/code_724240/func_802A12FC_72453C.s b/asm/nonmatchings/code_724240/func_802A12FC_72453C.s new file mode 100644 index 0000000000..0deb84fdca --- /dev/null +++ b/asm/nonmatchings/code_724240/func_802A12FC_72453C.s @@ -0,0 +1,18 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_802A12FC_72453C +/* 72453C 802A12FC 3C048011 */ lui $a0, %hi(gPlayerData) +/* 724540 802A1300 2484F290 */ addiu $a0, $a0, %lo(gPlayerData) +/* 724544 802A1304 90820002 */ lbu $v0, 2($a0) +/* 724548 802A1308 80830003 */ lb $v1, 3($a0) +/* 72454C 802A130C 24420014 */ addiu $v0, $v0, 0x14 +/* 724550 802A1310 A0820002 */ sb $v0, 2($a0) +/* 724554 802A1314 00021600 */ sll $v0, $v0, 0x18 +/* 724558 802A1318 00021603 */ sra $v0, $v0, 0x18 +/* 72455C 802A131C 0062182A */ slt $v1, $v1, $v0 +/* 724560 802A1320 90820003 */ lbu $v0, 3($a0) +/* 724564 802A1324 54600001 */ bnel $v1, $zero, .L802A132C +/* 724568 802A1328 A0820002 */ sb $v0, 2($a0) +.L802A132C: +/* 72456C 802A132C 03E00008 */ jr $ra diff --git a/src/code_724240.c b/src/code_724240.c new file mode 100644 index 0000000000..53956b495c --- /dev/null +++ b/src/code_724240.c @@ -0,0 +1,9 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_724240", func_802A1000_724240); + +INCLUDE_ASM(s32, "code_724240", func_802A11D4_724414); + +INCLUDE_ASM(s32, "code_724240", func_802A123C_72447C); + +INCLUDE_ASM(s32, "code_724240", func_802A12FC_72453C); diff --git a/tools/splat.yaml b/tools/splat.yaml index 8c5de1def2..5654784c40 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -2161,6 +2161,13 @@ segments: files: - [0x723780, c] - [0x723AB0, bin] + - type: code + start: 0x724240 + vram: 0x802A1000 + overlay: True + files: + - [0x724240, c] + - [0x724570, bin] - type: code start: 0x724CE0 vram: 0x802A1000 diff --git a/undefined_syms_auto.txt b/undefined_syms_auto.txt index bc8e272f53..1331f468f2 100644 --- a/undefined_syms_auto.txt +++ b/undefined_syms_auto.txt @@ -932,8 +932,8 @@ D_8010F6B8 = 0x8010F6B8; update_entities = 0x8010F6D0; D_80147474 = 0x80147474; func_80147474 = 0x80147474; -func_80147574 = 0x80147574; D_80147574 = 0x80147574; +func_80147574 = 0x80147574; func_80147650 = 0x80147650; D_8014B7F0 = 0x8014B7F0; D_8014C248 = 0x8014C248; @@ -1816,8 +1816,8 @@ D_80241A00 = 0x80241A00; func_80241A78_BA61F8 = 0x80241A78; func_80241AC8_D2D7F8 = 0x80241AC8; func_80241AD4_B4C544 = 0x80241AD4; -func_80241AE0_9F6520 = 0x80241AE0; func_80241AE0_DCE7B0 = 0x80241AE0; +func_80241AE0_9F6520 = 0x80241AE0; D_80241AE8 = 0x80241AE8; func_80241AEC_80236C = 0x80241AEC; func_80241AF0_A6FED0 = 0x80241AF0; @@ -1896,8 +1896,8 @@ func_80242000_C48BE0 = 0x80242000; D_80242000 = 0x80242000; D_80242008 = 0x80242008; D_80242010 = 0x80242010; -D_80242030 = 0x80242030; func_80242030_8EDE50 = 0x80242030; +D_80242030 = 0x80242030; D_80242038 = 0x80242038; func_80242040_8B20B0 = 0x80242040; D_80242048 = 0x80242048; @@ -1983,8 +1983,8 @@ D_8024264C = 0x8024264C; D_80242670 = 0x80242670; D_80242678 = 0x80242678; func_80242680_802F00 = 0x80242680; -D_80242688 = 0x80242688; func_80242688_C79368 = 0x80242688; +D_80242688 = 0x80242688; D_802426B0 = 0x802426B0; D_802426B8 = 0x802426B8; func_802426C8_7ED3D8 = 0x802426C8; @@ -2044,8 +2044,8 @@ D_80242BF8 = 0x80242BF8; func_80242C00_BB0540 = 0x80242C00; D_80242C08 = 0x80242C08; D_80242C0E = 0x80242C0E; -func_80242C30_B37800 = 0x80242C30; D_80242C30 = 0x80242C30; +func_80242C30_B37800 = 0x80242C30; D_80242C38 = 0x80242C38; D_80242C40 = 0x80242C40; func_80242C48_9122F8 = 0x80242C48; @@ -2108,8 +2108,8 @@ D_80243078 = 0x80243078; D_80243080 = 0x80243080; func_80243088_8551F8 = 0x80243088; D_8024308C = 0x8024308C; -func_80243090_C395C0 = 0x80243090; func_80243090_8B3100 = 0x80243090; +func_80243090_C395C0 = 0x80243090; D_80243098 = 0x80243098; func_8024309C_95E29C = 0x8024309C; D_802430A0 = 0x802430A0; @@ -2189,8 +2189,8 @@ func_802435C8_96C788 = 0x802435C8; func_802435D0_CC6DE0 = 0x802435D0; func_802435D8_C43388 = 0x802435D8; D_802435E0 = 0x802435E0; -D_802435E8 = 0x802435E8; func_802435E8_DD02B8 = 0x802435E8; +D_802435E8 = 0x802435E8; D_802435EC = 0x802435EC; func_802435F0_C7A2D0 = 0x802435F0; D_802435F0 = 0x802435F0; @@ -2232,8 +2232,8 @@ D_80243890 = 0x80243890; func_80243898 = 0x80243898; D_802438E0 = 0x802438E0; D_802438E8 = 0x802438E8; -func_802438F0_C436A0 = 0x802438F0; func_802438F0_95EAF0 = 0x802438F0; +func_802438F0_C436A0 = 0x802438F0; D_802438F8 = 0x802438F8; D_80243900 = 0x80243900; switch_order = 0x80243918; @@ -4249,6 +4249,7 @@ D_802A19B0 = 0x802A19B0; D_802A19C0 = 0x802A19C0; D_802A1A60 = 0x802A1A60; D_802A1A90 = 0x802A1A90; +D_802A1AA0 = 0x802A1AA0; D_802A1AC0 = 0x802A1AC0; D_802A1B40 = 0x802A1B40; D_802A1C40 = 0x802A1C40;