Sid Spanners 3: The Nuthouse ---------------------------- By Digital Prawn, 25th March 2011 With intro music by Mister Beep Platform: ZX Spectrum 48K KEYS ---- LEFT - O RIGHT - P JUMP - Q/Z/M Instructions ------------ Welcome to Sid's mansion, a.k.a. The Nuthouse. A place where time, space and scales of distance have no real meaning and where some rooms seem to serve a purpose, yet others are, well a bit of a mess. (We'll blame it all on the cowboy builder, "Dave Pilchard"). As in the first two games, guide Sid Spanners through various rooms of platform mayhem, unscrewing nuts (small white circles) as you go. Simply touching a nut causes it to unscrew. Unlike the previous two games, this one is flip-screen and the game is won by unscrewing all 128 nuts, scattered around 16 rooms. In SS3, there is no time limit and many rooms may have less than four enemies, but to compensate, some rooms may have a conveyor belt or moving platform. You have 16 lives in which to complete the game. On losing a life you become invulnerable for a few seconds in order to get clear of any nearby enemies. In one particular room, you will meet Sid's girfriend, Nellie Nutjob, who guards one nut until she is sure that you have unscrewed every other nut in the house. So be sure to unscrew Nellie's nut last. Oh, and don't even think about bothering her until the job is done! Thanks ------ Thanks to Mister Beep for making the intro tune for this game and for supplying me with the tune and music player engine by Lyndon Sharp (reverse-engineered by Shiru who made a convertor tool). Special thanks to FrankT and WoS forum members for modifiying the music engine so that it returns control back to the game. As in the first two games, thanks to everyone involved in the development of the Z88DK system and its associated libraries of which this game makes extensive use. Special thanks also to R-Tape for enquiring about the game and for trying out the preview release. Thanks to Milos "baze" Bazelides for publishing a generic z80 pseudo-random number generator used in this game to generate white noise. Thanks to Stuart Lowe for publishing generic C functions for converting integers to strings, used by the custom print routines in this game. Thanks to metalbrain for bin2tap.c and bin2code.c and also for his advice on using the latter. Thanks also to Timmy of the WoS forums for notes and advice and feedback on playing the previous Sid Spanners games. Developer notes --------------- This sequel differs from the previous two Sid Spanners games in that I decided not to use Z88DK's stdio.h or sound.h, but rather use my own simpler custom print and sound routines. This was mainly to save memory as dropping the standard I/O library saves a bit of space when such complexity is not needed. Dropping the sound libary allows a C program to overwrite the system variables area (in IM2 mode), as the sysvar BORDCR is normally used by sound.h (Which in turn uses some ROM routines). I'd originally planned 64 rooms, but later reduced it down to 16 rooms just so I could finally get the game finished. Also, I thought it may be more appealing to more casual players. There is approx 7K of free RAM remaining as a result. I also have further ancillary materials available for this game, if anyone is interested. (Not in this archive). Namely the ANSI-C program used to convert room desgins from a plain text format to compressed binary format.(A custom program called lcrunch3). Also, the room files themselevs in plain-text format. Also I have the separate tapfiles used to construct the final program, although these can also be manually split out from sidspan3.tap using something like ZX-Blockeditor if desired. Known bugs ---------- In rooms with a conveyor belt, standing on a normal brick on the same row as the belt will move Sid in the same direction as the belt. This would've been easy to fix, but I like the way it surprises the player, so I left this "feature" in. Sometimes, Sid can jump onto a brick within an external wall, just below a left or right-hand passage. This wasn't intentional, but is of no consequence, just jump up or drop down to get out of it. The conveyor belt slows the gameplay down a bit so I've used it sparingly, this is becuase the "conveyor" routine is lazily written in C instead of asm (as it should have been implemented). Not really a bug, but a lot of the main game loop runs in contended RAM, when I should have moved all of the data area up by around 7K to avoid this. On completing development of the game though, I did not fancy reorganising the whole memory map from scratch. This issue was ultimately due to the number of in-game rooms being reduced to 16. The End ------- The main purpose of developing these not-too-serious games was to allow me to learn the basics of the sprite library and how to put together platform games & flip screen games in C, using Z88DK and the SP1 sprite library. This goal has now been acheived and so this now concludes my work on the Sid Spanners series (for the forseeable future at least) and it's time for me to move onto other things. However if people enjoy playing the games, then that's a bonus! Sid Spanners 3: The Nuthouse Version 1.1 - 10th April 2011 Bugfixes:- The BASIC loader now sets the INK/PAPER to black in the lower two rows of screen, before the loading screen is loaded, as originally intended. The three misaligned doorways between rooms 01->04, 02->10 and 14->15 have now been fixed. In room 15 "The Back Garden", the tree trunk now no longer behaves like an extension of the conveyor belt (The "tree conveyor bug" is fixed). An obscure bug in the collision detection routines could allow a player to fall or jump downwards diagonally through an enemy sprite without losing a life under certain conditions. This is now fixed. The fixed code runs a tiny bit faster than the original bugged code as I was able to remove some unnecessary 8-bit to 16-bt casts. The collision detection is now purely an 8-bit calculation, as it should be. The number of lives has been reverted back to 8, the same as in the pre-release version of the game. The v1.0 release had 16 lives which was universally agreed was far too many and made the game too easy. Notes: POKEs published for version 1.0 of the game will likely not work for version 1.1 as most of the game code has moved slightly in memory due to the above fixes. Sid Spanners 3: The Nuthouse version 1.2 update 14th April 2011 Fixed a couple of bugs that were remaining in version 1.1. 1. The "Nellie Nutjob death bug". The player now dies as intended if they touch Nellie Nutjob with only 1 life remaining. (this avoids the game subsequently crashing). 2. The "Intro screen auto exit" bug is now fixed. This occured on the Java ZZSpecturm emulator and possibly other emulators. It was caused by Kempston joystick detection code in the music player. This is now patched out on loading to prevent this issue. The game does not support Kempston joystick - it's purely keyboard-only. Digital Prawn