home *** CD-ROM | disk | FTP | other *** search
- ******* 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 <flags> - 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 <file> - Select ColecoVision ROM image [OS7.rom]
- -eos <file> - Select EOS ROM image [EOS.rom]
- -wp <file> - Select SmartWriter ROM image [WP.rom]
- -diska, -diskb, - Select disk/tape images to use [none]
- -diskc, -diskd,
- -tapea, -tapeb,
- -tapec, -taped
- <filename>
- -printer <filename> - Select file to log printer output
- Default is PRN in the MS-DOS version, stdout in
- the Unix versions
- -printertype <value> - Select printer type [1]
- 0 - ADAM Printer compatible
- 1 - Generic/Text only
- 2 - IBM Graphics compatible
- 3 - Qume SPRINT 11 compatible
- -cpuspeed <percentage> - 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 <frequency> - 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 <mode> - 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 <mode> - 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 <mode> - 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 <value> - 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 <flags> - 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 <mode> - 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 <mode> - 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 <string> - Alter key mappings
- You can use the keys program to get the syntax
- necessary for your favourite key mapping
- Video options:
- -uperiod <value> - 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 <mode> - 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 <mode> - 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 <mode> - 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 <value> - 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 <mode> - 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 <file> - Select file for sound logging [none]
- -sound <mode> - 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 <level> - Select reverb send level (SB AWE32 only) [7]
- 0 - Minimum 100 - Maximum
- -chorus <level> - Select chorus send level (SB AWE32 only) [0]
- 0 - Minimum 100 - Maximum
- -stereo <level> - Select stereo panning level (SB AWE32 only) [0]
- 0 - Mono 100 - Maximum
- Useful values are from 0 to about 60
- -soundquality <value> - 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
- <channel list> 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 <level> - Select initial volume [10]
- 0 - Silent 15 - Maximum
- Miscellaneous options:
- -shm <mode> - 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 <mode> - 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 <n(byte)> Interrupt mark
- 0xFD <n(word)> Interrupt mark (LSB first)
- 0xFC <byte> 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
-