DOS + BIOS boot (hybrid binary)

Repo | day01.asm | day01.c (prototype) | .COM download
Written in x86-16 assembly. Works as a DOS program but also as disk image for older PCs with BIOS support (or older VMs). Getting this setup to work was tricky, especially since when I started this, I had only basic x86-16 experience! Needless to say I've spent much time staring at hex numbers.
The very start of the file determines if it's running in DOS or as a bootloader, in which case it'll have to load the remainder of the file from disk and rearrange the memory layout to emulate the DOS situation.
Right now this is using just one segment of memory (64K). Input data is compressed using a custom run-length encoding scheme. The compressed background image is directly decoded into the VGA framebuffer, after which it is overwritten with the decompressed input file. Space is tight!
My main goal is to finish a few days at least with one or more game consoles supported (GameBoy Advance would be cool) and to do some cool palette tricks, like a day/night transition or animated water and stars.