02.04.06
GTE Alpha Release
Well, the first non-development alpha release of GTE is out. The library itself is pretty feature complete, but I’m sure there are still things that will need to be added and the entire library needs constant and consistent attention regarding the ease of use of the API and internal conventions.
I’ve already added a couple of significant features over the past few days. First, there will be a new pair of functions: GTEGetTileRange and GETSetTileRange. These allow the user to get/set a retangular range of tiles in a particular tile set. GTEGetTileRange is probably most useful for helping with collision detection between sprites and the background. GTESetTileRange can be used to change the playing field dynamically, e.g. breaking blocks. This function takes care of all the details in order to make sure the screen is updated correctly.
Another addition is that the DrawForth (horrible name) sprite type has been removed and is incorporated into the Sprite object automatically. This sprite type was meant to be used to place sprites “behind” the playing field, but that capability is now exposed via the flags field of the OAM array. When the fPriority bit is set, the sprite is placed behind the playing field. This is a much closer match to the NES/SNES programming model.
The biggest obstacle between now and an Alpha 2 release is a hard-to-replicate bug which causes sprites to not be displayed on-screen. It doesn’t cause a crash, which I might prefer since it’d help pin down what is happening, but changing the optimization level of the C code triggers it. Thus, I think it’s probably a stack-based bug, but you never know. I’m not looking forward to tracking this down since it will probably be very difficult to isolate.
Based on some feedback from comp.sys.apple2 newsgroup, I may try and convert the library to pascal calling convensions and make it a User ToolSet. That way it can be easily interfaced to GSoft BASIC. I bet a lot more people would use it from BASIC than C.
’till next time.
Permalink Comments off