I wanted a way to do some graphics on my Aquarius and I couldn't find any kind of utility, so I went ahead and took on the challenge. The lack of a true graphics mode was very frustrating at first, but I figured out something that I think is really neat. If you take each character byte by byte, so for example, a full block would be 1,1,1,1,1,1 and you determine its binary value(in this case, 63) you will find that the character in the character map right before it is just one less than its binary value and so forth. The graphics characters are two sets and so if the binary value is 31 or less just add 160 to it and you can the corresponding character. If it is greater than 31 just add 192 and you'll get the corresponding character. This made conversion from a series of dots to a character very easy. (Nice job to whomever laid out the character map.)
Anyway, the converter loads in the bitmap (which must utilize the color pallette included in the package) and then determines the optimal color for each 2x3 block. (As you all know we are limited to 2 colors per character block, but at least they can be one of 16.) Then the converter looks at the color distance from each of the two it picks and assigns accordingly. (I am not sure exactly what happens in the case of 6 different colors per block and it did not impact my output, so I've chosen to blistfully ignore it for now.)
Because I didn't have a lot of memory on my physical aquarius to work with (you didn't think I would go through this much work just to see it on an emulator) I had to figure out how to encode the data in a way that I could then decode on the aquarius. Since I am not a good programmer and I do not know machine language, all I could do is go ahead and write a basic program using a basic program. I managed to get it to work with my 16K cartridge installed, but I'd love to get it to work on a stock aquarius.
I took three sets of data, one for the character, one for the foreground color and one for the background color and went ahead and run length encoded them. So if I had color 15,15,15,15,15 that would turn into 15, 5. I then wrote a program to decode it and display it. (I know you like how I stored the foreground color and then PEEKED it back to do both fore and background.)
Lastly, if any of you have a better way to encode and decode a bitmap (like directly loading from cartridge to video) then let me know, because this is the best I could come up with.
The attached zip has a folder called AqBasic which are the Aquarius Basic Program output from the converter, you can use the Quicktype feature on Virtual Aquarius to check them out. It also has a BMP folder with the source images for you to play around with. The resource directory contains the conversion program (Quick Basic 4.5 - have to run qb45 from the directory that contains BMP files) and the Pallette to use in Photoshop if you want to do your own conversions.
homcol.bmp 2.93KB 114 downloads
DOS BOX Converter
ON REAL AQUARIUS
To do (maybe): Figure out how to get the data compressed enough to run on a stock aquarius
Make a better converter (like the guy who makes the awesome C64 ones) in Windows that lets you do the down converting and everything