Smiler 5 - The Scattered Runes ------------------------------ Version 1.0 - Digital Prawn - 1st November 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. On the endgame anagram screen, all letter keys are used to enter the anagram rather than the above functions. Background ---------- Smiler, once again joined by cousin Grinner must navigate twenty screens, collecting a letter on each screen before exiting via the green house. The player should note each letter down as together, they form an anagram of a 20-letter English word - which must be worked out by the player and entered in order to reveal the answer, thus completing the game! 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. In Smiler 5, the green house is inactive until the "rune" is collected. Collecting the letter activates the house, allowing both Smiler and Grinner to escape. Either Smiler or Grinner can collect the letter, hoever, both must return to the activated green house in order to complete the level. The green house can be freely passed by both Smiler and Grinner. Smiler or Grinner can be killed by a frowner of either colour (red or magenta) regardless of whether they are currently in active play, or inactive. Red frowners chase Smiler (as in the previous games). 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. Rotate 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. Hint1: 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. Hint2: Try and destory the frowners as early as possible using the white arrows, as this makes completion of the level much easier, although it is not required to destroy all of them in order to complete the level. Hint3: Try and find locations in each level which have a good selection of nearby, accessible varied arrows so that you can use Smiler to guide Grinner across the screen or vice-versa. Smiler 5 Developer Notes (Adapted from Smiler 4) ------------------------------------------------ The game contains six different AY-tunes. All are composed by "The Simulacra" Four of the tunes have been used in the previous Smiler games, however, two of the tunes were especially made for "Smiler 5". 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. In that case, the '0' key has to be pressed six times, to re-enable beeper sound effects as the silent AY tunes are cycled through. As this game, written in C is starting to bloat to around 22K 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. Smiler 5 has the biggest code footprint of all of the Smiler games to date, There is less than 4K of RAM total remaining on a 48K system, but even that is fragmented into three different chunks of free space, so not too useful without relocating everything. The compiled code only has a 1K block of free space immediately above it, so can't grow much further or it would overwrite the AY music player. For this game, I have fully playtested all 20 levels and know them all to be completable (which took several days). Again, the difficulty level varies, but I think it's fair to say that this game has some of the most difficult levels in the entire Smiler series. 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 4 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 5 was done in about two evenings, but the level design and playtesting took much longer. 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. Internally, the endgame anagram screen is considered to be "level 21" and can be accessed using a passcode, just like any normal level. I was very glad to see this game completed. After starting it back in March 2010, life contrived to ensure I did not get a chance to revisit it until late October. This included computer hardware issues, involvement in other, unrelated projects and working longer hours. Finally after resurrecting my Linux VM and a couple of weeks of playtesting, followed finally by a week off work, I was in a position to finally wrap this game up and release it. It took me another couple of evenings just to get good at playing it again, and I found myself surprised by how tricky some of the levels turned out to be. I was even stuck on some levels for several hours, before realising that they were in fact completable. Bugs (Same bugs as Smiler 4, 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. Like Smiler 4, I have re-enabled keyboard auto-repeat in Smiler 5 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. New bugs for Smiler 5:- In the endgame, if you type an incorrect anagram - the anagram screen simply resets to allow another attempt to be made - it does not say "Wrong answer". Winning of the game is indicated by a congratulations message followed by returning to the main menu screen. Although, the message can only be read if the game is in "Beeper soundfx mode" as this delays the return to the menu screen, allowing the player time to read the message. If however, the game is in "AY music" mode, then the game will return to the menu too quickly to allow the player to read it. The workaround is switch to Beeper soundfx mode using the '0' key (on any normal level), before re-accessing the final anagram screen, also to make a note of the endgame screen access code just in case! Cheat ----- To go to any level, just consult the supplied C source code, as it contains all level codes. It also contains the solution to the endgame anagram. 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 a big thank you to all of the above for making the game possible. Coming soon:- Smiler mugs and T-shirts!