#M4ZVM

Shawn Sijnstrasijnstra@hachyderm.io
2025-02-11

After much testing and code comparison, the new Feb 2025 Release of #Vezza - my #z80 high speed #zmachine is ready! Took way longer than expected to synchronize across all of the code bases, particularly making sure that all optimizations made it across all platforms - TRS-80 model 1, TRS-80 model 3, TRS-80 model 4, the CP/M versions (~18 platforms), the embedded versions (Spectrum tape, TEC-1G), and slowly pushing into the Agon Light version (which has even more updates still in progress). Lots of individual tweaks, and some major rethinks and rewrites have come together to accelerate game play.

The hardest part of rewriting in this update involved rewriting the dictionary search code. I ended up going back to the original jzip interpreter, written in C for Unix waaay back when. Jzip provided much of the logic that went into ZXZVM, which provided the base for #M4ZVM #M3ZVM and #Vezza. Going back to Jzip made sense as Jzip has an even longer history; and is highly tested and stable and still maintained. This research gave me the confidence that the streamlining and changes I was making to such a fundamental part of the game would work, making all inputted dictionary searching more efficient.

To work around how CP/M stores executable files I spent a lot of time re-organising the memory map to make the executable smaller. This involved rearranging where the initialization code was stored inside the increasingly complex layout. Support across multiple versions means I needed to break up variable sized code and strings to sit inside variable sized gaps, while still compiling all the CP/M versions from the same interconnected set of source files. It needed quite a few manual checks to ensure that it all worked.

What this all means is that your favourite #infocom #punyinform and other text adventures will all play on your favourite z80 #retrocomputing platforms even faster than before!

More details in the devlog and downloads can be found at:
#TRS80 versions sijnstra.itch.io/m4zvm
#CPM #CPM80 versions sijnstra.itch.io/vezza

Screenshot of Stefan Vogt's Ghosts of Blackwood Manor, played using Vezza on an Amstrad CPC
Shawn Sijnstrasijnstra@hachyderm.io
2024-12-24

I've been chipping away at my #Infocom #zmachine interpreter for the past 12 months, trying to squeeze more performance out of it. I did make it smaller and mostly faster until one game turned out slower, so I kept it on the backburner until I found a way to fix the worst case. Next trick was rewriting the dictionary search much harder to thoroughly test) and finally correcting a long standing cosmetic bug (see before and after images). Update release for #Vezza and #M4ZVM will be early 2025.

Screen preview of text adventure with unexpected gaps in rows.Screenshot of improved text adventure rendering with unexpected gaps in text no longer present, giving 2 additional text lines in this case.
Shawn Sijnstrasijnstra@hachyderm.io
2024-01-07

I've released a new version of my #infocom #z-machine #textadventure interpreter #Vezza for #CP/M and #M4ZVM for the #trs80 Model 1/3/4. There's some speed improvements, along with a reduced footprint (smaller file, more space for cache), and a bugfix for a rare edge case in error handling discovered through the release of Ghosts by @8bitgames
Disk images at sijnstra.itch.io/m4zvm and sijnstra.itch.io/vezza (with links to more platforms etc) #retrocomputing #cpc #msx #kaypro #osborne

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst