turbografx 0.1.0

A TurboGrafx-16 / PC-Engine emulator written in Rust
Documentation

TurboGrafx-16 / PC-Engine

This is a Rust emulator for the TurboGrafx-16 / PC-Engine console. It is a hobby project to learn more about emulation and the inner workings of this console I wish I had as a kid. It is by no means feature-complete, but it does run games like Street Fighter II and Bomberman, so it's not entirely useless either.

Overview

The TurboGrafx-16 has a few main components that need to be emulated:

  • The HuC6280 CPU, which is a modified 65C02 processor. I use my own mos6502 for that.
  • The Video Display Controller (VDC), which handles graphics rendering.
  • The Video Color Encoder (VCE), which handles color output.
  • The Audio Processing Unit (APU), which handles sound generation. (Not implemented yet)
  • CD-ROM support (Not implemented yet)

There are still some glitches around grafic effects. Some games might not boot. Also, I don't ship the ROMs for copyright reasons, so you'll have to provide your own.

Screenshots

All of these were captured straight out of the emulator (see examples/dump_frame.rs):

Street Fighter II' Bomberman Splatterhouse
Street Fighter II' - Champion Edition Bomberman Splatterhouse

(Castlevania doesn't run yet, because I don't have support for CD-ROM games yet.)

But Why?

This started as a test-project for the mos6502 CPU crate, but it turned into a full emulator.

Besides, the TurboGrafx-16 is a great console! In comparison to other consoles of its time, it had a lot of advantages:

  • It did NOT have a 16-bit CPU, but rather a Modified 8-bit CPU.
  • It had a dual 16-bit graphics processor, which allowed for fancy graphics effects like parallax scrolling and sprite scaling.
  • Games were initially released on HuCard cartridges, but the platform later added CD-ROM support, which allowed for larger games and better audio quality.

Overall, a great console that was ahead of its time, but unfortunately it was not as popular as other consoles like the Sega Genesis or Super Nintendo Entertainment System (SNES); mostly because of marketing and distribution issues.

Hacking

I recommend spelunking around in the source code. It's not great right now and I need to do a makeover, specifically making it more Rustic and less imperative. If you'd like to help with that, feel free to submit a pull request.

Crate Name

Thanks to Paul Young for donating the crate name turbografx to me. I appreciate it a lot.