diff --git a/levels/menu/header.h b/levels/menu/header.h index 170c16c1..ed95cd45 100644 --- a/levels/menu/header.h +++ b/levels/menu/header.h @@ -31,7 +31,8 @@ extern const Gfx dl_menu_generic_button[]; extern const Gfx dl_menu_idle_hand[]; extern const Gfx dl_menu_grabbing_hand[]; extern const u8 *const menu_hud_lut[]; -extern const u8 *const menu_font_lut[]; +extern const u8 *const menu_font_lut_us[]; +extern const u8 *const menu_font_lut_jp[]; extern const Gfx dl_menu_ia8_text_begin[]; extern const Gfx dl_menu_ia8_text_end[]; extern const Gfx dl_menu_rgba16_wood_course[]; diff --git a/levels/menu/leveldata.c b/levels/menu/leveldata.c index f2d7375d..d2d877d4 100644 --- a/levels/menu/leveldata.c +++ b/levels/menu/leveldata.c @@ -526,7 +526,6 @@ const Texture *const menu_hud_lut[] = { texture_menu_hud_char_katakana_sa, texture_menu_hud_char_katakana_u, texture_menu_hud_char_katakana_n, texture_menu_hud_char_kana_dakuten_do, }; -#if defined(VERSION_JP) || defined(VERSION_SH) UNUSED static const u64 menu_unused_0 = 0; // 0x0700AC48 @@ -922,8 +921,6 @@ ALIGNED8 static const Texture texture_menu_font_char_jp_multiply[] = "__OTR__lev // 0x0700CCC8 ALIGNED8 static const Texture texture_menu_font_char_jp_exclamation[] = "__OTR__levels/menu/main_menu_seg7.0CCC8"; -#else - // 0x0700AC40 ALIGNED8 static const Texture texture_menu_font_char_0[] = "__OTR__levels/menu/main_menu_seg7.0AC40"; @@ -1084,7 +1081,6 @@ ALIGNED8 static const Texture texture_menu_font_char_period[] = "__OTR__levels/m // 0x0700B800 ALIGNED8 static const Texture texture_menu_font_char_ampersand[] = "__OTR__levels/menu/main_menu_seg7.0B800"; -#endif #ifdef VERSION_EU // 0x0700B840 @@ -1099,73 +1095,7 @@ ALIGNED8 static const Texture texture_menu_font_char_colon[] = "__OTR__levels/me // Menu small font print table // 0x0700CD08 -const Texture *const menu_font_lut[] = { -#if defined(VERSION_JP) || defined(VERSION_SH) - texture_menu_font_char_jp_0, texture_menu_font_char_jp_1, texture_menu_font_char_jp_2, texture_menu_font_char_jp_3, - texture_menu_font_char_jp_4, texture_menu_font_char_jp_5, texture_menu_font_char_jp_6, texture_menu_font_char_jp_7, - texture_menu_font_char_jp_8, texture_menu_font_char_jp_9, texture_menu_font_char_jp_A, texture_menu_font_char_jp_B, - texture_menu_font_char_jp_C, texture_menu_font_char_jp_D, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - texture_menu_font_char_jp_hiragana_a, texture_menu_font_char_jp_hiragana_i, texture_menu_font_char_jp_hiragana_u, texture_menu_font_char_jp_hiragana_c, - texture_menu_font_char_jp_hiragana_o, texture_menu_font_char_jp_hiragana_ka, texture_menu_font_char_jp_hiragana_ki, texture_menu_font_char_jp_hiragana_ku, - texture_menu_font_char_jp_hiragana_ke, texture_menu_font_char_jp_hiragana_ko, texture_menu_font_char_jp_hiragana_sa, texture_menu_font_char_jp_hiragana_shi, - texture_menu_font_char_jp_hiragana_su, texture_menu_font_char_jp_hiragana_se, texture_menu_font_char_jp_hiragana_so, texture_menu_font_char_jp_hiragana_ta, - texture_menu_font_char_jp_hiragana_chi, texture_menu_font_char_jp_hiragana_tsu, texture_menu_font_char_jp_hiragana_te, texture_menu_font_char_jp_hiragana_to, - texture_menu_font_char_jp_hiragana_na, texture_menu_font_char_jp_hiragana_ni, texture_menu_font_char_jp_hiragana_nu, texture_menu_font_char_jp_hiragana_ne, - texture_menu_font_char_jp_hiragana_no, texture_menu_font_char_jp_hiragana_ha, texture_menu_font_char_jp_hiragana_hi, texture_menu_font_char_jp_hiragana_hu, - texture_menu_font_char_jp_hiragana_he, texture_menu_font_char_jp_hiragana_ho, texture_menu_font_char_jp_hiragana_ma, texture_menu_font_char_jp_hiragana_mi, - texture_menu_font_char_jp_hiragana_mu, texture_menu_font_char_jp_hiragana_me, texture_menu_font_char_jp_hiragana_mo, texture_menu_font_char_jp_hiragana_ya, - texture_menu_font_char_jp_hiragana_yu, texture_menu_font_char_jp_hiragana_yo, texture_menu_font_char_jp_hiragana_ra, texture_menu_font_char_jp_hiragana_ri, - texture_menu_font_char_jp_hiragana_ru, texture_menu_font_char_jp_hiragana_re, texture_menu_font_char_jp_hiragana_ro, texture_menu_font_char_jp_hiragana_wa, - texture_menu_font_char_jp_hiragana_wo, texture_menu_font_char_jp_hiragana_n, 0x0, 0x0, - texture_menu_font_char_jp_katakana_a, texture_menu_font_char_jp_katakana_i, texture_menu_font_char_jp_katakana_u, texture_menu_font_char_jp_katakana_e, - texture_menu_font_char_jp_katakana_o, texture_menu_font_char_jp_katakana_ka, texture_menu_font_char_jp_katakana_ki, texture_menu_font_char_jp_katakana_ku, - texture_menu_font_char_jp_katakana_ke, texture_menu_font_char_jp_katakana_ko, texture_menu_font_char_jp_katakana_sa, texture_menu_font_char_jp_katakana_shi, - texture_menu_font_char_jp_katakana_su, texture_menu_font_char_jp_katakana_se, texture_menu_font_char_jp_katakana_so, texture_menu_font_char_jp_katakana_ta, - texture_menu_font_char_jp_katakana_chi, texture_menu_font_char_jp_katakana_tsu, texture_menu_font_char_jp_katakana_te, texture_menu_font_char_jp_katakana_to, - texture_menu_font_char_jp_katakana_na, texture_menu_font_char_jp_katakana_ni, texture_menu_font_char_jp_katakana_nu, texture_menu_font_char_jp_katakana_ne, - texture_menu_font_char_jp_katakana_no, texture_menu_font_char_jp_katakana_ha, texture_menu_font_char_jp_katakana_hi, texture_menu_font_char_jp_katakana_hu, - texture_menu_font_char_jp_katakana_he, texture_menu_font_char_jp_katakana_ho, texture_menu_font_char_jp_katakana_ma, texture_menu_font_char_jp_katakana_mi, - texture_menu_font_char_jp_katakana_mu, texture_menu_font_char_jp_katakana_me, texture_menu_font_char_jp_katakana_mo, texture_menu_font_char_jp_katakana_ya, - texture_menu_font_char_jp_katakana_yu, texture_menu_font_char_jp_katakana_yo, texture_menu_font_char_jp_katakana_ra, texture_menu_font_char_jp_katakana_ri, - texture_menu_font_char_jp_katakana_ru, texture_menu_font_char_jp_katakana_re, texture_menu_font_char_jp_katakana_ro, texture_menu_font_char_jp_katakana_wa, - texture_menu_font_char_jp_katakana_wo, texture_menu_font_char_jp_katakana_n, 0x0, texture_menu_font_char_jp_long_vowel, - texture_menu_font_char_jp_hiragana_small_e, texture_menu_font_char_jp_hiragana_small_tsu, texture_menu_font_char_jp_hiragana_small_ka, texture_menu_font_char_jp_hiragana_small_yu, - texture_menu_font_char_jp_hiragana_small_yo, texture_menu_font_char_jp_hiragana_small_a, texture_menu_font_char_jp_hiragana_small_i, texture_menu_font_char_jp_hiragana_small_u, - texture_menu_font_char_jp_hiragana_small_o, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - texture_menu_font_char_jp_katakana_small_e, texture_menu_font_char_jp_katakana_small_tsu, texture_menu_font_char_jp_katakana_small_ka, texture_menu_font_char_jp_katakana_small_yu, - texture_menu_font_char_jp_katakana_small_yo, texture_menu_font_char_jp_katakana_small_a, texture_menu_font_char_jp_katakana_small_i, texture_menu_font_char_jp_katakana_small_u, - texture_menu_font_char_jp_katakana_small_o, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - texture_menu_font_char_jp_dakuten, texture_menu_font_char_jp_handakuten, texture_menu_font_char_jp_exclamation, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, texture_menu_font_char_jp_coin, texture_menu_font_char_jp_star_filled, texture_menu_font_char_jp_multiply, - 0x0, 0x0, 0x0, 0x0, -#else +const Texture *const menu_font_lut_us[] = { texture_menu_font_char_0, texture_menu_font_char_1, texture_menu_font_char_2, texture_menu_font_char_3, texture_menu_font_char_4, texture_menu_font_char_5, texture_menu_font_char_6, texture_menu_font_char_7, texture_menu_font_char_8, texture_menu_font_char_9, texture_menu_font_char_A, texture_menu_font_char_B, @@ -1236,7 +1166,73 @@ const Texture *const menu_font_lut[] = { texture_menu_font_char_question, 0x0, 0x0, 0x0, 0x0, texture_menu_font_char_coin, texture_menu_font_char_star_filled, texture_menu_font_char_multiply, 0x0, 0x0, 0x0, 0x0, -#endif +}; + +const Texture *const menu_font_lut_jp[] = { + texture_menu_font_char_jp_0, texture_menu_font_char_jp_1, texture_menu_font_char_jp_2, texture_menu_font_char_jp_3, + texture_menu_font_char_jp_4, texture_menu_font_char_jp_5, texture_menu_font_char_jp_6, texture_menu_font_char_jp_7, + texture_menu_font_char_jp_8, texture_menu_font_char_jp_9, texture_menu_font_char_jp_A, texture_menu_font_char_jp_B, + texture_menu_font_char_jp_C, texture_menu_font_char_jp_D, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + texture_menu_font_char_jp_hiragana_a, texture_menu_font_char_jp_hiragana_i, texture_menu_font_char_jp_hiragana_u, texture_menu_font_char_jp_hiragana_c, + texture_menu_font_char_jp_hiragana_o, texture_menu_font_char_jp_hiragana_ka, texture_menu_font_char_jp_hiragana_ki, texture_menu_font_char_jp_hiragana_ku, + texture_menu_font_char_jp_hiragana_ke, texture_menu_font_char_jp_hiragana_ko, texture_menu_font_char_jp_hiragana_sa, texture_menu_font_char_jp_hiragana_shi, + texture_menu_font_char_jp_hiragana_su, texture_menu_font_char_jp_hiragana_se, texture_menu_font_char_jp_hiragana_so, texture_menu_font_char_jp_hiragana_ta, + texture_menu_font_char_jp_hiragana_chi, texture_menu_font_char_jp_hiragana_tsu, texture_menu_font_char_jp_hiragana_te, texture_menu_font_char_jp_hiragana_to, + texture_menu_font_char_jp_hiragana_na, texture_menu_font_char_jp_hiragana_ni, texture_menu_font_char_jp_hiragana_nu, texture_menu_font_char_jp_hiragana_ne, + texture_menu_font_char_jp_hiragana_no, texture_menu_font_char_jp_hiragana_ha, texture_menu_font_char_jp_hiragana_hi, texture_menu_font_char_jp_hiragana_hu, + texture_menu_font_char_jp_hiragana_he, texture_menu_font_char_jp_hiragana_ho, texture_menu_font_char_jp_hiragana_ma, texture_menu_font_char_jp_hiragana_mi, + texture_menu_font_char_jp_hiragana_mu, texture_menu_font_char_jp_hiragana_me, texture_menu_font_char_jp_hiragana_mo, texture_menu_font_char_jp_hiragana_ya, + texture_menu_font_char_jp_hiragana_yu, texture_menu_font_char_jp_hiragana_yo, texture_menu_font_char_jp_hiragana_ra, texture_menu_font_char_jp_hiragana_ri, + texture_menu_font_char_jp_hiragana_ru, texture_menu_font_char_jp_hiragana_re, texture_menu_font_char_jp_hiragana_ro, texture_menu_font_char_jp_hiragana_wa, + texture_menu_font_char_jp_hiragana_wo, texture_menu_font_char_jp_hiragana_n, 0x0, 0x0, + texture_menu_font_char_jp_katakana_a, texture_menu_font_char_jp_katakana_i, texture_menu_font_char_jp_katakana_u, texture_menu_font_char_jp_katakana_e, + texture_menu_font_char_jp_katakana_o, texture_menu_font_char_jp_katakana_ka, texture_menu_font_char_jp_katakana_ki, texture_menu_font_char_jp_katakana_ku, + texture_menu_font_char_jp_katakana_ke, texture_menu_font_char_jp_katakana_ko, texture_menu_font_char_jp_katakana_sa, texture_menu_font_char_jp_katakana_shi, + texture_menu_font_char_jp_katakana_su, texture_menu_font_char_jp_katakana_se, texture_menu_font_char_jp_katakana_so, texture_menu_font_char_jp_katakana_ta, + texture_menu_font_char_jp_katakana_chi, texture_menu_font_char_jp_katakana_tsu, texture_menu_font_char_jp_katakana_te, texture_menu_font_char_jp_katakana_to, + texture_menu_font_char_jp_katakana_na, texture_menu_font_char_jp_katakana_ni, texture_menu_font_char_jp_katakana_nu, texture_menu_font_char_jp_katakana_ne, + texture_menu_font_char_jp_katakana_no, texture_menu_font_char_jp_katakana_ha, texture_menu_font_char_jp_katakana_hi, texture_menu_font_char_jp_katakana_hu, + texture_menu_font_char_jp_katakana_he, texture_menu_font_char_jp_katakana_ho, texture_menu_font_char_jp_katakana_ma, texture_menu_font_char_jp_katakana_mi, + texture_menu_font_char_jp_katakana_mu, texture_menu_font_char_jp_katakana_me, texture_menu_font_char_jp_katakana_mo, texture_menu_font_char_jp_katakana_ya, + texture_menu_font_char_jp_katakana_yu, texture_menu_font_char_jp_katakana_yo, texture_menu_font_char_jp_katakana_ra, texture_menu_font_char_jp_katakana_ri, + texture_menu_font_char_jp_katakana_ru, texture_menu_font_char_jp_katakana_re, texture_menu_font_char_jp_katakana_ro, texture_menu_font_char_jp_katakana_wa, + texture_menu_font_char_jp_katakana_wo, texture_menu_font_char_jp_katakana_n, 0x0, texture_menu_font_char_jp_long_vowel, + texture_menu_font_char_jp_hiragana_small_e, texture_menu_font_char_jp_hiragana_small_tsu, texture_menu_font_char_jp_hiragana_small_ka, texture_menu_font_char_jp_hiragana_small_yu, + texture_menu_font_char_jp_hiragana_small_yo, texture_menu_font_char_jp_hiragana_small_a, texture_menu_font_char_jp_hiragana_small_i, texture_menu_font_char_jp_hiragana_small_u, + texture_menu_font_char_jp_hiragana_small_o, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + texture_menu_font_char_jp_katakana_small_e, texture_menu_font_char_jp_katakana_small_tsu, texture_menu_font_char_jp_katakana_small_ka, texture_menu_font_char_jp_katakana_small_yu, + texture_menu_font_char_jp_katakana_small_yo, texture_menu_font_char_jp_katakana_small_a, texture_menu_font_char_jp_katakana_small_i, texture_menu_font_char_jp_katakana_small_u, + texture_menu_font_char_jp_katakana_small_o, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + texture_menu_font_char_jp_dakuten, texture_menu_font_char_jp_handakuten, texture_menu_font_char_jp_exclamation, 0x0, + 0x0, 0x0, 0x0, 0x0, + 0x0, texture_menu_font_char_jp_coin, texture_menu_font_char_jp_star_filled, texture_menu_font_char_jp_multiply, + 0x0, 0x0, 0x0, 0x0, }; // 0x0700D108 - 0x0700D160 diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 5df05fbc..9ae57fa6 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -252,6 +252,7 @@ static u8 *alloc_ia8_text_from_i1(u16 *in, s16 width, s16 height) { u8 *out; s16 outPos = 0; + in = ResourceGetDataByName(in); out = (u8 *) alloc_display_list((u32) width * (u32) height); if (out == NULL) { @@ -277,21 +278,16 @@ static u8 *alloc_ia8_text_from_i1(u16 *in, s16 width, s16 height) { } void render_generic_char(u8 c) { - void **fontLUT = segmented_to_virtual(main_font_lut_us); + void **fontLUT = segmented_to_virtual(ROM_JP ? main_font_lut_jp : main_font_lut_us); void *packedTexture = segmented_to_virtual(fontLUT[c]); -#if defined(VERSION_JP) || defined(VERSION_SH) - void *unpackedTexture = alloc_ia8_text_from_i1(packedTexture, 8, 16); -#endif -#ifndef VERSION_EU + if(packedTexture == NULL) { + return; + } + gDPPipeSync(gDisplayListHead++); -#endif -#if defined(VERSION_JP) || defined(VERSION_SH) - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture)); -#else - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, VIRTUAL_TO_PHYSICAL(packedTexture)); -#endif - gSPDisplayList(gDisplayListHead++, dl_ia_text_tex_settings_us); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, ROM_JP ? alloc_ia8_text_from_i1(packedTexture, 8, 16) : packedTexture); + gSPDisplayList(gDisplayListHead++, ROM_JP ? dl_ia_text_tex_settings_jp : dl_ia_text_tex_settings_us); #ifdef VERSION_EU gSPTextureRectangleFlip(gDisplayListHead++, gDialogX << 2, (gDialogY - 16) << 2, (gDialogX + 8) << 2, gDialogY << 2, G_TX_RENDERTILE, 8 << 6, 4 << 6, 1 << 10, 1 << 10); @@ -584,57 +580,67 @@ void print_hud_lut_string(s8 hudLUT, s16 x, s16 y, const u8 *str) { if (hudLUT == HUD_LUT_JPMENU) { xStride = 16; } else { // HUD_LUT_GLOBAL -#ifdef VERSION_JP - xStride = 14; -#else - xStride = 12; //? Shindou uses this. -#endif + xStride = ROM_JP ? 14 : 12; } while (str[strPos] != GLOBAR_CHAR_TERMINATOR) { -#ifndef VERSION_JP - switch (str[strPos]) { -#ifdef VERSION_EU - case GLOBAL_CHAR_SPACE: - curX += xStride / 2; - break; - case HUD_CHAR_A_UMLAUT: - print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('A')); - curX += xStride; - break; - case HUD_CHAR_O_UMLAUT: - print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('O')); - curX += xStride; - break; - case HUD_CHAR_U_UMLAUT: - print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('U')); - curX += xStride; - break; -#else - case GLOBAL_CHAR_SPACE: - curX += 8; - break; -#endif - default: -#endif - gDPPipeSync(gDisplayListHead++); + if(!ROM_JP){ + switch (str[strPos]) { + #ifdef VERSION_EU + case GLOBAL_CHAR_SPACE: + curX += xStride / 2; + break; + case HUD_CHAR_A_UMLAUT: + print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('A')); + curX += xStride; + break; + case HUD_CHAR_O_UMLAUT: + print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('O')); + curX += xStride; + break; + case HUD_CHAR_U_UMLAUT: + print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('U')); + curX += xStride; + break; + #else + case GLOBAL_CHAR_SPACE: + curX += 8; + break; + #endif + default: + gDPPipeSync(gDisplayListHead++); - if (hudLUT == HUD_LUT_JPMENU) { - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT1[str[strPos]]); - } + if (hudLUT == HUD_LUT_JPMENU) { + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT1[str[strPos]]); + } - if (hudLUT == HUD_LUT_GLOBAL) { - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT2[str[strPos]]); - } + if (hudLUT == HUD_LUT_GLOBAL) { + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT2[str[strPos]]); + } - gSPDisplayList(gDisplayListHead++, dl_rgba16_load_tex_block); - gSPTextureRectangle(gDisplayListHead++, curX << 2, curY << 2, (curX + 16) << 2, - (curY + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPDisplayList(gDisplayListHead++, dl_rgba16_load_tex_block); + gSPTextureRectangle(gDisplayListHead++, curX << 2, curY << 2, (curX + 16) << 2, + (curY + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - curX += xStride; -#ifndef VERSION_JP + curX += xStride; + } + } else { + gDPPipeSync(gDisplayListHead++); + + if (hudLUT == HUD_LUT_JPMENU) { + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT1[str[strPos]]); + } + + if (hudLUT == HUD_LUT_GLOBAL) { + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT2[str[strPos]]); + } + + gSPDisplayList(gDisplayListHead++, dl_rgba16_load_tex_block); + gSPTextureRectangle(gDisplayListHead++, curX << 2, curY << 2, (curX + 16) << 2, + (curY + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + + curX += xStride; } -#endif strPos++; } gSPDisableFiltering(gDisplayListHead++, FALSE); @@ -661,7 +667,7 @@ void print_menu_generic_string(s16 x, s16 y, const u8 *str) { s32 strPos = 0; u32 curX = x; u32 curY = y; - void **fontLUT = segmented_to_virtual(menu_font_lut); + void **fontLUT = segmented_to_virtual(ROM_JP ? menu_font_lut_jp : menu_font_lut_us); gSPDisableFiltering(gDisplayListHead++, TRUE); while (str[strPos] != DIALOG_CHAR_TERMINATOR) { diff --git a/src/game/ingame_menu.h b/src/game/ingame_menu.h index 4118b3f4..2d2dea1c 100644 --- a/src/game/ingame_menu.h +++ b/src/game/ingame_menu.h @@ -21,11 +21,7 @@ #define HUD_LUT_GLOBAL 2 // For file select JP HUD difference -#if defined(VERSION_JP) || defined(VERSION_SH) -#define HUD_LUT_DIFF HUD_LUT_JPMENU -#else -#define HUD_LUT_DIFF HUD_LUT_GLOBAL -#endif +#define HUD_LUT_DIFF (ROM_JP ? HUD_LUT_JPMENU : HUD_LUT_GLOBAL) enum MenuMode { MENU_MODE_NONE = -1, diff --git a/src/game/segment7.h b/src/game/segment7.h index 65a0c7ba..4416dc09 100644 --- a/src/game/segment7.h +++ b/src/game/segment7.h @@ -8,7 +8,8 @@ extern u8 dl_menu_idle_hand[]; extern u8 dl_menu_grabbing_hand[]; extern u8 menu_hud_lut[]; -extern u8 menu_font_lut[]; +extern u8 menu_font_lut_us[]; +extern u8 menu_font_lut_jp[]; extern u8 dl_menu_ia8_text_begin[]; extern u8 dl_menu_ia8_text_end[]; extern u8 dl_menu_rgba16_wood_course[]; diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 625e027d..f7ebbba4 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -42,7 +42,7 @@ GameEngine::GameEngine(){ } } } - this->context = LUS::Context::CreateInstance("Ghostship", "sm64", "ghostship.cfg.json", OTRFiles, { 0xFF2B5A63 }, 3); + this->context = LUS::Context::CreateInstance("Ghostship", "sm64", "ghostship.cfg.json", OTRFiles, { 0xFF2B5A63, 0xE3DAA4E }, 3); this->context->GetWindow()->SetTargetFps(60); this->context->GetWindow()->SetMaximumFrameLatency(1); this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::SAnim, "Animation", std::make_shared());