Smiler 4 - Grinner on Tour -------------------------- Version 1.0 Digital Prawn 28th March 2010 AY music by The Simulacra Platform: ZX Spectrum 48K & ZX Spectrum 128K Can use AY hardware if available on 48K systems. Keys ---- q,a,o,p - Move Smiler (or Grinner) s - switch between Smiler and Grinner characters m - wait one turn r - restart level x - quit current game (return to main menu) 0 - toggle between BEEPER sound fx and 6 different AY chip tunes In addition, numeric keys 0-9 are used on the level selector screen to enter level passcodes. Background ---------- Cousin Grinner has turned up when you least expect him (the git), and he is literally green with envy at your success (Yes he's the green one). Nevertheless he wishes to take part in the adventurous fun and will assist Smiler in reaching home. He's brought his own problems with him though in the form of magenta frowners which will try to hunt him down. Instructions ------------ Using the above keys, you must navigate both Smiler and Grinner into the green house. Rules are the same as previous games in the Smiler series except:- You use the 's' key to swap between controlling Smiler and Grinner. Smiler is yellow and Grinner is green when active. Whilst inactive, they appear as dithered dark blue. Smiler or Grinner can be killed by a frowner of either colour (red or magenta) regardless of whether they are active or inactive. Red frowners chase Smiler (as in the previous game). Magenta frowners chase Grinner, however either type can kill either player character if they happen to get in the way. The level is completed only when both Smiler and Grinner are at the green house at the same time. The green house is a safe square though and whilst either Smiler or Grinner are on top of it, they cannot be killed by frowners. Frowners cannot move onto the green house. Smiler and grinner can occupy the same square as each other and can pass each other, however frowners can't do this. Various obstacles obstruct your path though, as follows:- Red houses: Block your path. You must find a way around them. Arrows: Smiler (or Grinner) may only move onto an arrow in the direction indicated, but they can move off an arrow in any direction provided they are not otherwise obstructed. The same rule applies to frowners. However, only Smiler and Grinner cause arrows to turn, Frowners do not. Magenta Arrows: Rotate all arrows on the screen clockwise 90 degrees. Red Arrows: Rotate all arrows on the screen anti-clockwise 90 degrees. Blue Arrows: Rotate all blue arrows 180 degrees. Rotate all Magenta arrows clockwise 90 degrees. Roatate all Red arrows anti-clockwise 90 degrees. Do not rotate white arrows. White Arrows: These do not rotate any arrows, however they cause frowners to die should they step onto them. Frowners: Only can move one square at a time and like the player can't move diagonally. If a Frowner catches either player character, or if a player character steps on a Frowner, then they get killed and the level is restarted. Frowners can only move when the player presses a key. Unless otherwise obstructed, red frowners will invariably attempt to move towards Smiler, magenta frowners towards Grinner, even if that means them blindly moving onto white arrows. The wait key 'm' is crucial on some levels in order to cause Frowners to move into areas desired by the player. When 's' is pressed to swap between player characters, a turn is used up and frowners can move during the swap. Each level has a 6-digit access code displayed at the bottom of the screen. On completing each screen, you automatically gain access to the next one. To select a screen, just enter the 6-digit access code on the level selection screen, or just press ENTER to start on screen 1. To change screens, just press 'x' to quit the current game and then enter a new code. Hint: Pay attention to where you leave Smiler or Grinner whilst they are inactive. You can effectively manipulate the movement of frowners or block their movement on certain levels by deliberately leaving Smiler or Grinner inactive in certain positions. Developer Notes (Adapted from Smiler 3) --------------------------------------- The game contains six different AY-tunes. Five of them were composed by "The Simulacra" and one of them by me. The first two tunes were made specifically by The Simulacra for the Smiler 4 game, the others were used in previous Smiler games. The AY music will play back even on a 48K system if the hardware is present. Without the hardware, playback is simply ignored, thus the '0' key could be used just to mute the sound FX on a standard 48K system. As this game, written in C is starting to bloat to around 20K of compiled code, I now use lower contdended memory to store the dormant AY tunes, with only the currently playing tune being relocated to upper memory on demand. For this game, I have fully playtested all 20 levels and know them all to be completable. Again, the difficulty level varies. The white arrows were originally green, but this really didn't show up too well on a cyan background. This game has large levels, same size as Smiler 3 at 16x11 (including the outer perimiter) and thus it took me quite a bit longer to do the level design than for the previous games. The addition of the Grinner player character also made the game take longer to playest that the previous games. Extra coding for Smiler 4 was done in one evening, but the level design and playtesting took several days. The lower screen area is printed to, but this is seamless in Z88DK which has rows 22 and 23 available unlike ZX BASIC which uses a separate stream. Bugs (Same bugs as Smiler 3, possibly more added!) -------------------------------------------------- Will these ever be fixed, who knows? Most keys can be used to 'wait a turn' apart from 'm', but I recommend using 'm' as other keys may be reserved in future games and 'm' is in a convenient location on the keyboard. A side-effect of this behaviour is that even pressing the '0' key to change the music can cause Frowners to move. So, the recommendation is to restart the level with 'r' after changing tunes. The tunes still can't be changed on the main menu - only in the game itself. This game is a bit more sluggish than the previous three games as the main game logic is now more complicated, thanks to the Frowners and also the fact that the levels are larger. So to compensate, I have re-enabled keyboard auto-repeat which speeds play up a bit. However, sometimes unless the movement keys are pressed fairly rapidly, it is possible to accidentally move two spaces instead of one. The alternative was to turn auto-repeat off like in the second game, but I found that it made this particular game annoyingly slow to play. Sometimes after you restart a level or get killed, further game actions may still be processed e.g. a Frowner may kill you after you pressed 'r' to restart the level, but before the level actually restarts. I have determined that these things do not affect the actual gameplay in any way. Sometimes when AY music is playing, you may have to press a key to advance to the next level on completion. This issue does not occur when using BEEPER SFX. Cheat ----- To go to any level, just consult the supplied C source code, as it contains all level codes. Credits ------- Game designed and coded by Digital Prawn. Also uses AY music player "vtplayer" writen by Sergey Bulba. AY Chip music by The Simulacra. Uses Z88DK sound effects libraries by Stefano Bodrato & IM2 and malloc libraries by aralbrec. Not to mention much other code that made its way into the Z88DK system. ZX-Blockeditor by Claus Jahn was also used to construct the final tapefile. Sprites originally desgined in SevenUp sprite editor v1.20 by Metalbrain which also gave me the idea (via the sprite rotation function) of using rotating arrows in the first Smiler game onwards. So big thanks to all of the above for making the game possible.