From 9e6afa81f9868daa5df321c1296078619e881357 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 22 Mar 2020 13:50:24 +1000 Subject: [PATCH] Decompile menuhandlerScreenSplit --- src/game/data/data_0160b0.c | 591 ------------------------ src/game/game_102240.c | 670 +++++++++++++++++++++++----- src/include/game/data/data_0160b0.h | 1 + src/include/game/game_102240.h | 2 +- 4 files changed, 565 insertions(+), 699 deletions(-) diff --git a/src/game/data/data_0160b0.c b/src/game/data/data_0160b0.c index a2b9de1cd..26ff84add 100644 --- a/src/game/data/data_0160b0.c +++ b/src/game/data/data_0160b0.c @@ -1428,594 +1428,3 @@ u16 g_SoundModeOptions[] = { L_OPTIONS(234), // "Headphone" L_OPTIONS(235), // "Surround" }; - -// 17a10 -u16 g_ScreenSizeOptions[] = { - L_OPTIONS(220), // "Full" - L_OPTIONS(221), // "Wide" - L_OPTIONS(222), // "Cinema" - 0x0000, // "" -}; - -// 17a18 -u16 g_ScreenRatioOptions[] = { - L_OPTIONS(223), // "Normal" - L_OPTIONS(224), // "16:9" -}; - -// 17a1c -u16 g_ScreenSplitOptions[] = { - L_OPTIONS(225), // "Horizontal" - L_OPTIONS(226), // "Vertical" -}; - -// 17a20 -struct menu_item menuitems_briefing[] = { - { MENUITEMTYPE_SCROLLABLE, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 17a48 -struct menu_dialog menudialog_briefing = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(247), // "Briefing" - menuitems_briefing, - menudialog00103368, - 0x00000008, - NULL, -}; - -// 17a60 -struct menu_item menuitems_objectives[] = { - { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(274), 0x00000000, menuhandlerAcceptMission }, // "Accept" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(275), 0x00000000, NULL }, // "Decline" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 17ab0 -struct menu_dialog g_ObjectivesMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - (u32)&soloMenuTitleStageOverview, - menuitems_objectives, - menudialog00103608, - 0x0000000c, - &menudialog_briefing, -}; - -// 17ac8 -struct menu_item menuitems_perfectdarkmodesettings[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000012, L_MPWEAPONS(222), 0x00000000, NULL }, // "Choose Settings:" - { MENUITEMTYPE_SLIDER, 1, 0x00100000, L_MPWEAPONS(224), 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Health" - { MENUITEMTYPE_SLIDER, 2, 0x00100000, L_MPWEAPONS(225), 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Damage" - { MENUITEMTYPE_SLIDER, 3, 0x00100000, L_MPWEAPONS(226), 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Accuracy" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000b4, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(227), 0x00000000, menuhandlerAcceptPdModeSettings }, // "OK" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPWEAPONS(228), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 17b68 -struct menu_dialog g_PdModeSettingsDialog = { - MENUDIALOGTYPE_DEFAULT, - L_MPWEAPONS(221), // "Perfect Dark" - menuitems_perfectdarkmodesettings, - NULL, - 0x00000004, - NULL, -}; - -// 17b80 -struct menu_item menuitems_selectdifficulty[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000012, L_OPTIONS(249), L_OPTIONS(250), NULL }, // "Difficulty" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(251), (u32)&soloMenuTextBestTime, menuhandlerSoloDifficulty }, // "Agent" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(252), (u32)&soloMenuTextBestTime, menuhandlerSoloDifficulty }, // "Special Agent" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(253), (u32)&soloMenuTextBestTime, menuhandlerSoloDifficulty }, // "Perfect Agent" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(221), 0x00000000, menuhandlerPdMode }, // "Perfect Dark" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(254), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 17c20 -struct menu_dialog menudialog_selectdifficulty = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(248), // "Select Difficulty" - menuitems_selectdifficulty, - NULL, - 0x00000004, - NULL, -}; - -// 17c38 -struct menu_item menuitems_cooperativeoptions[] = { - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(256), 0x00000000, menuhandlerCoopRadar }, // "Radar On" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(257), 0x00000000, menuhandlerCoopFriendlyFire }, // "Friendly Fire" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(258), 0x00000000, menuhandlerCoopBuddy }, // "Perfect Buddy" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, // "" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(259), 0x00000000, menuhandlerBuddyOptionsContinue }, // "Continue" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(260), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, // "" -}; - -// 17cc4 -struct menu_dialog g_CoopOptionsMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(255), // "Co-Operative Options" - menuitems_cooperativeoptions, - menudialogCoopAntiOptions, - 0x00000004, - NULL, -}; - -// 17cdc -struct menu_item menuitems_counteroperativeoptions[] = { - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(267), 0x00000000, menuhandlerAntiRadar }, // "Radar On" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(268), 0x00000000, menuhandlerAntiPlayer }, // "Counter-Operative" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(269), 0x00000000, menuhandlerBuddyOptionsContinue }, // "Continue" - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(270), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 17d54 -struct menu_dialog g_AntiOptionsMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(266), // "Counter-Operative Options" - menuitems_counteroperativeoptions, - menudialogCoopAntiOptions, - 0x00000004, - NULL, -}; - -// 17d6c -struct menu_item menuitems_selectdifficulty2[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(251), 0x00000000, menuhandlerCoopDifficulty }, // "Agent" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(252), 0x00000000, menuhandlerCoopDifficulty }, // "Special Agent" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(253), 0x00000000, menuhandlerCoopDifficulty }, // "Perfect Agent" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(254), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 17de4 -struct menu_dialog menudialog_selectdifficulty2 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(248), // "Select Difficulty" - menuitems_selectdifficulty2, - NULL, - 0x00000004, - NULL, -}; - -// 17dfc -struct menu_item menuitems_selectdifficulty3[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(251), 0x00000000, menuhandlerAntiDifficulty }, // "Agent" - { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(252), 0x00000000, menuhandlerAntiDifficulty }, // "Special Agent" - { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(253), 0x00000000, menuhandlerAntiDifficulty }, // "Perfect Agent" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(254), 0x00000000, NULL }, // "Cancel" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 17e74 -struct menu_dialog menudialog_selectdifficulty3 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(248), // "Select Difficulty" - menuitems_selectdifficulty3, - NULL, - 0x00000004, - NULL, -}; - -// 17e8c -struct stageoverviewentry g_StageNames[NUM_SOLOSTAGES] = { - // stage, unk04, name1, name2, name3 - { STAGE_DEFECTION, 0x0c, 0x5685, 0x5686, 0x547c }, - { STAGE_INVESTIGATION, 0x0d, 0x5687, 0x5688, 0x54ac }, - { STAGE_EXTRACTION, 0x0e, 0x5689, 0x568a, 0x547d }, - { STAGE_VILLA, 0x0f, 0x568b, 0x568c, 0x568b }, - { STAGE_CHICAGO, 0x10, 0x568d, 0x568e, 0x568d }, - { STAGE_G5BUILDING, 0x11, 0x568f, 0x5690, 0x568f }, - { STAGE_INFILTRATION, 0x12, 0x5691, 0x5692, 0x547e }, - { STAGE_RESCUE, 0x13, 0x5693, 0x5694, 0x547f }, - { STAGE_ESCAPE, 0x14, 0x5695, 0x5696, 0x5480 }, - { STAGE_AIRBASE, 0x15, 0x5697, 0x5698, 0x5697 }, - { STAGE_AIRFORCEONE, 0x16, 0x5699, 0x569a, 0x5699 }, - { STAGE_CRASHSITE, 0x17, 0x569b, 0x569c, 0x569b }, - { STAGE_PELAGIC, 0x18, 0x569d, 0x569e, 0x569d }, - { STAGE_DEEPSEA, 0x19, 0x569f, 0x56a0, 0x569f }, - { STAGE_DEFENSE, 0x1a, 0x56a1, 0x56a2, 0x56a1 }, - { STAGE_ATTACKSHIP, 0x1b, 0x56a3, 0x56a4, 0x56a3 }, - { STAGE_SKEDARRUINS, 0x1c, 0x56a5, 0x56a6, 0x56a5 }, - { STAGE_MBR, 0x1c, 0x56a7, 0x5603, 0x56a7 }, - { STAGE_MAIANSOS, 0x1c, 0x56a8, 0x5603, 0x56a8 }, - { STAGE_WAR, 0x1c, 0x56aa, 0x5603, 0x56aa }, - { STAGE_DUEL, 0x1c, 0x56ab, 0x5603, 0x56ab }, -}; - -// 17f88 -struct mission missions[] = { - // first stage index, name - { 0, L_OPTIONS(123) }, // "Mission 1" - { 3, L_OPTIONS(124) }, // "Mission 2" - { 4, L_OPTIONS(125) }, // "Mission 3" - { 6, L_OPTIONS(126) }, // "Mission 4" - { 9, L_OPTIONS(127) }, // "Mission 5" - { 12, L_OPTIONS(128) }, // "Mission 6" - { 14, L_OPTIONS(129) }, // "Mission 7" - { 15, L_OPTIONS(130) }, // "Mission 8" - { 16, L_OPTIONS(131) }, // "Mission 9" - { 99, L_OPTIONS(132) }, // "Special Assignments" -}; - -// 17fd8 -struct menu_item menuitems_17fd8[] = { - { MENUITEMTYPE_SCROLLABLE, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18000 -struct menu_item menuitems_18000[] = { - { MENUITEMTYPE_SCROLLABLE, 0, 0x00000000, 0x00000078, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18028 -struct menu_dialog menudialog_18028 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(247), // "Briefing" - menuitems_17fd8, - NULL, - 0x00000008, - NULL, -}; - -// 18040 -struct menu_dialog menudialog_18040 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(247), // "Briefing" - menuitems_17fd8, - NULL, - 0x00000008, - NULL, -}; - -// 18058 -struct menu_dialog menudialog_18058 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(247), // "Briefing" - menuitems_18000, - NULL, - 0x00000008, - NULL, -}; - -// 18070 -struct menu_item menuitems_control[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000050, 0x00000000, menuhandler001024dc }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18098 -struct menu_dialog g_ControlStyleMultiMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(236), // "Control" - menuitems_control, - NULL, - 0x00000400, - NULL, -}; - -// 180b0 -struct menu_item menuitems_control2[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000028, 0x00000096, menuhandler001024dc }, - { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 180ec -struct menu_dialog g_ControlStyleSingleMenuDialog = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(236), // "Control" - menuitems_control2, - NULL, - 0x00000400, - NULL, -}; - -// 18104 -struct menu_item menuitems_control3[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000028, 0x00000096, menuhandler001024dc }, - { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18140 -struct menu_dialog menudialog_control3 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(236), // "Control" - menuitems_control3, - NULL, - 0x00000400, - NULL, -}; - -// 18158 -struct menu_item menuitems_control4[] = { - { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000028, 0x00000096, menuhandler001024fc }, - { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18194 -struct menu_dialog menudialog_control4 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(236), // "Control" - menuitems_control4, - NULL, - 0x00000400, - NULL, -}; - -// 181ac -struct menu_item menuitems_audiooptions[] = { - { MENUITEMTYPE_SLIDER, 0, L_LEN(0), L_OPTIONS(228), L_MPMENU(0), menuhandlerSfxVolume }, // "Sound" - { MENUITEMTYPE_SLIDER, 0, L_LEN(0), L_OPTIONS(229), L_MPMENU(0), menuhandlerMusicVolume }, // "Music" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(230), 0x00000000, menuhandlerSoundMode }, // "Sound Mode" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(218), 0x00000000, menuhandlerLangFilter }, // "Language Filter" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(231), 0x00000000, NULL }, // "" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18238 -struct menu_dialog menudialog_audiooptions = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(227), // "Audio Options" - menuitems_audiooptions, - NULL, - 0x00000000, - NULL, -}; - -// 18250 -struct menu_item menuitems_audiooptions2[] = { - { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS(228), L_MPMENU(0), menuhandlerSfxVolume }, // "Sound" - { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS(229), L_MPMENU(0), menuhandlerMusicVolume }, // "Music" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPWEAPONS(153), 0x00000000, menuhandlerSoundMode }, // "Mode" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(218), 0x00000000, menuhandlerLangFilter }, // "Language Filter" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(231), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 182dc -struct menu_dialog menudialog_audiooptionsshort = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(227), // "Audio Options" - menuitems_audiooptions2, - NULL, - 0x00000000, - NULL, -}; - -// 182f4 -struct menu_item menuitems_videooptions[] = { - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(215), 0x00000000, menuhandlerScreenSize }, // "Screen Size" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(216), 0x00000000, menuhandlerScreenRatio }, // "Ratio" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(217), 0x00000000, menuhandlerHiRes }, // "Hi-Res" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(218), 0x00000000, menuhandlerScreenSplit }, // "2-Player Screen Split" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(170), 0x00000000, menuhandlerAlternativeTitle }, // "Alternative Title Screen" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(219), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18394 -struct menu_item menuitems_videooptionsshort[] = { - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(216), 0x00000000, menuhandlerScreenRatio }, // "Ratio" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(217), 0x00000000, menuhandlerHiRes }, // "Hi-Res" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPWEAPONS(154), 0x00000000, menuhandlerScreenSplit }, // "Split" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(219), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1840c -struct menu_dialog menudialog_videooptions = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(214), // "Video Options" - menuitems_videooptions, - NULL, - 0x00000000, - NULL, -}; - -// 18424 -struct menu_dialog menudialog_videooptionsshort = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(214), // "Video Options" - menuitems_videooptionsshort, - NULL, - 0x00000000, - NULL, -}; - -// 1843c -struct menu_item menuitems_displayoptions[] = { - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(205), 0x00000004, menuhandlerSightOnScreen }, // "Sight on Screen" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(206), 0x00000004, menuhandlerAlwaysShowTarget }, // "Always Show Target" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(207), 0x00000004, menuhandlerShowZoomRange }, // "Show Zoom Range" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(208), 0x00000004, menuhandlerAmmoOnScreen }, // "Ammo on Screen" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(209), 0x00000004, menuhandlerShowGunFunction }, // "Show Gun Function" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(210), 0x00000004, menuhandlerPaintball }, // "Paintball" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(169), 0x00000004, menuhandlerInGameSubtitles }, // "In-Game Subtitles" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(168), 0x00000004, menuhandlerCutsceneSubtitles }, // "Cutscene Subtitles" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(212), 0x00000004, menuhandlerShowMissionTime }, // "Show Mission Time" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(213), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 1852c -struct menu_dialog menudialog_displayoptions = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(203), // "Display Options" - menuitems_displayoptions, - NULL, - 0x00000000, - NULL, -}; - -// 18544 -struct menu_item menuitems_displayoptionsshort[] = { - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(145), 0x00000004, menuhandlerSightOnScreen }, // "Sight on Screen" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(146), 0x00000004, menuhandlerAlwaysShowTarget }, // "Target" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(147), 0x00000004, menuhandlerShowZoomRange }, // "Zoom Range" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(148), 0x00000004, menuhandlerAmmoOnScreen }, // "Show Ammo" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(149), 0x00000004, menuhandlerShowGunFunction }, // "Gun Function" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(150), 0x00000004, menuhandlerPaintball }, // "Paintball" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(169), 0x00000004, menuhandlerInGameSubtitles }, // "In-Game Subtitles" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(168), 0x00000004, menuhandlerCutsceneSubtitles }, // "Cutscene Subtitles" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(152), 0x00000004, menuhandlerShowMissionTime }, // "Mission Time" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(213), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18634 -struct menu_dialog menudialog_displayoptionsshort = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(203), // "Display Options" - menuitems_displayoptionsshort, - NULL, - 0x00000000, - NULL, -}; - -// 1864c -struct menu_item menuitems_displayoptions_2pplayer1[] = { - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(205), 0x00000004, menuhandlerSightOnScreen }, // "Sight on Screen" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(206), 0x00000004, menuhandlerAlwaysShowTarget }, // "Always Show Target" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(207), 0x00000004, menuhandlerShowZoomRange }, // "Show Zoom Range" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(208), 0x00000004, menuhandlerAmmoOnScreen }, // "Ammo on Screen" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(209), 0x00000004, menuhandlerShowGunFunction }, // "Show Gun Function" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(210), 0x00000004, menuhandlerPaintball }, // "Paintball" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(169), 0x00000004, menuhandlerInGameSubtitles }, // "In-Game Subtitles" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(168), 0x00000004, menuhandlerCutsceneSubtitles }, // "Cutscene Subtitles" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(212), 0x00000004, menuhandlerShowMissionTime }, // "Show Mission Time" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(213), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -struct menu_dialog menudialog_displayplayer2; - -// 1873c -struct menu_dialog menudialog_displayoptions_2pplayer1 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(203), // "Display Options" - menuitems_displayoptions_2pplayer1, - NULL, - 0x00000000, - &menudialog_displayplayer2, -}; - -// 18754 -struct menu_item menuitems_displayplayer2[] = { - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056cd, 0x00000005, menuhandlerSightOnScreen }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056ce, 0x00000005, menuhandlerAlwaysShowTarget }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056cf, 0x00000005, menuhandlerShowZoomRange }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d0, 0x00000005, menuhandlerAmmoOnScreen }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d1, 0x00000005, menuhandlerShowGunFunction }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d2, 0x00000005, menuhandlerPaintball }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000054a9, 0x00000005, menuhandlerInGameSubtitles }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000054a8, 0x00000005, menuhandlerCutsceneSubtitles }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d4, 0x00000005, menuhandlerShowMissionTime }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000056d5, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18844 -struct menu_dialog menudialog_displayplayer2 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(204), // "Display Player 2" - menuitems_displayplayer2, - NULL, - 0x00000000, - NULL, -}; - -// 1885c -struct menu_item menuitems_controloptions[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(194), (u32)&func0f105664, menuhandlerControlStyle }, // "Control Style" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(195), 0x00000004, menuhandlerReversePitch }, // "Reverse Pitch" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(196), 0x00000004, menuhandlerLookAhead }, // "Look Ahead" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(197), 0x00000004, menuhandlerHeadRoll }, // "Head Roll" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(198), 0x00000004, menuhandlerAutoAim }, // "Auto-Aim" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(199), 0x00000004, menuhandlerAimControl }, // "Aim Control" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(200), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18910 -struct menu_dialog menudialog_controloptions = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(192), // "Control Options" - menuitems_controloptions, - NULL, - 0x00000000, - NULL, -}; - -// 18928 -struct menu_item menuitems_18928[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_OPTIONS(194), (u32)&func0f105664, &menudialog_control3 }, // "Control Style" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(195), 0x00000004, menuhandlerReversePitch }, // "Reverse Pitch" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(196), 0x00000004, menuhandlerLookAhead }, // "Look Ahead" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(197), 0x00000004, menuhandlerHeadRoll }, // "Head Roll" - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(198), 0x00000004, menuhandlerAutoAim }, // "Auto-Aim" - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(199), 0x00000004, menuhandlerAimControl }, // "Aim Control" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(200), 0x00000000, NULL }, // "Back" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -struct menu_dialog menudialog_18aa8; - -// 189dc -struct menu_dialog menudialog_189dc = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(192), // "Control Options" - menuitems_18928, - NULL, - 0x00000000, - &menudialog_18aa8, -}; - -// 189f4 -struct menu_item menuitems_189f4[] = { - { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000056c2, (u32)&func0f1056a0, &menudialog_control4 }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c3, 0x00000005, menuhandlerReversePitch }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c4, 0x00000005, menuhandlerLookAhead }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c5, 0x00000005, menuhandlerHeadRoll }, - { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c6, 0x00000005, menuhandlerAutoAim }, - { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, 0x000056c7, 0x00000005, menuhandlerAimControl }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000056c8, 0x00000000, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - -// 18aa8 -struct menu_dialog menudialog_18aa8 = { - MENUDIALOGTYPE_DEFAULT, - L_OPTIONS(193), // "Control Player 2" - menuitems_189f4, - NULL, - 0x00000000, - NULL, -}; - diff --git a/src/game/game_102240.c b/src/game/game_102240.c index df0110f74..8640dd87e 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -509,113 +509,54 @@ glabel menuhandlerScreenRatio /* f1028c8: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel menuhandlerScreenSplit -/* f1028cc: 27bdffc8 */ addiu $sp,$sp,-56 -/* f1028d0: 3c0e8007 */ lui $t6,%hi(g_ScreenSplitOptions) -/* f1028d4: afbf0014 */ sw $ra,0x14($sp) -/* f1028d8: afa5003c */ sw $a1,0x3c($sp) -/* f1028dc: 25ce19fc */ addiu $t6,$t6,%lo(g_ScreenSplitOptions) -/* f1028e0: 8dc10000 */ lw $at,0x0($t6) -/* f1028e4: 27a20034 */ addiu $v0,$sp,0x34 -/* f1028e8: 24080002 */ addiu $t0,$zero,0x2 -/* f1028ec: ac410000 */ sw $at,0x0($v0) -/* f1028f0: 24010001 */ addiu $at,$zero,0x1 -/* f1028f4: 10810009 */ beq $a0,$at,.L0f10291c -/* f1028f8: 24010003 */ addiu $at,$zero,0x3 -/* f1028fc: 10810009 */ beq $a0,$at,.L0f102924 -/* f102900: 24010006 */ addiu $at,$zero,0x6 -/* f102904: 1081000e */ beq $a0,$at,.L0f102940 -/* f102908: 24010007 */ addiu $at,$zero,0x7 -/* f10290c: 10810043 */ beq $a0,$at,.L0f102a1c -/* f102910: 00000000 */ sll $zero,$zero,0x0 -/* f102914: 10000046 */ beqz $zero,.L0f102a30 -/* f102918: 00001025 */ or $v0,$zero,$zero -.L0f10291c: -/* f10291c: 10000043 */ beqz $zero,.L0f102a2c -/* f102920: acc80000 */ sw $t0,0x0($a2) -.L0f102924: -/* f102924: 8cc90000 */ lw $t1,0x0($a2) -/* f102928: 00095040 */ sll $t2,$t1,0x1 -/* f10292c: 004a5821 */ addu $t3,$v0,$t2 -/* f102930: 0fc5b9f1 */ jal langGet -/* f102934: 95640000 */ lhu $a0,0x0($t3) -/* f102938: 1000003e */ beqz $zero,.L0f102a34 -/* f10293c: 8fbf0014 */ lw $ra,0x14($sp) -.L0f102940: -/* f102940: 0fc54bcd */ jal optionsGetScreenSplit -/* f102944: afa60040 */ sw $a2,0x40($sp) -/* f102948: 8fa60040 */ lw $a2,0x40($sp) -/* f10294c: 8cc30000 */ lw $v1,0x0($a2) -/* f102950: 50430037 */ beql $v0,$v1,.L0f102a30 -/* f102954: 00001025 */ or $v0,$zero,$zero -/* f102958: 0fc54bd0 */ jal optionsSetScreenSplit -/* f10295c: 306400ff */ andi $a0,$v1,0xff -/* f102960: 3c02800a */ lui $v0,%hi(g_Vars) -/* f102964: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f102968: 8c4c0458 */ lw $t4,0x458($v0) -/* f10296c: 8c58006c */ lw $t8,0x6c($v0) -/* f102970: 00002825 */ or $a1,$zero,$zero -/* f102974: 358d0001 */ ori $t5,$t4,0x1 -/* f102978: 13000003 */ beqz $t8,.L0f102988 -/* f10297c: ac4d0458 */ sw $t5,0x458($v0) -/* f102980: 10000001 */ beqz $zero,.L0f102988 -/* f102984: 24050001 */ addiu $a1,$zero,0x1 -.L0f102988: -/* f102988: 8c4f0068 */ lw $t7,0x68($v0) -/* f10298c: 00001825 */ or $v1,$zero,$zero -/* f102990: 00002025 */ or $a0,$zero,$zero -/* f102994: 11e00003 */ beqz $t7,.L0f1029a4 -/* f102998: 00000000 */ sll $zero,$zero,0x0 -/* f10299c: 10000001 */ beqz $zero,.L0f1029a4 -/* f1029a0: 24030001 */ addiu $v1,$zero,0x1 -.L0f1029a4: -/* f1029a4: 8c4e0064 */ lw $t6,0x64($v0) -/* f1029a8: 11c00003 */ beqz $t6,.L0f1029b8 -/* f1029ac: 00000000 */ sll $zero,$zero,0x0 -/* f1029b0: 10000001 */ beqz $zero,.L0f1029b8 -/* f1029b4: 24040001 */ addiu $a0,$zero,0x1 -.L0f1029b8: -/* f1029b8: 8c590070 */ lw $t9,0x70($v0) -/* f1029bc: 00001025 */ or $v0,$zero,$zero -/* f1029c0: 13200003 */ beqz $t9,.L0f1029d0 -/* f1029c4: 00000000 */ sll $zero,$zero,0x0 -/* f1029c8: 10000001 */ beqz $zero,.L0f1029d0 -/* f1029cc: 24020001 */ addiu $v0,$zero,0x1 -.L0f1029d0: -/* f1029d0: 00444021 */ addu $t0,$v0,$a0 -/* f1029d4: 01034821 */ addu $t1,$t0,$v1 -/* f1029d8: 01255021 */ addu $t2,$t1,$a1 -/* f1029dc: 29410002 */ slti $at,$t2,0x2 -/* f1029e0: 14200012 */ bnez $at,.L0f102a2c -/* f1029e4: 3c028007 */ lui $v0,%hi(g_MpPlayerNum) -/* f1029e8: 24421448 */ addiu $v0,$v0,%lo(g_MpPlayerNum) -/* f1029ec: 8c4b0000 */ lw $t3,0x0($v0) -/* f1029f0: ac400000 */ sw $zero,0x0($v0) -/* f1029f4: 0fc3e048 */ jal func0f0f8120 -/* f1029f8: afab0030 */ sw $t3,0x30($sp) -/* f1029fc: 240c0001 */ addiu $t4,$zero,0x1 -/* f102a00: 3c018007 */ lui $at,%hi(g_MpPlayerNum) -/* f102a04: 0fc3e048 */ jal func0f0f8120 -/* f102a08: ac2c1448 */ sw $t4,%lo(g_MpPlayerNum)($at) -/* f102a0c: 8fad0030 */ lw $t5,0x30($sp) -/* f102a10: 3c018007 */ lui $at,%hi(g_MpPlayerNum) -/* f102a14: 10000005 */ beqz $zero,.L0f102a2c -/* f102a18: ac2d1448 */ sw $t5,%lo(g_MpPlayerNum)($at) -.L0f102a1c: -/* f102a1c: 0fc54bcd */ jal optionsGetScreenSplit -/* f102a20: afa60040 */ sw $a2,0x40($sp) -/* f102a24: 8fa60040 */ lw $a2,0x40($sp) -/* f102a28: acc20000 */ sw $v0,0x0($a2) -.L0f102a2c: -/* f102a2c: 00001025 */ or $v0,$zero,$zero -.L0f102a30: -/* f102a30: 8fbf0014 */ lw $ra,0x14($sp) -.L0f102a34: -/* f102a34: 27bd0038 */ addiu $sp,$sp,0x38 -/* f102a38: 03e00008 */ jr $ra -/* f102a3c: 00000000 */ sll $zero,$zero,0x0 -); +u16 g_ScreenSizeOptions[] = { + L_OPTIONS(220), // "Full" + L_OPTIONS(221), // "Wide" + L_OPTIONS(222), // "Cinema" + 0x0000, // "" +}; + +u16 g_ScreenRatioOptions[] = { + L_OPTIONS(223), // "Normal" + L_OPTIONS(224), // "16:9" +}; + +char *menuhandlerScreenSplit(u32 operation, struct menu_item *item, s32 *value) +{ + u16 options[] = { + L_OPTIONS(225), // "Horizontal" + L_OPTIONS(226), // "Vertical" + }; + + switch (operation) { + case MENUOP_GETOPTIONCOUNT: + *value = 2; + break; + case MENUOP_GETOPTIONTEXT: + return langGet(options[*value]); + case MENUOP_SET: + if (optionsGetScreenSplit() != *value) { + optionsSetScreenSplit(*value); + + g_Vars.unk000458 |= 1; + + if (PLAYERCOUNT() > 1) { + u32 prevplayernum = g_MpPlayerNum; + g_MpPlayerNum = 0; + func0f0f8120(); + g_MpPlayerNum = 1; + func0f0f8120(); + g_MpPlayerNum = prevplayernum; + } + } + break; + case MENUOP_GETOPTIONVALUE: + *value = optionsGetScreenSplit(); + break; + } + + return NULL; +} s32 menuhandlerLookAhead(u32 operation, struct menu_item *item, bool *enable) { @@ -983,6 +924,20 @@ glabel menudialog00103368 /* f1033f4: 00000000 */ sll $zero,$zero,0x0 ); +struct menu_item menuitems_briefing[] = { + { MENUITEMTYPE_SCROLLABLE, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_briefing = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(247), // "Briefing" + menuitems_briefing, + menudialog00103368, + 0x00000008, + NULL, +}; + GLOBAL_ASM( glabel menuhandlerAcceptMission /* f1033f8: 27bdffe8 */ addiu $sp,$sp,-24 @@ -1170,6 +1125,22 @@ s32 menudialog00103608(u32 operation, struct menu_dialog *dialog, struct menusta return 0; } +struct menu_item menuitems_objectives[] = { + { MENUITEMTYPE_OBJECTIVES, 1, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(274), 0x00000000, menuhandlerAcceptMission }, // "Accept" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(275), 0x00000000, NULL }, // "Decline" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_ObjectivesMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + (u32)&soloMenuTitleStageOverview, + menuitems_objectives, + menudialog00103608, + 0x0000000c, + &menudialog_briefing, +}; + f32 func0f1036ac(u8 value, s32 prop) { if (prop == PDMODEPROP_REACTION) { @@ -1228,6 +1199,26 @@ s32 menuhandlerAcceptPdModeSettings(s32 operation, struct menu_item *item, bool return 0; } +struct menu_item menuitems_perfectdarkmodesettings[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000012, L_MPWEAPONS(222), 0x00000000, NULL }, // "Choose Settings:" + { MENUITEMTYPE_SLIDER, 1, 0x00100000, L_MPWEAPONS(224), 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Health" + { MENUITEMTYPE_SLIDER, 2, 0x00100000, L_MPWEAPONS(225), 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Damage" + { MENUITEMTYPE_SLIDER, 3, 0x00100000, L_MPWEAPONS(226), 0x000000ff, menuhandlerPdModeSetting }, // "Enemy Accuracy" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000b4, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(227), 0x00000000, menuhandlerAcceptPdModeSettings }, // "OK" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPWEAPONS(228), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_PdModeSettingsDialog = { + MENUDIALOGTYPE_DEFAULT, + L_MPWEAPONS(221), // "Perfect Dark" + menuitems_perfectdarkmodesettings, + NULL, + 0x00000004, + NULL, +}; + GLOBAL_ASM( glabel isStageDifficultyUnlocked /* f1038ec: 28810011 */ slti $at,$a0,0x11 @@ -1596,6 +1587,26 @@ char *soloMenuTextBestTime(struct menu_item *item) return g_StringPointer; } +struct menu_item menuitems_selectdifficulty[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000012, L_OPTIONS(249), L_OPTIONS(250), NULL }, // "Difficulty" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(251), (u32)&soloMenuTextBestTime, menuhandlerSoloDifficulty }, // "Agent" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(252), (u32)&soloMenuTextBestTime, menuhandlerSoloDifficulty }, // "Special Agent" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(253), (u32)&soloMenuTextBestTime, menuhandlerSoloDifficulty }, // "Perfect Agent" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS(221), 0x00000000, menuhandlerPdMode }, // "Perfect Dark" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(254), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_selectdifficulty = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(248), // "Select Difficulty" + menuitems_selectdifficulty, + NULL, + 0x00000004, + NULL, +}; + const u32 var7f1b2d40[] = {0x57055706}; const u32 var7f1b2d44[] = {0x57075708}; const u32 var7f1b2d48[] = {0x57090000}; @@ -1866,6 +1877,25 @@ glabel menuhandlerCoopBuddy /* f10441c: 00000000 */ sll $zero,$zero,0x0 ); +struct menu_item menuitems_cooperativeoptions[] = { + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(256), 0x00000000, menuhandlerCoopRadar }, // "Radar On" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(257), 0x00000000, menuhandlerCoopFriendlyFire }, // "Friendly Fire" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(258), 0x00000000, menuhandlerCoopBuddy }, // "Perfect Buddy" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, // "" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(259), 0x00000000, menuhandlerBuddyOptionsContinue }, // "Continue" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(260), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, // "" +}; + +struct menu_dialog g_CoopOptionsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(255), // "Co-Operative Options" + menuitems_cooperativeoptions, + menudialogCoopAntiOptions, + 0x00000004, + NULL, +}; + s32 menuhandlerAntiRadar(u32 operation, struct menu_item *item, bool *enable) { switch (operation) { @@ -1901,6 +1931,24 @@ char *menuhandlerAntiPlayer(u32 operation, struct menu_dialog *dialog, s32 *valu return NULL; } +struct menu_item menuitems_counteroperativeoptions[] = { + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(267), 0x00000000, menuhandlerAntiRadar }, // "Radar On" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(268), 0x00000000, menuhandlerAntiPlayer }, // "Counter-Operative" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(269), 0x00000000, menuhandlerBuddyOptionsContinue }, // "Continue" + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(270), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_AntiOptionsMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(266), // "Counter-Operative Options" + menuitems_counteroperativeoptions, + menudialogCoopAntiOptions, + 0x00000004, + NULL, +}; + const char var7f1b2d50[] = "\n"; s32 menuhandlerCoopDifficulty(u32 operation, struct menu_item *item, s32 *value) @@ -1922,6 +1970,24 @@ s32 menuhandlerCoopDifficulty(u32 operation, struct menu_item *item, s32 *value) return 0; } +struct menu_item menuitems_selectdifficulty2[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(251), 0x00000000, menuhandlerCoopDifficulty }, // "Agent" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(252), 0x00000000, menuhandlerCoopDifficulty }, // "Special Agent" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(253), 0x00000000, menuhandlerCoopDifficulty }, // "Perfect Agent" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(254), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_selectdifficulty2 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(248), // "Select Difficulty" + menuitems_selectdifficulty2, + NULL, + 0x00000004, + NULL, +}; + s32 menuhandlerAntiDifficulty(u32 operation, struct menu_item *item, s32 *value) { switch (operation) { @@ -1936,6 +2002,49 @@ s32 menuhandlerAntiDifficulty(u32 operation, struct menu_item *item, s32 *value) return 0; } +struct menu_item menuitems_selectdifficulty3[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(251), 0x00000000, menuhandlerAntiDifficulty }, // "Agent" + { MENUITEMTYPE_SELECTABLE, 1, 0x00000000, L_OPTIONS(252), 0x00000000, menuhandlerAntiDifficulty }, // "Special Agent" + { MENUITEMTYPE_SELECTABLE, 2, 0x00000000, L_OPTIONS(253), 0x00000000, menuhandlerAntiDifficulty }, // "Perfect Agent" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(254), 0x00000000, NULL }, // "Cancel" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_selectdifficulty3 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(248), // "Select Difficulty" + menuitems_selectdifficulty3, + NULL, + 0x00000004, + NULL, +}; + +struct stageoverviewentry g_StageNames[NUM_SOLOSTAGES] = { + // stage, unk04, + { STAGE_DEFECTION, 0x0c, L_OPTIONS(133), L_OPTIONS(134), L_MPWEAPONS(124) }, + { STAGE_INVESTIGATION, 0x0d, L_OPTIONS(135), L_OPTIONS(136), L_MPWEAPONS(172) }, + { STAGE_EXTRACTION, 0x0e, L_OPTIONS(137), L_OPTIONS(138), L_MPWEAPONS(125) }, + { STAGE_VILLA, 0x0f, L_OPTIONS(139), L_OPTIONS(140), L_OPTIONS(139) }, + { STAGE_CHICAGO, 0x10, L_OPTIONS(141), L_OPTIONS(142), L_OPTIONS(141) }, + { STAGE_G5BUILDING, 0x11, L_OPTIONS(143), L_OPTIONS(144), L_OPTIONS(143) }, + { STAGE_INFILTRATION, 0x12, L_OPTIONS(145), L_OPTIONS(146), L_MPWEAPONS(126) }, + { STAGE_RESCUE, 0x13, L_OPTIONS(147), L_OPTIONS(148), L_MPWEAPONS(127) }, + { STAGE_ESCAPE, 0x14, L_OPTIONS(149), L_OPTIONS(150), L_MPWEAPONS(128) }, + { STAGE_AIRBASE, 0x15, L_OPTIONS(151), L_OPTIONS(152), L_OPTIONS(151) }, + { STAGE_AIRFORCEONE, 0x16, L_OPTIONS(153), L_OPTIONS(154), L_OPTIONS(153) }, + { STAGE_CRASHSITE, 0x17, L_OPTIONS(155), L_OPTIONS(156), L_OPTIONS(155) }, + { STAGE_PELAGIC, 0x18, L_OPTIONS(157), L_OPTIONS(158), L_OPTIONS(157) }, + { STAGE_DEEPSEA, 0x19, L_OPTIONS(159), L_OPTIONS(160), L_OPTIONS(159) }, + { STAGE_DEFENSE, 0x1a, L_OPTIONS(161), L_OPTIONS(162), L_OPTIONS(161) }, + { STAGE_ATTACKSHIP, 0x1b, L_OPTIONS(163), L_OPTIONS(164), L_OPTIONS(163) }, + { STAGE_SKEDARRUINS, 0x1c, L_OPTIONS(165), L_OPTIONS(166), L_OPTIONS(165) }, + { STAGE_MBR, 0x1c, L_OPTIONS(167), L_OPTIONS(3), L_OPTIONS(167) }, + { STAGE_MAIANSOS, 0x1c, L_OPTIONS(168), L_OPTIONS(3), L_OPTIONS(168) }, + { STAGE_WAR, 0x1c, L_OPTIONS(170), L_OPTIONS(3), L_OPTIONS(170) }, + { STAGE_DUEL, 0x1c, L_OPTIONS(171), L_OPTIONS(3), L_OPTIONS(171) }, +}; + s32 getNumUnlockedSpecialStages(void) { s32 next = 0; @@ -1979,6 +2088,20 @@ s32 func0f104720(s32 value) return 20; } +struct mission missions[] = { + // first stage index, name + { 0, L_OPTIONS(123) }, // "Mission 1" + { 3, L_OPTIONS(124) }, // "Mission 2" + { 4, L_OPTIONS(125) }, // "Mission 3" + { 6, L_OPTIONS(126) }, // "Mission 4" + { 9, L_OPTIONS(127) }, // "Mission 5" + { 12, L_OPTIONS(128) }, // "Mission 6" + { 14, L_OPTIONS(129) }, // "Mission 7" + { 15, L_OPTIONS(130) }, // "Mission 8" + { 16, L_OPTIONS(131) }, // "Mission 9" + { 99, L_OPTIONS(132) }, // "Special Assignments" +}; + GLOBAL_ASM( glabel menuhandler0010476c .late_rodata @@ -3006,6 +3129,43 @@ s32 menudialog0010559c(u32 operation, struct menu_dialog *dialog, struct menusta return 0; } +struct menu_item menuitems_17fd8[] = { + { MENUITEMTYPE_SCROLLABLE, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_item menuitems_18000[] = { + { MENUITEMTYPE_SCROLLABLE, 0, 0x00000000, 0x00000078, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_18028 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(247), // "Briefing" + menuitems_17fd8, + NULL, + 0x00000008, + NULL, +}; + +struct menu_dialog menudialog_18040 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(247), // "Briefing" + menuitems_17fd8, + NULL, + 0x00000008, + NULL, +}; + +struct menu_dialog menudialog_18058 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(247), // "Briefing" + menuitems_18000, + NULL, + 0x00000008, + NULL, +}; + char *func0f105664(struct menu_item *item) { s32 stack[4]; @@ -3068,6 +3228,302 @@ s32 menuhandlerChangeAgent(s32 operation, struct menu_item *item, s32 *value) return 0; } +struct menu_item menuitems_control[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000050, 0x00000000, menuhandler001024dc }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_ControlStyleMultiMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(236), // "Control" + menuitems_control, + NULL, + 0x00000400, + NULL, +}; + +struct menu_item menuitems_control2[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000028, 0x00000096, menuhandler001024dc }, + { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog g_ControlStyleSingleMenuDialog = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(236), // "Control" + menuitems_control2, + NULL, + 0x00000400, + NULL, +}; + +struct menu_item menuitems_control3[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000028, 0x00000096, menuhandler001024dc }, + { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_control3 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(236), // "Control" + menuitems_control3, + NULL, + 0x00000400, + NULL, +}; + +struct menu_item menuitems_control4[] = { + { MENUITEMTYPE_CUSTOM, 0, 0x00800000, 0x00000028, 0x00000096, menuhandler001024fc }, + { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_control4 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(236), // "Control" + menuitems_control4, + NULL, + 0x00000400, + NULL, +}; + +struct menu_item menuitems_audiooptions[] = { + { MENUITEMTYPE_SLIDER, 0, L_LEN(0), L_OPTIONS(228), L_MPMENU(0), menuhandlerSfxVolume }, // "Sound" + { MENUITEMTYPE_SLIDER, 0, L_LEN(0), L_OPTIONS(229), L_MPMENU(0), menuhandlerMusicVolume }, // "Music" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(230), 0x00000000, menuhandlerSoundMode }, // "Sound Mode" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(218), 0x00000000, menuhandlerLangFilter }, // "Language Filter" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(231), 0x00000000, NULL }, // "" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_audiooptions = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(227), // "Audio Options" + menuitems_audiooptions, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item menuitems_audiooptions2[] = { + { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS(228), L_MPMENU(0), menuhandlerSfxVolume }, // "Sound" + { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS(229), L_MPMENU(0), menuhandlerMusicVolume }, // "Music" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPWEAPONS(153), 0x00000000, menuhandlerSoundMode }, // "Mode" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(218), 0x00000000, menuhandlerLangFilter }, // "Language Filter" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(231), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_audiooptionsshort = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(227), // "Audio Options" + menuitems_audiooptions2, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item menuitems_videooptions[] = { + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(215), 0x00000000, menuhandlerScreenSize }, // "Screen Size" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(216), 0x00000000, menuhandlerScreenRatio }, // "Ratio" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(217), 0x00000000, menuhandlerHiRes }, // "Hi-Res" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(218), 0x00000000, menuhandlerScreenSplit }, // "2-Player Screen Split" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(170), 0x00000000, menuhandlerAlternativeTitle }, // "Alternative Title Screen" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(219), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_item menuitems_videooptionsshort[] = { + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(216), 0x00000000, menuhandlerScreenRatio }, // "Ratio" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(217), 0x00000000, menuhandlerHiRes }, // "Hi-Res" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPWEAPONS(154), 0x00000000, menuhandlerScreenSplit }, // "Split" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(219), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_videooptions = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(214), // "Video Options" + menuitems_videooptions, + NULL, + 0x00000000, + NULL, +}; + +struct menu_dialog menudialog_videooptionsshort = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(214), // "Video Options" + menuitems_videooptionsshort, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item menuitems_displayoptions[] = { + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(205), 0x00000004, menuhandlerSightOnScreen }, // "Sight on Screen" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(206), 0x00000004, menuhandlerAlwaysShowTarget }, // "Always Show Target" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(207), 0x00000004, menuhandlerShowZoomRange }, // "Show Zoom Range" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(208), 0x00000004, menuhandlerAmmoOnScreen }, // "Ammo on Screen" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(209), 0x00000004, menuhandlerShowGunFunction }, // "Show Gun Function" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(210), 0x00000004, menuhandlerPaintball }, // "Paintball" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(169), 0x00000004, menuhandlerInGameSubtitles }, // "In-Game Subtitles" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(168), 0x00000004, menuhandlerCutsceneSubtitles }, // "Cutscene Subtitles" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(212), 0x00000004, menuhandlerShowMissionTime }, // "Show Mission Time" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(213), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_displayoptions = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(203), // "Display Options" + menuitems_displayoptions, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item menuitems_displayoptionsshort[] = { + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(145), 0x00000004, menuhandlerSightOnScreen }, // "Sight on Screen" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(146), 0x00000004, menuhandlerAlwaysShowTarget }, // "Target" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(147), 0x00000004, menuhandlerShowZoomRange }, // "Zoom Range" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(148), 0x00000004, menuhandlerAmmoOnScreen }, // "Show Ammo" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(149), 0x00000004, menuhandlerShowGunFunction }, // "Gun Function" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(150), 0x00000004, menuhandlerPaintball }, // "Paintball" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(169), 0x00000004, menuhandlerInGameSubtitles }, // "In-Game Subtitles" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(168), 0x00000004, menuhandlerCutsceneSubtitles }, // "Cutscene Subtitles" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(152), 0x00000004, menuhandlerShowMissionTime }, // "Mission Time" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(213), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_displayoptionsshort = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(203), // "Display Options" + menuitems_displayoptionsshort, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item menuitems_displayoptions_2pplayer1[] = { + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(205), 0x00000004, menuhandlerSightOnScreen }, // "Sight on Screen" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(206), 0x00000004, menuhandlerAlwaysShowTarget }, // "Always Show Target" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(207), 0x00000004, menuhandlerShowZoomRange }, // "Show Zoom Range" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(208), 0x00000004, menuhandlerAmmoOnScreen }, // "Ammo on Screen" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(209), 0x00000004, menuhandlerShowGunFunction }, // "Show Gun Function" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(210), 0x00000004, menuhandlerPaintball }, // "Paintball" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(169), 0x00000004, menuhandlerInGameSubtitles }, // "In-Game Subtitles" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS(168), 0x00000004, menuhandlerCutsceneSubtitles }, // "Cutscene Subtitles" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(212), 0x00000004, menuhandlerShowMissionTime }, // "Show Mission Time" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(213), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_displayplayer2; + +struct menu_dialog menudialog_displayoptions_2pplayer1 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(203), // "Display Options" + menuitems_displayoptions_2pplayer1, + NULL, + 0x00000000, + &menudialog_displayplayer2, +}; + +struct menu_item menuitems_displayplayer2[] = { + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056cd, 0x00000005, menuhandlerSightOnScreen }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056ce, 0x00000005, menuhandlerAlwaysShowTarget }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056cf, 0x00000005, menuhandlerShowZoomRange }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d0, 0x00000005, menuhandlerAmmoOnScreen }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d1, 0x00000005, menuhandlerShowGunFunction }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d2, 0x00000005, menuhandlerPaintball }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000054a9, 0x00000005, menuhandlerInGameSubtitles }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000054a8, 0x00000005, menuhandlerCutsceneSubtitles }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056d4, 0x00000005, menuhandlerShowMissionTime }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000056d5, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_displayplayer2 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(204), // "Display Player 2" + menuitems_displayplayer2, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item menuitems_controloptions[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(194), (u32)&func0f105664, menuhandlerControlStyle }, // "Control Style" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(195), 0x00000004, menuhandlerReversePitch }, // "Reverse Pitch" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(196), 0x00000004, menuhandlerLookAhead }, // "Look Ahead" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(197), 0x00000004, menuhandlerHeadRoll }, // "Head Roll" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(198), 0x00000004, menuhandlerAutoAim }, // "Auto-Aim" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(199), 0x00000004, menuhandlerAimControl }, // "Aim Control" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(200), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_controloptions = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(192), // "Control Options" + menuitems_controloptions, + NULL, + 0x00000000, + NULL, +}; + +struct menu_item menuitems_18928[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_OPTIONS(194), (u32)&func0f105664, &menudialog_control3 }, // "Control Style" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(195), 0x00000004, menuhandlerReversePitch }, // "Reverse Pitch" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(196), 0x00000004, menuhandlerLookAhead }, // "Look Ahead" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(197), 0x00000004, menuhandlerHeadRoll }, // "Head Roll" + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_OPTIONS(198), 0x00000004, menuhandlerAutoAim }, // "Auto-Aim" + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS(199), 0x00000004, menuhandlerAimControl }, // "Aim Control" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS(200), 0x00000000, NULL }, // "Back" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_189dc = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(192), // "Control Options" + menuitems_18928, + NULL, + 0x00000000, + &menudialog_18aa8, +}; + +struct menu_item menuitems_189f4[] = { + { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x000056c2, (u32)&func0f1056a0, &menudialog_control4 }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c3, 0x00000005, menuhandlerReversePitch }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c4, 0x00000005, menuhandlerLookAhead }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c5, 0x00000005, menuhandlerHeadRoll }, + { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x000056c6, 0x00000005, menuhandlerAutoAim }, + { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, 0x000056c7, 0x00000005, menuhandlerAimControl }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, 0x000056c8, 0x00000000, NULL }, + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + +struct menu_dialog menudialog_18aa8 = { + MENUDIALOGTYPE_DEFAULT, + L_OPTIONS(193), // "Control Player 2" + menuitems_189f4, + NULL, + 0x00000000, + NULL, +}; + struct menu_item menuitems_changeagent[] = { { MENUITEMTYPE_LABEL, 0, 0x00000012, L_OPTIONS(189), 0x00000000, NULL }, // "Do you want to load another agent?" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_OPTIONS(190), 0x00000000, menuhandlerChangeAgent }, // "Yes" diff --git a/src/include/game/data/data_0160b0.h b/src/include/game/data/data_0160b0.h index 75deecb5c..9d29d0e0e 100644 --- a/src/include/game/data/data_0160b0.h +++ b/src/include/game/data/data_0160b0.h @@ -221,6 +221,7 @@ extern struct menu_dialog menudialog_displayoptions_2pplayer1; extern struct menu_dialog menudialog_18028; extern struct menu_dialog menudialog_18040; extern struct menu_dialog menudialog_18058; +extern struct menu_dialog menudialog_18aa8; extern struct menu_dialog menudialog_189dc; extern struct menu_item menuitems_18c18[]; extern struct menu_dialog menudialog_18d30; diff --git a/src/include/game/game_102240.h b/src/include/game/game_102240.h index 952aa839a..ed206eef0 100644 --- a/src/include/game/game_102240.h +++ b/src/include/game/game_102240.h @@ -66,7 +66,7 @@ s32 menuhandlerPdModeSetting(u32 operation, struct menu_item *item, struct numan s32 menuhandlerReversePitch(u32 operation, struct menu_item *item, bool *enable); s32 menuhandlerScreenRatio(u32 operation, struct menu_item *item, bool *enable); s32 menuhandlerScreenSize(u32 operation, struct menu_item *item, bool *enable); -s32 menuhandlerScreenSplit(u32 operation, struct menu_item *item, bool *enable); +char *menuhandlerScreenSplit(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerSfxVolume(u32 operation, struct menu_item *item, u32 *volume); s32 menuhandlerShowGunFunction(u32 operation, struct menu_item *item, bool *enable); s32 menuhandlerShowMissionTime(u32 operation, struct menu_item *item, bool *enable);