I don’t believe that is true, modern MMBasics use a hash table for variable lookup rather than a linear search through a list in declared order. I wouldn’t make that change anyway; at some point readability/maintainability concerns trump speed. You can get some speedup by crunching variable names (at the expense of readability) but the real gain will be if/when I switch the code to use SELECT CASE instead of IF ... THEN ... ELSIF ... ENDIF - the original target version of MMBasic didn’t have SELECT CASE.
Yes that would be something I would look at early if I spend any more time enhancing Z-MIM.
Excluding the use of AI that is somewhat of a non-starter.
Z-MIM is an interpreter for the Z-machine, it is agnostic of the content being executed - I believe there is even a C compiler that can generate Z-machine code.
What you are proposing requires:
Extend Z-machine specification and implementation with audio support - I think later versions of the Z-machine specification have some but I know nothing about it.
Find/Create/Extend ZIL (Zork Implementation Language) tooling to compile new language to make use of audio support.
Find original ZIL source code for each adventure you want to add sound to and update it to use new audio support.
Not in this lifetime, not for all the coffee in Starbucks .
Hmmm i was more thinking of interrogating location (or location text) when a player moved and search out river, forest, house, cave, tent, open door, examine grate etc and fire off the relevant mp3 file on loop till location change
I remember having Leather Goddesses Of Phobos as a kid on my Atari ST i seem to remember it having a lewd mode though I at that age i dont think i knew what lewd mode was lol.
It must have left a lasting impressions since i remember it LOL
I made a pico8 game that made references to that game.
That End is the exit point … though it’s actually superflous, you could delete that line and the program would still end once the main() subroutine returned.
Note there will hopefully be a Z-MIM v3.6 in the next couple of days which is a bit faster, implements the status bar and allows you to select a smaller font if you want.
Version 3.6.0 - 1-Jun-2025:
- Added status line.
- Having the status line "scroll" off the top of the display and then
redrawing it (instead of having the text scroll beneath it) is a
deliberate choice for performance reasons rather than a bug.
- Added *FONT [SMALL | MEDIUM] meta-command.
- KNOWN BUG: using *FONT SMALL on the Colour Maximite 2 causes the prompt
to "glitch" in a way I have been unable to reproduce in a small example.
- Added '--shell' command-line option which if used will cause Z-MIM to
RUN the program specified in the "/.mmbasic-shell" file when it exits.
- Changed code to use SELECT CASE rather than IF .. THEN .. ELSEIF ..
constructs.
- This should slightly improve performance.
- Changed transpiled versions of Z-MIM to remove comments and unnecessary
whitespace.
- This should slightly improve performance.
- Changed code to no longer use _ as a variable name as this was incompatible
with the new PicoMite line-continuation feature.
- Removed '--platform' command-line flag.
- This was specifically for MMB4L and as of MMB4L v0.8 is no longer
required due to enhancements to the RUN command.
- Fixed *status meta-command to display time instead of score for
"time games" such as "Deadline".
- Fixed bug where cursor colour was always white rather than using the
display foreground colour.
- Fixed debug help text for displays <= 40 characters wide.
- Fixed formatting of stored values when using interactive debugger.
Many thanks to @cjstoddard for testing on the PicoCalc hardware for me.
Working well on first test. Changed font color to white for easier reading in bright light or low backlight and a wee exit routine to jump back to my menu program . Miss the spinning prompt tho…
OK, at the moment if you use the WebMite firmware you won’t get the progress spinner … it never occurred to me that this would be running on the WebMite … I’ll patch it when I get a moment.
In the meantime you could use the *spin meta-command to enable the progress spinner for the current session.