Match sub_801F280

This commit is contained in:
DizzyEggg 2024-12-16 10:38:11 +01:00
parent 1506b099e8
commit 62ca91f771
5 changed files with 84 additions and 221 deletions

View File

@ -1,190 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_801F280
sub_801F280:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldr r4, _0801F30C
ldr r0, [r4]
ldr r0, [r0, 0x50]
bl CallPrepareTextbox_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x50]
bl sub_80073B8
ldr r0, [r4]
ldr r1, [r0, 0x8]
adds r1, 0x4C
add r0, sp, 0x4
movs r2, 0xA
bl sub_80922B4
ldr r0, _0801F310
add r1, sp, 0x4
bl strcpy
ldr r2, _0801F314
ldr r0, [r4]
ldr r3, [r0, 0x50]
movs r0, 0
str r0, [sp]
movs r0, 0xC
movs r1, 0
bl PrintFormattedStringOnWindow
movs r7, 0
ldr r0, [r4]
movs r1, 0x36
ldrsh r0, [r0, r1]
cmp r7, r0
bge _0801F394
add r5, sp, 0x18
mov r8, r4
movs r0, 0x1
mov r9, r0
_0801F2E0:
adds r0, r5, 0
movs r1, 0
movs r2, 0xC
bl memset
movs r0, 0x6A
str r0, [r5, 0x4]
mov r1, r8
ldr r2, [r1]
lsls r1, r7, 3
ldr r0, [r2, 0x10]
adds r4, r0, r1
ldrb r1, [r4]
mov r0, r9
ands r0, r1
cmp r0, 0
beq _0801F386
ldrb r0, [r2, 0xC]
cmp r0, 0
beq _0801F318
movs r0, 0x2
b _0801F31A
.align 2, 0
_0801F30C: .4byte gUnknown_203B270
_0801F310: .4byte gFormatBuffer_Monsters
_0801F314: .4byte gUnknown_80DC28C
_0801F318:
movs r0, 0x4
_0801F31A:
str r0, [sp, 0x18]
mov r1, r8
ldr r0, [r1]
ldrb r0, [r0, 0x6]
cmp r0, 0
beq _0801F328
mov r0, r9
_0801F328:
strb r0, [r5, 0x9]
cmp r7, 0x3
ble _0801F332
mov r1, r9
strb r1, [r5, 0x8]
_0801F332:
ldr r0, _0801F3EC
adds r1, r4, 0
adds r2, r5, 0
bl sub_80928A0
ldr r2, _0801F3F0
ldr r0, [r2]
adds r0, 0x1C
adds r1, r7, 0
str r2, [sp, 0x24]
bl sub_8013800
adds r6, r0, 0
ldrb r1, [r4]
movs r0, 0x2
ands r0, r1
movs r4, 0xD
ldr r2, [sp, 0x24]
cmp r0, 0
bne _0801F372
movs r4, 0x8
cmp r7, 0
beq _0801F372
ldr r0, [r2]
ldr r0, [r0, 0x50]
subs r2, r6, 0x2
movs r1, 0x7
str r1, [sp]
movs r1, 0xC
movs r3, 0x78
bl sub_800792C
_0801F372:
mov r1, r8
ldr r0, [r1]
ldr r3, [r0, 0x50]
movs r0, 0
str r0, [sp]
adds r0, r4, 0
adds r1, r6, 0
ldr r2, _0801F3F4
bl PrintFormattedStringOnWindow
_0801F386:
adds r7, 0x1
mov r1, r8
ldr r0, [r1]
movs r1, 0x36
ldrsh r0, [r0, r1]
cmp r7, r0
blt _0801F2E0
_0801F394:
ldr r4, _0801F3F0
ldr r0, [r4]
ldr r0, [r0, 0x50]
bl sub_80073E0
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0xB8
ldr r0, [r0]
cmp r0, 0
beq _0801F3DC
mov r0, r10
cmp r0, 0
beq _0801F3DC
ldr r0, [r1, 0x54]
bl CallPrepareTextbox_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x54]
bl sub_80073B8
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0xB8
ldr r2, [r0]
ldr r3, [r1, 0x54]
movs r0, 0
str r0, [sp]
movs r0, 0x8
movs r1, 0
bl PrintFormattedStringOnWindow
ldr r0, [r4]
ldr r0, [r0, 0x54]
bl sub_80073E0
_0801F3DC:
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0801F3EC: .4byte gFormatBuffer_Items
_0801F3F0: .4byte gUnknown_203B270
_0801F3F4: .4byte gUnknown_80DC2A0
thumb_func_end sub_801F280
.align 2,0

View File

@ -31,8 +31,6 @@ s32 sub_801F194(void);
bool8 sub_801F1A4(void);
void sub_801F1B0(bool8, bool8);
void sub_801F214(void);
// code_801EE10.s
extern void sub_801F280(u32); // Probably bool
void sub_801F280(bool8);
#endif // CODE_801EE10_H

View File

@ -125,8 +125,6 @@ SECTIONS {
src/hints_menu2.o(.text);
src/gulpin_shop.o(.text);
src/code_801EE10.o(.text);
asm/code_801EE10.o(.text);
src/code_801EE10_mid.o(.text);
src/code_801F428.o(.text);
src/code_801F808.o(.text);
src/gulpin_shop_801FB50.o(.text);

View File

@ -9,6 +9,7 @@
#include "code_801EE10.h"
#include "code_80118A4.h"
#include "menu_input.h"
#include "string_format.h"
EWRAM_DATA_2 unkStruct_203B270 *gUnknown_203B270 = {0};
@ -95,7 +96,7 @@ u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *tex
xxx_call_save_unk_text_struct_800641C(gUnknown_203B270->unk58, TRUE, TRUE);
sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6);
sub_8013780(&gUnknown_203B270->input,0);
sub_801F280(1);
sub_801F280(TRUE);
return 1;
}
@ -147,7 +148,7 @@ u32 sub_801EF38(char param_1)
else {
goto _134;
}
sub_801F280(1);
sub_801F280(TRUE);
return 1;
case INPUT_R_DPAD_UP_BUTTONS:
if (gUnknown_203B270->unk5 == 0) break;
@ -160,7 +161,7 @@ u32 sub_801EF38(char param_1)
_134:
PlayMenuSoundEffect(2);
}
sub_801F280(1);
sub_801F280(TRUE);
return 1;
case INPUT_R_A_BUTTONS:
if (gUnknown_203B270->unk6 != 0) {
@ -225,7 +226,7 @@ _134:
}
if (flag) {
_ret:
sub_801F280(1);
sub_801F280(TRUE);
return 1;
}
else
@ -253,7 +254,7 @@ void sub_801F1B0(bool8 param_1, bool8 param_2)
gUnknown_203B270->input.unk22 = sub_801F3F8();
sub_8013984(&gUnknown_203B270->input);
gUnknown_203B270->input.menuIndex = sub_8092F4C(gUnknown_203B270->moves, gUnknown_203B270->input.menuIndex);
sub_801F280(1);
sub_801F280(TRUE);
if(param_1)
AddMenuCursorSprite(&gUnknown_203B270->input);
}
@ -273,3 +274,80 @@ void sub_801F214(void)
gUnknown_203B270 = NULL;
}
}
extern void sub_80922B4(u8 *buffer, u8 *string, s32 size);
void sub_801F280(bool8 param_1)
{
int i;
u8 buffer[20];
CallPrepareTextbox_8008C54(gUnknown_203B270->unk50);
sub_80073B8(gUnknown_203B270->unk50);
sub_80922B4(buffer,gUnknown_203B270->pokeStruct->name,10);
strcpy(gFormatBuffer_Monsters[0],buffer);
PrintFormattedStringOnWindow(0xc,0,gUnknown_80DC28C,gUnknown_203B270->unk50,0); // Move: {COLOR_1 YELLOW}{ARG_POKEMON_0){END_COLOR_TEXT_1}
for (i = 0; i < gUnknown_203B270->input.unk1A; i++) {
struct Move *move;
bool8 linkChain;
s32 x, y;
struct unkStruct_80928C0 uStack_30 = {0};
uStack_30.unk4 = 0x6a;
move = &gUnknown_203B270->moves[i];
if (MoveFlagExists(move)) {
if (gUnknown_203B270->isTeamLeader) {
uStack_30.unk0 = 2;
}
else {
uStack_30.unk0 = 4;
}
if (gUnknown_203B270->unk6) {
uStack_30.unk9 = 1;
}
else {
uStack_30.unk9 = 0;
}
if (i >= MAX_MON_MOVES) {
uStack_30.unk8 = 1;
}
sub_80928A0(gFormatBuffer_Items[0],move,&uStack_30);
y = sub_8013800(&gUnknown_203B270->input,i);
linkChain = MoveFlagLinkChain(move);
x = !linkChain ? 0x8 : 0xD;
if (!linkChain && i != 0) {
sub_800792C(gUnknown_203B270->unk50,0xc,y - 2,0x78,7);
}
PrintFormattedStringOnWindow(x,y,gUnknown_80DC2A0,gUnknown_203B270->unk50,0); // {ARG_MOVE_ITEM_0}
}
}
sub_80073E0(gUnknown_203B270->unk50);
if ((gUnknown_203B270->text != NULL) && (param_1)) {
CallPrepareTextbox_8008C54(gUnknown_203B270->unk54);
sub_80073B8(gUnknown_203B270->unk54);
PrintFormattedStringOnWindow(8,0,gUnknown_203B270->text,gUnknown_203B270->unk54,0);
sub_80073E0(gUnknown_203B270->unk54);
}
}
s32 sub_801F3F8(void)
{
Move *move;
int index;
s32 counter;
counter = 0;
for(index = 0; index < 8; index++)
{
move = &gUnknown_203B270->moves[index];
if ((move->moveFlags & MOVE_FLAG_EXISTS)) {
counter++;
}
}
return counter;
}

View File

@ -1,21 +0,0 @@
#include "global.h"
#include "code_801EE10.h"
extern unkStruct_203B270 *gUnknown_203B270;
s32 sub_801F3F8(void)
{
Move *move;
int index;
s32 counter;
counter = 0;
for(index = 0; index < 8; index++)
{
move = &gUnknown_203B270->moves[index];
if ((move->moveFlags & MOVE_FLAG_EXISTS)) {
counter++;
}
}
return counter;
}