From 6e6352569fd051ec1cedace97057b8929823af3f Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Sat, 7 Dec 2024 15:12:09 -0600 Subject: [PATCH] Narrower font tweaks and font fitting fixes (#5782) --- data/scripts/debug.inc | 29 ++++-- graphics/fonts/latin_narrower.png | Bin 4764 -> 4617 bytes graphics/fonts/latin_short_narrower.png | Bin 4409 -> 4399 bytes graphics/fonts/latin_small_narrower.png | Bin 4433 -> 4349 bytes src/debug.c | 130 +++++++++++++----------- src/fonts.c | 40 ++++---- src/item_menu.c | 4 +- test/text.c | 123 +++++----------------- 8 files changed, 137 insertions(+), 189 deletions(-) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 9da3f529fc..0be780609d 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -449,7 +449,7 @@ Debug_EventScript_EWRAMCounters_Text:: .string "Fishing Chain: {STR_VAR_2}.$" Debug_EventScript_FontTest_Text_1:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Angel Adept Blind Bodice Clique\n" .string "Coast Dunce Docile Enact Eosin\l" .string "Furlong Focal Gnome Gondola Human\l" @@ -463,7 +463,7 @@ Debug_EventScript_FontTest_Text_1:: .string "Zloty Zodiac.$" Debug_EventScript_FontTest_Text_2:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Angel angel adept for the nuance loads\n" .string "of the arena cocoa and quaalude. Blind\l" .string "blind bodice for the submit oboe of the\l" @@ -474,7 +474,7 @@ Debug_EventScript_FontTest_Text_2:: .string "loud statehood and huddle.$" Debug_EventScript_FontTest_Text_3:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Enact enact eosin for the quench coed\n" .string "of the pique canoe and bleep. Furlong\l" .string "furlong focal for the genuflect\l" @@ -486,7 +486,7 @@ Debug_EventScript_FontTest_Text_3:: .string "bathhouse.$" Debug_EventScript_FontTest_Text_4:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Inlet inlet iodine for the quince\n" .string "champion of the ennui scampi and shiite.\l" .string "Justin justin jocose for the djibouti\l" @@ -498,7 +498,7 @@ Debug_EventScript_FontTest_Text_4:: .string "shallot.$" Debug_EventScript_FontTest_Text_5:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Milliner milliner modal for the alumna\n" .string "solomon of the album custom and summon.\l" .string "Number number nodule for the unmade\l" @@ -510,7 +510,7 @@ Debug_EventScript_FontTest_Text_5:: .string "bishop and supplies.$" Debug_EventScript_FontTest_Text_6:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Quanta quanta qophs for the inquest\n" .string "sheqel of the cinq coq and suqqu. Rhone\l" .string "rhone roman for the burnt porous of the\l" @@ -521,7 +521,7 @@ Debug_EventScript_FontTest_Text_6:: .string "of the peasant ingot and ottoman.$" Debug_EventScript_FontTest_Text_7:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Uncle uncle udder for the dunes cloud\n" .string "of the hindu thou and continuum. Vulcan\l" .string "vulcan vocal for the alluvial ovoid of\l" @@ -533,12 +533,24 @@ Debug_EventScript_FontTest_Text_7:: .string "exxon.$" Debug_EventScript_FontTest_Text_8:: - .string "{FONT_SHORT_NARROWER}" @ Edit this to test your font + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font .string "Yunnan yunnan young for the dynamo\n" .string "coyote of the obloquy employ and\l" .string "sayyid. Zloty zloty zodiac for the gizmo\l" .string "ozone of the franz laissez and buzzing.$" + +Debug_EventScript_FontTest_Text_9:: @ Special thanks to Nintendo for this nice pangram to test other glyphs + .string "{FONT_SMALL_NARROWER}" @ Edit this to test your font + .string "42 × 138 = 5796.\n" + .string "Mr Jock, TV quiz PhD: bags 20% fewer\l" + .string "lynx at a café; voilà, they're “worth”\l" + .string "♂1/♀1 = ¥1. That's 10 + 9 - 8 = 11\l" + .string "Nintendo GBA can connect to a Nintendo\l" + .string "GameCube console! He claimed-though I don't\l" + .string "believe him-to have done so in an eyes-shut\l" + .string "state…?$" + Debug_PrintFontTest:: msgbox Debug_EventScript_FontTest_Text_1, MSGBOX_DEFAULT msgbox Debug_EventScript_FontTest_Text_2, MSGBOX_DEFAULT @@ -548,6 +560,7 @@ Debug_PrintFontTest:: msgbox Debug_EventScript_FontTest_Text_6, MSGBOX_DEFAULT msgbox Debug_EventScript_FontTest_Text_7, MSGBOX_DEFAULT msgbox Debug_EventScript_FontTest_Text_8, MSGBOX_DEFAULT + msgbox Debug_EventScript_FontTest_Text_9, MSGBOX_DEFAULT releaseall end diff --git a/graphics/fonts/latin_narrower.png b/graphics/fonts/latin_narrower.png index 2b92e411c3ebec97196a6302e89ead3af7f9cf17..19a6a98fb664f1084cb901ff4cb3fd550b9234dd 100644 GIT binary patch delta 4197 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 delta 4345 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 diff --git a/graphics/fonts/latin_short_narrower.png b/graphics/fonts/latin_short_narrower.png index 830a90389f8f86eaf22db5fdda00960583fea13e..5c4f4c1d4d87a4dcbd5b58a6da7b03a920ad78bf 100644 GIT binary patch delta 3843 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 FV1ia9M`&97m+!2M3q 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 literal 4433 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, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectMap; } @@ -2033,7 +2033,7 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].tMapGroup, gTasks[taskId].tInput)->regionMapSectionId, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -2045,7 +2045,7 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectWarp; } else if (JOY_NEW(B_BUTTON)) @@ -2076,7 +2076,7 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -2236,7 +2236,7 @@ static void DebugAction_Util_Weather(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar1, sWeatherNames[0], CHAR_SPACE, 30); StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Util_Weather_SelectId; gTasks[taskId].tSubWindowId = windowId; @@ -2282,7 +2282,7 @@ static void DebugAction_Util_Weather_SelectId(u8 taskId) StringCopyPadded(gStringVar1, sDebugText_WeatherNotDefined, CHAR_SPACE, 30); StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -2445,7 +2445,7 @@ static void DebugAction_FlagsVars_Flags(u8 taskId) StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[0]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Flag); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_FlagsVars_FlagsSelect; gTasks[taskId].tSubWindowId = windowId; @@ -2506,7 +2506,7 @@ static void DebugAction_FlagsVars_FlagsSelect(u8 taskId) StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Flag); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } } @@ -2534,7 +2534,7 @@ static void DebugAction_FlagsVars_Vars(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[0]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Variable); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_FlagsVars_Select; gTasks[taskId].tSubWindowId = windowId; @@ -2586,7 +2586,7 @@ static void DebugAction_FlagsVars_Select(u8 taskId) //Combine str's to full window string StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Variable); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -2606,7 +2606,7 @@ static void DebugAction_FlagsVars_Select(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_VariableValueSet); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].data[6] = gTasks[taskId].data[5]; //New value selector gTasks[taskId].func = DebugAction_FlagsVars_SetValue; @@ -2674,7 +2674,7 @@ static void DebugAction_FlagsVars_SetValue(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_VariableValueSet); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } } @@ -2960,10 +2960,11 @@ static void DebugAction_Give_Item(u8 taskId) // Display initial item StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - CopyItemName(1, gStringVar1); + u8* end = CopyItemName(1, gStringVar1); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(windowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectId; gTasks[taskId].tSubWindowId = windowId; @@ -3005,11 +3006,12 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - CopyItemName(gTasks[taskId].tInput, gStringVar1); + u8* end = CopyItemName(gTasks[taskId].tInput, gStringVar1); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon @@ -3031,7 +3033,7 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectQuantity; } @@ -3082,7 +3084,7 @@ static void DebugAction_Give_Item_SelectQuantity(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -3158,11 +3160,12 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) // Display initial Pokémon StringCopy(gStringVar2, gText_DigitIndicator[0]); - ConvertIntToDecimalStringN(gStringVar3, sDebugMonData->species, STR_CONV_MODE_LEADING_ZEROS, 3); - StringCopy(gStringVar1, GetSpeciesName(sDebugMonData->species)); + ConvertIntToDecimalStringN(gStringVar3, sDebugMonData->species, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + u8 *end = StringCopy(gStringVar1, GetSpeciesName(sDebugMonData->species)); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(windowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); //Set task data gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; @@ -3198,11 +3201,12 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) // Display initial Pokémon StringCopy(gStringVar2, gText_DigitIndicator[0]); - ConvertIntToDecimalStringN(gStringVar3, sDebugMonData->species, STR_CONV_MODE_LEADING_ZEROS, 4); - StringCopy(gStringVar1, GetSpeciesName(sDebugMonData->species)); + ConvertIntToDecimalStringN(gStringVar3, sDebugMonData->species, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + u8 *end = StringCopy(gStringVar1, GetSpeciesName(sDebugMonData->species)); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(windowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; gTasks[taskId].tSubWindowId = windowId; @@ -3247,11 +3251,12 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - StringCopy(gStringVar1, GetSpeciesName(gTasks[taskId].tInput)); //CopyItemName(gTasks[taskId].tInput, gStringVar1); + u8 *end = StringCopy(gStringVar1, GetSpeciesName(gTasks[taskId].tInput)); //CopyItemName(gTasks[taskId].tInput, gStringVar1); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 4); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].tSpriteId]); FreeMonIconPalettes(); @@ -3270,7 +3275,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectLevel; } @@ -3317,7 +3322,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -3343,7 +3348,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectShiny; } @@ -3371,7 +3376,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -3385,7 +3390,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gNaturesInfo[0].name); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectNature; } @@ -3421,7 +3426,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gNaturesInfo[gTasks[taskId].tInput].name); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -3435,9 +3440,10 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); abilityId = GetAbilityBySpecies(sDebugMonData->species, 0); - StringCopy(gStringVar1, gAbilitiesInfo[abilityId].name); + u8 *end = StringCopy(gStringVar1, gAbilitiesInfo[abilityId].name); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; } @@ -3480,9 +3486,10 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopy(gStringVar1, gAbilitiesInfo[abilityId].name); + u8 *end = StringCopy(gStringVar1, gAbilitiesInfo[abilityId].name); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -3495,7 +3502,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_IV_HP); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; } @@ -3560,7 +3567,7 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_IV_SpDefense); break; } - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } //If A or B button @@ -3619,7 +3626,7 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_IV_SpDefense); break; } - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; } @@ -3633,7 +3640,7 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_EV_HP); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectEVs; } } @@ -3710,7 +3717,7 @@ static void DebugAction_Give_Pokemon_SelectEVs(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_EV_SpDefense); break; } - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } //If A or B button @@ -3769,7 +3776,7 @@ static void DebugAction_Give_Pokemon_SelectEVs(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_EV_SpDefense); break; } - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectEVs; } @@ -3793,18 +3800,19 @@ static void DebugAction_Give_Pokemon_SelectEVs(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_EV_HP); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectEVs; } else { StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - StringCopy(gStringVar1, GetMoveName(gTasks[taskId].tInput)); + u8 *end = StringCopy(gStringVar1, GetMoveName(gTasks[taskId].tInput)); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_Move; } @@ -3848,7 +3856,8 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - StringCopy(gStringVar1, GetMoveName(gTasks[taskId].tInput)); + u8 *end = StringCopy(gStringVar1, GetMoveName(gTasks[taskId].tInput)); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); switch (gTasks[taskId].tIterator) @@ -3866,7 +3875,7 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -3900,7 +3909,8 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) gTasks[taskId].tDigit = 0; StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - StringCopy(gStringVar1, GetMoveName(gTasks[taskId].tInput)); + u8 *end = StringCopy(gStringVar1, GetMoveName(gTasks[taskId].tInput)); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); switch (gTasks[taskId].tIterator) @@ -3918,7 +3928,7 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_Move; } @@ -4271,7 +4281,7 @@ static void DebugAction_Sound_SE(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringCopyPadded(gStringVar1, sSENames[0], CHAR_SPACE, 35); StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SFX_ID); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); StopMapMusic(); //Stop map music to better hear sounds @@ -4313,7 +4323,7 @@ static void DebugAction_Sound_SE_SelectId(u8 taskId) StringCopyPadded(gStringVar1, sSENames[gTasks[taskId].tInput-1], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SFX_ID); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) @@ -4353,7 +4363,7 @@ static void DebugAction_Sound_MUS(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, START_MUS, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringCopyPadded(gStringVar1, sBGMNames[0], CHAR_SPACE, 35); StringExpandPlaceholders(gStringVar4, sDebugText_Sound_Music_ID); - AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); StopMapMusic(); //Stop map music to better hear new music @@ -4395,7 +4405,7 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) StringCopyPadded(gStringVar1, sBGMNames[gTasks[taskId].tInput-START_MUS], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, sDebugText_Sound_Music_ID); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); } if (JOY_NEW(A_BUTTON)) diff --git a/src/fonts.c b/src/fonts.c index fba0dfb7a6..853f6fbde2 100644 --- a/src/fonts.c +++ b/src/fonts.c @@ -185,19 +185,19 @@ ALIGNED(4) const u8 gFontNarrowerLatinGlyphWidths[] = { 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 8, 4, 4, 4, 5, 5, 4, 4, 3, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 6, 4, 4, 4, 5, 4, 5, 8, 6, 6, 3, - 3, 3, 3, 3, 8, 8, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 8, 8, 2, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 5, 5, 4, 8, 8, 8, 7, 8, 8, 4, 4, 6, 4, 4, 3, 3, + 5, 4, 2, 8, 8, 8, 7, 8, 8, 4, 4, 6, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 5, 3, 7, 7, 7, 7, 0, 0, 3, 4, 5, 6, 7, 4, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 3, 5, 3, - 5, 5, 5, 3, 3, 5, 5, 6, 3, 6, 6, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, - 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, + 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, + 4, 4, 4, 2, 2, 4, 4, 6, 2, 5, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, - 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 8, 3, 3, 3, 3, + 2, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 8, 3, 3, 3, 3, 10, 10, 10, 10, 8, 8, 10, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -221,19 +221,19 @@ ALIGNED(4) const u8 gFontSmallNarrowerLatinGlyphWidths[] = { 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 4, 4, 5, 4, 4, 4, 3, 4, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4, 6, 4, 4, 4, 5, 4, 4, 7, 5, 6, 3, - 3, 3, 3, 3, 8, 0, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 8, 0, 2, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 5, 4, 3, 7, 7, 7, 8, 8, 8, 8, 4, 5, 4, 4, 3, 3, + 5, 4, 2, 7, 7, 7, 8, 8, 8, 8, 4, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 5, 3, 8, 8, 8, 8, 0, 0, 3, 4, 5, 6, 7, 4, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 3, 4, 4, - 5, 5, 5, 3, 3, 5, 5, 5, 4, 5, 5, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, + 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, + 4, 4, 4, 2, 2, 4, 4, 8, 2, 8, 5, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 3, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, - 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 8, 3, 3, 3, 3, + 2, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 8, 3, 3, 3, 3, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -293,19 +293,19 @@ ALIGNED(4) const u8 gFontShortNarrowerLatinGlyphWidths[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 8, 4, 4, 4, 5, 5, 4, 4, 3, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 6, 4, 4, 4, 5, 4, 5, 8, 6, 6, 3, - 3, 3, 3, 3, 8, 8, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 10, 8, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, - 5, 5, 4, 8, 8, 8, 7, 8, 8, 4, 4, 6, 4, 4, 3, 3, + 6, 6, 6, 8, 8, 8, 8, 8, 8, 4, 6, 8, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 5, 3, 7, 7, 7, 7, 0, 0, 3, 4, 5, 6, 7, 4, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 3, 5, 3, - 5, 5, 5, 3, 3, 5, 5, 6, 3, 6, 6, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, - 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, + 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 5, 4, 5, + 6, 6, 6, 3, 3, 6, 6, 8, 3, 9, 6, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, - 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 10, 10, 10, 10, 8, 8, 10, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, diff --git a/src/item_menu.c b/src/item_menu.c index d885f0a8ec..eae1c17eab 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -910,7 +910,7 @@ static void GetItemName(u8 *dest, u16 itemId) { case TMHM_POCKET: end = StringCopy(gStringVar2, GetMoveName(ItemIdToBattleMoveId(itemId))); - PrependFontIdToFit(gStringVar2, end, FONT_NARROW, 73); + PrependFontIdToFit(gStringVar2, end, FONT_NARROW, 61); if (itemId >= ITEM_HM01) { // Get HM number @@ -927,7 +927,7 @@ static void GetItemName(u8 *dest, u16 itemId) case BERRIES_POCKET: ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2); end = CopyItemName(itemId, gStringVar2); - PrependFontIdToFit(gStringVar2, end, FONT_NARROW, 73); + PrependFontIdToFit(gStringVar2, end, FONT_NARROW, 61); StringExpandPlaceholders(dest, gText_NumberItem_TMBerry); break; default: diff --git a/test/text.c b/test/text.c index 17d9ab0ee9..ed343d1039 100644 --- a/test/text.c +++ b/test/text.c @@ -44,7 +44,7 @@ TEST("Move names fit on Battle Screen") TEST("Move names fit on Contest Screen") { u32 i; - const u32 fontId = FONT_NARROWER, widthPx = 61; + const u32 fontId = FONT_NARROWER, widthPx = 59; u32 move = MOVE_NONE; for (i = 1; i < MOVES_COUNT; i++) { @@ -53,7 +53,9 @@ TEST("Move names fit on Contest Screen") // All moves explicitly listed here are too big to fit. switch (move) { + case MOVE_STOMPING_TANTRUM: case MOVE_NATURES_MADNESS: + case MOVE_DOUBLE_IRON_BASH: EXPECT_GT(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); break; default: @@ -65,14 +67,11 @@ TEST("Move names fit on Contest Screen") TEST("Move names fit on TMs & HMs Bag Screen") { u32 i; - const u32 fontId = FONT_NARROWER, widthPx = 63; + const u32 fontId = FONT_NARROWER, widthPx = 61; u32 move = MOVE_NONE; - for (i = 1; i < ITEMS_COUNT; i++) + for (i = 1; i < MOVES_COUNT; i++) { - if (gItemsInfo[i].pocket == POCKET_TM_HM) - { - PARAMETRIZE_LABEL("%S", gMovesInfo[gItemsInfo[i].secondaryId].name) { move = gItemsInfo[i].secondaryId; } - } + PARAMETRIZE_LABEL("%S", gMovesInfo[i].name) { move = i; } } EXPECT_LE(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); } @@ -105,7 +104,7 @@ TEST("Item names fit on Bag Screen (list)") { u32 i; const u32 fontId = FONT_NARROWER; - const u32 tmHmBerryWidthPx = 71, restWidthPx = 88; + const u32 tmHmBerryWidthPx = 61, restWidthPx = 88; u32 item = ITEM_NONE; for (i = 1; i < ITEMS_COUNT; i++) { @@ -122,7 +121,7 @@ TEST("Item plural names fit on Bag Screen (left box)") { u32 i; // -6 for the question mark in FONT_NORMAL. - const u32 fontId = FONT_NARROWER, widthPx = 102 - 6; + const u32 fontId = FONT_NARROWER, widthPx = 101 - 6; u32 item = ITEM_NONE; u8 pluralName[ITEM_NAME_PLURAL_LENGTH + 1]; for (i = 1; i < ITEMS_COUNT; i++) @@ -133,6 +132,18 @@ TEST("Item plural names fit on Bag Screen (left box)") EXPECT_LE(GetStringWidth(fontId, pluralName, 0), widthPx); } +TEST("Item names fit on PC Storage (list)") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 73; + u32 item = ITEM_NONE; + for (i = 1; i < ITEMS_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } + } + EXPECT_LE(GetStringWidth(fontId, gItemsInfo[item].name, 0), widthPx); +} + TEST("Item plural names fit on PC storage (left box)") { u32 i; @@ -151,108 +162,22 @@ TEST("Item plural names fit on PC storage (left box)") TEST("Item names fit on Pokemon Storage System") { u32 i; - const u32 fontId = FONT_SMALL_NARROWER, widthPx = 50; + const u32 fontId = FONT_SMALL_NARROWER, widthPx = 66; u32 item = ITEM_NONE; for (i = 1; i < ITEMS_COUNT; i++) { if (gItemsInfo[i].importance) continue; PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } } - // All items explicitly listed here are too big to fit. The ones - // with a hold effect are listed at the bottom in case you want to - // focus on making them fit (they are the most likely to appear on - // the storage system UI, along with anything that could be held - // in the wild). + // All items explicitly listed here are too big to fit. switch (item) { - case ITEM_ENERGY_POWDER: - case ITEM_PEWTER_CRUNCHIES: - case ITEM_RAGE_CANDY_BAR: - case ITEM_LUMIOSE_GALETTE: - case ITEM_HEALTH_FEATHER: - case ITEM_MUSCLE_FEATHER: - case ITEM_RESIST_FEATHER: - case ITEM_GENIUS_FEATHER: - case ITEM_CLEVER_FEATHER: - case ITEM_ABILITY_CAPSULE: - case ITEM_DYNAMAX_CANDY: - case ITEM_MAX_MUSHROOMS: - case ITEM_GOLD_BOTTLE_CAP: - case ITEM_PRETTY_FEATHER: - case ITEM_STRANGE_SOUVENIR: - case ITEM_FOSSILIZED_BIRD: - case ITEM_FOSSILIZED_FISH: - case ITEM_FOSSILIZED_DRAKE: - case ITEM_FOSSILIZED_DINO: - case ITEM_SURPRISE_MULCH: - case ITEM_YELLOW_APRICORN: - case ITEM_GREEN_APRICORN: - case ITEM_WHITE_APRICORN: - case ITEM_BLACK_APRICORN: - case ITEM_THUNDER_STONE: - case ITEM_GALARICA_WREATH: - case ITEM_STRAWBERRY_SWEET: - case ITEM_AUSPICIOUS_ARMOR: - case ITEM_BIG_BAMBOO_SHOOT: - case ITEM_GIMMIGHOUL_COIN: - case ITEM_LEADERS_CREST: - case ITEM_MALICIOUS_ARMOR: - case ITEM_TINY_BAMBOO_SHOOT: - case ITEM_BUG_TERA_SHARD: - case ITEM_DARK_TERA_SHARD: - case ITEM_DRAGON_TERA_SHARD: case ITEM_ELECTRIC_TERA_SHARD: - case ITEM_FAIRY_TERA_SHARD: case ITEM_FIGHTING_TERA_SHARD: - case ITEM_FIRE_TERA_SHARD: - case ITEM_FLYING_TERA_SHARD: - case ITEM_GHOST_TERA_SHARD: - case ITEM_GRASS_TERA_SHARD: - case ITEM_GROUND_TERA_SHARD: - case ITEM_ICE_TERA_SHARD: - case ITEM_NORMAL_TERA_SHARD: - case ITEM_POISON_TERA_SHARD: case ITEM_PSYCHIC_TERA_SHARD: - case ITEM_ROCK_TERA_SHARD: - case ITEM_STEEL_TERA_SHARD: - case ITEM_WATER_TERA_SHARD: - case ITEM_BLACK_AUGURITE: case ITEM_UNREMARKABLE_TEACUP: case ITEM_MASTERPIECE_TEACUP: - case ITEM_FRESH_START_MOCHI: - case ITEM_STELLAR_TERA_SHARD: - case ITEM_JUBILIFE_MUFFIN: - case ITEM_SUPERB_REMEDY: - case ITEM_AUX_POWERGUARD: - case ITEM_CHOICE_DUMPLING: case ITEM_TWICE_SPICED_RADISH: - // Items with hold effects: - case ITEM_ELECTRIC_MEMORY: - case ITEM_FIGHTING_MEMORY: - case ITEM_GROUND_MEMORY: - case ITEM_PSYCHIC_MEMORY: - case ITEM_DRAGON_MEMORY: - case ITEM_CHARIZARDITE_X: - case ITEM_CHARIZARDITE_Y: - case ITEM_ULTRANECROZIUM_Z: - case ITEM_DEEP_SEA_SCALE: - case ITEM_DEEP_SEA_TOOTH: - case ITEM_NEVER_MELT_ICE: - case ITEM_WEAKNESS_POLICY: - case ITEM_SAFETY_GOGGLES: - case ITEM_ADRENALINE_ORB: - case ITEM_TERRAIN_EXTENDER: - case ITEM_PROTECTIVE_PADS: - case ITEM_HEAVY_DUTY_BOOTS: - case ITEM_UTILITY_UMBRELLA: - case ITEM_MARANGA_BERRY: - case ITEM_PUNCHING_GLOVE: - case ITEM_BOOSTER_ENERGY: - case ITEM_ADAMANT_CRYSTAL: - case ITEM_LUSTROUS_GLOBE: - case ITEM_CORNERSTONE_MASK: - case ITEM_WELLSPRING_MASK: - case ITEM_HEARTHFLAME_MASK: EXPECT_GT(GetStringWidth(fontId, gItemsInfo[item].name, 0), widthPx); break; default: @@ -398,7 +323,7 @@ TEST("Species names fit on Pokemon Storage System") } } EXPECT_LE(GetStringWidth(FONT_NARROWER, gSpeciesInfo[species].speciesName, 0), 66); - EXPECT_LE(GetStringWidth(FONT_SHORT_NARROW, gSpeciesInfo[species].speciesName, 0), 60); + EXPECT_LE(GetStringWidth(FONT_SHORT_NARROWER, gSpeciesInfo[species].speciesName, 0), 60); } TEST("Species names fit on Contest Screen") @@ -434,7 +359,7 @@ TEST("Species names fit on Contest Screen - Rankings") TEST("Species names fit on Battle Dome Screen") { u32 i; - const u32 fontId = FONT_SHORT_NARROW, widthPx = 60; + const u32 fontId = FONT_SHORT_NARROWER, widthPx = 60; u32 species = SPECIES_NONE; for (i = 1; i < NUM_SPECIES; i++) {