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;
}
Exemple #3
0
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;
}