diff --git a/assets/textures/title_static/16by9_eng.ia8.png b/assets/textures/title_static/16by9_eng.ia8.png new file mode 100755 index 000000000..9359291fb Binary files /dev/null and b/assets/textures/title_static/16by9_eng.ia8.png differ diff --git a/assets/textures/title_static/4by3_eng.ia8.png b/assets/textures/title_static/4by3_eng.ia8.png new file mode 100755 index 000000000..79981bfab Binary files /dev/null and b/assets/textures/title_static/4by3_eng.ia8.png differ diff --git a/assets/textures/title_static/title_static.c b/assets/textures/title_static/title_static.c new file mode 100644 index 000000000..c7255fea5 --- /dev/null +++ b/assets/textures/title_static/title_static.c @@ -0,0 +1,673 @@ +#include "ultra64.h" +#include "z64.h" +#include "macros.h" +#include "title_static.h" + +u64 gFileSelConnectorTex[] = { +#include "assets/textures/title_static/connector.ia8.inc.c" +}; + +u64 gFileSelForestMedallionTex[] = { +#include "assets/textures/title_static/forest_medallion.ia8.inc.c" +}; + +u64 gFileSelFireMedallionTex[] = { +#include "assets/textures/title_static/fire_medallion.ia8.inc.c" +}; + +u64 gFileSelWaterMedallionTex[] = { +#include "assets/textures/title_static/water_medallion.ia8.inc.c" +}; + +u64 gFileSelSpiritMedallionTex[] = { +#include "assets/textures/title_static/spirit_medallion.ia8.inc.c" +}; + +u64 gFileSelShadowMedallionTex[] = { +#include "assets/textures/title_static/shadow_medallion.ia8.inc.c" +}; + +u64 gFileSelLightMedallionTex[] = { +#include "assets/textures/title_static/light_medallion.ia8.inc.c" +}; + +u64 gFileSelWindow1Tex[] = { +#include "assets/textures/title_static/window_1.ia16.inc.c" +}; + +u64 gFileSelWindow2Tex[] = { +#include "assets/textures/title_static/window_2.ia16.inc.c" +}; + +u64 gFileSelWindow3Tex[] = { +#include "assets/textures/title_static/window_3.ia16.inc.c" +}; + +u64 gFileSelWindow4Tex[] = { +#include "assets/textures/title_static/window_4.ia16.inc.c" +}; + +u64 gFileSelWindow5Tex[] = { +#include "assets/textures/title_static/window_5.ia16.inc.c" +}; + +u64 gFileSelWindow6Tex[] = { +#include "assets/textures/title_static/window_6.ia16.inc.c" +}; + +u64 gFileSelWindow7Tex[] = { +#include "assets/textures/title_static/window_7.ia16.inc.c" +}; + +u64 gFileSelWindow8Tex[] = { +#include "assets/textures/title_static/window_8.ia16.inc.c" +}; + +u64 gFileSelWindow9Tex[] = { +#include "assets/textures/title_static/window_9.ia16.inc.c" +}; + +u64 gFileSelWindow10Tex[] = { +#include "assets/textures/title_static/window_10.ia16.inc.c" +}; + +u64 gFileSelWindow11Tex[] = { +#include "assets/textures/title_static/window_11.ia16.inc.c" +}; + +u64 gFileSelWindow12Tex[] = { +#include "assets/textures/title_static/window_12.ia16.inc.c" +}; + +u64 gFileSelWindow13Tex[] = { +#include "assets/textures/title_static/window_13.ia16.inc.c" +}; + +u64 gFileSelWindow14Tex[] = { +#include "assets/textures/title_static/window_14.ia16.inc.c" +}; + +u64 gFileSelWindow15Tex[] = { +#include "assets/textures/title_static/window_15.ia16.inc.c" +}; + +u64 gFileSelWindow16Tex[] = { +#include "assets/textures/title_static/window_16.ia16.inc.c" +}; + +u64 gFileSelWindow17Tex[] = { +#include "assets/textures/title_static/window_17.ia16.inc.c" +}; + +u64 gFileSelWindow18Tex[] = { +#include "assets/textures/title_static/window_18.ia16.inc.c" +}; + +u64 gFileSelWindow19Tex[] = { +#include "assets/textures/title_static/window_19.ia16.inc.c" +}; + +u64 gFileSelWindow20Tex[] = { +#include "assets/textures/title_static/window_20.ia16.inc.c" +}; + +u64 gFileSelKanjiButtonTex[] = { +#include "assets/textures/title_static/kanji_button.ia16.inc.c" +}; + +u64 gFileSelHiraganaButtonTex[] = { +#include "assets/textures/title_static/hiragana_button.ia16.inc.c" +}; + +u64 gFileSelKatakanaButtonTex[] = { +#include "assets/textures/title_static/katakana_button.ia16.inc.c" +}; + +u64 gFileSelENDButtonENGTex[] = { +#include "assets/textures/title_static/end_button_eng.ia16.inc.c" +}; + +u64 gFileSelENDButtonGERTex[] = { +#include "assets/textures/title_static/end_button_ger.ia16.inc.c" +}; + +u64 gFileSelENDButtonFRATex[] = { +#include "assets/textures/title_static/end_button_fra.ia16.inc.c" +}; + +u64 gFileSelBackspaceButtonTex[] = { +#include "assets/textures/title_static/backspace_button.ia16.inc.c" +}; + +u64 gFileSelNameBoxTex[] = { +#include "assets/textures/title_static/name_box.ia16.inc.c" +}; + +u64 gFileSelFileInfoBox1Tex[] = { +#include "assets/textures/title_static/file_info_box_1.ia16.inc.c" +}; + +u64 gFileSelFileInfoBox2Tex[] = { +#include "assets/textures/title_static/file_info_box_2.ia16.inc.c" +}; + +u64 gFileSelFileInfoBox3Tex[] = { +#include "assets/textures/title_static/file_info_box_3.ia16.inc.c" +}; + +u64 gFileSelFileInfoBox4Tex[] = { +#include "assets/textures/title_static/file_info_box_4.ia16.inc.c" +}; + +u64 gFileSelFileInfoBox5Tex[] = { +#include "assets/textures/title_static/file_info_box_5.ia16.inc.c" +}; + +u64 gFileSelDISKButtonTex[] = { +#include "assets/textures/title_static/disk_button.ia16.inc.c" +}; + +u64 gFileSelOptionsDividerTex[] = { +#include "assets/textures/title_static/options_divider.ia4.inc.c" +}; + +u64 gFileSelBrightnessCheckTex[] = { +#include "assets/textures/title_static/brightness_check.ia4.inc.c" +}; + +u64 gFileSelBigButtonHighlightTex[] = { +#include "assets/textures/title_static/big_button_highlight.i8.inc.c" +}; + +u64 gFileSelCharHighlightTex[] = { +#include "assets/textures/title_static/char_highlight.i8.inc.c" +}; + +u64 gFileSelMediumButtonHighlightTex[] = { +#include "assets/textures/title_static/medium_button_highlight.i8.inc.c" +}; + +u64 gFileSelSmallButtonHighlightTex[] = { +#include "assets/textures/title_static/small_button_highlight.i8.inc.c" +}; + +u64 gFileSelKokiriEmeraldTex[] = { +#include "assets/textures/title_static/kokiri_emerald.rgba32.inc.c" +}; + +u64 gFileSelGoronRubyTex[] = { +#include "assets/textures/title_static/goron_ruby.rgba32.inc.c" +}; + +u64 gFileSelZoraSapphireTex[] = { +#include "assets/textures/title_static/zora_sapphire.rgba32.inc.c" +}; + +u64 gFileSelNoFileToCopyENGTex[] = { +#include "assets/textures/title_static/no_file_to_copy_eng.ia8.inc.c" +}; + +u64 gFileSelNoFileToEraseENGTex[] = { +#include "assets/textures/title_static/no_file_to_erase_eng.ia8.inc.c" +}; + +u64 gFileSelNoEmptyFileENGTex[] = { +#include "assets/textures/title_static/no_empty_file_eng.ia8.inc.c" +}; + +u64 gFileSelFileEmptyENGTex[] = { +#include "assets/textures/title_static/file_empty_eng.ia8.inc.c" +}; + +u64 gFileSelFileInUseENGTex[] = { +#include "assets/textures/title_static/file_in_use_eng.ia8.inc.c" +}; + +u64 gFileSelNoFileToCopyGERTex[] = { +#include "assets/textures/title_static/no_file_to_copy_ger.ia8.inc.c" +}; + +u64 gFileSelNoFileToEraseGERTex[] = { +#include "assets/textures/title_static/no_file_to_erase_ger.ia8.inc.c" +}; + +u64 gFileSelNoEmptyFileGERTex[] = { +#include "assets/textures/title_static/no_empty_file_ger.ia8.inc.c" +}; + +u64 gFileSelFileEmptyGERTex[] = { +#include "assets/textures/title_static/file_empty_ger.ia8.inc.c" +}; + +u64 gFileSelFileInUseGERTex[] = { +#include "assets/textures/title_static/file_in_use_ger.ia8.inc.c" +}; + +u64 gFileSelNoFileToCopyFRATex[] = { +#include "assets/textures/title_static/no_file_to_copy_fra.ia8.inc.c" +}; + +u64 gFileSelNoFileToEraseFRATex[] = { +#include "assets/textures/title_static/no_file_to_erase_fra.ia8.inc.c" +}; + +u64 gFileSelNoEmptyFileFRATex[] = { +#include "assets/textures/title_static/no_empty_file_fra.ia8.inc.c" +}; + +u64 gFileSelFileEmptyFRATex[] = { +#include "assets/textures/title_static/file_empty_fra.ia8.inc.c" +}; + +u64 gFileSelFileInUseFRATex[] = { +#include "assets/textures/title_static/file_in_use_fra.ia8.inc.c" +}; + +u64 gFileSelCopyWhichFileENGTex[] = { +#include "assets/textures/title_static/copy_which_file_eng.ia8.inc.c" +}; + +u64 gFileSelCopyToWhichFileENGTex[] = { +#include "assets/textures/title_static/copy_to_which_file_eng.ia8.inc.c" +}; + +u64 gFileSelAreYouSureENGTex[] = { +#include "assets/textures/title_static/are_you_sure_eng.ia8.inc.c" +}; + +u64 gFileSelFileCopiedENGTex[] = { +#include "assets/textures/title_static/file_copied_eng.ia8.inc.c" +}; + +u64 gFileSelWhichFile1GERTex[] = { +#include "assets/textures/title_static/which_file_1_ger.ia8.inc.c" +}; + +u64 gFileSelCopyToWhichFileGERTex[] = { +#include "assets/textures/title_static/copy_to_which_file_ger.ia8.inc.c" +}; + +u64 gFileSelAreYouSureGERTex[] = { +#include "assets/textures/title_static/are_you_sure_ger.ia8.inc.c" +}; + +u64 gFileSelFileCopiedGERTex[] = { +#include "assets/textures/title_static/file_copied_ger.ia8.inc.c" +}; + +u64 gFileSelCopyWhichFileFRATex[] = { +#include "assets/textures/title_static/copy_which_file_fra.ia8.inc.c" +}; + +u64 gFileSelCopyToWhichFileFRATex[] = { +#include "assets/textures/title_static/copy_to_which_file_fra.ia8.inc.c" +}; + +u64 gFileSelAreYouSureFRATex[] = { +#include "assets/textures/title_static/are_you_sure_fra.ia8.inc.c" +}; + +u64 gFileSelFileCopiedFRATex[] = { +#include "assets/textures/title_static/file_copied_fra.ia8.inc.c" +}; + +u64 gFileSelPleaseSelectAFileENGTex[] = { +#include "assets/textures/title_static/please_select_a_file_eng.ia8.inc.c" +}; + +u64 gFileSelOpenThisFileENGTex[] = { +#include "assets/textures/title_static/open_this_file_eng.ia8.inc.c" +}; + +u64 gFileSelPleaseSelectAFileGERTex[] = { +#include "assets/textures/title_static/please_select_a_file_ger.ia8.inc.c" +}; + +u64 gFileSelOpenThisFileGERTex[] = { +#include "assets/textures/title_static/open_this_file_ger.ia8.inc.c" +}; + +u64 gFileSelPleaseSelectAFileFRATex[] = { +#include "assets/textures/title_static/please_select_a_file_fra.ia8.inc.c" +}; + +u64 gFileSelOpenThisFileFRATex[] = { +#include "assets/textures/title_static/open_this_file_fra.ia8.inc.c" +}; + +u64 gFileSelEraseWhichFileENGTex[] = { +#include "assets/textures/title_static/erase_which_file_eng.ia8.inc.c" +}; + +u64 gFileSelAreYouSure2ENGTex[] = { +#include "assets/textures/title_static/are_you_sure_eng_2.ia8.inc.c" +}; + +u64 gFileSelFileErasedENGTex[] = { +#include "assets/textures/title_static/file_erased_eng.ia8.inc.c" +}; + +u64 gFileSelWhichFile2GERTex[] = { +#include "assets/textures/title_static/which_file_2_ger.ia8.inc.c" +}; + +u64 gFileSelAreYouSure2GERTex[] = { +#include "assets/textures/title_static/are_you_sure_ger_2.ia8.inc.c" +}; + +u64 gFileSelFileErasedGERTex[] = { +#include "assets/textures/title_static/file_erased_ger.ia8.inc.c" +}; + +u64 gFileSelEraseWhichFileFRATex[] = { +#include "assets/textures/title_static/erase_which_file_fra.ia8.inc.c" +}; + +u64 gFileSelAreYouSure2FRATex[] = { +#include "assets/textures/title_static/are_you_sure_fra_2.ia8.inc.c" +}; + +u64 gFileSelFileErasedFRATex[] = { +#include "assets/textures/title_static/file_erased_fra.ia8.inc.c" +}; + +u64 gFileSelOptionsENGTex[] = { +#include "assets/textures/title_static/options_eng.ia8.inc.c" +}; + +u64 gFileSelOptionsGERTex[] = { +#include "assets/textures/title_static/options_ger.ia8.inc.c" +}; + +u64 gFileSelNameENGTex[] = { +#include "assets/textures/title_static/name_eng.ia8.inc.c" +}; + +u64 gFileSelNameGERTex[] = { +#include "assets/textures/title_static/name_ger.ia8.inc.c" +}; + +u64 gFileSelNameFRATex[] = { +#include "assets/textures/title_static/name_fra.ia8.inc.c" +}; + +u64 gFileSelControlsENGTex[] = { +#include "assets/textures/title_static/controls_eng.ia8.inc.c" +}; + +u64 gFileSelControlsGERTex[] = { +#include "assets/textures/title_static/controls_ger.ia8.inc.c" +}; + +u64 gFileSelControlsFRATex[] = { +#include "assets/textures/title_static/controls_fra.ia8.inc.c" +}; + +u64 gFileSelCopyButtonENGTex[] = { +#include "assets/textures/title_static/copy_button_eng.ia16.inc.c" +}; + +u64 gFileSelCopyButtonGERTex[] = { +#include "assets/textures/title_static/copy_button_ger.ia16.inc.c" +}; + +u64 gFileSelCopyButtonFRATex[] = { +#include "assets/textures/title_static/copy_button_fra.ia16.inc.c" +}; + +u64 gFileSelFile1ButtonENGTex[] = { +#include "assets/textures/title_static/file_1_button_eng.ia16.inc.c" +}; + +u64 gFileSelFile2ButtonENGTex[] = { +#include "assets/textures/title_static/file_2_button_eng.ia16.inc.c" +}; + +u64 gFileSelFile3ButtonENGTex[] = { +#include "assets/textures/title_static/file_3_button_eng.ia16.inc.c" +}; + +u64 gFileSelFile1ButtonGERTex[] = { +#include "assets/textures/title_static/file_1_button_ger.ia16.inc.c" +}; + +u64 gFileSelFile2ButtonGERTex[] = { +#include "assets/textures/title_static/file_2_button_ger.ia16.inc.c" +}; + +u64 gFileSelFile3ButtonGERTex[] = { +#include "assets/textures/title_static/file_3_button_ger.ia16.inc.c" +}; + +u64 gFileSelFile1ButtonFRATex[] = { +#include "assets/textures/title_static/file_1_button_fra.ia16.inc.c" +}; + +u64 gFileSelFile2ButtonFRATex[] = { +#include "assets/textures/title_static/file_2_button_fra.ia16.inc.c" +}; + +u64 gFileSelFile3ButtonFRATex[] = { +#include "assets/textures/title_static/file_3_button_fra.ia16.inc.c" +}; + +u64 gFileSelYesButtonENGTex[] = { +#include "assets/textures/title_static/yes_button_eng.ia16.inc.c" +}; + +u64 gFileSelYesButtonGERTex[] = { +#include "assets/textures/title_static/yes_button_ger.ia16.inc.c" +}; + +u64 gFileSelYesButtonFRATex[] = { +#include "assets/textures/title_static/yes_button_fra.ia16.inc.c" +}; + +u64 gFileSelEraseButtonENGTex[] = { +#include "assets/textures/title_static/erase_button_eng.ia16.inc.c" +}; + +u64 gFileSelEraseButtonGERTex[] = { +#include "assets/textures/title_static/erase_button_ger.ia16.inc.c" +}; + +u64 gFileSelEraseButtonFRATex[] = { +#include "assets/textures/title_static/erase_button_fra.ia16.inc.c" +}; + +u64 gFileSelQuitButtonENGTex[] = { +#include "assets/textures/title_static/quit_button_eng.ia16.inc.c" +}; + +u64 gFileSelQuitButtonGERTex[] = { +#include "assets/textures/title_static/quit_button_ger.ia16.inc.c" +}; + +u64 gFileSelQuitButtonFRATex[] = { +#include "assets/textures/title_static/quit_button_fra.ia16.inc.c" +}; + +u64 gFileSelSurroundENGTex[] = { +#include "assets/textures/title_static/surround_eng.ia8.inc.c" +}; + +u64 gFileSelHeadsetENGTex[] = { +#include "assets/textures/title_static/headset_eng.ia8.inc.c" +}; + +u64 gFileSelHeadsetGERTex[] = { +#include "assets/textures/title_static/headset_ger.ia8.inc.c" +}; + +u64 gFileSelHeadsetFRATex[] = { +#include "assets/textures/title_static/headset_fra.ia8.inc.c" +}; + +u64 gFileSelMonoENGTex[] = { +#include "assets/textures/title_static/mono_eng.ia8.inc.c" +}; + +u64 gFileSelSOUNDENGTex[] = { +#include "assets/textures/title_static/SOUND_eng.ia8.inc.c" +}; + +u64 gFileSelSOUNDFRATex[] = { +#include "assets/textures/title_static/SOUND_fra.ia8.inc.c" +}; + +u64 gFileSelStereoENGTex[] = { +#include "assets/textures/title_static/stereo_eng.ia8.inc.c" +}; + +u64 gFileSelStereoFRATex[] = { +#include "assets/textures/title_static/stereo_fra.ia8.inc.c" +}; + +u64 gFileSelLTargetingENGTex[] = { +#include "assets/textures/title_static/l_targeting_eng.ia8.inc.c" +}; + +u64 gFileSelLTargetingGERTex[] = { +#include "assets/textures/title_static/l_targeting_ger.ia8.inc.c" +}; + +u64 gFileSelLTargetingFRATex[] = { +#include "assets/textures/title_static/l_targeting_fra.ia8.inc.c" +}; + +u64 gFileSelSwitchENGTex[] = { +#include "assets/textures/title_static/switch_eng.ia8.inc.c" +}; + +u64 gFileSelSwitchGERTex[] = { +#include "assets/textures/title_static/switch_ger.ia8.inc.c" +}; + +u64 gFileSelSwitchFRATex[] = { +#include "assets/textures/title_static/switch_fra.ia8.inc.c" +}; + +u64 gFileSelHoldENGTex[] = { +#include "assets/textures/title_static/hold_eng.ia8.inc.c" +}; + +u64 gFileSelHoldGERTex[] = { +#include "assets/textures/title_static/hold_ger.ia8.inc.c" +}; + +u64 gFileSelHoldFRATex[] = { +#include "assets/textures/title_static/hold_fra.ia8.inc.c" +}; + +u64 gFileSelCheckBrightnessENGTex[] = { +#include "assets/textures/title_static/check_brightness_eng.ia8.inc.c" +}; + +u64 gFileSelCheckBrightnessGERTex[] = { +#include "assets/textures/title_static/check_brightness_ger.ia8.inc.c" +}; + +u64 gFileSelCheckBrightnessFRATex[] = { +#include "assets/textures/title_static/check_brightness_fra.ia8.inc.c" +}; + +u64 gFileSelWidescreenENGTex[] = { +#include "assets/textures/title_static/widescreen_eng.ia8.inc.c" +}; + +u64 gFileSel4BY3ENGTex[] = { +#include "assets/textures/title_static/4by3_eng.ia8.inc.c" +}; + +u64 gFileSel16BY9ENGTex[] = { +#include "assets/textures/title_static/16by9_eng.ia8.inc.c" +}; + +u64 gFileSelOptionsButtonENGTex[] = { +#include "assets/textures/title_static/options_button_eng.ia16.inc.c" +}; + +u64 gFileSelOptionsButtonGERTex[] = { +#include "assets/textures/title_static/options_button_ger.ia16.inc.c" +}; + +u64 gFileSelSaveXTex[] = { +#include "assets/textures/title_static/save_x.i4.inc.c" +}; + +Gfx gFileSelWindow1DL[] = { + gsDPPipeSync(), + gsDPLoadTextureBlock(gFileSelWindow1Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(0, 2, 3, 1, 0), + gsDPLoadTextureBlock(gFileSelWindow5Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(4, 6, 7, 5, 0), + gsDPLoadTextureBlock(gFileSelWindow9Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(8, 10, 11, 9, 0), + gsDPLoadTextureBlock(gFileSelWindow13Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(12, 14, 15, 13, 0), + gsDPLoadTextureBlock(gFileSelWindow17Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(16, 18, 19, 17, 0), + gsDPLoadTextureBlock(gFileSelWindow2Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(20, 22, 23, 21, 0), + gsDPLoadTextureBlock(gFileSelWindow6Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(24, 26, 27, 25, 0), + gsDPLoadTextureBlock(gFileSelWindow10Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(28, 30, 31, 29, 0), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; + +Gfx gFileSelWindow2DL[] = { + gsDPLoadTextureBlock(gFileSelWindow14Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(0, 2, 3, 1, 0), + gsDPLoadTextureBlock(gFileSelWindow18Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(4, 6, 7, 5, 0), + gsDPLoadTextureBlock(gFileSelWindow3Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(8, 10, 11, 9, 0), + gsDPLoadTextureBlock(gFileSelWindow7Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(12, 14, 15, 13, 0), + gsDPLoadTextureBlock(gFileSelWindow11Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(16, 18, 19, 17, 0), + gsDPLoadTextureBlock(gFileSelWindow15Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(20, 22, 23, 21, 0), + gsDPLoadTextureBlock(gFileSelWindow19Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(24, 26, 27, 25, 0), + gsDPLoadTextureBlock(gFileSelWindow4Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 48, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(28, 30, 31, 29, 0), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; + +Gfx gFileSelWindow3DL[] = { + gsDPLoadTextureBlock(gFileSelWindow8Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 48, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(0, 2, 3, 1, 0), + gsDPLoadTextureBlock(gFileSelWindow12Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 48, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(4, 6, 7, 5, 0), + gsDPLoadTextureBlock(gFileSelWindow16Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 48, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(8, 10, 11, 9, 0), + gsDPLoadTextureBlock(gFileSelWindow20Tex, G_IM_FMT_IA, G_IM_SIZ_16b, 48, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD), + gsSP1Quadrangle(12, 14, 15, 13, 0), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; + diff --git a/assets/textures/title_static/title_static.h b/assets/textures/title_static/title_static.h new file mode 100644 index 000000000..129b07625 --- /dev/null +++ b/assets/textures/title_static/title_static.h @@ -0,0 +1,155 @@ +#ifndef TITLE_STATIC_H +#define TITLE_STATIC_H 1 + +extern u64 gFileSelConnectorTex[]; +extern u64 gFileSelForestMedallionTex[]; +extern u64 gFileSelFireMedallionTex[]; +extern u64 gFileSelWaterMedallionTex[]; +extern u64 gFileSelSpiritMedallionTex[]; +extern u64 gFileSelShadowMedallionTex[]; +extern u64 gFileSelLightMedallionTex[]; +extern u64 gFileSelWindow1Tex[]; +extern u64 gFileSelWindow2Tex[]; +extern u64 gFileSelWindow3Tex[]; +extern u64 gFileSelWindow4Tex[]; +extern u64 gFileSelWindow5Tex[]; +extern u64 gFileSelWindow6Tex[]; +extern u64 gFileSelWindow7Tex[]; +extern u64 gFileSelWindow8Tex[]; +extern u64 gFileSelWindow9Tex[]; +extern u64 gFileSelWindow10Tex[]; +extern u64 gFileSelWindow11Tex[]; +extern u64 gFileSelWindow12Tex[]; +extern u64 gFileSelWindow13Tex[]; +extern u64 gFileSelWindow14Tex[]; +extern u64 gFileSelWindow15Tex[]; +extern u64 gFileSelWindow16Tex[]; +extern u64 gFileSelWindow17Tex[]; +extern u64 gFileSelWindow18Tex[]; +extern u64 gFileSelWindow19Tex[]; +extern u64 gFileSelWindow20Tex[]; +extern u64 gFileSelKanjiButtonTex[]; +extern u64 gFileSelHiraganaButtonTex[]; +extern u64 gFileSelKatakanaButtonTex[]; +extern u64 gFileSelENDButtonENGTex[]; +extern u64 gFileSelENDButtonGERTex[]; +extern u64 gFileSelENDButtonFRATex[]; +extern u64 gFileSelBackspaceButtonTex[]; +extern u64 gFileSelNameBoxTex[]; +extern u64 gFileSelFileInfoBox1Tex[]; +extern u64 gFileSelFileInfoBox2Tex[]; +extern u64 gFileSelFileInfoBox3Tex[]; +extern u64 gFileSelFileInfoBox4Tex[]; +extern u64 gFileSelFileInfoBox5Tex[]; +extern u64 gFileSelDISKButtonTex[]; +extern u64 gFileSelOptionsDividerTex[]; +extern u64 gFileSelBrightnessCheckTex[]; +extern u64 gFileSelBigButtonHighlightTex[]; +extern u64 gFileSelCharHighlightTex[]; +extern u64 gFileSelMediumButtonHighlightTex[]; +extern u64 gFileSelSmallButtonHighlightTex[]; +extern u64 gFileSelKokiriEmeraldTex[]; +extern u64 gFileSelGoronRubyTex[]; +extern u64 gFileSelZoraSapphireTex[]; +extern u64 gFileSelNoFileToCopyENGTex[]; +extern u64 gFileSelNoFileToEraseENGTex[]; +extern u64 gFileSelNoEmptyFileENGTex[]; +extern u64 gFileSelFileEmptyENGTex[]; +extern u64 gFileSelFileInUseENGTex[]; +extern u64 gFileSelNoFileToCopyGERTex[]; +extern u64 gFileSelNoFileToEraseGERTex[]; +extern u64 gFileSelNoEmptyFileGERTex[]; +extern u64 gFileSelFileEmptyGERTex[]; +extern u64 gFileSelFileInUseGERTex[]; +extern u64 gFileSelNoFileToCopyFRATex[]; +extern u64 gFileSelNoFileToEraseFRATex[]; +extern u64 gFileSelNoEmptyFileFRATex[]; +extern u64 gFileSelFileEmptyFRATex[]; +extern u64 gFileSelFileInUseFRATex[]; +extern u64 gFileSelCopyWhichFileENGTex[]; +extern u64 gFileSelCopyToWhichFileENGTex[]; +extern u64 gFileSelAreYouSureENGTex[]; +extern u64 gFileSelFileCopiedENGTex[]; +extern u64 gFileSelWhichFile1GERTex[]; +extern u64 gFileSelCopyToWhichFileGERTex[]; +extern u64 gFileSelAreYouSureGERTex[]; +extern u64 gFileSelFileCopiedGERTex[]; +extern u64 gFileSelCopyWhichFileFRATex[]; +extern u64 gFileSelCopyToWhichFileFRATex[]; +extern u64 gFileSelAreYouSureFRATex[]; +extern u64 gFileSelFileCopiedFRATex[]; +extern u64 gFileSelPleaseSelectAFileENGTex[]; +extern u64 gFileSelOpenThisFileENGTex[]; +extern u64 gFileSelPleaseSelectAFileGERTex[]; +extern u64 gFileSelOpenThisFileGERTex[]; +extern u64 gFileSelPleaseSelectAFileFRATex[]; +extern u64 gFileSelOpenThisFileFRATex[]; +extern u64 gFileSelEraseWhichFileENGTex[]; +extern u64 gFileSelAreYouSure2ENGTex[]; +extern u64 gFileSelFileErasedENGTex[]; +extern u64 gFileSelWhichFile2GERTex[]; +extern u64 gFileSelAreYouSure2GERTex[]; +extern u64 gFileSelFileErasedGERTex[]; +extern u64 gFileSelEraseWhichFileFRATex[]; +extern u64 gFileSelAreYouSure2FRATex[]; +extern u64 gFileSelFileErasedFRATex[]; +extern u64 gFileSelOptionsENGTex[]; +extern u64 gFileSelOptionsGERTex[]; +extern u64 gFileSelNameENGTex[]; +extern u64 gFileSelNameGERTex[]; +extern u64 gFileSelNameFRATex[]; +extern u64 gFileSelControlsENGTex[]; +extern u64 gFileSelControlsGERTex[]; +extern u64 gFileSelControlsFRATex[]; +extern u64 gFileSelCopyButtonENGTex[]; +extern u64 gFileSelCopyButtonGERTex[]; +extern u64 gFileSelCopyButtonFRATex[]; +extern u64 gFileSelFile1ButtonENGTex[]; +extern u64 gFileSelFile2ButtonENGTex[]; +extern u64 gFileSelFile3ButtonENGTex[]; +extern u64 gFileSelFile1ButtonGERTex[]; +extern u64 gFileSelFile2ButtonGERTex[]; +extern u64 gFileSelFile3ButtonGERTex[]; +extern u64 gFileSelFile1ButtonFRATex[]; +extern u64 gFileSelFile2ButtonFRATex[]; +extern u64 gFileSelFile3ButtonFRATex[]; +extern u64 gFileSelYesButtonENGTex[]; +extern u64 gFileSelYesButtonGERTex[]; +extern u64 gFileSelYesButtonFRATex[]; +extern u64 gFileSelEraseButtonENGTex[]; +extern u64 gFileSelEraseButtonGERTex[]; +extern u64 gFileSelEraseButtonFRATex[]; +extern u64 gFileSelQuitButtonENGTex[]; +extern u64 gFileSelQuitButtonGERTex[]; +extern u64 gFileSelQuitButtonFRATex[]; +extern u64 gFileSelSurroundENGTex[]; +extern u64 gFileSelHeadsetENGTex[]; +extern u64 gFileSelHeadsetGERTex[]; +extern u64 gFileSelHeadsetFRATex[]; +extern u64 gFileSelMonoENGTex[]; +extern u64 gFileSelSOUNDENGTex[]; +extern u64 gFileSelSOUNDFRATex[]; +extern u64 gFileSelStereoENGTex[]; +extern u64 gFileSelStereoFRATex[]; +extern u64 gFileSelLTargetingENGTex[]; +extern u64 gFileSelLTargetingGERTex[]; +extern u64 gFileSelLTargetingFRATex[]; +extern u64 gFileSelSwitchENGTex[]; +extern u64 gFileSelSwitchGERTex[]; +extern u64 gFileSelSwitchFRATex[]; +extern u64 gFileSelHoldENGTex[]; +extern u64 gFileSelHoldGERTex[]; +extern u64 gFileSelHoldFRATex[]; +extern u64 gFileSelCheckBrightnessENGTex[]; +extern u64 gFileSelCheckBrightnessGERTex[]; +extern u64 gFileSelCheckBrightnessFRATex[]; +extern u64 gFileSelWidescreenENGTex[]; +extern u64 gFileSel4BY3ENGTex[]; +extern u64 gFileSel16BY9ENGTex[]; +extern u64 gFileSelOptionsButtonENGTex[]; +extern u64 gFileSelOptionsButtonGERTex[]; +extern u64 gFileSelSaveXTex[]; +extern Gfx gFileSelWindow1DL[]; +extern Gfx gFileSelWindow2DL[]; +extern Gfx gFileSelWindow3DL[]; +#endif diff --git a/assets/textures/title_static/widescreen_eng.ia8.png b/assets/textures/title_static/widescreen_eng.ia8.png new file mode 100755 index 000000000..0a6ba6eda Binary files /dev/null and b/assets/textures/title_static/widescreen_eng.ia8.png differ diff --git a/include/config/config_game.h b/include/config/config_game.h index 905667ffd..c95624371 100644 --- a/include/config/config_game.h +++ b/include/config/config_game.h @@ -80,7 +80,7 @@ * Use the button combo Z + R + D-Pad Up to toggle * Note: pre-rendered scenes with the fixed camera mode won't re-scale properly */ -#define ENABLE_WIDESCREEN false +#define ENABLE_WIDESCREEN true // Force widescreen mode regardless of SaveContext #define FORCE_WIDESCREEN false diff --git a/include/config/config_safeguards.h b/include/config/config_safeguards.h index 3e03aa903..71cc4f6ca 100644 --- a/include/config/config_safeguards.h +++ b/include/config/config_safeguards.h @@ -127,7 +127,7 @@ #if FORCE_WIDESCREEN #define USE_WIDESCREEN true #else - #define USE_WIDESCREEN (ENABLE_WIDESCREEN && gSaveContext.save.useWidescreen == true) + #define USE_WIDESCREEN (ENABLE_WIDESCREEN && gSaveContext.useWidescreen == true) #endif diff --git a/include/z64save.h b/include/z64save.h index 769b77ee6..9f5b4addc 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -234,7 +234,6 @@ typedef struct { /* 0x14 */ s32 totalDays; /* 0x18 */ s32 bgsDayCount; // increments with totalDays, can be cleared with `Environment_ClearBgsDayCount` /* 0x1C */ SaveInfo info; // "information" - u8 useWidescreen; } Save; typedef struct { @@ -300,6 +299,7 @@ typedef struct { /* 0x1420 */ s16 worldMapArea; /* 0x1422 */ s16 sunsSongState; // controls the effects of suns song /* 0x1424 */ s16 healthAccumulator; + u8 useWidescreen; } SaveContext; // size = 0x1428 typedef enum { diff --git a/src/code/graph.c b/src/code/graph.c index 61e0b89c5..b5e523a1d 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -448,7 +448,7 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { if (ENABLE_WIDESCREEN && CHECK_BTN_ALL(gameState->input[0].press.button, BTN_DUP) && CHECK_BTN_ALL(gameState->input[0].cur.button, BTN_Z | BTN_R)) { - gSaveContext.save.useWidescreen ^= 1; + gSaveContext.useWidescreen ^= 1; } } diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 5dae1573e..5201af45e 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -19,5 +19,5 @@ void SaveContext_Init(void) { gSaveContext.dogIsLost = true; gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; gSaveContext.prevHudVisibilityMode = HUD_VISIBILITY_ALL; - gSaveContext.save.useWidescreen = false; + gSaveContext.useWidescreen = false; } diff --git a/src/overlays/gamestates/ovl_file_choose/file_select.h b/src/overlays/gamestates/ovl_file_choose/file_select.h index b4d0db5b2..552f059a2 100644 --- a/src/overlays/gamestates/ovl_file_choose/file_select.h +++ b/src/overlays/gamestates/ovl_file_choose/file_select.h @@ -66,7 +66,8 @@ typedef enum { /* 37 */ CM_OPTIONS_MENU, /* 38 */ CM_START_OPTIONS, /* 39 */ CM_OPTIONS_TO_MAIN, - /* 40 */ CM_UNUSED_DELAY + /* 40 */ CM_UNUSED_DELAY, + CM_OPTIONS_PAGE_2 } ConfigMode; typedef enum { @@ -144,7 +145,8 @@ typedef enum { typedef enum { /* 0 */ FS_SETTING_AUDIO, - /* 1 */ FS_SETTING_TARGET + /* 1 */ FS_SETTING_TARGET, + /* 2 */ FS_SETTING_WIDESCREEN } SettingIndex; typedef enum { diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c index ccc64727d..b9f453a28 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c @@ -670,6 +670,7 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; Input* input = &this->state.input[0]; + // save the settings if (CHECK_BTN_ALL(input->press.button, BTN_B)) { Audio_PlaySfxGeneral(NA_SE_SY_FSEL_DECIDE_L, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -701,8 +702,10 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { if (gSaveContext.audioSetting > 0xF0) { gSaveContext.audioSetting = FS_AUDIO_SURROUND; } - } else { + } else if (sSelectedSetting == FS_SETTING_TARGET) { gSaveContext.zTargetSetting ^= 1; + } else { + gSaveContext.useWidescreen ^= 1; } } else if (this->stickAdjX > 30) { Audio_PlaySfxGeneral(NA_SE_SY_FSEL_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, @@ -714,19 +717,44 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { if (gSaveContext.audioSetting > FS_AUDIO_SURROUND) { gSaveContext.audioSetting = FS_AUDIO_STEREO; } - } else { + } else if (sSelectedSetting == FS_SETTING_TARGET) { gSaveContext.zTargetSetting ^= 1; + } else { + gSaveContext.useWidescreen ^= 1; } } - if ((this->stickAdjY < -30) || (this->stickAdjY > 30)) { + // check which option is selected + if ((this->stickAdjY < -30)) { Audio_PlaySfxGeneral(NA_SE_SY_FSEL_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - sSelectedSetting ^= 1; + if (sSelectedSetting == FS_SETTING_AUDIO) { + sSelectedSetting = FS_SETTING_TARGET; + } else if (sSelectedSetting == FS_SETTING_TARGET) { + sSelectedSetting = FS_SETTING_WIDESCREEN; + } else { + sSelectedSetting = FS_SETTING_AUDIO; + } + } else if ((this->stickAdjY > 30)) { + Audio_PlaySfxGeneral(NA_SE_SY_FSEL_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, + &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); + if (sSelectedSetting == FS_SETTING_AUDIO) { + sSelectedSetting = FS_SETTING_WIDESCREEN; + } else if (sSelectedSetting == FS_SETTING_TARGET) { + sSelectedSetting = FS_SETTING_AUDIO; + } else { + sSelectedSetting = FS_SETTING_TARGET; + } } else if (CHECK_BTN_ALL(input->press.button, BTN_A)) { Audio_PlaySfxGeneral(NA_SE_SY_FSEL_DECIDE_L, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - sSelectedSetting ^= 1; + if (sSelectedSetting == FS_SETTING_AUDIO) { + sSelectedSetting = FS_SETTING_TARGET; + } else if (sSelectedSetting == FS_SETTING_TARGET) { + sSelectedSetting = FS_SETTING_WIDESCREEN; + } else { + sSelectedSetting = FS_SETTING_AUDIO; + } } } @@ -752,10 +780,15 @@ static OptionsMenuTextureInfo sOptionsMenuHeaders[] = { { 64, 144, 64 }, 16, }, - { + /*TEMPORARILY DISABLED, BECAUSE WIDESCREEN REPLACES BRIGHTNESS ATM{ { gFileSelCheckBrightnessENGTex, gFileSelCheckBrightnessGERTex, gFileSelCheckBrightnessFRATex }, { 128, 128, 128 }, 16, + },*/ + { + { gFileSelWidescreenENGTex, gFileSelWidescreenENGTex, gFileSelWidescreenENGTex }, + { 64, 64, 64 }, + 16, }, }; @@ -790,6 +823,16 @@ static OptionsMenuTextureInfo sOptionsMenuSettings[] = { { 48, 80, 48 }, 16, }, + { + { gFileSel4BY3ENGTex, gFileSel4BY3ENGTex, gFileSel4BY3ENGTex }, + { 48, 48, 48 }, + 16, + }, + { + { gFileSel16BY9ENGTex, gFileSel16BY9ENGTex, gFileSel16BY9ENGTex }, + { 48, 48, 48 }, + 16, + }, }; void FileSelect_DrawOptionsImpl(GameState* thisx) { @@ -905,6 +948,7 @@ void FileSelect_DrawOptionsImpl(GameState* thisx) { gSPVertex(POLY_OPA_DISP++, D_80811F30, 32, 0); } + // draw audio options for (i = 0, vtx = 0; i < 4; i++, vtx += 4) { gDPPipeSync(POLY_OPA_DISP++); if (i == gSaveContext.audioSetting) { @@ -921,23 +965,22 @@ void FileSelect_DrawOptionsImpl(GameState* thisx) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); } - //! @bug Mistakenly using sOptionsMenuHeaders instead of sOptionsMenuSettings for the height. - //! This works out anyway because all heights are 16. gDPLoadTextureBlock(POLY_OPA_DISP++, sOptionsMenuSettings[i].texture[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, sOptionsMenuSettings[i].width[gSaveContext.language], - sOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + sOptionsMenuSettings[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } + // draw target options for (; i < 6; i++, vtx += 4) { gDPPipeSync(POLY_OPA_DISP++); if (i == (gSaveContext.zTargetSetting + 4)) { - if (sSelectedSetting != FS_SETTING_AUDIO) { + if (sSelectedSetting == FS_SETTING_TARGET) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cursorPrimRed, cursorPrimGreen, cursorPrimBlue, this->titleAlpha[0]); - gDPSetEnvColor(POLY_OPA_DISP++, cursorEnvRed, cursorEnvGreen, cursorEnvBlue, 0xFF); + gDPSetEnvColor(POLY_OPA_DISP++, cursorEnvRed, cursorEnvGreen, cursorEnvBlue, 255); } else { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[0]); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); @@ -947,12 +990,34 @@ void FileSelect_DrawOptionsImpl(GameState* thisx) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); } - //! @bug Mistakenly using sOptionsMenuHeaders instead of sOptionsMenuSettings for the height. - //! This is also an OOB read that happens to access the height of the first two elements in - //! sOptionsMenuSettings, and since all heights are 16, it works out anyway. gDPLoadTextureBlock(POLY_OPA_DISP++, sOptionsMenuSettings[i].texture[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, sOptionsMenuSettings[i].width[gSaveContext.language], - sOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + sOptionsMenuSettings[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); + } + + // draw widescreen options + for (; i < 8; i++, vtx += 4) { + gDPPipeSync(POLY_OPA_DISP++); + + if (i == (gSaveContext.useWidescreen + 6)) { + if (sSelectedSetting == FS_SETTING_WIDESCREEN) { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cursorPrimRed, cursorPrimGreen, cursorPrimBlue, + this->titleAlpha[0]); + gDPSetEnvColor(POLY_OPA_DISP++, cursorEnvRed, cursorEnvGreen, cursorEnvBlue, 255); + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[0]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + } + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 120, 120, 120, this->titleAlpha[0]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + } + + gDPLoadTextureBlock(POLY_OPA_DISP++, sOptionsMenuSettings[i].texture[gSaveContext.language], G_IM_FMT_IA, + G_IM_SIZ_8b, sOptionsMenuSettings[i].width[gSaveContext.language], + sOptionsMenuSettings[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } @@ -960,7 +1025,8 @@ void FileSelect_DrawOptionsImpl(GameState* thisx) { gDPPipeSync(POLY_OPA_DISP++); // check brightness bars - gDPLoadTextureBlock_4b(POLY_OPA_DISP++, gFileSelBrightnessCheckTex, G_IM_FMT_IA, 96, 16, 0, + // TEMPORARY: REPLACES BRIGHTNESS SETTINGS + /*gDPLoadTextureBlock_4b(POLY_OPA_DISP++, gFileSelBrightnessCheckTex, G_IM_FMT_IA, 96, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 55, 55, 55, this->titleAlpha[0]); @@ -974,7 +1040,7 @@ void FileSelect_DrawOptionsImpl(GameState* thisx) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); - vtx += 4; + vtx += 4;*/ // blue divider lines gDPPipeSync(POLY_OPA_DISP++);