HyperCard Simulator
Posted: Fri Jun 02, 2023 1:52 am
HyperCard is a software application and development kit for Apple Macintosh and Apple IIGS computers. It allowed owners of Macintoshes to create simple applications using a "card stack" metaphor and a scripting language that used plain English. This made it suitable not only for basic applications, but also rapid prototyping.
It was also used by the Miller brothers to create all of their games, including Myst, and I'm pretty sure the people who made HyperCard didn't think that would happen (or even anticipate HyperCard stacks being commercially sold).
When I learned about this a few months ago, I thought it'd be an interesting challenge to try and create both native libraries for working with HyperCard files, and a native application for emulating HyperCard. Progress has been slow, but my interest was renewed recently, and I wanted to post what I've done here to gauge interest.
- Based on the efforts of the HyperCard community, I created a Rust crate that (aims to) unwrap a Hypercard Stack into a Rust-idomatic struct. (Rust was chosen as the language here because it's just as fast as C, can compile to library files that can be used by C, and I don't like working with C/C++ and didn't want to use it). It's currently somewhat tested, but not enough for me to want to put it on crates.io just yet.
- I created a crate that wrap's around code from uliwitness's stackimport to allow decoding of WOBA images, and it has a random segmentation fault error and reminds me why i hate working with C. i didn't want to have to work with the god-awful WOBA format (literally stands for "Wrath of Bill Atkinson", named after the lead developer of HyperCard) but I also feel like its more worth it then trying to spend hours debugging something like this (especially when, to be fair, i didn't write the code i'm using).
The next step would be
a. actually show a basic window using the scraped information, making sure that i got the decoding library right.
b. find out where sounds are. HyperCard stacks supported sounds, but none of the reverse engineered documentation actually mentions where they're stored in the file.
c. start working on an interpreter for xtalk.
https://github.com/IoIxD/OpenCard/
It was also used by the Miller brothers to create all of their games, including Myst, and I'm pretty sure the people who made HyperCard didn't think that would happen (or even anticipate HyperCard stacks being commercially sold).
When I learned about this a few months ago, I thought it'd be an interesting challenge to try and create both native libraries for working with HyperCard files, and a native application for emulating HyperCard. Progress has been slow, but my interest was renewed recently, and I wanted to post what I've done here to gauge interest.
- Based on the efforts of the HyperCard community, I created a Rust crate that (aims to) unwrap a Hypercard Stack into a Rust-idomatic struct. (Rust was chosen as the language here because it's just as fast as C, can compile to library files that can be used by C, and I don't like working with C/C++ and didn't want to use it). It's currently somewhat tested, but not enough for me to want to put it on crates.io just yet.
- I created a crate that wrap's around code from uliwitness's stackimport to allow decoding of WOBA images, and it has a random segmentation fault error and reminds me why i hate working with C. i didn't want to have to work with the god-awful WOBA format (literally stands for "Wrath of Bill Atkinson", named after the lead developer of HyperCard) but I also feel like its more worth it then trying to spend hours debugging something like this (especially when, to be fair, i didn't write the code i'm using).
The next step would be
a. actually show a basic window using the scraped information, making sure that i got the decoding library right.
b. find out where sounds are. HyperCard stacks supported sounds, but none of the reverse engineered documentation actually mentions where they're stored in the file.
c. start working on an interpreter for xtalk.
https://github.com/IoIxD/OpenCard/