ColecoDS
ColecoDS - An Emulator for the DS/DSi. Original port by Alekmaul. Phoenix-Edition by Wavemotion with support for Colecovision, ADAM, MSX1, Sord-M5, Memotech MTX, Spectravision SVI, Hanimex Pencil II, Tatung Einstein, SG-1000/SC-3000, PV-1000, PV-2000 and the Creativision.
Install / Use
/learn @wavemotion-dave/ColecoDSREADME
ColecoDS
ColecoDS - A Colecovision and ADAM Emulator for the DS/DSi
Your Vision Is Our Vision... COLECOVISION
To run requires a coleco.rom BIOS to be in the same directory as the emulator or else in /roms/bios or /data/bios
Because the chips used in the Colecovision Hardware were so common in that era, other systems tended to be very close to the CV in terms of hardware. Often only the IO/Memory was different. As such, ColecoDS also allows cartridge and sometimes tape/disk games from "cousin" systems to be played - namely the Sord M5, the Memotech MTX, the SG-1000/3000, the Spectravision 3x8 SVI, Casio PV-1000, Casio PV-2000, Hanimex Pencil II, CreatiVision, the Tatung Einstein and the venerable MSX1.
Features :
- Colecovision game support (.rom or .col files). Requires coleco.rom BIOS.
- Super Game Module (SGM) support including extra memory and AY sound chip.
- Megacart Bankswitching support (up to 1024K).
- Coleco ADAM game support (.ddp or .dsk files). Requires eos.rom and writer.rom
- Coleco ADAM Sound Enhancer to support additional AY sound channel games (mostly MSX ports)
- Sega SG-1000 game support (.sg roms)
- Sega SC-3000 game support (.sc roms)
- Sord M5 game support (.m5 roms) - requires sordm5.rom BIOS
- MSX1 game support (.msx or .rom or .cas or .dsk) up to 4096K including SCC emulation
- Spectravideo SVI support (.cas or .rom) - requires svi.rom BIOS
- Casio PV-1000 support (.pv1 roms) - no BIOS needed
- Casio PV-2000 support (.pv roms) - requires pv2000.rom BIOS
- Hanimex Pencil II support (.pen roms) - requires pencil2.rom BIOS
- Tatung Einstein support (.dsk files or .com run-time files) - requires einstein.rom BIOS
- Memotech MTX game support (.mtx or .run or .com files) - single loader games only.
- Creativision game support (.cv) - requires bioscv.rom BIOS - supports ROMs up to 32K.
- Full Controller button mapping and touch-screen input.
- High-Score support - 10 scores per game.
- Save/Load Game State (one slot).
- Video Blend Mode (see below) and Vertical Sync.
- LCD Screen Swap (press and hold L+R+X during gameplay).
- Overlay support for the few games that need them.
- Super Action Controller, Spinner and Roller Controller (Trackball) mapping.
- In-game screen snapshot (press and hold L+R+Y).
- Full speed, full sound and full frame-rate even on older hardware.
Copyright :
ColecoDS Phoenix-Edition is Copyright (c) 2021-2025 Dave Bernazzani (wavemotion-dave)
As long as there is no commercial use (i.e. no profit is made), copying and distribution of this emulator, it's source code and associated readme files, with or without modification, are permitted in any medium without royalty provided this copyright notice is used and wavemotion-dave (Phoenix-Edition), Alekmaul (original port) and Marat Fayzullin (ColEM core) are thanked profusely.
The sound drivers (sn76496, ay38910 and Konami SCC) are libraries from FluBBa (Fredrik Ahlström) and those copyrights remain his.
In addition, since the Z80 CPU and TMS9918 are borrowed from ColEM, please contact Marat (https://fms.komkon.org/ColEm/) to make sure he's okay with what you're doing with the emulator core.
The ColecoDS emulator is offered as-is, without any warranty.
Credits :
Thanks to Alekmaul who provided the baseline code to work with and to lobo for the menu graphical design.
Thanks to Flubba for the SN76496, AY38910 and SCC sound cores. You can seek out his latest and greatest at https://github.com/FluBBaOfWard
Thanks to the C-BIOS team for the open source MSX BIOS (see cbios.txt)
Thanks to Andy and his amazing Memotech Emulator MEMO which helped me get some preliminary and simple MTX-500 support included.
Thanks to Darryl Hirschler for the keyboard graphics for the CreatiVision keypad, the ADAM keyboard, the MSX keyboard and the MTX keyboard.
Thanks to Marcel de Kogel who wrote the Adam-EM emulator which is a bit of a grandfather to the more modern emulators. I got the final bugs worked out of the VDP emulation and for disk drive block caching on the ADAM thanks to his pioneering work.
Special thanks to Marat Fayzullin, as the author of ColEM which is the code for the core emulation (specifically TMS9918 VDP and the CZ80 CPU core). I think the original port was circa ColEM 2.1 with some fixes and updated Sprite/Line handling from ColEM 5.6. Without Marat - this emulator simply wouldn't exist.
Known Issues and Limitations:
- No more than 1500 files per directory - split ROM files up as needed.
- Path and filename to a ROM can't be longer than 160 characters. Keep them on the shorter side.
- The original 2011 release of StarForce will crash - this is a known bug. There is a patched version of the game StarForce on Atariage.
- MSX envelope, Einstein and Sord M5 CTC sound and noise emulation is not perfectly accurate (but close enough).
- Casio PV-1000 sound is emulated using the SN sound chip driver and so is not perfectly accurate (good enough for the small library that exists).
BIOS Files :
Here are the BIOS file CRC32 hashes I'm using with all of my testing - seek these out if you want maximum compatibility:
* 3aa93ef3 coleco.rom (original version - rev 7)
* a30b0c34 coleco.rom (faster boot)
* 94ee12f3 msx.rom (MSX) - see below for more options
* c3c590c6 bioscv.rom (Creativision)
* a746eeb6 einstein.rom (Tatung Einstein)
* 338d7b59 pencil2.rom (Hanimex Pencil II)
* 8f31f297 pv2000.rom (Casio PV-2000)
* 92cf9353 sordm5.rom (Sord M5)
* bc433df6 svi.rom (Spectravision)
* 05a37a34 eos.rom (ADAM - rev 5/6)
* 58d86a2a writer.rom (ADAM - rev 80)
For the MSX, we support a number of different (optional) BIOS ROMs. To be honest, after quite a bit of searching online, I'm not quite sure what machine the ubiquitous msx.rom represents - it's some generic European machine and from doing binary compares, it appears to be extremely similar to the Goldstar FC-200 or possibly the Casio MX-15 (11 bytes different in each).
As such, ColecoDS will support additional optional MSX BIOS roms as follows (and you can select them in Configuration and set a global default if you like):
* 15e503de cf-2700.rom - Panasonic CF-2700 UK Machine with 64K of RAM in Slot 1 and Cart in Slot 2
* e9ccd789 cx5m.rom - Yamaha's UK/EU Machine with 32K of RAM in Slot 0
* 5486b711 hx-10.rom - Toshiba's UK/EU Machine with 64K of RAM in Slot 2
* ee229390 hb-10.rom - Sony HitBit JP Machine with 16K of RAM in Slot 0 (uses the Japanese keyboard matrix)
* 5ad03407 fs-1300.rom - National JP Machine with 64K of RAM in Slot 3 (uses the Japanese keyboard matrix)
* ee229390 pv-7.rom - Casio PV-7 with just 8K of RAM! If you can't find this BIOS, use pv-16.rom as there is no difference in the binary.
Name the BIOS ROMs above exactly as shown (if you find them online, they will have longer names which will also generally work but to be safe, renaming is preferred) - place them into your usual BIOS directory. Once you select one of these optional BIOS roms (in Configuration), you will also enable that specific MSX machine to be emulated. This means RAM and memory slots will be exactly the same as the machine you're trying to emulate. See the MSX section for details on this.
General Compatibility:
The Z80 core is solid - it passes the ZEXALL test suite and generally has been quite stable. The M6502 core is solid - it passes the 6502 Functional Test Suite from Klaus Dormann and passes the non-illegal Decimal Mode Test Suite from Bruce Clark. The TMS9918 core is reasonably solid - it's not cycle accurate but generally good to the scanline level with sprite collision detection happening multiple times per frame. A few heavy-hitting demos will have glitches but games will generally run perfectly.
ADAM Compatibility :
- The emulated ADAM will run most tape images (.ddp) or disk images (.dsk) - just pick the .dpp or .dsk image and it should auto boot (make sure you have all the ADAM BIOS files needed!)
- Three drive bays are emulated - two Disk drives at either 160K (SSDD) or 320K (DSDD) and a Tape drive at the standard digital data pack size of 256K. This should be enough for any program you want to run.
- The emulated ADAM is a 128K system (64K internal memory and 64K expanded RAM) - enough for almost any game or program. For the DSi and above with extra memory, this expanded ADAM ram is boosted to 1MB (16 banks of 64K each).
- By default, RAM is cleared when you reset the ADAM - you can change this to a random pattern on a per-game basis if you want.
- The 32K ROM expansion of the Adam is emulated - rename your expansion rom as ".adm" so that the emulator knows it's a special ROM designed to be in the expansion ROM area. You can also rename normal cart .rom files as .adm to load them up with proper Adam emulation (useful if you want to run some of the Adam carts like in-house diagnostics utilities in full Adam emulation mode... normally when you load a .rom it would just load up with standard Colecovision emulation).
- You can turn on the full ADAM keyboard with the Configuration of Overlays (choose 'ADAM KEYBOARD'). You can also use the keyboard/joystick icons to toggle between the keyboard and the joypad.
- The tape or disk images do NOT automatically write back to your SD card... you have to hit the little Cassette icon to make that happen (and only when the tape/disk is idle - it won't save if the tape/disk is busy reading/writing).
- Adam Sound Enhancer support is automatic - if a game tries to utilize the AY sound chip, it will be enabled.
- Due to screen constraints, the placement of keys on the virtual ADAM keyboard have been repositioned to maximize the 4x3 screen orientation - but all ADAM keys should be present and functional.
MSX Compatibility :
Considering this is a Colecovision emulator, the MSX1 support and c
