#include "constants/easy_chat.h" #include "constants/items.h" #include "constants/maps.h" #include "constants/moves.h" #include "constants/species.h" .include "asm/macros.inc" .include "unk_020965A4.inc" .include "global.inc" .text thumb_func_start Frontier_Init Frontier_Init: ; 0x020965A4 push {r3, r4, r5, lr} add r5, r0, #0 bl Frontier_LoadOverlays ldr r1, _02096604 ; =0x00000A54 add r0, r5, #0 mov r2, #0xb bl OverlayManager_CreateAndGetData ldr r2, _02096604 ; =0x00000A54 add r4, r0, #0 mov r1, #0 bl MI_CpuFill8 add r0, r4, #0 bl sub_02096780 add r0, r4, #0 bl sub_02096884 add r0, r5, #0 bl OverlayManager_GetArgs str r0, [r4] cmp r0, #0 bne _020965DC bl GF_AssertFail _020965DC: ldr r2, [r4] add r0, r4, #0 add r2, #0x20 ldrb r2, [r2] mov r1, #0xb bl FrontierSystem_Create str r0, [r4, #0x14] ldr r1, [r4] mov r2, #0 add r1, #0x20 ldrb r1, [r1] bl FrontierSystem_AddTask add r0, r4, #0 bl Frontier_CreateMap mov r0, #1 pop {r3, r4, r5, pc} nop _02096604: .word 0x00000A54 thumb_func_end Frontier_Init thumb_func_start Frontier_Main Frontier_Main: ; 0x02096608 push {r4, r5, r6, lr} add r5, r1, #0 bl OverlayManager_GetData ldr r1, [r5] add r4, r0, #0 cmp r1, #6 bls _0209661A b _02096734 _0209661A: add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02096626: ; jump table .short _02096634 - _02096626 - 2 ; case 0 .short _0209663A - _02096626 - 2 ; case 1 .short _0209666C - _02096626 - 2 ; case 2 .short _02096670 - _02096626 - 2 ; case 3 .short _02096686 - _02096626 - 2 ; case 4 .short _020966CE - _02096626 - 2 ; case 5 .short _020966DE - _02096626 - 2 ; case 6 _02096634: mov r0, #1 str r0, [r5] b _02096734 _0209663A: add r0, #0x22 ldrb r0, [r0] cmp r0, #1 bne _02096648 mov r0, #2 str r0, [r5] b _02096734 _02096648: ldrb r0, [r4, #0x1d] cmp r0, #0 beq _02096734 ldrb r0, [r4, #0x1e] cmp r0, #1 bne _0209665A mov r0, #5 str r0, [r5] b _02096734 _0209665A: ldr r0, [r4, #0x14] bl FrontierSystem_Main ldr r0, [r4, #4] cmp r0, #0 beq _02096734 mov r0, #3 str r0, [r5] b _02096734 _0209666C: mov r0, #1 pop {r4, r5, r6, pc} _02096670: ldr r0, [r4, #0x18] bl ov80_022389C4 add r0, r4, #0 bl Frontier_FreeMap bl Frontier_UnloadOverlays mov r0, #4 str r0, [r5] b _02096734 _02096686: ldr r0, [r4, #4] bl OverlayManager_Run cmp r0, #1 bne _02096734 ldr r0, [r4, #4] bl OverlayManager_Delete bl Frontier_LoadOverlays ldr r1, [r4, #0xc] cmp r1, #0 beq _020966A4 ldr r0, [r4, #8] blx r1 _020966A4: ldr r0, [r4, #8] cmp r0, #0 beq _020966B4 ldrb r1, [r4, #0x10] cmp r1, #1 bne _020966B4 bl FreeToHeap _020966B4: mov r0, #0 str r0, [r4, #4] str r0, [r4, #0xc] str r0, [r4, #8] add r0, r4, #0 bl Frontier_CreateMap ldr r0, [r4, #0x18] bl ov80_02238A18 mov r0, #1 str r0, [r5] b _02096734 _020966CE: bl Frontier_FreeMap add r0, r4, #0 bl sub_02096780 mov r0, #6 str r0, [r5] b _02096734 _020966DE: bl Frontier_CreateMap ldrh r1, [r4, #0x20] ldr r0, _02096738 ; =0x0000FFFF cmp r1, r0 ldr r0, [r4, #0x14] bne _020966FA ldr r1, [r4] mov r2, #0xb add r1, #0x20 ldrb r1, [r1] bl ov80_0222AA7C b _0209672C _020966FA: mov r1, #0xb bl ov80_0222AAD8 add r6, r0, #0 ldr r0, [r4, #0x14] bl ov80_0222A920 ldr r2, [r4] add r0, r4, #0 add r2, #0x20 ldrb r2, [r2] mov r1, #0xb bl FrontierSystem_Create str r0, [r4, #0x14] ldr r1, [r4] ldrh r2, [r4, #0x20] add r1, #0x20 ldrb r1, [r1] bl FrontierSystem_AddTask ldr r0, [r4, #0x14] add r1, r6, #0 bl ov80_0222AAF8 _0209672C: mov r0, #0 strb r0, [r4, #0x1e] mov r0, #1 str r0, [r5] _02096734: mov r0, #0 pop {r4, r5, r6, pc} .balign 4, 0 _02096738: .word 0x0000FFFF thumb_func_end Frontier_Main thumb_func_start Frontier_Exit Frontier_Exit: ; 0x0209673C push {r3, r4, r5, lr} add r5, r0, #0 bl OverlayManager_GetData add r4, r0, #0 ldr r0, [r4, #0x14] bl ov80_0222A920 add r0, r4, #0 bl Frontier_FreeMap add r0, r5, #0 bl OverlayManager_FreeData bl Frontier_UnloadOverlays mov r0, #1 pop {r3, r4, r5, pc} thumb_func_end Frontier_Exit thumb_func_start Frontier_CreateMap Frontier_CreateMap: ; 0x02096760 push {r4, lr} add r4, r0, #0 bl FrontierMap_Init str r0, [r4, #0x18] mov r0, #1 strb r0, [r4, #0x1d] pop {r4, pc} thumb_func_end Frontier_CreateMap thumb_func_start Frontier_FreeMap Frontier_FreeMap: ; 0x02096770 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x18] bl FrontierMap_Free mov r0, #0 strb r0, [r4, #0x1d] pop {r4, pc} thumb_func_end Frontier_FreeMap thumb_func_start sub_02096780 sub_02096780: ; 0x02096780 push {r4, lr} add r4, r0, #0 ldr r0, _020967B8 ; =0x0000FFFF mov r1, #0 add r2, r4, #0 _0209678A: add r1, r1, #1 strh r0, [r2, #0x24] add r2, r2, #4 cmp r1, #0x18 blt _0209678A add r0, r4, #0 mov r2, #0x1e add r0, #0x84 mov r1, #0 lsl r2, r2, #6 bl MI_CpuFill8 ldr r1, _020967B8 ; =0x0000FFFF mov r2, #0 _020967A6: add r0, r4, #0 add r0, #0x90 add r2, r2, #1 add r4, #0x3c strh r1, [r0] cmp r2, #0x20 blt _020967A6 pop {r4, pc} nop _020967B8: .word 0x0000FFFF thumb_func_end sub_02096780 thumb_func_start Frontier_LoadOverlays Frontier_LoadOverlays: ; 0x020967BC push {r3, lr} ldr r0, _020967D8 ; =FS_OVERLAY_ID(OVY_80) mov r1, #2 bl HandleLoadOverlay ldr r0, _020967DC ; =FS_OVERLAY_ID(OVY_81) mov r1, #2 bl HandleLoadOverlay ldr r0, _020967E0 ; =FS_OVERLAY_ID(OVY_42) mov r1, #2 bl HandleLoadOverlay pop {r3, pc} .balign 4, 0 _020967D8: .word FS_OVERLAY_ID(OVY_80) _020967DC: .word FS_OVERLAY_ID(OVY_81) _020967E0: .word FS_OVERLAY_ID(OVY_42) thumb_func_end Frontier_LoadOverlays thumb_func_start Frontier_UnloadOverlays Frontier_UnloadOverlays: ; 0x020967E4 push {r3, lr} ldr r0, _020967FC ; =FS_OVERLAY_ID(OVY_80) bl UnloadOverlayByID ldr r0, _02096800 ; =FS_OVERLAY_ID(OVY_81) bl UnloadOverlayByID ldr r0, _02096804 ; =FS_OVERLAY_ID(OVY_42) bl UnloadOverlayByID pop {r3, pc} nop _020967FC: .word FS_OVERLAY_ID(OVY_80) _02096800: .word FS_OVERLAY_ID(OVY_81) _02096804: .word FS_OVERLAY_ID(OVY_42) thumb_func_end Frontier_UnloadOverlays thumb_func_start Frontier_GetLaunchParam Frontier_GetLaunchParam: ; 0x02096808 ldr r0, [r0] bx lr thumb_func_end Frontier_GetLaunchParam thumb_func_start sub_0209680C sub_0209680C: ; 0x0209680C ldr r0, [r0, #0x18] bx lr thumb_func_end sub_0209680C thumb_func_start Frontier_GetData Frontier_GetData: ; 0x02096810 ldr r0, [r0] ldr r0, [r0] bx lr .balign 4, 0 thumb_func_end Frontier_GetData thumb_func_start Frontier_SetData Frontier_SetData: ; 0x02096818 ldr r0, [r0] str r1, [r0] bx lr .balign 4, 0 thumb_func_end Frontier_SetData thumb_func_start Frontier_LaunchApplication Frontier_LaunchApplication: ; 0x02096820 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #4] add r7, r1, #0 add r4, r2, #0 add r6, r3, #0 cmp r0, #0 beq _02096834 bl GF_AssertFail _02096834: add r0, r7, #0 add r1, r4, #0 mov r2, #0xb bl OverlayManager_New str r0, [r5, #4] str r4, [r5, #8] ldr r0, [sp, #0x18] strb r6, [r5, #0x10] str r0, [r5, #0xc] pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 thumb_func_end Frontier_LaunchApplication thumb_func_start sub_0209684C sub_0209684C: ; 0x0209684C mov r1, #1 add r0, #0x22 strb r1, [r0] bx lr thumb_func_end sub_0209684C thumb_func_start sub_02096854 sub_02096854: ; 0x02096854 ldr r3, [r0] add r3, #0x20 strb r1, [r3] mov r1, #1 strb r1, [r0, #0x1e] strh r2, [r0, #0x20] bx lr .balign 4, 0 thumb_func_end sub_02096854 thumb_func_start sub_02096864 sub_02096864: ; 0x02096864 add r0, #0x24 bx lr thumb_func_end sub_02096864 thumb_func_start sub_02096868 sub_02096868: ; 0x02096868 add r0, #0x84 bx lr thumb_func_end sub_02096868 thumb_func_start sub_0209686C sub_0209686C: ; 0x0209686C mov r2, #0x3c add r0, #0x84 mul r2, r1 add r0, r0, r2 bx lr .balign 4, 0 thumb_func_end sub_0209686C thumb_func_start sub_02096878 sub_02096878: ; 0x02096878 ldr r1, _02096880 ; =0x00000A04 add r0, r0, r1 bx lr nop _02096880: .word 0x00000A04 thumb_func_end sub_02096878 thumb_func_start sub_02096884 sub_02096884: ; 0x02096884 push {r4, lr} add r4, r0, #0 ldr r0, _020968A8 ; =0x00000A04 mov r1, #0 add r0, r4, r0 mov r2, #8 bl MI_CpuFill8 ldr r1, _020968AC ; =0x0000FFFF ldr r0, _020968A8 ; =0x00000A04 mov r2, #0 _0209689A: add r2, r2, #1 strh r1, [r4, r0] add r4, r4, #2 cmp r2, #8 blt _0209689A pop {r4, pc} nop _020968A8: .word 0x00000A04 _020968AC: .word 0x0000FFFF thumb_func_end sub_02096884 .rodata .public gOverlayTemplate_Frontier gOverlayTemplate_Frontier: .word Frontier_Init, Frontier_Main, Frontier_Exit, 0xFFFFFFFF