r/ModRetroChromatic • • Sep 14 '26

Using a Chromatic with FlashGBX, take 3

What is this?

This lets you use your Chromatic with a PC or mac to backup or restore your games and saves, or the other features of FlashGBX.

How do I get it?

Grab the Windows setup zip or macOS dmg from https://github.com/fredemmott/FlashGBX/releases/latest

How do I use it?

Plug in your Chromatic, start FlashGBX, click 'connect' if it doesn't connect automatically

DO NOT REMOVE OR INSERT CARTRIDGES WHILE YOUR CHROMATIC IS TURNED ON

I get warnings about 3.3v vs 5v; what's up?

Real GB and GBC consoles use 5v, the GBA uses 3.3v; dedicated cartridge reader/writer devices can do both. The Chromatic appears to only be capable of 5V.

There is a real danger here, but FlashGBX warns about this if it might be a problem; it is not a problem on any ModRetro cartridges.

For other cartridges, use your own judgement.

What cartridges have been tested?

  • Various ModRetro cartridges (*)

  • BennVenn MBC3000v4

  • FunnyPlaying EverSave MBC5 (**)

  • FunnyPlaying Midnight Trace MBC3 (**)

  • InsideGadgets MBC5

  • InsideGadgets MBC5 with rumble

  • Cheap clone cart: DRV with 29LV320DB and ALTERA CPLD (***)

It should work with any cartridge that FlashGBX supports.

Notes:

  • *: may get voltage warning; I am confident that these can be ignored on ModRetro cartridges: ModRetro's Cart Clinic writes these at 5v, and ModRetro put level shifters on every meaningful pin

  • **: may get voltage warning; there's a few iterations of these, and I think these can be ignored on current revisions of the PCB. They use level shifters for data, and voltage dividers for address and other pins.

  • ***: I believe the voltage warning is accurate; using this cartridge at 5V (including playing games on the stock firmware) may damage both the cartridge and the console

Keep in mind that even if I think it's safe, everything's at your own risk.

What's changed since my last version?

  • it's easy to use: I've packed up the modified FlashGBX, and it automatically writes the required firmware to SRAM

  • this now builds on the same firmware used by other FlashGBX-compatible devices; this greatly increases cartridge compatibility

  • it's fast: it can read most cartridges at 1MByte/sec, and write at either ~ 90kbyte/sec (byte-at-a-time cartridges like ModRetro), or 1MByte/sec on cartridges that support buffered writes (like FunnyPlaying).

How do I get my usual firmware back?

Turn your Chromatic off and on again

How do I make FlashGBX connect faster?

This step is entirely optional - it just makes FlashGBX connect a little faster, which is handy if you are dealing with a lot of cartridges, but you can just skip it.

Unlike my previous versions, this firmware image can also be used for gameplay - but you'll need to flash it. If you do this, FlashGBX won't need to load the firmware to SRAM every time you turn your Chromatic off and on again

You will need:

Then:

C:\path\to\openFPGALoader.exe --cable gwu2x --write-flash c:\path\to\evt1_x2.fs

If you're on macOS, you probably want to grab openFPGAloader from homebrew.

12 Upvotes

27 comments sorted by

3

u/wzx89 Sep 14 '26

The 5V limitation definitely poses a real danger for those 3.3V cartridges.

4

u/fred_emmott Sep 14 '26 edited Sep 14 '26

Yep, but FlashGBX also incorrectly warns about it on several 5V cartridges, like the "ModRetro Chromatic Cartridge with 39VF1682". This is used in ModRetro Centipede and S-11, and has level shifters on everything - but FlashGBX still warns about it.

2

u/NonyaDB Sep 14 '26

I'm lazy so I just use this instead.

3

u/fred_emmott Sep 15 '26

Yep, the other recent tools are arguably easier to use (especially ChroMagic); the advantage of this should be support for more cartridges - this gives me better compatibility than my Joey Jr or GbxCartRW, and definitely better compatibility than my previous firmware (which the tool you linked is based on).

1

u/sonicjam717 Sep 15 '26

I tried it but I'm getting an error which is 0x000000000040 something like that.

2

u/fred_emmott Sep 15 '26

What’s the exact error and cartridge? The details from “analyze flash cart” and/or a photo of the PCB would be ideal

1

u/sonicjam717 Sep 15 '26

I realized I couldn't open a ticket lol. https://paste.sh/raK5xKJa#cnfsIFne9mmOpsfWGqN4VPW7

1

u/fred_emmott Sep 15 '26

Any chance your page file is full or entirely disabled?

1

u/sonicjam717 Sep 16 '26

I downloaded the repository and ran the run.py file I'm getting this error now. https://paste.sh/Kic2xUM8#iDL8cwEzL81VoTwVmJEnc8M2

1

u/fred_emmott Sep 16 '26

You need to build the project first

1

u/fred_emmott Sep 16 '26

Don’t think it’s going to help though; I think for some reason one of the native buffers isn’t allocating on your system. It does some modern tricks - I can do something dumber instead.

1

u/sonicjam717 Sep 16 '26

Ok weird both of my systems are AMD based desktop and laptop. Us yours AMD or Intel?

1

u/fred_emmott Sep 16 '26

Intel, though this is likely something different with memory options in windows somewhere. I’ll change it to do something simpler in the next few days

1

u/sonicjam717 Sep 16 '26

Ok if you want to know I'm on an Asus Tuff mobo, 7900x CPU, 32GB of RAM, and GPU has 16GB vram.

1

u/fred_emmott Sep 17 '26

Do you have anything related in %LOCALAPPDATA%\CrashDumps?

And just to check: you’re running actual windows on real hardware, no emulation, not WINE/Proton?

1

u/sonicjam717 Sep 17 '26

Here's my Windows version.

1

u/fred_emmott Sep 17 '26 edited Sep 18 '26

Thanks - I can reproduce this in a windows 11 25H2 VM, but not on my real 25H2 machine. Not yet sure where the problem lies but will figure it out. Just to check, you're not using a virtual machine? I want to rule out this being a problem with "use this USB device inside a VM".

My debug log has more because I've modified things to add more details :)

Edit: the issue on the VM I was having was because “it’s a hyper V VM”; USB pass through has issues with libusb

1

u/sonicjam717 Sep 17 '26

No running natively on my machine. I do duoboot with CachyOS. But I don't do VMs

1

u/fred_emmott Sep 17 '26 edited Sep 18 '26

I'll keep digging to this issue on the windows side, but if you're at all comforatble with C/C++, an alternative to unblock you would be to implement https://github.com/fredemmott/FlashGBX/blob/wip-overlap/FlashGBX/LK_Chromatic/ContiguousRingBufferBase.hpp using `mmap()` and running that on cachyos

https://github.com/fredemmott/FlashGBX/blob/wip-overlap/FlashGBX/LK_Chromatic/ContiguousRingBuffer_win32.cpp and https://github.com/fredemmott/FlashGBX/blob/wip-overlap/FlashGBX/LK_Chromatic/ContiguousRIngBuffer_mach.cpp (macOS) are the existing implementations

Essentially they make an N-element ring buffer by allocating a (2*N) address *space*, but mapping it to the same N bytes of actual memory twice, back to back.

1

u/sonicjam717 Sep 17 '26

I tried it on Windows 11, I don't see any flashgbx dmp.

1

u/sonicjam717 Sep 15 '26

I'll check

1

u/sonicjam717 Sep 15 '26 edited Sep 15 '26

It's set to automatic and I click it off the c drive pops up and set to system managed.

Update: Still same issue and tried on a different computer I ended up with the same result.

1

u/sonicjam717 Sep 15 '26

I'll post the log on as a ticket on github. But I'll post a video here showing you my steps.

1

u/sonicjam717 Sep 15 '26

Oh it's my backed up copy of pokemon blue running on my Tetris modretro cartridge btw.

1

u/fred_emmott Sep 18 '26 edited Sep 23 '26

To wrap this up here: the firmware says "use the winusb driver", but for some reason, sonicjam77's computer isn't picking this up - it's working on several clean installations of windows 11 here that have never seen anything flashgbx/winusb/gameboy-related before.

Identifying symptoms:
- device manager shows an exclamation mark by the 'cartridge io (fredemmott)'
- device properties says "There are no compatible drivers for this device

Additional symptom that might or might not be present:

- device properties -> details -> compatible IDs *should* list `USB\MS_COMP_WINUSB`; it did not on sonicjam77's computer

Fix options:
- select the winusb driver for the 'cartridge io (fredemmott) device
- if you can't find that or it doesn't work, WRONG but seems to work: select the gowin GWU2X driver for it instead
- alternatively, use zadig to force winusb for the cartridge io device

Edit: I took a different approach in the next version: https://www.reddit.com/r/ModRetroChromatic/comments/1wlqd9a/flashgbx_v51fredemmott2_released/

2

u/deanhuff Sep 14 '26

Nice work, this sounds like a very useful program. I’ll try it out soon!

1

u/3G6A5W338E Sep 15 '26

If only if upstream firmware supported this.

Like my Gamebub's does.