summaryrefslogtreecommitdiff
path: root/asm/load_screen.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/load_screen.s')
-rw-r--r--asm/load_screen.s718
1 files changed, 718 insertions, 0 deletions
diff --git a/asm/load_screen.s b/asm/load_screen.s
new file mode 100644
index 0000000..81c84fb
--- /dev/null
+++ b/asm/load_screen.s
@@ -0,0 +1,718 @@
+ .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