diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s deleted file mode 100644 index d40ea219e..000000000 --- a/asm/code_801EE10.s +++ /dev/null @@ -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 diff --git a/include/code_801EE10.h b/include/code_801EE10.h index 94c95baf6..71c95f515 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -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 diff --git a/ld_script.txt b/ld_script.txt index e576aa391..cad2d9b8d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -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); diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 64419cd96..fa4278d0d 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -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; +} diff --git a/src/code_801EE10_mid.c b/src/code_801EE10_mid.c deleted file mode 100644 index 50bf825cf..000000000 --- a/src/code_801EE10_mid.c +++ /dev/null @@ -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; -}