@@ -41,10 +41,17 @@ enum MAIN_MENU_ID {
4141 MAIN_MENU_ID_BTN_INST_FHDB ,
4242 MAIN_MENU_ID_BTN_UINST_FHDB ,
4343 MAIN_MENU_ID_BTN_FORMAT_HDD ,
44+ MAIN_MENU_ID_BTN_INSTALL_OPENTUNA ,
4445 MAIN_MENU_ID_DESCRIPTION ,
4546 MAIN_MENU_ID_VERSION ,
4647};
4748
49+ enum OPENTUNA_MENU_ID {
50+ OPENTUNA_MENU_ID_BTN_INSTALL = 1 ,
51+ OPENTUNA_MENU_ID_ROM_VERSION ,
52+ OPENTUNA_MENU_ID_STATUS_TEXT ,
53+ };
54+
4855enum PRG_SCREEN_ID {
4956 PRG_SCREEN_ID_TITLE = 1 ,
5057 PRG_SCREEN_ID_ETA_LBL ,
@@ -86,6 +93,9 @@ static struct UIMenuItem MainMenuItems[] = {
8693 {MITEM_BUTTON , MAIN_MENU_ID_BTN_DOWNGRADE_MI , MITEM_FLAG_POS_MID , 0 , 24 , 0 , 0 , SYS_UI_LBL_UMI },
8794 {MITEM_BREAK },
8895 {MITEM_BREAK },
96+ {MITEM_BUTTON , MAIN_MENU_ID_BTN_INSTALL_OPENTUNA , MITEM_FLAG_POS_MID , 0 , 24 , 0 , 0 , SYS_UI_LBL_INSTALL_OPENTUNA },
97+ {MITEM_BREAK },
98+ {MITEM_BREAK },
8999 {MITEM_BUTTON , MAIN_MENU_ID_BTN_EXIT , MITEM_FLAG_POS_MID , 0 , 24 , 0 , 0 , SYS_UI_LBL_EXIT },
90100 {MITEM_BREAK },
91101 {MITEM_BREAK },
@@ -144,6 +154,24 @@ static struct UIMenuItem MCMenuItems[] = {
144154
145155 {MITEM_TERMINATOR }};
146156
157+ static struct UIMenuItem OpenTunaMenuItems [] = {
158+ {MITEM_LABEL , 0 , 0 , 0 , 0 , 0 , 0 , SYS_UI_LBL_MENU_OPENTUNA },
159+ {MITEM_SEPERATOR },
160+ {MITEM_BREAK },
161+
162+ {MITEM_STRING , OPENTUNA_MENU_ID_ROM_VERSION , MITEM_FLAG_READONLY },
163+ {MITEM_BREAK },
164+ {MITEM_BREAK },
165+ {MITEM_STRING , OPENTUNA_MENU_ID_STATUS_TEXT , MITEM_FLAG_READONLY },
166+ {MITEM_BREAK },
167+ {MITEM_BREAK },
168+
169+ {MITEM_BUTTON , OPENTUNA_MENU_ID_BTN_INSTALL , MITEM_FLAG_POS_MID , 0 , 24 , 0 , 0 , SYS_UI_LBL_INSTALL },
170+ {MITEM_BREAK },
171+ {MITEM_BREAK },
172+
173+ {MITEM_TERMINATOR }};
174+
147175static struct UIMenuItem ProgressScreenItems [] = {
148176 {MITEM_LABEL , PRG_SCREEN_ID_TITLE },
149177 {MITEM_SEPERATOR },
@@ -211,10 +239,12 @@ static struct UIMenuItem InsuffSpaceScreenItems[] = {
211239// Forward declarations
212240static struct UIMenu InstallMainMenu ;
213241static struct UIMenu ExtraMenu ;
242+ static struct UIMenu OpenTunaMenu ;
214243
215244static struct UIMenu MCMenu = {NULL , & ExtraMenu , MCMenuItems , {{BUTTON_TYPE_SYS_SELECT , SYS_UI_LBL_OK }, {BUTTON_TYPE_SYS_CANCEL , SYS_UI_LBL_EXIT }}};
216245static struct UIMenu ExtraMenu = {& MCMenu , & InstallMainMenu , ExtraMenuItems , {{BUTTON_TYPE_SYS_SELECT , SYS_UI_LBL_OK }, {BUTTON_TYPE_SYS_CANCEL , SYS_UI_LBL_EXIT }}};
217- static struct UIMenu InstallMainMenu = {& ExtraMenu , NULL , MainMenuItems , {{BUTTON_TYPE_SYS_SELECT , SYS_UI_LBL_OK }, {BUTTON_TYPE_SYS_CANCEL , SYS_UI_LBL_EXIT }}};
246+ static struct UIMenu OpenTunaMenu = {& InstallMainMenu , NULL , OpenTunaMenuItems , {{BUTTON_TYPE_SYS_SELECT , SYS_UI_LBL_OK }, {BUTTON_TYPE_SYS_CANCEL , SYS_UI_LBL_BACK }}};
247+ static struct UIMenu InstallMainMenu = {& ExtraMenu , & OpenTunaMenu , MainMenuItems , {{BUTTON_TYPE_SYS_SELECT , SYS_UI_LBL_OK }, {BUTTON_TYPE_SYS_CANCEL , SYS_UI_LBL_EXIT }}};
218248
219249static struct UIMenu ProgressScreen = {NULL , NULL , ProgressScreenItems , {{BUTTON_TYPE_SYS_CANCEL , SYS_UI_LBL_CANCEL }, {-1 , -1 }}};
220250static struct UIMenu InsuffSpaceScreen = {NULL , NULL , InsuffSpaceScreenItems , {{BUTTON_TYPE_SYS_SELECT , SYS_UI_LBL_OK }, {-1 , -1 }}};
@@ -336,6 +366,9 @@ static int MainMenuUpdateCallback(struct UIMenu *menu, unsigned short int frame,
336366 case MAIN_MENU_ID_BTN_FORMAT_HDD :
337367 UISetString (menu , MAIN_MENU_ID_DESCRIPTION , GetUIString (SYS_UI_MSG_DSC_FORMAT_HDD ));
338368 break ;
369+ case MAIN_MENU_ID_BTN_INSTALL_OPENTUNA :
370+ UISetString (menu , MAIN_MENU_ID_DESCRIPTION , GetUIString (SYS_UI_MSG_DSC_INSTALL_OPENTUNA ));
371+ break ;
339372 case MAIN_MENU_ID_BTN_EXIT :
340373 UISetString (menu , MAIN_MENU_ID_DESCRIPTION , GetUIString (SYS_UI_MSG_DSC_QUIT ));
341374 break ;
@@ -349,6 +382,71 @@ static int MainMenuUpdateCallback(struct UIMenu *menu, unsigned short int frame,
349382 return 0 ;
350383}
351384
385+ static int OpenTunaUpdateCallback (struct UIMenu * menu , unsigned short int frame , int selection , u32 padstatus )
386+ {
387+ if ((padstatus != 0 ) || (frame == 0 )) {
388+ if (selection >= 0 ) {
389+ switch (menu -> items [selection ].id ) {
390+ case OPENTUNA_MENU_ID_BTN_INSTALL :
391+ UISetString (menu , OPENTUNA_MENU_ID_STATUS_TEXT , GetUIString (SYS_UI_MSG_DSC_INST_FMCB ));
392+ break ;
393+ default :
394+ UISetString (menu , OPENTUNA_MENU_ID_STATUS_TEXT , NULL );
395+ }
396+ } else
397+ UISetString (menu , OPENTUNA_MENU_ID_STATUS_TEXT , NULL );
398+ }
399+
400+ return 0 ;
401+ }
402+
403+ void OpenTunaInstaller (void )
404+ {
405+ short int option ;
406+ struct UIMenu * CurrentMenu ;
407+ unsigned char McPort ;
408+ struct McData McData [2 ];
409+
410+ memset (McData , 0 , sizeof (McData ));
411+
412+ CurrentMenu = & OpenTunaMenu ;
413+ option = 0 ;
414+
415+ UpdateRegionalPaths ();
416+ UISetString (CurrentMenu , OPENTUNA_MENU_ID_ROM_VERSION , romver );
417+
418+ while (1 ) {
419+ option = UIExecMenu (CurrentMenu , option , & CurrentMenu , & OpenTunaUpdateCallback );
420+
421+ McPort = GetNumMemcardsInserted (McData );
422+
423+ switch (option )
424+ {
425+ case OPENTUNA_MENU_ID_BTN_INSTALL :
426+ if (McPort > 1 ) {
427+ McPort = DisplayPromptMessage (SYS_UI_MSG_MULTIPLE_CARDS , SYS_UI_LBL_SLOT1 , SYS_UI_LBL_SLOT2 );
428+ if (McPort == 0 )
429+ break ;
430+ McPort -- ;
431+ } else if (McPort == 0 ) {
432+ DisplayErrorMessage (SYS_UI_MSG_NO_CARDS );
433+ break ;
434+ } else
435+ McPort = (McData [0 ].Type == MC_TYPE_PS2 ) ? 0 : 1 ;
436+
437+ unsigned int requiredSpace = 1024 ; // 1MB in KB
438+ if ((unsigned int )McData [McPort ].SpaceFree < requiredSpace )
439+ {
440+ DisplayOutOfSpaceMessage (McData [McPort ].SpaceFree * 1024 , requiredSpace * 1024 );
441+ break ;
442+ }
443+ break ;
444+ default : // Exit
445+ return ;
446+ }
447+ }
448+ }
449+
352450void MainMenu (void )
353451{
354452 int result ;
@@ -425,6 +523,9 @@ void MainMenu(void)
425523 case MAIN_MENU_ID_BTN_INST_CROSS_PSX :
426524 event = EVENT_INSTALL_CROSS_PSX ;
427525 break ;
526+ case MAIN_MENU_ID_BTN_INSTALL_OPENTUNA :
527+ event = EVENT_INSTALL_OPENTUNA ;
528+ break ;
428529 default : // MAIN_MENU_ID_BTN_EXIT
429530 event = EVENT_EXIT ;
430531 }
@@ -750,6 +851,9 @@ void MainMenu(void)
750851 DisplayErrorMessage (SYS_UI_MSG_FORMAT_HDD_FAILED );
751852 }
752853 break ;
854+ case EVENT_INSTALL_OPENTUNA :
855+ OpenTunaInstaller ();
856+ break ;
753857 case EVENT_EXIT :
754858 if (DisplayPromptMessage (SYS_UI_MSG_QUIT , SYS_UI_LBL_CANCEL , SYS_UI_LBL_OK ) == 2 )
755859 done = 1 ;
0 commit comments