It was fun to interact with Total Vacuum to improve his port of Dr. Mario from Uzebox to SimpX.
The main problem of speed was putpixel which was chosen because of very different Uzebox videomode.
Uzebox in this port uses 40 colums 6x8 tiles while SimpX has more classical 32 columns 8x8.
It requires to invent DrawTile6x8 procedure with optimized loops and tile data for SimpX.
I made speedy procedure with doubled tiles table for left-oriented and right-oriented variants of each tile for avoiding shifts and bit operations where possible.
I've lost ability to recompile web-version of SimpX, so I cannot just add new files to web-version right now.
Instead it will require copy-paste.
So, let's open
https://aa-dav.github.io/ and choose any test source, for example test07-lines.asm. Erase all text and replace it by content of new file
https://aa-dav.github.io/col40.asmQt Web is weird with copy-paste. You should press CTRL+V in empty code editor and after that popup will appear with single "Insert" menu - push it.
Another intuitive ways seems don't work. Weird.
Anyway after copy-pasting run it with 'Compile and run menu'.
And this is 40 column demo. Nothing really interesting at all - just blinking 6x8 tiles at full speed.
Anyway Total Vacuum made suggestion how to eliminate doubleness (clever packing scheme) and made some speedups in his SetTile procedure.
Notice: he is testing his C compiler to Forth compiler which has target platform of SimpX too (among others).
Result is here:
https://aa-dav.github.io/drmario.asm