Configuring MythGame Emulation
- 1 Information
- 2 General-Setup
- 3 Loading romdb
- 4 Emulators
- 4.1 Nintendo: SNES
- 4.2 Nintendo: NES
- 4.3 Nintendo: Game Boy Advance & Game Boy
- 4.4 Nintendo: N64
- 4.5 Commodore: Amiga
- 4.6 Atari: Lynx
- 4.7 XMAME
- 4.8 Sega: MegaDrive/Genesis
- 4.9 ePSXe
- 4.10 More Emulators...
- 5 Screenshots
You will need v0.19 of MythGame to follow these instructions. The version included in MythTV 0.18 is not covered in this document, since the configuration interface has changed dramatically. Also, here is only explained how to setup MythGame after it was installed, this is not a tutorial how to compile and install it. Think of this as an addendum to the official docs at www.mythtv.org.
I was confused, so some other might be too, by the term "player" in MythGame setup. This term describes an emulator (xmame for example) that is run to play games, and not the person who is playing the games.
Firstly, we need to create folders where we can store the roms and the emulator binaries. Any of the third level (snes, gba, etc) directories are optional if you do not intend to use that specific emulator.
You will need to create the following directory structure: (This Directory Structure is only an example, yours can be different!)
/usr/emulators/snes/bin /usr/emulators/snes/roms /usr/emulators/gba/bin /usr/emulators/gba/roms /usr/emulators/n64/bin /usr/emulators/n64/roms /usr/emulators/amiga/bin /usr/emulators/amiga/roms /usr/emulators/amiga/chip (For the Kickstart Image) /usr/emulators/atari /usr/emulators/atari/lynx /usr/emulators/atari/lynx/bin /usr/emulators/atari/lynx/roms /usr/emulators/megadrive/bin /usr/emulators/megadrive/roms /usr/emulators/xmame/bin /usr/emulators/xmame/roms
If you want your ROMS to be automatically described by MythGame you'll want to load the romdb table which does seem to be done by default. You can find an SQL load script in the v0.19 source packages in the gziped tar file: romdb-20051116-02.tgz. Or you can grab the same (or similar) files from here: http://www.phaze.org/romdb/. Untar and load like so:
tar -xzvf romdb-20051116-02.tgz mysql -D mythconverg -u mythtv -p < romdb-2005-1101-01.sql
After you do this, MythGame will have a big list of ROMs with their associated CRCs and titles, genres and years. When MythGame is cataloguing your ROMs it will look them up in this table and categorize and describe them for you.
Note that, at least on my system, MythGame v0.19.0 was failing to load from the romdb table (this was not a problem with running romdb-20051116-01.sql, it was a problem with MythGame fetching from the romdb table after it was successfully loaded). You can either wait for the next release or edit MythGame's gamehandler.cpp and rebuild. The fix is to delete the trailing space in the SELECT statement in InitMetaData(). From this:
QString thequery = QString("SELECT crc, category, year, country, name, " "description, publisher, platform, version, " "binfile FROM romdb WHERE platform = \"%1\"; ") .arg(GameType);
QString thequery = QString("SELECT crc, category, year, country, name, " "description, publisher, platform, version, " "binfile FROM romdb WHERE platform = \"%1\";") .arg(GameType);
If you are having trouble running the romdb-20051116-01.sql file, one way around this problem (if you're using 0.19) is to edit the romdb-20051116-01.sql file and remove the lines between CREATE TABLE romdb ( ...and... ) TYPE=MyISAM; Then load the file again.
Emulator used: ZSNES (1.42)
ZNES requires a mouse for configuration in the GUI, keyboard support is not fully implemented. (But the Configuration had only to be done once!)
Most distributions include ZSNES in their package selection - Consult your package manager (rpm, dselect, emerge). If your distribution does not include it, you can download ZSNES source from . The newest Version is: 1.42
Put the binary in the /usr/emulators/snes/bin Folder. Start ZSNES to create the config file. I recommend setting the options 2x Super SAI Engine under video, so that the picture looks smoother. After configuring ZSNES and exiting you have to copy the configuration from your configuration directory (by default ~/.zsnes) to the mythtv user directory (probably ~mythtv/.zsnes).
Now you have to add a game starter to Mythtv:
Player Name: SNES Typ: SNES Command: /usr/emulators/snes/bin/zsnes Rom Path: /usr/emulators/snes/roms
There is also an emulator called SNES9x for Linux available. The quality of this emulator is near to ZSNES, if not better. It has no frontend on Linux, but frontends just get in the way on MythTV boxes anyway. Everything can be configured through the command line, and most options work for all games, so once you have it set up you only need to modify command line options when you change hardware, like joysticks.
Most distributions include SNES9x in their package selection - Consult your package manager (rpm, dselect, emerge). If your distribution does not include it, you can download SNES9x source from . The newest Version is: 1.43
It doesn't matter where the binary is located. Usually your distribution's package manager will add it to your PATH or inform you of it's location after the install. For example, Gentoo puts all game binaries in:
If the SNES9x binary is already in your PATH, run the following on the command line to determine the SNES9x binary's location:
Remember the output from the above command. You'll need it in the next section.
There are no configuration files to worry about with SNES9x. All configuration is specified on the command line. Use the following command, replacing /path/to/snes9x with the actual path to your SNES9x binary from the step above, to view all possible command line options:
However, on many distributions, in order to utilize full screen mode in SNES9x you need to add the SUID bit to your SNES9x binary. This is a security risk, but it makes games much more enjoyable. To add the SUID bit, do this:
chmod 4750 /path/to/snes9x
Please adjust group and world permissions as necessary to suit your distribution.
Now you have to add a game starter to MythTV:
Player Name: SNES Typ: SNES9X Command: /path/to/snes9x -stereo -r 6 -tr -fs Rom Path: /usr/emulators/snes/roms
If you are interested in using SNES9x with a joystick, please read about the
-joymap command line options. In addition, if you have the luxury of building snes9x from source, Reboot's joyaxisX patch is an excellent and necessary addition to the program.
Emulator used: fce-ultra ( 0.98.13)
Put the binary in the /usr/emulators/nes/bin Folder.
Start fceu with fceu -inputcfg gamepad1 %romname% to configure your joystick. In XWindows, the executable may be fceu-sdl instead of fceu.
Now you have to add a game starter to Mythtv:
Player Name: NES Typ: NES Command: /usr/emulators/nes/bin/fceu --fs 1 --joy1 1 --xres 1024 --yres 768 Rom Path: /usr/emulators/nes/roms
Nintendo: Game Boy Advance & Game Boy
Emulator used: Visual Boy Advance (1.80 SDL)
You need to get the CVS-Source if you want to run the newest Version. You also can use a older binary from the homepage, but I prefer to use the newest.
You can do a CVS-Checkout with the following command: "cvs -z3 -d:pserver:email@example.com:/cvsroot/vba co -P VisualBoyAdvance"
Then we need to got into the VisualBoyAdvace directory and run : ./configure
After that we do : make
And then after compilation has completed we can copy the VisualBoyAdvance binary from the src dir to our binary directory.
You then need to edit the VisualBoyAdvance.cfg to edit your Joystick settings. If you want to change it, you can get a program called: SLD-Test from the GameBoyAdvance homepage to get the correct settings for your joystick!
Now you need to add a game starter to Mythtv:
Player Name: GBA Typ: OTHER Command: /usr/emulators/gba/bin/VisualBoyAdvance -F -4 Rom Path: /usr/emulators/gba/roms
(The Parameters -F to gives full screen and -4 gives a bigger picture)
Emulator used: Mupen 64 (0.5))
You need to get the Source Version from the Message board (The Patchset needed in the 0.4 Version is now included in Mupen 0.5). (You can't use the Binary Version, Because there is no nogui Version in it!)
Download Mupen Source: wget http://mupen64.emulation64.com/files/0.5/mupen64_src-0.5.tar.bz2
Extract the Mupen64 source.
Configure Mupen with ./configure
You will require the following dependencies in order to compile Mupen64:
- libSDL-devel available from http://www.libsdl.org/
Mupen64 0.5 comes with a bug which results in the nogui version not compiling. To fix this, edit main/main.c and insert the following at the beginning of the file:
#include <dirent.h> #include <sys/stat.h>
Compile the Mupen nogui Version with: make mupen64_nogui
Now you need the MUPEN Plugins. You can also compile them or get them withing the binary Distribution of the Mupen Webpage (I use the second way!)
Then you can Create a config File to use with mupen64. (Here's my Config File for Example!) mupen64.conf
[Default] Gfx Plugin = /usr/emulators/n64/bin/plugins/Glide64.so Audio Plugin = /usr/emulators/n64/bin/plugins/jttl_audio.so Input Plugin = /usr/emulators/n64/bin/plugins/blight_input.so RSP Plugin = /usr/emulators/n64/bin/mupen64_hle_rsp_azimer.so Fullscreen = true Emulation Mode = 2 No Ask = true
And the Game Starter for Mythtv:
Player Name: N64 Typ: N64 Command: /usr/emulators/n64/bin/mupen64_nogui Rom Path: /usr/emulators/n64/roms
Emulator used: E-UAE (0.8.28))
The used Emulator is E-UAE 0.8.28 which is a backport to linux from WinUAE.
Now add a player to MythGame. (The Command Line is a little bit complex, because we want to add multiple Disk Drives on multiple Disk games.)
Player Name: Amiga Typ: AMIGA Command: /usr/emulators/amiga/bin/uae -s floppy0=%d1 -s floppy1=%d2 -s floppy2=%d3 -s floppy3=%d4 -s floppy_speed=800 -s kickstart_rom_file=/usr/emulators/amiga/chip/KICK31.ROM -s gfx_fullscreen_amiga=true -s use_gui=false Rom Path: /usr/emulators/amiga/roms Span Disks: yes
(The Command has to be added as one line, it is only split in three, so that it fits on the screen!)
Emulator used: Handy SDL (0.82 R1)
The used Emulator can be downloaded from .
You also need a Bios Image from the Atari Lynx. Copy this into the Emulator Directory. (Info: You are only allowed to use a BIOS dump of your own Lynx machine!)
Player Name: Atari Lynx Typ: OTHER Command: /usr/emulators/atari/lynx/bin/sdyhandy %s -fullscreen -scale 4 -sound -joystick Rom Path: /usr/emulators/atari/lynx/roms
Emulator used: XMAME
The emulator can be downloaded from .
Not sure what others are finding, but I found that fullscreen xmame was the easiest with the SDL version of xmame. I got both fullscreen and sound working with the following player command:
xmame.SDL -dp sdl -fullscreen %s
You might have to play around with your xmarerc (or in the case of the SDL version, xmame-SDLrc. See the xmame docs. Run xmame with --showconfig to see your current configuration.
To get mame metadata (genre, year, game titles), see loading romdb above.
Remember to place the .zip files for your ROMS into your roms directory. Do not unzip them, MythGame will have a peek inside them. I also had to change the general settings Display orders to just gamename (but another person did not).
If you have snapshots in a snap directory, and they are zipped, you'll have to unzip them for MythGame to show them.
Player Name: XMAME Type: MAME Command: /usr/emulators/xmame/bin/xmame -fullscreen -vidmod 1 %s Rom Path: /usr/emulators/xmame/roms
Emulator used: DGEN/SDL (1.23)
The used Emulator can be downloaded from .
You cannot download a Binary on this Page, only Source. The compile of the Source Code failed on my system, so I used the Binary which came with the Debian Repository (get it via: apt-get install dgen)
Player Name: MegaDrive Typ: OTHER Command: /usr/emulators/megadrive/bin/dgen -f -G 800x600 -j Rom Path: /usr/emulators/megadrive/roms
epsxe reportedly the best PSX emulator out there...
Install for linux is straightfoward when one follows the get howto here
To make this work with mythgame a few changes have to be made: The script suggested at step 10 needs a slight modification:
change this line -- ./epsxe to this -- ./epsxe -nogui -loadiso $1
This will allow you to run iso/bin files from within mythgame, however, it won't do for loading cds'.
In addition, to get nice fullscreen, I found it better to set the resolution to your screens resolution worked better than choosing fullscreen.
Finally, do look into using the joypad plugin. This is especially true if you will be using a joystick.
Player Name: ePSXe Type: OTHER Command: /usr/local/bin/start_epsxe Rom Path: /usr/emulators/ps1/roms
Here is a List of what might be possible to be Emulated, maybe someone describes how to include them in Myth:
- Xe Game Boy, MegaDrive, Super Famicom, PC-FX, Playstation, GameGear, ...
- Mednafen Atari Lynx, GameBoy, GameBoy Color, GameBoy Advance, NES, PC Engine(TurboGrafx 16), and SuperGrafx
There now is a new Ticket: http://svn.mythtv.org/trac/ticket/1810. In this there is a patch for MythGame included wich allows you to Generate Screenshots for the Roms automaticaly within MythGame.
It uses the program scrot to generate screenshots of your X display.