static void S9xNetplayConnect (void) { GtkWidget *msg; S9xNetplayPreconnect (); uint32 flags = CPU.Flags; if (*(gui_config->netplay_last_rom) && top_level->try_open_rom (gui_config->netplay_last_rom)) { return; } if (!S9xNPConnectToServer (gui_config->netplay_last_host, gui_config->netplay_last_port, Memory.ROMName)) { msg = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Couldn't connect to server: %s:%d", gui_config->netplay_last_host, gui_config->netplay_last_port); gtk_dialog_run (GTK_DIALOG (msg)); gtk_widget_destroy (msg); } gui_config->netplay_activated = TRUE; /* If no rom is specified, assume we'll get it from the server */ if (*(gui_config->netplay_last_rom) == 0) { Settings.StopEmulation = FALSE; S9xROMLoaded (); } S9xReset (); CPU.Flags = flags; top_level->configure_widgets (); return; }
void S9xNetplayStartServer (void) { uint32 flags; S9xNetplayPreconnect (); flags = CPU.Flags; if (*(gui_config->netplay_last_rom) == 0 || top_level->try_open_rom (gui_config->netplay_last_rom)) { return; } Settings.NetPlayServer = TRUE; NPServer.SyncByReset = gui_config->netplay_sync_reset; NPServer.SendROMImageOnConnect = gui_config->netplay_send_rom; npthread = g_thread_create (S9xNetplayServerThread, NULL, TRUE, NULL); /* Sleep to let the server create itself */ usleep (10000); S9xNPConnectToServer ("127.0.0.1", gui_config->netplay_default_port, Memory.ROMName); S9xReset (); S9xROMLoaded (); gui_config->netplay_activated = TRUE; gui_config->netplay_server_up = TRUE; CPU.Flags = flags; top_level->configure_widgets (); return; }
int S9xOpenROM (const char *rom_filename) { uint32 flags; bool8 loaded; if (gui_config->rom_loaded) { S9xAutoSaveSRAM (); } #ifdef NETPLAY_SUPPORT S9xNetplayDisconnect (); #endif flags = CPU.Flags; loaded = FALSE; if (Settings.Multi) loaded = Memory.LoadMultiCart (Settings.CartAName, Settings.CartBName); else if (rom_filename) loaded = Memory.LoadROM (rom_filename); Settings.StopEmulation = !loaded; if (!loaded && rom_filename) { char dir [_MAX_DIR + 1]; char drive [_MAX_DRIVE + 1]; char name [_MAX_FNAME + 1]; char ext [_MAX_EXT + 1]; char fname [_MAX_PATH + 1]; _splitpath (rom_filename, drive, dir, name, ext); _makepath (fname, drive, dir, name, ext); strcpy (fname, S9xGetDirectory (ROM_DIR)); strcat (fname, SLASH_STR); strcat (fname, name); if (ext [0]) { strcat (fname, "."); strcat (fname, ext); } _splitpath (fname, drive, dir, name, ext); _makepath (fname, drive, dir, name, ext); if ((Settings.StopEmulation = !Memory.LoadROM (fname))) { fprintf (stderr, _("Error opening: %s\n"), rom_filename); loaded = FALSE; } else loaded = TRUE; } if (loaded) { Memory.LoadSRAM (S9xGetFilename (".srm", SRAM_DIR)); S9xLoadCheatFile (S9xGetFilename (".cht", CHEAT_DIR)); for (unsigned int i = 0; i < Cheat.num_cheats; i++) { if (Cheat.c[i].enabled) { /* RAM is fresh, so we need to clean out old saved values */ Cheat.c[i].saved = FALSE; S9xApplyCheat (i); } } } else { S9xReset (); CPU.Flags = flags; Settings.Paused = 1; S9xNoROMLoaded (); top_level->refresh (); return 1; } CPU.Flags = flags; S9xROMLoaded (); return 0; }
int S9xOpenROM (const char *rom_filename) { uint32 flags; bool8 loaded; if (gui_config->rom_loaded) { S9xAutoSaveSRAM (); } #ifdef NETPLAY_SUPPORT S9xNetplayDisconnect (); #endif flags = CPU.Flags; loaded = FALSE; if (Settings.Multi) loaded = Memory.LoadMultiCart (Settings.CartAName, Settings.CartBName); else if (rom_filename) loaded = Memory.LoadROM (rom_filename); Settings.StopEmulation = !loaded; if (!loaded && rom_filename) { char dir [_MAX_DIR + 1]; char drive [_MAX_DRIVE + 1]; char name [_MAX_FNAME + 1]; char ext [_MAX_EXT + 1]; char fname [_MAX_PATH + 1]; _splitpath (rom_filename, drive, dir, name, ext); _makepath (fname, drive, dir, name, ext); strcpy (fname, S9xGetDirectory (ROM_DIR)); strcat (fname, SLASH_STR); strcat (fname, name); if (ext [0]) { strcat (fname, "."); strcat (fname, ext); } _splitpath (fname, drive, dir, name, ext); _makepath (fname, drive, dir, name, ext); if ((Settings.StopEmulation = !Memory.LoadROM (fname))) { fprintf (stderr, _("Error opening: %s\n"), rom_filename); loaded = FALSE; } else loaded = TRUE; } if (loaded) { Memory.LoadSRAM (S9xGetFilename (".srm", SRAM_DIR)); } else { CPU.Flags = flags; Settings.Paused = 1; S9xNoROMLoaded (); top_level->refresh (); return 1; } CPU.Flags = flags; if (stateMan.init (gui_config->rewind_buffer_size * 1024 * 1024)) { printf ("Using rewind buffer of %uMB\n", gui_config->rewind_buffer_size); } S9xROMLoaded (); return 0; }