Contents
Usage
FREEVO now supports the following emulators :
XMAME (keyword MAME: ROM name parsing and identification (http://x.mame.net), works great in SDL mode or X11/DGA
SNES (keyword SNES) : Internal ROM indentification (ZSNES in SDL mode - http://www.zsnes.com/ )
GENESIS/MEGADRIVE (keyword GENESIS) : Internal ROM identification (GENERATOR in SVGALIB mode - http://www.squish.net/generator/ )
- Tuxnes
- Playstation
- Gameboy advance
- Atari
- Amiga
- Spectrum
In addition, you can call all the emulators you want by simply using the GENERIC keyword, as described below. In this case, Freevo will only launch the associated command line with the file selected in the menu.
The GAMES_ITEMS structure in freevo_config.py is now built with the following parameters :
[ ( <NAME>, <FOLDER>, (<TYPE>, <COMMAND_PATH>, <COMMAND_ARGS>, <IMAGE_PATH>, [<FILE_SUFFIX_FOR_GENERIC>]) ) ], ... where :
<TYPE> : Internal game types ('MAME', 'SNES', 'GENESIS') or generic one (GENERIC) <COMMAND_PATH> : Emulator command <COMMAND_ARGS> : Arguments for the emulator <IMAGE_PATH> : Optionnal path to the pictures/snapshot for games <FILE_SUFFIX_FOR_GENERIC> : If the folder use the GENERIC type, then you must specify here the file suffix used by the emulator
Playstation One
For playing PSone CD's
In your freevo local_conf.py add these lines to the games section;
GAMES_ITEMS = [ ('PSone CD', '/etc/freevo/psx', ('GENERIC', '/usr/local/bin/psx-cd', '', '', [ 'psx' ] )) ]
Here we execute a script to run epsxe, the reason for this is I was personally having trouble with the GENERIC command line arguments. The contents of the psx-cd script are as follows;
/usr/local/games/psx/epsxe -nogui
Finally, create a file in the /etc/freevo/psx directory called PSone.psx
# touch /etc/freevo/psx/PSone.psx
For playing PSone CD ISO's
In your freevo local_conf.py add these lines to the games section;
GAMES_ITEMS = [ ('PSone IMG', '/home/psx', ('GENERIC', '/usr/local/bin/psx-iso', '', '', [ 'img','bin','iso' ] )) ]
The psx-iso script here contains;
cd /usr/local/games/psx/ /usr/local/games/psx/epsxe -nogui -loadiso $*
SNES
GAMES_ITEMS = [('SNES', '/home/media/games/snes/roms', ('SNES', '/usr/local/bin/zsnes', '-m -r 3 -k 100 -cs -u', '', None )) ]
-m is not necessary on version 1.42 of zsnes, and doesn't appear to work on versions 1.36+
The -cs option doesn't appear to exist anymore, as of zsnes 1.510. Just remove it.
TUXNES
GAMES_ITEMS =[ ('Nintendo','/mnt/NES/',('GENERIC','/usr/bin/tuxnes','-G800x600 -rdiff -1/dev/js0 -2/dev/js1 -E2','', ['NES','nes']))]
The '-G' should be set to match your display size. Because of how tuxnes scales or lack there of, you may need to adjust the '-E' setting. '-E' tells is by what factor to enlarge the game display.
MAME
GAMES_ITEMS = [ ('MAME', '/home/media/games/xmame/roms', ('MAME', '/usr/local/bin/xmame.SDL', '-fullscreen -modenumber 6', '/home/media/games/xmame/shots', None)) ]
Megadrive
GAMES_ITEMS = ('MEGADRIVE', '/home/media/games/megadrive/roms', ('GENESIS', '/usr/local/bin/generator-svgalib', '', '', '' )) ]
Gameboy Advance
GAMES_ITEMS = [ ('Visual Boy Advance', '/home/media/games/vba/roms', ('GENERIC', '/usr/local/vba/VisualBoyAdvance', ' ', '', [ '.gba' ] )) ]
Atari
Hatari http://hatari.sf.net/
GAMES_ITEMS = [ ('Atari Emulation', '/usr/local/freevo/testfiles/atari', ('GENERIC', '/usr/games/bin/hatari', '--memsize 1 --tos /usr/local/freevo/testfiles/atari/tos.img -f ', '', [ 'st', 'msa', 'gz'] )) ]
Amiga
e-uae http://www.rcdrummond.net/uae/, should also work with regular uae http://www.freiburg.linux.de/~uae/
GAMES_ITEMS = [('Amiga', '/home/freevo/Games/Amiga/adfs', ('GENERIC', '/usr/bin/e-uae', '-0', '', ['adf'])) ]
Spectrum
Emulator vgaspect http://www.inf.bme.hu/~mszeredi/spectemu/, best fit to screen than xspect.
GAMES_ITEMS = [ ('SPECTRUM' ,'/files/Games/Spectrum', ('GENERIC', '/usr/bin/vgaspect', '-load-immed -quick-load ', '', ['tzx','tap'] )) ]
Linux Games
How to launch Tux Racer for example from Freevo :
Check the path of tuxracer, if its in the path you can
# which tuxracer
otherwise check /usr/games and /usr/local/games
Add in var GAMES_ITEMS :
GAMES_ITEMS = [ ('Tux Racer', '/etc/freevo/games/tuxracer', ('GENERIC', '/usr/games/tuxracer', '', '', [ 'tux' ] )) ]
Create file /etc/freevo/games/tuxracer/tuxracer.tux
# mkdir /etc/freevo/games # mkdir /etc/freevo/games/tuxracer # > /etc/freevo/games/tuxracer/tuxracer.tux
If you get a screenshot of this games, copy to this new directory
# cp TuxRacer.jpg /etc/freevo/games/tuxracer/cover.jpg
Exiting an emulator with LIRC
To stop a running PSX/snes/etc... emulator and return to the menu add the following into your lircrc;
begin button = menu prog = irexec repeat = 3 config = kill -INT `pidof epsxe` end
My 'menu' button also provides the EXIT code in freevo, you could also hook other scripts up to this to make sure it kills any processes that are running the the foreground.
Make sure you start irexec at some point before freevo starts like so;
/usr/local/bin/irexec /etc/freevo/lircrc &
A script is a better way of handling this, if you use multiple emulators and don't want to have a different lirc command for each, also with a script you can prevent the error message from being outputted on the console.
Here is a script I use for epsxe/zsnes
PID=`pidof epsxe` if [ -n "$PID" ]; then kill -9 $PID fi PID=`pidof zsnes` if [ -n "$PID" ]; then kill -9 $PID fi
Depending on the emulator you can also use a different method, where the menu button generates an Escape key press. Change your lircrc to contain (make sure you have xmacro installed),
begin button = menu prog = irexec config = xmacroplay-keys :0.0 Escape end