void mainmenu (int selectedMenu) { int quit = 0; int ret; // disable game-specific menu items if a ROM isn't loaded if ( ARAM_ROMSIZE == 0 ) menuitems[3][0] = '\0'; else sprintf (menuitems[3], "Game Menu"); VIDEO_WaitVSync (); while (quit == 0) { if(selectedMenu >= 0) { ret = selectedMenu; selectedMenu = -1; // default back to main menu } else { ret = RunMenu (menuitems, menucount, (char*)"Main Menu"); } switch (ret) { case 0: // Load ROM Menu quit = LoadManager (); break; case 1: // Configure Controllers ConfigureControllers (); break; case 2: // Preferences PreferencesMenu (); break; case 3: // Game Options quit = GameMenu (); break; case 4: // Credits Credits (); WaitButtonA (); break; case 5: // Reset the Gamecube/Wii Reboot(); break; case 6: // Exit to Loader #ifdef HW_RVL #ifdef WII_DVD DI_Close(); #endif exit(0); #else // gamecube if (psoid[0] == PSOSDLOADID) PSOReload (); #endif break; case -1: // Button B // Return to Game quit = 1; break; } } /*** Remove any still held buttons ***/ #ifdef HW_RVL while( PAD_ButtonsHeld(0) || WPAD_ButtonsHeld(0) ) VIDEO_WaitVSync(); #else while( PAD_ButtonsHeld(0) ) VIDEO_WaitVSync(); #endif }
/**************************************************************************** * Rom Info Menu * ****************************************************************************/ void RomInfo () { char msg[128]; int rlen, ypos; ClearScreen (); strcpy (menutitle, ""); ypos = 140; /* Title */ WriteCentre (ypos , "Game Information"); /* Rom name */ ypos += fheight + fheight/2; sprintf(msg,"Internal Name - %s",rom.name); WriteCentre (ypos , msg); /* ROM Size */ rlen = 16384 * mbc.romsize; rlen = rlen / 1024; if ((rlen/1024) == 0) sprintf(msg,"Rom Size - %d Ko",rlen); else sprintf(msg,"ROM Size - %d Mo",rlen/1024); ypos += fheight; WriteCentre (ypos , msg); /* RAM Size */ sprintf(msg,"RAM Size - %d Ko",mbc.ramsize); ypos += fheight; WriteCentre (ypos , msg); /* Type */ ypos += fheight; if (hw.cgb) WriteCentre (ypos , "Type - GameBoy COLOR"); else WriteCentre (ypos , "Type - GameBoy MONO"); /* Memory Controller Type */ switch (mbc.type) { case MBC_NONE: sprintf(msg,"MBC Type - NONE"); break; case MBC_MBC1: sprintf(msg,"MBC Type - MBC1"); break; case MBC_MBC2: sprintf(msg,"MBC Type - MBC2"); break; case MBC_MBC3: sprintf(msg,"MBC Type - MBC3"); break; case MBC_MBC5: sprintf(msg,"MBC Type - MBC5"); break; case MBC_RUMBLE: sprintf(msg,"MBC Type - RUMBLE"); break; case MBC_HUC1: sprintf(msg,"MBC Type - HUC1"); break; case MBC_HUC3: sprintf(msg,"MBC Type - HUC3"); break; } ypos += fheight; WriteCentre ( ypos , msg); /* Internal battery */ ypos += fheight; if (mbc.batt) WriteCentre (ypos , "Internal SRAM Batt. - YES"); else WriteCentre (ypos , "Internal SRAM Batt. - NO"); /* Internal RTC */ ypos += fheight; if (rtc.batt) WriteCentre (ypos , "Internal RTC - YES"); else WriteCentre (ypos , "Internal RTC - NO"); ypos += 2*fheight; WriteCentre (ypos , "Press A to exit"); SetScreen (); WaitButtonA (); }
int GameMenu () { int gamemenuCount = 10; char gamemenu[][50] = { "Return to Game", "Reset Game", "ROM Information", "Cheats", "Load SRAM", "Save SRAM", "Load Game Snapshot", "Save Game Snapshot", "Reset Zoom", "Back to Main Menu" }; int ret, retval = 0; int quit = 0; int oldmenu = menu; menu = 0; while (quit == 0) { // disable SRAM/SNAPSHOT saving/loading if AUTO is on if (GCSettings.AutoLoad == 1) // Auto Load SRAM gamemenu[4][0] = '\0'; else if (GCSettings.AutoLoad == 2) // Auto Load SNAPSHOT gamemenu[6][0] = '\0'; if (GCSettings.AutoSave == 1) // Auto Save SRAM gamemenu[5][0] = '\0'; else if (GCSettings.AutoSave == 2) // Auto Save SNAPSHOT gamemenu[7][0] = '\0'; else if (GCSettings.AutoSave == 3) // Auto Save BOTH { gamemenu[5][0] = '\0'; gamemenu[7][0] = '\0'; } // hide cheats menu if cheats file not present if(Cheat.num_cheats == 0) gamemenu[3][0] = '\0'; ret = RunMenu (gamemenu, gamemenuCount, (char*)"Game Menu"); switch (ret) { case 0: // Return to Game quit = retval = 1; break; case 1: // Reset Game zoom_reset (); S9xSoftReset (); quit = retval = 1; break; case 2: // ROM Information RomInfo(); WaitButtonA (); break; case 3: // load cheats CheatMenu(); break; case 4: // Load SRAM zoom_reset (); quit = retval = LoadSRAM(GCSettings.SaveMethod, NOTSILENT); break; case 5: // Save SRAM SaveSRAM(GCSettings.SaveMethod, NOTSILENT); break; case 6: // Load Freeze zoom_reset (); quit = retval = NGCUnfreezeGame (GCSettings.SaveMethod, NOTSILENT); break; case 7: // Save Freeze NGCFreezeGame (GCSettings.SaveMethod, NOTSILENT); break; case 8: // Reset Zoom zoom_reset (); quit = retval = 1; break; case -1: // Button B case 9: // Return to previous menu retval = 0; quit = 1; break; } } menu = oldmenu; return retval; }
void MainMenu (int selectedMenu) { tb_t start,end; mftb(&start); int quit = 0; int ret; #ifdef HW_RVL // don't show dvd motor off on the wii menuitems[5][0] = 0; // rename reset/exit items sprintf (menuitems[6], "Return to Wii Menu"); sprintf (menuitems[7], "Return to Homebrew Channel"); #endif // disable game-specific menu items if a ROM isn't loaded if (!ROMLoaded) menuitems[3][0] = '\0'; else sprintf (menuitems[3], "Game Menu"); VIDEO_WaitVSync (); while (quit == 0) { if(selectedMenu >= 0) { ret = selectedMenu; selectedMenu = -1; // default back to main menu } else { ret = RunMenu (menuitems, menucount, (char*)"Main Menu"); } switch (ret) { case 0: // Load ROM Menu quit = LoadManager (); break; case 1: // Configure Controllers ConfigureControllers (); break; case 2: // Preferences PreferencesMenu (); break; case 3: // Game Options quit = GameMenu (); break; case 4: // Credits Credits (); WaitButtonA (); break; case 5: // turn the dvd motor off (GC only) #ifdef HW_DOL dvd_motor_off (); #endif case 6: // Reset the Gamecube/Wii Reboot(); break; case 7: ExitToLoader(); break; case -1: // Button B // Return to Game if(ROMLoaded) quit = 1; break; } } // Wait for buttons to be released int count = 0; // how long we've been waiting for the user to release the button while(count < 50 && ( PAD_ButtonsHeld(0) #ifdef HW_RVL || WPAD_ButtonsHeld(0) #endif )) { VIDEO_WaitVSync(); count++; } mftb(&end); loadtimeradjust += tb_diff_msec(&end, &start); }