Joy of joys!
A great day.
I've just found that my gmame sourceforge project request was approved on Monday (funny I didn't get the notification email, but no matter) which now means I have a place to properly support the software side (my custom interface) of this project.
Woo-hoo!
Now, all I have to do is figure out how to use it...hmmm....
UPDATE: think I've sussed it - have posted my first set of zip files via sourceforge - time to get slaughtered by those who know how to program properly, not some wannabe code monkey like me! :-P - my code looks SOOOOO rough - I really will have to split my time been blogging, coding, and building - core, tricky doing this in quasi-realtime.
my experiences building an arcade cabinet to run MAME, design to construction, MAME on Linux, building my own keyboard controller & GUI
Wednesday, 23 January 2008
Started my SourceForge!
Saturday, 19 January 2008
First Woodwork
So, about time I got to building this thing?!
I took 2 sheets of 9mm (3/8") MDF, lay one on top of the other, and clamped the together at the factory corner/sides (i.e. sides I can be relatively sure are straight and square)
I drew out the design I wanted for the top section of the cabinet (read my post on Motivations for more details) using my trusty protractor and a steel rule.

DO THIS DIFFERENTLY: I jigsawed out the design as accurately as I could, and because it was free-hand, there was the odd slip here and there. On reflection, I should have jigsawed out the pattern wide of the lines, and used my flush-trimming bit on the router at the final construction stage to bring the sides in flush with the body - I'll describe this better in a later post.
As above, the final pair of sides were not as accurate as I'd have liked, but they will suffice for now (I intend to tidy them up much more in the final stages) so I set about installing the "batons"
The diagram I will upload at a later date does much to explain this than I can in words, but here goes. For each of the panels that will bridge between the two sides, I measured the thickness of the panel (remembering to include the thickness of any perspex sheeting where applicable - such as the control panel) and scored a line on the inside of each side panel to match the thickness of the bridging panel, plus a few millimetres spare, so that I can tidy up the sides later.
For example, the control panel is 9mm MDF, with 6mm Perspex=15mm - on each side-panel, where the control panel will bridge the two sides, I scored a line at 15 (+3 spare) mm on the inside of the side-panels. This line represents where I want the bottom of the control panel to connect to each side.

I took my stock of 1" sq. batons made earlier, cut to the "depth" of each "bridge" panel and installed them using the lines I had drawn on the side-panels, so that each "bridge" panel would sit on the baton at the right position.
Like I said earlier, much easier to explain using the pictures! :-p
At this stage, I have my two side-panels cut to the right shape, and installed with batons for fixing the "bridge" panels, so I quickly dropped in a couple of lengths of 1" sq just to get a look at the size of the final cabinet.

My heart skipt a beat!
I took 2 sheets of 9mm (3/8") MDF, lay one on top of the other, and clamped the together at the factory corner/sides (i.e. sides I can be relatively sure are straight and square)
I drew out the design I wanted for the top section of the cabinet (read my post on Motivations for more details) using my trusty protractor and a steel rule.
DO THIS DIFFERENTLY: I jigsawed out the design as accurately as I could, and because it was free-hand, there was the odd slip here and there. On reflection, I should have jigsawed out the pattern wide of the lines, and used my flush-trimming bit on the router at the final construction stage to bring the sides in flush with the body - I'll describe this better in a later post.
As above, the final pair of sides were not as accurate as I'd have liked, but they will suffice for now (I intend to tidy them up much more in the final stages) so I set about installing the "batons"
The diagram I will upload at a later date does much to explain this than I can in words, but here goes. For each of the panels that will bridge between the two sides, I measured the thickness of the panel (remembering to include the thickness of any perspex sheeting where applicable - such as the control panel) and scored a line on the inside of each side panel to match the thickness of the bridging panel, plus a few millimetres spare, so that I can tidy up the sides later.
For example, the control panel is 9mm MDF, with 6mm Perspex=15mm - on each side-panel, where the control panel will bridge the two sides, I scored a line at 15 (+3 spare) mm on the inside of the side-panels. This line represents where I want the bottom of the control panel to connect to each side.
I took my stock of 1" sq. batons made earlier, cut to the "depth" of each "bridge" panel and installed them using the lines I had drawn on the side-panels, so that each "bridge" panel would sit on the baton at the right position.
Like I said earlier, much easier to explain using the pictures! :-p
At this stage, I have my two side-panels cut to the right shape, and installed with batons for fixing the "bridge" panels, so I quickly dropped in a couple of lengths of 1" sq just to get a look at the size of the final cabinet.
My heart skipt a beat!
Early design considerations
I've read as many sites and looked for as many diagrams as possible to try to discover the dimensions of a relatively authentic looking cabinet without it taking up an entire room. I have found this task rather fruitless - there are so few sites willing to share their designs - maybe because, like mine, they consider them works in progress, and the finished cabinets never match the original design, but still, they would have been useful a starting point.
I found one good looking, well described design and adjusted in for my priorities (see my posting on Motivations for more details) to come up with something I think will work.
Design points:
Using these points, I came up with a design like this...
PHOTO/SCAN TBA
I found one good looking, well described design and adjusted in for my priorities (see my posting on Motivations for more details) to come up with something I think will work.
Design points:
- 6' (1.8m) tall, but separated into upper and lower sections, with all the hardware in the top, and the lower essentially an authentic looking stand, 2' (0.6m) wide by 2' deep
- 10 degree tilt on the control panel, 9" (225mm) depth for wrist-resting
- 75 degree tilt on the screen panel to improve notoriously poor viewing angles on most TFT/LCD monitors
- 45 degree tilt on the speaker panel so the speakers face your face
- 6" (150mm) marquee panel
- Slot-cut top panel for ventilation (reduces cost of buying a vent plate)
- Perspex covered control panel and monitor panel for cleaning and aesthetics
- Rounded over edges of the side panels to remove need for T-Molding
Using these points, I came up with a design like this...
PHOTO/SCAN TBA
Friday, 18 January 2008
Pretty Pictures
I'm lucky that my brother is a printer, and is able to print any artwork I want onto sticky-backed vinyl of any shape and size up to 2m (~6'6") by any length.
Firstly the marquee - I've spent some time surfing the web looking at marquee artwork and not really finding something I like, so, whilst I'm busy doing everything from scratch, why not make my own marquee?
I've used GIMP to create a marquee that I like (above) by generating three layers of blue fire, downloading a free font from 1001 free fonts called DueDate and writing the word M.A.M.E. over the top - on reflection, I should have written gMAME (my friends call me G so everything I make or do is G - like my mobile phone (gPhone) my car (gMobile) - you get the idea?!)
I have an idea that I'd really like a large Ken and Ryu (from Street Fighter) on either side of my cabinet - I'll have to do some more surfing or see if I can commission someone to draw this on the cheap. If not, I'll have to do a collage of popular arcade images, characters, logos, etc. or do some more interesting things with the blue fire I've become rather fond of.
Plan it! (at least roughly)
I like the kind of planning which is as detailed as possible to start with, but flexible enough to alter as the project goes along. Gather as many of your thoughts down on paper at the start enables you to have fewer "balls in the air"
The order of tasks:
Easy, no? (ahem!)
The order of tasks:
- build the carcase
- design the carcase
- buy/prep materials
- build the sides
- build the control panel
- as this is something I think it's relatively complex and time consuming I want this done first - the controller is already built (see my posting on Keyboard Hacking)
- buy the joysticks and buttons
- design and build the panel
- prep/paint/finish
- install harware
- test
- build the monitor panel
- buy/acquire the monitor
- design the panel to the size and shape of monitor
- cut/prep/paint panel
- install monitor into panel
- build the speaker panel
- buy/acquire speakers
- de-construct to raw components
- design panel to components
- construct and install components
- build the marquee
- design the marquee
- install marquee backlight into carcase
- install the marquee
- build the remaining panels
- deconstruct the PC into necessary components and install
- connect everything together
- attach all the remaining panels together
- test
- construct lower stand/housing
Easy, no? (ahem!)
What are your motivations?
Give me a moment to explain my motivations and priorities in the build. My priorities might not necessarily match yours - you might need to pick and choose and modify to your tastes accordingly.
Isn't that the point about building your own arcade machine as opposed to buying one from a builder?
My Priorities:
I think that's it for now - I'll try and revisit these motivations throughout the project to explain why I do things the way I do.
Isn't that the point about building your own arcade machine as opposed to buying one from a builder?
My Priorities:
- Size
- I need this machine to fix through doors that are just a touch wider than 2' (0.6m) wide, thus the maximum width of the cabinet is 2'
- I want to this machine to be semi-mobile - I'd love to drop the seats in the car and take it to friends/family parties
- I'm about 5'8" (1.72m) so I want this cabinet around the 6' (1.8m) mark - this I think is fairly authentic and will put the marquee slightly above my head, where I think it should be
- In order to keep this portable, but at 6' tall, I'm going to have to split the unit into an upper section with all the "stuff" in it, and a lower section essentially a stand - this also means I have an upper section that I can put on a bar or table at friend's houses
- I want to use a TFT monitor rather than a CRT, thus I can keep the depth (front to back) quite slim as I don't need masses of space for a CRT
- Budget
- Both I and the budget are tight - essentially there is no budget, so what I spend I have to take from elsewhere, thus any corners I can cut without compromising the unit will be good
- I need to find/reuse/reclaim as much as possible from old jobs, bits of stock I have in the corner of my workshop, gifts/donations from friends and family to keep the costs down
- Using Linux and open source software keeps the prices down too
- Materials
- I have an unhealthy attraction towards MDF (medium density fibreboard) - this is available from almost any timber supplier/home store/DIY centre and very reasonably priced - easy to paint/sand/cut/shape - available in almost any size, but critically, one of the more popular sizes is 8' (2.4m) by 4' (1.2m), thus when cut to 2' wide, I have 16' per sheet at a cost of roughly 11UKP (~$22) - very reasonable!
- I'm going to join boards together at 90 degree angles using some pine 1"sq (25mm sq) pine lengths - relatively expensive to buy, but I have a couple of 8' x 2" x 3" and the tools to cut these down into 6 x 8' lengths of 1" sq for approx £2.50 ($5)
- Perspex or similar acrylic sheets - luckily I've been able to get 3 fairly good sizes boards, at 1/4" thickness (6mm) for free
- Paint - I want a matt black finish, and again, I've been lucky to get a tin large enough for a couple of coats all over for free
- Screws - my local popular supplier (Screwfix) have drywall screws at £3 and change for 1000 - just the right length, and black to fit in nicely with the finished unit
- A small fluorescent tube light left over from a previous project will sit behind the marquee to give an authentic look to the cabinet
- Tools
- I'm very fortunate - I've gathered many tools together over the years that are more than useful for a job like this:
- 10" table saw - for cutting large boards accurately and for "ripping" by 2x3's into 1x1's
- router - flush trimming bits, straight cutting bits and rounding over bits are going to be very useful in trimming and decorating panel edges, cutting vent slots, etc.
- jigsaw - speaks for itself
- bench drill - for drilling holes for buttons, etc, accurately and easily and in bulk
- loads of clamps
- a quick change drill with counter sink/screwdriver attachment for my drill/driver
- I'm very fortunate - I've gathered many tools together over the years that are more than useful for a job like this:
- Technology
- I have a relatively new computer that I will gut for parts for the tech side of the project, the old keyboard (already mentioned in previous posts)
I think that's it for now - I'll try and revisit these motivations throughout the project to explain why I do things the way I do.
Keyboard Hacking!
As mentioned previously, I want to build my own keyboard interface. I think I'm a fairly bright guy, so I should be able to figure out how a keyboard works and how to hack (the old version of the word, as in "opening something up, figuring out how it works, and possibly modifying it to do something different/better") one, right?
This ended up being not as difficult as I thought it might be. A warning for the faint-hearted though - the pictures in the blog show that the final product is by no means pretty - I'm sure with funds, time, effort the resultant object could be significantly prettier, but that isn't a priority for me - if it is for you, check out the I-PAC from Ultimarc.
I've used my own terminology in the process that I know is wrong, but it makes sense to me, and maybe it'll make sense to you.
The process:
1. get an old/unused keyboard and open in up
I used an unused PS2 keyboard - I think this process would work fine for USB but I've never opened a USB keyboard so I'm not sure.
2. de-construct the keyboard paying careful attention to what goes where

In the top right hand corner (looking at the "opened" keyboard the way you would use it, if it were closed) is the brains circuit board - notice the little metallic "tabs" in a line across the bottom - these connect to the "nervous system"
3. seperate the "brains" from the "nervous system"
The nervous system is the term I use to describe the two thin, plastic sheets with circuits drawn on them - we'll call these the "membranes".
The two sheets are stamped "upper"
and "lower"
- the upper sheet connects to the "brain" by contact with 8 of the 26 metallic tabs
, the lower sheet has contacts that rest on metallic tabs 9 through 26
- there is a layer in between to separate the upper from the lower with holes under each of the keys on the keyboard
, effectively masking out the tracks except for the holes where the upper track can be pushed down to make contact with the lower track.
EUREKA!
It's at this point that I realise for the first time in my life how a keyboard works (call me naive if you like, but I've never had need to know before)
When you press a key, the upper track and lower track connect. Let's take my RETURN key - on the upper layer, if I trace all the way back to the contact points, the upper track for the RETURN key connects to the "brain" at tab 4, and the lower track connects at tab 14. Thus, when I press RETURN, connections 4 and 14 are joined - this is read by the brain and the "RETURN key signal" is sent by the keyboard's "brain" to the PC.
4. figure out which "nerve combination" sends what keypress to the PC
I have good eyesight (I don't wear glasses) and was always good at the "first out which string is connected to the balloon" drawings in kids books. This skill, I hadn't realised until now, is a critical life skill if you want to trace keyboard "nerves" back to the brain.
I set the wife up with a bottle of Merlot and a "chick flick" and I sat next to her on the sofa for 2 hours, with the keyboard nervous system on one knee, and an A4 pad on the other, and traced the combinations for each and every key on my board. I started out with the intention of tracing only the keys I needed for 2 players worth, and some interface controls, but at some it either became easier to do them all, or my notorious OCD kicked in.
I found the best method to do this was to draw the keyboard keys onto each "membrane", then process them a layer at a time. I took the upper layer, started with connection tab 1, then traced tab one writing down every key on the tab 1 path. When finished, I started with tab 2, and so on until the top layer was finished at tab 8.
I repeated this for the lower layer, which started at tab 9 through to 26.
5. map out all the "nerve combinations" (or just the ones you need)
At this point, I have 2 sheets of A4 - one with upper layer listings
, and one with lower
. I took a third sheet of A4, wrote out all the keys in some order that made sense to me (left to right, top to bottom) then created two columns - I went through the upper layer listings jotting the tab number into the first column for each key, then the lower layer in the second column. I now have a sheet that tells me every nerve combination for every key on my keyboard
. I can now dispose of the membranes (actually I mounted them on the wall near my PC as some form of trophy, testifying to the effort required to trace these combinations)
5.5 the big test
Full of excitement, I grab a paper-clip, stretch it out, plug the remaining "brain" into my laptop, and hesitantly try connecting "tabs" together to send key presses to the computer. The first one works exactly as I thought it would, and I could not contain a small "woo-hoo!" 5 minutes later and I've spelled my name in a text editor using my paper-clip - I feel like I've just built a rocket ship!
6. replace the "nerves" with screw connector blocks
Now this is one of those points in this process where I'll point out things I would do differently second time around - i strip both ends from a series of 26, 6 inch "bell wire" (anything fairly small diameter, up to 1mm per wire) and start to solder the wires onto the metallic tabs.
DO THIS DIFFERENTLY - the wires liked to move around a lot as they were only resting on top of the tabs as I soldered. I have a 1mm drill bit and a small, rotary drill tool used for engraving, etc. (like a Dremel) and I would have drilled little holes through each of the tabs, to make soldering the wires a lot(!) easier.
I used a hot glue gun and blurbed all over the connections to make sure they stayed in place and as insulation - seemed like a good idea at the time, but not pretty to look at
.
DO THIS DIFFERENTLY - the PS2 wire into the "brain" was very secure whilst in the keyboard housing, but very fragile now out of the housing - use some insulation tape or hot glue to prevent accidentally twisting or pulling this loose (like I did, and had to trim and re-solder these wires back into place
.
At the other end of the 26 wires, screw them into screw-block connectors and you have your I-PAC equivalent board, ready to go (looks nowhere near as nice as the I-PAC, but YOU built it, and that's got to count for something?)
I mounted mine on a firm piece or corrugated card (again, liberal use of the glue gun) and trimmed - isn't she a beauty?
This ended up being not as difficult as I thought it might be. A warning for the faint-hearted though - the pictures in the blog show that the final product is by no means pretty - I'm sure with funds, time, effort the resultant object could be significantly prettier, but that isn't a priority for me - if it is for you, check out the I-PAC from Ultimarc.
I've used my own terminology in the process that I know is wrong, but it makes sense to me, and maybe it'll make sense to you.
The process:
1. get an old/unused keyboard and open in up
I used an unused PS2 keyboard - I think this process would work fine for USB but I've never opened a USB keyboard so I'm not sure.
2. de-construct the keyboard paying careful attention to what goes where
In the top right hand corner (looking at the "opened" keyboard the way you would use it, if it were closed) is the brains circuit board - notice the little metallic "tabs" in a line across the bottom - these connect to the "nervous system"
3. seperate the "brains" from the "nervous system"
The nervous system is the term I use to describe the two thin, plastic sheets with circuits drawn on them - we'll call these the "membranes".
The two sheets are stamped "upper"
EUREKA!
It's at this point that I realise for the first time in my life how a keyboard works (call me naive if you like, but I've never had need to know before)
When you press a key, the upper track and lower track connect. Let's take my RETURN key - on the upper layer, if I trace all the way back to the contact points, the upper track for the RETURN key connects to the "brain" at tab 4, and the lower track connects at tab 14. Thus, when I press RETURN, connections 4 and 14 are joined - this is read by the brain and the "RETURN key signal" is sent by the keyboard's "brain" to the PC.
4. figure out which "nerve combination" sends what keypress to the PC
I have good eyesight (I don't wear glasses) and was always good at the "first out which string is connected to the balloon" drawings in kids books. This skill, I hadn't realised until now, is a critical life skill if you want to trace keyboard "nerves" back to the brain.
I set the wife up with a bottle of Merlot and a "chick flick" and I sat next to her on the sofa for 2 hours, with the keyboard nervous system on one knee, and an A4 pad on the other, and traced the combinations for each and every key on my board. I started out with the intention of tracing only the keys I needed for 2 players worth, and some interface controls, but at some it either became easier to do them all, or my notorious OCD kicked in.
I found the best method to do this was to draw the keyboard keys onto each "membrane", then process them a layer at a time. I took the upper layer, started with connection tab 1, then traced tab one writing down every key on the tab 1 path. When finished, I started with tab 2, and so on until the top layer was finished at tab 8.
I repeated this for the lower layer, which started at tab 9 through to 26.
5. map out all the "nerve combinations" (or just the ones you need)
At this point, I have 2 sheets of A4 - one with upper layer listings
5.5 the big test
Full of excitement, I grab a paper-clip, stretch it out, plug the remaining "brain" into my laptop, and hesitantly try connecting "tabs" together to send key presses to the computer. The first one works exactly as I thought it would, and I could not contain a small "woo-hoo!" 5 minutes later and I've spelled my name in a text editor using my paper-clip - I feel like I've just built a rocket ship!
6. replace the "nerves" with screw connector blocks
Now this is one of those points in this process where I'll point out things I would do differently second time around - i strip both ends from a series of 26, 6 inch "bell wire" (anything fairly small diameter, up to 1mm per wire) and start to solder the wires onto the metallic tabs.
DO THIS DIFFERENTLY - the wires liked to move around a lot as they were only resting on top of the tabs as I soldered. I have a 1mm drill bit and a small, rotary drill tool used for engraving, etc. (like a Dremel) and I would have drilled little holes through each of the tabs, to make soldering the wires a lot(!) easier.
I used a hot glue gun and blurbed all over the connections to make sure they stayed in place and as insulation - seemed like a good idea at the time, but not pretty to look at
DO THIS DIFFERENTLY - the PS2 wire into the "brain" was very secure whilst in the keyboard housing, but very fragile now out of the housing - use some insulation tape or hot glue to prevent accidentally twisting or pulling this loose (like I did, and had to trim and re-solder these wires back into place
At the other end of the 26 wires, screw them into screw-block connectors and you have your I-PAC equivalent board, ready to go (looks nowhere near as nice as the I-PAC, but YOU built it, and that's got to count for something?)
I mounted mine on a firm piece or corrugated card (again, liberal use of the glue gun) and trimmed - isn't she a beauty?
Subscribe to:
Posts (Atom)