Neo Geo Arcade Cabinet
From falz.net
I have had a vector Starwars Arcade Cabinet for quite some time. I also picked up a Karate Champ Arcade Cabinet years ago, but sold it to Aftershock Retrogames a few years ago to make room for something that has more variety.
Components
Gathered slowly over the course of a few years. Picked up steam later in 2017 once I got the monitor. Major components listed below, I spent ~$500 or so total.
What | Cost | Notes |
---|---|---|
Cabinet | $0 | Free from a friend who said "Hey do you want an NBA JAM cabinet?" It wasn't one, it was really a gambling machine with a secret switch to toggle between some cherry master board and Rim Rockin Basketball. Cabinet had many nice features - new/clean power supply, |
Controls | $15 | some guy on craigslist was selling a bunch of HAPP joysticks and buttons |
27" CRT Monitor | $75 | Purchased from a Facebook arcade group that's in my region. Originally from a TechnoMotion DDR clone. Bought it thinking it was CGA (240p) but it's VGA (480p) which made the design moderately complex. Tube says Samsung A68QCP891x002. Chassis says "Da San" but no part number. |
Neo Geo MV-1C + 161 in 1 cart | $150 | ebay. Had a terrible soldering job and was flakey. Carefully de-soldered wires and instead used a NeoBiosMasta ($13) to mount the bios. |
GBS8220 Upscaler | Came with Neo Geo board. Cheap chinese board, works out of the box but picture is poor. | |
Arduino Uno | $20 | This is used to speak i2c to control the GBS8200 to make video quality higher by having cleaner scaling |
Marquee | $33 | purchased from GameOnGrafx after seeing a few people recommended it. Artwork is from Handré de Jager. It's absurd and I love it. Since this was going to be a mame cab and Neo Geo, went with the 4 slot style template and customized it after getting Handre's blessing. |
pi2jamma | €109 | JAMMA adapter for Rpi that handles video output to 240p via GPIO. This may not have been the right decision with my 480p monitor |
Raspberry Pi 3 Model B | $35 | Model 3 is the first model with enough GPIO pins to allow use of the VGA666 method for video |
Extron SW2 VGA DA2 | $20 | This is to switch between video/audio output of pi2jamma and GBS8200 |
DROK TDA7297 | $9 | 15w stereo audio amp. As the reviews say, it works really really well. Only annoyance is its blue LED is far too bright. I put some nail polish over it to dim it. Hopefully that doesn't start a fire. |
JAMMA Harness | $12 | bought from ebay seller '4partyfun'. Seems to work fine, they seem to sell a lot of them. |
Lighting | $25 | I used LED USB powered light strips. Two light the bezel, a 3rd is powered from a USB hub with power buttons inside the cabinet. |
Ground Loop Noise Isolator | $5 | The Pi causes noises to come from the speakers when its reading from flash. This seemed to help. |
Screw Terminals | $11 | Power distribution |
Display
I know very little about arcade CRT's, other than they're RGB and you're supposed to be quite careful with the high voltage. I kept the chassis attached at all and simply took my time.
The CRT came out of a Techno Motion cabinet, which is a Korean DDR knock off. The owner wanted to upgrade to a larger LCD monitor. I could not find any schematics online for this chassis or tube. Techno Motion was made by F2 SYSTEM who is still in business today. The only trace I could find of it on their website was here. I emailed them asking for schematics, they responding asking for the serial # of the cabinet, which i did not have. I tried to explain myself differently in another email, but the response was almost the same, asking for serial number. Definitely a Korean-English language barrier, and I do not speak Korean.
Since 480p VGA signal displays properly and looks fairly sharp, I think that is its native resolution. The majority of the time on this project is related to its display, and hackery to get 240p to display on it. Had I just gotten a CGA 240p monitor, I wouldn't have the GBS8200 or Extron switchbox at all. I had my eye out for a large (at least 25") CGA CRT for a few years but had no luck. I do not like the look of an LCD so I did not consider that as an option.
After asking around on KLOV forums, I found out that there are some tri sync monitors that will indeed accept 240p @60hz, so I was optimistic.
I hacked together a ghetto adapter to output video to a VGA style DE-15 connector and sent it 240p @60hz w Hsync and tied Vsync together, but it was not happy. I bought a few EL4583CS sync splitters to attempt to properly split H and V out, but never got around to testing it. I may re-visit that one day. Based on how scrambled the video was, I do not think it will work.
I have a GBS8200 that came with my Neo Geo board, it works out of the box to convert 240p to 480p. Unfortunately the image is slightly antialiased so the pixels are ever so blurry. Fortunately several folks at the Shmups forums figured out how to control this device's True View 5725 chipset via i2c bus to fine tune the display settings.
The initial project from doolink uses a raspberry pi. Several folks altered things a bit to use an Arduino for control, which is cheaper and faster. I ended up using rama's Arduino code, which is still under active development. This code is geared more towards PAL/NTSC video upscaling, I hacked away at it always expect 240p input and always output at 480p, using the presets that doolink created.
Note that there is a 240p @ 120hz preset that is interesting. This will allow me to display 240p video. It does work, but I could not properly adjust the monitor's controls to have the screen fit properly horizontally. I may revisit this one day and install a toggle switch that tells the Arduino to toggle between 480p@60hz and 240p@120hz.
The cabinet has an insert that's more or less a box that's made to mount a display in. I more or less did my best and ghetto rigged it in place by drilling a few holes and getting long bolts. I did look around on the internet quite a bit for a 27" CRT chassis but couldn't quite find what I was looking for at a reasonable price. Neogeo-monitor-chassis-3.jpg
- TODO: Add a bezel. I think this one should work.
Controls
The panel was already bright red which matches the Neo Geo theme. It originally had 2 buttons per player, as well as two buttons on the bottom left which were wired to p1's buttons. I believe this was used as a convenience when the machine was switched to gambling mode. These two holes were re-purposed those as coin buttons.
I used slagcoin's templates to find a layout. It has proper PDF's that can be printed and says which layout came from which type of game.
I chose something that seemed neo-geo-ish that also could somewhat overlap with the existing two buttons. I really didn't realize that I probably don't need more than four buttons, so I later got some blank plugs for the extra holes.
The actual drilling was done with a 1 1/8" Forstner Drill bit that I got from a local hardware store. This was $15 or so.
I may shift all buttons to the left at some point so B1 is lower left. I may also get the correct red/yellow/green/blue coloured buttons at some point.
Sound
I opted to use line level output from both the Raspberry Pi and MV-1C. The MV-1C needs a mod to get stereo audio out as it only has mono on the JAMMA connector.
The Extron SW2 VGA DA2 switches line level audio via 3.5mm jacks per the diagram. This switch has both an auto mode and manual mode. The auto mode works just fine by sensing video input.
Line level audio then outputs to a DROK TDA7297 audio amp that works incredibly well. Unfortunately it has an obnoxiously bright blue LED on it. I dimmed it a bit by putting some nail polish on it.
The Pi is a bit electronically noisy so a Ground Loop Noise Isolator was added which helps.
Guts
This cabinet is designed differently than original arcade machines. The control panel is hinged and can fold up with mechanisms to lock it in to place. There's no need to do so if it's not in a commercial environment. The hinge for the control panel is connected to a large wooden board which slides into the machine at one of two angles. This angle changes the angle of the control panel.
All components are mounted to this board with the exception of the power supply. A 9 pin Molex connector that came out of the original cabinet wiring was used to connect them, which allows one to disconnect the panel. Not all 9 pins were populated, so I used two for ground, two for +5v (JAMMA boards), one for +12v (Audio amp + Extron switch). I chose to not wire -5v.
Software
Neo Geo
MV-1C with 161 in 1 cart. Apparently a few games have some technical issues with sound or video but I've never noticed any issues. This Neo Geo forums thread lists what games are missing as well as differences between this and the other multicarts. The main games missing that I'd like to have are Windjammers, Waku Waku 7, and League Bowling.
I stumbled across Someone's Google Sheet that categorizes them. I made my own google sheet using that as a source. It's intending for printing on duplexed paper so it's easier to find games by name or type.
Universe BIOS has cheat codes for games
Raspberry Pi
The pi2jamma has a linux distribution called ReGamebox which is plug and play. It seemed excessively kludged together to me so I explored other options.
The next option I looked at was ARpiCADE which is the software distro for the RaspberryJAMMA, which pretty close to the same thing as pi2jamma. I was able to make some modifications to this software to get it to boot properly on the pi2jamma - disable the pikeyd driver and a few video changes to config.txt to tell it to use the vga666 driver.
/boot/config.txt:
############################## #this group is from arpicade disable_splash=1 disable_overscan=1 gpu_mem=256
############################## #this group is from regamebox disable_audio_dither=1 dtparam=audio=on enable_dpi_lcd=1 display_default_lcd=1
############################## # custom-ish stuff for this setup dtoverlay=vga666 #this should be 480p 4:3 dpi_group=2 dpi_mode=2
Both had many things in common- they were preconfigured with emulators and spots to throw roms, but if you wanted to change any of their default settings it was difficult to find out how to do so. As an example, ARpiCADE forces video resolution to 480i whenever going back to the front end (Attract Mode). Both had 5 or so versions of MAME on them, which is confusing. I had issues where sound was lagged about a half a second but no clue where to look - rpi's config? the emulators config? some other wrapper script?
I opted to get a fresh install of Rasbian and try it myself. All that was required for a basic setup was to configure the vga666 driver in config.txt and take the 'pikeyd165' binary and config file from ReGamebox and tell it to launch on boot.
AdvanceMAME seems best suited for my liking, and it has a Rasbian package. I used v3.6. I did a few additional tweaks to make the pi a bit quieter on boot - disable boot logs to console, disable the raspberry images, and a few other things.
I set it to auto login as the 'pi' user and modified its .bashrc file to launch AdvanceMENU upon login so it loads automatically. While there is some level of tweaking to be done with this, most things just worked- they keyboard mapping was already good, it seems to automatically look for ROMs on boot which is nice, and so on.
Advmame's main downside is that it uses MAME 0.106 romset which is from 2006. Games later than the mid to late 90s don't interest me, so this includes most things. There are a few oddballs that don't work with this (hello Fantasy Zone II DX!) so I may have to install an additional emulator for support at some point.
I did not install a complete MAME romset as that is too overwhelming. I add games as I think of them or as someone suggests something. Game Sack's Left in the Arcade episodes are also a fine source for some obscure stuff such as JJ Squakers.