diff options
author | YamaArashi <shadow962@live.com> | 2016-10-17 20:35:14 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-17 20:35:14 -0700 |
commit | 06da1bcabed792b2d5abf6405b7b3276769ee201 (patch) | |
tree | 6caeada997ad1e2859cab6dc34f230e7363250a5 | |
parent | 9b7948055c486011217d68d55180f67cbd3166ff (diff) |
split out var.s and flag.s
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | asm/flag.s | 124 | ||||
-rw-r--r-- | asm/rom_8065394.s | 3780 | ||||
-rw-r--r-- | asm/rom_806936C.s | 3579 | ||||
-rw-r--r-- | asm/var.s | 104 | ||||
-rw-r--r-- | ld_script.txt | 3 |
6 files changed, 3812 insertions, 3781 deletions
@@ -52,7 +52,8 @@ asm/tileset.o asm/rom_8065394.o asm/rom_803D1FC.o asm/calculate_base_damage.o \ asm/rom_813BA94.o asm/rom_81258BC.o asm/mystery_event_script.o \ asm/field_effect_helpers.o asm/contest_ai.o asm/berry.o asm/rom_80B5054.o \ asm/party_menu.o asm/rom_806D7F8.o asm/wild_encounter.o asm/rom_80859BC.o \ -asm/field_effect.o asm/title_screen.o asm/rom_807C828.o +asm/field_effect.o asm/title_screen.o asm/rom_807C828.o asm/var.o \ +asm/flag.o asm/rom_806936C.o DATA_ASM_OBJS := data/data2.o data/graphics.o data/sound_data.o \ data/event_scripts.o data/battle_anim_scripts.o \ diff --git a/asm/flag.s b/asm/flag.s new file mode 100644 index 000000000..6f2e7b3eb --- /dev/null +++ b/asm/flag.s @@ -0,0 +1,124 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start GetFlagPointer +GetFlagPointer: @ 80692AC + push {lr} + lsls r2, r0, 16 + lsrs r1, r2, 16 + adds r3, r1, 0 + cmp r1, 0 + bne _080692BC + movs r0, 0 + b _080692E2 +_080692BC: + ldr r0, _080692C8 + cmp r1, r0 + bhi _080692D0 + lsrs r0, r2, 19 + ldr r1, _080692CC + b _080692E0 + .align 2, 0 +_080692C8: .4byte 0x00003fff +_080692CC: .4byte gSaveBlock1 + 0x1220 +_080692D0: + ldr r1, _080692E8 + adds r0, r3, r1 + cmp r0, 0 + bge _080692DC + adds r1, 0x7 + adds r0, r3, r1 +_080692DC: + asrs r0, 3 + ldr r1, _080692EC +_080692E0: + adds r0, r1 +_080692E2: + pop {r1} + bx r1 + .align 2, 0 +_080692E8: .4byte 0xffffc000 +_080692EC: .4byte gUnknown_0202E8E2 + thumb_func_end GetFlagPointer + + thumb_func_start FlagSet +FlagSet: @ 80692F0 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl GetFlagPointer + adds r2, r0, 0 + cmp r2, 0 + beq _08069310 + movs r0, 0x7 + ands r0, r4 + movs r1, 0x1 + lsls r1, r0 + ldrb r0, [r2] + orrs r1, r0 + strb r1, [r2] +_08069310: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end FlagSet + + thumb_func_start FlagReset +FlagReset: @ 8069318 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl GetFlagPointer + adds r2, r0, 0 + cmp r2, 0 + beq _08069338 + movs r0, 0x7 + ands r0, r4 + movs r1, 0x1 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] +_08069338: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end FlagReset + + thumb_func_start FlagGet +FlagGet: @ 8069340 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl GetFlagPointer + cmp r0, 0 + beq _08069364 + ldrb r0, [r0] + movs r1, 0x7 + ands r1, r4 + asrs r0, r1 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08069364 + movs r0, 0x1 + b _08069366 +_08069364: + movs r0, 0 +_08069366: + pop {r4} + pop {r1} + bx r1 + thumb_func_end FlagGet + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_8065394.s b/asm/rom_8065394.s index 50e95eeab..a4f648f88 100644 --- a/asm/rom_8065394.s +++ b/asm/rom_8065394.s @@ -2514,3784 +2514,4 @@ _0806920A: bx r1 thumb_func_end sub_80691DC - thumb_func_start GetVarPointer -GetVarPointer: @ 8069210 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - adds r2, r1, 0 - ldr r0, _08069224 - cmp r1, r0 - bhi _08069228 - movs r0, 0 - b _0806924A - .align 2, 0 -_08069224: .4byte 0x00003fff -_08069228: - lsls r0, r1, 16 - cmp r0, 0 - bge _08069244 - ldr r0, _0806923C - ldr r2, _08069240 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - b _0806924A - .align 2, 0 -_0806923C: .4byte gUnknown_0814B14C -_08069240: .4byte 0xffff8000 -_08069244: - lsls r0, r2, 1 - ldr r1, _08069250 - adds r0, r1 -_0806924A: - pop {r1} - bx r1 - .align 2, 0 -_08069250: .4byte 0x0201ea74 - thumb_func_end GetVarPointer - - thumb_func_start VarGet -VarGet: @ 8069254 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl GetVarPointer - cmp r0, 0 - beq _08069268 - ldrh r0, [r0] - b _0806926A -_08069268: - adds r0, r4, 0 -_0806926A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end VarGet - - thumb_func_start VarSet -VarSet: @ 8069270 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - bl GetVarPointer - cmp r0, 0 - beq _08069288 - strh r4, [r0] - movs r0, 0x1 - b _0806928A -_08069288: - movs r0, 0 -_0806928A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end VarSet - - thumb_func_start VarGetFieldObjectGraphicsId -VarGetFieldObjectGraphicsId: @ 8069290 - push {lr} - lsls r0, 24 - lsrs r0, 8 - ldr r1, _080692A8 - adds r0, r1 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080692A8: .4byte 0x40100000 - thumb_func_end VarGetFieldObjectGraphicsId - - thumb_func_start GetFlagPointer -GetFlagPointer: @ 80692AC - push {lr} - lsls r2, r0, 16 - lsrs r1, r2, 16 - adds r3, r1, 0 - cmp r1, 0 - bne _080692BC - movs r0, 0 - b _080692E2 -_080692BC: - ldr r0, _080692C8 - cmp r1, r0 - bhi _080692D0 - lsrs r0, r2, 19 - ldr r1, _080692CC - b _080692E0 - .align 2, 0 -_080692C8: .4byte 0x00003fff -_080692CC: .4byte gSaveBlock1 + 0x1220 -_080692D0: - ldr r1, _080692E8 - adds r0, r3, r1 - cmp r0, 0 - bge _080692DC - adds r1, 0x7 - adds r0, r3, r1 -_080692DC: - asrs r0, 3 - ldr r1, _080692EC -_080692E0: - adds r0, r1 -_080692E2: - pop {r1} - bx r1 - .align 2, 0 -_080692E8: .4byte 0xffffc000 -_080692EC: .4byte gUnknown_0202E8E2 - thumb_func_end GetFlagPointer - - thumb_func_start FlagSet -FlagSet: @ 80692F0 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl GetFlagPointer - adds r2, r0, 0 - cmp r2, 0 - beq _08069310 - movs r0, 0x7 - ands r0, r4 - movs r1, 0x1 - lsls r1, r0 - ldrb r0, [r2] - orrs r1, r0 - strb r1, [r2] -_08069310: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end FlagSet - - thumb_func_start FlagReset -FlagReset: @ 8069318 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl GetFlagPointer - adds r2, r0, 0 - cmp r2, 0 - beq _08069338 - movs r0, 0x7 - ands r0, r4 - movs r1, 0x1 - lsls r1, r0 - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] -_08069338: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end FlagReset - - thumb_func_start FlagGet -FlagGet: @ 8069340 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl GetFlagPointer - cmp r0, 0 - beq _08069364 - ldrb r0, [r0] - movs r1, 0x7 - ands r1, r4 - asrs r0, r1 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08069364 - movs r0, 0x1 - b _08069366 -_08069364: - movs r0, 0 -_08069366: - pop {r4} - pop {r1} - bx r1 - thumb_func_end FlagGet - - thumb_func_start sub_806936C -sub_806936C: @ 806936C - push {lr} - movs r0, 0x1 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_806936C - - thumb_func_start sub_8069378 -sub_8069378: @ 8069378 - push {lr} - movs r0, 0x2 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_8069378 - - thumb_func_start sub_8069384 -sub_8069384: @ 8069384 - push {lr} - movs r0, 0x3 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_8069384 - - thumb_func_start sub_8069390 -sub_8069390: @ 8069390 - push {lr} - movs r0, 0x4 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_8069390 - - thumb_func_start sub_806939C -sub_806939C: @ 806939C - push {lr} - movs r0, 0x5 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_806939C - - thumb_func_start sub_80693A8 -sub_80693A8: @ 80693A8 - push {lr} - movs r0, 0x6 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693A8 - - thumb_func_start sub_80693B4 -sub_80693B4: @ 80693B4 - push {lr} - movs r0, 0x9 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693B4 - - thumb_func_start sub_80693C0 -sub_80693C0: @ 80693C0 - push {lr} - movs r0, 0x7 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693C0 - - thumb_func_start sub_80693CC -sub_80693CC: @ 80693CC - push {lr} - movs r0, 0x8 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693CC - - thumb_func_start sub_80693D8 -sub_80693D8: @ 80693D8 - push {lr} - movs r0, 0xB - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693D8 - - thumb_func_start sub_80693E4 -sub_80693E4: @ 80693E4 - push {lr} - movs r0, 0xC - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693E4 - - thumb_func_start sub_80693F0 -sub_80693F0: @ 80693F0 - push {lr} - movs r0, 0x14 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693F0 - - thumb_func_start sub_80693FC -sub_80693FC: @ 80693FC - push {lr} - movs r0, 0x15 - bl sub_808070C - pop {r0} - bx r0 - thumb_func_end sub_80693FC - - thumb_func_start sub_8069408 -sub_8069408: @ 8069408 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r2, 0 - ldr r3, _08069428 -_08069412: - lsls r1, r2, 3 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r4 - bne _0806942C - adds r0, r3, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - bl _call_via_r0 - b _08069436 - .align 2, 0 -_08069428: .4byte gUnknown_083762FC -_0806942C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xC - bls _08069412 -_08069436: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8069408 - - thumb_func_start task_per_step_callback_manager -task_per_step_callback_manager: @ 806943C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08069460 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x8 - ldrsh r1, [r1, r2] - ldr r2, _08069464 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_08069460: .4byte gTasks -_08069464: .4byte gUnknown_08376364 - thumb_func_end task_per_step_callback_manager - - thumb_func_start sub_8069468 -sub_8069468: @ 8069468 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0806947A - cmp r0, 0x1 - beq _08069498 - b _080694AC -_0806947A: - ldr r0, _08069494 - ldr r0, [r0, 0x20] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _080694AC - bl InTrainerHill - ldrh r0, [r4] - adds r0, 0x1 - b _080694AA - .align 2, 0 -_08069494: .4byte gMain -_08069498: - ldr r0, _080694B4 - ldr r0, [r0, 0x20] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _080694AC - ldrh r0, [r4] - subs r0, 0x1 -_080694AA: - strh r0, [r4] -_080694AC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080694B4: .4byte gMain - thumb_func_end sub_8069468 - - thumb_func_start sub_80694B8 -sub_80694B8: @ 80694B8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080694E8 - adds r4, r1, r0 - bl ScriptContext2_IsEnabled - lsls r0, 24 - cmp r0, 0 - bne _080694E0 - adds r0, r4, 0 - bl sub_8069468 - adds r0, r4, 0x2 - adds r1, r4, 0x4 - bl sub_80540D0 -_080694E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080694E8: .4byte gUnknown_03004B28 - thumb_func_end sub_80694B8 - - thumb_func_start overworld_ensure_per_step_coros_running -overworld_ensure_per_step_coros_running: @ 80694EC - push {r4,r5,lr} - ldr r5, _08069548 - adds r0, r5, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08069516 - adds r0, r5, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806954C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] -_08069516: - ldr r4, _08069550 - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0806952C - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask -_0806952C: - ldr r4, _08069554 - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08069542 - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask -_08069542: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069548: .4byte task_per_step_callback_manager -_0806954C: .4byte gTasks -_08069550: .4byte sub_806A1E8 -_08069554: .4byte sub_80694B8 - thumb_func_end overworld_ensure_per_step_coros_running - - thumb_func_start activate_per_step_callback -activate_per_step_callback: @ 8069558 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08069590 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _0806959A - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _08069594 - adds r1, r0, r1 - movs r2, 0 - adds r0, r1, 0 - adds r0, 0x1E -_0806957C: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _0806957C - cmp r4, 0x7 - bls _08069598 - movs r0, 0 - strh r0, [r1] - b _0806959A - .align 2, 0 -_08069590: .4byte task_per_step_callback_manager -_08069594: .4byte gUnknown_03004B28 -_08069598: - strh r4, [r1] -_0806959A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end activate_per_step_callback - - thumb_func_start wild_encounter_reset_coro_args -wild_encounter_reset_coro_args: @ 80695A0 - push {lr} - ldr r0, _080695D0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080695D4 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _080695CA - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080695D8 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] -_080695CA: - pop {r0} - bx r0 - .align 2, 0 -_080695D0: .4byte task_per_step_callback_manager -_080695D4: .4byte sub_80694B8 -_080695D8: .4byte gUnknown_03004B28 - thumb_func_end wild_encounter_reset_coro_args - - thumb_func_start nullsub_51 -nullsub_51: @ 80695DC - bx lr - thumb_func_end nullsub_51 - - thumb_func_start sub_80695E0 -sub_80695E0: @ 80695E0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - adds r0, r4, 0 - bl sub_80576A0 - lsls r0, 24 - cmp r0, 0 - beq _080695F8 - adds r0, r5, 0 - b _08069630 -_080695F8: - adds r0, r4, 0 - bl sub_80576B4 - lsls r0, 24 - cmp r0, 0 - beq _0806960A - adds r0, r5, 0 - adds r0, 0x8 - b _08069630 -_0806960A: - adds r0, r4, 0 - bl sub_80576C8 - lsls r0, 24 - cmp r0, 0 - beq _0806961C - adds r0, r5, 0 - adds r0, 0x10 - b _08069630 -_0806961C: - adds r0, r4, 0 - bl sub_80576DC - lsls r0, 24 - cmp r0, 0 - bne _0806962C - movs r0, 0 - b _08069630 -_0806962C: - adds r0, r5, 0 - adds r0, 0x18 -_08069630: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80695E0 - - thumb_func_start sub_8069638 -sub_8069638: @ 8069638 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - mov r8, r3 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r7, r2, 16 - adds r0, r6, 0 - adds r1, r7, 0 - bl MapGridGetMetatileBehaviorAt - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_80695E0 - adds r4, r0, 0 - adds r5, r4, 0 - cmp r4, 0 - beq _080696B6 - movs r0, 0 - ldrsb r0, [r4, r0] - adds r0, r6, r0 - movs r1, 0x1 - ldrsb r1, [r4, r1] - adds r1, r7, r1 - ldrh r2, [r4, 0x2] - bl MapGridSetMetatileIdAt - mov r0, r8 - cmp r0, 0 - beq _0806968E - movs r0, 0 - ldrsb r0, [r4, r0] - adds r0, r6, r0 - movs r1, 0x1 - ldrsb r1, [r4, r1] - adds r1, r7, r1 - bl CurrentMapDrawMetatileAt -_0806968E: - movs r0, 0x4 - ldrsb r0, [r5, r0] - adds r0, r6, r0 - movs r1, 0x5 - ldrsb r1, [r5, r1] - adds r1, r7, r1 - ldrh r2, [r5, 0x6] - bl MapGridSetMetatileIdAt - mov r0, r8 - cmp r0, 0 - beq _080696B6 - movs r0, 0x4 - ldrsb r0, [r5, r0] - adds r0, r6, r0 - movs r1, 0x5 - ldrsb r1, [r5, r1] - adds r1, r7, r1 - bl CurrentMapDrawMetatileAt -_080696B6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8069638 - - thumb_func_start sub_80696C0 -sub_80696C0: @ 80696C0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - ldr r0, _080696E0 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8069638 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080696E0: .4byte gUnknown_08376384 - thumb_func_end sub_80696C0 - - thumb_func_start sub_80696E4 -sub_80696E4: @ 80696E4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - ldr r0, _08069704 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8069638 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069704: .4byte gUnknown_083763A4 - thumb_func_end sub_80696E4 - - thumb_func_start sub_8069708 -sub_8069708: @ 8069708 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - ldr r0, _08069728 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8069638 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069728: .4byte gUnknown_083763C4 - thumb_func_end sub_8069708 - - thumb_func_start sub_806972C -sub_806972C: @ 806972C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r10, r8 - lsls r1, 16 - lsrs r7, r1, 16 - mov r9, r7 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r5, r3, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80576A0 - lsls r0, 24 - cmp r0, 0 - beq _08069770 - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, r5 - ble _080697B6 -_0806976C: - movs r0, 0 - b _080697B8 -_08069770: - adds r0, r4, 0 - bl sub_80576B4 - lsls r0, 24 - cmp r0, 0 - beq _08069788 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r5 - bge _080697B6 - b _0806976C -_08069788: - adds r0, r4, 0 - bl sub_80576C8 - lsls r0, 24 - cmp r0, 0 - beq _080697A0 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r6 - ble _080697B6 - b _0806976C -_080697A0: - adds r0, r4, 0 - bl sub_80576DC - lsls r0, 24 - cmp r0, 0 - beq _080697B6 - mov r1, r10 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r6 - blt _0806976C -_080697B6: - movs r0, 0x1 -_080697B8: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806972C - - thumb_func_start sub_80697C8 -sub_80697C8: @ 80697C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - mov r10, r8 - lsls r3, 16 - lsrs r7, r3, 16 - mov r9, r7 - lsls r0, 16 - asrs r6, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80576A0 - lsls r0, 24 - cmp r0, 0 - beq _0806980C - lsls r0, r7, 16 - asrs r0, 16 - cmp r5, r0 - bge _08069852 -_08069808: - movs r0, 0 - b _08069854 -_0806980C: - adds r0, r4, 0 - bl sub_80576B4 - lsls r0, 24 - cmp r0, 0 - beq _08069824 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - cmp r5, r0 - ble _08069852 - b _08069808 -_08069824: - adds r0, r4, 0 - bl sub_80576C8 - lsls r0, 24 - cmp r0, 0 - beq _0806983C - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - cmp r6, r0 - bge _08069852 - b _08069808 -_0806983C: - adds r0, r4, 0 - bl sub_80576DC - lsls r0, 24 - cmp r0, 0 - beq _08069852 - mov r1, r10 - lsls r0, r1, 16 - asrs r0, 16 - cmp r6, r0 - bgt _08069808 -_08069852: - movs r0, 0x1 -_08069854: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80697C8 - - thumb_func_start sub_8069864 -sub_8069864: @ 8069864 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069898 - adds r4, r1, r0 - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - movs r1, 0x2 - ldrsh r0, [r4, r1] - adds r6, r5, 0 - cmp r0, 0x1 - beq _080698BE - cmp r0, 0x1 - bgt _0806989C - cmp r0, 0 - beq _080698A2 - b _080699CE - .align 2, 0 -_08069898: .4byte gUnknown_03004B28 -_0806989C: - cmp r0, 0x2 - beq _0806998C - b _080699CE -_080698A2: - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x4] - ldrh r0, [r5] - strh r0, [r4, 0x6] - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r3, 0 - ldrsh r1, [r5, r3] - movs r2, 0x1 - bl sub_80696E4 - b _080699CA -_080698BE: - mov r0, sp - movs r7, 0 - ldrsh r1, [r0, r7] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080698D8 - movs r3, 0 - ldrsh r1, [r5, r3] - movs r7, 0x6 - ldrsh r0, [r4, r7] - cmp r1, r0 - beq _080699CE -_080698D8: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r5, 0x6 - ldrsh r3, [r4, r5] - bl sub_806972C - cmp r0, 0 - beq _08069920 - movs r7, 0x4 - ldrsh r0, [r4, r7] - movs r2, 0x6 - ldrsh r1, [r4, r2] - movs r2, 0x1 - bl sub_80696C0 - movs r3, 0x4 - ldrsh r0, [r4, r3] - movs r5, 0x6 - ldrsh r1, [r4, r5] - movs r2, 0 - bl sub_8069708 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x8] - ldrh r0, [r4, 0x6] - strh r0, [r4, 0xA] - movs r0, 0x2 - strh r0, [r4, 0x2] - movs r0, 0x8 - strh r0, [r4, 0xC] - b _0806992A -_08069920: - movs r7, 0x1 - negs r7, r7 - adds r0, r7, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] -_0806992A: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r5, r6, 0 - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r7, 0x6 - ldrsh r3, [r4, r7] - bl sub_80697C8 - cmp r0, 0 - beq _0806995E - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r2, 0x1 - bl sub_80696C0 - movs r0, 0x2 - strh r0, [r4, 0x2] - movs r0, 0x8 - strh r0, [r4, 0xC] -_0806995E: - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x4] - ldrh r0, [r6] - strh r0, [r4, 0x6] - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r5, 0 - ldrsh r1, [r6, r5] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsPacifidlogLog - lsls r0, 24 - cmp r0, 0 - beq _080699CE - movs r0, 0x46 - bl PlaySE - b _080699CE -_0806998C: - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080699CE - mov r0, sp - movs r7, 0 - ldrsh r0, [r0, r7] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r2, 0x1 - bl sub_80696E4 - movs r3, 0x8 - ldrsh r0, [r4, r3] - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080699CA - movs r5, 0xA - ldrsh r0, [r4, r5] - cmp r0, r1 - beq _080699CA - movs r7, 0x8 - ldrsh r0, [r4, r7] - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r2, 0x1 - bl sub_8069708 -_080699CA: - movs r0, 0x1 - strh r0, [r4, 0x2] -_080699CE: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8069864 - - thumb_func_start sub_80699D8 -sub_80699D8: @ 80699D8 - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08069A32 - lsls r0, r4, 16 - asrs r4, r0, 16 - lsls r0, r5, 16 - asrs r5, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - ldr r0, _08069A14 - cmp r1, r0 - beq _08069A18 - adds r0, 0x8 - cmp r1, r0 - beq _08069A28 - b _08069A32 - .align 2, 0 -_08069A14: .4byte 0x0000024e -_08069A18: - ldr r2, _08069A24 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt - b _08069A32 - .align 2, 0 -_08069A24: .4byte 0x0000024f -_08069A28: - ldr r2, _08069A38 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt -_08069A32: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069A38: .4byte 0x00000257 - thumb_func_end sub_80699D8 - - thumb_func_start sub_8069A3C -sub_8069A3C: @ 8069A3C - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08069A96 - lsls r0, r4, 16 - asrs r4, r0, 16 - lsls r0, r5, 16 - asrs r5, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - ldr r0, _08069A78 - cmp r1, r0 - beq _08069A7C - adds r0, 0x8 - cmp r1, r0 - beq _08069A8C - b _08069A96 - .align 2, 0 -_08069A78: .4byte 0x0000024f -_08069A7C: - ldr r2, _08069A88 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt - b _08069A96 - .align 2, 0 -_08069A88: .4byte 0x0000024e -_08069A8C: - ldr r2, _08069A9C - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt -_08069A96: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069A9C: .4byte 0x00000256 - thumb_func_end sub_8069A3C - - thumb_func_start sub_8069AA0 -sub_8069AA0: @ 8069AA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069ADC - adds r6, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - movs r0, 0x2 - ldrsh r5, [r6, r0] - mov r9, r4 - cmp r5, 0x1 - beq _08069B34 - cmp r5, 0x1 - bgt _08069AE0 - cmp r5, 0 - beq _08069AE8 - b _08069CA6 - .align 2, 0 -_08069ADC: .4byte gUnknown_03004B28 -_08069AE0: - cmp r5, 0x2 - bne _08069AE6 - b _08069C14 -_08069AE6: - b _08069CA6 -_08069AE8: - mov r0, sp - ldrh r0, [r0] - strh r0, [r6, 0x4] - mov r1, r9 - ldrh r0, [r1] - strh r0, [r6, 0x6] - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r3, 0 - ldrsh r1, [r1, r3] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsFortreeBridge - lsls r0, 24 - cmp r0, 0 - bne _08069B12 - b _08069CA2 -_08069B12: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl sub_80699D8 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl CurrentMapDrawMetatileAt - b _08069CA2 -_08069B34: - ldrh r0, [r6, 0x6] - mov r8, r0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - ldrh r2, [r6, 0x4] - mov r10, r2 - movs r3, 0x4 - ldrsh r7, [r6, r3] - cmp r0, r7 - bne _08069B5C - mov r0, r9 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r3, r8 - lsls r0, r3, 16 - asrs r0, 16 - cmp r1, r0 - bne _08069B5C - b _08069CA6 -_08069B5C: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsFortreeBridge - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - mov r0, r8 - lsls r4, r0, 16 - asrs r1, r4, 16 - adds r0, r7, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsFortreeBridge - lsls r0, 24 - lsrs r7, r0, 24 - bl PlayerGetZCoord - movs r1, 0 - ands r5, r0 - lsls r0, r5, 24 - adds r5, r4, 0 - cmp r0, 0 - bne _08069BA4 - movs r1, 0x1 -_08069BA4: - cmp r1, 0 - beq _08069BB8 - ldr r1, [sp, 0x4] - cmp r1, 0x1 - beq _08069BB2 - cmp r7, 0x1 - bne _08069BB8 -_08069BB2: - movs r0, 0x47 - bl PlaySE -_08069BB8: - cmp r7, 0 - beq _08069BF4 - mov r2, r10 - lsls r4, r2, 16 - asrs r4, 16 - asrs r5, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8069A3C - adds r0, r4, 0 - adds r1, r5, 0 - bl CurrentMapDrawMetatileAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl sub_80699D8 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl CurrentMapDrawMetatileAt -_08069BF4: - mov r0, r10 - strh r0, [r6, 0x8] - mov r1, r8 - strh r1, [r6, 0xA] - mov r0, sp - ldrh r0, [r0] - strh r0, [r6, 0x4] - mov r2, r9 - ldrh r0, [r2] - strh r0, [r6, 0x6] - cmp r7, 0 - beq _08069CA6 - movs r0, 0x10 - strh r0, [r6, 0xC] - movs r0, 0x2 - strh r0, [r6, 0x2] -_08069C14: - ldrh r0, [r6, 0xC] - subs r0, 0x1 - strh r0, [r6, 0xC] - ldrh r3, [r6, 0x8] - mov r10, r3 - ldrh r0, [r6, 0xA] - mov r8, r0 - movs r1, 0xC - ldrsh r0, [r6, r1] - movs r1, 0x7 - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bhi _08069C9A - lsls r0, 2 - ldr r1, _08069C40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08069C40: .4byte _08069C44 - .align 2, 0 -_08069C44: - .4byte _08069C64 - .4byte _08069C9A - .4byte _08069C9A - .4byte _08069C9A - .4byte _08069C76 - .4byte _08069C9A - .4byte _08069C9A - .4byte _08069C9A -_08069C64: - mov r2, r10 - lsls r0, r2, 16 - asrs r0, 16 - mov r3, r8 - lsls r1, r3, 16 - asrs r1, 16 - bl CurrentMapDrawMetatileAt - b _08069C9A -_08069C76: - mov r0, r10 - lsls r5, r0, 16 - asrs r5, 16 - mov r1, r8 - lsls r4, r1, 16 - asrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80699D8 - adds r0, r5, 0 - adds r1, r4, 0 - bl CurrentMapDrawMetatileAt - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8069A3C -_08069C9A: - movs r2, 0xC - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _08069CA6 -_08069CA2: - movs r0, 0x1 - strh r0, [r6, 0x2] -_08069CA6: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8069AA0 - - thumb_func_start sub_8069CB8 -sub_8069CB8: @ 8069CB8 - push {lr} - lsls r1, 16 - lsrs r1, 16 - lsls r0, 16 - ldr r2, _08069CE8 - adds r0, r2 - lsrs r0, 16 - cmp r0, 0xA - bhi _08069CF4 - lsls r0, r1, 16 - asrs r1, r0, 16 - ldr r2, _08069CEC - adds r0, r2 - lsrs r0, 16 - cmp r0, 0xD - bhi _08069CF4 - ldr r0, _08069CF0 - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _08069CF4 - movs r0, 0x1 - b _08069CF6 - .align 2, 0 -_08069CE8: .4byte 0xfffd0000 -_08069CEC: .4byte 0xfffa0000 -_08069CF0: .4byte gUnknown_083763E4 -_08069CF4: - movs r0, 0 -_08069CF6: - pop {r1} - bx r1 - thumb_func_end sub_8069CB8 - - thumb_func_start sub_8069CFC -sub_8069CFC: @ 8069CFC - push {r4,r5,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8069CB8 - cmp r0, 0 - beq _08069D2A - ldr r1, _08069D30 - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - bl GetVarPointer - subs r2, r5, 0x3 - movs r1, 0x1 - lsls r1, r2 - ldrh r2, [r0] - orrs r1, r2 - strh r1, [r0] -_08069D2A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069D30: .4byte gUnknown_083763E4 - thumb_func_end sub_8069CFC - - thumb_func_start sub_8069D34 -sub_8069D34: @ 8069D34 - push {r4,r5,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8069CB8 - cmp r0, 0 - beq _08069D66 - ldr r1, _08069D6C - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - bl VarGet - lsls r0, 16 - subs r2, r5, 0x3 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r2 - ands r1, r0 - cmp r1, 0 - bne _08069D70 -_08069D66: - movs r0, 0 - b _08069D72 - .align 2, 0 -_08069D6C: .4byte gUnknown_083763E4 -_08069D70: - movs r0, 0x1 -_08069D72: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8069D34 - - thumb_func_start sub_8069D78 -sub_8069D78: @ 8069D78 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08069DCC - ldr r0, [r0] - ldr r1, [r0] - mov r9, r1 - ldr r7, [r0, 0x4] - movs r5, 0 - cmp r5, r9 - bge _08069DC0 -_08069D90: - movs r4, 0 - adds r0, r5, 0x1 - mov r8, r0 - cmp r4, r7 - bge _08069DBA - lsls r6, r5, 16 -_08069D9C: - lsls r1, r4, 16 - asrs r1, 16 - asrs r0, r6, 16 - bl sub_8069D34 - cmp r0, 0x1 - bne _08069DB4 - adds r1, r4, 0x7 - adds r0, r5, 0x7 - ldr r2, _08069DD0 - bl MapGridSetMetatileIdAt -_08069DB4: - adds r4, 0x1 - cmp r4, r7 - blt _08069D9C -_08069DBA: - mov r5, r8 - cmp r5, r9 - blt _08069D90 -_08069DC0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08069DCC: .4byte gMapHeader -_08069DD0: .4byte 0x0000020e - thumb_func_end sub_8069D78 - - thumb_func_start sub_8069DD4 -sub_8069DD4: @ 8069DD4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069DF8 - adds r5, r1, r0 - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08069E20 - cmp r0, 0x1 - bgt _08069DFC - cmp r0, 0 - beq _08069E08 - b _08069F56 - .align 2, 0 -_08069DF8: .4byte gUnknown_03004B28 -_08069DFC: - cmp r0, 0x2 - beq _08069EB6 - cmp r0, 0x3 - bne _08069E06 - b _08069F10 -_08069E06: - b _08069F56 -_08069E08: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r4] - strh r0, [r5, 0x6] - b _08069F52 -_08069E20: - mov r7, sp - adds r7, 0x2 - mov r0, sp - adds r1, r7, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069E4A - movs r0, 0 - ldrsh r1, [r7, r0] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069E4A - b _08069F56 -_08069E4A: - strh r2, [r5, 0x4] - ldrh r0, [r7] - strh r0, [r5, 0x6] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl MapGridGetMetatileBehaviorAt - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08069E8C - bl GetVarPointer - adds r6, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8057540 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08069E90 - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x2 - b _08069EA8 - .align 2, 0 -_08069E8C: .4byte 0x00004022 -_08069E90: - adds r0, r4, 0 - bl sub_8057554 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08069F56 - movs r0, 0 - strh r0, [r6] - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x3 -_08069EA8: - strh r0, [r5, 0x2] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x8] - ldrh r0, [r7] - strh r0, [r5, 0xA] - b _08069F56 -_08069EB6: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - bne _08069F1A - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x2A - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069F0C - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - mov r0, sp - ldrh r0, [r0] - subs r0, 0x7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4] - subs r1, 0x7 - lsls r1, 16 - asrs r1, 16 - bl sub_8069CFC - b _08069F52 - .align 2, 0 -_08069F0C: .4byte 0x0000020e -_08069F10: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _08069F20 -_08069F1A: - subs r0, r1, 0x1 - strh r0, [r5, 0xC] - b _08069F56 -_08069F20: - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x29 - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069F60 - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt -_08069F52: - movs r0, 0x1 - strh r0, [r5, 0x2] -_08069F56: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08069F60: .4byte 0x00000206 - thumb_func_end sub_8069DD4 - - thumb_func_start sub_8069F64 -sub_8069F64: @ 8069F64 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069FE8 - adds r5, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x2 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069F9E - movs r0, 0 - ldrsh r1, [r4, r0] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806A02A -_08069F9E: - strh r2, [r5, 0x2] - ldrh r0, [r4] - strh r0, [r5, 0x4] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsAsh - lsls r0, 24 - cmp r0, 0 - beq _0806A02A - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileIdAt - ldr r1, _08069FEC - cmp r0, r1 - bne _08069FF4 - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069FF0 - movs r3, 0x4 - bl ash - b _0806A006 - .align 2, 0 -_08069FE8: .4byte gUnknown_03004B28 -_08069FEC: .4byte 0x0000020a -_08069FF0: .4byte 0x00000212 -_08069FF4: - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _0806A034 - movs r3, 0x4 - bl ash -_0806A006: - movs r0, 0x87 - lsls r0, 1 - movs r1, 0x1 - bl sub_80A92D4 - lsls r0, 24 - cmp r0, 0 - beq _0806A02A - ldr r0, _0806A038 - bl GetVarPointer - adds r2, r0, 0 - ldrh r1, [r2] - ldr r0, _0806A03C - cmp r1, r0 - bhi _0806A02A - adds r0, r1, 0x1 - strh r0, [r2] -_0806A02A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806A034: .4byte 0x00000206 -_0806A038: .4byte 0x00004048 -_0806A03C: .4byte 0x0000270e - thumb_func_end sub_8069F64 - - thumb_func_start sub_806A040 -sub_806A040: @ 806A040 - push {r4,r5,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridGetMetatileIdAt - ldr r1, _0806A074 - ldr r2, _0806A078 - cmp r0, r1 - bne _0806A05C - subs r2, 0x31 -_0806A05C: - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridSetMetatileIdAt - adds r0, r5, 0 - adds r1, r4, 0 - bl CurrentMapDrawMetatileAt - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806A074: .4byte 0x0000022f -_0806A078: .4byte 0x00000237 - thumb_func_end sub_806A040 - - thumb_func_start sub_806A07C -sub_806A07C: @ 806A07C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806A164 - adds r5, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r6, r0, 16 - ldrh r1, [r5, 0x8] - movs r3, 0x8 - ldrsh r0, [r5, r3] - adds r7, r4, 0 - cmp r0, 0 - beq _0806A0CE - subs r0, r1, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bne _0806A0CE - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r2, 0xC - ldrsh r1, [r5, r2] - bl sub_806A040 -_0806A0CE: - ldrh r1, [r5, 0xE] - movs r3, 0xE - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _0806A0EE - subs r0, r1, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0806A0EE - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - bl sub_806A040 -_0806A0EE: - lsls r0, r6, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl sub_8057818 - lsls r0, 24 - cmp r0, 0 - beq _0806A106 - ldr r0, _0806A168 - movs r1, 0 - bl VarSet -_0806A106: - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _0806A122 - movs r0, 0 - ldrsh r1, [r7, r0] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806A182 -_0806A122: - strh r2, [r5, 0x4] - adds r4, r7, 0 - ldrh r0, [r4] - strh r0, [r5, 0x6] - adds r0, r6, 0 - bl sub_805782C - lsls r0, 24 - cmp r0, 0 - beq _0806A182 - bl sub_80E6034 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _0806A14A - ldr r0, _0806A168 - movs r1, 0 - bl VarSet -_0806A14A: - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0806A16C - movs r0, 0x3 - strh r0, [r5, 0x8] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0xA] - ldrh r0, [r4] - strh r0, [r5, 0xC] - b _0806A182 - .align 2, 0 -_0806A164: .4byte gUnknown_03004B28 -_0806A168: .4byte 0x00004022 -_0806A16C: - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _0806A182 - movs r0, 0x3 - strh r0, [r5, 0xE] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x10] - ldrh r0, [r7] - strh r0, [r5, 0x12] -_0806A182: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806A07C - - thumb_func_start sub_806A18C -sub_806A18C: @ 806A18C - push {r4,r5,lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - ldrh r0, [r3] - subs r0, 0x1 - strh r0, [r3] - lsls r0, 16 - cmp r0, 0 - bne _0806A1A8 - movs r2, 0xE8 - b _0806A1BC -_0806A1A8: - ldr r1, _0806A1E4 - movs r2, 0 - ldrsh r0, [r3, r2] - cmp r0, 0 - bge _0806A1B4 - adds r0, 0x7 -_0806A1B4: - asrs r0, 3 - lsls r0, 1 - adds r0, r1 - ldrh r2, [r0] -_0806A1BC: - lsls r5, 16 - asrs r5, 16 - lsls r4, 16 - asrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridSetMetatileIdAt - adds r0, r5, 0 - adds r1, r4, 0 - bl CurrentMapDrawMetatileAt - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0xE8 - bl MapGridSetMetatileIdAt - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806A1E4: .4byte gUnknown_08376418 - thumb_func_end sub_806A18C - - thumb_func_start sub_806A1E8 -sub_806A1E8: @ 806A1E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806A230 - adds r4, r1, r0 - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - ldr r0, _0806A234 - movs r1, 0x4 - ldrsb r1, [r0, r1] - lsls r1, 8 - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - orrs r0, r1 - lsls r0, 16 - lsrs r7, r0, 16 - movs r0, 0x2 - ldrsh r1, [r4, r0] - mov r8, r5 - cmp r1, 0 - beq _0806A238 - cmp r1, 0x1 - beq _0806A264 - b _0806A2B8 - .align 2, 0 -_0806A230: .4byte gUnknown_03004B28 -_0806A234: .4byte gSaveBlock1 -_0806A238: - strh r7, [r4] - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x4] - ldrh r0, [r5] - strh r0, [r4, 0x6] - movs r0, 0x1 - strh r0, [r4, 0x2] - strh r1, [r4, 0x8] - strh r1, [r4, 0xE] - strh r1, [r4, 0x14] - strh r1, [r4, 0x1A] - b _0806A2B8 -_0806A252: - movs r0, 0x20 - strh r0, [r1] - mov r0, sp - ldrh r0, [r0] - strh r0, [r1, 0x2] - mov r2, r8 - ldrh r0, [r2] - strh r0, [r1, 0x4] - b _0806A2B8 -_0806A264: - mov r0, sp - movs r3, 0x4 - ldrsh r1, [r4, r3] - ldrh r2, [r0] - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - bne _0806A280 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r3, 0 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806A2B8 -_0806A280: - strh r2, [r4, 0x4] - ldrh r0, [r5] - strh r0, [r4, 0x6] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsMuddySlope - lsls r0, 24 - cmp r0, 0 - beq _0806A2B8 - movs r6, 0x4 - adds r1, r4, 0 - adds r1, 0x8 -_0806A2A8: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0806A252 - adds r1, 0x6 - adds r6, 0x3 - cmp r6, 0xD - ble _0806A2A8 -_0806A2B8: - ldr r2, _0806A2D4 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806A2D8 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r7, r0 - beq _0806A2D8 - strh r7, [r4] - ldrh r0, [r2, 0x4] - ldrh r1, [r2, 0x8] - b _0806A2DC - .align 2, 0 -_0806A2D4: .4byte gUnknown_0202E844 -_0806A2D8: - movs r0, 0 - movs r1, 0 -_0806A2DC: - lsls r0, 16 - asrs r0, 16 - mov r8, r0 - lsls r0, r1, 16 - asrs r7, r0, 16 - adds r5, r4, 0 - adds r5, 0x8 - adds r4, r5, 0 - movs r6, 0x9 -_0806A2EE: - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0806A312 - ldrh r0, [r4, 0x2] - mov r3, r8 - subs r0, r3 - strh r0, [r4, 0x2] - ldrh r0, [r4, 0x4] - subs r0, r7 - strh r0, [r4, 0x4] - movs r0, 0x2 - ldrsh r1, [r4, r0] - movs r3, 0x4 - ldrsh r2, [r4, r3] - adds r0, r5, 0 - bl sub_806A18C -_0806A312: - adds r4, 0x6 - adds r5, 0x6 - subs r6, 0x3 - cmp r6, 0 - bge _0806A2EE - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806A1E8 - - thumb_func_start sub_806A328 -sub_806A328: @ 806A328 - push {lr} - ldr r0, _0806A350 - bl FlagSet - bl RtcCalcLocalTime - ldr r2, _0806A354 - adds r2, 0xA0 - ldr r3, _0806A358 - ldr r0, [r3] - ldr r1, [r3, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _0806A35C - ldrh r1, [r3] - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_0806A350: .4byte 0x00000835 -_0806A354: .4byte gSaveBlock2 -_0806A358: .4byte gLocalTime -_0806A35C: .4byte 0x00004040 - thumb_func_end sub_806A328 - - thumb_func_start InTrainerHill -InTrainerHill: @ 806A360 - push {r4,lr} - ldr r0, _0806A388 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0806A380 - bl RtcCalcLocalTime - ldr r4, _0806A38C - adds r0, r4, 0 - bl sub_806A390 - adds r0, r4, 0 - bl sub_806A3F4 -_0806A380: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806A388: .4byte 0x00000835 -_0806A38C: .4byte gLocalTime - thumb_func_end InTrainerHill - - thumb_func_start sub_806A390 -sub_806A390: @ 806A390 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _0806A3F0 - bl GetVarPointer - adds r6, r0, 0 - ldrh r0, [r6] - movs r2, 0 - ldrsh r1, [r5, r2] - cmp r0, r1 - beq _0806A3EA - cmp r0, r1 - bgt _0806A3EA - ldrh r4, [r5] - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - bl sub_80690B4 - adds r0, r4, 0 - bl sub_80FA220 - adds r0, r4, 0 - bl sub_80BE8C4 - adds r0, r4, 0 - bl sub_8080834 - adds r0, r4, 0 - bl sub_80401D8 - adds r0, r4, 0 - bl sub_810D2F4 - adds r0, r4, 0 - bl sub_810D410 - adds r0, r4, 0 - bl sub_810F618 - adds r0, r4, 0 - bl sub_8145AA4 - ldrh r0, [r5] - strh r0, [r6] -_0806A3EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806A3F0: .4byte 0x00004040 - thumb_func_end sub_806A390 - - thumb_func_start sub_806A3F4 -sub_806A3F4: @ 806A3F4 - push {r4-r6,lr} - sub sp, 0x8 - adds r5, r0, 0 - mov r4, sp - ldr r6, _0806A448 - mov r0, sp - adds r1, r6, 0 - adds r2, r5, 0 - bl CalcTimeDifference - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - movs r2, 0x2 - ldrsb r2, [r4, r2] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 2 - adds r1, r0 - movs r0, 0x3 - ldrsb r0, [r4, r0] - adds r0, r1, r0 - cmp r0, 0 - beq _0806A43E - cmp r0, 0 - blt _0806A43E - bl BerryTreeTimeUpdate - ldr r0, [r5] - ldr r1, [r5, 0x4] - str r0, [r6] - str r1, [r6, 0x4] -_0806A43E: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806A448: .4byte gSaveBlock2 + 0xA0 - thumb_func_end sub_806A3F4 - - thumb_func_start sub_806A44C -sub_806A44C: @ 806A44C - push {lr} - bl sub_806A328 - ldr r0, _0806A45C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0806A45C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_806A44C - - thumb_func_start sub_806A460 -sub_806A460: @ 806A460 - push {lr} - ldr r0, _0806A474 - bl SetMainCallback2 - ldr r1, _0806A478 - ldr r0, _0806A47C - str r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0806A474: .4byte Cb2_StartWallClock -_0806A478: .4byte gMain -_0806A47C: .4byte sub_806A44C - thumb_func_end sub_806A460 - - thumb_func_start sub_806A480 -sub_806A480: @ 806A480 - push {lr} - adds r3, r0, 0 - ldr r2, _0806A4B0 - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r2, 0xC - ldrsh r1, [r0, r2] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r1, r0 - beq _0806A596 - strh r1, [r3, 0x30] - subs r0, r1, 0x1 - cmp r0, 0x5 - bhi _0806A596 - lsls r0, 2 - ldr r1, _0806A4B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806A4B0: .4byte gTasks -_0806A4B4: .4byte _0806A4B8 - .align 2, 0 -_0806A4B8: - .4byte _0806A4D0 - .4byte _0806A4F4 - .4byte _0806A518 - .4byte _0806A53C - .4byte _0806A566 - .4byte _0806A590 -_0806A4D0: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x35 - b _0806A55E -_0806A4F4: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x56 - b _0806A55E -_0806A518: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x6B - b _0806A55E -_0806A53C: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x1 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x41 - ands r0, r1 - strb r0, [r2] - movs r0, 0x80 -_0806A55E: - strh r0, [r3, 0x20] - movs r0, 0x44 - strh r0, [r3, 0x22] - b _0806A596 -_0806A566: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0x2 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x42 - ands r0, r1 - strb r0, [r2] - movs r0, 0x9B - strh r0, [r3, 0x20] - movs r0, 0x50 - strh r0, [r3, 0x22] - b _0806A596 -_0806A590: - adds r0, r3, 0 - bl DestroySprite -_0806A596: - pop {r0} - bx r0 - thumb_func_end sub_806A480 - - thumb_func_start sub_806A59C -sub_806A59C: @ 806A59C - push {lr} - adds r3, r0, 0 - ldr r2, _0806A5CC - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r2, 0xC - ldrsh r1, [r0, r2] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r1, r0 - beq _0806A696 - strh r1, [r3, 0x30] - subs r0, r1, 0x1 - cmp r0, 0x5 - bhi _0806A696 - lsls r0, 2 - ldr r1, _0806A5D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806A5CC: .4byte gTasks -_0806A5D0: .4byte _0806A5D4 - .align 2, 0 -_0806A5D4: - .4byte _0806A5EC - .4byte _0806A610 - .4byte _0806A634 - .4byte _0806A658 - .4byte _0806A682 - .4byte _0806A690 -_0806A5EC: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x35 - b _0806A67A -_0806A610: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x56 - b _0806A67A -_0806A634: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x6B - b _0806A67A -_0806A658: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r1, r3, 0 - adds r1, 0x2A - movs r0, 0 - strb r0, [r1] - subs r2, 0x12 - ldrb r1, [r2] - subs r0, 0x40 - ands r0, r1 - strb r0, [r2] - movs r0, 0x80 -_0806A67A: - strh r0, [r3, 0x20] - movs r0, 0x5C - strh r0, [r3, 0x22] - b _0806A696 -_0806A682: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0806A696 -_0806A690: - adds r0, r3, 0 - bl DestroySprite -_0806A696: - pop {r0} - bx r0 - thumb_func_end sub_806A59C - - thumb_func_start sub_806A69C -sub_806A69C: @ 806A69C - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0806A70C - bl LoadSpritePalette - ldr r0, _0806A710 - mov r8, r0 - movs r1, 0x35 - movs r2, 0x44 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - ldr r6, _0806A714 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r6, 0 - adds r4, 0x1C - adds r2, r0, r4 - ldr r1, _0806A718 - str r1, [r2] - adds r0, r6 - strh r5, [r0, 0x2E] - ldr r1, _0806A71C - strh r1, [r0, 0x30] - mov r0, r8 - movs r1, 0x35 - movs r2, 0x44 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r4 - ldr r1, _0806A720 - str r1, [r4] - adds r0, r6 - strh r5, [r0, 0x2E] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x30] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806A70C: .4byte gUnknown_083764BC -_0806A710: .4byte gSpriteTemplate_83764E8 -_0806A714: .4byte gSprites -_0806A718: .4byte sub_806A480 -_0806A71C: .4byte 0x0000ffff -_0806A720: .4byte sub_806A59C - thumb_func_end sub_806A69C - - thumb_func_start sub_806A724 -sub_806A724: @ 806A724 - push {lr} - ldr r0, _0806A734 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_0806A734: .4byte gUnknown_083764BC - thumb_func_end sub_806A724 - - thumb_func_start sub_806A738 -sub_806A738: @ 806A738 - push {lr} - movs r0, 0x3 - movs r1, 0x8 - movs r2, 0x19 - movs r3, 0xB - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_806A738 - - thumb_func_start sub_806A74C -sub_806A74C: @ 806A74C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - adds r0, r2, 0 - adds r4, r3, 0 - ldr r6, [sp, 0x24] - ldr r2, [sp, 0x28] - mov r9, r2 - mov r2, r10 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - lsls r0, 16 - lsrs r0, 16 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - mov r1, r9 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r7, _0806A83C - ldr r1, _0806A840 - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x18 - bl __umodsi3 - mov r8, r0 - mov r2, r8 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - adds r0, r6, 0 - movs r1, 0x3C - bl __umodsi3 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - mov r0, r9 - movs r1, 0x3C - bl __umodsi3 - mov r9, r0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, _0806A844 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x18 - movs r3, 0x1 - bl sub_8072C44 - adds r0, r7, 0 - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - ldr r1, _0806A848 - bl StringCopy - adds r7, r0, 0 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C44 - adds r0, r7, 0 - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - ldr r4, _0806A84C - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - adds r1, r6, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r7, r0, 0 - adds r1, r4, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0806A83C - mov r1, r10 - ldr r2, [sp] - bl MenuPrint - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806A83C: .4byte gStringVar4 -_0806A840: .4byte 0x00002710 -_0806A844: .4byte gStringVar1 -_0806A848: .4byte gOtherText_Day -_0806A84C: .4byte gUnknown_08376500 - thumb_func_end sub_806A74C - - thumb_func_start sub_806A850 -sub_806A850: @ 806A850 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r0, 0 - mov r8, r1 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x3 - movs r1, 0x8 - movs r2, 0x19 - movs r3, 0xB - bl MenuDrawTextWindow - ldr r0, _0806A8A8 - movs r1, 0x14 - movs r2, 0x9 - bl MenuPrint - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x4 - movs r1, 0x9 - adds r2, r6, 0 - mov r3, r8 - bl sub_806A74C - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806A8A8: .4byte gOtherText_OK - thumb_func_end sub_806A850 - - thumb_func_start sub_806A8AC -sub_806A8AC: @ 806A8AC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r3, 16 - lsrs r3, 16 - adds r1, r3, 0 - movs r0, 0x80 - ands r0, r3 - cmp r0, 0 - beq _0806A8C6 - ldrh r0, [r4] - subs r0, 0x1 - b _0806A8E0 -_0806A8C6: - movs r0, 0x40 - ands r0, r3 - cmp r0, 0 - beq _0806A8D4 - ldrh r0, [r4] - adds r0, 0x1 - b _0806A8FE -_0806A8D4: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _0806A8EE - ldrh r0, [r4] - subs r0, 0xA -_0806A8E0: - strh r0, [r4] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, r5 - bge _0806A90A - strh r2, [r4] - b _0806A90A -_0806A8EE: - movs r0, 0x10 - ands r1, r0 - cmp r1, 0 - bne _0806A8FA - movs r0, 0 - b _0806A90C -_0806A8FA: - ldrh r0, [r4] - adds r0, 0xA -_0806A8FE: - strh r0, [r4] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, r2 - ble _0806A90A - strh r5, [r4] -_0806A90A: - movs r0, 0x1 -_0806A90C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806A8AC - - thumb_func_start sub_806A914 -sub_806A914: @ 806A914 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806A928 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0x8] - bx lr - .align 2, 0 -_0806A928: .4byte gTasks - thumb_func_end sub_806A914 - - thumb_func_start sub_806A92C -sub_806A92C: @ 806A92C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_806A738 - bl sub_806A724 - ldr r1, _0806A950 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806A954 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806A950: .4byte gTasks -_0806A954: .4byte sub_806A914 - thumb_func_end sub_806A92C - - thumb_func_start sub_806A958 -sub_806A958: @ 806A958 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r7, r0, 3 - ldr r0, _0806A99C - mov r8, r0 - adds r5, r7, r0 - ldrb r4, [r5, 0x4] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - ldr r1, _0806A9A0 - adds r2, r0, r1 - ldr r1, _0806A9A4 - ldrh r3, [r1, 0x2E] - movs r0, 0x2 - ands r0, r3 - mov r12, r1 - cmp r0, 0 - beq _0806A9AC - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _0806A9A8 - str r1, [r0] - movs r0, 0 - strh r0, [r5, 0x2] - movs r0, 0x6 - b _0806A9CC - .align 2, 0 -_0806A99C: .4byte gUnknown_03004B28 -_0806A9A0: .4byte gUnknown_08376414 -_0806A9A4: .4byte gMain -_0806A9A8: .4byte sub_806A92C -_0806A9AC: - movs r0, 0x10 - ands r0, r3 - cmp r0, 0 - beq _0806A9BA - ldrb r0, [r2, 0x7] - cmp r0, 0 - bne _0806A9CC -_0806A9BA: - mov r3, r12 - ldrh r1, [r3, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0806A9D6 - ldrb r0, [r2, 0x6] - cmp r0, 0 - beq _0806A9D6 -_0806A9CC: - strh r0, [r5, 0x4] - movs r0, 0x5 - bl PlaySE - b _0806AA58 -_0806A9D6: - cmp r4, 0x5 - bne _0806AA24 - mov r0, r12 - ldrh r1, [r0, 0x2E] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0806AA58 - ldr r1, _0806AA18 - ldrh r0, [r5, 0x6] - strh r0, [r1] - ldrh r0, [r5, 0x8] - strb r0, [r1, 0x2] - ldrh r0, [r5, 0xA] - strb r0, [r1, 0x3] - ldrh r0, [r5, 0xC] - strb r0, [r1, 0x4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0806AA1C - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806AA20 - str r1, [r0] - strh r4, [r5, 0x2] - movs r0, 0x6 - strh r0, [r5, 0x4] - b _0806AA58 - .align 2, 0 -_0806AA18: .4byte gLocalTime -_0806AA1C: .4byte gTasks -_0806AA20: .4byte sub_806A92C -_0806AA24: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r5, r0 - ldrh r1, [r2, 0x2] - ldrh r2, [r2, 0x4] - mov r3, r12 - ldrh r4, [r3, 0x30] - movs r3, 0xC0 - ands r3, r4 - bl sub_806A8AC - cmp r0, 0 - beq _0806AA58 - movs r0, 0x5 - bl PlaySE - ldrh r2, [r5, 0x6] - ldrb r3, [r5, 0x8] - ldrb r0, [r5, 0xA] - str r0, [sp] - ldrb r0, [r5, 0xC] - str r0, [sp, 0x4] - movs r0, 0x4 - movs r1, 0x9 - bl sub_806A74C -_0806AA58: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806A958 - - thumb_func_start sub_806AA64 -sub_806AA64: @ 806AA64 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, r5, 2 - adds r6, r5 - lsls r6, 3 - ldr r0, _0806AACC - mov r8, r0 - adds r4, r6, r0 - movs r0, 0 - strh r0, [r4] - ldr r3, _0806AAD0 - ldrh r0, [r3] - strh r0, [r4, 0x6] - movs r1, 0x2 - ldrsb r1, [r3, r1] - strh r1, [r4, 0x8] - movs r2, 0x3 - ldrsb r2, [r3, r2] - strh r2, [r4, 0xA] - ldrb r3, [r3, 0x4] - lsls r3, 24 - asrs r3, 24 - strh r3, [r4, 0xC] - ldrh r0, [r4, 0x6] - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_806A850 - adds r0, r5, 0 - bl sub_806A69C - movs r0, 0x2 - strh r0, [r4, 0x4] - movs r0, 0x8 - negs r0, r0 - add r8, r0 - add r6, r8 - ldr r0, _0806AAD4 - str r0, [r6] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806AACC: .4byte gUnknown_03004B28 -_0806AAD0: .4byte gLocalTime -_0806AAD4: .4byte sub_806A958 - thumb_func_end sub_806AA64 - - thumb_func_start sub_806AAD8 -sub_806AAD8: @ 806AAD8 - push {r4-r7,lr} - sub sp, 0x4 - movs r0, 0x80 - lsls r0, 19 - movs r4, 0 - strh r4, [r0] - movs r0, 0 - bl SetVBlankCallback - movs r2, 0xA0 - lsls r2, 19 - mov r0, sp - strh r4, [r0] - ldr r1, _0806AB94 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _0806AB98 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0xC0 - lsls r3, 9 - mov r4, sp - movs r6, 0 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _0806AB9C - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0806AB16: - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r5 - subs r3, r5 - cmp r3, r5 - bhi _0806AB16 - strh r6, [r4] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0 - movs r1, 0x80 - bl ResetOamRange - bl LoadOam - bl remove_some_task - bl dp12_8087EA4 - bl ResetSpriteData - bl ResetTasks - bl ResetPaletteFade - ldr r4, _0806ABA0 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x88 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0806ABA4 - bl SetVBlankCallback - ldr r0, _0806ABA8 - bl SetMainCallback2 - ldr r0, _0806ABAC - movs r1, 0x50 - bl CreateTask - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806AB94: .4byte 0x040000d4 -_0806AB98: .4byte 0x81000200 -_0806AB9C: .4byte 0x81000800 -_0806ABA0: .4byte gWindowConfig_81E6CE4 -_0806ABA4: .4byte sub_806ABC8 -_0806ABA8: .4byte sub_806ABB0 -_0806ABAC: .4byte sub_806ACCC - thumb_func_end sub_806AAD8 - - thumb_func_start sub_806ABB0 -sub_806ABB0: @ 806ABB0 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_806ABB0 - - thumb_func_start sub_806ABC8 -sub_806ABC8: @ 806ABC8 - push {lr} - bl ProcessSpriteCopyRequests - bl LoadOam - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_806ABC8 - - thumb_func_start sub_806ABDC -sub_806ABDC: @ 806ABDC - push {r4,lr} - adds r4, r0, 0 - bl MenuDisplayMessageBox - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_806ABDC - - thumb_func_start sub_806ABF4 -sub_806ABF4: @ 806ABF4 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0806AC14 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0806AC18 - cmp r0, 0x1 - beq _0806AC80 - b _0806ACC4 - .align 2, 0 -_0806AC14: .4byte gUnknown_03004B28 -_0806AC18: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0 - movs r2, 0x14 - movs r3, 0xA - bl MenuDrawTextWindow - ldr r0, _0806AC98 - movs r1, 0x1 - movs r2, 0x1 - bl MenuPrint - ldr r0, _0806AC9C - ldrh r2, [r0] - ldrb r3, [r0, 0x2] - ldrb r1, [r0, 0x3] - str r1, [sp] - ldrb r0, [r0, 0x4] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x3 - bl sub_806A74C - ldr r0, _0806ACA0 - movs r1, 0x1 - movs r2, 0x5 - bl MenuPrint - ldr r1, _0806ACA4 - adds r0, r1, 0 - adds r0, 0xA0 - ldrh r2, [r0] - adds r0, 0x2 - ldrb r3, [r0] - adds r0, 0x1 - ldrb r0, [r0] - str r0, [sp] - adds r0, r1, 0 - adds r0, 0xA4 - ldrb r0, [r0] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x7 - bl sub_806A74C - ldr r0, _0806ACA8 - bl sub_806ABDC - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_0806AC80: - ldr r0, _0806ACAC - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0806ACB0 - adds r0, r5, 0 - bl DestroyTask - bl DoSoftReset - b _0806ACC4 - .align 2, 0 -_0806AC98: .4byte gSystemText_PresentTime -_0806AC9C: .4byte gLocalTime -_0806ACA0: .4byte gSystemText_PreviousTime -_0806ACA4: .4byte gSaveBlock2 -_0806ACA8: .4byte gSystemText_ResetRTCPrompt -_0806ACAC: .4byte gMain -_0806ACB0: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806ACC4 - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl DestroyTask -_0806ACC4: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_806ABF4 - - thumb_func_start sub_806ACCC -sub_806ACCC: @ 806ACCC - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0806ACF4 - adds r5, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x6 - bls _0806ACE8 - b _0806AEC4 -_0806ACE8: - lsls r0, 2 - ldr r1, _0806ACF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806ACF4: .4byte gUnknown_03004B28 -_0806ACF8: .4byte _0806ACFC - .align 2, 0 -_0806ACFC: - .4byte _0806AD18 - .4byte _0806AD34 - .4byte _0806AD80 - .4byte _0806ADD8 - .4byte _0806AE5C - .4byte _0806AE8C - .4byte _0806AEAE -_0806AD18: - movs r0, 0x1 - negs r0, r0 - ldr r1, _0806AD30 - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x1 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AD30: .4byte 0x0000ffff -_0806AD34: - ldr r0, _0806AD5C - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806AD42 - b _0806AEC4 -_0806AD42: - ldr r0, _0806AD60 - ldrh r0, [r0] - cmp r0, 0 - beq _0806AD4E - cmp r0, 0x2 - bne _0806AD68 -_0806AD4E: - ldr r0, _0806AD64 - bl sub_806ABDC - movs r0, 0x5 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AD5C: .4byte gPaletteFade -_0806AD60: .4byte gSaveFileStatus -_0806AD64: .4byte gSystemText_NoSaveFileNoTime -_0806AD68: - bl RtcCalcLocalTime - ldr r0, _0806AD7C - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x2] - b _0806ADFC - .align 2, 0 -_0806AD7C: .4byte sub_806ABF4 -_0806AD80: - ldr r2, _0806ADC4 - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x4] - cmp r0, 0x1 - bne _0806AD96 - b _0806AEC4 -_0806AD96: - bl MenuZeroFillScreen - ldr r0, _0806ADC8 - bl sub_806ABDC - ldr r2, _0806ADCC - ldr r0, _0806ADD0 - adds r0, 0xA0 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _0806ADD4 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x2] - movs r0, 0x3 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806ADC4: .4byte gTasks -_0806ADC8: .4byte gSystemText_PleaseResetTime -_0806ADCC: .4byte gLocalTime -_0806ADD0: .4byte gSaveBlock2 -_0806ADD4: .4byte sub_806AA64 -_0806ADD8: - ldr r2, _0806AE04 - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0806AEC4 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0806AE08 - ldrb r0, [r5, 0x2] - bl DestroyTask -_0806ADFC: - movs r0, 0x2 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AE04: .4byte gTasks -_0806AE08: - ldrb r0, [r5, 0x2] - bl DestroyTask - bl RtcReset - ldr r4, _0806AE4C - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x2 - ldrsb r1, [r4, r1] - movs r2, 0x3 - ldrsb r2, [r4, r2] - movs r3, 0x4 - ldrsb r3, [r4, r3] - bl RtcCalcLocalTimeOffset - ldr r2, _0806AE50 - adds r2, 0xA0 - ldr r0, [r4] - ldr r1, [r4, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _0806AE54 - ldrh r1, [r4] - bl VarSet - bl sub_80691A0 - ldr r0, _0806AE58 - bl sub_806ABDC - movs r0, 0x4 - strh r0, [r5] - b _0806AEC4 - .align 2, 0 -_0806AE4C: .4byte gLocalTime -_0806AE50: .4byte gSaveBlock2 -_0806AE54: .4byte 0x00004040 -_0806AE58: .4byte gSystemText_ClockResetDataSave -_0806AE5C: - movs r0, 0 - bl sub_8125D44 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806AE7C - ldr r0, _0806AE78 - bl sub_806ABDC - movs r0, 0x49 - bl PlaySE - b _0806AE88 - .align 2, 0 -_0806AE78: .4byte gSystemText_SaveCompleted -_0806AE7C: - ldr r0, _0806AECC - bl sub_806ABDC - movs r0, 0x16 - bl PlaySE -_0806AE88: - movs r0, 0x5 - strh r0, [r5] -_0806AE8C: - ldr r0, _0806AED0 - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806AEC4 - movs r0, 0x1 - negs r0, r0 - ldr r1, _0806AED4 - str r1, [sp] - movs r1, 0x1 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x6 - strh r0, [r5] -_0806AEAE: - ldr r0, _0806AED8 - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806AEC4 - adds r0, r4, 0 - bl DestroyTask - bl DoSoftReset -_0806AEC4: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806AECC: .4byte gSystemText_SaveFailed -_0806AED0: .4byte gMain -_0806AED4: .4byte 0x0000ffff -_0806AED8: .4byte gPaletteFade - thumb_func_end sub_806ACCC - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_806936C.s b/asm/rom_806936C.s new file mode 100644 index 000000000..209bc5d07 --- /dev/null +++ b/asm/rom_806936C.s @@ -0,0 +1,3579 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_806936C +sub_806936C: @ 806936C + push {lr} + movs r0, 0x1 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_806936C + + thumb_func_start sub_8069378 +sub_8069378: @ 8069378 + push {lr} + movs r0, 0x2 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_8069378 + + thumb_func_start sub_8069384 +sub_8069384: @ 8069384 + push {lr} + movs r0, 0x3 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_8069384 + + thumb_func_start sub_8069390 +sub_8069390: @ 8069390 + push {lr} + movs r0, 0x4 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_8069390 + + thumb_func_start sub_806939C +sub_806939C: @ 806939C + push {lr} + movs r0, 0x5 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_806939C + + thumb_func_start sub_80693A8 +sub_80693A8: @ 80693A8 + push {lr} + movs r0, 0x6 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693A8 + + thumb_func_start sub_80693B4 +sub_80693B4: @ 80693B4 + push {lr} + movs r0, 0x9 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693B4 + + thumb_func_start sub_80693C0 +sub_80693C0: @ 80693C0 + push {lr} + movs r0, 0x7 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693C0 + + thumb_func_start sub_80693CC +sub_80693CC: @ 80693CC + push {lr} + movs r0, 0x8 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693CC + + thumb_func_start sub_80693D8 +sub_80693D8: @ 80693D8 + push {lr} + movs r0, 0xB + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693D8 + + thumb_func_start sub_80693E4 +sub_80693E4: @ 80693E4 + push {lr} + movs r0, 0xC + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693E4 + + thumb_func_start sub_80693F0 +sub_80693F0: @ 80693F0 + push {lr} + movs r0, 0x14 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693F0 + + thumb_func_start sub_80693FC +sub_80693FC: @ 80693FC + push {lr} + movs r0, 0x15 + bl sub_808070C + pop {r0} + bx r0 + thumb_func_end sub_80693FC + + thumb_func_start sub_8069408 +sub_8069408: @ 8069408 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r2, 0 + ldr r3, _08069428 +_08069412: + lsls r1, r2, 3 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r4 + bne _0806942C + adds r0, r3, 0x4 + adds r0, r1, r0 + ldr r0, [r0] + bl _call_via_r0 + b _08069436 + .align 2, 0 +_08069428: .4byte gUnknown_083762FC +_0806942C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xC + bls _08069412 +_08069436: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8069408 + + thumb_func_start task_per_step_callback_manager +task_per_step_callback_manager: @ 806943C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08069460 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x8 + ldrsh r1, [r1, r2] + ldr r2, _08069464 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08069460: .4byte gTasks +_08069464: .4byte gUnknown_08376364 + thumb_func_end task_per_step_callback_manager + + thumb_func_start sub_8069468 +sub_8069468: @ 8069468 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0806947A + cmp r0, 0x1 + beq _08069498 + b _080694AC +_0806947A: + ldr r0, _08069494 + ldr r0, [r0, 0x20] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + beq _080694AC + bl InTrainerHill + ldrh r0, [r4] + adds r0, 0x1 + b _080694AA + .align 2, 0 +_08069494: .4byte gMain +_08069498: + ldr r0, _080694B4 + ldr r0, [r0, 0x20] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + bne _080694AC + ldrh r0, [r4] + subs r0, 0x1 +_080694AA: + strh r0, [r4] +_080694AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080694B4: .4byte gMain + thumb_func_end sub_8069468 + + thumb_func_start sub_80694B8 +sub_80694B8: @ 80694B8 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080694E8 + adds r4, r1, r0 + bl ScriptContext2_IsEnabled + lsls r0, 24 + cmp r0, 0 + bne _080694E0 + adds r0, r4, 0 + bl sub_8069468 + adds r0, r4, 0x2 + adds r1, r4, 0x4 + bl sub_80540D0 +_080694E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080694E8: .4byte gUnknown_03004B28 + thumb_func_end sub_80694B8 + + thumb_func_start overworld_ensure_per_step_coros_running +overworld_ensure_per_step_coros_running: @ 80694EC + push {r4,r5,lr} + ldr r5, _08069548 + adds r0, r5, 0 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08069516 + adds r0, r5, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0806954C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] +_08069516: + ldr r4, _08069550 + adds r0, r4, 0 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _0806952C + adds r0, r4, 0 + movs r1, 0x50 + bl CreateTask +_0806952C: + ldr r4, _08069554 + adds r0, r4, 0 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _08069542 + adds r0, r4, 0 + movs r1, 0x50 + bl CreateTask +_08069542: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069548: .4byte task_per_step_callback_manager +_0806954C: .4byte gTasks +_08069550: .4byte sub_806A1E8 +_08069554: .4byte sub_80694B8 + thumb_func_end overworld_ensure_per_step_coros_running + + thumb_func_start activate_per_step_callback +activate_per_step_callback: @ 8069558 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08069590 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0806959A + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _08069594 + adds r1, r0, r1 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0x1E +_0806957C: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _0806957C + cmp r4, 0x7 + bls _08069598 + movs r0, 0 + strh r0, [r1] + b _0806959A + .align 2, 0 +_08069590: .4byte task_per_step_callback_manager +_08069594: .4byte gUnknown_03004B28 +_08069598: + strh r4, [r1] +_0806959A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end activate_per_step_callback + + thumb_func_start wild_encounter_reset_coro_args +wild_encounter_reset_coro_args: @ 80695A0 + push {lr} + ldr r0, _080695D0 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _080695D4 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _080695CA + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _080695D8 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] +_080695CA: + pop {r0} + bx r0 + .align 2, 0 +_080695D0: .4byte task_per_step_callback_manager +_080695D4: .4byte sub_80694B8 +_080695D8: .4byte gUnknown_03004B28 + thumb_func_end wild_encounter_reset_coro_args + + thumb_func_start nullsub_51 +nullsub_51: @ 80695DC + bx lr + thumb_func_end nullsub_51 + + thumb_func_start sub_80695E0 +sub_80695E0: @ 80695E0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + adds r0, r4, 0 + bl sub_80576A0 + lsls r0, 24 + cmp r0, 0 + beq _080695F8 + adds r0, r5, 0 + b _08069630 +_080695F8: + adds r0, r4, 0 + bl sub_80576B4 + lsls r0, 24 + cmp r0, 0 + beq _0806960A + adds r0, r5, 0 + adds r0, 0x8 + b _08069630 +_0806960A: + adds r0, r4, 0 + bl sub_80576C8 + lsls r0, 24 + cmp r0, 0 + beq _0806961C + adds r0, r5, 0 + adds r0, 0x10 + b _08069630 +_0806961C: + adds r0, r4, 0 + bl sub_80576DC + lsls r0, 24 + cmp r0, 0 + bne _0806962C + movs r0, 0 + b _08069630 +_0806962C: + adds r0, r5, 0 + adds r0, 0x18 +_08069630: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80695E0 + + thumb_func_start sub_8069638 +sub_8069638: @ 8069638 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + mov r8, r3 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r7, r2, 16 + adds r0, r6, 0 + adds r1, r7, 0 + bl MapGridGetMetatileBehaviorAt + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_80695E0 + adds r4, r0, 0 + adds r5, r4, 0 + cmp r4, 0 + beq _080696B6 + movs r0, 0 + ldrsb r0, [r4, r0] + adds r0, r6, r0 + movs r1, 0x1 + ldrsb r1, [r4, r1] + adds r1, r7, r1 + ldrh r2, [r4, 0x2] + bl MapGridSetMetatileIdAt + mov r0, r8 + cmp r0, 0 + beq _0806968E + movs r0, 0 + ldrsb r0, [r4, r0] + adds r0, r6, r0 + movs r1, 0x1 + ldrsb r1, [r4, r1] + adds r1, r7, r1 + bl CurrentMapDrawMetatileAt +_0806968E: + movs r0, 0x4 + ldrsb r0, [r5, r0] + adds r0, r6, r0 + movs r1, 0x5 + ldrsb r1, [r5, r1] + adds r1, r7, r1 + ldrh r2, [r5, 0x6] + bl MapGridSetMetatileIdAt + mov r0, r8 + cmp r0, 0 + beq _080696B6 + movs r0, 0x4 + ldrsb r0, [r5, r0] + adds r0, r6, r0 + movs r1, 0x5 + ldrsb r1, [r5, r1] + adds r1, r7, r1 + bl CurrentMapDrawMetatileAt +_080696B6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8069638 + + thumb_func_start sub_80696C0 +sub_80696C0: @ 80696C0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldr r0, _080696E0 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8069638 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080696E0: .4byte gUnknown_08376384 + thumb_func_end sub_80696C0 + + thumb_func_start sub_80696E4 +sub_80696E4: @ 80696E4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldr r0, _08069704 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8069638 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069704: .4byte gUnknown_083763A4 + thumb_func_end sub_80696E4 + + thumb_func_start sub_8069708 +sub_8069708: @ 8069708 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldr r0, _08069728 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8069638 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069728: .4byte gUnknown_083763C4 + thumb_func_end sub_8069708 + + thumb_func_start sub_806972C +sub_806972C: @ 806972C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r10, r8 + lsls r1, 16 + lsrs r7, r1, 16 + mov r9, r7 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r5, r3, 16 + adds r0, r6, 0 + adds r1, r5, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80576A0 + lsls r0, 24 + cmp r0, 0 + beq _08069770 + lsls r0, r7, 16 + asrs r0, 16 + cmp r0, r5 + ble _080697B6 +_0806976C: + movs r0, 0 + b _080697B8 +_08069770: + adds r0, r4, 0 + bl sub_80576B4 + lsls r0, 24 + cmp r0, 0 + beq _08069788 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r5 + bge _080697B6 + b _0806976C +_08069788: + adds r0, r4, 0 + bl sub_80576C8 + lsls r0, 24 + cmp r0, 0 + beq _080697A0 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r6 + ble _080697B6 + b _0806976C +_080697A0: + adds r0, r4, 0 + bl sub_80576DC + lsls r0, 24 + cmp r0, 0 + beq _080697B6 + mov r1, r10 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r6 + blt _0806976C +_080697B6: + movs r0, 0x1 +_080697B8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806972C + + thumb_func_start sub_80697C8 +sub_80697C8: @ 80697C8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + mov r10, r8 + lsls r3, 16 + lsrs r7, r3, 16 + mov r9, r7 + lsls r0, 16 + asrs r6, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + adds r0, r6, 0 + adds r1, r5, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_80576A0 + lsls r0, 24 + cmp r0, 0 + beq _0806980C + lsls r0, r7, 16 + asrs r0, 16 + cmp r5, r0 + bge _08069852 +_08069808: + movs r0, 0 + b _08069854 +_0806980C: + adds r0, r4, 0 + bl sub_80576B4 + lsls r0, 24 + cmp r0, 0 + beq _08069824 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + cmp r5, r0 + ble _08069852 + b _08069808 +_08069824: + adds r0, r4, 0 + bl sub_80576C8 + lsls r0, 24 + cmp r0, 0 + beq _0806983C + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + cmp r6, r0 + bge _08069852 + b _08069808 +_0806983C: + adds r0, r4, 0 + bl sub_80576DC + lsls r0, 24 + cmp r0, 0 + beq _08069852 + mov r1, r10 + lsls r0, r1, 16 + asrs r0, 16 + cmp r6, r0 + bgt _08069808 +_08069852: + movs r0, 0x1 +_08069854: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80697C8 + + thumb_func_start sub_8069864 +sub_8069864: @ 8069864 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08069898 + adds r4, r1, r0 + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl PlayerGetDestCoords + movs r1, 0x2 + ldrsh r0, [r4, r1] + adds r6, r5, 0 + cmp r0, 0x1 + beq _080698BE + cmp r0, 0x1 + bgt _0806989C + cmp r0, 0 + beq _080698A2 + b _080699CE + .align 2, 0 +_08069898: .4byte gUnknown_03004B28 +_0806989C: + cmp r0, 0x2 + beq _0806998C + b _080699CE +_080698A2: + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x4] + ldrh r0, [r5] + strh r0, [r4, 0x6] + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r3, 0 + ldrsh r1, [r5, r3] + movs r2, 0x1 + bl sub_80696E4 + b _080699CA +_080698BE: + mov r0, sp + movs r7, 0 + ldrsh r1, [r0, r7] + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080698D8 + movs r3, 0 + ldrsh r1, [r5, r3] + movs r7, 0x6 + ldrsh r0, [r4, r7] + cmp r1, r0 + beq _080699CE +_080698D8: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r5, 0x6 + ldrsh r3, [r4, r5] + bl sub_806972C + cmp r0, 0 + beq _08069920 + movs r7, 0x4 + ldrsh r0, [r4, r7] + movs r2, 0x6 + ldrsh r1, [r4, r2] + movs r2, 0x1 + bl sub_80696C0 + movs r3, 0x4 + ldrsh r0, [r4, r3] + movs r5, 0x6 + ldrsh r1, [r4, r5] + movs r2, 0 + bl sub_8069708 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x8] + ldrh r0, [r4, 0x6] + strh r0, [r4, 0xA] + movs r0, 0x2 + strh r0, [r4, 0x2] + movs r0, 0x8 + strh r0, [r4, 0xC] + b _0806992A +_08069920: + movs r7, 0x1 + negs r7, r7 + adds r0, r7, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] +_0806992A: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + adds r5, r6, 0 + movs r2, 0 + ldrsh r1, [r5, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r7, 0x6 + ldrsh r3, [r4, r7] + bl sub_80697C8 + cmp r0, 0 + beq _0806995E + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + movs r2, 0x1 + bl sub_80696C0 + movs r0, 0x2 + strh r0, [r4, 0x2] + movs r0, 0x8 + strh r0, [r4, 0xC] +_0806995E: + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x4] + ldrh r0, [r6] + strh r0, [r4, 0x6] + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r5, 0 + ldrsh r1, [r6, r5] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsPacifidlogLog + lsls r0, 24 + cmp r0, 0 + beq _080699CE + movs r0, 0x46 + bl PlaySE + b _080699CE +_0806998C: + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bne _080699CE + mov r0, sp + movs r7, 0 + ldrsh r0, [r0, r7] + movs r2, 0 + ldrsh r1, [r5, r2] + movs r2, 0x1 + bl sub_80696E4 + movs r3, 0x8 + ldrsh r0, [r4, r3] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _080699CA + movs r5, 0xA + ldrsh r0, [r4, r5] + cmp r0, r1 + beq _080699CA + movs r7, 0x8 + ldrsh r0, [r4, r7] + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r2, 0x1 + bl sub_8069708 +_080699CA: + movs r0, 0x1 + strh r0, [r4, 0x2] +_080699CE: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8069864 + + thumb_func_start sub_80699D8 +sub_80699D8: @ 80699D8 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + bl PlayerGetZCoord + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08069A32 + lsls r0, r4, 16 + asrs r4, r0, 16 + lsls r0, r5, 16 + asrs r5, r0, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + ldr r0, _08069A14 + cmp r1, r0 + beq _08069A18 + adds r0, 0x8 + cmp r1, r0 + beq _08069A28 + b _08069A32 + .align 2, 0 +_08069A14: .4byte 0x0000024e +_08069A18: + ldr r2, _08069A24 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt + b _08069A32 + .align 2, 0 +_08069A24: .4byte 0x0000024f +_08069A28: + ldr r2, _08069A38 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt +_08069A32: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069A38: .4byte 0x00000257 + thumb_func_end sub_80699D8 + + thumb_func_start sub_8069A3C +sub_8069A3C: @ 8069A3C + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + bl PlayerGetZCoord + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08069A96 + lsls r0, r4, 16 + asrs r4, r0, 16 + lsls r0, r5, 16 + asrs r5, r0, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + ldr r0, _08069A78 + cmp r1, r0 + beq _08069A7C + adds r0, 0x8 + cmp r1, r0 + beq _08069A8C + b _08069A96 + .align 2, 0 +_08069A78: .4byte 0x0000024f +_08069A7C: + ldr r2, _08069A88 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt + b _08069A96 + .align 2, 0 +_08069A88: .4byte 0x0000024e +_08069A8C: + ldr r2, _08069A9C + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt +_08069A96: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069A9C: .4byte 0x00000256 + thumb_func_end sub_8069A3C + + thumb_func_start sub_8069AA0 +sub_8069AA0: @ 8069AA0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08069ADC + adds r6, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + movs r0, 0x2 + ldrsh r5, [r6, r0] + mov r9, r4 + cmp r5, 0x1 + beq _08069B34 + cmp r5, 0x1 + bgt _08069AE0 + cmp r5, 0 + beq _08069AE8 + b _08069CA6 + .align 2, 0 +_08069ADC: .4byte gUnknown_03004B28 +_08069AE0: + cmp r5, 0x2 + bne _08069AE6 + b _08069C14 +_08069AE6: + b _08069CA6 +_08069AE8: + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, 0x4] + mov r1, r9 + ldrh r0, [r1] + strh r0, [r6, 0x6] + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r3, 0 + ldrsh r1, [r1, r3] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsFortreeBridge + lsls r0, 24 + cmp r0, 0 + bne _08069B12 + b _08069CA2 +_08069B12: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl sub_80699D8 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl CurrentMapDrawMetatileAt + b _08069CA2 +_08069B34: + ldrh r0, [r6, 0x6] + mov r8, r0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + ldrh r2, [r6, 0x4] + mov r10, r2 + movs r3, 0x4 + ldrsh r7, [r6, r3] + cmp r0, r7 + bne _08069B5C + mov r0, r9 + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + lsls r0, r3, 16 + asrs r0, 16 + cmp r1, r0 + bne _08069B5C + b _08069CA6 +_08069B5C: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsFortreeBridge + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + mov r0, r8 + lsls r4, r0, 16 + asrs r1, r4, 16 + adds r0, r7, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsFortreeBridge + lsls r0, 24 + lsrs r7, r0, 24 + bl PlayerGetZCoord + movs r1, 0 + ands r5, r0 + lsls r0, r5, 24 + adds r5, r4, 0 + cmp r0, 0 + bne _08069BA4 + movs r1, 0x1 +_08069BA4: + cmp r1, 0 + beq _08069BB8 + ldr r1, [sp, 0x4] + cmp r1, 0x1 + beq _08069BB2 + cmp r7, 0x1 + bne _08069BB8 +_08069BB2: + movs r0, 0x47 + bl PlaySE +_08069BB8: + cmp r7, 0 + beq _08069BF4 + mov r2, r10 + lsls r4, r2, 16 + asrs r4, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8069A3C + adds r0, r4, 0 + adds r1, r5, 0 + bl CurrentMapDrawMetatileAt + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl sub_80699D8 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl CurrentMapDrawMetatileAt +_08069BF4: + mov r0, r10 + strh r0, [r6, 0x8] + mov r1, r8 + strh r1, [r6, 0xA] + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, 0x4] + mov r2, r9 + ldrh r0, [r2] + strh r0, [r6, 0x6] + cmp r7, 0 + beq _08069CA6 + movs r0, 0x10 + strh r0, [r6, 0xC] + movs r0, 0x2 + strh r0, [r6, 0x2] +_08069C14: + ldrh r0, [r6, 0xC] + subs r0, 0x1 + strh r0, [r6, 0xC] + ldrh r3, [r6, 0x8] + mov r10, r3 + ldrh r0, [r6, 0xA] + mov r8, r0 + movs r1, 0xC + ldrsh r0, [r6, r1] + movs r1, 0x7 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bhi _08069C9A + lsls r0, 2 + ldr r1, _08069C40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08069C40: .4byte _08069C44 + .align 2, 0 +_08069C44: + .4byte _08069C64 + .4byte _08069C9A + .4byte _08069C9A + .4byte _08069C9A + .4byte _08069C76 + .4byte _08069C9A + .4byte _08069C9A + .4byte _08069C9A +_08069C64: + mov r2, r10 + lsls r0, r2, 16 + asrs r0, 16 + mov r3, r8 + lsls r1, r3, 16 + asrs r1, 16 + bl CurrentMapDrawMetatileAt + b _08069C9A +_08069C76: + mov r0, r10 + lsls r5, r0, 16 + asrs r5, 16 + mov r1, r8 + lsls r4, r1, 16 + asrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80699D8 + adds r0, r5, 0 + adds r1, r4, 0 + bl CurrentMapDrawMetatileAt + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8069A3C +_08069C9A: + movs r2, 0xC + ldrsh r0, [r6, r2] + cmp r0, 0 + bne _08069CA6 +_08069CA2: + movs r0, 0x1 + strh r0, [r6, 0x2] +_08069CA6: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8069AA0 + + thumb_func_start sub_8069CB8 +sub_8069CB8: @ 8069CB8 + push {lr} + lsls r1, 16 + lsrs r1, 16 + lsls r0, 16 + ldr r2, _08069CE8 + adds r0, r2 + lsrs r0, 16 + cmp r0, 0xA + bhi _08069CF4 + lsls r0, r1, 16 + asrs r1, r0, 16 + ldr r2, _08069CEC + adds r0, r2 + lsrs r0, 16 + cmp r0, 0xD + bhi _08069CF4 + ldr r0, _08069CF0 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _08069CF4 + movs r0, 0x1 + b _08069CF6 + .align 2, 0 +_08069CE8: .4byte 0xfffd0000 +_08069CEC: .4byte 0xfffa0000 +_08069CF0: .4byte gUnknown_083763E4 +_08069CF4: + movs r0, 0 +_08069CF6: + pop {r1} + bx r1 + thumb_func_end sub_8069CB8 + + thumb_func_start sub_8069CFC +sub_8069CFC: @ 8069CFC + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8069CB8 + cmp r0, 0 + beq _08069D2A + ldr r1, _08069D30 + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + bl GetVarPointer + subs r2, r5, 0x3 + movs r1, 0x1 + lsls r1, r2 + ldrh r2, [r0] + orrs r1, r2 + strh r1, [r0] +_08069D2A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08069D30: .4byte gUnknown_083763E4 + thumb_func_end sub_8069CFC + + thumb_func_start sub_8069D34 +sub_8069D34: @ 8069D34 + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8069CB8 + cmp r0, 0 + beq _08069D66 + ldr r1, _08069D6C + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + bl VarGet + lsls r0, 16 + subs r2, r5, 0x3 + movs r1, 0x80 + lsls r1, 9 + lsls r1, r2 + ands r1, r0 + cmp r1, 0 + bne _08069D70 +_08069D66: + movs r0, 0 + b _08069D72 + .align 2, 0 +_08069D6C: .4byte gUnknown_083763E4 +_08069D70: + movs r0, 0x1 +_08069D72: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8069D34 + + thumb_func_start sub_8069D78 +sub_8069D78: @ 8069D78 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08069DCC + ldr r0, [r0] + ldr r1, [r0] + mov r9, r1 + ldr r7, [r0, 0x4] + movs r5, 0 + cmp r5, r9 + bge _08069DC0 +_08069D90: + movs r4, 0 + adds r0, r5, 0x1 + mov r8, r0 + cmp r4, r7 + bge _08069DBA + lsls r6, r5, 16 +_08069D9C: + lsls r1, r4, 16 + asrs r1, 16 + asrs r0, r6, 16 + bl sub_8069D34 + cmp r0, 0x1 + bne _08069DB4 + adds r1, r4, 0x7 + adds r0, r5, 0x7 + ldr r2, _08069DD0 + bl MapGridSetMetatileIdAt +_08069DB4: + adds r4, 0x1 + cmp r4, r7 + blt _08069D9C +_08069DBA: + mov r5, r8 + cmp r5, r9 + blt _08069D90 +_08069DC0: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08069DCC: .4byte gMapHeader +_08069DD0: .4byte 0x0000020e + thumb_func_end sub_8069D78 + + thumb_func_start sub_8069DD4 +sub_8069DD4: @ 8069DD4 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08069DF8 + adds r5, r1, r0 + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _08069E20 + cmp r0, 0x1 + bgt _08069DFC + cmp r0, 0 + beq _08069E08 + b _08069F56 + .align 2, 0 +_08069DF8: .4byte gUnknown_03004B28 +_08069DFC: + cmp r0, 0x2 + beq _08069EB6 + cmp r0, 0x3 + bne _08069E06 + b _08069F10 +_08069E06: + b _08069F56 +_08069E08: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x4] + ldrh r0, [r4] + strh r0, [r5, 0x6] + b _08069F52 +_08069E20: + mov r7, sp + adds r7, 0x2 + mov r0, sp + adds r1, r7, 0 + bl PlayerGetDestCoords + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _08069E4A + movs r0, 0 + ldrsh r1, [r7, r0] + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _08069E4A + b _08069F56 +_08069E4A: + strh r2, [r5, 0x4] + ldrh r0, [r7] + strh r0, [r5, 0x6] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r7, r2] + bl MapGridGetMetatileBehaviorAt + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _08069E8C + bl GetVarPointer + adds r6, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8057540 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08069E90 + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + movs r0, 0x4 + strh r0, [r5, 0xC] + movs r0, 0x2 + b _08069EA8 + .align 2, 0 +_08069E8C: .4byte 0x00004022 +_08069E90: + adds r0, r4, 0 + bl sub_8057554 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08069F56 + movs r0, 0 + strh r0, [r6] + movs r0, 0x4 + strh r0, [r5, 0xC] + movs r0, 0x3 +_08069EA8: + strh r0, [r5, 0x2] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x8] + ldrh r0, [r7] + strh r0, [r5, 0xA] + b _08069F56 +_08069EB6: + ldrh r1, [r5, 0xC] + movs r3, 0xC + ldrsh r0, [r5, r3] + cmp r0, 0 + bne _08069F1A + mov r1, sp + ldrh r0, [r5, 0x8] + strh r0, [r1] + mov r4, sp + adds r4, 0x2 + ldrh r0, [r5, 0xA] + strh r0, [r4] + movs r0, 0x2A + bl PlaySE + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _08069F0C + bl MapGridSetMetatileIdAt + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl CurrentMapDrawMetatileAt + mov r0, sp + ldrh r0, [r0] + subs r0, 0x7 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r4] + subs r1, 0x7 + lsls r1, 16 + asrs r1, 16 + bl sub_8069CFC + b _08069F52 + .align 2, 0 +_08069F0C: .4byte 0x0000020e +_08069F10: + ldrh r1, [r5, 0xC] + movs r3, 0xC + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _08069F20 +_08069F1A: + subs r0, r1, 0x1 + strh r0, [r5, 0xC] + b _08069F56 +_08069F20: + mov r1, sp + ldrh r0, [r5, 0x8] + strh r0, [r1] + mov r4, sp + adds r4, 0x2 + ldrh r0, [r5, 0xA] + strh r0, [r4] + movs r0, 0x29 + bl PlaySE + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _08069F60 + bl MapGridSetMetatileIdAt + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl CurrentMapDrawMetatileAt +_08069F52: + movs r0, 0x1 + strh r0, [r5, 0x2] +_08069F56: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08069F60: .4byte 0x00000206 + thumb_func_end sub_8069DD4 + + thumb_func_start sub_8069F64 +sub_8069F64: @ 8069F64 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08069FE8 + adds r5, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x2 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _08069F9E + movs r0, 0 + ldrsh r1, [r4, r0] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0806A02A +_08069F9E: + strh r2, [r5, 0x2] + ldrh r0, [r4] + strh r0, [r5, 0x4] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsAsh + lsls r0, 24 + cmp r0, 0 + beq _0806A02A + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileIdAt + ldr r1, _08069FEC + cmp r0, r1 + bne _08069FF4 + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _08069FF0 + movs r3, 0x4 + bl ash + b _0806A006 + .align 2, 0 +_08069FE8: .4byte gUnknown_03004B28 +_08069FEC: .4byte 0x0000020a +_08069FF0: .4byte 0x00000212 +_08069FF4: + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, _0806A034 + movs r3, 0x4 + bl ash +_0806A006: + movs r0, 0x87 + lsls r0, 1 + movs r1, 0x1 + bl sub_80A92D4 + lsls r0, 24 + cmp r0, 0 + beq _0806A02A + ldr r0, _0806A038 + bl GetVarPointer + adds r2, r0, 0 + ldrh r1, [r2] + ldr r0, _0806A03C + cmp r1, r0 + bhi _0806A02A + adds r0, r1, 0x1 + strh r0, [r2] +_0806A02A: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806A034: .4byte 0x00000206 +_0806A038: .4byte 0x00004048 +_0806A03C: .4byte 0x0000270e + thumb_func_end sub_8069F64 + + thumb_func_start sub_806A040 +sub_806A040: @ 806A040 + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridGetMetatileIdAt + ldr r1, _0806A074 + ldr r2, _0806A078 + cmp r0, r1 + bne _0806A05C + subs r2, 0x31 +_0806A05C: + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridSetMetatileIdAt + adds r0, r5, 0 + adds r1, r4, 0 + bl CurrentMapDrawMetatileAt + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806A074: .4byte 0x0000022f +_0806A078: .4byte 0x00000237 + thumb_func_end sub_806A040 + + thumb_func_start sub_806A07C +sub_806A07C: @ 806A07C + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0806A164 + adds r5, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 16 + lsrs r6, r0, 16 + ldrh r1, [r5, 0x8] + movs r3, 0x8 + ldrsh r0, [r5, r3] + adds r7, r4, 0 + cmp r0, 0 + beq _0806A0CE + subs r0, r1, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bne _0806A0CE + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl sub_806A040 +_0806A0CE: + ldrh r1, [r5, 0xE] + movs r3, 0xE + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _0806A0EE + subs r0, r1, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _0806A0EE + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + bl sub_806A040 +_0806A0EE: + lsls r0, r6, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + bl sub_8057818 + lsls r0, 24 + cmp r0, 0 + beq _0806A106 + ldr r0, _0806A168 + movs r1, 0 + bl VarSet +_0806A106: + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0806A122 + movs r0, 0 + ldrsh r1, [r7, r0] + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0806A182 +_0806A122: + strh r2, [r5, 0x4] + adds r4, r7, 0 + ldrh r0, [r4] + strh r0, [r5, 0x6] + adds r0, r6, 0 + bl sub_805782C + lsls r0, 24 + cmp r0, 0 + beq _0806A182 + bl sub_80E6034 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _0806A14A + ldr r0, _0806A168 + movs r1, 0 + bl VarSet +_0806A14A: + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0806A16C + movs r0, 0x3 + strh r0, [r5, 0x8] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0xA] + ldrh r0, [r4] + strh r0, [r5, 0xC] + b _0806A182 + .align 2, 0 +_0806A164: .4byte gUnknown_03004B28 +_0806A168: .4byte 0x00004022 +_0806A16C: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _0806A182 + movs r0, 0x3 + strh r0, [r5, 0xE] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x10] + ldrh r0, [r7] + strh r0, [r5, 0x12] +_0806A182: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806A07C + + thumb_func_start sub_806A18C +sub_806A18C: @ 806A18C + push {r4,r5,lr} + adds r3, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + ldrh r0, [r3] + subs r0, 0x1 + strh r0, [r3] + lsls r0, 16 + cmp r0, 0 + bne _0806A1A8 + movs r2, 0xE8 + b _0806A1BC +_0806A1A8: + ldr r1, _0806A1E4 + movs r2, 0 + ldrsh r0, [r3, r2] + cmp r0, 0 + bge _0806A1B4 + adds r0, 0x7 +_0806A1B4: + asrs r0, 3 + lsls r0, 1 + adds r0, r1 + ldrh r2, [r0] +_0806A1BC: + lsls r5, 16 + asrs r5, 16 + lsls r4, 16 + asrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridSetMetatileIdAt + adds r0, r5, 0 + adds r1, r4, 0 + bl CurrentMapDrawMetatileAt + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0xE8 + bl MapGridSetMetatileIdAt + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806A1E4: .4byte gUnknown_08376418 + thumb_func_end sub_806A18C + + thumb_func_start sub_806A1E8 +sub_806A1E8: @ 806A1E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0806A230 + adds r4, r1, r0 + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl PlayerGetDestCoords + ldr r0, _0806A234 + movs r1, 0x4 + ldrsb r1, [r0, r1] + lsls r1, 8 + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + orrs r0, r1 + lsls r0, 16 + lsrs r7, r0, 16 + movs r0, 0x2 + ldrsh r1, [r4, r0] + mov r8, r5 + cmp r1, 0 + beq _0806A238 + cmp r1, 0x1 + beq _0806A264 + b _0806A2B8 + .align 2, 0 +_0806A230: .4byte gUnknown_03004B28 +_0806A234: .4byte gSaveBlock1 +_0806A238: + strh r7, [r4] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x4] + ldrh r0, [r5] + strh r0, [r4, 0x6] + movs r0, 0x1 + strh r0, [r4, 0x2] + strh r1, [r4, 0x8] + strh r1, [r4, 0xE] + strh r1, [r4, 0x14] + strh r1, [r4, 0x1A] + b _0806A2B8 +_0806A252: + movs r0, 0x20 + strh r0, [r1] + mov r0, sp + ldrh r0, [r0] + strh r0, [r1, 0x2] + mov r2, r8 + ldrh r0, [r2] + strh r0, [r1, 0x4] + b _0806A2B8 +_0806A264: + mov r0, sp + movs r3, 0x4 + ldrsh r1, [r4, r3] + ldrh r2, [r0] + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bne _0806A280 + movs r0, 0x6 + ldrsh r1, [r4, r0] + movs r3, 0 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0806A2B8 +_0806A280: + strh r2, [r4, 0x4] + ldrh r0, [r5] + strh r0, [r4, 0x6] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsMuddySlope + lsls r0, 24 + cmp r0, 0 + beq _0806A2B8 + movs r6, 0x4 + adds r1, r4, 0 + adds r1, 0x8 +_0806A2A8: + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _0806A252 + adds r1, 0x6 + adds r6, 0x3 + cmp r6, 0xD + ble _0806A2A8 +_0806A2B8: + ldr r2, _0806A2D4 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806A2D8 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r7, r0 + beq _0806A2D8 + strh r7, [r4] + ldrh r0, [r2, 0x4] + ldrh r1, [r2, 0x8] + b _0806A2DC + .align 2, 0 +_0806A2D4: .4byte gUnknown_0202E844 +_0806A2D8: + movs r0, 0 + movs r1, 0 +_0806A2DC: + lsls r0, 16 + asrs r0, 16 + mov r8, r0 + lsls r0, r1, 16 + asrs r7, r0, 16 + adds r5, r4, 0 + adds r5, 0x8 + adds r4, r5, 0 + movs r6, 0x9 +_0806A2EE: + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0806A312 + ldrh r0, [r4, 0x2] + mov r3, r8 + subs r0, r3 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x4] + subs r0, r7 + strh r0, [r4, 0x4] + movs r0, 0x2 + ldrsh r1, [r4, r0] + movs r3, 0x4 + ldrsh r2, [r4, r3] + adds r0, r5, 0 + bl sub_806A18C +_0806A312: + adds r4, 0x6 + adds r5, 0x6 + subs r6, 0x3 + cmp r6, 0 + bge _0806A2EE + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806A1E8 + + thumb_func_start sub_806A328 +sub_806A328: @ 806A328 + push {lr} + ldr r0, _0806A350 + bl FlagSet + bl RtcCalcLocalTime + ldr r2, _0806A354 + adds r2, 0xA0 + ldr r3, _0806A358 + ldr r0, [r3] + ldr r1, [r3, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _0806A35C + ldrh r1, [r3] + bl VarSet + pop {r0} + bx r0 + .align 2, 0 +_0806A350: .4byte 0x00000835 +_0806A354: .4byte gSaveBlock2 +_0806A358: .4byte gLocalTime +_0806A35C: .4byte 0x00004040 + thumb_func_end sub_806A328 + + thumb_func_start InTrainerHill +InTrainerHill: @ 806A360 + push {r4,lr} + ldr r0, _0806A388 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0806A380 + bl RtcCalcLocalTime + ldr r4, _0806A38C + adds r0, r4, 0 + bl sub_806A390 + adds r0, r4, 0 + bl sub_806A3F4 +_0806A380: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806A388: .4byte 0x00000835 +_0806A38C: .4byte gLocalTime + thumb_func_end InTrainerHill + + thumb_func_start sub_806A390 +sub_806A390: @ 806A390 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _0806A3F0 + bl GetVarPointer + adds r6, r0, 0 + ldrh r0, [r6] + movs r2, 0 + ldrsh r1, [r5, r2] + cmp r0, r1 + beq _0806A3EA + cmp r0, r1 + bgt _0806A3EA + ldrh r4, [r5] + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + bl sub_80690B4 + adds r0, r4, 0 + bl sub_80FA220 + adds r0, r4, 0 + bl sub_80BE8C4 + adds r0, r4, 0 + bl sub_8080834 + adds r0, r4, 0 + bl sub_80401D8 + adds r0, r4, 0 + bl sub_810D2F4 + adds r0, r4, 0 + bl sub_810D410 + adds r0, r4, 0 + bl sub_810F618 + adds r0, r4, 0 + bl sub_8145AA4 + ldrh r0, [r5] + strh r0, [r6] +_0806A3EA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806A3F0: .4byte 0x00004040 + thumb_func_end sub_806A390 + + thumb_func_start sub_806A3F4 +sub_806A3F4: @ 806A3F4 + push {r4-r6,lr} + sub sp, 0x8 + adds r5, r0, 0 + mov r4, sp + ldr r6, _0806A448 + mov r0, sp + adds r1, r6, 0 + adds r2, r5, 0 + bl CalcTimeDifference + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + lsls r1, r0, 4 + subs r1, r0 + lsls r1, 5 + movs r2, 0x2 + ldrsb r2, [r4, r2] + lsls r0, r2, 4 + subs r0, r2 + lsls r0, 2 + adds r1, r0 + movs r0, 0x3 + ldrsb r0, [r4, r0] + adds r0, r1, r0 + cmp r0, 0 + beq _0806A43E + cmp r0, 0 + blt _0806A43E + bl BerryTreeTimeUpdate + ldr r0, [r5] + ldr r1, [r5, 0x4] + str r0, [r6] + str r1, [r6, 0x4] +_0806A43E: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806A448: .4byte gSaveBlock2 + 0xA0 + thumb_func_end sub_806A3F4 + + thumb_func_start sub_806A44C +sub_806A44C: @ 806A44C + push {lr} + bl sub_806A328 + ldr r0, _0806A45C + bl SetMainCallback2 + pop {r0} + bx r0 + .align 2, 0 +_0806A45C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music + thumb_func_end sub_806A44C + + thumb_func_start sub_806A460 +sub_806A460: @ 806A460 + push {lr} + ldr r0, _0806A474 + bl SetMainCallback2 + ldr r1, _0806A478 + ldr r0, _0806A47C + str r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_0806A474: .4byte Cb2_StartWallClock +_0806A478: .4byte gMain +_0806A47C: .4byte sub_806A44C + thumb_func_end sub_806A460 + + thumb_func_start sub_806A480 +sub_806A480: @ 806A480 + push {lr} + adds r3, r0, 0 + ldr r2, _0806A4B0 + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0xC + ldrsh r1, [r0, r2] + movs r2, 0x30 + ldrsh r0, [r3, r2] + cmp r1, r0 + beq _0806A596 + strh r1, [r3, 0x30] + subs r0, r1, 0x1 + cmp r0, 0x5 + bhi _0806A596 + lsls r0, 2 + ldr r1, _0806A4B4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806A4B0: .4byte gTasks +_0806A4B4: .4byte _0806A4B8 + .align 2, 0 +_0806A4B8: + .4byte _0806A4D0 + .4byte _0806A4F4 + .4byte _0806A518 + .4byte _0806A53C + .4byte _0806A566 + .4byte _0806A590 +_0806A4D0: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0x1 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x41 + ands r0, r1 + strb r0, [r2] + movs r0, 0x35 + b _0806A55E +_0806A4F4: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0x1 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x41 + ands r0, r1 + strb r0, [r2] + movs r0, 0x56 + b _0806A55E +_0806A518: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0x1 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x41 + ands r0, r1 + strb r0, [r2] + movs r0, 0x6B + b _0806A55E +_0806A53C: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0x1 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x41 + ands r0, r1 + strb r0, [r2] + movs r0, 0x80 +_0806A55E: + strh r0, [r3, 0x20] + movs r0, 0x44 + strh r0, [r3, 0x22] + b _0806A596 +_0806A566: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0x2 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x42 + ands r0, r1 + strb r0, [r2] + movs r0, 0x9B + strh r0, [r3, 0x20] + movs r0, 0x50 + strh r0, [r3, 0x22] + b _0806A596 +_0806A590: + adds r0, r3, 0 + bl DestroySprite +_0806A596: + pop {r0} + bx r0 + thumb_func_end sub_806A480 + + thumb_func_start sub_806A59C +sub_806A59C: @ 806A59C + push {lr} + adds r3, r0, 0 + ldr r2, _0806A5CC + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r2, 0xC + ldrsh r1, [r0, r2] + movs r2, 0x30 + ldrsh r0, [r3, r2] + cmp r1, r0 + beq _0806A696 + strh r1, [r3, 0x30] + subs r0, r1, 0x1 + cmp r0, 0x5 + bhi _0806A696 + lsls r0, 2 + ldr r1, _0806A5D0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806A5CC: .4byte gTasks +_0806A5D0: .4byte _0806A5D4 + .align 2, 0 +_0806A5D4: + .4byte _0806A5EC + .4byte _0806A610 + .4byte _0806A634 + .4byte _0806A658 + .4byte _0806A682 + .4byte _0806A690 +_0806A5EC: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x40 + ands r0, r1 + strb r0, [r2] + movs r0, 0x35 + b _0806A67A +_0806A610: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x40 + ands r0, r1 + strb r0, [r2] + movs r0, 0x56 + b _0806A67A +_0806A634: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x40 + ands r0, r1 + strb r0, [r2] + movs r0, 0x6B + b _0806A67A +_0806A658: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, 0 + adds r1, 0x2A + movs r0, 0 + strb r0, [r1] + subs r2, 0x12 + ldrb r1, [r2] + subs r0, 0x40 + ands r0, r1 + strb r0, [r2] + movs r0, 0x80 +_0806A67A: + strh r0, [r3, 0x20] + movs r0, 0x5C + strh r0, [r3, 0x22] + b _0806A696 +_0806A682: + adds r0, r3, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _0806A696 +_0806A690: + adds r0, r3, 0 + bl DestroySprite +_0806A696: + pop {r0} + bx r0 + thumb_func_end sub_806A59C + + thumb_func_start sub_806A69C +sub_806A69C: @ 806A69C + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _0806A70C + bl LoadSpritePalette + ldr r0, _0806A710 + mov r8, r0 + movs r1, 0x35 + movs r2, 0x44 + movs r3, 0 + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r1, r0, 24 + ldr r6, _0806A714 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r6, 0 + adds r4, 0x1C + adds r2, r0, r4 + ldr r1, _0806A718 + str r1, [r2] + adds r0, r6 + strh r5, [r0, 0x2E] + ldr r1, _0806A71C + strh r1, [r0, 0x30] + mov r0, r8 + movs r1, 0x35 + movs r2, 0x44 + movs r3, 0 + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r1, r0, 24 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r4 + ldr r1, _0806A720 + str r1, [r4] + adds r0, r6 + strh r5, [r0, 0x2E] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x30] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806A70C: .4byte gUnknown_083764BC +_0806A710: .4byte gSpriteTemplate_83764E8 +_0806A714: .4byte gSprites +_0806A718: .4byte sub_806A480 +_0806A71C: .4byte 0x0000ffff +_0806A720: .4byte sub_806A59C + thumb_func_end sub_806A69C + + thumb_func_start sub_806A724 +sub_806A724: @ 806A724 + push {lr} + ldr r0, _0806A734 + ldrh r0, [r0, 0x4] + bl FreeSpritePaletteByTag + pop {r0} + bx r0 + .align 2, 0 +_0806A734: .4byte gUnknown_083764BC + thumb_func_end sub_806A724 + + thumb_func_start sub_806A738 +sub_806A738: @ 806A738 + push {lr} + movs r0, 0x3 + movs r1, 0x8 + movs r2, 0x19 + movs r3, 0xB + bl MenuZeroFillWindowRect + pop {r0} + bx r0 + thumb_func_end sub_806A738 + + thumb_func_start sub_806A74C +sub_806A74C: @ 806A74C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + adds r0, r2, 0 + adds r4, r3, 0 + ldr r6, [sp, 0x24] + ldr r2, [sp, 0x28] + mov r9, r2 + mov r2, r10 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + mov r1, r9 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + ldr r7, _0806A83C + ldr r1, _0806A840 + bl __umodsi3 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + adds r0, r4, 0 + movs r1, 0x18 + bl __umodsi3 + mov r8, r0 + mov r2, r8 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + adds r0, r6, 0 + movs r1, 0x3C + bl __umodsi3 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + mov r0, r9 + movs r1, 0x3C + bl __umodsi3 + mov r9, r0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r4, _0806A844 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x18 + movs r3, 0x1 + bl sub_8072C44 + adds r0, r7, 0 + adds r1, r4, 0 + bl StringCopy + adds r7, r0, 0 + ldr r1, _0806A848 + bl StringCopy + adds r7, r0, 0 + adds r0, r4, 0 + mov r1, r8 + movs r2, 0x12 + movs r3, 0x1 + bl sub_8072C44 + adds r0, r7, 0 + adds r1, r4, 0 + bl StringCopy + adds r7, r0, 0 + ldr r4, _0806A84C + adds r1, r4, 0 + bl StringCopy + adds r7, r0, 0 + adds r1, r6, 0 + movs r2, 0x2 + movs r3, 0x2 + bl ConvertIntToDecimalStringN + adds r7, r0, 0 + adds r1, r4, 0 + bl StringCopy + adds r7, r0, 0 + mov r1, r9 + movs r2, 0x2 + movs r3, 0x2 + bl ConvertIntToDecimalStringN + ldr r0, _0806A83C + mov r1, r10 + ldr r2, [sp] + bl MenuPrint + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806A83C: .4byte gStringVar4 +_0806A840: .4byte 0x00002710 +_0806A844: .4byte gStringVar1 +_0806A848: .4byte gOtherText_Day +_0806A84C: .4byte gUnknown_08376500 + thumb_func_end sub_806A74C + + thumb_func_start sub_806A850 +sub_806A850: @ 806A850 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r6, r0, 0 + mov r8, r1 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r6, 16 + lsrs r6, 16 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + movs r0, 0x3 + movs r1, 0x8 + movs r2, 0x19 + movs r3, 0xB + bl MenuDrawTextWindow + ldr r0, _0806A8A8 + movs r1, 0x14 + movs r2, 0x9 + bl MenuPrint + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0x4 + movs r1, 0x9 + adds r2, r6, 0 + mov r3, r8 + bl sub_806A74C + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806A8A8: .4byte gOtherText_OK + thumb_func_end sub_806A850 + + thumb_func_start sub_806A8AC +sub_806A8AC: @ 806A8AC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r3, 16 + lsrs r3, 16 + adds r1, r3, 0 + movs r0, 0x80 + ands r0, r3 + cmp r0, 0 + beq _0806A8C6 + ldrh r0, [r4] + subs r0, 0x1 + b _0806A8E0 +_0806A8C6: + movs r0, 0x40 + ands r0, r3 + cmp r0, 0 + beq _0806A8D4 + ldrh r0, [r4] + adds r0, 0x1 + b _0806A8FE +_0806A8D4: + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _0806A8EE + ldrh r0, [r4] + subs r0, 0xA +_0806A8E0: + strh r0, [r4] + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, r5 + bge _0806A90A + strh r2, [r4] + b _0806A90A +_0806A8EE: + movs r0, 0x10 + ands r1, r0 + cmp r1, 0 + bne _0806A8FA + movs r0, 0 + b _0806A90C +_0806A8FA: + ldrh r0, [r4] + adds r0, 0xA +_0806A8FE: + strh r0, [r4] + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, r2 + ble _0806A90A + strh r5, [r4] +_0806A90A: + movs r0, 0x1 +_0806A90C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806A8AC + + thumb_func_start sub_806A914 +sub_806A914: @ 806A914 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0806A928 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x1 + strh r0, [r1, 0x8] + bx lr + .align 2, 0 +_0806A928: .4byte gTasks + thumb_func_end sub_806A914 + + thumb_func_start sub_806A92C +sub_806A92C: @ 806A92C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_806A738 + bl sub_806A724 + ldr r1, _0806A950 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _0806A954 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806A950: .4byte gTasks +_0806A954: .4byte sub_806A914 + thumb_func_end sub_806A92C + + thumb_func_start sub_806A958 +sub_806A958: @ 806A958 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r7, r0, 3 + ldr r0, _0806A99C + mov r8, r0 + adds r5, r7, r0 + ldrb r4, [r5, 0x4] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + ldr r1, _0806A9A0 + adds r2, r0, r1 + ldr r1, _0806A9A4 + ldrh r3, [r1, 0x2E] + movs r0, 0x2 + ands r0, r3 + mov r12, r1 + cmp r0, 0 + beq _0806A9AC + mov r0, r8 + subs r0, 0x8 + adds r0, r7, r0 + ldr r1, _0806A9A8 + str r1, [r0] + movs r0, 0 + strh r0, [r5, 0x2] + movs r0, 0x6 + b _0806A9CC + .align 2, 0 +_0806A99C: .4byte gUnknown_03004B28 +_0806A9A0: .4byte gUnknown_08376414 +_0806A9A4: .4byte gMain +_0806A9A8: .4byte sub_806A92C +_0806A9AC: + movs r0, 0x10 + ands r0, r3 + cmp r0, 0 + beq _0806A9BA + ldrb r0, [r2, 0x7] + cmp r0, 0 + bne _0806A9CC +_0806A9BA: + mov r3, r12 + ldrh r1, [r3, 0x2E] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0806A9D6 + ldrb r0, [r2, 0x6] + cmp r0, 0 + beq _0806A9D6 +_0806A9CC: + strh r0, [r5, 0x4] + movs r0, 0x5 + bl PlaySE + b _0806AA58 +_0806A9D6: + cmp r4, 0x5 + bne _0806AA24 + mov r0, r12 + ldrh r1, [r0, 0x2E] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0806AA58 + ldr r1, _0806AA18 + ldrh r0, [r5, 0x6] + strh r0, [r1] + ldrh r0, [r5, 0x8] + strb r0, [r1, 0x2] + ldrh r0, [r5, 0xA] + strb r0, [r1, 0x3] + ldrh r0, [r5, 0xC] + strb r0, [r1, 0x4] + movs r0, 0x5 + bl PlaySE + ldr r1, _0806AA1C + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _0806AA20 + str r1, [r0] + strh r4, [r5, 0x2] + movs r0, 0x6 + strh r0, [r5, 0x4] + b _0806AA58 + .align 2, 0 +_0806AA18: .4byte gLocalTime +_0806AA1C: .4byte gTasks +_0806AA20: .4byte sub_806A92C +_0806AA24: + ldrb r0, [r2] + lsls r0, 1 + adds r0, r5, r0 + ldrh r1, [r2, 0x2] + ldrh r2, [r2, 0x4] + mov r3, r12 + ldrh r4, [r3, 0x30] + movs r3, 0xC0 + ands r3, r4 + bl sub_806A8AC + cmp r0, 0 + beq _0806AA58 + movs r0, 0x5 + bl PlaySE + ldrh r2, [r5, 0x6] + ldrb r3, [r5, 0x8] + ldrb r0, [r5, 0xA] + str r0, [sp] + ldrb r0, [r5, 0xC] + str r0, [sp, 0x4] + movs r0, 0x4 + movs r1, 0x9 + bl sub_806A74C +_0806AA58: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806A958 + + thumb_func_start sub_806AA64 +sub_806AA64: @ 806AA64 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r6, r5, 2 + adds r6, r5 + lsls r6, 3 + ldr r0, _0806AACC + mov r8, r0 + adds r4, r6, r0 + movs r0, 0 + strh r0, [r4] + ldr r3, _0806AAD0 + ldrh r0, [r3] + strh r0, [r4, 0x6] + movs r1, 0x2 + ldrsb r1, [r3, r1] + strh r1, [r4, 0x8] + movs r2, 0x3 + ldrsb r2, [r3, r2] + strh r2, [r4, 0xA] + ldrb r3, [r3, 0x4] + lsls r3, 24 + asrs r3, 24 + strh r3, [r4, 0xC] + ldrh r0, [r4, 0x6] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + bl sub_806A850 + adds r0, r5, 0 + bl sub_806A69C + movs r0, 0x2 + strh r0, [r4, 0x4] + movs r0, 0x8 + negs r0, r0 + add r8, r0 + add r6, r8 + ldr r0, _0806AAD4 + str r0, [r6] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0806AACC: .4byte gUnknown_03004B28 +_0806AAD0: .4byte gLocalTime +_0806AAD4: .4byte sub_806A958 + thumb_func_end sub_806AA64 + + thumb_func_start sub_806AAD8 +sub_806AAD8: @ 806AAD8 + push {r4-r7,lr} + sub sp, 0x4 + movs r0, 0x80 + lsls r0, 19 + movs r4, 0 + strh r4, [r0] + movs r0, 0 + bl SetVBlankCallback + movs r2, 0xA0 + lsls r2, 19 + mov r0, sp + strh r4, [r0] + ldr r1, _0806AB94 + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, _0806AB98 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0xC0 + lsls r2, 19 + movs r3, 0xC0 + lsls r3, 9 + mov r4, sp + movs r6, 0 + movs r5, 0x80 + lsls r5, 5 + ldr r7, _0806AB9C + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_0806AB16: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r5 + subs r3, r5 + cmp r3, r5 + bhi _0806AB16 + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0 + movs r1, 0x80 + bl ResetOamRange + bl LoadOam + bl remove_some_task + bl dp12_8087EA4 + bl ResetSpriteData + bl ResetTasks + bl ResetPaletteFade + ldr r4, _0806ABA0 + adds r0, r4, 0 + bl SetUpWindowConfig + adds r0, r4, 0 + bl InitMenuWindow + movs r1, 0x80 + lsls r1, 19 + movs r2, 0x88 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0806ABA4 + bl SetVBlankCallback + ldr r0, _0806ABA8 + bl SetMainCallback2 + ldr r0, _0806ABAC + movs r1, 0x50 + bl CreateTask + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806AB94: .4byte 0x040000d4 +_0806AB98: .4byte 0x81000200 +_0806AB9C: .4byte 0x81000800 +_0806ABA0: .4byte gWindowConfig_81E6CE4 +_0806ABA4: .4byte sub_806ABC8 +_0806ABA8: .4byte sub_806ABB0 +_0806ABAC: .4byte sub_806ACCC + thumb_func_end sub_806AAD8 + + thumb_func_start sub_806ABB0 +sub_806ABB0: @ 806ABB0 + push {lr} + bl RunTasks + bl AnimateSprites + bl BuildOamBuffer + bl UpdatePaletteFade + pop {r0} + bx r0 + thumb_func_end sub_806ABB0 + + thumb_func_start sub_806ABC8 +sub_806ABC8: @ 806ABC8 + push {lr} + bl ProcessSpriteCopyRequests + bl LoadOam + bl TransferPlttBuffer + pop {r0} + bx r0 + thumb_func_end sub_806ABC8 + + thumb_func_start sub_806ABDC +sub_806ABDC: @ 806ABDC + push {r4,lr} + adds r4, r0, 0 + bl MenuDisplayMessageBox + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0xF + bl MenuPrint + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_806ABDC + + thumb_func_start sub_806ABF4 +sub_806ABF4: @ 806ABF4 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0806AC14 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0806AC18 + cmp r0, 0x1 + beq _0806AC80 + b _0806ACC4 + .align 2, 0 +_0806AC14: .4byte gUnknown_03004B28 +_0806AC18: + bl MenuZeroFillScreen + movs r0, 0 + movs r1, 0 + movs r2, 0x14 + movs r3, 0xA + bl MenuDrawTextWindow + ldr r0, _0806AC98 + movs r1, 0x1 + movs r2, 0x1 + bl MenuPrint + ldr r0, _0806AC9C + ldrh r2, [r0] + ldrb r3, [r0, 0x2] + ldrb r1, [r0, 0x3] + str r1, [sp] + ldrb r0, [r0, 0x4] + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x3 + bl sub_806A74C + ldr r0, _0806ACA0 + movs r1, 0x1 + movs r2, 0x5 + bl MenuPrint + ldr r1, _0806ACA4 + adds r0, r1, 0 + adds r0, 0xA0 + ldrh r2, [r0] + adds r0, 0x2 + ldrb r3, [r0] + adds r0, 0x1 + ldrb r0, [r0] + str r0, [sp] + adds r0, r1, 0 + adds r0, 0xA4 + ldrb r0, [r0] + str r0, [sp, 0x4] + movs r0, 0x1 + movs r1, 0x7 + bl sub_806A74C + ldr r0, _0806ACA8 + bl sub_806ABDC + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] +_0806AC80: + ldr r0, _0806ACAC + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0806ACB0 + adds r0, r5, 0 + bl DestroyTask + bl DoSoftReset + b _0806ACC4 + .align 2, 0 +_0806AC98: .4byte gSystemText_PresentTime +_0806AC9C: .4byte gLocalTime +_0806ACA0: .4byte gSystemText_PreviousTime +_0806ACA4: .4byte gSaveBlock2 +_0806ACA8: .4byte gSystemText_ResetRTCPrompt +_0806ACAC: .4byte gMain +_0806ACB0: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806ACC4 + movs r0, 0x5 + bl PlaySE + adds r0, r5, 0 + bl DestroyTask +_0806ACC4: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806ABF4 + + thumb_func_start sub_806ACCC +sub_806ACCC: @ 806ACCC + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _0806ACF4 + adds r5, r0, r1 + movs r1, 0 + ldrsh r0, [r5, r1] + cmp r0, 0x6 + bls _0806ACE8 + b _0806AEC4 +_0806ACE8: + lsls r0, 2 + ldr r1, _0806ACF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806ACF4: .4byte gUnknown_03004B28 +_0806ACF8: .4byte _0806ACFC + .align 2, 0 +_0806ACFC: + .4byte _0806AD18 + .4byte _0806AD34 + .4byte _0806AD80 + .4byte _0806ADD8 + .4byte _0806AE5C + .4byte _0806AE8C + .4byte _0806AEAE +_0806AD18: + movs r0, 0x1 + negs r0, r0 + ldr r1, _0806AD30 + str r1, [sp] + movs r1, 0x1 + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + movs r0, 0x1 + strh r0, [r5] + b _0806AEC4 + .align 2, 0 +_0806AD30: .4byte 0x0000ffff +_0806AD34: + ldr r0, _0806AD5C + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0806AD42 + b _0806AEC4 +_0806AD42: + ldr r0, _0806AD60 + ldrh r0, [r0] + cmp r0, 0 + beq _0806AD4E + cmp r0, 0x2 + bne _0806AD68 +_0806AD4E: + ldr r0, _0806AD64 + bl sub_806ABDC + movs r0, 0x5 + strh r0, [r5] + b _0806AEC4 + .align 2, 0 +_0806AD5C: .4byte gPaletteFade +_0806AD60: .4byte gSaveFileStatus +_0806AD64: .4byte gSystemText_NoSaveFileNoTime +_0806AD68: + bl RtcCalcLocalTime + ldr r0, _0806AD7C + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x2] + b _0806ADFC + .align 2, 0 +_0806AD7C: .4byte sub_806ABF4 +_0806AD80: + ldr r2, _0806ADC4 + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x4] + cmp r0, 0x1 + bne _0806AD96 + b _0806AEC4 +_0806AD96: + bl MenuZeroFillScreen + ldr r0, _0806ADC8 + bl sub_806ABDC + ldr r2, _0806ADCC + ldr r0, _0806ADD0 + adds r0, 0xA0 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _0806ADD4 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x2] + movs r0, 0x3 + strh r0, [r5] + b _0806AEC4 + .align 2, 0 +_0806ADC4: .4byte gTasks +_0806ADC8: .4byte gSystemText_PleaseResetTime +_0806ADCC: .4byte gLocalTime +_0806ADD0: .4byte gSaveBlock2 +_0806ADD4: .4byte sub_806AA64 +_0806ADD8: + ldr r2, _0806AE04 + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r1, r0, r2 + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0806AEC4 + movs r2, 0xA + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _0806AE08 + ldrb r0, [r5, 0x2] + bl DestroyTask +_0806ADFC: + movs r0, 0x2 + strh r0, [r5] + b _0806AEC4 + .align 2, 0 +_0806AE04: .4byte gTasks +_0806AE08: + ldrb r0, [r5, 0x2] + bl DestroyTask + bl RtcReset + ldr r4, _0806AE4C + movs r1, 0 + ldrsh r0, [r4, r1] + movs r1, 0x2 + ldrsb r1, [r4, r1] + movs r2, 0x3 + ldrsb r2, [r4, r2] + movs r3, 0x4 + ldrsb r3, [r4, r3] + bl RtcCalcLocalTimeOffset + ldr r2, _0806AE50 + adds r2, 0xA0 + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + ldr r0, _0806AE54 + ldrh r1, [r4] + bl VarSet + bl sub_80691A0 + ldr r0, _0806AE58 + bl sub_806ABDC + movs r0, 0x4 + strh r0, [r5] + b _0806AEC4 + .align 2, 0 +_0806AE4C: .4byte gLocalTime +_0806AE50: .4byte gSaveBlock2 +_0806AE54: .4byte 0x00004040 +_0806AE58: .4byte gSystemText_ClockResetDataSave +_0806AE5C: + movs r0, 0 + bl sub_8125D44 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806AE7C + ldr r0, _0806AE78 + bl sub_806ABDC + movs r0, 0x49 + bl PlaySE + b _0806AE88 + .align 2, 0 +_0806AE78: .4byte gSystemText_SaveCompleted +_0806AE7C: + ldr r0, _0806AECC + bl sub_806ABDC + movs r0, 0x16 + bl PlaySE +_0806AE88: + movs r0, 0x5 + strh r0, [r5] +_0806AE8C: + ldr r0, _0806AED0 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806AEC4 + movs r0, 0x1 + negs r0, r0 + ldr r1, _0806AED4 + str r1, [sp] + movs r1, 0x1 + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + movs r0, 0x6 + strh r0, [r5] +_0806AEAE: + ldr r0, _0806AED8 + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0806AEC4 + adds r0, r4, 0 + bl DestroyTask + bl DoSoftReset +_0806AEC4: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0806AECC: .4byte gSystemText_SaveFailed +_0806AED0: .4byte gMain +_0806AED4: .4byte 0x0000ffff +_0806AED8: .4byte gPaletteFade + thumb_func_end sub_806ACCC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/var.s b/asm/var.s new file mode 100644 index 000000000..366a5355f --- /dev/null +++ b/asm/var.s @@ -0,0 +1,104 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start GetVarPointer +GetVarPointer: @ 8069210 + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + adds r2, r1, 0 + ldr r0, _08069224 + cmp r1, r0 + bhi _08069228 + movs r0, 0 + b _0806924A + .align 2, 0 +_08069224: .4byte 0x00003fff +_08069228: + lsls r0, r1, 16 + cmp r0, 0 + bge _08069244 + ldr r0, _0806923C + ldr r2, _08069240 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + b _0806924A + .align 2, 0 +_0806923C: .4byte gUnknown_0814B14C +_08069240: .4byte 0xffff8000 +_08069244: + lsls r0, r2, 1 + ldr r1, _08069250 + adds r0, r1 +_0806924A: + pop {r1} + bx r1 + .align 2, 0 +_08069250: .4byte 0x0201ea74 + thumb_func_end GetVarPointer + + thumb_func_start VarGet +VarGet: @ 8069254 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl GetVarPointer + cmp r0, 0 + beq _08069268 + ldrh r0, [r0] + b _0806926A +_08069268: + adds r0, r4, 0 +_0806926A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end VarGet + + thumb_func_start VarSet +VarSet: @ 8069270 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r4, r1, 16 + bl GetVarPointer + cmp r0, 0 + beq _08069288 + strh r4, [r0] + movs r0, 0x1 + b _0806928A +_08069288: + movs r0, 0 +_0806928A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end VarSet + + thumb_func_start VarGetFieldObjectGraphicsId +VarGetFieldObjectGraphicsId: @ 8069290 + push {lr} + lsls r0, 24 + lsrs r0, 8 + ldr r1, _080692A8 + adds r0, r1 + lsrs r0, 16 + bl VarGet + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080692A8: .4byte 0x40100000 + thumb_func_end VarGetFieldObjectGraphicsId + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 1e1a3837d..4d9e14d5c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -65,6 +65,9 @@ SECTIONS { src/script.o(.text); src/scrcmd.o(.text); asm/rom_8065394.o(.text); + asm/var.o(.text); + asm/flag.o(.text); + asm/rom_806936C.o(.text); asm/party_menu.o(.text); asm/rom_806D7F8.o(.text); src/start_menu.o(.text); |