Homemade flash cart help

Hi! This is my first ever post in the community. I’m quite the beginner regarding electronics, and coding, but followed a bunch of tutorials, and managed to get many small projects working. Pardon my bad english, since I have’nt been using it for ages… I’ve been struggling with my implementation os Mr.Blinky’s Arduboy GT. I only recently found out about the Arduboy. I had several Arduino Nano boards, and i2c oleds, from other projects, so I started with a Slimboy, wich was a moderate succes, since I only had one faulty dim oled with the proper controller chip. I also made a pro mivro 5v variant with alterate wireing as a core, wich is working well enough with single game images compiled for it every time I want to change… , but I have issues with adding a “flashcart” to the project. Iam using a w25qxx spi flash module from ebay. Tried wireing it as a flashcart “lite” version. Bootloader “Cathy3K” (starts with menu" is flasahed, USB bott logo is on the screen, pressing a or B starts the last compiled game… Flashcart is seemingly not recognized. I’cant flash cartridge image either. No flash is detected. After a while, I gave up… but came across the Arduboy GT priject. I got myself a teensy 2.0, wired it up, flashed Cathy3K (with menu), got to the same state as with the pro micro board. Wired up the spi flash module, and used the GUI flashcart tools from the projects github. Flash is recognized by the tools, and I have a succesful flash message… Still only USB boot logo on OLED, when pressing a or B the last flashed game loads, when pressing left and right, teensy’s on board led flashes, and I get some garbled dots, and flashing pixels on the OLED alognside the USB boot logo. Tried powering the project from external power, not USB… same results.

Hi! Welcome to the community and thanks for the detailed introductory.

If you where able to upload the flash image then the flashchip is detected correctly. I recommend to upload the flash image again with the ‘Verify flash data’ option checked in the Options menu. This will check that each uploaded block is flashed correctly.

Also what type w25qxx do you use? The current flash image exceeds 8MB so you’ll need a w25q128 (16MB) when the image is uploaded with the GUI uploader, the Device info is also logged and may be useful to determine what kind of flash chip the module uses.

Thank you for the quick reply! I’m using a 8MB module… Wich was the only available option locally… Ordered some bigger modules, and also some bare dip package chips from China… But they haven’t shown up as of today. Will try the ‘verify flash data option’… But having trouble with the python scripts building my own image… I have python installed, with the extensions, as per the instructions, but can’t seem to launch the GUI version. Command prompt flashes, and exits immediately. The image uploader in the Arduboy GT activation package zip works no problem. I found an image online, wich says it’s only the menu… That didn’t work either… Currently I’m rebuilding the circuit on another breadboard with neater wireing, so I could troubleshoot more easily, an post some images.

That’s probably the issue When it’s written the last part (>8MB) will overwrite the beginning of the cart.

You can make a smaller image using the @filmote’s Cart site. Just delete all categories right from sports and the image will be smaller than 8MB.

Try to upload that with ‘Verify flash data’ and also the ‘apply SSD1309 patch’ options.

That means there was an error executing the scipt. Try opening a command promt (WinKey+R type cmd and hit enter) and drag and drop the python script to the command promt window (and hit enter) It will show what goes wrong.

Thank you! I will try this as soon as I get back home! :slight_smile: Forgot to mention, that I’m using the regular smaller OLED at the moment… So I did not apply the SSD1309 patch… Figured I shouldn’t need to patch the default display type.

I’m not sure how to use the Cart builder site to get my own games collection… But it looks awesome, and I will try to get the hang of it… I tried choosing some games, to upload, but I guess this works the other way around… deleteing ones, I don’t want. Anyway, somehow I managed to make a smaller image… around 6Mbytes. Uploaded it with “Verify flash data” option selected. Had the succesfull flash message. Upon restarting the Arduboy, now I have the FX loader menu, and can browse, within the categories and “screenshots”, but can’t start any of the games. A and B buttons are not responding at all. Also I have a white stripe artifact on the right side of the screen. About 3 pixels wide vertical line, with some random dark pixels. When browseing, this line remains static…

UPDATE: I dont know why… suddenly something started working… Games now seem to load, but I guess theres some compatibility, or other issue, as after they load, the “loading screen” with the statusbar stays frozen and some game elements flicker on the top few rows of pixels, while sounds, and controls seem to be working.

UPDATE II: GUI uploader log below

Arduboy uploader GUI v1.12 Apr.2020 - Mar.2023 by Mr.Blinky.

  1. Use File menu or […] button to browse for a Hex file or Flash image.
  2. Press the appropriate upload button to upload the file.

Loading flash image from file “M:\Arduboy\flashcart-image.bin”

Patching flash image for SSD1309 displays…

Found Arduino Leonardo bootloader (COM11) at port COM11
Opening port…succes

Flash JEDEC ID : EF4017
Flash Manufacturer: Winbond
Flash capacity : 8192 KB

writing 100 blocks/6400KB to flash with verify

Uploaded flash image successfully!!

It is now safe to switch off your Arduboy, or try the new features:
Press LEFT or RIGHT on Arduboy to browse through the game categories.
Press UP or DOWN to select a game followed by A or B to load and play a game.
Press A or B on the Loader title screen to play last loaded game.

That sounds like there is a display with the display wiring. Check that they are wired correctly and make good contact. espacially CS and DC

Will try rewiring the whole thing today with a permanent breadboard and sockets… to eliminate dodgy wire contacts. But I also had some experiments, - since while in the menu, aside from the vertical line artifact on the right, now everything seems to be working without any flickering in the top rows… I loaded a game from the flashcart, powered off, disconnected the flashcart, and powered on the circuit, so the USB boot logo appeared indicating no flash memory. Started the last loaded game with button A, and had the same flickering top row issue. This is why I’m thinking Compatibility issues. My wireing is according to the Arduboy GT schematic. Screen, buttons, flash memory and buzzer, and the teensy 2.0.

Bootloader was flashed with the settings below:

Homemade Arduboy
Arduino Leonardo
Arduboy optimized core
PIN2/D1/SDA (official)

I had a notification, that one of my packages will be arriving tomorrow. Hopefully the one with the proper displays. I’m thinking, my issue might be the wrong display driver chip…

UPDATE: Well… Received my package. But got 5he wrong displays… They sent the i2C variants. I remember i placed the 7 pin spi version in the cart, but somehow during checkout, it deafaulted back to the 4pin version, wich I haven’t noticed. Ordered again… Waiting… Again…

1 Like

Would it be possible, to add the ootion for patching for other displays? I found out that my displays have the SH1106 chip. I’m guessing thats the root of my issues. Also I ordered the SSD1309 bigger OLEDs, but got the i2C variants, because I haven’t noticed, that after placing the spi variant in the cart, with many other items, it somehow deafaulted back to the i2C variant during checkout.

The only reason patching the precompiled binary works for the ssd1309 is that almost everything is identical protocol-wise just a single instruction involving the charge pump doesn’t carry over from the ssd1306, so the script just parses the binary for the correct sequence that codes that instruction to remove it. It’s just not feasible to completely change the entire protocol from spi to i2c from only the binary, you have to recompile from source for that.

1 Like

Ok. Thanks for the info. I get that part about the 1309 and the 1306 displays via spi having really similar instruction sets… The 1106 types I have are also spi protocol. The new messed up ordered ones are i2C, but i never intended to use those… The proper displays are on their way. Just have to wait them out. I was just hoping, that there might be a way for patching for spi sh1106… Simply looking for the easy way. :wink:

1 Like

Finally, my SPI SSD1309 display arrived! Tomorrow I will test, if this solves my issues, but, I’m almost certaint, that it will work. :slight_smile: I Also dived into the programming side of things to make my own game. If I get to a point where it works on my hardware, i will post it aswell.