Skip to content

v0.1.3 Beta

Compare
Choose a tag to compare
@Gadgetoid Gadgetoid released this 18 Dec 23:46
· 1516 commits to master since this release
0140992

Tidyup, Better Releases, Breaking The API, Refinements & MAGIC!

Momentum on the firmware development front has continued, with many improvements both small and large finding their way into this release.

Prepare To Launcher

Thanks to @mikerr the Launcher now supports the analog stick and shows game version info.

I've also overhauled the D-Pad handling to avoid an issue where you could skip over multiple games if you were scrolling through quickly. This infuriated me!

As always @Daft-Freak is bashing the rough edges off things and has made multiple improvements to the Launcher (which is still part of the firmware at the moment) including handing duplicate game flashes and moving Mass Storage mode to a menu option (I'd press that button by accident every darn time).

Many of these tweaks lay the groundwork for removing the Launcher from firmware and making it a separate app that you can - if you wish - replace with your own. Crucially this allows the launcher to be big and fancy, beyond the confines of the small internal flash.

Precious Bytes

@Daft-Freak as added RLE - Run Length Encoding - support to packed spritesheets, with a counterpart change to the 32blit tool. You don't have to worry or think about it- it just happens. Turns out low-entropy, low-colour sprites pack well- who knew!?

Here's the size of some assets before/after compression:

tunnel                          18678    7755    -10923
gadgetoid_raycaster             19474    9756     -9718
flight                          10386    1279     -9107
s4m_ur4i_space_shooter_ships    10386    4544     -5842
s4m_ur4i_space_shooter_backdrop 10386    4597     -5789
s4m_ur4i_top_down_shooter       10374    5268     -5106
no_image                         6206    1289     -4917
s4m_ur4i_pirate_tilemap         10386    6778     -3608
s4m_ur4i_dingbads               12438    9000     -3438
babblesheet                      3250     754     -2496
s4m_ur4i_pirate_characters      12450    9958     -2492
s4m_ur4i_platformer             10386    7896     -2490
fire                             3226    1583     -1643
ship                             1106     558      -548
palette_swap                      838     494      -344
no_icon                            34      42         8
water                            2706    3024       318

You might notice that no_icon and water don't compress well- the tool will automatically output the non-RLE version for assets like this.

Precious Cycles

@zenodante has swooped in and fixed some bug in the dma2d flip, ekeing some more performance out of the blit. They also provided significant insight into my reworking of the System/Charge LED- which is now driven by SysTick_Handler saving a whole bunch of timer and interrupt faff and a chunk of CPU time. Not to mention saving a few bytes of that scarce internal flash.

Cleanup & Breaking API Changes

@Daft-Freak has cleaned up some API warts, giving us a debug function that supports all the good stuff without burdening the firmware.

If you use any of the API - that is the interface that handles calls into firmware functions like loading/saving files - in your game, you'll need to recompile it against this new release or it'll crash back to the Launcher.

Tooling Tweaks

The CMake tooling is a bit more explicit about what mystery meat it's downloading when you first configure your project. Hint: It's the position-independent custom stdlib required to get PIC games working.

@Daft-Freak has done some spring cleaning and purged old/defunct files. I've been wrangling CMake on some slower systems and have made it print which example it's configuring to avoid a long, awkward pause.

Could it be magic? Oh, OH!

@Daft-Freak has dropped another blit bombshell and tackled #192 - building a firmware update .blit that... uh... updates your firmware? It's ended up with the dry and descriptive name firmware-update, but we'll always know it as "magic". Remind me to make some sassy cover art to pay homage to that.

Right now the "firmware" is both the core 32blit device features - such as handling input, battery monitoring and other sundry operations not directly related to games - and the launcher, which installs and launches games. Being able to update this with one easy .blit package is enormously handy since it means no more messing around with DFU unless something goes truly awry.

You can drop firmware-update.blit on your SD card and run it with the launcher, or fire it at your 32blit with the tools using 32blit flash flash --file firmare-update.blit (or, as of v0.3.0, 32blit firmware-update.blit).

All firmware as of v0.1.3 should have a visble version number in the bottom right of the system menu.

Platform Shoes

You can now walk around, jump, swim, climb ladders and fall out of the level into a ceaseless oblivion in Platformer. Enjoy!

Complete list of changes...

As usual, for the complete list of changes see - v0.1.2...v0.1.3