----------------------------------------------------------------------------- From : Jean-Sebastien Monzani (you can call me STrix !) Contact : JMONZANI@p12.310.fn.alphanet.ch Subj. : Shadow Castle, a great game for HP28S version 2.BB ! ----------------------------------------------------------------------------- PLEASE, I WANT SOMETHING NEW FOR MY HP-28S !!!!! BUT HERE COMES : /--------------------------\ ~| S H A D O W C A S T L E |~ \--------------------------/ A FABULOUS GAME CODED BY : STrix O.K. So, what should I do ? - Type in the following listings - Check them - Run GAME - Enjoy ;-) It is a REALLY simple game. You are moving a Smiley in the Shadow Castle by pressing on : 7 8 9 (up) 4 5 6 (5 stops your move) 1 2 3 (down) You should collect bonus (small balls : the "Goodies"), avoid the Bad Smileys, take the key, find the door and... well, that's all. (Use the Ladders to climb up). CAUTION ! Other keys will STOP the game (it's a BUG ! :-( ). Use KILL! to purge unused datas if you've made a mistake :-]. Please, fell free to create your own new levels ! The map of screen is stored in LVL0, and the coding is the following : - A/B : Left and right bricks - C : Single brick - D : Platform - E : Rocks - F : Nothing - G : Goodies (Randomly put : See GOODPUT) - H : Ladders - I : Key (Randomly put) - J : Door (Randomly put) - K : Bad Smiley (Randomly put) If you enjoyed this, please mail :-) !!!! Here is the listing ([NAME : checksum]) : ( >= means greater or equal, <= (OK !), <> means different...etc...) A trick : To type the special char. "!" : 33 CHR STR-> { } + MENU and use your CUSTOM menu :-) !! [GAME : 8203] << FAST 0 0 -> XS YS << XLIB 800 0 DO DO TEST LEVEL Y YE + 1 + GET X XE + DUP SUB IF DUP "F" >= SWAP "H" <> AND THEN 1 'YS' STO 0 'XS' STO END X XS + 'X' STO Y YS + 'Y' STO LEVEL Y YE + GET X XE + DUP SUB IF "F" < THEN X XS - 'X' STO Y YS - 'Y' STO END SPR UNTIL KEY END STR-> DUP { (-1,1) (0,1) (1,1) (-1,0) (0,0) (1,0) (-1,-1) (0,-1) (1,-1) } SWAP GET C->R 'YS' STO 'XS' STO { LEFT BAS RIGHT LEFT FACE RIGHT LEFT DOS RIGHT } SWAP GET RCL 'SMILE' STO UNTIL 0 END >> >> [GETIT : CE9A] << FAST LEVEL Y YE + GET -> T << LEVEL Y YE + T 1 X XE + 1 - SUB "F" + T X XE + 1 + 99 SUB + PUT 'LEVEL' STO SCR 1 Y 137 * X 8 * + SUB VIDE + SCR Y 137 * X 8 * 9 + + 548 SUB + 'SCR' STO SPR >> >> [GOOTPUT : 3376] << FAST 0 0 "" -> THING I J T << 1 SWAP START DO RAND 18 * IP 2 + 'I' STO RAND 9 * IP 2 + 'J' STO UNTIL LEVEL J GET I DUP SUB "F" == END LEVEL DUP J GET 'T' STO T 1 I 1 - SUB THING + T I 1 + 99 SUB + J SWAP PUT 'LEVEL' STO NEXT >> >> [INIT : 53A7] << FAST 0 'SCO' STO 0 'CLEFLAG' STO 4 'VIE' STO " SHADOW CASTLE (STrix)" STAT 3 'X' STO 1 'Y' STO 1 'XE' STO 1 'YE' STO LVL0 'LEVEL' STO 9 "G" GOODPUT 4 "K" GOODPUT 1 "I" GOODPUT 1 "J" GOODPUT MSCR >> [KILL! : 3F] << { XE YE X Y SCR LEVEL VIE SCO CLEFLAG } PURGE >> [LVL0 : A820] { "ABABABABABABABABA" "BFFFFFFFFFFFFFFFF" "ABHABCHABABCHABAB" "BFHFABHFFFFCHFFFF" "BFHFFCHABHABCHCDD" "ABDDFCHFCHFFCHCFF" "BABFABDHCHCFCHCFA" "ABABCFFHFHCFCHABF" "EFFFFCHABABFABABA" "EFFFABHFFFFFFFFFF" "EEHABABABABABABAB" "EFHFFFFFFFFFFFFFF" "EEEEEEEEEEEEEEEEE" } [MSCR : D741] << FAST "" ->L << CLLCD "" 'SCR' STO YE DUP 3 + FOR J LEVEL J GET 'L' STO SCR XE DUP 16 + FOR I { BLK1 BLK2 BLK RAIL BALLS VIDE GOOD LADDER CLEF DOOR BAD } L I DUP SUB NUM 64 - GET RCL + NEXT 0 CHR + DUP ->LCD 'SCR' STO NEXT >> >> [SPR : 878A] << FAST IF X 17 >= THEN XE 15 + 'XE' STO X 15 - 'X' STO MSCR END IF X -1 <= THEN XE 15 - 'XE' STO X 15 + 'X' STO MSCR END IF Y 3 >= THEN YE 3 + 'YE' STO Y 3 - 'Y' STO MSCR END IF Y -1 <= THEN YE 3 - 'YE' STO Y 3 + 'Y' STO MSCR END SCR 1 Y 137 * X 8 * + SUB SMILE + SCR Y 137 * X 8 * 9 + + 548 SUB + ->LCD >> [SPRITE LIST : ...well, type it right ;-) !] Type each list and use ->SPR to create and STO the sprite. { SMILE 60 66 169 193 193 169 66 60 } { BLK2 232 212 232 212 232 212 254 255 } { BLK1 128 192 232 212 232 212 232 212 } { BLK 128 192 232 212 232 212 254 255 } { RAIL 27 21 21 27 27 21 21 27 } { VIDE 0 0 0 0 0 0 0 0 } { LADDER 0 255 34 34 34 34 255 0 } { GOOD 0 0 96 208 240 96 0 0 } { RIGHT 60 66 129 145 165 161 98 60 } { LEFT 60 98 161 165 145 129 66 60 } { BALLS 111 214 246 109 111 214 246 109 } { BAD 60 122 151 223 223 151 122 60 } { DOOR 254 17 17 1 1 37 254 36 } { CLEF 224 32 96 32 96 144 144 96 } { FACE 60 66 149 161 161 149 66 60 } { DOS 60 66 129 129 129 129 66 60 } { BAS 60 66 169 193 193 169 66 60 } [SPR-> : 4892 (Not necessary)] << -> n << { } n + 1 n RCL SIZE FOR i n RCL i i SUB NUM + NEXT >> >> [->SPR : 3629] << -> l << "" 2 l SIZE FOR i l i GET CHR + NEXT l 1 GET STO >> >> [STAT : 72A4] << FAST CLLCD # 11000011101111000b SYSEVAL 1 DISP # 11000011110001001b SYSEVAL "Score " SCO ->STR + 3 DISP "Life " VIE STR + 4 DISP >> [TEST : E03F] << FAST LEVEL YE Y + GET X XE + DUP SUB DUP IF "G" == THEN GETIT 600 .1 BEEP SCO 1 + 'SCO' STO END DUP IF "I" == THEN GETIT 1 'CLEFLAG' STO END DUP IF "J" == CLEFLAG AND THEN DROP " YOU WIN !" STAT KILL! 1 WAIT CLMF ABORT END IF "K" == THEN 200 .1 BEEP VIE 1 - DUP 'VIE' STO IF 0 <= THEN " GAME OVER" STAT KILL! 1 WAIT CLMF ABORT END END >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ That's all ! That's all ! That's all ! That's all ! That's all ! That's all ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ And, the usual FAST (from Eric Toonen :-) [MFAST : D000] << # 1FFF00F1F0302331h # C8084612411310D5h # 3B82h SYSEVAL # 7195h SYSEVAL # 44A4h SYSEVAL >> and STO the System Object under the name FAST. A small CheckSum (slow !!!) by Friedrich Scroeders :-) : [CHK : 6A93] << RCLF STD HEX 64 STWS SWAP RCL ->STR 16 STWS DUP #0h 1 ROT SIZE FOR j OVER j j SUB NUM R->B XOR RL NEXT ->STR 3 OVER SIZE 1 - SUB ROT STOF SWAP DROP >> That's all, folks, see you next !!! ;-) Hi to Alex {B-/ , GMJr :-O & Jo %-] STrix 10/07/94 ----------------------------------------------------------------------------- "My name is STrix, and it would be yours, if you were me !" (play Megarace !) -----------------------------------------------------------------------------