v0.1.3 Beta
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