Saturday, December 12, 2020

If you can't play the new VR version of Myst, why not play the Apple II demake

Apple ][ Myst "Demake"

How much of MYST can you run on an Apple II+ with three 140k floppy disks?




Details

I needed a break from my Another World Demake and somehow was thinking about Myst.

Could you do a credible version of Myst on an Apple II in lo-res mode? The answer seems to be just barely. I think you could also make a nice version with hi-res graphics, but they are 8 times bigger and it would be harder to fit on a reasonable number of disks.

One observation, Myst island is very dark and brown. Maybe a system with lots of browns (hello C64!) would work better.


Legal Note

This product contains trademarks and/or copyrighted works of Cyan. All rights reserved by Cyan. This product is not official and is not endorsed by Cyan.

Implementation

This is a fully playable version of the game. A few off-the-main-track locations are missing, but otherwise the game is complete. You can walk around everywhere, solve all of the puzzles, and get to all four endings of the game.

The graphics were all done by hand, and the quality is a bit irregular as I was trying a few different techniques.

The game is just a series of "rooms" you can walk between. Each room has four exits, N/S/E/W. In each room you can have one item you can poke around with. This maps the gameplay fairly well, though the real game you can have more than 4 exits from a room.

The whole thing is written in 6502 assembly language, runs on a system with 48k of RAM and fits easily on three 140k floppy disks.

Graphics Comparison

I've moved this section on the suitability of various Apple II graphics modes to a separate page.

Video

Here's an any-percent speed run of the game on the occasion of the v1.0 release:


Here's a 5-part long-playthrough of the entire game recorded on an actual Apple IIe Platinum machine. This is version 0.99, there have been some improvements to the game since then, most notably the loads from disk are about 10 times faster now.



A playlist of various clips of gameplay from while the game was under development:


Someone requested to see what my workflow was like for creating the graphics. The answer is it's a very inefficient one, but here's a video of me creating a background if you're curious:




Here is my talk at Kansasfest describing some of the technical background of the project:


Here are the slides from the above talk: kfest2020_myst.pdf

I also gave a talk on the disk code used in the Myst demake at Demosplash 2020. You can possibly watch it toward the end of/beginning of these two links: link1, link2

You can view the slides from the talk here: demosplash2020_diskII.pdf

Also from Demosplash, the ANSI art that (somehow) won first place. It's an Ad for Apple II Myst. DOS CGA 80x25 ANSI art that could be used for an MS-DOS Myst Demake, or maybe a BBS door game: Apple II Myst ANSI art

Real Hardware Action Shots

I finally rescued one of my machines from lockdown at work.


The full set of disks:

Screenshots

Note: these were captured with the AppleWin emulator.

Myst Island



Mechanical Age



Stoneship Age



Selenitic Age



Channelwood Age



D'NI



When making your own game engine, sometimes it's tempting to inject some sarcasm (in the end most of that was removed as it would have been really confusing for people who hadn't played the game before):


Differences from original Myst

All ages are completely playable. You can play through to all four endings.

There are some differencs compared to the original:
  • Missing locations: In general only half of the locations are there, meaning when walking around every other step is missing unless the view was important for plot reasons. This makes walking slightly jumpier but was needed to fit on a reasonable number of disks.
  • Modified puzzles: Some puzzles have been modified to address limitations of the Apple II platform. The fireplace puzzle has fewer squares due to limited resolution. The gears puzzle is changed due to the difficulty of getting key-release times. The spaceship piano button is one note fewer, also due to limited screen resolution. The mechanical tower rotation puzzles were made simpler just because I found the originals to be overly difficult.
  • Missing animations: Most of the quicktime animations are not implemented due to space reasons and developer time.
  • Missing sound effects: Most of the sound effects and music are missing, primarily due to disk and RAM limitations. In cases where it's important, the Apple II version adds the sound effects via subtitle.
  • Clickable items: Many of the rooms in the original had interactive items and pictures scattered about that you could look at closely or even pick up or play with. Some, but not all, of these have been implemented in the Apple II version. You'll have to explore to find out which ones.
  • Text/Letters/Speeches: Primarily for space saving reasons some of the longer chunks of text in books and speeches are summarized, hopefully capturing most of the original intent. Text can take up a surprisingly large amount of space in RAM, but also in mixed graphics/text mode on the Apple II you only get 4 lines of 40 characters to express your message.

System Requirements

  • Any sort of Apple II should work (II/II+/IIe)
  • Should also run on IIc or IIgs but not tested as much
  • At least 48k of RAM (no sound effects)
  • For sound effects you need 64k of RAM
  • It will play the intro theme if you have a Mockingboard sound card
  • You probably also want a color monitor, it's a bit hard to play in monochrome
  • You can play with a joystick, though be careful enabling that on systems w/o a joystick hooked up.

Downloads

Disk Images

Source


How to Play

The best way of course is on actual Apple II hardware.

Barring that, you can download the images above and run in an emulator. If you're on Windows (or Linux using wine) I recommend AppleWin.

If you want to play online, try uploading the images into Apple ][js

The game comes with 5 pre-defined save games you can load (using control-L) that will warp you to the various parts of the game if you just want to look around a bit.

Controls

To move the "pointer" use the arrow keys or WASD (your emulator might not support up/down arrow as the original Apple II didn't have them).

Use enter or space to move or for action.

Hints

If you haven't played through the real game it might not be obvious how to beat things. This version is close enough to the original that a walkthrough for the original game can help you through this one.

One thing, that is hinted in the game, is that due to the Apple II keyboard you can't tell if a key is being held down. This affects the puzzle in the island-clock. In the real game you could hold down the lever for an extended time to change its behavior. To do that in the demake click the top of the levers for a short turn and click the bottom of the levers for a longer turn.

Credits

  • Code, GR graphics: Deater
  • lzsa compression: Emmanuel Marty
  • Disk loader and enhanced compression lib: qkumba
  • Audio player: Oliver Schmidt

TODO

  • Mouse support. This is low priority as I don't have mouse hardware, but also because from what I understand using a mouse in lores mode is not a smooth experience.

Mini-faq

  • Q. Why lo-res? Why not use the hi-res (140x192, 6 colors), double lo-res (80x48, 15 colors) or double hi-res (140x192, 15 colors) modes instead?

    A. See the Graphics Comparison Page for a detailed rundown of the tradeoffs in the Apple II Graphics modes.

  • Q. But I *really* want a native version for my IIgs with SHR graphics and sound!

    A. That's certainly possible but modifying this code for that would involve more or less a complete re-write of the game. You'd probably be better off porting the SCUMMVM port to the IIgs than using this one as a base.

  • Q. Was it hard to write this?

    A. The code is actually surprisingly simple and not very big. It helps that I could re-use a lot of the lo-res drawing code from my Another World project.

    The big time-sink is the graphics, which take a while to draw and there are just so many scenes.

  • Q. So how did you draw the graphics?

    A. So for 40x48 resolution you can't just take a paint program and have it do this automatically. That tends to lose a lot of important details.

    Usually I take a screenshot and drop a 40x48 grid on top and then trace over it. The scummvm/masterpiece edition is very close to 560x336 resolution which scales nicely to 40x48.

    The hardest part of this is color selection, as the 15 Apple II colors are a weird bunch and don't make gradients well. I sometimes try to do things like make color 2 (a sort of blue-purple color) act as a shade of grey, which rarely works.

    I also have had to resort to using the "aqua" color which on some monitors/TVs has an unearthly/sickly hue.

    Currently there are 800 background images.

  • Q. Have you played all of the MYST games?

    A. Yes, all of them, multiple times. I haven't quite finished Obduction yet. My favorite is probably Riven.

  • Q. Have you met the devs of the game?

    A. Not the Millers, but I have met the oft-forgotten co-developer Chuck Carter.

  • Q. Why do you call it Mist and why do the sublevels have odd nearly-correct names?

    A. I'm never sure how litigious companies are going to be, but in this case the parties involved seem to be pretty cool with things.

  • Q. If the game runs on Apple IIgs, why isn't that on the disk label?

    A. The game runs in backward compatibility mode, and has only the bare minimum IIgs support code to make sure the colors are right. I feel like it would be false advertising to list it as having full IIgs support.

  • Q. Why are the disk accesses so slow?

    A. By using qkumba's qboot track-at-a-time code we managed to get really nice disk speed. Prior to that things were a lot slower.

    If the slowness really gets to you, you can run under AppleWin and enable the enhanced disk speed option and the loads will appear nearly instantaneous.

  • Q. The graphics are horrible, I wouldn't be able to tell what was going on if I wasn't familiar with the original game.

    A. Possibly true. As someone who has spent a lot of time now both in the original and in the Apple II version, things look fine to me, but I am used to the graphics. I'd like to think people in 1980 would have been slightly more forgiving of the hard-to-parse graphics.


Speedrun

It's of course possible to speedrun the game. For what will probably be a brief moment of time I have the record:


You can see the current leaderboard here: speedrun.com

Development Notes

12 September 2020 -- Release v1.02

Updated Atrus' viewer message to be closer to that of the original game. The previous version was a bit funnier but also a bit of a spoiler if you haven't played the game before.

This pushed the viewer executable over a page boundary so had to shuffle the disk layout a bit, hopefully that didn't break anything.

9 September 2020 -- Release v1.01

Fixed a bug in the order of the valves on the clock tower puzzle. This was noticed by the Myst Guild of Speedrunners.

Also tried to improve joystick support a bit. The edges of the screen are now enforced and the joystick is only checked every other frame. Works OK in the emulator, need to re-test on actual hardware.

6 September 2020 -- Release v1.0

Finally hit version 1.0!

This did add some more places to poke around in the sub room on Selenitic.

Made the speedrun on real hardware and found a lot of bugs, hopefully they are all sorted out now. Most of them had to do with my code hard-coding slot6 in a few places, and accidentally leaving the cycle-counted disk write code straddling a page boundary which through the timings all off.

It's never good when you are trying to record a speed run and you have to stop midway through to consult qkumba! Big thanks to him for being super responsive with my silly issues with his disk code.

5 September 2020 -- Release v0.99.7

Added joystick support, seems to run reasonably well under the emulator although maybe a bit too sensitive. Will have to try it on my II+ that has a real joystick

Was worried about room for the code (it's about 128 bytes) but then found that the sprite draw code still included flipped-sprite support from OOTW that we weren't using and disabling that freed up a lot of space.

4 September 2020 -- Release v0.99.6

Save game support is now there and seems to be working. Code also provided by qkumba.

Seriously running low on memory space though, going to be a challenge to fit the joystick code.

Also, the loading-from-right-disk sanity check managed to trigger a new bug in qkumba's qboot code, but it was quickly fixed.

1 September 2020 -- Release v0.99.5

Finally got qkumba's qboot code going. Makes a massive improvement in speed when loading from disk. Managed to trigger a bug when loading from non-0 sector offset but qkumba quickly fixed it.

Also added support for 5 saved games and pre-populated them with the different ages.

29 August 2020 -- Release v0.99.4

Brought the Mechanical Age up to the maximum size (39.75k). There are now some more in-between spots on the paths, and you can poke around the brothers' rooms a bit more.

26 August 2020 -- Release v0.99.3

Working on qboot based fast load support. Have proof of concept working.

Also went back and added the missing locations in the 2nd level of Channelwood. Can now visit each tree house visible on the map. The last two almost didn't fit, had to play some games with the graphics to get them to compress small enough (the graphics in Channelwood are complex and don't compress well at all).

19 August 2020 -- Release v0.99.2

Since we have some leftover disk space, have been adding in some missing scenes. In this case the top level of Channelwood is a lot more complete now, including a working projector room as well as animated metal gate and trap.

11 August 2020 -- Release v0.99.1

Was playing through the actual game and noticed some things I should add to Mechanical age. So now you can look up to the top of the elevator, and you can also poke around the secret rooms some more.

10 August 2020 -- Release v0.99

Finished the puzzles in the Stoneship age. Hooking up the lighthouse took a while, it's a more complex puzzle than it appears. We're seriously low on RAM for this part, ended up making the "lights off" part algorithmic rather than separately drawn backgrounds to save room. Also did some fun stuff with the telescope, including modifying the sprites on the fly.

3 August 2020 -- Release v0.98

Have Selenitic done. Including the sub puzzle, which I wasn't going to do, but in the end I had most of the pieces in place so why not. There are a few minor locations you can't walk to, but other than that it's more or less complete. No audio though, all subtitles. There are hooks in place in case I do ever find a good way to generate the sounds.

Also went back and filled in some missing locations on the whole path to Selenitic, including some at the generator. Myst island is completely out of room now.

30 July 2020 -- Release v0.97.1

Working on getting the final version of Selenitic done, but it is taking longer than expected. Split off the submarine part to give some more room. You can now fully complete the sound puzzle, and I am trying to make navigation easier by adding back some of the in-between places when walking around.

27 July 2020 -- Release v0.97

Channelwood is now more or less finished. Hooked up the water valve puzzle. The whole level is a bit hard to navigate, at least in part because I left out every other step for disk/RAM space reasons.

24 July 2020

Presented this work at Kansasfest, the long-running Apple II conference.

You can find the talk on youtube and the slides are available here

23 July 2020 -- Release v0.96

This improves IIgs support, thanks to 4am providing code from Total Replay. Sets black background and enables the gr/text PAGE2 fix. Also works with lowercase input now.

20 July 2020 -- Release v0.95

This release mostly fixes a bunch of bugs introduced recently that were caught by a fresh playthrough.

Also leaving the viewer the state of the ship is properly taken into account.

19 July 2020 -- Release v0.94

You can finally beat the game! This was mostly the grid-book, the fireplace grid puzzle, and the animation to get inside the fireplace.

This means Myst island is more or less complete. You can also speed run the game, or you can if I reset the default marker switch positions to be all off.

Also, if you are interested in the technical details be sure to watch my talk at Kansasfest this Friday (July 24th).

17 July 2020 -- Release v0.93

The intro is now implemented. I have to admit that all the times I've played I never watched it? It is iconic though. The real reason is late last night I found THEME.MID and couldn't rest until I had a PT3 AY-3-8910 version, and then of course I needed the intro for it to play over.

Also the link sound effect has been re-enabled, but you'll need a language card (64k of RAM) to get it. You can also toggle sound on/off with ^T.

16 July 2020 -- Release v0.92

The cabin-in-the-woods-with-giant-tree puzzle works now. Boiler, matches, safe, treetops, basement, and all. So you can now properly get to Channelwood.

This was the last major missing thing on Myst island, besides the final ending.

This release also now has working marker switches.

10 July 2020 -- Release v0.91

You can now lose the game. Can't win it yet because I haven't got the marker switches hooked up properly.

9 July 2020 -- Release v0.90

You can raise and lower the ship! The Myst island code was the oldest so I wasted a lot of time fixing up the code and graphics while doing this. We are just barely fitting in the 40k limit and I still have to add support for flipping the marker switches...

Also with this version you can get to D'NI so stop by and say hi to Atrus.

5 July 2020 -- Release v0.89

Implemented the planetarium/dentist-chair level. This was fairly tricky with lots of odd corner cases, including some that might have been bugs in the original game (all months with 31 days? odd behavior if you lower the panel while the light is flashing?). The "SED/CLD" 6502 decimal mode helped a lot. Am still cutting some corners compared to the original game.

Some other minor changes too, improved some of the graphics on Myst island and moving some other things around.

1 July 2020 -- Release v0.88

Top level of Channelwood implemented, you can collect the pages and view the ripped letter. You can even play around with part of the projector machinery.

26 June 2020 -- Release v0.87

Second level of Channelwood Age implemented. This level is huge! I'm going to have to break it into 3 pieces, even with leaving out a lot of side paths.

Also it looks like it might take 3 floppy disks to hold the game. Though once it's done it might be able to squeeze it back to 2 if you play various optimization games.

Have also implemented loading of saved games. Only for debugging now as you can't actually save yet, only load.

16 June 2020 -- Release v0.86

Lower level of Channelwood Age implemented. Water valves not implemented, but you can link back to Myst.

This age is a pain, with lots of water, trees, and wood. At least there's no bricks or checkered floors.

With this linking book you can finally get to all the ages and back. It had been bothering me that you could potentially get stuck on Channelwood for a while, leading to a Myst Exile type situation for any unfortunate travelers.

29 May 2020 -- Release v0.85

Most of Selenetic Age implemented, but not the puzzles.

The sound puzzle is going to be difficult due to the Apple II's poor sound.

The submarine puzzle is just long and not much fun so it might never get implemented.

This was a hard one as there are a lot of colors, including some odd color choices (the crazy crystals) and it was hard to map this to lo-res.

21 May 2020 -- Release v0.84

Can now talk to both brothers, and could in theory lose the game (in theory because it's not possible to gather all of the pages yet).

21 April 2020 -- Release v0.83

Started implementing the tree area (without puzzles yet) and you can get to Channelwood (but can't return).

Also got a bit carried away and have a lot of Stoneship implemented. Running into the 48k limit with Stoneship but should be able to make it fit. Also, you can link back from Stoneship. I actually end up feeling stressed if you can get to an age with no return, I don't want to be like Atrus (in Exile) and end up accidentally trapping someone.

8 April 2020 -- Release v0.82

Sadly things got big enough it's going to take two disks (or both sides of one floppy). Added support for the tower rotation, including a lot of animations. Also added books to the bookshelf.

28 March 2020 -- Release v0.81

This adds u-turn support. The dimensional imager works. Beginning of the stone ship age.

24 March 2020 -- Release v0.8

A bugfix release fixing some issues encountered when you leave/return to the main island from various ages. Encountered more or less all the bugs when trying to show off the game to family.

23 March 2020
First finished the rocket puzzle by adding the circuit breakers on the tower. Then got completely carried away and implemented most of the Mechanical Age. Took a lot of time and is much bigger than I expected. It looks like it might take two 140k floppies if I get around to implementing the whole game.

15 March 2020
Implemented the puzzles (Generator Room and Spaceship Controls) to get to the Selinitic Age. The age itself is not implemented. Its colors are even worse for the Apple II than previous. Also there's a big sound puzzle and then the interminable sub maze which would be complex to implement.

9 March 2020
Well that one video I posted got unexpectedly popular. Including the crew at Cyan! Hello to the Cyan people if you're reading this, I apologize in advance for some sarcasm about the game's plot that I sprinkle around in places.

8 March 2020
You can now solve the clock related puzzles, open the gear, and travel to the Mechanical Engineer age.

5 March 2020
You can now access all of the marker switches.

4 March 2020
Moved all compression to lzsa, which freed up nearly 8k of space. It's not quite as fast as the previous RLE algorithm I was using though.

I thought I was done, but I might be adding some additional features, stay tuned.

3 March 2020
Still room in memory, so added a few more locations.

2 March 2020
Added some more graphics and sound, and threw the release out the door!

1 March 2020
Threw this together over a weekend, because why not. Cursing Atrus more than normal for all his granite and wood which are a pain to convert down to GR resolution.

Paper Design Documents
Some of the notes made during development.


Other VMW Software Demos / Demakes
Other Apple2 Projects
Back to the VMW Software Productions Page


from Hacker News https://ift.tt/2vPHhkK

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.