summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/credits.c3
-rw-r--r--src/field_fadetransition.c45
-rw-r--r--src/fldeff_flash.c479
-rw-r--r--src/item_use.c11
-rw-r--r--src/map_preview_screen.c140
-rw-r--r--src/player_pc.c9
-rw-r--r--src/quest_log.c11
-rw-r--r--src/scrcmd.c4
-rw-r--r--src/shop.c5
-rw-r--r--src/start_menu.c3
10 files changed, 598 insertions, 112 deletions
diff --git a/src/credits.c b/src/credits.c
index 63d4c9c85..e0d57a2a4 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -15,6 +15,7 @@
#include "sound.h"
#include "constants/species.h"
#include "constants/maps.h"
+#include "constants/field_weather.h"
#if defined(FIRERED)
#define TITLE_TEXT gString_PokemonFireRed_Staff
@@ -918,7 +919,7 @@ static s32 RollCredits(void)
case CREDITSSCRCMD_MON:
sCreditsMgr->mainseqno = CREDITSSCENE_MON_DESTROY_ASSETS;
sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
break;
case CREDITSSCRCMD_THEENDGFX:
sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_DESTROY_ASSETS;
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 4ff105056..6c3a37bb4 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -23,6 +23,7 @@
#include "start_menu.h"
#include "constants/songs.h"
#include "constants/event_object_movement.h"
+#include "constants/field_weather.h"
static void sub_807DF4C(u8 a0);
static void sub_807DFBC(u8 taskId);
@@ -52,16 +53,16 @@ void palette_bg_faded_fill_black(void)
void WarpFadeInScreen(void)
{
- switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
+ switch (MapTransitionIsExit(GetLastUsedWarpMapType(), GetCurrentMapType()))
{
case 0:
palette_bg_faded_fill_black();
- FadeScreen(0, 0);
+ FadeScreen(FADE_FROM_BLACK, 0);
palette_bg_faded_fill_black();
break;
case 1:
palette_bg_faded_fill_white();
- FadeScreen(2, 0);
+ FadeScreen(FADE_FROM_WHITE, 0);
palette_bg_faded_fill_white();
break;
}
@@ -69,16 +70,16 @@ void WarpFadeInScreen(void)
static void sub_807DBAC(void)
{
- switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
+ switch (MapTransitionIsExit(GetLastUsedWarpMapType(), GetCurrentMapType()))
{
case 0:
palette_bg_faded_fill_black();
- FadeScreen(0, 3);
+ FadeScreen(FADE_FROM_BLACK, 3);
palette_bg_faded_fill_black();
break;
case 1:
palette_bg_faded_fill_white();
- FadeScreen(2, 3);
+ FadeScreen(FADE_FROM_WHITE, 3);
palette_bg_faded_fill_white();
break;
}
@@ -87,24 +88,24 @@ static void sub_807DBAC(void)
void FadeInFromBlack(void)
{
palette_bg_faded_fill_black();
- FadeScreen(0, 0);
+ FadeScreen(FADE_FROM_BLACK, 0);
palette_bg_faded_fill_black();
}
void WarpFadeOutScreen(void)
{
const struct MapHeader *header = warp1_get_mapheader();
- if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE))
- FadeScreen(1, 0);
+ if (header->regionMapSectionId != gMapHeader.regionMapSectionId && MapHasPreviewScreen(header->regionMapSectionId, MPS_TYPE_CAVE))
+ FadeScreen(FADE_TO_BLACK, 0);
else
{
- switch (sub_80C9D7C(GetCurrentMapType(), header->mapType))
+ switch (MapTransitionIsEnter(GetCurrentMapType(), header->mapType))
{
- case 0:
- FadeScreen(1, 0);
+ case FALSE:
+ FadeScreen(FADE_TO_BLACK, 0);
break;
- case 1:
- FadeScreen(3, 0);
+ case TRUE:
+ FadeScreen(FADE_TO_WHITE, 0);
break;
}
}
@@ -112,13 +113,13 @@ void WarpFadeOutScreen(void)
static void sub_807DC70(void)
{
- switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType))
+ switch (MapTransitionIsEnter(GetCurrentMapType(), warp1_get_mapheader()->mapType))
{
- case 0:
- FadeScreen(1, 3);
+ case FALSE:
+ FadeScreen(FADE_TO_BLACK, 3);
break;
- case 1:
- FadeScreen(3, 3);
+ case TRUE:
+ FadeScreen(FADE_TO_WHITE, 3);
break;
}
}
@@ -246,7 +247,7 @@ static void sub_807DE78(bool8 a0)
if (MetatileBehavior_IsWarpDoor_2(behavior) == TRUE)
{
func = sub_807DFBC;
- switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
+ switch (MapTransitionIsExit(GetLastUsedWarpMapType(), GetCurrentMapType()))
{
case 0:
palette_bg_faded_fill_black();
@@ -521,7 +522,7 @@ static bool32 sub_807E40C(void)
bool32 sub_807E418(void)
{
- if (IsWeatherNotFadingIn() == TRUE && sub_80F83B0())
+ if (IsWeatherNotFadingIn() == TRUE && ForestMapPreviewScreenIsRunning())
return TRUE;
else
return FALSE;
@@ -654,7 +655,7 @@ static void sub_807E678(u8 taskId)
{
case 0:
ClearLinkCallback_2();
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
TryFadeOutOldMapMusic();
PlaySE(SE_KAIDAN);
data[0]++;
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
new file mode 100644
index 000000000..58cb4c251
--- /dev/null
+++ b/src/fldeff_flash.c
@@ -0,0 +1,479 @@
+#include "global.h"
+#include "gflib.h"
+#include "event_data.h"
+#include "event_scripts.h"
+#include "fldeff.h"
+#include "field_effect.h"
+#include "map_preview_screen.h"
+#include "overworld.h"
+#include "party_menu.h"
+#include "script.h"
+#include "constants/songs.h"
+#include "constants/map_types.h"
+
+struct FlashStruct
+{
+ u8 fromType;
+ u8 toType;
+ bool8 isEnter;
+ bool8 isExit;
+ void (*func1)(void);
+ void (*func2)(u8 mapSecId);
+};
+
+static void FieldCallback_Flash(void);
+static void FldEff_UseFlash(void);
+static bool8 TryDoMapTransition(void);
+static void FlashTransition_Exit(void);
+static void Task_FlashTransition_Exit_0(u8 taskId);
+static void Task_FlashTransition_Exit_1(u8 taskId);
+static void Task_FlashTransition_Exit_2(u8 taskId);
+static void Task_FlashTransition_Exit_3(u8 taskId);
+static void Task_FlashTransition_Exit_4(u8 taskId);
+static void FlashTransition_Enter(void);
+static void Task_FlashTransition_Enter_0(u8 taskId);
+static void Task_FlashTransition_Enter_1(u8 taskId);
+static void Task_FlashTransition_Enter_2(u8 taskId);
+static void Task_FlashTransition_Enter_3(u8 taskId);
+static void RunMapPreviewScreen(u8 mapsecId);
+static void Task_MapPreviewScreen_0(u8 taskId);
+
+static const struct FlashStruct sTransitionTypes[] = {
+ {
+ .fromType = MAP_TYPE_TOWN,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_CITY,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_ROUTE,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERWATER,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_OCEAN_ROUTE,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNKNOWN,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_INDOOR,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_SECRET_BASE,
+ .toType = MAP_TYPE_UNDERGROUND,
+ .isEnter = TRUE,
+ .isExit = FALSE,
+ .func1 = FlashTransition_Enter,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_TOWN,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_CITY,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_ROUTE,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_UNDERWATER,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_OCEAN_ROUTE,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_UNKNOWN,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_INDOOR,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {
+ .fromType = MAP_TYPE_UNDERGROUND,
+ .toType = MAP_TYPE_SECRET_BASE,
+ .isEnter = FALSE,
+ .isExit = TRUE,
+ .func1 = FlashTransition_Exit,
+ .func2 = RunMapPreviewScreen
+ }, {0}
+};
+
+static const u16 sCaveTransitionPalette_White[] = INCBIN_U16("graphics/field_effects/flash_white.gbapal");
+static const u16 sCaveTransitionPalette_Black[] = INCBIN_U16("graphics/field_effects/flash_black.gbapal");
+static const u16 sCaveTransitionPalette_Gradient[] = INCBIN_U16("graphics/field_effects/flash_gradient.gbapal");
+static const u32 sCaveTransitionTilemap[] = INCBIN_U32("graphics/field_effects/flash_effect_map.bin.lz");
+static const u32 sCaveTransitionTiles[] = INCBIN_U32("graphics/field_effects/flash_effect_tiles.4bpp.lz");
+
+bool8 SetUpFieldMove_Flash(void)
+{
+ if (gMapHeader.cave != TRUE)
+ return FALSE;
+
+ if (FlagGet(FLAG_SYS_FLASH_ACTIVE))
+ return FALSE;
+
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_Flash;
+ return TRUE;
+}
+
+static void FieldCallback_Flash(void)
+{
+ u8 taskId = CreateFieldEffectShowMon();
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ gTasks[taskId].data[8] = ((uintptr_t)FldEff_UseFlash) >> 16;
+ gTasks[taskId].data[9] = ((uintptr_t)FldEff_UseFlash);
+}
+
+static void FldEff_UseFlash(void)
+{
+ PlaySE(SE_W115);
+ FlagSet(FLAG_SYS_FLASH_ACTIVE);
+ ScriptContext1_SetupScript(EventScript_FldEffFlash);
+}
+
+// Map transition animatics
+
+static void CB2_ChangeMapMain(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void VBC_ChangeMapVBlank(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void CB2_DoChangeMap(void)
+{
+ SetVBlankCallback(NULL);
+
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+ ResetPaletteFade();
+ ResetTasks();
+ ResetSpriteData();
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetVBlankCallback(VBC_ChangeMapVBlank);
+ SetMainCallback2(CB2_ChangeMapMain);
+ if (!TryDoMapTransition())
+ SetMainCallback2(gMain.savedCallback);
+}
+
+static bool8 TryDoMapTransition(void)
+{
+ u8 fromType = GetLastUsedWarpMapType();
+ u8 toType = GetCurrentMapType();
+ u8 i = 0;
+ if (GetLastUsedWarpMapSectionId() != gMapHeader.regionMapSectionId && MapHasPreviewScreen_HandleQLState2(gMapHeader.regionMapSectionId, MPS_TYPE_CAVE) == TRUE)
+ {
+ RunMapPreviewScreen(gMapHeader.regionMapSectionId);
+ return TRUE;
+ }
+ for (; sTransitionTypes[i].fromType != 0; i++)
+ {
+ if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType)
+ {
+ sTransitionTypes[i].func1();
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 MapTransitionIsEnter(u8 _fromType, u8 _toType)
+{
+ u8 fromType = _fromType;
+ u8 toType = _toType;
+ u8 i = 0;
+ for (; sTransitionTypes[i].fromType != 0; i++)
+ {
+ if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType)
+ {
+ return sTransitionTypes[i].isEnter;
+ }
+ }
+ return FALSE;
+}
+
+bool8 MapTransitionIsExit(u8 _fromType, u8 _toType)
+{
+ u8 fromType = _fromType;
+ u8 toType = _toType;
+ u8 i = 0;
+ for (; sTransitionTypes[i].fromType != 0; i++)
+ {
+ if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType)
+ {
+ return sTransitionTypes[i].isExit;
+ }
+ }
+ return FALSE;
+}
+
+static void FlashTransition_Exit(void)
+{
+ CreateTask(Task_FlashTransition_Exit_0, 0);
+}
+
+static void Task_FlashTransition_Exit_0(u8 taskId)
+{
+ gTasks[taskId].func = Task_FlashTransition_Exit_1;
+}
+
+static void Task_FlashTransition_Exit_1(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ LZ77UnCompVram(sCaveTransitionTiles, (void *)BG_CHAR_ADDR(3));
+ LZ77UnCompVram(sCaveTransitionTilemap, (void *)BG_SCREEN_ADDR(31));
+ LoadPalette(sCaveTransitionPalette_White, 0xE0, 0x20);
+ LoadPalette(sCaveTransitionPalette_Gradient + 8, 0xE0, 0x10);
+ 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, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON);
+ gTasks[taskId].func = Task_FlashTransition_Exit_2;
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = 0;
+}
+
+static void Task_FlashTransition_Exit_2(u8 taskId)
+{
+ u16 r4 = gTasks[taskId].data[1];
+ SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + r4);
+ if (r4 <= 16)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = Task_FlashTransition_Exit_3;
+ }
+}
+
+static void Task_FlashTransition_Exit_3(u8 taskId)
+{
+ u16 r4;
+ SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + 16);
+ r4 = gTasks[taskId].data[2];
+ if (r4 < 8)
+ {
+ gTasks[taskId].data[2]++;
+ LoadPalette(sCaveTransitionPalette_Gradient + 8 + r4, 0xE0, 0x10 - 2 * r4);
+ }
+ else
+ {
+ LoadPalette(sCaveTransitionPalette_White, 0x00, 0x20);
+ gTasks[taskId].func = Task_FlashTransition_Exit_4;
+ gTasks[taskId].data[2] = 8;
+ }
+}
+
+static void Task_FlashTransition_Exit_4(u8 taskId)
+{
+ if (gTasks[taskId].data[2] != 0)
+ gTasks[taskId].data[2]--;
+ else
+ SetMainCallback2(gMain.savedCallback);
+}
+
+static void FlashTransition_Enter(void)
+{
+ CreateTask(Task_FlashTransition_Enter_0, 0);
+}
+
+static void Task_FlashTransition_Enter_0(u8 taskId)
+{
+ gTasks[taskId].func = Task_FlashTransition_Enter_1;
+}
+
+static void Task_FlashTransition_Enter_1(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ LZ77UnCompVram(sCaveTransitionTiles, (void *)BG_CHAR_ADDR(3));
+ LZ77UnCompVram(sCaveTransitionTilemap, (void *)BG_SCREEN_ADDR(31));
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON);
+ LoadPalette(sCaveTransitionPalette_White, 0xE0, 0x20);
+ LoadPalette(sCaveTransitionPalette_Black, 0, 0x20);
+ gTasks[taskId].func = Task_FlashTransition_Enter_2;
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+}
+
+static void Task_FlashTransition_Enter_2(u8 taskId)
+{
+ u16 r4;
+ r4 = gTasks[taskId].data[2];
+ if (r4 < 16)
+ {
+ gTasks[taskId].data[2]++;
+ gTasks[taskId].data[2]++;
+ LoadPalette(&sCaveTransitionPalette_Gradient[16 - (r4 + 1)], 0xE0, 2 * (r4 + 1));
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + 16);
+ 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);
+ gTasks[taskId].func = Task_FlashTransition_Enter_3;
+ }
+}
+
+static void Task_FlashTransition_Enter_3(u8 taskId)
+{
+ u16 r4 = 16 - gTasks[taskId].data[1];
+ SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + r4);
+ if (r4 != 0)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ LoadPalette(sCaveTransitionPalette_Black, 0x00, 0x20);
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+static void RunMapPreviewScreen(u8 mapSecId)
+{
+ u8 taskId = CreateTask(Task_MapPreviewScreen_0, 0);
+ gTasks[taskId].data[3] = mapSecId;
+}
+
+static void Task_MapPreviewScreen_0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ SetWordTaskArg(taskId, 5, (uintptr_t)gMain.vblankCallback);
+ SetVBlankCallback(NULL);
+ MapPreview_InitBgs();
+ MapPreview_LoadGfx(data[3]);
+ BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
+ data[0]++;
+ break;
+ case 1:
+ if (!MapPreview_IsGfxLoadFinished())
+ {
+ data[4] = MapPreview_CreateMapNameWindow(data[3]);
+ CopyWindowToVram(data[4], 3);
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ SetVBlankCallback((IntrCallback)GetWordTaskArg(taskId, 5));
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ {
+ data[2] = MapPreview_GetDuration(data[3]);
+ data[0]++;
+ }
+ break;
+ case 4:
+ data[1]++;
+ if (data[1] > data[2] || JOY_HELD(B_BUTTON))
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_WHITE);
+ data[0]++;
+ }
+ break;
+ case 5:
+ if (!UpdatePaletteFade())
+ {
+ int i;
+ for (i = 0; i < 16; i++)
+ {
+ data[i] = 0;
+ }
+ MapPreview_Unload(data[4]);
+ gTasks[taskId].func = Task_FlashTransition_Enter_1;
+ }
+ break;
+ }
+}
diff --git a/src/item_use.c b/src/item_use.c
index ec8155eb1..6f81ee0e3 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -41,6 +41,7 @@
#include "constants/maps.h"
#include "constants/moves.h"
#include "constants/songs.h"
+#include "constants/field_weather.h"
static EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL;
@@ -456,7 +457,7 @@ void FieldUseFunc_TmCase(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = Task_InitTMCaseFromField;
}
}
@@ -487,7 +488,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = Task_InitBerryPouchFromField;
}
}
@@ -530,7 +531,7 @@ void FieldUseFunc_TeachyTv(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = Task_InitTeachyTvFromField;
}
}
@@ -660,7 +661,7 @@ void FieldUseFunc_TownMap(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = sub_80A1CC0;
}
}
@@ -692,7 +693,7 @@ void FieldUseFunc_FameChecker(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = sub_80A1D68;
}
}
diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c
index b5c68acf9..cae25b986 100644
--- a/src/map_preview_screen.c
+++ b/src/map_preview_screen.c
@@ -16,10 +16,10 @@
#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 EWRAM_DATA bool8 sHasVisitedMapBefore = FALSE;
+static EWRAM_DATA bool8 sAllocedBg0TilemapBuffer = FALSE;
-static void sub_80F83D0(u8 taskId);
+static void Task_RunMapPreviewScreenForest(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");
@@ -88,7 +88,7 @@ static const u8 gAlteringCaveMapPreviewTilemap[] = INCBIN_U8("data/map_preview/a
static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
[MPS_VIRIDIAN_FOREST] = {
.mapsec = MAPSEC_VIRIDIAN_FOREST,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_VIRIDIAN_FOREST,
.tilesptr = gViridianForestMapPreviewTiles,
.tilemapptr = gViridianForestMapPreviewTilemap,
@@ -96,7 +96,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_MT_MOON] = {
.mapsec = MAPSEC_MT_MOON,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_MT_MOON_1F,
.tilesptr = gMtMoonMapPreviewTiles,
.tilemapptr = gMtMoonMapPreviewTilemap,
@@ -104,7 +104,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_DIGLETTS_CAVE] = {
.mapsec = MAPSEC_DIGLETTS_CAVE,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_DIGLETTS_CAVE_B1F,
.tilesptr = gDiglettsCaveMapPreviewTiles,
.tilemapptr = gDiglettsCaveMapPreviewTilemap,
@@ -112,7 +112,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_ROCK_TUNNEL] = {
.mapsec = MAPSEC_ROCK_TUNNEL,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_ROCK_TUNNEL_1F,
.tilesptr = gRockTunnelMapPreviewTiles,
.tilemapptr = gRockTunnelMapPreviewTilemap,
@@ -120,7 +120,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_POKEMON_TOWER] = {
.mapsec = MAPSEC_POKEMON_TOWER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_POKEMON_TOWER_1F,
.tilesptr = gPokemonTowerMapPreviewTiles,
.tilemapptr = gPokemonTowerMapPreviewTilemap,
@@ -128,7 +128,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_SAFARI_ZONE] = {
.mapsec = MAPSEC_KANTO_SAFARI_ZONE,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_SAFARI_ZONE_CENTER,
.tilesptr = gKantoSafariZoneMapPreviewTiles,
.tilemapptr = gKantoSafariZoneMapPreviewTilemap,
@@ -136,7 +136,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_SEAFOAM_ISLANDS] = {
.mapsec = MAPSEC_SEAFOAM_ISLANDS,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEAFOAM_ISLANDS_1F,
.tilesptr = gSeafoamIslandsMapPreviewTiles,
.tilemapptr = gSeafoamIslandsMapPreviewTilemap,
@@ -144,7 +144,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_POKEMON_MANSION] = {
.mapsec = MAPSEC_POKEMON_MANSION,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_POKEMON_MANSION_1F,
.tilesptr = gPokemonMansionMapPreviewTiles,
.tilemapptr = gPokemonMansionMapPreviewTilemap,
@@ -152,7 +152,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_ROCKET_HIDEOUT] = {
.mapsec = MAPSEC_ROCKET_HIDEOUT,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_ROCKET_HIDEOUT_B1F,
.tilesptr = gRocketHideoutMapPreviewTiles,
.tilemapptr = gRocketHideoutMapPreviewTilemap,
@@ -160,7 +160,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_SILPH_CO] = {
.mapsec = MAPSEC_SILPH_CO,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SILPH_CO_1F,
.tilesptr = gSilphCoMapPreviewTiles,
.tilemapptr = gSilphCoMapPreviewTilemap,
@@ -168,7 +168,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_VICTORY_ROAD] = {
.mapsec = MAPSEC_KANTO_VICTORY_ROAD,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_VICTORY_ROAD_1F,
.tilesptr = gKantoVictoryRoadMapPreviewTiles,
.tilemapptr = gKantoVictoryRoadMapPreviewTilemap,
@@ -176,7 +176,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_CERULEAN_CAVE] = {
.mapsec = MAPSEC_CERULEAN_CAVE,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_CERULEAN_CAVE_1F,
.tilesptr = gCeruleanCaveMapPreviewTiles,
.tilemapptr = gCeruleanCaveMapPreviewTilemap,
@@ -184,7 +184,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_POWER_PLANT] = {
.mapsec = MAPSEC_POWER_PLANT,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_POWER_PLANT,
.tilesptr = gPowerPlantMapPreviewTiles,
.tilemapptr = gPowerPlantMapPreviewTilemap,
@@ -192,7 +192,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_MT_EMBER] = {
.mapsec = MAPSEC_MT_EMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_MT_EMBER_EXTERIOR,
.tilesptr = gMtEmberMapPreviewTiles,
.tilemapptr = gMtEmberMapPreviewTilemap,
@@ -200,7 +200,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_ROCKET_WAREHOUSE] = {
.mapsec = MAPSEC_ROCKET_WAREHOUSE,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST,
.tilesptr = gRocketWarehouseMapPreviewTiles,
.tilemapptr = gRocketWarehouseMapPreviewTilemap,
@@ -208,7 +208,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_MONEAN_CHAMBER] = {
.mapsec = MAPSEC_MONEAN_CHAMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
.tilesptr = gMoneanChamberMapPreviewTiles,
.tilemapptr = gMoneanChamberMapPreviewTilemap,
@@ -216,7 +216,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_DOTTED_HOLE] = {
.mapsec = MAPSEC_DOTTED_HOLE,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F,
.tilesptr = gDottedHoleMapPreviewTiles,
.tilemapptr = gDottedHoleMapPreviewTilemap,
@@ -224,7 +224,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_BERRY_FOREST] = {
.mapsec = MAPSEC_BERRY_FOREST,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST,
.tilesptr = gBerryForestMapPreviewTiles,
.tilemapptr = gBerryForestMapPreviewTilemap,
@@ -232,7 +232,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_ICEFALL_CAVE] = {
.mapsec = MAPSEC_ICEFALL_CAVE,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE,
.tilesptr = gIcefallCaveMapPreviewTiles,
.tilemapptr = gIcefallCaveMapPreviewTilemap,
@@ -240,7 +240,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_LOST_CAVE] = {
.mapsec = MAPSEC_LOST_CAVE,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE,
.tilesptr = gLostCaveMapPreviewTiles,
.tilemapptr = gLostCaveMapPreviewTilemap,
@@ -248,7 +248,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_ALTERING_CAVE] = {
.mapsec = MAPSEC_ALTERING_CAVE,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SIX_ISLAND_ALTERING_CAVE,
.tilesptr = gAlteringCaveMapPreviewTiles,
.tilemapptr = gAlteringCaveMapPreviewTilemap,
@@ -256,7 +256,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_PATTERN_BUSH] = {
.mapsec = MAPSEC_PATTERN_BUSH,
- .forceFirstTime = TRUE,
+ .type = MPS_TYPE_FOREST,
.flagId = FLAG_WORLD_MAP_SIX_ISLAND_PATTERN_BUSH,
.tilesptr = gViridianForestMapPreviewTiles,
.tilemapptr = gViridianForestMapPreviewTilemap,
@@ -264,7 +264,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_LIPTOO_CHAMBER] = {
.mapsec = MAPSEC_LIPTOO_CHAMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
.tilesptr = gMoneanChamberMapPreviewTiles,
.tilemapptr = gMoneanChamberMapPreviewTilemap,
@@ -272,7 +272,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_WEEPTH_CHAMBER] = {
.mapsec = MAPSEC_WEEPTH_CHAMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
.tilesptr = gMoneanChamberMapPreviewTiles,
.tilemapptr = gMoneanChamberMapPreviewTilemap,
@@ -280,7 +280,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_TDILFORD_CHAMBER] = {
.mapsec = MAPSEC_DILFORD_CHAMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
.tilesptr = gMoneanChamberMapPreviewTiles,
.tilemapptr = gMoneanChamberMapPreviewTilemap,
@@ -288,7 +288,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_SCUFIB_CHAMBER] = {
.mapsec = MAPSEC_SCUFIB_CHAMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
.tilesptr = gMoneanChamberMapPreviewTiles,
.tilemapptr = gMoneanChamberMapPreviewTilemap,
@@ -296,7 +296,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_RIXY_CHAMBER] = {
.mapsec = MAPSEC_RIXY_CHAMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
.tilesptr = gMoneanChamberMapPreviewTiles,
.tilemapptr = gMoneanChamberMapPreviewTilemap,
@@ -304,7 +304,7 @@ static const struct MapPreviewScreen sMapPreviewScreenData[MPS_COUNT] = {
},
[MPS_VIAPOIS_CHAMBER] = {
.mapsec = MAPSEC_VIAPOIS_CHAMBER,
- .forceFirstTime = FALSE,
+ .type = MPS_TYPE_CAVE,
.flagId = FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER,
.tilesptr = gMoneanChamberMapPreviewTiles,
.tilemapptr = gMoneanChamberMapPreviewTilemap,
@@ -328,7 +328,7 @@ static const struct BgTemplate sMapPreviewBgTemplate[1] = {
}
};
-static u8 sub_80F80E4(u8 mapsec)
+static u8 GetMapPreviewScreenIdx(u8 mapsec)
{
s32 i;
@@ -342,20 +342,20 @@ static u8 sub_80F80E4(u8 mapsec)
return MPS_COUNT;
}
-bool8 sub_80F8110(u8 mapsec, u8 forceFirstTime)
+bool8 MapHasPreviewScreen(u8 mapsec, u8 type)
{
u8 idx;
- idx = sub_80F80E4(mapsec);
+ idx = GetMapPreviewScreenIdx(mapsec);
if (idx != MPS_COUNT)
{
- if (forceFirstTime == 2)
+ if (type == MPS_TYPE_ANY)
{
return TRUE;
}
else
{
- return sMapPreviewScreenData[idx].forceFirstTime == forceFirstTime ? TRUE : FALSE;
+ return sMapPreviewScreenData[idx].type == type ? TRUE : FALSE;
}
}
else
@@ -364,29 +364,29 @@ bool8 sub_80F8110(u8 mapsec, u8 forceFirstTime)
}
}
-bool8 sub_80F8154(u8 mapsec, u8 forceFirstTime)
+bool32 MapHasPreviewScreen_HandleQLState2(u8 mapsec, u8 type)
{
- if (gQuestLogState == 2)
+ if (gQuestLogState == QL_STATE_2)
{
return FALSE;
}
else
{
- return sub_80F8110(mapsec, forceFirstTime);
+ return MapHasPreviewScreen(mapsec, type);
}
}
-void sub_80F8180(void)
+void MapPreview_InitBgs(void)
{
InitBgsFromTemplates(0, sMapPreviewBgTemplate, NELEMS(sMapPreviewBgTemplate));
ShowBg(0);
}
-void sub_80F819C(u8 mapsec)
+void MapPreview_LoadGfx(u8 mapsec)
{
u8 idx;
- idx = sub_80F80E4(mapsec);
+ idx = GetMapPreviewScreenIdx(mapsec);
if (idx != MPS_COUNT)
{
ResetTempTileDataBuffers();
@@ -395,55 +395,55 @@ void sub_80F819C(u8 mapsec)
if (GetBgTilemapBuffer(0) == NULL)
{
SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
- gUnknown_203ABED = TRUE;
+ sAllocedBg0TilemapBuffer = TRUE;
}
else
{
- gUnknown_203ABED = FALSE;
+ sAllocedBg0TilemapBuffer = FALSE;
}
CopyToBgTilemapBuffer(0, sMapPreviewScreenData[idx].tilemapptr, 0, 0x000);
CopyBgTilemapBufferToVram(0);
}
}
-void sub_80F8234(s32 windowId)
+void MapPreview_Unload(s32 windowId)
{
RemoveWindow(windowId);
- if (gUnknown_203ABED)
+ if (sAllocedBg0TilemapBuffer)
{
Free(GetBgTilemapBuffer(0));
}
}
-bool32 sub_80F8258(void)
+bool32 MapPreview_IsGfxLoadFinished(void)
{
return FreeTempTileDataBuffersIfPossible();
}
-void sub_80F8268(u8 mapsec)
+void MapPreview_StartForestTransition(u8 mapsec)
{
u8 taskId;
- taskId = CreateTask(sub_80F83D0, 0);
+ taskId = CreateTask(Task_RunMapPreviewScreenForest, 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[10] = MapPreview_GetDuration(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);
+ SetGpuRegBits(REG_OFFSET_WININ, WININ_WIN0_CLR | WININ_WIN1_CLR);
+ SetGpuRegBits(REG_OFFSET_WINOUT, WINOUT_WIN01_CLR);
+ gTasks[taskId].data[11] = MapPreview_CreateMapNameWindow(mapsec);
ScriptContext2_Enable();
}
-u16 sub_80F8318(u8 mapsec)
+u16 MapPreview_CreateMapNameWindow(u8 mapsec)
{
u16 windowId;
u32 xctr;
@@ -452,18 +452,18 @@ u16 sub_80F8318(u8 mapsec)
windowId = AddWindow(&sMapNameWindow);
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
- color[0] = 1; // Access violation
- color[1] = 4; // Access violation
- color[2] = 3; // Access violation
+ color[0] = TEXT_COLOR_WHITE; // Access violation
+ color[1] = TEXT_COLOR_RED; // Access violation
+ color[2] = TEXT_COLOR_LIGHT_GREY; // 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;
}
-bool32 sub_80F83B0(void)
+bool32 ForestMapPreviewScreenIsRunning(void)
{
- if (FuncIsActiveTask(sub_80F83D0) == TRUE)
+ if (FuncIsActiveTask(Task_RunMapPreviewScreenForest) == TRUE)
{
return FALSE;
}
@@ -473,7 +473,7 @@ bool32 sub_80F83B0(void)
}
}
-static void sub_80F83D0(u8 taskId)
+static void Task_RunMapPreviewScreenForest(u8 taskId)
{
s16 * data;
@@ -481,7 +481,7 @@ static void sub_80F83D0(u8 taskId)
switch (data[0])
{
case 0:
- if (!sub_80F8258() && !IsDma3ManagerBusyWithBgCopy())
+ if (!MapPreview_IsGfxLoadFinished() && !IsDma3ManagerBusyWithBgCopy())
{
CopyWindowToVram(data[11], 3);
data[0]++;
@@ -539,7 +539,7 @@ static void sub_80F83D0(u8 taskId)
case 5:
if (!IsDma3ManagerBusyWithBgCopy())
{
- sub_80F8234(data[11]);
+ MapPreview_Unload(data[11]);
SetBgAttribute(0, BG_ATTR_PRIORITY, data[2]);
SetGpuReg(REG_OFFSET_DISPCNT, data[3]);
SetGpuReg(REG_OFFSET_BLDCNT, data[4]);
@@ -556,7 +556,7 @@ const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec)
{
u8 idx;
- idx = sub_80F80E4(mapsec);
+ idx = GetMapPreviewScreenIdx(mapsec);
if (idx == MPS_COUNT)
{
return NULL;
@@ -567,18 +567,18 @@ const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec)
}
}
-u16 sub_80F856C(u8 mapsec)
+u16 MapPreview_GetDuration(u8 mapsec)
{
u8 idx;
u16 flagId;
- idx = sub_80F80E4(mapsec);
+ idx = GetMapPreviewScreenIdx(mapsec);
if (idx == MPS_COUNT)
{
return 0;
}
flagId = sMapPreviewScreenData[idx].flagId;
- if (!sMapPreviewScreenData[idx].forceFirstTime)
+ if (sMapPreviewScreenData[idx].type == MPS_TYPE_CAVE)
{
if (!FlagGet(flagId))
{
@@ -590,7 +590,7 @@ u16 sub_80F856C(u8 mapsec)
}
}
else {
- if (gUnknown_203ABEC)
+ if (sHasVisitedMapBefore)
{
return 120;
}
@@ -601,15 +601,15 @@ u16 sub_80F856C(u8 mapsec)
}
}
-void sub_80F85BC(u16 flagId)
+void MapPreview_SetFlag(u16 flagId)
{
if (!FlagGet(flagId))
{
- gUnknown_203ABEC = TRUE;
+ sHasVisitedMapBefore = TRUE;
}
else
{
- gUnknown_203ABEC = FALSE;
+ sHasVisitedMapBefore = FALSE;
}
FlagSet(flagId);
}
diff --git a/src/player_pc.c b/src/player_pc.c
index 62a899e39..736c67a51 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -23,6 +23,7 @@
#include "party_menu.h"
#include "constants/items.h"
#include "constants/songs.h"
+#include "constants/field_weather.h"
#define PC_ITEM_ID 0
#define PC_QUANTITY 1
@@ -331,7 +332,7 @@ static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId)
static void Task_PlayerPcDepositItem(u8 taskId)
{
gTasks[taskId].func = Task_DepositItem_WaitFadeAndGoToBag;
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
}
static void Task_ReturnToItemStorageSubmenu(u8 taskId)
@@ -394,7 +395,7 @@ static void Task_WithdrawItemBeginFade(u8 taskId)
{
gTasks[taskId].func = Task_WithdrawItem_WaitFadeAndGoToItemStorage;
ItemPc_SetInitializedFlag(0);
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
}
static void Task_PlayerPcCancel(u8 taskId)
@@ -556,7 +557,7 @@ static void Task_MailSubmenuHandleInput(u8 taskId)
static void Task_PlayerPcReadMail(u8 taskId)
{
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = Task_WaitFadeAndReadSelectedMail;
}
@@ -663,7 +664,7 @@ static void Task_PlayerPcGiveMailToMon(u8 taskId)
}
else
{
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = Task_WaitFadeAndGoToPartyMenu;
}
}
diff --git a/src/quest_log.c b/src/quest_log.c
index 5d260b58f..91c07223e 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -42,6 +42,7 @@
#include "constants/trainer_classes.h"
#include "constants/species.h"
#include "constants/items.h"
+#include "constants/field_weather.h"
u8 gUnknown_3005E88;
@@ -152,7 +153,7 @@ static u8 sub_8111BD4(void);
static void DrawQuestLogSceneDescription(void);
static void sub_8111D90(u8);
static void QuestLog_CloseTextWindow(void);
-static void QuestLog_SkipToEndOfPlayback(s8);
+static void QuestLog_SkipToEndOfPlayback(s8 delay);
static void QuestLog_WaitFadeAndCancelPlayback(void);
static bool8 sub_8111F60(void);
static void sub_8111F8C(u8);
@@ -920,7 +921,7 @@ static void sub_811175C(u8 sceneNum, struct UnkStruct_203AE98 * a1)
static void sub_81118F4(s8 a0)
{
- FadeScreen(1, a0);
+ FadeScreen(FADE_TO_BLACK, a0);
sQuestLogCB = QuestLog_AdvancePlayhead;
}
@@ -1178,9 +1179,9 @@ static void QuestLog_CloseTextWindow(void)
CopyWindowToVram(gUnknown_203ADFE[1], 1);
}
-static void QuestLog_SkipToEndOfPlayback(s8 a0)
+static void QuestLog_SkipToEndOfPlayback(s8 delay)
{
- FadeScreen(1, a0);
+ FadeScreen(FADE_TO_BLACK, delay);
sQuestLogCB = QuestLog_WaitFadeAndCancelPlayback;
}
@@ -4294,7 +4295,7 @@ static const u16 sQuestLogWorldMapFlags[] =
FLAG_WORLD_MAP_SIX_ISLAND
};
-void sub_8115748(u16 worldMapFlag)
+void QuestLog_RecordEnteredMap(u16 worldMapFlag)
{
s32 i;
diff --git a/src/scrcmd.c b/src/scrcmd.c
index b4605e9d5..7eaa98c76 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -598,8 +598,8 @@ bool8 ScrCmd_comparestattoword(struct ScriptContext * ctx)
bool8 ScrCmd_setworldmapflag(struct ScriptContext * ctx)
{
u16 value = ScriptReadHalfword(ctx);
- sub_8115748(value);
- sub_80F85BC(value);
+ QuestLog_RecordEnteredMap(value);
+ MapPreview_SetFlag(value);
return FALSE;
}
diff --git a/src/shop.c b/src/shop.c
index 5cc9ab3f0..ddeaf6a68 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -36,6 +36,7 @@
#include "constants/songs.h"
#include "constants/items.h"
#include "constants/game_stat.h"
+#include "constants/field_weather.h"
#define tItemCount data[1]
#define tItemId data[5]
@@ -292,14 +293,14 @@ static void Task_ShopMenu(u8 taskId)
static void Task_HandleShopMenuBuy(u8 taskId)
{
SetWordTaskArg(taskId, 0xE, (u32)CB2_InitBuyMenu);
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
static void Task_HandleShopMenuSell(u8 taskId)
{
SetWordTaskArg(taskId, 0xE, (u32)CB2_GoToSellMenu);
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
diff --git a/src/start_menu.c b/src/start_menu.c
index cf8be2de9..867e469e0 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -39,6 +39,7 @@
#include "help_system.h"
#include "constants/songs.h"
#include "constants/flags.h"
+#include "constants/field_weather.h"
enum StartMenuOption
{
@@ -446,7 +447,7 @@ static void StartMenu_FadeScreenIfLeavingOverworld(void)
&& sStartMenuCallback != StartMenuSafariZoneRetireCallback)
{
StopPokemonLeagueLightingEffectTask();
- FadeScreen(1, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
}
}