summaryrefslogtreecommitdiff
path: root/src/debug/start_menu_debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug/start_menu_debug.c')
-rw-r--r--src/debug/start_menu_debug.c495
1 files changed, 211 insertions, 284 deletions
diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c
index 01f04b8d9..940f21ac7 100644
--- a/src/debug/start_menu_debug.c
+++ b/src/debug/start_menu_debug.c
@@ -174,8 +174,8 @@ const u8 Str_839B7D8[] = _("Transport");
const u8 Str_839B7E2[] = _("See portraits");
const u8 Str_839B7F0[] = _("Time records");
const u8 Str_839B7FD[] = _("Set time");
-const u8 Str_839B806[] = _("National オカDex");
-const u8 Str_839B815[] = _("Hoenn オカDex");
+const u8 Str_839B806[] = _("National {POKE}Dex");
+const u8 Str_839B815[] = _("Hoenn {POKE}Dex");
const u8 Str_839B821[] = _("Create {PKMN}");
const u8 Str_839B82B[] = _("See {PKMN} graphics");
const u8 Str_839B83B[] = _("See trainers");
@@ -272,49 +272,50 @@ const u8 gUnknown_Debug_839BB64[] =
const u8 gUnknown_Debug_0839BBA4[] = _("Debugging Version");
const u8 gUnknown_Debug_0839BBB6[] = _("{VERSION} Version");
const u8 gUnknown_Debug_0839BBC1[] = _("Normal RTC compatible");
-const u8 Str_839BBD7[] = _("か の じっけん");
-const u8 Str_839BBE0[] = _("じっけん2");
-const u8 Str_839BBE6[] = _("BGじっけん");
-const u8 Str_839BBED[] = _("Battle");
-const u8 Str_839BBF4[] = _("つうしん じっけん");
-const u8 Str_839BBFE[] = _("LINK Test2");
-const u8 Str_839BC09[] = _("フィールド はじめる");
-const u8 Str_839BC14[] = _("フィールド つづき");
-const u8 Str_839BC1E[] = _("Sound test");
-const u8 Str_839BC29[] = _("{POKEBLOCK} test");
-const u8 Str_839BC34[] = _("Crash backup data");
-const u8 Str_839BC46[] = _("e-Card test");
-const u8 Str_839BC52[] = _("こうかんデモ   ");
-const u8 Str_839BC5C[] = _("Time in game");
-const u8 Str_839BC69[] = _("フェスタ モード");
-const u8 Str_839BC72[] = _("Mimic e-Card");
-const u8 Str_839BC7F[] = _("RTC reset");
-const u8 Str_839BC89[] = _("Converter");
-
-const struct MenuAction gUnknown_Debug_839BC94[] =
-{
- { Str_839BBD7, DebugMenu_8076CBC },
- { Str_839BBE0, DebugMenu_8076CC0 },
- { Str_839BBE6, DebugMenu_8076CD4 },
- { Str_839BBED, DebugMenu_8076C6C },
- { Str_839BC29, DebugMenu_8076CD8 },
- { Str_839BBFE, DebugMenu_8076D28 },
- { Str_839BC1E, DebugMenu_8076D3C },
- { Str_839BC09, DebugMenu_8076C80 },
- { Str_839BC14, DebugMenu_8076C90 },
- { Str_839BC34, DebugMenu_8076D50 },
- { Str_839BC46, DebugMenu_8076CEC },
- { Str_839BC52, DebugMenu_8076D14 },
- { Str_839BC72, DebugMenu_8076D00 },
- { Str_839BC5C, DebugMenu_8076D5C },
- { Str_839BC7F, DebugMenu_8076E18 },
- { Str_839BC89, DebugMenu_8076EDC },
+
+const u8 gTestMenu_TestMenuHeaderText[] = DTR("か の じっけん", "TEST MENU"); // 科の実験 (Test section)
+const u8 gTestMenu_Test2Text[] = DTR("じっけん2", "Test2");
+const u8 gTestMenu_BGTestText[] = DTR("BGじっけん", "BG Test");
+const u8 gTestMenu_BattleText[] = _("Battle");
+const u8 gTestMenu_UnusedLinkTestText[] = DTR("つうしん じっけん", "LINK Test"); // unused
+const u8 gTestMenu_LinkTest2Text[] = _("LINK Test2");
+const u8 gTestMenu_FieldStartText[] = DTR("フィールド はじめる", "New game"); // "Field start"
+const u8 gTestMenu_FieldContinueText[] = DTR("フィールド つづき", "Continue game"); // "Field continue"
+const u8 gTestMenu_SoundTestText[] = _("Sound test");
+const u8 gTestMenu_PokeblockTestText[] = _("{POKEBLOCK} test");
+const u8 gTestMenu_CrashBackupDataText[] = _("Crash backup data");
+const u8 gTestMenu_eCardTestText[] = _("e-Card test");
+const u8 gTestMenu_TradeDemoText[] = DTR("こうかんデモ   ", "Trade demo");
+const u8 gTestMenu_TimeInGameText[] = _("Time in game");
+const u8 gTestMenu_UnusedFestaModeText[] = DTR("フェスタ モード", "Festa mode"); // unused
+const u8 gTestMenu_MimicECardText[] = _("Mimic e-Card");
+const u8 gTestMenu_RTCResetText[] = _("RTC reset");
+const u8 gTestMenu_ConverterText[] = _("Converter");
+
+const struct MenuAction gDebug_TestMenuItems[] =
+{
+ { gTestMenu_TestMenuHeaderText, DebugMenu_8076CBC }, // Disabled - nop header
+ { gTestMenu_Test2Text, DebugMenu_8076CC0 }, // Disabled - freezes game (likely went to tomohara menu
+ { gTestMenu_BGTestText, DebugMenu_8076CD4 }, // Disabled - nop
+ { gTestMenu_BattleText, DebugMenu_8076C6C },
+ { gTestMenu_PokeblockTestText, DebugMenu_8076CD8 },
+ { gTestMenu_LinkTest2Text, DebugMenu_8076D28 },
+ { gTestMenu_SoundTestText, DebugMenu_8076D3C },
+ { gTestMenu_FieldStartText, DebugMenu_8076C80 }, // Disabled - starts new game w/o intro with preset name
+ { gTestMenu_FieldContinueText, DebugMenu_8076C90 }, // Disabled - continues game
+ { gTestMenu_CrashBackupDataText, DebugMenu_8076D50 },
+ { gTestMenu_eCardTestText, DebugMenu_8076CEC },
+ { gTestMenu_TradeDemoText, DebugMenu_8076D14 }, // Disabled - starts a trade then crashes
+ { gTestMenu_MimicECardText, DebugMenu_8076D00 },
+ { gTestMenu_TimeInGameText, DebugMenu_8076D5C },
+ { gTestMenu_RTCResetText, DebugMenu_8076E18 },
+ { gTestMenu_ConverterText, DebugMenu_8076EDC },
};
// NOTE: When decompiling this file, I found out that having an extraneous extern
// in a C file can affect the generated asm. If this extern is commented out,
// debug_sub_8076BB4 will access the array differently and no longer match.
-//extern const struct MenuAction gUnknown_Debug_839BC94[];
+//extern const struct MenuAction gDebug_TestMenuItems[];
const u8 gMenuOrders_839BD14[][10] =
{
@@ -324,22 +325,34 @@ const u8 gMenuOrders_839BD14[][10] =
const u8 Str_839BD26[] = {2, 0, 0, 0}; // doesn't appear to be referenced
-const u8 Str_839BD2C[] = _("RTCを リセット します\n" // Reset RTC
- "Aで じっこう   Bでキャンセル");
-
-const u8 Str_839BD4C[] = _("RTCを リセット した!");
+const u8 Str_839BD2C[] = DTR("RTCを リセット します\n" // Reset RTC
+ "Aで じっこう   Bでキャンセル",
+ "Reset RTC?\n"
+ "A: START B: CANCEL");
-const u8 Str_839BD5A[] = _("セーブデータを コンバートします\n"
- "Aで けってい  Bで キャンセル");
+const u8 Str_839BD4C[] = DTR("RTCを リセット した!", "RTC reset successful!");
-const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました!");
+const u8 Str_839BD5A[] = DTR("セーブデータを コンバートします\n"
+ "Aで けってい  Bで キャンセル",
+ "Convert save data?\n"
+ "A: CONFIRM B: CANCEL");
+const u8 Str_839BD7D[] = DTR("へんかんが しゅうりょう しました!",
+ "Conversion finished!");
extern const u8 Str_839BD2C[];
extern const u8 Str_839BD4C[];
static u8 gUnknown_030006B8;
-UNUSED static const s32 * gUnknown_030006BC;
+
+struct DebugBuildDateInfo {
+ s32 max;
+ s32 digitMultiplier;
+ s32 numDigits;
+ s32 offset;
+};
+
+static const struct DebugBuildDateInfo *gDebugBuildDate;
static u8 gUnknown_030006C0;
static u8 gUnknown_030006C1;
static const u8 * gUnknown_030006C4;
@@ -354,7 +367,7 @@ void debug_sub_8076AC8(u8 a)
;
Menu_EraseWindowRect(16, 0, 29, 19);
Menu_DrawStdWindowFrame(16, 0, 29, r4 * 2 + 1);
- Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gUnknown_Debug_839BC94, gUnknown_030006C4);
+ Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gDebug_TestMenuItems, gUnknown_030006C4);
InitMenu(0, 17, 1, r4, 0, 12);
}
@@ -387,7 +400,7 @@ void debug_sub_8076BB4(u8 taskId)
switch (input)
{
default:
- gUnknown_Debug_839BC94[gUnknown_030006C4[cursorPos]].func();
+ gDebug_TestMenuItems[gUnknown_030006C4[cursorPos]].func();
break;
case -2:
if (gMain.newKeys & 0x20)
@@ -593,27 +606,28 @@ u8 DebugMenu_8076EDC(void)
return 0;
}
-const u8 Str_839BD90[] = _("ジュンイチ");
-const u8 Str_839BD96[] = _("ダイゴロウ");
-const u8 Str_839BD9C[] = _("テツジ");
-const u8 Str_839BDA0[] = _("バレンシア");
-const u8 Str_839BDA6[] = _("ハルコマチ");
-const u8 Str_839BDAC[] = _("RAYMOND");
-const u8 Str_839BDB4[] = _("TIFFANY");
-const u8 Str_839BDBC[] = _("くまxちえ");
+// A list of preset player names
+const u8 gTestMenuStr_Junichi[] = DTR("ジュンイチ", "JUNICHI");
+const u8 gTestMenuStr_Daigoro[] = DTR("ダイゴロウ", "DAIGORO");
+const u8 gTestMenuStr_Tetsuji[] = DTR("テツジ", "TETSUJI");
+const u8 gTestMenuStr_Valencia[] = DTR("バレンシア", "VALENCY"); // Valencia is too long
+const u8 gTestMenuStr_Harukomachi[] = DTR("ハルコマチ", "MAY"); // May town?
+const u8 gTestMenuStr_Raymond[] = _("RAYMOND");
+const u8 gTestMenuStr_Tiffany[] = _("TIFFANY");
+const u8 gTestMenuStr_KumaXChie[] = DTR("くまxちえ", "KUMA"); // Chie Kuma?
const struct {
const u8 * text;
u32 flags;
-} gUnknown_Debug_839BDC4[] = {
- {Str_839BD90, 0x0},
- {Str_839BD96, 0x0},
- {Str_839BDA0, 0x1},
- {Str_839BDA6, 0x1},
- {Str_839BDAC, 0x80},
- {Str_839BDB4, 0x81},
- {Str_839BD9C, 0x0},
- {Str_839BDBC, 0x1}
+} gTestMenu_FieldStartNames[] = {
+ {gTestMenuStr_Junichi, 0x0},
+ {gTestMenuStr_Daigoro, 0x0},
+ {gTestMenuStr_Valencia, 0x1},
+ {gTestMenuStr_Harukomachi, 0x1},
+ {gTestMenuStr_Raymond, 0x80},
+ {gTestMenuStr_Tiffany, 0x81},
+ {gTestMenuStr_Tetsuji, 0x0},
+ {gTestMenuStr_KumaXChie, 0x1}
};
void DebugMenu_8076EF4(void)
@@ -621,12 +635,12 @@ void DebugMenu_8076EF4(void)
u8 i;
Menu_DrawStdWindowFrame(0, 0, 11, 17);
- Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4);
- for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++)
+ Menu_PrintItems(2, 1, ARRAY_COUNT(gTestMenu_FieldStartNames), gTestMenu_FieldStartNames);
+ for (i = 0; i < ARRAY_COUNT(gTestMenu_FieldStartNames); i++)
{
- sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1);
+ sub_8071F60((gTestMenu_FieldStartNames[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1);
}
- InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9);
+ InitMenu(0, 1, 1, ARRAY_COUNT(gTestMenu_FieldStartNames), 0, 9);
}
void DebugMenu_8076F60(u8 taskId)
@@ -645,9 +659,9 @@ void DebugMenu_8076F60(u8 taskId)
break;
default:
{
- u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags;
+ u8 flags = gTestMenu_FieldStartNames[cursorPos].flags;
gSaveBlock2.playerGender = flags & 1;
- StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text);
+ StringCopy(gSaveBlock2.playerName, gTestMenu_FieldStartNames[cursorPos].text);
if ((flags & 0x80) == 0)
debug_sub_8057508(FALSE);
else
@@ -869,7 +883,7 @@ const u8 Str_839BE0F[] = _("HP");
const u8 Str_839BE12[] = _("PAR");
const u8 Str_839BE16[] = _("SLP");
const u8 Str_839BE1A[] = _("PSN");
-const u8 Str_839BE1E[] = _("ウマイ");
+const u8 Str_839BE1E[] = KANA("ウマイ");
u8 DebugMenu_8077434(void)
{
@@ -1161,10 +1175,12 @@ u8 DebugMenu_8077954(void)
return TRUE;
}
-const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n"
- "さいせんじょうたいトレーナー:{STR_VAR_2}");
-const u8 Str_839BE8D[] = _("いる");
-const u8 Str_839BE90[] = _("いない");
+const u8 Str_839BE6B[] = DTR("さいせんかのうトレーナー:{STR_VAR_1}\n"
+ "さいせんじょうたいトレーナー:{STR_VAR_2}",
+ "Rematchable TRAINERS: {STR_VAR_1}\n"
+ "TRAINERS in rematch state: {STR_VAR_2}");
+const u8 Str_839BE8D[] = DTR("いる", "ON");
+const u8 Str_839BE90[] = DTR("いない", "OFF");
bool8 DebugMenu_8077974(void)
{
@@ -1251,11 +1267,15 @@ bool8 DebugMenu_8077AE8(void)
return TRUE;
}
-const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ");
-const u8 Str_839BF14[] = _("{STR_VAR_1}\n"
- "のこり {STR_VAR_2}ほ");
-const u8 Str_839BF1F[] = _("めのまえには\n"
- "キューブが ありません!");
+const u8 Str_839BF0C[] = DTR("のこり {STR_VAR_1}ほ", "Remaining steps: {STR_VAR_1}");
+const u8 Str_839BF14[] = DTR("{STR_VAR_1}\n"
+ "のこり {STR_VAR_2}ほ",
+ "{STR_VAR_1}\n"
+ "Remaining steps: {STR_VAR_2}");
+const u8 Str_839BF1F[] = DTR("めのまえには\n"
+ "キューブが ありません!",
+ "There is no {POKEBLOCK}\n"
+ "in front of you!");
bool8 DebugMenu_8077B00(void)
{
@@ -1268,11 +1288,11 @@ bool8 DebugMenu_8077B00(void)
return FALSE;
}
-const u8 Str_839BF33[] = _("ほすうをのこり1にする");
-const u8 Str_839BF3F[] = _("ボールをのこり1にする");
-const u8 Str_839BF4B[] = _("キューブおきば");
-const u8 Str_839BF53[] = _("ボールをのこり30に");
-const u8 Str_839BF5E[] = _("ほすうをのこり500に");
+const u8 Str_839BF33[] = DTR("ほすうをのこり1にする", "One step remaining");
+const u8 Str_839BF3F[] = DTR("ボールをのこり1にする", "One BALL remaining");
+const u8 Str_839BF4B[] = DTR("キューブおきば", "{POKEBLOCK} FEEDER");
+const u8 Str_839BF53[] = DTR("ボールをのこり30に", "30 BALLS remaining");
+const u8 Str_839BF5E[] = DTR("ほすうをのこり500に", "500 steps remaining");
const struct MenuAction gUnknown_Debug_839BF6C[] = {
{Str_839BF4B, DebugMenu_8077B00},
@@ -1366,146 +1386,46 @@ u8 DebugMenu_8077C14(void)
return FALSE;
}
-const u8 Str_839BFDC[] = _(" じかん ふん びょう");
-const s32 gUnknown_Debug_839BFE8[] = {
- 99, 10, 2, 23,
- 99, 10, 2, 26
+const u8 Str_839BFDC[] = DTR(" じかん ふん びょう", " HOURS MINUTES SECONDS");
+
+static const struct DebugBuildDateInfo gDebugBuildDateInfo[] = {
+ { 99, 10, 2, 23 },
+ { 99, 10, 2, 26 }
};
-#ifdef NONMATCHING
-void DebugMenu_8077C3C(const char * a0, u8 * a1)
+// Parses the version code in a highly inefficient and unsafe way.
+void DebugMenu_ConvertBuildDate(const char *buildDateStr, u8 *out)
{
- // Register allocation swap
- // Intended: r7 = a1, r6 = gUnknown_030006BC[2]
- // Observed: r6 = a1, r7 = gUnknown_030006BC[2]
-
int i;
-
- gUnknown_030006BC = gUnknown_Debug_839BFE8;
- *a1++ = CHAR_SPACE;
- *a1++ = CHAR_SPACE;
-
- for (i = 0; i < 2; i++, gUnknown_030006BC += 4)
- {
- u32 r5 = 0;
- int r2;
- int r4;
- for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10)
- r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2;
- if (gUnknown_030006BC[0] < r5)
- r5 = gUnknown_030006BC[0];
- a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]);
- }
- a1[0] = a0[29] - 'A' + CHAR_A;
- if (a1[0] > 0xf6)
- a1[0] = 0xf6;
- a1[1] = EOS;
-}
-#else
-NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1)
-{
- asm("\tpush\t{r4, r5, r6, r7, lr}\n"
- "\tmov\tr7, sl\n"
- "\tmov\tr6, r9\n"
- "\tmov\tr5, r8\n"
- "\tpush\t{r5, r6, r7}\n"
- "\tadd\tsp, sp, #0xfffffffc\n"
- "\tmov\tsl, r0\n"
- "\tadd\tr7, r1, #0\n"
- "\tldr\tr0, ._271 @ gUnknown_030006BC\n"
- "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n"
- "\tstr\tr1, [r0]\n"
- "\tmov\tr1, #0x0\n"
- "\tstrb\tr1, [r7]\n"
- "\tadd\tr7, r7, #0x1\n"
- "\tstrb\tr1, [r7]\n"
- "\tadd\tr7, r7, #0x1\n"
- "\tmov\tr3, #0x0\n"
- "\tmov\tr8, r0\n"
- "._269:\n"
- "\tmov\tr5, #0x0\n"
- "\tldr\tr1, ._271 @ gUnknown_030006BC\n"
- "\tldr\tr0, [r1]\n"
- "\tldr\tr2, [r0, #0x4]\n"
- "\tmov\tr4, #0x0\n"
- "\tldr\tr1, [r0, #0x8]\n"
- "\tadd\tr3, r3, #0x1\n"
- "\tmov\tr9, r3\n"
- "\tcmp\tr5, r1\n"
- "\tbge\t._266\t@cond_branch\n"
- "\tadd\tr3, r0, #0\n"
- "\tadd\tr6, r1, #0\n"
- "._267:\n"
- "\tldr\tr0, [r3, #0xc]\n"
- "\tadd\tr0, r0, r4\n"
- "\tadd r0, r0, sl\n"
- "\tldrb\tr0, [r0]\n"
- "\tsub\tr0, r0, #0x30\n"
- "\tmul\tr0, r0, r2\n"
- "\tadd\tr5, r5, r0\n"
- "\tadd\tr4, r4, #0x1\n"
- "\tadd\tr0, r2, #0\n"
- "\tmov\tr1, #0xa\n"
- "\tstr\tr3, [sp]\n"
- "\tbl\t__divsi3\n"
- "\tadd\tr2, r0, #0\n"
- "\tldr\tr3, [sp]\n"
- "\tcmp\tr4, r6\n"
- "\tblt\t._267\t@cond_branch\n"
- "._266:\n"
- "\tmov\tr0, r8\n"
- "\tldr\tr1, [r0]\n"
- "\tldr\tr0, [r1]\n"
- "\tcmp\tr0, r5\n"
- "\tbcs\t._268\t@cond_branch\n"
- "\tadd\tr5, r0, #0\n"
- "._268:\n"
- "\tldrb\tr3, [r1, #0x8]\n"
- "\tadd\tr0, r7, #0\n"
- "\tadd\tr1, r5, #0\n"
- "\tmov\tr2, #0x2\n"
- "\tbl\tConvertIntToDecimalStringN\n"
- "\tadd\tr7, r0, #0\n"
- "\tmov\tr3, r9\n"
- "\tmov\tr1, r8\n"
- "\tldr\tr0, [r1]\n"
- "\tadd\tr0, r0, #0x10\n"
- "\tstr\tr0, [r1]\n"
- "\tcmp\tr3, #0x1\n"
- "\tble\t._269\t@cond_branch\n"
- "\tmov\tr1, sl\n"
- "\tldrb\tr0, [r1, #0x1d]\n"
- "\tadd\tr0, r0, #0x7a\n"
- "\tstrb\tr0, [r7]\n"
- "\tlsl\tr0, r0, #0x18\n"
- "\tlsr\tr0, r0, #0x18\n"
- "\tcmp\tr0, #0xf6\n"
- "\tbls\t._270\t@cond_branch\n"
- "\tmov\tr0, #0xf6\n"
- "\tstrb\tr0, [r7]\n"
- "._270:\n"
- "\tmov\tr0, #0xff\n"
- "\tstrb\tr0, [r7, #0x1]\n"
- "\tadd\tsp, sp, #0x4\n"
- "\tpop\t{r3, r4, r5}\n"
- "\tmov\tr8, r3\n"
- "\tmov\tr9, r4\n"
- "\tmov\tsl, r5\n"
- "\tpop\t{r4, r5, r6, r7}\n"
- "\tpop\t{r0}\n"
- "\tbx\tr0\n"
- "._272:\n"
- "\t.align\t2, 0\n"
- "._271:\n"
- "\t.word\tgUnknown_030006BC \n"
- "\t.word\tgUnknown_Debug_839BFE8\n");
+ // Prevents register allocation swap
+ // Intended: r7 = out, r6 = gDebugBuildDate->numDigits
+ // Observed: r6 = out, r7 = gDebugBuildDate->numDigits
+ ++out; --out;
+
+ gDebugBuildDate = gDebugBuildDateInfo;
+ *out++ = CHAR_SPACE;
+ *out++ = CHAR_SPACE;
+ for (i = 0; i < 2; i++, gDebugBuildDate++)
+ {
+ int j;
+ int mul;
+ u32 date = 0;
+ for (mul = gDebugBuildDate->digitMultiplier, j = 0; j < gDebugBuildDate->numDigits; j++, mul /= 10)
+ date += (buildDateStr[gDebugBuildDate->offset + j] - '0') * mul;
+ if (gDebugBuildDate->max < date)
+ date = gDebugBuildDate->max;
+ out = ConvertIntToDecimalStringN(out, date, STR_CONV_MODE_LEADING_ZEROS, gDebugBuildDate->numDigits);
+ }
+ out[0] = buildDateStr[29] - 'A' + CHAR_A;
+ if (out[0] > 0xf6) // prevent special characters
+ out[0] = 0xf6;
+ out[1] = EOS;
}
-#endif
void debug_sub_8077CF4(u8 x, u8 y)
{
- DebugMenu_8077C3C(BuildDateTime, gStringVar4);
+ DebugMenu_ConvertBuildDate(BuildDateTime, gStringVar4);
Menu_PrintText(gStringVar4, x, y);
}
@@ -1636,7 +1556,7 @@ void DebugMenu_8077F40(u8 taskId)
task->func = DebugMenu_8077F7C;
}
-const u8 Str_839C014[] = _("How many?");
+const u8 Str_839C014[] = _("How many?");
void DebugMenu_8077F7C(u8 taskId)
{
@@ -1685,13 +1605,19 @@ void DebugMenu_807806C(u8 taskId)
DebugMenu_8077048();
}
-const u8 Str_839C01E[] = _("にがおえ ばんごう\n"
- "ポケモンナンバー\n"
- "ポケモンめい\n"
- "ブリーダーめい\n"
- "しゅるい\n"
- "こせいらんすう");
-const u8 Str_839C04D[] = _("データなし");
+const u8 Str_839C01E[] = DTR("にがおえ ばんごう\n"
+ "ポケモンナンバー\n"
+ "ポケモンめい\n"
+ "ブリーダーめい\n"
+ "しゅるい\n"
+ "こせいらんすう",
+ "PORTRAIT No.\n"
+ "POKéMON No.\n"
+ "POKéMON Name\n"
+ "BREEDER Name\n" // TRN ?
+ "TYPE\n"
+ "Personality");
+const u8 Str_839C04D[] = DTR("データなし", "No data");
void DebugMenu_807808C(u32 a0)
{
@@ -1932,60 +1858,61 @@ u8 DebugMenu_OpenMysteryEvent(void)
const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n"
"{STR_VAR_3}");
-const u8 Str_839C085[] = _("みしよう データ");
+const u8 Str_839C085[] = DTR("みしよう データ", "Unused data");
const u8 Str_839C08E[] = _("Confirmation");
const u8 Str_839C09B[] = _("Max-1 set");
const u8 Str_839C0A5[] = _("Zero clear");
-const u8 Str_839C0B0[] = _("レポート");
-const u8 Str_839C0B5[] = _("クリア じかん");
-const u8 Str_839C0BD[] = _("りゅうこう さくせい");
-const u8 Str_839C0C8[] = _("きのみを うえたかいすう");
-const u8 Str_839C0D5[] = _("じてんしゃこうかん");
-const u8 Str_839C0DF[] = _("ほすう");
-const u8 Str_839C0E3[] = _("インタビュー");
-const u8 Str_839C0EA[] = _("バトル");
-const u8 Str_839C0EE[] = _("やせいバトル");
-const u8 Str_839C0F5[] = _("トレーナーバトル");
-const u8 Str_839C0FE[] = _("でんどういり");
-const u8 Str_839C105[] = _("ポケモンほかく");
-const u8 Str_839C10D[] = _("つった かいすう");
-const u8 Str_839C116[] = _("タマゴかえった");
-const u8 Str_839C11E[] = _("しんかした");
-const u8 Str_839C124[] = _("ポケセン かいふく");
-const u8 Str_839C12E[] = _("じたく かいふく");
-const u8 Str_839C137[] = _("サファリ りよう");
-const u8 Str_839C140[] = _("ひでん:いあいぎり");
-const u8 Str_839C14A[] = _("ひでん:いわくだき");
-const u8 Str_839C154[] = _("きち ひっこし");
-const u8 Str_839C15C[] = _("つうしんこうかん");
-const u8 Str_839C165[] = _("つうしんたいせん");
-const u8 Str_839C16E[] = _("つうしん かち");
-const u8 Str_839C176[] = _("つうしん まけ");
-const u8 Str_839C17E[] = _("つうしん ひきわけ");
-const u8 Str_839C188[] = _("わざ:はねる");
-const u8 Str_839C18F[] = _("わざ:わるあがき");
-const u8 Str_839C198[] = _("スロットおおあたりかいすう");
-const u8 Str_839C1A6[] = _("ルーレット れんしょう");
-const u8 Str_839C1B2[] = _("バトルタワー");
-const u8 Str_839C1B9[] = _("バトルタワーかち");
-const u8 Str_839C1C2[] = _("バトルタワーれんしょう");
-const u8 Str_839C1CE[] = _("ポロックさくせい");
-const u8 Str_839C1D7[] = _("つうしんでポロックつくった");
-const u8 Str_839C1E5[] = _("つうしんコンテストかち");
-const u8 Str_839C1F1[] = _("CPUコンテストさんか");
-const u8 Str_839C1FD[] = _("CPUコンテストかち");
-const u8 Str_839C208[] = _("かいもの");
-const u8 Str_839C20D[] = _("ダウジングマシン");
-const u8 Str_839C216[] = _("あめふり");
-const u8 Str_839C21B[] = _("ずかんをみた");
-const u8 Str_839C222[] = _("リボン もらった");
-const u8 Str_839C22B[] = _("だんさ とびおり");
-const u8 Str_839C234[] = _("TVを みた");
-const u8 Str_839C23B[] = _("とけいを みた");
-const u8 Str_839C243[] = _("くじが あたった");
-const u8 Str_839C24C[] = _("ポケモンあずけた");
-const u8 Str_839C255[] = _("ロープウェイりよう");
-const u8 Str_839C25F[] = _("おんせん はいった");
+const u8 Str_839C0B0[] = DTR("レポート", "SAVES");
+const u8 Str_839C0B5[] = DTR("クリア じかん", "Clear time");
+const u8 Str_839C0BD[] = DTR("りゅうこう さくせい", "TRENDS created");
+const u8 Str_839C0C8[] = DTR("きのみを うえたかいすう", "BERRIES planted");
+const u8 Str_839C0D5[] = DTR("じてんしゃこうかん", "BIKE swaps");
+const u8 Str_839C0DF[] = DTR("ほすう", "Steps");
+const u8 Str_839C0E3[] = DTR("インタビュー", "INTERVIEWS");
+const u8 Str_839C0EA[] = DTR("バトル", "BATTLES");
+const u8 Str_839C0EE[] = DTR("やせいバトル", "Wild BATTLES");
+const u8 Str_839C0F5[] = DTR("トレーナーバトル", "TRAINER BATTLES");
+const u8 Str_839C0FE[] = DTR("でんどういり", "HALL of FAME times");
+const u8 Str_839C105[] = DTR("ポケモンほかく", "POKéMON caught");
+const u8 Str_839C10D[] = DTR("つった かいすう", "Times fished");
+const u8 Str_839C116[] = DTR("タマゴかえった", "EGGS hatched");
+const u8 Str_839C11E[] = DTR("しんかした", "Evolutions");
+const u8 Str_839C124[] = DTR("ポケセン かいふく", "{PKMN} Center heals");
+const u8 Str_839C12E[] = DTR("じたく かいふく", "Home heals");
+const u8 Str_839C137[] = DTR("サファリ りよう", "SAFARI times");
+const u8 Str_839C140[] = DTR("ひでん:いあいぎり", "HM: CUT");
+const u8 Str_839C14A[] = DTR("ひでん:いわくだき", "HM: ROCK SMASH");
+const u8 Str_839C154[] = DTR("きち ひっこし", "BASE relocations");
+const u8 Str_839C15C[] = DTR("つうしんこうかん", "LINK TRADES");
+const u8 Str_839C165[] = DTR("つうしんたいせん", "LINK BATTLES");
+const u8 Str_839C16E[] = DTR("つうしん かち", "LINK WINS");
+const u8 Str_839C176[] = DTR("つうしん まけ", "LINK LOSSES");
+const u8 Str_839C17E[] = DTR("つうしん ひきわけ", "LINK TIES");
+// Idiot counter?
+const u8 Str_839C188[] = DTR("わざ:はねる", "Move: SPLASH");
+const u8 Str_839C18F[] = DTR("わざ:わるあがき", "Move: STRUGGLE");
+const u8 Str_839C198[] = DTR("スロットおおあたりかいすう", "SLOTS jackpots");
+const u8 Str_839C1A6[] = DTR("ルーレット れんしょう", "ROULETTE streak");
+const u8 Str_839C1B2[] = DTR("バトルタワー", "BATTLE TOWER");
+const u8 Str_839C1B9[] = DTR("バトルタワーかち", "BATTLE TOWER wins");
+const u8 Str_839C1C2[] = DTR("バトルタワーれんしょう", "BATTLE TOWER streak");
+const u8 Str_839C1CE[] = DTR("ポロックさくせい", "{POKEBLOCK}s created");
+const u8 Str_839C1D7[] = DTR("つうしんでポロックつくった", "LINK {POKEBLOCK}s made");
+const u8 Str_839C1E5[] = DTR("つうしんコンテストかち", "LINK CONTEST wins");
+const u8 Str_839C1F1[] = DTR("CPUコンテストさんか", "CPU CONTEST entries");
+const u8 Str_839C1FD[] = DTR("CPUコンテストかち", "CPU CONTEST wins");
+const u8 Str_839C208[] = DTR("かいもの", "Shopping");
+const u8 Str_839C20D[] = DTR("ダウジングマシン", "ITEMFINDER");
+const u8 Str_839C216[] = DTR("あめふり", "Rained");
+const u8 Str_839C21B[] = DTR("ずかんをみた", "POKéDEX reads");
+const u8 Str_839C222[] = DTR("リボン もらった", "RIBBONS awarded");
+const u8 Str_839C22B[] = DTR("だんさ とびおり", "Ledge hops");
+const u8 Str_839C234[] = DTR("TVを みた", "Watched TV");
+const u8 Str_839C23B[] = DTR("とけいを みた", "Checked CLOCK");
+const u8 Str_839C243[] = DTR("くじが あたった", "LOTTERY wins");
+const u8 Str_839C24C[] = DTR("ポケモンあずけた", "POKéMON DAYCARE uses");
+const u8 Str_839C255[] = DTR("ロープウェイりよう", "CABLE CAR uses");
+const u8 Str_839C25F[] = DTR("おんせん はいった", "HOT SPRING uses");
const struct {
u32 maxVal;
@@ -2248,7 +2175,7 @@ u8 DebugMenu_OpenBerryInfo(void)
return TRUE;
}
-const u8 Str_839C42E[] = _("レベル  ステージ");
+const u8 Str_839C42E[] = DTR("レベル  ステージ", "TOWER level stage");
void DebugMenu_8078950(void)
{
@@ -2337,7 +2264,7 @@ u8 DebugMenu_BattleTowerStages(void)
return TRUE;
}
-const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}");
+const u8 Str_839C438[] = DTR("ポロック グループ{STR_VAR_1}", "{POKEBLOCK} GROUP{STR_VAR_1}");
void DebugMenu_8078B70(u16 value)
{
@@ -2473,10 +2400,10 @@ bool8 DebugMenu_8078CA8(void)
return FALSE;
}
-const u8 Str_839C5CC[] =_("かきこみ せいこう");
-const u8 Str_839C5D6[] =_("よみこみせいこう");
-const u8 Str_839C5DF[] =_("かきこみ しっぱい");
-const u8 Str_839C5E9[] =_("よみこみ しっぱい");
+const u8 Str_839C5CC[] = DTR("かきこみ せいこう", "Write successful");
+const u8 Str_839C5D6[] = DTR("よみこみせいこう", "Read successful");
+const u8 Str_839C5DF[] = DTR("かきこみ しっぱい", "Writing failed");
+const u8 Str_839C5E9[] = DTR("よみこみ しっぱい", "Reading failed");
bool8 DebugMenu_8078CE4(void)
{