This game was released in 1983. As far as I remember, it was available as a cartridge and tape.
Thus, the binary code and data are limited to 16KB of ROM, overlaping basic ROM and basic upper RAM at addresses $8000-$BFFF.
Maze master uses ALL these 16KB. Michael did not use data cruncher and it must have been tedious to fit all data in so few memory. However, we can store today much more complexe games in a 16KB cartridge. Have a look at the C64 16KB Cartridge Game Development Competition.
In next articles, we will rewrite parts of the game, ignoring the cartridge limitations…
In spite of it all, I will avoid self-modifying code. A cartridge is generally a Read Only memory, and this impact the way we implement routines…
The game is divided into three different views :
- The menu screen where player manages his party and buy items.
- The maze 3D view where player moves from square to square in a 20×20 area.
- The encounter view where player select his characters actions during fight.
Even if these screen are using standard characters to display text, all is done in hi-res bitmap mode ! Actually, Michael created his own minimal charset with custom characters for the ‘maze master’ logo in header.
All characters are 8×8 blocks drawn in hi-res bitmap mode by CPU. A subroutine copies 8 bytes from custom charset at $4000-$431F to default bitmap memory at $2000.
Here is the charset used in all screens :
Remaining graphics are monsters pictures, displayed only during encounters. There is a limited set of pictures, matching a total of 40 different monsters. if you play the game, you can notice that a lot of monsters share the same graphics, using a modified color palette.
Humanoids always have the same legs and head/torse choosen among 7 variants.
There are specific graphics for dragons.
Michael used multicolor sprites to draw your ennemies. Each creature is composed of 4 sprites, drawn in double size to fill a 96×84 pixels area on top of the 3D view.
In next article, I will write an article about the flow of activities in the game.