deater78 Posted July 30, 2022 Share Posted July 30, 2022 (edited) Hello I was curious how much of Myst I could fit in a 4k cartridge (I ported all of Myst to an Apple II on three disks a few years back). It turns out not much, but it was fun to try. [update] Version 2.6 is a 16k E7 ROM with a fully playable subset of Myst. You can get all 4 endings, solve two puzzles, walk around the main island, and complete the typical speedrun route Web page about the project (including link to source code): http://deater.net/weave/vmwprod/myst_vcs/ You can get the ROM here: http://deater.net/weave/vmwprod/myst_vcs/myst.e7 There's a manual to help you play through here: http://deater.net/weave/vmwprod/myst_vcs/vcs_myst.pdf Plays fine in stella, MAME, and real hardware using harmony cartridge. Currently does not play on javatari due to a (reported) bug in E7 cart handling. Edited August 7, 2023 by deater78 update links 18 Quote Link to comment Share on other sites More sharing options...
Mrshoujo Posted July 30, 2022 Share Posted July 30, 2022 Try again but consider a bankswitched cartridge. I've seen anywhere from 32K to 128K. Or a 6K load for the Starpath Supercharger. ?✔ Quote Link to comment Share on other sites More sharing options...
deater78 Posted July 31, 2022 Author Share Posted July 31, 2022 the Apple II version has 800 images totaling about 400k of graphics. Although in the end it's not really the cartridge space that would keep me from attempting a more complete version, for this I was generating a custom kernel for each image to maximize the colors/design and that's a lot more labor intense than drawing 800 bitmaps was. Game logic wise it might be doable, I was surprised how few bytes of game state there is for the complete game. 4 Quote Link to comment Share on other sites More sharing options...
Prizrak Posted July 31, 2022 Share Posted July 31, 2022 Cool concept, love what you've accomplished so farSent from my SM-G996U using Tapatalk Quote Link to comment Share on other sites More sharing options...
deater78 Posted August 4, 2022 Author Share Posted August 4, 2022 so you have all convinced me to see if I can expand this. I'm trying with an E7 bank-switch cartridge (16k ROM/2k RAM). Data for each screen is about 500 bytes, and I'm going to compress the data with ZX02 compression and then decompress to RAM. So far the data compresses pretty well. I got decompression working, it was interesting hacking it to work when the read/write addresses are different. I'm going to try to implement enough of Myst island that you can follow the speedrun route (for those who don't know, you can speedrun the actual game Myst in around 40s or so without leaving the main island) 8 Quote Link to comment Share on other sites More sharing options...
Lauren Tyler Posted August 4, 2022 Share Posted August 4, 2022 Just when you think you've seen it all... Quote Link to comment Share on other sites More sharing options...
deater78 Posted August 5, 2022 Author Share Posted August 5, 2022 working on some more art for the new engine. Each image is 448 bytes, and for it to work it has to compress down below 256 bytes so it can't be too complex. The viewing pool scene I had to hack a lot of the detail out before it would compress small enough 8 Quote Link to comment Share on other sites More sharing options...
deater78 Posted August 11, 2022 Author Share Posted August 11, 2022 making steady progress, have 18 different scenes you can view. There should be enough ROM to fit at least 60 or so 8 Quote Link to comment Share on other sites More sharing options...
deater78 Posted August 12, 2022 Author Share Posted August 12, 2022 You can now activate 3 marker switches, plus investigate the red and blue books in the library. I'd estimate I've got about half the space on the ROM left. 5 Quote Link to comment Share on other sites More sharing options...
deater78 Posted August 17, 2022 Author Share Posted August 17, 2022 so in the game you can now walk to and activate all of the marker switches. I've also updated the kernel so you can have a striped background on the right side of the playfield. Currently there are 32 locations you can visit, I'm hoping I can fit at least 64. 2 Quote Link to comment Share on other sites More sharing options...
Ecernosoft Posted August 17, 2022 Share Posted August 17, 2022 On 7/29/2022 at 9:44 PM, deater78 said: Hello I was curious how much of Myst I could fit in a 4k cartridge (I ported all of Myst to an Apple II on three disks a few years back). It turns out not much, but it was fun to try. You can get the ROM file and the code here: http://deater.net/weave/vmwprod/myst_vcs/ I'm making It's Conner time! on 2600 as a proof of concept in 4K bytes as well. It uses repeated screens to give "Bigger" levels. I'm also using a multicolored 32*12 playfeild (IN RAM!). Honestly, I was worried I was going to run out of RAM, but no. I have a 8 byte stack as well as a pointer in which 12 colors I will use for the playfeild out of a 256 byte list. Wow! I also want to add music and sound to it as well. Quote Link to comment Share on other sites More sharing options...
deater78 Posted August 31, 2022 Author Share Posted August 31, 2022 hitting the point where these are spoilers if somehow you've made it to 2022 without playing Myst. Anyway you can get to D'ni now and hang out with Atrus, and even get one of the 4 endings. Currently a lot of puzzles are being skipped, I'm hoping I'm going to have enough room in the ROM to implement some of them. 2 Quote Link to comment Share on other sites More sharing options...
deater78 Posted December 24, 2022 Author Share Posted December 24, 2022 finally had some time to work on this again. No gameplay improvements, but I now have the ZX02 image decompression working without glitching. The problem was decompression was taking more than 262 scanlines. I managed to split up the decompression code and use timers so VSYNC could be maintained while the decompression was happening. 1 Quote Link to comment Share on other sites More sharing options...
Bomberman94 Posted December 24, 2022 Share Posted December 24, 2022 Interesting project! Do you consider a PAL version, too? Quote Link to comment Share on other sites More sharing options...
deater78 Posted December 24, 2022 Author Share Posted December 24, 2022 26 minutes ago, Bomberman94 said: Interesting project! Do you consider a PAL version, too? it should be relatively straightforward to do a PAL port. It will have to wait until after the NTSC version is finished though. 1 1 Quote Link to comment Share on other sites More sharing options...
deater78 Posted June 23, 2023 Author Share Posted June 23, 2023 have some time to work on this project again. Plan is to get a speedrun-capable version of Myst to fit on a 16k E7 cartridge. I'd estimate it's about 75% there currently. as a side effect of this work found a bug in the E7 cartridge support in javatari today, but found a fix and sent it upstream 2 Quote Link to comment Share on other sites More sharing options...
JetSetIlly Posted June 23, 2023 Share Posted June 23, 2023 17 hours ago, deater78 said: as a side effect of this work found a bug in the E7 cartridge support in javatari today, but found a fix and sent it upstream What was the bug? Quote Link to comment Share on other sites More sharing options...
deater78 Posted June 24, 2023 Author Share Posted June 24, 2023 7 hours ago, JetSetIlly said: What was the bug? when accessing the memory location (on Apple II we'd call this a soft-switch, not sure the right term on vcs) to swap in the RAM to the address space it indicated this with a "ram enabled" flag. When you later swapped ROM back in, the "ram enabled" flag was never turned off, which as you can imagine caused issues. All that was needed was a one-line fix to disable the RAM again after swapping the ROM back into place. 1 Quote Link to comment Share on other sites More sharing options...
Cris1997XX Posted June 25, 2023 Share Posted June 25, 2023 Out of curiosity, would it be possible to use the F4 mapper for this? I think 32K is just enough to fit most, if not all, the puzzles in the game Quote Link to comment Share on other sites More sharing options...
deater78 Posted June 26, 2023 Author Share Posted June 26, 2023 10 hours ago, Cris1997XX said: Out of curiosity, would it be possible to use the F4 mapper for this? I think 32K is just enough to fit most, if not all, the puzzles in the game For my game kernel the graphics for each scene take 512 bytes. For my stripped-down version of Myst there are going to be roughly 64 scenes (plus a bunch of other code for the intro and puzzles and such). I guess in theory I could maybe squeeze things down to fit in a 32k ROM. Currently I am using ZX02 compression where each level is 256 bytes or less compressed. This should allow things to fit in 16k. This does require RAM to hold the decompressed data. This is why I use the E7 ROM as it includes enough RAM to do this. Having the decompressed data in RAM has other benefits too, as for some of the effects and puzzles I patch the graphics on the fly rather than having separate copies. Doing a "full" VCS version of Myst would be a lot of work. I did do a full Apple II version with similar graphics limitations (40x48, but only 15 colors, but you have no limitations of colors per line). This involves roughly 800 scenes, in the end taking three 140k floppies, so roughly 400k or so of data (most of which is compressed). 2 Quote Link to comment Share on other sites More sharing options...
LatchKeyKid Posted June 28, 2023 Share Posted June 28, 2023 On 6/25/2023 at 9:59 PM, deater78 said: For my game kernel the graphics for each scene take 512 bytes. For my stripped-down version of Myst there are going to be roughly 64 scenes (plus a bunch of other code for the intro and puzzles and such). I guess in theory I could maybe squeeze things down to fit in a 32k ROM. By "graphics for each scene", do you mean the playfield? Or does that include other data for the kernel like sprites? I'm not a programmer so I'm genuinely asking as I don't have any practical knowledge as to how much a playfield setup takes on the rom. I've been tossing around ideas about an adventure rpg but have no idea how much space a typical map grid of screens would take in even the basic batari kernel (let alone any of the more advanced techniques you're using with compression). Quote Link to comment Share on other sites More sharing options...
deater78 Posted June 28, 2023 Author Share Posted June 28, 2023 each "scene" is just what's on the screen. My kernel draws a 40x48 asymmetric playfield. There is a fixed background color, but each 4-scanline high line can have its own foreground color. There is then an "overlay" made up of sprite1 that's an 8x48 strip of blocks (each overlay line can be its own color) that overlays the screen to add a bit more detail. You can also have one vertical line the same color as the pointer (this is missile0) and optionally the background on the right side of the screen can alternate with an additional color. This ends up being 448 bytes per scene (16 bytes used to describe the scene, 6*48 bytes for the playfield, 48 bytes for foreground color, 48 bytes for the overlay, 48 bytes for overlay color). I use compression which squishes things down to 256 bytes per scene (some compress a little better than that). This means I have room for roughly 60 or so scenes in the game. I'm doing this all in assembly language so I am not sure how this would map to a batari kernel. 3 Quote Link to comment Share on other sites More sharing options...
LatchKeyKid Posted June 28, 2023 Share Posted June 28, 2023 Thanks for the detailed breakdown. It definitely sounds like an ambitious project! Quote Link to comment Share on other sites More sharing options...
deater78 Posted June 29, 2023 Author Share Posted June 29, 2023 I've been working some more on this. I added a bunch more locations and it's now possible to "win" the game. However it's not finished yet as I want to add in two puzzles. Really starting to run low on room though. Here's an updated video: 5 Quote Link to comment Share on other sites More sharing options...
deater78 Posted July 15, 2023 Author Share Posted July 15, 2023 got the fireplace puzzle going seriously low on ROM space here, at least in the small chunk of always-visible ROM on the E7 cartridge. The original implementation of this was really clever, loading values off the zero page using stack instructions and such. It was much too large though and ran out of scanlines for the logic. Simplified it a lot to only update one row of the pattern when clicked, rather than re-generating all 6 rows. 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.