Edward Massey - August 08, 1997
Welcome to MageX, the classic arcade game emulator for Windows 95 and Windows NT 4.0. The latest information regarding this project, and full source code, is always available from MageX Headquarters.
Ackowledgements
Known Limitations
Source Code
NOTE: To get the Williams games started, you'll need to use the advance and auto-up keys (6 and 5, respectively) to get past the bootup configuration screens. For example, in Defender, when the game settings menu is displayed, press 6, followed by 5 and 6 simultaneously. In Stargate and the others, press 6 when the game says "Factory Settings Restored". Once you get the games setup the way you like, choose File Save to save the game state. As long as "AutoLoad" is enabled (enabled by default), MageX will automatically load the game state.
For changes in the source, click here.
Since this is an emulation of the classic arcade games, the actual ROMs from these great machines are required for MageX to play them (just like a record). Please be aware that the ROMs are copyrighted material which can not be distributed with MageX and that I cannot provide them. Also, please do not ask me for ROMs.
MageX expects to find the ROMs in specific folders inside the current working folder (by default, it's the folder the magex executable file is in). If the system is unable to find a ROM, it'll tell you what it's looking for so you can infer what needs to be done. I've tried to stay consistant with MAME's ROM filenames.
Some of the games are capable of saving their state in a MGX file. By default, autoload is enabled. This means that MageX will attempt to load a saved game when it starts. In order for this to work, you must first save a game. You are allowed one game per game driver. Simply select, File Save and the current game state is saved (see the list above for the games that currently support this feature). If you want to restore from a saved game (MageX will do this automatically, if "autoload" is enabled), choose File Open.
Press "Alt+F" to invoke the File menu!
Press "Alt-F4" to close MageX (useful if menus are unavailable)
You'll need to get the sound samples from MAME if you want to hear sound for the Williams games. You'll need sound samples for Donkey Kong (effect*.sam, tune*.sam) and Space Invaders (*.raw).
Most of the controls are common among all the games. Here's the basics...
Controls how the game is paced. Basically, it wastes time until the next frame need to be drawn.
Displays every other frame.
Resets the machine.
Automatically loads the game state when the game begins.
Loads the last saved game for the current game driver.
Saves the current game.
486/100 or greater running Windows 95 or Windows NT 4.0. Most games run fine on a 486/66 (with VLB video). Gyruss, Time Pilot, and Ghosts 'n Goblins seem to be a bit more processor intensive (at the moment, optimizations are underway). Some games (Phoenix, Pleiades, Space Invaders?, ...) even run on a 486/33 with DirectX!
DirectX is recommended but not required. A decent video card (VLB or PCI) with fast video RAM is nice since it's really hard to push 3.84 MB/sec to your video card (256x256 resolution frames of animation at 60 Hz) through the ISA bus.
MageX was written to use DirectX if it is installed on your system. The best performance is obtained when DirectX is used. If it is not, or, if you prefer to run the games in a window, there is an option to allow this. My preference is to run full screen at either 400x300 or 320x240 with my ATI 3DXpression+.
DirectX is available for download from Microsoft at www.microsoft.com/directx.
Ghosts 'n Goblins, Defender, Stargate, Robotron, Joust, The End, Donkey Kong, Donkey Kong Jr., Pac Man (and variants), Ms. Pac Man, Time Pilot, Gyruss, Galaxian (and variants), Galaga, Scramble, Frogger, Space Invaders, Space Invaders Deluxe, Lunar Rescue, Phoenix, Pleaides, Mario Bros., Moon Patrol, Mr. Do!, Centipede
These are the bugs that I'm aware off (actually, there are I few more that I need to dig up from some e-mails, but these are the biggies).
Important Note: due to lack of time preparing the sources for release, source code for version 0.6 is not yet available. Please refer to the 0.5 source.
Keeping with the spirit of free software and the many benefits this concepts offers to both end users and developers, the complete source code to MageX is available. No Assembly Required... the project was written entirely in C++.
The project compiles with Microsoft Visual C++ 4.1. You may need to extract the source files into c:\dev\magex\src in order for VC++ to compile it properly. The project is divided into 3 DLLs and 1 executable. The DLLs provide CPU emulation. The main executable is divided into basically three sections (shell, drivers, and driver utilities).
I have built this project sucessfully with VC++ 5.0, but the code the compiler generated was actually slower (much to my surprise). I tried lots of options and did a fair amount of benchmarking to arrive at this conclusion. I would recommend sticking with VC++ 4.1.
New 6809 emulation code, based on the existing 6502 and Z80 models for programming an emulated CPU.
New class, CMagexGame, that forms the base class for the newer object based game drivers (see stargate.cpp for an example).
Although I am primarily responsible for MageX development, numerous individuals have been indirectly involved (whether they know it or not). I would like to express my thanks here (in no particular order).
Nicola Salmoria - created MAME... enough said.
Mirko Buffoni - provided many MAME drivers in the past and now coordinates the project.
Edward Kauffmann - created the super cool MageX logo
Peter Clare - provided support for Carnival
Marat Fayzullin, Marcel de Kogel, Alex Krasivsky - provided accurate Z80 and 6502 emulation source for the general public
Allard van der Bas - created the Repository
Robert Anschuetz - for his Arcade Emulator source, which started MageX going
Gary Shepherdson - Donkey Kong technical info
Ivan Mackintosh - Centipede hardware information, file menu code
Nicola Salmoria - lots of hardware info was adopted from MAME
Richard Davies - Phoenix emulator source code helped me with Phoenix
Ron Fries - Pokey sound emulation and Donkey Kong sound samples and algorithm
Michael Strutt - space invaders emu source code
Ville Laitinen - Congo Bongo hardware info (from Mame)
Mirko Buffoni - Zaxxon and Mario Bros. hardware info (from MAME)
Marc Lafontaine, Steven Hugg, Mirko Buffoni - excellent work on the Williams games in MAME (my favorites!)
Ville Hallik - the sound chip (8910) code from the MSX emulator was very valuable in creating 8910 emulation in MageX. Thanks also to Mike Cuddy for his enhancements towards multi 8910 support.
I apologize to anyone I may have neglected to mention.
Many thanks to everyone who's contributed to making the Repository great.
Many thanks to all the contributors to MAME. This is a wonderful project and has openned up the oppurtunity for me to support games I've dreamed of adding thanks to the availability of the source code.
This project is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU Library General Public License as published by the Free Software Foundation.
This project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
To obtain a copy of the GNU Library General Public License, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Any permitted reproduction of these routines, in whole or in part, must bear this legend.
Copyright © 1997 Edward Massey. All rights reserved.
Thanks to Edward Kauffmann for the logo.
Send comments to edward@greenvillenc.com