TurboGrafx16 / PC Engine

This page is the home of the PC Engine / TurboGrafx16 FPGA core ported to Turbo Chameleon 64.

This is an experimental core, and while I do my utmost to make sure it works for everyone and will try to help solve any problems that arise, you run this core entirely at your own risk.

If you’d like to show your appreciation for this core, or motivate me to work on this and other cores in future, donations are welcome at https://paypal.me/robinsonb5 or https://patreon.com/coresforchameleon. Anyone donating £20 or more via PayPal or sponsoring on Patreon at the second tier will be thanked by name in a “Core Supporters” shout-out page in subsequent releases.

Please note: it’s vitally important that you download the correct version of the core for your Chameleon.

TurboGrafx16 for Chameleon V1 hardware: If you have a single mini-DIN socket on the left hand side of your Chameleon, to which a breakout cable attaches for the keyboard and mouse, then you have V1 hardware and need this version:

TurboGrafx16 for Chameleon V2 hardware:  If you have three mini-DIN sockets on the left-hand side, with the keyboard and mouse plugging in directly, you have V2 hardware, and need this version:

Using the core

Flash the .rbf file into your Turbo Chameleon 64 using the chaco utility.

Optionally, copy the autoboot.sgx ROM to your SD card.

Since the Turbo Chameleon 64 can’t support more than three gamepad buttons via the DB9 ports, the extra buttons are mapped as follows:

Gamepad 1

Gamepad buttonPS/2 keyboardC64 keyboardCDTV controller
SelectRight shiftRight shiftVolume up*
Button IRight AltButton B
Button IIRight CtrlButton A

Gamepad 2

Gamepad buttonPS/2 keyboardC64 keyboardCDTV controller
RunCaps LockRun/StopPlay*
SelectLeft shiftLeft shiftVolume up*
Button ILeft CtrlButton B
Button IILeft AltButton A

* The CDTV controller has a slide-switch which selects whether D-pad and A/B buttons are directed to port 1 or port 2. The core keeps track of which port is selected, and directs the Play and Volume Up events to the same port.

Other keys

FunctionPS/2 keyboardC64 keyboardCDTV controller

The built-in scandoubler can be toggled by holding the menu button down for a period of 1 second or more.

ROM support

PC Engine, TurboGrafx and SuperGrafx ROMs are supported. The core automatically adapts to the appropriate ROM type, but in the case of SuperGrafx ROMs it uses the filename to do so – the ROM’s file extension *must*, therefore, be .sgx

CDROM support

This core has basic support for CROM images in bin/cue format. Currently the image must have exactly one .cue file and exactly one .bin file – multiple .bin files and .wav files are not currently supported.

To use CDROM images you will have to load a SuperCDROM BIOS image – such as syscard3.pce – as though it were a game ROM. Once the BIOS is running select a .cue file using the “Mount CD Image” menu option, and then press the “Run” button (“Enter” on a PS/2 keyboard, the Play button on a CDTV pad)

The memory map of the machine adapts automatically to the type of ROM selected; this means SuperGrafx ROMs won’t run correctly while a CD image is mounted. You can unmount a CD image simply by selecting the “Mount CD Image” menu option, and exiting the file selector without selecting a file.


The core was originaly written by Gregory Estrade, with further development by Alexey Melnikov, greyrogue, György Szombathelyi, Sergey Dvodnenko, David Shadoff, Jamie Dickson, M-Walrus, paulb-nl, and akramer

, by Alastair M. RobinsonThe Turbo Chameleon 64 port wraps the MiST core in a compatibility layer (DeMiSTify), with a few improvements to the core itself which have been contributed upstream, including improved audio quality, reduction in the number of RAM blocks used, and changes to the video pipeline.

Source code

The source for this core can be found here: https://github.com/mist-devel/TurboGrafx16_FPGA

Obsolete versions

, by Alastair M. RobinsonOlder versions of the core remain here for historical interest only:

For Chameleon V2 hardware:

For original Chameleon hardware:

36 thoughts on “TurboGrafx16 / PC Engine

  1. Hi thank you for the great work! but i have a little problem.. I have an SD init Fail on screen, but the micro sd is fully compatible with mini mig core you had been released and with the other ports … i dont know what happens 🙁

      • Hi,

        Actually the PCE core should be fine with SDHC – it’s only the MSX core that doesn’t support it. When you get the SD Init Fail message, try pushing the reset button on the Chameleon (without checking I can’t be sure, but I think it’s the rightmost one) – that usually solves the issue.

        • … or try another SD card. I had the same error with the one that gives me problems with the MSX core (wich is only 2GB size), and then tried another one that works fine with the MSX core and it worked well. Maybe Alastair you are sharing some code between these two cores that is very sensitive with SD card used.

          Anyway, once you find an SD card that works fine, you will have a looot of fun with this core, PC Engine has some very nice games!!!

        • Yes i test the msx and the Pce on my old SD 2gb and there all is working . PCE emulation is great 🙂 One think there is the opportunity to configure different keys on keyboard ?

    • Yes, there are some games which won’t run – some for no easily-identifiable reason, but Ghouls’n’Ghosts won’t work because it’s a “SuperFX” game, and won’t run on a basic PC Engine.

      • Ok thanks for the info and thank you for your great work !
        i will test the last one core , im really courious about 😉
        The 13 of December i will show my c64 with turbocamaleon on a retrocomputer exposition i will have great success with a PCE-c64 😉

  2. Hi Alastair , loving this core 🙂 , I have a quick question , I’m using a dtv controller , but I cant use it in the menu , is this the current state of play or ( the more likely ) I’m doinf something wrong ( wrong config or something ) .

    Cheers CodenameV

  3. oh and a quick error report ( again this could be me 🙂 ) the game kato and ken ( or chan and chan as its also know ) seems to have an issue on the intro and when entering certain areas, the bonus rooms mainly , the graphics seems to flash in and out or disappear completely.

    Thanks again for porting this core over .

    • When available time and interest coincide! I’ll try and backport the recent improvements to the MIST core sometime soon, and try and fix the SD card issues at the same time.

  4. Hi Alaister!

    If you’re interested, my fork for MiST has improved compatibility and even SuperGfx support. I think it wouldn’t be hard to re-add TC2 support.

    • Thanks for the heads-up – I did see the improvements in your fork – great stuff! I do plan to merge them in at some point, but want to get basic ports of a few more cores working first.

  5. theres a bug reading pcengine/TG16 in puts using the ps/2 keyboard in standalone.
    if i play aereo blasters with the TC connected to the c64, some type of sync is grabbed from the c64, and the intro works, and the ps/2 keyboard works.
    in standalone the cursor keys work, no select/run 1 or 2 buttons work.
    in standalone, the intro sequence whites out then moves to title screen.

    i think what you are doing is awesome, i love the core so far i just thought id tell you about the sync? issue?

    • Thank you, I’ll take a look. I’m probably doing something wrong with the C64 & Docking Station code, hence the difference when the C64’s connected. Is this V1 or V2 hardware?

        • btw, you do know that the directory listing isnt showing all of the games in the directory, i believe you get some where around 71 titles to a directory then it cuts out.

          im sure you are looking into all of this:
          if you dont mind a suggestion…

          check how the turbo chameleon reads the sd card (you probably did that) the sd init at boot could reflect how Jens and team are reading the sd at boot.. maybe doing the same will solve that problem. also the same for directory sorting and directory reads, although the turbo chameleon directory read only allows for 1000 so titles per scan, the a new directory has to be built)

          • Thanks for the report. How the Chameleon core leaves the card will only affect whether another core can read it all; the directory problem will be a bug in the PC Engine core’s menu code which I will attempt to fix at some point.

      • if you dont mind me making another suggestion.
        seeing as the ports read 1 and 2, 1 being input for the TG… do you think its possible to support genesis controllers using the 64jpx genesis to c64 joy connection? im using a genesis controller and and 8bitdo. the controls work fine up, down, left, right. you only get one switch.. fire. is there a way to read the controller on the controllers board to configure for multiple buton reads. like the pc-fx 6 button controllers config for 6 button joysitck control?
        maybe allow a joy swap from port 1 to port 2 for single player? i also have a 2 button port adapter that reads pin9 for paddle, the second dip reads space bar and redirects fire port1 to the second button on the joystick, and pin 3 take the up jump and maps it to the second button.
        maybe this is helpful for adding multi button, or commodore multi button options. if you can catch the controller from the gamepads maybe you can just read address into the chameleon even if through the c64? cant hurt, if you have the adapter for that type or other types like the snes controller, thats all it takes.. from my understanding. the genesis and snes still use basically the same i/o as the c64 even if the i/o is on the sid…. correct?

        • Sadly there’s no way I’m aware of to read a 6-button controller on the TC64. I don’t think it’s possible to set the C64’s joystick pins as outputs, and the docking station’s joystick ports don’t support any kind of output mode either.

          • just wanted to let you know i just got my docking station.

            it works fine except for the sd init at the beginning

            i believed it was trying to catch sync from either the vic or the keyboard controller on the c64. well the ps/2 keyboard works, when the chameleon is docked. awesome. standalone without the dock, its looking for something. vic or keyboard controller?

      • what about an hid card reader/writer to say take care ofthe HU card problem, seeing as, as far as i know; its impossible to get some to burn roms to?

        im looking into it right now. i think you could, and if you make it work completely, take this and put it on say your own fpga board and drop an hid card reader/writer?

        just a thought. id really like to run these games hardware card instead of just rom. i am talking about those satellite tv cards they were using on direct tv, etc.

        thanks again!

  6. have you thought about writing midi out routines for the music so we can run into or soundblaster soundcards and use soundfonts or perhaps a roland midi device? for the docking station.

    just curious. that would be pretty rad

    thanks for listening

  7. its on the docking station. i was thinking about this, what if the music audio was mapped to midi out, we could connect soundcards, dreamblaster midi devices and roland devices to it and then use soundfonts or those particular devices patch banks for better sounding music.
    if it were possible the midi out could also send out to soundcards and the fm chips for more sound channels, if it were done correct, sound fx through those fm chips for uninterrupted sound playback. some soundfx in games like bonk and devils crush cut out a channel of music to play sound fx. i was thinking it might be possible to catch when this happens and just stream through the fx channels leaving the music channels open for full playback? i know thats much, i would be more than happy with midi channel music play back through the docking station midi out. jens said that the chameleon supports midi out native for programs that use midi.

    just an idea if you are up to it.

  8. hi – great job and thanks for developing this. anyone know a list of games that are playable with 1 button c64 joystick (as I understand it this system had up to 6 buttons) , or is it a case of trial and error….. thanks

  9. the genesis controller works just fine. or you could get a wired stick setup. they are on amazon, ebay etc. im not sure if you can get 9 pin connector types though. im using the sega genesis wired 6 button controller, a doesnt do anything, b and c are II and I on the tg16, and enter is run, and right shift is select.

Leave a Reply

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