.include "constants/gba_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start CreateLoadScreen CreateLoadScreen: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 adds r6, r0, 0 ldr r5, _080392EC ldr r0, [r5] cmp r0, 0 bne _0803927C movs r4, 0x9F lsls r4, 2 adds r0, r4, 0 movs r1, 0x8 bl MemoryAlloc str r0, [r5] movs r1, 0 adds r2, r4, 0 bl MemoryFill8 _0803927C: ldr r0, [r5] str r6, [r0] mov r12, r5 movs r0, 0xA2 lsls r0, 1 mov r8, r0 ldr r4, _080392F0 movs r3, 0 movs r2, 0x3 _0803928E: mov r5, r12 ldr r1, [r5] adds r1, r3 add r1, r8 adds r0, r4, 0 ldm r0!, {r5-r7} stm r1!, {r5-r7} ldm r0!, {r5-r7} stm r1!, {r5-r7} adds r3, 0x18 subs r2, 0x1 cmp r2, 0 bge _0803928E bl ResetUnusedInputStruct ldr r6, _080392EC ldr r0, [r6] movs r5, 0xA2 lsls r5, 1 adds r0, r5 movs r1, 0x1 movs r2, 0x1 bl sub_800641C ldr r1, [r6] adds r0, r1, 0x4 adds r1, r5 ldr r3, _080392F4 ldr r2, _080392F8 str r2, [sp] movs r4, 0 str r4, [sp, 0x4] movs r7, 0x6 str r7, [sp, 0x8] str r4, [sp, 0xC] movs r2, 0 bl SetMenuItems ldr r1, [r6] ldr r0, [r1] cmp r0, 0x7 beq _08039306 cmp r0, 0x7 bhi _080392FC cmp r0, 0x6 beq _08039338 b _08039382 .align 2, 0 _080392EC: .4byte gUnknown_203B374 _080392F0: .4byte gUnknown_80E75F8 _080392F4: .4byte gUnknown_80E7610 _080392F8: .4byte gUnknown_203B378 _080392FC: cmp r0, 0x8 beq _0803934C cmp r0, 0x9 beq _0803936C b _08039382 _08039306: bl sub_8039844 lsls r0, 24 cmp r0, 0 beq _08039324 ldr r1, [r6] adds r0, r1, 0x4 adds r1, r5 ldr r3, _0803931C ldr r2, _08039320 b _08039354 .align 2, 0 _0803931C: .4byte gUnknown_80E762C _08039320: .4byte gUnknown_80E7644 _08039324: ldr r1, [r6] adds r0, r1, 0x4 adds r1, r5 ldr r3, _08039330 ldr r2, _08039334 b _08039354 .align 2, 0 _08039330: .4byte gUnknown_80E762C _08039334: .4byte gUnknown_80E7684 _08039338: adds r0, r1, 0x4 adds r1, r5 ldr r3, _08039344 ldr r2, _08039348 b _08039354 .align 2, 0 _08039344: .4byte gUnknown_80E762C _08039348: .4byte gUnknown_80E76B8 _0803934C: adds r0, r1, 0x4 adds r1, r5 ldr r3, _08039364 ldr r2, _08039368 _08039354: str r2, [sp] str r4, [sp, 0x4] str r7, [sp, 0x8] str r4, [sp, 0xC] movs r2, 0x1 bl SetMenuItems b _08039382 .align 2, 0 _08039364: .4byte gUnknown_80E762C _08039368: .4byte gUnknown_80E76E8 _0803936C: adds r0, r1, 0x4 adds r1, r5 ldr r3, _080393DC ldr r2, _080393E0 str r2, [sp] str r4, [sp, 0x4] str r7, [sp, 0x8] str r4, [sp, 0xC] movs r2, 0x1 bl SetMenuItems _08039382: ldr r4, _080393E4 ldr r1, [r4] adds r0, r1, 0x4 movs r6, 0xA2 lsls r6, 1 adds r1, r6 ldr r3, _080393E8 ldr r2, _080393EC str r2, [sp] movs r2, 0x1 str r2, [sp, 0x4] movs r2, 0x2 str r2, [sp, 0x8] movs r2, 0 str r2, [sp, 0xC] movs r2, 0x2 bl SetMenuItems ldr r0, [r4] adds r0, 0x4 movs r1, 0 movs r2, 0 bl sub_8035CF4 ldr r0, [r4] adds r0, 0x4 movs r1, 0x1 movs r2, 0 bl sub_8035CF4 ldr r0, [r4] adds r0, 0x4 movs r1, 0x2 movs r2, 0x1 bl sub_8035CF4 bl DrawLoadScreenText add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080393DC: .4byte gUnknown_80E762C _080393E0: .4byte gUnknown_80E7730 _080393E4: .4byte gUnknown_203B374 _080393E8: .4byte gUnknown_80E7784 _080393EC: .4byte gUnknown_80E779C thumb_func_end CreateLoadScreen thumb_func_start CleanLoadScreen CleanLoadScreen: push {r4,lr} bl ResetUnusedInputStruct movs r0, 0 movs r1, 0x1 movs r2, 0x1 bl sub_800641C ldr r4, _08039418 ldr r0, [r4] cmp r0, 0 beq _08039410 bl MemoryFree movs r0, 0 str r0, [r4] _08039410: pop {r4} pop {r0} bx r0 .align 2, 0 _08039418: .4byte gUnknown_203B374 thumb_func_end CleanLoadScreen thumb_func_start sub_803941C sub_803941C: push {r4,r5,lr} sub sp, 0x4 ldr r5, _08039458 movs r0, 0x4 str r0, [sp] ldr r4, _0803945C ldr r0, [r4] adds r0, 0x54 bl sub_8012FD8 ldr r0, [r4] adds r0, 0xA4 bl sub_8012FD8 lsls r0, 24 cmp r0, 0 bne _08039448 ldr r0, [r4] adds r0, 0xA4 mov r1, sp bl sub_8013114 _08039448: ldr r0, [sp] cmp r0, 0x3 bhi _08039498 cmp r0, 0x2 bcs _08039460 cmp r0, 0x1 beq _08039464 b _08039498 .align 2, 0 _08039458: .4byte 0x0000ffdc _0803945C: .4byte gUnknown_203B374 _08039460: movs r5, 0x1 b _08039498 _08039464: ldr r0, [r4] ldr r0, [r0] cmp r0, 0x7 beq _08039480 cmp r0, 0x7 bhi _08039476 cmp r0, 0x6 beq _08039484 b _08039498 _08039476: cmp r0, 0x8 beq _0803948E cmp r0, 0x9 beq _08039492 b _08039498 _08039480: movs r5, 0x2 b _08039498 _08039484: movs r0, 0 bl sub_8095240 movs r5, 0x4 b _08039498 _0803948E: movs r5, 0x9 b _08039498 _08039492: bl sub_80122A8 movs r5, 0x2E _08039498: adds r0, r5, 0 add sp, 0x4 pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_803941C thumb_func_start DrawLoadScreenText DrawLoadScreenText: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x150 bl sub_8011FA8 mov r8, r0 movs r0, 0 bl sub_8008C54 movs r0, 0 bl sub_80073B8 ldr r2, _0803952C movs r4, 0 str r4, [sp] movs r0, 0x8 movs r1, 0 movs r3, 0 bl xxx_call_draw_string ldr r2, _08039530 str r4, [sp] movs r0, 0x8 movs r1, 0xC movs r3, 0 bl xxx_call_draw_string ldr r2, _08039534 str r4, [sp] movs r0, 0x8 movs r1, 0x18 movs r3, 0 bl xxx_call_draw_string ldr r2, _08039538 str r4, [sp] movs r0, 0x8 movs r1, 0x24 movs r3, 0 bl xxx_call_draw_string ldr r2, _0803953C str r4, [sp] movs r0, 0x8 movs r1, 0x30 movs r3, 0 bl xxx_call_draw_string ldr r2, _08039540 str r4, [sp] movs r0, 0x8 movs r1, 0x3C movs r3, 0 bl xxx_call_draw_string movs r0, 0 bl sub_80023E4 lsls r0, 24 cmp r0, 0 beq _08039544 add r4, sp, 0x68 adds r0, r4, 0 bl sub_80920D8 adds r2, r4, 0 b _0803954E .align 2, 0 _0803952C: .4byte gUnknown_80E77BC _08039530: .4byte gUnknown_80E77C4 _08039534: .4byte gUnknown_80E77CC _08039538: .4byte gUnknown_80E77D8 _0803953C: .4byte gUnknown_80E77E4 _08039540: .4byte gUnknown_80E77F0 _08039544: ldr r1, _08039588 add r0, sp, 0x68 bl strcpy add r2, sp, 0x68 _0803954E: ldr r5, _0803958C ldr r0, [r5] movs r4, 0xD2 lsls r4, 1 adds r0, r4 ldr r1, _08039590 bl sub_800D158 ldr r2, [r5] adds r2, r4 movs r0, 0 str r0, [sp] movs r0, 0x40 movs r1, 0 movs r3, 0 bl xxx_call_draw_string bl sub_808D33C cmp r0, 0 bne _08039598 add r4, sp, 0x90 ldr r1, _08039594 adds r0, r4, 0 movs r2, 0xA bl sub_80922B4 b _080395A6 .align 2, 0 _08039588: .4byte gUnknown_80E77F8 _0803958C: .4byte gUnknown_203B374 _08039590: .4byte gUnknown_80E7804 _08039594: .4byte gUnknown_80E7808 _08039598: add r4, sp, 0x90 adds r1, r0, 0 adds r1, 0x4C adds r0, r4, 0 movs r2, 0xA bl sub_80922B4 _080395A6: adds r2, r4, 0 ldr r5, _080395F0 ldr r0, [r5] movs r4, 0xE4 lsls r4, 1 adds r0, r4 ldr r6, _080395F4 adds r1, r6, 0 bl sub_800D158 ldr r2, [r5] adds r2, r4 movs r0, 0 str r0, [sp] movs r0, 0x40 movs r1, 0xC movs r3, 0 bl xxx_call_draw_string movs r0, 0x1 bl sub_8095324 cmp r0, 0 bne _080395E0 movs r0, 0x7 bl sub_8095324 cmp r0, 0 beq _08039606 _080395E0: ldr r0, _080395F8 cmp r8, r0 bne _080395FC ldr r4, [r5] movs r0, 0xF6 lsls r0, 1 adds r4, r0 b _08039676 .align 2, 0 _080395F0: .4byte gUnknown_203B374 _080395F4: .4byte gUnknown_80E7804 _080395F8: .4byte 0x000f1207 _080395FC: ldr r0, [r5] movs r1, 0xF6 lsls r1, 1 adds r0, r1 b _08039690 _08039606: bl sub_8011C1C cmp r0, 0x1 beq _08039624 cmp r0, 0x2 beq _08039668 ldr r0, [r5] movs r2, 0xF6 lsls r2, 1 adds r0, r2 ldr r1, _08039620 b _08039692 .align 2, 0 _08039620: .4byte gUnknown_80E7824 _08039624: movs r0, 0 movs r1, 0x18 bl sub_8001658 cmp r0, 0x7 beq _08039658 cmp r0, 0xB beq _08039658 bl sub_8098FB4 adds r2, r0, 0 add r0, sp, 0x4 adds r1, r6, 0 bl sub_800D158 ldr r0, [r5] movs r3, 0xF6 lsls r3, 1 adds r1, r0, r3 adds r3, 0x24 adds r2, r0, r3 add r0, sp, 0x4 movs r3, 0 bl xxx_format_string b _08039696 _08039658: ldr r0, _08039664 ldr r0, [r0] movs r1, 0xF6 lsls r1, 1 adds r0, r1 b _08039690 .align 2, 0 _08039664: .4byte gUnknown_203B374 _08039668: ldr r0, _08039684 cmp r8, r0 bne _08039688 ldr r4, [r5] movs r2, 0xF6 lsls r2, 1 adds r4, r2 _08039676: bl sub_809769C adds r1, r0, 0 adds r0, r4, 0 bl sub_8090228 b _08039696 .align 2, 0 _08039684: .4byte 0x000f1207 _08039688: ldr r0, [r5] movs r3, 0xF6 lsls r3, 1 adds r0, r3 _08039690: ldr r1, _0803974C _08039692: bl sub_800D158 _08039696: ldr r7, _08039750 ldr r2, [r7] movs r0, 0xF6 lsls r0, 1 adds r2, r0 movs r6, 0 str r6, [sp] movs r0, 0x40 movs r1, 0x18 movs r3, 0 bl xxx_call_draw_string ldr r0, _08039754 ldr r0, [r0] add r1, sp, 0x144 add r2, sp, 0x148 add r3, sp, 0x14C bl DeconstructPlayTime ldr r0, [r7] movs r5, 0x84 lsls r5, 2 adds r0, r5 ldr r1, _08039758 add r2, sp, 0x144 ldr r2, [r2] add r3, sp, 0x148 ldr r3, [r3] add r4, sp, 0x14C ldr r4, [r4] str r4, [sp] bl sub_800D158 ldr r2, [r7] adds r2, r5 str r6, [sp] movs r0, 0x40 movs r1, 0x24 movs r3, 0 bl xxx_call_draw_string bl sub_8097778 adds r2, r0, 0 ldr r0, [r7] movs r4, 0x8D lsls r4, 2 adds r0, r4 ldr r1, _0803975C bl sub_800D158 ldr r2, [r7] adds r2, r4 str r6, [sp] movs r0, 0x40 movs r1, 0x30 movs r3, 0 bl xxx_call_draw_string ldr r0, _08039760 cmp r8, r0 bne _0803976C ldr r0, _08039764 ldr r6, [r0] movs r1, 0xC ldrsh r0, [r6, r1] cmp r0, 0 beq _0803976C add r5, sp, 0x130 adds r1, r0, 0 adds r0, r5, 0 bl sub_808D930 add r4, sp, 0xE0 adds r1, r6, 0 adds r1, 0x50 adds r0, r4, 0 movs r2, 0xA bl sub_80922B4 ldr r0, [r7] movs r3, 0x96 lsls r3, 2 adds r0, r3 ldr r1, _08039768 adds r2, r4, 0 adds r3, r5, 0 bl sub_800D158 b _0803977C .align 2, 0 _0803974C: .4byte gUnknown_80E780C _08039750: .4byte gUnknown_203B374 _08039754: .4byte gPlayTimeRef _08039758: .4byte gUnknown_80E7838 _0803975C: .4byte gUnknown_80E7848 _08039760: .4byte 0x000f1207 _08039764: .4byte gUnknown_203B484 _08039768: .4byte gUnknown_80E784C _0803976C: ldr r0, _080397AC ldr r0, [r0] movs r1, 0x96 lsls r1, 2 adds r0, r1 ldr r1, _080397B0 bl sub_800D158 _0803977C: ldr r0, _080397AC ldr r2, [r0] movs r3, 0x96 lsls r3, 2 adds r2, r3 movs r0, 0 str r0, [sp] movs r0, 0x40 movs r1, 0x3C movs r3, 0 bl xxx_call_draw_string bl sub_80397B4 movs r0, 0 bl sub_80073E0 add sp, 0x150 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080397AC: .4byte gUnknown_203B374 _080397B0: .4byte gUnknown_80E7854 thumb_func_end DrawLoadScreenText thumb_func_start sub_80397B4 sub_80397B4: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r0, _08039834 ldr r1, _08039838 bl OpenFileAndGetFileDataPtr adds r6, r0, 0 movs r4, 0 _080397C8: adds r0, r4, 0 adds r0, 0xB0 ldr r1, [r6, 0x4] lsls r2, r4, 2 ldr r1, [r1, 0x4] adds r1, r2 bl SetBGPaletteBufferColorArray adds r4, 0x1 cmp r4, 0x3F ble _080397C8 movs r7, 0x8 movs r0, 0x49 mov r8, r0 movs r4, 0 _080397E6: ldr r0, _0803983C lsls r5, r4, 2 adds r0, r5, r0 ldr r0, [r0] bl sub_80023E4 lsls r0, 24 cmp r0, 0 beq _0803981C movs r0, 0x10 str r0, [sp] ldr r0, [r6, 0x4] lsls r1, r4, 7 ldr r0, [r0] adds r0, r1 str r0, [sp, 0x4] ldr r0, _08039840 adds r0, r5, r0 ldr r0, [r0] str r0, [sp, 0x8] movs r0, 0 adds r1, r7, 0 mov r2, r8 movs r3, 0x10 bl sub_8007E20 adds r7, 0x10 _0803981C: adds r4, 0x1 cmp r4, 0xB ble _080397E6 adds r0, r6, 0 bl CloseFile add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08039834: .4byte gUnknown_80E785C _08039838: .4byte gTitleMenuFileArchive _0803983C: .4byte gUnknown_203B3B8 _08039840: .4byte gUnknown_203B388 thumb_func_end sub_80397B4 .align 2,0