Arcade Machine
Projects | |
---|---|
Participants | Control-k, Maijin, Realitygaps, Wizzup |
Skills | Programming |
Status | Active |
Niche | Software |
Purpose | Fun |
Contents
Arcade Machine
We now own an Arcade Machine. The plan is to bring new life into the machine by putting a computer in there and hooking that computer to the joystick input and screens. The computer runs MAME and other emulators, such as Amiga or SNES emulators.
Getting it to start
There's a basic Dell machine in the Arcade Box; with Wake on Lan. Just send the WOL packet to the right mac address, which can be found on the machine:
00:21:70:03:31:1b
Here is an example command line that will turn on the machine (etherwake defaults to eth0, so wlan0 is specified)
sudo etherwake 00:21:70:03:31:1b -i wlan0
Or, equivalently:
wakeonlan 00:21:70:03:31:1b
From: http://gsd.di.uminho.pt/jpo/software/wakeonlan/
Input
Arcade Machine input
The input can be read as PS2 (and USB); using a chip that we got alongside the Arcade Machine:
http://www.ultimarc.com/jpac.html http://www.ultimarc.com/jpac2.html
The Arcade Machine input exposes itself as a single keyboard over USB and PS/2. This is problematic for most games, with the exception of MAME and a few emulators. Some games expect an input device per player, so one "keyboard" then simply is not enough.
Basic instructions:
./disable_unusable_keyboard.sh cd uinput-mapper/ make sudo ./map
Other Input
We attached two PlayStation controllers, but I (Wizzup) am not a big fan of them. Regardless, there's a USB hub so feel free to plug in other controllers! It would be nice to have proper SNES ones.
This may be useful: https://www.thinkgeek.com/product/f08d/ and http://www.amazon.com/Classic-USB-Super-Nintendo-Controller-PC/dp/B002JAU20W Or we can make our own.
Coin Input
This should be handled by the Input over PS2/USB as well. It is probably mapped to some a key.
Video
We replaced the built-in monitor with a TFT monitor.
Sound
The sound works and is connected to the computer as well.
Common tasks
There are a few simple tasks until we've written a pretty interface + set of scritps.
It mostly boils down to two tasks:
1) disable/enable the "keyboard" interface in X (to avoid double input):
~/disable_*.sh or ~/enable_*.sh
2) start/stop uinput-mapper with the right configuration:
sudo input-read -D /dev/input/by-id/usb-Cypress_I-PAC_Arcade_Control_Interface-event-kbd | sudo input-create configs/techinc.py
And just hit ^C to stop it.
Games (with instructions)
Super Hexagon
Disable uinput-mapper and enable the "keyboard" interface.
Jamestown
Disable the "keyboard" interface; enable uinput-mapper with techinc.py configuration
Emulators
- ZSNES (SNES)
- UAE (Amiga)
- MAME
- ...
Writing our own input driver
Axes to axes, Buttons to buttons
Code: https://github.com/MerlijnWajer/uinput-mapper
For usage instructions, see: http://hetgrotebos.org/wiki/uinput-mapper
And the techinc.py config can be viewed online:
http://googleco.de/uinput-mapper/tree/configs/techinc.py
Map:
- Creates two joystick input devices in /dev/input
- Both joystick devices are mapped sanely.
- HAT0X / HAT0Y seem to work now that we specified absmin and absmax.
Keys are mapped like this:
HAT -> HAT0X, HAT0Y Red Buttons, left to right: BTN_0, BTN_1, BTN_2 Yellow Button: BTN_3
User Interface
TODO.
Games
List of games:
Native
- Jamestown (works with joysticks)
- Syobon (not yet! Ubuntu didn't have it in their repo ☹)
Amiga
In UAE, just add the games as floppies.
- SWIV (Great shoot them up game)
- Pinball Fantasies
SNES
...
Other uses
- We can use it to control a variety of stuff. (light, sound)
- We can hook other consoles into it.
- ???
brain-dump AndreasR (possible user interface)
https://aur.archlinux.org/packages/mamepgui/
http://qmc2.arcadehits.net/download.html
http://mame.mindkiller.com/?section=downloads&project=mame
http://gmameui.sourceforge.net/
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=15915&p=163781
http://rbelmont.mameworld.info/?page_id=163
http://gxmame.sourceforge.net/
Addition by Wizzup: http://www.anti-particle.com/wahcade.shtml