u8 *StringExpandPlaceholders(u8 *dest, const u8 *src) { for (;;) { u8 c = *src++; u8 placeholderId; const u8 *expandedString; u8 length; switch (c) { case PLACEHOLDER_BEGIN: placeholderId = *src++; expandedString = GetExpandedPlaceholder(placeholderId); dest = StringExpandPlaceholders(dest, expandedString); break; case EXT_CTRL_CODE_BEGIN: *dest++ = c; length = GetExtCtrlCodeLength(*src); memcpy(dest, src, length); dest += length; src += length; break; case EOS: *dest = EOS; return dest; case 0xFA: case 0xFB: case 0xFE: default: *dest++ = c; } } }
static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) { Menu_EraseWindowRect(0, 0, 0x1D, 0x13); StringCopy(gStringVar1, gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos].playerName); SanitizeNameString(gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_WhatWillYouDoMail); DisplayItemMessageOnField(taskId, gStringVar4, Mailbox_PrintMailOptions, 0); }
u8 *GetTrainerLoseText(void) { const u8 *str; if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) str = GetSecretBaseTrainerLoseText(); else str = sTrainerDefeatSpeech; StringExpandPlaceholders(gStringVar4, SanitizeString(str)); return gStringVar4; }
bool8 ScrCmd_vloadptr(struct ScriptContext *ctx) { u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); StringExpandPlaceholders(gStringVar4, ptr); return FALSE; }