summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/overworld.s618
-rw-r--r--data/overworld.s7
-rw-r--r--include/field_camera.h1
-rw-r--r--include/fieldmap.h4
-rw-r--r--include/global.fieldmap.h8
-rw-r--r--include/overworld.h12
-rw-r--r--src/field_fadetransition.c4
-rw-r--r--src/field_specials.c2
-rw-r--r--src/fieldmap.c4
-rw-r--r--src/itemfinder.c6
-rw-r--r--src/load_save.c2
-rw-r--r--src/overworld.c175
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/script.c4
-rw-r--r--sym_ewram.txt8
15 files changed, 262 insertions, 595 deletions
diff --git a/asm/overworld.s b/asm/overworld.s
index e7d0813c6..05f31a8fb 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -5,498 +5,6 @@
.text
- thumb_func_start sub_8054F68
-sub_8054F68: @ 8054F68
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- mov r9, r0
- mov r8, r0
- ldr r1, _08055040 @ =gMapHeader
- ldr r0, [r1, 0x4]
- ldrb r0, [r0]
- cmp r9, r0
- bcc _08054F86
- b _08055092
-_08054F86:
- ldr r2, _08055044 @ =gSaveBlock1Ptr
- mov r10, r2
-_08054F8A:
- ldr r3, _08055040 @ =gMapHeader
- ldr r0, [r3, 0x4]
- ldr r1, [r0, 0x4]
- mov r4, r9
- lsls r0, r4, 1
- add r0, r9
- lsls r7, r0, 3
- adds r2, r7, r1
- ldrb r0, [r2, 0x2]
- cmp r0, 0xFF
- bne _08055054
- ldrb r4, [r2, 0x8]
- ldrb r5, [r2, 0xC]
- str r5, [sp]
- ldrb r2, [r2, 0xE]
- str r2, [sp, 0x4]
- adds r0, r2, 0
- adds r1, r5, 0
- bl Overworld_GetMapHeaderByGroupAndId
- mov r6, r10
- ldr r1, [r6]
- mov r2, r8
- lsls r3, r2, 1
- add r3, r8
- lsls r3, 3
- adds r1, r3
- ldr r0, [r0, 0x4]
- ldr r2, [r0, 0x4]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r0, r2
- movs r5, 0x8E
- lsls r5, 4
- adds r1, r5
- subs r0, 0x18
- ldm r0!, {r2,r5,r6}
- stm r1!, {r2,r5,r6}
- ldm r0!, {r2,r5,r6}
- stm r1!, {r2,r5,r6}
- mov r6, r10
- ldr r1, [r6]
- adds r1, r3
- ldr r2, _08055040 @ =gMapHeader
- ldr r0, [r2, 0x4]
- ldr r0, [r0, 0x4]
- adds r0, r7, r0
- ldrb r0, [r0]
- movs r5, 0x8E
- lsls r5, 4
- adds r1, r5
- strb r0, [r1]
- ldr r1, [r6]
- adds r1, r3
- ldr r0, [r2, 0x4]
- ldr r0, [r0, 0x4]
- adds r0, r7, r0
- ldrh r2, [r0, 0x4]
- ldr r6, _08055048 @ =0x000008e4
- adds r0, r1, r6
- strh r2, [r0]
- ldr r2, _08055040 @ =gMapHeader
- ldr r0, [r2, 0x4]
- ldr r0, [r0, 0x4]
- adds r0, r7, r0
- ldrh r2, [r0, 0x6]
- adds r5, 0x6
- adds r0, r1, r5
- strh r2, [r0]
- adds r6, 0x4
- adds r1, r6
- strb r4, [r1]
- mov r1, r10
- ldr r0, [r1]
- adds r0, r3
- ldr r2, _0805504C @ =0x000008ec
- adds r1, r0, r2
- mov r3, sp
- ldrh r3, [r3]
- strh r3, [r1]
- ldr r4, _08055050 @ =0x000008ee
- adds r1, r0, r4
- mov r5, sp
- ldrh r5, [r5, 0x4]
- strh r5, [r1]
- subs r6, 0x6
- adds r0, r6
- movs r1, 0xFF
- strb r1, [r0]
- b _08055072
- .align 2, 0
-_08055040: .4byte gMapHeader
-_08055044: .4byte gSaveBlock1Ptr
-_08055048: .4byte 0x000008e4
-_0805504C: .4byte 0x000008ec
-_08055050: .4byte 0x000008ee
-_08055054:
- mov r0, r10
- ldr r1, [r0]
- mov r3, r8
- lsls r0, r3, 1
- add r0, r8
- lsls r0, 3
- adds r1, r0
- movs r4, 0x8E
- lsls r4, 4
- adds r1, r4
- adds r0, r2, 0
- ldm r0!, {r2,r5,r6}
- stm r1!, {r2,r5,r6}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
-_08055072:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r6, _080550A4 @ =gMapHeader
- ldr r0, [r6, 0x4]
- ldrb r0, [r0]
- cmp r9, r0
- bcs _08055092
- b _08054F8A
-_08055092:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080550A4: .4byte gMapHeader
- thumb_func_end sub_8054F68
-
- thumb_func_start sub_80550A8
-sub_80550A8: @ 80550A8
- push {lr}
- ldr r0, _080550D0 @ =gMapHeader
- ldr r1, [r0, 0x4]
- ldr r0, _080550D4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, [r1, 0x4]
- movs r3, 0x8E
- lsls r3, 4
- adds r1, r0, r3
- movs r3, 0x3F
-_080550BC:
- ldr r0, [r2, 0x10]
- str r0, [r1, 0x10]
- adds r2, 0x18
- adds r1, 0x18
- subs r3, 0x1
- cmp r3, 0
- bge _080550BC
- pop {r0}
- bx r0
- .align 2, 0
-_080550D0: .4byte gMapHeader
-_080550D4: .4byte gSaveBlock1Ptr
- thumb_func_end sub_80550A8
-
- thumb_func_start Overworld_SetMapObjTemplateCoords
-Overworld_SetMapObjTemplateCoords: @ 80550D8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _08055100 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0
- movs r6, 0x8E
- lsls r6, 4
- adds r3, r0, r6
-_080550F2:
- ldrb r0, [r3]
- cmp r0, r5
- bne _08055104
- strh r4, [r3, 0x4]
- strh r2, [r3, 0x6]
- b _0805510C
- .align 2, 0
-_08055100: .4byte gSaveBlock1Ptr
-_08055104:
- adds r3, 0x18
- adds r1, 0x1
- cmp r1, 0x3F
- ble _080550F2
-_0805510C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end Overworld_SetMapObjTemplateCoords
-
- thumb_func_start Overworld_SetMapObjTemplateMovementType
-Overworld_SetMapObjTemplateMovementType: @ 8055114
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08055134 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r3, 0
- movs r5, 0x8E
- lsls r5, 4
- adds r2, r0, r5
-_0805512A:
- ldrb r0, [r2]
- cmp r0, r4
- bne _08055138
- strb r1, [r2, 0x9]
- b _08055140
- .align 2, 0
-_08055134: .4byte gSaveBlock1Ptr
-_08055138:
- adds r2, 0x18
- adds r3, 0x1
- cmp r3, 0x3F
- ble _0805512A
-_08055140:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end Overworld_SetMapObjTemplateMovementType
-
- thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw
-mapdata_load_assets_to_gpu_and_full_redraw: @ 8055148
- push {r4,lr}
- bl move_tilemap_camera_to_upper_left_corner
- ldr r4, _0805516C @ =gMapHeader
- ldr r0, [r4]
- bl copy_map_tileset1_tileset2_to_vram
- ldr r0, [r4]
- bl apply_map_tileset1_tileset2_palette
- bl DrawWholeMapView
- bl InitTilesetAnimations
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805516C: .4byte gMapHeader
- thumb_func_end mapdata_load_assets_to_gpu_and_full_redraw
-
- thumb_func_start get_mapdata_header
-get_mapdata_header: @ 8055170
- push {lr}
- ldr r0, _08055180 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x32]
- cmp r1, 0
- bne _08055184
- movs r0, 0
- b _0805518E
- .align 2, 0
-_08055180: .4byte gSaveBlock1Ptr
-_08055184:
- ldr r0, _08055194 @ =gMapLayouts
- subs r1, 0x1
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
-_0805518E:
- pop {r1}
- bx r1
- .align 2, 0
-_08055194: .4byte gMapLayouts
- thumb_func_end get_mapdata_header
-
- thumb_func_start warp_shift
-warp_shift: @ 8055198
- ldr r3, _080551C4 @ =gUnknown_2031DB4
- ldr r0, _080551C8 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, [r2, 0x4]
- ldr r1, [r2, 0x8]
- str r0, [r3]
- str r1, [r3, 0x4]
- ldr r0, _080551CC @ =gUnknown_2031DBC
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [r2, 0x4]
- str r1, [r2, 0x8]
- ldr r2, _080551D0 @ =gUnknown_2031DC4
- ldr r0, _080551D4 @ =sDummyWarpData
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r2, _080551D8 @ =gUnknown_2031DCC
- str r0, [r2]
- str r1, [r2, 0x4]
- bx lr
- .align 2, 0
-_080551C4: .4byte gUnknown_2031DB4
-_080551C8: .4byte gSaveBlock1Ptr
-_080551CC: .4byte gUnknown_2031DBC
-_080551D0: .4byte gUnknown_2031DC4
-_080551D4: .4byte sDummyWarpData
-_080551D8: .4byte gUnknown_2031DCC
- thumb_func_end warp_shift
-
- thumb_func_start warp_set
-warp_set: @ 80551DC
- push {r4,r5,lr}
- ldr r4, [sp, 0xC]
- ldr r5, [sp, 0x10]
- strb r1, [r0]
- strb r2, [r0, 0x1]
- strb r3, [r0, 0x2]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r0, 0x4]
- lsls r5, 24
- asrs r5, 24
- strh r5, [r0, 0x6]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end warp_set
-
- thumb_func_start warp_data_is_not_neg_1
-warp_data_is_not_neg_1: @ 80551FC
- push {lr}
- adds r1, r0, 0
- movs r2, 0
- ldrsb r2, [r1, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- bne _08055230
- movs r0, 0x1
- ldrsb r0, [r1, r0]
- cmp r0, r2
- bne _08055230
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- cmp r2, r0
- bne _08055230
- movs r0, 0x4
- ldrsh r3, [r1, r0]
- cmp r3, r2
- bne _08055230
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r0, r3
- bne _08055230
- movs r0, 0x1
- b _08055232
-_08055230:
- movs r0, 0
-_08055232:
- pop {r1}
- bx r1
- thumb_func_end warp_data_is_not_neg_1
-
- thumb_func_start Overworld_GetMapHeaderByGroupAndId
-Overworld_GetMapHeaderByGroupAndId: @ 8055238
- lsls r0, 16
- lsls r1, 16
- ldr r2, _0805524C @ =gMapGroups
- lsrs r0, 14
- adds r0, r2
- ldr r0, [r0]
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- bx lr
- .align 2, 0
-_0805524C: .4byte gMapGroups
- thumb_func_end Overworld_GetMapHeaderByGroupAndId
-
- thumb_func_start warp1_get_mapheader
-warp1_get_mapheader: @ 8055250
- push {lr}
- ldr r1, _08055270 @ =gUnknown_2031DBC
- movs r0, 0
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- pop {r1}
- bx r1
- .align 2, 0
-_08055270: .4byte gUnknown_2031DBC
- thumb_func_end warp1_get_mapheader
-
- thumb_func_start set_current_map_header_from_sav1_save_old_name
-set_current_map_header_from_sav1_save_old_name: @ 8055274
- push {r4-r6,lr}
- ldr r4, _080552B4 @ =gMapHeader
- ldr r5, _080552B8 @ =gSaveBlock1Ptr
- ldr r1, [r5]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r1, r4, 0
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldr r0, [r0]
- str r0, [r1]
- ldr r1, [r5]
- ldrh r0, [r4, 0x12]
- strh r0, [r1, 0x32]
- bl get_mapdata_header
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080552B4: .4byte gMapHeader
-_080552B8: .4byte gSaveBlock1Ptr
- thumb_func_end set_current_map_header_from_sav1_save_old_name
-
- thumb_func_start set_current_map_header_from_sav1
-set_current_map_header_from_sav1: @ 80552BC
- push {r4,r5,lr}
- ldr r4, _080552F4 @ =gMapHeader
- ldr r0, _080552F8 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r1, r4, 0
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldr r0, [r0]
- str r0, [r1]
- bl get_mapdata_header
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080552F4: .4byte gMapHeader
-_080552F8: .4byte gSaveBlock1Ptr
- thumb_func_end set_current_map_header_from_sav1
-
thumb_func_start update_camera_pos_from_warpid
update_camera_pos_from_warpid: @ 80552FC
push {r4,r5,lr}
@@ -567,8 +75,8 @@ _08055374: .4byte gMapHeader
thumb_func_start WarpIntoMap
WarpIntoMap: @ 8055378
push {lr}
- bl warp_shift
- bl set_current_map_header_from_sav1_save_old_name
+ bl ApplyCurrentWarp
+ bl LoadCurrentMapData
bl update_camera_pos_from_warpid
pop {r0}
bx r0
@@ -582,7 +90,7 @@ SetWarpDestination: @ 805538C
adds r5, r1, 0
adds r6, r2, 0
ldr r1, [sp, 0x18]
- ldr r0, _080553C4 @ =gUnknown_2031DBC
+ ldr r0, _080553C4 @ =sWarpDestination
lsls r4, 24
asrs r4, 24
lsls r5, 24
@@ -598,13 +106,13 @@ SetWarpDestination: @ 805538C
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
- bl warp_set
+ bl SetWarpData
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080553C4: .4byte gUnknown_2031DBC
+_080553C4: .4byte sWarpDestination
thumb_func_end SetWarpDestination
thumb_func_start SetWarpDestinationToMapWarp
@@ -646,7 +154,7 @@ SetDynamicWarp: @ 80553E8
movs r4, 0x2
ldrsb r4, [r5, r4]
str r4, [sp, 0x4]
- bl warp_set
+ bl SetWarpData
add sp, 0x8
pop {r4,r5}
pop {r0}
@@ -676,7 +184,7 @@ SetDynamicWarpWithCoords: @ 805541C
lsls r5, 24
asrs r5, 24
str r5, [sp, 0x4]
- bl warp_set
+ bl SetWarpData
add sp, 0x8
pop {r4,r5}
pop {r0}
@@ -687,7 +195,7 @@ _08055450: .4byte gSaveBlock1Ptr
thumb_func_start SetWarpDestinationToDynamicWarp
SetWarpDestinationToDynamicWarp: @ 8055454
- ldr r2, _08055464 @ =gUnknown_2031DBC
+ ldr r2, _08055464 @ =sWarpDestination
ldr r0, _08055468 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, [r0, 0x18]
@@ -696,7 +204,7 @@ SetWarpDestinationToDynamicWarp: @ 8055454
str r1, [r2, 0x4]
bx lr
.align 2, 0
-_08055464: .4byte gUnknown_2031DBC
+_08055464: .4byte sWarpDestination
_08055468: .4byte gSaveBlock1Ptr
thumb_func_end SetWarpDestinationToDynamicWarp
@@ -732,7 +240,7 @@ _0805549A:
thumb_func_start copy_saved_warp3_bank_and_enter_x_to_warp1
copy_saved_warp3_bank_and_enter_x_to_warp1: @ 80554A4
- ldr r2, _080554B4 @ =gUnknown_2031DBC
+ ldr r2, _080554B4 @ =sWarpDestination
ldr r0, _080554B8 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, [r0, 0x20]
@@ -741,19 +249,19 @@ copy_saved_warp3_bank_and_enter_x_to_warp1: @ 80554A4
str r1, [r2, 0x4]
bx lr
.align 2, 0
-_080554B4: .4byte gUnknown_2031DBC
+_080554B4: .4byte sWarpDestination
_080554B8: .4byte gSaveBlock1Ptr
thumb_func_end copy_saved_warp3_bank_and_enter_x_to_warp1
thumb_func_start Overworld_SetWhiteoutRespawnPoint
Overworld_SetWhiteoutRespawnPoint: @ 80554BC
push {lr}
- ldr r0, _080554C8 @ =gUnknown_2031DBC
+ ldr r0, _080554C8 @ =sWarpDestination
bl SetWhiteoutRespawnWarpAndHealerNpc
pop {r0}
bx r0
.align 2, 0
-_080554C8: .4byte gUnknown_2031DBC
+_080554C8: .4byte sWarpDestination
thumb_func_end Overworld_SetWhiteoutRespawnPoint
thumb_func_start SetLastHealLocationWarp
@@ -781,7 +289,7 @@ SetLastHealLocationWarp: @ 80554CC
movs r4, 0x4
ldrsb r4, [r5, r4]
str r4, [sp, 0x4]
- bl warp_set
+ bl SetWarpData
_08055500:
add sp, 0x8
pop {r4,r5}
@@ -803,7 +311,7 @@ UpdateEscapeWarp: @ 805550C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, _08055598 @ =gUnknown_2031DBC
+ ldr r1, _08055598 @ =sWarpDestination
movs r0, 0
ldrsb r0, [r1, r0]
ldrb r1, [r1, 0x1]
@@ -859,7 +367,7 @@ _08055590:
pop {r0}
bx r0
.align 2, 0
-_08055598: .4byte gUnknown_2031DBC
+_08055598: .4byte sWarpDestination
_0805559C: .4byte gSaveBlock1Ptr
thumb_func_end UpdateEscapeWarp
@@ -889,7 +397,7 @@ SetEscapeWarp: @ 80555A0
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
- bl warp_set
+ bl SetWarpData
add sp, 0x8
pop {r4-r6}
pop {r0}
@@ -900,7 +408,7 @@ _080555DC: .4byte gSaveBlock1Ptr
thumb_func_start sub_80555E0
sub_80555E0: @ 80555E0
- ldr r2, _080555F0 @ =gUnknown_2031DBC
+ ldr r2, _080555F0 @ =sWarpDestination
ldr r0, _080555F4 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, [r0, 0x28]
@@ -909,7 +417,7 @@ sub_80555E0: @ 80555E0
str r1, [r2, 0x4]
bx lr
.align 2, 0
-_080555F0: .4byte gUnknown_2031DBC
+_080555F0: .4byte sWarpDestination
_080555F4: .4byte gSaveBlock1Ptr
thumb_func_end sub_80555E0
@@ -921,7 +429,7 @@ SetFixedDiveWarp: @ 80555F8
adds r5, r1, 0
adds r6, r2, 0
ldr r1, [sp, 0x18]
- ldr r0, _08055630 @ =gUnknown_2031DC4
+ ldr r0, _08055630 @ =gFixedDiveWarp
lsls r4, 24
asrs r4, 24
lsls r5, 24
@@ -937,27 +445,27 @@ SetFixedDiveWarp: @ 80555F8
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
- bl warp_set
+ bl SetWarpData
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_08055630: .4byte gUnknown_2031DC4
+_08055630: .4byte gFixedDiveWarp
thumb_func_end SetFixedDiveWarp
thumb_func_start warp1_set_to_warp2
warp1_set_to_warp2: @ 8055634
- ldr r2, _08055644 @ =gUnknown_2031DBC
- ldr r0, _08055648 @ =gUnknown_2031DC4
+ ldr r2, _08055644 @ =sWarpDestination
+ ldr r0, _08055648 @ =gFixedDiveWarp
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, 0x4]
bx lr
.align 2, 0
-_08055644: .4byte gUnknown_2031DBC
-_08055648: .4byte gUnknown_2031DC4
+_08055644: .4byte sWarpDestination
+_08055648: .4byte gFixedDiveWarp
thumb_func_end warp1_set_to_warp2
thumb_func_start SetFixedHoleWarp
@@ -968,7 +476,7 @@ SetFixedHoleWarp: @ 805564C
adds r5, r1, 0
adds r6, r2, 0
ldr r1, [sp, 0x18]
- ldr r0, _08055684 @ =gUnknown_2031DCC
+ ldr r0, _08055684 @ =gFixedHoleWarp
lsls r4, 24
asrs r4, 24
lsls r5, 24
@@ -984,13 +492,13 @@ SetFixedHoleWarp: @ 805564C
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
- bl warp_set
+ bl SetWarpData
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_08055684: .4byte gUnknown_2031DCC
+_08055684: .4byte gFixedHoleWarp
thumb_func_end SetFixedHoleWarp
thumb_func_start SetWarpDestinationToFixedHoleWarp
@@ -1001,22 +509,22 @@ SetWarpDestinationToFixedHoleWarp: @ 8055688
lsrs r5, r0, 16
lsls r1, 16
lsrs r6, r1, 16
- ldr r4, _080556B0 @ =gUnknown_2031DCC
+ ldr r4, _080556B0 @ =gFixedHoleWarp
adds r0, r4, 0
- bl warp_data_is_not_neg_1
+ bl IsDummyWarp
cmp r0, 0x1
bne _080556BC
- ldr r2, _080556B4 @ =gUnknown_2031DBC
- ldr r0, _080556B8 @ =gUnknown_2031DB4
+ ldr r2, _080556B4 @ =sWarpDestination
+ ldr r0, _080556B8 @ =gLastUsedWarp
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, 0x4]
b _080556D6
.align 2, 0
-_080556B0: .4byte gUnknown_2031DCC
-_080556B4: .4byte gUnknown_2031DBC
-_080556B8: .4byte gUnknown_2031DB4
+_080556B0: .4byte gFixedHoleWarp
+_080556B4: .4byte sWarpDestination
+_080556B8: .4byte gLastUsedWarp
_080556BC:
movs r0, 0
ldrsb r0, [r4, r0]
@@ -1039,7 +547,7 @@ _080556D6:
thumb_func_start warp1_set_to_sav1w
warp1_set_to_sav1w: @ 80556E0
- ldr r2, _080556F0 @ =gUnknown_2031DBC
+ ldr r2, _080556F0 @ =sWarpDestination
ldr r0, _080556F4 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, [r0, 0x10]
@@ -1048,7 +556,7 @@ warp1_set_to_sav1w: @ 80556E0
str r1, [r2, 0x4]
bx lr
.align 2, 0
-_080556F0: .4byte gUnknown_2031DBC
+_080556F0: .4byte sWarpDestination
_080556F4: .4byte gSaveBlock1Ptr
thumb_func_end warp1_set_to_sav1w
@@ -1078,7 +586,7 @@ sub_80556F8: @ 80556F8
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
- bl warp_set
+ bl SetWarpData
add sp, 0x8
pop {r4-r6}
pop {r0}
@@ -1112,7 +620,7 @@ sub_8055738: @ 8055738
movs r4, 0x4
ldrsb r4, [r5, r4]
str r4, [sp, 0x4]
- bl warp_set
+ bl SetWarpData
_0805576C:
add sp, 0x8
pop {r4,r5}
@@ -1202,14 +710,14 @@ sub_80557C4: @ 80557C4
b _08055818
_080557FC:
bl mapheader_run_script_with_tag_x6
- ldr r0, _08055810 @ =gUnknown_2031DC4
- bl warp_data_is_not_neg_1
+ ldr r0, _08055810 @ =gFixedDiveWarp
+ bl IsDummyWarp
cmp r0, 0
beq _08055814
movs r0, 0
b _0805581A
.align 2, 0
-_08055810: .4byte gUnknown_2031DC4
+_08055810: .4byte gFixedDiveWarp
_08055814:
bl warp1_set_to_warp2
_08055818:
@@ -1273,8 +781,8 @@ sub_8055864: @ 8055864
adds r2, r3, 0
bl SetWarpDestination
bl sub_8055E94
- bl warp_shift
- bl set_current_map_header_from_sav1_save_old_name
+ bl ApplyCurrentWarp
+ bl LoadCurrentMapData
bl sub_8054F68
bl TrySetMapSaveWarpStatus
bl sub_806E110
@@ -1331,7 +839,7 @@ _0805591C: .4byte gMapHeader
thumb_func_start sub_8055920
sub_8055920: @ 8055920
push {r4,lr}
- bl set_current_map_header_from_sav1_save_old_name
+ bl LoadCurrentMapData
bl sub_8054F68
ldr r0, _0805599C @ =gMapHeader
ldrb r0, [r0, 0x17]
@@ -1382,7 +890,7 @@ _080559A4: .4byte 0x00000806
thumb_func_start sub_80559A8
sub_80559A8: @ 80559A8
push {lr}
- bl set_current_map_header_from_sav1_save_old_name
+ bl LoadCurrentMapData
bl sub_8054F68
ldr r0, _080559E0 @ =gMapHeader
ldrb r0, [r0, 0x17]
@@ -1393,7 +901,7 @@ sub_80559A8: @ 80559A8
bl sub_8055CB8
bl sub_8110920
bl sub_8111708
- bl set_current_map_header_from_sav1
+ bl LoadSaveblockMapHeader
bl InitMap
pop {r0}
bx r0
@@ -1872,7 +1380,7 @@ SetCurrentMapLayout: @ 8055D40
ldr r1, _08055D54 @ =gSaveBlock1Ptr
ldr r1, [r1]
strh r0, [r1, 0x32]
- bl get_mapdata_header
+ bl GetMapLayout
ldr r1, _08055D58 @ =gMapHeader
str r0, [r1]
pop {r0}
@@ -1884,14 +1392,14 @@ _08055D58: .4byte gMapHeader
thumb_func_start sub_8055D5C
sub_8055D5C: @ 8055D5C
- ldr r2, _08055D68 @ =gUnknown_2031DBC
+ ldr r2, _08055D68 @ =sWarpDestination
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, 0x4]
bx lr
.align 2, 0
-_08055D68: .4byte gUnknown_2031DBC
+_08055D68: .4byte sWarpDestination
thumb_func_end sub_8055D5C
thumb_func_start sub_8055D6C
@@ -1931,14 +1439,14 @@ _08055DA0: .4byte gSaveBlock1Ptr
thumb_func_start sub_8055DA4
sub_8055DA4: @ 8055DA4
push {lr}
- ldr r0, _08055DB4 @ =gUnknown_2031DBC
+ ldr r0, _08055DB4 @ =sWarpDestination
bl sub_8055D6C
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
-_08055DB4: .4byte gUnknown_2031DBC
+_08055DB4: .4byte sWarpDestination
thumb_func_end sub_8055DA4
thumb_func_start sub_8055DB8
@@ -2166,7 +1674,7 @@ _08055F62:
thumb_func_start GetMapMusicFadeoutSpeed
GetMapMusicFadeoutSpeed: @ 8055F68
push {lr}
- bl warp1_get_mapheader
+ bl GetDestinationWarpMapHeader
ldrb r0, [r0, 0x17]
bl IsMapTypeIndoors
lsls r0, 24
@@ -2473,20 +1981,20 @@ _0805619C: .4byte gSaveBlock1Ptr
thumb_func_start GetLastUsedWarpMapType
GetLastUsedWarpMapType: @ 80561A0
push {lr}
- ldr r0, _080561B0 @ =gUnknown_2031DB4
+ ldr r0, _080561B0 @ =gLastUsedWarp
bl get_map_light_level_from_warp
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.align 2, 0
-_080561B0: .4byte gUnknown_2031DB4
+_080561B0: .4byte gLastUsedWarp
thumb_func_end GetLastUsedWarpMapType
thumb_func_start GetLastUsedWarpMapSectionId
GetLastUsedWarpMapSectionId: @ 80561B4
push {lr}
- ldr r1, _080561D4 @ =gUnknown_2031DB4
+ ldr r1, _080561D4 @ =gLastUsedWarp
movs r0, 0
ldrsb r0, [r1, r0]
lsls r0, 16
@@ -2501,7 +2009,7 @@ GetLastUsedWarpMapSectionId: @ 80561B4
pop {r1}
bx r1
.align 2, 0
-_080561D4: .4byte gUnknown_2031DB4
+_080561D4: .4byte gLastUsedWarp
thumb_func_end GetLastUsedWarpMapSectionId
thumb_func_start IsMapTypeOutdoors
@@ -3410,7 +2918,7 @@ CB2_ContinueSavedGame: @ 8056938
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
bl sub_8056420
- bl set_current_map_header_from_sav1
+ bl LoadSaveblockMapHeader
bl sub_80550A8
bl UnfreezeObjectEvents
bl sub_8054E40
@@ -4514,7 +4022,7 @@ sub_80572A8: @ 80572A8
ldr r0, _080572D0 @ =gUnknown_2036E28
movs r1, 0x1
strb r1, [r0]
- bl set_current_map_header_from_sav1
+ bl LoadSaveblockMapHeader
bl ScriptContext1_Init
bl ScriptContext2_Disable
movs r0, 0
@@ -4695,7 +4203,7 @@ sub_8057430: @ 8057430
movs r0, 0x3
strb r0, [r1]
bl sub_8056420
- bl set_current_map_header_from_sav1
+ bl LoadSaveblockMapHeader
bl sub_80550A8
bl UnfreezeObjectEvents
bl sub_8054E40
@@ -4865,7 +4373,7 @@ _08057560:
ands r0, r2
adds r6, r0, 0
orrs r6, r1
- ldr r0, _08057608 @ =gUnknown_2031DBC
+ ldr r0, _08057608 @ =sWarpDestination
str r5, [r0]
str r6, [r0, 0x4]
ldr r1, _0805760C @ =gUnknown_2031DE8
@@ -4902,7 +4410,7 @@ _080575F8: .4byte 0xffffff00
_080575FC: .4byte 0xffff00ff
_08057600: .4byte 0xffff0000
_08057604: .4byte 0x0000ffff
-_08057608: .4byte gUnknown_2031DBC
+_08057608: .4byte sWarpDestination
_0805760C: .4byte gUnknown_2031DE8
_08057610: .4byte gPaletteFade
_08057614: .4byte gFieldCallback2
diff --git a/data/overworld.s b/data/overworld.s
index 4bd1f41da..37ab8c9bd 100644
--- a/data/overworld.s
+++ b/data/overworld.s
@@ -5,13 +5,6 @@
.section .rodata
.align 2, 0
- .align 2
-sDummyWarpData:: @ 826D2B0
- map MAP_UNDEFINED
- .byte 0xFF
- .align 1
- .2byte 0xFFFF, 0xFFFF
-
sUnusedData:: @ 826D2B8
.4byte 1200
.4byte 3600
diff --git a/include/field_camera.h b/include/field_camera.h
index 2d1ce2ce9..9c23bb774 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -31,5 +31,6 @@ void SetCameraPanning(s16 x, s16 y);
void UpdateCameraPanning(void);
void InstallCameraPanAheadCallback(void);
void DrawDoorMetatileAt(int x, int y, const u16 *data);
+void move_tilemap_camera_to_upper_left_corner(void);
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index cc4a0f7ed..1bdfa8086 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -24,7 +24,7 @@ void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s32, s32);
s32 GetMapBorderIdAt(s32, s32);
bool32 CanCameraMoveInDirection(s32);
-u32 GetBehaviorByMetatileIdAndMapLayout(struct MapLayout *mapLayout, u16 metatile, u8 attr);
+u32 GetBehaviorByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 metatile, u8 attr);
const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection);
struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y);
void sub_8059948(u8 a0, u8 a1);
@@ -34,5 +34,7 @@ u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit);
u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr);
void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2);
bool8 CameraMove(s32 x, s32 y);
+void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout);
+void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout);
#endif //GUARD_FIELDMAP_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 1858d3344..9c9daa4cb 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -185,10 +185,10 @@ struct MapConnections
struct MapHeader
{
- /* 0x00 */ struct MapLayout *mapLayout;
- /* 0x04 */ struct MapEvents *events;
- /* 0x08 */ u8 *mapScripts;
- /* 0x0C */ struct MapConnections *connections;
+ /* 0x00 */ const struct MapLayout *mapLayout;
+ /* 0x04 */ const struct MapEvents *events;
+ /* 0x08 */ const u8 *mapScripts;
+ /* 0x0C */ const struct MapConnections *connections;
/* 0x10 */ u16 music;
/* 0x12 */ u16 mapLayoutId;
/* 0x14 */ u8 regionMapSectionId;
diff --git a/include/overworld.h b/include/overworld.h
index 08de2a9a1..f129d849f 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -58,8 +58,8 @@ extern struct UCoords32 gDirectionToVectors[];
extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4];
extern MainCallback gFieldCallback;
-extern struct WarpData gUnknown_2031DB4;
-extern struct WarpData gUnknown_2031DBC;
+extern struct WarpData gLastUsedWarp;
+extern struct WarpData sWarpDestination;
extern u8 gUnknown_2031DE0;
extern u8 gFieldLinkPlayerCount;
@@ -68,7 +68,7 @@ extern u8 gLocalLinkPlayerId;
void IncrementGameStat(u8 index);
void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
-void Overworld_SetMapObjTemplateMovementType(u8, u8);
+void Overworld_SetObjEventTemplateMovementType(u8, u8);
void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
@@ -100,7 +100,7 @@ void Overworld_ChangeMusicTo(u16);
bool32 IsUpdateLinkStateCBActive(void);
void ClearLinkPlayerObjectEvents(void);
-const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16, u16);
+const struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16, u16);
void ObjectEventMoveDestCoords(struct ObjectEvent *, u32, s16 *, s16 *);
void sub_8086230(void);
void CB2_ReturnToField(void);
@@ -159,7 +159,7 @@ bool32 sub_8058244(void);
u8 GetCurrentMapType(void);
u8 GetLastUsedWarpMapType(void);
-const struct MapHeader *warp1_get_mapheader(void);
+const struct MapHeader *const GetDestinationWarpMapHeader(void);
void TryFadeOutOldMapMusic(void);
void CB2_ReturnToFieldCableClub(void);
void ResetGameStats(void);
@@ -172,7 +172,7 @@ bool32 sub_8058318(void);
void CB2_ReturnToFieldWithOpenMenu(void);
void CB2_WhiteOut(void);
void c2_8056854(void);
-void sub_8054F38(u32 newKey);
+void ApplyNewEncryptionKeyToGameStats(u32 newKey);
void sub_8055778(int);
void sub_8055738(u8 loc);
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 03190c095..7ebf9cc30 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -94,7 +94,7 @@ void FadeInFromBlack(void)
void WarpFadeOutScreen(void)
{
- const struct MapHeader *header = warp1_get_mapheader();
+ const struct MapHeader *header = GetDestinationWarpMapHeader();
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && MapHasPreviewScreen(header->regionMapSectionId, MPS_TYPE_CAVE))
FadeScreen(FADE_TO_BLACK, 0);
else
@@ -113,7 +113,7 @@ void WarpFadeOutScreen(void)
static void sub_807DC70(void)
{
- switch (MapTransitionIsEnter(GetCurrentMapType(), warp1_get_mapheader()->mapType))
+ switch (MapTransitionIsEnter(GetCurrentMapType(), GetDestinationWarpMapHeader()->mapType))
{
case FALSE:
FadeScreen(FADE_TO_BLACK, 3);
diff --git a/src/field_specials.c b/src/field_specials.c
index 59c026b78..4cc78e81a 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -2040,7 +2040,7 @@ const u16 sPokeCenter1FMaps[] = {
bool8 sub_80CC87C(void)
{
s32 i;
- u16 mapno = (gUnknown_2031DB4.mapGroup << 8) + gUnknown_2031DB4.mapNum;
+ u16 mapno = (gLastUsedWarp.mapGroup << 8) + gLastUsedWarp.mapNum;
for (i = 0; sPokeCenter1FMaps[i] != MAP_UNDEFINED; i++)
{
if (sPokeCenter1FMaps[i] == mapno)
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 53a97629f..2b014d4b8 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -370,7 +370,7 @@ union Block
s32 xprime; \
s32 yprime; \
\
- struct MapLayout *mapLayout = gMapHeader.mapLayout; \
+ const struct MapLayout *mapLayout = gMapHeader.mapLayout; \
\
xprime = x - 7; \
xprime += 8 * mapLayout->borderWidth; \
@@ -485,7 +485,7 @@ void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2)
}
}
-u32 GetBehaviorByMetatileIdAndMapLayout(struct MapLayout *mapLayout, u16 metatile, u8 attr)
+u32 GetBehaviorByMetatileIdAndMapLayout(const struct MapLayout *mapLayout, u16 metatile, u8 attr)
{
u32 * attributes;
diff --git a/src/itemfinder.c b/src/itemfinder.c
index 5d6950acc..51a670b0f 100644
--- a/src/itemfinder.c
+++ b/src/itemfinder.c
@@ -15,7 +15,7 @@
static void Task_NoResponse_CleanUp(u8 taskId);
static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId);
static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId);
-static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskId);
+static bool8 HiddenItemIsWithinRangeOfPlayer(const struct MapEvents * events, u8 taskId);
static void SetUnderfootHiddenItem(u8 taskId, u32 hiddenItem);
static void SetNormalHiddenItem(u8 taskId);
static void FindHiddenItemsInConnectedMaps(u8 taskId);
@@ -199,7 +199,7 @@ static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId)
tDingTimer++;
}
-static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskId)
+static bool8 HiddenItemIsWithinRangeOfPlayer(const struct MapEvents * events, u8 taskId)
{
s16 x, y, i, dx, dy;
PlayerGetDestCoords(&x, &y);
@@ -284,7 +284,7 @@ static void SetNormalHiddenItem(u8 taskId)
}
}
-static bool8 HiddenItemAtPos(struct MapEvents * events, s16 x, s16 y)
+static bool8 HiddenItemAtPos(const struct MapEvents * events, s16 x, s16 y)
{
u8 bgEventCount = events->bgEventCount;
struct BgEvent * bgEvents = events->bgEvents;
diff --git a/src/load_save.c b/src/load_save.c
index 7ab28ffc3..5cf817dc6 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -286,7 +286,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey)
for(i = 0; i < NUM_TOWER_CHALLENGE_TYPES; i++)
ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->trainerTower[i].bestTime, encryptionKey);
- sub_8054F38(encryptionKey);
+ ApplyNewEncryptionKeyToGameStats(encryptionKey);
ApplyNewEncryptionKeyToBagItems_(encryptionKey);
ApplyNewEncryptionKeyToBerryPowder(encryptionKey);
ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->money, encryptionKey);
diff --git a/src/overworld.c b/src/overworld.c
index ec843dd4a..cfb1533f3 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -2,13 +2,16 @@
#include "gflib.h"
#include "event_data.h"
#include "event_scripts.h"
+#include "field_camera.h"
#include "field_specials.h"
+#include "fieldmap.h"
#include "load_save.h"
#include "money.h"
#include "overworld.h"
#include "roamer.h"
#include "script.h"
#include "script_pokemon_util.h"
+#include "tileset_anims.h"
#include "constants/maps.h"
#include "constants/flags.h"
@@ -19,11 +22,10 @@ struct InitialPlayerAvatarState
u8 unk2;
};
-
-EWRAM_DATA struct WarpData gUnknown_2031DB4 = {};
-EWRAM_DATA struct WarpData gUnknown_2031DBC = {};
-EWRAM_DATA struct WarpData gUnknown_2031DC4 = {};
-EWRAM_DATA struct WarpData gUnknown_2031DCC = {};
+EWRAM_DATA struct WarpData gLastUsedWarp = {};
+EWRAM_DATA struct WarpData sWarpDestination = {};
+EWRAM_DATA struct WarpData gFixedDiveWarp = {};
+EWRAM_DATA struct WarpData gFixedHoleWarp = {};
EWRAM_DATA struct InitialPlayerAvatarState gUnknown_2031DD4 = {};
u8 CountBadgesForOverworldWhiteOutLossCalculation(void);
@@ -31,6 +33,9 @@ void Overworld_ResetStateAfterWhitingOut(void);
void Overworld_SetWhiteoutRespawnPoint(void);
void sub_805610C(void);
+extern const struct MapLayout * gMapLayouts[];
+extern const struct MapHeader *const *gMapGroups[];
+
static const u8 sWhiteOutMoneyLossMultipliers[] = {
2,
4,
@@ -196,7 +201,7 @@ void SetGameStat(u8 statId, u32 statVal)
gSaveBlock1Ptr->gameStats[statId] = statVal ^ gSaveBlock2Ptr->encryptionKey;
}
-void sub_8054F38(u32 newKey)
+void ApplyNewEncryptionKeyToGameStats(u32 newKey)
{
u8 i;
for (i = 0; i < NUM_GAME_STATS; i++)
@@ -204,3 +209,161 @@ void sub_8054F38(u32 newKey)
ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->gameStats[i], newKey);
}
}
+
+void sub_8054F68(void)
+{
+ u8 i, j;
+ u8 mapGroup;
+ u8 mapNum;
+ u8 localId;
+ const struct MapHeader * linkedMap;
+
+ for (i = 0, j = 0; i < gMapHeader.events->objectEventCount; i++)
+ {
+ if (gMapHeader.events->objectEvents[i].unk2 == 0xFF)
+ {
+ localId = gMapHeader.events->objectEvents[i].elevation;
+ mapNum = gMapHeader.events->objectEvents[i].trainerType;
+ mapGroup = gMapHeader.events->objectEvents[i].trainerRange_berryTreeId;
+ linkedMap = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
+ gSaveBlock1Ptr->objectEventTemplates[j] = linkedMap->events->objectEvents[localId - 1];
+ gSaveBlock1Ptr->objectEventTemplates[j].localId = gMapHeader.events->objectEvents[i].localId;
+ gSaveBlock1Ptr->objectEventTemplates[j].x = gMapHeader.events->objectEvents[i].x;
+ gSaveBlock1Ptr->objectEventTemplates[j].y = gMapHeader.events->objectEvents[i].y;
+ gSaveBlock1Ptr->objectEventTemplates[j].elevation = localId;
+ gSaveBlock1Ptr->objectEventTemplates[j].trainerType = mapNum;
+ gSaveBlock1Ptr->objectEventTemplates[j].trainerRange_berryTreeId = mapGroup;
+ gSaveBlock1Ptr->objectEventTemplates[j].unk2 = 0xFF;
+ j++;
+ }
+ else
+ {
+ gSaveBlock1Ptr->objectEventTemplates[j] = gMapHeader.events->objectEvents[i];
+ j++;
+ }
+ }
+}
+
+void sub_80550A8(void)
+{
+ int i;
+ const struct ObjectEventTemplate * src = gMapHeader.events->objectEvents;
+ struct ObjectEventTemplate * savObjTemplates = gSaveBlock1Ptr->objectEventTemplates;
+
+ for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++)
+ {
+ savObjTemplates[i].script = src[i].script;
+ }
+}
+
+void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
+{
+ int i;
+ struct ObjectEventTemplate * savObjTemplates = gSaveBlock1Ptr->objectEventTemplates;
+ for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++)
+ {
+ if (savObjTemplates[i].localId == localId)
+ {
+ savObjTemplates[i].x = x;
+ savObjTemplates[i].y = y;
+ break;
+ }
+ }
+}
+
+void Overworld_SetObjEventTemplateMovementType(u8 localId, u8 movementType)
+{
+ s32 i;
+
+ struct ObjectEventTemplate *savObjTemplates = gSaveBlock1Ptr->objectEventTemplates;
+ for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++)
+ {
+ struct ObjectEventTemplate *objectEventTemplate = &savObjTemplates[i];
+ if (objectEventTemplate->localId == localId)
+ {
+ objectEventTemplate->movementType = movementType;
+ return;
+ }
+ }
+}
+
+void mapdata_load_assets_to_gpu_and_full_redraw(void)
+{
+ move_tilemap_camera_to_upper_left_corner();
+ copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout);
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ DrawWholeMapView();
+ InitTilesetAnimations();
+}
+
+const struct MapLayout *GetMapLayout(void)
+{
+ u16 mapLayoutId = gSaveBlock1Ptr->mapLayoutId;
+ if (mapLayoutId)
+ return gMapLayouts[mapLayoutId - 1];
+ return NULL;
+}
+
+const struct WarpData sDummyWarpData = {
+ .mapGroup = MAP_GROUP(UNDEFINED),
+ .mapNum = MAP_NUM(UNDEFINED),
+ .warpId = 0xFF,
+ .x = -1,
+ .y = -1
+};
+
+void ApplyCurrentWarp(void)
+{
+ gLastUsedWarp = gSaveBlock1Ptr->location;
+ gSaveBlock1Ptr->location = sWarpDestination;
+ gFixedDiveWarp = sDummyWarpData;
+ gFixedHoleWarp = sDummyWarpData;
+}
+
+void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
+{
+ warp->mapGroup = mapGroup;
+ warp->mapNum = mapNum;
+ warp->warpId = warpId;
+ warp->x = x;
+ warp->y = y;
+}
+
+bool32 IsDummyWarp(struct WarpData *warp)
+{
+ if (warp->mapGroup != -1)
+ return FALSE;
+ else if (warp->mapNum != -1)
+ return FALSE;
+ else if (warp->warpId != -1)
+ return FALSE;
+ else if (warp->x != -1)
+ return FALSE;
+ else if (warp->y != -1)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+struct MapHeader const *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum)
+{
+ return gMapGroups[mapGroup][mapNum];
+}
+
+struct MapHeader const *const GetDestinationWarpMapHeader(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
+}
+
+void LoadCurrentMapData(void)
+{
+ gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
+ gSaveBlock1Ptr->mapLayoutId = gMapHeader.mapLayoutId;
+ gMapHeader.mapLayout = GetMapLayout();
+}
+
+void LoadSaveblockMapHeader(void)
+{
+ gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
+ gMapHeader.mapLayout = GetMapLayout();
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index af977fbc7..bec0f4942 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1168,7 +1168,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext * ctx)
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 movementType = ScriptReadByte(ctx);
- Overworld_SetMapObjTemplateMovementType(localId, movementType);
+ Overworld_SetObjEventTemplateMovementType(localId, movementType);
return FALSE;
}
diff --git a/src/script.c b/src/script.c
index ff74b40bc..5d691247f 100644
--- a/src/script.c
+++ b/src/script.c
@@ -358,7 +358,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr)
u8 *mapheader_get_tagged_pointer(u8 tag)
{
- u8 *mapScripts = gMapHeader.mapScripts;
+ const u8 *mapScripts = gMapHeader.mapScripts;
if (mapScripts == NULL)
return NULL;
@@ -370,7 +370,7 @@ u8 *mapheader_get_tagged_pointer(u8 tag)
if (*mapScripts == tag)
{
mapScripts++;
- return (u8 *)(mapScripts[0] + (mapScripts[1] << 8) + (mapScripts[2] << 16) + (mapScripts[3] << 24));
+ return T2_READ_PTR(mapScripts);
}
mapScripts += 5;
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index c1eca3171..5b3707943 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -35,16 +35,16 @@
.align 2
@ .include "src/overworld.o"
-gUnknown_2031DB4: @ 2031DB4
+gLastUsedWarp: @ 2031DB4
.space 0x8
-gUnknown_2031DBC: @ 2031DBC
+sWarpDestination: @ 2031DBC
.space 0x8
-gUnknown_2031DC4: @ 2031DC4
+gFixedDiveWarp: @ 2031DC4
.space 0x8
-gUnknown_2031DCC: @ 2031DCC
+gFixedHoleWarp: @ 2031DCC
.space 0x8
gUnknown_2031DD4: @ 2031DD4