Updated source and build script version references in preparation for new release. Updated SDL web documentation. Removed a few deprecated command line arguments from code and help text. Removed last few references to GTK in Qt GUI.

This commit is contained in:
mjbudd77 2020-12-10 21:43:50 -05:00
parent e7ba648d3b
commit fb965bbee0
15 changed files with 60 additions and 193 deletions

2
README
View File

@ -1,4 +1,4 @@
FCEUX SDL 2.2.3 SDL README FCEUX SDL 2.3.0 SDL README
========================== ==========================
Originally By Lukas Sabota (sf: punkrockguy318) Originally By Lukas Sabota (sf: punkrockguy318)
Updated By mjbudd77 Updated By mjbudd77

View File

@ -2,7 +2,7 @@
use strict; use strict;
my $VERSION="2.2.3"; my $VERSION="2.3.0";
my $INSTALL_PREFIX="/tmp/fceux"; my $INSTALL_PREFIX="/tmp/fceux";
my $CTL_FILENAME="$INSTALL_PREFIX/DEBIAN/control"; my $CTL_FILENAME="$INSTALL_PREFIX/DEBIAN/control";
my $ARCH="amd64"; my $ARCH="amd64";

View File

@ -7,8 +7,8 @@ uname -a
sw_vers sw_vers
FCEUX_VERSION_MAJOR=2 FCEUX_VERSION_MAJOR=2
FCEUX_VERSION_MINOR=2 FCEUX_VERSION_MINOR=3
FCEUX_VERSION_PATCH=3 FCEUX_VERSION_PATCH=0
SCRIPT_DIR=$( cd $(dirname $BASH_SOURCE[0]); pwd ); SCRIPT_DIR=$( cd $(dirname $BASH_SOURCE[0]); pwd );

View File

@ -7,8 +7,8 @@ An open source NES Emulator for Windows and Unix that features solid emulation a
Interim builds: Interim builds:
* Win32: [fceux.zip](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux.zip?branch=master&job=Windows%2032) * Win32: [fceux.zip](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux.zip?branch=master&job=Windows%2032)
* Win64: [fceux64.zip](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux64.zip?branch=master&job=Windows%2064) * Win64: [fceux64.zip](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux64.zip?branch=master&job=Windows%2064)
* Ubuntu: [fceux-2.2.3-amd64.deb](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.2.3-amd64.deb?branch=master&job=Ubuntu) * Ubuntu: [fceux-2.3.0-amd64.deb](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.3.0-amd64.deb?branch=master&job=Ubuntu)
* MacOSX: [fceux-2.2.3-Darwin.dmg](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.2.3-Darwin.dmg?branch=master&job=MacOS) * MacOSX: [fceux-2.3.0-Darwin.dmg](https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.3.0-Darwin.dmg?branch=master&job=MacOS)
* Status: [Appveyor](https://ci.appveyor.com/project/zeromus/fceux/) * Status: [Appveyor](https://ci.appveyor.com/project/zeromus/fceux/)
But you might like mesen more: https://github.com/SourMesen/Mesen But you might like mesen more: https://github.com/SourMesen/Mesen

View File

@ -119,7 +119,7 @@ AboutWindow::AboutWindow(QWidget *parent)
mainLayout->addLayout( hbox1 ); mainLayout->addLayout( hbox1 );
hbox1 = new QHBoxLayout(); hbox1 = new QHBoxLayout();
lbl = new QLabel( tr("© 2016 FceuX Development Team") ); lbl = new QLabel( tr("© 2020 FceuX Development Team") );
hbox1->addWidget( lbl ); hbox1->addWidget( lbl );
hbox1->setAlignment( Qt::AlignCenter ); hbox1->setAlignment( Qt::AlignCenter );

View File

@ -2071,7 +2071,6 @@ void QAsmView::updateAssemblyView(void)
uint8 opcode[3]; uint8 opcode[3];
char asmTxt[256]; char asmTxt[256];
dbg_asm_entry_t *a, *d; dbg_asm_entry_t *a, *d;
//GtkTextIter iter, next_iter;
char pc_found = 0; char pc_found = 0;
start_address_lp = starting_address = X.PC; start_address_lp = starting_address = X.PC;
@ -2112,12 +2111,6 @@ void QAsmView::updateAssemblyView(void)
} }
//asmText->clear(); //asmText->clear();
//gtk_text_buffer_get_start_iter( textbuf, &iter );
//textview_lines_allocated = gtk_text_buffer_get_line_count( textbuf ) - 1;
//printf("Num Lines: %i\n", textview_lines_allocated );
for (int i=0; i < 0xFFFF; i++) for (int i=0; i < 0xFFFF; i++)
{ {
line.clear(); line.clear();

View File

@ -206,7 +206,6 @@ InitConfig()
config->addOption('y', "yres", "SDL.YResolution", 0); config->addOption('y', "yres", "SDL.YResolution", 0);
config->addOption("SDL.LastXRes", 0); config->addOption("SDL.LastXRes", 0);
config->addOption("SDL.LastYRes", 0); config->addOption("SDL.LastYRes", 0);
config->addOption('b', "bpp", "SDL.BitsPerPixel", 32);
config->addOption("doublebuf", "SDL.DoubleBuffering", 1); config->addOption("doublebuf", "SDL.DoubleBuffering", 1);
config->addOption("autoscale", "SDL.AutoScale", 1); config->addOption("autoscale", "SDL.AutoScale", 1);
config->addOption("keepratio", "SDL.KeepRatio", 1); config->addOption("keepratio", "SDL.KeepRatio", 1);
@ -243,9 +242,6 @@ InitConfig()
config->addOption("autoInputPreset", "SDL.AutoInputPreset", 0); config->addOption("autoInputPreset", "SDL.AutoInputPreset", 0);
// allow for input configuration
//config->addOption('i', "inputcfg", "SDL.InputCfg", InputCfg);
// display input // display input
config->addOption("inputdisplay", "SDL.InputDisplay", 0); config->addOption("inputdisplay", "SDL.InputDisplay", 0);

View File

@ -387,7 +387,6 @@ static const char *DriverUsage =
"Option Value Description\n" "Option Value Description\n"
"--pal {0|1} Use PAL timing.\n" "--pal {0|1} Use PAL timing.\n"
"--newppu {0|1} Enable the new PPU core. (WARNING: May break savestates)\n" "--newppu {0|1} Enable the new PPU core. (WARNING: May break savestates)\n"
"--inputcfg d Configures input device d on startup.\n"
"--input(1,2) d Set which input device to emulate for input 1 or 2.\n" "--input(1,2) d Set which input device to emulate for input 1 or 2.\n"
" Devices: gamepad zapper powerpad.0 powerpad.1\n" " Devices: gamepad zapper powerpad.0 powerpad.1\n"
" arkanoid\n" " arkanoid\n"
@ -405,8 +404,6 @@ static const char *DriverUsage =
"--(x/y)scale x Multiply width/height by x. \n" "--(x/y)scale x Multiply width/height by x. \n"
" (Real numbers >0 with OpenGL, otherwise integers >0).\n" " (Real numbers >0 with OpenGL, otherwise integers >0).\n"
"--(x/y)stretch {0|1} Stretch to fill surface on x/y axis (OpenGL only).\n" "--(x/y)stretch {0|1} Stretch to fill surface on x/y axis (OpenGL only).\n"
"--bpp {8|16|32} Set bits per pixel.\n"
"--opengl {0|1} Enable OpenGL support.\n"
"--fullscreen {0|1} Enable full screen mode.\n" "--fullscreen {0|1} Enable full screen mode.\n"
"--noframe {0|1} Hide title bar and window decorations.\n" "--noframe {0|1} Hide title bar and window decorations.\n"
"--special {1-4} Use special video scaling filters\n" "--special {1-4} Use special video scaling filters\n"
@ -435,7 +432,6 @@ static const char *DriverUsage =
"--players x Set the number of local players in a network play\n" "--players x Set the number of local players in a network play\n"
" session.\n" " session.\n"
"--rp2mic {0|1} Replace Port 2 Start with microphone (Famicom).\n" "--rp2mic {0|1} Replace Port 2 Start with microphone (Famicom).\n"
"--nogui Don't load the GTK GUI\n"
"--4buttonexit {0|1} exit the emulator when A+B+Select+Start is pressed\n" "--4buttonexit {0|1} exit the emulator when A+B+Select+Start is pressed\n"
"--loadstate {0-9|>9} load from the given state when the game is loaded\n" "--loadstate {0-9|>9} load from the given state when the game is loaded\n"
"--savestate {0-9|>9} save to the given state when the game is closed\n" "--savestate {0-9|>9} save to the given state when the game is closed\n"
@ -548,15 +544,6 @@ int fceuWrapperInit( int argc, char *argv[] )
g_config->save(); g_config->save();
} }
//g_config->getOption("SDL.InputCfg", &s);
//if (s.size() != 0)
//{
// InitVideo(GameInfo);
// InputCfg(s);
//}
// update the input devices // update the input devices
UpdateInput(g_config); UpdateInput(g_config);

View File

@ -469,58 +469,6 @@ std::string GetFilename (const char *title, bool save, const char *filter)
fname = GetOpenFileName (&ofn); fname = GetOpenFileName (&ofn);
#endif #endif
//#ifdef _GTK
// int fullscreen = 0;
// g_config->getOption ("SDL.Fullscreen", &fullscreen);
// if (fullscreen)
// ToggleFS ();
//
// GtkWidget *fileChooser;
//
// GtkFileFilter *filterX;
// GtkFileFilter *filterAll;
//
// filterX = gtk_file_filter_new ();
// gtk_file_filter_add_pattern (filterX, filter);
// gtk_file_filter_set_name (filterX, filter);
//
//
// filterAll = gtk_file_filter_new ();
// gtk_file_filter_add_pattern (filterAll, "*");
// gtk_file_filter_set_name (filterAll, "All Files");
//
// if (save)
// fileChooser = gtk_file_chooser_dialog_new ("Save as", NULL,
// GTK_FILE_CHOOSER_ACTION_SAVE,
// "_Cancel",
// GTK_RESPONSE_CANCEL,
// "_Save",
// GTK_RESPONSE_ACCEPT, NULL);
// else
// fileChooser = gtk_file_chooser_dialog_new ("Open", NULL,
// GTK_FILE_CHOOSER_ACTION_OPEN,
// "_Cancel",
// GTK_RESPONSE_CANCEL,
// "_Open",
// GTK_RESPONSE_ACCEPT, NULL);
//
// // TODO: make file filters case insensitive
// //gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(fileChooser), filterX);
// gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (fileChooser), filterAll);
// int response = gtk_dialog_run (GTK_DIALOG (fileChooser));
//
// // flush gtk events
// while (gtk_events_pending ())
// gtk_main_iteration_do (TRUE);
//
// if (response == GTK_RESPONSE_ACCEPT)
// fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (fileChooser));
//
// gtk_widget_destroy (fileChooser);
//
// while (gtk_events_pending ())
// gtk_main_iteration_do (TRUE);
//#endif
FCEUI_ToggleEmulationPause (); FCEUI_ToggleEmulationPause ();
return fname; return fname;
} }
@ -530,71 +478,6 @@ std::string GetFilename (const char *title, bool save, const char *filter)
*/ */
std::string GetUserText (const char *title) std::string GetUserText (const char *title)
{ {
#ifdef _GTK
/* prg318 - 10/13/11 - this is broken in recent build and causes
* segfaults/very weird behavior i'd rather remove it for now than it cause
* accidental segfaults
* TODO fix it
*/
#if 0
//
// GtkWidget* d;
// GtkWidget* entry;
//
// d = gtk_dialog_new_with_buttons(title, NULL, GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_OK);
//
// entry = gtk_entry_new();
//
// GtkWidget* vbox = gtk_dialog_get_content_area(GTK_DIALOG(d));
//
// gtk_container_add(GTK_CONTAINER(vbox), entry);
//
// gtk_widget_show_all(d);
//
// gtk_dialog_run(GTK_DIALOG(d));
//
// // flush gtk events
// while(gtk_events_pending())
// gtk_main_iteration_do(TRUE);
//
// std::string input = gtk_entry_get_text(GTK_ENTRY(entry));
//
// if (FCEUI_EmulationPaused() == 0)
// FCEUI_ToggleEmulationPause(); // pause emulation
//
// int fullscreen = 0;
// g_config->getOption("SDL.Fullscreen", &fullscreen);
// if(fullscreen)
// ToggleFS(); // disable fullscreen emulation
//
// FILE *fpipe;
// std::string command = "zenity --entry --title=\"";
// command.append(title);
// command.append("\" --text=\"");
// command.append(title);
// command.append(":\"");
//
// if (!(fpipe = (FILE*)popen(command.c_str(),"r"))) // If fpipe is NULL
// FCEUD_PrintError("Pipe error on opening zenity");
// int c;
// std::string input;
// while((c = fgetc(fpipe)))
// {
// if (c == EOF || c == '\n')
// break;
// input += c;
// }
// pclose(fpipe);
// gtk_widget_destroy(d);
//
//
// while(gtk_events_pending())
// gtk_main_iteration_do(TRUE);
//
// FCEUI_ToggleEmulationPause(); // unpause emulation
// return input;
#endif // #if 0
#endif
return ""; return "";
} }
@ -926,9 +809,6 @@ static void KeyboardCommands (void)
{ {
if ( Hotkeys[HK_SELECT_STATE_0 + i].getRisingEdge() ) if ( Hotkeys[HK_SELECT_STATE_0 + i].getRisingEdge() )
{ {
#ifdef _GTK
setStateMenuItem(i);
#endif
FCEUI_SelectState (i, 1); FCEUI_SelectState (i, 1);
} }
} }
@ -936,17 +816,11 @@ static void KeyboardCommands (void)
if ( Hotkeys[HK_SELECT_STATE_NEXT].getRisingEdge() ) if ( Hotkeys[HK_SELECT_STATE_NEXT].getRisingEdge() )
{ {
FCEUI_SelectStateNext (1); FCEUI_SelectStateNext (1);
#ifdef _GTK
setStateMenuItem( CurrentState );
#endif
} }
if ( Hotkeys[HK_SELECT_STATE_PREV].getRisingEdge() ) if ( Hotkeys[HK_SELECT_STATE_PREV].getRisingEdge() )
{ {
FCEUI_SelectStateNext (-1); FCEUI_SelectStateNext (-1);
#ifdef _GTK
setStateMenuItem( CurrentState );
#endif
} }
if ( Hotkeys[HK_BIND_STATE].getRisingEdge() ) if ( Hotkeys[HK_BIND_STATE].getRisingEdge() )

View File

@ -74,7 +74,6 @@ int DTestButtonJoy(ButtConfig *bc);
void FCEUD_UpdateInput(void); void FCEUD_UpdateInput(void);
void UpdateInput(Config *config); void UpdateInput(Config *config);
//void InputCfg(const std::string &);
std::string GetUserText(const char* title); std::string GetUserText(const char* title);
const char* ButtonName(const ButtConfig* bc); const char* ButtonName(const ButtConfig* bc);

View File

@ -58,9 +58,6 @@ static int s_srendline, s_erendline;
static int s_tlines; static int s_tlines;
static int s_inited = 0; static int s_inited = 0;
//#ifdef OPENGL
//static int s_useOpenGL = 0;
//#endif
static double s_exs = 1.0, s_eys = 1.0; static double s_exs = 1.0, s_eys = 1.0;
static int s_eefx = 0; static int s_eefx = 0;
static int s_clipSides = 0; static int s_clipSides = 0;
@ -152,9 +149,6 @@ int InitVideo(FCEUGI *gi)
// load the relevant configuration variables // load the relevant configuration variables
g_config->getOption("SDL.Fullscreen", &s_fullscreen); g_config->getOption("SDL.Fullscreen", &s_fullscreen);
g_config->getOption("SDL.DoubleBuffering", &doublebuf); g_config->getOption("SDL.DoubleBuffering", &doublebuf);
//#ifdef OPENGL
// g_config->getOption("SDL.OpenGL", &s_useOpenGL);
//#endif
g_config->getOption("SDL.SpecialFilter", &s_sponge); g_config->getOption("SDL.SpecialFilter", &s_sponge);
g_config->getOption("SDL.XStretch", &xstretch); g_config->getOption("SDL.XStretch", &xstretch);
g_config->getOption("SDL.YStretch", &ystretch); g_config->getOption("SDL.YStretch", &ystretch);

View File

@ -61,7 +61,7 @@
#endif #endif
#define FCEU_VERSION_NUMERIC 22020 #define FCEU_VERSION_NUMERIC 22020
#define FCEU_VERSION_STRING "2.2.3" FCEU_SUBVERSION_STRING FCEU_FEATURE_STRING FCEU_COMPILER #define FCEU_VERSION_STRING "2.3.0" FCEU_SUBVERSION_STRING FCEU_FEATURE_STRING FCEU_COMPILER
#define FCEU_NAME_AND_VERSION FCEU_NAME " " FCEU_VERSION_STRING #define FCEU_NAME_AND_VERSION FCEU_NAME " " FCEU_VERSION_STRING
#endif #endif

View File

@ -77,8 +77,8 @@
<ul> <ul>
<li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux.zip?branch=master&job=Windows%2032">Windows 32-bit</a></li> <li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux.zip?branch=master&job=Windows%2032">Windows 32-bit</a></li>
<li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux64.zip?branch=master&job=Windows%2064">Windows 64-bit</a></li> <li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux64.zip?branch=master&job=Windows%2064">Windows 64-bit</a></li>
<li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.2.3-amd64.deb?branch=master&job=Ubuntu">Ubuntu Linux</a></li> <li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.3.0-amd64.deb?branch=master&job=Ubuntu">Ubuntu Linux</a></li>
<li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.2.3-Darwin.dmg?branch=master&job=MacOS">Mac OS X</a></li> <li><a href="https://ci.appveyor.com/api/projects/zeromus/fceux/artifacts/fceux-2.3.0-Darwin.dmg?branch=master&job=MacOS">Mac OS X</a></li>
</ul> </ul>
<h3>Source Code</h3> <h3>Source Code</h3>

View File

@ -23,7 +23,7 @@
<div id="page_content"> <div id="page_content">
<center><h1>FCEUX SDL Documentation</h1></center> <center><h1>FCEUX SDL Documentation</h1></center>
<center><i>Last updated October 11, 2011<br />Valid as of FCEUX 2.1.5</i><br></center> <center><i>Last updated December 9, 2020<br />Valid as of FCEUX 2.3.0</i><br></center>
<p> <p>
<b>Table of Contents:</b> <b>Table of Contents:</b>
<ul> <ul>
@ -36,6 +36,7 @@
<li /><a href="#features-ips">Automatic IPS Patching</a> <li /><a href="#features-ips">Automatic IPS Patching</a>
<li /><a href="#using">Using FCEUX</a> <li /><a href="#using">Using FCEUX</a>
<ul> <ul>
<li /><a href="#gui-styling">Qt GUI Style</a>
<li /><a href="#using-hotkeys">Hotkey Assignments</a> <li /><a href="#using-hotkeys">Hotkey Assignments</a>
<ul> <ul>
<li /><a href="#using-keys-vs">VS Unisystem</a> <li /><a href="#using-keys-vs">VS Unisystem</a>
@ -185,13 +186,25 @@ necessarily 100% accurate or complete):
<a name="using"><h2>Using FCEUX</h2></a> <a name="using"><h2>Using FCEUX</h2></a>
<p> <p>
</p>
<a name="gui-styling"><h3>Qt GUI Style</h3></a>
<p>
The Qt GUI can either use the standard system style/themes or custom stylesheets.
The available standard styles that are installed on the system will be listed when running the executable command line help.
To use a provided system style, use the --style command line argument.
To use a custom Qt stylesheet file, set an environment variable named FCEUX_QT_STYLESHEET that contains
the full path to the file. This will check for this at startup.
If the variable is defined and the file is readable by the program,
then the styling settings will be used by the GUI.<br>
<br>Bash Shell Setup Example:
<pre>
export FCEUX_QT_STYLESHEET=/home/me/myFceux.qss
</pre>
For information on Qt stylesheet syntax, see <a href=https://doc.qt.io/>Qt online documentation</a>
</p> </p>
<a name="using-hotkeys"><h3>Hotkey Assignments</h3></a> <a name="using-hotkeys"><h3>Hotkey Assignments</h3></a>
<p> <p>
<b>NOTE:</b>There is not a GUI available to remap these hotkeys for SDL. If you really <b>NOTE:</b> The GUI has a window to remap these hotkeys for SDL.
want to remap the hotkeys, you can edit the config file manually and replace the values
with SDL keysyms. Alternatively, you can use a tool like <a href="http://qjoypad.sourceforge.net/">qjoypad</a>
or <a href="http://joy2key.sourceforge.net/">joy2key</a> and even map hotkeys to joystick buttons/axes.
<p> <p>
<table border> <table border>
<tr><th>Key:</th><th>Action:</th></tr> <tr><th>Key:</th><th>Action:</th></tr>
@ -242,7 +255,7 @@ necessarily 100% accurate or complete):
</p> </p>
<a name="using-keys-gamepad"><h4>Gamepad</h4></a> <a name="using-keys-gamepad"><h4>Gamepad</h4></a>
<p> These are the default keys for the P1 gamepad. These can <p> These are the default keys for the P1 gamepad. These can
be remapped using the --inputcfg command line parameter or the GTK GUI be remapped the Qt GUI
<table border> <table border>
<tr><th>Key:</th><th nowrap>Button on Emulated Gamepad:</th></tr> <tr><th>Key:</th><th nowrap>Button on Emulated Gamepad:</th></tr>
<tr><td>D</td><td>B</td></tr> <tr><td>D</td><td>B</td></tr>
@ -292,8 +305,10 @@ necessarily 100% accurate or complete):
are taken in the form of "--parameter value". Most arguments that have are taken in the form of "--parameter value". Most arguments that have
both a parameter and a value will be saved in the configuration file. both a parameter and a value will be saved in the configuration file.
</p> </p>
<b>NOTE: </b>This list is incomplete! For a full list of options, run <b>NOTE: </b>This list is incomplete! For a full list of options, run:
fceux without any arguments. <pre>
fceux --help
</pre>
<p> <p>
<table border> <table border>
<tr><th>Argument:</th><th>Value Type:</th><th>Default value:</th><th>Description:</th></tr> <tr><th>Argument:</th><th>Value Type:</th><th>Default value:</th><th>Description:</th></tr>
@ -321,6 +336,8 @@ necessarily 100% accurate or complete):
<tr><td>Unknown</td><td>Original Author</td></tr> <tr><td>Unknown</td><td>Original Author</td></tr>
<tr><td><a href="mailto:ltsmooth42 _at_ gmail _dot_ com">Lukas Sabota</a></td> <tr><td><a href="mailto:ltsmooth42 _at_ gmail _dot_ com">Lukas Sabota</a></td>
<td>FCEUX SDL documentation revival.</td></tr> <td>FCEUX SDL documentation revival.</td></tr>
<tr><td>mjbudd77</td>
<td>FCEUX Qt/SDL documentation upates.</td></tr>
</table> </table>
</p> </p>
</div> </div>

View File

@ -23,31 +23,26 @@
<div id="page_content"> <div id="page_content">
<center><h1>FCEUX SDL FAQ</h1></center> <center><h1>FCEUX SDL FAQ</h1></center>
<center><i>Last updated February 10, 2012<br /></i> by punkrockguy318<br /> <center><i>Last updated December 9, 2020<br /></i> by mjbudd77<br />
</center> </center>
<p><b>Table of Contents:</b></p> <p><b>Table of Contents:</b></p>
<ul> <ul>
<li><a href="#svn">What is the subversion build and how can I get it?</a></li> <li><a href="#git">What is the git build and how can I get it?</a></li>
<li><a href="#config">How do I configure a gamepad?</a></li> <li><a href="#config">How do I configure a gamepad?</a></li>
<li><a href="#sound">My sound is stuttery/laggy. How can I fix this?</a></li> <li><a href="#sound">My sound is stuttery/laggy. How can I fix this?</a></li>
<li><a href="#timing">My game is skipping frames. How can I fix this?</a></li>
<li><a href="#hotkeys1">How can I change my hotkey bindings?</a></li> <li><a href="#hotkeys1">How can I change my hotkey bindings?</a></li>
<li><a href="#hotkeys2">Can I map hotkeys to my gamepad?</a></li> <li><a href="#hotkeys2">Can I map hotkeys to my gamepad?</a></li>
</ul> </ul>
<a name="subversion"><h3>What is the subversion build and how can I get it?</h3></a> <a name="git"><h3>What is the git build and how can I get it?</h3></a>
<p>The most recent changes to fceuX are reflected immediately in the fceux <p>The most recent changes to fceuX are reflected immediately in the fceux
sourceforge subversion server. You can checkout the source code to build github server. You can checkout the source code to build
fceuX with the most recent sources by running the following command:</p> fceuX with the most recent sources by running the following command:</p>
<p><b>svn co https://fceultra.svn.sourceforge.net/svnroot/fceultra/fceu fceux</b></p> <p><b>git clone https://github.com/TASVideos/fceux.git</b></p>
<p>Instructions for compiling and installing fceuX can be found in the "README-SDL" file.</p> <p>Instructions for compiling and installing fceuX can be found in the "README" file.</p>
<a name="config"><h3>How do I configure a gamepad?</h3></a> <a name="config"><h3>How do I configure a gamepad?</h3></a>
<p> <p>Using the Qt GUI, you can configure the gamepad by
<p>If you have the GTK GUI compiled into fceuX, you can configure the gamepad by
selecting "Options...Gamepad" in the menubar.</p> selecting "Options...Gamepad" in the menubar.</p>
<p>You can allso configure the first gamepad by running <b>fceux --inputcfg gamepad1</b> </p>
<p>When you configure a button you will be presented with a black window with a titlebar
indicating what button to map. FceuX will look for two
of the same keypress/joystick event in a row. If it doesn't find two of the same
keypresses in a row, it will allow you to map the button to two separate keys.</p>
</p> </p>
<a name="sound"><h3>My sound is stuttery/laggy. How can I fix this?</h3></a> <a name="sound"><h3>My sound is stuttery/laggy. How can I fix this?</h3></a>
<p>Try using different SDL audio drivers. You can set the SDL audio driver with <p>Try using different SDL audio drivers. You can set the SDL audio driver with
@ -58,11 +53,21 @@
you may want to try the latest version of fceuX to see if you are still having issues. FceuX you may want to try the latest version of fceuX to see if you are still having issues. FceuX
2.1.4 fixed the majority of the reported sound issues. 2.1.4 fixed the majority of the reported sound issues.
</p> </p>
<a name="timing"><h3>My game is skipping frames. How can I improve this?</h3></a>
<p>The Qt/SDL version of fceux runs two threads. One for the GUI and one for the emulation.
The realtime OS scheduling and priority of both of these threads can be tuned via the GUI
timing config options window (accessible via the menu bar). For Mac OSX systems, fceux must
have root permission to increase process priority. For Linux systems, add the following
lines to the <b>/etc/security/limits.conf</b> file to ensure that fceux users have the proper system
resource permissions (requires reboot after editing for changes to take place):
<pre>
* - priority 99
* - rtprio 99
* - nice -20
</pre>
</p>
<a name="hotkeys1"><h3>How can I change my emulator hotkey bindings?</h3></a> <a name="hotkeys1"><h3>How can I change my emulator hotkey bindings?</h3></a>
<p>You need to edit your ~/.fceux/fceux.cfg file. The SDL.Hotkeys.* values <p>SDL hotkey bindings can be remapped using the Qt GUI. Selecting "Options...HotKeys" in the menubar.
are SDL keysyms, which can be found in SDL_keysym.h (probably
/usr/include/SDL/SDL_keysym.h on your system). At the time of writing,
hotkeys are not mappable from the GUI in sdl (although it is planned for the future).
</p> </p>
<a name="hotkeys2"><h3>Can I map emulator hotkeys to my gamepad?</h3></a> <a name="hotkeys2"><h3>Can I map emulator hotkeys to my gamepad?</h3></a>
<p>If you want to map particular hotkeys (pause, save state, load state, etc) to buttons on <p>If you want to map particular hotkeys (pause, save state, load state, etc) to buttons on
@ -77,6 +82,8 @@
<tr><th>Name:</th><th>Contribution(s):</th></tr> <tr><th>Name:</th><th>Contribution(s):</th></tr>
<tr><td><a href="mailto:ltsmooth42 _at_ gmail _dot_ com">Lukas Sabota</a></td> <tr><td><a href="mailto:ltsmooth42 _at_ gmail _dot_ com">Lukas Sabota</a></td>
<td>Author of this document</td></tr> <td>Author of this document</td></tr>
<tr><td>mjbudd77</td>
<td>Qt/SDL Updates</td></tr>
</table> </table>
</p> </p>
</div> </div>