mirror of https://github.com/snes9xgit/snes9x.git
commit
a049345125
|
@ -11,6 +11,9 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#include "fmt/format.h"
|
||||||
|
#include "messages.h"
|
||||||
|
#include "snes9x.h"
|
||||||
|
|
||||||
S9xPulseSoundDriver::S9xPulseSoundDriver()
|
S9xPulseSoundDriver::S9xPulseSoundDriver()
|
||||||
{
|
{
|
||||||
|
@ -116,11 +119,12 @@ bool S9xPulseSoundDriver::open_device(int playback_rate, int buffer_size_ms)
|
||||||
buffer_attr.minreq = pa_usec_to_bytes(3000, &ss);
|
buffer_attr.minreq = pa_usec_to_bytes(3000, &ss);
|
||||||
buffer_attr.prebuf = buffer_attr.tlength / 2;
|
buffer_attr.prebuf = buffer_attr.tlength / 2;
|
||||||
|
|
||||||
printf("PulseAudio sound driver initializing...\n");
|
S9xMessage(S9X_INFO, S9X_NO_INFO, "Initializing PulseAudio sound driver…");
|
||||||
|
|
||||||
printf(" --> (%dhz, 16-bit Stereo, %dms)...",
|
S9xMessage(S9X_INFO, S9X_NO_INFO,
|
||||||
|
fmt::format(" --> ({0:Ld} Hz, 16‑bit stereo, {1:Ld} ms)…",
|
||||||
playback_rate,
|
playback_rate,
|
||||||
buffer_size_ms);
|
buffer_size_ms).c_str());
|
||||||
|
|
||||||
int err = PA_ERR_UNKNOWN;
|
int err = PA_ERR_UNKNOWN;
|
||||||
mainloop = pa_threaded_mainloop_new();
|
mainloop = pa_threaded_mainloop_new();
|
||||||
|
@ -159,7 +163,7 @@ bool S9xPulseSoundDriver::open_device(int playback_rate, int buffer_size_ms)
|
||||||
|
|
||||||
buffer_size = actual_buffer_attr->tlength;
|
buffer_size = actual_buffer_attr->tlength;
|
||||||
|
|
||||||
printf("OK\n");
|
S9xMessage(S9X_INFO, S9X_NO_INFO, "OK");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ src/gtk_cheat.cpp
|
||||||
src/gtk_config.cpp
|
src/gtk_config.cpp
|
||||||
src/gtk_display_driver_opengl.cpp
|
src/gtk_display_driver_opengl.cpp
|
||||||
src/gtk_netplay.cpp
|
src/gtk_netplay.cpp
|
||||||
|
src/gtk_netplay_dialog.cpp
|
||||||
src/gtk_preferences.cpp
|
src/gtk_preferences.cpp
|
||||||
src/gtk_s9x.cpp
|
src/gtk_s9x.cpp
|
||||||
src/gtk_s9xwindow.cpp
|
src/gtk_s9xwindow.cpp
|
||||||
|
|
1128
gtk/po/pl.po
1128
gtk/po/pl.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -62,6 +62,11 @@ int GtkBuilderWindow::get_height()
|
||||||
return window->get_height();
|
return window->get_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GtkBuilderWindow::set_label(const char * const name, const char * const label)
|
||||||
|
{
|
||||||
|
get_object<Gtk::Label>(name)->set_label(label);
|
||||||
|
}
|
||||||
|
|
||||||
void GtkBuilderWindow::set_button_label(const char *name, const char *label)
|
void GtkBuilderWindow::set_button_label(const char *name, const char *label)
|
||||||
{
|
{
|
||||||
get_object<Gtk::Button>(name)->set_label(label);
|
get_object<Gtk::Button>(name)->set_label(label);
|
||||||
|
|
|
@ -37,6 +37,7 @@ class GtkBuilderWindow
|
||||||
|
|
||||||
void enable_widget(const char *name, bool state);
|
void enable_widget(const char *name, bool state);
|
||||||
void show_widget(const char *name, bool state);
|
void show_widget(const char *name, bool state);
|
||||||
|
void set_label(const char * const name, const char * const label);
|
||||||
void set_button_label(const char *name, const char *label);
|
void set_button_label(const char *name, const char *label);
|
||||||
bool get_check(const char *name);
|
bool get_check(const char *name);
|
||||||
int get_entry_value(const char *name);
|
int get_entry_value(const char *name);
|
||||||
|
|
|
@ -23,6 +23,13 @@ Snes9xNetplayDialog::Snes9xNetplayDialog(Snes9xConfig *config)
|
||||||
if (!filename.empty())
|
if (!filename.empty())
|
||||||
get_object<Gtk::Entry>("rom_image")->set_text(filename);
|
get_object<Gtk::Entry>("rom_image")->set_text(filename);
|
||||||
});
|
});
|
||||||
|
// Handle plurals on GtkLabel "frames_behind_label"
|
||||||
|
get_object<Gtk::SpinButton>("frames_behind")->signal_value_changed().connect([&] {
|
||||||
|
set_label("frames_behind_label",
|
||||||
|
// GLib’s g_dngettext() would have been a better fit here but
|
||||||
|
// xgettext does not extract g_dngettext() by default
|
||||||
|
ngettext("frame behind", "frames behind", get_spin("frames_behind")));
|
||||||
|
});
|
||||||
|
|
||||||
this->config = config;
|
this->config = config;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
For further information, consult the LICENSE file in the root directory.
|
For further information, consult the LICENSE file in the root directory.
|
||||||
\*****************************************************************************/
|
\*****************************************************************************/
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include "gtk_compat.h"
|
#include "gtk_compat.h"
|
||||||
#include "gtk_preferences.h"
|
#include "gtk_preferences.h"
|
||||||
#include "gtk_config.h"
|
#include "gtk_config.h"
|
||||||
|
@ -109,7 +107,7 @@ Snes9xPreferences::Snes9xPreferences(Snes9xConfig *config)
|
||||||
if (m->modeFlags & RR_DoubleClock)
|
if (m->modeFlags & RR_DoubleClock)
|
||||||
dotClock *= 2;
|
dotClock *= 2;
|
||||||
|
|
||||||
auto str = fmt::format("{}x{} @ {:.3f}Hz",
|
auto str = fmt::format(_("{0:Ld}×{1:Ld} @ {2:.3Lf} Hz"),
|
||||||
m->width,
|
m->width,
|
||||||
m->height,
|
m->height,
|
||||||
(double)dotClock / m->hTotal / m->vTotal);
|
(double)dotClock / m->hTotal / m->vTotal);
|
||||||
|
@ -127,28 +125,28 @@ Snes9xPreferences::Snes9xPreferences(Snes9xConfig *config)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_HQ2X
|
#ifdef USE_HQ2X
|
||||||
combo_box_append("scale_method_combo", _("HQ2x"));
|
combo_box_append("scale_method_combo", "HQ2x");
|
||||||
combo_box_append("scale_method_combo", _("HQ3x"));
|
combo_box_append("scale_method_combo", "HQ3x");
|
||||||
combo_box_append("scale_method_combo", _("HQ4x"));
|
combo_box_append("scale_method_combo", "HQ4x");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_XBRZ
|
#ifdef USE_XBRZ
|
||||||
combo_box_append("scale_method_combo", _("2xBRZ"));
|
combo_box_append("scale_method_combo", "2xBRZ");
|
||||||
combo_box_append("scale_method_combo", _("3xBRZ"));
|
combo_box_append("scale_method_combo", "3xBRZ");
|
||||||
combo_box_append("scale_method_combo", _("4xBRZ"));
|
combo_box_append("scale_method_combo", "4xBRZ");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (const auto &driver : config->display_drivers)
|
for (const auto &driver : config->display_drivers)
|
||||||
{
|
{
|
||||||
std::string entry;
|
std::string entry;
|
||||||
if (driver == "opengl")
|
if (driver == "opengl")
|
||||||
entry = _("OpenGL - Use 3D graphics hardware");
|
entry = _("OpenGL – Use 3D graphics hardware");
|
||||||
else if (driver == "xv")
|
else if (driver == "xv")
|
||||||
entry = _("XVideo - Use hardware video blitter");
|
entry = _("XVideo – Use hardware video blitter");
|
||||||
else if (driver == "vulkan")
|
else if (driver == "vulkan")
|
||||||
entry = _("Vulkan");
|
entry = _("Vulkan");
|
||||||
else
|
else
|
||||||
entry = _("None - Use software scaler");
|
entry = _("None – Use software scaler");
|
||||||
|
|
||||||
combo_box_append("hw_accel", entry.c_str());
|
combo_box_append("hw_accel", entry.c_str());
|
||||||
}
|
}
|
||||||
|
@ -170,6 +168,18 @@ void Snes9xPreferences::connect_signals()
|
||||||
get_object<Gtk::ComboBox>("control_combo")->signal_changed().connect([&] {
|
get_object<Gtk::ComboBox>("control_combo")->signal_changed().connect([&] {
|
||||||
bindings_to_dialog(get_object<Gtk::ComboBox>("control_combo")->get_active_row_number());
|
bindings_to_dialog(get_object<Gtk::ComboBox>("control_combo")->get_active_row_number());
|
||||||
});
|
});
|
||||||
|
get_object<Gtk::CheckButton>("multithreading")->signal_toggled().connect([&] {
|
||||||
|
enable_widget("num_threads", get_check("multithreading"));
|
||||||
|
});
|
||||||
|
// Handle plurals on GtkLabel “threads_for_filtering_and_scaling_label”
|
||||||
|
get_object<Gtk::SpinButton>("num_threads")->signal_value_changed().connect([&] {
|
||||||
|
set_label("threads_for_filtering_and_scaling_label",
|
||||||
|
// GLib’s g_d_ngettext() would have been a better fit here but
|
||||||
|
// xgettext does not extract g_dngettext() by default
|
||||||
|
ngettext("thread for filtering and scaling",
|
||||||
|
"threads for filtering and scaling",
|
||||||
|
get_spin("num_threads")));
|
||||||
|
});
|
||||||
get_object<Gtk::ComboBox>("scale_method_combo")->signal_changed().connect([&] {
|
get_object<Gtk::ComboBox>("scale_method_combo")->signal_changed().connect([&] {
|
||||||
int id = get_combo("scale_method_combo");
|
int id = get_combo("scale_method_combo");
|
||||||
show_widget("ntsc_alignment", id == FILTER_NTSC);
|
show_widget("ntsc_alignment", id == FILTER_NTSC);
|
||||||
|
@ -207,13 +217,26 @@ void Snes9xPreferences::connect_signals()
|
||||||
get_object<Gtk::Button>("fragment_shader_button")->signal_pressed().connect(sigc::mem_fun(*this, &Snes9xPreferences::shader_select));
|
get_object<Gtk::Button>("fragment_shader_button")->signal_pressed().connect(sigc::mem_fun(*this, &Snes9xPreferences::shader_select));
|
||||||
get_object<Gtk::Button>("calibrate_button")->signal_pressed().connect(sigc::mem_fun(*this, &Snes9xPreferences::calibration_dialog));
|
get_object<Gtk::Button>("calibrate_button")->signal_pressed().connect(sigc::mem_fun(*this, &Snes9xPreferences::calibration_dialog));
|
||||||
get_object<Gtk::HScale>("sound_input_rate")->signal_value_changed().connect(sigc::mem_fun(*this, &Snes9xPreferences::input_rate_changed));
|
get_object<Gtk::HScale>("sound_input_rate")->signal_value_changed().connect(sigc::mem_fun(*this, &Snes9xPreferences::input_rate_changed));
|
||||||
|
get_object<Gtk::HScale>("sound_input_rate")->signal_format_value().connect(sigc::mem_fun(*this, &Snes9xPreferences::format_sound_input_rate_value));
|
||||||
get_object<Gtk::Button>("about_button")->signal_clicked().connect(sigc::mem_fun(*this, &Snes9xPreferences::about_dialog));
|
get_object<Gtk::Button>("about_button")->signal_clicked().connect(sigc::mem_fun(*this, &Snes9xPreferences::about_dialog));
|
||||||
get_object<Gtk::ToggleButton>("auto_input_rate")->signal_toggled().connect([&] {
|
get_object<Gtk::ToggleButton>("auto_input_rate")->signal_toggled().connect([&] {
|
||||||
auto toggle_button = get_object<Gtk::ToggleButton>("auto_input_rate");
|
auto toggle_button = get_object<Gtk::ToggleButton>("auto_input_rate");
|
||||||
|
enable_widget("sound_input_rate_label", !toggle_button->get_active());
|
||||||
enable_widget("sound_input_rate", !toggle_button->get_active());
|
enable_widget("sound_input_rate", !toggle_button->get_active());
|
||||||
|
enable_widget("video_rate_label", !toggle_button->get_active());
|
||||||
|
enable_widget("relative_video_rate", !toggle_button->get_active());
|
||||||
if (toggle_button->get_active())
|
if (toggle_button->get_active())
|
||||||
set_slider("sound_input_rate", top_level->get_auto_input_rate());
|
set_slider("sound_input_rate", top_level->get_auto_input_rate());
|
||||||
});
|
});
|
||||||
|
// Handle plurals on GtkLabel “milliseconds_label”
|
||||||
|
get_object<Gtk::SpinButton>("sound_buffer_size")->signal_value_changed().connect([&] {
|
||||||
|
set_label("milliseconds_label",
|
||||||
|
// GLib’s g_d_ngettext() would have been a better fit here but
|
||||||
|
// xgettext does not extract g_dngettext() by default
|
||||||
|
ngettext("millisecond",
|
||||||
|
"milliseconds",
|
||||||
|
get_spin("sound_buffer_size")));
|
||||||
|
});
|
||||||
|
|
||||||
std::array<std::string, 5> browse_buttons = { "sram", "savestate", "cheat", "patch", "export" };
|
std::array<std::string, 5> browse_buttons = { "sram", "savestate", "cheat", "patch", "export" };
|
||||||
for (auto &name : browse_buttons)
|
for (auto &name : browse_buttons)
|
||||||
|
@ -228,6 +251,16 @@ void Snes9xPreferences::connect_signals()
|
||||||
get_object<Gtk::Entry>((name + "_directory").c_str())->set_text(SAME_AS_GAME);
|
get_object<Gtk::Entry>((name + "_directory").c_str())->set_text(SAME_AS_GAME);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle plurals on GtkLabel “save_sram_after_sec_label”
|
||||||
|
get_object<Gtk::SpinButton>("save_sram_after_sec")->signal_value_changed().connect([&] {
|
||||||
|
set_label("save_sram_after_sec_label",
|
||||||
|
// GLib’s g_d_ngettext() would have been a better fit here but
|
||||||
|
// xgettext does not extract g_dngettext() by default
|
||||||
|
ngettext("second after change",
|
||||||
|
"seconds after change",
|
||||||
|
get_spin("save_sram_after_sec")));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Snes9xPreferences::about_dialog()
|
void Snes9xPreferences::about_dialog()
|
||||||
|
@ -282,9 +315,17 @@ void Snes9xPreferences::game_data_browse(std::string folder)
|
||||||
|
|
||||||
void Snes9xPreferences::input_rate_changed()
|
void Snes9xPreferences::input_rate_changed()
|
||||||
{
|
{
|
||||||
double value = get_object<Gtk::HScale>("sound_input_rate")->get_value();
|
const double value =
|
||||||
value = value / 32040.0 * NTSC_PROGRESSIVE_FRAME_RATE;
|
get_object<Gtk::HScale>("sound_input_rate")->get_value() /
|
||||||
get_object<Gtk::Label>("relative_video_rate")->set_label(fmt::format("{:.4f}Hz", value));
|
32040.0 * NTSC_PROGRESSIVE_FRAME_RATE;
|
||||||
|
set_label(
|
||||||
|
"relative_video_rate",
|
||||||
|
fmt::format(_("{0:.4Lf} Hz"), value).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
Glib::ustring Snes9xPreferences::format_sound_input_rate_value(double value)
|
||||||
|
{
|
||||||
|
return fmt::format(_("{0:Ld} Hz"), (uint32_t)std::round(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Snes9xPreferences::key_pressed(GdkEventKey *event)
|
bool Snes9xPreferences::key_pressed(GdkEventKey *event)
|
||||||
|
@ -400,6 +441,11 @@ void Snes9xPreferences::move_settings_to_dialog()
|
||||||
set_check("scale_to_fit", config->scale_to_fit);
|
set_check("scale_to_fit", config->scale_to_fit);
|
||||||
set_check("overscan", config->overscan);
|
set_check("overscan", config->overscan);
|
||||||
set_check("multithreading", config->multithreading);
|
set_check("multithreading", config->multithreading);
|
||||||
|
enable_widget("num_threads", get_check("multithreading"));
|
||||||
|
set_label("threads_for_filtering_and_scaling_label",
|
||||||
|
ngettext("thread for filtering and scaling",
|
||||||
|
"threads for filtering and scaling",
|
||||||
|
get_spin("num_threads")));
|
||||||
set_combo("hires_effect", config->hires_effect);
|
set_combo("hires_effect", config->hires_effect);
|
||||||
set_check("maintain_aspect_ratio", config->maintain_aspect_ratio);
|
set_check("maintain_aspect_ratio", config->maintain_aspect_ratio);
|
||||||
set_combo("aspect_ratio", config->aspect_ratio);
|
set_combo("aspect_ratio", config->aspect_ratio);
|
||||||
|
@ -426,7 +472,8 @@ void Snes9xPreferences::move_settings_to_dialog()
|
||||||
|
|
||||||
set_combo("resolution_combo", config->xrr_index);
|
set_combo("resolution_combo", config->xrr_index);
|
||||||
set_combo("scale_method_combo", config->scale_method);
|
set_combo("scale_method_combo", config->scale_method);
|
||||||
set_entry_value("save_sram_after_sec", Settings.AutoSaveDelay);
|
set_spin ("save_sram_after_sec", Settings.AutoSaveDelay);
|
||||||
|
set_label("save_sram_after_sec_label", ngettext("second after change", "seconds after change", get_spin("save_sram_after_sec")));
|
||||||
set_check("allow_invalid_vram_access", !Settings.BlockInvalidVRAMAccessMaster);
|
set_check("allow_invalid_vram_access", !Settings.BlockInvalidVRAMAccessMaster);
|
||||||
set_check("upanddown", Settings.UpAndDown);
|
set_check("upanddown", Settings.UpAndDown);
|
||||||
set_combo("default_esc_behavior", config->default_esc_behavior);
|
set_combo("default_esc_behavior", config->default_esc_behavior);
|
||||||
|
@ -445,8 +492,12 @@ void Snes9xPreferences::move_settings_to_dialog()
|
||||||
enable_widget("auto_input_rate", false);
|
enable_widget("auto_input_rate", false);
|
||||||
}
|
}
|
||||||
set_check ("auto_input_rate", config->auto_input_rate);
|
set_check ("auto_input_rate", config->auto_input_rate);
|
||||||
enable_widget("sound_input_rate", config->auto_input_rate ? false : true);
|
enable_widget("sound_input_rate_label", !config->auto_input_rate);
|
||||||
|
enable_widget("sound_input_rate", !config->auto_input_rate);
|
||||||
|
enable_widget("video_rate_label", !config->auto_input_rate);
|
||||||
|
enable_widget("relative_video_rate", !config->auto_input_rate);
|
||||||
set_spin ("sound_buffer_size", config->sound_buffer_size);
|
set_spin ("sound_buffer_size", config->sound_buffer_size);
|
||||||
|
set_label ("milliseconds_label", ngettext("millisecond", "milliseconds", get_spin("sound_buffer_size")));
|
||||||
set_check ("dynamic_rate_control", Settings.DynamicRateControl);
|
set_check ("dynamic_rate_control", Settings.DynamicRateControl);
|
||||||
set_spin ("dynamic_rate_limit", Settings.DynamicRateLimit / 1000.0);
|
set_spin ("dynamic_rate_limit", Settings.DynamicRateLimit / 1000.0);
|
||||||
set_spin ("rewind_buffer_size", config->rewind_buffer_size);
|
set_spin ("rewind_buffer_size", config->rewind_buffer_size);
|
||||||
|
@ -579,7 +630,7 @@ void Snes9xPreferences::get_settings_from_dialog()
|
||||||
config->hires_effect = get_combo("hires_effect");
|
config->hires_effect = get_combo("hires_effect");
|
||||||
config->auto_vrr = get_check("auto_vrr");
|
config->auto_vrr = get_check("auto_vrr");
|
||||||
config->force_inverted_byte_order = get_check("force_inverted_byte_order");
|
config->force_inverted_byte_order = get_check("force_inverted_byte_order");
|
||||||
Settings.AutoSaveDelay = get_entry_value("save_sram_after_sec");
|
Settings.AutoSaveDelay = get_spin("save_sram_after_sec");
|
||||||
config->multithreading = get_check("multithreading");
|
config->multithreading = get_check("multithreading");
|
||||||
config->pause_emulation_on_switch = get_check("pause_emulation_on_switch");
|
config->pause_emulation_on_switch = get_check("pause_emulation_on_switch");
|
||||||
Settings.BlockInvalidVRAMAccessMaster = !get_check("allow_invalid_vram_access");
|
Settings.BlockInvalidVRAMAccessMaster = !get_check("allow_invalid_vram_access");
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
void snes9x_preferences_create(Snes9xConfig *config);
|
void snes9x_preferences_create(Snes9xConfig *config);
|
||||||
void snes9x_preferences_open(Snes9xWindow *window);
|
void snes9x_preferences_open(Snes9xWindow *window);
|
||||||
|
|
||||||
class Snes9xPreferences : public GtkBuilderWindow
|
class Snes9xPreferences final : public GtkBuilderWindow
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Snes9xPreferences(Snes9xConfig *config);
|
Snes9xPreferences(Snes9xConfig *config);
|
||||||
|
@ -49,6 +49,7 @@ class Snes9xPreferences : public GtkBuilderWindow
|
||||||
private:
|
private:
|
||||||
void get_settings_from_dialog();
|
void get_settings_from_dialog();
|
||||||
void move_settings_to_dialog();
|
void move_settings_to_dialog();
|
||||||
|
Glib::ustring format_sound_input_rate_value(double);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __GTK_PREFERENCES_H */
|
#endif /* __GTK_PREFERENCES_H */
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
For further information, consult the LICENSE file in the root directory.
|
For further information, consult the LICENSE file in the root directory.
|
||||||
\*****************************************************************************/
|
\*****************************************************************************/
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#define G_LOG_USE_STRUCTURED
|
||||||
|
#define G_LOG_DOMAIN GETTEXT_PACKAGE
|
||||||
#include "gtk_compat.h"
|
#include "gtk_compat.h"
|
||||||
#include "gtk_config.h"
|
#include "gtk_config.h"
|
||||||
#include "gtk_s9x.h"
|
#include "gtk_s9x.h"
|
||||||
|
@ -52,7 +53,7 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
auto app = Gtk::Application::create("com.snes9x.gtk", Gio::APPLICATION_NON_UNIQUE);
|
auto app = Gtk::Application::create("com.snes9x.gtk", Gio::APPLICATION_NON_UNIQUE);
|
||||||
|
|
||||||
setlocale(LC_ALL, "");
|
std::locale::global(std::locale(""));
|
||||||
bindtextdomain(GETTEXT_PACKAGE, SNES9XLOCALEDIR);
|
bindtextdomain(GETTEXT_PACKAGE, SNES9XLOCALEDIR);
|
||||||
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
||||||
textdomain(GETTEXT_PACKAGE);
|
textdomain(GETTEXT_PACKAGE);
|
||||||
|
@ -199,7 +200,13 @@ int S9xOpenROM(const char *rom_filename)
|
||||||
|
|
||||||
if (state_manager.init(gui_config->rewind_buffer_size * 1024 * 1024))
|
if (state_manager.init(gui_config->rewind_buffer_size * 1024 * 1024))
|
||||||
{
|
{
|
||||||
printf("Using rewind buffer of %uMB\n", gui_config->rewind_buffer_size);
|
S9xMessage(
|
||||||
|
S9X_INFO,
|
||||||
|
S9X_NO_INFO,
|
||||||
|
fmt::format(_("Using rewind buffer of {0}\n"),
|
||||||
|
Glib::format_size(
|
||||||
|
gui_config->rewind_buffer_size * 1024 * 1024,
|
||||||
|
Glib::FORMAT_SIZE_IEC_UNITS).c_str()).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
S9xROMLoaded();
|
S9xROMLoaded();
|
||||||
|
@ -360,16 +367,55 @@ void S9xMessage(int type, int number, const char *message)
|
||||||
switch (number)
|
switch (number)
|
||||||
{
|
{
|
||||||
case S9X_MOVIE_INFO:
|
case S9X_MOVIE_INFO:
|
||||||
|
{
|
||||||
S9xSetInfoString(message);
|
S9xSetInfoString(message);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case S9X_ROM_INFO:
|
case S9X_ROM_INFO:
|
||||||
{
|
{
|
||||||
S9xSetInfoString(Memory.GetMultilineROMInfo().c_str());
|
S9xSetInfoString(Memory.GetMultilineROMInfo().c_str());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case S9X_TRACE:
|
||||||
|
case S9X_DEBUG:
|
||||||
|
{
|
||||||
|
g_debug(message);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case S9X_WARNING:
|
||||||
|
{
|
||||||
|
g_warning(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case S9X_INFO:
|
||||||
|
{
|
||||||
|
g_info(message);
|
||||||
|
g_message(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case S9X_ERROR:
|
||||||
|
{
|
||||||
|
// GLib’s g_critical() does not terminate the process
|
||||||
|
g_critical(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case S9X_FATAL_ERROR:
|
||||||
|
{
|
||||||
|
// GLib’s g_error() terminates the process
|
||||||
|
g_error(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
g_message(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Varies from ParseArgs because this one is for the OS port to handle */
|
/* Varies from ParseArgs because this one is for the OS port to handle */
|
||||||
|
@ -550,10 +596,11 @@ const char *S9xStringInput(const char *message)
|
||||||
|
|
||||||
void S9xExtraUsage()
|
void S9xExtraUsage()
|
||||||
{
|
{
|
||||||
printf("GTK port options:\n"
|
S9xMessage(S9X_INFO, S9X_USAGE,
|
||||||
|
_("GTK port options:\n"
|
||||||
"-filter [option] Use a filter to scale the image.\n"
|
"-filter [option] Use a filter to scale the image.\n"
|
||||||
" [option] is one of: none supereagle 2xsai\n"
|
" [option] is one of: none supereagle 2xsai\n"
|
||||||
" super2xsai hq2x hq3x hq4x 2xbrz 3xbrz 4xbrz epx ntsc\n"
|
" super2xsai hq2x hq3x hq4x 2xbrz 3xbrz 4xbrz epx ntsc\n"
|
||||||
"\n"
|
"\n"
|
||||||
"-mutesound Disables sound output.\n");
|
"-mutesound Disables sound output.\n"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
|
||||||
#define SNES9X_GTK_AUTHORS "(c) 2007 - 2020 Brandon Wright (bearoso@gmail.com)"
|
#define SNES9X_GTK_AUTHORS "© 2007 - 2023 Brandon Wright (bearoso@gmail.com)"
|
||||||
#define SNES9X_GTK_VERSION "87"
|
#define SNES9X_GTK_VERSION "87"
|
||||||
|
|
||||||
extern Snes9xWindow *top_level;
|
extern Snes9xWindow *top_level;
|
||||||
|
|
|
@ -30,6 +30,8 @@
|
||||||
#include "gtk_netplay.h"
|
#include "gtk_netplay.h"
|
||||||
#include "gtk_s9xwindow.h"
|
#include "gtk_s9xwindow.h"
|
||||||
|
|
||||||
|
#include "fmt/format.h"
|
||||||
|
|
||||||
#include "snes9x.h"
|
#include "snes9x.h"
|
||||||
#include "controls.h"
|
#include "controls.h"
|
||||||
#include "movie.h"
|
#include "movie.h"
|
||||||
|
@ -784,8 +786,6 @@ void Snes9xWindow::load_state_dialog()
|
||||||
|
|
||||||
void Snes9xWindow::movie_seek_dialog()
|
void Snes9xWindow::movie_seek_dialog()
|
||||||
{
|
{
|
||||||
char str[1024];
|
|
||||||
|
|
||||||
if (!S9xMovieActive())
|
if (!S9xMovieActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -793,11 +793,14 @@ void Snes9xWindow::movie_seek_dialog()
|
||||||
|
|
||||||
GtkBuilderWindow seek_dialog("frame_advance_dialog");
|
GtkBuilderWindow seek_dialog("frame_advance_dialog");
|
||||||
|
|
||||||
snprintf(str, 1024, _("The current frame in the movie is <b>%d</b>."), S9xMovieGetFrameCounter());
|
{
|
||||||
|
std::string str;
|
||||||
|
str = fmt::format(_("The current frame in the movie is <b>{0:Ld}</b>."), S9xMovieGetFrameCounter());
|
||||||
seek_dialog.get_object<Gtk::Label>("current_frame_label")->set_label(str);
|
seek_dialog.get_object<Gtk::Label>("current_frame_label")->set_label(str);
|
||||||
|
|
||||||
snprintf(str, 1024, "%d", S9xMovieGetFrameCounter());
|
str = fmt::format("{0:d}", S9xMovieGetFrameCounter());
|
||||||
seek_dialog.set_entry_text("frame_entry", str);
|
seek_dialog.set_entry_text("frame_entry", str);
|
||||||
|
}
|
||||||
|
|
||||||
auto dialog = Glib::RefPtr<Gtk::Dialog>::cast_static(seek_dialog.window);
|
auto dialog = Glib::RefPtr<Gtk::Dialog>::cast_static(seek_dialog.window);
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk+" version="2.16"/>
|
<requires lib="gtk+" version="3.24"/>
|
||||||
<!-- interface-naming-policy project-wide -->
|
<!-- interface-naming-policy project-wide -->
|
||||||
<object class="GtkDialog" id="about_dialog">
|
<object class="GtkDialog" id="about_dialog">
|
||||||
|
<!-- TODO: Replace GtkDialog with GtkAboutDialog -->
|
||||||
<property name="width_request">560</property>
|
<property name="width_request">560</property>
|
||||||
<property name="height_request">448</property>
|
<property name="height_request">448</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
@ -45,7 +46,6 @@
|
||||||
<property name="yalign">0</property>
|
<property name="yalign">0</property>
|
||||||
<property name="xpad">10</property>
|
<property name="xpad">10</property>
|
||||||
<property name="ypad">10</property>
|
<property name="ypad">10</property>
|
||||||
<property name="label" translatable="yes">label106</property>
|
|
||||||
<property name="use_markup">True</property>
|
<property name="use_markup">True</property>
|
||||||
<property name="justify">center</property>
|
<property name="justify">center</property>
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
|
@ -164,6 +164,11 @@
|
||||||
<property name="step_increment">10</property>
|
<property name="step_increment">10</property>
|
||||||
<property name="page_increment">10</property>
|
<property name="page_increment">10</property>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="save_sram_after_sec_adjustment">
|
||||||
|
<property name="upper">3600</property>
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">60</property>
|
||||||
|
</object>
|
||||||
<object class="GtkAdjustment" id="adjustment13">
|
<object class="GtkAdjustment" id="adjustment13">
|
||||||
<property name="lower">-1</property>
|
<property name="lower">-1</property>
|
||||||
<property name="upper">1</property>
|
<property name="upper">1</property>
|
||||||
|
@ -655,7 +660,7 @@
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
<property name="label" translatable="yes">Fast-forward to frame</property>
|
<property name="label" translatable="yes">Fast‑forward to frame</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
|
@ -731,30 +736,12 @@
|
||||||
<property name="stock">gtk-leave-fullscreen</property>
|
<property name="stock">gtk-leave-fullscreen</property>
|
||||||
<property name="icon-size">1</property>
|
<property name="icon-size">1</property>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkImage" id="image15">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="stock">gtk-fullscreen</property>
|
|
||||||
<property name="icon-size">1</property>
|
|
||||||
</object>
|
|
||||||
<object class="GtkImage" id="image16">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="stock">gtk-preferences</property>
|
|
||||||
<property name="icon-size">1</property>
|
|
||||||
</object>
|
|
||||||
<object class="GtkImage" id="image17">
|
<object class="GtkImage" id="image17">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="stock">gtk-zoom-in</property>
|
<property name="stock">gtk-zoom-in</property>
|
||||||
<property name="icon-size">1</property>
|
<property name="icon-size">1</property>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkImage" id="image18">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="stock">gtk-quit</property>
|
|
||||||
<property name="icon-size">1</property>
|
|
||||||
</object>
|
|
||||||
<object class="GtkImage" id="image19">
|
<object class="GtkImage" id="image19">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
@ -845,13 +832,13 @@
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Game Genie</col>
|
<col id="0" translatable="no">Game Genie</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Pro Action Replay</col>
|
<col id="0" translatable="no">Pro Action Replay</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Goldfinger</col>
|
<col id="0" translatable="no">Goldfinger</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -905,37 +892,37 @@
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">None</col>
|
<col id="0" translatable="yes" context="filter list">None</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">SuperEagle</col>
|
<col id="0" translatable="no">SuperEagle</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">2xSaI</col>
|
<col id="0" translatable="no">2xSaI</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Super2xSaI</col>
|
<col id="0" translatable="no">Super2xSaI</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">EPX</col>
|
<col id="0" translatable="no">EPX</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">EPX Smooth</col>
|
<col id="0" translatable="no">EPX Smooth</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Blargg's NTSC</col>
|
<col id="0" translatable="no">Blargg’s NTSC</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Scanlines</col>
|
<col id="0" translatable="no">Scanlines</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Simple2x</col>
|
<col id="0" translatable="no">Simple2x</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Simple3x</col>
|
<col id="0" translatable="no">Simple3x</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Simple4x</col>
|
<col id="0" translatable="no">Simple4x</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -984,7 +971,7 @@
|
||||||
<col id="0" translatable="yes">Output directly</col>
|
<col id="0" translatable="yes">Output directly</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Scale low-resolution screens</col>
|
<col id="0" translatable="yes">Scale low‑resolution screens</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1088,10 +1075,10 @@
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Timer-based</col>
|
<col id="0" translatable="yes">Timer‑based</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Timer-based with automatic frame-skipping</col>
|
<col id="0" translatable="yes">Timer‑based with automatic frame-skipping</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Sound buffer synchronization</col>
|
<col id="0" translatable="yes">Sound buffer synchronization</col>
|
||||||
|
@ -1108,28 +1095,28 @@
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">48000 hz</col>
|
<col id="0" translatable="yes">48,000 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">44100 hz</col>
|
<col id="0" translatable="yes">44,100 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">32000 hz</col>
|
<col id="0" translatable="yes">32,000 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">22050 hz</col>
|
<col id="0" translatable="yes">22,050 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">16000 hz</col>
|
<col id="0" translatable="yes">16,000 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">11025 hz</col>
|
<col id="0" translatable="yes">11,025 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">8000 hz</col>
|
<col id="0" translatable="yes">8,000 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">0 hz</col>
|
<col id="0" translatable="yes">0 Hz</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1146,10 +1133,10 @@
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">16-bit (GL_RGB)</col>
|
<col id="0" translatable="yes">16‑bit (GL_RGB)</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">32-bit (GL_BGRA)</col>
|
<col id="0" translatable="yes">32‑bit (GL_BGRA)</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1212,7 +1199,7 @@
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="open_rom_item">
|
<object class="GtkImageMenuItem" id="open_rom_item">
|
||||||
<property name="label" translatable="yes">_Open ROM Image...</property>
|
<property name="label" translatable="yes">_Open ROM Image…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
|
@ -1247,7 +1234,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="open_netplay_item">
|
<object class="GtkImageMenuItem" id="open_netplay_item">
|
||||||
<property name="label" translatable="yes">Open with _NetPlay...</property>
|
<property name="label" translatable="yes">Open with _NetPlay…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">Open a ROM to use with NetPlay</property>
|
<property name="tooltip_text" translatable="yes">Open a ROM to use with NetPlay</property>
|
||||||
|
@ -1261,7 +1248,7 @@
|
||||||
<object class="GtkMenuItem" id="open_multicart_item">
|
<object class="GtkMenuItem" id="open_multicart_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">Open _MultiCart...</property>
|
<property name="label" translatable="yes">Open _MultiCart…</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="open_multicart" swapped="no"/>
|
<signal name="activate" handler="open_multicart" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1382,7 +1369,7 @@
|
||||||
<object class="GtkMenuItem" id="from_file1">
|
<object class="GtkMenuItem" id="from_file1">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">From _File...</property>
|
<property name="label" translatable="yes">From _File…</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="load_state_file" swapped="no"/>
|
<signal name="activate" handler="load_state_file" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1516,7 +1503,7 @@
|
||||||
<object class="GtkMenuItem" id="to_file1">
|
<object class="GtkMenuItem" id="to_file1">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">To _File...</property>
|
<property name="label" translatable="yes">To _File…</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="save_state_file" swapped="no"/>
|
<signal name="activate" handler="save_state_file" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1533,7 +1520,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="save_spc_item">
|
<object class="GtkImageMenuItem" id="save_spc_item">
|
||||||
<property name="label" translatable="yes">Save SPC...</property>
|
<property name="label" translatable="yes">Save SPC…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
|
@ -1550,7 +1537,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="rom_info_item">
|
<object class="GtkImageMenuItem" id="rom_info_item">
|
||||||
<property name="label" translatable="yes">Show ROM _Info...</property>
|
<property name="label" translatable="yes">Show ROM _Info…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
|
@ -1567,12 +1554,9 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="exit_item">
|
<object class="GtkImageMenuItem" id="exit_item">
|
||||||
<property name="label" translatable="yes">_Quit</property>
|
<property name="label" translatable="yes">gtk-quit</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="use_stock">True</property>
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="image">image18</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="main_window_delete_event" swapped="no"/>
|
<signal name="activate" handler="main_window_delete_event" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
@ -1620,7 +1604,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="open_movie_item">
|
<object class="GtkImageMenuItem" id="open_movie_item">
|
||||||
<property name="label" translatable="yes">Load _Movie...</property>
|
<property name="label" translatable="yes">Load _Movie…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
|
@ -1632,7 +1616,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="record_movie_item">
|
<object class="GtkImageMenuItem" id="record_movie_item">
|
||||||
<property name="label" translatable="yes">R_ecord Movie...</property>
|
<property name="label" translatable="yes">R_ecord Movie…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
|
@ -1656,7 +1640,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="jump_to_frame_item">
|
<object class="GtkImageMenuItem" id="jump_to_frame_item">
|
||||||
<property name="label" translatable="yes">_Jump to Frame...</property>
|
<property name="label" translatable="yes">_Jump to Frame…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
|
@ -1759,7 +1743,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_1x_item">
|
<object class="GtkMenuItem" id="exact_pixels_1x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_1x</property>
|
<property name="label" translatable="yes">_1×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_1x" swapped="no"/>
|
<signal name="activate" handler="exact_1x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1768,7 +1752,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_2x_item">
|
<object class="GtkMenuItem" id="exact_pixels_2x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_2x</property>
|
<property name="label" translatable="yes">_2×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_2x" swapped="no"/>
|
<signal name="activate" handler="exact_2x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1777,7 +1761,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_3x_item">
|
<object class="GtkMenuItem" id="exact_pixels_3x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_3x</property>
|
<property name="label" translatable="yes">_3×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_3x" swapped="no"/>
|
<signal name="activate" handler="exact_3x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1786,7 +1770,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_4x_item">
|
<object class="GtkMenuItem" id="exact_pixels_4x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_4x</property>
|
<property name="label" translatable="yes">_4×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_4x" swapped="no"/>
|
<signal name="activate" handler="exact_4x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1795,7 +1779,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_5x_item">
|
<object class="GtkMenuItem" id="exact_pixels_5x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_5x</property>
|
<property name="label" translatable="yes">_5×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_5x" swapped="no"/>
|
<signal name="activate" handler="exact_5x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1804,7 +1788,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_6x_item">
|
<object class="GtkMenuItem" id="exact_pixels_6x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_6x</property>
|
<property name="label" translatable="yes">_6×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_6x" swapped="no"/>
|
<signal name="activate" handler="exact_6x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1813,7 +1797,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_7x_item">
|
<object class="GtkMenuItem" id="exact_pixels_7x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_7x</property>
|
<property name="label" translatable="yes">_7×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_7x" swapped="no"/>
|
<signal name="activate" handler="exact_7x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1822,7 +1806,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_8x_item">
|
<object class="GtkMenuItem" id="exact_pixels_8x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_8x</property>
|
<property name="label" translatable="yes">_8×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_8x" swapped="no"/>
|
<signal name="activate" handler="exact_8x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1831,7 +1815,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_9x_item">
|
<object class="GtkMenuItem" id="exact_pixels_9x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">_9x</property>
|
<property name="label" translatable="yes">_9×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_9x" swapped="no"/>
|
<signal name="activate" handler="exact_9x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1840,7 +1824,7 @@
|
||||||
<object class="GtkMenuItem" id="exact_pixels_10x_item">
|
<object class="GtkMenuItem" id="exact_pixels_10x_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">1_0x</property>
|
<property name="label" translatable="yes">1_0×</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="exact_10x" swapped="no"/>
|
<signal name="activate" handler="exact_10x" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1857,12 +1841,9 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="fullscreen_item">
|
<object class="GtkImageMenuItem" id="fullscreen_item">
|
||||||
<property name="label" translatable="yes">_Fullscreen</property>
|
<property name="label" translatable="yes">gtk-fullscreen</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="use_stock">True</property>
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="image">image15</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_fullscreen_item_activate" swapped="no"/>
|
<signal name="activate" handler="on_fullscreen_item_activate" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
@ -1986,7 +1967,7 @@
|
||||||
<object class="GtkRadioMenuItem" id="nothingpluggedin2">
|
<object class="GtkRadioMenuItem" id="nothingpluggedin2">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">None</property>
|
<property name="label" translatable="yes" context="SNES port 2">None</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="active">True</property>
|
<property name="active">True</property>
|
||||||
<property name="group">joypad2</property>
|
<property name="group">joypad2</property>
|
||||||
|
@ -2012,7 +1993,7 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
<property name="label" translatable="yes">_Cheats...</property>
|
<property name="label" translatable="yes">_Cheats…</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<signal name="activate" handler="open_cheats" swapped="no"/>
|
<signal name="activate" handler="open_cheats" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -2026,7 +2007,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuItem" id="shader_parameters_item">
|
<object class="GtkMenuItem" id="shader_parameters_item">
|
||||||
<property name="label" translatable="yes">_Shader Parameters...</property>
|
<property name="label" translatable="yes">_Shader Parameters…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
|
@ -2042,12 +2023,9 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImageMenuItem" id="preferences_item">
|
<object class="GtkImageMenuItem" id="preferences_item">
|
||||||
<property name="label" translatable="yes">_Preferences...</property>
|
<property name="label" translatable="yes">gtk-preferences</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="use_stock">True</property>
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="image">image16</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_preferences_item_activate" swapped="no"/>
|
<signal name="activate" handler="on_preferences_item_activate" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
@ -2322,7 +2300,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="browse_button">
|
<object class="GtkButton" id="browse_button">
|
||||||
<property name="label" translatable="yes">Browse...</property>
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -2636,6 +2614,7 @@
|
||||||
<property name="adjustment">adjustment1</property>
|
<property name="adjustment">adjustment1</property>
|
||||||
<property name="snap_to_ticks">True</property>
|
<property name="snap_to_ticks">True</property>
|
||||||
<property name="numeric">True</property>
|
<property name="numeric">True</property>
|
||||||
|
<signal name="value-changed" handler="frames_behind_changed"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -2644,10 +2623,10 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label136">
|
<object class="GtkLabel" id="frames_behind_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">frames behind</property>
|
<property name="label" translatable="yes"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -2875,7 +2854,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="show_indicators">
|
<object class="GtkCheckButton" id="show_indicators">
|
||||||
<property name="label" translatable="yes">Show fast-forward and pause indicators</property>
|
<property name="label" translatable="yes">Show fast‑forward and pause indicators</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
@ -2916,7 +2895,7 @@
|
||||||
<object class="GtkLabel" id="osdlabel">
|
<object class="GtkLabel" id="osdlabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">On-screen display size:</property>
|
<property name="label" translatable="yes">On‑screen display size:</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -2927,7 +2906,7 @@
|
||||||
<object class="GtkSpinButton" id="osd_size">
|
<object class="GtkSpinButton" id="osd_size">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="tooltip_text" translatable="yes">Connect to specified TCP port on remote computer</property>
|
<property name="tooltip_text" translatable="yes">The size of on‑screen display messages in pixels</property>
|
||||||
<property name="primary_icon_activatable">False</property>
|
<property name="primary_icon_activatable">False</property>
|
||||||
<property name="secondary_icon_activatable">False</property>
|
<property name="secondary_icon_activatable">False</property>
|
||||||
<property name="primary_icon_sensitive">True</property>
|
<property name="primary_icon_sensitive">True</property>
|
||||||
|
@ -3107,7 +3086,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="maintain_aspect_ratio">
|
<object class="GtkCheckButton" id="maintain_aspect_ratio">
|
||||||
<property name="label" translatable="yes">Maintain aspect-ratio</property>
|
<property name="label" translatable="yes">Maintain aspect ratio</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
@ -3126,13 +3105,13 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="spacing">5</property>
|
<property name="spacing">5</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Allows scaling and filtering to use multiple processors</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="multithreading">
|
<object class="GtkCheckButton" id="multithreading">
|
||||||
<property name="label" translatable="yes">Use</property>
|
<property name="label" translatable="yes">Use</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">Allows scaling and filtering to use multiple processors</property>
|
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
</object>
|
</object>
|
||||||
|
@ -3153,6 +3132,7 @@
|
||||||
<property name="adjustment">adjustment17</property>
|
<property name="adjustment">adjustment17</property>
|
||||||
<property name="snap_to_ticks">True</property>
|
<property name="snap_to_ticks">True</property>
|
||||||
<property name="numeric">True</property>
|
<property name="numeric">True</property>
|
||||||
|
<signal name="value-changed" handler="num_threads_changed"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -3161,10 +3141,9 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label126">
|
<object class="GtkLabel" id="threads_for_filtering_and_scaling_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">threads for filtering and scaling</property>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -3188,7 +3167,7 @@
|
||||||
<object class="GtkLabel" id="label124">
|
<object class="GtkLabel" id="label124">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">High-resolution effect:</property>
|
<property name="label" translatable="yes">High‑resolution effect:</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -3327,7 +3306,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="ntsc_svideo_preset">
|
<object class="GtkButton" id="ntsc_svideo_preset">
|
||||||
<property name="label" translatable="yes">S-Video</property>
|
<property name="label" translatable="yes">S‑Video</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -3896,7 +3875,7 @@
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBox" id="hw_accel">
|
<object class="GtkComboBox" id="hw_accel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
<property name="model">liststore9</property>
|
<property name="model">liststore9</property>
|
||||||
<signal name="changed" handler="hw_accel_changed" swapped="no"/>
|
<signal name="changed" handler="hw_accel_changed" swapped="no"/>
|
||||||
|
@ -3915,7 +3894,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="bilinear_filter">
|
<object class="GtkCheckButton" id="bilinear_filter">
|
||||||
<property name="label" translatable="yes">Bilinear-filter output</property>
|
<property name="label" translatable="yes">Bilinear‐filter output</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
@ -3930,7 +3909,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="auto_vrr">
|
<object class="GtkCheckButton" id="auto_vrr">
|
||||||
<property name="label" translatable="yes">Use best settings for FreeSync/G-Sync when fullscreen</property>
|
<property name="label" translatable="yes">Use best settings for FreeSync/G‑Sync when in fullscreen</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
@ -4019,7 +3998,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="fragment_shader_button">
|
<object class="GtkButton" id="fragment_shader_button">
|
||||||
<property name="label" translatable="yes">Browse...</property>
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -4051,11 +4030,11 @@
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="force_inverted_byte_order">
|
<object class="GtkCheckButton" id="force_inverted_byte_order">
|
||||||
<property name="label" translatable="yes">Force an inverted byte-ordering</property>
|
<property name="label" translatable="yes">Force an inverted byte‑ordering</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">Forces a swapped byte-ordering for cases where the system's endian is used instead of the video card</property>
|
<property name="tooltip_text" translatable="yes">Forces a swapped byte‑ordering for cases where the system’s endian is used instead of the video card</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
@ -4200,7 +4179,7 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">Sets the correct input rate based on the display's refresh rate</property>
|
<property name="tooltip_text" translatable="yes">Sets the correct input rate based on the display’s refresh rate</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
<signal name="toggled" handler="auto_input_rate_toggled" swapped="no"/>
|
<signal name="toggled" handler="auto_input_rate_toggled" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
|
@ -4294,6 +4273,7 @@
|
||||||
<property name="snap_to_ticks">True</property>
|
<property name="snap_to_ticks">True</property>
|
||||||
<property name="width_chars">6</property>
|
<property name="width_chars">6</property>
|
||||||
<property name="numeric">True</property>
|
<property name="numeric">True</property>
|
||||||
|
<signal name="value-changed" handler="sound_buffer_size_changed"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -4302,10 +4282,9 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label137">
|
<object class="GtkLabel" id="milliseconds_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">milliseconds</property>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -4400,11 +4379,12 @@
|
||||||
<object class="GtkHScale" id="sound_input_rate">
|
<object class="GtkHScale" id="sound_input_rate">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="tooltip_text" translatable="yes">Adjust to produce more or less data. Decrease the rate if experiencing crackling. Increase the rate if experiencing frame-rate stuttering. Best used with the "Synchronize with sound" option</property>
|
<property name="tooltip_text" translatable="yes">Adjust to produce more or less data. Decrease the rate if experiencing crackling. Increase the rate if experiencing frame rate stuttering. Best used with the “Sound buffer synchronization” option.</property>
|
||||||
<property name="adjustment">adjustment5</property>
|
<property name="adjustment">adjustment5</property>
|
||||||
<property name="restrict_to_fill_level">False</property>
|
<property name="restrict_to_fill_level">False</property>
|
||||||
<property name="digits">0</property>
|
<property name="digits">8</property>
|
||||||
<property name="value_pos">left</property>
|
<property name="value_pos">left</property>
|
||||||
|
<signal name="format_value" handler="format_sound_input_rate_value"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
@ -4445,7 +4425,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label139">
|
<object class="GtkLabel" id="video_rate_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
|
@ -4462,7 +4442,6 @@
|
||||||
<object class="GtkLabel" id="relative_video_rate">
|
<object class="GtkLabel" id="relative_video_rate">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">label</property>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
@ -5134,7 +5113,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="sram_browse">
|
<object class="GtkButton" id="sram_browse">
|
||||||
<property name="label" translatable="yes">Browse...</property>
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -5149,7 +5128,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="savestate_browse">
|
<object class="GtkButton" id="savestate_browse">
|
||||||
<property name="label" translatable="yes">Browse...</property>
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -5166,7 +5145,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="cheat_browse">
|
<object class="GtkButton" id="cheat_browse">
|
||||||
<property name="label" translatable="yes">Browse...</property>
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -5183,7 +5162,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="patch_browse">
|
<object class="GtkButton" id="patch_browse">
|
||||||
<property name="label" translatable="yes">Browse...</property>
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -5200,7 +5179,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="export_browse">
|
<object class="GtkButton" id="export_browse">
|
||||||
<property name="label" translatable="yes">Browse...</property>
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
@ -5340,17 +5319,13 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="save_sram_after_sec">
|
<object class="GtkSpinButton" id="save_sram_after_sec">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="tooltip_text" translatable="yes">Automatically save the game's SRAM at this interval. Setting this to 0 will only save when quitting or changing ROMs</property>
|
<property name="tooltip_text" translatable="yes">Automatically save the game’s SRAM at this interval. Setting this to 0 will only save when quitting or changing ROMs</property>
|
||||||
<property name="invisible_char">•</property>
|
<property name="numeric">True</property>
|
||||||
<property name="width_chars">5</property>
|
<property name="adjustment">save_sram_after_sec_adjustment</property>
|
||||||
<property name="xalign">1</property>
|
<signal name="value-changed" handler="save_sram_after_sec_value_changed"/>
|
||||||
<property name="primary_icon_activatable">False</property>
|
|
||||||
<property name="secondary_icon_activatable">False</property>
|
|
||||||
<property name="primary_icon_sensitive">True</property>
|
|
||||||
<property name="secondary_icon_sensitive">True</property>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -5359,10 +5334,9 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label12">
|
<object class="GtkLabel" id="save_sram_after_sec_label">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">seconds after change</property>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -5565,13 +5539,14 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="use_modifiers">
|
<object class="GtkCheckButton" id="use_modifiers">
|
||||||
<property name="label" translatable="yes">Use modifier keys (CTRL, SHIFT, ALT) directly</property>
|
<property name="label" translatable="yes">Use _modifier keys (Ctrl, Shift, Alt) directly</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">Allow using modifier keys as independent keys instead of modifiers</property>
|
<property name="tooltip_text" translatable="yes">Allow using modifier keys as independent keys instead of modifiers</property>
|
||||||
<property name="active">True</property>
|
<property name="active">True</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -6700,7 +6675,7 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes"><small>Click an entry and then press the desired keys or joystick button
|
<property name="label" translatable="yes"><small>Click an entry and then press the desired keys or joystick button
|
||||||
<i>Escape</i>: Move to next<i> Shift-Escape</i>: Clear selected</small></property>
|
<tt>Escape</tt>: Move to next <tt>Shift+Escape</tt>: Clear selected</small></property>
|
||||||
<property name="use_markup">True</property>
|
<property name="use_markup">True</property>
|
||||||
<property name="justify">fill</property>
|
<property name="justify">fill</property>
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
|
@ -9052,7 +9027,7 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes"><small>Click an entry and then press the desired keys or joystick button
|
<property name="label" translatable="yes"><small>Click an entry and then press the desired keys or joystick button
|
||||||
<i>Escape</i>: Move to next<i> Shift-Escape</i>: Clear selected</small></property>
|
<tt>Escape</tt>: Move to next <tt>Shift+Escape</tt>: Clear selected</small></property>
|
||||||
<property name="use_markup">True</property>
|
<property name="use_markup">True</property>
|
||||||
<property name="justify">fill</property>
|
<property name="justify">fill</property>
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
|
@ -9142,7 +9117,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="force_enable_icons">
|
<object class="GtkCheckButton" id="force_enable_icons">
|
||||||
<property name="label" translatable="yes">Force-enable button and menu icons</property>
|
<property name="label" translatable="yes">Force‑enable button and menu icons</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
@ -9163,7 +9138,9 @@
|
||||||
<object class="GtkLabel" id="label128">
|
<object class="GtkLabel" id="label128">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">The ESC key should:</property>
|
<property name="label" translatable="yes">The <tt>Esc</tt> key should:</property>
|
||||||
|
<property name="use_markup">True</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -9364,19 +9341,19 @@
|
||||||
</action-widgets>
|
</action-widgets>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkTextBuffer" id="textbuffer1">
|
<object class="GtkTextBuffer" id="textbuffer1">
|
||||||
<property name="text" translatable="yes"> Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
|
<property name="text" translatable="yes"> Snes9x – A Portable Super Nintendo Entertainment System™ Emulator
|
||||||
|
|
||||||
Snes9x homepage: http://www.snes9x.com/
|
Snes9x homepage: http://www.snes9x.com/
|
||||||
Snes9x source code: https://github.com/snes9xgit/snes9x/
|
Snes9x source code: https://github.com/snes9xgit/snes9x/
|
||||||
|
|
||||||
Permission to use, copy, modify and/or distribute Snes9x in both binary
|
Permission to use, copy, modify and/or distribute Snes9x in both binary
|
||||||
and source form, for non-commercial purposes, is hereby granted without
|
and source form, for non‑commercial purposes, is hereby granted without
|
||||||
fee, providing that this license information and copyright notice appear
|
fee, providing that this license information and copyright notice appear
|
||||||
with all copies and any derived work.
|
with all copies and any derived work.
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided ‘as‑is’, without any express or implied
|
||||||
warranty. In no event shall the authors be held liable for any damages
|
warranty. In no event shall the authors be held liable for any damages
|
||||||
arising from the use of this software or it's derivatives.
|
arising from the use of this software or it’s derivatives.
|
||||||
|
|
||||||
Snes9x is freeware for PERSONAL USE only. Commercial users should
|
Snes9x is freeware for PERSONAL USE only. Commercial users should
|
||||||
seek permission of the copyright holders first. Commercial use includes,
|
seek permission of the copyright holders first. Commercial use includes,
|
||||||
|
|
Loading…
Reference in New Issue