Current release is 1.8.0. This project is now out-of-beta. Enjoy!

The Colossal Cave Adventure is the world's first text-based adventure game and the first interactive fiction game. The core game is based on a real cave system, but extended with elements drawn from fantasy literature and tabletop gaming. It is the inspiration for countless subsequent games that were popular in the 80's and 90's. And it is coming soon to a calculator near you!

Will Crowther began writing Colossal Cave Adventure in 1975 and in 1977 it was significantly expanded by Don Woods. Despite the game's age, it is still a fairly largely game. You will not be able to get the best score in just a few hours (. . . unless you just look up an online walk though). I had to spend quite a lot of time optimizing the dungeon data file to save space on-calculator, eventually squeezing it down to about 45 K, with the game's executable taking another 50 K.

While many authors have introduced countless ports of the game, they usually had shortcomings in portability or readability. Thanks to the work of Eric S. Raymond et al., there is now a reasonably-maintainable C version of the game, with an extensive regression test suite to guarantee that it exactly matches Don Woods's last FORTRAN version. My version of The Colossal Cave Adventure is derived from ESR's Open Adventure, and thanks to ESR's test suite, I know that my port of Open Adventure to the TI-84 Plus CE remains true to the classic 1977 version.


The calculator port of Adventure is now fully playable. You can see outstanding issues on the project's bug tracker.

Hopefully, a new generation will now experience this classic game.
Wow! Love it! Text adventure is making a comeback!
Please see first post for current project status. It is now in a much better state, including the Resume menu being implemented.

I think I've gotten this into a playable state, so here's the first public beta. Save/resume even works right (except you can't use "resume", only "resum" without the E). I don't foresee any need to break saving, either, so it should be safe to start playing without worrying about breaking changes later.

Note that the Resume option on the main menu does nothing. Start a new game, say no (or yes) to whether you want instructions, and then type "resum" without an E. EDIT: In fact, you must truncate all words to five characters, because Mateo apparently decided that strcasecmp was the same routine as strncasecmp. I have a workaround in place for the next beta.

More text adventures are coming to calculators, huh.
I've decided this project is no longer beta. Version 1.8.0 is now out!

Check out this fancy new title screen splash image:
The title screen looks great!

Any option of porting this backwards to the B&W calcs?

Also props for porting such an old game!
tr1p1ea wrote:
The title screen looks great!
Thanks. I spent hours working on it. It's actually the third graphic I worked on; the other two just didn't go in the direction I wanted. It's only about 6 K in size, due to being reduced to 8-level grayscale and vertically mirrored.

tr1p1ea wrote:
Any option of porting this backwards to the B&W calcs?
I suppose it's possible, but it would be even more work. If you keep it in C, it'll be like seven app pages. Rewriting everything in assembly, of course, is an option, but not exactly an enticing one, and it would still be at least five app pages. I have no plan to do such a thing, especially since I've never worked on C for the Z80 models. If you do want to try it yourself, here's one tip: I believe the only arithmetic in the game that requires anything larger than 16-bit integers is the LCG routine. There's a few places that need signed 16-bit arithmetic though.

EDIT: Here's some stats at tr1p1ea's request:

$ ./
Fetching splashl.c. . . .
Fetching splashr.c. . . .
Total size of splash: 6102

Processing adventure_calculator.yaml. . . .
Compressed strings size: 30313
Data file size: 52286
711 compressed strings with 52084 characters
726 duplicates omitted saving 44037 characters
Huffman table codes: 87
326 uncompressed strings with 1405 characters
337 duplicates omitted saving 1461 characters
The compression scheme for text is Huffman coding, which allows for easy stream decoding, instead of having to decompress a large portion of the whole database to access just a single string. 52084 is all the string data, and 30313 is the compressed string size, giving a compression ratio of about 60 %, which in my experience is pretty typical for Huffman coding. As the stats show, though, most of the space savings actually come from string deduplication; for example, there are over a dozen rooms with the description, "You are in a maze of twisty little passages, all alike." This string only appears once in the database file, instead of being duplicated for each room that uses it.
Nice work! This game has been pretty fun, but at the moment I’ve only gotten so far as to accidentally killing the bird.
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum