summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-08-26 11:52:43 -0400
committerGitHub <noreply@github.com>2019-08-26 11:52:43 -0400
commit634fe80e9dcaffc9b1cf622b3132e686e926e97f (patch)
tree57a5d22d2b9fea2a39c2124df34283032b360ffb
parent74e2a0e123be0ecd0e0df516ce242aea9c348117 (diff)
parentb33bcd657768bbc25981420710930a4cdd11a5c2 (diff)
Merge pull request #94 from PikalaxALT/map_preview_screen
Decompile map_preview_screen
-rw-r--r--README.md5
-rw-r--r--asm/map_name_popup.s2
-rw-r--r--asm/map_preview_screen.s657
-rw-r--r--asm/region_map.s10
-rw-r--r--baserom.ipsbin2271448 -> 2055522 bytes
-rw-r--r--data/data_83FECCC.s14
-rw-r--r--data/map_preview/altering_cave_pal.pal35
-rw-r--r--data/map_preview/altering_cave_tilemap.binbin0 -> 976 bytes
-rw-r--r--data/map_preview/altering_cave_tiles.pngbin0 -> 4476 bytes
-rw-r--r--data/map_preview/berry_forest_pal.pal35
-rw-r--r--data/map_preview/berry_forest_tilemap.binbin0 -> 992 bytes
-rw-r--r--data/map_preview/berry_forest_tiles.pngbin0 -> 5875 bytes
-rw-r--r--data/map_preview/cerulean_cave_pal.pal35
-rw-r--r--data/map_preview/cerulean_cave_tilemap.binbin0 -> 1020 bytes
-rw-r--r--data/map_preview/cerulean_cave_tiles.pngbin0 -> 4533 bytes
-rw-r--r--data/map_preview/digletts_cave_pal.pal35
-rw-r--r--data/map_preview/digletts_cave_tilemap.binbin0 -> 996 bytes
-rw-r--r--data/map_preview/digletts_cave_tiles.pngbin0 -> 5235 bytes
-rw-r--r--data/map_preview/dotted_hole_pal.pal35
-rw-r--r--data/map_preview/dotted_hole_tilemap.binbin0 -> 836 bytes
-rw-r--r--data/map_preview/dotted_hole_tiles.pngbin0 -> 4125 bytes
-rw-r--r--data/map_preview/icefall_cave_pal.pal35
-rw-r--r--data/map_preview/icefall_cave_tilemap.binbin0 -> 992 bytes
-rw-r--r--data/map_preview/icefall_cave_tiles.pngbin0 -> 5268 bytes
-rw-r--r--data/map_preview/kanto_safari_zone_pal.pal35
-rw-r--r--data/map_preview/kanto_safari_zone_tilemap.binbin0 -> 864 bytes
-rw-r--r--data/map_preview/kanto_safari_zone_tiles.pngbin0 -> 4931 bytes
-rw-r--r--data/map_preview/kanto_victory_road_pal.pal35
-rw-r--r--data/map_preview/kanto_victory_road_tilemap.binbin0 -> 956 bytes
-rw-r--r--data/map_preview/kanto_victory_road_tiles.pngbin0 -> 5237 bytes
-rw-r--r--data/map_preview/lost_cave_pal.pal35
-rw-r--r--data/map_preview/lost_cave_tilemap.binbin0 -> 1000 bytes
-rw-r--r--data/map_preview/lost_cave_tiles.pngbin0 -> 4428 bytes
-rw-r--r--data/map_preview/monean_chamber_pal.pal35
-rw-r--r--data/map_preview/monean_chamber_tilemap.binbin0 -> 860 bytes
-rw-r--r--data/map_preview/monean_chamber_tiles.pngbin0 -> 4809 bytes
-rw-r--r--data/map_preview/mt_ember_pal.pal35
-rw-r--r--data/map_preview/mt_ember_tilemap.binbin0 -> 908 bytes
-rw-r--r--data/map_preview/mt_ember_tiles.pngbin0 -> 5160 bytes
-rw-r--r--data/map_preview/mt_moon_pal.pal35
-rw-r--r--data/map_preview/mt_moon_tilemap.binbin0 -> 920 bytes
-rw-r--r--data/map_preview/mt_moon_tiles.pngbin0 -> 5790 bytes
-rw-r--r--data/map_preview/pokemon_mansion_pal.pal35
-rw-r--r--data/map_preview/pokemon_mansion_tilemap.binbin0 -> 988 bytes
-rw-r--r--data/map_preview/pokemon_mansion_tiles.pngbin0 -> 5595 bytes
-rw-r--r--data/map_preview/pokemon_tower_pal.pal35
-rw-r--r--data/map_preview/pokemon_tower_tilemap.binbin0 -> 788 bytes
-rw-r--r--data/map_preview/pokemon_tower_tiles.pngbin0 -> 3379 bytes
-rw-r--r--data/map_preview/power_plant_pal.pal35
-rw-r--r--data/map_preview/power_plant_tilemap.binbin0 -> 948 bytes
-rw-r--r--data/map_preview/power_plant_tiles.pngbin0 -> 3923 bytes
-rw-r--r--data/map_preview/rock_tunnel_pal.pal35
-rw-r--r--data/map_preview/rock_tunnel_tilemap.binbin0 -> 1008 bytes
-rw-r--r--data/map_preview/rock_tunnel_tiles.pngbin0 -> 5019 bytes
-rw-r--r--data/map_preview/rocket_hideout_pal.pal35
-rw-r--r--data/map_preview/rocket_hideout_tilemap.binbin0 -> 604 bytes
-rw-r--r--data/map_preview/rocket_hideout_tiles.pngbin0 -> 1764 bytes
-rw-r--r--data/map_preview/rocket_warehouse_pal.pal35
-rw-r--r--data/map_preview/rocket_warehouse_tilemap.binbin0 -> 700 bytes
-rw-r--r--data/map_preview/rocket_warehouse_tiles.pngbin0 -> 2068 bytes
-rw-r--r--data/map_preview/seafoam_islands_pal.pal35
-rw-r--r--data/map_preview/seafoam_islands_tilemap.binbin0 -> 1016 bytes
-rw-r--r--data/map_preview/seafoam_islands_tiles.pngbin0 -> 4997 bytes
-rw-r--r--data/map_preview/silph_co_pal.pal35
-rw-r--r--data/map_preview/silph_co_tilemap.binbin0 -> 928 bytes
-rw-r--r--data/map_preview/silph_co_tiles.pngbin0 -> 3980 bytes
-rw-r--r--data/map_preview/viridian_forest_pal.pal35
-rw-r--r--data/map_preview/viridian_forest_tilemap.binbin0 -> 984 bytes
-rw-r--r--data/map_preview/viridian_forest_tiles.pngbin0 -> 5543 bytes
-rw-r--r--include/bg.h14
-rw-r--r--include/map_preview_screen.h45
-rw-r--r--ld_script.txt4
-rw-r--r--src/map_preview_screen.c615
-rw-r--r--sym_ewram.txt8
74 files changed, 1430 insertions, 679 deletions
diff --git a/README.md b/README.md
index 5165c65d3..c317630ca 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,10 @@
# Pokémon FireRed and LeafGreen
+[![Build Status][travis-badge]][travis]
+
+[travis]: https://travis-ci.org/pret/pokefirered
+[travis-badge]: https://travis-ci.org/pret/pokefirered.svg?branch=master
+
This is a disassembly of Pokémon FireRed and LeafGreen.
It builds the following ROM:
diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s
index 8df50601a..ba64bdbe8 100644
--- a/asm/map_name_popup.s
+++ b/asm/map_name_popup.s
@@ -388,7 +388,7 @@ sub_8098400: @ 8098400
ldrb r1, [r4, 0x14]
add r0, sp, 0xC
movs r2, 0
- bl sub_80C4D78
+ bl GetMapName
adds r2, r0, 0
movs r0, 0x1A
ldrsb r0, [r4, r0]
diff --git a/asm/map_preview_screen.s b/asm/map_preview_screen.s
deleted file mode 100644
index 900b36d9c..000000000
--- a/asm/map_preview_screen.s
+++ /dev/null
@@ -1,657 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F80E4
-sub_80F80E4: @ 80F80E4
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r1, 0
- ldr r2, _080F80FC @ =gUnknown_843E9E8
-_080F80EE:
- ldrb r0, [r2]
- cmp r0, r3
- bne _080F8100
- lsls r0, r1, 24
- lsrs r0, 24
- b _080F810A
- .align 2, 0
-_080F80FC: .4byte gUnknown_843E9E8
-_080F8100:
- adds r2, 0x10
- adds r1, 0x1
- cmp r1, 0x1B
- bls _080F80EE
- movs r0, 0x1C
-_080F810A:
- pop {r1}
- bx r1
- thumb_func_end sub_80F80E4
-
- thumb_func_start sub_80F8110
-sub_80F8110: @ 80F8110
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- adds r5, r4, 0
- bl sub_80F80E4
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r1, 0x1C
- beq _080F814C
- cmp r4, 0x2
- bne _080F8132
- movs r0, 0x1
- b _080F814E
-_080F8132:
- movs r2, 0
- ldr r0, _080F8148 @ =gUnknown_843E9E8
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, r5
- bne _080F8142
- movs r2, 0x1
-_080F8142:
- adds r0, r2, 0
- b _080F814E
- .align 2, 0
-_080F8148: .4byte gUnknown_843E9E8
-_080F814C:
- movs r0, 0
-_080F814E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F8110
-
- thumb_func_start sub_80F8154
-sub_80F8154: @ 80F8154
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _080F8174 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080F8178
- adds r0, r2, 0
- bl sub_80F8110
- lsls r0, 24
- lsrs r0, 24
- b _080F817A
- .align 2, 0
-_080F8174: .4byte gUnknown_203ADFA
-_080F8178:
- movs r0, 0
-_080F817A:
- pop {r1}
- bx r1
- thumb_func_end sub_80F8154
-
- thumb_func_start sub_80F8180
-sub_80F8180: @ 80F8180
- push {lr}
- ldr r1, _080F8198 @ =gUnknown_843EBB0
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- movs r0, 0
- bl ShowBg
- pop {r0}
- bx r0
- .align 2, 0
-_080F8198: .4byte gUnknown_843EBB0
- thumb_func_end sub_80F8180
-
- thumb_func_start sub_80F819C
-sub_80F819C: @ 80F819C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- bl sub_80F80E4
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1C
- beq _080F8224
- bl ResetTempTileDataBuffers
- ldr r4, _080F8200 @ =gUnknown_843E9E8
- lsls r5, 4
- adds r0, r4, 0
- adds r0, 0xC
- adds r0, r5, r0
- ldr r0, [r0]
- movs r1, 0xD0
- movs r2, 0x60
- bl LoadPalette
- adds r4, 0x4
- adds r4, r5, r4
- ldr r1, [r4]
- movs r4, 0
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- movs r0, 0
- bl GetBgTilemapBuffer
- cmp r0, 0
- bne _080F8208
- movs r0, 0x80
- lsls r0, 4
- bl Alloc
- adds r1, r0, 0
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, _080F8204 @ =gUnknown_203ABED
- movs r0, 0x1
- strb r0, [r1]
- b _080F820C
- .align 2, 0
-_080F8200: .4byte gUnknown_843E9E8
-_080F8204: .4byte gUnknown_203ABED
-_080F8208:
- ldr r0, _080F822C @ =gUnknown_203ABED
- strb r4, [r0]
-_080F820C:
- ldr r0, _080F8230 @ =gUnknown_843E9E8
- adds r0, 0x8
- adds r0, r5, r0
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_080F8224:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F822C: .4byte gUnknown_203ABED
-_080F8230: .4byte gUnknown_843E9E8
- thumb_func_end sub_80F819C
-
- thumb_func_start sub_80F8234
-sub_80F8234: @ 80F8234
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl RemoveWindow
- ldr r0, _080F8254 @ =gUnknown_203ABED
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F8250
- movs r0, 0
- bl GetBgTilemapBuffer
- bl Free
-_080F8250:
- pop {r0}
- bx r0
- .align 2, 0
-_080F8254: .4byte gUnknown_203ABED
- thumb_func_end sub_80F8234
-
- thumb_func_start sub_80F8258
-sub_80F8258: @ 80F8258
- push {lr}
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F8258
-
- thumb_func_start sub_80F8268
-sub_80F8268: @ 80F8268
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080F8308 @ =sub_80F83D0
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0x7
- bl GetBgAttribute
- ldr r1, _080F830C @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r1
- movs r4, 0
- strh r0, [r5, 0xC]
- movs r0, 0x50
- bl GetGpuReg
- strh r0, [r5, 0x10]
- movs r0, 0x52
- bl GetGpuReg
- strh r0, [r5, 0x12]
- movs r0, 0
- bl GetGpuReg
- strh r0, [r5, 0xE]
- movs r0, 0x48
- bl GetGpuReg
- strh r0, [r5, 0x14]
- movs r0, 0x4A
- bl GetGpuReg
- strh r0, [r5, 0x16]
- adds r0, r6, 0
- bl sub_80F856C
- strh r0, [r5, 0x1C]
- movs r0, 0x10
- strh r0, [r5, 0x18]
- strh r4, [r5, 0x1A]
- movs r0, 0
- movs r1, 0x7
- movs r2, 0
- bl SetBgAttribute
- ldr r1, _080F8310 @ =0x00003e41
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r1, _080F8314 @ =0x00002020
- movs r0, 0x48
- bl SetGpuRegBits
- movs r0, 0x4A
- movs r1, 0x20
- bl SetGpuRegBits
- adds r0, r6, 0
- bl sub_80F8318
- strh r0, [r5, 0x1E]
- bl ScriptContext2_Enable
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8308: .4byte sub_80F83D0
-_080F830C: .4byte gTasks
-_080F8310: .4byte 0x00003e41
-_080F8314: .4byte 0x00002020
- thumb_func_end sub_80F8268
-
- thumb_func_start sub_80F8318
-sub_80F8318: @ 80F8318
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080F83A8 @ =gUnknown_843EBA8
- bl AddWindow
- mov r8, r0
- mov r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r6, r0, 24
- lsrs r6, 24
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- add r1, sp, 0x14
- movs r0, 0
- mov r9, r0
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- movs r0, 0x3
- strb r0, [r1, 0x2]
- ldr r5, _080F83AC @ =gStringVar4
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_80C4D78
- movs r0, 0x2
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- movs r2, 0x68
- subs r2, r0
- lsrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- mov r0, r9
- str r0, [sp]
- str r0, [sp, 0x4]
- add r0, sp, 0x14
- str r0, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- str r5, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized4
- mov r0, r8
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080F83A8: .4byte gUnknown_843EBA8
-_080F83AC: .4byte gStringVar4
- thumb_func_end sub_80F8318
-
- thumb_func_start sub_80F83B0
-sub_80F83B0: @ 80F83B0
- push {lr}
- ldr r0, _080F83C4 @ =sub_80F83D0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F83C8
- movs r0, 0x1
- b _080F83CA
- .align 2, 0
-_080F83C4: .4byte sub_80F83D0
-_080F83C8:
- movs r0, 0
-_080F83CA:
- pop {r1}
- bx r1
- thumb_func_end sub_80F83B0
-
- thumb_func_start sub_80F83D0
-sub_80F83D0: @ 80F83D0
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080F83F8 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _080F83EC
- b _080F853C
-_080F83EC:
- lsls r0, 2
- ldr r1, _080F83FC @ =_080F8400
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F83F8: .4byte gTasks+0x8
-_080F83FC: .4byte _080F8400
- .align 2, 0
-_080F8400:
- .4byte _080F8418
- .4byte _080F8438
- .4byte _080F8448
- .4byte _080F8458
- .4byte _080F8470
- .4byte _080F84F2
-_080F8418:
- bl sub_80F8258
- cmp r0, 0
- beq _080F8422
- b _080F853C
-_080F8422:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _080F842E
- b _080F853C
-_080F842E:
- ldrb r0, [r4, 0x16]
- movs r1, 0x3
- bl CopyWindowToVram
- b _080F84EA
-_080F8438:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _080F853C
- bl sub_807DC00
- b _080F84EA
-_080F8448:
- bl sub_807AA70
- lsls r0, 24
- cmp r0, 0
- beq _080F853C
- bl Overworld_PlaySpecialMapMusic
- b _080F84EA
-_080F8458:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080F853C
- movs r0, 0
- strh r0, [r4, 0x2]
- b _080F84EA
-_080F8470:
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080F847E
- cmp r0, 0x1
- beq _080F8492
- b _080F84A2
-_080F847E:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080F84A2
- movs r0, 0x10
- strh r0, [r4, 0x12]
- b _080F84A2
-_080F8492:
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _080F84A2
- movs r0, 0
- strh r0, [r4, 0x10]
-_080F84A2:
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- strh r0, [r4, 0x2]
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080F853C
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bne _080F853C
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_080F84EA:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080F853C
-_080F84F2:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _080F853C
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- bl sub_80F8234
- ldrb r2, [r4, 0x4]
- movs r0, 0
- movs r1, 0x7
- bl SetBgAttribute
- ldrh r1, [r4, 0x6]
- movs r0, 0
- bl SetGpuReg
- ldrh r1, [r4, 0x8]
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0xA]
- movs r0, 0x52
- bl SetGpuReg
- ldrh r1, [r4, 0xC]
- movs r0, 0x48
- bl SetGpuReg
- ldrh r1, [r4, 0xE]
- movs r0, 0x4A
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyTask
-_080F853C:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F83D0
-
- thumb_func_start sub_80F8544
-sub_80F8544: @ 80F8544
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80F80E4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1C
- beq _080F8564
- lsls r0, 4
- ldr r1, _080F8560 @ =gUnknown_843E9E8
- adds r0, r1
- b _080F8566
- .align 2, 0
-_080F8560: .4byte gUnknown_843E9E8
-_080F8564:
- movs r0, 0
-_080F8566:
- pop {r1}
- bx r1
- thumb_func_end sub_80F8544
-
- thumb_func_start sub_80F856C
-sub_80F856C: @ 80F856C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80F80E4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1C
- bne _080F8582
- movs r0, 0
- b _080F85B6
-_080F8582:
- ldr r0, _080F85A0 @ =gUnknown_843E9E8
- lsls r1, 4
- adds r1, r0
- ldrh r2, [r1, 0x2]
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080F85A4
- adds r0, r2, 0
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080F85B4
- b _080F85AC
- .align 2, 0
-_080F85A0: .4byte gUnknown_843E9E8
-_080F85A4:
- ldr r0, _080F85B0 @ =gUnknown_203ABEC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F85B4
-_080F85AC:
- movs r0, 0x28
- b _080F85B6
- .align 2, 0
-_080F85B0: .4byte gUnknown_203ABEC
-_080F85B4:
- movs r0, 0x78
-_080F85B6:
- pop {r1}
- bx r1
- thumb_func_end sub_80F856C
-
- thumb_func_start sub_80F85BC
-sub_80F85BC: @ 80F85BC
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _080F85D8
- ldr r1, _080F85D4 @ =gUnknown_203ABEC
- movs r0, 0x1
- b _080F85DC
- .align 2, 0
-_080F85D4: .4byte gUnknown_203ABEC
-_080F85D8:
- ldr r1, _080F85EC @ =gUnknown_203ABEC
- movs r0, 0
-_080F85DC:
- strb r0, [r1]
- adds r0, r4, 0
- bl FlagSet
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F85EC: .4byte gUnknown_203ABEC
- thumb_func_end sub_80F85BC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/region_map.s b/asm/region_map.s
index 01c5a71c7..fd681addf 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -1589,7 +1589,7 @@ _080C0B44:
lsrs r1, 16
adds r0, r4, 0
movs r2, 0
- bl sub_80C4D78
+ bl GetMapName
ldr r0, _080C0B94 @ =gUnknown_83F1A90
str r0, [sp]
movs r0, 0
@@ -9690,8 +9690,8 @@ _080C4D72:
bx r1
thumb_func_end sub_80C4D40
- thumb_func_start sub_80C4D78
-sub_80C4D78: @ 80C4D78
+ thumb_func_start GetMapName
+GetMapName: @ 80C4D78
push {r4-r6,lr}
adds r6, r0, 0
lsls r1, 16
@@ -9759,7 +9759,7 @@ _080C4DF2:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_80C4D78
+ thumb_func_end GetMapName
thumb_func_start sub_80C4DF8
sub_80C4DF8: @ 80C4DF8
@@ -9767,7 +9767,7 @@ sub_80C4DF8: @ 80C4DF8
lsls r1, 16
lsrs r1, 16
movs r2, 0
- bl sub_80C4D78
+ bl GetMapName
pop {r1}
bx r1
thumb_func_end sub_80C4DF8
diff --git a/baserom.ips b/baserom.ips
index b8bb6bebb..c4f49efb2 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 829ee9b35..2107a7c0f 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -1,3 +1,5 @@
+#include "constants/region_map.h"
+#include "constants/flags.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
@@ -382,17 +384,9 @@ gTMCaseMainWindowPalette:: @ 841F408
.section .rodata.841F4B4
.align 2
gUnknown_841F4B4:: @ 841F4B4
- .incbin "baserom.gba", 0x41F4B4, 0x1F534
-
-gUnknown_843E9E8:: @ 843E9E8
- .incbin "baserom.gba", 0x43E9E8, 0x1C0
-
-gUnknown_843EBA8:: @ 843EBA8
- .incbin "baserom.gba", 0x43EBA8, 0x8
-
-gUnknown_843EBB0:: @ 843EBB0
- .incbin "baserom.gba", 0x43EBB0, 0x4
+ .incbin "baserom.gba", 0x41f4b4, 0x20
+ .section .rodata.843EBB4
gUnknown_843EBB4:: @ 843EBB4
.incbin "baserom.gba", 0x43EBB4, 0x18
diff --git a/data/map_preview/altering_cave_pal.pal b/data/map_preview/altering_cave_pal.pal
new file mode 100644
index 000000000..f451adce2
--- /dev/null
+++ b/data/map_preview/altering_cave_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+65 74 90
+139 205 123
+90 164 98
+213 205 172
+189 172 139
+156 205 164
+230 230 205
+148 213 106
+189 222 197
+148 131 90
+238 230 189
+213 246 255
+164 205 255
+205 230 255
+238 246 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/altering_cave_tilemap.bin b/data/map_preview/altering_cave_tilemap.bin
new file mode 100644
index 000000000..fa907c6e7
--- /dev/null
+++ b/data/map_preview/altering_cave_tilemap.bin
Binary files differ
diff --git a/data/map_preview/altering_cave_tiles.png b/data/map_preview/altering_cave_tiles.png
new file mode 100644
index 000000000..4ea8496a2
--- /dev/null
+++ b/data/map_preview/altering_cave_tiles.png
Binary files differ
diff --git a/data/map_preview/berry_forest_pal.pal b/data/map_preview/berry_forest_pal.pal
new file mode 100644
index 000000000..755a6c2ed
--- /dev/null
+++ b/data/map_preview/berry_forest_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 90
+238 238 246
+197 197 98
+180 180 90
+106 115 24
+156 156 49
+197 164 90
+164 131 74
+131 106 65
+213 213 156
+222 238 172
+156 189 115
+131 156 82
+131 123 57
+246 246 246
+189 213 139
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/berry_forest_tilemap.bin b/data/map_preview/berry_forest_tilemap.bin
new file mode 100644
index 000000000..fe7312a9f
--- /dev/null
+++ b/data/map_preview/berry_forest_tilemap.bin
Binary files differ
diff --git a/data/map_preview/berry_forest_tiles.png b/data/map_preview/berry_forest_tiles.png
new file mode 100644
index 000000000..6f6efd0fe
--- /dev/null
+++ b/data/map_preview/berry_forest_tiles.png
Binary files differ
diff --git a/data/map_preview/cerulean_cave_pal.pal b/data/map_preview/cerulean_cave_pal.pal
new file mode 100644
index 000000000..074a6b6f7
--- /dev/null
+++ b/data/map_preview/cerulean_cave_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+49 57 106
+222 205 246
+189 164 205
+156 123 164
+238 230 255
+82 106 123
+123 156 172
+222 230 238
+189 197 205
+164 172 180
+139 172 148
+180 205 189
+115 123 131
+213 238 222
+49 57 74
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/cerulean_cave_tilemap.bin b/data/map_preview/cerulean_cave_tilemap.bin
new file mode 100644
index 000000000..e66ab7ea3
--- /dev/null
+++ b/data/map_preview/cerulean_cave_tilemap.bin
Binary files differ
diff --git a/data/map_preview/cerulean_cave_tiles.png b/data/map_preview/cerulean_cave_tiles.png
new file mode 100644
index 000000000..e9f7b4e2e
--- /dev/null
+++ b/data/map_preview/cerulean_cave_tiles.png
Binary files differ
diff --git a/data/map_preview/digletts_cave_pal.pal b/data/map_preview/digletts_cave_pal.pal
new file mode 100644
index 000000000..923d83144
--- /dev/null
+++ b/data/map_preview/digletts_cave_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+49 57 74
+197 197 205
+189 180 172
+148 148 115
+222 238 246
+90 98 90
+106 148 106
+222 222 180
+189 189 148
+164 164 123
+156 197 123
+115 164 82
+106 106 98
+197 222 156
+74 74 65
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/digletts_cave_tilemap.bin b/data/map_preview/digletts_cave_tilemap.bin
new file mode 100644
index 000000000..2f8bbd665
--- /dev/null
+++ b/data/map_preview/digletts_cave_tilemap.bin
Binary files differ
diff --git a/data/map_preview/digletts_cave_tiles.png b/data/map_preview/digletts_cave_tiles.png
new file mode 100644
index 000000000..c3e7d2879
--- /dev/null
+++ b/data/map_preview/digletts_cave_tiles.png
Binary files differ
diff --git a/data/map_preview/dotted_hole_pal.pal b/data/map_preview/dotted_hole_pal.pal
new file mode 100644
index 000000000..fd424fa28
--- /dev/null
+++ b/data/map_preview/dotted_hole_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+65 74 90
+238 246 246
+74 156 106
+115 197 115
+156 230 148
+180 189 197
+213 222 230
+230 238 246
+115 123 90
+156 164 123
+197 205 156
+213 222 189
+222 230 197
+213 238 255
+255 255 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/dotted_hole_tilemap.bin b/data/map_preview/dotted_hole_tilemap.bin
new file mode 100644
index 000000000..a83083b38
--- /dev/null
+++ b/data/map_preview/dotted_hole_tilemap.bin
Binary files differ
diff --git a/data/map_preview/dotted_hole_tiles.png b/data/map_preview/dotted_hole_tiles.png
new file mode 100644
index 000000000..f2d23d46e
--- /dev/null
+++ b/data/map_preview/dotted_hole_tiles.png
Binary files differ
diff --git a/data/map_preview/icefall_cave_pal.pal b/data/map_preview/icefall_cave_pal.pal
new file mode 100644
index 000000000..4e31e5380
--- /dev/null
+++ b/data/map_preview/icefall_cave_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+65 74 106
+238 246 246
+82 139 115
+131 180 131
+172 213 164
+205 205 189
+222 222 205
+238 238 222
+115 115 115
+156 156 139
+180 180 156
+197 197 189
+213 213 205
+213 238 255
+255 255 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/icefall_cave_tilemap.bin b/data/map_preview/icefall_cave_tilemap.bin
new file mode 100644
index 000000000..bd1d05d1b
--- /dev/null
+++ b/data/map_preview/icefall_cave_tilemap.bin
Binary files differ
diff --git a/data/map_preview/icefall_cave_tiles.png b/data/map_preview/icefall_cave_tiles.png
new file mode 100644
index 000000000..211f19758
--- /dev/null
+++ b/data/map_preview/icefall_cave_tiles.png
Binary files differ
diff --git a/data/map_preview/kanto_safari_zone_pal.pal b/data/map_preview/kanto_safari_zone_pal.pal
new file mode 100644
index 000000000..0434848d8
--- /dev/null
+++ b/data/map_preview/kanto_safari_zone_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+222 230 213
+222 213 148
+197 230 148
+213 238 164
+123 164 90
+230 246 246
+222 238 246
+213 222 255
+180 222 98
+205 180 115
+205 213 197
+180 156 106
+164 197 90
+222 238 197
+222 246 213
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+189 222 98
+172 205 90
+115 172 65
+222 213 148
+139 197 98
+205 180 115
+205 230 246
+180 156 106
+222 238 246
+189 213 255
+197 230 148
diff --git a/data/map_preview/kanto_safari_zone_tilemap.bin b/data/map_preview/kanto_safari_zone_tilemap.bin
new file mode 100644
index 000000000..756de73b6
--- /dev/null
+++ b/data/map_preview/kanto_safari_zone_tilemap.bin
Binary files differ
diff --git a/data/map_preview/kanto_safari_zone_tiles.png b/data/map_preview/kanto_safari_zone_tiles.png
new file mode 100644
index 000000000..b1da5a41d
--- /dev/null
+++ b/data/map_preview/kanto_safari_zone_tiles.png
Binary files differ
diff --git a/data/map_preview/kanto_victory_road_pal.pal b/data/map_preview/kanto_victory_road_pal.pal
new file mode 100644
index 000000000..828ff7e22
--- /dev/null
+++ b/data/map_preview/kanto_victory_road_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+74 82 98
+222 238 246
+98 139 106
+131 172 98
+164 205 123
+180 189 197
+205 213 222
+222 230 238
+139 131 74
+172 172 98
+197 197 123
+213 205 148
+222 213 156
+213 230 246
+246 246 246
+0 0 0
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+131 172 98
+164 205 123
+139 131 74
+172 172 98
+197 197 123
+213 205 148
+222 213 156
+148 189 131
+205 213 222
+222 238 246
+98 139 106
diff --git a/data/map_preview/kanto_victory_road_tilemap.bin b/data/map_preview/kanto_victory_road_tilemap.bin
new file mode 100644
index 000000000..03d1cc292
--- /dev/null
+++ b/data/map_preview/kanto_victory_road_tilemap.bin
Binary files differ
diff --git a/data/map_preview/kanto_victory_road_tiles.png b/data/map_preview/kanto_victory_road_tiles.png
new file mode 100644
index 000000000..b3432b9c9
--- /dev/null
+++ b/data/map_preview/kanto_victory_road_tiles.png
Binary files differ
diff --git a/data/map_preview/lost_cave_pal.pal b/data/map_preview/lost_cave_pal.pal
new file mode 100644
index 000000000..33b29a07b
--- /dev/null
+++ b/data/map_preview/lost_cave_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+65 74 90
+98 106 123
+123 131 148
+189 189 164
+164 156 131
+238 238 222
+213 213 197
+213 238 238
+189 213 213
+131 123 98
+213 213 180
+197 222 222
+172 189 230
+189 205 222
+230 230 213
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/lost_cave_tilemap.bin b/data/map_preview/lost_cave_tilemap.bin
new file mode 100644
index 000000000..6c256acc2
--- /dev/null
+++ b/data/map_preview/lost_cave_tilemap.bin
Binary files differ
diff --git a/data/map_preview/lost_cave_tiles.png b/data/map_preview/lost_cave_tiles.png
new file mode 100644
index 000000000..a2c4c8f38
--- /dev/null
+++ b/data/map_preview/lost_cave_tiles.png
Binary files differ
diff --git a/data/map_preview/monean_chamber_pal.pal b/data/map_preview/monean_chamber_pal.pal
new file mode 100644
index 000000000..ce72a4891
--- /dev/null
+++ b/data/map_preview/monean_chamber_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+74 82 98
+205 213 139
+156 164 82
+123 131 82
+213 189 164
+222 230 164
+115 189 106
+172 213 131
+172 148 123
+213 238 238
+230 205 180
+131 106 98
+180 189 123
+197 230 255
+230 246 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/monean_chamber_tilemap.bin b/data/map_preview/monean_chamber_tilemap.bin
new file mode 100644
index 000000000..f228d3daf
--- /dev/null
+++ b/data/map_preview/monean_chamber_tilemap.bin
Binary files differ
diff --git a/data/map_preview/monean_chamber_tiles.png b/data/map_preview/monean_chamber_tiles.png
new file mode 100644
index 000000000..6426d175f
--- /dev/null
+++ b/data/map_preview/monean_chamber_tiles.png
Binary files differ
diff --git a/data/map_preview/mt_ember_pal.pal b/data/map_preview/mt_ember_pal.pal
new file mode 100644
index 000000000..4f5066e64
--- /dev/null
+++ b/data/map_preview/mt_ember_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+65 74 90
+238 246 246
+222 246 255
+230 230 255
+156 230 148
+205 189 213
+222 205 230
+238 222 246
+131 106 106
+172 148 148
+197 172 172
+222 197 197
+238 213 213
+213 238 255
+255 255 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/mt_ember_tilemap.bin b/data/map_preview/mt_ember_tilemap.bin
new file mode 100644
index 000000000..52af71494
--- /dev/null
+++ b/data/map_preview/mt_ember_tilemap.bin
Binary files differ
diff --git a/data/map_preview/mt_ember_tiles.png b/data/map_preview/mt_ember_tiles.png
new file mode 100644
index 000000000..9145e9d4f
--- /dev/null
+++ b/data/map_preview/mt_ember_tiles.png
Binary files differ
diff --git a/data/map_preview/mt_moon_pal.pal b/data/map_preview/mt_moon_pal.pal
new file mode 100644
index 000000000..9a858a8c6
--- /dev/null
+++ b/data/map_preview/mt_moon_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+74 82 98
+230 238 255
+65 131 90
+115 180 115
+156 213 148
+205 205 230
+230 222 255
+222 222 180
+115 106 90
+148 139 98
+172 164 115
+205 197 164
+205 197 164
+205 230 255
+238 230 213
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/mt_moon_tilemap.bin b/data/map_preview/mt_moon_tilemap.bin
new file mode 100644
index 000000000..469efcf77
--- /dev/null
+++ b/data/map_preview/mt_moon_tilemap.bin
Binary files differ
diff --git a/data/map_preview/mt_moon_tiles.png b/data/map_preview/mt_moon_tiles.png
new file mode 100644
index 000000000..8ede39bdd
--- /dev/null
+++ b/data/map_preview/mt_moon_tiles.png
Binary files differ
diff --git a/data/map_preview/pokemon_mansion_pal.pal b/data/map_preview/pokemon_mansion_pal.pal
new file mode 100644
index 000000000..7f6ef22a5
--- /dev/null
+++ b/data/map_preview/pokemon_mansion_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+106 115 131
+213 164 180
+180 131 148
+238 189 205
+230 238 213
+115 82 131
+172 180 172
+131 139 139
+205 213 205
+238 213 238
+238 238 205
+230 222 189
+246 238 164
+222 213 139
+246 246 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/pokemon_mansion_tilemap.bin b/data/map_preview/pokemon_mansion_tilemap.bin
new file mode 100644
index 000000000..a8b1b3d3f
--- /dev/null
+++ b/data/map_preview/pokemon_mansion_tilemap.bin
Binary files differ
diff --git a/data/map_preview/pokemon_mansion_tiles.png b/data/map_preview/pokemon_mansion_tiles.png
new file mode 100644
index 000000000..1fa94ceda
--- /dev/null
+++ b/data/map_preview/pokemon_mansion_tiles.png
Binary files differ
diff --git a/data/map_preview/pokemon_tower_pal.pal b/data/map_preview/pokemon_tower_pal.pal
new file mode 100644
index 000000000..93f4847ae
--- /dev/null
+++ b/data/map_preview/pokemon_tower_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+222 213 246
+213 230 213
+172 180 205
+205 197 156
+180 205 180
+148 164 148
+238 246 238
+238 230 189
+230 238 255
+148 156 180
+255 246 205
+172 164 123
+115 123 148
+197 205 230
+238 246 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/pokemon_tower_tilemap.bin b/data/map_preview/pokemon_tower_tilemap.bin
new file mode 100644
index 000000000..f12b9bdf8
--- /dev/null
+++ b/data/map_preview/pokemon_tower_tilemap.bin
Binary files differ
diff --git a/data/map_preview/pokemon_tower_tiles.png b/data/map_preview/pokemon_tower_tiles.png
new file mode 100644
index 000000000..21583f9b3
--- /dev/null
+++ b/data/map_preview/pokemon_tower_tiles.png
Binary files differ
diff --git a/data/map_preview/power_plant_pal.pal b/data/map_preview/power_plant_pal.pal
new file mode 100644
index 000000000..49e5d6800
--- /dev/null
+++ b/data/map_preview/power_plant_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+74 82 98
+255 246 205
+189 180 189
+189 189 222
+230 222 123
+222 205 205
+246 230 230
+139 156 189
+222 238 255
+106 123 156
+213 189 164
+164 156 164
+238 246 255
+255 238 238
+255 255 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/power_plant_tilemap.bin b/data/map_preview/power_plant_tilemap.bin
new file mode 100644
index 000000000..609cbb30d
--- /dev/null
+++ b/data/map_preview/power_plant_tilemap.bin
Binary files differ
diff --git a/data/map_preview/power_plant_tiles.png b/data/map_preview/power_plant_tiles.png
new file mode 100644
index 000000000..6cd334aa9
--- /dev/null
+++ b/data/map_preview/power_plant_tiles.png
Binary files differ
diff --git a/data/map_preview/rock_tunnel_pal.pal b/data/map_preview/rock_tunnel_pal.pal
new file mode 100644
index 000000000..1412128d0
--- /dev/null
+++ b/data/map_preview/rock_tunnel_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+65 74 90
+238 246 246
+74 156 106
+115 197 115
+156 230 148
+205 205 189
+222 222 205
+238 238 222
+123 123 90
+164 164 123
+197 197 148
+213 213 180
+230 230 197
+213 238 255
+255 255 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/rock_tunnel_tilemap.bin b/data/map_preview/rock_tunnel_tilemap.bin
new file mode 100644
index 000000000..9c322e0b1
--- /dev/null
+++ b/data/map_preview/rock_tunnel_tilemap.bin
Binary files differ
diff --git a/data/map_preview/rock_tunnel_tiles.png b/data/map_preview/rock_tunnel_tiles.png
new file mode 100644
index 000000000..e58ef7fb1
--- /dev/null
+++ b/data/map_preview/rock_tunnel_tiles.png
Binary files differ
diff --git a/data/map_preview/rocket_hideout_pal.pal b/data/map_preview/rocket_hideout_pal.pal
new file mode 100644
index 000000000..9c969e843
--- /dev/null
+++ b/data/map_preview/rocket_hideout_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+98 106 123
+156 180 156
+222 213 172
+238 238 246
+246 238 197
+189 156 131
+222 189 164
+213 213 222
+222 238 222
+139 156 139
+197 222 197
+197 230 180
+131 139 156
+238 205 180
+255 255 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/rocket_hideout_tilemap.bin b/data/map_preview/rocket_hideout_tilemap.bin
new file mode 100644
index 000000000..db9757ebb
--- /dev/null
+++ b/data/map_preview/rocket_hideout_tilemap.bin
Binary files differ
diff --git a/data/map_preview/rocket_hideout_tiles.png b/data/map_preview/rocket_hideout_tiles.png
new file mode 100644
index 000000000..8f57f8afe
--- /dev/null
+++ b/data/map_preview/rocket_hideout_tiles.png
Binary files differ
diff --git a/data/map_preview/rocket_warehouse_pal.pal b/data/map_preview/rocket_warehouse_pal.pal
new file mode 100644
index 000000000..c4fffd171
--- /dev/null
+++ b/data/map_preview/rocket_warehouse_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+98 106 123
+139 180 172
+222 213 172
+238 238 246
+246 238 197
+189 156 131
+222 189 164
+213 213 222
+222 238 222
+139 156 139
+197 222 197
+197 230 180
+131 139 156
+238 205 180
+255 255 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/rocket_warehouse_tilemap.bin b/data/map_preview/rocket_warehouse_tilemap.bin
new file mode 100644
index 000000000..7636eea0a
--- /dev/null
+++ b/data/map_preview/rocket_warehouse_tilemap.bin
Binary files differ
diff --git a/data/map_preview/rocket_warehouse_tiles.png b/data/map_preview/rocket_warehouse_tiles.png
new file mode 100644
index 000000000..cc9dae203
--- /dev/null
+++ b/data/map_preview/rocket_warehouse_tiles.png
Binary files differ
diff --git a/data/map_preview/seafoam_islands_pal.pal b/data/map_preview/seafoam_islands_pal.pal
new file mode 100644
index 000000000..348275aca
--- /dev/null
+++ b/data/map_preview/seafoam_islands_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+65 74 90
+156 222 123
+106 180 98
+197 205 172
+172 172 139
+172 222 164
+222 230 205
+164 230 106
+205 238 197
+131 131 90
+238 230 189
+213 246 255
+164 205 255
+205 230 255
+238 246 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/seafoam_islands_tilemap.bin b/data/map_preview/seafoam_islands_tilemap.bin
new file mode 100644
index 000000000..05afc22fc
--- /dev/null
+++ b/data/map_preview/seafoam_islands_tilemap.bin
Binary files differ
diff --git a/data/map_preview/seafoam_islands_tiles.png b/data/map_preview/seafoam_islands_tiles.png
new file mode 100644
index 000000000..b76a85053
--- /dev/null
+++ b/data/map_preview/seafoam_islands_tiles.png
Binary files differ
diff --git a/data/map_preview/silph_co_pal.pal b/data/map_preview/silph_co_pal.pal
new file mode 100644
index 000000000..07acfb986
--- /dev/null
+++ b/data/map_preview/silph_co_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 0
+238 246 246
+213 238 246
+164 205 197
+131 197 123
+197 230 230
+139 180 172
+180 180 205
+131 131 164
+205 205 230
+172 222 172
+197 213 246
+90 164 90
+123 172 164
+205 238 246
+246 246 255
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/silph_co_tilemap.bin b/data/map_preview/silph_co_tilemap.bin
new file mode 100644
index 000000000..9449f6cd7
--- /dev/null
+++ b/data/map_preview/silph_co_tilemap.bin
Binary files differ
diff --git a/data/map_preview/silph_co_tiles.png b/data/map_preview/silph_co_tiles.png
new file mode 100644
index 000000000..c5433bcee
--- /dev/null
+++ b/data/map_preview/silph_co_tiles.png
Binary files differ
diff --git a/data/map_preview/viridian_forest_pal.pal b/data/map_preview/viridian_forest_pal.pal
new file mode 100644
index 000000000..ff1655587
--- /dev/null
+++ b/data/map_preview/viridian_forest_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+255 255 90
+222 246 246
+156 230 148
+115 197 115
+41 106 106
+90 172 123
+197 189 106
+148 139 90
+106 98 74
+205 246 197
+180 213 230
+123 189 205
+90 156 164
+65 131 139
+246 246 255
+32 41 41
+255 255 90
+246 246 255
+74 98 123
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/map_preview/viridian_forest_tilemap.bin b/data/map_preview/viridian_forest_tilemap.bin
new file mode 100644
index 000000000..37883b634
--- /dev/null
+++ b/data/map_preview/viridian_forest_tilemap.bin
Binary files differ
diff --git a/data/map_preview/viridian_forest_tiles.png b/data/map_preview/viridian_forest_tiles.png
new file mode 100644
index 000000000..79b70c2e5
--- /dev/null
+++ b/data/map_preview/viridian_forest_tiles.png
Binary files differ
diff --git a/include/bg.h b/include/bg.h
index 0d6b0e171..0f20bf1fd 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -25,6 +25,20 @@ enum
BG_CTRL_ATTR_WRAPAROUND = 8,
};
+enum
+{
+ BG_ATTR_CHARBASEINDEX = 1,
+ BG_ATTR_MAPBASEINDEX = 2,
+ BG_ATTR_SCREENSIZE = 3,
+ BG_ATTR_PALETTEMODE = 4,
+ BG_ATTR_MOSAIC = 5,
+ BG_ATTR_WRAPAROUND = 6,
+ BG_ATTR_PRIORITY = 7,
+ BG_ATTR_TEXTORAFFINEMODE = 8,
+ BG_ATTR_BGTYPE = 9,
+ BG_ATTR_BASETILE = 10
+};
+
enum AdjustBgMosaicMode
{
BG_MOSAIC_SET,
diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h
index 8d9114b82..6590019e2 100644
--- a/include/map_preview_screen.h
+++ b/include/map_preview_screen.h
@@ -1,6 +1,51 @@
#ifndef GUARD_MAP_PREVIEW_SCREEN_H
#define GUARD_MAP_PREVIEW_SCREEN_H
+enum MapPreviewScreenId
+{
+ MPS_VIRIDIAN_FOREST = 0u,
+ MPS_MT_MOON,
+ MPS_DIGLETTS_CAVE,
+ MPS_ROCK_TUNNEL,
+ MPS_POKEMON_TOWER,
+ MPS_SAFARI_ZONE,
+ MPS_SEAFOAM_ISLANDS,
+ MPS_POKEMON_MANSION,
+ MPS_ROCKET_HIDEOUT,
+ MPS_SILPH_CO,
+ MPS_VICTORY_ROAD,
+ MPS_CERULEAN_CAVE,
+ MPS_POWER_PLANT,
+ MPS_MT_EMBER,
+ MPS_ROCKET_WAREHOUSE,
+ MPS_MONEAN_CHAMBER,
+ MPS_DOTTED_HOLE,
+ MPS_BERRY_FOREST,
+ MPS_ICEFALL_CAVE,
+ MPS_LOST_CAVE,
+ MPS_ALTERING_CAVE,
+ MPS_PATTERN_BUSH,
+ MPS_LIPTOO_CHAMBER,
+ MPS_WEEPTH_CHAMBER,
+ MPS_TDILFORD_CHAMBER,
+ MPS_SCUFIB_CHAMBER,
+ MPS_RIXY_CHAMBER,
+ MPS_VIAPOIS_CHAMBER,
+ MPS_COUNT
+};
+
+struct MapPreviewScreen
+{
+ u8 mapsec;
+ bool8 forceFirstTime;
+ u16 flagId;
+ const void * tilesptr;
+ const void * tilemapptr;
+ const void * palptr;
+};
+
+u16 sub_80F8318(u8 id);
void sub_80F85BC(u16 a0);
+u16 sub_80F856C(u8 id);
#endif //GUARD_MAP_PREVIEW_SCREEN_H
diff --git a/ld_script.txt b/ld_script.txt
index 7da1b185f..053ee4abc 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -221,7 +221,7 @@ SECTIONS {
src/new_menu_helpers.o(.text);
asm/box_party_pokemon_dropdown.o(.text);
asm/save_menu_util.o(.text);
- asm/map_preview_screen.o(.text);
+ src/map_preview_screen.o(.text);
asm/link_rfu_2.o(.text);
asm/link_rfu.o(.text);
asm/pokedex_screen.o(.text);
@@ -429,6 +429,8 @@ SECTIONS {
data/data_83FECCC.o(.rodata.841EE44);
src/new_menu_helpers.o(.rodata);
data/data_83FECCC.o(.rodata.841F4B4);
+ src/map_preview_screen.o(.rodata);
+ data/data_83FECCC.o(.rodata.843EBB4);
src/pokedex.o(.rodata);
data/data_83FECCC.o(.rodata.8451EBC);
src/list_menu.o(.rodata);
diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c
new file mode 100644
index 000000000..b913d5fe8
--- /dev/null
+++ b/src/map_preview_screen.c
@@ -0,0 +1,615 @@
+#include "global.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "palette.h"
+#include "malloc.h"
+#include "quest_log.h"
+#include "new_menu_helpers.h"
+#include "window.h"
+#include "region_map.h"
+#include "menu.h"
+#include "field_fadetransition.h"
+#include "field_weather.h"
+#include "script.h"
+#include "overworld.h"
+#include "event_data.h"
+#include "map_preview_screen.h"
+#include "constants/region_map.h"
+
+static EWRAM_DATA bool8 gUnknown_203ABEC = FALSE;
+static EWRAM_DATA bool8 gUnknown_203ABED = FALSE;
+
+static void sub_80F83D0(u8 taskId);
+
+static const u8 gViridianForestMapPreviewPalette[] = INCBIN_U8("data/map_preview/viridian_forest_pal.gbapal");
+static const u8 gViridianForestMapPreviewTiles[] = INCBIN_U8("data/map_preview/viridian_forest_tiles.4bpp.lz");
+static const u8 gViridianForestMapPreviewTilemap[] = INCBIN_U8("data/map_preview/viridian_forest_tilemap.bin");
+static const u8 gRockTunnelMapPreviewPalette[] = INCBIN_U8("data/map_preview/rock_tunnel_pal.gbapal");
+static const u8 gRockTunnelMapPreviewTiles[] = INCBIN_U8("data/map_preview/rock_tunnel_tiles.4bpp.lz");
+static const u8 gRockTunnelMapPreviewTilemap[] = INCBIN_U8("data/map_preview/rock_tunnel_tilemap.bin");
+static const u8 gRocketHideoutMapPreviewPalette[] = INCBIN_U8("data/map_preview/rocket_hideout_pal.gbapal");
+static const u8 gRocketHideoutMapPreviewTiles[] = INCBIN_U8("data/map_preview/rocket_hideout_tiles.4bpp.lz");
+static const u8 gRocketHideoutMapPreviewTilemap[] = INCBIN_U8("data/map_preview/rocket_hideout_tilemap.bin");
+static const u8 gPowerPlantMapPreviewPalette[] = INCBIN_U8("data/map_preview/power_plant_pal.gbapal");
+static const u8 gPowerPlantMapPreviewTiles[] = INCBIN_U8("data/map_preview/power_plant_tiles.4bpp.lz");
+static const u8 gPowerPlantMapPreviewTilemap[] = INCBIN_U8("data/map_preview/power_plant_tilemap.bin");
+static const u8 gPokemonMansionMapPreviewPalette[] = INCBIN_U8("data/map_preview/pokemon_mansion_pal.gbapal");
+static const u8 gPokemonMansionMapPreviewTiles[] = INCBIN_U8("data/map_preview/pokemon_mansion_tiles.4bpp.lz");
+static const u8 gPokemonMansionMapPreviewTilemap[] = INCBIN_U8("data/map_preview/pokemon_mansion_tilemap.bin");
+static const u8 gPokemonTowerMapPreviewPalette[] = INCBIN_U8("data/map_preview/pokemon_tower_pal.gbapal");
+static const u8 gPokemonTowerMapPreviewTiles[] = INCBIN_U8("data/map_preview/pokemon_tower_tiles.4bpp.lz");
+static const u8 gPokemonTowerMapPreviewTilemap[] = INCBIN_U8("data/map_preview/pokemon_tower_tilemap.bin");
+static const u8 gSilphCoMapPreviewPalette[] = INCBIN_U8("data/map_preview/silph_co_pal.gbapal");
+static const u8 gSilphCoMapPreviewTiles[] = INCBIN_U8("data/map_preview/silph_co_tiles.4bpp.lz");
+static const u8 gSilphCoMapPreviewTilemap[] = INCBIN_U8("data/map_preview/silph_co_tilemap.bin");
+static const u8 gMtMoonMapPreviewPalette[] = INCBIN_U8("data/map_preview/mt_moon_pal.gbapal");
+static const u8 gMtMoonMapPreviewTiles[] = INCBIN_U8("data/map_preview/mt_moon_tiles.4bpp.lz");
+static const u8 gMtMoonMapPreviewTilemap[] = INCBIN_U8("data/map_preview/mt_moon_tilemap.bin");
+static const u8 gSeafoamIslandsMapPreviewPalette[] = INCBIN_U8("data/map_preview/seafoam_islands_pal.gbapal");
+static const u8 gSeafoamIslandsMapPreviewTiles[] = INCBIN_U8("data/map_preview/seafoam_islands_tiles.4bpp.lz");
+static const u8 gSeafoamIslandsMapPreviewTilemap[] = INCBIN_U8("data/map_preview/seafoam_islands_tilemap.bin");
+static const u8 gRocketWarehouseMapPreviewPalette[] = INCBIN_U8("data/map_preview/rocket_warehouse_pal.gbapal");
+static const u8 gRocketWarehouseMapPreviewTiles[] = INCBIN_U8("data/map_preview/rocket_warehouse_tiles.4bpp.lz");
+static const u8 gRocketWarehouseMapPreviewTilemap[] = INCBIN_U8("data/map_preview/rocket_warehouse_tilemap.bin");
+static const u8 gKantoVictoryRoadMapPreviewPalette[] = INCBIN_U8("data/map_preview/kanto_victory_road_pal.gbapal");
+static const u8 gKantoVictoryRoadMapPreviewTiles[] = INCBIN_U8("data/map_preview/kanto_victory_road_tiles.4bpp.lz");
+static const u8 gKantoVictoryRoadMapPreviewTilemap[] = INCBIN_U8("data/map_preview/kanto_victory_road_tilemap.bin");
+static const u8 gMtEmberMapPreviewPalette[] = INCBIN_U8("data/map_preview/mt_ember_pal.gbapal");
+static const u8 gMtEmberMapPreviewTiles[] = INCBIN_U8("data/map_preview/mt_ember_tiles.4bpp.lz");
+static const u8 gMtEmberMapPreviewTilemap[] = INCBIN_U8("data/map_preview/mt_ember_tilemap.bin");
+static const u8 gKantoSafariZoneMapPreviewPalette[] = INCBIN_U8("data/map_preview/kanto_safari_zone_pal.gbapal");
+static const u8 gKantoSafariZoneMapPreviewTiles[] = INCBIN_U8("data/map_preview/kanto_safari_zone_tiles.4bpp.lz");
+static const u8 gKantoSafariZoneMapPreviewTilemap[] = INCBIN_U8("data/map_preview/kanto_safari_zone_tilemap.bin");
+static const u8 gMoneanChamberMapPreviewPalette[] = INCBIN_U8("data/map_preview/monean_chamber_pal.gbapal");
+static const u8 gMoneanChamberMapPreviewTiles[] = INCBIN_U8("data/map_preview/monean_chamber_tiles.4bpp.lz");
+static const u8 gMoneanChamberMapPreviewTilemap[] = INCBIN_U8("data/map_preview/monean_chamber_tilemap.bin");
+static const u8 gDottedHoleMapPreviewPalette[] = INCBIN_U8("data/map_preview/dotted_hole_pal.gbapal");
+static const u8 gDottedHoleMapPreviewTiles[] = INCBIN_U8("data/map_preview/dotted_hole_tiles.4bpp.lz");
+static const u8 gDottedHoleMapPreviewTilemap[] = INCBIN_U8("data/map_preview/dotted_hole_tilemap.bin");
+static const u8 gCeruleanCaveMapPreviewPalette[] = INCBIN_U8("data/map_preview/cerulean_cave_pal.gbapal");
+static const u8 gCeruleanCaveMapPreviewTiles[] = INCBIN_U8("data/map_preview/cerulean_cave_tiles.4bpp.lz");
+static const u8 gCeruleanCaveMapPreviewTilemap[] = INCBIN_U8("data/map_preview/cerulean_cave_tilemap.bin");
+static const u8 gDiglettsCaveMapPreviewPalette[] = INCBIN_U8("data/map_preview/digletts_cave_pal.gbapal");
+static const u8 gDiglettsCaveMapPreviewTiles[] = INCBIN_U8("data/map_preview/digletts_cave_tiles.4bpp.lz");
+static const u8 gDiglettsCaveMapPreviewTilemap[] = INCBIN_U8("data/map_preview/digletts_cave_tilemap.bin");
+static const u8 gLostCaveMapPreviewPalette[] = INCBIN_U8("data/map_preview/lost_cave_pal.gbapal");
+static const u8 gLostCaveMapPreviewTiles[] = INCBIN_U8("data/map_preview/lost_cave_tiles.4bpp.lz");
+static const u8 gLostCaveMapPreviewTilemap[] = INCBIN_U8("data/map_preview/lost_cave_tilemap.bin");
+static const u8 gBerryForestMapPreviewPalette[] = INCBIN_U8("data/map_preview/berry_forest_pal.gbapal");
+static const u8 gBerryForestMapPreviewTiles[] = INCBIN_U8("data/map_preview/berry_forest_tiles.4bpp.lz");
+static const u8 gBerryForestMapPreviewTilemap[] = INCBIN_U8("data/map_preview/berry_forest_tilemap.bin");
+static const u8 gIcefallCaveMapPreviewPalette[] = INCBIN_U8("data/map_preview/icefall_cave_pal.gbapal");
+static const u8 gIcefallCaveMapPreviewTiles[] = INCBIN_U8("data/map_preview/icefall_cave_tiles.4bpp.lz");
+static const u8 gIcefallCaveMapPreviewTilemap[] = INCBIN_U8("data/map_preview/icefall_cave_tilemap.bin");
+static const u8 gAlteringCaveMapPreviewPalette[] = INCBIN_U8("data/map_preview/altering_cave_pal.gbapal");
+static const u8 gAlteringCaveMapPreviewTiles[] = INCBIN_U8("data/map_preview/altering_cave_tiles.4bpp.lz");
+static const u8 gAlteringCaveMapPreviewTilemap[] = INCBIN_U8("data/map_preview/altering_cave_tilemap.bin");
+
+static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
+ [MPS_VIRIDIAN_FOREST] = {
+ .mapsec = MAPSEC_VIRIDIAN_FOREST,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_VIRIDIAN_FOREST,
+ .tilesptr = gViridianForestMapPreviewTiles,
+ .tilemapptr = gViridianForestMapPreviewTilemap,
+ .palptr = gViridianForestMapPreviewPalette
+ },
+ [MPS_MT_MOON] = {
+ .mapsec = MAPSEC_MT_MOON,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_MT_MOON_1F,
+ .tilesptr = gMtMoonMapPreviewTiles,
+ .tilemapptr = gMtMoonMapPreviewTilemap,
+ .palptr = gMtMoonMapPreviewPalette
+ },
+ [MPS_DIGLETTS_CAVE] = {
+ .mapsec = MAPSEC_DIGLETTS_CAVE,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_DIGLETTS_CAVE_B1F,
+ .tilesptr = gDiglettsCaveMapPreviewTiles,
+ .tilemapptr = gDiglettsCaveMapPreviewTilemap,
+ .palptr = gDiglettsCaveMapPreviewPalette
+ },
+ [MPS_ROCK_TUNNEL] = {
+ .mapsec = MAPSEC_ROCK_TUNNEL,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_ROCK_TUNNEL_1F,
+ .tilesptr = gRockTunnelMapPreviewTiles,
+ .tilemapptr = gRockTunnelMapPreviewTilemap,
+ .palptr = gRockTunnelMapPreviewPalette
+ },
+ [MPS_POKEMON_TOWER] = {
+ .mapsec = MAPSEC_POKEMON_TOWER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_POKEMON_TOWER_1F,
+ .tilesptr = gPokemonTowerMapPreviewTiles,
+ .tilemapptr = gPokemonTowerMapPreviewTilemap,
+ .palptr = gPokemonTowerMapPreviewPalette
+ },
+ [MPS_SAFARI_ZONE] = {
+ .mapsec = MAPSEC_KANTO_SAFARI_ZONE,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_SAFARI_ZONE_CENTER,
+ .tilesptr = gKantoSafariZoneMapPreviewTiles,
+ .tilemapptr = gKantoSafariZoneMapPreviewTilemap,
+ .palptr = gKantoSafariZoneMapPreviewPalette
+ },
+ [MPS_SEAFOAM_ISLANDS] = {
+ .mapsec = MAPSEC_SEAFOAM_ISLANDS,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEAFOAM_ISLANDS_1F,
+ .tilesptr = gSeafoamIslandsMapPreviewTiles,
+ .tilemapptr = gSeafoamIslandsMapPreviewTilemap,
+ .palptr = gSeafoamIslandsMapPreviewPalette
+ },
+ [MPS_POKEMON_MANSION] = {
+ .mapsec = MAPSEC_POKEMON_MANSION,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_POKEMON_MANSION_1F,
+ .tilesptr = gPokemonMansionMapPreviewTiles,
+ .tilemapptr = gPokemonMansionMapPreviewTilemap,
+ .palptr = gPokemonMansionMapPreviewPalette
+ },
+ [MPS_ROCKET_HIDEOUT] = {
+ .mapsec = MAPSEC_ROCKET_HIDEOUT,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_ROCKET_HIDEOUT_B1F,
+ .tilesptr = gRocketHideoutMapPreviewTiles,
+ .tilemapptr = gRocketHideoutMapPreviewTilemap,
+ .palptr = gRocketHideoutMapPreviewPalette
+ },
+ [MPS_SILPH_CO] = {
+ .mapsec = MAPSEC_SILPH_CO,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SILPH_CO_1F,
+ .tilesptr = gSilphCoMapPreviewTiles,
+ .tilemapptr = gSilphCoMapPreviewTilemap,
+ .palptr = gSilphCoMapPreviewPalette
+ },
+ [MPS_VICTORY_ROAD] = {
+ .mapsec = MAPSEC_KANTO_VICTORY_ROAD,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_VICTORY_ROAD_1F,
+ .tilesptr = gKantoVictoryRoadMapPreviewTiles,
+ .tilemapptr = gKantoVictoryRoadMapPreviewTilemap,
+ .palptr = gKantoVictoryRoadMapPreviewPalette
+ },
+ [MPS_CERULEAN_CAVE] = {
+ .mapsec = MAPSEC_CERULEAN_CAVE,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_CERULEAN_CAVE_1F,
+ .tilesptr = gCeruleanCaveMapPreviewTiles,
+ .tilemapptr = gCeruleanCaveMapPreviewTilemap,
+ .palptr = gCeruleanCaveMapPreviewPalette
+ },
+ [MPS_POWER_PLANT] = {
+ .mapsec = MAPSEC_POWER_PLANT,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_POWER_PLANT,
+ .tilesptr = gPowerPlantMapPreviewTiles,
+ .tilemapptr = gPowerPlantMapPreviewTilemap,
+ .palptr = gPowerPlantMapPreviewPalette
+ },
+ [MPS_MT_EMBER] = {
+ .mapsec = MAPSEC_MT_EMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_MT_EMBER_EXTERIOR,
+ .tilesptr = gMtEmberMapPreviewTiles,
+ .tilemapptr = gMtEmberMapPreviewTilemap,
+ .palptr = gMtEmberMapPreviewPalette
+ },
+ [MPS_ROCKET_WAREHOUSE] = {
+ .mapsec = MAPSEC_ROCKET_WAREHOUSE,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST,
+ .tilesptr = gRocketWarehouseMapPreviewTiles,
+ .tilemapptr = gRocketWarehouseMapPreviewTilemap,
+ .palptr = gRocketWarehouseMapPreviewPalette
+ },
+ [MPS_MONEAN_CHAMBER] = {
+ .mapsec = MAPSEC_MONEAN_CHAMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
+ .tilesptr = gMoneanChamberMapPreviewTiles,
+ .tilemapptr = gMoneanChamberMapPreviewTilemap,
+ .palptr = gMoneanChamberMapPreviewPalette
+ },
+ [MPS_DOTTED_HOLE] = {
+ .mapsec = MAPSEC_DOTTED_HOLE,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F,
+ .tilesptr = gDottedHoleMapPreviewTiles,
+ .tilemapptr = gDottedHoleMapPreviewTilemap,
+ .palptr = gDottedHoleMapPreviewPalette
+ },
+ [MPS_BERRY_FOREST] = {
+ .mapsec = MAPSEC_BERRY_FOREST,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST,
+ .tilesptr = gBerryForestMapPreviewTiles,
+ .tilemapptr = gBerryForestMapPreviewTilemap,
+ .palptr = gBerryForestMapPreviewPalette
+ },
+ [MPS_ICEFALL_CAVE] = {
+ .mapsec = MAPSEC_ICEFALL_CAVE,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE,
+ .tilesptr = gIcefallCaveMapPreviewTiles,
+ .tilemapptr = gIcefallCaveMapPreviewTilemap,
+ .palptr = gIcefallCaveMapPreviewPalette
+ },
+ [MPS_LOST_CAVE] = {
+ .mapsec = MAPSEC_LOST_CAVE,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE,
+ .tilesptr = gLostCaveMapPreviewTiles,
+ .tilemapptr = gLostCaveMapPreviewTilemap,
+ .palptr = gLostCaveMapPreviewPalette
+ },
+ [MPS_ALTERING_CAVE] = {
+ .mapsec = MAPSEC_ALTERING_CAVE,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SIX_ISLAND_ALTERING_CAVE,
+ .tilesptr = gAlteringCaveMapPreviewTiles,
+ .tilemapptr = gAlteringCaveMapPreviewTilemap,
+ .palptr = gAlteringCaveMapPreviewPalette
+ },
+ [MPS_PATTERN_BUSH] = {
+ .mapsec = MAPSEC_PATTERN_BUSH,
+ .forceFirstTime = TRUE,
+ .flagId = FLAG_WORLD_MAP_SIX_ISLAND_PATTERN_BUSH,
+ .tilesptr = gViridianForestMapPreviewTiles,
+ .tilemapptr = gViridianForestMapPreviewTilemap,
+ .palptr = gViridianForestMapPreviewPalette
+ },
+ [MPS_LIPTOO_CHAMBER] = {
+ .mapsec = MAPSEC_LIPTOO_CHAMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
+ .tilesptr = gMoneanChamberMapPreviewTiles,
+ .tilemapptr = gMoneanChamberMapPreviewTilemap,
+ .palptr = gMoneanChamberMapPreviewPalette
+ },
+ [MPS_WEEPTH_CHAMBER] = {
+ .mapsec = MAPSEC_WEEPTH_CHAMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
+ .tilesptr = gMoneanChamberMapPreviewTiles,
+ .tilemapptr = gMoneanChamberMapPreviewTilemap,
+ .palptr = gMoneanChamberMapPreviewPalette
+ },
+ [MPS_TDILFORD_CHAMBER] = {
+ .mapsec = MAPSEC_DILFORD_CHAMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
+ .tilesptr = gMoneanChamberMapPreviewTiles,
+ .tilemapptr = gMoneanChamberMapPreviewTilemap,
+ .palptr = gMoneanChamberMapPreviewPalette
+ },
+ [MPS_SCUFIB_CHAMBER] = {
+ .mapsec = MAPSEC_SCUFIB_CHAMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
+ .tilesptr = gMoneanChamberMapPreviewTiles,
+ .tilemapptr = gMoneanChamberMapPreviewTilemap,
+ .palptr = gMoneanChamberMapPreviewPalette
+ },
+ [MPS_RIXY_CHAMBER] = {
+ .mapsec = MAPSEC_RIXY_CHAMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
+ .tilesptr = gMoneanChamberMapPreviewTiles,
+ .tilemapptr = gMoneanChamberMapPreviewTilemap,
+ .palptr = gMoneanChamberMapPreviewPalette
+ },
+ [MPS_VIAPOIS_CHAMBER] = {
+ .mapsec = MAPSEC_VIAPOIS_CHAMBER,
+ .forceFirstTime = FALSE,
+ .flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
+ .tilesptr = gMoneanChamberMapPreviewTiles,
+ .tilemapptr = gMoneanChamberMapPreviewTilemap,
+ .palptr = gMoneanChamberMapPreviewPalette
+ }
+};
+
+static const struct WindowTemplate sMapNameWindow = {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 13,
+ .height = 2,
+ .paletteNum = 14,
+ .baseBlock = 0x1C2
+};
+
+static const struct BgTemplate sMapPreviewBgTemplate[1] = {
+ {
+ .mapBaseIndex = 31
+ }
+};
+
+static u8 sub_80F80E4(u8 mapsec)
+{
+ s32 i;
+
+ for (i = 0; i < MPS_COUNT; i++)
+ {
+ if (sMapPreviewScreenData[i].mapsec == mapsec)
+ {
+ return i;
+ }
+ }
+ return MPS_COUNT;
+}
+
+bool8 sub_80F8110(u8 mapsec, u8 forceFirstTime)
+{
+ u8 idx;
+
+ idx = sub_80F80E4(mapsec);
+ if (idx != MPS_COUNT)
+ {
+ if (forceFirstTime == 2)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return sMapPreviewScreenData[idx].forceFirstTime == forceFirstTime ? TRUE : FALSE;
+ }
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 sub_80F8154(u8 mapsec, u8 forceFirstTime)
+{
+ if (gUnknown_203ADFA == 2)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return sub_80F8110(mapsec, forceFirstTime);
+ }
+}
+
+void sub_80F8180(void)
+{
+ InitBgsFromTemplates(0, sMapPreviewBgTemplate, NELEMS(sMapPreviewBgTemplate));
+ ShowBg(0);
+}
+
+void sub_80F819C(u8 mapsec)
+{
+ u8 idx;
+
+ idx = sub_80F80E4(mapsec);
+ if (idx != MPS_COUNT)
+ {
+ ResetTempTileDataBuffers();
+ LoadPalette(sMapPreviewScreenData[idx].palptr, 0xD0, 0x60);
+ DecompressAndCopyTileDataToVram(0, sMapPreviewScreenData[idx].tilesptr, 0, 0, 0);
+ if (GetBgTilemapBuffer(0) == NULL)
+ {
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
+ gUnknown_203ABED = TRUE;
+ }
+ else
+ {
+ gUnknown_203ABED = FALSE;
+ }
+ CopyToBgTilemapBuffer(0, sMapPreviewScreenData[idx].tilemapptr, 0, 0x000);
+ CopyBgTilemapBufferToVram(0);
+ }
+}
+
+void sub_80F8234(s32 windowId)
+{
+ RemoveWindow(windowId);
+ if (gUnknown_203ABED)
+ {
+ Free(GetBgTilemapBuffer(0));
+ }
+}
+
+bool32 sub_80F8258(void)
+{
+ return FreeTempTileDataBuffersIfPossible();
+}
+
+void sub_80F8268(u8 mapsec)
+{
+ u8 taskId;
+
+ taskId = CreateTask(sub_80F83D0, 0);
+ gTasks[taskId].data[2] = GetBgAttribute(0, BG_ATTR_PRIORITY);
+ gTasks[taskId].data[4] = GetGpuReg(REG_OFFSET_BLDCNT);
+ gTasks[taskId].data[5] = GetGpuReg(REG_OFFSET_BLDALPHA);
+ gTasks[taskId].data[3] = GetGpuReg(REG_OFFSET_DISPCNT);
+ gTasks[taskId].data[6] = GetGpuReg(REG_OFFSET_WININ);
+ gTasks[taskId].data[7] = GetGpuReg(REG_OFFSET_WINOUT);
+ gTasks[taskId].data[10] = sub_80F856C(mapsec);
+ gTasks[taskId].data[8] = 16;
+ gTasks[taskId].data[9] = 0;
+ SetBgAttribute(0, BG_ATTR_PRIORITY, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ SetGpuRegBits(REG_OFFSET_WININ, 0x2020);
+ SetGpuRegBits(REG_OFFSET_WINOUT, 0x0020);
+ gTasks[taskId].data[11] = sub_80F8318(mapsec);
+ ScriptContext2_Enable();
+}
+
+u16 sub_80F8318(u8 mapsec)
+{
+ u16 windowId;
+ u32 xctr;
+ struct TextColor color[0];
+
+ windowId = AddWindow(&sMapNameWindow);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ color->fgColor = 1; // Access violation
+ color->bgColor = 4; // Access violation
+ color->shadowColor = 3; // Access violation
+ GetMapName(gStringVar4, mapsec, 0);
+ xctr = 104 - GetStringWidth(2, gStringVar4, 0);
+ AddTextPrinterParameterized4(windowId, 2, xctr / 2, 2, 0, 0, color/* Access violation */, -1, gStringVar4);
+ return windowId;
+}
+
+bool8 sub_80F83B0(void)
+{
+ if (FuncIsActiveTask(sub_80F83D0) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static void sub_80F83D0(u8 taskId)
+{
+ s16 * data;
+
+ data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ if (!sub_80F8258() && !IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyWindowToVram(data[11], 3);
+ data[0]++;
+ }
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_807DC00();
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_807AA70())
+ {
+ Overworld_PlaySpecialMapMusic();
+ data[0]++;
+ }
+ break;
+ case 3:
+ data[1]++;
+ if (data[1] > data[10])
+ {
+ data[1] = 0;
+ data[0]++;
+ }
+ break;
+ case 4:
+ switch (data[1])
+ {
+ case 0:
+ data[9]++;
+ if (data[9] > 16)
+ {
+ data[9] = 16;
+ }
+ break;
+ case 1:
+ data[8]--;
+ if (data[8] < 0)
+ {
+ data[8] = 0;
+ }
+ break;
+ }
+ data[1] = (data[1] + 1) % 3;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(data[8], data[9]));
+ if (data[8] == 0 && data[9] == 16)
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
+ CopyBgTilemapBufferToVram(0);
+ data[0]++;
+ }
+ break;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_80F8234(data[11]);
+ SetBgAttribute(0, BG_ATTR_PRIORITY, data[2]);
+ SetGpuReg(REG_OFFSET_DISPCNT, data[3]);
+ SetGpuReg(REG_OFFSET_BLDCNT, data[4]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, data[5]);
+ SetGpuReg(REG_OFFSET_WININ, data[6]);
+ SetGpuReg(REG_OFFSET_WINOUT, data[7]);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+const struct MapPreviewScreen * sub_80F8544(u8 mapsec)
+{
+ u8 idx;
+
+ idx = sub_80F80E4(mapsec);
+ if (idx == MPS_COUNT)
+ {
+ return NULL;
+ }
+ else
+ {
+ return &sMapPreviewScreenData[idx];
+ }
+}
+
+u16 sub_80F856C(u8 mapsec)
+{
+ u8 idx;
+ u16 flagId;
+
+ idx = sub_80F80E4(mapsec);
+ if (idx == MPS_COUNT)
+ {
+ return 0;
+ }
+ flagId = sMapPreviewScreenData[idx].flagId;
+ if (!sMapPreviewScreenData[idx].forceFirstTime)
+ {
+ if (!FlagGet(flagId))
+ {
+ return 120;
+ }
+ else
+ {
+ return 40;
+ }
+ }
+ else {
+ if (gUnknown_203ABEC)
+ {
+ return 120;
+ }
+ else
+ {
+ return 40;
+ }
+ }
+}
+
+void sub_80F85BC(u16 flagId)
+{
+ if (!FlagGet(flagId))
+ {
+ gUnknown_203ABEC = TRUE;
+ }
+ else
+ {
+ gUnknown_203ABEC = FALSE;
+ }
+ FlagSet(flagId);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 3229c3c40..f6540358e 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1124,12 +1124,10 @@ gUnknown_203ABE4: @ 203ABE4
gUnknown_203ABE8: @ 203ABE8
.space 0x4
-gUnknown_203ABEC: @ 203ABEC
- .space 0x1
-
-gUnknown_203ABED: @ 203ABED
- .space 0x3
+ .align 2
+ .include "src/map_preview_screen.o"
+ .align 2
gUnknown_203ABF0: @ 203ABF0
.space 0x18