FIRST READ THIS BIT
It is a good idea to back up your software in case of emergency. I recommend imaging your whole SD card for easy restore should something go bad.
By default this software operates at low resolutions and is intended for use on monitors that can handle 240p/480i.
This software is intended for use with RaspberryJAMMA hardware using GPIO controls. The MK_ARCADE_JOYSTICK kernel module loads early during boot, to disable it edit /etc/modules with root privileges ‘sudo nano /etc/modules’.
I DO NOT recommend hot-plugging usb devices when powering the pi through JAMMA. Plug and unplug your USB keyboard or whatever else when the power is off.
INCLUDED SOFTWARE
This Raspberry Pi distro is built around the following software and would not be possible without a lot of peoples hard work, huge thanks to everyone involved in open source development:
EMULATORS
Mame based:
- MAME 0.172: 2nd newest version of MAME included, has the most accurate emulation and can do a few things the others can’t like mirrored cocktail mode & fine adjustments to video output size.
- MAME 0.181 Newest version of MAME included, has the most accurate emulation and can do a few things the others can’t like mirrored cocktail mode & fine adjustments to video output size. v0.181 scales differently to all other emulators included.
I recommend using v0.172 over v0.181.
- AdvanceMAME: Designed for use with arcade monitors, very configurable – HIGHLY RECOMMENDED for its mix of good speed, options and emulation quality
- MAME4all: The fastest version of mame for arm architecture but very old with the most dated emulation, the version on this software is modified to work with the correct scanline output in low res.
*Not recommended for Pi3, the other versions of MAME have much better emulation due to age*
RetroArch:
- MAME2003 (Retroarch core): Good speed but a little buggy, improving though – good for mk2 and later Midway titles & SEGA System32 games. Also very good at mapping analog controls to a digital joystick
- FBA_Next (Retroarch core): Fast but not as accurate/configurable as mame – good for CPS3 & PGM & a few SHMUPS that are buggy in advmame
Other:
- Daphne: Plays laser disc games like Dragons Lair & Space Ace
- Additional assorted console emulators
FRONTENDS
- Attract-Mode: Fancy frontend, hugely themeable, access to menus through ‘tab’ on keyboard
- AdvanceMENU: Now the optional frontend, formally the default. Exiting Attract-Mode with ‘esc’ loads advmenu as it is useful for rom management using the ‘F8’ menu
OTHER SOFTWARE
- Linux and other free tools (Raspbian base)
- GPIO controls are currently using mk_arcade_joystick modified to suit the wiring of the RaspberryJAMMA board
- The hotkey system is using currently leanstick.pl and pikeyd (ideally it would be part of mk_arcade_joystick but for now this works ok)
INSTALLATION
The following steps cover the writing of the image to an MicroSD Card.
REQUIREMENTS:
- 8Gb MicroSD Card (or larger)
- SD Card reader for your home computer with Windows or MAC operating system
- Raspberry Pi 2 or 3
- RaspberryJAMMA adapter
INSTALLATION:
- Download latest full release (here)
- Unarchive the downloaded tar.gz file using a tool like 7zip or Keka. The result after unarchiving should be a .img file.
- You then need to download and install software for writing Raspberry PI images to SD Cards. Below are two suggestions on utilities that have been tested with ARpiCADE:
- MAC: Apple-Pi Baker, or Etcher
- WINDOWS: Etcher
- Write OS image to SD Card using your preferred utility
- Once completed, remove the SD Card from your computer and then re-insert SD Card back into your computer.
At this point, you will be ready to load ROMs. See below for next steps.
BASIC USE
Copy roms to SD card plug into JAMMA cab power up and play.
INTRODUCTION
The image you wrote to the SD Card contains 2 partitions. One for Raspian Linux (Ext4), and the other for Windows/Mac (FAT32). The first partition is for the operating system and software that runs on the PI. The second partition is meant to be used by Windows and Mac.
The reason this is done is so you can easily put the card into a desktop computer and copy ROMs directly.
So to add roms, you only need to place the SD Card into your desktop computer, and you should see a drive mount. Inside this drive, should be a directory called “roms”. It is in this directory where you will see directories related to each of the emulators. Here you can choose which emulator you want to use to run your ROM, by placing it in the appropriate directory.
ADDING ROMS
Arcade roms should be placed in
/boot/roms/*/%.zip
Where “*” is the emulator and “%” is the game. Roms must be in the correct directories and named and zipped according to the conventions of the relevant emulator.
The exception to the arcade rom storage system is Daphne, its roms are stored in /boot/roms/daphne/rom and framefiles in /boot/roms/daphne/framefile/(directory with same name as the rom) due to the way the emulator works.
Console roms should be placed in:
/boot/roms/consoles/*/%.ext
Where “*” is the emulator, “%” is the game and “ext” is the relevant extension. Roms must be in the correct directories and generally must be unzipped (except advmess). Names of console roms are not critical as they are for arcade roms, name them so you can identify them in the menu.
Rom scanning is automatic at startup by default but can also be done manually through the service menu.
Make sure to safely remove/eject your SD card before pulling it out of your PC.
JOYSTICK SHORTCUTS (IN GAME)
Hold 1P Start for a couple of seconds + 2P Start == exits a game back to the menu
Hold 1P Start for a couple of seconds + P1B1 == Credit
Hold 1P Start for a couple of seconds + P1 Joy Down == Pause/Unpause
Hold 1P Start for a couple of seconds + P1 Joy Right == MAME menus (MAME only)
ADVANCED USE
SD CARD STRUCTURE
THE “boot” PARTITION
There are two partitions on a typical Raspberry Pi installation. Only one of these partitions (the first) is usable by Windows. For Windows users this software compilation features an expanded first partition containing the rom directories for the emulators. This allows you to update your roms through a Windows computer. More extensive customisation can be done on the pi or on a Linux (or possibly other UNIX like OS) box which will be able to see the second partition as well as the first. There is a directory on the boot partition to assist in updating settings usually unreachable by Windows using scripts run from the menu (/boot/config-updater).
Basic instructions to the Raspberry Pi for booting are contained in:
/boot/config.txt
which can be seen in the boot partition of the SD card as config.txt (even in Windows). Options contained within this file include video mode and overclocking. For use with the RaspberryJAMMA hardware the hdmi_mode option directly changes the resulting RGB output from the JAMMA edge connector. This software boots in 480i and switches resolution before launching games so be careful editing resolution settings here.
VIDEO OUTPUT AND ORIENTATION
Video output width can be changed in:
/boot/config.txt
using the overscan options without image quality being ruined. Best not to play with the height though as it will affect the scanline perfect output.
Video output can also be flipped (180 degrees) in this file without a performance hit using
display_rotate=2
Although rotating (90 degrees) output here is possible it is easier to achieve consistent results across multiple emulators using emulator specific options (explained there).
BOOTUP
The instructions for what happens after boot are in
/boot/run.sh
which is a shell script controlling what happens after automatic login. It contains a very hacky “now loading” message that is seen during boot and game loading (until broken by the resolution switching) and launches the hot key system as well as Attract-Mode, the game select menu.
EMULATOR STARTUP AND CONFIGURATION
The emulator launcher scripts are in
/boot/launchers/
and are used to change the resolution prior to loading games (when applicable) and back again after. This folder also contains the parts of the new system config menu for Attract-Mode (it’s very basic at the moment).
Hotkey config is done through
/boot/hotKeys.conf
you can hash out lines to disable certain functions, or add new ones if you need them.
DEBUGGING
If you are curious about what is actually happening during boot the regular Linux boot text can be seen by replacing
/boot/cmdline.txt
with
/boot/cmdline.txt.bak
If you want to go back to the silent boot use
/boot/cmdline.txt.silent
THE OTHER PARTITION
Basically invisible to Windows is the second partition. It contains the Linux system and emulator software and config files. To edit these files you will need either a computer running an OS that can write to this partition or to edit the files on the Raspberry Pi using a USB keyboard. Editing on the Raspberry Pi is easiest outside of an arcade cabinet on a more modern monitor however in cab edits are possible in a pinch and the F8 menu in advmenu can help too.
TO EDIT MAME OPTIONS
MAME 0.172 (Note: some behaviour is controlled by the launcher instead of the config file)
/home/pi/mame172/mame.ini
AdvanceMAME (MAME-106) (some behaviour is controlled by the launcher instead of the config file)
/home/pi/.advance/advmame.sdl.rc
for games that render badly in SDL
/home/pi/.advance/advmame.rc
MAME4all (some behaviour is controlled by the launcher instead of the config file)
/home/pi/mame4all/mame.cfg
Retroarch based emulators use the Retroarch menus to edit settings.
Some options common to different versions of MAME may have slightly different names in each version. For example screen rotation:
eg. advmame:
display_rol no display_ror yes
eg. mame4all:
ror=yes rol=no
Both of these commands achieve the same thing and should match between all emulators for the gaming experience to be smooth.
ATTRACT MODE
Editing attract modes config is best done through the built in menus but if needed all the files are in
/home/pi/.attract/
To edit AdvanceMenu options (not required to rotate or switch layout)
/home/pi/.advance/advmenu.rc
BOOT SPLASH
Another file you may want to change is the boot splash which can be found at
/etc/splash.png
You will need to have root access (admin rights) to write to this location due to the structure of the Linux system. This can be done through the new service menu in Attract-Mode or the F8 menu in AdvanceMENU (explained below in the FAQ).