![]() |
Forum Index : Microcontroller and PC projects : Colossal Cave Adventure Preview/Test Version
Page 1 of 2 ![]() ![]() |
|||||
Author | Message | ||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
Crowther & Woods' Colossal Cave Adventure This is the first version. I have (as a start) adapted the Peter McGavins QBASIC translation syntax to mmbasic so that it works for now. No GUI or graphics yet. Please report errors and suggest improvements. ![]() CCA.zip Have Fun Martin Edited 2025-10-11 04:46 by Martin H. 'no comment |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
Hi Martin, It is working. But the commands are very different from Tay's. I may have to decode (it is a ROT-13 cypher, like used for GeoCaching) to learn the verbs. It does not know "Inventory" or the likes.. Thanks for the fun this will give me.. Volhout PicomiteVGA PETSCII ROBOTS |
||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
I encrypted it myself using ROT-13 to prevent accidental spoilers; in the original list, everything was in plain text ![]() yes, i was suprised that it does not know "Inventory". ![]() As shown in the image, the GUI version will have a field displaying what the user has with them. The images are almost finished, and I will then try to integrate the GUI into the text version of the adventure. Edited 2025-10-11 06:04 by Martin H. 'no comment |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
Martin, We should not forget this game was written by a university professor for his students and colleague. The smartest people. So maybe thing like an inventory where perceived to simple for them. These guys where smart enough to remember what they picked up. Volhout PicomiteVGA PETSCII ROBOTS |
||||
thwill![]() Guru ![]() Joined: 16/09/2019 Location: United KingdomPosts: 4325 |
The history of Interactive Fiction is one of my interests. It is my understanding that Will Crowther programmed Colossal Cave / Adventure for his daughters as a way of interacting and showing his love for them following the breakup of his marriage. Don Woods would only have been 23 when he worked on it, he was a graduate student not a professor. Best wishes, Tom Edited 2025-10-11 08:23 by thwill MMBasic for Linux, Game*Mite, CMM2 Welcome Tape, Creaky old text adventures |
||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
Line 22 missing an "I" in IF 'no comment |
||||
Mixtel90![]() Guru ![]() Joined: 05/10/2019 Location: United KingdomPosts: 8221 |
There have been several versions. "inventory" was certainly recognised in at least one because I hated having to type such a long word! "inven" was also recognised. Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
Hi Martin, I hope you have stamina... There is a long way to go. 1/ start new game. press "n" 2x -> error in line 293. at many locations in the game pressing "n" several times causes the same. 2/ There is a note about "winding roads" making navigation not logical, but the navigation on this one is very strange. Start new game, go "w" -> up the hill. There is no way to get back to the starting point, after a bit of trying, you are under ground (walkin in the forest -> main passageway). Without any notice you are entering a cave. Maybe 2/ is as intended in the game, but to me it feels awkward. Volhout Edited 2025-10-12 01:24 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
Ive done a lot of debugging, this should be Fixed. ![]() Data "3" Karte: Data "1;2;2;44" Data "1;3;3;12 19 43" Data "1;4;4;5;13 14 46 30" Data "1;5;6;45 43" Data "1;8;49" Data "2;1;8;2;12 7;43 45 30" Data "2;5;6;45 46" Data "3;1;3;11 32 44" Data "3;11 48" Data "3;33 65" Data "3;79 5;14" Meaning in general Digit 1 Start room (your current position). Digit 2 Your path number (token) Associated commands (actions) Function (for room 1) 2 ROAD 3 ENTER, DOOR, GATE This is the token you need to access the hut (room 3). ENTER is the main command. 4 UPSTR (Upstream) Special movement command, not a compass token. 5 DOWNS (Downstream) Special movement command, not a compass token. 12 BUILD, BLD, HOUSE Synonym for the building. This is also a token that leads to room 3 in line 1 3 3 12 19 43. 13 GULLY The noun “gully.” 14 STREA (Stream) The noun “Stream.” 29 UPWAR, UP, U, ABOVE The typical command for Up (UP). 30 D, DOWNW, DOWN The typical command for Down (DOWN). 43 EAST, E The cardinal direction token east. 44 WEST, W The cardinal direction token west. 45 NORTH, N The cardinal direction token north. 46 SOUTH, S The cardinal direction token south. 48 XYZZY Magic word/teleportation token. 49 DEPRE (Depression) Noun/special command (probably the command for room 49). leads Digit 3 Target Room so for room 1 1 2 2 44 2 Room 2 ROAD. Walk on the road. 1 3 3 12 19 43 3 Room 3 ENTER, DOOR, GATE. Synonyms (12, 19, 43) BUILD/HOUSE, INWARD/INSIDE/IN, EAST/E. The command ENTER must have been recognized by the game as token 3 or 12/19. ENTER led to room 3. 1 4 4 5 13 14 46 30 4 Room 4 UPSTR (Upstream). 1 5 6 45 43 5 Room 6 DOWNS (Downstream). 1 8 49 8 Room 49 BACK, RETURN, RETREAT. I spend the Day debugging the Program, i Hope those Errors are now history: cca.04.zip Edited 2025-10-12 16:37 by Martin H. 'no comment |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
The pictures are beautiful. This is going to be a great game Martin. PicomiteVGA PETSCII ROBOTS |
||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
Thanks. There are still a few places I need to work on. I'm testing my GUI to display all locations and comments, etc. Once the text adventure is running smoothly, I'll start working on integrating my GUI (with the images). Cheers Martin 'no comment |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
Martin, Pictures "a69.bmp" and to a lesser level "a71.bmp" use a different colorscheme. They do not match the rest of the pictures. Maybe that is intended to be. I like "titel.bmp" better than "titel2.bmp", but that is obviously matter of taste. Looking out for the implementation of these graphics in the game. Really exciting !! Do you want me to search for some MOD files that meet the suspense ? Most of the MOD files in the archive are short and up tempo. Here you are looking more towards slow, tense, and spooky.... Volhout P.S. did you remove the zip with pictures again ? I was able to download them, but now the link is gone again. Was I not intended to fetch them ? Did you want to keep them a secret ? Edited 2025-10-12 21:13 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
Yes, I removed the link again. You have the zip file, and I will upload a new zip file with images of all rooms. There is a maze in the game, and not all images are regenerated there. I have defined the exceptions here. SUB Load_Picture RNR% Local FNAM$ select case RNR% Case 46,47,48,54,56,58,63 FNAM$= "asset/DEADEND.bmp" Case 42,43,45 FNAM$= "asset/2exits.bmp" Case 44,49 TO 53,55 FNAM$= "asset/3exits.bmp" Case 25 FNAM$= "asset/A23.bmp" Case ELSE FNAM$= "asset/A":'if RNR%<10 then FNAM$=FNAM$+"0" FNAM$=FNAM$+STR$(RNR%,2,0,"0")+".bmp" end select Load bmp FNAM$,0,0 end sub Edit: New Picture Link Edited 2025-10-12 22:53 by Martin H. 'no comment |
||||
Mixtel90![]() Guru ![]() Joined: 05/10/2019 Location: United KingdomPosts: 8221 |
You are in a maze of twisty little passages all alike. Happy daze.... :) I want to hear a hollow voice saying "PLUGH". :) >xyzzy How dare you swear like that on this forum! . Edited 2025-10-13 01:06 by Mixtel90 Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
zeitfest Guru ![]() Joined: 31/07/2019 Location: AustraliaPosts: 612 |
In the distance, a bird is singing.. [It's probably a twitter account ![]() |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
@Martin, A very pre-mature test version showing graphics and text. This is for mode 2 on PicoVGA. I replaced most print statements with a w_print. I am not sure I have the relation between location and picture correct. Probably not. Learning as I go. cca5.zip Uses the last asset folder. Volhout PicomiteVGA PETSCII ROBOTS |
||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
here are some usefull subs, which might be helpful for you: preparation: Dim Linebuff$(20),IVNT$(10),DIRS$(10),LBIDX=1:LBINR=1 CONST TEXT_START_ROW = 25 ' Line-Index (not Pixel) CONST DISPLAY_ROWS = 5 CLS:Font 7 this loads the screens in Order to the szenes Sub WriteLN (IS) Linebuff$(LBINR)=IS:INC LBINR end SUB SUB Load_Picture RNR% Local FNAM$ select case RNR% Case 46,47,48,54,56,58,63 FNAM$= "asset/DEADEND.bmp" Case 42,43,45 FNAM$= "asset/2exits.bmp" Case 44,49 TO 53,55 FNAM$= "asset/3exits.bmp" Case 25 FNAM$= "asset/A23.bmp" Case ELSE FNAM$= "asset/A":'if RNR%<10 then FNAM$=FNAM$+"0" FNAM$=FNAM$+STR$(RNR%,2,0,"0")+".bmp" end select Load image FNAM$,0,0 end sub Fake Input (to scroll the InfoText using up/Down keys while Input FUNCTION INP$() LOCAL K$ INP$="":PRINT @(0,232);string$(48," "); PRINT @(0,232);">_"; DO DO K$=INKEY$:Pause 10 IF ASC(K$)<>0 THEN EXIT DO LOOP K$=UCASE$(K$) SELECT CASE ASC(K$) CASE 8,127 'BACKSPACE/DEL IF LEN(INP$) THEN INP$=LEFT$(INP$,LEN(INP$)-1) CASE 32 to 90 if LEN(INP$)< 50 then INP$=INP$+K$ CASE 10 EXIT FUNCTION CASE 128 'CURSOR UP LBIDX=LBIDX-(LBIDX> 1):DisplayLines(LBIDX, Linebuff$()) CASE 129 'CURSOR DOWN LBIDX=LBIDX+(LBIDX<15):DisplayLines(LBIDX, Linebuff$()) END SELECT PRINT @(0,232);">";INP$;"_ "; LOOP COLOR RGB(WHITE),0 END FUNCTION SUB DisplayLines(StartIndex AS INTEGER, Buffer$()) LOCAL I AS INTEGER LOCAL ScreenRow AS INTEGER LOCAL Y_PIXEL AS INTEGER COLOR RGB(GREEN),0 FOR I = 0 TO DISPLAY_ROWS - 1 ScreenRow = TEXT_START_ROW + I ' Berechne die Y-Pixel-Koordinate: (Reihenindex - 1) * 8 Y_PIXEL = (ScreenRow - 1) * 8 ' Löschen der alten Zeile (Spalte 1 bis 42) PRINT @(0, Y_PIXEL); SPACE$(53); ' Zeige die entschlüsselte Zeile aus dem Puffer PRINT @(0, Y_PIXEL);Buffer$(StartIndex + I); NEXT I COLOR RGB(WHITE),0 END SUB sub CLR_LINEBUFF local ff% For ff%=1 to 20:Linebuff$(ff%) ="":next end sub Edited 2025-10-16 02:19 by Martin H. 'no comment |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
Martin, I used the same method as petscii the subs are at the end of the code.cca5.bas. Volhout PicomiteVGA PETSCII ROBOTS |
||||
Martin H.![]() Guru ![]() Joined: 04/06/2022 Location: GermanyPosts: 1297 |
Hello Harm, Now that I have satisfactorily completed my own Atkinson dithering routine(Heureka), I have had some images re-rasterized. You can take a look and see if you like this set better. AssetNew Cheers Martin Edited 2025-10-16 03:00 by Martin H. 'no comment |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5357 |
Hi Martin, Atkinson was smart. It is much easier to implement in a microprocessor. When I remember correct it's algorithm compensate only forward and downward. (old CRT's where scanned from top to bottom). Not upward and back. This made it possible to dither "on the fly" while showing the picture on CRT. I will not be able to test this week since on travel. Maybe in my cca5 there is some code you can use, otherwise regard it as demo and dispose of it. Regards, Volhout PicomiteVGA PETSCII ROBOTS |
||||
Page 1 of 2 ![]() ![]() |
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |