More specifically, Platz will manage:
- Loading and displaying level data
- Player/level collision detection
- Moving platforms
- Animated backgrounds
- Patterned backgrounds
- Event notification
Platz levels are stored as fill instructions and have on average roughly one tenth of the flash footprint of traditional maps. This affords huge levels with the potential for up to 255 unique screens of level data (any of which may be repeated multiple times for no extra flash). This number could go up dramatically if the '1284 ever comes to be.

Collision detection is not simply go or stop; Platz will only restrict movement in the direction that is blocked and will detect collisions and handle movement across level slice seams (32 tile boundaries).
Animated backgrounds can range from npcs that you do not wish to waste sprites on, to any kind of environmental animation that you can think of. Loading, animating and displaying these special backgrounds is handled by Platz.

Patterned backgrounds allow you to have interesting looking backgrounds (i.e. not all the same tile) without sacrificing the efficiency of fill instructions. A patterned bg will typically only cost a few more bytes than a regular background, and this cost is only paid once for any particular pattern, no matter the number of bgs that use it. Both patterned and animated bgs will automatically repeat to fill their containing region.

Moving platforms act as expected and can move along either axis and be of any size.

Platz triggers will fire an event whenever the player comes into contact with a bg that is flagged for this purpose. You can then respond to this in an appropriate manner. The demo uses triggers for water entry/exit form switches and for positional sound around the waterfalls. Simple AI guidance or checkpoints would also be possible.
Triggers can be setup to fire in different orientations so that the direction of the player's movement can be responded to appropriately. For example, the waterfall sfx will ramp up and fade away no matter the direction from which you approach.

Platz's ram footprint is relatively low as resources are loaded only when required; its flash footprint is reasonable; and there are plenty of cycles left for typical game logic.
Using Platz for your game is very simple. The basic process is:
1. Initialise Platz table pointers
2. Initialise Platz core
3. Move to your starting screen/slice
4. If the player is moving, call PlatzMove
5. If you need to adjust the player's sprite dimensions, call PlatzSetBoundingBoxDimensions
6. Call PlatzTick each frame
7. Goto 4
The demo also shows how you can save/load your progress.
NB: You must have a formatted eeprom for the save/load feature to work. It may have other saved games, but it should be formatted in unused slots. Pac-Man does not format fully. You can rebuild with
DEMO_OPTIONS = -DFORMAT_EEPROM=1 in the makefile to force a full format. If using v1.09 of the emulator, you can simply delete any eeprom.hex file from the working directory.
Please see the makefile for options such as viewport slack, which dictates at what point the camera will begin following the player. Also note that Platz is still in its early stages and may change significantly in future releases. A version for video mode 2 will hopefully allow for dual-axis scrolling while retaining all of the current features.
TODO list:
- Projectile collisions
- NPC collisions (cycles permitting)
- Trigger system expansion
- Optimization review
I'm happy for feedback or feature requests/submissions for the TODO list. I'll update this post in the coming days with a link to a wiki guide on Platz usage.
Controls:
A: Toggle Lynx/Dragonfly form
Start: Save state
Select: Load state
Dpad to move (up is jump in Lynx form)
Turtle form transition is done with triggers.
