OMG... I finally did it!
IT WORKS!
Yes, I'm sure many if not all of you might be wondering: "what on earth is wrong with Taron?!"
See, now, I'm writing Verve in BlitzMax, which is by now literally a dead language. It's like writing code in Latin, except, uhm, probably a bit easier. BlitzMax was meant for small stuff, like little games and such, totally aiming at no more than 8 bit graphics. Therefore there has never been any support for 16 bits per channel graphics. I- for some reason- had managed to write a 16 bit png saver, which I only remember as a kind of trance state in which I somehow bit myself through everything I could find out and wrestled the code into place. But for the loading I could NEVER find anything to really get me there. It drove me bonkers for years. Eventually I gave up and thought, hey, I will switch to C++, use some standard libraries and that's that. But- for another curiously unknown reason- today I thought, I will have another look at it. Years went by and I might've learned things and gained enough confidence to examine it all again. And when I started with it today, I felt like nothing had changed. I ran into the same problems I had before, saw all the same roadblocks. But then, suddenly, something in my mind sort of clicked. Standard memory copying could never work and with this revelation I sort of went: ... ... ... ME SO STUPID! SO STUPID! I had to gather the bytes into dwords and then floats and then divide them by $ffff and VOILA! OMG... ... ... ...
So, yeah, now I will write all import functions I've always wanted, including choosing a channel (color or alpha) for material amount on the canvas and so on!
If everything goes as I expect it, you can do some incredible stuff with this... like... really fun stuff!
Should probably put that into my def diary and then...eh... delete it immediately so nobody will ever find out about my shame!
HHAAAAAA!
Yes, yes, I'm happy, I really am.