Arduboy2 - The now recommended alternative to the Arduboy Library


(Scott) #118

Another appology: I realised I forgot to credit @Dreamer3 for the concept of how to remove the USB code. This has been corrected in the release notes (but unfortunately, again, I can’t add it to the git logs).


(Thomas) #119

I recompiled RogueBoy and gained over 1k bytes, Great work!


(Simon) #120

Yes great work @MLXXXp - now I can remove the setRGBled() code that you lent me with the real version!


(Michael Gollnick) #121

Super! Great work! I regained 106bytes in my project. :star_struck:


(Scott) split this topic #122

7 posts were split to a new topic: Sim-AVR problems with the new Arduboy2 V5


(Nicole Birgel) #123

Does this have any impact on existing software titles?


(Simon) #124

I don’t think so … the changes to existing functionality is just performance enhancements / code size reductions.


(Pharap) #126

The major version was increased so there should be at least one thing that breaks backwards compatibility.

That said, I can’t find it.
As far as I can tell all the changes are either bugfixes, new features or optimisations

The impact will be smaller/faster code.
(Assuming the games are recompiled with the new library.)


(Scott) #127

There isn’t really. However, the boot logo has been sped up, so sketches won’t behave exactly as before :slight_smile:

Also, the refactoring of setRGBled() broke Circuit Dude by @crait, although this actually just caused an already exiting problem in the sketch to manifest itself in a different, more severe, way.

The main reason I bumped the major version number, though not strictly adhering to guidelines, is due the the large number of changes. Plus, it’s easier to remember and state things like:
If you want users to be able to use the system EEPROM flag to suppress the boot logo, you must compile with version 5 or higher.
Rather than remembering and stating: between 4.1.0 and 4.2.0


Circuit Dude [2.1] - Awesome Puzzle Game With 50 Levels!
(Pharap) #128

You could argue that’s a bugfix. :P

For people used to using semver it’s not that hard,
but I guess since we get a lot of beginners here that makes sense.


(Scott) split this topic #129

A post was merged into an existing topic: Circuit Dude [2.1] - Awesome Puzzle Game With 50 Levels!


(Holmes) #133

Is this still an issue? Part of not going back to fix up Circuit Dude was the sound/LED conflict. Is there a suggested way to fix this on my end? I wouldn’t mind updating Circuit Dude to fix it and also touch up the graphics to include his new look.


(Scott) #134

(Scott) #136

Arduboy2 library version 5.1.0 has been released and is available through the Arduino Library Manager.

There is only one significant change for this release:
A flag has been added to system EEPROM that will allow the RGB LED to remain off while the boot logo is being displayed. This flag can be set by uploading the SetSystemEEPROM example sketch.
File > Examples > Arduboy2 > SetSystemEEPROM

Functions writeShowBootLogoLEDsFlag() and readShowBootLogoLEDsFlag() have been added to the library, to allow manipulating the new flag.


For all sketches using the Arduboy2 library that include the boot logo, users can now customize each individual Arduboy so that it will do one of the following:

  • Perform all features of the boot logo sequence:

    • The logo scrolls down.
    • The RGB LED flashes red, green, blue.
    • If set, a custom Unit Name is displayed at the bottom of the screen after the logo stops scrolling.

    This is the default setting.

  • Display the logo and Unit Name but don’t flash the LEDs. The LEDs remain off.

  • Display the logo and LEDs but don’t show the Unit Name.

  • Display the logo only, not the Unit Name or LEDs.

  • Don’t display the boot logo sequence at all. Go straight to the sketch when the Arduboy is powered up or reset.

Note that for sketches that leave out the text functions of the library by using the Arduboy2Base class instead of the Arduboy2 class, the Unit Name won’t be displayed regardless of the “show Unit Name” EEPROM flag setting.

Note also that even if the logo is left enabled, it can be bypassed or aborted by pressing the RIGHT button when powering up or while the logo is scrolling down.

P.S. The Unit Name (up to 6 characters) can be set using the aforementioned SetSystemEEPROM example sketch.


Discussion And Survey - Boot Vs Begin
(Scott) #137

Arduboy2 library version 5.2.0 has been released and is available through the Arduino Library Manager.

Release change notes:

  • Added function generateRandomSeed(), which will return a random value suitable for seeding random number generators. (This new function is now used by the initRandomSeed() function.) Thanks @Pharap

  • Function drawPixel() has been rewritten to address an issue with the compiler introduced in Arduino V1.8.6. It has also been made static. Plus, it saves a few bytes of program memory. Thanks @Mr.Blinky

  • Constructors were added to the Point and Rect objects used for collision detection features. The collide() functions were made static. Thanks @Pharap

  • Minor cleanup of #include statements. Thanks @Pharap


(Scott) #138

Arduboy2 library version 5.2.1 has been released and is available through the Arduino Library Manager.

This release has only a few minor changes, which won’t affect the majority of users.

Release change notes:

  • Changed the loopto label in fillScreen() to a local label, to prevent a “symbol already defined” error under some circumstances. Thanks @blakewford

  • Exposed all Print::write() overloads in the inherited Print class. Thanks @Pharap

  • Added a CONTRIBUTING.md file, to specify how commit messages should be formatted.


(Josh Goebel) #139

Thinking of making a low-memory / lower speed version of the library… any interest in that being in core and determined with defines? I’m not completely sure I actually want to support the exact same API anyways, but just thought I’d float the idea here.

I always tried to optimize the main library for small size/high speed. But now I’m thinking about really small size/small RAM footprint being the main drivers, which means taking quite a few things in entirely different directions.

But I think such a “sister” library would be perfect for some of the slower paced games we’re seeing that would benefit from more flash storage or more RAM.


(Scott) #140

It’s probably better to fork and maintain it separately. Using defines can get complicated if there are many changes. Also, it’s not easy to pass defines to an Arduino library, since the libraries are pre-compiled separately from the sketch code.


(Josh Goebel) #141

Yeah, I was kind of thinking that. Its is possible (see what Gamebuino does), but it’s kind of a royal pain. :slight_smile:


(Simon) #142

Its an interesting idea - as you say, a lot of games actually do not need the performance or even all of the bells and whistles of the current library and would benefit from extra memory savings.