Difference between revisions of "MAME Cabinet"

From MidsouthMakers - Memphis Area Hackerpace
Jump to navigation Jump to search
(start of project page)
 
 
(49 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
'''MAME''', an acronym that stands for Multiple Arcade Machine Emulator, is an emulator designed to reproduce older arcade system hardware via software on a modern personal computer.
 +
 
{{Infobox project
 
{{Infobox project
|project_name = MAME Cabinet
+
|project_name = MMMAME <br>(Midsouth Makers MAME Cabinet)
|image =  
+
|image = MAME Cabinet v2.0 Sanded.jpg
|caption =  
+
|caption = Sanded cabinet and gutted
|owner = critter42
+
|owner = Group
|version = 1.0
+
|lead = [[User:critter42|critter42]] & MemphisArtGuy
 +
|version = 2.0
 
|status = inprogress
 
|status = inprogress
|start_date = September 2011
+
|start_date = November 2012
 
|cost = Free
 
|cost = Free
 
}}
 
}}
  
== Assessment ==
+
== TODO List ==
=== Exterior ===
+
*Spray paint the rest of the base colors before laying down the vinyl paint mask.
This is the front portion of a Dynamo Arcade cabinet, model HS-13 (ref http://www.drzero.org/ videogames/dynamo/HS-13b.jpg ). The monitor was originally a 50” Mitsubishi projection TV connected by 3” square tubing to the front piece. All the game electronics were held in the front piece. We do not have keys to the rear panel or the coin slot. However, the latches holding down the top panel are open and we have direct access to the interior of the unit. Coin slot is missing coin return buttons, but recommend removing panel and mechanisms entirely.
+
*Lay the vinyl and paint the cabinet black.
 +
*Lay out and make the joystick/button panel
 +
*Mount and wire the controller board to the panel
 +
*Purchase/Paint a 2'x4' 1/2 sheet of plywood for the back of the cabinet.
 +
 
 +
 
 +
 
 +
== Design ==
 +
=== Computer ===
 +
*HP Compaq DC7600 Convertible Minitower PC 3.2 GHZ
 +
*OS [http://www.ubuntu.com/ Ubuntu] 12.04
 +
*2 HDD on SATA BUS - Roms Drive - OS Drive
 +
*WIFI Adapter : ENUWI-G2 802.11 B/G
 +
*1Gb DDR2 - Would like to upgrade to 4Gb
 +
*19inch 3:4 LCD
 +
 
 +
=== Display ===
 +
*Samsung 19inch 930B
 +
 
 +
=== Audio ===
 +
*On Board
 +
 
 +
=== Software ===
 +
*'''Preferred Interface:''' [http://www.cabrio-fe.org/ Cabrio]
 +
*'''Secondary Interface:''' [http://gmameui.sourceforge.net/ GMAMEUI]
 +
*'''Mame Software:''' [http://sdlmame.wallyweek.org/download/ sdlmame]
 +
 
 +
=== Controls ===
 +
The Williams Defender cabinet shared the "base cabinet" with many other games like Joust and Sinistar. This fact makes it very easy to make multiple control decks. The control decks dimensions are 23 1/2 inches by 8 inches made of 3/4 plywood.  
  
Although the markings are for Mortal Kombat 3, this appears to have been a conversion from a Street Fighter game, as indicated by the Block and Run buttons together, as opposed to the block button only in between the punch and kick button that is seen in standard MK3 controls.
+
We have a few leftover parts from the last MAME project, also ordered a set of [http://www.ebay.com/itm/360450175737 buttons and joysticks] form Ebay seller TwistedQuarter for $29.99 plus $10 shipping as a donation.
  
Outside cabinet condition is fair. Lots of surface dirt which will require cleaning and/or repainting/
+
<strike>Danny is currently running a custom firmware on an Arduino Uno and checking the results of that.</strike> '''Interface was too laggy'''
covering, but structure is intact. Upper cabinet lid plexiglass will need to be removed and kept for a template in case it is decided to replace it.
 
  
{{gallery
+
=== Graphics ===
|title = MAME Cabinet Exterior
+
==== Side Stencils ====
|width = 150
+
{{Gallery
|height = 150
+
|title = Stencils
|File:MAME Cabinet Front Coin Panel.jpg|Cabinet front/coin panel
+
|width=160
|File:MAME Cabinet Top Controls.jpg|Cabinet Top
+
|height=170
|File:MAME Cabinet Rear.jpg|Cabinet Rear
+
|lines=1
|File:MAME Cabinet Right Side.jpg|Right Side
+
|File:Mame stencil little gear.svg| Little Top Gear
 +
|File:Mame stencil big gear.svg|alt2=Bottom gear| Big Bottom Gear
 +
|File:Mame stencil iron.svg|alt3=Soldering Iron| Soldering Iron
 +
|File:Mame stencil wrench.svg|alt3=Wrench| Wrench
 
}}
 
}}
  
=== Interior ===
+
== Custom Electronics for the Controls ==
The top panel that also served as a lid is in good shape, but will probably need to be replaced, especially if we change the layout, which I recommend. There are two latches on the rear of the panel to hold the panel down to the base. It hinges up and forward. However, the hinges have pulled out of the base and are bent. While they could possibly be bent back into shape, they are cheap enough to replace instead.
+
 
 +
A custom board was fabricated for controlling the buttons and joysticks [http://vusb.wikidot.com/project:mamepanel V-USB MAMEPanel] was ported to work for the Atmel atmega644p micro controller. The hardware currently emulates 2 joysticks with 8 buttons each and a keyboard hid device. MAMEPanel is expandable to 3 joysticks and a mouse input is also possible. Hardware has only been tested with windows built in tool for testing joysticks, real world performance is still to be determined. It should be fine since it is based on a working and tested design. Below is the current keymap and schematic.
  
Missing two buttons and associated switches. Buttons and joystick are in good condition, but switches are not. Corroded and missing terminals throughout. Recommend replacing all joysticks, buttons and switches due to low cost for new equipment. Wiring harnesses appear in good shape and have readable labels. Power and volume button panel and switches/knob need replacement. Speakers appear in good shape, but will need to test. Speakers are standard 6” 8ohm circular speakers, so if replacement is needed, cost is minimal.
+
[[File:V-USB_Mame_Panel_Atmega32-Schematic.png|thumb|center|Schematic]]
  
{{gallery
+
<nowiki>
|title = MAME Cabinet Interior
+
// Atmega32 Shift switch off
|width = 150
+
PROGMEM const unsigned char NormalMapping[NUMBER_OF_INPUTS] =
|height = 150
+
{                      //  Pin Atmega  Board  Function
|File:MAME Cabinet Backside Coin Panel.jpg|Coin Panel Wiring
+
    KEY_5,              //  40  PA0    X6-1    COINTRIGGER
|File:MAME Cabinet Power and Speaker Panel.jpg|Power and Speaker Panel
+
    0,                  //  39  PA1    X4-8    none
|File:MAME Cabinet Underside Player 1 Controls.jpg|Player 1 Controls
+
    0,                  //  38  PA2    X4-7    none
|File:MAME Cabinet Underside Player 2 Controls.jpg|Player 2 Controls
+
    KEY_2,              //  37  PA3    X4-6    JOY2START
 +
    KEY_1,              //  36  PA4    X4-5    JOY1START
 +
    J1_Button8,        //  35  PA5    X4-4    JOY1BUTTON8
 +
    J1_Button7,        //  34  PA6    X4-3    JOY1BUTTON7
 +
    J1_Button6,        //  33  PA7    X4-2    JOY1BUTTON6
 +
    0,                  //  1  PB0    X9-2    SHIFTSWITCH
 +
    J2_Button8,        //  2  PB1    X7-1    JOY2BUTTON8
 +
    J2_Button7,        //  3  PB2    X7-2    JOY2BUTTON7
 +
    J2_Button6,        //  4  PB3    X8-1    JOY2BUTTON6
 +
    J2_Button5,        //  5  PB4    X8-2    JOY2BUTTON5
 +
    J2_Button4,        //  6  PB5    X5-1    JOY2BUTTON4
 +
    J2_Button3,        //  7  PB6    X5-2    JOY2BUTTON3
 +
    J2_Button2,        //  8  PB7    X5-3    JOY2BUTTON2
 +
    J1_Up,              //  22  PC0    X3-2    JOY1UP
 +
    J1_Left,            //  23  PC1    X3-3    JOY1LEFT
 +
    J1_Right,          //  24  PC2    X3-4    JOY1RIGHT
 +
    J1_Button1,        //  25  PC3    X3-5    JOY1BUTTON1
 +
    J1_Button2,        //  26  PC4    X3-6    JOY1BUTTON2
 +
    J1_Button3,        //  27  PC5    X3-7    JOY1BUTTON3
 +
    J1_Button4,        //  28  PC6    X3-8    JOY1BUTTON4
 +
    J1_Button5,        //  29  PC7    X4-1    JOY1BUTTON5
 +
    J2_Button1,        //  15  PD1    X5-4    JOY2BUTTON1
 +
    J2_Right,          //  17  PD3    X5-5    JOY2RIGHT
 +
    J2_Left,            //  18  PD4    X5-6    JOY2LEFT
 +
    J2_Up,              //  19  PD5    X5-7    JOY2UP
 +
    J2_Down,            //  20  PD6    X5-8    JOY2DOWN
 +
    J1_Down            //  21  PD7    X3-1    JOY1DOWN
 +
};
 +
 
 +
// Atmega32 Shift switch on
 +
PROGMEM const unsigned char ShiftMapping[NUMBER_OF_INPUTS]=
 +
{                      //  Pin Atmega  Board  Function
 +
    KEY_5,              //  40  PA0    X6-1    COINTRIGGER
 +
    0,                  //  39  PA1    X4-8    none
 +
    0,                  //  38  PA2    X4-7    none
 +
    AC_Mute,            //  37  PA3    X4-6    JOY2START
 +
    KEY_P,              //  36  PA4    X4-5    JOY1START
 +
    0,                  //  35  PA5    X4-4    JOY1BUTTON8
 +
    0,                  //  34  PA6    X4-3    JOY1BUTTON7
 +
    0,                  //  33  PA7    X4-2    JOY1BUTTON6
 +
    0,                  //  1  PB0    X9-2    SHIFTSWITCH
 +
    0,                  //  2  PB1    X7-1    JOY2BUTTON8
 +
    0,                  //  3  PB2    X7-2    JOY2BUTTON7
 +
    0,                  //  4  PB3    X8-1    JOY2BUTTON6
 +
    0,                  //  5  PB4    X8-2    JOY2BUTTON5
 +
    0,                  //  6  PB5    X5-1    JOY2BUTTON4
 +
    KM_ALT_F4,          //  7  PB6    X5-2    JOY2BUTTON3
 +
    KM_SHIFT_F7,        //  8  PB7    X5-3    JOY2BUTTON2
 +
    KEY_UpArrow,        //  22  PC0    X3-2    JOY1UP
 +
    KEY_LeftArrow,      //  23  PC1    X3-3    JOY1LEFT
 +
    KEY_RightArrow,    //  24  PC2    X3-4    JOY1RIGHT
 +
    KEY_Enter,          //  25  PC3    X3-5    JOY1BUTTON1
 +
    KEY_Esc,            //  26  PC4    X3-6    JOY1BUTTON2
 +
    KEY_Tab,            //  27  PC5    X3-7    JOY1BUTTON3
 +
    0,                  //  28  PC6    X3-8    JOY1BUTTON4
 +
    0,                  //  29  PC7    X4-1    JOY1BUTTON5
 +
    KEY_F7,            //  15  PD1    X5-4    JOY2BUTTON1
 +
    AC_VolumeUp,        //  17  PD3    X5-5    JOY2RIGHT
 +
    AC_VolumeDown,      //  18  PD4    X5-6    JOY2LEFT
 +
    KEY_PageUp,        //  19  PD5    X5-7    JOY2UP
 +
    KEY_PageDown,      //  20  PD6    X5-8    JOY2DOWN
 +
    KEY_DownArrow      //  21  PD7    X3-1    JOY1DOWN
 +
};
 +
 
 +
</nowiki>
 +
 
 +
== Cosmetics ==
 +
*'''Cabinet''' &mdash; The cabinet will be black with green and blue artwork. Spray paint was purchase by Danny and Ben
 +
*'''T-molding''' &mdash; will also be black and has been purchased by Dan
 +
 
 +
== Gallery ==
 +
{{Gallery
 +
|title = MAME Cabinet
 +
|width=160
 +
|height=170
 +
|lines=2
 +
|File:MAME_1.jpg|alt1=Monitor mounted|New monitor mounted
 +
|File:MAME_4.jpg|alt1=Sanded sideview of cabinet | Sanded side
 +
|File:MAME_2.jpg|alt2=Danny and Dan measuring for acceptable artwork sizes|Measuring or acceptable artwork sizes
 +
|File:Mame side layout.svg|alt3=Mame Cabinet artwork, contains several large gears, wrench that says makers, and a soldering iron| MAME Artwork
 +
|File:MAME_3.jpg|alt3=Dan prepping the vinyl stencil of a soldering iron for one side| Prepping vinyl stencil
 +
|File:MAME_5.jpg|alt3=Big piece of vinyl cut for making side stencils| One of the stencils
 +
|File:MAME_6.jpg|alt3=Weeding the big wrench stencil| Weeding the big wrench
 +
|File:Cabinet1stCoatColor.jpg|alt3=Cabinet after first color base coat| Cabinet after first color base coat
 +
|File:LeftSideStencils.jpg|alt3=Left side, 2nd base color coat and stencils applied| Left side, 2nd base color coat and stencils applied
 +
|File:RightSideStencils.jpg|alt3=Right side, 2nd base color coat and stencils applied| Right side, 2nd base color coat and stencils applied
 +
|File:LeftSideBlack.jpg|alt3=Left side after black topcoat| Left side after black topcoat
 +
|File:RightSideBlack.jpg|alt3=Right side after black topcoat| Right side after black topcoat
 +
|File:LeftSideFinal.jpg|alt3=Left side after removing stencils| Left side after removing stencils
 +
|File:RightSideFinal.jpg|alt3=Right side after removing stencils| Right side after removing stencils
 
}}
 
}}
  
== Design ==
+
== Bill of Materials ==
=== PC Specifications ===
+
*DC7600
=== Display Design ===
+
*Samsung 19 inch 930b LCD
=== Control Layout ===
+
*Defender Arcade Cabinet
=== JAMMA or USB Only ===
+
 
 +
== Contributors ==
 +
*Ben
 +
*Dan
 +
*Danny
 +
*Dru
 +
*Mark
  
== Bill of Materials ==
+
== External Links ==
 +
[http://www.cabrio-fe.org/ Cabrio]<br>
 +
[http://www.practicalarduino.com/projects/virtual-usb-keyboard/ Virtual HID Keyboard]<br>
 +
[http://code.rancidbacon.com/ProjectLogArduinoUSB/ Arduino USB Sheild]<br>
 +
[http://www.pjrc.com/teensy/usb_keyboard.html Teensy HID Keyboard]<br>
 +
[http://mitchtech.net/arduino-usb-hid-keyboard/ Arduino Uno HID Keyboard]<br>
  
== Building and Testing ==
+
== References ==
 +
{{reflist}}

Latest revision as of 02:43, 17 February 2013

MAME, an acronym that stands for Multiple Arcade Machine Emulator, is an emulator designed to reproduce older arcade system hardware via software on a modern personal computer.

MMMAME
(Midsouth Makers MAME Cabinet)

Sanded cabinet and gutted

Information
Owner Group
Lead critter42 & MemphisArtGuy
Version 2.0
Status In Progress
Started On November 2012
Cost Free


TODO List

  • Spray paint the rest of the base colors before laying down the vinyl paint mask.
  • Lay the vinyl and paint the cabinet black.
  • Lay out and make the joystick/button panel
  • Mount and wire the controller board to the panel
  • Purchase/Paint a 2'x4' 1/2 sheet of plywood for the back of the cabinet.


Design

Computer

  • HP Compaq DC7600 Convertible Minitower PC 3.2 GHZ
  • OS Ubuntu 12.04
  • 2 HDD on SATA BUS - Roms Drive - OS Drive
  • WIFI Adapter : ENUWI-G2 802.11 B/G
  • 1Gb DDR2 - Would like to upgrade to 4Gb
  • 19inch 3:4 LCD

Display

  • Samsung 19inch 930B

Audio

  • On Board

Software

Controls

The Williams Defender cabinet shared the "base cabinet" with many other games like Joust and Sinistar. This fact makes it very easy to make multiple control decks. The control decks dimensions are 23 1/2 inches by 8 inches made of 3/4 plywood.

We have a few leftover parts from the last MAME project, also ordered a set of buttons and joysticks form Ebay seller TwistedQuarter for $29.99 plus $10 shipping as a donation.

Danny is currently running a custom firmware on an Arduino Uno and checking the results of that. Interface was too laggy

Graphics

Side Stencils

Stencils
Little Top Gear  
Bottom gear
Big Bottom Gear  
Wrench
Soldering Iron  
Wrench  

Custom Electronics for the Controls

A custom board was fabricated for controlling the buttons and joysticks V-USB MAMEPanel was ported to work for the Atmel atmega644p micro controller. The hardware currently emulates 2 joysticks with 8 buttons each and a keyboard hid device. MAMEPanel is expandable to 3 joysticks and a mouse input is also possible. Hardware has only been tested with windows built in tool for testing joysticks, real world performance is still to be determined. It should be fine since it is based on a working and tested design. Below is the current keymap and schematic.

Schematic
// Atmega32 Shift switch off
PROGMEM const unsigned char NormalMapping[NUMBER_OF_INPUTS] =
{                       //  Pin Atmega  Board   Function
    KEY_5,              //  40  PA0     X6-1    COINTRIGGER
    0,                  //  39  PA1     X4-8    none
    0,                  //  38  PA2     X4-7    none
    KEY_2,              //  37  PA3     X4-6    JOY2START
    KEY_1,              //  36  PA4     X4-5    JOY1START
    J1_Button8,         //  35  PA5     X4-4    JOY1BUTTON8
    J1_Button7,         //  34  PA6     X4-3    JOY1BUTTON7
    J1_Button6,         //  33  PA7     X4-2    JOY1BUTTON6
    0,                  //   1  PB0     X9-2    SHIFTSWITCH
    J2_Button8,         //   2  PB1     X7-1    JOY2BUTTON8
    J2_Button7,         //   3  PB2     X7-2    JOY2BUTTON7
    J2_Button6,         //   4  PB3     X8-1    JOY2BUTTON6
    J2_Button5,         //   5  PB4     X8-2    JOY2BUTTON5
    J2_Button4,         //   6  PB5     X5-1    JOY2BUTTON4
    J2_Button3,         //   7  PB6     X5-2    JOY2BUTTON3
    J2_Button2,         //   8  PB7     X5-3    JOY2BUTTON2
    J1_Up,              //  22  PC0     X3-2    JOY1UP
    J1_Left,            //  23  PC1     X3-3    JOY1LEFT
    J1_Right,           //  24  PC2     X3-4    JOY1RIGHT
    J1_Button1,         //  25  PC3     X3-5    JOY1BUTTON1
    J1_Button2,         //  26  PC4     X3-6    JOY1BUTTON2
    J1_Button3,         //  27  PC5     X3-7    JOY1BUTTON3
    J1_Button4,         //  28  PC6     X3-8    JOY1BUTTON4
    J1_Button5,         //  29  PC7     X4-1    JOY1BUTTON5
    J2_Button1,         //  15  PD1     X5-4    JOY2BUTTON1
    J2_Right,           //  17  PD3     X5-5    JOY2RIGHT
    J2_Left,            //  18  PD4     X5-6    JOY2LEFT
    J2_Up,              //  19  PD5     X5-7    JOY2UP
    J2_Down,            //  20  PD6     X5-8    JOY2DOWN
    J1_Down             //  21  PD7     X3-1    JOY1DOWN
};

// Atmega32 Shift switch on
PROGMEM const unsigned char ShiftMapping[NUMBER_OF_INPUTS]=
{                       //  Pin Atmega  Board   Function
    KEY_5,              //  40  PA0     X6-1    COINTRIGGER
    0,                  //  39  PA1     X4-8    none
    0,                  //  38  PA2     X4-7    none
    AC_Mute,            //  37  PA3     X4-6    JOY2START
    KEY_P,              //  36  PA4     X4-5    JOY1START
    0,                  //  35  PA5     X4-4    JOY1BUTTON8
    0,                  //  34  PA6     X4-3    JOY1BUTTON7
    0,                  //  33  PA7     X4-2    JOY1BUTTON6
    0,                  //   1  PB0     X9-2    SHIFTSWITCH
    0,                  //   2  PB1     X7-1    JOY2BUTTON8
    0,                  //   3  PB2     X7-2    JOY2BUTTON7
    0,                  //   4  PB3     X8-1    JOY2BUTTON6
    0,                  //   5  PB4     X8-2    JOY2BUTTON5
    0,                  //   6  PB5     X5-1    JOY2BUTTON4
    KM_ALT_F4,          //   7  PB6     X5-2    JOY2BUTTON3
    KM_SHIFT_F7,        //   8  PB7     X5-3    JOY2BUTTON2
    KEY_UpArrow,        //  22  PC0     X3-2    JOY1UP
    KEY_LeftArrow,      //  23  PC1     X3-3    JOY1LEFT
    KEY_RightArrow,     //  24  PC2     X3-4    JOY1RIGHT
    KEY_Enter,          //  25  PC3     X3-5    JOY1BUTTON1
    KEY_Esc,            //  26  PC4     X3-6    JOY1BUTTON2
    KEY_Tab,            //  27  PC5     X3-7    JOY1BUTTON3
    0,                  //  28  PC6     X3-8    JOY1BUTTON4
    0,                  //  29  PC7     X4-1    JOY1BUTTON5
    KEY_F7,             //  15  PD1     X5-4    JOY2BUTTON1
    AC_VolumeUp,        //  17  PD3     X5-5    JOY2RIGHT
    AC_VolumeDown,      //  18  PD4     X5-6    JOY2LEFT
    KEY_PageUp,         //  19  PD5     X5-7    JOY2UP
    KEY_PageDown,       //  20  PD6     X5-8    JOY2DOWN
    KEY_DownArrow       //  21  PD7     X3-1    JOY1DOWN
};


Cosmetics

  • Cabinet — The cabinet will be black with green and blue artwork. Spray paint was purchase by Danny and Ben
  • T-molding — will also be black and has been purchased by Dan

Gallery

MAME Cabinet
Sanded sideview of cabinet
New monitor mounted  
Danny and Dan measuring for acceptable artwork sizes
Sanded side  
Right side after removing stencils
Measuring or acceptable artwork sizes  
MAME Artwork  
Prepping vinyl stencil  
One of the stencils  
Weeding the big wrench  
Cabinet after first color base coat  
Left side, 2nd base color coat and stencils applied  
Right side, 2nd base color coat and stencils applied  
Left side after black topcoat  
Right side after black topcoat  
Left side after removing stencils  
Right side after removing stencils  

Bill of Materials

  • DC7600
  • Samsung 19 inch 930b LCD
  • Defender Arcade Cabinet

Contributors

  • Ben
  • Dan
  • Danny
  • Dru
  • Mark

External Links

Cabrio
Virtual HID Keyboard
Arduino USB Sheild
Teensy HID Keyboard
Arduino Uno HID Keyboard

References