Lots and lots of updates. Check out the changelog!
Yeah. So after teaming up with Pushead/Hokuto Force, I’ve already managed to squeeze out 4 new version of the TRSE IDE, with heaps of compiler optimizations (pun intended), IDE usability improvements, help, tutorials, complete overhaul over the raster IRQ system etc.
During the next month, I’ll be focusing on finishing the tutorial game + start on another game + creating a bunch of more tutorials. Also, we hope to release a first (!) ever C64 intro made with TRSE, I guess that will mean something.
Back to work, but still found time for some updates.
Compiled a pre-pre-alpha version (win64 only) that can be downloaded from here, currently version 0.001. Lots of bugs, but nice to have a first version. Here are some updates:
RasLib bitmap graphics libraries. Draw lines in bitmap mode! Works for lines that are smaller than 75% of the screen, but still. Lines, man.
Some gfx speed utilities as a built-in function : (fast) clear bitmap screen etc
While writing these libraries (and swearing), I discovered that something as amiss. While I previously had optimized statements such as a:=a+1 -> inc a, I realized with horror that I had done no such thing for binary operations of the type “a:=a+b”. Binary operations regularly requires a temporary variable, especially in larger expressions (a:=(sin(b)*d + 5)*e), but most regular expressions actually seems to be of the type b:=b-c etc. Using temp variables here are horrendous.
However, as is common knowledge among young girls nowadays: “When developing a compiler, first make sure that it works, then optimize”. I’ve now implemented an optimized version for binary operations of the type a:=a\-b, which also includes arrays (a[i]:=a[i] +c) etc. For most of my code, this optimized away between 1-3% of the complete code, but more importantly, these operations are very common in inner loops.
The final thing is the mess with integers. I’ve added some more functionality, and try to fix bugs whenever they show up. Which is often. For instance, I realized I had not yet implemented support for adding numbers larger than 255 to integers etc, but this should be fixed by now.
Finally, in the next version I’ve decided to drop the compulsory hash # prefix to all integer literals, and instead require memory addresses to have something like an ampersand &$2000.