From c10e41f02ed5357941817fca3db4ac79ffce6f98 Mon Sep 17 00:00:00 2001 From: JaxonKEKW <39291630+JaxonKEKW@users.noreply.github.com> Date: Wed, 27 May 2026 23:52:31 -0600 Subject: [PATCH] Scale Memory Card at Widescreen, fix Name Select screen (#1828) * Improve Widescreen/Ultrawide Collection/File Select Menus Re-scale (unstretch) and center elements of the Collection Screen/File Select details screen for Widescreen/Ultrawide * Fix oversight Fix default behavior * Support ultrawide on Collection menu, target PC support ultrawide instead of reverting to default behavior wrap logic in target PC ifdefs (both changed functions themselves are still behind them as a whole as well) and use old function behavior otherwise * Fix icon overshift at ultrawide Icon shifted too much at ultrawide Move redundant duplicate line * Finished Collection/File Select screen changes Added settings for the scaling mode (GameCube, Wii, Dusklight) Depending on the setting in the Interface menu (Dusklight preset automatically sets scaling to Dusklight option, Classic preset sets to Gamecube, Wii/all old behavior available as well) Collection and File Select screens get scaled differently Fixed backdrop behind slots on File Select with Dusklight setting (the Magic Armor background slot seeming too low on all aspects is vanilla behavior) Fixed Fused Shadow/Mirror size and position with Dusklight setting All logic is behind TARGET_PC gates (not the logic specifically, but the functions themselves have always been) Changes dSelect_cursor_c::refreshAspectScale to take a parameter so the scale of the selection cursor can be reset to default (only ever called in TARGET_PC functions or wrapped in gates) * Ultrawide oversight * Update d_file_select.cpp copy paste oopsie * Update d_file_select.cpp im tired, never tested msvc * Menu Scaling Mode changed definitions to be more open ended header additions now in TARGET_PC ifdefs fixed/added scaling for Save/Option buttons in Collection menu with Dusklight setting, stopped scaling just the text * Update settings.cpp * Scale Memory Card screen, fix GC name screen Scales the Memory Card screen (text only) on Wii and Dusklight scaling settings, GC already keeps default scaling Fixes oversight on Name selection screen on GC settings (all textboxes/letters were getting scaled down) * deleted line oopsie * cleaning * fix stupid Moved cachedPanes to each 'wide' function because they're static and only being used there anyway --- include/d/d_file_select.h | 56 +++++++++--------- include/d/d_menu_collect.h | 63 ++++++++++---------- include/d/d_name.h | 28 +++++++++ src/d/d_file_select.cpp | 33 ++++------- src/d/d_menu_collect.cpp | 3 +- src/d/d_name.cpp | 117 ++++++++++++++++++++++++------------- 6 files changed, 175 insertions(+), 125 deletions(-) diff --git a/include/d/d_file_select.h b/include/d/d_file_select.h index d219a5a11e..d478126b38 100644 --- a/include/d/d_file_select.h +++ b/include/d/d_file_select.h @@ -11,42 +11,40 @@ class dFile_info_c; class J2DPicture; + #if TARGET_PC -static bool cachedPanes = false; - -struct PaneCache { - u64 tag; - f32 origTransX; - f32 origTransY; - bool cached; -}; - static PaneCache mSelDtPanes[] = { - {MULTI_CHAR('tate_n0'), 0.0f, false}, - {MULTI_CHAR('tate_n1'), 0.0f, false}, - {MULTI_CHAR('ken_n0'), 0.0f, false}, - {MULTI_CHAR('ken_n1'), 0.0f, false}, - {MULTI_CHAR('fuku_n0'), 0.0f, false}, - {MULTI_CHAR('fuku_n1'), 0.0f, false}, - {MULTI_CHAR('fuku_n2'), 0.0f, false}, - {MULTI_CHAR('gray_n'), 0.0f, false}, - {MULTI_CHAR('b_base'), 0.0f, false}, - {MULTI_CHAR('b_base1'), 0.0f, false}, + {MULTI_CHAR('tate_n0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('tate_n1'), 0.0f, 0.0f, false}, + {MULTI_CHAR('ken_n0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('ken_n1'), 0.0f, 0.0f, false}, + {MULTI_CHAR('fuku_n0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('fuku_n1'), 0.0f, 0.0f, false}, + {MULTI_CHAR('fuku_n2'), 0.0f, 0.0f, false}, + {MULTI_CHAR('gray_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('b_base'), 0.0f, 0.0f, false}, + {MULTI_CHAR('b_base1'), 0.0f, 0.0f, false}, }; static PaneCache fileSelPanes[] = { - {MULTI_CHAR('w_uzu00'), 0.0f, false}, - {MULTI_CHAR('w_uzu01'), 0.0f, false}, - {MULTI_CHAR('w_uzu02'), 0.0f, false}, - {MULTI_CHAR('w_uzu03'), 0.0f, false}, - {MULTI_CHAR('w_uzu04'), 0.0f, false}, - {MULTI_CHAR('w_uzu05'), 0.0f, false}, - {MULTI_CHAR('w_uzu06'), 0.0f, false}, - {MULTI_CHAR('w_uzu07'), 0.0f, false}, - {MULTI_CHAR('w_uzu08'), 0.0f, false}, - {MULTI_CHAR('w_uzu09'), 0.0f, false}, + {MULTI_CHAR('w_uzu00'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu01'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu02'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu03'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu04'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu05'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu06'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu07'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu08'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_uzu09'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_er_msg'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_er_msE'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_er_msR'), 0.0f, 0.0f, false}, + {MULTI_CHAR('er_for0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('er_for1'), 0.0f, 0.0f, false}, }; #endif + class dDlst_FileSel_c : public dDlst_base_c { public: void draw(); diff --git a/include/d/d_menu_collect.h b/include/d/d_menu_collect.h index d259027a65..28a095896e 100644 --- a/include/d/d_menu_collect.h +++ b/include/d/d_menu_collect.h @@ -15,9 +15,8 @@ class dMenu_Fishing_c; class dMenu_Skill_c; class dMenu_Insect_c; class dSelect_cursor_c; -#if TARGET_PC -static bool cachedPanes = false; +#if TARGET_PC struct PaneCache { u64 tag; f32 origTransX; @@ -26,36 +25,36 @@ struct PaneCache { }; static PaneCache mpScreenPanes[] = { - {MULTI_CHAR('sa_tex_n'), 0.0f, false}, - {MULTI_CHAR('op_tex_n'), 0.0f, false}, - {MULTI_CHAR('heart_n'), 0.0f, false}, - {MULTI_CHAR('wolf_n'), 0.0f, false}, - {MULTI_CHAR('item_0_n'), 0.0f, false}, - {MULTI_CHAR('item_1_n'), 0.0f, false}, - {MULTI_CHAR('item_2_n'), 0.0f, false}, - {MULTI_CHAR('fish_3_n'), 0.0f, false}, - {MULTI_CHAR('lett_4_n'), 0.0f, false}, - {MULTI_CHAR('maki_5_n'), 0.0f, false}, - {MULTI_CHAR('fuku_n0'), 0.0f, false}, - {MULTI_CHAR('fuku_n1'), 0.0f, false}, - {MULTI_CHAR('fuku_n2'), 0.0f, false}, - {MULTI_CHAR('tate_n0'), 0.0f, false}, - {MULTI_CHAR('tate_n1'), 0.0f, false}, - {MULTI_CHAR('ken_n0'), 0.0f, false}, - {MULTI_CHAR('ken_n1'), 0.0f, false}, - {MULTI_CHAR('kabu_6n'), 0.0f, false}, - {MULTI_CHAR('t_t00'), 0.0f, false}, - {MULTI_CHAR('f_t00'), 0.0f, false}, - {MULTI_CHAR('itemn_n'), 0.0f, false}, - {MULTI_CHAR('infotxtn'), 0.0f, false}, - {MULTI_CHAR('sa_op_n'), 0.0f, false}, - {MULTI_CHAR('title_n'), 0.0f, false}, - {MULTI_CHAR('menu_n'), 0.0f, false}, - {MULTI_CHAR('w_er_n'), 0.0f, false}, - {MULTI_CHAR('center_n'), 0.0f, false}, - {MULTI_CHAR('info_n'), 0.0f, false}, - {MULTI_CHAR('lavel_n'), 0.0f, false}, - {MULTI_CHAR('modelbgn'), 0.0f, false}, + {MULTI_CHAR('sa_tex_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('op_tex_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('heart_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('wolf_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('item_0_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('item_1_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('item_2_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('fish_3_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('lett_4_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('maki_5_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('fuku_n0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('fuku_n1'), 0.0f, 0.0f, false}, + {MULTI_CHAR('fuku_n2'), 0.0f, 0.0f, false}, + {MULTI_CHAR('tate_n0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('tate_n1'), 0.0f, 0.0f, false}, + {MULTI_CHAR('ken_n0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('ken_n1'), 0.0f, 0.0f, false}, + {MULTI_CHAR('kabu_6n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('t_t00'), 0.0f, 0.0f, false}, + {MULTI_CHAR('f_t00'), 0.0f, 0.0f, false}, + {MULTI_CHAR('itemn_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('infotxtn'), 0.0f, 0.0f, false}, + {MULTI_CHAR('sa_op_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('title_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('menu_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('w_er_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('center_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('info_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('lavel_n'), 0.0f, 0.0f, false}, + {MULTI_CHAR('modelbgn'), 0.0f, 0.0f, false}, }; #endif diff --git a/include/d/d_name.h b/include/d/d_name.h index ddd99127c6..68a4930baf 100644 --- a/include/d/d_name.h +++ b/include/d/d_name.h @@ -12,6 +12,34 @@ class J2DTextBox; class JUTFont; class STControl; +#if TARGET_PC +struct PaneCache { + u64 tag; + f32 origTransX; + f32 origTransY; + bool cached; +}; + +static PaneCache l_tagName[] = { + {MULTI_CHAR('m_00_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_00_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_00_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_00_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_00_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_01_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_01_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_01_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_01_3'), 0.0f, 0.0f, false}, + {MULTI_CHAR('m_01_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_02_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_02_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_02_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_02_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_02_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m03_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m03_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m03_2'), 0.0f, 0.0f, false}, + {MULTI_CHAR('m03_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m03_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_04_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_04_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_04_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_04_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_04_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_05_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_05_1'), 0.0f, 0.0f, false}, + {MULTI_CHAR('m_05_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_05_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_05_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_06_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_06_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_06_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_06_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_06_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_07_0'), 0.0f, 0.0f, false}, + {MULTI_CHAR('m_07_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_07_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_07_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_07_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_08_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_08_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_08_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_08_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_08_4'), 0.0f, 0.0f, false}, + {MULTI_CHAR('m_09_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_09_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_09_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_09_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_09_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_10_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_10_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_10_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_10_3'), 0.0f, 0.0f, false}, + {MULTI_CHAR('m_10_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_11_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_11_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_11_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_11_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m_11_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('m12_0'), 0.0f, 0.0f, false}, {MULTI_CHAR('m12_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('m12_2'), 0.0f, 0.0f, false}, + {MULTI_CHAR('m12_3'), 0.0f, 0.0f, false}, {MULTI_CHAR('m12_4'), 0.0f, 0.0f, false}, {MULTI_CHAR('p_end_2'), 0.0f, 0.0f, false}, {MULTI_CHAR('p_end_1'), 0.0f, 0.0f, false}, {MULTI_CHAR('p_end_0'), 0.0f, 0.0f, false}, +}; + +static PaneCache l_nameTagName[] = { + {MULTI_CHAR('name_00'), 0.0f, 0.0f, false}, {MULTI_CHAR('name_01'), 0.0f, 0.0f, false}, {MULTI_CHAR('name_02'), 0.0f, 0.0f, false}, {MULTI_CHAR('name_03'), 0.0f, 0.0f, false}, {MULTI_CHAR('name_04'), 0.0f, 0.0f, false}, {MULTI_CHAR('name_05'), 0.0f, 0.0f, false}, {MULTI_CHAR('name_06'), 0.0f, 0.0f, false}, {MULTI_CHAR('name_07'), 0.0f, 0.0f, false}, +}; + +static PaneCache l_nameCurTagName[] = { + {MULTI_CHAR('s__n_00'), 0.0f, 0.0f, false}, {MULTI_CHAR('s__n_01'), 0.0f, 0.0f, false}, {MULTI_CHAR('s__n_02'), 0.0f, 0.0f, false}, {MULTI_CHAR('s__n_03'), 0.0f, 0.0f, false}, {MULTI_CHAR('s__n_04'), 0.0f, 0.0f, false}, {MULTI_CHAR('s__n_05'), 0.0f, 0.0f, false}, {MULTI_CHAR('s__n_06'), 0.0f, 0.0f, false}, {MULTI_CHAR('s__n_07'), 0.0f, 0.0f, false}, +}; +#endif + class dNm_HIO_c { public: dNm_HIO_c(); diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp index 72b6ffb372..7ba3fac836 100644 --- a/src/d/d_file_select.cpp +++ b/src/d/d_file_select.cpp @@ -3752,6 +3752,7 @@ bool dFile_select_c::yesnoWakuAlpahAnm(u8 param_1) { #if TARGET_PC void dFile_select_c::fileSelectWide() { + static bool cachedPanes = false; // Get pre-scale values for each pane if (!cachedPanes) { for (PaneCache& entry : mSelDtPanes) { @@ -3853,17 +3854,11 @@ void dFile_select_c::fileSelectWide() { mSelDt.ScrDt->search(MULTI_CHAR('fuku_n1'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); mSelDt.ScrDt->search(MULTI_CHAR('fuku_n2'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - // Spirals - fileSel.Scr->search(MULTI_CHAR('w_uzu00'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu01'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu02'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu03'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu04'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu05'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu06'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu07'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu08'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu09'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + // Spirals & Memory Card Text + for (PaneCache& entry : fileSelPanes) { + J2DPane* pane = fileSel.Scr->search(entry.tag); + pane->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + } // Selection Cursor if (mSelIcon) { @@ -3953,17 +3948,11 @@ void dFile_select_c::fileSelectWide() { mSelIcon2->refreshAspectScale(mDoGph_gInf_c::hudAspectScaleUp); } - // Spirals - fileSel.Scr->search(MULTI_CHAR('w_uzu00'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu01'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu02'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu03'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu04'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu05'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu06'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu07'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu08'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - fileSel.Scr->search(MULTI_CHAR('w_uzu09'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + // Spirals & Memory Card Text + for (PaneCache& entry : fileSelPanes) { + J2DPane* pane = fileSel.Scr->search(entry.tag); + pane->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + } break; } } diff --git a/src/d/d_menu_collect.cpp b/src/d/d_menu_collect.cpp index 0755c4de17..7ac70e4a7b 100644 --- a/src/d/d_menu_collect.cpp +++ b/src/d/d_menu_collect.cpp @@ -97,6 +97,7 @@ dMenu_Collect2D_c::~dMenu_Collect2D_c() { #if TARGET_PC void dMenu_Collect2D_c::menuCollectWide() { + static bool cachedPanes = false; // Get pre-scale values for each pane if (!cachedPanes) { for (PaneCache& entry : mpScreenPanes) { @@ -236,7 +237,7 @@ void dMenu_Collect2D_c::menuCollectWide() { // Fused Shadow/Mirror Background J2DPane* modelbgn = mpScreen->search(MULTI_CHAR('modelbgn')); - static f32 modelbgnTransX_orig = modelbgn->getTranslateX(); // Get pre-scale value + static f32 modelbgnTransX_orig = modelbgn->getTranslateX(); modelbgn->setBasePosition(J2DBasePosition_0); modelbgn->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.3f); f32 modelbgn_scaleFactor = 1.0f + 0.16f * (mDoGph_gInf_c::hudAspectScaleDown - 1.0f); diff --git a/src/d/d_name.cpp b/src/d/d_name.cpp index e4c2a0f8f0..6e3f8bca89 100644 --- a/src/d/d_name.cpp +++ b/src/d/d_name.cpp @@ -1430,51 +1430,86 @@ void dName_c::selectCursorPosSet(int row) { #if TARGET_PC void dName_c::nameWide() { - // Resize Select Icon - #if TARGET_PC - if (mSelIcon) { - mSelIcon->refreshAspectScale(mDoGph_gInf_c::hudAspectScaleUp); - } - #endif - - // List of Characters Box - static u64 l_tagName[65] = { - MULTI_CHAR('m_00_0'), MULTI_CHAR('m_00_1'), MULTI_CHAR('m_00_2'), MULTI_CHAR('m_00_3'), MULTI_CHAR('m_00_4'), MULTI_CHAR('m_01_0'), MULTI_CHAR('m_01_1'), MULTI_CHAR('m_01_2'), MULTI_CHAR('m_01_3'), - MULTI_CHAR('m_01_4'), MULTI_CHAR('m_02_0'), MULTI_CHAR('m_02_1'), MULTI_CHAR('m_02_2'), MULTI_CHAR('m_02_3'), MULTI_CHAR('m_02_4'), MULTI_CHAR('m03_0'), MULTI_CHAR('m03_1'), MULTI_CHAR('m03_2'), - MULTI_CHAR('m03_3'), MULTI_CHAR('m03_4'), MULTI_CHAR('m_04_0'), MULTI_CHAR('m_04_1'), MULTI_CHAR('m_04_2'), MULTI_CHAR('m_04_3'), MULTI_CHAR('m_04_4'), MULTI_CHAR('m_05_0'), MULTI_CHAR('m_05_1'), - MULTI_CHAR('m_05_2'), MULTI_CHAR('m_05_3'), MULTI_CHAR('m_05_4'), MULTI_CHAR('m_06_0'), MULTI_CHAR('m_06_1'), MULTI_CHAR('m_06_2'), MULTI_CHAR('m_06_3'), MULTI_CHAR('m_06_4'), MULTI_CHAR('m_07_0'), - MULTI_CHAR('m_07_1'), MULTI_CHAR('m_07_2'), MULTI_CHAR('m_07_3'), MULTI_CHAR('m_07_4'), MULTI_CHAR('m_08_0'), MULTI_CHAR('m_08_1'), MULTI_CHAR('m_08_2'), MULTI_CHAR('m_08_3'), MULTI_CHAR('m_08_4'), - MULTI_CHAR('m_09_0'), MULTI_CHAR('m_09_1'), MULTI_CHAR('m_09_2'), MULTI_CHAR('m_09_3'), MULTI_CHAR('m_09_4'), MULTI_CHAR('m_10_0'), MULTI_CHAR('m_10_1'), MULTI_CHAR('m_10_2'), MULTI_CHAR('m_10_3'), - MULTI_CHAR('m_10_4'), MULTI_CHAR('m_11_0'), MULTI_CHAR('m_11_1'), MULTI_CHAR('m_11_2'), MULTI_CHAR('m_11_3'), MULTI_CHAR('m_11_4'), MULTI_CHAR('m12_0'), MULTI_CHAR('m12_1'), MULTI_CHAR('m12_2'), - MULTI_CHAR('m12_3'), MULTI_CHAR('m12_4'), - }; - - for (u32 i = 0; i < 65; i++) { - nameIn.NameInScr->search(l_tagName[i])->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + static bool cachedPanes = false; + // Get pre-scale values for each pane + if (!cachedPanes) { + for (PaneCache& entry : l_tagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + if (!entry.cached) { + entry.origTransX = pane->getTranslateX(); + entry.origTransY = pane->getTranslateY(); + entry.cached = true; + } + } + for (PaneCache& entry : l_nameTagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + if (!entry.cached) { + entry.origTransX = pane->getTranslateX(); + entry.origTransY = pane->getTranslateY(); + entry.cached = true; + } + } + for (PaneCache& entry : l_nameCurTagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + if (!entry.cached) { + entry.origTransX = pane->getTranslateX(); + entry.origTransY = pane->getTranslateY(); + entry.cached = true; + } + } + cachedPanes = true; } - // "END" Text - nameIn.NameInScr->search(MULTI_CHAR('p_end_2'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - nameIn.NameInScr->search(MULTI_CHAR('p_end_1'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - nameIn.NameInScr->search(MULTI_CHAR('p_end_0'))->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); - - // Letters being typed - static u64 l_nameTagName[8] = { - MULTI_CHAR('name_00'), MULTI_CHAR('name_01'), MULTI_CHAR('name_02'), MULTI_CHAR('name_03'), MULTI_CHAR('name_04'), MULTI_CHAR('name_05'), MULTI_CHAR('name_06'), MULTI_CHAR('name_07'), - }; - - for (u32 i = 0; i < 8; i++) { - nameIn.NameInScr->search(l_nameTagName[i])->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + // Reset all panes + nameIn.NameInScr->scale(1.0f, 1.0f); + nameIn.NameInScr->translate(0.0f, 0.0f); + for (PaneCache& entry : l_tagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + pane->setBasePosition(J2DBasePosition_4); + pane->scale(1.0f, 1.0f); + pane->translate(entry.origTransX, entry.origTransY); + } + for (PaneCache& entry : l_nameTagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + pane->setBasePosition(J2DBasePosition_4); + pane->scale(1.0f, 1.0f); + pane->translate(entry.origTransX, entry.origTransY); + } + for (PaneCache& entry : l_nameCurTagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + pane->setBasePosition(J2DBasePosition_4); + pane->scale(1.0f, 1.0f); + pane->translate(entry.origTransX, entry.origTransY); } - // Underscores when typing below letters - static u64 l_nameCurTagName[8] = { - MULTI_CHAR('s__n_00'), MULTI_CHAR('s__n_01'), MULTI_CHAR('s__n_02'), MULTI_CHAR('s__n_03'), MULTI_CHAR('s__n_04'), MULTI_CHAR('s__n_05'), MULTI_CHAR('s__n_06'), MULTI_CHAR('s__n_07'), - }; - - for (u32 i = 0; i < 8; i++) { - nameIn.NameInScr->search(l_nameCurTagName[i]) - ->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + switch (dusk::getSettings().game.menuScalingMode) { + case (dusk::MenuScaling::GameCube): + // Selection Cursor + if (mSelIcon) { + mSelIcon->refreshAspectScale(1.0f); + } + break; + default: // Wii and Dusklight + // List of Characters Box + for (PaneCache& entry : l_tagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + pane->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + } + // Letters being typed + for (PaneCache& entry : l_nameTagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + pane->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + } + // Underscores when typing below letters + for (PaneCache& entry : l_nameCurTagName) { + J2DPane* pane = nameIn.NameInScr->search(entry.tag); + pane->scale(mDoGph_gInf_c::hudAspectScaleDown, 1.0f); + } + // Selection Cursor + if (mSelIcon) { + mSelIcon->refreshAspectScale(mDoGph_gInf_c::hudAspectScaleUp); + } + break; } } #endif