9

The original Macintosh version of Myst was written in HyperCard.

According to https://news.ycombinator.com/item?id=20549685

Adding useful features, such as uploading those HTML files to a web server, may have been possible but would have required extensions to the language. Plenty of extensions existed, which is how companies like Cyan managed to produce an amazing for the time multimedia game (Myst) on what most people viewed as a stack of programmable black and white index cards.

What extensions did Cyan use for this? How did they work; were they like VBX extension modules for Visual Basic? Did Cyan write them in-house, subcontract them or buy them on the market? What language were they written in?

2

2 Answers 2

8

The Myst stacks include 3 XFCNs (eXternal FunCtioNs) and 19 XCMDs (eXternal ComManDs). Of these:

Three -- variant, Picture, and Movie -- were included with HyperCard and have a Claris copyright. Picture was probably written in Pascal, variant was probably written in C. Some of the features of the Movie XCMD were based on Cyan's feedback.

One -- moveCursor -- might be this freeware XCMD written by Jeff Fischer.

Ten were developed by Symplex Systems/John Miller as part of HyperTint and DeCurse. These were commercially available and required licensing for redistribution. These were written in C.

Eight were developed by Cyan (Primarily Richard Watson). These are mostly C but there may be one or two in assembly.

External Commands and External Functions (XCMDs, XFCNs) were described in Appendix A of the HyperCard Script Language Guide. The provided examples are in Pascal, C, and 68k Asm.

Also see this HyperCard mailing list thread for some reminiscence by some of the people involved.

5

I did an exhaustive reverse-engineering spelunking trip of Myst on Twitch (and archived it here https://www.youtube.com/playlist?list=PLZjGMBjt_VVCl3cftfjeO8qQsSxgDQYO1). It explains a lot of the specifics of HyperCard, the Mac at the time etc. In the first episode, you can see that Myst contains the following XCMDs:

  • Picture (likely standard HyperCard)

  • Movie (likely standard HyperCard)
     

  • xCIcon3

  • xMemory

  • xSetSoundVol

  • xAbout

  • xClip

  • xLine

  • HyperTint

  • HTChangePict

  • HTVisual

  • HTRemove

  • HTLock

  • HTAddPict

  • HTSavePict

  • HTUDefPal

  • HTB1TS

  • moveCursor

  • DeCurse

I didn't show the XFCNs in that stream, but I just checked, and they are:

  • variant (standard HyperCard)
  • xGetSoundVol
  • xVirtual

Looking at HyperTint and Movie in particular, it's fascinating how Cyan basically replaced HyperCard's entire drawing pipeline with their own.

Going from a quick spot check, it seems all the externals with names a la "xFoo" have a Cyan Copyright. DeCurse is from the makers of HyperTint, too. moveCursor doesn't contain a Copyright message, so not sure, but Kelvin's theory sounds good.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .