Here is the tileset. Everything seems to be used, but the duplicate balls and the silhouette needs to be investigated further. I think they're just internally used by the game though, not sure if that would still be worth documenting. Also note odd placement of some tiles. 17:41, 29 April 2019 (EDT)
- Is the + and - in the charset ever used? --Kokonut! (talk) 12:09, 13 January 2020 (EST)
- Never seen them in-game. TolerableDruid6 (talk) 15:44, 17 January 2020 (EST)
Regarding the Unused Levels todo
As of writing this, there's a todo on the main page that says: Find out where the game stores its levels (is it in the executable or a seperate file), what the level IDs are, and if there are any unused levels. It's not possible to pick a level in the game, it randomly picks a level each round. There are 551 levels total, I can't say for sure if there's any unused levels (likely not), but below is a brief rundown of the level layout format for whoever is interested.
The levels are stored in .rsrc\IKL\20001 in the executable. Its format is very simple, took me no more than 15 minutes to figure out. All of the data is stored in Big Endian order as 16-bit values. First few values are the total level data size (excluding the 2 bytes used for the size), then how many seconds the level gives you, etc., etc., and then in most cases* 578 bytes forming a 17x17 tile grid after the header.
- * Levels that use breakable blocks are larger, because it requires 2 block values - the breakable block itself, and the block that should appear beneath it. This can cause some levels to be almost twice as large. (Left = level ID, Right = size)
The block data should really be looked at as four 4 bit values, 1st value being the block type and the other 3 - modifiers. These can be rotation, colour, or other parameters. Here is a "good enough" documentation of the blocks and its modifiers.