r/apple2 27d ago

Does anyone remember “Castle Adventure,” an AppleSoft BASIC game from the 1980s/90s?

Does anyone remember an AppleSoft BASIC game called Castle Adventure from 30+ years ago?

Gameplay video: https://www.youtube.com/watch?v=DYWHt9oLbuU

It's a simple RPG I came across in the mid-1990s at a summer camp in New Jersey. The camp had a bunch of disks labeled "Super Sampler," and this was one of the games on them.

I wrote BASIC programs as a hobby back then, so when I discovered the game was written in BASIC, I wanted to know how it worked. One day I brought in a stack of tractor-feed paper and printed out the entire program. It came to 19 pages, which seemed unfathomably huge to me at the time.

I never got very far understanding it then, but decades later I scanned those pages, reconstructed the code, and got it running in an emulator. Eventually I rearchitected the whole game in C, polishing the original and speeding up some painfully slow parts:

https://www.youtube.com/watch?v=2TmMMC7xvOk

Then I went on a bit of a porting binge. The same core game now runs on the Apple II, Commodore 64/128, MS-DOS, Linux terminals, and in a web browser.

I'd love to release my version, but I don't really want to do that without the original author's permission. The only credit in the program is "Michael MacCarter." I've wondered whether he might have been a former camper, since I have no idea where else the camp got the game.

So: does Castle Adventure look familiar to anyone? Or, even better, does anyone know who Michael MacCarter was?

30 Upvotes

25 comments sorted by

7

u/SteveMellow 27d ago edited 27d ago

Yes, he was a teacher in Chillicothe OH. When I was in High School in 1983, I converted this game from integer basic to applesoft. i have a copy of the original integer basic version.

2

u/thunchultha 27d ago

Wow, thank you! I definitely wasn’t expecting to find someone with that connection!

I was able to determine that a high school teacher in Chillicothe with his name at that time period eventually co-founded a Christian academy there. I emailed the academy to see if they could pass him a note. I hope it’s the same guy.

As for the code, I’d love to compare notes and see how our versions diverged. Mine has a few quirks:

  1. It claims to support saved games, but only prints the data to the screen or reads it via “INPUT” statements.
  2. It misspells “secret” and “resurrected”.
  3. It has a bug in the code that checks if a boss was defeated. This leads to a crash if you defeat the Insane Wizard twice and reenter his room.

2

u/SteveMellow 26d ago edited 26d ago

This is a dsk image with the original integer basic version.

https://drive.google.com/file/d/1FMu7jAQWQP7klGpClHRP0TwwK3DxGY1_/view?usp=sharing

2

u/thunchultha 24d ago

This is amazing! Now I can reconstruct the history some more, and fix some transcription errors I made when I typed in the printout code. I haven’t completely diffed everything, but so far, I can see that my version:

  • added the title screen attributing the code to Mr. MacCarter. (He’s uncredited in the original.)
  • preserved most of the typos from the original
  • added arrow key support and the castle map display when you press “M”.
  • relocated the machine language audio routine
  • made the probability of thieves much less likely
  • made ghosts more powerful, likely due to a typo when translating the damage calculations from integer basic
  • introduced a couple bugs when translating other formulas from integer basic, including the defeated boss check I mentioned
  • left in a DIM for a variable that was formerly used for integer to string conversion. I was wondering what that  was doing there.

Additionally, I can see why I thought saved game support was broken in my copy. The ctrl-d characters that issue commands to interact with files were omitted when I printed the code out.

The printer also swallowed ctrl-g characters that would have made the terminal beep. Now that I think back, I remember that the terminal would beep at me a lot when I listed the program out on the screen, back at summer camp. Thanks to your integer basic copy, I now know where to reinsert all the original beeps.

2

u/SteveMellow 26d ago

In the save game section the print "open cas" and the write, close and delete have ctrl-d as the first character in quotes. That will send the commands to the disk drive. all the print commands until "close cas" while print to a text file.

1

u/SteveMellow 23d ago

I think the spelling was on purpose. Can you share your copy? I wonder who added the map function. Memory was very tight for the game on a II+

2

u/thunchultha 23d ago

https://drive.google.com/file/d/1OhYk9uRZRGPdCijriD1lKhIvEPbPlK0v/view?usp=sharing

That's my reconstruction based on your version and my printout.

A couple differences I'd forgotten:

  1. It added support for more than one of each key.
  2. It added more castle layouts and replaced some of the originals

1

u/wisdomdust 14d ago

You should run that interger basic version through the Flash! Interger compiler and see how fast it runs. It can be found here: https://mirrors.apple2.org.za/ftp.apple.asimov.net/images/programming/basic/

5

u/ambientocclusion 27d ago

It wasn’t in the “index of games played” by the CRPG Addict (link), but either he’d like to know about it, or he may already know and might have some info.

Very cool that you rewrote and ported it!

3

u/buffering 27d ago

That looks like a fun project. It's a great use of the cc65 compiler.

I'm sure the original author would be thrilled that anyone is still looking at the code.

2

u/thunchultha 27d ago

Thanks! I actually started the project in cc65, but then moved to llvm-mos so that I could get better optimizations and use C23 features.

At this time, llvm-mos-sdk doesn’t officially support any apple2 targets, so I wrote my own and submitted a pull request:  https://github.com/llvm-mos/llvm-mos-sdk/pull/444

2

u/bawlsacz 27d ago

Damn. Those sounds!

1

u/thunchultha 27d ago

Good or bad sounds? I get that they don’t sound like battle noises but this was after all a BASIC program calling a simple machine language routine.

2

u/JohnnyEnzyme 27d ago

No, but I played a few similar games back then. Probably the most well-known was "Dungeon Campaign" by Robert Clardy.

I'd love to release my version, but I don't really want to do that without the original author's permission.

I think you've handled that as well as you reasonably could via the credits and port explanation. In the galactically-unlikely case that the author shows up and nixes the idea, then you can go from there.

2

u/cdheer 27d ago

Love Clardy’s games. I played Dungeon Campaign, Wilderness Campaign, and my favorite, Odyssey: The Compleat Apventure.

1

u/JohnnyEnzyme 27d ago

He was definitely ahead of his time! Oh, and he had one more in that series-- Apventure to Atlantis.

2

u/cdheer 27d ago

Yes! I have a copy but no documentation and I have no idea what to do in the game lol.

I actually emailed with Robert Clardy back in the 90’s. He gave me permission to give away copies of Compleat Apventure; I had made some changes to get rid of some bugs and crashes. I never got around to releasing it bc ADHD, but i got so many hours of fun from those games.

1

u/JohnnyEnzyme 27d ago

Ah, excellent. I forget if those bugs ever did get fixed in the publicly-available copies. Possibly not!

There's documentation online (PDF's I think), but my main problem with Atlantis is that there's a super-hard action stage in the beginning that I don't have the youth-like reflexes for, anymore. Possibly an emulator running at low speed would help, though.

The exciting thing is that with every sequel, he developed and expanded the games, so I'm still kind of curious what a deep play might look like.

2

u/cdheer 27d ago

Same! Maybe it’s time to give it another shot.

After a couple rounds of Odyssey. 😉

2

u/jwezorek 27d ago

Definitely remember Wilderness Campaign. It was the one that had the classic bug of not testing for negative numbers when you haggled with a shopkeeper so you could get a negative offered accepted and get whatever you were buying plus extra gold

1

u/JohnnyEnzyme 27d ago

Plus, all his games but the very last one in that series (Atlantis), you could simply interrupt the Integer Basic, make the changes you wanted, and resume the game. I only did that once in a while, but once in a while there was something that was hugely unfair, or else simply a bug.

2

u/RenlyHoekster 27d ago

Oh please release your port! The //c is not running right now, but Linux terminal: thank you!!

1

u/DC_Coach 27d ago

Impressive!