void Emulator_Start() { if(need_load_rom) { LOG_DBG("need_load_rom: %d\n", need_load_rom); if(Emulator_Initialize()) { need_load_rom = false; } } //bring down dbgfont Graphics->DeinitDbgFont(); if (Graphics->GetCurrentResolution() == CELL_VIDEO_OUT_RESOLUTION_576) { if(Graphics->CheckResolution(CELL_VIDEO_OUT_RESOLUTION_576)) { if(vdp_pal) { if(Graphics->GetPAL60Hz()) { //PAL60 is ON, turn it off for PAL Graphics->SetPAL60Hz(false); Settings.PS3PALTemporalMode60Hz = false; Graphics->SwitchResolution(Graphics->GetCurrentResolution(), Settings.PS3PALTemporalMode60Hz); } } else { if(!Graphics->GetPAL60Hz()) { //PAL60 is OFF, turn it on for NTSC Graphics->SetPAL60Hz(true); Settings.PS3PALTemporalMode60Hz = true; Graphics->SwitchResolution(Graphics->GetCurrentResolution(), Settings.PS3PALTemporalMode60Hz); } } } } CellAudio->unpause(); while(emulation_running) { system_frame(0); Graphics->Draw(bitmap.viewport.w,bitmap.viewport.h,bitmap.data); Graphics->Swap(); PlaySound(); //check interlaced mode change if (bitmap.viewport.changed & 4) { //stub bitmap.viewport.changed &= ~4; } cellSysutilCheckCallback(); } SaveSRAM(); Graphics->InitDbgFont(); emulation_running = true; }
/* main plugin entry point */ enum plugin_status plugin_start(const void* parameter) { size_t size = 0xffff; sound_on = false; #ifdef HAVE_ADJUSTABLE_CPU_FREQ rb->cpu_boost(true); #endif rb->backlight_on(); rb->lcd_clear_display(); VROM = (BYTE*)rb->plugin_get_audio_buffer(&size); ROM = (BYTE*) VROM + 0xffff * 8; wfx = (WORD*)(ROM + 0xffff * 16); ApuEventQueue = (struct ApuEvent_t*)(wfx + LCD_HEIGHT * NES_DISP_WIDTH); /* Start ROM file if specified */ if (parameter) { if (start_application((char*) parameter)) { /* MainLoop */ InfoNES_Main(); /* End */ SaveSRAM(); } else { rb->splash(HZ, "Not a valid NES ROM!!"); return PLUGIN_OK; } } else { rb->splash(HZ*3/2, "Play NES ROM file!"); return PLUGIN_OK; } return PLUGIN_OK; }
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; }