summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/blend_palette.c2
-rw-r--r--src/credits.c3
-rw-r--r--src/dynamic_placeholder_text_util.c2
-rw-r--r--src/event_object_movement.c2
-rw-r--r--src/field_effect.c10
-rw-r--r--src/field_specials.c102
-rw-r--r--src/field_weather.c6
-rw-r--r--src/fieldmap.c52
-rw-r--r--src/mevent_show_card.c2
-rw-r--r--src/oak_speech.c4
-rw-r--r--src/overworld.c38
-rw-r--r--src/quest_log.c40
-rw-r--r--src/quest_log_events.c6
-rw-r--r--src/text.c498
14 files changed, 385 insertions, 382 deletions
diff --git a/src/blend_palette.c b/src/blend_palette.c
index 8cd65ae4b..f454a2a6e 100644
--- a/src/blend_palette.c
+++ b/src/blend_palette.c
@@ -19,7 +19,7 @@ void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor)
}
}
-void sub_8045314(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size)
+void BlendPalettesAt(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size)
{
if (coefficient == 16)
{
diff --git a/src/credits.c b/src/credits.c
index ba57947c8..da8ce143a 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -11,6 +11,7 @@
#include "trainer_pokemon_sprites.h"
#include "menu.h"
#include "field_weather.h"
+#include "quest_log.h"
#include "constants/maps.h"
#include "constants/field_weather.h"
@@ -791,7 +792,7 @@ static bool32 DoOverworldMapScrollScene(UNUSED u8 unused)
sCreditsMgr->subseqno++;
// fallthrough
case 1:
- if (!Overworld_DoScrollSceneForCredits(&sCreditsMgr->ovwldseqno, sOverworldMapScenes[sCreditsMgr->whichMon], 0))
+ if (!Overworld_DoScrollSceneForCredits(&sCreditsMgr->ovwldseqno, sOverworldMapScenes[sCreditsMgr->whichMon], QL_TINT_NONE))
return FALSE;
CreateCreditsWindow();
SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
diff --git a/src/dynamic_placeholder_text_util.c b/src/dynamic_placeholder_text_util.c
index 22fcb9259..8167c0d2b 100644
--- a/src/dynamic_placeholder_text_util.c
+++ b/src/dynamic_placeholder_text_util.c
@@ -108,7 +108,7 @@ u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src)
{
while (*src != EOS)
{
- if (*src != CHAR_SPECIAL_F7)
+ if (*src != CHAR_DYNAMIC_PLACEHOLDER)
{
*dest++ = *src++;
}
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 6a50b3541..cc6c07e5b 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -2452,7 +2452,7 @@ void PatchObjectPalette(u16 paletteTag, u8 paletteSlot)
u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag);
LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20);
- sub_8083598(paletteSlot);
+ ApplyGlobalFieldPaletteTint(paletteSlot);
}
void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot)
diff --git a/src/field_effect.c b/src/field_effect.c
index 56a99138e..051e72282 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -422,9 +422,9 @@ static void FieldEffectScript_LoadTiles(const u8 **script)
*script += sizeof(u32);
}
-void sub_8083598(u8 paletteIdx)
+void ApplyGlobalFieldPaletteTint(u8 paletteIdx)
{
- switch (gUnknown_2036E28)
+ switch (gGlobalFieldTintMode)
{
case 0:
return;
@@ -435,7 +435,7 @@ void sub_8083598(u8 paletteIdx)
TintPalette_SepiaTone(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], 0x10);
break;
case 3:
- sub_8111F38((paletteIdx + 16) * 16, 0x10);
+ QuestLog_BackUpPalette((paletteIdx + 16) * 16, 0x10);
TintPalette_GrayScale(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], 0x10);
break;
default:
@@ -450,7 +450,7 @@ static void FieldEffectScript_LoadFadedPal(const u8 **script)
u8 idx = IndexOfSpritePaletteTag(spritePalette->tag);
LoadSpritePalette(spritePalette);
if (idx == 0xFF)
- sub_8083598(IndexOfSpritePaletteTag(spritePalette->tag));
+ ApplyGlobalFieldPaletteTint(IndexOfSpritePaletteTag(spritePalette->tag));
UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(spritePalette->tag));
*script += sizeof(u32);
}
@@ -461,7 +461,7 @@ static void FieldEffectScript_LoadPal(const u8 **script)
u8 idx = IndexOfSpritePaletteTag(spritePalette->tag);
LoadSpritePalette(spritePalette);
if (idx != 0xFF)
- sub_8083598(IndexOfSpritePaletteTag(spritePalette->tag));
+ ApplyGlobalFieldPaletteTint(IndexOfSpritePaletteTag(spritePalette->tag));
*script += sizeof(u32);
}
diff --git a/src/field_specials.c b/src/field_specials.c
index efa3451e0..1b043b5f5 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1800,10 +1800,10 @@ void SetUsedPkmnCenterQuestLogEvent(void)
}
static const struct {
- u16 grp;
- u16 num;
- u16 grp2;
- u16 num2;
+ u16 inside_grp;
+ u16 inside_num;
+ u16 outside_grp;
+ u16 outside_num;
} sInsideOutsidePairs[51] = {
[QL_LOCATION_HOME] = {MAP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP(PALLET_TOWN)},
[QL_LOCATION_OAKS_LAB] = {MAP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP(PALLET_TOWN)},
@@ -1858,85 +1858,87 @@ static const struct {
[QL_LOCATION_CERULEAN_CAVE] = {MAP(CERULEAN_CAVE_1F), MAP(CERULEAN_CITY)}
};
-void sub_80CC534(void)
+void QuestLog_CheckDepartingIndoorsMap(void)
{
u8 i;
for (i = 0; i < NELEMS(sInsideOutsidePairs); i++)
{
- if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[i].grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[i].num)
+ if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[i].inside_grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[i].inside_num)
{
- if (VarGet(VAR_0x404D) != QL_LOCATION_ROCKET_HIDEOUT || i != QL_LOCATION_GAME_CORNER)
+ if (VarGet(VAR_QL_ENTRANCE) != QL_LOCATION_ROCKET_HIDEOUT || i != QL_LOCATION_GAME_CORNER)
{
- VarSet(VAR_0x404D, i);
- FlagSet(FLAG_0x808);
+ VarSet(VAR_QL_ENTRANCE, i);
+ FlagSet(FLAG_QL_DEPARTED);
}
break;
}
}
}
-void sub_80CC59C(void)
+struct QuestLogDepartedData {
+ u8 map_section_id;
+ u8 entrance_id;
+};
+
+void QuestLog_TryRecordDepartedLocation(void)
{
s16 x, y;
- struct {
- u8 unk0;
- u8 unk1;
- } sp0;
- u16 r5 = VarGet(VAR_0x404D);
- sp0.unk0 = 0;
- sp0.unk1 = 0;
- if (FlagGet(FLAG_0x808))
- {
- if (r5 == QL_LOCATION_VIRIDIAN_FOREST_1)
+ struct QuestLogDepartedData event_buffer;
+ u16 ql_entrance_id = VarGet(VAR_QL_ENTRANCE);
+ event_buffer.map_section_id = 0;
+ event_buffer.entrance_id = 0;
+ if (FlagGet(FLAG_QL_DEPARTED))
+ {
+ if (ql_entrance_id == QL_LOCATION_VIRIDIAN_FOREST_1)
{
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE)))
{
- sp0.unk0 = MAPSEC_ROUTE_2;
+ event_buffer.map_section_id = MAPSEC_ROUTE_2;
if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE))
- sp0.unk1 = r5;
+ event_buffer.entrance_id = ql_entrance_id;
else
- sp0.unk1 = r5 + 1;
- SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&sp0);
- FlagClear(FLAG_0x808);
+ event_buffer.entrance_id = ql_entrance_id + 1;
+ SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&event_buffer);
+ FlagClear(FLAG_QL_DEPARTED);
return;
}
}
- else if (r5 == QL_LOCATION_LEAGUE_GATE_1)
+ else if (ql_entrance_id == QL_LOCATION_LEAGUE_GATE_1)
{
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE22) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE23)))
{
- sp0.unk0 = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId;
+ event_buffer.map_section_id = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[ql_entrance_id].inside_grp, sInsideOutsidePairs[ql_entrance_id].inside_num)->regionMapSectionId;
if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22))
- sp0.unk1 = r5;
+ event_buffer.entrance_id = ql_entrance_id;
else
- sp0.unk1 = r5 + 1;
- SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&sp0);
- FlagClear(FLAG_0x808);
+ event_buffer.entrance_id = ql_entrance_id + 1;
+ SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&event_buffer);
+ FlagClear(FLAG_QL_DEPARTED);
return;
}
}
- if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[r5].grp2 && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[r5].num2)
+ if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[ql_entrance_id].outside_grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[ql_entrance_id].outside_num)
{
- sp0.unk0 = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId;
- sp0.unk1 = r5;
- if (r5 == QL_LOCATION_ROCK_TUNNEL_1)
+ event_buffer.map_section_id = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[ql_entrance_id].inside_grp, sInsideOutsidePairs[ql_entrance_id].inside_num)->regionMapSectionId;
+ event_buffer.entrance_id = ql_entrance_id;
+ if (ql_entrance_id == QL_LOCATION_ROCK_TUNNEL_1)
{
PlayerGetDestCoords(&x, &y);
if (x != 15 || y != 26)
- sp0.unk1++;
+ event_buffer.entrance_id++;
}
- else if (r5 == QL_LOCATION_SEAFOAM_ISLANDS_1)
+ else if (ql_entrance_id == QL_LOCATION_SEAFOAM_ISLANDS_1)
{
PlayerGetDestCoords(&x, &y);
if (x != 67 || y != 15)
- sp0.unk1++;
+ event_buffer.entrance_id++;
}
- SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&sp0);
- FlagClear(FLAG_0x808);
- if (r5 == QL_LOCATION_ROCKET_HIDEOUT)
+ SetQuestLogEvent(QL_EVENT_DEPARTED, (void *)&event_buffer);
+ FlagClear(FLAG_QL_DEPARTED);
+ if (ql_entrance_id == QL_LOCATION_ROCKET_HIDEOUT)
{
- VarSet(VAR_0x404D, QL_LOCATION_GAME_CORNER);
- FlagSet(FLAG_0x808);
+ VarSet(VAR_QL_ENTRANCE, QL_LOCATION_GAME_CORNER);
+ FlagSet(FLAG_QL_DEPARTED);
}
}
}
@@ -2143,7 +2145,7 @@ void DoPokemonLeagueLightingEffect(void)
LoadPalette(sEliteFourLightingPalettes[0], 0x70, 0x20);
}
data[1] = 0;
- sub_8059948(7, 1);
+ Fieldmap_ApplyGlobalTintToPaletteSlot(7, 1);
}
}
@@ -2153,7 +2155,7 @@ static void Task_RunPokemonLeagueLightingEffect(u8 taskId)
if (!gPaletteFade.active
&& FlagGet(FLAG_TEMP_2) != FALSE
&& FlagGet(FLAG_TEMP_5) != TRUE
- && gUnknown_2036E28 != 3
+ && gGlobalFieldTintMode != QL_TINT_BACKUP_GRAYSCALE
&& --data[0] == 0
)
{
@@ -2170,7 +2172,7 @@ static void Task_RunPokemonLeagueLightingEffect(u8 taskId)
data[0] = sEliteFourLightingTimers[data[1]];
LoadPalette(sEliteFourLightingPalettes[data[1]], 0x70, 0x20);
}
- sub_8059948(7, 1);
+ Fieldmap_ApplyGlobalTintToPaletteSlot(7, 1);
}
}
@@ -2187,7 +2189,7 @@ static void Task_CancelPokemonLeagueLightingEffect(u8 taskId)
{
LoadPalette(sEliteFourLightingPalettes[11], 0x70, 0x20);
}
- sub_8059948(7, 1);
+ Fieldmap_ApplyGlobalTintToPaletteSlot(7, 1);
if (gPaletteFade.active)
{
BlendPalettes(0x00000080, 16, RGB_BLACK);
@@ -2400,7 +2402,7 @@ static void MoveDeoxysObject(u8 num)
{
u8 mapObjId;
LoadPalette(sDeoxysObjectPals[num], 0x1A0, 0x08);
- sub_8083598(10);
+ ApplyGlobalFieldPaletteTint(10);
TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjId);
if (num == 0)
PlaySE(SE_M_CONFUSE_RAY);
@@ -2446,7 +2448,7 @@ void SetDeoxysTrianglePalette(void)
{
u8 num = VarGet(VAR_DEOXYS_INTERACTION_NUM);
LoadPalette(sDeoxysObjectPals[num], 0x1A0, 0x08);
- sub_8083598(10);
+ ApplyGlobalFieldPaletteTint(10);
}
bool8 IsBadEggInParty(void)
@@ -2481,7 +2483,7 @@ void BrailleCursorToggle(void)
if (gSpecialVar_0x8006 == 0)
sBrailleTextCursorSpriteID = CreateTextCursorSpriteForOakSpeech(0, x, gSpecialVar_0x8005, 0, 0);
else
- sub_8006398(sBrailleTextCursorSpriteID);
+ DestroyTextCursorSprite(sBrailleTextCursorSpriteID);
}
}
diff --git a/src/field_weather.c b/src/field_weather.c
index b097524bc..c53d7e516 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -147,7 +147,7 @@ void StartWeather(void)
{
u8 index = AllocSpritePalette(0x1200);
CpuCopy32(gUnknown_83C2CE0, &gPlttBufferUnfaded[0x100 + index * 16], 32);
- sub_8083598(index);
+ ApplyGlobalFieldPaletteTint(index);
BuildGammaShiftTables();
gWeatherPtr->altGammaSpritePalIndex = index;
gWeatherPtr->weatherPicSpritePalIndex = index;
@@ -1154,7 +1154,7 @@ void ResetPreservedPalettesInWeather(void)
sPaletteGammaTypes = sBasePaletteGammaTypes;
}
-void sub_807B0C4(u16 *palbuf, u16 *unused, u32 size)
+void SlightlyDarkenPalsInWeather(u16 *palbuf, u16 *unused, u32 size)
{
switch (gWeatherPtr->currWeather)
{
@@ -1163,7 +1163,7 @@ void sub_807B0C4(u16 *palbuf, u16 *unused, u32 size)
case WEATHER_RAIN_THUNDERSTORM:
case WEATHER_SHADE:
case WEATHER_DOWNPOUR:
- sub_8045314(palbuf, RGB_BLACK, 3, size);
+ BlendPalettesAt(palbuf, RGB_BLACK, 3, size);
break;
}
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 53110396d..7ece8b622 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -31,7 +31,7 @@ EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
EWRAM_DATA struct MapHeader gMapHeader = {};
EWRAM_DATA struct Camera gCamera = {};
static EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
-EWRAM_DATA u8 gUnknown_2036E28 = 0;
+EWRAM_DATA u8 gGlobalFieldTintMode = QL_TINT_NONE;
static const struct ConnectionFlags sDummyConnectionFlags = {};
@@ -890,48 +890,48 @@ static void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 nu
}
}
-static void sub_80598CC(u16 a0, u16 a1)
+static void Fieldmap_ApplyGlobalTintToPaletteEntries(u16 offset, u16 size)
{
- switch (gUnknown_2036E28)
+ switch (gGlobalFieldTintMode)
{
- case 0:
+ case QL_TINT_NONE:
return;
- case 1:
- TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1);
+ case QL_TINT_GRAYSCALE:
+ TintPalette_GrayScale(gPlttBufferUnfaded + offset, size);
break;
- case 2:
- TintPalette_SepiaTone(gPlttBufferUnfaded + a0, a1);
+ case QL_TINT_SEPIA:
+ TintPalette_SepiaTone(gPlttBufferUnfaded + offset, size);
break;
- case 3:
- sub_8111F38(a0, a1);
- TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1);
+ case QL_TINT_BACKUP_GRAYSCALE:
+ QuestLog_BackUpPalette(offset, size);
+ TintPalette_GrayScale(gPlttBufferUnfaded + offset, size);
break;
default:
return;
}
- CpuCopy16(gPlttBufferUnfaded + a0, gPlttBufferFaded + a0, a1 * sizeof(u16));
+ CpuCopy16(gPlttBufferUnfaded + offset, gPlttBufferFaded + offset, size * sizeof(u16));
}
-void sub_8059948(u8 a0, u8 a1)
+void Fieldmap_ApplyGlobalTintToPaletteSlot(u8 slot, u8 count)
{
- switch (gUnknown_2036E28)
+ switch (gGlobalFieldTintMode)
{
- case 0:
+ case QL_TINT_NONE:
return;
- case 1:
- TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
+ case QL_TINT_GRAYSCALE:
+ TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16);
break;
- case 2:
- TintPalette_SepiaTone(gPlttBufferUnfaded + a0 * 16, a1 * 16);
+ case QL_TINT_SEPIA:
+ TintPalette_SepiaTone(gPlttBufferUnfaded + slot * 16, count * 16);
break;
- case 3:
- sub_8111F38(a0 * 16, a1 * 16);
- TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
+ case QL_TINT_BACKUP_GRAYSCALE:
+ QuestLog_BackUpPalette(slot * 16, count * 16);
+ TintPalette_GrayScale(gPlttBufferUnfaded + slot * 16, count * 16);
break;
default:
return;
}
- CpuFastCopy(gPlttBufferUnfaded + a0 * 16, gPlttBufferFaded + a0 * 16, a1 * 16 * sizeof(u16));
+ CpuFastCopy(gPlttBufferUnfaded + slot * 16, gPlttBufferFaded + slot * 16, count * 16 * sizeof(u16));
}
static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
@@ -944,17 +944,17 @@ static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOff
{
LoadPalette(&black, destOffset, 2);
LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2);
- sub_80598CC(destOffset + 1, (size - 2) >> 1);
+ Fieldmap_ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - 2) >> 1);
}
else if (tileset->isSecondary == TRUE)
{
LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size);
- sub_80598CC(destOffset, size >> 1);
+ Fieldmap_ApplyGlobalTintToPaletteEntries(destOffset, size >> 1);
}
else
{
LoadCompressedPalette((u32*)tileset->palettes, destOffset, size);
- sub_80598CC(destOffset, size >> 1);
+ Fieldmap_ApplyGlobalTintToPaletteEntries(destOffset, size >> 1);
}
}
}
diff --git a/src/mevent_show_card.c b/src/mevent_show_card.c
index f6687eab7..86864dc4a 100644
--- a/src/mevent_show_card.c
+++ b/src/mevent_show_card.c
@@ -317,7 +317,7 @@ static void sub_8145A98(void)
}
for (i = 0, r6 = 0; i < 40; i++)
{
- if (sMEventScreenData->wonderCard.unk_122[i] != CHAR_SPECIAL_F7)
+ if (sMEventScreenData->wonderCard.unk_122[i] != CHAR_DYNAMIC_PLACEHOLDER)
{
sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nameTxt[r6] = sMEventScreenData->wonderCard.unk_122[i];
r6++;
diff --git a/src/oak_speech.c b/src/oak_speech.c
index 35864576f..96ba0adee 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -704,7 +704,7 @@ static void Task_OakSpeech5(u8 taskId)
}
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 18);
CopyBgTilemapBufferToVram(1);
- sub_8006398(gTasks[taskId].data[5]);
+ DestroyTextCursorSprite(gTasks[taskId].data[5]);
sOakSpeechResources->unk_0014[0] = RGB_BLACK;
LoadPalette(sOakSpeechResources->unk_0014, 0, 2);
gTasks[taskId].data[3] = 32;
@@ -822,7 +822,7 @@ static void Task_OakSpeech7(u8 taskId)
}
break;
case 4:
- sub_8006398(gTasks[taskId].data[5]);
+ DestroyTextCursorSprite(gTasks[taskId].data[5]);
PlayBGM(MUS_NEW_GAME_EXIT);
data[15] = 24;
gMain.state++;
diff --git a/src/overworld.c b/src/overworld.c
index 7bdd0ddb4..1f25d523b 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -292,8 +292,8 @@ void Overworld_ResetStateAfterFly(void)
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_FLASH_ACTIVE);
- FlagClear(FLAG_0x808);
- VarSet(VAR_0x404D, 0);
+ FlagClear(FLAG_QL_DEPARTED);
+ VarSet(VAR_QL_ENTRANCE, 0);
}
void Overworld_ResetStateAfterTeleport(void)
@@ -306,8 +306,8 @@ void Overworld_ResetStateAfterTeleport(void)
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_FLASH_ACTIVE);
- FlagClear(FLAG_0x808);
- VarSet(VAR_0x404D, 0);
+ FlagClear(FLAG_QL_DEPARTED);
+ VarSet(VAR_QL_ENTRANCE, 0);
}
void Overworld_ResetStateAfterDigEscRope(void)
@@ -320,8 +320,8 @@ void Overworld_ResetStateAfterDigEscRope(void)
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_FLASH_ACTIVE);
- FlagClear(FLAG_0x808);
- VarSet(VAR_0x404D, 0);
+ FlagClear(FLAG_QL_DEPARTED);
+ VarSet(VAR_QL_ENTRANCE, 0);
}
static void Overworld_ResetStateAfterWhitingOut(void)
@@ -334,8 +334,8 @@ static void Overworld_ResetStateAfterWhitingOut(void)
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_FLASH_ACTIVE);
- FlagClear(FLAG_0x808);
- VarSet(VAR_0x404D, 0);
+ FlagClear(FLAG_QL_DEPARTED);
+ VarSet(VAR_QL_ENTRANCE, 0);
}
static void Overworld_ResetStateOnContinue(void)
@@ -1848,7 +1848,7 @@ static bool32 load_map_stuff(u8 *state, bool32 a1)
(*state)++;
break;
case 1:
- sub_8111F14();
+ QuestLog_InitPalettesBackup();
(*state)++;
break;
case 2:
@@ -1865,8 +1865,8 @@ static bool32 load_map_stuff(u8 *state, bool32 a1)
sub_8057114();
if (gQuestLogState != QL_STATE_PLAYBACK)
{
- sub_80CC534();
- sub_80CC59C();
+ QuestLog_CheckDepartingIndoorsMap();
+ QuestLog_TryRecordDepartedLocation();
}
SetHelpContextForMap();
(*state)++;
@@ -1931,7 +1931,7 @@ static bool32 sub_8056CD8(u8 *state)
{
case 0:
InitOverworldBgs();
- sub_8111F14();
+ QuestLog_InitPalettesBackup();
sub_8057024(FALSE);
sub_8057100();
sub_8057114();
@@ -1965,7 +1965,7 @@ static bool32 map_loading_iteration_2_link(u8 *state)
(*state)++;
break;
case 1:
- sub_8111F14();
+ QuestLog_InitPalettesBackup();
sub_8057024(1);
(*state)++;
break;
@@ -2203,7 +2203,7 @@ static void CreateLinkPlayerSprites(void)
void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void)
{
FieldClearVBlankHBlankCallbacks();
- gUnknown_2036E28 = 1;
+ gGlobalFieldTintMode = QL_TINT_GRAYSCALE;
ScriptContext1_Init();
ScriptContext2_Disable();
SetMainCallback1(NULL);
@@ -2214,7 +2214,7 @@ void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void)
void CB2_SetUpOverworldForQLPlayback(void)
{
FieldClearVBlankHBlankCallbacks();
- gUnknown_2036E28 = 1;
+ gGlobalFieldTintMode = QL_TINT_GRAYSCALE;
LoadSaveblockMapHeader();
ScriptContext1_Init();
ScriptContext2_Disable();
@@ -2243,7 +2243,7 @@ static bool32 LoadMap_QLPlayback(u8 *state)
case 0:
InitOverworldBgs();
FieldClearVBlankHBlankCallbacks();
- sub_8111F14();
+ QuestLog_InitPalettesBackup();
sub_81113E4();
sub_8111438();
if (GetQuestLogStartType() == QL_START_WARP)
@@ -2316,7 +2316,7 @@ void CB2_EnterFieldFromQuestLog(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
- gUnknown_2036E28 = 3;
+ gGlobalFieldTintMode = QL_TINT_BACKUP_GRAYSCALE;
ResetSafariZoneFlag_();
LoadSaveblockMapHeader();
LoadSaveblockObjEventScripts();
@@ -2367,10 +2367,10 @@ static bool8 FieldCB2_Credits_WaitFade(void)
return FALSE;
}
-bool32 Overworld_DoScrollSceneForCredits(u8 *state_p, const struct CreditsOverworldCmd * script, u8 a2)
+bool32 Overworld_DoScrollSceneForCredits(u8 *state_p, const struct CreditsOverworldCmd * script, u8 tintMode)
{
sCreditsOverworld_Script = script;
- gUnknown_2036E28 = a2;
+ gGlobalFieldTintMode = tintMode;
return SetUpScrollSceneForCredits(state_p, 0);
}
diff --git a/src/quest_log.c b/src/quest_log.c
index b43c368fd..3616f19fe 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -77,7 +77,7 @@ EWRAM_DATA u16 *gUnknown_203AE04 = NULL;
EWRAM_DATA u16 *sEventRecordingPointer = NULL;
static EWRAM_DATA u16 *gUnknown_203AE0C[32] = {NULL};
static EWRAM_DATA void (* sQuestLogCB)(void) = NULL;
-static EWRAM_DATA u16 *gUnknown_203AE90 = NULL;
+static EWRAM_DATA u16 *sPalettesBackup = NULL;
static EWRAM_DATA struct UnkStruct_203AE94 sQuestLogCurrentScene = {0};
static EWRAM_DATA struct QuestLogEntry sQuestLogSceneRecordBuffer[32] = {0};
EWRAM_DATA u16 sQuestLogCursor = 0;
@@ -121,7 +121,7 @@ static void Task_QuestLogScene_SavedGame(u8);
static void Task_WaitAtEndOfQuestLog(u8);
static void Task_EndQuestLog(u8);
static bool8 sub_81121D8(u8);
-static void sub_811229C(void);
+static void QL_SlightlyDarkenSomePals(void);
static void TogglePlaybackStateForOverworldLock(u8);
static void SetUpQuestLogEntry(u8, struct QuestLogEntry *, u16);
static bool8 RecordHeadAtEndOfEntryOrScriptContext2Enabled(void);
@@ -420,7 +420,7 @@ void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId)
{
u8 i;
- sub_811381C();
+ QL_EnableRecordingSteps();
sNumScenes = 0;
for (i = 0; i < QUEST_LOG_SCENE_COUNT; i++)
{
@@ -1066,15 +1066,15 @@ static void QuestLog_WaitFadeAndCancelPlayback(void)
}
}
-void sub_8111F14(void)
+void QuestLog_InitPalettesBackup(void)
{
if (gQuestLogState == QL_STATE_PLAYBACK_LAST)
- gUnknown_203AE90 = AllocZeroed(0x200 * sizeof(u16));
+ sPalettesBackup = AllocZeroed(PLTT_SIZE);
}
-void sub_8111F38(u16 a0, u16 a1)
+void QuestLog_BackUpPalette(u16 offset, u16 size)
{
- CpuSet(gPlttBufferUnfaded + a0, gUnknown_203AE90 + a0, a1);
+ CpuSet(gPlttBufferUnfaded + offset, sPalettesBackup + offset, size);
}
static bool8 FieldCB2_FinalScene(void)
@@ -1152,7 +1152,7 @@ static void Task_EndQuestLog(u8 taskId)
case 0:
gDisableMapMusicChangeOnMapLoad = 0;
Overworld_PlaySpecialMapMusic();
- sub_811229C();
+ QL_SlightlyDarkenSomePals();
FillWindowPixelRect(sQuestLogHeaderWindowIds[0], 0xF, 0, 0, sQuestLogHeaderWindowTemplates[0].width * 8, sQuestLogHeaderWindowTemplates[0].height * 8);
tState++;
break;
@@ -1178,13 +1178,13 @@ static void Task_EndQuestLog(u8 taskId)
default:
if (sQuestLogCurrentScene.sceneEndMode == 1)
ShowMapNamePopup(TRUE);
- CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400);
- Free(gUnknown_203AE90);
+ CpuCopy16(sPalettesBackup, gPlttBufferUnfaded, PLTT_SIZE);
+ Free(sPalettesBackup);
sQuestLogCurrentScene = (struct UnkStruct_203AE94){};
ClearPlayerHeldMovementAndUnfreezeObjectEvents();
ScriptContext2_Disable();
gTextFlags.autoScroll = FALSE;
- gUnknown_2036E28 = 0;
+ gGlobalFieldTintMode = QL_TINT_NONE;
DisableWildEncounters(FALSE);
gHelpSystemEnabled = TRUE;
DestroyTask(taskId);
@@ -1212,16 +1212,16 @@ static bool8 sub_81121D8(u8 taskId)
return FALSE;
}
-static void sub_811229C(void)
+static void QL_SlightlyDarkenSomePals(void)
{
- u16 *buffer = Alloc(0x400);
- CpuCopy16(gUnknown_203AE90, buffer, 0x400);
- sub_807B0C4(gUnknown_203AE90, gUnknown_203AE90, 0xd0);
- sub_807B0C4(gUnknown_203AE90 + 0x110, gUnknown_203AE90 + 0x110, 0x10);
- sub_807B0C4(gUnknown_203AE90 + 0x160, gUnknown_203AE90 + 0x160, 0x40);
- sub_807B0C4(gUnknown_203AE90 + 0x1b0, gUnknown_203AE90 + 0x1b0, 0x50);
- CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400);
- CpuCopy16(buffer, gUnknown_203AE90, 0x400);
+ u16 *buffer = Alloc(PLTT_SIZE);
+ CpuCopy16(sPalettesBackup, buffer, PLTT_SIZE);
+ SlightlyDarkenPalsInWeather(sPalettesBackup, sPalettesBackup, 13 * 16);
+ SlightlyDarkenPalsInWeather(sPalettesBackup + 17 * 16, sPalettesBackup + 17 * 16, 1 * 16);
+ SlightlyDarkenPalsInWeather(sPalettesBackup + 22 * 16, sPalettesBackup + 22 * 16, 4 * 16);
+ SlightlyDarkenPalsInWeather(sPalettesBackup + 27 * 16, sPalettesBackup + 27 * 16, 5 * 16);
+ CpuCopy16(sPalettesBackup, gPlttBufferUnfaded, PLTT_SIZE);
+ CpuCopy16(buffer, sPalettesBackup, PLTT_SIZE);
Free(buffer);
}
diff --git a/src/quest_log_events.c b/src/quest_log_events.c
index 72b8ddfd7..e7418649e 100644
--- a/src/quest_log_events.c
+++ b/src/quest_log_events.c
@@ -173,10 +173,10 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
if (eventId == QL_EVENT_DEPARTED && sEventShouldNotRecordSteps == 2)
{
- sub_811381C();
+ QL_EnableRecordingSteps();
return;
}
- sub_811381C();
+ QL_EnableRecordingSteps();
if (gQuestLogState == QL_STATE_PLAYBACK)
return;
@@ -348,7 +348,7 @@ static bool8 ShouldRegisterEvent_HandleBeatStoryTrainer(u16 eventId, const u16 *
return FALSE;
}
-void sub_811381C(void)
+void QL_EnableRecordingSteps(void)
{
sEventShouldNotRecordSteps = 0;
}
diff --git a/src/text.c b/src/text.c
index 7ccaad063..360b618bd 100644
--- a/src/text.c
+++ b/src/text.c
@@ -657,22 +657,22 @@ u16 RenderText(struct TextPrinter *textPrinter)
textPrinter->printerTemplate.currentChar++;
switch (currChar)
{
- case 1:
+ case EXT_CTRL_CODE_COLOR:
textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 2:
+ case EXT_CTRL_CODE_HIGHLIGHT:
textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 3:
+ case EXT_CTRL_CODE_SHADOW:
textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 4:
+ case EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW:
textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar;
@@ -681,29 +681,29 @@ u16 RenderText(struct TextPrinter *textPrinter)
textPrinter->printerTemplate.currentChar++;
GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 5:
+ case EXT_CTRL_CODE_PALETTE:
textPrinter->printerTemplate.currentChar++;
return 2;
- case 6:
+ case EXT_CTRL_CODE_FONT:
subStruct->glyphId = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
return 2;
- case EXT_CTRL_CODE_UNKNOWN_7:
+ case EXT_CTRL_CODE_RESET_FONT:
return 2;
- case 8:
+ case EXT_CTRL_CODE_PAUSE:
textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
textPrinter->state = 6;
return 2;
- case 9:
+ case EXT_CTRL_CODE_WAIT_BUTTON:
textPrinter->state = 1;
if (gTextFlags.autoScroll)
subStruct->autoScrollDelay = 0;
return 3;
- case 10:
+ case EXT_CTRL_CODE_WAIT_SE:
textPrinter->state = 5;
return 3;
- case 11:
+ case EXT_CTRL_CODE_PLAY_BGM:
currChar = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
currChar |= *textPrinter->printerTemplate.currentChar << 8;
@@ -711,32 +711,32 @@ u16 RenderText(struct TextPrinter *textPrinter)
if (!QL_IS_PLAYBACK_STATE)
PlayBGM(currChar);
return 2;
- case 16:
+ case EXT_CTRL_CODE_PLAY_SE:
currChar = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
currChar |= (*textPrinter->printerTemplate.currentChar << 8);
textPrinter->printerTemplate.currentChar++;
PlaySE(currChar);
return 2;
- case 12:
+ case EXT_CTRL_CODE_ESCAPE:
textPrinter->printerTemplate.currentChar++;
currChar = *textPrinter->printerTemplate.currentChar;
break;
- case 13:
+ case EXT_CTRL_CODE_SHIFT_RIGHT:
textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
return 2;
- case 14:
+ case EXT_CTRL_CODE_SHIFT_DOWN:
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
return 2;
- case 15:
+ case EXT_CTRL_CODE_FILL_WINDOW:
FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
return 2;
- case 23:
+ case EXT_CTRL_CODE_STOP_BGM:
m4aMPlayStop(&gMPlayInfo_BGM);
return 2;
- case 24:
+ case EXT_CTRL_CODE_RESUME_BGM:
m4aMPlayContinue(&gMPlayInfo_BGM);
return 2;
case EXT_CTRL_CODE_CLEAR:
@@ -749,7 +749,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
return 0;
}
return 2;
- case 18:
+ case EXT_CTRL_CODE_SKIP:
textPrinter->printerTemplate.currentX = *textPrinter->printerTemplate.currentChar + textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentChar++;
return 2;
@@ -924,61 +924,61 @@ s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
temp = strLocal[strPos++];
switch (temp)
{
- case 0xFE:
- case 0xFF:
- lineWidths[line] = width;
- width = 0;
- line++;
- break;
- case 0xFC:
- temp2 = strLocal[strPos++];
- switch (temp2)
- {
- case 0x4:
- ++strPos;
- case 0xB:
- case 0x10:
- ++strPos;
- case 0x1:
- case 0x2:
- case 0x3:
- case 0x5:
- case 0x6:
- case 0x8:
- case 0xC:
- case 0xD:
- case 0xE:
- case 0x11:
- case 0x12:
- case 0x13:
- case 0x14:
- ++strPos;
- break;
- case 0x7:
- case 0x9:
- case 0xA:
- case 0xF:
- case 0x15:
- case 0x16:
- default:
- break;
- }
- break;
- case 0xF7:
- case 0xFD:
+ case CHAR_NEWLINE:
+ case EOS:
+ lineWidths[line] = width;
+ width = 0;
+ line++;
+ break;
+ case EXT_CTRL_CODE_BEGIN:
+ temp2 = strLocal[strPos++];
+ switch (temp2)
+ {
+ case EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW:
++strPos;
- break;
- case 0xFA:
- case 0xFB:
- break;
- case 0xF8:
- case 0xF9:
+ case EXT_CTRL_CODE_PLAY_BGM:
+ case EXT_CTRL_CODE_PLAY_SE:
++strPos;
+ case EXT_CTRL_CODE_COLOR:
+ case EXT_CTRL_CODE_HIGHLIGHT:
+ case EXT_CTRL_CODE_SHADOW:
+ case EXT_CTRL_CODE_PALETTE:
+ case EXT_CTRL_CODE_FONT:
+ case EXT_CTRL_CODE_PAUSE:
+ case EXT_CTRL_CODE_ESCAPE:
+ case EXT_CTRL_CODE_SHIFT_RIGHT:
+ case EXT_CTRL_CODE_SHIFT_DOWN:
+ case EXT_CTRL_CODE_CLEAR:
+ case EXT_CTRL_CODE_SKIP:
+ case EXT_CTRL_CODE_CLEAR_TO:
+ case EXT_CTRL_CODE_MIN_LETTER_SPACING:
+ ++strPos;
+ break;
+ case EXT_CTRL_CODE_RESET_FONT:
+ case EXT_CTRL_CODE_WAIT_BUTTON:
+ case EXT_CTRL_CODE_WAIT_SE:
+ case EXT_CTRL_CODE_FILL_WINDOW:
+ case EXT_CTRL_CODE_JPN:
+ case EXT_CTRL_CODE_ENG:
default:
- ++width;
break;
+ }
+ break;
+ case CHAR_DYNAMIC_PLACEHOLDER:
+ case PLACEHOLDER_BEGIN:
+ ++strPos;
+ break;
+ case CHAR_PROMPT_SCROLL:
+ case CHAR_PROMPT_CLEAR:
+ break;
+ case CHAR_KEYPAD_ICON:
+ case CHAR_EXTRA_EMOJI:
+ ++strPos;
+ default:
+ ++width;
+ break;
}
- } while (temp != 0xFF);
+ } while (temp != EOS);
for (width = 0, strPos = 0; strPos < 8; ++strPos)
{
@@ -1033,109 +1033,36 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
lineWidth = 0;
bufferPointer = NULL;
- while (*str != 0xFF)
+ while (*str != EOS)
{
switch (*str)
{
- case 0xFE:
- if (lineWidth > width)
- width = lineWidth;
- lineWidth = 0;
- break;
- case 0xFD:
- switch (*++str)
- {
- case 0x2:
- bufferPointer = gStringVar1;
- break;
- case 0x3:
- bufferPointer = gStringVar2;
- break;
- case 0x4:
- bufferPointer = gStringVar3;
- break;
- default:
- return 0;
- }
- case 0xF7:
- if (bufferPointer == NULL)
- bufferPointer = DynamicPlaceholderTextUtil_GetPlaceholderPtr(*++str);
- while (*bufferPointer != 0xFF)
- {
- glyphWidth = func(*bufferPointer++, isJapanese);
- if (minGlyphWidth > 0)
- {
- if (glyphWidth < minGlyphWidth)
- glyphWidth = minGlyphWidth;
- }
- else if (isJapanese)
- {
- glyphWidth += localLetterSpacing;
- }
- lineWidth += glyphWidth;
- }
- bufferPointer = NULL;
- break;
- case 0xFC:
- switch (*++str)
- {
- case 0x4:
- ++str;
- case 0xB:
- case 0x10:
- ++str;
- case 0x1:
- case 0x2:
- case 0x3:
- case 0x5:
- case 0x8:
- case 0xC:
- case 0xD:
- case 0xE:
- ++str;
- break;
- case 0x6:
- func = GetFontWidthFunc(*++str);
- if (func == NULL)
- return 0;
- if (letterSpacing == -1)
- localLetterSpacing = GetFontAttribute(*str, 2);
- break;
- case 0x11:
- glyphWidth = *++str;
- lineWidth += glyphWidth;
- break;
- case 0x12:
- lineWidth = *++str;
- break;
- case 0x13:
- if (*++str > lineWidth)
- lineWidth = *str;
- break;
- case 0x14:
- minGlyphWidth = *++str;
- break;
- case 0x15:
- isJapanese = 1;
- break;
- case 0x16:
- isJapanese = 0;
- break;
- case 0x7:
- case 0x9:
- case 0xA:
- case 0xF:
- default:
- break;
- }
- break;
- case 0xF8:
- case 0xF9:
- if (*str == 0xF9)
- glyphWidth = func(*++str | 0x100, isJapanese);
- else
- glyphWidth = GetKeypadIconWidth(*++str);
-
+ case CHAR_NEWLINE:
+ if (lineWidth > width)
+ width = lineWidth;
+ lineWidth = 0;
+ break;
+ case PLACEHOLDER_BEGIN:
+ switch (*++str)
+ {
+ case PLACEHOLDER_ID_STRING_VAR_1:
+ bufferPointer = gStringVar1;
+ break;
+ case PLACEHOLDER_ID_STRING_VAR_2:
+ bufferPointer = gStringVar2;
+ break;
+ case PLACEHOLDER_ID_STRING_VAR_3:
+ bufferPointer = gStringVar3;
+ break;
+ default:
+ return 0;
+ }
+ case CHAR_DYNAMIC_PLACEHOLDER:
+ if (bufferPointer == NULL)
+ bufferPointer = DynamicPlaceholderTextUtil_GetPlaceholderPtr(*++str);
+ while (*bufferPointer != EOS)
+ {
+ glyphWidth = func(*bufferPointer++, isJapanese);
if (minGlyphWidth > 0)
{
if (glyphWidth < minGlyphWidth)
@@ -1146,27 +1073,100 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
glyphWidth += localLetterSpacing;
}
lineWidth += glyphWidth;
+ }
+ bufferPointer = NULL;
+ break;
+ case EXT_CTRL_CODE_BEGIN:
+ switch (*++str)
+ {
+ case EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW:
+ ++str;
+ case EXT_CTRL_CODE_PLAY_BGM:
+ case EXT_CTRL_CODE_PLAY_SE:
+ ++str;
+ case EXT_CTRL_CODE_COLOR:
+ case EXT_CTRL_CODE_HIGHLIGHT:
+ case EXT_CTRL_CODE_SHADOW:
+ case EXT_CTRL_CODE_PALETTE:
+ case EXT_CTRL_CODE_PAUSE:
+ case EXT_CTRL_CODE_ESCAPE:
+ case EXT_CTRL_CODE_SHIFT_RIGHT:
+ case EXT_CTRL_CODE_SHIFT_DOWN:
+ ++str;
+ break;
+ case EXT_CTRL_CODE_FONT:
+ func = GetFontWidthFunc(*++str);
+ if (func == NULL)
+ return 0;
+ if (letterSpacing == -1)
+ localLetterSpacing = GetFontAttribute(*str, 2);
+ break;
+ case EXT_CTRL_CODE_CLEAR:
+ glyphWidth = *++str;
+ lineWidth += glyphWidth;
+ break;
+ case EXT_CTRL_CODE_SKIP:
+ lineWidth = *++str;
break;
- case 0xFA:
- case 0xFB:
+ case EXT_CTRL_CODE_CLEAR_TO:
+ if (*++str > lineWidth)
+ lineWidth = *str;
+ break;
+ case EXT_CTRL_CODE_MIN_LETTER_SPACING:
+ minGlyphWidth = *++str;
+ break;
+ case EXT_CTRL_CODE_JPN:
+ isJapanese = 1;
+ break;
+ case EXT_CTRL_CODE_ENG:
+ isJapanese = 0;
break;
+ case EXT_CTRL_CODE_RESET_FONT:
+ case EXT_CTRL_CODE_WAIT_BUTTON:
+ case EXT_CTRL_CODE_WAIT_SE:
+ case EXT_CTRL_CODE_FILL_WINDOW:
default:
- glyphWidth = func(*str, isJapanese);
- if (minGlyphWidth > 0)
- {
- if (glyphWidth < minGlyphWidth)
- glyphWidth = minGlyphWidth;
- lineWidth += glyphWidth;
- }
- else
+ break;
+ }
+ break;
+ case CHAR_KEYPAD_ICON:
+ case CHAR_EXTRA_EMOJI:
+ if (*str == CHAR_EXTRA_EMOJI)
+ glyphWidth = func(*++str | 0x100, isJapanese);
+ else
+ glyphWidth = GetKeypadIconWidth(*++str);
+
+ if (minGlyphWidth > 0)
+ {
+ if (glyphWidth < minGlyphWidth)
+ glyphWidth = minGlyphWidth;
+ }
+ else if (isJapanese)
+ {
+ glyphWidth += localLetterSpacing;
+ }
+ lineWidth += glyphWidth;
+ break;
+ case CHAR_PROMPT_SCROLL:
+ case CHAR_PROMPT_CLEAR:
+ break;
+ default:
+ glyphWidth = func(*str, isJapanese);
+ if (minGlyphWidth > 0)
+ {
+ if (glyphWidth < minGlyphWidth)
+ glyphWidth = minGlyphWidth;
+ lineWidth += glyphWidth;
+ }
+ else
+ {
+ if (fontId != 6 && isJapanese)
{
- if (fontId != 6 && isJapanese)
- {
- glyphWidth += localLetterSpacing;
- }
- lineWidth += glyphWidth;
+ glyphWidth += localLetterSpacing;
}
- break;
+ lineWidth += glyphWidth;
+ }
+ break;
}
++str;
}
@@ -1202,75 +1202,75 @@ u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a
temp = strLocal[strPos++];
switch (temp)
{
- case 0xFC:
- temp2 = strLocal[strPos++];
- switch (temp2)
- {
- case 0x4:
- fgColor = strLocal[strPos++];
- bgColor = strLocal[strPos++];
- shadowColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x1:
- fgColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x2:
- bgColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x3:
- shadowColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x6:
- fontId = strLocal[strPos++];
- break;
- case 0xB:
- case 0x10:
- ++strPos;
- case 0x5:
- case 0x8:
- case 0xC:
- case 0xD:
- case 0xE:
- case 0x11:
- case 0x12:
- case 0x13:
- case 0x14:
- ++strPos;
- break;
- case 0x7:
- case 0x9:
- case 0xA:
- case 0xF:
- case 0x15:
- case 0x16:
- default:
- continue;
- }
+ case EXT_CTRL_CODE_BEGIN:
+ temp2 = strLocal[strPos++];
+ switch (temp2)
+ {
+ case EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW:
+ fgColor = strLocal[strPos++];
+ bgColor = strLocal[strPos++];
+ shadowColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case EXT_CTRL_CODE_COLOR:
+ fgColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case EXT_CTRL_CODE_HIGHLIGHT:
+ bgColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case EXT_CTRL_CODE_SHADOW:
+ shadowColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case EXT_CTRL_CODE_FONT:
+ fontId = strLocal[strPos++];
break;
- case 0xF7:
- case 0xF8:
- case 0xF9:
- case 0xFD:
+ case EXT_CTRL_CODE_PLAY_BGM:
+ case EXT_CTRL_CODE_PLAY_SE:
+ ++strPos;
+ case EXT_CTRL_CODE_PALETTE:
+ case EXT_CTRL_CODE_PAUSE:
+ case EXT_CTRL_CODE_ESCAPE:
+ case EXT_CTRL_CODE_SHIFT_RIGHT:
+ case EXT_CTRL_CODE_SHIFT_DOWN:
+ case EXT_CTRL_CODE_CLEAR:
+ case EXT_CTRL_CODE_SKIP:
+ case EXT_CTRL_CODE_CLEAR_TO:
+ case EXT_CTRL_CODE_MIN_LETTER_SPACING:
++strPos;
break;
- case 0xFA:
- case 0xFB:
- case 0xFE:
- case 0xFF:
- break;
+ case EXT_CTRL_CODE_RESET_FONT:
+ case EXT_CTRL_CODE_WAIT_BUTTON:
+ case EXT_CTRL_CODE_WAIT_SE:
+ case EXT_CTRL_CODE_FILL_WINDOW:
+ case EXT_CTRL_CODE_JPN:
+ case EXT_CTRL_CODE_ENG:
default:
- DecompressGlyphFont9(temp);
- CpuCopy32(gGlyphInfo, pixels, 0x20);
- CpuCopy32(gGlyphInfo + 0x40, pixels + 0x20, 0x20);
- pixels += 0x40;
- break;
+ continue;
+ }
+ break;
+ case CHAR_DYNAMIC_PLACEHOLDER:
+ case CHAR_KEYPAD_ICON:
+ case CHAR_EXTRA_EMOJI:
+ case PLACEHOLDER_BEGIN:
+ ++strPos;
+ break;
+ case CHAR_PROMPT_SCROLL:
+ case CHAR_PROMPT_CLEAR:
+ case CHAR_NEWLINE:
+ case EOS:
+ break;
+ default:
+ DecompressGlyphFont9(temp);
+ CpuCopy32(gGlyphInfo, pixels, 0x20);
+ CpuCopy32(gGlyphInfo + 0x40, pixels + 0x20, 0x20);
+ pixels += 0x40;
+ break;
}
}
- while (temp != 0xFF);
+ while (temp != EOS);
RestoreTextColors(&colorBackup[0], &colorBackup[1], &colorBackup[2]);
return 1;
@@ -1317,7 +1317,7 @@ u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8
return spriteId;
}
-void sub_8006398(u8 spriteId)
+void DestroyTextCursorSprite(u8 spriteId)
{
DestroySprite(&gSprites[spriteId]);
FreeSpriteTilesByTag(0x8000);