Thanks for the comments!
Stereo seperation not as wide now. Better? If you don't hear any difference, try clearing the browser cache.
http://16-bits.org/ProTracker-win32-r26012011.zip
Not sure what's the best way of coding the font routine (the top one)...
What I am doing in this one, is that I have like a map on the screen that is like a terminal with a static width font... 36 chars in X, and 5 lines Y. My "blit char" routine accepts just one param for position, and that ranges 36 * 5. It does this to find out where in X Y to put the char:
int putXPos = ((blitPos % (XRES / FONT_WIDTH)) * FONT_WIDTH); // XRES/FONT_WIDTH = 36
int putYPos = (FONT_HEIGHT * (XRES / FONT_WIDTH));
So if I put it at like pos 37, it gets put at first column second row and so on. This way I can hand-craft cool tables for the char putting.
Then I have a routine that checks a table for what char from the "text string table" to put first. I also have a variable for what "text screen" I lookup, so I can have as many text screens as I want. I hard coded a fancy table that puts it in the way you see. A table with 180 numbers just to attempt to wet your pants!
I could also have a million other ways, but hand crafting that one table took long enough in itself.