Casio ROM Emulator RO-226

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.

Ra_226’s super-useful Casio ROM Dump Shield, installed on old-school Arduino. Rippin’ ROMs since 2021!

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.

“RO-226” Casio ROM Emulator. No RO-551 packs were harmed in the making of this device. Except for the one I gutted and turned into this prototype. And the other prototype. And probably more in the future…

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.

“You get used to it. I don’t even see the code. All I see is Count-in, Instrument Change, Duration…”

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:

* 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

ModelWorking?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

11 Replies to “Casio ROM Emulator RO-226”

  1. 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.

    1. 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!

  2. 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

    1. 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…

  3. 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.

    1. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *