Casio ROM Emulator RO-226
Introduction
Greetings retro Casio keyboard fans! Late one night, in December of 2020, I found myself wondering how the ROM packs from my beloved old Casio PT-80 worked. It seemed no one knew–and at the time, apparently only one ROM had been dumped. I had just started vacation and decided it would be excellent vacation entertainment to break out the ol’ hex editor and see if I couldn’t figure out that code. Two years later, a project has taken form and I present:
- An Arduino-based ROM dumper
- An Arduino-based ROM emulator
- An in-depth analysis of the ROM code and the ability to create new ROMs
Together, I hope these will kick-off a Casio homebrew community. I want to see the tunes on these ROM packs preserved–and even better, I hope to see the creation of new ROM packs for these great keyboards of the 80’s and early 90’s.
See it in action:
Update: There is now a Discord Server up and running for ROM Pack Preservation
Casio ROM Dumper
The ROM dumper is a shield for the standard Arduino (I’ve been using my old-school Diecimila). Line up the ROM pack on the contacts, fire it up, and give it 30 seconds or so to write the contents to the Serial monitor. Copy the stream of data into your favorite Hex Editor.
I’ve dumped several ROM packs using this. The dumper sends the read command to the ROM pack, then reads out the entire contents of the pack over the serial port. Most ROM packs are 6 kB, but a few (RO-101, 201, 204, 301, 302, and 303 for certain, but possibly others) are 24 kB. The bigger ones take longer but also come in fine. Speed is limited by what the 9600 baud Serial port can output. Arduino can go faster but I decided to just stick with the standard. The comments in the Arduino code explain in detail how the hardware works.
Casio ROM Emulator
The ROM Emulator is a bit more complicated and still a work in progress, though it is tested and fully working on multiple keyboards. It’s intended as a Dev platform for now, powered and programmed through USB. Currently, because the Arduino can’t be powered through the elastomere conductor in the ROM pack, it has to be powered externally. It requires no modification to the keyboard.
The emulator has been tested and confirmed working on MT-800, PT-50, PT-80, MT-28, and DH-800. These are the only ROM-capable keyboards I own, though they were chosen specifically to represent hardware families so I expect the emulator also works fine with many others. For instance, the PT-82 and PT-87 are in the same family as the PT-80, so it’s highly likely it’s compatible with them. I recently acquired a PT-480 and the emulator does not work on it, so that hardware family is currently unconfirmed.
The emulator runs on an Arduino Pro Mini (by Sparkfun). This microcontroller has 2k RAM and 32k program space. It does not have a USB interface, so programming must be done by an FTDI cable (this cable has an RS-232 to USB chip embedded in it). The ROM code is stored in a large constant array in the program itself–there’s enough space for even the larger 24k ROMs, but not much more. Changing it out requires changing it in the program and re-uploading to the Arduino. It’s not quite as annoying as it sounds and the comments in the Arduino code explain in detail how the hardware works and how to swap in new ROM code.
Casio ROM Code Analysis
This is what I’m most excited about. The hardware above will allow the dumping and playing back of ROM files, much like the video game emulation scene has been doing for decades–although the emulator in this case is hardware, allowing for playback on actual keyboards. The code anlaysis, however, allows for the creation of new ROM packs. By my count, the first in 30 years! And, hopefully, a Casio homebrew community.
The analysis is almost totally complete–what few questions remain are more about syntax: I know what must be where, even if I don’t quite know why. But 99% of the code is understood, and it’s completely possible to create new ROMs now. I’ve done it (more than once, actually…) and I can’t wait to see what others create. Current Casio homebrew ROMs:
- RO-000 Test ROM
- RO-226 (TBA…)
So where is all this stuff and how can I get it?
Well, I have no idea what to do at this point. I’m prepared to possibly produce hardware, but not at scale. I’m also happy to share the designs, but recognize not everyone is up for ordering parts and soldering things on their own. I want this to be easy and accessible, but I don’t have the time to do it all myself. So at this point, I’m opening it up to the Internet to see what happens. I also have no idea what the interest level is–maybe I built this thing for just myself, or maybe there are tons of people who’ve been waiting for this. So… message me? Anyway, here are the files:
- Arduino ROM Dumper Code
- Arduino ROM Dumper Project (OSH Park PCB Project)
- Arduino ROM Emulator Code (includes ROM file RO-000)
- Arduino ROM Emulator Project (OSH Park PCB Project)
- Casio ROM Analysis
- RO-000 “Test ROM”. This is the first homebrew ROM for Casio keyboard.* It plays through all the notes, chords, and rhythms (and more). Intended for testing, getting a taste for what each keyboard can do, and also as a homebrew demo/code example. This package includes the ROM file, but also includes a tear-down of the code and analysis.
* Technically I’m not sure I can claim first–on launching, I’ve discovered a few others who’ve been working on similar hardware. But if not first, then close to it–and no one else seems to be publishing just how they’re doing things, so…??
The Future
Things I’d like to see:
- More dumped ROMs. Obscure stuff, Japan only, etc–and homebrew ROMs! There are tons of ROMs out there most people have never heard because, unless it’s been recorded and put on youtube, we’ve simply never had the packs in our hands.
- All YES on the Compatibility list!
- A software Casio emulator (I’d humbly suggest the PT-80, perhaps not the best of the old Casios, but my first and one that I have a soft spot for). I’m not a software guy, someone else will have to do this if it’s ever going to happen.
- An app for composing then compiling music into ROM code. I currently use an Excel sheet. Have I mentioned I’m not a software guy?…
- Hardware Emulator 2.0: user-selectable multi-ROM, Li-Ion battery powered, and more. I’m currently working on this but it’s too early to tell when or even if it’ll happen.
- I’m holding back one little secret–I’m releasing what I call RO-000 “Test ROM” to the world today, but there is another. For now, I’m hereby reserving the name RO-226 for a ROM binary and not just the hardware emulator (I’m sure that won’t cause any confusion at all in the future…).
Compatibility List
Model | Working? | Notes |
PT-50 | YES | Confirmed working by Ra_226 |
MT-800 | YES | Confirmed working by Ra_226 |
CT-810 | YES | Same hardware family as MT-800 |
MT-85/86 | YES | Same hardware family as MT-800 |
PT-80/MT-18 | YES | Confirmed working by Ra_226 |
PT-82/PT-87 | YES | Confirmed working by Cole |
DH-280 | YES | Same hardware family as PT-82 |
PT-180/MT-28 | YES | Confirmed working by Ra_226 |
MT-820/MT-830/MT-88/CT-805/CT-808 | YES | Same hardware family as MT-28 |
DH-800 | YES | Confirmed working by Ra_226 |
SK-8/SK-8A/PT-280/KS-03 | YES | Same hardware family as DH-800 |
PT-88/PT-380/PT-480/PA-81 | NO | Not working on PT-480 |
PT-580/CT-800 | NO | Same hardware family as PT-480 |
KS-02 | NO | Same hardware family as PT-480 |
PT-680 | Not Likely | Possibly an evolution of PT-580 |
CT-840 | Not Likely | Possibly same hardware family as PT-580 |
12 Replies to “Casio ROM Emulator RO-226”
This is ridiculously amazing. *applause*
I forgot to mention, CT-350 is mistakenly listed as it doesn’t use ROM packs.
MT-18, CT-840, KS-02, and KS-03 are missing on the list.
MT-18 is the same as PT-80.
PT-280 is identified wrong; it should be in the hardware family of the SK-8(A) which is untested but should be compatible as with the similar DH-800. Sound Kids 03 (KS-03) is also in the SK-8 hardware family.
CT-840 is untested.
For CT-800 (Japan exclusive) and Sound Kids 02 (KS-02) which are similar versions of PT-88/PT-380/PT-480 hardware will have the same incompatibility.
PA-81 is the international version of PT-580.
Great info, I’ll update the page, thanks! Out of curiosity, how on Earth did you find my obscure little blog? I’ve barely shared this out to anyone!
Great work, this looks really exciting. I’m a bit of a Rom Pack enthusiast and noted that you’re the third person I’ve come across doing this kind of thing. One of the other guys has got a PT380 to read his work https://youtu.be/coXV4SzYmn0?t=442
Love the idea of making homebrew Rom’s. I’ve got a bunch of players and quite a few rom packs although they’re not easy to come by in the UK
Looking forward to seeing how things progress.. Top stuff
Ahhhh, so I’m not the only one–you said third, who’s the second? I searched when I started this project but didn’t find anything. But I didn’t search in Japanese…
It’s only because I’ve been deep diving all the socials that i found anything ROM Pack related at all.. it’s a niche zone of interest. It’s this fellow https://twitter.com/TolaemonM/status/1679961858789212163 based in Spain and everything he’s done is on twitter. Here’s his website which doesn’t mention it yet http://www.tolaemon.com/
Not sure if you know, but there’s a discord up and running now. People are dumping ROMs, making recordings, and at least one other now has the emulator up and running. https://discord.gg/uwvRWgQhSK
Very excited about this. If you need beta testers in any capacity, I’m in. I have several different keyboards and a decent collection of ROMs.
Absolutely, come join us in the discord, https://discord.gg/uwvRWgQhSK
I don’t know if “beta tester” is the right name for it… but there’s one who’s ordered hardware and will be assembling–and I’ve got my hardware. My goal here is to get ROMs dumped and get homebrew going. But if you’ve got the hardware and have keyboards that haven’t been tested, I’d love to know if they work or not.
A new Discord server has now been made to support this project. Check it out here: https://discord.gg/uwvRWgQhSK
BTW, I also forgot:
PT-680 which is Japanese exclusive (not the same sound as PT-480 but similar sound to CT-840)
CT-805 is a full-sized MT-88
Dear ra226, I found your work after picking up a pt82 with 3 Roms on a flea market for cheap. I downloaded your designs and followed your instructions. Today after only 3 weeks since i found the device i got the emulator working. with a little trail and error :)
Now I’ll try to create somthing with it…
thank you! greath work!!!