mapleman's PC Arcade Notes

The following text is a bit of how-to experience I have acquired from building several MAME PC Arcades:
Gigabyte Motherboard (Several Models) 7ZXE, 7VM266

  • 256 MB of RAM PC133 / PC2100
  • 40 Gigabyte Seagate / Maxtor IDE Hard Drives
  • ATI Rage 128 AGP Video Card / NVIDIA Geforce / S3 Virge

    I also have a few other mixed boxes which require a LOT more work, hardly worth the money savings.

    On the Operating System deparment there are, in my view, 2 choices: Linux and DOS. Both have their pros and cons.
    Linux

    Pros:

    Faster game loading
    Broader sound support
    SMP support
    Open source
    A lot of room for optimization
    Actively developed

    Cons:

    Complicated optimizations
    Relatively slower boot time
    Programming on new kernels (2.6) requires recompilation

    DOS

    Pros:

    It boots FAST
    Configuration is simple

    Cons:

    Few sound cards to choose from
    Game loading is a bit slower

    Software used

    For both installations, Linux and DOS I use AdvanceMAME and AdvanceMENU from Advance Projects. Why? Well lots of reasons. I use actual arcade monitors, and they function at certain frequencies which are not attainable unless they are reprogrammed (which is what AdvanceMAME/MENU) do.
    Hardware used

    All Arcades run regular Arcade monitors. Most relatively new Arcade Boxes come with a JAMMA connector, this is where the JPAC comes into play. This is the interface between your monitor and your controls.

    How it all fits (DOS)

    Sound

    So what hardware is supported? The sound cards that are available for DOS are whichever are made for DOS and have drivers for it. Which btw aren't as many as one would desire or imagine. If it's ISA it will work. If it's PCI, then thats another story. You need to make sure there are drivers for it. I have used the on-board in some VIA motherboards. However, these motherboards came with legacy support. Most, if not all, new models DO NOT have legacy support, so you will need to get a sound card separately.

    I have tried:
    VT82C686B

    This on-board sound simply rocks. You can configure the IRQ from the BIOS by enabling Legacy Support in the Gigabyte GA-7ZXE. Sound configuration requires a simple [auto].

    CMI8738

    Pay attention to the number it is 8378. This one works I don't know about any other numbering, specially those new CMIs that come in the SIS(7012) chipsets will not work. Now configuring this card can be tricky. You gotta juggle with the BIOS settings until it gets assigned on IRQ 5. This card will definately not work on any other IRQ. Don't ask me why, I am just clueless. Sound configuration requires to be [allegro/sbpro] not [auto].

    ENSONIQ PCI 128

    Great card, configuration with the Sound Blaster drivers is hassle free. Sound configuration requires a simple [auto].

    Hard Drives

    Well it's all fair game here, but you probably want to get atleast ATA 100/133 7200 RPM. The catch here is that you need special UDMA drivers. Should probably check your motherboard has an ATA controller supported by them.

    Video Cards

    ATI Rage 128

    The Rage 128 engine is the best for the job hands down. Never any trouble with this card and requires no tweaking at all. Can generate every mode required from my experience.

    NVIDIA Geforce series / TNT2

    Now here are some mixed experiences, one of the Geforce cards I got did work with no tweaking, the other however required to completely hand tweaked game by game. Could just be bad luck. The TNT2 Model 64 I have didn't require additional tweaking.

    S3 VirgeDX

    Alright, it is a 4 MB PCI card. It works. Requires some tweaking. It's a bit slow though.

    Programming Tool

    The programming tool in DOS works without issues and it is available from the Ultimarc

    How it all fits (Linux)

    Of Linux in general

    This is not a linux tutorial, so I will keep it as short as possible. I have only tried the SVGALib video drivers, the cards I have tried which are the ones mentioned above work without issues. The drivers for ATA seem to work faster here. You will probably have to find the right ATA module for your hardware.

    The setup in linux differs, it requires the development version of svgalib. Latest version 1.9.18. Before compiling it you gotta use the patches from AdvanceMAME in the contrib directory of the distribution. Compile svgalib and the helper module and insmod it.

    For AdvanceMAME/MENU you can use the configure scripts, just make sure you have installed svgalib first otherwise the svgalib support wont be compiled in.

    If you want to make AdvanceMENU to be loaded upon boot you gotta do the following:

    Make a little C program for instance execute_mame.c:

    1. #include <stdio.h>
    2. #include <unistd.h>
    3.  
    4.  
    5. int main(int argc, char **argv, char **env)
    6. {
    7. execlp("login","login", "-f", "root", 0);
    8. }

    Compile your program with gcc -o execute_mame execute_mame.c.

    Now change your inittab like this:

    1:2345:respawn:/sbin/getty -n -l /root/execute_mame 38400 tty1

    That will make sure its loaded upon boot. Do make sure you have your svgalib_helper module added in the loaded modules upon boot.

    Now the programmer. There is an ipacutil for linux available. It should work flawlessly on 2.4.x kernel versions. However for the 2.6.x branch you require a different approach. First of all you gotta edit the ipacutil makefile to compile for ARCH_OTHER which means you gotta get rid of the ARCH_386 define. After that you gotta patch your kernel with kb.patch, then go into the kernel setup and configure support for IPAC under Device Drivers->Character Devices and then recompile.