diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-28 18:00:52 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-28 18:00:52 -0400 |
commit | f3a632156b5ccf591677f079fb7a41162d4167f3 (patch) | |
tree | d7e29e92507cc629254524882275db9b4c00c1ef | |
parent | f5f4d6bc1fa9927796ed7a683fb262d2f50a87c3 (diff) |
through sub_8057854
-rw-r--r-- | asm/overworld.s | 1691 | ||||
-rw-r--r-- | include/bg_regs.h | 1 | ||||
-rw-r--r-- | include/event_object_movement.h | 4 | ||||
-rw-r--r-- | include/field_camera.h | 3 | ||||
-rw-r--r-- | include/field_effect.h | 1 | ||||
-rw-r--r-- | include/field_player_avatar.h | 1 | ||||
-rw-r--r-- | include/field_specials.h | 2 | ||||
-rw-r--r-- | include/field_tasks.h | 1 | ||||
-rw-r--r-- | include/field_weather.h | 3 | ||||
-rw-r--r-- | include/fieldmap.h | 4 | ||||
-rw-r--r-- | include/map_preview_screen.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 4 | ||||
-rw-r--r-- | include/quest_log.h | 5 | ||||
-rw-r--r-- | include/quest_log_objects.h | 1 | ||||
-rw-r--r-- | include/script.h | 6 | ||||
-rw-r--r-- | src/bg_regs.c | 2 | ||||
-rw-r--r-- | src/overworld.c | 818 | ||||
-rw-r--r-- | src/script.c | 6 |
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) |