Self Bootloading Mod-Chip

Yes.

Correct. The bootloader has some extra commands that allow reading and writing to the flash chip. In addition to that It also supports direct writing to the display (to test graphics), reading buttons and changing LEDs

The Flex PCB mod-chip contains an Attiny MCU that will update Arduboys bootloader (and Arduboy updates the Attiny) Updating mod-chip firmware /Arduboy bootloader is done by the Activator utility /sketch.

If you break the GPIO pins out you could.

Yes it is. you can upload a game as normal.

3 Likes

Are these documented somewhere?

If I ever get back to working on my Arduboy uploader it would probably be worth having FX support.

That’s quite neat. In fact that actually makes me more tempted to buy one (if I can get access to a soldering iron).

I’m presuming that just means opening the case and hooking up some wires.
I’m not in a hurry to attempt it though.

They where mentioned somewhere in the original custom bootloader thread. But I’ll add a comprehensive list to the bootloader source.

2 Likes

This is pure magic!! :exploding_head:
I can only conclude @Mr.Blinky is a wizard !! :mage:

I’m trying to picture how your custom boot loader will act in ‘vanilla’ mode… so if only one game is loaded to the 32u4 and/or no games are on the SPI flash, do we just boot directly to the game as before? (i.e. no delay on an empty ‘select’ screen).

BTW Did you move the start-up Arduboy scrolling logo to the new boot loader? If so, wondering how games will transition that already have that from the Arduboy2 library? Is there someway for a compiled game to flag the inclusion/exclusion of the logo to your boot loader? Or something that can be flagged in your reserved EEPROM storage (0x00)?

2 Likes

the loader menu is part of the bootloader. so whenever bootloader mode is triggered (like it would normally) instead of a black screen you will see the USB icon when nothing has been uploaded to FX chip yet or you would see the loader menu if games where uploaded to the FX chip.

when a game is uploaded through Arduino IDE the game starts after upload is complete.

Whether the (boot)loader menu or the last uploaded/flashed game starts (like on a normal Arduboy) can be configured (depends on bit 7 of EEPROM location 0)

The (boot)loader menu will always start if you hold DOWN while switching power on.

No there is no Arduboy logo (code) in bootloader. The start-up Arduboy logo is part part of Arduboy(2) library

3 Likes

I hate this thing so much. I wish games would just load.

With the mod chip installed and the fx bootloader, then it will always boot into a menu. If you want to play it “normally” like an original arduboy, pressing either A or B will run the game that is currently in memory. As the menu is only existing in the bootloader.

If you flash a new game, the bootloader automatically detects this, flashes the game and will run it like “normal”.

Yeah, I meant only for the mod-chip. Unfortunately there isn’t much game making/hacking in my rural town, so can’t get with other people to alleviate costs. Will be grea to have that disccount option for people that only want the mod (like me :stuck_out_tongue:)

It doesn’t bother me quite as much as it used to, but I do tend to agree.

To pre-empt @MLXXXp telling you…
There’s a dedicated EEPROM bit for disabling the boot logo and you can compile and run the SetSystemEEPROM program from Arduboy2’s examples to change any EEPROM settings, including the boot logo bit.
(Well, almost any, I don’t think it supports changing the FX bit yet. :P)

3 Likes

Buy a micro arcade too :smiley:

I’ll see what I can do. My guess is you might have to wait for an FX kickstarter where I can break out shipping costs maybe?

Maybe the mod chip can get stocked by pimoroni, that would be a good option for some people.

1 Like

It likely never will. The FX bit is in EEPROM address 0, which has been dedicated to the bootloader and is no longer considered part of “library” system EEPROM (though still off limits to user programs). Therefore, this bit would be solely under the control of FX feature code and utilities.

The Arduboy2 library has no knowledge of this bit and therefore no functions for manipulating it that SetSystemEEPROM could use.

1 Like

Not always. The user may configure start the last burned game upon powering up.

2 Likes

Gadzooks! How does a user do that? Setting an EEPROM flag I guess, where is it set you need a custom application? We could include that in the default/startup game that is on first run, users can set their preference there, and return to that app if they want to change it in the future.

Yes this EEPROM setting can be configured using the activator sketch. This reminds me I need to add a little change to that sketch.

1 Like

@Mr.Blinky How do the save states work? When you save a game then boot up another one, does that save state get erased or are all your save states for different games…saved?

There are no differences in behaviour as with the current Arduboy.

1 Like

I’d think that you’d consider the ARDUBOY logo a benefit to your business.

  1. Someone buys a commercial Arduboy “clone” with all “Arduboy” branding removed.
  2. It comes with a game installed but the maker has maybe removed or replaced the ARDUBOY logo.
  3. The maker has created their own repository of copied games but maybe doesn’t spend the time to remove the logo from all of them. Or, the maker includes a link to, say, Erwin’s Arduboy Collection, or the buyer somehow discovers it.
  4. The buyer loads games that show the ARDUBOY logo on start up.
  5. The buyer shows off his new toy to his friends.
  6. His friends ask “What’s that logo about, that appears with a lot of the games?”
  7. Curious, they search for the name and discover the real Arduboy.
  8. They say “That looks much better than what you bought, I’m going to get one of those instead”.

Without having that logo appear, they may never have discovered the real Arduboy. It helps prevent clone makers from attempting to make their product appear to be an original design.

Besides, as I recall, at one point you were looking at replacing the logo with a different one that included sound, which could have been equally or more annoying to some. Now you’re saying you hate the idea of a logo in general?

(And, as @Pharap pointed out, it’s easy to disable the logo, or just the flashing LEDs that go with it, by setting flags in system EEPROM.)

No, I like the idea of the logo, I hate the big fat pool noodle logo and the fact it’s just sliding down like the gameboy logo. I honestly felt it had a lot more style when it was just plain text Arduboy sliding down TBH.

But, for most of your reasons you listed, yeah that’s why it’s fine and I don’t pitch too much of a fit about it.

In other news.

@mr.blinky and @mlxxxp were discussing the use of the secret EEPROM location to store the power-on menu toggle bit, and I haven’t been following along closely but it seems there may be the potential for this memory location to be susceptible to brown out corruption. Maybe it’s just a totally isolated incident but I was fiddling with an Arduboy FX prototype power switch doing some testing rapid power cycling and it wouldn’t go back into the menu.

I tried everything to get the menu going, and it was clear the bootloader was still running because holding the down button would keep it there.

Eventually I ran the activator tool and flipped the bit. And that fixed it. That was after I tried all the “normal” ways to clear the EEPROM so obviously, I don’t know how to access it within the scope of a normal sketch.

So, I’m going to do more testing, but I don’t know if we need to consider that might be why the bit is reserved is because some times it glitches out?

ALSO: I was playing super crate buino, which is a port of a gamebuino game so I don’t know… is that game doing something funky with the EEPROM bit because it’s a different target?

Just got the current Goldcart running on the Arduboy with the new [ hold up + down reset ] feature implemented, and I got to say this seems almost like a totally new device. There are so many games on here to explore and check out. And that’s saying something because I run the show here and I’m STILL finding games I haven’t played before that are pretty cool.

Thanks everyone for your games and contributions, this is awesome.

Just ordered the board… can’t wait :slight_smile:
btw, is there an option to order the FX engraved backplate only?

The logo is just a bitmap in the library. If you would like it changed to something different (preferably still 88 x 16 pixels), I’m open to it. Maybe have a contest/poll? Simply recompiling any existing sketch, using the new version of the Arduboy2 library, would then cause it to adopt the new logo.

That could be changed too, but it would be best if any new technique used no more program and RAM space than the exiting one, so as not to break any current sketches that are on the limit.

There’s also a (I suspect extremely slight) chance that a sketch or library has used the library bootLogoShell() function and thus could have problems if the scrolling down is changed to something else, depending on what the new technique is.

@Mr.Blinky and I did discuss this in comments for a GitHub PR he created. If there really is a problem, I’d like to see hard evidence that address 0 is more susceptible to it than any other EEPROM location.

The SetSystemEEPROM sketch is able to clear system EEPROM (address 0 - 15), including the FX bit, back to factory default (all 0xFF).
File > Examples > Arduboy2 > SetSystemEEPROM