Golden Child Posted December 4, 2022 Share Posted December 4, 2022 (edited) I'm trying to play Santa and the Goblins and looking at the code I've figured out a few things: sayelvhallo --> how can i help saygobhallo --> go away sayelvway --> gives you a direction sayelva pie -> you give him a pie sayelvread -> something to do with a map? sayelvbedroom -> upstairs saygobbedroom -> find a chimney sayelvhelp -> how sayelvof goblin -> give him a pie saygobof goblin -> give me a pie sayelvlamp for -> it has magical powers saygoblamp for -> it has no use sayelvwand for -> to get rid of goblins saygobwand for -> to get rid of elvin so if you look at the code, there's a big DATA list that has 27 different items for the 9 different phrases to say to either "elv" or "gob": READ INP$,ELV$,RG$ so INP$ is the phrase, ELV$ is what elvin replies, RG$ is the reply from the goblin 29000 DATA way,,,a pie,,,read,,,hallo,how can i help,go away 29010 DATA bedroom,upstairs,find a chimney,help,how,how,of goblin,give him a pie,give me a pie 29020 DATA lamp for,it has magical powers,it has no use,wand for,to get rid of goblins,it will rid you of elvin 10020 RESTORE 29000 10030 FOR P=1 TO 9 10040 READ INP$,ELV$,RG$ 10050 FOR F=1 TO LEN(B$) 10070 IF SEG$(B$,F,LEN(INP$))=INP$ THEN 10115 10075 NEXT F I think I've got it mostly understood how the room map works and how the items are laid out in the rooms. Each room may or may not have a "special item" that can be found by using SEA for search. For the next post... Edited December 4, 2022 by Golden Child 1 Quote Link to comment Share on other sites More sharing options...
Golden Child Posted December 4, 2022 Share Posted December 4, 2022 Analyzing the data statements and code, then writing a program to print out the map: 1 OPEN #1:"PIO" 10 DIM ROOM$(24) 100 FOR R=1 TO 24 105 RESTORE 15000 110 FOR F = 1 TO 24 111 READ R$ 112 ROOM$(F)=R$ 113 IF F<>R THEN 120 114 PRINT "ROOM ";R;" ";R$ 115 PRINT #1:"ROOM ";R;" ";R$ 120 NEXT F 130 RESTORE 27300 131 FOR F=1 TO 24 132 READ PI 133 IF F<>R THEN 139 134 PRINT " PIE(";PI;") "; 135 PRINT #1:" PIE(";PI;") "; 139 NEXT F 140 RESTORE 17500 141 FOR F=1 TO 24 142 READ I$ 143 IF F<>R THEN 149 144 PRINT " ITEM(";I$;") " 145 PRINT#1:" ITEM(";I$;") " 149 NEXT F 150 RESTORE 17000 155 DIR$="WEST" 159 GOSUB 190 160 RESTORE 16090 165 DIR$="EAST" 169 GOSUB 190 170 RESTORE 16000 175 DIR$="NORTH" 179 GOSUB 190 180 RESTORE 16050 181 DIR$="SOUTH" 182 GOSUB 190 185 RESTORE 16010 186 DIR$="CLIMB" 187 GOSUB 190 188 NEXT R 189 GOTO 200 190 REM SUBROUTINE TO PRINT DIRECTION 191 FOR F=1 TO 24 192 READ DE 193 IF (F<>R) + (DE=0) THEN 198 194 PRINT " ";DIR$;"(";R+DE;") = ";ROOM$(R+DE) 195 PRINT #1:" ";DIR$;"(";R+DE;") = ";ROOM$(R+DE) 198 NEXT F 199 RETURN 200 CLOSE #1 210 END 15000 DATA hall,servants room,kitchen,pantry,cloak room,study,dining room,library,utility room,store 15010 DATA games room,living room,laundry,store room,hall,lounge,boys room,girls room,dragons lair 15020 DATA goblins den,master bedroom,guest room,playroom,landing 16000 DATA 0,0,0,0,-4,-4,-4,-4,-4,0,-4,-4,-4,-4,9,-4,4,0,-2,0,0,-2,-2,0 16010 DATA 0,1,-1,0,0,0,0,-6,0,0,0,-3,0,0,9,0,-14,0,0,-12,-11,-10,-9,0 16050 DATA 4,4,4,4,4,4,4,0,4,4,0,4,0,0,0,0,-2,0,-2,0,-2,2,-1,0 16090 DATA 0,-1,-1,-1,0,0,-1,-1,0,-1,-1,-1,0,-1,-1,-1,4,-1,-2,-1,-2,-1,0,-1 17000 DATA 1,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,0,4,1,2,1,0 17500 DATA magic lamp,wand,lamp oil,bag of goblin stoppers,,,,matches,,mysterious map 17510 DATA,,,,stairs,,,,,,,,,stairs,pies,boys gift,girls gift,goblin 27300 DATA 1,0,1,0,1,0,0,0,1,1,1,0,0,1,1,1,1,0,0,1,0,1,1,1 Spoiler ROOM 1 HALL PIE( 1 ) ITEM(MAGIC LAMP) WEST( 2 ) = SERVANTS ROOM SOUTH( 5 ) = CLOAK ROOM ROOM 2 SERVANTS ROOM PIE( 0 ) ITEM(WAND) WEST( 3 ) = KITCHEN EAST( 1 ) = HALL SOUTH( 6 ) = STUDY CLIMB( 3 ) = KITCHEN ROOM 3 KITCHEN PIE( 1 ) ITEM(LAMP OIL) WEST( 4 ) = PANTRY EAST( 2 ) = SERVANTS ROOM SOUTH( 7 ) = DINING ROOM CLIMB( 2 ) = SERVANTS ROOM ROOM 4 PANTRY PIE( 0 ) ITEM(BAG OF GOBLIN STOPPERS) EAST( 3 ) = KITCHEN SOUTH( 8 ) = LIBRARY ROOM 5 CLOAK ROOM PIE( 1 ) ITEM() NORTH( 1 ) = HALL SOUTH( 9 ) = UTILITY ROOM ROOM 6 STUDY PIE( 0 ) ITEM() WEST( 7 ) = DINING ROOM NORTH( 2 ) = SERVANTS ROOM SOUTH( 10 ) = STORE ROOM 7 DINING ROOM PIE( 0 ) ITEM() WEST( 8 ) = LIBRARY EAST( 6 ) = STUDY NORTH( 3 ) = KITCHEN SOUTH( 11 ) = GAMES ROOM ROOM 8 LIBRARY PIE( 0 ) ITEM(MATCHES) EAST( 7 ) = DINING ROOM NORTH( 4 ) = PANTRY CLIMB( 2 ) = SERVANTS ROOM ROOM 9 UTILITY ROOM PIE( 1 ) ITEM() WEST( 10 ) = STORE NORTH( 5 ) = CLOAK ROOM SOUTH( 13 ) = LAUNDRY ROOM 10 STORE PIE( 1 ) ITEM(MYSTERIOUS MAP) EAST( 9 ) = UTILITY ROOM SOUTH( 14 ) = STORE ROOM ROOM 11 GAMES ROOM PIE( 1 ) ITEM() WEST( 12 ) = LIVING ROOM EAST( 10 ) = STORE NORTH( 7 ) = DINING ROOM ROOM 12 LIVING ROOM PIE( 0 ) ITEM() EAST( 11 ) = GAMES ROOM NORTH( 8 ) = LIBRARY SOUTH( 16 ) = LOUNGE CLIMB( 9 ) = UTILITY ROOM ROOM 13 LAUNDRY PIE( 0 ) ITEM() WEST( 14 ) = STORE ROOM NORTH( 9 ) = UTILITY ROOM ROOM 14 STORE ROOM PIE( 1 ) ITEM() EAST( 13 ) = LAUNDRY NORTH( 10 ) = STORE ROOM 15 HALL PIE( 1 ) ITEM(STAIRS) WEST( 16 ) = LOUNGE EAST( 14 ) = STORE ROOM NORTH( 24 ) = LANDING CLIMB( 24 ) = LANDING ROOM 16 LOUNGE PIE( 1 ) ITEM() EAST( 15 ) = HALL NORTH( 12 ) = LIVING ROOM ROOM 17 BOYS ROOM PIE( 1 ) ITEM() WEST( 18 ) = GIRLS ROOM EAST( 21 ) = MASTER BEDROOM NORTH( 21 ) = MASTER BEDROOM SOUTH( 15 ) = HALL CLIMB( 3 ) = KITCHEN ROOM 18 GIRLS ROOM PIE( 0 ) ITEM() EAST( 17 ) = BOYS ROOM ROOM 19 DRAGONS LAIR PIE( 0 ) ITEM() EAST( 17 ) = BOYS ROOM NORTH( 17 ) = BOYS ROOM SOUTH( 17 ) = BOYS ROOM ROOM 20 GOBLINS DEN PIE( 1 ) ITEM() WEST( 24 ) = LANDING EAST( 19 ) = DRAGONS LAIR CLIMB( 8 ) = LIBRARY ROOM 21 MASTER BEDROOM PIE( 0 ) ITEM() WEST( 22 ) = GUEST ROOM EAST( 19 ) = DRAGONS LAIR SOUTH( 19 ) = DRAGONS LAIR CLIMB( 10 ) = STORE ROOM 22 GUEST ROOM PIE( 1 ) ITEM() WEST( 24 ) = LANDING EAST( 21 ) = MASTER BEDROOM NORTH( 20 ) = GOBLINS DEN SOUTH( 24 ) = LANDING CLIMB( 12 ) = LIVING ROOM ROOM 23 PLAYROOM PIE( 1 ) ITEM() WEST( 24 ) = LANDING NORTH( 21 ) = MASTER BEDROOM SOUTH( 22 ) = GUEST ROOM CLIMB( 14 ) = STORE ROOM ROOM 24 LANDING PIE( 1 ) ITEM(STAIRS) EAST( 23 ) = PLAYROOM 2 Quote Link to comment Share on other sites More sharing options...
Golden Child Posted December 4, 2022 Share Posted December 4, 2022 (edited) When you feel weak: Spoiler "EAT", and you can pick up pies along the way with "TAKPIE". Your health diminishes -1 as you move between rooms, +3 rooms per pie. When health is below 4 you feel weak. How to get rid of the annoying goblins: Spoiler get the WAND, then "WAVWAN" and then it will prompt you for "GOB" or "ELV" (I don't know why you'd want to get rid of ELVIN) This is how you get past the dragon: (only discovered by reading the code) Spoiler You have to get the bag of goblin stoppers, then you can "GIVGOBLIN". That will "stop him" so you can "GRAGOBLIN". Now you have a goblin in your inventory. (I tried GIVBAG since I have a BAG of goblin stoppers, but that is what works) Going to the dragon's den, you "GIVGOBLIN" and the dragon will reply "NOW IS YOUR CHANCE". Once you do this, you can freely move through the dragon's lair. After the dragon, to finish the game: Spoiler Then you "GIVBOY" in the boys room and "GIVGIR" in the girls room and it says "MERRY CHRISTMAS". I think that's the end of the game, it doesn't seem that you can do too much more. One interesting thing is that you can "TAKSTAIRS" at the landing, and put it into your inventory. Not sure what you can do with the stairs... Edited December 4, 2022 by Golden Child 3 Quote Link to comment Share on other sites More sharing options...
JoePranevich Posted December 4, 2022 Share Posted December 4, 2022 Thank you so much for this amazing research! I managed to win the game a few days ago, but this adds a ton of context and additional details. For example, you CAN grab a goblin without a stopper, but it fails some portion of the time. On a real system, this would be killer— starting the game and navigating to the end could take >30 minutes!— but with save states, doing it a few times was no big deal. You guys are an amazing resource and I’ll cite your efforts in my write up. I’ll also post a link here if that is not too spammy. I love what a great community you have here! 1 Quote Link to comment Share on other sites More sharing options...
Golden Child Posted December 4, 2022 Share Posted December 4, 2022 47 minutes ago, JoePranevich said: Thank you so much for this amazing research! I managed to win the game a few days ago, but this adds a ton of context and additional details. For example, you CAN grab a goblin without a stopper, but it fails some portion of the time. On a real system, this would be killer— starting the game and navigating to the end could take >30 minutes!— but with save states, doing it a few times was no big deal. You guys are an amazing resource and I’ll cite your efforts in my write up. I’ll also post a link here if that is not too spammy. I love what a great community you have here! Another thing that I was curious about was the map directions given by Elvin, but they don't seem to mean a whole lot. Often times a direction is given that can't be taken from the current room. I added onto my basic program to print the way given by elvin/map. Spoiler ROOM 1 hall PIE( 1 ) ITEM(magic lamp) WEST( 2 ) = servants room SOUTH( 5 ) = cloak room WAY(west) ROOM 2 servants room PIE( 0 ) ITEM(wand) WEST( 3 ) = kitchen EAST( 1 ) = hall SOUTH( 6 ) = study CLIMB( 3 ) = kitchen WAY(south) ROOM 3 kitchen PIE( 1 ) ITEM(lamp oil) WEST( 4 ) = pantry EAST( 2 ) = servants room SOUTH( 7 ) = dining room CLIMB( 2 ) = servants room WAY(south) ROOM 4 pantry PIE( 0 ) ITEM(bag of goblin stoppers) EAST( 3 ) = kitchen SOUTH( 8 ) = library WAY(south) ROOM 5 cloak room PIE( 1 ) ITEM() NORTH( 1 ) = hall SOUTH( 9 ) = utility room WAY(don't know) ROOM 6 study PIE( 0 ) ITEM() WEST( 7 ) = dining room NORTH( 2 ) = servants room SOUTH( 10 ) = store WAY(west) ROOM 7 dining room PIE( 0 ) ITEM() WEST( 8 ) = library EAST( 6 ) = study NORTH( 3 ) = kitchen SOUTH( 11 ) = games room WAY(south) ROOM 8 library PIE( 0 ) ITEM(matches) EAST( 7 ) = dining room NORTH( 4 ) = pantry CLIMB( 2 ) = servants room WAY(east) ROOM 9 utility room PIE( 1 ) ITEM() WEST( 10 ) = store NORTH( 5 ) = cloak room SOUTH( 13 ) = laundry WAY(east) ROOM 10 store PIE( 1 ) ITEM(mysterious map) EAST( 9 ) = utility room SOUTH( 14 ) = store room WAY(west) ROOM 11 games room PIE( 1 ) ITEM() WEST( 12 ) = living room EAST( 10 ) = store NORTH( 7 ) = dining room WAY(east) ROOM 12 living room PIE( 0 ) ITEM() EAST( 11 ) = games room NORTH( 8 ) = library SOUTH( 16 ) = lounge CLIMB( 9 ) = utility room WAY(don't know) ROOM 13 laundry PIE( 0 ) ITEM() WEST( 14 ) = store room NORTH( 9 ) = utility room WAY(east) ROOM 14 store room PIE( 1 ) ITEM() EAST( 13 ) = laundry NORTH( 10 ) = store WAY(east) ROOM 15 hall PIE( 1 ) ITEM(stairs) WEST( 16 ) = lounge EAST( 14 ) = store room NORTH( 24 ) = landing CLIMB( 24 ) = landing WAY(don't know) ROOM 16 lounge PIE( 1 ) ITEM() EAST( 15 ) = hall NORTH( 12 ) = living room WAY(don't know) ROOM 17 boys room PIE( 1 ) ITEM() WEST( 18 ) = girls room EAST( 21 ) = master bedroom NORTH( 21 ) = master bedroom SOUTH( 15 ) = hall CLIMB( 3 ) = kitchen WAY(east) ROOM 18 girls room PIE( 0 ) ITEM() EAST( 17 ) = boys room WAY(south) ROOM 19 dragons lair PIE( 0 ) ITEM() EAST( 17 ) = boys room NORTH( 17 ) = boys room SOUTH( 17 ) = boys room WAY(south) ROOM 20 goblins den PIE( 1 ) ITEM() WEST( 24 ) = landing EAST( 19 ) = dragons lair CLIMB( 8 ) = library WAY(don't know) ROOM 21 master bedroom PIE( 0 ) ITEM() WEST( 22 ) = guest room EAST( 19 ) = dragons lair SOUTH( 19 ) = dragons lair CLIMB( 10 ) = store WAY(east) ROOM 22 guest room PIE( 1 ) ITEM() WEST( 24 ) = landing EAST( 21 ) = master bedroom NORTH( 20 ) = goblins den SOUTH( 24 ) = landing CLIMB( 12 ) = living room WAY(east) ROOM 23 playroom PIE( 1 ) ITEM() WEST( 24 ) = landing NORTH( 21 ) = master bedroom SOUTH( 22 ) = guest room CLIMB( 14 ) = store room WAY(north) ROOM 24 landing PIE( 1 ) ITEM(stairs) EAST( 23 ) = playroom WAY(north) 1 OPEN #1:"PIO" 10 DIM ROOM$(24) 100 FOR R=1 TO 24 105 RESTORE 15000 110 FOR F=1 TO 24 111 READ R$ 112 ROOM$(F)=R$ 113 IF F<>R THEN 120 114 PRINT "ROOM ";R;" ";R$ 115 PRINT #1:"ROOM ";R;" ";R$ 120 NEXT F 130 RESTORE 27300 131 FOR F=1 TO 24 132 READ PI 133 IF F<>R THEN 139 134 PRINT " PIE(";PI;") "; 135 PRINT #1:" PIE(";PI;") "; 139 NEXT F 140 RESTORE 17500 141 FOR F=1 TO 24 142 READ I$ 143 IF F<>R THEN 149 144 PRINT " ITEM(";I$;") " 145 PRINT #1:" ITEM(";I$;") " 149 NEXT F 150 RESTORE 17000 155 DIR$="WEST" 159 GOSUB 190 160 RESTORE 16090 165 DIR$="EAST" 169 GOSUB 190 170 RESTORE 16000 175 DIR$="NORTH" 179 GOSUB 190 180 RESTORE 16050 181 DIR$="SOUTH" 182 GOSUB 190 183 RESTORE 16010 184 DIR$="CLIMB" 185 GOSUB 190 186 GOSUB 200 188 NEXT R 189 GOTO 290 190 REM SUBROUTINE TO PRINT DIRECTION 191 FOR F=1 TO 24 192 READ DE 193 IF (F<>R)+(DE=0)THEN 198 194 PRINT " ";DIR$;"(";R+DE;") = ";ROOM$(R+DE) 195 PRINT #1:" ";DIR$;"(";R+DE;") = ";ROOM$(R+DE) 198 NEXT F 199 RETURN 200 REM 201 RESTORE 202 202 DATA north,east,south,west,don't know 203 FOR I=1 TO 5 204 READ WAY$(I) 205 NEXT I 210 RESTORE 21500 220 FOR F=1 TO 24 230 READ DIR 232 IF F<>R THEN 250 235 PRINT " WAY(";WAY$(DIR);")" 240 PRINT #1:" WAY(";WAY$(DIR);")" 250 NEXT F 260 RETURN 290 CLOSE #1 300 END 15000 DATA hall,servants room,kitchen,pantry,cloak room,study,dining room,libr ary,utility room,store 15010 DATA games room,living room,laundry,store room,hall,lounge,boys room,girl s room,dragons lair 15020 DATA goblins den,master bedroom,guest room,playroom,landing 16000 DATA 0,0,0,0,-4,-4,-4,-4,-4,0,-4,-4,-4,-4,9,-4,4,0,-2,0,0,-2,-2,0 16010 DATA 0,1,-1,0,0,0,0,-6,0,0,0,-3,0,0,9,0,-14,0,0,-12,-11,-10,-9,0 16050 DATA 4,4,4,4,4,4,4,0,4,4,0,4,0,0,0,0,-2,0,-2,0,-2,2,-1,0 16090 DATA 0,-1,-1,-1,0,0,-1,-1,0,-1,-1,-1,0,-1,-1,-1,4,-1,-2,-1,-2,-1,0,-1 17000 DATA 1,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,0,4,1,2,1,0 17500 DATA magic lamp,wand,lamp oil,bag of goblin stoppers,,,,matches,,mysteriou s map 17510 DATA ,,,,stairs,,,,,,,,,stairs,pies,boys gift,girls gift,goblin 21500 DATA 4,3,3,3,5,4,3,2,2,4,2,5,2,2,5,5,2,3,3,5,2,2,1,1 27300 DATA 1,0,1,0,1,0,0,0,1,1,1,0,0,1,1,1,1,0,0,1,0,1,1,1 You get 4 goblin stoppers, and GS counts down by 1 every time they're used. GOS=1 means that the goblin is stopped. Y'know I thought that if you stopped a goblin it would automatically let you grab it, but looking at the code, it's a random number. It doesn't seem to look for GOS=1. I must've just gotten lucky when I tried it. Logically, it would make sense that if you stopped the goblin, you should be able to grab it. Sure enough, trying it again, it fails and the goblin runs off stealing my pies. grab code is at 12900 12900 IF OB<>28 THEN 6920 impossible (can only grab a goblin) 12910 IF GOB<>1 THEN 10300 he isn't here 12920 IF A(28)=0 THEN 6920 impossible (you already have a goblin) 12921 RANDOMIZE 12922 K=INT((4-1+1)*RND)+1 random number from 1 to 5 12923 IF K<>2 THEN 12000 so if it's not a 2 then the goblin's going to steal your stuff 12930 A(28)=0 goblin is object # 28, a zero means it's in your inventory, otherwise it's the room number it's in 12931 GOB=0 goblin removed from room 12932 V=0 12935 GOTO 6930 ok Happy to help, it's an interesting puzzle. I tried to load it into XB, but it doesn't support as many definable characters because of the sprites. It wouldn't be too hard to choose different characters though. 2 Quote Link to comment Share on other sites More sharing options...
JoePranevich Posted December 24, 2022 Share Posted December 24, 2022 Thank you all for your help on this! My special Christmas review of "Santa and the Goblins" (that you helped with, directly or indirectly) is now up: https://advgamer.blogspot.com/2022/12/missed-classic-118-santa-and-goblins.html It's a neat story and has a lot on the history of Intrigued based on my conversations with Martin and Dennis Webb. Please check it out if you are interested. I am indebted to you and this community for your help. Thank you for making my Christmas. 4 Quote Link to comment Share on other sites More sharing options...
Stuart Posted December 24, 2022 Share Posted December 24, 2022 (edited) 2 hours ago, JoePranevich said: Thank you all for your help on this! My special Christmas review of "Santa and the Goblins" (that you helped with, directly or indirectly) is now up: https://advgamer.blogspot.com/2022/12/missed-classic-118-santa-and-goblins.html It's a neat story and has a lot on the history of Intrigued based on my conversations with Martin and Dennis Webb. Please check it out if you are interested. I am indebted to you and this community for your help. Thank you for making my Christmas. Great little review, Joe. Noticed a tiny little typo - "Spectrum XZ81" should be "Sinclair ZX81" (Sinclair being the manufacturer, and the Spectrum being the next computer after the ZX81). And "TI99/A4" should of course be "TI99/4A". See - this community even helps with your proof reading! Edited December 24, 2022 by Stuart 1 Quote Link to comment Share on other sites More sharing options...
JoePranevich Posted December 24, 2022 Share Posted December 24, 2022 Thank you! I will fix that later this evening. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.