Difference between revisions of "Arcade Machine"

From Technologia Incognita
Jump to: navigation, search
(To-Do List)
(To-Do List)
Line 197: Line 197:
  
 
= To-Do List =  
 
= To-Do List =  
* wheels! Everything that can move is not in the way
+
* <strike>wheels! Everything that can move is not in the way</strike> Done 20141116 - Justa
 
* <strike>power and/or reset button </strike>
 
* <strike>power and/or reset button </strike>
 
* make selection of like 50 MAME games - ask Mailing list for everyone's top-3 nostalgia favorites?
 
* make selection of like 50 MAME games - ask Mailing list for everyone's top-3 nostalgia favorites?
Line 205: Line 205:
 
* strip the PC and mount it inside - reduce clutter while busy
 
* strip the PC and mount it inside - reduce clutter while busy
 
* investigate less heat production / better ventilation
 
* investigate less heat production / better ventilation
 +
 +
= Justa-Mail from 20141117 =
 +
 +
 +
 +
 +
As some of you might've spotted in the elves-update; the arcade-machine
 +
has undergone a number of small changes that have been carried out in
 +
preparation towards doing more major work.
 +
 +
I will list the things done (and why I thought they were useful), as
 +
well as the things that are on my 'wishlist'; not to say that they WILL
 +
happen, but I'd like them TO happen (if there's not too much
 +
disagreement about it.
 +
 +
This post contains four parts:
 +
 +
- Info
 +
- Work Done
 +
- Work planned/suggested
 +
- Input Requested
 +
 +
 +
First: a little info.
 +
--------
 +
 +
The cabinet we have is a 'generic' model designed to be able to run a
 +
number of games, originally.
 +
We stuck a PC in there and replaced the CRT with an LCD.
 +
The controls connect to the PC via a 'JPAC' module from Ultimarc;
 +
connected to the PC via PS/2
 +
There are a number of USB-cables running from the PC to other devices.
 +
Including the keyboard + Touch-pad that are currently 'seated' at the
 +
top of the cabinet.
 +
 +
The PC runs Linux. It autoboots into an AWESOME desktop that has a
 +
full-screen 'program selection' window open which was programmed by
 +
Wizzup and Control-K as a way to easily be able to select the
 +
game/program/function you'd like to use.
 +
 +
The cabinet has the following controls
 +
 +
- A coin-return; now used for 'on/off' (wired to 'ATX poweron' i believe)
 +
- Player 2 start (on front edge)
 +
- Player 1 joystick
 +
- Player 1 button 1
 +
- Player 1 button 2
 +
- Player 2 start (on front edge)
 +
- Player 2 joystick
 +
- Player 2 button 1
 +
- Player 2 button 2
 +
 +
The cabinet has a light-switch on the back to power on/off the light
 +
that illuminates the logo at the top.
 +
 +
The cabinet has two speakers. Not clear if volume is wired up via
 +
volume-control button on the inside of the cabinet.
 +
 +
The cabinet is designed to be used either in 'seated' mode or, in it's
 +
current configuration, when standing.
 +
To make this possible, the cabinet is constructed out of two sections. A
 +
main section housing all the electronics, etc, and a 'pedestal' at the
 +
bottom that can be separated from the rest by removing two bolts.
 +
This raises the height of the entire machine about 40cm's or so.
 +
 +
 +
Second: stuff done.
 +
------
 +
 +
- Added two fixed wheels and two swivel-wheels under the base
 +
-- To be able to move the thing around
 +
 +
- Added a hole that runs from the 'cabinet' part into the 'base' part
 +
-- Since I had the console removed already, it seemed smart to make some
 +
kind of hole in the base AND the cabinet that'd allow running a cable
 +
through for lighting/whatever.
 +
 +
- Drilled a hole on the underside of the 'button-table' to let USB
 +
cables through
 +
-- To start getting rid of the 'kabel-salat' that plagues the
 +
arcade-machine, I moved the USB-hub from the 'coin-door' to a location
 +
inside of the cabinet; allowing the keyboard + pad to be connected a
 +
little more tidily. Also in preparation for other (suggested) changes
 +
 +
- Removed all the blue tape holding the access-hatch closed; replaced it
 +
(for now) with a single screw
 +
-- This is not permanent; but the use of blue tape all over the place
 +
was not making things look nice. The screw is just a kludge. There is a
 +
mechanism on the back of the access-panel that we could re-use, if I
 +
could figure out how it was supposed to work. Simply making a
 +
spring-loaded latch there would work fine too.
 +
 +
 +
Third: Work planned/suggested
 +
----------
 +
 +
(listed in semi-order-of-priority)
 +
 +
- Clean up the inside of the machine
 +
-- Bundle cables together, route them nicely, remove things that don't
 +
have to be inside of the machine anymore. Make it so that you can move
 +
the machine without shaking things loose and/or damaging things when
 +
closing/opening it.
 +
 +
- Move the/a keyboard/mouse/touchpad/rollerball into a 'drawer' below
 +
the control-table
 +
-- To get rid of the kabel-salat AND make the whole thing a much more
 +
tidy affair, it is my intention to make a suspended 'drawer' type
 +
assembly below the control-table that contains the/a keyboard + trackpad
 +
(pref dual-mouse). Perhaps we can find a keyboard that includes this,
 +
even. There is now a hole in the right place for the cables.
 +
-- The drawer would have a nice 'bevel' at the front that'd slide
 +
underneath the control-table so as to hide the drawer from view (mostly).
 +
--  Extra bonus option: provide a set of conntectors at the front of the
 +
drawer to connect, and integrate the logic in the drawer: keypads
 +
(SNES/Playstation), joysticks (analog), ARCADE-II joysticks
 +
(C64/MSX/etc), and/or USB (Flight Simulator, etc)
 +
There are great DIY projects available for this, as well as cheap
 +
chinese adapters.
 +
 +
- Fix a light inside of the cabinet
 +
-- There used to be a light inside of the cabinet to aid in any work to
 +
be done inside. It's now super-dark and there's no easy way to do any
 +
cleanup work. I suggest restoring the light (re-wiring), or replacing it
 +
with a LED-based affair
 +
 +
- Sort out the 'test' and 'volume' controls on the inside of the cabinet
 +
-- Are these working ? If so, perhaps move them to an accessible spot
 +
(next to the light-switch on the back ?)
 +
 +
- Provide a way to 'insert coin'
 +
-- Notably, we lack a 'coin' switch. All the MAME-games normally assume
 +
a coin to be thrown in before you can play. This is currently only
 +
possibly through the use of the '6' key on the keyboard. This should be
 +
fixed. A nice hack with a 'coin on a rope' in a coin-slot would be
 +
awesome, of course.
 +
 +
- Check which other controls we would like to add
 +
-- A lot of the mame-cabinets out there provide a total of 6 (SIX!) keys
 +
per player. We have two, currently. I think replacing the two buttons
 +
with new ones + 4 more would be a good investment. I have run into quite
 +
a few games that dont work, at current.
 +
 +
- Provide (better) documentation for those who want to play a game and
 +
do not have a PhD in ICT.
 +
-- Starting a game currently is something that takes a bit too much
 +
knowledge of how the keyboard mapping of the keys and the way MAME
 +
expects them to be used (especially 'insert coin') , as well as the fact
 +
that 'chording' the PLAYER 1 and PLAYER 2 keys at the same time seems to
 +
be the same as 'escape', which quits the game and returns to Wah!Cade...
 +
-- At the least, a little bit of info either on the screen OR on the
 +
machine should make it clear how to get a game to do the basic things.
 +
An overview of where the buttons are and what they are called (button
 +
one, button two, etc) would be good.
 +
 +
 +
- Liven up the software configuration with a clearer overview and pictures
 +
-- The software allows a nice start-screen to be produced. At current,
 +
however, it's not quite clear how to get to playing ARCADE-games, etc..
 +
It'd be good to re-do the layout, provide pictures, check the controls
 +
(to be consistent over the different options) etc.
 +
 +
- Put lights in the base of the machine to make it look awesome
 +
-- As part of my work on 'justacluster', I found out that using RGB-led
 +
modules (with seperate R/G/B leds) and a perforated sheet of aluminium
 +
creates an awesome effect.
 +
 +
-- See http://www.sociallife.org/data/blender/secret/IMG_6467.JPG for an
 +
example of what  that can look like.
 +
 +
- Provide new artwork for the top-light
 +
-- There is now a generic piece of artwork in there. A techinc-branded
 +
version would be awesome
 +
 +
- Repaint the cabinet in it's entirety.
 +
-- The machine has quite a few scuff-marks; the base has kick and
 +
water-damage and needs re-doing.
 +
-- I'd like to either: find someone who can do nice artwork (or find a
 +
way to do it with sticker-transfers)
 +
-- OR simply do the whole thing in a very simple one- or two-color
 +
livery. Bright orange with a single white sport-stripe along the sides
 +
or so.
 +
 +
Fourth: Input requested
 +
----------
 +
 +
- Should we perhaps simply replace/redo the entire control-table in it's
 +
entirity by replacing the surface with a larger one that 'sticks out' a
 +
little on the sides ? This would allow for better hand-rest positions
 +
and better access to all the keys.
 +
-- Bonus: adding a drawer might be easier to do 'nicely'
 +
 +
- Anyone care to help pledge for the 60 euro's or so required for 12 new
 +
buttons ?
 +
-- And what colors should we be doing ?
 +
 +
- What kind of artwork would people like to let the arcade have ?
 +
-- A nice glossy black with the techinc-colors (partial logo on the
 +
sides ?) would be nice, too.
 +
 +
-- Arnd

Revision as of 14:26, 17 November 2014

Projects
Participants Control-k, Maijin, Realitygaps, Wizzup
Skills Programming
Status Active
Niche Software
Purpose Fun

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/

Power button

The button next to the coin slit is now also a power button.

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.

More straight forward scripts will be provided to change de input mapping at a later time; for now, read on.

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

Just start it from the menu

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 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

Using the menu

There is a custom menu for the arcade machine, it should start automaticly. You can use the left joystick to choose a game/program. Press the most right button of player 1 to start it. For games that are not added yet, xterm is also in the menu.

Restarting the menu

If the menu is closed and you want to start it, the python script is in "/home/techinc/arcade/game.py", run it using python2.

Adding programs

You can use the supllied GUI in the menu, it will ask some questions. You can either choose a file to run or insert a custom command Then it asks for a name and descition Finaly, you will need a picture, you can use the standart questionmark, insert a file or taka a screenshot. When you take a screenshot, the command will be executed (so make sure it is alright) and after some seconds scrot is used to take a picture.

You can also edit the ~/arcade/gamelist.conf file for more flexebilety.

Removeing a program can be done by pressing [DEL] in the main menu while you have the program selected.

Fixing a broken menu

Sometimes things go wrong when adding games, specifecly while adding a screenshot, this can make the menu crash. You can fix it by removing the broken entry from ~/arcade/gamelist.conf manualy.


Games

List of games:

Native

  • superhexagon
  • 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

...

in general

Let's not overload the console with ALL MAME games, make a selection and allow people to make wishes, otherwise you have clutter

Suggestion: focus on at least 50% co-op games! Fun is best shared! ;)

metal gear, swiv, bubble bobble, alien vs predator, metal slug, ikari warriors, gauntlet, smash tv, TMNT, Rampage, NARC, etc.

anything that makes fun together :)

Other uses

  • We can use it to control a variety of stuff. (light, sound)
  • We can hook other consoles into it.
  • Some kind of game that integrates with the space? interacts with some light / stuff around the arcade machine
  •  ???


To-Do List

  • wheels! Everything that can move is not in the way Done 20141116 - Justa
  • power and/or reset button
  • make selection of like 50 MAME games - ask Mailing list for everyone's top-3 nostalgia favorites?
  • USB/HID controls vs. input-mapper - Wizzup and Justa have to fight that one out...
  • reinstall OS on SSD
  • have it make coffee (hack a saeco inside for no reason)
  • strip the PC and mount it inside - reduce clutter while busy
  • investigate less heat production / better ventilation

Justa-Mail from 20141117

As some of you might've spotted in the elves-update; the arcade-machine has undergone a number of small changes that have been carried out in preparation towards doing more major work.

I will list the things done (and why I thought they were useful), as well as the things that are on my 'wishlist'; not to say that they WILL happen, but I'd like them TO happen (if there's not too much disagreement about it.

This post contains four parts:

- Info - Work Done - Work planned/suggested - Input Requested


First: a little info.


The cabinet we have is a 'generic' model designed to be able to run a number of games, originally. We stuck a PC in there and replaced the CRT with an LCD. The controls connect to the PC via a 'JPAC' module from Ultimarc; connected to the PC via PS/2 There are a number of USB-cables running from the PC to other devices. Including the keyboard + Touch-pad that are currently 'seated' at the top of the cabinet.

The PC runs Linux. It autoboots into an AWESOME desktop that has a full-screen 'program selection' window open which was programmed by Wizzup and Control-K as a way to easily be able to select the game/program/function you'd like to use.

The cabinet has the following controls

- A coin-return; now used for 'on/off' (wired to 'ATX poweron' i believe) - Player 2 start (on front edge) - Player 1 joystick - Player 1 button 1 - Player 1 button 2 - Player 2 start (on front edge) - Player 2 joystick - Player 2 button 1 - Player 2 button 2

The cabinet has a light-switch on the back to power on/off the light that illuminates the logo at the top.

The cabinet has two speakers. Not clear if volume is wired up via volume-control button on the inside of the cabinet.

The cabinet is designed to be used either in 'seated' mode or, in it's current configuration, when standing. To make this possible, the cabinet is constructed out of two sections. A main section housing all the electronics, etc, and a 'pedestal' at the bottom that can be separated from the rest by removing two bolts. This raises the height of the entire machine about 40cm's or so.


Second: stuff done.


- Added two fixed wheels and two swivel-wheels under the base -- To be able to move the thing around

- Added a hole that runs from the 'cabinet' part into the 'base' part -- Since I had the console removed already, it seemed smart to make some kind of hole in the base AND the cabinet that'd allow running a cable through for lighting/whatever.

- Drilled a hole on the underside of the 'button-table' to let USB cables through -- To start getting rid of the 'kabel-salat' that plagues the arcade-machine, I moved the USB-hub from the 'coin-door' to a location inside of the cabinet; allowing the keyboard + pad to be connected a little more tidily. Also in preparation for other (suggested) changes

- Removed all the blue tape holding the access-hatch closed; replaced it (for now) with a single screw -- This is not permanent; but the use of blue tape all over the place was not making things look nice. The screw is just a kludge. There is a mechanism on the back of the access-panel that we could re-use, if I could figure out how it was supposed to work. Simply making a spring-loaded latch there would work fine too.


Third: Work planned/suggested


(listed in semi-order-of-priority)

- Clean up the inside of the machine -- Bundle cables together, route them nicely, remove things that don't have to be inside of the machine anymore. Make it so that you can move the machine without shaking things loose and/or damaging things when closing/opening it.

- Move the/a keyboard/mouse/touchpad/rollerball into a 'drawer' below the control-table -- To get rid of the kabel-salat AND make the whole thing a much more tidy affair, it is my intention to make a suspended 'drawer' type assembly below the control-table that contains the/a keyboard + trackpad (pref dual-mouse). Perhaps we can find a keyboard that includes this, even. There is now a hole in the right place for the cables. -- The drawer would have a nice 'bevel' at the front that'd slide underneath the control-table so as to hide the drawer from view (mostly). -- Extra bonus option: provide a set of conntectors at the front of the drawer to connect, and integrate the logic in the drawer: keypads (SNES/Playstation), joysticks (analog), ARCADE-II joysticks (C64/MSX/etc), and/or USB (Flight Simulator, etc) There are great DIY projects available for this, as well as cheap chinese adapters.

- Fix a light inside of the cabinet -- There used to be a light inside of the cabinet to aid in any work to be done inside. It's now super-dark and there's no easy way to do any cleanup work. I suggest restoring the light (re-wiring), or replacing it with a LED-based affair

- Sort out the 'test' and 'volume' controls on the inside of the cabinet -- Are these working ? If so, perhaps move them to an accessible spot (next to the light-switch on the back ?)

- Provide a way to 'insert coin' -- Notably, we lack a 'coin' switch. All the MAME-games normally assume a coin to be thrown in before you can play. This is currently only possibly through the use of the '6' key on the keyboard. This should be fixed. A nice hack with a 'coin on a rope' in a coin-slot would be awesome, of course.

- Check which other controls we would like to add -- A lot of the mame-cabinets out there provide a total of 6 (SIX!) keys per player. We have two, currently. I think replacing the two buttons with new ones + 4 more would be a good investment. I have run into quite a few games that dont work, at current.

- Provide (better) documentation for those who want to play a game and do not have a PhD in ICT. -- Starting a game currently is something that takes a bit too much knowledge of how the keyboard mapping of the keys and the way MAME expects them to be used (especially 'insert coin') , as well as the fact that 'chording' the PLAYER 1 and PLAYER 2 keys at the same time seems to be the same as 'escape', which quits the game and returns to Wah!Cade... -- At the least, a little bit of info either on the screen OR on the machine should make it clear how to get a game to do the basic things. An overview of where the buttons are and what they are called (button one, button two, etc) would be good.


- Liven up the software configuration with a clearer overview and pictures -- The software allows a nice start-screen to be produced. At current, however, it's not quite clear how to get to playing ARCADE-games, etc.. It'd be good to re-do the layout, provide pictures, check the controls (to be consistent over the different options) etc.

- Put lights in the base of the machine to make it look awesome -- As part of my work on 'justacluster', I found out that using RGB-led modules (with seperate R/G/B leds) and a perforated sheet of aluminium creates an awesome effect.

-- See http://www.sociallife.org/data/blender/secret/IMG_6467.JPG for an example of what that can look like.

- Provide new artwork for the top-light -- There is now a generic piece of artwork in there. A techinc-branded version would be awesome

- Repaint the cabinet in it's entirety. -- The machine has quite a few scuff-marks; the base has kick and water-damage and needs re-doing. -- I'd like to either: find someone who can do nice artwork (or find a way to do it with sticker-transfers) -- OR simply do the whole thing in a very simple one- or two-color livery. Bright orange with a single white sport-stripe along the sides or so.

Fourth: Input requested


- Should we perhaps simply replace/redo the entire control-table in it's entirity by replacing the surface with a larger one that 'sticks out' a little on the sides ? This would allow for better hand-rest positions and better access to all the keys. -- Bonus: adding a drawer might be easier to do 'nicely'

- Anyone care to help pledge for the 60 euro's or so required for 12 new buttons ? -- And what colors should we be doing ?

- What kind of artwork would people like to let the arcade have ? -- A nice glossy black with the techinc-colors (partial logo on the sides ?) would be nice, too.

-- Arnd