if you have JPG, you are pretty much screwed.
Yup. Especially if you need to implement things in assembly because you are hacking a PDA that Sharp doesn't like you to hack

I like BMP also because I have simple and light support in SDL, I used to it to make some preliminary consideration on a more comfortable RPI SBC. PNG has support, but it takes much more space.
I have implemented a simple bmp image-show function in assembly, able to directly shows bmp images on the video-ram to save space in the rom because at Sharp they are not hacker-friendly with some of their products.
I have more than 16Mbyte of flash, but it's all hardware protected, you need "high voltage" to unlock pages in order to reprogram them, only page1 and page2 are unprotected, so I can only reprogram 512Kbyte of flash, and in this space I have to implement a bootloader with tftpboot support, an elf loader, and a very basic graphical menu.
Oh, don't you guess what's inside page 0? The Sharp logo, in BMP format: unfortunately it cannot be erased. When you switch it on It shows the logo, then it jumps into page1