* With 64KB one level at a time is loaded. With 128KB all 4 levels are loaded.
* The game doesn't use hardware scrolling and uses a reduced screen and heavily uses the invisible areas of both screens to store code and data.
=== Characters ===
* Characters are stored as multiple sprite parts and are composed during drawing. Each part has a signed x and y offset relative to the base x,y position of the feet on screen and a width and height. There is no clear separation between heads, bodies and legs.
* Characters are sorted by their y position each frame. They are then draw in increasing y coordinate order.
=== Sprites ===
* Sprites Sprite pixels are stored upside down in memory.* Sprites Sprite pixels are stored as mode 0 with pen 0 as transparent.* Sprites Sprite pixels are stored facing right only and flipped by code in realtime (e.g. the facing left sprite is a mirror of the facing right sprite.).* Characters Sprite pixels are stored as multiple sprite parts and are composed during drawing. Each part has a signed x and y offset relative to the base x,y position of the feet on screen and a width and height. Therefore heads, bodies and legs are separate. This allows re-use for all characters and enemies.* Sprite pixel data is stored as follows:
1 byte like normal (same as mode 0 screen bytes), followed by 1 byte with pixels swapped, this repeats.
It is believed this storage is done so that drawing a sprite facing left, and drawing a sprite facing right will take the same cpu time and so that the this means a more stable frame rate regardless of the direction each sprite is more consistentfacing.
* Characters are sorted by their y position each frameThere is a list of sprites per level. They This takes the form of width, height and pixel data location. With 128KB there is 1 extra ram page per level for level specific sprites. Sprites common to each level are then draw stored in increasing y coordinate ordermain RAM. There are around 223 sprites (including common sprites).
=== Levels ===