******* ADAMEm ******* The Portable Coleco ADAM Emulator Version 0.2 Copyright (C) 1996 Marcel de Kogel Hardware and Software Requirements ================================== MS-DOS version: A 486SX-25 or better A VLB- or PCI-based VGA compatible video card An enhanced keyboard (101 or 102 keys) MS-DOS version 3.0 or higher A 486DX-33 with a SoundBlaster compatible sound card and a joystick is recommended To compile the MS-DOS version, you'll need DJGPP 2.0 or higher, ZLIB recommended Linux/SVGALib version: A 486DX-33 (486DX2-66 recommended) A VLB- or PCI-based VGA compatible video card An enhanced keyboard (101 or 102 keys) SVGALib version 1.2.10 or higher ZLIB recommended Sound and joystick drivers supported Unix/X version: A 486DX-66 or equivalent (P66 recommended) An X-Windows server running in 8, 16 or 32 bpp mode X11 revision 6 or higher ZLIB recommended USS(/Lite) sound system and Linux joystick driver supported ZLIB is a general purpose data compression library used by ADAMEm to support GZIPped disk, tape and ROM images. ZLIB is available on the ZLIB home page at http://quest.jpl.nasa.gov/zlib/ Files included ============== adamem The emulator cvem A link starting the emulator in ColecoVision mode adamem.snd The sound data used by the emulator adamem.txt This file OS7.rom ColecoVision OS ROM image WP.rom SmartWRITER ROM image EOS.rom Elementary Operating System ROM image keys Program to alter key mappings for game controller #1 CWSDMI.ZIP (MS-DOS version only) A DPMI server required by ADAMEm MS-DOS. If you don't run ADAMEm MS-DOS in a DPMI environment (OS/2, MS- Windows, Linux DOSEmu, QDPMI, ...), put CWSDPMI.EXE included in this archive somewhere in your path or in the emulator's directory Some utilities for use with ADAMEm can be found on the ADAMEm distribution site at http://www.komkon.org/~dekogel/adamem.html What's emulated =============== - 4 disk drives - 4 tape drives - 1 ADAM printer - 2 ColecoVision game controllers - (Optional) 1 Roller controller, 1 Driving module, 1 Super Action controller Key Mappings ============ ADAM keyboard: F1-F6 - Smart keys F7 - WILD CARD F8 - UNDO Insert - INSERT Delete - DELETE Home - MOVE/COPY End - STORE/GET Page Up - CLEAR Page Down - PRINT Keypad 5 - HOME ColecoVision game controllers: Cursor keys - Joystick movement Left Alt (Space in - Primary firing button Unix/X version) Left Ctrl - Secondary firing button Left Shift - Third firing button (port 1) Z - Fourth firing button (port 1) NumPad - - Third firing button (port 2) NumPad + - Fourth firing button (port 2) 0-9, -, = - Numpad 1 0-9, Del, Enter(right) - Numpad 2 Special Keys: F9 - Toggle joystick/keyboard mode. In joystick mode, the keyboard is used to emulate the ColecoVision game controllers. In keyboard mode, it is used to emulate the ADAM keyboard F1-F4 - Toggle sound channel 1-4 on/off (Joystick mode only) F5 - Toggle sound on/off (Joystick mode only) F11 - Decrease sound volume F12 - Increase sound volume Ctrl+F9 - Change options Space - Make screen shot (Joystick mode only, not implemented in Unix/X version) Ctrl+F11 - Pause & Blank screen Ctrl+F12 - Pause Insert - Switch to joystick emulation mode 1 (Joystick mode only). For a description of the available joystick emulation modes, check the description of the -joystick command line option Home - Switch to joystick emulation mode 2 (Joystick mode only) Page Up - Switch to joystick emulation mode 3 (Joystick mode only) Delete - Swap joystick buttons (Joystick mode only) End - Swap keyboard buttons (Joystick mode only) Page Down - Swap mouse buttons (Joystick mode only) Both Ctrls + Both Alts - Main reset lever Both Ctrls + Both - Cartridge reset lever Shifts F10 - Quit emulator Command line options ==================== General options: -help - Print a help page describing the available options -verbose - Select debugging messages [0] 0 - Silent 1 - Startup messages 2 - VDP 4 - Memory mapper 8 - Tape&Disk 16 - PCB 128 - Illegal Z80 ops -adam / -cv - Select emulation model -adam - Coleco ADAM -cv - ColecoVision Default is -adam for adamem, -cv for cvem -os7 - Select ColecoVision ROM image [OS7.rom] -eos - Select EOS ROM image [EOS.rom] -wp - Select SmartWriter ROM image [WP.rom] -diska, -diskb, - Select disk/tape images to use [none] -diskc, -diskd, -tapea, -tapeb, -tapec, -taped -printer - Select file to log printer output Default is PRN in the MS-DOS version, stdout in the Unix versions -printertype - Select printer type [1] 0 - ADAM Printer compatible 1 - Generic/Text only 2 - IBM Graphics compatible 3 - Qume SPRINT 11 compatible -cpuspeed - Set Z80 CPU speed [100%] You won't normally need to use this option. If you've got a slow system however, you may be able to speed up some applications by lowering the CPU speed to 60%-80% -ifreq - Set interrupt frequency [50Hz] Default interrupt frequency is 50Hz for a PAL system, and 60Hz for an NTSC system. If you find most of your applications running a bit too slow, try using -ifreq 60 -sync - Select sync mode [1] 0 - Do not sync emulation 1 - Sync emulation on every VDP interrupt Using -sync 0 will let the emulator run at full speed. If you're not using games, you may want to use this option -expansion - Select expansion module emulation [0] 0 - Do not emulate expansion modules 1 - Emulate a roller controller with the mouse. Use your mouse buttons to press one of the first two roller controller buttons, use the ctrl and alt keys to press one of the second roller controller buttons 2 - Emulate a roller controller with an analogue joystick 3 - Emulate a driving module with an analogue joystick. Move your joystick forward to press the accelerator pedal, move your joystick to left or to the right to move the steering wheel, use the cursor keys or the joystick buttons to move the control stick 4 - Emulate a driving module with a mouse. Press a mouse button to press the accelerator pedal, use the cursor keys to move the control stick 5 - Emulate a super controller speed roller on both ports with a mouse. The third and fourth firing buttons of the super action controllers are always emulated. 6 - Emulate a speed roller on port 1 with a mouse 7 - Emulate a speed roller on port 2 with a mouse Please note that mouse support is currently only implemented in the MS-DOS version Controller options: -joystick - Select joystick mode [1] 0 - No joystick support 1 - Joystick support 2 - Joystick emulates game controller #2 3 - Joystick emulates game controller #1 In joystick mode 1, both the keyboard and the joystick emulate both ColecoVision game ports. For head to head games, you'll have to use either -joystick 2 or -joystick 1 -sensitivity - Select mouse/joystick sensitivity [200] 1 - Maximum 1000 - Minimum Use this option if you're having trouble controlling the roller controller or driving module. Useful values are between 150 and 400 -swapbuttons - Swap/Do not swap buttons [0] 1 - Swap joystick buttons 2 - Swap keyboard buttons 4 - Swap mouse buttons For the joystick and the mouse, only buttons A and B are swapped -keypad - Select numeric keypad operation [0] 0 - Normal 1 - Reversed This option might be useful for games that use game controller overlays, like War Games -calibrate - Force/Do not force joystick calibration [0] 0 - Do not force joystick calibration 1 - Force joystick calibration Normally, the emulator loads the joystick settings from a file when it has been calibrated before. If you connected a new joystick, or you changed your joystick settings, and you're having trouble controlling your joystick, try using -calibrate 1 -keys - Alter key mappings You can use the keys program to get the syntax necessary for your favourite key mapping Video options: -uperiod - Set maximum number of interrupts per screen update [3] If you are using a slow system, you may prefer using -uperiod 2 or -uperiod 1. This will probably slow down emulation, but emulation will be much smoother -sprite - Select sprite emulation method [0] 0 - Show all sprites 1 - Don't show more than 4 sprites per row While many applications will suffer from heavy sprite flicker when using -sprite 1, some applications require the option for best display results -video - Select video mode [0] (Not implemented in Unix/X version) MS-DOS version: 0 - 320x200 1 - 256x192 2 - 256x240 Linux/SVGALib version: 0 - 320x200 1 - 320x240 Please note that video modes 1 and 2 may not work on every system -overscan - Emulate/Do not emulate overscan colour [1] (Not implemented in Unix/X version) 0 - Do not emulate overscan colour 1 - Emulate overscan colour Since overscan colours show quite differently on a television set compared to a VGA monitor, you may want to turn emulation of it off -chipset - Select video chipset [1] (Linux/SVGALib only) 0 - VGA 1 - Autodetect If you are having video related problems, using -chipset 0 might solve your problems -shots - Select screen shots mode [0] (Not implemented in Unix/X version) 0 - Don't allow screen shots 1 - Allow screen shots A screen shot taken will have the filename CART.XXX where cart is the name of the cart loaded (e.g. DKONG), and XXX is the number of screen shots taken so far (e.g. 002). The screen shots will be in uncompressed windows bitmap format, 256x192 with 17 colours Sound options: -soundtrack - Select file for sound logging [none] -sound - Select sound mode [255] MS-DOS version: 0 - No sound 1 - PC Speaker 2 - Adlib 3 - Adlib + SoundBlaster 4 - SoundBlaster 5 - GUS 6 - SB AWE32 255 - Detect The emulator uses the BLASTER environment variable to 'detect' the presence of a Sound Blaster. Some older Sound Blaster cards are not supported. Make sure your BLASTER setting is right or you may crash your system when running the emulator. The syntax of the BLASTER environment variable is: BLASTER=Aaaa Ii Dd Hh Tt Eeee, where aaa is the port address (default=220), i is the interrupt used (default=7 or 5, depending on the model you have), d is the DMA channel used (default=1), h is the high DMA channel used (SB16/AWE32 only, default=5), t is the model type (4=SB Pro, 5=SB16, 6=AWE32) and eee is the EMU baseport (AWE32 only, default=620). All other settings are ignored. If you have a GUS compatible sound card, make sure your ULTRASND environment variable is set correctly. It's syntax is: ULTRASND=Port,DMA,Record DMA,IRQ,MIDI IRQ. Only the Port parameter is used by the emulator. You might want to use -sound 3 if you have a slow system or a system with an 8-bit sound card Unix versions: 0 - No sound 1 - USS(/Lite) /dev/dsp 255 - Detect -reverb - Select reverb send level (SB AWE32 only) [7] 0 - Minimum 100 - Maximum -chorus - Select chorus send level (SB AWE32 only) [0] 0 - Minimum 100 - Maximum -stereo - Select stereo panning level (SB AWE32 only) [0] 0 - Mono 100 - Maximum Useful values are from 0 to about 60 -soundquality - Select sound quality (SoundBlaster and /dev/dsp only) [3] 1 - Lowest 5 - Highest While using higher sound qualities will improve sound output quite a lot, it will also cause a considerable slowdown -speakerchannels - Select PC Speaker channel list (PC Speaker only) [4,3,2,1] If you don't have a sound card, and sound quality is extremely poor, try messing with this option a bit. Useful alternatives include 1,2,3 and 2,3,1 -volume - Select initial volume [10] 0 - Silent 15 - Maximum Miscellaneous options: -shm - Use/Don't use MITSHM extensions for X [1] (X- Windows version only) 0 - Don't use SHM 1 - Use SHM Using SHM greatly speeds up emulation, but may not be compatible with your system -savecpu - Save/Don't save CPU when inactive [1] (X- Windows version only) 0 - Don't save CPU 1 - Save CPU Many command line options may be abbreviated. Use the -help options to get a list of currently supported abbreviations Soundtrack file format ====================== The soundtrack file format is as follows: Header: string 'Coleco Sound File',0x1A word Version number (LSB first, currently 0x101 for 1.01) byte Interrupt frequency in hertz Data: 0xFF Single interrupt mark 0xFE Interrupt mark 0xFD Interrupt mark (LSB first) 0xFC Change interrupt frequency 0x00-0x7F Sound register write. High nibble is the register number, low nibble is the register value. Registers 0,2 and 4 are 12 bits wide (lower 8 bits are in second byte), all others are 4 bits wide Example: 13 FF 20 04 56 FD 05 01 45 06 ^--------------------------- Write 3 to register 1 ^------------------------ Interrupt ^--------------------- Write 004 to register 2 ^--------------- Write 6 to register 5 ^------------ 261 Interrupts ^--- Write 506 to register 4 Configuration files =================== The emulator loads two configuration files (if present) before it loads a cartridge rom: adamem.cfg or cvem.cfg located in the emulator's directory and CART.cfg (e.g. DKONG.cfg) located in the cartridge dump's directory. These are plain text files containing optional command line options. Options can be separated with spaces, tabs or returns. History ======= 0.2 15-11-1996 Completely rewrote VDP emulation engine; it now has support for sprite clipping, detection of 5th sprite in a row and non-standard screen modes, added support for GZIPped disk images, added ADAM printer control code emulation, added Unix/X and Linux/SVGALib ports, fixed some bugs 0.1 28-10-1996 Initial release Credits ======= - The Z80 emulator used is based on code written by Marat Fayzullin (fms@freeflight.com). The original Z80 emulator can be downloaded from http://freeflight.com/fms/CPUs/ - Joe Blenkle, Jim Marshall, Stephen Geyer, Grant Frost and Jim Notini were of invaluable help getting ADAM software and technical information. Thanks! - Todd A. Aiken spent a lot of time finding bugs, many of which would have never been fixed without his help. He also helped a lot improving the sound output - Martijn Zeedijk tested the GUS routines and helped me fix lots of bugs - Neal Danner provided me with the sound hardware related technical information on which the sound emulation code is based - The SB AWE32 routines are heavily based on 'The Unofficial Sound Blaster AWE32 Programming Guide' written by Vince Vu a.k.a. Judge Dredd. Thanks a million for writing this! - Some parts of the code were taken from Allegro. Allegro is a library for DJGPP written by Shawn Hargreaves. Allegro is available at ftp://x2ftp.oulu.fi/pub/msdos/programming/djgpp2 - ADAMEm MS-DOS was compiled using DJ Delorie's DJGPP v2.0. DJGPP is a 32 bit C compiler for MS-DOS. Source code and binaries of DJGPP are available at http://www.delorie.com Please send your comments to Marcel at m.dekogel@student.utwente.nl