Category: MAME'd Millipede :: 4. Software
My system is based on the Linux OS, an open-source UNIX-like operating system that is freely available.
Linux is pretty fantastic to put it lightly. It's tremendously powerful, quite efficient and runs on more hardware than you can imagine. It's also the operating system I use more than any other in my work as a network administrator and programmer for Sweet Briar College. I have a tremendous dedication to this OS, so it's a matter of both practicality and pride for me to use it in this project.
The practicality and pride, though, were a tad challeneged for a while when I was getting the video portion of the project functional. I was getting system lockups when trying to generate certain resolutions on the Rage card in the machine as well as periodic lockups between various stages of resolution switching in the emulator.
For comparison purposes, I installed Windows 95/DOS on a separate hard drive in the system and set the Grub bootloader in Linux to dual-boot. I was pleased to get away from the problems but more than a bit irked at the concept of running this under DOS (which, aside from being very inflexible, loads VERY slowly compared to Linux for some reason despite using SMARTDRV).
As the project progressed, though, I encountered some problems in DOS as well that had me digging around in the AdvanceMAME distribution directories a bit. During that process I found some SVGALib patches I had never noticed that sounded very closely related to the problems I was experiencing. Back to Linux, patch patch, compile compile... boom - problems solved. You have just got to love open source software. :)
The ins and outs of Linux and extolling all its virtues are, as much as I'd love to do it, beyond the scope of this website. I will focus now, though, on some of the specifics to my configuration for others already experienced with Linux or considering its use for such a project.
My particular system is built on RedHat 9 (shrike) since I had recently downloaded the ISO images for another reason. It is a fairly minimal build which I have further stripped down (though it is definitely larger than the bare necessitities).
Beyond the original install, I have compiled a custom 2.4.20 kernel with specific modules for the hardware I need as opposed to the very module-happy monolithic kernel provided (for obvious reasons) by RedHat. Modules include things like Rage framebuffer drivers (which I'm not using) and both motherboard and SoundBlaster audio modules. I've also tossed in various network protocols and things I might have a use for from time to time since I keep this sytem online as a spare server.
For the emulation layer I'm using SVGALib version 1.9.17 with the helper kernel module and AdvanceMAME 0.68 (haven't taken the time to move to 0.69 of MAME or AdvanceMAME yet since I've not had a compelling need).
I have the emulation system running as root mostly because I use init (av:3:respawn:/bin/sh -c advmenu added to /etc/inittab) to fire up AdvanceMenu and keep it running even upon exit. I make a quick call to to "/usr/bin/aumix -w 100" in /etc/rc.d/rc3.d/S99local to crank up the volume and use the cabinet volume knob for relative adjustments.