M.E.S.S. - Multi-Emulator Super System Copyright (C) 1998 by the MESS team Please note that many people helped with this project, either directly or by releasing source code which was used to write the drivers. We are not trying to appropriate merit which isn't ours. See the acknowledgemnts section for a list of contributors, however please note that the list is largely incomplete. See also the CREDITS section in the emulator to see the people who contributed to a specific driver. Again, that list might be incomplete. We apologize in advance for any omission. All trademarks cited in this document are property of their respective owners. Usage and Distribution Licence ------------------------------ I. Purpose ---------- MESS is strictly a no profit project. Its main purpose is to be a reference to the inner workings of the many existing console and computer systems. This is done for educational purposes and to preserve them from the oblivion they would sink into when the hardware they run on will stop working. Of course to preserve the systems you must also be able to actually use them; you can see that as a nice side effect. It is not our intention to infringe any copyrights or patents (pending or active) on the original games. All of the source code is either our own or freely available. To work, the emulator often requires ROMs, cartridges, disk images, and/or tape images for the original systems. No portion of the code of the original systems is included in the executable. II. Cost -------- MESS is free. The source code is free. Selling it is not allowed. Charging for the use of MESS is not allowed. III. Images ----------- You are not allowed to distribute MESS and copyrighted images (including but not limited to ROMs, cartridge images, disk images, and cassette images) on the same physical medium. You are allowed to make them available for download on the same web site, but only if you warn users about the copyright status of the images and the legal issues involved. You are NOT allowed to make MESS available for download together with one giant big file containing any or all of the supported images, or any files containing multiple non-associated images. You are not allowed to distribute MESS in any form if you sell, advertise or publicize illegal CD-ROMs or other media containing illegal images. Note that the restriction applies even if you don't directly make money out of that. The restriction of course does not apply if the CD-ROMs are published by the copyright owners. IV. Distribution Integrity -------------------------- MESS must be distributed only in the original archives. You are not allowed to distribute a modified version, nor to remove and/or add files to the archive. Adding one text file to advertise your web site is tolerated only if your site contributes original material to the emulation scene. V. Source Code Distribution --------------------------- If you distribute the binary, you should also distribute the source code. If you can't do that, you must provide a pointer to a place where the source can be obtained. VI. Reuse of Source Code ------------------------- This chapter might not apply to specific portions of MESS (e.g. CPU emulators) which bear different copyright notices. The source code cannot be used in a commercial product without a written authorization of the authors. Use in non commercial products is allowed and indeed encouraged; however if you use portions of the MESS source code in your program, you must make the full source code freely available as well. Derivative works are allowed (provided source code is available), but discouraged: MESS is a project continuously evolving, and you should, in your best interest, submit your contributions to the development team, so that they are integrated in the main distribution. Usage of the _information_ contained in the source code is free for any use. However, given the amount of time and energy it took to collect this information, we would appreciate if you made the additional information you might have freely available as well. How to Contact Us ----------------- Here are some of the people contributing to MESS. If you have comments, suggestions or bug reports about an existing driver, check the driver's Credits section to find who has worked on it, and send comments to that person. If you are not sure who to contact, write to Brad (bradman@primenet.com) - he is the current coordinator of the MESS project. If you have comments specific to a given operating system, they should be sent to the respective port maintainer. You will find their e-mail address in the "readme.1st" file that comes with MESS. Brad Oliver bradman@primenet.com (current coordinator) Mike Balfour mab22@po.cwru.edu Richard Bannister titan@indigo.ie Juergen Buchmueller pullmoll@t-online.de Gareth Long gatch@elecslns.demon.co.uk Jeff Mitchell skeezix@skeleton.org DON'T SEND BINARY ATTACHMENTS WITHOUT ASKING FIRST, *ESPECIALLY* ROM IMAGES. THESE ARE NOT SUPPORT ADDRESSES. Support questions sent to these addresses *will* be ignored. Please understand that this is a *free* project, mostly targeted at experienced users. We don't have the resources to provide end user support. Basically, if you can't get the emulator to work, you are on your own. First of all, read the docs carefully. If you still can't find an answer to your question, try checking the beginner's sections that many emulation pages have, or ask on the appropriate Usenet newsgroups (e.g. comp.emulators.misc) or on the emulation message boards (e.g. http://www.escape.com/~ego/dave/console/). Also, DO NOT SEND REQUESTS FOR NEW SYSTEMS TO ADD, unless you have some original info on the hardware or, even better, have the technical expertise needed to help us. Please don't send us information widely available on the Internet - we are perfectly capable of finding it ourselves, thank you. Usage ----- Please see the "readme.1st" file that comes with the binary - it explains the options that are specific to each platform. Supported Systems ----------------- ColecoVision: ------------- Usage: arrow keys - 1p move ctrl, alt - 1p fire 1-0 - number keys on the Colecovision controller minus - '#' key on the Colecovision controller equals - '.' key on the Colecovision controller See the "Keyboard Setup" menu, accessible by hitting TAB, for more key mappings. Compatibility: To the best of my knowledge, this emulation should run any cartridge accurately. Notes: The Colecovision driver requires the presence of "COLECO.ROM". The driver will not function without this ROM. A real Colecovision also will not function without this ROM. Thanks: Special thanks to Marat Fayzullin for providing loads of Colecovision information through the ColEm source. Colour Genie: ------------- Usage: keyboard - relatively close to the original layout. Take a look into the "Options" menu, accessible by hitting TAB, and choose "Keyboard Setup" to find out more about the key mapping - changing is not yet supported. joystick - emulation of dual Colour Genie joysticks with keypads. cassette - emulation of virtual tapes supported. Use SYSTEM or CLOAD commands to read images. SYSTEM supports 6 character filenames, CLOAD loads a file named BASIC[N].CAS, where [N] is the character you supplied (e.g. CLOAD"M" loads BASICM.CAS) floppies - emulation of virtual floppy discs supported. Use CMD"I0" to "CMDI3" to get an inventory of drive 0 to 3, use CMD"S FILENAME/CMD" to start a binary executable or use LOAD"FILENAME/BAS" to load a basic program. Options: Under the "Options" menu, accessible by hitting TAB, there are three settings. "Floppy Disc Drives" - enable or disable floppy disc controller. "DOS ROM C000-DFFF" - enable 8K DOS ROM or make it RAM. "EXT ROM E000-EFFF" - enable 4K Extension ROM or make it RAM. Compatibility: The Colour Genie driver should run most of the known programs out there. It supports the Motorola 6845 CRT controller with text and graphics modes (LGR and FGR), the AY-3-8910 sound chip with three audio channels and noise and the WD 179x floppy disc controller with up to four virtual floppy disc drives contained in image files. Known issues: Startup with CAS or CMD images does not always work. Use the BASIC SYSTEM or CLOAD commands to read cassette image files, or use the Colour Genie DOS ROM with floppy disc images to run programs. The driver does not yet emulate the printer port mode for AY-3-8910. Right now it always uses the AY-3-8910 ports for joystick emulation. Notes: The Colour Genie driver requires the presence of the following images: CGENIE.ROM 16K Basic and BIOS. CGENIE1.FNT 8x8 default character set with graphics. To access the virtual floppy disc capabilities you need: CGDOS.ROM 8K Disk Operation System. And as an add-on "DOS Interface" you can use: NEWE000.ROM 4K Extension Genesis (MegaDrive in Japan/Europe): ------------------------------------ Usage: arrow keys - 1p move control, alt - 1p fire 1,2 - 1, 2 player select return - 1p start See the "Keyboard Setup" menu, accessible by hitting TAB, for more key mappings. Options: Under the "Options" menu, accessible by hitting TAB, you will find the following option: "Country" - this allows you to alter the 'flavour' of Genesis, to either European, Japanese or American. Many cartridges compare their country codes with that of the Genesis itself and may behave differently, or lock up if the two types do not match. 'Auto' attempts to auto-set the Genesis country code to the value the cartridge will appear to be checking for. This may not be 100% accurate, however. Compatibility: Most games tend to run fairly well. some with slight graphic glitches, incorrect colours part way down the screen or other b'zarre effects. Cartridges up to 32MBit (4MByte) are supported. The controller may not work well with some games. This will be resolved when I obtain more information. Similarly, 6-button joypads aren't emulated yet. Split screen effects and interlacing are not yet supported. Sprite/layer priority should be perfect. Sound is emulated at Z80 and PSG76489 level. There is no inbuilt YM2612 support, this will follow on soon using software FM synthesis. Notes: I still consider the Genesis driver extremely preliminary. I have a lot of further work to do before I consider it anywhere near complete. My initial goal is to make it as compatible as possible. Currently there is scope within the driver to handle split screen colour changes/any VDP effect, interlacing, without rewriting. The graphics renderer emulates VDP at scanline level, and does not use tile-based methods. Wanted: Any Sega Megadrive information! Information is extremely sparse; typically the same three-four documents, with parts incomplete, conflicting, and corrupted. Specifically, some of the finer points of DMA transfer, and access of the 68K memory map by the Z80. Generally, points which conflict with themselves in the documentation available on the net... Thanks: ...which I'm thankful for, as there certainly isn't any source available to look at! Thanks to the rest of the MESS team, Terence & Philip and the MAME team, Kevin Lingley for support and ex(p|t)ensive games testing in this driver's ARM code & early forms, and, of course, Stan, Kyle, Eric, Kenny... Please note that no goats were sacrificed during the development of this driver. NES: ---- Usage: arrow keys - 1p move control, alt - 1p fire 1,2 - 1, 2 player select return - 1p start See the "Keyboard Setup" menu, accessible by hitting TAB, for more key mappings. Options: Under the "Options" menu, accessible by hitting TAB, are two settings. "Renderer" - can be set to Scanline or Experimental. The Scanline renderer gives the most accurate display, but can be slow. The Experimental option is much faster, but still needs quite a bit of work before it displays properly in all cases. It's best used for games with no scrolling playfields, like Donkey Kong, etc. "Split-Screen fix" - defaults to off. Turn it on to see proper split screens in games like Kirby's Adventure and Airwolf. This will most likely go away in the future as we figure out how these split screens really work. Compatibility: The NES driver should run 99% of the ROMs currently out there with very little problem. It doesn't yet support a lot of the obscure mappers used in fwNES, but this is on deck for the next release. For the record, it supports mappers 1, 2, 3, 4, 5 (incomplete), 7, 8, 9 & 10 (incomplete), 11, 15, 16, 18 (vrom probs), 25 (vrom probs), 33, 34, 64, 65, 66, 68 (incomplete), 69 (incomplete), 71, 78, 79. Some of the mappers > 63 haven't been fully tested yet. Mapper numbers > 64 could also change as the specs for each are finalized. Notes: The main focus up until this point has been in getting the NES driver as accurate as possible. Unfortunately, the scanline rendering method is quite slow, so future efforts will be focusing on bringing up the speed. Also, the sound code is still a bit shaky. However, the NES driver does have quite accurate sample playback. For example, you can hear speech samples in Bayou Billy, Gauntlet, Dirty Harry, and Skate or Die that are not present in a few other NES emulators. Wanted: I'd really like a color prom dump from a real NES. Right now, it uses a hand-crafted palette. I'd also appreciate any info on some of the more obscure mappers. If you have any of this, please drop me a line at bradman@primenet.com. Thanks: Special thanks to Nicolas Hamel for xNES. Also, thanks to Marat Fayzullin, D, Icer Addis, Matt Conte, Arthur Langereis, and John Stiles for tips and moral support during the development of the NES driver. And last but not least, thanks to Jeremy Chadwick and Firebug for their respective NES docs, without which this driver would have taken considerably longer. I'll be sending you guys updates for both files soon. ;) TRS-80: ------- Usage: keyboard - relatively close to the original layout. Take a look into the "Options" menu, accessible by hitting TAB, and choose "Keyboard Setup" to find out more about the key mapping - changing is not yet supported. cassette - emulation of virtual tapes supported. Use SYSTEM or CLOAD commands to read images. SYSTEM supports 6 character filenames and loads the corresponding FILENM.CAS image, CLOAD loads a file named BASIC[N].CAS, where [N] is the character you supplied (e.g. CLOAD"M" loads BASICM.CAS) floppies - emulation of virtual floppy discs supported. Use a NEWDOS/80 boot disk for drive 0 and set up correct PDRIVE parameters for the other drives. If only drives 0 to 2 are used they can be double sided by interpreting drive select 3 as head select bit. Options: Under the "Options" menu, accessible by hitting TAB, there are three settings. "Floppy Disc Drives" - enable or disable floppy disc controller. "Video RAM" - enable upper case only or upper/lower font. "Virtual E000-EFFF" - enable 4K Extension ROM or make it RAM. Compatibility: The TRS-80 driver should run most of the known programs out there. It supports a WD 179x floppy disc controller with up to four virtual floppy disc drives contained in image files. Notes: The TRS-80 driver requires the presence of the following images: TRS80.ROM 12K Level II Basic. TRS80.FNT 6x15 default character set with block graphics. Acknowledgments --------------- First off, we'd like to thank Nicola Salmoria and the MAME team for letting us play with their code. Without it, MESS would be substantially less than what it is right now. Z80Em Portable Zilog Z80 Emulator Copyright (C) Marcel de Kogel 1996,1997 Note: the version used in MESS is slightly modified. You can find the original version at http://www.komkon.org/~dekogel/misc.html. M6502 Emulator Copyright (C) Marat Fayzullin, Alex Krasivsky 1996 Note: the version used in MESS is slightly modified. You can find the original version at http://freeflight.com/fms/. I86 emulator by David Hedley, modified by Fabrice Frances (frances@ensica.fr) M6809 emulator by John Butler, based on L.C. Benschop's 6809 Simulator V09. M68000 emulator taken from the System 16 Arcade Emulator by Thierry Lescot. 8039 emulator by Mirko Buffoni, based on 8048 emulator by Dan Boris. TMS5220 emulator by Frank Palazzolo. AY-3-8910 emulation based on various code snippets by Ville Hallik, Michael Cuddy, Tatsuyuki Satoh, Fabrice Frances, Nicola Salmoria. YM-2203 and YM-2151 emulation by Tatsuyuki Satoh. OPL based YM-2203 emulation by Ishmair (ishmair@vnet.es). POKEY emulator by Ron Fries (rfries@aol.com). Many thanks to Eric Smith, Hedley Rainne and Sean Trowbridge for information on the Pokey random number generator. NES sound hardware info by Jeremy Chadwick and Hedley Rainne. Allegro library by Shawn Hargreaves, 1994/97 SEAL Synthetic Audio Library API Interface Copyright (C) 1995, 1996 Carlos Hasan. All Rights Reserved. Video modes created using Tweak 1.6b by Robert Schmidt, who also wrote TwkUser.c. "inflate" code for zip file support by Mark Adler.