summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-28 18:00:52 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-28 18:00:52 -0400
commitf3a632156b5ccf591677f079fb7a41162d4167f3 (patch)
treed7e29e92507cc629254524882275db9b4c00c1ef
parentf5f4d6bc1fa9927796ed7a683fb262d2f50a87c3 (diff)
through sub_8057854
-rw-r--r--asm/overworld.s1691
-rw-r--r--include/bg_regs.h1
-rw-r--r--include/event_object_movement.h4
-rw-r--r--include/field_camera.h3
-rw-r--r--include/field_effect.h1
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/field_specials.h2
-rw-r--r--include/field_tasks.h1
-rw-r--r--include/field_weather.h3
-rw-r--r--include/fieldmap.h4
-rw-r--r--include/map_preview_screen.h1
-rw-r--r--include/overworld.h4
-rw-r--r--include/quest_log.h5
-rw-r--r--include/quest_log_objects.h1
-rw-r--r--include/script.h6
-rw-r--r--src/bg_regs.c2
-rw-r--r--src/overworld.c818
-rw-r--r--src/script.c6
18 files changed, 858 insertions, 1696 deletions
diff --git a/asm/overworld.s b/asm/overworld.s
index 5e0d2e37f..e5c493d0c 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -5,1677 +5,6 @@
.text
- thumb_func_start map_loading_iteration_3
-map_loading_iteration_3: @ 8056A5C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bls _08056A68
- b _08056B6E
-_08056A68:
- lsls r0, 2
- ldr r1, _08056A74 @ =_08056A78
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08056A74: .4byte _08056A78
- .align 2, 0
-_08056A78:
- .4byte _08056AB0
- .4byte _08056ABE
- .4byte _08056AC6
- .4byte _08056ACE
- .4byte _08056AE4
- .4byte _08056AEE
- .4byte _08056AF4
- .4byte _08056B04
- .4byte _08056B14
- .4byte _08056B30
- .4byte _08056B36
- .4byte _08056B3C
- .4byte _08056B58
- .4byte _08056B6A
-_08056AB0:
- bl InitOverworldBgs
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- b _08056B62
-_08056ABE:
- movs r0, 0x1
- bl mli0_load_map
- b _08056B62
-_08056AC6:
- movs r0, 0x1
- bl sub_8057024
- b _08056B62
-_08056ACE:
- bl sub_8057178
- bl sub_8057074
- bl sub_80571A8
- bl sub_8057140
- bl SetHelpContextForMap
- b _08056B62
-_08056AE4:
- bl InitCurrentFlashLevelScanlineEffect
- bl sub_8056F1C
- b _08056B62
-_08056AEE:
- bl move_tilemap_camera_to_upper_left_corner
- b _08056B62
-_08056AF4:
- ldr r0, _08056B00 @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _08056B62
- .align 2, 0
-_08056B00: .4byte gMapHeader
-_08056B04:
- ldr r0, _08056B10 @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _08056B62
- .align 2, 0
-_08056B10: .4byte gMapHeader
-_08056B14:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08056B6E
- ldr r0, _08056B2C @ =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08056B62
- .align 2, 0
-_08056B2C: .4byte gMapHeader
-_08056B30:
- bl DrawWholeMapView
- b _08056B62
-_08056B36:
- bl InitTilesetAnimations
- b _08056B62
-_08056B3C:
- ldr r0, _08056B54 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08056B62
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- b _08056B62
- .align 2, 0
-_08056B54: .4byte gWirelessCommType
-_08056B58:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _08056B6E
-_08056B62:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08056B6E
-_08056B6A:
- movs r0, 0x1
- b _08056B70
-_08056B6E:
- movs r0, 0
-_08056B70:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end map_loading_iteration_3
-
- thumb_func_start sub_8056B78
-sub_8056B78: @ 8056B78
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0xE
- bls _08056B86
- b _08056CD0
-_08056B86:
- lsls r0, 2
- ldr r1, _08056B90 @ =_08056B94
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08056B90: .4byte _08056B94
- .align 2, 0
-_08056B94:
- .4byte _08056BD0
- .4byte _08056BE0
- .4byte _08056BE6
- .4byte _08056BEE
- .4byte _08056BFE
- .4byte _08056C20
- .4byte _08056C2A
- .4byte _08056C30
- .4byte _08056C40
- .4byte _08056C50
- .4byte _08056C6C
- .4byte _08056C72
- .4byte _08056C78
- .4byte _08056CC0
- .4byte _08056BFA
-_08056BD0:
- bl InitOverworldBgs
- bl FieldClearVBlankHBlankCallbacks
- adds r0, r5, 0
- bl mli0_load_map
- b _08056CCA
-_08056BE0:
- bl sub_8111F14
- b _08056CCA
-_08056BE6:
- adds r0, r5, 0
- bl sub_8057024
- b _08056CCA
-_08056BEE:
- bl sub_8113748
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08056CCA
-_08056BFA:
- movs r0, 0x1
- b _08056CD2
-_08056BFE:
- bl mli4_mapscripts_and_other
- bl sub_8057114
- ldr r0, _08056C1C @ =gQuestLogState
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08056C16
- bl sub_80CC534
- bl sub_80CC59C
-_08056C16:
- bl SetHelpContextForMap
- b _08056CCA
- .align 2, 0
-_08056C1C: .4byte gQuestLogState
-_08056C20:
- bl InitCurrentFlashLevelScanlineEffect
- bl sub_8056F1C
- b _08056CCA
-_08056C2A:
- bl move_tilemap_camera_to_upper_left_corner
- b _08056CCA
-_08056C30:
- ldr r0, _08056C3C @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _08056CCA
- .align 2, 0
-_08056C3C: .4byte gMapHeader
-_08056C40:
- ldr r0, _08056C4C @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _08056CCA
- .align 2, 0
-_08056C4C: .4byte gMapHeader
-_08056C50:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08056CD0
- ldr r0, _08056C68 @ =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08056CCA
- .align 2, 0
-_08056C68: .4byte gMapHeader
-_08056C6C:
- bl DrawWholeMapView
- b _08056CCA
-_08056C72:
- bl InitTilesetAnimations
- b _08056CCA
-_08056C78:
- bl GetLastUsedWarpMapSectionId
- ldr r5, _08056CA4 @ =gMapHeader
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r5, 0x14]
- cmp r0, r1
- beq _08056CA8
- ldrb r0, [r5, 0x14]
- movs r1, 0x1
- bl MapHasPreviewScreen_HandleQLState2
- cmp r0, 0x1
- bne _08056CA8
- ldrb r0, [r5, 0x14]
- bl MapPreview_LoadGfx
- ldrb r0, [r5, 0x14]
- bl MapPreview_StartForestTransition
- b _08056CCA
- .align 2, 0
-_08056CA4: .4byte gMapHeader
-_08056CA8:
- ldr r0, _08056CBC @ =gMapHeader
- ldrb r1, [r0, 0x19]
- movs r0, 0xFC
- ands r0, r1
- cmp r0, 0x4
- bne _08056CCA
- movs r0, 0
- bl ShowMapNamePopup
- b _08056CCA
- .align 2, 0
-_08056CBC: .4byte gMapHeader
-_08056CC0:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _08056CD0
-_08056CCA:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08056CD0:
- movs r0, 0
-_08056CD2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8056B78
-
- thumb_func_start sub_8056CD8
-sub_8056CD8: @ 8056CD8
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x4
- bhi _08056D3C
- lsls r0, 2
- ldr r1, _08056CEC @ =_08056CF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08056CEC: .4byte _08056CF0
- .align 2, 0
-_08056CF0:
- .4byte _08056D04
- .4byte _08056D30
- .4byte _08056D1C
- .4byte _08056D26
- .4byte _08056D38
-_08056D04:
- bl InitOverworldBgs
- bl sub_8111F14
- movs r0, 0
- bl sub_8057024
- bl sub_8057100
- bl sub_8057114
- b _08056D30
-_08056D1C:
- bl sub_8056F08
- bl SetHelpContextForMap
- b _08056D30
-_08056D26:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _08056D3C
-_08056D30:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08056D3C
-_08056D38:
- movs r0, 0x1
- b _08056D3E
-_08056D3C:
- movs r0, 0
-_08056D3E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8056CD8
-
- thumb_func_start map_loading_iteration_2_link
-map_loading_iteration_2_link: @ 8056D44
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bls _08056D50
- b _08056E54
-_08056D50:
- lsls r0, 2
- ldr r1, _08056D5C @ =_08056D60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08056D5C: .4byte _08056D60
- .align 2, 0
-_08056D60:
- .4byte _08056D98
- .4byte _08056DA2
- .4byte _08056DAE
- .4byte _08056DC0
- .4byte _08056DCA
- .4byte _08056DD0
- .4byte _08056DE0
- .4byte _08056DF0
- .4byte _08056E0C
- .4byte _08056E12
- .4byte _08056E3E
- .4byte _08056E18
- .4byte _08056E34
- .4byte _08056E46
-_08056D98:
- bl InitOverworldBgs
- bl FieldClearVBlankHBlankCallbacks
- b _08056E3E
-_08056DA2:
- bl sub_8111F14
- movs r0, 0x1
- bl sub_8057024
- b _08056E3E
-_08056DAE:
- bl sub_8057230
- bl sub_8057100
- bl sub_805715C
- bl SetHelpContextForMap
- b _08056E3E
-_08056DC0:
- bl InitCurrentFlashLevelScanlineEffect
- bl sub_8056F1C
- b _08056E3E
-_08056DCA:
- bl move_tilemap_camera_to_upper_left_corner
- b _08056E3E
-_08056DD0:
- ldr r0, _08056DDC @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _08056E3E
- .align 2, 0
-_08056DDC: .4byte gMapHeader
-_08056DE0:
- ldr r0, _08056DEC @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _08056E3E
- .align 2, 0
-_08056DEC: .4byte gMapHeader
-_08056DF0:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08056E54
- ldr r0, _08056E08 @ =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08056E3E
- .align 2, 0
-_08056E08: .4byte gMapHeader
-_08056E0C:
- bl DrawWholeMapView
- b _08056E3E
-_08056E12:
- bl InitTilesetAnimations
- b _08056E3E
-_08056E18:
- ldr r0, _08056E30 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08056E3E
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- b _08056E3E
- .align 2, 0
-_08056E30: .4byte gWirelessCommType
-_08056E34:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _08056E54
-_08056E3E:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08056E54
-_08056E46:
- bl SetFieldVBlankCallback
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- b _08056E56
-_08056E54:
- movs r0, 0
-_08056E56:
- 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: @ 8056E5C
- push {r4,lr}
- adds r4, r0, 0
-_08056E60:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8056B78
- cmp r0, 0
- beq _08056E60
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end do_load_map_stuff_loop
-
- thumb_func_start MoveSaveBlocks_ResetHeap_
-MoveSaveBlocks_ResetHeap_: @ 8056E74
- push {lr}
- bl MoveSaveBlocks_ResetHeap
- pop {r0}
- bx r0
- thumb_func_end MoveSaveBlocks_ResetHeap_
-
- thumb_func_start sub_8056E80
-sub_8056E80: @ 8056E80
- push {r4-r7,lr}
- sub sp, 0x4
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl ScanlineEffect_Stop
- ldr r2, _08056EF8 @ =0x05000002
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08056EFC @ =0x040000d4
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _08056F00 @ =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _08056F04 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_08056EBE:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _08056EBE
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- bl LoadOam
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08056EF8: .4byte 0x05000002
-_08056EFC: .4byte 0x040000d4
-_08056F00: .4byte 0x810001ff
-_08056F04: .4byte 0x81000800
- thumb_func_end sub_8056E80
-
- thumb_func_start sub_8056F08
-sub_8056F08: @ 8056F08
- push {lr}
- bl InitCurrentFlashLevelScanlineEffect
- bl sub_8056F1C
- bl mapdata_load_assets_to_gpu_and_full_redraw
- pop {r0}
- bx r0
- thumb_func_end sub_8056F08
-
- thumb_func_start sub_8056F1C
-sub_8056F1C: @ 8056F1C
- push {r4,lr}
- bl ClearScheduledBgCopiesToVram
- bl ResetTempTileDataBuffers
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r1, _0805700C @ =0x00001f1f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _08057010 @ =0x00000101
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0xFF
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0xFF
- bl SetGpuReg
- ldr r4, _08057014 @ =0x0000ffff
- movs r0, 0x42
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x46
- adds r1, r4, 0
- bl SetGpuReg
- ldr r0, _08057018 @ =gBLDCNTTarget2BGFlags
- ldrh r1, [r0, 0x2]
- ldrh r2, [r0, 0x4]
- orrs r1, r2
- ldrh r0, [r0, 0x6]
- orrs r1, r0
- movs r2, 0x82
- lsls r2, 5
- adds r0, r2, 0
- orrs r1, r0
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _0805701C @ =0x0000070d
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x3
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _08057020 @ =0x00007060
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805700C: .4byte 0x00001f1f
-_08057010: .4byte 0x00000101
-_08057014: .4byte 0x0000ffff
-_08057018: .4byte gBLDCNTTarget2BGFlags
-_0805701C: .4byte 0x0000070d
-_08057020: .4byte 0x00007060
- thumb_func_end sub_8056F1C
-
- thumb_func_start sub_8057024
-sub_8057024: @ 8057024
- 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 _08057050
- movs r0, 0
- bl InitObjectEventPalettes
- b _08057056
-_08057050:
- movs r0, 0x1
- bl InitObjectEventPalettes
-_08057056:
- bl FieldEffectActiveListClear
- bl StartWeather
- bl ResumePausedWeather
- cmp r4, 0
- bne _0805706A
- bl SetUpFieldTasks
-_0805706A:
- bl mapheader_run_script_with_tag_x5
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8057024
-
- thumb_func_start sub_8057074
-sub_8057074: @ 8057074
- push {lr}
- ldr r0, _08057094 @ =gTotalCameraPixelOffsetX
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08057098 @ =gTotalCameraPixelOffsetY
- strh r1, [r0]
- bl ResetObjectEvents
- movs r0, 0
- movs r1, 0
- bl TrySpawnObjectEvents
- bl mapheader_run_first_tag4_script_list_match
- pop {r0}
- bx r0
- .align 2, 0
-_08057094: .4byte gTotalCameraPixelOffsetX
-_08057098: .4byte gTotalCameraPixelOffsetY
- thumb_func_end sub_8057074
-
- thumb_func_start mli4_mapscripts_and_other
-mli4_mapscripts_and_other: @ 805709C
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, _080570F4 @ =gTotalCameraPixelOffsetX
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080570F8 @ =gTotalCameraPixelOffsetY
- strh r1, [r0]
- bl ResetObjectEvents
- mov r4, sp
- adds r4, 0x2
- 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, 0x1]
- ldr r3, _080570FC @ =gSaveBlock2Ptr
- ldr r3, [r3]
- ldrb r3, [r3, 0x8]
- bl InitPlayerAvatar
- ldrb r0, [r5]
- bl SetPlayerAvatarTransitionFlags
- bl ResetInitialPlayerAvatarState
- movs r0, 0
- movs r1, 0
- bl TrySpawnObjectEvents
- bl mapheader_run_first_tag4_script_list_match
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080570F4: .4byte gTotalCameraPixelOffsetX
-_080570F8: .4byte gTotalCameraPixelOffsetY
-_080570FC: .4byte gSaveBlock2Ptr
- thumb_func_end mli4_mapscripts_and_other
-
- thumb_func_start sub_8057100
-sub_8057100: @ 8057100
- push {lr}
- movs r0, 0
- movs r1, 0
- bl sub_805EDF0
- bl mapheader_run_script_with_tag_x7
- pop {r0}
- bx r0
- thumb_func_end sub_8057100
-
- thumb_func_start sub_8057114
-sub_8057114: @ 8057114
- push {lr}
- ldr r2, _08057138 @ =gObjectEvents
- ldr r3, _0805713C @ =gPlayerAvatar
- ldrb r1, [r3, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldrb r0, [r3, 0x4]
- bl InitCameraUpdateCallback
- pop {r0}
- bx r0
- .align 2, 0
-_08057138: .4byte gObjectEvents
-_0805713C: .4byte gPlayerAvatar
- thumb_func_end sub_8057114
-
- thumb_func_start sub_8057140
-sub_8057140: @ 8057140
- push {lr}
- ldr r0, _08057158 @ =gLocalLinkPlayerId
- ldrb r0, [r0]
- bl sub_8058504
- lsls r0, 24
- lsrs r0, 24
- bl InitCameraUpdateCallback
- pop {r0}
- bx r0
- .align 2, 0
-_08057158: .4byte gLocalLinkPlayerId
- thumb_func_end sub_8057140
-
- thumb_func_start sub_805715C
-sub_805715C: @ 805715C
- push {lr}
- ldr r0, _08057174 @ =gLocalLinkPlayerId
- ldrb r0, [r0]
- bl sub_8058504
- lsls r0, 24
- lsrs r0, 24
- bl InitCameraUpdateCallback
- pop {r0}
- bx r0
- .align 2, 0
-_08057174: .4byte gLocalLinkPlayerId
- thumb_func_end sub_805715C
-
- thumb_func_start sub_8057178
-sub_8057178: @ 8057178
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetCameraFocusCoords
- mov r2, sp
- ldr r0, _080571A4 @ =gLocalLinkPlayerId
- ldrb r1, [r0]
- ldrh r0, [r2]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- bl SetCameraFocusCoords
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080571A4: .4byte gLocalLinkPlayerId
- thumb_func_end sub_8057178
-
- thumb_func_start sub_80571A8
-sub_80571A8: @ 80571A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetCameraFocusCoords
- mov r3, sp
- mov r2, sp
- ldr r0, _08057224 @ =gLocalLinkPlayerId
- ldrb r1, [r0]
- ldrh r0, [r2]
- subs r0, r1
- strh r0, [r3]
- movs r6, 0
- ldr r0, _08057228 @ =gFieldLinkPlayerCount
- mov r8, r4
- ldrb r0, [r0]
- cmp r6, r0
- bcs _08057212
- ldr r7, _0805722C @ =gLinkPlayers
-_080571D8:
- lsls r5, r6, 24
- lsrs r5, 24
- mov r0, sp
- ldrh r1, [r0]
- adds r1, r6, r1
- lsls r1, 16
- asrs r1, 16
- mov r0, r8
- movs r3, 0
- ldrsh r2, [r0, r3]
- lsls r4, r6, 3
- subs r4, r6
- lsls r4, 2
- adds r4, r7
- ldrb r3, [r4, 0x13]
- adds r0, r5, 0
- bl SpawnLinkPlayerObjectEvent
- ldrb r1, [r4]
- adds r0, r5, 0
- bl sub_8058878
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _08057228 @ =gFieldLinkPlayerCount
- ldrb r0, [r0]
- cmp r6, r0
- bcc _080571D8
-_08057212:
- bl sub_80578EC
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057224: .4byte gLocalLinkPlayerId
-_08057228: .4byte gFieldLinkPlayerCount
-_0805722C: .4byte gLinkPlayers
- thumb_func_end sub_80571A8
-
- thumb_func_start sub_8057230
-sub_8057230: @ 8057230
- push {r4,r5,lr}
- movs r4, 0
- ldr r0, _08057264 @ =gFieldLinkPlayerCount
- ldrb r0, [r0]
- cmp r4, r0
- bcs _0805725E
- ldr r5, _08057268 @ =gLinkPlayers
-_0805723E:
- lsls r0, r4, 24
- lsrs r0, 24
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- adds r1, r5
- ldrb r1, [r1]
- bl sub_8058878
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _08057264 @ =gFieldLinkPlayerCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _0805723E
-_0805725E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08057264: .4byte gFieldLinkPlayerCount
-_08057268: .4byte gLinkPlayers
- thumb_func_end sub_8057230
-
- thumb_func_start sub_805726C
-sub_805726C: @ 805726C
- push {lr}
- bl FieldClearVBlankHBlankCallbacks
- ldr r1, _08057298 @ =gUnknown_2036E28
- movs r0, 0x1
- strb r0, [r1]
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- movs r0, 0
- bl SetMainCallback1
- ldr r0, _0805729C @ =CB2_DoChangeMap
- bl SetMainCallback2
- ldr r1, _080572A0 @ =gMain
- ldr r0, _080572A4 @ =sub_80572D8
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_08057298: .4byte gUnknown_2036E28
-_0805729C: .4byte CB2_DoChangeMap
-_080572A0: .4byte gMain
-_080572A4: .4byte sub_80572D8
- thumb_func_end sub_805726C
-
- thumb_func_start sub_80572A8
-sub_80572A8: @ 80572A8
- push {lr}
- bl FieldClearVBlankHBlankCallbacks
- ldr r0, _080572D0 @ =gUnknown_2036E28
- movs r1, 0x1
- strb r1, [r0]
- bl LoadSaveblockMapHeader
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- movs r0, 0
- bl SetMainCallback1
- ldr r0, _080572D4 @ =sub_80572D8
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080572D0: .4byte gUnknown_2036E28
-_080572D4: .4byte sub_80572D8
- thumb_func_end sub_80572A8
-
- thumb_func_start sub_80572D8
-sub_80572D8: @ 80572D8
- push {lr}
- ldr r0, _080572F4 @ =gMain + 0x438
- bl sub_8057300
- bl SetFieldVBlankCallback
- ldr r0, _080572F8 @ =CB1_Overworld
- bl SetMainCallback1
- ldr r0, _080572FC @ =CB2_Overworld
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080572F4: .4byte gMain + 0x438
-_080572F8: .4byte CB1_Overworld
-_080572FC: .4byte CB2_Overworld
- thumb_func_end sub_80572D8
-
- thumb_func_start sub_8057300
-sub_8057300: @ 8057300
- push {r4,lr}
- adds r4, r0, 0
-_08057304:
- adds r0, r4, 0
- bl sub_8057314
- cmp r0, 0
- beq _08057304
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8057300
-
- thumb_func_start sub_8057314
-sub_8057314: @ 8057314
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xA
- bls _08057320
- b _0805741A
-_08057320:
- lsls r0, 2
- ldr r1, _0805732C @ =_08057330
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0805732C: .4byte _08057330
- .align 2, 0
-_08057330:
- .4byte _0805735C
- .4byte _080573A0
- .4byte _080573A6
- .4byte _080573AE
- .4byte _080573B8
- .4byte _080573C2
- .4byte _080573C8
- .4byte _080573D8
- .4byte _080573E8
- .4byte _08057404
- .4byte _0805740A
-_0805735C:
- bl InitOverworldBgs
- bl FieldClearVBlankHBlankCallbacks
- bl sub_8111F14
- bl sub_81113E4
- bl sub_8111438
- bl sub_8110AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08057390
- ldr r1, _0805738C @ =gUnknown_2031DE0
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
- bl mli0_load_map
- b _08057412
- .align 2, 0
-_0805738C: .4byte gUnknown_2031DE0
-_08057390:
- ldr r1, _0805739C @ =gUnknown_2031DE0
- movs r0, 0x1
- strb r0, [r1]
- bl sub_80559A8
- b _08057412
- .align 2, 0
-_0805739C: .4byte gUnknown_2031DE0
-_080573A0:
- bl sub_8110FCC
- b _08057412
-_080573A6:
- movs r0, 0
- bl sub_8057024
- b _08057412
-_080573AE:
- bl sub_8057100
- bl sub_8057114
- b _08057412
-_080573B8:
- bl InitCurrentFlashLevelScanlineEffect
- bl sub_8056F1C
- b _08057412
-_080573C2:
- bl move_tilemap_camera_to_upper_left_corner
- b _08057412
-_080573C8:
- ldr r0, _080573D4 @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _08057412
- .align 2, 0
-_080573D4: .4byte gMapHeader
-_080573D8:
- ldr r0, _080573E4 @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _08057412
- .align 2, 0
-_080573E4: .4byte gMapHeader
-_080573E8:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08057428
- ldr r0, _08057400 @ =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08057412
- .align 2, 0
-_08057400: .4byte gMapHeader
-_08057404:
- bl DrawWholeMapView
- b _08057412
-_0805740A:
- bl InitTilesetAnimations
- bl sub_815A540
-_08057412:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08057428
-_0805741A:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _08057428
- movs r0, 0x1
- b _0805742A
-_08057428:
- movs r0, 0
-_0805742A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8057314
-
- thumb_func_start sub_8057430
-sub_8057430: @ 8057430
- push {lr}
- bl FieldClearVBlankHBlankCallbacks
- bl StopMapMusic
- ldr r1, _08057484 @ =gUnknown_2036E28
- movs r0, 0x3
- strb r0, [r1]
- bl ResetSafariZoneFlag_
- bl LoadSaveblockMapHeader
- bl LoadSaveblockObjEventScripts
- bl UnfreezeObjectEvents
- bl sub_8054E40
- bl InitMapFromSavedGame
- bl PlayTimeCounter_Start
- bl ScriptContext1_Init
- ldr r1, _08057488 @ =gUnknown_2031DE0
- movs r0, 0x1
- strb r0, [r1]
- bl UseContinueGameWarp
- cmp r0, 0x1
- bne _08057490
- bl ClearContinueGameWarpStatus
- bl SetWarpDestinationToContinueGameWarp
- bl WarpIntoMap
- ldr r0, _0805748C @ =CB2_LoadMap
- bl SetMainCallback2
- b _0805749A
- .align 2, 0
-_08057484: .4byte gUnknown_2036E28
-_08057488: .4byte gUnknown_2031DE0
-_0805748C: .4byte CB2_LoadMap
-_08057490:
- ldr r0, _080574A0 @ =CB1_Overworld
- bl SetMainCallback1
- bl CB2_ReturnToField
-_0805749A:
- pop {r0}
- bx r0
- .align 2, 0
-_080574A0: .4byte CB1_Overworld
- thumb_func_end sub_8057430
-
- thumb_func_start Overworld_CreditsMainCB
-Overworld_CreditsMainCB: @ 80574A4
- push {r4,lr}
- ldr r0, _080574E8 @ =gPaletteFade
- ldrb r0, [r0, 0x7]
- lsrs r0, 7
- adds r4, r0, 0
- cmp r4, 0
- beq _080574B8
- movs r0, 0
- bl SetVBlankCallback
-_080574B8:
- bl RunTasks
- bl AnimateSprites
- bl sub_805ACF0
- bl UpdateCameraPanning
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl UpdateTilesetAnimations
- bl DoScheduledBgTilemapCopiesToVram
- cmp r4, 0
- beq _080574E0
- bl SetFieldVBlankCallback
-_080574E0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080574E8: .4byte gPaletteFade
- thumb_func_end Overworld_CreditsMainCB
-
- thumb_func_start sub_80574EC
-sub_80574EC: @ 80574EC
- push {lr}
- ldr r0, _08057500 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08057504
- movs r0, 0
- b _08057506
- .align 2, 0
-_08057500: .4byte gPaletteFade
-_08057504:
- movs r0, 0x1
-_08057506:
- pop {r1}
- bx r1
- thumb_func_end sub_80574EC
-
- thumb_func_start Overworld_DoScrollSceneForCredits
-Overworld_DoScrollSceneForCredits: @ 805750C
- push {lr}
- ldr r3, _08057520 @ =gUnknown_2031DE4
- str r1, [r3]
- ldr r1, _08057524 @ =gUnknown_2036E28
- strb r2, [r1]
- movs r1, 0
- bl sub_8057528
- pop {r1}
- bx r1
- .align 2, 0
-_08057520: .4byte gUnknown_2031DE4
-_08057524: .4byte gUnknown_2036E28
- thumb_func_end Overworld_DoScrollSceneForCredits
-
- thumb_func_start sub_8057528
-sub_8057528: @ 8057528
- push {r4-r7,lr}
- adds r7, r0, 0
- ldrb r1, [r7]
- cmp r1, 0x1
- beq _08057560
- cmp r1, 0x1
- bgt _0805753C
- cmp r1, 0
- beq _08057546
- b _08057648
-_0805753C:
- cmp r1, 0x2
- beq _08057620
- cmp r1, 0x3
- beq _0805762C
- b _08057648
-_08057546:
- ldr r0, _08057558 @ =gUnknown_2031DEA
- strh r1, [r0]
- ldr r0, _0805755C @ =gUnknown_2031DE8
- strh r1, [r0]
-_0805754E:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _08057648
- .align 2, 0
-_08057558: .4byte gUnknown_2031DEA
-_0805755C: .4byte gUnknown_2031DE8
-_08057560:
- ldr r3, _080575F0 @ =gUnknown_2031DEA
- movs r0, 0
- ldrsh r1, [r3, r0]
- ldr r0, _080575F4 @ =gUnknown_2031DE4
- ldr r4, [r0]
- lsls r1, 3
- adds r1, r4
- ldrb r2, [r1, 0x2]
- ldr r0, _080575F8 @ =0xffffff00
- ands r0, r5
- orrs r0, r2
- ldrb r1, [r1, 0x4]
- lsls r1, 8
- ldr r2, _080575FC @ =0xffff00ff
- ands r0, r2
- adds r5, r0, 0
- orrs r5, r1
- movs r0, 0xFF
- lsls r0, 16
- orrs r5, r0
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- movs r2, 0
- ldrsh r1, [r3, r2]
- lsls r1, 3
- adds r1, r4
- ldrh r2, [r1]
- ldr r0, _08057600 @ =0xffff0000
- ands r0, r6
- orrs r0, r2
- ldrh r1, [r1, 0x2]
- lsls r1, 16
- ldr r2, _08057604 @ =0x0000ffff
- ands r0, r2
- adds r6, r0, 0
- orrs r6, r1
- ldr r0, _08057608 @ =sWarpDestination
- str r5, [r0]
- str r6, [r0, 0x4]
- ldr r1, _0805760C @ =gUnknown_2031DE8
- movs r2, 0
- ldrsh r0, [r3, r2]
- lsls r0, 3
- adds r0, r4
- ldrh r0, [r0, 0x4]
- strh r0, [r1]
- bl WarpIntoMap
- ldr r2, _08057610 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- movs r0, 0
- bl SetMainCallback1
- ldr r1, _08057614 @ =gFieldCallback2
- ldr r0, _08057618 @ =sub_80574EC
- str r0, [r1]
- ldr r0, _0805761C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- b _0805754E
- .align 2, 0
-_080575F0: .4byte gUnknown_2031DEA
-_080575F4: .4byte gUnknown_2031DE4
-_080575F8: .4byte 0xffffff00
-_080575FC: .4byte 0xffff00ff
-_08057600: .4byte 0xffff0000
-_08057604: .4byte 0x0000ffff
-_08057608: .4byte sWarpDestination
-_0805760C: .4byte gUnknown_2031DE8
-_08057610: .4byte gPaletteFade
-_08057614: .4byte gFieldCallback2
-_08057618: .4byte sub_80574EC
-_0805761C: .4byte gMain
-_08057620:
- bl sub_8057650
- lsls r0, 24
- cmp r0, 0
- beq _08057648
- b _0805754E
-_0805762C:
- ldr r0, _08057640 @ =gFieldCamera
- ldr r1, _08057644 @ =sub_8057748
- str r1, [r0]
- bl SetFieldVBlankCallback
- movs r0, 0
- strb r0, [r7]
- movs r0, 0x1
- b _0805764A
- .align 2, 0
-_08057640: .4byte gFieldCamera
-_08057644: .4byte sub_8057748
-_08057648:
- movs r0, 0
-_0805764A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8057528
-
- thumb_func_start sub_8057650
-sub_8057650: @ 8057650
- push {r4,lr}
- ldr r4, _08057664 @ =gMain + 0x438
- ldrb r0, [r4]
- cmp r0, 0x8
- bhi _0805773C
- lsls r0, 2
- ldr r1, _08057668 @ =_0805766C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08057664: .4byte gMain + 0x438
-_08057668: .4byte _0805766C
- .align 2, 0
-_0805766C:
- .4byte _08057690
- .4byte _0805769C
- .4byte _080576C2
- .4byte _080576CC
- .4byte _080576D2
- .4byte _080576E0
- .4byte _080576F0
- .4byte _0805770C
- .4byte _08057712
-_08057690:
- bl InitOverworldBgs_NoResetHeap
- movs r0, 0
- bl mli0_load_map
- b _0805772A
-_0805769C:
- bl ScanlineEffect_Clear
- bl ResetAllPicSprites
- bl ResetCameraUpdateInfo
- bl InstallCameraPanAheadCallback
- bl FieldEffectActiveListClear
- bl StartWeather
- bl ResumePausedWeather
- bl SetUpFieldTasks
- bl mapheader_run_script_with_tag_x5
- b _0805772A
-_080576C2:
- bl InitCurrentFlashLevelScanlineEffect
- bl sub_8056F1C
- b _0805772A
-_080576CC:
- bl move_tilemap_camera_to_upper_left_corner
- b _0805772A
-_080576D2:
- ldr r0, _080576DC @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _0805772A
- .align 2, 0
-_080576DC: .4byte gMapHeader
-_080576E0:
- ldr r0, _080576EC @ =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _0805772A
- .align 2, 0
-_080576EC: .4byte gMapHeader
-_080576F0:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08057740
- ldr r0, _08057708 @ =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _0805772A
- .align 2, 0
-_08057708: .4byte gMapHeader
-_0805770C:
- bl DrawWholeMapView
- b _0805772A
-_08057712:
- bl InitTilesetAnimations
- ldr r2, _08057734 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r2, _08057738 @ =0x3fffffff
- movs r0, 0
- movs r1, 0
- bl FadeSelectedPals
-_0805772A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08057740
- .align 2, 0
-_08057734: .4byte gPaletteFade
-_08057738: .4byte 0x3fffffff
-_0805773C:
- movs r0, 0x1
- b _08057742
-_08057740:
- movs r0, 0
-_08057742:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8057650
-
- thumb_func_start sub_8057748
-sub_8057748: @ 8057748
- push {r4-r6,lr}
- adds r2, r0, 0
- ldr r0, _08057784 @ =gUnknown_2031DE8
- movs r3, 0
- ldrsh r1, [r0, r3]
- adds r5, r0, 0
- ldr r4, _08057788 @ =gUnknown_2031DEA
- ldr r6, _0805778C @ =gUnknown_2031DE4
- cmp r1, 0
- bne _080577F4
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- ldr r1, [r6]
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3]
- subs r0, 0xFB
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bhi _080577D4
- lsls r0, 2
- ldr r1, _08057790 @ =_08057794
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08057784: .4byte gUnknown_2031DE8
-_08057788: .4byte gUnknown_2031DEA
-_0805778C: .4byte gUnknown_2031DE4
-_08057790: .4byte _08057794
- .align 2, 0
-_08057794:
- .4byte _080577C0
- .4byte _08057814
- .4byte _080577CA
- .4byte _08057814
- .4byte _080577A8
-_080577A8:
- movs r0, 0
- str r0, [r2, 0x8]
- str r0, [r2, 0xC]
- str r0, [r2]
- ldr r0, _080577BC @ =sub_805781C
- movs r1, 0
- bl CreateTask
- b _08057814
- .align 2, 0
-_080577BC: .4byte sub_805781C
-_080577C0:
- movs r0, 0
- str r0, [r2, 0x8]
- str r0, [r2, 0xC]
- str r0, [r2]
- b _080577F4
-_080577CA:
- movs r0, 0
- str r0, [r2, 0x8]
- str r0, [r2, 0xC]
- str r0, [r2]
- b _08057814
-_080577D4:
- ldrh r0, [r3, 0x4]
- strh r0, [r5]
- movs r3, 0
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r0, r1
- movs r3, 0
- ldrsh r0, [r0, r3]
- str r0, [r2, 0x8]
- movs r3, 0
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r0, r1
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- str r0, [r2, 0xC]
-_080577F4:
- movs r3, 0
- ldrsh r0, [r4, r3]
- ldr r1, [r6]
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0xFF
- bne _0805780E
- movs r0, 0
- str r0, [r2, 0x8]
- str r0, [r2, 0xC]
- b _08057814
-_0805780E:
- ldrh r0, [r5]
- subs r0, 0x1
- strh r0, [r5]
-_08057814:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8057748
-
- thumb_func_start sub_805781C
-sub_805781C: @ 805781C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0805784C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08057850 @ =sub_8057854
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805784C: .4byte gTasks
-_08057850: .4byte sub_8057854
- thumb_func_end sub_805781C
-
- thumb_func_start sub_8057854
-sub_8057854: @ 8057854
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0805787C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08057876
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _08057880 @ =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08057876:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805787C: .4byte gPaletteFade
-_08057880: .4byte CB2_LoadMap
- thumb_func_end sub_8057854
-
thumb_func_start CB1_UpdateLinkState
CB1_UpdateLinkState: @ 8057884
push {r4,lr}
@@ -1702,7 +31,7 @@ _0805789E:
lsls r0, 16
lsrs r0, 16
bl sub_8057C4C
- bl sub_80578EC
+ bl ClearAllPlayerKeys
_080578C0:
pop {r4}
pop {r0}
@@ -1726,8 +55,8 @@ ResetAllMultiplayerState: @ 80578D8
_080578E8: .4byte sub_8057D5C
thumb_func_end ResetAllMultiplayerState
- thumb_func_start sub_80578EC
-sub_80578EC: @ 80578EC
+ thumb_func_start ClearAllPlayerKeys
+ClearAllPlayerKeys: @ 80578EC
push {lr}
ldr r0, _080578F8 @ =gLinkPartnersHeldKeys
bl sub_8057D48
@@ -1735,7 +64,7 @@ sub_80578EC: @ 80578EC
bx r0
.align 2, 0
_080578F8: .4byte gLinkPartnersHeldKeys
- thumb_func_end sub_80578EC
+ thumb_func_end ClearAllPlayerKeys
thumb_func_start c1_link_related_func_set
c1_link_related_func_set: @ 80578FC
@@ -3393,8 +1722,8 @@ _080584FC: .4byte gObjectEvents
_08058500: .4byte gSprites
thumb_func_end sub_80584B8
- thumb_func_start sub_8058504
-sub_8058504: @ 8058504
+ thumb_func_start GetSpriteForLinkedPlayer
+GetSpriteForLinkedPlayer: @ 8058504
lsls r0, 24
ldr r1, _0805851C @ =gLinkPlayerObjectEvents
lsrs r0, 22
@@ -3410,7 +1739,7 @@ sub_8058504: @ 8058504
.align 2, 0
_0805851C: .4byte gLinkPlayerObjectEvents
_08058520: .4byte gObjectEvents
- thumb_func_end sub_8058504
+ thumb_func_end GetSpriteForLinkedPlayer
thumb_func_start sub_8058524
sub_8058524: @ 8058524
@@ -3885,8 +2214,8 @@ _0805886A:
bx r1
thumb_func_end npc_080587EC
- thumb_func_start sub_8058878
-sub_8058878: @ 8058878
+ thumb_func_start CreateLinkPlayerSprite
+CreateLinkPlayerSprite: @ 8058878
push {r4,r5,lr}
sub sp, 0x4
lsls r0, 24
@@ -3959,7 +2288,7 @@ _080588FC:
.align 2, 0
_08058904: .4byte SpriteCB_LinkPlayer
_08058908: .4byte gSprites
- thumb_func_end sub_8058878
+ thumb_func_end CreateLinkPlayerSprite
thumb_func_start SpriteCB_LinkPlayer
SpriteCB_LinkPlayer: @ 805890C
diff --git a/include/bg_regs.h b/include/bg_regs.h
index 660b47d1e..e16cf3119 100644
--- a/include/bg_regs.h
+++ b/include/bg_regs.h
@@ -2,5 +2,6 @@
#define GUARD_BG_REGS_H
extern const u8 gBGControlRegOffsets[];
+extern const u16 gOverworldBackgroundLayerFlags[];
#endif //GUARD_BG_REGS_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 792118c00..0c383b2bb 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -71,7 +71,7 @@ void LoadPlayerObjectReflectionPalette(u16, u8);
void LoadSpecialObjectReflectionPalette(u16, u8);
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
void PatchObjectPalette(u16, u8);
-void sub_808E16C(s16, s16);
+void sub_805EDF0(s16, s16);
void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
void sub_8063AD4(s16, s16, s16 *, s16 *);
u8 GetFaceDirectionAnimNum(u8);
@@ -221,5 +221,7 @@ u8 GetAcroPopWheelieMoveDirectionMovementAction(u32 direction);
u8 GetAcroWheelieMoveDirectionMovementAction(u32 direction);
u8 sub_80641EC(u32 direction);
u8 GetFishingBiteDirectionAnimNum(u8 direction);
+void TrySpawnObjectEvents(s16 cameraX, s16 cameraY);
+void ResetObjectEvents(void);
#endif // GUARD_EVENT_OBJECT_MOVEMENT_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 270aac57a..9a76e6bfc 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -34,5 +34,8 @@ void DrawDoorMetatileAt(int x, int y, const u16 *data);
void move_tilemap_camera_to_upper_left_corner(void);
void CameraUpdate(void);
void FieldUpdateBgTilemapScroll(void);
+void ResetCameraUpdateInfo(void);
+u32 InitCameraUpdateCallback(u8 trackedSpriteId);
+void sub_805ACF0(void);
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 40c58f44e..f9760d87f 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -27,5 +27,6 @@ void ReturnToFieldFromFlyMapSelect(void);
void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
void SpriteCB_PopOutOfAsh(struct Sprite * sprite);
void SpriteCB_LavaridgeGymWarp(struct Sprite * sprite);
+void FieldEffectActiveListClear(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 73109ae1e..56e821fbd 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -60,5 +60,6 @@ void sub_805C260(void);
void player_step(u8 direction, u16 newKeys, u16 heldKeys);
bool32 PlayerIsMovingOnRockStairs(u8 direction);
void sub_805BEB8(void);
+void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 447eb2c53..5beeba928 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -34,5 +34,7 @@ void IncrementBirthIslandRockStepCount(void);
void ResetCyclingRoadChallengeData(void);
void ResetFieldTasksArgs(void);
bool8 UsedPokemonCenterWarp(void);
+void sub_80CC534(void);
+void sub_80CC59C(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/field_tasks.h b/include/field_tasks.h
index aba2a9eee..b037e382d 100644
--- a/include/field_tasks.h
+++ b/include/field_tasks.h
@@ -4,5 +4,6 @@
#include "global.h"
void ActivatePerStepCallback(u8);
+void SetUpFieldTasks(void);
#endif // GUARD_FIELD_TASKS_H
diff --git a/include/field_weather.h b/include/field_weather.h
index 44d9e5268..195b35318 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -144,6 +144,9 @@ void SetRainStrengthFromSoundEffect(u16 soundEffect);
void sub_807A790(s8 gammaIndex);
void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
void ApplyWeatherGammaShiftToPal(u8 paletteIndex);
+void StartWeather(void);
+void ResumePausedWeather(void);
+void FadeSelectedPals(u8 mode, s8 delay, u32 selectedPalettes);
extern const u16 gCloudsWeatherPalette[];
extern const u16 gSandstormWeatherPalette[];
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 66928fab2..40aa1c916 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -40,5 +40,9 @@ void InitMap(void);
void copy_map_tileset2_to_vram_2(const struct MapLayout * mapLayout);
void apply_map_tileset2_palette(const struct MapLayout * mapLayout);
void InitMapFromSavedGame(void);
+void copy_map_tileset1_to_vram(const struct MapLayout *mapLayout);
+void copy_map_tileset2_to_vram(const struct MapLayout *mapLayout);
+void GetCameraFocusCoords(u16 *x, u16 *y);
+void SetCameraFocusCoords(u16 x, u16 y);
#endif //GUARD_FIELDMAP_H
diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h
index a287c6f89..228d37d54 100644
--- a/include/map_preview_screen.h
+++ b/include/map_preview_screen.h
@@ -59,5 +59,6 @@ void MapPreview_InitBgs(void);
void MapPreview_LoadGfx(u8 mapsec);
bool32 MapPreview_IsGfxLoadFinished(void);
void MapPreview_Unload(s32 windowId);
+void MapPreview_StartForestTransition(u8 mapsec);
#endif //GUARD_MAP_PREVIEW_SCREEN_H
diff --git a/include/overworld.h b/include/overworld.h
index d8f72de27..c4d4520bf 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -44,8 +44,8 @@ struct LinkPlayerObjectEvent
struct CreditsOverworldCmd
{
s16 unk_0;
- u16 unk_2;
- u16 unk_4;
+ s16 unk_2;
+ s16 unk_4;
};
/* gDisableMapMusicChangeOnMapLoad */
diff --git a/include/quest_log.h b/include/quest_log.h
index 3a751e51d..54da8822a 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -57,5 +57,10 @@ bool8 sub_8111CD0(void);
void sub_8115798(void);
bool8 sub_8113748(void);
void sub_81119C8(void);
+void sub_8111F14(void);
+void sub_8110FCC(void);
+u8 sub_8110AC8(void);
+void sub_81113E4(void);
+void sub_8111438(void);
#endif //GUARD_QUEST_LOG_H
diff --git a/include/quest_log_objects.h b/include/quest_log_objects.h
index d3e11d11f..fbf73f504 100644
--- a/include/quest_log_objects.h
+++ b/include/quest_log_objects.h
@@ -5,5 +5,6 @@
void SetQuestLogObjectEventsData(struct QuestLog *);
void SetSav1ObjectEventsFromQuestLog(struct QuestLog *, struct ObjectEventTemplate *);
+void sub_815A540(void);
#endif //GUARD_QUEST_LOG_OBJECTS_H
diff --git a/include/script.h b/include/script.h
index 48b169ef1..a37909137 100644
--- a/include/script.h
+++ b/include/script.h
@@ -50,11 +50,11 @@ void mapheader_run_script_by_tag(u8 tag);
u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag);
void RunOnLoadMapScript(void);
void RunOnTransitionMapScript(void);
-void mapheader_run_script_with_tag_x5(void);
-void mapheader_run_script_with_tag_x7(void);
+void RunOnResumeMapScript(void);
+void RunOnReturnToFieldMapScript(void);
void RunOnDiveWarpMapScript(void);
bool8 TryRunOnFrameMapScript(void);
-void mapheader_run_first_tag4_script_list_match(void);
+void TryRunOnWarpIntoMapScript(void);
u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
diff --git a/src/bg_regs.c b/src/bg_regs.c
index d5879a862..ec884e4f7 100644
--- a/src/bg_regs.c
+++ b/src/bg_regs.c
@@ -25,7 +25,7 @@ vu16 *const gBGVOffsetRegs[] =
};
const u16 gDISPCNTBGFlags[] = { DISPCNT_BG0_ON, DISPCNT_BG1_ON, DISPCNT_BG2_ON, DISPCNT_BG3_ON };
-const u16 gBLDCNTTarget2BGFlags[] = { BLDCNT_TGT2_BG0, BLDCNT_TGT2_BG1, BLDCNT_TGT2_BG2, BLDCNT_TGT2_BG3 };
+const u16 gOverworldBackgroundLayerFlags[] = { BLDCNT_TGT2_BG0, BLDCNT_TGT2_BG1, BLDCNT_TGT2_BG2, BLDCNT_TGT2_BG3 };
const u16 gBLDCNTTarget1BGFlags[] = { BLDCNT_TGT1_BG0, BLDCNT_TGT1_BG1, BLDCNT_TGT1_BG2, BLDCNT_TGT1_BG3 };
const u8 gBGControlRegOffsets[] =
diff --git a/src/overworld.c b/src/overworld.c
index ff2886fb2..4fb6be314 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -1,22 +1,27 @@
#include "global.h"
#include "gflib.h"
+#include "bg_regs.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "event_scripts.h"
#include "field_camera.h"
#include "field_control_avatar.h"
+#include "field_effect.h"
#include "field_fadetransition.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_specials.h"
+#include "field_tasks.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "heal_location.h"
+#include "help_system.h"
#include "link.h"
#include "load_save.h"
#include "m4a.h"
#include "map_name_popup.h"
+#include "map_preview_screen.h"
#include "metatile_behavior.h"
#include "money.h"
#include "new_game.h"
@@ -24,6 +29,7 @@
#include "overworld.h"
#include "play_time.h"
#include "quest_log.h"
+#include "quest_log_objects.h"
#include "random.h"
#include "renewable_hidden_items.h"
#include "roamer.h"
@@ -33,6 +39,7 @@
#include "script.h"
#include "script_pokemon_util.h"
#include "tileset_anims.h"
+#include "trainer_pokemon_sprites.h"
#include "vs_seeker.h"
#include "wild_encounter.h"
#include "constants/maps.h"
@@ -99,14 +106,39 @@ void CB2_ReturnToFieldLink(void);
void FieldClearVBlankHBlankCallbacks(void);
void SetFieldVBlankCallback(void);
void VBlankCB_Field(void);
+
+bool32 map_loading_iteration_3(u8 *state);
+bool32 sub_8056CD8(u8 *state);
+bool32 map_loading_iteration_2_link(u8 *state);
+void do_load_map_stuff_loop(u8 *state);
void MoveSaveBlocks_ResetHeap_(void);
void sub_8056E80(void);
+void sub_8056F08(void);
+void InitOverworldGraphicsRegisters(void);
+void sub_8057024(bool32 a0);
+void sub_8057074(void);
+void mli4_mapscripts_and_other(void);
+void sub_8057100(void);
+void sub_8057114(void);
+void SetCameraToTrackGuestPlayer(void);
+void SetCameraToTrackGuestPlayer_2(void);
+void sub_8057178(void);
+void sub_80571A8(void);
+void CreateLinkPlayerSprites(void);
+void sub_80572D8(void);
+void sub_8057300(u8 *state);
+bool32 sub_8057314(u8 *state);
+bool32 sub_8057528(u8 *state, u8 unused);
+bool8 sub_8057650(void);
+void sub_8057748(struct CameraObject * camera);
+void sub_805781C(u8 taskId);
+void sub_8057854(u8 taskId);
+void SpawnLinkPlayerObjectEvent(u8 i, s16 x, s16 y, u8 gender);
+void CreateLinkPlayerSprite(u8 i, u8 version);
+void ClearAllPlayerKeys(void);
+u8 GetSpriteForLinkedPlayer(u8 linkPlayerId);
void CB1_UpdateLinkState(void);
void ResetAllMultiplayerState(void);
-void do_load_map_stuff_loop(u8 *state);
-bool32 sub_8056CD8(u8 *state);
-bool32 map_loading_iteration_3(u8 *state);
-bool32 map_loading_iteration_2_link(u8 *state);
extern const struct MapLayout * gMapLayouts[];
extern const struct MapHeader *const *gMapGroups[];
@@ -672,7 +704,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
sub_8110920();
DoCurrentWeather();
ResetFieldTasksArgs();
- mapheader_run_script_with_tag_x5();
+ RunOnResumeMapScript();
if (GetLastUsedWarpMapSectionId() != gMapHeader.regionMapSectionId)
ShowMapNamePopup(TRUE);
}
@@ -1655,3 +1687,779 @@ void InitCurrentFlashLevelScanlineEffect(void)
});
}
}
+
+bool32 map_loading_iteration_3(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ InitOverworldBgs();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ (*state)++;
+ break;
+ case 1:
+ mli0_load_map(TRUE);
+ (*state)++;
+ break;
+ case 2:
+ sub_8057024(TRUE);
+ (*state)++;
+ break;
+ case 3:
+ sub_8057178();
+ sub_8057074();
+ sub_80571A8();
+ SetCameraToTrackGuestPlayer();
+ SetHelpContextForMap();
+ (*state)++;
+ break;
+ case 4:
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
+ (*state)++;
+ break;
+ case 5:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 6:
+ copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 7:
+ copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 8:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
+ }
+ break;
+ case 9:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 10:
+ InitTilesetAnimations();
+ (*state)++;
+ break;
+ case 11:
+ if (gWirelessCommType != 0)
+ {
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ (*state)++;
+ break;
+ case 12:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 13:
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool32 load_map_stuff(u8 *state, bool32 a1)
+{
+ switch (*state)
+ {
+ case 0:
+ InitOverworldBgs();
+ FieldClearVBlankHBlankCallbacks();
+ mli0_load_map(a1);
+ (*state)++;
+ break;
+ case 1:
+ sub_8111F14();
+ (*state)++;
+ break;
+ case 2:
+ sub_8057024(a1);
+ (*state)++;
+ break;
+ case 3:
+ if (sub_8113748() == TRUE)
+ return TRUE;
+ (*state)++;
+ break;
+ case 4:
+ mli4_mapscripts_and_other();
+ sub_8057114();
+ if (gQuestLogState != QL_STATE_2)
+ {
+ sub_80CC534();
+ sub_80CC59C();
+ }
+ SetHelpContextForMap();
+ (*state)++;
+ break;
+ case 5:
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
+ (*state)++;
+ break;
+ case 6:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 7:
+ copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 8:
+ copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 9:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
+ }
+ break;
+ case 10:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 11:
+ InitTilesetAnimations();
+ (*state)++;
+ break;
+ case 12:
+ if (GetLastUsedWarpMapSectionId() != gMapHeader.regionMapSectionId && MapHasPreviewScreen_HandleQLState2(gMapHeader.regionMapSectionId, MPS_TYPE_FOREST) == TRUE)
+ {
+ MapPreview_LoadGfx(gMapHeader.regionMapSectionId);
+ MapPreview_StartForestTransition(gMapHeader.regionMapSectionId);
+ }
+ else if (SHOW_MAP_NAME_ENABLED)
+ {
+ ShowMapNamePopup(FALSE);
+ }
+ (*state)++;
+ break;
+ case 13:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 14:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_8056CD8(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ InitOverworldBgs();
+ sub_8111F14();
+ sub_8057024(FALSE);
+ sub_8057100();
+ sub_8057114();
+ (*state)++;
+ break;
+ case 1:
+ (*state)++;
+ break;
+ case 2:
+ sub_8056F08();
+ SetHelpContextForMap();
+ (*state)++;
+ break;
+ case 3:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 4:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 map_loading_iteration_2_link(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ InitOverworldBgs();
+ FieldClearVBlankHBlankCallbacks();
+ (*state)++;
+ break;
+ case 1:
+ sub_8111F14();
+ sub_8057024(1);
+ (*state)++;
+ break;
+ case 2:
+ CreateLinkPlayerSprites();
+ sub_8057100();
+ SetCameraToTrackGuestPlayer_2();
+ SetHelpContextForMap();
+ (*state)++;
+ break;
+ case 3:
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
+ (*state)++;
+ break;
+ case 4:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 5:
+ copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 6:
+ copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 7:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
+ }
+ break;
+ case 8:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 9:
+ InitTilesetAnimations();
+ (*state)++;
+ break;
+ case 10:
+ (*state)++;
+ break;
+ case 11:
+ if (gWirelessCommType != 0)
+ {
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ (*state)++;
+ break;
+ case 12:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 13:
+ SetFieldVBlankCallback();
+ (*state)++;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void do_load_map_stuff_loop(u8 *state)
+{
+ while (!load_map_stuff(state, FALSE))
+ ;
+}
+
+void MoveSaveBlocks_ResetHeap_(void)
+{
+ MoveSaveBlocks_ResetHeap();
+}
+
+void sub_8056E80(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ScanlineEffect_Stop();
+
+ DmaClear16(3, PLTT + 2, PLTT_SIZE - 2);
+ DmaFillLarge16(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000);
+ ResetOamRange(0, 128);
+ LoadOam();
+}
+
+void sub_8056F08(void)
+{
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
+ mapdata_load_assets_to_gpu_and_full_redraw();
+}
+
+void InitOverworldGraphicsRegisters(void)
+{
+ ClearScheduledBgCopiesToVram();
+ ResetTempTileDataBuffers();
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WINOBJ_BG0);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 255));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 255));
+ SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(255, 255));
+ SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(255, 255));
+ SetGpuReg(REG_OFFSET_BLDCNT, gOverworldBackgroundLayerFlags[1] | gOverworldBackgroundLayerFlags[2] | gOverworldBackgroundLayerFlags[3]
+ | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(13, 7));
+ ScheduleBgCopyTilemapToVram(1);
+ ScheduleBgCopyTilemapToVram(2);
+ ScheduleBgCopyTilemapToVram(3);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | 0x20 | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+void sub_8057024(u32 a1)
+{
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ ScanlineEffect_Clear();
+ ResetAllPicSprites();
+ ResetCameraUpdateInfo();
+ InstallCameraPanAheadCallback();
+ if (!a1)
+ InitObjectEventPalettes(0);
+ else
+ InitObjectEventPalettes(1);
+
+ FieldEffectActiveListClear();
+ StartWeather();
+ ResumePausedWeather();
+ if (!a1)
+ SetUpFieldTasks();
+ RunOnResumeMapScript();
+}
+
+void sub_8057074(void)
+{
+ gTotalCameraPixelOffsetX = 0;
+ gTotalCameraPixelOffsetY = 0;
+ ResetObjectEvents();
+ TrySpawnObjectEvents(0, 0);
+ TryRunOnWarpIntoMapScript();
+}
+
+void mli4_mapscripts_and_other(void)
+{
+ s16 x, y;
+ struct InitialPlayerAvatarState *player;
+
+ gTotalCameraPixelOffsetX = 0;
+ gTotalCameraPixelOffsetY = 0;
+ ResetObjectEvents();
+ GetCameraFocusCoords(&x, &y);
+ player = GetInitialPlayerAvatarState();
+ InitPlayerAvatar(x, y, player->direction, gSaveBlock2Ptr->playerGender);
+ SetPlayerAvatarTransitionFlags(player->transitionFlags);
+ ResetInitialPlayerAvatarState();
+ TrySpawnObjectEvents(0, 0);
+ TryRunOnWarpIntoMapScript();
+}
+
+void sub_8057100(void)
+{
+ sub_805EDF0(0, 0);
+ RunOnReturnToFieldMapScript();
+}
+
+void sub_8057114(void)
+{
+ gObjectEvents[gPlayerAvatar.objectEventId].trackedByCamera = 1;
+ InitCameraUpdateCallback(gPlayerAvatar.spriteId);
+}
+
+void SetCameraToTrackGuestPlayer(void)
+{
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
+}
+
+// Duplicate function.
+void SetCameraToTrackGuestPlayer_2(void)
+{
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
+}
+
+void sub_8057178(void)
+{
+ u16 x, y;
+ GetCameraFocusCoords(&x, &y);
+
+ // This is a hack of some kind; it's undone in sub_8086B14, which is called
+ // soon after this function.
+ SetCameraFocusCoords(x + gLocalLinkPlayerId, y);
+}
+
+void sub_80571A8(void)
+{
+ u16 i;
+ u16 x, y;
+
+ GetCameraFocusCoords(&x, &y);
+ x -= gLocalLinkPlayerId;
+
+ for (i = 0; i < gFieldLinkPlayerCount; i++)
+ {
+ SpawnLinkPlayerObjectEvent(i, i + x, y, gLinkPlayers[i].gender);
+ CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
+ }
+
+ ClearAllPlayerKeys();
+}
+
+void CreateLinkPlayerSprites(void)
+{
+ u16 i;
+ for (i = 0; i < gFieldLinkPlayerCount; i++)
+ CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
+}
+
+// Credits
+
+void sub_805726C(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ gUnknown_2036E28 = 1;
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ SetMainCallback1(NULL);
+ SetMainCallback2(CB2_DoChangeMap);
+ gMain.savedCallback = sub_80572D8;
+}
+
+void sub_80572A8(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ gUnknown_2036E28 = 1;
+ LoadSaveblockMapHeader();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ SetMainCallback1(NULL);
+ SetMainCallback2(sub_80572D8);
+}
+
+void sub_80572D8(void)
+{
+ sub_8057300(&gMain.state);
+ SetFieldVBlankCallback();
+ SetMainCallback1(CB1_Overworld);
+ SetMainCallback2(CB2_Overworld);
+}
+
+void sub_8057300(u8 *state)
+{
+ while (!sub_8057314(state))
+ ;
+}
+
+bool32 sub_8057314(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ InitOverworldBgs();
+ FieldClearVBlankHBlankCallbacks();
+ sub_8111F14();
+ sub_81113E4();
+ sub_8111438();
+ if (sub_8110AC8() == 2)
+ {
+ gUnknown_2031DE0 = 0;
+ mli0_load_map(FALSE);
+ }
+ else
+ {
+ gUnknown_2031DE0 = 1;
+ sub_80559A8();
+ }
+ (*state)++;
+ break;
+ case 1:
+ sub_8110FCC();
+ (*state)++;
+ break;
+ case 2:
+ sub_8057024(0);
+ (*state)++;
+ break;
+ case 3:
+ sub_8057100();
+ sub_8057114();
+ (*state)++;
+ break;
+ case 4:
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
+ (*state)++;
+ break;
+ case 5:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 6:
+ copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 7:
+ copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 8:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
+ }
+ break;
+ case 9:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 10:
+ InitTilesetAnimations();
+ sub_815A540();
+ (*state)++;
+ break;
+ default:
+ if (map_post_load_hook_exec())
+ return TRUE;
+ break;
+ }
+ return FALSE;
+}
+
+void sub_8057430(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ gUnknown_2036E28 = 3;
+ ResetSafariZoneFlag_();
+ LoadSaveblockMapHeader();
+ LoadSaveblockObjEventScripts();
+ UnfreezeObjectEvents();
+ sub_8054E40();
+ InitMapFromSavedGame();
+ PlayTimeCounter_Start();
+ ScriptContext1_Init();
+ gUnknown_2031DE0 = TRUE;
+ if (UseContinueGameWarp() == TRUE)
+ {
+ ClearContinueGameWarpStatus();
+ SetWarpDestinationToContinueGameWarp();
+ WarpIntoMap();
+ SetMainCallback2(CB2_LoadMap);
+ }
+ else
+ {
+ SetMainCallback1(CB1_Overworld);
+ CB2_ReturnToField();
+ }
+}
+
+void Overworld_CreditsMainCB(void)
+{
+ bool8 fading = !!gPaletteFade.active;
+ if (fading)
+ SetVBlankCallback(NULL);
+ RunTasks();
+ AnimateSprites();
+ sub_805ACF0();
+ UpdateCameraPanning();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ UpdateTilesetAnimations();
+ DoScheduledBgTilemapCopiesToVram();
+ if (fading)
+ SetFieldVBlankCallback();
+}
+
+bool8 sub_80574EC(void)
+{
+ if (gPaletteFade.active)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool32 Overworld_DoScrollSceneForCredits(u8 *state_p, const struct CreditsOverworldCmd * script, u8 a2)
+{
+ gUnknown_2031DE4 = script;
+ gUnknown_2036E28 = a2;
+ return sub_8057528(state_p, 0);
+}
+
+bool32 sub_8057528(u8 *state, u8 unused)
+{
+ struct WarpData warp;
+ switch (*state)
+ {
+ case 0:
+ gUnknown_2031DEA = 0;
+ gUnknown_2031DE8 = 0;
+ (*state)++;
+ return FALSE;
+ case 1:
+ warp.mapGroup = gUnknown_2031DE4[gUnknown_2031DEA].unk_2;
+ warp.mapNum = gUnknown_2031DE4[gUnknown_2031DEA].unk_4;
+ warp.warpId = -1;
+ gUnknown_2031DEA++;
+ warp.x = gUnknown_2031DE4[gUnknown_2031DEA].unk_0;
+ warp.y = gUnknown_2031DE4[gUnknown_2031DEA].unk_2;
+ sWarpDestination = warp;
+ gUnknown_2031DE8 = gUnknown_2031DE4[gUnknown_2031DEA].unk_4;
+ WarpIntoMap();
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ SetMainCallback1(NULL);
+ gFieldCallback2 = sub_80574EC;
+ gMain.state = 0;
+ (*state)++;
+ return FALSE;
+ case 2:
+ if (sub_8057650())
+ {
+ (*state)++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ gFieldCamera.callback = sub_8057748;
+ SetFieldVBlankCallback();
+ *state = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8057650(void)
+{
+ u8 *state = &gMain.state;
+ switch (*state)
+ {
+ case 0:
+ InitOverworldBgs_NoResetHeap();
+ mli0_load_map(FALSE);
+ (*state)++;
+ break;
+ case 1:
+ ScanlineEffect_Clear();
+ ResetAllPicSprites();
+ ResetCameraUpdateInfo();
+ InstallCameraPanAheadCallback();
+ FieldEffectActiveListClear();
+ StartWeather();
+ ResumePausedWeather();
+ SetUpFieldTasks();
+ RunOnResumeMapScript();
+ (*state)++;
+ break;
+ case 2:
+ InitCurrentFlashLevelScanlineEffect();
+ InitOverworldGraphicsRegisters();
+ (*state)++;
+ break;
+ case 3:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 4:
+ copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 5:
+ copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ (*state)++;
+ break;
+ case 6:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ (*state)++;
+ }
+ break;
+ case 7:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 8:
+ InitTilesetAnimations();
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ FadeSelectedPals(FADE_FROM_BLACK, 0, 0x3FFFFFFF);
+ (*state)++;
+ break;
+ default:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8057748(struct CameraObject * camera)
+{
+ if (gUnknown_2031DE8 == 0)
+ {
+ gUnknown_2031DEA++;
+ switch (gUnknown_2031DE4[gUnknown_2031DEA].unk_0)
+ {
+ case 0xFC:
+ case 0xFE:
+ return;
+ case 0xFF:
+ camera->movementSpeedX = 0;
+ camera->movementSpeedY = 0;
+ camera->callback = NULL;
+ CreateTask(sub_805781C, 0);
+ return;
+ case 0xFB:
+ camera->movementSpeedX = 0;
+ camera->movementSpeedY = 0;
+ camera->callback = NULL;
+ break;
+ case 0xFD:
+ camera->movementSpeedX = 0;
+ camera->movementSpeedY = 0;
+ camera->callback = NULL;
+ return;
+ default:
+ gUnknown_2031DE8 = gUnknown_2031DE4[gUnknown_2031DEA].unk_4;
+ camera->movementSpeedX = gUnknown_2031DE4[gUnknown_2031DEA].unk_0;
+ camera->movementSpeedY = gUnknown_2031DE4[gUnknown_2031DEA].unk_2;
+ break;
+ }
+ }
+ if (gUnknown_2031DE4[gUnknown_2031DEA].unk_0 == 0xFF)
+ {
+ camera->movementSpeedX = 0;
+ camera->movementSpeedY = 0;
+ }
+ else
+ gUnknown_2031DE8--;
+}
+
+void sub_805781C(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = sub_8057854;
+}
+
+void sub_8057854(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ }
+}
diff --git a/src/script.c b/src/script.c
index 250d98770..8e490811b 100644
--- a/src/script.c
+++ b/src/script.c
@@ -416,12 +416,12 @@ void RunOnTransitionMapScript(void)
mapheader_run_script_by_tag(3);
}
-void mapheader_run_script_with_tag_x5(void)
+void RunOnResumeMapScript(void)
{
mapheader_run_script_by_tag(5);
}
-void mapheader_run_script_with_tag_x7(void)
+void RunOnReturnToFieldMapScript(void)
{
mapheader_run_script_by_tag(7);
}
@@ -447,7 +447,7 @@ bool8 TryRunOnFrameMapScript(void)
return 1;
}
-void mapheader_run_first_tag4_script_list_match(void)
+void TryRunOnWarpIntoMapScript(void)
{
u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(4);
if (ptr)