Arduboy FX: can you reset to "factory defaults"?

So, I’ve got a lovely new Arduboy FX, which I’ll play with for a while but plan on doing some amateur development on it.

Is it possible restore the 200+ game library with the nice selector, if I wanted to? I’ve had a look at the uploaders, but they appear to be for the original Arduboy.

As I understand it, if I compile a new game the device becomes like a non-FX model, with a flash chip on the side. Or does the flash chip remain intact, and just a loader sketch required to restore to “factory details”?

Thanks!

UPDATE: Is “Arduboy FX Activator” the solution to my question?

If you upload a game the same way that you normally would with a non-FX Arduboy the games on the FX chip remain intact because that process doesn’t affect the FX chip at all, it only overwrites the memory on the Arduboy’s main processor.

However, it also doesn’t overwrite the bootloader, which is the thing responsible for presending the game selector menu and for flashing games from the FX chip onto the Arduboy, so even if you flash a game through the standard non-FX method it should still be possible to load games from the FX chip using the bootloader menu.

Assuming the file containing the default library data is available somewhere (I believe it is, but I don’t know where offhand) then yes, it would be possible to restore it if it were overwritten, but normal Arduboy development won’t overwrite the FX chip because the Arduino IDE doesn’t even know how to modify the FX chip.

To overwrite the data on the FX chip, you’d need another tool. As far as I’m aware, only two currently exist - one from Mr Blinky’s Python scripts, and a GUI program being built by @tuxinator2009 (ArdumanFX).

Thanks for the reply!

However, it also doesn’t overwrite the bootloader, which is the thing responsible for presending the game selector menu and for flashing games from the FX chip onto the Arduboy, so even if you flash a game through the standard non-FX method it should still be possible to load games from the FX chip using the bootloader menu.

I think I get it. The bootloader simply flashes the Arduboy from the FX chip? So, if I flash the Arduboy via the Arduino IDE, I simple press “A” to run my own program, or use the selector to re-flash with a game on the FX chip?

If I’ve got that right, I’m really pleased with the way this works.

The bootloader is essentially a very small program that lives in a protected area of the Arduboy’s program memory. It runs when the Arduboy boots into bootloader mode. Its primary job is to communicate with a computer to upload a new program to the Arduboy’s program memory.

The FX has a special bootloader that’s different to the one that comes with the ‘regular’ Arduboy. Its jobs also involve displaying the game menu and reading and writing the FX chip (the ‘regular’ Arduboy bootloader doesn’t know what the FX chip is, but the FX Arduboy’s bootloader does), which also means it knows how to read games from the FX chip and upload them (‘flash’ them) to the Arduboy’s program memory.

If you flash the Arduboy via the Arduino IDE then the game loaded onto it will be the game you just uploaded, so pressing whichever button plays the last loaded game will indeed run the program that you just uploaded.

1 Like

To be extra sure, I just tested what I said with my own FX (which is actually a prototype from ‘Project Falcon’ with a slightly older version of the bootloader, but fundamentally it behaves the same) and can confirm that what I said is correct - when you upload something ‘normally’ you just treat it as if it had been loaded off of the chip.

There are a few differences, but those only matter if you are developing to take advantage of the FX chip’s ability to act as an extra pool of memory. If you’re developing a game to run on non-FX Arduboys as well then those differences don’t matter.

1 Like

Uploading a sketch via Arduino won’t disturb the external memory contents. Unless you use the python tools to modify the external memory, the 200+ games will be undisturbed.

If you did want to do development with external memory then you can easily load the games back on using the tools.

1 Like