I don't spend too much time on the development of the SDA, because it now does more or less what I wanted it to do. Last year I moved from messy red prototype to more refined "SDA mk.2". This new hardware platform meets most of the goals that I gave myself in this post and I am very happy with it. I already did one video on how it's soldered and another on the final assembly.
One of the great things on the mk2 SDA is its internal expansion slot, so in next iteration of the DFPlayer extension I connected it internally and the module is now part of the back enclosure. It looks very neatly from the outside and the external expansion port can be used for other things. Inside the SDA is now enough space for similar add-ons that could be connected to the internal header and if more space is needed, one can get the FreeCAD files and redesign the back part of the enclosure. I really like this kind of hackability and expandability.
For the past two weeks I was working on the SDA OS. I was addressing some of the minor issues like messy applications folder and no way to define state of expansion pins after boot. This will be fixed in version 0.7.2 wich will also introduce new default image format. I was using binary ppm for the system icons and other images.
It is easy to parse and gimp can generate it easily, but the resulting image is quite big and it takes too much time to read it from the SD card. I looked for some compressed image format, but didn't find anything useful, so I went the custom way. My new image format is just as simple as binary PPM, but uses only 16bit color depth instead of 24bit, SDA works with 16bit color anyway, and this saves about 1/3 of the file size. Also all the graphics used in the SDA_OS has big portions of the images filled with same-colored pixels, so I went with really simple compression scheme, that works rather well on most of the images used (about 1/7 compression ratio). It is rather stupid and can generate compressed image larger than uncompressed, but it will never be larger than the same image stored as PPM, so that's good. (It supports compressed and uncompressed mode, so in a case of bad compression ratio, I will just disable compression)
The web simulator got new looks
I worked a bit on the simulator and it now looks more like an actual SDA. It still does not work flawlessly in the browser, but the errors are bit strange and I don't know how to fix them. It looks like compiler optimizations throwing code away, but turning the optimizations off doesn't help, setting things volatile doesn't help, printf the missing data miraculously helps, but it's stupid... Also SDA_OS works reliably with -O3 enabled on the stm32 and native linux, so it should also work on the web. I am really out of ideas here. If you had and fixed similar problems with emcc, please let me know.