Great Giana Sisters
German publisher Rainbow Arts produced some incredible games on the C64 and Amiga, and one of their greatest was The Great Giana Sisters. As everyone knows, the game was a superb Super Mario Bros ripoff with an incredible soundtrack, and ended up banned by Nintendo after just one week in the stores. The original is therefore incredibly rare and goes for silly money on EBay!
The C64 version is arguably the best version of the bunch, and fits 33 levels into a single 64k load! There are some other interesting tricks that are also happening behind the scenes.
The main player sprite is actually made up from 3 sprites, two multi-coloured sprites plus one high-resolution sprite over the top of it for the eyes and shoes:
The sprites are not perfectly lined up with each other, instead being offset by 3 pixels to give a full height of 24x24 pixels.
Because the player uses up 3 of the C64's 8 sprites, the rest of the game has to be very careful to never put more than 5 sprites in the same horizontal band. If this happened, some of the sprites would disappear completely. When Giana gains the ability to shoot, this uses up yet another sprite, meaning there are only 4 left for the game!
The game uses the VIC chip's bank 0 for it's graphics, meaning that all tile graphics and sprites must reside in the 16k area from $c000-$10000. If you extract all the sprites in that bank, you will see the following:
If you know the game well, you may have spotted one noticable ommision. There are no sprites for the punk version of Giana! The game simply does not have room to store all the graphics in that bank.
But the programmers realised that you cannot be in punk mode at the same time as the normal mode, so the alternate graphics are stored at $a080 in bank #1:
When the first bonus item is collected by the player, the game shows an animation of Giana transforming into the alternate mode. Behind the scenes, the game is swapping 42 of the sprites between the 2 banks. Once the graphics have been swapped over, the transformation animation is stopped and the new punk hair version of Giana appears.
Similarly, when Giana loses a life while in punk mode, the game needs to swap the 42 sprites over once again. If you have a keen eye, you will notice that there is only a single death animation frame so Giana's hair returns to normal the instant she dies. The 3 extra sprites would have consumed 64 bytes each, so 192 bytes in total, which doesn't seem like much. Maybe they simply ran out of time to put them in, or didn't think of it!
If you have any idea what should go in this box, please let me know! :)