__________ / /\ __ _____ / ____/ \ / \ /\ \ / /___ \ \ ___/ \___ _/__\ \____ / /\ \ / / \ /\ \ / / \_\/ / \/ \ \ / ____/ \ /____ ____\ \____ ___\ / /____\___ / \ / \ / / /\ \ / / /\ \_/ \_/\ / / \ \/ / / \ /____________\ \/___/ \_____\ /______________/ \ \ / \ / / \ \ / \ / \ / / \ \ / \________/ \/_____/ \______________\/ __ __ \ \\ / // ___ ___ ___ by James Sutherland \ \/ // /_ | / \ |_ \ Copyright 1997 \ // _| |_ | O | / /_ \// |_____| o \___/ |_____| INTRODUCTION ------------ E++ is a program which can emulate the hardware of other computer systems. It is easily extendible and designed to be very portable between different platforms. E++ is now full release software. This means that the functionality is complete, and there are no serious (known) bugs left. Note that this doesn't mean that new features won't be added, just that new stuff shouldn't start breaking old stuff. The front end is still alpha, and is non-functional (looks pretty, though). RUNNING E++ ----------- NOTE: YOU MUST UNZIP THE E++ ARCHIVE WITH THE -d OPTION, SO THAT THE DIRECTORY STRUCTURE REMAINS INTACT! To launch E++, simply run the executable from a DOS prompt, with the following format: EPP [options] [machine] [machine options] The options currently available are: -nojoy Tell EPP not to use the PC joystick. Instead the cursor keys and ctrl will act as a joystick. -synch Synchronize the screen update with the vertical refresh of your monitor. This is much smoother, but won't degrade nicely, and is a bit too fast. The machines available are: invaders Space Invaders arcade machine spectrum Sinclair ZX Spectrum phoenix Phoenix arcade machine pleiads Pleiads arcade machine lrescue Lunar Rescue arcade machine centipede Centipede arcade machine If you don't specify a machine, then the emulator will start up the front end, which allows you to select the emulator you want (NOT YET FUNCTIONAL!). You can exit the emulator with ESC. Note that you MUST have VESA 2 support for your graphics card. If your card doesn't support VESA 2 natively, you might find a driver on the disks which came with the card, on the manufacturer's web site, the chipset manufacturer's web site or at Scitech's site (www.scitech.com). Your VESA 2 support must include Linear Framebuffer mode. I use S3VBE20, which supports most S3-based cards. E++ can now run without detecting a sound card. The first time you start it, the emulator will ask you to select a sound card. This setting will be saved and you won't be asked again (if you need to change your selection, then delete the audio.cfg file). If you get problems running the emulator, then check the Epplog.txt file for error messages. If you still can't solve the problem, then feel free to contact me (see below). Also, check the release notes (history.txt) since they contain additional information which might be relevant. KEYS ---- You can use the following keys in all emulations: F1: Reset the emulated system F11: Toggle a framerate display on and off. Note that you might see the framerate flicker between the correct value and one below it. This is just a slight inaccuracy in the timing, and nothing to worry about. You may also find that the framerate display doesn't clear straight away (eg on the Spectrum, it remains until the border changes). MACHINE NOTES ------------- Spectrum ======== You can optionally supply a snapshot file (.SNA format) on the command line, which the emulator will load on startup (eg: EPP spectrum jetset.sna). The keys are mapped as you would expect, with left and right shift as Caps- and Symbol-shift. Additionally, you can use a Joystick (Kempston emulation). Invaders ======== Use joystick left, right and fire. 3 inserts a coin and 1 and 2 are the start buttons. You have to get the Invaders ROMs from somewhere (read them from your Space Invaders board). The files should be named invaders.e - h and go in the Roms directory. Please don't ask me for these files. You need sound samples to run the game (it won't work without them). The files are included with the emulator, and are standard wav files (despite the names). I'm not sure about the overlays, but they look about right. Phoenix ======= Usual controls. You need the Phoenix ROMs. These go in the Roms directory, and should be named phoenix.??, where ?? are numbers. There is no sound support yet, but otherwise it should be 100%. Pleiads ======= The ROMs names are pleiades.?? (note the e). This is maintain compatibility with MAME. Colours are almost certainly wrong. If you have any screenshots, or can get the colour PROMs for me, then please contact me. Lunar Rescue ============ ROMs are lrescue.1 - lrescue.6. The overlays should be correct (I trusted MAME for these). Centipede ========= ROMs are centipede.???, where ??? is 211, 212 and 307-310. The graphics library chops off the bottom 8 pixels of the screen, but otherwise should be 100% (can someone verify colours, though?). You can use either the joystick or mouse to control Centipede - both are active at the same time. Could someone check the speed which you move when using the mouse, though, because you can't move as fast as with the joystick - is this correct? BUGS ---- This is what I know about, please report any others. - Some (Spectrum) games may not run. I know that at least one function of the Speccy hardware isn't supported, and this may cause problems. The only game I have problems with is Commando, but your mileage may vary. Let me know. - The current DOS graphics library mean that std error output is not displayed. You can check the log file for most errors, now, though. - I need to sort out the UFO sample for the Invaders game class. You can tell the problem under Lunar Rescue. TODO ---- - Fix the above. - I'm still not happy with the speed of the Speccy when a lot is going on at one on the screen. I need to change the way the dirty buffer works for this. - Start emulating more platforms. - Add 6809 and 68000 cores. - Port to X11 and/or SVGAlib. - Optimize, optimize, optimize. - Clean up the source to a point where it's fit for release. - Handle errors in a nicer way, via an exception hierarchy. (You might even be able to see them then!). - Add CPU tracing. - Add assembler cores for x86. Maybe. - Sort out ROM handling (maybe use a librarian-type thing). - Stop trying to write C++ like it's Java. CONCEPT ------- This project started because I wanted to start writing arcade game emulators, but didn't like the way MAME does it (it's probably my problem rather that MAME, but I've used Object Oriented languages so much recently that I have difficulty thinking procedurally). The emulator uses OO extensively (and exclusively). A hierarchy of classes define processors, video hardware and audio hardware as well as abstracting the hardware of the host machine, so that porting is easy. FEEDBACK -------- I could really use reports on how well it runs under different setups, especially NT (I suspect it might have problems) and straight DOS, with different memory managers. Please enclose the contents of the log file with any problem reports. You can contact me at: james@guybrush.demon.co.uk CREDITS AND THANKS ------------------ Thanks must go to the following: Those on the MUL8R list, and those who contributed to MAME, without whose help, I wouldn't have got as far as I have. Particularly Nicola Salmoria, Jeff Mitchell and Chris Hardy for their help with Phoenix and Centipede. Neil Beresford for help which is to come. We may get a good graphics library yet... Marat Fayzullin for his CPU cores. Ron Fries for his Pokey emulator, which worked first time when I added it to Centipede.