====== SANTA'S GROTTO ====== {{:otros:Santa_Grotto_p1.jpg?690|}} ===== Info ===== ^ Author | Phil Lawson | ^ Compatibility | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | 1987 | ^ Gender | Arcade | ^ Controls | Keyboard | ^ Language | English | ^ Status | [[preserved|Preserved]] | ===== Screenshots ===== {{:otros:Santa's_Grotto_screenshot01.png?220}} {{:otros:Santa's_Grotto_screenshot02.png?220}} {{:otros:Santa's_Grotto_screenshot03.png?220}} {{:otros:Santa's_Grotto_screenshot04.png?220}} ===== Description ===== It's Christmas Eve and poor Santa Claus can't remember where all the presents are. This means that you, as his most faithful helper, have to search for them in his network of underground caves. In addition to finding and collecting 220 gifts, you also have to clear the place of 130 tons of snow that got in while the roof was under repair. To make matters worse, the Society Against Enjoying Christmas is booby-trapped all over the place with kamikaze snowballs and puddles of water covered in thin ice. Snowballs will do their best to crush you as they fall from above, while stepping on ice will mean you'll fall into the icy water below. Either way, you lose a life, and since you only have three to start with, you better watch out. Just before you start your quest, Santa Claus appears and tells you that the magical snowmen that live in the cave will help you against the ice pools, but there is also an unpleasant side effect. He can't remember what that is, so you'll have to find out for yourself. He also mentions that snowballs can be pushed into an empty space allowing access to other areas. At the start of the game, you will be prompted to enter the keys you want to use for left, right, up, down, and exit. The machine code and screen data are set and the game will start. If you find yourself in an impossible situation, the exit key will cause you to leave the game. An arcade game with brilliant graphics. Let's have fun. ===== Listing ===== * **__Listing - SANTA.BAS__** 10 'KERSTMAN.003 (SANTA'S GROTTO). Auteur: Phil Lawson. Computing with the Amstrad PCW 20 'Bewerkt en vertaald voor Utilities Disk 3 30 PRINT CHR$(27)+"E"+CHR$(27)+"H":PRINT "**************************************";CHR$(27)+"p";" KERSTMAN.003 ";CHR$(27)+"q";"************************************" 40 PRINT "****************************************************************************************" 50 PRINT:PRINT" Een arcade-game met schitterende grafische weergave. Zie voor spelregels de handleiding.":PRINT" ":PRINT:PRINT" Veel plezier...":PRINT" "; 60 PRINT" ":PRINT" ":PRINT:PRINT" ":PRINT:PRINT" "; 70 PRINT" ":PRINT:PRINT:PRINT CHR$(27)+"p";"Press SPACE BAR to start.";CHR$(27)+"q" 80 WHILE INKEY$ <>"":WEND:WHILE INKEY$ <>" ":WEND 90 REM SANTA'S GROTTO 100 REM by Phil Lawson 110 REM (c) Computing With The Amstrad 120 REM-------------- PCW ------------ 130 esc$=CHR$(27):cl$=esc$+"E"+esc$+"H" 140 DEF FNat$(x%,y%,a$)=esc$+"Y"+CHR$(32+y%)+CHR$(32+x%)+a$ 150 PRINT esc$+"f":PRINT cl$:RESTORE 1180 160 FOR a=1 TO 5:READ a$ 170 PRINT"Your key for: ";a$, 180 d$(a)="":WHILE d$(a)="":d$(a)=INKEY$ 190 WEND:d$(a)=UPPER$(d$(a)):t=0 200 IF a=1 THEN 230 ELSE FOR b=1 TO a-1 210 IF d$(a)=d$(b) THEN t=-1 220 NEXT b:IF t THEN 180 230 PRINT d$(a):NEXT a 240 PRINT "Laad data... geduld a.u.b." 250 MEMORY &HDFFF:RESTORE 1880 260 addr=&HE719:lin=1780:READ a$,c$ 270 WHILE a$<>"END":lin=lin+10 280 chk=0:FOR a=1 TO 12 290 value=VAL("&H"+MID$(a$,a*2-1,2)) 300 chk=chk+value 310 POKE addr,value:addr=addr+1:NEXT 320 IF HEX$(chk,3)<>c$ THEN PRINT"Fout in regel ";lin:END 330 READ a$,c$:WEND:addr=57350! 340 FOR a=1 TO 4 350 POKE addr+a,ASC(d$(a)):NEXT 360 lives=3:screen=&HE719 370 PRINT cl$:CALL screen:GOSUB 1060 380 PRINT FNat$(29,8,"Schermbewerking") 390 PRINT FNat$(30,12,"Even geduld..") 400 FOR a=&HE00B TO &HE5F2:POKE a,255 410 NEXT:RESTORE 1510:FOR a=1 TO 288 420 READ x:POKE &HE5F2+a,x:NEXT 430 addr=57487!:RESTORE 1200 440 PRINT esc$+"p":FOR a=1 TO 30 450 READ a$ 460 FOR b=1 TO 30:v=0:t$=MID$(a$,b,1) 470 IF t$="W" THEN v=0:GOTO 560 480 IF t$="S" THEN v=7:GOTO 560 490 IF t$="B" THEN v=2:GOTO 560 500 IF t$="G" THEN v=4:GOTO 560 510 IF t$="I" THEN v=5:GOTO 560 520 IF t$="P" THEN v=1:GOTO 560 530 IF t$="M" THEN v=6:GOTO 560 540 IF t$="X" THEN v=8:maddr=addr 550 IF v=9 THEN PRINT"Fout in data":END 560 POKE addr,v:addr=addr+1:NEXT 570 addr=addr+12:NEXT 580 WHILE INKEY$<>"":dum$=INKEY$:WEND 590 t1=INT(maddr/256):t2=maddr-(t1*256) 600 POKE &HE004,t2:POKE &HE005,t1 610 POKE &HE718,3:GOSUB 1090 620 FOR a=&HE713 TO &HE715:POKE a,0:NEXT 630 PRINT FNat$(26,2,"PRESENTS SNOW ") 640 speedup=&HE74A:CALL speedup 650 game=&HE752:WHILE lives>0 660 WHILE PEEK(&HE713)=0 670 d$=UPPER$(INKEY$) 680 IF d$="" THEN d$=" " 690 IF d$=d$(5) THEN POKE &HE713,1 700 POKE &HE006,ASC(d$):CALL game 710 gi$=MID$(STR$(PEEK(&HE714)),2) 720 sn$=MID$(STR$(PEEK(&HE715)),2) 730 WHILE LEN(gi$)<3:gi$="0"+gi$:WEND 740 WHILE LEN(sn$)<3:sn$="0"+sn$:WEND 750 IF VAL(gi$)<>gi OR VAL(sn$)<>sn THEN PRINT FNat$(28,4,gi$+SPACE$(7)+sn$) 760 gi=PEEK(&HE714):sn=PEEK(&HE715) 770 IF gi>219 AND sn>129 THEN 880 780 WEND:IF d$=d$(5) THEN lives=1 790 lives=lives-1:POKE &HE713,0 800 WHILE inkeys$<>"":WEND 810 WEND:GOSUB 1060 820 PRINT FNat$(30,10," T O U G H ") 830 PRINT FNat$(30,16," LUCK ") 840 PRINT FNat$(20,26," SPACE = again : K = stop ") 850 zz$="":WHILE zz$="":zz$=INKEY$:WEND 860 IF UPPER$(zz$)="K" THEN STOP 870 IF zz$=CHR$(32) THEN PRINT cls$:GOTO 360 ELSE GOTO 850 880 REM spel afgelopen 890 sprint=&HE813:a1=&HE004:a2=&HE005 900 FOR b=57534! TO 57555! 910 POKE a1,b-(INT(b/256))*256 920 POKE a2,INT(b/256):CALL sprint:NEXT 930 FOR b=57555! TO 58605! STEP 42 940 POKE a1,b-(INT(b/256))*256 950 POKE a2,INT(b/256):CALL sprint:NEXT 960 FOR b=58605! TO 58584! STEP -1 970 POKE a1,b-(INT(b/256))*256 980 POKE a2,INT(b/256):CALL sprint:NEXT 990 FOR b=58584! TO 57534! STEP -42 1000 POKE a1,b-(INT(b/256))*256 1010 POKE a2,INT(b/256):CALL sprint:NEXT 1020 GOSUB 1060 1030 PRINT FNat$(30,10," W E L L ") 1040 PRINT FNat$(30,16," D O N E ") 1050 GOTO 840 1060 PRINT CHR$(27)+"p":FOR a=6 TO 27 1070 PRINT FNat$(16,a,STRING$(39," ")) 1080 NEXT:PRINT CHR$(27)+"q":RETURN 1090 GOSUB 1060 1100 RESTORE 1170:FOR a=1 TO 6:READ a$ 1110 PRINT FNat$(72,(a*2)+5,a$):NEXT 1120 PRINT FNat$(66,4,CHR$(134)+STRING$(16,CHR$(138))+CHR$(140)) 1130 FOR a=5 TO 19:PRINT FNat$(66,a,CHR$(133)):PRINT FNat$(83,a,CHR$(133)):NEXT 1140 PRINT FNat$(66,20,CHR$(131)+STRING$(16,CHR$(138))+CHR$(137)) 1150 FOR a=1 TO 5:READ a$:PRINT FNat$(70,22+a,d$(a)+" - "+a$):NEXT 1160 key=&HE950:CALL key:RETURN 1170 DATA Wall, Snowball, Present,Snowman,Hole,Snow 1180 DATA Left,Right,Up,Down,Stop 1190 REM data voor display 1200 DATA WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 1210 DATA WBBWBMGWGMBPPWBIIGIBIBBBBBBSBW 1220 DATA WSSISWMWGGWIIWBBIGIMIBBBBBSBSW 1230 DATA WGGIIWIWWPWWIWSSIGISIBBBBSBSPW 1240 DATA WBIIWWMWWPBWIWSIIGISIBBBSBSPPW 1250 DATA WWIIIWGPWPGWIWISSGISIBBSBSPPGW 1260 DATA WBGGIWPPWWGWIWPSSGISIBSBSPPGGW 1270 DATA WSIIIWPGMWGWIWPSSGISISPSPPGGGW 1280 DATA WSGGGWSWSWGWIWBSSGGGWWWWWWWWWW 1290 DATA WSGGGWGWSWGWIWSSSPPPWIIBIBBIIW 1300 DATA WSSSIWGWSWGWSWPPPIIPWIPSPSSGIW 1310 DATA WGGGIWGWSWGWIWGWPIIPWIISIIIGGW 1320 DATA WSSSIWGWSSSWSWIWPPPPWBWSSMIIGW 1330 DATA WSGGGWGWSSSSSWIWGPPBBBWIIIIGPW 1340 DATA WSSSGWGWWWWWWWIWGGPGGGPPPPPPPW 1350 DATA WGGSSWGGGGGBBWIWWWWWPWWWWWWWWW 1360 DATA WBGGSWIBBBIBBWIWGPPBPPPPGBBBBW 1370 DATA WBIIBWIBBBIIIWIWGPSSWIIIPGBBBW 1380 DATA WISSSWIIIIIGGWGWGPBIWIGISSGBBW 1390 DATA WMWWWWPPPPPGGGGWGBIMWIIISSSGBW 1400 DATA WSWSSSSBBBPPPPWWGWWWWWWWWWSSGW 1410 DATA WSSBBBSSSSPPPBBWGSPBBBBBBWSSSW 1420 DATA WSGGGGGPPGGSGIIWWSBBBBBBBWBBSW 1430 DATA WWWWWWWWPWWWWWWWPPGGGGGGGWGGSW 1440 DATA WIBBBBPPPPPBBBBWPSSSXSSSSWPPSW 1450 DATA WIGGGGPWWWBGGGGWPSSSSSSSSWBPSW 1460 DATA WISSSSPSSSSPPPPWPPPPPPPPPWSPGW 1470 DATA WIGGGPPBBBPPGGPWGMBBBBBBBPPGGW 1480 DATA WIWMMWIIIIIWMMWWGISSSSSSSSGGGW 1490 DATA WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 1500 REM Data voor figuren 1510 DATA 223,223,223,0,253,253,253,0 1520 DATA 223,223,223,0,253,253,253,0 1530 DATA 223,223,223,0,253,253,253,0 1540 DATA 223,223,223,0,253,253,253,0 1550 DATA 0,0,0,0,0,0,0,0 1560 DATA 0,0,0,0,0,0,0,0 1570 DATA 0,0,0,0,0,0,0,0 1580 DATA 0,0,0,0,0,0,0,0 1590 DATA 0,7,31,62,117,106,213,234 1600 DATA 0,224,248,188,94,174,87,171 1610 DATA 213,234,117,122,61,31,7,0 1620 DATA 87,175,86,174,92,248,224,0 1630 DATA 0,7,31,62,117,106,213,234 1640 DATA 0,224,248,188,94,174,87,171 1650 DATA 213,234,117,122,61,31,7,0 1660 DATA 87,175,86,174,92,248,224,0 1670 DATA 0,0,0,6,9,8,4,3 1680 DATA 0,0,0,48,72,136,144,224 1690 DATA 63,48,48,63,48,48,63,0 1700 DATA 254,134,134,254,134,134,254,0 1710 DATA 0,60,127,127,127,63,63,31 1720 DATA 0,60,254,254,254,252,252,248 1730 DATA 31,63,63,127,127,127,60,0 1740 DATA 248,252,252,254,254,254,60,0 1750 DATA 7,8,18,16,8,7,15,6 1760 DATA 224,16,72,8,16,224,248,28 1770 DATA 33,64,65,64,65,64,32,31 1780 DATA 132,2,130,2,130,2,4,248 1790 DATA 170,85,170,85,170,85,170,85 1800 DATA 170,85,170,85,170,85,170,85 1810 DATA 170,85,170,85,170,85,170,85 1820 DATA 170,85,170,85,170,85,170,85 1830 DATA 3,12,18,16,12,3,1,127 1840 DATA 192,48,72,8,48,192,128,254 1850 DATA 7,7,7,7,6,6,6,31 1860 DATA 224,224,224,224,96,96,96,120 1870 REM Machinetaal 1880 DATA CD3CE711982C2100B6016801,406 1890 DATA 3E20F5D53E0873237223133D,3E9 1900 DATA 20F8D1EB09EBF13D20ECC9C1,78C 1910 DATA CD5AFCE900C9C1CD5AFCE000,799 1920 DATA C926062E08CD43E7C9CD13E8,5B3 1930 DATA CD5FE7CD82E7CD8FE8C93A06,796 1940 DATA E00100002107E0BE20020BC9,39D 1950 DATA 23BE200203C923BE200401D6,3AB 1960 DATA FFC923BEC0012A00C978B1C8,64E 1970 DATA 2A04E02202E0CD37E909FE00,506 1980 DATA C8FE012825FE072814FE0428,47F 1990 DATA 16FE022824FE032820FE0528,3D6 2000 DATA 2EFE062847DD2115E71804DD,494 2010 DATA 2114E7DD340036082204E0AF,420 2020 DATA ED423601C979FE2AC8FED6C8,734 2030 DATA 097EEE01C03602ED4218E3AF,547 2040 DATA ED423C77093213E7CD3DE921,52B 2050 DATA 18E73528092A02E02204E036,3AD 2060 DATA 08C9F1C9E53601218FE011EC,634 2070 DATA 047EFE042804FE052003EE01,3C5 2080 DATA 771B237AB320EEE118A8F3CD,651 2090 DATA 3CE7DD215070DDE52A04E001,5B2 2100 DATA AF00AFED4206090E0FE57EFE,51A 2110 DATA 082836FEFF20023E01878787,459 2120 DATA 8787FD21F3E55F1600FD19C5,654 2130 DATA CD72E81170FADD19C1E1230D,66A 2140 DATA 20D7111B0019DDE111A005DD,48D 2150 DATA 191002FBC9DDE518C2FD21F3,69C 2160 DATA E6C5CD72E8360818D6FDE506,6E6 2170 DATA 020E10FD7E00DD7700FD23DD,4EC 2180 DATA 230D20F311C002DD1910EAFD,503 2190 DATA E1C92175E511EC047E3D3D28,546 2200 DATA 2B3D280B2B1B7AB320F2C936,41F 2210 DATA 0318F5012A00CD37E9FE0828,456 2220 DATA 41FE012804360218E33E0309,2E9 2230 DATA 77EE02ED427718D8012A00CD,4F5 2240 DATA 37E93D28D63D20CCAF3217E7,563 2250 DATA 3A16E73D280CCD10E93A17E7,4A6 2260 DATA A7CC2CE918B6CD2CE93A17E7,670 2270 DATA A7CC10E918AA3E013213E777,510 2280 DATA 093602CD3DE92118E7352809,3BA 2290 DATA 2A02E02204E03608C9D1C923,4D6 2300 DATA 7E2B3DC0012B00CD37E9FE01,4BE 2310 DATA C03217E777093602AF3216E7,486 2320 DATA ED42C92B7E23FE01C0012900,4AD 2330 DATA 18E109AF7EED42C94E061036,4C1 2340 DATA 08D9CD13E8D971D9CD13E8D9,76D 2350 DATA 10F1C9CD3CE7FD21F3E5DD21,7AE 2360 DATA 306CCD72E8114000FD19CD72,569 2370 DATA E80604112000FD19FD19D5C5,4E9 2380 DATA CD72E8C1D110F5C900000000,587 2390 DATA END,END ===== Controls ===== UP = USER DEFINED DOWN = USER DEFINED RIGHT = USER DEFINED LEFT = USER DEFINED LEAVE GAME = USER DEFINED ===== Loading the program ===== 1.- Insert the CP/M disc on side 2 2.- Write BASIC and wait for it to load 3.- Remove the CP/M disk and insert the disk containing the Santa's Grotto game 4.- Type run "Santa" and press the "ENTER" key ===== Extras ===== * Listing of the program in a large-circulation magazine of the time {{:otros:Santas_grotto_01.jpg?170}} {{:otros:Santas_grotto_02.jpg?170}} ===== Download ===== * {{:otros:Santa's Grotto (Basic).zip|Santa's Grotto }}(game in dsk format, compressed with zip) ===== Video ===== {{ youtube>oW752yBtzjI?large }}