Files
2019-09-27 01:42:56 -04:00

7255 lines
131 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start DoWhiteOut
DoWhiteOut: @ 0x08083FA8
push {r4, lr}
ldr r0, _08083FE0
bl ScriptContext2_RunNewScript
ldr r0, _08083FE4
ldr r4, [r0]
movs r0, #0x92
lsls r0, r0, #3
adds r4, r4, r0
adds r0, r4, #0
bl GetMoney
adds r1, r0, #0
lsrs r1, r1, #1
adds r0, r4, #0
bl SetMoney
bl HealPlayerParty
bl Overworld_ResetStateAfterWhiteOut
bl SetWarpDestinationToLastHealLocation
bl WarpIntoMap
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08083FE0: .4byte 0x082428F1
_08083FE4: .4byte 0x03005AEC
thumb_func_end DoWhiteOut
thumb_func_start Overworld_ResetStateAfterDigEscRope
Overworld_ResetStateAfterDigEscRope: @ 0x08083FE8
push {lr}
bl ResetInitialPlayerAvatarState
ldr r0, _08084010
bl FlagClear
ldr r0, _08084014
bl FlagClear
ldr r0, _08084018
bl FlagClear
ldr r0, _0808401C
bl FlagClear
ldr r0, _08084020
bl FlagClear
pop {r0}
bx r0
.align 2, 0
_08084010: .4byte 0x0000088B
_08084014: .4byte 0x0000088D
_08084018: .4byte 0x0000088C
_0808401C: .4byte 0x00000889
_08084020: .4byte 0x00000888
thumb_func_end Overworld_ResetStateAfterDigEscRope
thumb_func_start Overworld_ResetStateAfterTeleport
Overworld_ResetStateAfterTeleport: @ 0x08084024
push {lr}
bl ResetInitialPlayerAvatarState
ldr r0, _08084054
bl FlagClear
ldr r0, _08084058
bl FlagClear
ldr r0, _0808405C
bl FlagClear
ldr r0, _08084060
bl FlagClear
ldr r0, _08084064
bl FlagClear
ldr r0, _08084068
bl ScriptContext2_RunNewScript
pop {r0}
bx r0
.align 2, 0
_08084054: .4byte 0x0000088B
_08084058: .4byte 0x0000088D
_0808405C: .4byte 0x0000088C
_08084060: .4byte 0x00000889
_08084064: .4byte 0x00000888
_08084068: .4byte 0x082428FC
thumb_func_end Overworld_ResetStateAfterTeleport
thumb_func_start Overworld_ResetStateAfterFly
Overworld_ResetStateAfterFly: @ 0x0808406C
push {lr}
bl ResetInitialPlayerAvatarState
ldr r0, _08084094
bl FlagClear
ldr r0, _08084098
bl FlagClear
ldr r0, _0808409C
bl FlagClear
ldr r0, _080840A0
bl FlagClear
ldr r0, _080840A4
bl FlagClear
pop {r0}
bx r0
.align 2, 0
_08084094: .4byte 0x0000088B
_08084098: .4byte 0x0000088D
_0808409C: .4byte 0x0000088C
_080840A0: .4byte 0x00000889
_080840A4: .4byte 0x00000888
thumb_func_end Overworld_ResetStateAfterFly
thumb_func_start Overworld_ResetStateAfterWhiteOut
Overworld_ResetStateAfterWhiteOut: @ 0x080840A8
push {r4, lr}
bl ResetInitialPlayerAvatarState
ldr r0, _080840F4
bl FlagClear
ldr r0, _080840F8
bl FlagClear
ldr r0, _080840FC
bl FlagClear
ldr r0, _08084100
bl FlagClear
ldr r0, _08084104
bl FlagClear
ldr r4, _08084108
adds r0, r4, #0
bl VarGet
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bne _080840EC
adds r0, r4, #0
movs r1, #0
bl VarSet
ldr r0, _0808410C
movs r1, #0
bl VarSet
_080840EC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080840F4: .4byte 0x0000088B
_080840F8: .4byte 0x0000088D
_080840FC: .4byte 0x0000088C
_08084100: .4byte 0x00000889
_08084104: .4byte 0x00000888
_08084108: .4byte 0x00004039
_0808410C: .4byte 0x00004037
thumb_func_end Overworld_ResetStateAfterWhiteOut
thumb_func_start sub_08084110
sub_08084110: @ 0x08084110
push {lr}
ldr r0, _0808412C
bl FlagClear
bl ChooseAmbientCrySpecies
bl ResetCyclingRoadChallengeData
bl UpdateLocationHistoryForRoamer
bl RoamerMoveToOtherLocationSet
pop {r0}
bx r0
.align 2, 0
_0808412C: .4byte 0x0000088C
thumb_func_end sub_08084110
thumb_func_start ResetGameStats
ResetGameStats: @ 0x08084130
push {r4, lr}
movs r4, #0
_08084134:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
movs r1, #0
bl SetGameStat
adds r4, #1
cmp r4, #0x3f
ble _08084134
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end ResetGameStats
thumb_func_start IncrementGameStat
IncrementGameStat: @ 0x0808414C
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x33
bhi _08084174
adds r0, r4, #0
bl GetGameStat
adds r1, r0, #0
ldr r0, _08084168
cmp r1, r0
bhi _0808416C
adds r1, #1
b _0808416E
.align 2, 0
_08084168: .4byte 0x00FFFFFE
_0808416C:
ldr r1, _0808417C
_0808416E:
adds r0, r4, #0
bl SetGameStat
_08084174:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0808417C: .4byte 0x00FFFFFF
thumb_func_end IncrementGameStat
thumb_func_start GetGameStat
GetGameStat: @ 0x08084180
push {lr}
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0x33
bhi _080841B0
ldr r0, _080841A4
ldr r2, [r0]
lsls r0, r1, #2
ldr r1, _080841A8
adds r2, r2, r1
adds r2, r2, r0
ldr r0, _080841AC
ldr r1, [r0]
adds r1, #0xac
ldr r0, [r2]
ldr r1, [r1]
eors r0, r1
b _080841B2
.align 2, 0
_080841A4: .4byte 0x03005AEC
_080841A8: .4byte 0x0000159C
_080841AC: .4byte 0x03005AF0
_080841B0:
movs r0, #0
_080841B2:
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetGameStat
thumb_func_start SetGameStat
SetGameStat: @ 0x080841B8
push {lr}
adds r3, r1, #0
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0x33
bhi _080841DC
ldr r0, _080841E0
ldr r1, [r0]
lsls r0, r2, #2
ldr r2, _080841E4
adds r1, r1, r2
adds r1, r1, r0
ldr r0, _080841E8
ldr r0, [r0]
adds r0, #0xac
ldr r0, [r0]
eors r0, r3
str r0, [r1]
_080841DC:
pop {r0}
bx r0
.align 2, 0
_080841E0: .4byte 0x03005AEC
_080841E4: .4byte 0x0000159C
_080841E8: .4byte 0x03005AF0
thumb_func_end SetGameStat
thumb_func_start ApplyNewEncryptionKeyToGameStats
ApplyNewEncryptionKeyToGameStats: @ 0x080841EC
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r4, #0
ldr r6, _08084214
_080841F4:
lsls r1, r4, #2
ldr r0, _08084218
adds r1, r1, r0
ldr r0, [r6]
adds r0, r0, r1
adds r1, r5, #0
bl ApplyNewEncryptionKeyToWord
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x3f
bls _080841F4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08084214: .4byte 0x03005AEC
_08084218: .4byte 0x0000159C
thumb_func_end ApplyNewEncryptionKeyToGameStats
thumb_func_start LoadEventObjTemplatesFromHeader
LoadEventObjTemplatesFromHeader: @ 0x0808421C
push {r4, r5, lr}
sub sp, #4
movs r0, #0
str r0, [sp]
ldr r5, _0808425C
ldr r1, [r5]
movs r4, #0xc7
lsls r4, r4, #4
adds r1, r1, r4
ldr r2, _08084260
mov r0, sp
bl CpuSet
ldr r0, _08084264
ldr r2, [r0, #4]
ldr r0, [r2, #4]
ldr r1, [r5]
adds r1, r1, r4
ldrb r3, [r2]
lsls r2, r3, #1
adds r2, r2, r3
lsls r2, r2, #1
movs r3, #0x80
lsls r3, r3, #0x13
orrs r2, r3
bl CpuSet
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0808425C: .4byte 0x03005AEC
_08084260: .4byte 0x05000180
_08084264: .4byte 0x02036FB8
thumb_func_end LoadEventObjTemplatesFromHeader
thumb_func_start LoadSaveblockEventObjScripts
LoadSaveblockEventObjScripts: @ 0x08084268
push {lr}
ldr r0, _08084290
ldr r1, [r0, #4]
ldr r0, _08084294
ldr r0, [r0]
ldr r2, [r1, #4]
movs r3, #0xc7
lsls r3, r3, #4
adds r1, r0, r3
movs r3, #0x3f
_0808427C:
ldr r0, [r2, #0x10]
str r0, [r1, #0x10]
adds r2, #0x18
adds r1, #0x18
subs r3, #1
cmp r3, #0
bge _0808427C
pop {r0}
bx r0
.align 2, 0
_08084290: .4byte 0x02036FB8
_08084294: .4byte 0x03005AEC
thumb_func_end LoadSaveblockEventObjScripts
thumb_func_start Overworld_SetEventObjTemplateCoords
Overworld_SetEventObjTemplateCoords: @ 0x08084298
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
ldr r0, _080842C0
ldr r0, [r0]
movs r1, #0
movs r6, #0xc7
lsls r6, r6, #4
adds r3, r0, r6
_080842B2:
ldrb r0, [r3]
cmp r0, r5
bne _080842C4
strh r4, [r3, #4]
strh r2, [r3, #6]
b _080842CC
.align 2, 0
_080842C0: .4byte 0x03005AEC
_080842C4:
adds r3, #0x18
adds r1, #1
cmp r1, #0x3f
ble _080842B2
_080842CC:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end Overworld_SetEventObjTemplateCoords
thumb_func_start Overworld_SetEventObjTemplateMovementType
Overworld_SetEventObjTemplateMovementType: @ 0x080842D4
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldr r0, _080842F4
ldr r0, [r0]
movs r3, #0
movs r5, #0xc7
lsls r5, r5, #4
adds r2, r0, r5
_080842EA:
ldrb r0, [r2]
cmp r0, r4
bne _080842F8
strb r1, [r2, #9]
b _08084300
.align 2, 0
_080842F4: .4byte 0x03005AEC
_080842F8:
adds r2, #0x18
adds r3, #1
cmp r3, #0x3f
ble _080842EA
_08084300:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_end Overworld_SetEventObjTemplateMovementType
thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw
mapdata_load_assets_to_gpu_and_full_redraw: @ 0x08084308
push {r4, lr}
bl move_tilemap_camera_to_upper_left_corner
ldr r4, _0808432C
ldr r0, [r4]
bl copy_map_tileset1_tileset2_to_vram
ldr r0, [r4]
bl apply_map_tileset1_tileset2_palette
bl DrawWholeMapView
bl InitTilesetAnimations
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0808432C: .4byte 0x02036FB8
thumb_func_end mapdata_load_assets_to_gpu_and_full_redraw
thumb_func_start GetMapLayout
GetMapLayout: @ 0x08084330
push {lr}
ldr r0, _08084340
ldr r0, [r0]
ldrh r1, [r0, #0x32]
cmp r1, #0
bne _08084344
movs r0, #0
b _0808434E
.align 2, 0
_08084340: .4byte 0x03005AEC
_08084344:
ldr r0, _08084354
subs r1, #1
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, [r1]
_0808434E:
pop {r1}
bx r1
.align 2, 0
_08084354: .4byte 0x0845A1F4
thumb_func_end GetMapLayout
thumb_func_start ApplyCurrentWarp
ApplyCurrentWarp: @ 0x08084358
ldr r3, _08084384
ldr r0, _08084388
ldr r2, [r0]
ldr r0, [r2, #4]
ldr r1, [r2, #8]
str r0, [r3]
str r1, [r3, #4]
ldr r0, _0808438C
ldr r1, [r0, #4]
ldr r0, [r0]
str r0, [r2, #4]
str r1, [r2, #8]
ldr r2, _08084390
ldr r0, _08084394
ldr r1, [r0, #4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, #4]
ldr r2, _08084398
str r0, [r2]
str r1, [r2, #4]
bx lr
.align 2, 0
_08084384: .4byte 0x02031F7C
_08084388: .4byte 0x03005AEC
_0808438C: .4byte 0x02031F84
_08084390: .4byte 0x02031F8C
_08084394: .4byte 0x0830FC88
_08084398: .4byte 0x02031F94
thumb_func_end ApplyCurrentWarp
thumb_func_start SetWarpData
SetWarpData: @ 0x0808439C
push {r4, r5, lr}
ldr r4, [sp, #0xc]
ldr r5, [sp, #0x10]
strb r1, [r0]
strb r2, [r0, #1]
strb r3, [r0, #2]
lsls r4, r4, #0x18
asrs r4, r4, #0x18
strh r4, [r0, #4]
lsls r5, r5, #0x18
asrs r5, r5, #0x18
strh r5, [r0, #6]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_end SetWarpData
thumb_func_start IsDummyWarp
IsDummyWarp: @ 0x080843BC
push {lr}
adds r1, r0, #0
movs r2, #0
ldrsb r2, [r1, r2]
movs r0, #1
rsbs r0, r0, #0
cmp r2, r0
bne _080843F0
movs r0, #1
ldrsb r0, [r1, r0]
cmp r0, r2
bne _080843F0
movs r2, #2
ldrsb r2, [r1, r2]
cmp r2, r0
bne _080843F0
movs r0, #4
ldrsh r3, [r1, r0]
cmp r3, r2
bne _080843F0
movs r2, #6
ldrsh r0, [r1, r2]
cmp r0, r3
bne _080843F0
movs r0, #1
b _080843F2
_080843F0:
movs r0, #0
_080843F2:
pop {r1}
bx r1
.align 2, 0
thumb_func_end IsDummyWarp
thumb_func_start Overworld_GetMapHeaderByGroupAndId
Overworld_GetMapHeaderByGroupAndId: @ 0x080843F8
lsls r0, r0, #0x10
lsls r1, r1, #0x10
ldr r2, _0808440C
lsrs r0, r0, #0xe
adds r0, r0, r2
ldr r0, [r0]
lsrs r1, r1, #0xe
adds r1, r1, r0
ldr r0, [r1]
bx lr
.align 2, 0
_0808440C: .4byte 0x0845E998
thumb_func_end Overworld_GetMapHeaderByGroupAndId
thumb_func_start GetDestinationWarpMapHeader
GetDestinationWarpMapHeader: @ 0x08084410
push {lr}
ldr r1, _08084430
movs r0, #0
ldrsb r0, [r1, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
pop {r1}
bx r1
.align 2, 0
_08084430: .4byte 0x02031F84
thumb_func_end GetDestinationWarpMapHeader
thumb_func_start LoadCurrentMapData
LoadCurrentMapData: @ 0x08084434
push {r4, r5, r6, lr}
ldr r1, _08084478
ldr r4, _0808447C
ldrb r0, [r4, #0x14]
strh r0, [r1]
ldr r5, _08084480
ldr r1, [r5]
movs r0, #4
ldrsb r0, [r1, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #5]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
adds r1, r4, #0
ldm r0!, {r2, r3, r6}
stm r1!, {r2, r3, r6}
ldm r0!, {r2, r3, r6}
stm r1!, {r2, r3, r6}
ldr r0, [r0]
str r0, [r1]
ldr r1, [r5]
ldrh r0, [r4, #0x12]
strh r0, [r1, #0x32]
bl GetMapLayout
str r0, [r4]
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08084478: .4byte 0x02031F9C
_0808447C: .4byte 0x02036FB8
_08084480: .4byte 0x03005AEC
thumb_func_end LoadCurrentMapData
thumb_func_start LoadSaveblockMapHeader
LoadSaveblockMapHeader: @ 0x08084484
push {r4, r5, lr}
ldr r4, _080844BC
ldr r0, _080844C0
ldr r1, [r0]
movs r0, #4
ldrsb r0, [r1, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #5]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
adds r1, r4, #0
ldm r0!, {r2, r3, r5}
stm r1!, {r2, r3, r5}
ldm r0!, {r2, r3, r5}
stm r1!, {r2, r3, r5}
ldr r0, [r0]
str r0, [r1]
bl GetMapLayout
str r0, [r4]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080844BC: .4byte 0x02036FB8
_080844C0: .4byte 0x03005AEC
thumb_func_end LoadSaveblockMapHeader
thumb_func_start SetPlayerCoordsFromWarp
SetPlayerCoordsFromWarp: @ 0x080844C4
push {r4, r5, lr}
ldr r0, _080844F4
ldr r2, [r0]
movs r1, #6
ldrsb r1, [r2, r1]
adds r4, r0, #0
cmp r1, #0
blt _080844FC
ldr r3, _080844F8
ldr r0, [r3, #4]
ldrb r5, [r0, #1]
cmp r1, r5
bge _080844FC
ldr r0, [r0, #8]
lsls r1, r1, #3
adds r0, r1, r0
ldrh r0, [r0]
strh r0, [r2]
ldr r0, [r3, #4]
ldr r0, [r0, #8]
adds r1, r1, r0
ldrh r0, [r1, #2]
strh r0, [r2, #2]
b _08084534
.align 2, 0
_080844F4: .4byte 0x03005AEC
_080844F8: .4byte 0x02036FB8
_080844FC:
ldr r1, [r4]
ldrh r3, [r1, #8]
movs r2, #8
ldrsh r0, [r1, r2]
cmp r0, #0
blt _08084518
ldrh r2, [r1, #0xa]
movs r5, #0xa
ldrsh r0, [r1, r5]
cmp r0, #0
blt _08084518
strh r3, [r1]
strh r2, [r1, #2]
b _08084534
_08084518:
ldr r3, [r4]
ldr r2, _0808453C
ldr r0, [r2]
ldr r0, [r0]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r3]
ldr r0, [r2]
ldr r0, [r0, #4]
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r3, #2]
_08084534:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0808453C: .4byte 0x02036FB8
thumb_func_end SetPlayerCoordsFromWarp
thumb_func_start WarpIntoMap
WarpIntoMap: @ 0x08084540
push {lr}
bl ApplyCurrentWarp
bl LoadCurrentMapData
bl SetPlayerCoordsFromWarp
pop {r0}
bx r0
.align 2, 0
thumb_func_end WarpIntoMap
thumb_func_start SetWarpDestination
SetWarpDestination: @ 0x08084554
push {r4, r5, r6, lr}
sub sp, #8
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
ldr r1, [sp, #0x18]
ldr r0, _0808458C
lsls r4, r4, #0x18
asrs r4, r4, #0x18
lsls r5, r5, #0x18
asrs r5, r5, #0x18
lsls r6, r6, #0x18
asrs r6, r6, #0x18
lsls r3, r3, #0x18
asrs r3, r3, #0x18
str r3, [sp]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
str r1, [sp, #4]
adds r1, r4, #0
adds r2, r5, #0
adds r3, r6, #0
bl SetWarpData
add sp, #8
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0808458C: .4byte 0x02031F84
thumb_func_end SetWarpDestination
thumb_func_start SetWarpDestinationToMapWarp
SetWarpDestinationToMapWarp: @ 0x08084590
push {lr}
sub sp, #4
lsls r0, r0, #0x18
asrs r0, r0, #0x18
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r2, r2, #0x18
asrs r2, r2, #0x18
movs r3, #1
rsbs r3, r3, #0
str r3, [sp]
bl SetWarpDestination
add sp, #4
pop {r0}
bx r0
thumb_func_end SetWarpDestinationToMapWarp
thumb_func_start SetDynamicWarp
SetDynamicWarp: @ 0x080845B0
push {r4, r5, lr}
sub sp, #8
ldr r0, _080845E0
ldr r5, [r0]
adds r0, r5, #0
adds r0, #0x14
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r2, r2, #0x18
asrs r2, r2, #0x18
lsls r3, r3, #0x18
asrs r3, r3, #0x18
movs r4, #0
ldrsb r4, [r5, r4]
str r4, [sp]
movs r4, #2
ldrsb r4, [r5, r4]
str r4, [sp, #4]
bl SetWarpData
add sp, #8
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080845E0: .4byte 0x03005AEC
thumb_func_end SetDynamicWarp
thumb_func_start SetDynamicWarpWithCoords
SetDynamicWarpWithCoords: @ 0x080845E4
push {r4, r5, lr}
sub sp, #8
ldr r4, [sp, #0x14]
ldr r5, [sp, #0x18]
ldr r0, _08084618
ldr r0, [r0]
adds r0, #0x14
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r2, r2, #0x18
asrs r2, r2, #0x18
lsls r3, r3, #0x18
asrs r3, r3, #0x18
lsls r4, r4, #0x18
asrs r4, r4, #0x18
str r4, [sp]
lsls r5, r5, #0x18
asrs r5, r5, #0x18
str r5, [sp, #4]
bl SetWarpData
add sp, #8
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08084618: .4byte 0x03005AEC
thumb_func_end SetDynamicWarpWithCoords
thumb_func_start SetWarpDestinationToDynamicWarp
SetWarpDestinationToDynamicWarp: @ 0x0808461C
ldr r2, _0808462C
ldr r0, _08084630
ldr r0, [r0]
ldr r1, [r0, #0x18]
ldr r0, [r0, #0x14]
str r0, [r2]
str r1, [r2, #4]
bx lr
.align 2, 0
_0808462C: .4byte 0x02031F84
_08084630: .4byte 0x03005AEC
thumb_func_end SetWarpDestinationToDynamicWarp
thumb_func_start SetWarpDestinationToHealLocation
SetWarpDestinationToHealLocation: @ 0x08084634
push {r4, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl GetHealLocation
adds r4, r0, #0
cmp r4, #0
beq _08084662
movs r0, #0
ldrsb r0, [r4, r0]
movs r1, #1
ldrsb r1, [r4, r1]
movs r2, #1
rsbs r2, r2, #0
movs r3, #2
ldrsb r3, [r4, r3]
ldrb r4, [r4, #4]
lsls r4, r4, #0x18
asrs r4, r4, #0x18
str r4, [sp]
bl SetWarpDestination
_08084662:
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end SetWarpDestinationToHealLocation
thumb_func_start SetWarpDestinationToLastHealLocation
SetWarpDestinationToLastHealLocation: @ 0x0808466C
ldr r2, _0808467C
ldr r0, _08084680
ldr r0, [r0]
ldr r1, [r0, #0x20]
ldr r0, [r0, #0x1c]
str r0, [r2]
str r1, [r2, #4]
bx lr
.align 2, 0
_0808467C: .4byte 0x02031F84
_08084680: .4byte 0x03005AEC
thumb_func_end SetWarpDestinationToLastHealLocation
thumb_func_start SetLastHealLocationWarp
SetLastHealLocationWarp: @ 0x08084684
push {r4, r5, lr}
sub sp, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl GetHealLocation
adds r5, r0, #0
cmp r5, #0
beq _080846B8
ldr r0, _080846C0
ldr r0, [r0]
adds r0, #0x1c
movs r1, #0
ldrsb r1, [r5, r1]
movs r2, #1
ldrsb r2, [r5, r2]
movs r3, #1
rsbs r3, r3, #0
movs r4, #2
ldrsb r4, [r5, r4]
str r4, [sp]
movs r4, #4
ldrsb r4, [r5, r4]
str r4, [sp, #4]
bl SetWarpData
_080846B8:
add sp, #8
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080846C0: .4byte 0x03005AEC
thumb_func_end SetLastHealLocationWarp
thumb_func_start UpdateEscapeWarp
UpdateEscapeWarp: @ 0x080846C4
push {r4, r5, r6, r7, lr}
sub sp, #4
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
lsls r1, r1, #0x10
lsrs r7, r1, #0x10
bl GetCurrentMapType
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
ldr r1, _08084734
movs r0, #0
ldrsb r0, [r1, r0]
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
bl GetMapTypeByGroupAndId
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
adds r0, r4, #0
bl IsMapTypeOutdoors
lsls r0, r0, #0x18
cmp r0, #0
beq _0808472C
adds r0, r5, #0
bl IsMapTypeOutdoors
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _0808472C
ldr r0, _08084738
ldr r1, [r0]
movs r0, #4
ldrsb r0, [r1, r0]
ldrb r1, [r1, #5]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
movs r2, #1
rsbs r2, r2, #0
subs r3, r6, #7
lsls r3, r3, #0x18
asrs r3, r3, #0x18
subs r4, r7, #6
lsls r4, r4, #0x18
asrs r4, r4, #0x18
str r4, [sp]
bl SetEscapeWarp
_0808472C:
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08084734: .4byte 0x02031F84
_08084738: .4byte 0x03005AEC
thumb_func_end UpdateEscapeWarp
thumb_func_start SetEscapeWarp
SetEscapeWarp: @ 0x0808473C
push {r4, r5, r6, lr}
sub sp, #8
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
ldr r1, [sp, #0x18]
ldr r0, _08084778
ldr r0, [r0]
adds r0, #0x24
lsls r4, r4, #0x18
asrs r4, r4, #0x18
lsls r5, r5, #0x18
asrs r5, r5, #0x18
lsls r6, r6, #0x18
asrs r6, r6, #0x18
lsls r3, r3, #0x18
asrs r3, r3, #0x18
str r3, [sp]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
str r1, [sp, #4]
adds r1, r4, #0
adds r2, r5, #0
adds r3, r6, #0
bl SetWarpData
add sp, #8
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08084778: .4byte 0x03005AEC
thumb_func_end SetEscapeWarp
thumb_func_start SetWarpDestinationToEscapeWarp
SetWarpDestinationToEscapeWarp: @ 0x0808477C
ldr r2, _0808478C
ldr r0, _08084790
ldr r0, [r0]
ldr r1, [r0, #0x28]
ldr r0, [r0, #0x24]
str r0, [r2]
str r1, [r2, #4]
bx lr
.align 2, 0
_0808478C: .4byte 0x02031F84
_08084790: .4byte 0x03005AEC
thumb_func_end SetWarpDestinationToEscapeWarp
thumb_func_start SetFixedDiveWarp
SetFixedDiveWarp: @ 0x08084794
push {r4, r5, r6, lr}
sub sp, #8
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
ldr r1, [sp, #0x18]
ldr r0, _080847CC
lsls r4, r4, #0x18
asrs r4, r4, #0x18
lsls r5, r5, #0x18
asrs r5, r5, #0x18
lsls r6, r6, #0x18
asrs r6, r6, #0x18
lsls r3, r3, #0x18
asrs r3, r3, #0x18
str r3, [sp]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
str r1, [sp, #4]
adds r1, r4, #0
adds r2, r5, #0
adds r3, r6, #0
bl SetWarpData
add sp, #8
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080847CC: .4byte 0x02031F8C
thumb_func_end SetFixedDiveWarp
thumb_func_start SetWarpDestinationToDiveWarp
SetWarpDestinationToDiveWarp: @ 0x080847D0
ldr r2, _080847E0
ldr r0, _080847E4
ldr r1, [r0, #4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, #4]
bx lr
.align 2, 0
_080847E0: .4byte 0x02031F84
_080847E4: .4byte 0x02031F8C
thumb_func_end SetWarpDestinationToDiveWarp
thumb_func_start SetFixedHoleWarp
SetFixedHoleWarp: @ 0x080847E8
push {r4, r5, r6, lr}
sub sp, #8
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
ldr r1, [sp, #0x18]
ldr r0, _08084820
lsls r4, r4, #0x18
asrs r4, r4, #0x18
lsls r5, r5, #0x18
asrs r5, r5, #0x18
lsls r6, r6, #0x18
asrs r6, r6, #0x18
lsls r3, r3, #0x18
asrs r3, r3, #0x18
str r3, [sp]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
str r1, [sp, #4]
adds r1, r4, #0
adds r2, r5, #0
adds r3, r6, #0
bl SetWarpData
add sp, #8
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08084820: .4byte 0x02031F94
thumb_func_end SetFixedHoleWarp
thumb_func_start SetWarpDestinationToFixedHoleWarp
SetWarpDestinationToFixedHoleWarp: @ 0x08084824
push {r4, r5, r6, lr}
sub sp, #4
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
lsls r1, r1, #0x10
lsrs r6, r1, #0x10
ldr r4, _0808484C
adds r0, r4, #0
bl IsDummyWarp
cmp r0, #1
bne _08084858
ldr r2, _08084850
ldr r0, _08084854
ldr r1, [r0, #4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, #4]
b _08084872
.align 2, 0
_0808484C: .4byte 0x02031F94
_08084850: .4byte 0x02031F84
_08084854: .4byte 0x02031F7C
_08084858:
movs r0, #0
ldrsb r0, [r4, r0]
movs r1, #1
ldrsb r1, [r4, r1]
movs r2, #1
rsbs r2, r2, #0
lsls r3, r5, #0x18
asrs r3, r3, #0x18
lsls r4, r6, #0x18
asrs r4, r4, #0x18
str r4, [sp]
bl SetWarpDestination
_08084872:
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end SetWarpDestinationToFixedHoleWarp
thumb_func_start SetWarpDestinationToContinueGameWarp
SetWarpDestinationToContinueGameWarp: @ 0x0808487C
ldr r2, _0808488C
ldr r0, _08084890
ldr r0, [r0]
ldr r1, [r0, #0x10]
ldr r0, [r0, #0xc]
str r0, [r2]
str r1, [r2, #4]
bx lr
.align 2, 0
_0808488C: .4byte 0x02031F84
_08084890: .4byte 0x03005AEC
thumb_func_end SetWarpDestinationToContinueGameWarp
thumb_func_start SetContinueGameWarp
SetContinueGameWarp: @ 0x08084894
push {r4, r5, r6, lr}
sub sp, #8
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
ldr r1, [sp, #0x18]
ldr r0, _080848D0
ldr r0, [r0]
adds r0, #0xc
lsls r4, r4, #0x18
asrs r4, r4, #0x18
lsls r5, r5, #0x18
asrs r5, r5, #0x18
lsls r6, r6, #0x18
asrs r6, r6, #0x18
lsls r3, r3, #0x18
asrs r3, r3, #0x18
str r3, [sp]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
str r1, [sp, #4]
adds r1, r4, #0
adds r2, r5, #0
adds r3, r6, #0
bl SetWarpData
add sp, #8
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080848D0: .4byte 0x03005AEC
thumb_func_end SetContinueGameWarp
thumb_func_start SetContinueGameWarpToHealLocation
SetContinueGameWarpToHealLocation: @ 0x080848D4
push {r4, r5, lr}
sub sp, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl GetHealLocation
adds r5, r0, #0
cmp r5, #0
beq _08084908
ldr r0, _08084910
ldr r0, [r0]
adds r0, #0xc
movs r1, #0
ldrsb r1, [r5, r1]
movs r2, #1
ldrsb r2, [r5, r2]
movs r3, #1
rsbs r3, r3, #0
movs r4, #2
ldrsb r4, [r5, r4]
str r4, [sp]
movs r4, #4
ldrsb r4, [r5, r4]
str r4, [sp, #4]
bl SetWarpData
_08084908:
add sp, #8
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08084910: .4byte 0x03005AEC
thumb_func_end SetContinueGameWarpToHealLocation
thumb_func_start SetContinueGameWarpToDynamicWarp
SetContinueGameWarpToDynamicWarp: @ 0x08084914
ldr r0, _08084924
ldr r2, [r0]
ldr r0, [r2, #0x14]
ldr r1, [r2, #0x18]
str r0, [r2, #0xc]
str r1, [r2, #0x10]
bx lr
.align 2, 0
_08084924: .4byte 0x03005AEC
thumb_func_end SetContinueGameWarpToDynamicWarp
thumb_func_start GetMapConnection
GetMapConnection: @ 0x08084928
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r0, _0808493C
ldr r0, [r0, #0xc]
ldr r3, [r0]
ldr r1, [r0, #4]
cmp r1, #0
bne _08084944
b _08084958
.align 2, 0
_0808493C: .4byte 0x02036FB8
_08084940:
adds r0, r1, #0
b _0808495A
_08084944:
movs r2, #0
cmp r2, r3
bge _08084958
_0808494A:
ldrb r0, [r1]
cmp r0, r4
beq _08084940
adds r2, #1
adds r1, #0xc
cmp r2, r3
blt _0808494A
_08084958:
movs r0, #0
_0808495A:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetMapConnection
thumb_func_start SetDiveWarp
SetDiveWarp: @ 0x08084960
push {r4, r5, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
lsls r2, r2, #0x10
lsrs r5, r2, #0x10
bl GetMapConnection
adds r1, r0, #0
cmp r1, #0
beq _08084998
movs r0, #8
ldrsb r0, [r1, r0]
ldrb r1, [r1, #9]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
movs r2, #1
rsbs r2, r2, #0
lsls r3, r4, #0x18
asrs r3, r3, #0x18
lsls r4, r5, #0x18
asrs r4, r4, #0x18
str r4, [sp]
bl SetWarpDestination
b _080849B4
_08084998:
bl RunOnDiveWarpMapScript
ldr r0, _080849AC
bl IsDummyWarp
cmp r0, #0
beq _080849B0
movs r0, #0
b _080849B6
.align 2, 0
_080849AC: .4byte 0x02031F8C
_080849B0:
bl SetWarpDestinationToDiveWarp
_080849B4:
movs r0, #1
_080849B6:
add sp, #4
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_end SetDiveWarp
thumb_func_start SetDiveWarpEmerge
SetDiveWarpEmerge: @ 0x080849C0
push {lr}
adds r3, r0, #0
adds r2, r1, #0
lsls r3, r3, #0x10
lsrs r3, r3, #0x10
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
movs r0, #6
adds r1, r3, #0
bl SetDiveWarp
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
.align 2, 0
thumb_func_end SetDiveWarpEmerge
thumb_func_start SetDiveWarpDive
SetDiveWarpDive: @ 0x080849E0
push {lr}
adds r3, r0, #0
adds r2, r1, #0
lsls r3, r3, #0x10
lsrs r3, r3, #0x10
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
movs r0, #5
adds r1, r3, #0
bl SetDiveWarp
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
.align 2, 0
thumb_func_end SetDiveWarpDive
thumb_func_start LoadMapFromCameraTransition
LoadMapFromCameraTransition: @ 0x08084A00
push {r4, r5, r6, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r6, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r5, r1, #0
lsls r0, r6, #0x18
asrs r0, r0, #0x18
lsls r1, r5, #0x18
asrs r1, r1, #0x18
movs r3, #1
rsbs r3, r3, #0
str r3, [sp]
adds r2, r3, #0
bl SetWarpDestination
ldr r4, _08084AC0
ldrb r0, [r4, #0x14]
cmp r0, #0x3a
beq _08084A30
bl sub_08085178
_08084A30:
bl ApplyCurrentWarp
bl LoadCurrentMapData
bl LoadEventObjTemplatesFromHeader
bl TrySetMapSaveWarpStatus
bl ClearTempFieldEventData
bl ResetCyclingRoadChallengeData
bl RestartWildEncounterImmunitySteps
adds r0, r6, #0
adds r1, r5, #0
bl TryUpdateRandomTrainerRematches
bl DoTimeBasedEvents
bl SetSav1WeatherFromCurrMapHeader
bl ChooseAmbientCrySpecies
bl SetDefaultFlashLevel
bl Overworld_ClearSavedMusic
bl RunOnTransitionMapScript
bl InitMap
ldr r0, [r4]
bl copy_map_tileset2_to_vram_2
ldr r0, [r4]
bl apply_map_tileset2_palette
movs r4, #6
_08084A7E:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl ApplyWeatherGammaShiftToPal
adds r4, #1
cmp r4, #0xc
ble _08084A7E
bl InitSecondaryTilesetAnimation
bl UpdateLocationHistoryForRoamer
bl RoamerMove
bl DoCurrentWeather
bl ResetFieldTasksArgs
bl RunOnResumeMapScript
ldr r2, _08084AC0
ldrb r0, [r2, #0x14]
cmp r0, #0x3a
bne _08084AB4
ldr r1, _08084AC4
ldrh r1, [r1]
cmp r0, r1
beq _08084AB8
_08084AB4:
bl ShowMapNamePopup
_08084AB8:
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08084AC0: .4byte 0x02036FB8
_08084AC4: .4byte 0x02031F9C
thumb_func_end LoadMapFromCameraTransition
thumb_func_start mli0_load_map
mli0_load_map: @ 0x08084AC8
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
bl LoadCurrentMapData
ldr r0, _08084AEC
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08084B0A
ldr r0, _08084AF0
ldrh r1, [r0, #0x12]
ldr r0, _08084AF4
cmp r1, r0
bne _08084AF8
bl LoadBattlePyramidEventObjectTemplates
b _08084B0A
.align 2, 0
_08084AEC: .4byte 0x02031F78
_08084AF0: .4byte 0x02036FB8
_08084AF4: .4byte 0x00000169
_08084AF8:
bl InTrainerHill
cmp r0, #0
beq _08084B06
bl sub_081D56F0
b _08084B0A
_08084B06:
bl LoadEventObjTemplatesFromHeader
_08084B0A:
ldr r4, _08084B8C
ldrb r0, [r4, #0x17]
bl IsMapTypeOutdoors
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldrb r0, [r4, #0x17]
bl IsMapTypeIndoors
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
bl sub_080EBDB8
bl TrySetMapSaveWarpStatus
bl ClearTempFieldEventData
bl ResetCyclingRoadChallengeData
bl RestartWildEncounterImmunitySteps
ldr r0, _08084B90
ldr r1, [r0]
movs r0, #4
ldrsb r0, [r1, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #5]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl TryUpdateRandomTrainerRematches
cmp r7, #1
beq _08084B56
bl DoTimeBasedEvents
_08084B56:
bl SetSav1WeatherFromCurrMapHeader
bl ChooseAmbientCrySpecies
cmp r5, #0
beq _08084B68
ldr r0, _08084B94
bl FlagClear
_08084B68:
bl SetDefaultFlashLevel
bl Overworld_ClearSavedMusic
bl RunOnTransitionMapScript
bl UpdateLocationHistoryForRoamer
bl RoamerMoveToOtherLocationSet
ldrh r1, [r4, #0x12]
ldr r0, _08084B98
cmp r1, r0
bne _08084B9C
movs r0, #0
bl InitBattlePyramidMap
b _08084BAE
.align 2, 0
_08084B8C: .4byte 0x02036FB8
_08084B90: .4byte 0x03005AEC
_08084B94: .4byte 0x00000888
_08084B98: .4byte 0x00000169
_08084B9C:
bl InTrainerHill
cmp r0, #0
beq _08084BAA
bl InitTrainerHillMap
b _08084BAE
_08084BAA:
bl InitMap
_08084BAE:
cmp r7, #1
beq _08084BC6
cmp r6, #0
beq _08084BC6
ldr r1, _08084BCC
ldr r0, [r1]
ldr r1, [r1, #4]
bl UpdateTVScreensOnMap
movs r0, #1
bl InitSecretBaseAppearance
_08084BC6:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08084BCC: .4byte 0x03005B20
thumb_func_end mli0_load_map
thumb_func_start ResetInitialPlayerAvatarState
ResetInitialPlayerAvatarState: @ 0x08084BD0
ldr r1, _08084BDC
movs r0, #1
strb r0, [r1, #1]
strb r0, [r1]
bx lr
.align 2, 0
_08084BDC: .4byte 0x02031FA0
thumb_func_end ResetInitialPlayerAvatarState
thumb_func_start StoreInitialPlayerAvatarState
StoreInitialPlayerAvatarState: @ 0x08084BE0
push {r4, lr}
bl GetPlayerFacingDirection
ldr r4, _08084BFC
strb r0, [r4, #1]
movs r0, #2
bl TestPlayerAvatarFlags
lsls r0, r0, #0x18
cmp r0, #0
beq _08084C00
movs r0, #2
b _08084C32
.align 2, 0
_08084BFC: .4byte 0x02031FA0
_08084C00:
movs r0, #4
bl TestPlayerAvatarFlags
lsls r0, r0, #0x18
cmp r0, #0
beq _08084C10
movs r0, #4
b _08084C32
_08084C10:
movs r0, #8
bl TestPlayerAvatarFlags
lsls r0, r0, #0x18
cmp r0, #0
beq _08084C20
movs r0, #8
b _08084C32
_08084C20:
movs r0, #0x10
bl TestPlayerAvatarFlags
lsls r0, r0, #0x18
cmp r0, #0
beq _08084C30
movs r0, #0x10
b _08084C32
_08084C30:
movs r0, #1
_08084C32:
strb r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end StoreInitialPlayerAvatarState
thumb_func_start GetInitialPlayerAvatarState
GetInitialPlayerAvatarState: @ 0x08084C3C
push {r4, r5, r6, r7, lr}
bl GetCurrentMapType
adds r5, r0, #0
lsls r5, r5, #0x18
lsrs r5, r5, #0x18
bl GetCenterScreenMetatileBehavior
adds r4, r0, #0
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
ldr r6, _08084C88
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl GetAdjustedInitialTransitionFlags
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldr r0, _08084C8C
ands r7, r0
orrs r7, r1
adds r0, r6, #0
adds r2, r4, #0
adds r3, r5, #0
bl GetAdjustedInitialDirection
lsls r0, r0, #0x18
lsrs r0, r0, #0x10
ldr r1, _08084C90
ands r7, r1
orrs r7, r0
str r7, [r6]
adds r0, r6, #0
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_08084C88: .4byte 0x02031FA0
_08084C8C: .4byte 0xFFFFFF00
_08084C90: .4byte 0xFFFF00FF
thumb_func_end GetInitialPlayerAvatarState
thumb_func_start GetAdjustedInitialTransitionFlags
GetAdjustedInitialTransitionFlags: @ 0x08084C94
push {r4, r5, r6, lr}
adds r6, r0, #0
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
lsls r2, r2, #0x18
lsrs r4, r2, #0x18
cmp r4, #8
beq _08084CB0
ldr r0, _08084CB8
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
bne _08084CEA
_08084CB0:
cmp r4, #5
bne _08084CBC
movs r0, #0x10
b _08084CEC
.align 2, 0
_08084CB8: .4byte 0x0000088D
_08084CBC:
lsls r0, r5, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsSurfableWaterOrUnderwater
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08084CD0
movs r0, #8
b _08084CEC
_08084CD0:
bl Overworld_IsBikingAllowed
cmp r0, #1
bne _08084CEA
ldrb r0, [r6]
cmp r0, #2
bne _08084CE2
movs r0, #2
b _08084CEC
_08084CE2:
cmp r0, #4
bne _08084CEA
movs r0, #4
b _08084CEC
_08084CEA:
movs r0, #1
_08084CEC:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetAdjustedInitialTransitionFlags
thumb_func_start GetAdjustedInitialDirection
GetAdjustedInitialDirection: @ 0x08084CF4
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
lsls r1, r1, #0x18
lsrs r7, r1, #0x18
lsls r2, r2, #0x10
lsrs r4, r2, #0x10
lsls r3, r3, #0x18
lsrs r5, r3, #0x18
ldr r0, _08084D54
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _08084D14
cmp r5, #6
beq _08084D74
_08084D14:
lsls r4, r4, #0x18
lsrs r5, r4, #0x18
adds r0, r5, #0
bl MetatileBehavior_IsDeepSouthWarp
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08084D50
adds r0, r5, #0
bl MetatileBehavior_IsNonAnimDoor
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08084DAA
adds r0, r5, #0
bl MetatileBehavior_IsDoor
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08084DAA
adds r0, r5, #0
bl MetatileBehavior_IsSouthArrowWarp
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08084D58
_08084D50:
movs r0, #2
b _08084DB0
.align 2, 0
_08084D54: .4byte 0x0000088D
_08084D58:
adds r0, r5, #0
bl MetatileBehavior_IsNorthArrowWarp
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08084DAA
adds r0, r5, #0
bl MetatileBehavior_IsWestArrowWarp
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08084D78
_08084D74:
movs r0, #4
b _08084DB0
_08084D78:
adds r0, r5, #0
bl MetatileBehavior_IsEastArrowWarp
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08084D8A
movs r0, #3
b _08084DB0
_08084D8A:
ldrb r0, [r6]
cmp r0, #0x10
bne _08084D94
cmp r7, #8
beq _08084DAE
_08084D94:
cmp r0, #8
bne _08084D9C
cmp r7, #0x10
beq _08084DAE
_08084D9C:
lsrs r0, r4, #0x18
bl MetatileBehavior_IsLadder
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08084DAE
_08084DAA:
movs r0, #1
b _08084DB0
_08084DAE:
ldrb r0, [r6, #1]
_08084DB0:
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetAdjustedInitialDirection
thumb_func_start GetCenterScreenMetatileBehavior
GetCenterScreenMetatileBehavior: @ 0x08084DB8
push {lr}
ldr r0, _08084DD8
ldr r1, [r0]
movs r2, #0
ldrsh r0, [r1, r2]
adds r0, #7
movs r2, #2
ldrsh r1, [r1, r2]
adds r1, #7
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
pop {r1}
bx r1
.align 2, 0
_08084DD8: .4byte 0x03005AEC
thumb_func_end GetCenterScreenMetatileBehavior
thumb_func_start Overworld_IsBikingAllowed
Overworld_IsBikingAllowed: @ 0x08084DDC
push {lr}
ldr r0, _08084DF0
ldrb r1, [r0, #0x1a]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08084DF4
movs r0, #1
b _08084DF6
.align 2, 0
_08084DF0: .4byte 0x02036FB8
_08084DF4:
movs r0, #0
_08084DF6:
pop {r1}
bx r1
.align 2, 0
thumb_func_end Overworld_IsBikingAllowed
thumb_func_start SetDefaultFlashLevel
SetDefaultFlashLevel: @ 0x08084DFC
push {lr}
ldr r0, _08084E10
ldrb r1, [r0, #0x15]
cmp r1, #0
bne _08084E18
ldr r0, _08084E14
ldr r0, [r0]
adds r0, #0x30
strb r1, [r0]
b _08084E46
.align 2, 0
_08084E10: .4byte 0x02036FB8
_08084E14: .4byte 0x03005AEC
_08084E18:
ldr r0, _08084E30
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _08084E38
ldr r0, _08084E34
ldr r0, [r0]
adds r0, #0x30
movs r1, #1
strb r1, [r0]
b _08084E46
.align 2, 0
_08084E30: .4byte 0x00000888
_08084E34: .4byte 0x03005AEC
_08084E38:
ldr r0, _08084E4C
ldr r1, [r0]
ldr r0, _08084E50
ldr r0, [r0]
subs r0, #1
adds r1, #0x30
strb r0, [r1]
_08084E46:
pop {r0}
bx r0
.align 2, 0
_08084E4C: .4byte 0x03005AEC
_08084E50: .4byte 0x0852AB14
thumb_func_end SetDefaultFlashLevel
thumb_func_start Overworld_SetFlashLevel
Overworld_SetFlashLevel: @ 0x08084E54
push {lr}
adds r1, r0, #0
cmp r1, #0
blt _08084E64
ldr r0, _08084E74
ldr r0, [r0]
cmp r1, r0
ble _08084E66
_08084E64:
movs r1, #0
_08084E66:
ldr r0, _08084E78
ldr r0, [r0]
adds r0, #0x30
strb r1, [r0]
pop {r0}
bx r0
.align 2, 0
_08084E74: .4byte 0x0852AB14
_08084E78: .4byte 0x03005AEC
thumb_func_end Overworld_SetFlashLevel
thumb_func_start Overworld_GetFlashLevel
Overworld_GetFlashLevel: @ 0x08084E7C
ldr r0, _08084E88
ldr r0, [r0]
adds r0, #0x30
ldrb r0, [r0]
bx lr
.align 2, 0
_08084E88: .4byte 0x03005AEC
thumb_func_end Overworld_GetFlashLevel
thumb_func_start SetCurrentMapLayout
SetCurrentMapLayout: @ 0x08084E8C
push {lr}
ldr r1, _08084EA0
ldr r1, [r1]
strh r0, [r1, #0x32]
bl GetMapLayout
ldr r1, _08084EA4
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08084EA0: .4byte 0x03005AEC
_08084EA4: .4byte 0x02036FB8
thumb_func_end SetCurrentMapLayout
thumb_func_start sub_08084EA8
sub_08084EA8: @ 0x08084EA8
ldr r1, _08084EB0
strb r0, [r1]
bx lr
.align 2, 0
_08084EB0: .4byte 0x02031F78
thumb_func_end sub_08084EA8
thumb_func_start sub_08084EB4
sub_08084EB4: @ 0x08084EB4
ldr r0, _08084EBC
ldrb r0, [r0]
bx lr
.align 2, 0
_08084EBC: .4byte 0x02031F78
thumb_func_end sub_08084EB4
thumb_func_start ShouldLegendaryMusicPlayAtLocation
ShouldLegendaryMusicPlayAtLocation: @ 0x08084EC0
push {r4, lr}
adds r4, r0, #0
ldr r0, _08084F0C
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _08084F14
movs r0, #0
ldrsb r0, [r4, r0]
cmp r0, #0
bne _08084F14
movs r0, #1
ldrsb r0, [r4, r0]
cmp r0, #5
blt _08084EEC
cmp r0, #8
ble _08084F06
cmp r0, #0x2b
bgt _08084EEC
cmp r0, #0x27
bge _08084F06
_08084EEC:
ldr r0, _08084F10
bl VarGet
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #3
bls _08084F14
movs r0, #1
ldrsb r0, [r4, r0]
cmp r0, #0x2e
bgt _08084F14
cmp r0, #0x2c
blt _08084F14
_08084F06:
movs r0, #1
b _08084F16
.align 2, 0
_08084F0C: .4byte 0x0000088A
_08084F10: .4byte 0x0000405E
_08084F14:
movs r0, #0
_08084F16:
pop {r4}
pop {r1}
bx r1
thumb_func_end ShouldLegendaryMusicPlayAtLocation
thumb_func_start NoMusicInSotopolisWithLegendaries
NoMusicInSotopolisWithLegendaries: @ 0x08084F1C
push {r4, lr}
adds r4, r0, #0
ldr r0, _08084F44
bl VarGet
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bne _08084F3E
movs r0, #0
ldrsb r0, [r4, r0]
cmp r0, #0
bne _08084F3E
movs r0, #1
ldrsb r0, [r4, r0]
cmp r0, #7
beq _08084F48
_08084F3E:
movs r0, #0
b _08084F4A
.align 2, 0
_08084F44: .4byte 0x000040CA
_08084F48:
movs r0, #1
_08084F4A:
pop {r4}
pop {r1}
bx r1
thumb_func_end NoMusicInSotopolisWithLegendaries
thumb_func_start IsInfiltratedWeatherInstitute
IsInfiltratedWeatherInstitute: @ 0x08084F50
push {r4, lr}
adds r4, r0, #0
ldr r0, _08084F74
bl VarGet
lsls r0, r0, #0x10
cmp r0, #0
bne _08084F6E
movs r0, #0
ldrsb r0, [r4, r0]
cmp r0, #0x20
bne _08084F6E
ldrb r0, [r4, #1]
cmp r0, #1
bls _08084F78
_08084F6E:
movs r0, #0
b _08084F7A
.align 2, 0
_08084F74: .4byte 0x000040B3
_08084F78:
movs r0, #1
_08084F7A:
pop {r4}
pop {r1}
bx r1
thumb_func_end IsInfiltratedWeatherInstitute
thumb_func_start IsInflitratedSpaceCenter
IsInflitratedSpaceCenter: @ 0x08084F80
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _08084FB8
adds r0, r4, #0
bl VarGet
lsls r0, r0, #0x10
cmp r0, #0
beq _08084FB4
adds r0, r4, #0
bl VarGet
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bhi _08084FB4
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, #0xe
bne _08084FB4
ldrb r0, [r5, #1]
subs r0, #9
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _08084FBC
_08084FB4:
movs r0, #0
b _08084FBE
.align 2, 0
_08084FB8: .4byte 0x0000405D
_08084FBC:
movs r0, #1
_08084FBE:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end IsInflitratedSpaceCenter
thumb_func_start GetLocationMusic
GetLocationMusic: @ 0x08084FC4
push {r4, lr}
adds r4, r0, #0
bl NoMusicInSotopolisWithLegendaries
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bne _08084FDC
ldr r0, _08084FD8
b _08085036
.align 2, 0
_08084FD8: .4byte 0x0000FFFF
_08084FDC:
adds r0, r4, #0
bl ShouldLegendaryMusicPlayAtLocation
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bne _08084FF4
ldr r0, _08084FF0
b _08085036
.align 2, 0
_08084FF0: .4byte 0x000001BB
_08084FF4:
adds r0, r4, #0
bl IsInflitratedSpaceCenter
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bne _0808500C
ldr r0, _08085008
b _08085036
.align 2, 0
_08085008: .4byte 0x000001B9
_0808500C:
adds r0, r4, #0
bl IsInfiltratedWeatherInstitute
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
beq _08085032
movs r0, #0
ldrsb r0, [r4, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #1
ldrsb r1, [r4, r1]
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
ldrh r0, [r0, #0x10]
b _08085036
_08085032:
movs r0, #0xcb
lsls r0, r0, #1
_08085036:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetLocationMusic
thumb_func_start GetCurrLocationDefaultMusic
GetCurrLocationDefaultMusic: @ 0x0808503C
push {r4, lr}
ldr r0, _0808505C
ldr r0, [r0]
ldrh r1, [r0, #4]
movs r0, #0xd0
lsls r0, r0, #5
cmp r1, r0
bne _08085064
bl GetSav1Weather
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #8
bne _08085064
ldr r0, _08085060
b _08085098
.align 2, 0
_0808505C: .4byte 0x03005AEC
_08085060: .4byte 0x00000199
_08085064:
ldr r4, _0808507C
ldr r0, [r4]
adds r0, #4
bl GetLocationMusic
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
ldr r0, _08085080
cmp r1, r0
beq _08085084
adds r0, r1, #0
b _08085098
.align 2, 0
_0808507C: .4byte 0x03005AEC
_08085080: .4byte 0x00007FFF
_08085084:
ldr r0, [r4]
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0x17
ble _08085094
movs r0, #0xc9
lsls r0, r0, #1
b _08085098
_08085094:
movs r0, #0xb4
lsls r0, r0, #1
_08085098:
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetCurrLocationDefaultMusic
thumb_func_start GetWarpDestinationMusic
GetWarpDestinationMusic: @ 0x080850A0
push {lr}
ldr r0, _080850B8
bl GetLocationMusic
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
ldr r0, _080850BC
cmp r1, r0
beq _080850C0
adds r0, r1, #0
b _080850DC
.align 2, 0
_080850B8: .4byte 0x02031F84
_080850BC: .4byte 0x00007FFF
_080850C0:
ldr r0, _080850D4
ldr r0, [r0]
ldrh r1, [r0, #4]
movs r0, #0x80
lsls r0, r0, #2
cmp r1, r0
beq _080850D8
subs r0, #0x6e
b _080850DC
.align 2, 0
_080850D4: .4byte 0x03005AEC
_080850D8:
movs r0, #0xb4
lsls r0, r0, #1
_080850DC:
pop {r1}
bx r1
thumb_func_end GetWarpDestinationMusic
thumb_func_start Overworld_ResetMapMusic
Overworld_ResetMapMusic: @ 0x080850E0
push {lr}
bl ResetMapMusic
pop {r0}
bx r0
.align 2, 0
thumb_func_end Overworld_ResetMapMusic
thumb_func_start Overworld_PlaySpecialMapMusic
Overworld_PlaySpecialMapMusic: @ 0x080850EC
push {r4, lr}
bl GetCurrLocationDefaultMusic
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldr r0, _08085110
cmp r4, r0
beq _0808513E
ldr r0, _08085114
cmp r4, r0
beq _0808513E
ldr r0, _08085118
ldr r1, [r0]
ldrh r0, [r1, #0x2c]
cmp r0, #0
beq _0808511C
adds r4, r0, #0
b _0808513E
.align 2, 0
_08085110: .4byte 0x000001BB
_08085114: .4byte 0x0000FFFF
_08085118: .4byte 0x03005AEC
_0808511C:
bl GetCurrentMapType
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #5
bne _08085130
ldr r4, _0808512C
b _0808513E
.align 2, 0
_0808512C: .4byte 0x0000019B
_08085130:
movs r0, #8
bl TestPlayerAvatarFlags
lsls r0, r0, #0x18
cmp r0, #0
beq _0808513E
ldr r4, _08085158
_0808513E:
bl GetCurrentMapMusic
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r4, r0
beq _08085150
adds r0, r4, #0
bl PlayNewMapMusic
_08085150:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085158: .4byte 0x0000016D
thumb_func_end Overworld_PlaySpecialMapMusic
thumb_func_start Overworld_SetSavedMusic
Overworld_SetSavedMusic: @ 0x0808515C
ldr r1, _08085164
ldr r1, [r1]
strh r0, [r1, #0x2c]
bx lr
.align 2, 0
_08085164: .4byte 0x03005AEC
thumb_func_end Overworld_SetSavedMusic
thumb_func_start Overworld_ClearSavedMusic
Overworld_ClearSavedMusic: @ 0x08085168
ldr r0, _08085174
ldr r1, [r0]
movs r0, #0
strh r0, [r1, #0x2c]
bx lr
.align 2, 0
_08085174: .4byte 0x03005AEC
thumb_func_end Overworld_ClearSavedMusic
thumb_func_start sub_08085178
sub_08085178: @ 0x08085178
push {r4, r5, r6, lr}
ldr r0, _080851DC
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _080851F8
bl GetWarpDestinationMusic
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
bl GetCurrentMapMusic
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
ldr r0, _080851E0
cmp r4, r0
beq _080851BE
ldr r0, _080851E4
cmp r4, r0
beq _080851BE
ldr r0, _080851E8
cmp r5, r0
beq _080851F8
ldr r6, _080851EC
cmp r5, r6
beq _080851F8
movs r0, #8
bl TestPlayerAvatarFlags
lsls r0, r0, #0x18
cmp r0, #0
beq _080851BE
adds r4, r6, #0
_080851BE:
cmp r4, r5
beq _080851F8
movs r0, #6
bl TestPlayerAvatarFlags
lsls r0, r0, #0x18
cmp r0, #0
beq _080851F0
adds r0, r4, #0
movs r1, #4
movs r2, #4
bl FadeOutAndFadeInNewMapMusic
b _080851F8
.align 2, 0
_080851DC: .4byte 0x00004001
_080851E0: .4byte 0x000001BB
_080851E4: .4byte 0x0000FFFF
_080851E8: .4byte 0x0000019B
_080851EC: .4byte 0x0000016D
_080851F0:
adds r0, r4, #0
movs r1, #8
bl FadeOutAndPlayNewMapMusic
_080851F8:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08085178
thumb_func_start Overworld_ChangeMusicToDefault
Overworld_ChangeMusicToDefault: @ 0x08085200
push {r4, lr}
bl GetCurrentMapMusic
adds r4, r0, #0
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
bl GetCurrLocationDefaultMusic
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r4, r0
beq _08085226
bl GetCurrLocationDefaultMusic
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #8
bl FadeOutAndPlayNewMapMusic
_08085226:
pop {r4}
pop {r0}
bx r0
thumb_func_end Overworld_ChangeMusicToDefault
thumb_func_start Overworld_ChangeMusicTo
Overworld_ChangeMusicTo: @ 0x0808522C
push {r4, lr}
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
bl GetCurrentMapMusic
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, r4
beq _0808524C
ldr r0, _08085254
cmp r1, r0
beq _0808524C
adds r0, r4, #0
movs r1, #8
bl FadeOutAndPlayNewMapMusic
_0808524C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085254: .4byte 0x000001BB
thumb_func_end Overworld_ChangeMusicTo
thumb_func_start GetMapMusicFadeoutSpeed
GetMapMusicFadeoutSpeed: @ 0x08085258
push {lr}
bl GetDestinationWarpMapHeader
ldrb r0, [r0, #0x17]
bl IsMapTypeIndoors
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08085270
movs r0, #4
b _08085272
_08085270:
movs r0, #2
_08085272:
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetMapMusicFadeoutSpeed
thumb_func_start TryFadeOutOldMapMusic
TryFadeOutOldMapMusic: @ 0x08085278
push {r4, r5, lr}
bl GetCurrentMapMusic
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
bl GetWarpDestinationMusic
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldr r0, _080852EC
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _080852E6
bl GetCurrentMapMusic
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r4, r0
beq _080852E6
ldr r0, _080852F0
cmp r5, r0
bne _080852DA
ldr r0, _080852F4
bl VarGet
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bne _080852DA
ldr r0, _080852F8
ldr r0, [r0]
ldr r1, _080852FC
ldrh r2, [r0, #4]
movs r0, #0xe0
lsls r0, r0, #3
cmp r2, r0
bne _080852DA
ldr r3, _08085300
ldrh r0, [r3]
ands r1, r0
cmp r1, r2
bne _080852DA
ldr r1, [r3, #4]
ldr r0, _08085304
cmp r1, r0
beq _080852E6
_080852DA:
bl GetMapMusicFadeoutSpeed
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl FadeOutMapMusic
_080852E6:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080852EC: .4byte 0x00004001
_080852F0: .4byte 0x0000016D
_080852F4: .4byte 0x000040CA
_080852F8: .4byte 0x03005AEC
_080852FC: .4byte 0x0000FFFF
_08085300: .4byte 0x02031F84
_08085304: .4byte 0x0035001D
thumb_func_end TryFadeOutOldMapMusic
thumb_func_start BGMusicStopped
BGMusicStopped: @ 0x08085308
push {lr}
bl IsNotWaitingForBGMStop
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
.align 2, 0
thumb_func_end BGMusicStopped
thumb_func_start Overworld_FadeOutMapMusic
Overworld_FadeOutMapMusic: @ 0x08085318
push {lr}
movs r0, #4
bl FadeOutMapMusic
pop {r0}
bx r0
thumb_func_end Overworld_FadeOutMapMusic
thumb_func_start PlayAmbientCry
PlayAmbientCry: @ 0x08085324
push {r4, lr}
sub sp, #4
mov r4, sp
adds r4, #2
mov r0, sp
adds r1, r4, #0
bl PlayerGetDestCoords
ldr r0, _0808539C
ldrb r0, [r0]
cmp r0, #1
bne _08085358
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r4, r2]
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsSurfableWaterOrUnderwater
lsls r0, r0, #0x18
cmp r0, #0
beq _08085394
_08085358:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x58
bl __umodsi3
adds r4, r0, #0
adds r4, #0xd4
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x1e
bl __umodsi3
adds r2, r0, #0
adds r2, #0x32
ldr r0, _080853A0
ldrh r0, [r0]
lsls r4, r4, #0x18
asrs r4, r4, #0x18
lsls r2, r2, #0x18
asrs r2, r2, #0x18
adds r1, r4, #0
movs r3, #1
bl PlayCry2
_08085394:
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0808539C: .4byte 0x02031FA6
_080853A0: .4byte 0x02031FA4
thumb_func_end PlayAmbientCry
thumb_func_start UpdateAmbientCry
UpdateAmbientCry: @ 0x080853A4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r6, r0, #0
adds r7, r1, #0
movs r1, #0
ldrsh r0, [r6, r1]
cmp r0, #4
bhi _08085488
lsls r0, r0, #2
ldr r1, _080853C4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080853C4: .4byte 0x080853C8
_080853C8: @ jump table
.4byte _080853DC @ case 0
.4byte _080853F0 @ case 1
.4byte _0808540C @ case 2
.4byte _08085474 @ case 3
.4byte _08085488 @ case 4
_080853DC:
ldr r0, _080853E8
ldrh r0, [r0]
cmp r0, #0
bne _080853EC
movs r0, #4
b _08085486
.align 2, 0
_080853E8: .4byte 0x02031FA4
_080853EC:
movs r0, #1
b _08085486
_080853F0:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x96
lsls r1, r1, #4
bl __umodsi3
movs r1, #0x96
lsls r1, r1, #3
adds r0, r0, r1
strh r0, [r7]
movs r0, #3
b _08085486
_0808540C:
movs r0, #1
mov sb, r0
bl CalculatePlayerPartyCount
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r8, r0
movs r5, #0
b _08085424
_0808541E:
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
_08085424:
cmp r5, r8
bhs _0808544C
movs r0, #0x64
muls r0, r5, r0
ldr r4, _08085470
adds r0, r0, r4
movs r1, #6
bl GetMonData
cmp r0, #0
bne _0808541E
adds r0, r4, #0
bl GetMonAbility
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x44
bne _0808541E
movs r1, #2
mov sb, r1
_0808544C:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r4, #0x96
lsls r4, r4, #3
adds r1, r4, #0
bl __umodsi3
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r0, r0, r4
mov r1, sb
bl __divsi3
strh r0, [r7]
movs r0, #3
b _08085486
.align 2, 0
_08085470: .4byte 0x02024190
_08085474:
ldrh r0, [r7]
subs r0, #1
strh r0, [r7]
lsls r0, r0, #0x10
cmp r0, #0
bne _08085488
bl PlayAmbientCry
movs r0, #2
_08085486:
strh r0, [r6]
_08085488:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end UpdateAmbientCry
thumb_func_start ChooseAmbientCrySpecies
ChooseAmbientCrySpecies: @ 0x08085494
push {lr}
ldr r0, _080854BC
ldr r0, [r0]
ldrh r1, [r0, #4]
movs r0, #0xb4
lsls r0, r0, #6
cmp r1, r0
bne _080854C4
bl IsMirageIslandPresent
lsls r0, r0, #0x18
cmp r0, #0
bne _080854C4
ldr r1, _080854C0
movs r0, #1
strb r0, [r1]
bl GetLocalWaterMon
b _080854CA
.align 2, 0
_080854BC: .4byte 0x03005AEC
_080854C0: .4byte 0x02031FA6
_080854C4:
ldr r0, _080854D4
bl GetLocalWildMon
_080854CA:
ldr r1, _080854D8
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080854D4: .4byte 0x02031FA6
_080854D8: .4byte 0x02031FA4
thumb_func_end ChooseAmbientCrySpecies
thumb_func_start GetMapTypeByGroupAndId
GetMapTypeByGroupAndId: @ 0x080854DC
push {lr}
lsls r0, r0, #0x18
asrs r0, r0, #8
lsrs r0, r0, #0x10
lsls r1, r1, #0x18
asrs r1, r1, #8
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, #0x17]
pop {r1}
bx r1
thumb_func_end GetMapTypeByGroupAndId
thumb_func_start GetMapTypeByWarpData
GetMapTypeByWarpData: @ 0x080854F4
push {lr}
movs r2, #0
ldrsb r2, [r0, r2]
movs r1, #1
ldrsb r1, [r0, r1]
adds r0, r2, #0
bl GetMapTypeByGroupAndId
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
thumb_func_end GetMapTypeByWarpData
thumb_func_start GetCurrentMapType
GetCurrentMapType: @ 0x0808550C
push {lr}
ldr r0, _08085520
ldr r0, [r0]
adds r0, #4
bl GetMapTypeByWarpData
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
.align 2, 0
_08085520: .4byte 0x03005AEC
thumb_func_end GetCurrentMapType
thumb_func_start GetLastUsedWarpMapType
GetLastUsedWarpMapType: @ 0x08085524
push {lr}
ldr r0, _08085534
bl GetMapTypeByWarpData
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
.align 2, 0
_08085534: .4byte 0x02031F7C
thumb_func_end GetLastUsedWarpMapType
thumb_func_start IsMapTypeOutdoors
IsMapTypeOutdoors: @ 0x08085538
push {lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
beq _08085552
cmp r0, #1
beq _08085552
cmp r0, #5
beq _08085552
cmp r0, #2
beq _08085552
cmp r0, #6
bne _08085556
_08085552:
movs r0, #1
b _08085558
_08085556:
movs r0, #0
_08085558:
pop {r1}
bx r1
thumb_func_end IsMapTypeOutdoors
thumb_func_start Overworld_MapTypeAllowsTeleportAndFly
Overworld_MapTypeAllowsTeleportAndFly: @ 0x0808555C
push {lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
beq _08085572
cmp r0, #1
beq _08085572
cmp r0, #6
beq _08085572
cmp r0, #2
bne _08085576
_08085572:
movs r0, #1
b _08085578
_08085576:
movs r0, #0
_08085578:
pop {r1}
bx r1
thumb_func_end Overworld_MapTypeAllowsTeleportAndFly
thumb_func_start IsMapTypeIndoors
IsMapTypeIndoors: @ 0x0808557C
push {lr}
lsls r0, r0, #0x18
movs r1, #0xf8
lsls r1, r1, #0x18
adds r0, r0, r1
lsrs r0, r0, #0x18
cmp r0, #1
bls _08085590
movs r0, #0
b _08085592
_08085590:
movs r0, #1
_08085592:
pop {r1}
bx r1
.align 2, 0
thumb_func_end IsMapTypeIndoors
thumb_func_start GetSavedWarpRegionMapSectionId
GetSavedWarpRegionMapSectionId: @ 0x08085598
push {lr}
ldr r0, _080855BC
ldr r1, [r0]
movs r0, #0x14
ldrsb r0, [r1, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #0x15]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, #0x14]
pop {r1}
bx r1
.align 2, 0
_080855BC: .4byte 0x03005AEC
thumb_func_end GetSavedWarpRegionMapSectionId
thumb_func_start GetCurrentRegionMapSectionId
GetCurrentRegionMapSectionId: @ 0x080855C0
push {lr}
ldr r0, _080855E4
ldr r1, [r0]
movs r0, #4
ldrsb r0, [r1, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #5]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, #0x14]
pop {r1}
bx r1
.align 2, 0
_080855E4: .4byte 0x03005AEC
thumb_func_end GetCurrentRegionMapSectionId
thumb_func_start GetCurrentMapBattleScene
GetCurrentMapBattleScene: @ 0x080855E8
push {lr}
ldr r0, _0808560C
ldr r1, [r0]
movs r0, #4
ldrsb r0, [r1, r0]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #5]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, #0x1b]
pop {r1}
bx r1
.align 2, 0
_0808560C: .4byte 0x03005AEC
thumb_func_end GetCurrentMapBattleScene
thumb_func_start InitOverworldBgs
InitOverworldBgs: @ 0x08085610
push {r4, r5, r6, lr}
mov r6, r8
push {r6}
ldr r1, _0808568C
movs r0, #0
movs r2, #4
bl InitBgsFromTemplates
movs r0, #1
movs r1, #5
movs r2, #1
bl SetBgAttribute
movs r0, #2
movs r1, #5
movs r2, #1
bl SetBgAttribute
movs r0, #3
movs r1, #5
movs r2, #1
bl SetBgAttribute
ldr r0, _08085690
mov r8, r0
movs r4, #0x80
lsls r4, r4, #4
adds r0, r4, #0
bl AllocZeroed
mov r1, r8
str r0, [r1]
ldr r6, _08085694
adds r0, r4, #0
bl AllocZeroed
str r0, [r6]
ldr r5, _08085698
adds r0, r4, #0
bl AllocZeroed
str r0, [r5]
mov r0, r8
ldr r1, [r0]
movs r0, #1
bl SetBgTilemapBuffer
ldr r1, [r6]
movs r0, #2
bl SetBgTilemapBuffer
ldr r1, [r5]
movs r0, #3
bl SetBgTilemapBuffer
bl InitStandardTextBoxWindows
pop {r3}
mov r8, r3
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0808568C: .4byte 0x0830FCF8
_08085690: .4byte 0x03005B00
_08085694: .4byte 0x03005AFC
_08085698: .4byte 0x03005B04
thumb_func_end InitOverworldBgs
thumb_func_start CleanupOverworldWindowsAndTilemaps
CleanupOverworldWindowsAndTilemaps: @ 0x0808569C
push {r4, lr}
bl ClearMirageTowerPulseBlendEffect
bl FreeAllOverworldWindowBuffers
ldr r4, _080856DC
ldr r0, [r4]
cmp r0, #0
beq _080856B6
bl Free
movs r0, #0
str r0, [r4]
_080856B6:
ldr r4, _080856E0
ldr r0, [r4]
cmp r0, #0
beq _080856C6
bl Free
movs r0, #0
str r0, [r4]
_080856C6:
ldr r4, _080856E4
ldr r0, [r4]
cmp r0, #0
beq _080856D6
bl Free
movs r0, #0
str r0, [r4]
_080856D6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080856DC: .4byte 0x03005B04
_080856E0: .4byte 0x03005AFC
_080856E4: .4byte 0x03005B00
thumb_func_end CleanupOverworldWindowsAndTilemaps
thumb_func_start CB2_OverworldBasic
CB2_OverworldBasic: @ 0x080856E8
push {lr}
bl SafariZoneRetirePrompt
pop {r0}
bx r0
.align 2, 0
thumb_func_end CB2_OverworldBasic
thumb_func_start IsUpdateLinkStateCBActive
IsUpdateLinkStateCBActive: @ 0x080856F4
push {lr}
ldr r0, _08085704
ldr r1, [r0]
ldr r0, _08085708
cmp r1, r0
beq _0808570C
movs r0, #0
b _0808570E
.align 2, 0
_08085704: .4byte 0x03002360
_08085708: .4byte 0x0808653D
_0808570C:
movs r0, #1
_0808570E:
pop {r1}
bx r1
.align 2, 0
thumb_func_end IsUpdateLinkStateCBActive
thumb_func_start DoCB1_Overworld
DoCB1_Overworld: @ 0x08085714
push {r4, r5, r6, lr}
sub sp, #4
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r5, r0, #0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
adds r4, r1, #0
bl sub_0808AEDC
mov r6, sp
mov r0, sp
bl FieldClearPlayerInput
mov r0, sp
adds r1, r5, #0
adds r2, r4, #0
bl FieldGetPlayerInput
bl ScriptContext2_IsEnabled
lsls r0, r0, #0x18
cmp r0, #0
bne _08085762
mov r0, sp
bl ProcessPlayerFieldInput
cmp r0, #1
bne _08085758
bl ScriptContext2_Enable
bl HideMapNamePopUpWindow
b _08085762
_08085758:
ldrb r0, [r6, #2]
adds r1, r5, #0
adds r2, r4, #0
bl player_step
_08085762:
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end DoCB1_Overworld
thumb_func_start CB1_Overworld
CB1_Overworld: @ 0x0808576C
push {lr}
ldr r2, _08085784
ldr r1, [r2, #4]
ldr r0, _08085788
cmp r1, r0
bne _08085780
ldrh r0, [r2, #0x2e]
ldrh r1, [r2, #0x2c]
bl DoCB1_Overworld
_08085780:
pop {r0}
bx r0
.align 2, 0
_08085784: .4byte 0x03002360
_08085788: .4byte 0x080857C5
thumb_func_end CB1_Overworld
thumb_func_start OverworldBasic
OverworldBasic: @ 0x0808578C
push {lr}
bl ScriptContext2_RunScript
bl RunTasks
bl AnimateSprites
bl CameraUpdate
bl UpdateCameraPanning
bl BuildOamBuffer
bl UpdatePaletteFade
bl UpdateTilesetAnimations
bl do_scheduled_bg_tilemap_copies_to_vram
pop {r0}
bx r0
.align 2, 0
thumb_func_end OverworldBasic
thumb_func_start ResetSafariZoneFlag_
ResetSafariZoneFlag_: @ 0x080857B8
push {lr}
bl OverworldBasic
pop {r0}
bx r0
.align 2, 0
thumb_func_end ResetSafariZoneFlag_
thumb_func_start CB2_Overworld
CB2_Overworld: @ 0x080857C4
push {r4, lr}
ldr r0, _080857EC
ldrb r0, [r0, #7]
lsrs r0, r0, #7
adds r4, r0, #0
cmp r4, #0
beq _080857D8
movs r0, #0
bl SetVBlankCallback
_080857D8:
bl OverworldBasic
cmp r4, #0
beq _080857E4
bl SetFieldVBlankCallback
_080857E4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080857EC: .4byte 0x02037C74
thumb_func_end CB2_Overworld
thumb_func_start SetMainCallback1
SetMainCallback1: @ 0x080857F0
ldr r1, _080857F8
str r0, [r1]
bx lr
.align 2, 0
_080857F8: .4byte 0x03002360
thumb_func_end SetMainCallback1
thumb_func_start SetUnusedCallback
SetUnusedCallback: @ 0x080857FC
ldr r1, _08085804
str r0, [r1]
bx lr
.align 2, 0
_08085804: .4byte 0x03000E0C
thumb_func_end SetUnusedCallback
thumb_func_start map_post_load_hook_exec
map_post_load_hook_exec: @ 0x08085808
push {r4, lr}
ldr r4, _08085820
ldr r0, [r4]
cmp r0, #0
beq _08085834
bl _call_via_r0
lsls r0, r0, #0x18
cmp r0, #0
bne _08085824
movs r0, #0
b _08085854
.align 2, 0
_08085820: .4byte 0x03005B10
_08085824:
movs r1, #0
str r1, [r4]
ldr r0, _08085830
str r1, [r0]
b _08085852
.align 2, 0
_08085830: .4byte 0x03005B0C
_08085834:
ldr r0, _08085844
ldr r0, [r0]
cmp r0, #0
beq _08085848
bl _call_via_r0
b _0808584C
.align 2, 0
_08085844: .4byte 0x03005B0C
_08085848:
bl mapldr_default
_0808584C:
ldr r1, _0808585C
movs r0, #0
str r0, [r1]
_08085852:
movs r0, #1
_08085854:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0808585C: .4byte 0x03005B0C
thumb_func_end map_post_load_hook_exec
thumb_func_start CB2_NewGame
CB2_NewGame: @ 0x08085860
push {lr}
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
bl CB2_OverworldBasic
bl NewGameInitData
bl ResetInitialPlayerAvatarState
bl PlayTimeCounter_Start
bl ScriptContext1_Init
bl ScriptContext2_Disable
ldr r1, _080858A8
ldr r0, _080858AC
str r0, [r1]
ldr r1, _080858B0
movs r0, #0
str r0, [r1]
ldr r0, _080858B4
bl do_load_map_stuff_loop
bl SetFieldVBlankCallback
ldr r0, _080858B8
bl SetMainCallback1
ldr r0, _080858BC
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_080858A8: .4byte 0x03005B0C
_080858AC: .4byte 0x080FBD51
_080858B0: .4byte 0x03005B10
_080858B4: .4byte 0x03002798
_080858B8: .4byte 0x0808576D
_080858BC: .4byte 0x080857C5
thumb_func_end CB2_NewGame
thumb_func_start CB2_WhiteOut
CB2_WhiteOut: @ 0x080858C0
push {lr}
sub sp, #4
ldr r1, _08085920
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x77
bls _08085918
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
bl CB2_OverworldBasic
bl DoWhiteOut
bl ResetInitialPlayerAvatarState
bl ScriptContext1_Init
bl ScriptContext2_Disable
ldr r1, _08085924
ldr r0, _08085928
str r0, [r1]
mov r1, sp
movs r0, #0
strb r0, [r1]
mov r0, sp
bl do_load_map_stuff_loop
bl SetFieldVBlankCallback
ldr r0, _0808592C
bl SetMainCallback1
ldr r0, _08085930
bl SetMainCallback2
_08085918:
add sp, #4
pop {r0}
bx r0
.align 2, 0
_08085920: .4byte 0x03002360
_08085924: .4byte 0x03005B0C
_08085928: .4byte 0x080AECC5
_0808592C: .4byte 0x0808576D
_08085930: .4byte 0x080857C5
thumb_func_end CB2_WhiteOut
thumb_func_start CB2_LoadMap
CB2_LoadMap: @ 0x08085934
push {lr}
bl FieldClearVBlankHBlankCallbacks
bl ScriptContext1_Init
bl ScriptContext2_Disable
movs r0, #0
bl SetMainCallback1
ldr r0, _08085958
bl SetMainCallback2
ldr r1, _0808595C
ldr r0, _08085960
str r0, [r1, #8]
pop {r0}
bx r0
.align 2, 0
_08085958: .4byte 0x08137271
_0808595C: .4byte 0x03002360
_08085960: .4byte 0x08085965
thumb_func_end CB2_LoadMap
thumb_func_start CB2_LoadMap2
CB2_LoadMap2: @ 0x08085964
push {lr}
ldr r0, _08085980
bl do_load_map_stuff_loop
bl SetFieldVBlankCallback
ldr r0, _08085984
bl SetMainCallback1
ldr r0, _08085988
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_08085980: .4byte 0x03002798
_08085984: .4byte 0x0808576D
_08085988: .4byte 0x080857C5
thumb_func_end CB2_LoadMap2
thumb_func_start sub_0808598C
sub_0808598C: @ 0x0808598C
push {r4, lr}
ldr r0, _080859D0
movs r1, #0x87
lsls r1, r1, #3
adds r4, r0, r1
ldrb r0, [r4]
cmp r0, #0
bne _080859AE
bl FieldClearVBlankHBlankCallbacks
bl ScriptContext1_Init
bl ScriptContext2_Disable
movs r0, #0
bl SetMainCallback1
_080859AE:
adds r0, r4, #0
movs r1, #1
bl load_map_stuff
cmp r0, #0
beq _080859CA
bl SetFieldVBlankCallback
ldr r0, _080859D4
bl SetMainCallback1
ldr r0, _080859D8
bl SetMainCallback2
_080859CA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080859D0: .4byte 0x03002360
_080859D4: .4byte 0x0808576D
_080859D8: .4byte 0x080857C5
thumb_func_end sub_0808598C
thumb_func_start sub_080859DC
sub_080859DC: @ 0x080859DC
push {lr}
bl FieldClearVBlankHBlankCallbacks
ldr r0, _080859F4
ldr r1, _080859F8
str r1, [r0]
ldr r0, _080859FC
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_080859F4: .4byte 0x03005B0C
_080859F8: .4byte 0x080AEC11
_080859FC: .4byte 0x08085A01
thumb_func_end sub_080859DC
thumb_func_start c2_80567AC
c2_80567AC: @ 0x08085A00
push {lr}
ldr r0, _08085A24
bl map_loading_iteration_3
cmp r0, #0
beq _08085A20
bl SetFieldVBlankCallback
ldr r0, _08085A28
bl SetMainCallback1
bl ResetAllMultiplayerState
ldr r0, _08085A2C
bl SetMainCallback2
_08085A20:
pop {r0}
bx r0
.align 2, 0
_08085A24: .4byte 0x03002798
_08085A28: .4byte 0x0808653D
_08085A2C: .4byte 0x080857C5
thumb_func_end c2_80567AC
thumb_func_start CB2_ReturnToField
CB2_ReturnToField: @ 0x08085A30
push {lr}
bl IsUpdateLinkStateCBActive
cmp r0, #1
bne _08085A48
ldr r0, _08085A44
bl SetMainCallback2
b _08085A52
.align 2, 0
_08085A44: .4byte 0x08085A81
_08085A48:
bl FieldClearVBlankHBlankCallbacks
ldr r0, _08085A58
bl SetMainCallback2
_08085A52:
pop {r0}
bx r0
.align 2, 0
_08085A58: .4byte 0x08085A5D
thumb_func_end CB2_ReturnToField
thumb_func_start CB2_ReturnToFieldLocal
CB2_ReturnToFieldLocal: @ 0x08085A5C
push {lr}
ldr r0, _08085A78
bl sub_08085F9C
cmp r0, #0
beq _08085A72
bl SetFieldVBlankCallback
ldr r0, _08085A7C
bl SetMainCallback2
_08085A72:
pop {r0}
bx r0
.align 2, 0
_08085A78: .4byte 0x03002798
_08085A7C: .4byte 0x080857C5
thumb_func_end CB2_ReturnToFieldLocal
thumb_func_start CB2_ReturnToFieldLink
CB2_ReturnToFieldLink: @ 0x08085A80
push {lr}
bl sub_08086EFC
cmp r0, #0
bne _08085A9A
ldr r0, _08085AA0
bl map_loading_iteration_2_link
cmp r0, #0
beq _08085A9A
ldr r0, _08085AA4
bl SetMainCallback2
_08085A9A:
pop {r0}
bx r0
.align 2, 0
_08085AA0: .4byte 0x03002798
_08085AA4: .4byte 0x080857C5
thumb_func_end CB2_ReturnToFieldLink
thumb_func_start CB2_ReturnToFieldFromMultiplayer
CB2_ReturnToFieldFromMultiplayer: @ 0x08085AA8
push {lr}
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
ldr r0, _08085ACC
bl SetMainCallback1
bl ResetAllMultiplayerState
ldr r0, _08085AD0
ldrb r0, [r0]
cmp r0, #0
beq _08085ADC
ldr r1, _08085AD4
ldr r0, _08085AD8
b _08085AE0
.align 2, 0
_08085ACC: .4byte 0x0808653D
_08085AD0: .4byte 0x0300319C
_08085AD4: .4byte 0x03005B0C
_08085AD8: .4byte 0x080AEC11
_08085ADC:
ldr r1, _08085AF4
ldr r0, _08085AF8
_08085AE0:
str r0, [r1]
bl ScriptContext1_Init
bl ScriptContext2_Disable
bl CB2_ReturnToField
pop {r0}
bx r0
.align 2, 0
_08085AF4: .4byte 0x03005B0C
_08085AF8: .4byte 0x080AEB11
thumb_func_end CB2_ReturnToFieldFromMultiplayer
thumb_func_start CB2_ReturnToFieldWithOpenMenu
CB2_ReturnToFieldWithOpenMenu: @ 0x08085AFC
push {lr}
bl FieldClearVBlankHBlankCallbacks
ldr r1, _08085B10
ldr r0, _08085B14
str r0, [r1]
bl CB2_ReturnToField
pop {r0}
bx r0
.align 2, 0
_08085B10: .4byte 0x03005B10
_08085B14: .4byte 0x080AEFA1
thumb_func_end CB2_ReturnToFieldWithOpenMenu
thumb_func_start CB2_ReturnToFieldContinueScript
CB2_ReturnToFieldContinueScript: @ 0x08085B18
push {lr}
bl FieldClearVBlankHBlankCallbacks
ldr r1, _08085B2C
ldr r0, _08085B30
str r0, [r1]
bl CB2_ReturnToField
pop {r0}
bx r0
.align 2, 0
_08085B2C: .4byte 0x03005B0C
_08085B30: .4byte 0x080AEA85
thumb_func_end CB2_ReturnToFieldContinueScript
thumb_func_start CB2_ReturnToFieldContinueScriptPlayMapMusic
CB2_ReturnToFieldContinueScriptPlayMapMusic: @ 0x08085B34
push {lr}
bl FieldClearVBlankHBlankCallbacks
ldr r1, _08085B48
ldr r0, _08085B4C
str r0, [r1]
bl CB2_ReturnToField
pop {r0}
bx r0
.align 2, 0
_08085B48: .4byte 0x03005B0C
_08085B4C: .4byte 0x080AEA65
thumb_func_end CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_start sub_08085B50
sub_08085B50: @ 0x08085B50
push {lr}
bl FieldClearVBlankHBlankCallbacks
ldr r1, _08085B64
ldr r0, _08085B68
str r0, [r1]
bl CB2_ReturnToField
pop {r0}
bx r0
.align 2, 0
_08085B64: .4byte 0x03005B0C
_08085B68: .4byte 0x080AECC5
thumb_func_end sub_08085B50
thumb_func_start sub_08085B6C
sub_08085B6C: @ 0x08085B6C
push {lr}
ldr r0, _08085B94
ldrb r1, [r0, #0x1a]
movs r0, #0xf8
ands r0, r1
cmp r0, #8
bne _08085B8A
bl SecretBaseMapPopupEnabled
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08085B8A
bl ShowMapNamePopup
_08085B8A:
bl sub_080AECC4
pop {r0}
bx r0
.align 2, 0
_08085B94: .4byte 0x02036FB8
thumb_func_end sub_08085B6C
thumb_func_start CB2_ContinueSavedGame
CB2_ContinueSavedGame: @ 0x08085B98
push {r4, lr}
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
bl CB2_OverworldBasic
ldr r0, _08085BD0
ldrh r0, [r0]
cmp r0, #0xff
bne _08085BB2
bl sub_081A36A0
_08085BB2:
bl LoadSaveblockMapHeader
bl GetCurrentTrainerHillMapId
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r0, _08085BD4
ldrh r1, [r0, #0x12]
ldr r0, _08085BD8
cmp r1, r0
bne _08085BDC
bl LoadBattlePyramidFloorEventObjectScripts
b _08085BEE
.align 2, 0
_08085BD0: .4byte 0x03005F50
_08085BD4: .4byte 0x02036FB8
_08085BD8: .4byte 0x00000169
_08085BDC:
cmp r4, #0
beq _08085BEA
cmp r4, #6
beq _08085BEA
bl sub_081D5840
b _08085BEE
_08085BEA:
bl LoadSaveblockEventObjScripts
_08085BEE:
bl UnfreezeEventObjects
bl DoTimeBasedEvents
bl sub_08084110
ldr r0, _08085C0C
ldrh r1, [r0, #0x12]
ldr r0, _08085C10
cmp r1, r0
bne _08085C14
movs r0, #1
bl InitBattlePyramidMap
b _08085C22
.align 2, 0
_08085C0C: .4byte 0x02036FB8
_08085C10: .4byte 0x00000169
_08085C14:
cmp r4, #0
beq _08085C1E
bl InitTrainerHillMap
b _08085C22
_08085C1E:
bl InitMapFromSavedGame
_08085C22:
bl PlayTimeCounter_Start
bl ScriptContext1_Init
bl ScriptContext2_Disable
bl InitMatchCallCounters
bl UseContinueGameWarp
cmp r0, #1
bne _08085C58
bl ClearContinueGameWarpStatus2
bl SetWarpDestinationToContinueGameWarp
bl WarpIntoMap
bl sub_080EE664
ldr r0, _08085C54
bl SetMainCallback2
b _08085C6C
.align 2, 0
_08085C54: .4byte 0x08085935
_08085C58:
bl sub_080EE664
ldr r0, _08085C74
ldr r1, _08085C78
str r1, [r0]
ldr r0, _08085C7C
bl SetMainCallback1
bl CB2_ReturnToField
_08085C6C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085C74: .4byte 0x03005B0C
_08085C78: .4byte 0x08085B6D
_08085C7C: .4byte 0x0808576D
thumb_func_end CB2_ContinueSavedGame
thumb_func_start FieldClearVBlankHBlankCallbacks
FieldClearVBlankHBlankCallbacks: @ 0x08085C80
push {r4, lr}
bl warp0_in_pokecenter
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08085C92
bl CloseLink
_08085C92:
ldr r0, _08085CA8
ldrb r0, [r0]
cmp r0, #0
beq _08085CAC
movs r0, #0xc5
bl EnableInterrupts
movs r0, #2
bl DisableInterrupts
b _08085CC6
.align 2, 0
_08085CA8: .4byte 0x0300319C
_08085CAC:
ldr r4, _08085CD8
ldrh r3, [r4]
strh r0, [r4]
ldr r2, _08085CDC
ldrh r1, [r2]
ldr r0, _08085CE0
ands r0, r1
strh r0, [r2]
ldrh r0, [r2]
movs r1, #1
orrs r0, r1
strh r0, [r2]
strh r3, [r4]
_08085CC6:
movs r0, #0
bl SetVBlankCallback
movs r0, #0
bl SetHBlankCallback
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085CD8: .4byte 0x04000208
_08085CDC: .4byte 0x04000200
_08085CE0: .4byte 0x0000FFFD
thumb_func_end FieldClearVBlankHBlankCallbacks
thumb_func_start SetFieldVBlankCallback
SetFieldVBlankCallback: @ 0x08085CE4
push {lr}
ldr r0, _08085CF0
bl SetVBlankCallback
pop {r0}
bx r0
.align 2, 0
_08085CF0: .4byte 0x08085CF5
thumb_func_end SetFieldVBlankCallback
thumb_func_start VBlankCB_Field
VBlankCB_Field: @ 0x08085CF4
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl ScanlineEffect_InitHBlankDmaTransfer
bl FieldUpdateBgTilemapScroll
bl TransferPlttBuffer
bl TransferTilesetAnimsBuffer
pop {r0}
bx r0
.align 2, 0
thumb_func_end VBlankCB_Field
thumb_func_start InitCurrentFlashLevelScanlineEffect
InitCurrentFlashLevelScanlineEffect: @ 0x08085D14
push {lr}
bl InBattlePyramid_
lsls r0, r0, #0x18
cmp r0, #0
beq _08085D38
bl WriteBattlePyramidViewScanlineEffectBuffer
ldr r2, _08085D34
ldr r0, [r2]
ldr r1, [r2, #4]
ldr r2, [r2, #8]
bl ScanlineEffect_SetParams
b _08085D54
.align 2, 0
_08085D34: .4byte 0x0830FD08
_08085D38:
bl Overworld_GetFlashLevel
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _08085D54
bl WriteFlashScanlineEffectBuffer
ldr r2, _08085D58
ldr r0, [r2]
ldr r1, [r2, #4]
ldr r2, [r2, #8]
bl ScanlineEffect_SetParams
_08085D54:
pop {r0}
bx r0
.align 2, 0
_08085D58: .4byte 0x0830FD08
thumb_func_end InitCurrentFlashLevelScanlineEffect
thumb_func_start map_loading_iteration_3
map_loading_iteration_3: @ 0x08085D5C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4]
cmp r0, #0xd
bls _08085D68
b _08085E76
_08085D68:
lsls r0, r0, #2
ldr r1, _08085D74
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08085D74: .4byte 0x08085D78
_08085D78: @ jump table
.4byte _08085DB0 @ case 0
.4byte _08085DC6 @ case 1
.4byte _08085DCE @ case 2
.4byte _08085DD6 @ case 3
.4byte _08085DE8 @ case 4
.4byte _08085DF6 @ case 5
.4byte _08085DFC @ case 6
.4byte _08085E0C @ case 7
.4byte _08085E1C @ case 8
.4byte _08085E38 @ case 9
.4byte _08085E3E @ case 10
.4byte _08085E44 @ case 11
.4byte _08085E60 @ case 12
.4byte _08085E72 @ case 13
_08085DB0:
bl InitOverworldBgs
bl ScriptContext1_Init
bl ScriptContext2_Disable
bl sub_0808612C
bl sub_0808613C
b _08085E6A
_08085DC6:
movs r0, #1
bl mli0_load_map
b _08085E6A
_08085DCE:
movs r0, #1
bl sub_080862EC
b _08085E6A
_08085DD6:
bl sub_08086448
bl sub_08086340
bl sub_08086478
bl SetCameraToTrackGuestPlayer
b _08085E6A
_08085DE8:
bl InitCurrentFlashLevelScanlineEffect
bl InitOverworldGraphicsRegisters
bl sub_08196DF4
b _08085E6A
_08085DF6:
bl move_tilemap_camera_to_upper_left_corner
b _08085E6A
_08085DFC:
ldr r0, _08085E08
ldr r0, [r0]
bl copy_map_tileset1_to_vram
b _08085E6A
.align 2, 0
_08085E08: .4byte 0x02036FB8
_08085E0C:
ldr r0, _08085E18
ldr r0, [r0]
bl copy_map_tileset2_to_vram
b _08085E6A
.align 2, 0
_08085E18: .4byte 0x02036FB8
_08085E1C:
bl free_temp_tile_data_buffers_if_possible
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08085E76
ldr r0, _08085E34
ldr r0, [r0]
bl apply_map_tileset1_tileset2_palette
b _08085E6A
.align 2, 0
_08085E34: .4byte 0x02036FB8
_08085E38:
bl DrawWholeMapView
b _08085E6A
_08085E3E:
bl InitTilesetAnimations
b _08085E6A
_08085E44:
ldr r0, _08085E5C
ldrb r0, [r0]
cmp r0, #0
beq _08085E6A
bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, #0
movs r1, #0
bl CreateWirelessStatusIndicatorSprite
b _08085E6A
.align 2, 0
_08085E5C: .4byte 0x0300319C
_08085E60:
bl map_post_load_hook_exec
lsls r0, r0, #0x18
cmp r0, #0
beq _08085E76
_08085E6A:
ldrb r0, [r4]
adds r0, #1
strb r0, [r4]
b _08085E76
_08085E72:
movs r0, #1
b _08085E78
_08085E76:
movs r0, #0
_08085E78:
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end map_loading_iteration_3
thumb_func_start load_map_stuff
load_map_stuff: @ 0x08085E80
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
ldrb r0, [r4]
cmp r0, #0xd
bls _08085E8E
b _08085F92
_08085E8E:
lsls r0, r0, #2
ldr r1, _08085E98
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08085E98: .4byte 0x08085E9C
_08085E9C: @ jump table
.4byte _08085ED4 @ case 0
.4byte _08085EE0 @ case 1
.4byte _08085EEA @ case 2
.4byte _08085EF2 @ case 3
.4byte _08085EFC @ case 4
.4byte _08085F0A @ case 5
.4byte _08085F10 @ case 6
.4byte _08085F20 @ case 7
.4byte _08085F30 @ case 8
.4byte _08085F4C @ case 9
.4byte _08085F52 @ case 10
.4byte _08085F58 @ case 11
.4byte _08085F7C @ case 12
.4byte _08085F8E @ case 13
_08085ED4:
bl FieldClearVBlankHBlankCallbacks
adds r0, r5, #0
bl mli0_load_map
b _08085F86
_08085EE0:
bl sub_0808612C
bl sub_0808613C
b _08085F86
_08085EEA:
adds r0, r5, #0
bl sub_080862EC
b _08085F86
_08085EF2:
bl mli4_mapscripts_and_other
bl sub_080863E4
b _08085F86
_08085EFC:
bl InitCurrentFlashLevelScanlineEffect
bl InitOverworldGraphicsRegisters
bl sub_08196DF4
b _08085F86
_08085F0A:
bl move_tilemap_camera_to_upper_left_corner
b _08085F86
_08085F10:
ldr r0, _08085F1C
ldr r0, [r0]
bl copy_map_tileset1_to_vram
b _08085F86
.align 2, 0
_08085F1C: .4byte 0x02036FB8
_08085F20:
ldr r0, _08085F2C
ldr r0, [r0]
bl copy_map_tileset2_to_vram
b _08085F86
.align 2, 0
_08085F2C: .4byte 0x02036FB8
_08085F30:
bl free_temp_tile_data_buffers_if_possible
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08085F92
ldr r0, _08085F48
ldr r0, [r0]
bl apply_map_tileset1_tileset2_palette
b _08085F86
.align 2, 0
_08085F48: .4byte 0x02036FB8
_08085F4C:
bl DrawWholeMapView
b _08085F86
_08085F52:
bl InitTilesetAnimations
b _08085F86
_08085F58:
ldr r0, _08085F78
ldrb r1, [r0, #0x1a]
movs r0, #0xf8
ands r0, r1
cmp r0, #8
bne _08085F86
bl SecretBaseMapPopupEnabled
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08085F86
bl ShowMapNamePopup
b _08085F86
.align 2, 0
_08085F78: .4byte 0x02036FB8
_08085F7C:
bl map_post_load_hook_exec
lsls r0, r0, #0x18
cmp r0, #0
beq _08085F92
_08085F86:
ldrb r0, [r4]
adds r0, #1
strb r0, [r4]
b _08085F92
_08085F8E:
movs r0, #1
b _08085F94
_08085F92:
movs r0, #0
_08085F94:
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_end load_map_stuff
thumb_func_start sub_08085F9C
sub_08085F9C: @ 0x08085F9C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4]
cmp r0, #1
beq _08085FD2
cmp r0, #1
bgt _08085FB0
cmp r0, #0
beq _08085FBA
b _08085FF2
_08085FB0:
cmp r0, #2
beq _08085FDC
cmp r0, #3
beq _08085FEE
b _08085FF2
_08085FBA:
bl sub_0808612C
bl sub_0808613C
movs r0, #0
bl sub_080862EC
bl sub_080863CC
bl sub_080863E4
b _08085FE6
_08085FD2:
bl sub_080861C4
bl sub_081D5E60
b _08085FE6
_08085FDC:
bl map_post_load_hook_exec
lsls r0, r0, #0x18
cmp r0, #0
beq _08085FF2
_08085FE6:
ldrb r0, [r4]
adds r0, #1
strb r0, [r4]
b _08085FF2
_08085FEE:
movs r0, #1
b _08085FF4
_08085FF2:
movs r0, #0
_08085FF4:
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08085F9C
thumb_func_start map_loading_iteration_2_link
map_loading_iteration_2_link: @ 0x08085FFC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4]
cmp r0, #0xd
bls _08086008
b _0808610C
_08086008:
lsls r0, r0, #2
ldr r1, _08086014
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08086014: .4byte 0x08086018
_08086018: @ jump table
.4byte _08086050 @ case 0
.4byte _0808605E @ case 1
.4byte _08086066 @ case 2
.4byte _08086074 @ case 3
.4byte _08086082 @ case 4
.4byte _08086088 @ case 5
.4byte _08086098 @ case 6
.4byte _080860A8 @ case 7
.4byte _080860C4 @ case 8
.4byte _080860CA @ case 9
.4byte _080860F6 @ case 10
.4byte _080860D0 @ case 11
.4byte _080860EC @ case 12
.4byte _080860FE @ case 13
_08086050:
bl FieldClearVBlankHBlankCallbacks
bl sub_0808612C
bl sub_0808613C
b _080860F6
_0808605E:
movs r0, #1
bl sub_080862EC
b _080860F6
_08086066:
bl CreateLinkPlayerSprites
bl sub_080863CC
bl SetCameraToTrackGuestPlayer_2
b _080860F6
_08086074:
bl InitCurrentFlashLevelScanlineEffect
bl InitOverworldGraphicsRegisters
bl sub_08196DF4
b _080860F6
_08086082:
bl move_tilemap_camera_to_upper_left_corner
b _080860F6
_08086088:
ldr r0, _08086094
ldr r0, [r0]
bl copy_map_tileset1_to_vram
b _080860F6
.align 2, 0
_08086094: .4byte 0x02036FB8
_08086098:
ldr r0, _080860A4
ldr r0, [r0]
bl copy_map_tileset2_to_vram
b _080860F6
.align 2, 0
_080860A4: .4byte 0x02036FB8
_080860A8:
bl free_temp_tile_data_buffers_if_possible
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _0808610C
ldr r0, _080860C0
ldr r0, [r0]
bl apply_map_tileset1_tileset2_palette
b _080860F6
.align 2, 0
_080860C0: .4byte 0x02036FB8
_080860C4:
bl DrawWholeMapView
b _080860F6
_080860CA:
bl InitTilesetAnimations
b _080860F6
_080860D0:
ldr r0, _080860E8
ldrb r0, [r0]
cmp r0, #0
beq _080860F6
bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, #0
movs r1, #0
bl CreateWirelessStatusIndicatorSprite
b _080860F6
.align 2, 0
_080860E8: .4byte 0x0300319C
_080860EC:
bl map_post_load_hook_exec
lsls r0, r0, #0x18
cmp r0, #0
beq _0808610C
_080860F6:
ldrb r0, [r4]
adds r0, #1
strb r0, [r4]
b _0808610C
_080860FE:
bl SetFieldVBlankCallback
ldrb r0, [r4]
adds r0, #1
strb r0, [r4]
movs r0, #1
b _0808610E
_0808610C:
movs r0, #0
_0808610E:
pop {r4}
pop {r1}
bx r1
thumb_func_end map_loading_iteration_2_link
thumb_func_start do_load_map_stuff_loop
do_load_map_stuff_loop: @ 0x08086114
push {r4, lr}
adds r4, r0, #0
_08086118:
adds r0, r4, #0
movs r1, #0
bl load_map_stuff
cmp r0, #0
beq _08086118
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end do_load_map_stuff_loop
thumb_func_start sub_0808612C
sub_0808612C: @ 0x0808612C
push {lr}
bl ClearMirageTowerPulseBlend
bl MoveSaveBlocks_ResetHeap
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_0808612C
thumb_func_start sub_0808613C
sub_0808613C: @ 0x0808613C
push {r4, r5, r6, r7, lr}
sub sp, #4
movs r0, #0
movs r1, #0
bl SetGpuReg
bl ScanlineEffect_Stop
ldr r2, _080861B4
mov r1, sp
movs r0, #0
strh r0, [r1]
ldr r1, _080861B8
mov r0, sp
str r0, [r1]
str r2, [r1, #4]
ldr r0, _080861BC
str r0, [r1, #8]
ldr r0, [r1, #8]
movs r2, #0xc0
lsls r2, r2, #0x13
movs r3, #0xc0
lsls r3, r3, #9
mov r4, sp
movs r6, #0
movs r5, #0x80
lsls r5, r5, #5
ldr r7, _080861C0
movs r0, #0x81
lsls r0, r0, #0x18
mov ip, r0
_0808617A:
strh r6, [r4]
mov r0, sp
str r0, [r1]
str r2, [r1, #4]
str r7, [r1, #8]
ldr r0, [r1, #8]
adds r2, r2, r5
subs r3, r3, r5
cmp r3, r5
bhi _0808617A
strh r6, [r4]
mov r0, sp
str r0, [r1]
str r2, [r1, #4]
lsrs r0, r3, #1
mov r2, ip
orrs r0, r2
str r0, [r1, #8]
ldr r0, [r1, #8]
movs r0, #0
movs r1, #0x80
bl ResetOamRange
bl LoadOam
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080861B4: .4byte 0x05000002
_080861B8: .4byte 0x040000D4
_080861BC: .4byte 0x810001FF
_080861C0: .4byte 0x81000800
thumb_func_end sub_0808613C
thumb_func_start sub_080861C4
sub_080861C4: @ 0x080861C4
push {lr}
bl InitCurrentFlashLevelScanlineEffect
bl InitOverworldGraphicsRegisters
bl sub_08196DF4
bl mapdata_load_assets_to_gpu_and_full_redraw
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_080861C4
thumb_func_start InitOverworldGraphicsRegisters
InitOverworldGraphicsRegisters: @ 0x080861DC
push {r4, lr}
bl clear_scheduled_bg_copies_to_vram
bl reset_temp_tile_data_buffers
movs r0, #0x4c
movs r1, #0
bl SetGpuReg
ldr r1, _080862D4
movs r0, #0x48
bl SetGpuReg
ldr r1, _080862D8
movs r0, #0x4a
bl SetGpuReg
movs r0, #0x40
movs r1, #0xff
bl SetGpuReg
movs r0, #0x44
movs r1, #0xff
bl SetGpuReg
ldr r4, _080862DC
movs r0, #0x42
adds r1, r4, #0
bl SetGpuReg
movs r0, #0x46
adds r1, r4, #0
bl SetGpuReg
ldr r0, _080862E0
ldrh r1, [r0, #2]
ldrh r2, [r0, #4]
orrs r1, r2
ldrh r0, [r0, #6]
orrs r1, r0
movs r2, #0x82
lsls r2, r2, #5
adds r0, r2, #0
orrs r1, r0
movs r0, #0x50
bl SetGpuReg
ldr r1, _080862E4
movs r0, #0x52
bl SetGpuReg
bl InitOverworldBgs
movs r0, #1
bl schedule_bg_copy_tilemap_to_vram
movs r0, #2
bl schedule_bg_copy_tilemap_to_vram
movs r0, #3
bl schedule_bg_copy_tilemap_to_vram
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #1
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #1
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #2
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #2
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #3
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #3
movs r1, #0
movs r2, #0
bl ChangeBgY
ldr r1, _080862E8
movs r0, #0
bl SetGpuReg
movs r0, #0
bl ShowBg
movs r0, #1
bl ShowBg
movs r0, #2
bl ShowBg
movs r0, #3
bl ShowBg
bl InitFieldMessageBox
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080862D4: .4byte 0x00001F1F
_080862D8: .4byte 0x00000101
_080862DC: .4byte 0x0000FFFF
_080862E0: .4byte 0x082BF42C
_080862E4: .4byte 0x0000070D
_080862E8: .4byte 0x00007060
thumb_func_end InitOverworldGraphicsRegisters
thumb_func_start sub_080862EC
sub_080862EC: @ 0x080862EC
push {r4, lr}
adds r4, r0, #0
bl ResetTasks
bl ResetSpriteData
bl ResetPaletteFade
bl ScanlineEffect_Clear
bl ResetAllPicSprites
bl ResetCameraUpdateInfo
bl InstallCameraPanAheadCallback
cmp r4, #0
bne _08086318
movs r0, #0
bl InitEventObjectPalettes
b _0808631E
_08086318:
movs r0, #1
bl InitEventObjectPalettes
_0808631E:
bl FieldEffectActiveListClear
bl StartWeather
bl ResumePausedWeather
cmp r4, #0
bne _08086332
bl SetUpFieldTasks
_08086332:
bl RunOnResumeMapScript
bl TryStartMirageTowerPulseBlendEffect
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_080862EC
thumb_func_start sub_08086340
sub_08086340: @ 0x08086340
push {lr}
ldr r0, _08086360
movs r1, #0
strh r1, [r0]
ldr r0, _08086364
strh r1, [r0]
bl ResetEventObjects
movs r0, #0
movs r1, #0
bl TrySpawnEventObjects
bl TryRunOnWarpIntoMapScript
pop {r0}
bx r0
.align 2, 0
_08086360: .4byte 0x03005B4C
_08086364: .4byte 0x03005B48
thumb_func_end sub_08086340
thumb_func_start mli4_mapscripts_and_other
mli4_mapscripts_and_other: @ 0x08086368
push {r4, r5, lr}
sub sp, #4
ldr r0, _080863C0
movs r1, #0
strh r1, [r0]
ldr r0, _080863C4
strh r1, [r0]
bl ResetEventObjects
mov r4, sp
adds r4, #2
mov r0, sp
adds r1, r4, #0
bl GetCameraFocusCoords
bl GetInitialPlayerAvatarState
adds r5, r0, #0
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r4, r2]
ldrb r2, [r5, #1]
ldr r3, _080863C8
ldr r3, [r3]
ldrb r3, [r3, #8]
bl InitPlayerAvatar
ldrb r0, [r5]
bl SetPlayerAvatarTransitionFlags
bl ResetInitialPlayerAvatarState
movs r0, #0
movs r1, #0
bl TrySpawnEventObjects
bl TryRunOnWarpIntoMapScript
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080863C0: .4byte 0x03005B4C
_080863C4: .4byte 0x03005B48
_080863C8: .4byte 0x03005AF0
thumb_func_end mli4_mapscripts_and_other
thumb_func_start sub_080863CC
sub_080863CC: @ 0x080863CC
push {lr}
movs r0, #0
movs r1, #0
bl sub_0808DADC
bl RotatingGate_InitPuzzleAndGraphics
bl RunOnReturnToFieldMapScript
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_080863CC
thumb_func_start sub_080863E4
sub_080863E4: @ 0x080863E4
push {lr}
ldr r2, _08086408
ldr r3, _0808640C
ldrb r1, [r3, #5]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r1, [r0, #1]
movs r2, #0x80
orrs r1, r2
strb r1, [r0, #1]
ldrb r0, [r3, #4]
bl InitCameraUpdateCallback
pop {r0}
bx r0
.align 2, 0
_08086408: .4byte 0x02036FF0
_0808640C: .4byte 0x02037230
thumb_func_end sub_080863E4
thumb_func_start SetCameraToTrackGuestPlayer
SetCameraToTrackGuestPlayer: @ 0x08086410
push {lr}
ldr r0, _08086428
ldrb r0, [r0]
bl GetSpriteForLinkedPlayer
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl InitCameraUpdateCallback
pop {r0}
bx r0
.align 2, 0
_08086428: .4byte 0x03005B14
thumb_func_end SetCameraToTrackGuestPlayer
thumb_func_start SetCameraToTrackGuestPlayer_2
SetCameraToTrackGuestPlayer_2: @ 0x0808642C
push {lr}
ldr r0, _08086444
ldrb r0, [r0]
bl GetSpriteForLinkedPlayer
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl InitCameraUpdateCallback
pop {r0}
bx r0
.align 2, 0
_08086444: .4byte 0x03005B14
thumb_func_end SetCameraToTrackGuestPlayer_2
thumb_func_start sub_08086448
sub_08086448: @ 0x08086448
push {r4, lr}
sub sp, #4
mov r4, sp
adds r4, #2
mov r0, sp
adds r1, r4, #0
bl GetCameraFocusCoords
mov r2, sp
ldr r0, _08086474
ldrb r1, [r0]
ldrh r0, [r2]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrh r1, [r4]
bl sub_080884A0
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08086474: .4byte 0x03005B14
thumb_func_end sub_08086448
thumb_func_start sub_08086478
sub_08086478: @ 0x08086478
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
mov r4, sp
adds r4, #2
mov r0, sp
adds r1, r4, #0
bl GetCameraFocusCoords
mov r3, sp
mov r2, sp
ldr r0, _080864F4
ldrb r1, [r0]
ldrh r0, [r2]
subs r0, r0, r1
strh r0, [r3]
movs r6, #0
ldr r0, _080864F8
mov r8, r4
ldrb r0, [r0]
cmp r6, r0
bhs _080864E2
ldr r7, _080864FC
_080864A8:
lsls r5, r6, #0x18
lsrs r5, r5, #0x18
mov r0, sp
ldrh r1, [r0]
adds r1, r6, r1
lsls r1, r1, #0x10
asrs r1, r1, #0x10
mov r0, r8
movs r3, #0
ldrsh r2, [r0, r3]
lsls r4, r6, #3
subs r4, r4, r6
lsls r4, r4, #2
adds r4, r4, r7
ldrb r3, [r4, #0x13]
adds r0, r5, #0
bl SpawnLinkPlayerEventObject
ldrb r1, [r4]
adds r0, r5, #0
bl CreateLinkPlayerSprite
adds r0, r6, #1
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
ldr r0, _080864F8
ldrb r0, [r0]
cmp r6, r0
blo _080864A8
_080864E2:
bl ClearAllPlayerKeys
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080864F4: .4byte 0x03005B14
_080864F8: .4byte 0x03005B18
_080864FC: .4byte 0x020226A0
thumb_func_end sub_08086478
thumb_func_start CreateLinkPlayerSprites
CreateLinkPlayerSprites: @ 0x08086500
push {r4, r5, lr}
movs r4, #0
ldr r0, _08086534
ldrb r0, [r0]
cmp r4, r0
bhs _0808652E
ldr r5, _08086538
_0808650E:
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
lsls r1, r4, #3
subs r1, r1, r4
lsls r1, r1, #2
adds r1, r1, r5
ldrb r1, [r1]
bl CreateLinkPlayerSprite
adds r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldr r0, _08086534
ldrb r0, [r0]
cmp r4, r0
blo _0808650E
_0808652E:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08086534: .4byte 0x03005B18
_08086538: .4byte 0x020226A0
thumb_func_end CreateLinkPlayerSprites
thumb_func_start CB1_UpdateLinkState
CB1_UpdateLinkState: @ 0x0808653C
push {r4, lr}
ldr r0, _08086580
ldrb r0, [r0]
cmp r0, #0
beq _08086556
bl IsRfuRecvQueueEmpty
cmp r0, #0
beq _08086556
bl IsSendingKeysToLink
cmp r0, #0
bne _08086578
_08086556:
ldr r0, _08086584
ldrb r4, [r0]
ldr r0, _08086588
adds r1, r4, #0
bl UpdateAllLinkPlayers
ldr r0, _0808658C
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl UpdateHeldKeyCode
bl ClearAllPlayerKeys
_08086578:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08086580: .4byte 0x0300319C
_08086584: .4byte 0x03005B14
_08086588: .4byte 0x030030C0
_0808658C: .4byte 0x03000E14
thumb_func_end CB1_UpdateLinkState
thumb_func_start ResetAllMultiplayerState
ResetAllMultiplayerState: @ 0x08086590
push {lr}
bl ResetAllTradingStates
ldr r0, _080865A0
bl SetKeyInterceptCallback
pop {r0}
bx r0
.align 2, 0
_080865A0: .4byte 0x08086A15
thumb_func_end ResetAllMultiplayerState
thumb_func_start ClearAllPlayerKeys
ClearAllPlayerKeys: @ 0x080865A4
push {lr}
ldr r0, _080865B0
bl ResetPlayerHeldKeys
pop {r0}
bx r0
.align 2, 0
_080865B0: .4byte 0x030030C0
thumb_func_end ClearAllPlayerKeys
thumb_func_start SetKeyInterceptCallback
SetKeyInterceptCallback: @ 0x080865B4
ldr r2, _080865C0
movs r1, #0
strb r1, [r2]
ldr r1, _080865C4
str r0, [r1]
bx lr
.align 2, 0
_080865C0: .4byte 0x03000E19
_080865C4: .4byte 0x03000E14
thumb_func_end SetKeyInterceptCallback
thumb_func_start CheckRfuKeepAliveTimer
CheckRfuKeepAliveTimer: @ 0x080865C8
push {lr}
ldr r0, _080865EC
ldrb r0, [r0]
cmp r0, #0
beq _080865E6
ldr r1, _080865F0
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x3c
bls _080865E6
bl LinkRfu_FatalError
_080865E6:
pop {r0}
bx r0
.align 2, 0
_080865EC: .4byte 0x0300319C
_080865F0: .4byte 0x03000E19
thumb_func_end CheckRfuKeepAliveTimer
thumb_func_start ResetAllTradingStates
ResetAllTradingStates: @ 0x080865F4
push {lr}
ldr r1, _08086608
movs r2, #0x80
adds r0, r1, #3
_080865FC:
strb r2, [r0]
subs r0, #1
cmp r0, r1
bge _080865FC
pop {r0}
bx r0
.align 2, 0
_08086608: .4byte 0x03000E10
thumb_func_end ResetAllTradingStates
thumb_func_start AreAllPlayersInTradingState
AreAllPlayersInTradingState: @ 0x0808660C
push {r4, lr}
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
ldr r0, _0808662C
ldrb r2, [r0]
movs r1, #0
cmp r1, r2
bge _0808663A
ldr r4, _08086630
_0808661E:
adds r0, r1, r4
ldrb r0, [r0]
cmp r0, r3
beq _08086634
movs r0, #0
b _0808663C
.align 2, 0
_0808662C: .4byte 0x03005B18
_08086630: .4byte 0x03000E10
_08086634:
adds r1, #1
cmp r1, r2
blt _0808661E
_0808663A:
movs r0, #1
_0808663C:
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end AreAllPlayersInTradingState
thumb_func_start IsAnyPlayerInTradingState
IsAnyPlayerInTradingState: @ 0x08086644
push {r4, lr}
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
ldr r0, _08086664
ldrb r2, [r0]
movs r1, #0
cmp r1, r2
bge _08086672
ldr r4, _08086668
_08086656:
adds r0, r1, r4
ldrb r0, [r0]
cmp r0, r3
bne _0808666C
movs r0, #1
b _08086674
.align 2, 0
_08086664: .4byte 0x03005B18
_08086668: .4byte 0x03000E10
_0808666C:
adds r1, #1
cmp r1, r2
blt _08086656
_08086672:
movs r0, #0
_08086674:
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end IsAnyPlayerInTradingState
thumb_func_start HandleLinkPlayerKeyInput
HandleLinkPlayerKeyInput: @ 0x0808667C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
adds r6, r2, #0
mov sb, r3
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
mov r8, r1
ldr r0, _080866CC
adds r5, r7, r0
ldrb r0, [r5]
cmp r0, #0x80
beq _0808669C
b _08086816
_0808669C:
adds r0, r6, #0
bl TryGetTileEventScript
adds r4, r0, #0
cmp r4, #0
beq _080866D4
bl GetDirectionForEventScript
mov r1, sb
strh r0, [r1]
movs r0, #0x81
strb r0, [r5]
ldrb r0, [r6, #1]
cmp r0, #0
bne _080866BC
b _0808688A
_080866BC:
ldr r0, _080866D0
bl SetKeyInterceptCallback
adds r0, r4, #0
bl InitMenuBasedScript
b _0808688A
.align 2, 0
_080866CC: .4byte 0x03000E10
_080866D0: .4byte 0x08086A5D
_080866D4:
movs r0, #0x83
bl IsAnyPlayerInTradingState
cmp r0, #1
bne _080866FC
movs r0, #0x81
strb r0, [r5]
ldrb r0, [r6, #1]
cmp r0, #0
bne _080866EA
b _0808688A
_080866EA:
ldr r0, _080866F8
bl SetKeyInterceptCallback
bl sub_08086EE8
b _0808688A
.align 2, 0
_080866F8: .4byte 0x08086A5D
_080866FC:
mov r0, r8
subs r0, #0x12
cmp r0, #0xa
bls _08086706
b _08086816
_08086706:
lsls r0, r0, #2
ldr r1, _08086710
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08086710: .4byte 0x08086714
_08086714: @ jump table
.4byte _0808676C @ case 0
.4byte _08086816 @ case 1
.4byte _08086816 @ case 2
.4byte _08086816 @ case 3
.4byte _08086816 @ case 4
.4byte _08086816 @ case 5
.4byte _08086740 @ case 6
.4byte _08086798 @ case 7
.4byte _08086816 @ case 8
.4byte _080867C8 @ case 9
.4byte _080867F4 @ case 10
_08086740:
adds r0, r6, #0
bl sub_08086CBC
cmp r0, #0
beq _08086816
ldr r0, _08086764
adds r0, r7, r0
movs r1, #0x81
strb r1, [r0]
ldrb r0, [r6, #1]
cmp r0, #0
beq _08086816
ldr r0, _08086768
bl SetKeyInterceptCallback
bl InitLinkRoomStartMenuScript
b _08086816
.align 2, 0
_08086764: .4byte 0x03000E10
_08086768: .4byte 0x08086A5D
_0808676C:
adds r0, r6, #0
bl PlayerIsAtSouthExit
cmp r0, #1
bne _08086816
ldr r0, _08086790
adds r0, r7, r0
movs r1, #0x81
strb r1, [r0]
ldrb r0, [r6, #1]
cmp r0, #0
beq _08086816
ldr r0, _08086794
bl SetKeyInterceptCallback
bl CreateConfirmLeaveTradeRoomPrompt
b _08086816
.align 2, 0
_08086790: .4byte 0x03000E10
_08086794: .4byte 0x08086A5D
_08086798:
adds r0, r6, #0
bl TryInteractWithPlayer
adds r4, r0, #0
cmp r4, #0
beq _08086816
ldr r0, _080867C0
adds r0, r7, r0
movs r1, #0x81
strb r1, [r0]
ldrb r0, [r6, #1]
cmp r0, #0
beq _08086816
ldr r0, _080867C4
bl SetKeyInterceptCallback
adds r0, r4, #0
bl sub_08086ECC
b _08086816
.align 2, 0
_080867C0: .4byte 0x03000E10
_080867C4: .4byte 0x08086A5D
_080867C8:
adds r0, r6, #0
bl sub_08086CA4
cmp r0, #0
beq _08086816
ldr r0, _080867EC
adds r0, r7, r0
movs r1, #0x81
strb r1, [r0]
ldrb r0, [r6, #1]
cmp r0, #0
beq _08086816
ldr r0, _080867F0
bl SetKeyInterceptCallback
bl sub_08086E74
b _08086816
.align 2, 0
_080867EC: .4byte 0x03000E10
_080867F0: .4byte 0x08086A81
_080867F4:
adds r0, r6, #0
bl sub_08086CA4
cmp r0, #0
beq _08086816
ldr r0, _08086828
adds r0, r7, r0
movs r1, #0x81
strb r1, [r0]
ldrb r0, [r6, #1]
cmp r0, #0
beq _08086816
ldr r0, _0808682C
bl SetKeyInterceptCallback
bl sub_08086E74
_08086816:
mov r0, r8
cmp r0, #0x17
beq _0808683C
cmp r0, #0x17
bgt _08086830
cmp r0, #0x16
beq _0808684C
b _0808688A
.align 2, 0
_08086828: .4byte 0x03000E10
_0808682C: .4byte 0x08086AA5
_08086830:
mov r1, r8
cmp r1, #0x1a
beq _0808685C
cmp r1, #0x1d
beq _0808687C
b _0808688A
_0808683C:
ldr r0, _08086848
adds r0, r7, r0
movs r1, #0x83
strb r1, [r0]
b _0808688A
.align 2, 0
_08086848: .4byte 0x03000E10
_0808684C:
ldr r0, _08086858
adds r0, r7, r0
movs r1, #0x82
strb r1, [r0]
b _0808688A
.align 2, 0
_08086858: .4byte 0x03000E10
_0808685C:
ldr r0, _08086874
adds r0, r7, r0
movs r1, #0x80
strb r1, [r0]
ldrb r0, [r6, #1]
cmp r0, #0
beq _0808688A
ldr r0, _08086878
bl SetKeyInterceptCallback
b _0808688A
.align 2, 0
_08086874: .4byte 0x03000E10
_08086878: .4byte 0x08086A15
_0808687C:
ldr r0, _08086898
adds r1, r7, r0
ldrb r0, [r1]
cmp r0, #0x82
bne _0808688A
movs r0, #0x81
strb r0, [r1]
_0808688A:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08086898: .4byte 0x03000E10
thumb_func_end HandleLinkPlayerKeyInput
thumb_func_start UpdateAllLinkPlayers
UpdateAllLinkPlayers: @ 0x0808689C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x14
mov r8, r1
movs r6, #0
add r5, sp, #0x10
mov sb, r5
adds r7, r0, #0
_080868B0:
ldrb r4, [r7]
movs r0, #0
strh r0, [r5]
adds r0, r6, #0
mov r1, r8
mov r2, sp
bl LoadTradeRoomPlayer
adds r0, r6, #0
adds r1, r4, #0
mov r2, sp
adds r3, r5, #0
bl HandleLinkPlayerKeyInput
ldr r0, _08086900
adds r0, r6, r0
ldrb r0, [r0]
cmp r0, #0x80
bne _080868E0
adds r0, r4, #0
bl GetDirectionForDpadKey
mov r1, sb
strh r0, [r1]
_080868E0:
lsls r0, r6, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r5]
bl SetPlayerFacingDirection
adds r7, #2
adds r6, #1
cmp r6, #3
ble _080868B0
add sp, #0x14
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08086900: .4byte 0x03000E10
thumb_func_end UpdateAllLinkPlayers
thumb_func_start UpdateHeldKeyCode
UpdateHeldKeyCode: @ 0x08086904
push {r4, lr}
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldr r1, _0808691C
adds r0, r0, r1
lsrs r0, r0, #0x10
cmp r0, #0xc
bhi _08086924
ldr r0, _08086920
strh r4, [r0]
b _0808692A
.align 2, 0
_0808691C: .4byte 0xFFEF0000
_08086920: .4byte 0x03005B08
_08086924:
ldr r1, _08086968
movs r0, #0x11
strh r0, [r1]
_0808692A:
ldr r0, _0808696C
ldrb r0, [r0]
cmp r0, #0
beq _08086960
bl GetLinkSendQueueLength
cmp r0, #1
bls _08086960
bl IsUpdateLinkStateCBActive
cmp r0, #1
bne _08086960
bl IsSendingKeysToLink
cmp r0, #1
bne _08086960
cmp r4, #0x11
blt _08086960
cmp r4, #0x15
ble _0808695A
cmp r4, #0x19
bgt _08086960
cmp r4, #0x18
blt _08086960
_0808695A:
ldr r1, _08086968
movs r0, #0
strh r0, [r1]
_08086960:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08086968: .4byte 0x03005B08
_0808696C: .4byte 0x0300319C
thumb_func_end UpdateHeldKeyCode
thumb_func_start KeyInterCB_ReadButtons
KeyInterCB_ReadButtons: @ 0x08086970
push {lr}
ldr r2, _08086984
ldrh r1, [r2, #0x2c]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _08086988
movs r0, #0x13
b _080869C8
.align 2, 0
_08086984: .4byte 0x03002360
_08086988:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08086994
movs r0, #0x12
b _080869C8
_08086994:
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080869A0
movs r0, #0x14
b _080869C8
_080869A0:
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _080869AC
movs r0, #0x15
b _080869C8
_080869AC:
ldrh r1, [r2, #0x2e]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _080869BA
movs r0, #0x18
b _080869C8
_080869BA:
movs r0, #1
ands r0, r1
cmp r0, #0
bne _080869C6
movs r0, #0x11
b _080869C8
_080869C6:
movs r0, #0x19
_080869C8:
pop {r1}
bx r1
thumb_func_end KeyInterCB_ReadButtons
thumb_func_start GetDirectionForDpadKey
GetDirectionForDpadKey: @ 0x080869CC
push {lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r1, r0, #0
cmp r0, #0x13
beq _080869F2
cmp r0, #0x13
bgt _080869E2
cmp r0, #0x12
beq _080869F6
b _080869FA
_080869E2:
cmp r1, #0x14
beq _080869EE
cmp r1, #0x15
bne _080869FA
movs r0, #4
b _080869FC
_080869EE:
movs r0, #3
b _080869FC
_080869F2:
movs r0, #1
b _080869FC
_080869F6:
movs r0, #2
b _080869FC
_080869FA:
movs r0, #0
_080869FC:
pop {r1}
bx r1
thumb_func_end GetDirectionForDpadKey
thumb_func_start ResetPlayerHeldKeys
ResetPlayerHeldKeys: @ 0x08086A00
push {lr}
movs r2, #0x11
adds r1, r0, #6
_08086A06:
strh r2, [r1]
subs r1, #2
cmp r1, r0
bge _08086A06
pop {r0}
bx r0
.align 2, 0
thumb_func_end ResetPlayerHeldKeys
thumb_func_start KeyInterCB_SelfIdle
KeyInterCB_SelfIdle: @ 0x08086A14
push {r4, lr}
adds r4, r0, #0
bl ScriptContext2_IsEnabled
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08086A28
movs r0, #0x11
b _08086A4A
_08086A28:
bl GetLinkRecvQueueLength
cmp r0, #4
bls _08086A34
movs r0, #0x1b
b _08086A4A
_08086A34:
bl GetLinkSendQueueLength
cmp r0, #4
bls _08086A40
movs r0, #0x1c
b _08086A4A
_08086A40:
adds r0, r4, #0
bl KeyInterCB_ReadButtons
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
_08086A4A:
pop {r4}
pop {r1}
bx r1
thumb_func_end KeyInterCB_SelfIdle
thumb_func_start sub_08086A50
sub_08086A50: @ 0x08086A50
push {lr}
bl CheckRfuKeepAliveTimer
movs r0, #0x11
pop {r1}
bx r1
thumb_func_end sub_08086A50
thumb_func_start KeyInterCB_DeferToEventScript
KeyInterCB_DeferToEventScript: @ 0x08086A5C
push {r4, lr}
bl ScriptContext2_IsEnabled
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r4, #0x11
cmp r0, #1
beq _08086A74
movs r4, #0x1a
ldr r0, _08086A7C
bl SetKeyInterceptCallback
_08086A74:
adds r0, r4, #0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08086A7C: .4byte 0x08086A51
thumb_func_end KeyInterCB_DeferToEventScript
thumb_func_start KeyInterCB_DeferToRecvQueue
KeyInterCB_DeferToRecvQueue: @ 0x08086A80
push {r4, lr}
bl GetLinkRecvQueueLength
movs r4, #0x11
cmp r0, #2
bhi _08086A98
movs r4, #0x1a
bl ScriptContext2_Disable
ldr r0, _08086AA0
bl SetKeyInterceptCallback
_08086A98:
adds r0, r4, #0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08086AA0: .4byte 0x08086A51
thumb_func_end KeyInterCB_DeferToRecvQueue
thumb_func_start KeyInterCB_DeferToSendQueue
KeyInterCB_DeferToSendQueue: @ 0x08086AA4
push {r4, lr}
bl GetLinkSendQueueLength
movs r4, #0x11
cmp r0, #2
bhi _08086ABC
movs r4, #0x1a
bl ScriptContext2_Disable
ldr r0, _08086AC4
bl SetKeyInterceptCallback
_08086ABC:
adds r0, r4, #0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08086AC4: .4byte 0x08086A51
thumb_func_end KeyInterCB_DeferToSendQueue
thumb_func_start KeyInterCB_DoNothingAndKeepAlive
KeyInterCB_DoNothingAndKeepAlive: @ 0x08086AC8
push {lr}
bl CheckRfuKeepAliveTimer
movs r0, #0x11
pop {r1}
bx r1
thumb_func_end KeyInterCB_DoNothingAndKeepAlive
thumb_func_start sub_08086AD4
sub_08086AD4: @ 0x08086AD4
push {lr}
ldr r1, _08086AF8
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0x82
bne _08086B04
ldr r0, _08086AFC
ldrh r1, [r0, #0x2e]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08086B08
ldr r0, _08086B00
bl SetKeyInterceptCallback
movs r0, #0x1d
b _08086B0A
.align 2, 0
_08086AF8: .4byte 0x03000E10
_08086AFC: .4byte 0x03002360
_08086B00: .4byte 0x08086AC9
_08086B04:
bl CheckRfuKeepAliveTimer
_08086B08:
movs r0, #0x11
_08086B0A:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08086AD4
thumb_func_start sub_08086B10
sub_08086B10: @ 0x08086B10
push {lr}
ldr r0, _08086B20
bl SetKeyInterceptCallback
movs r0, #0x16
pop {r1}
bx r1
.align 2, 0
_08086B20: .4byte 0x08086AD5
thumb_func_end sub_08086B10
thumb_func_start KeyInterCB_SendNothing_2
KeyInterCB_SendNothing_2: @ 0x08086B24
movs r0, #0x11
bx lr
thumb_func_end KeyInterCB_SendNothing_2
thumb_func_start KeyInterCB_WaitForPlayersToExit
KeyInterCB_WaitForPlayersToExit: @ 0x08086B28
push {lr}
ldr r1, _08086B54
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0x83
beq _08086B38
bl CheckRfuKeepAliveTimer
_08086B38:
movs r0, #0x83
bl AreAllPlayersInTradingState
cmp r0, #1
bne _08086B4E
ldr r0, _08086B58
bl ScriptContext1_SetupScript
ldr r0, _08086B5C
bl SetKeyInterceptCallback
_08086B4E:
movs r0, #0x11
pop {r1}
bx r1
.align 2, 0
_08086B54: .4byte 0x03000E10
_08086B58: .4byte 0x082471F2
_08086B5C: .4byte 0x08086B25
thumb_func_end KeyInterCB_WaitForPlayersToExit
thumb_func_start KeyInterCB_SendExitRoomKey
KeyInterCB_SendExitRoomKey: @ 0x08086B60
push {lr}
ldr r0, _08086B70
bl SetKeyInterceptCallback
movs r0, #0x17
pop {r1}
bx r1
.align 2, 0
_08086B70: .4byte 0x08086B29
thumb_func_end KeyInterCB_SendExitRoomKey
thumb_func_start KeyInterCB_SendNothing
KeyInterCB_SendNothing: @ 0x08086B74
movs r0, #0x11
bx lr
thumb_func_end KeyInterCB_SendNothing
thumb_func_start sub_08086B78
sub_08086B78: @ 0x08086B78
push {lr}
movs r0, #0x83
bl IsAnyPlayerInTradingState
cmp r0, #1
beq _08086BB4
ldr r0, _08086BB8
ldr r2, [r0]
ldr r1, _08086BBC
adds r3, r0, #0
cmp r2, r1
bne _08086B9E
ldr r1, _08086BC0
ldr r0, _08086BC4
ldrb r0, [r0]
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0x82
bne _08086BD6
_08086B9E:
ldr r1, [r3]
ldr r0, _08086BC8
cmp r1, r0
bne _08086BCC
ldr r1, _08086BC0
ldr r0, _08086BC4
ldrb r0, [r0]
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0x81
bne _08086BCC
_08086BB4:
movs r0, #2
b _08086BDC
.align 2, 0
_08086BB8: .4byte 0x03000E14
_08086BBC: .4byte 0x08086AD5
_08086BC0: .4byte 0x03000E10
_08086BC4: .4byte 0x03005B14
_08086BC8: .4byte 0x08086AC9
_08086BCC:
movs r0, #0x82
bl AreAllPlayersInTradingState
cmp r0, #0
bne _08086BDA
_08086BD6:
movs r0, #0
b _08086BDC
_08086BDA:
movs r0, #1
_08086BDC:
pop {r1}
bx r1
thumb_func_end sub_08086B78
thumb_func_start sub_08086BE0
sub_08086BE0: @ 0x08086BE0
push {lr}
movs r0, #0x83
bl IsAnyPlayerInTradingState
pop {r1}
bx r1
thumb_func_end sub_08086BE0
thumb_func_start sub_08086BEC
sub_08086BEC: @ 0x08086BEC
push {lr}
ldr r0, _08086BFC
bl SetKeyInterceptCallback
movs r0, #0
pop {r1}
bx r1
.align 2, 0
_08086BFC: .4byte 0x08086B11
thumb_func_end sub_08086BEC
thumb_func_start sub_08086C00
sub_08086C00: @ 0x08086C00
push {lr}
ldr r0, _08086C10
bl SetKeyInterceptCallback
movs r0, #0
pop {r1}
bx r1
.align 2, 0
_08086C10: .4byte 0x08086A5D
thumb_func_end sub_08086C00
thumb_func_start QueueExitLinkRoomKey
QueueExitLinkRoomKey: @ 0x08086C14
push {lr}
ldr r0, _08086C24
bl SetKeyInterceptCallback
movs r0, #0
pop {r1}
bx r1
.align 2, 0
_08086C24: .4byte 0x08086B61
thumb_func_end QueueExitLinkRoomKey
thumb_func_start sub_08086C28
sub_08086C28: @ 0x08086C28
push {lr}
ldr r0, _08086C38
bl SetKeyInterceptCallback
movs r0, #0
pop {r1}
bx r1
.align 2, 0
_08086C38: .4byte 0x08086B75
thumb_func_end sub_08086C28
thumb_func_start LoadTradeRoomPlayer
LoadTradeRoomPlayer: @ 0x08086C3C
push {r4, r5, r6, lr}
sub sp, #4
adds r4, r0, #0
adds r6, r2, #0
strb r4, [r6]
movs r0, #0
cmp r4, r1
bne _08086C4E
movs r0, #1
_08086C4E:
strb r0, [r6, #1]
ldr r1, _08086CA0
lsls r0, r4, #2
adds r0, r0, r1
ldrb r0, [r0, #3]
strb r0, [r6, #2]
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
adds r0, r4, #0
bl GetLinkPlayerFacingDirection
strb r0, [r6, #3]
mov r5, sp
adds r5, #2
adds r0, r4, #0
mov r1, sp
adds r2, r5, #0
bl GetLinkPlayerCoords
mov r0, sp
ldrh r0, [r0]
strh r0, [r6, #4]
ldrh r0, [r5]
strh r0, [r6, #6]
adds r0, r4, #0
bl GetLinkPlayerElevation
strb r0, [r6, #8]
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r5, r2]
bl MapGridGetMetatileBehaviorAt
strh r0, [r6, #0xc]
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08086CA0: .4byte 0x02031FA8
thumb_func_end LoadTradeRoomPlayer
thumb_func_start sub_08086CA4
sub_08086CA4: @ 0x08086CA4
push {lr}
ldrb r0, [r0, #2]
cmp r0, #2
beq _08086CB0
cmp r0, #0
bne _08086CB4
_08086CB0:
movs r0, #1
b _08086CB6
_08086CB4:
movs r0, #0
_08086CB6:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08086CA4
thumb_func_start sub_08086CBC
sub_08086CBC: @ 0x08086CBC
push {lr}
ldrb r0, [r0, #2]
cmp r0, #2
beq _08086CC8
cmp r0, #0
bne _08086CCC
_08086CC8:
movs r0, #1
b _08086CCE
_08086CCC:
movs r0, #0
_08086CCE:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08086CBC
thumb_func_start TryGetTileEventScript
TryGetTileEventScript: @ 0x08086CD4
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #2]
cmp r0, #2
bne _08086CE6
adds r0, r1, #4
bl GetCoordEventScriptAtMapPosition
b _08086CE8
_08086CE6:
movs r0, #0
_08086CE8:
pop {r1}
bx r1
thumb_func_end TryGetTileEventScript
thumb_func_start PlayerIsAtSouthExit
PlayerIsAtSouthExit: @ 0x08086CEC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #2]
cmp r0, #2
beq _08086CFA
cmp r0, #0
bne _08086D10
_08086CFA:
ldrb r0, [r4, #0xc]
bl MetatileBehavior_IsSouthArrowWarp
lsls r0, r0, #0x18
cmp r0, #0
beq _08086D10
ldrb r0, [r4, #3]
cmp r0, #1
bne _08086D10
movs r0, #1
b _08086D12
_08086D10:
movs r0, #0
_08086D12:
pop {r4}
pop {r1}
bx r1
thumb_func_end PlayerIsAtSouthExit
thumb_func_start TryInteractWithPlayer
TryInteractWithPlayer: @ 0x08086D18
push {r4, lr}
sub sp, #8
adds r4, r0, #0
ldrb r0, [r4, #2]
cmp r0, #0
beq _08086D2C
cmp r0, #2
beq _08086D2C
movs r0, #0
b _08086DDA
_08086D2C:
ldr r0, [r4, #4]
ldr r1, [r4, #8]
str r0, [sp]
str r1, [sp, #4]
ldr r3, _08086D9C
ldrb r0, [r4, #3]
lsls r0, r0, #3
adds r0, r0, r3
ldr r0, [r0]
mov r1, sp
ldrh r1, [r1]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r1, _08086DA0
ldr r2, [sp]
ands r2, r1
orrs r2, r0
str r2, [sp]
asrs r1, r2, #0x10
ldrb r0, [r4, #3]
lsls r0, r0, #3
adds r3, #4
adds r0, r0, r3
ldr r0, [r0]
adds r0, r0, r1
lsls r0, r0, #0x10
ldr r1, _08086DA4
ands r1, r2
orrs r1, r0
str r1, [sp]
ldr r2, _08086DA8
ldr r0, [sp, #4]
ands r0, r2
str r0, [sp, #4]
mov r0, sp
movs r2, #0
ldrsh r0, [r0, r2]
asrs r1, r1, #0x10
bl GetLinkPlayerIdAt
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
adds r2, r1, #0
cmp r1, #4
beq _08086DD0
ldrb r0, [r4, #1]
cmp r0, #0
beq _08086D98
ldr r0, _08086DAC
adds r0, r1, r0
ldrb r0, [r0]
cmp r0, #0x80
beq _08086DB4
_08086D98:
ldr r0, _08086DB0
b _08086DDA
.align 2, 0
_08086D9C: .4byte 0x0830FCB0
_08086DA0: .4byte 0xFFFF0000
_08086DA4: .4byte 0x0000FFFF
_08086DA8: .4byte 0xFFFFFF00
_08086DAC: .4byte 0x03000E10
_08086DB0: .4byte 0x0824717B
_08086DB4:
adds r0, r2, #0
bl GetLinkTrainerCardColor
cmp r0, #0
bne _08086DC8
ldr r0, _08086DC4
b _08086DDA
.align 2, 0
_08086DC4: .4byte 0x0824715D
_08086DC8:
ldr r0, _08086DCC
b _08086DDA
.align 2, 0
_08086DCC: .4byte 0x0824716C
_08086DD0:
ldrb r1, [r4, #0xc]
ldrb r2, [r4, #3]
mov r0, sp
bl GetInteractedLinkPlayerScript
_08086DDA:
add sp, #8
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end TryInteractWithPlayer
thumb_func_start GetDirectionForEventScript
GetDirectionForEventScript: @ 0x08086DE4
push {lr}
adds r1, r0, #0
ldr r0, _08086E30
cmp r1, r0
beq _08086E2A
ldr r0, _08086E34
cmp r1, r0
beq _08086E6C
ldr r0, _08086E38
cmp r1, r0
beq _08086E2A
ldr r0, _08086E3C
cmp r1, r0
beq _08086E6C
ldr r0, _08086E40
cmp r1, r0
beq _08086E2A
ldr r0, _08086E44
cmp r1, r0
beq _08086E6C
ldr r0, _08086E48
cmp r1, r0
beq _08086E2A
ldr r0, _08086E4C
cmp r1, r0
beq _08086E6C
ldr r0, _08086E50
cmp r1, r0
beq _08086E2A
ldr r0, _08086E54
cmp r1, r0
beq _08086E6C
ldr r0, _08086E58
cmp r1, r0
bne _08086E5C
_08086E2A:
movs r0, #0xa
b _08086E6E
.align 2, 0
_08086E30: .4byte 0x08247067
_08086E34: .4byte 0x08247082
_08086E38: .4byte 0x0824709D
_08086E3C: .4byte 0x082470B8
_08086E40: .4byte 0x082470FC
_08086E44: .4byte 0x08247111
_08086E48: .4byte 0x08247126
_08086E4C: .4byte 0x0824713B
_08086E50: .4byte 0x08247053
_08086E54: .4byte 0x0824705D
_08086E58: .4byte 0x082470D4
_08086E5C:
ldr r0, _08086E68
cmp r1, r0
beq _08086E6C
movs r0, #0
b _08086E6E
.align 2, 0
_08086E68: .4byte 0x082470DE
_08086E6C:
movs r0, #9
_08086E6E:
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetDirectionForEventScript
thumb_func_start sub_08086E74
sub_08086E74: @ 0x08086E74
push {lr}
bl ScriptContext2_Enable
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08086E74
thumb_func_start InitLinkRoomStartMenuScript
InitLinkRoomStartMenuScript: @ 0x08086E80
push {lr}
movs r0, #6
bl PlaySE
bl ShowStartMenu
bl ScriptContext2_Enable
pop {r0}
bx r0
thumb_func_end InitLinkRoomStartMenuScript
thumb_func_start InitMenuBasedScript
InitMenuBasedScript: @ 0x08086E94
push {r4, lr}
adds r4, r0, #0
movs r0, #5
bl PlaySE
adds r0, r4, #0
bl ScriptContext1_SetupScript
bl ScriptContext2_Enable
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end InitMenuBasedScript
thumb_func_start CreateConfirmLeaveTradeRoomPrompt
CreateConfirmLeaveTradeRoomPrompt: @ 0x08086EB0
push {lr}
movs r0, #6
bl PlaySE
ldr r0, _08086EC8
bl ScriptContext1_SetupScript
bl ScriptContext2_Enable
pop {r0}
bx r0
.align 2, 0
_08086EC8: .4byte 0x082471CE
thumb_func_end CreateConfirmLeaveTradeRoomPrompt
thumb_func_start sub_08086ECC
sub_08086ECC: @ 0x08086ECC
push {r4, lr}
adds r4, r0, #0
movs r0, #5
bl PlaySE
adds r0, r4, #0
bl ScriptContext1_SetupScript
bl ScriptContext2_Enable
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08086ECC
thumb_func_start sub_08086EE8
sub_08086EE8: @ 0x08086EE8
push {lr}
ldr r0, _08086EF8
bl ScriptContext1_SetupScript
bl ScriptContext2_Enable
pop {r0}
bx r0
.align 2, 0
_08086EF8: .4byte 0x082471E8
thumb_func_end sub_08086EE8
thumb_func_start sub_08086EFC
sub_08086EFC: @ 0x08086EFC
push {lr}
bl IsUpdateLinkStateCBActive
cmp r0, #0
bne _08086F0A
movs r0, #0
b _08086F24
_08086F0A:
bl GetLinkRecvQueueLength
cmp r0, #2
bls _08086F1C
ldr r1, _08086F18
movs r0, #1
b _08086F20
.align 2, 0
_08086F18: .4byte 0x03000E18
_08086F1C:
ldr r1, _08086F28
movs r0, #0
_08086F20:
strb r0, [r1]
ldrb r0, [r1]
_08086F24:
pop {r1}
bx r1
.align 2, 0
_08086F28: .4byte 0x03000E18
thumb_func_end sub_08086EFC
thumb_func_start sub_08086F2C
sub_08086F2C: @ 0x08086F2C
push {lr}
bl GetLinkRecvQueueLength
cmp r0, #1
bls _08086F90
bl IsUpdateLinkStateCBActive
cmp r0, #1
bne _08086F90
bl IsSendingKeysToLink
cmp r0, #1
bne _08086F90
ldr r0, _08086F7C
ldr r1, [r0]
ldr r0, _08086F80
cmp r1, r0
beq _08086F78
ldr r0, _08086F84
cmp r1, r0
bne _08086F90
ldr r0, _08086F88
ldrb r2, [r0]
movs r1, #0
strb r1, [r0]
cmp r2, #1
beq _08086F78
ldr r2, _08086F8C
ldrb r1, [r2, #7]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08086F90
ldrb r1, [r2, #0xa]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08086F90
_08086F78:
movs r0, #1
b _08086F92
.align 2, 0
_08086F7C: .4byte 0x03000E14
_08086F80: .4byte 0x08086A81
_08086F84: .4byte 0x08086A5D
_08086F88: .4byte 0x03000E18
_08086F8C: .4byte 0x02037C74
_08086F90:
movs r0, #0
_08086F92:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08086F2C
thumb_func_start sub_08086F98
sub_08086F98: @ 0x08086F98
push {lr}
bl GetLinkSendQueueLength
cmp r0, #1
bls _08086FBC
bl IsUpdateLinkStateCBActive
cmp r0, #1
bne _08086FBC
bl IsSendingKeysToLink
cmp r0, #1
bne _08086FBC
ldr r0, _08086FC0
ldr r1, [r0]
ldr r0, _08086FC4
cmp r1, r0
beq _08086FC8
_08086FBC:
movs r0, #0
b _08086FCA
.align 2, 0
_08086FC0: .4byte 0x03000E14
_08086FC4: .4byte 0x08086AA5
_08086FC8:
movs r0, #1
_08086FCA:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08086F98
thumb_func_start sub_08086FD0
sub_08086FD0: @ 0x08086FD0
push {lr}
ldr r0, _08086FE8
ldrb r0, [r0]
cmp r0, #0
bne _08086FEC
bl IsSendingKeysToLink
cmp r0, #0
beq _08086FEC
movs r0, #1
b _08086FEE
.align 2, 0
_08086FE8: .4byte 0x0300319C
_08086FEC:
movs r0, #0
_08086FEE:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08086FD0
thumb_func_start GetLinkSendQueueLength
GetLinkSendQueueLength: @ 0x08086FF4
push {lr}
ldr r0, _08087008
ldrb r0, [r0]
cmp r0, #0
bne _08087014
ldr r0, _0808700C
ldr r1, _08087010
adds r0, r0, r1
ldrb r0, [r0]
b _0808701C
.align 2, 0
_08087008: .4byte 0x0300319C
_0808700C: .4byte 0x03003210
_08087010: .4byte 0x00000339
_08087014:
ldr r0, _08087020
ldr r1, _08087024
adds r0, r0, r1
ldrb r0, [r0]
_0808701C:
pop {r1}
bx r1
.align 2, 0
_08087020: .4byte 0x030050A0
_08087024: .4byte 0x000008D2
thumb_func_end GetLinkSendQueueLength
thumb_func_start ZeroLinkPlayerEventObject
ZeroLinkPlayerEventObject: @ 0x08087028
movs r1, #0
str r1, [r0]
bx lr
.align 2, 0
thumb_func_end ZeroLinkPlayerEventObject
thumb_func_start ClearLinkPlayerEventObjects
ClearLinkPlayerEventObjects: @ 0x08087030
push {lr}
ldr r0, _08087040
movs r1, #0
movs r2, #0x10
bl memset
pop {r0}
bx r0
.align 2, 0
_08087040: .4byte 0x02031FA8
thumb_func_end ClearLinkPlayerEventObjects
thumb_func_start ZeroEventObject
ZeroEventObject: @ 0x08087044
push {lr}
movs r1, #0
movs r2, #0x24
bl memset
pop {r0}
bx r0
.align 2, 0
thumb_func_end ZeroEventObject
thumb_func_start SpawnLinkPlayerEventObject
SpawnLinkPlayerEventObject: @ 0x08087054
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sb, r1
mov sl, r2
mov r8, r3
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
mov r0, sb
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sb, r0
mov r1, sl
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
mov sl, r1
mov r2, r8
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r8, r2
bl GetFirstInactiveEventObjectId
adds r6, r0, #0
lsls r6, r6, #0x18
lsrs r6, r6, #0x18
lsls r4, r7, #2
ldr r0, _080870F8
adds r4, r4, r0
lsls r5, r6, #3
adds r5, r5, r6
lsls r5, r5, #2
ldr r0, _080870FC
adds r5, r5, r0
adds r0, r4, #0
bl ZeroLinkPlayerEventObject
adds r0, r5, #0
bl ZeroEventObject
movs r2, #0
movs r1, #1
movs r0, #1
strb r0, [r4]
strb r7, [r4, #1]
strb r6, [r4, #2]
strb r2, [r4, #3]
ldrb r0, [r5]
orrs r0, r1
mov r2, r8
ands r2, r1
lsls r2, r2, #1
movs r1, #3
rsbs r1, r1, #0
ands r0, r1
orrs r0, r2
strb r0, [r5]
movs r0, #2
strb r0, [r5, #0x19]
movs r0, #0x40
strb r0, [r5, #4]
mov r0, sb
lsls r0, r0, #0x10
asrs r0, r0, #0x10
mov sb, r0
mov r1, sl
lsls r1, r1, #0x10
asrs r1, r1, #0x10
mov sl, r1
adds r0, r5, #0
mov r1, sb
mov r2, sl
bl InitLinkPlayerEventObjectPos
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080870F8: .4byte 0x02031FA8
_080870FC: .4byte 0x02036FF0
thumb_func_end SpawnLinkPlayerEventObject
thumb_func_start InitLinkPlayerEventObjectPos
InitLinkPlayerEventObjectPos: @ 0x08087100
push {r4, lr}
adds r4, r0, #0
adds r0, r1, #0
adds r1, r2, #0
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
strh r0, [r4, #0x10]
strh r1, [r4, #0x12]
strh r0, [r4, #0x14]
strh r1, [r4, #0x16]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
lsls r1, r1, #0x10
asrs r1, r1, #0x10
adds r2, r4, #0
adds r2, #0xc
adds r3, r4, #0
adds r3, #0xe
bl SetSpritePosToMapCoords
ldrh r0, [r4, #0xc]
adds r0, #8
strh r0, [r4, #0xc]
adds r0, r4, #0
bl EventObjectUpdateZCoord
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end InitLinkPlayerEventObjectPos
thumb_func_start sub_08087140
sub_08087140: @ 0x08087140
push {lr}
lsls r0, r0, #0x18
lsls r1, r1, #0x18
lsrs r2, r1, #0x18
ldr r1, _08087168
lsrs r0, r0, #0x16
adds r1, r0, r1
ldrb r0, [r1]
cmp r0, #0
beq _08087162
ldrb r0, [r1, #2]
lsls r1, r0, #3
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _0808716C
adds r1, r1, r0
strb r2, [r1, #0x19]
_08087162:
pop {r0}
bx r0
.align 2, 0
_08087168: .4byte 0x02031FA8
_0808716C: .4byte 0x02036FF0
thumb_func_end sub_08087140
thumb_func_start sub_08087170
sub_08087170: @ 0x08087170
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x16
ldr r1, _080871B0
adds r5, r0, r1
ldrb r1, [r5, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080871B4
adds r4, r0, r1
ldrb r0, [r4, #4]
cmp r0, #0x40
beq _0808719C
adds r1, r0, #0
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080871B8
adds r0, r0, r1
bl DestroySprite
_0808719C:
movs r0, #0
strb r0, [r5]
ldrb r1, [r4]
subs r0, #2
ands r0, r1
strb r0, [r4]
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080871B0: .4byte 0x02031FA8
_080871B4: .4byte 0x02036FF0
_080871B8: .4byte 0x020205AC
thumb_func_end sub_08087170
thumb_func_start GetSpriteForLinkedPlayer
GetSpriteForLinkedPlayer: @ 0x080871BC
lsls r0, r0, #0x18
ldr r1, _080871D4
lsrs r0, r0, #0x16
adds r0, r0, r1
ldrb r1, [r0, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080871D8
adds r0, r0, r1
ldrb r0, [r0, #4]
bx lr
.align 2, 0
_080871D4: .4byte 0x02031FA8
_080871D8: .4byte 0x02036FF0
thumb_func_end GetSpriteForLinkedPlayer
thumb_func_start GetLinkPlayerCoords
GetLinkPlayerCoords: @ 0x080871DC
lsls r0, r0, #0x18
ldr r3, _080871FC
lsrs r0, r0, #0x16
adds r0, r0, r3
ldrb r3, [r0, #2]
lsls r0, r3, #3
adds r0, r0, r3
lsls r0, r0, #2
ldr r3, _08087200
adds r0, r0, r3
ldrh r3, [r0, #0x10]
strh r3, [r1]
ldrh r0, [r0, #0x12]
strh r0, [r2]
bx lr
.align 2, 0
_080871FC: .4byte 0x02031FA8
_08087200: .4byte 0x02036FF0
thumb_func_end GetLinkPlayerCoords
thumb_func_start GetLinkPlayerFacingDirection
GetLinkPlayerFacingDirection: @ 0x08087204
lsls r0, r0, #0x18
ldr r1, _0808721C
lsrs r0, r0, #0x16
adds r0, r0, r1
ldrb r1, [r0, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _08087220
adds r0, r0, r1
ldrb r0, [r0, #0x19]
bx lr
.align 2, 0
_0808721C: .4byte 0x02031FA8
_08087220: .4byte 0x02036FF0
thumb_func_end GetLinkPlayerFacingDirection
thumb_func_start GetLinkPlayerElevation
GetLinkPlayerElevation: @ 0x08087224
lsls r0, r0, #0x18
ldr r1, _08087240
lsrs r0, r0, #0x16
adds r0, r0, r1
ldrb r1, [r0, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _08087244
adds r0, r0, r1
ldrb r0, [r0, #0xb]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1c
bx lr
.align 2, 0
_08087240: .4byte 0x02031FA8
_08087244: .4byte 0x02036FF0
thumb_func_end GetLinkPlayerElevation
thumb_func_start sub_08087248
sub_08087248: @ 0x08087248
lsls r0, r0, #0x18
ldr r1, _08087268
lsrs r0, r0, #0x16
adds r0, r0, r1
ldrb r1, [r0, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _0808726C
adds r0, r0, r1
adds r0, #0x21
movs r1, #0
ldrsb r1, [r0, r1]
movs r0, #0x10
subs r0, r0, r1
bx lr
.align 2, 0
_08087268: .4byte 0x02031FA8
_0808726C: .4byte 0x02036FF0
thumb_func_end sub_08087248
thumb_func_start GetLinkPlayerIdAt
GetLinkPlayerIdAt: @ 0x08087270
push {r4, r5, r6, lr}
movs r2, #0
ldr r5, _080872B4
lsls r0, r0, #0x10
asrs r4, r0, #0x10
lsls r1, r1, #0x10
asrs r3, r1, #0x10
_0808727E:
lsls r0, r2, #2
adds r1, r0, r5
ldrb r0, [r1]
cmp r0, #0
beq _080872BC
ldrb r0, [r1, #3]
cmp r0, #0
beq _08087292
cmp r0, #2
bne _080872BC
_08087292:
ldrb r1, [r1, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080872B8
adds r1, r0, r1
movs r6, #0x10
ldrsh r0, [r1, r6]
cmp r0, r4
bne _080872BC
movs r6, #0x12
ldrsh r0, [r1, r6]
cmp r0, r3
bne _080872BC
adds r0, r2, #0
b _080872C8
.align 2, 0
_080872B4: .4byte 0x02031FA8
_080872B8: .4byte 0x02036FF0
_080872BC:
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #3
bls _0808727E
movs r0, #4
_080872C8:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetLinkPlayerIdAt
thumb_func_start SetPlayerFacingDirection
SetPlayerFacingDirection: @ 0x080872D0
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsls r1, r1, #0x18
lsrs r3, r1, #0x18
adds r2, r3, #0
lsrs r0, r0, #0x16
ldr r1, _08087300
adds r5, r0, r1
ldrb r1, [r5, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _08087304
adds r6, r0, r1
ldrb r0, [r5]
cmp r0, #0
beq _0808732C
cmp r3, #0xa
bls _08087308
ldrb r0, [r6]
movs r1, #4
orrs r0, r1
strb r0, [r6]
b _0808732C
.align 2, 0
_08087300: .4byte 0x02031FA8
_08087304: .4byte 0x02036FF0
_08087308:
ldr r4, _08087334
ldr r1, _08087338
ldrb r0, [r5, #3]
lsls r0, r0, #2
adds r0, r0, r1
ldr r3, [r0]
adds r0, r5, #0
adds r1, r6, #0
bl _call_via_r3
lsls r0, r0, #0x18
lsrs r0, r0, #0x16
adds r0, r0, r4
ldr r2, [r0]
adds r0, r5, #0
adds r1, r6, #0
bl _call_via_r2
_0808732C:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08087334: .4byte 0x0830FD4C
_08087338: .4byte 0x0830FD14
thumb_func_end SetPlayerFacingDirection
thumb_func_start MovementEventModeCB_Normal
MovementEventModeCB_Normal: @ 0x0808733C
push {r4, lr}
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
ldr r4, _08087358
lsls r3, r2, #2
adds r3, r3, r4
ldr r3, [r3]
bl _call_via_r3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08087358: .4byte 0x0830FD20
thumb_func_end MovementEventModeCB_Normal
thumb_func_start MovementEventModeCB_Ignored
MovementEventModeCB_Ignored: @ 0x0808735C
movs r0, #1
bx lr
thumb_func_end MovementEventModeCB_Ignored
thumb_func_start MovementEventModeCB_Normal_2
MovementEventModeCB_Normal_2: @ 0x08087360
push {r4, lr}
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
ldr r4, _0808737C
lsls r3, r2, #2
adds r3, r3, r4
ldr r3, [r3]
bl _call_via_r3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0808737C: .4byte 0x0830FD20
thumb_func_end MovementEventModeCB_Normal_2
thumb_func_start FacingHandler_DoNothing
FacingHandler_DoNothing: @ 0x08087380
movs r0, #0
bx lr
thumb_func_end FacingHandler_DoNothing
thumb_func_start FacingHandler_DpadMovement
FacingHandler_DpadMovement: @ 0x08087384
push {r4, r5, r6, lr}
sub sp, #4
adds r4, r0, #0
adds r5, r1, #0
lsls r0, r2, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r5, #0x19]
bl FlipVerticalAndClearForced
strb r0, [r5, #0x19]
ldrb r1, [r5, #0x19]
mov r6, sp
adds r6, #2
adds r0, r5, #0
mov r2, sp
adds r3, r6, #0
bl EventObjectMoveDestCoords
ldrb r0, [r4, #2]
ldrb r1, [r5, #0x19]
mov r2, sp
movs r3, #0
ldrsh r2, [r2, r3]
movs r4, #0
ldrsh r3, [r6, r4]
bl LinkPlayerDetectCollision
lsls r0, r0, #0x18
cmp r0, #0
bne _080873E2
adds r1, r5, #0
adds r1, #0x21
movs r0, #0x10
strb r0, [r1]
mov r0, sp
movs r2, #0
ldrsh r1, [r0, r2]
movs r3, #0
ldrsh r2, [r6, r3]
adds r0, r5, #0
bl ShiftEventObjectCoords
adds r0, r5, #0
bl EventObjectUpdateZCoord
movs r0, #1
b _080873E4
_080873E2:
movs r0, #0
_080873E4:
add sp, #4
pop {r4, r5, r6}
pop {r1}
bx r1
thumb_func_end FacingHandler_DpadMovement
thumb_func_start FacingHandler_ForcedFacingChange
FacingHandler_ForcedFacingChange: @ 0x080873EC
push {r4, lr}
adds r4, r1, #0
lsls r0, r2, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r4, #0x19]
bl FlipVerticalAndClearForced
strb r0, [r4, #0x19]
movs r0, #0
pop {r4}
pop {r1}
bx r1
thumb_func_end FacingHandler_ForcedFacingChange
thumb_func_start MovementStatusHandler_EnterFreeMode
MovementStatusHandler_EnterFreeMode: @ 0x08087404
movs r1, #0
strb r1, [r0, #3]
bx lr
.align 2, 0
thumb_func_end MovementStatusHandler_EnterFreeMode
thumb_func_start MovementStatusHandler_TryAdvanceScript
MovementStatusHandler_TryAdvanceScript: @ 0x0808740C
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r4, r1, #0
adds r5, r4, #0
adds r5, #0x21
ldrb r0, [r5]
subs r0, #1
strb r0, [r5]
movs r0, #1
strb r0, [r6, #3]
ldrb r0, [r4, #0x19]
adds r1, #0xc
adds r2, r4, #0
adds r2, #0xe
bl MoveCoords
ldrb r0, [r5]
cmp r0, #0
bne _0808743C
adds r0, r4, #0
bl ShiftStillEventObjectCoords
movs r0, #2
strb r0, [r6, #3]
_0808743C:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end MovementStatusHandler_TryAdvanceScript
thumb_func_start FlipVerticalAndClearForced
FlipVerticalAndClearForced: @ 0x08087444
push {lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r1, #0x18
lsrs r2, r1, #0x18
subs r0, #1
cmp r0, #9
bhi _0808749C
lsls r0, r0, #2
ldr r1, _08087460
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08087460: .4byte 0x08087464
_08087464: @ jump table
.4byte _0808748C @ case 0
.4byte _08087490 @ case 1
.4byte _08087494 @ case 2
.4byte _08087498 @ case 3
.4byte _0808749C @ case 4
.4byte _0808749C @ case 5
.4byte _0808748C @ case 6
.4byte _08087490 @ case 7
.4byte _08087494 @ case 8
.4byte _08087498 @ case 9
_0808748C:
movs r0, #2
b _0808749E
_08087490:
movs r0, #1
b _0808749E
_08087494:
movs r0, #3
b _0808749E
_08087498:
movs r0, #4
b _0808749E
_0808749C:
adds r0, r2, #0
_0808749E:
pop {r1}
bx r1
.align 2, 0
thumb_func_end FlipVerticalAndClearForced
thumb_func_start LinkPlayerDetectCollision
LinkPlayerDetectCollision: @ 0x080874A4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r8, r0
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
mov ip, r2
lsls r3, r3, #0x10
movs r4, #0
ldr r0, _08087508
mov sb, r0
lsrs r2, r3, #0x10
mov sl, r2
asrs r6, r3, #0x10
_080874C8:
mov r7, ip
lsls r3, r7, #0x10
mov r0, sl
lsls r5, r0, #0x10
cmp r4, r8
beq _0808750C
lsls r0, r4, #3
adds r0, r0, r4
lsls r0, r0, #2
mov r2, sb
adds r1, r0, r2
movs r7, #0x10
ldrsh r0, [r1, r7]
asrs r2, r3, #0x10
cmp r0, r2
bne _080874F0
movs r7, #0x12
ldrsh r0, [r1, r7]
cmp r0, r6
beq _08087502
_080874F0:
movs r7, #0x14
ldrsh r0, [r1, r7]
cmp r0, r2
bne _0808750C
movs r0, #0x16
ldrsh r1, [r1, r0]
asrs r0, r5, #0x10
cmp r1, r0
bne _0808750C
_08087502:
movs r0, #1
b _08087522
.align 2, 0
_08087508: .4byte 0x02036FF0
_0808750C:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0xf
bls _080874C8
asrs r0, r3, #0x10
asrs r1, r5, #0x10
bl MapGridIsImpassableAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
_08087522:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
thumb_func_end LinkPlayerDetectCollision
thumb_func_start CreateLinkPlayerSprite
CreateLinkPlayerSprite: @ 0x08087530
push {r4, r5, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
lsls r1, r1, #0x18
lsrs r3, r1, #0x18
lsls r2, r5, #2
ldr r0, _08087564
adds r2, r2, r0
ldrb r1, [r2, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _08087568
adds r4, r0, r1
ldrb r0, [r2]
cmp r0, #0
beq _080875DE
subs r0, r3, #1
cmp r0, #4
bhi _080875BA
lsls r0, r0, #2
ldr r1, _0808756C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08087564: .4byte 0x02031FA8
_08087568: .4byte 0x02036FF0
_0808756C: .4byte 0x08087570
_08087570: @ jump table
.4byte _08087590 @ case 0
.4byte _08087590 @ case 1
.4byte _0808759C @ case 2
.4byte _08087584 @ case 3
.4byte _08087584 @ case 4
_08087584:
ldrb r0, [r4]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1f
bl sub_0808B6D0
b _080875A8
_08087590:
ldrb r0, [r4]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1f
bl GetFRLGAvatarGraphicsIdByGender
b _080875A8
_0808759C:
ldrb r1, [r4]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1f
movs r0, #0
bl GetPlayerAvatarGraphicsIdByStateIdAndGender
_080875A8:
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, _080875E8
movs r2, #0
str r2, [sp]
movs r3, #0
bl AddPseudoEventObject
strb r0, [r4, #4]
_080875BA:
ldrb r1, [r4, #4]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080875EC
adds r0, r0, r1
adds r3, r0, #0
adds r3, #0x3e
ldrb r1, [r3]
movs r2, #2
orrs r1, r2
strb r1, [r3]
strh r5, [r0, #0x2e]
ldrb r1, [r4]
movs r0, #5
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
_080875DE:
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080875E8: .4byte 0x080875F1
_080875EC: .4byte 0x020205AC
thumb_func_end CreateLinkPlayerSprite
thumb_func_start SpriteCB_LinkPlayer
SpriteCB_LinkPlayer: @ 0x080875F0
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #0x2e
ldrsh r4, [r5, r0]
lsls r4, r4, #2
ldr r0, _08087654
adds r4, r4, r0
ldrb r1, [r4, #2]
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _08087658
adds r6, r0, r1
ldrh r0, [r6, #0xc]
strh r0, [r5, #0x20]
ldrh r0, [r6, #0xe]
strh r0, [r5, #0x22]
ldrb r0, [r6, #0xb]
lsrs r0, r0, #4
adds r1, r5, #0
movs r2, #1
bl SetObjectSubpriorityByZCoord
ldrb r0, [r6, #0xb]
lsrs r0, r0, #4
bl sub_08096718
movs r1, #3
ands r1, r0
lsls r1, r1, #2
ldrb r2, [r5, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #5]
ldrb r0, [r4, #3]
cmp r0, #0
bne _0808765C
ldrb r0, [r6, #0x19]
bl GetJumpInPlaceMovementAction
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r5, #0
bl StartSpriteAnim
b _0808766E
.align 2, 0
_08087654: .4byte 0x02031FA8
_08087658: .4byte 0x02036FF0
_0808765C:
ldrb r0, [r6, #0x19]
bl GetJumpInPlaceTurnAroundMovementAction
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r5, #0
bl StartSpriteAnimIfDifferent
_0808766E:
adds r0, r5, #0
movs r1, #0
bl UpdateEventObjectSpriteVisibility
ldrb r0, [r6]
lsls r0, r0, #0x1d
cmp r0, #0
bge _080876A0
ldrh r0, [r5, #0x3c]
movs r1, #4
ands r1, r0
lsls r1, r1, #0x10
adds r3, r5, #0
adds r3, #0x3e
lsrs r1, r1, #0x12
lsls r1, r1, #2
ldrb r2, [r3]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrh r0, [r5, #0x3c]
adds r0, #1
strh r0, [r5, #0x3c]
_080876A0:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end SpriteCB_LinkPlayer