My Faxanadu level editor is coming along nicely so it's about time I write another update on the internals of the game. Today's post is the beginning of a mini-series about the data the game uses to create levels and to display them on the screen. Most of the mini-series is based on
Vagla's document. Whenever that document is incomplete or erroneous I'm going to try my best to correct the information from there.
Let's start with a brief overview of how levels are loaded. Every screen in the game is made up of several independent datasets which are combined by the game whenever a new screen is loaded. These datasets are:
- Screen data: A screen consists of 16x13 blocks. This data defines which blocks appear on a screen.
- TSA (Tile Squaroid Assembly) data: Each block is made up of 4 tiles. Which tiles these are is stored here.
- Block attributes: Defines the palette to be used when drawing the tiles of a block.
- Block properties: Defines the behaviour of a block (air, solid, ladder, ...)
- Scroll data: Defines on what edge of a screen it's possible to leave the screen.
- Door location table: Defines where doors are located.
- Door destination table: Defines where doors lead to.
- Palettes: Defines which colors are used to draw a screen.
Today's part of the mini-series begins with the first step: The screen data. But before I'm going to explain how to read that data I'm going to give a brief overview of how the data is stored in the file.
Continue reading "Faxanadu level data - Part I"