FCEUX, a NES Emulator
Go to file
cyneprepou4uk 7ed093eb17 Delete readme.md 2021-10-24 00:59:29 +03:00
.vscode VS Code integration (#298) 2021-01-08 15:14:23 -05:00
attic delete excess gitignores (we're starting from scratch) 2018-04-10 23:22:39 -05:00
documentation replace corrupted manpages with original versions (#318) 2021-02-01 05:44:39 -05:00
fceux-server honor standard build environment variables (#317) 2021-02-01 05:44:10 -05:00
getSDLKey migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
gfceu delete excess gitignores (we're starting from scratch) 2018-04-10 23:22:39 -05:00
icons Added debugger step back button. Functionality still TODO. 2021-08-19 18:15:27 -04:00
m4 migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
output Added generated help chm/html files with 2.4.0 release notes. 2021-06-24 21:27:09 -04:00
pipelines Commented out mac OSX make install in pipeline script since it is already invoked by cpaack. No need to run twice. 2021-10-08 19:56:56 -04:00
scripts MacOSX pipeline bundling library fix. 2021-10-08 19:55:11 -04:00
src trace logger hack 2021-10-19 01:26:51 +03:00
vc Added generated help chm/html files with 2.4.0 release notes. 2021-06-24 21:27:09 -04:00
web update some urls 2021-10-16 14:08:47 -04:00
.gitignore gitignore: add /build 2020-10-29 10:00:35 -05:00
CMakeLists.txt Successful build of QT gui using cmake instead of qmake. 2020-07-10 10:59:07 -04:00
CNAME Create CNAME 2020-08-07 13:29:02 -04:00
COPYING migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
ChangeLog migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
INSTALL Minor corrections to SDL build/install instructions. 2020-10-21 22:54:31 -04:00
NEWS migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
NewPPUtests.txt migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
README Added optional ffmpeg dependency info to README. 2021-09-30 07:12:20 -04:00
STYLE-GUIDELINES-SDL migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
TODO-SDL Updates to SDL README files. 2021-05-13 18:46:17 -04:00
_config.yml Added a wildcard pattern to force jekyll to include _*.js and _*.json files. 2020-12-16 23:02:51 -05:00
appveyor.yml Update appveyor.yml 2021-10-19 01:39:47 +03:00
azure-pipelines.yml Added an appveyor pipeline configure file to allow for a side by side build of both the windows and linux application. 2020-05-15 16:06:18 -04:00
changelog.txt migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
doxygen migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
fceux.desktop fceux.desktop: use proper Exec field code (#315) 2021-02-01 00:16:01 -05:00
fceux.icns Updated MacOS Logo Icons 2021-06-15 22:13:02 -04:00
fceux.png migration tidying (build master from trunk) 2018-04-08 17:35:15 -05:00
fceux1.png Updated fceux1.png 2021-06-16 03:10:32 +03:00
index.html add an index.html, so hopefully github.io will use this to bounce to the web directory? 2020-06-17 02:27:14 -04:00
resources.qrc Added debugger step back button. Functionality still TODO. 2021-08-19 18:15:27 -04:00

README

FCEUX SDL 2.4.0 SDL README
==========================
Originally By Lukas Sabota (sf: punkrockguy318)
Updated By mjbudd77

[NOTE:  This only applies to Qt/SDL builds]

http://www.fceux.com

Last Modified: May 13, 2021

Table of Contents
-----------------

1.  Requirements
2.  Installation
3.  Compile-time options
4.  GUI
5.  LUA Scripting
5.  FAQ
6.  Contact

1 - Requirements
----------------
* sdl2  - Version >= 2.0  (sdl2 >= 2.8 recommended)
* cmake - Required to build fceux.
* qt5 OR qt6  - (qt version >= 5.11 recommended) (Qt Modules Used: Widgets, OpenGL, and Help)
* liblua5.1 (optional) - Will statically link internally if the system cannot provide this.
* libx264 (optional) - H.264 video encoder for avi recording (recommended)
* libx265 (optional) - H.265 video encoder for avi recording (recommended)
* ffmpeg libraries (optional) - for avi recording (recommended)
*	- ffmpeg libraries used: libavcodec  libavformat  libavutil  libswresample  libswscale
* minizip  
* zlib  
* openGL
* c++ compiler -- you may use g++ from gcc or clang++ from llvm or msvc 2019

2 - Installation
----------------
The old scons build system is no longer supported.
Fceux can be compiled and built using the cmake build system.  To compile, run:

	mkdir build; cd build;
   cmake  -DCMAKE_INSTALL_PREFIX=/usr  -DCMAKE_BUILD_TYPE=Release  ..    # For a release build

To build a binary with debug information included in it:
   cmake  -DCMAKE_INSTALL_PREFIX=/usr  -DCMAKE_BUILD_TYPE=Debug    ..    

The Qt version of the GUI builds by default and this is the preferred GUI for use. 
For those who must have GTK/Gnome style, there is a GTK style plugin for Qt that 
can be installed to the OS and selected for use via the GUI.
The previous GTK version of the GUI is now retired and has been removed from the build.

The Qt version GUI by far exceeds the old GTK gui in capability and performance.
The Qt GUI can build/link against both Qt5 and Qt6. To enable building against Qt6, use -DQT6=1 argument:
   cmake  -DCMAKE_INSTALL_PREFIX=/usr  -DQT6=1  -DCMAKE_BUILD_TYPE=Debug    ..    

To do the actual compiling:
   make

To compile faster with multiple processes in parallel:
   make -j `nproc`
	
After a sucessful compilation, the fceux binary will be generated to 
./build/src/fceux .  You can install fceux to your system with the following command:

	sudo make install

By default cmake will use an installation prefix of /usr/local.
The recommended installation prefix is /usr (this is where the installed fceux.desktop file expects everything to be)

You can choose to install the lua scripts (located in output/luaScripts) to a directory of your choosing:

	cp -R output/luaScripts /usr/local/some/directory/that/i/will/find/later

If you would like to do a full clean build a 'make clean' like function, you can do either of following:

   make clean    # from inside build directory

OR:
	Delete build directory and start over at initial cmake step:
   rm -rf build;

3 - Compile-time options
------------------------
You can enable and disable certain features of fceux at build time. 
Look in the src/CMakeList.txt file to tweak options.

4 - GUI
-------
The Qt GUI is required and automatically builds as part of the build. The Qt GUI is the default.
When invoking cmake, Qt6 can be used (instead of Qt5) by specifying a -DQT6=1 on the command line.
See above build instructions.
OpenGL options:
For Linux builds, the OpenGL library preference can be either GLVND or LEGACY (default). 
To use GLVND OpenGL, add a -DGLVND=1 on the cmake command line.

Qt Styling Options:
The Qt GUI can use custom Qt widget styling by providing it a Qt stylesheet file. At startup, the GUI will look
for an environment variable named FCEUX_QT_STYLESHEET that must contain the full path to the file. If the variable
is defined and the file is readable by the program, then the styling settings will be used by the GUI.
Bash Shell Setup Example:
export FCEUX_QT_STYLESHEET=/home/me/myQt.stylesheet

5 - LUA Scripting
-----------------
FCEUX provides a LUA 5.1 engine that allows for in-game scripting capabilities.  LUA is enabled either way. It is just a matter of whether LUA is statically linked internally or dynamically linked to a system library.

A collection of LUA scripts are provided with the source distribuition in the output directory:

	$source_directory/output/luaScripts

You should be able to run most of the scripts in this directory out of the box.  However, some of the the lua scripts require functionality from the "auxlib.lua" library.  This file can be copied from "./bin/auxlib.lua" or "./src/auxlib.lua".  You will need to place this file in the LUA library search path if a script bombs out looking for auxlib.lua. If the script bombs out, the console output will let you know what the search path are (/usr/local/lib/lua/5.1/ on my particular system).  You can simply copy the auxlib to a preferred location to utilize the functions in the auxiliary lua library. 

In addition, some of the lua scripts require functionality from the "iup" GUI library.  You can obtain binaries and source for "iup" upstream (http://www.tecgraf.puc-rio.br/iup/), but I would recommend obtaining packages from your Linux distribution if you are able, as it can be difficult to compile or get the binaries working correctly on a given system.

You will need to add the location that the libiup*.so files to the LUA_CPATH.  This can be done with the following command (please note that the location where iup is installed with vary based on how you installed iup):

	export LUA_CPATH="/path/to/iup/lib/lib?51.so;"

For example, if libiuplua51.so is located in '/usr/lib', you can run the following command before executing fceux to place the library in the search path:

	export LUA_CPATH="/usr/lib/lib?51.so;"

Finally, if any scripts complaints about "attempt to index global 'iup' (a nil value)", this means that "iup" needs to be explicitly loaded into the script.  You can add the following line to the head of script to manually load "iup":

	require("iuplua")

The latest version of iup (3.5 at the time of writing) is recommended.

6 - FAQ
-------

* Q.  Im having issues with my sound!
* A.  Try different SDL audio drivers to see if this makes any difference.  You can do this by using this command before running fceux:

	export SDL_AUDIODRIVER=driver

where driver is either: 'pulse' for pulseaudio;' alsa' for ALSA; 'dsp' for OSS; 'esd' for ESD; see SDL documentation for details (http://www.libsdl.org/docs/html/sdlenvvars.html)

There are sound options that you can tweak at runtime through command line switches:

* -soundq x 		internal sound quality hack value (0 off)
* -soundrate x    	sound rate (sane values: 28000 48000
* -soundbuffersize x 	(in ms)  sane values (30, 50, 100, 120)

Running fceux through esddsp is known to fix some audio issues with pulseaudio on some older Ubuntu versions.
	
7 - Contact
-----------
If you have an issue with fceux, report it in the github bug tracker (see fceux at github.com).  If you would like to contact the author of this readme personally, e-mail LTsmooth42 <at> gmail <dot> com.  You can also check us out at #fceu on irc.freenode.net.