home.social

#punyinform — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #punyinform, aggregated by home.social.

  1. IkeC, Autor des prämierten Spiels #Staub, hat eine deutsche Version der #PunyInform-Bibliothek angefangen: github.com/IkeC/PunyInformDE. PunyInform ist eine alternative Bibliothek für #Inform6 zum Schreiben von #Textadventures. Diese passen dann üblicherweise, anders als bei der Standardbibliothek, auf so ziemlich jedes klassische 8-Bit-System.

    Gerne mal reinschauen!

  2. IkeC, Autor des prämierten Spiels #Staub, hat eine deutsche Version der #PunyInform-Bibliothek angefangen: github.com/IkeC/PunyInformDE. PunyInform ist eine alternative Bibliothek für #Inform6 zum Schreiben von #Textadventures. Diese passen dann üblicherweise, anders als bei der Standardbibliothek, auf so ziemlich jedes klassische 8-Bit-System.

    Gerne mal reinschauen!

  3. IkeC, Autor des prämierten Spiels #Staub, hat eine deutsche Version der #PunyInform-Bibliothek angefangen: github.com/IkeC/PunyInformDE. PunyInform ist eine alternative Bibliothek für #Inform6 zum Schreiben von #Textadventures. Diese passen dann üblicherweise, anders als bei der Standardbibliothek, auf so ziemlich jedes klassische 8-Bit-System.

    Gerne mal reinschauen!

  4. IkeC, Autor des prämierten Spiels #Staub, hat eine deutsche Version der #PunyInform-Bibliothek angefangen: github.com/IkeC/PunyInformDE. PunyInform ist eine alternative Bibliothek für #Inform6 zum Schreiben von #Textadventures. Diese passen dann üblicherweise, anders als bei der Standardbibliothek, auf so ziemlich jedes klassische 8-Bit-System.

    Gerne mal reinschauen!

  5. IkeC, Autor des prämierten Spiels #Staub, hat eine deutsche Version der #PunyInform-Bibliothek angefangen: github.com/IkeC/PunyInformDE. PunyInform ist eine alternative Bibliothek für #Inform6 zum Schreiben von #Textadventures. Diese passen dann üblicherweise, anders als bei der Standardbibliothek, auf so ziemlich jedes klassische 8-Bit-System.

    Gerne mal reinschauen!

  6. The next thing I've been tackling has been the verb/grammar code. The goal here is to represent the logic/data structures from this section of the #PunyInform library: github.com/johanberntsson/Puny

    It looks like a combinatorial explosion of possible prepositions in a large space of possible sequences, along with placeholders for object search conditionals. It feels like the kind of thing that needs a lot of core just to map it all out. Sure, I have my input words compressed to single 12-bit integers, but there's a lot of repetition in the source there and it seems like a mess to represent.

    I made a list of all the tokens in this thing, and came up with 32 values (including a null). Well, that's neat! I could decide that if the most significant bit of a tanner is `0`, it's a lookup into a table of 12-bit values. I have some space left in my compression scheme for ideas like "object in scope" or "object in inventory" (which can gobble multiple words), so I can handle common cases like `INVENTORY`, or `GET LAMP`, or `TURN ON LAMP`. I map the `TURN` verb into a pair of indices for `ON` and *noun*, pointing out to our equivalent of the Puny `SwitchOn` function in the #PDP8 game code.

    Okay, but what about all that `'in'/'into'/'inside'/'on'/'onto'` stuff? Well, If the tanner's most significant bit is `1`, then I treat it as a sort of pointer into the second half of my grammar index. So that might look like this:

    37. `IN`, `INTO`
    38. `INSIDE`, *37*
    39. `ON`, `ONTO`
    40. *38*, *39*

    So I might have `GET` mapping a grammar word of [*40*,*noun*] to the `ENTER` procedure, so that `GET INSIDE BICYCLE` and `GET ONTO BICYCLE` will both call the same code. The grammars use 3 words per mapping, and make use of a table of 64 words. This feels more comfortable for the type of system I'm writing here.

    Yes, this is just #LISP cons cells, and I love that.

    Now I just need to write all this...

  7. 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

  8. 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

  9. After much testing and code comparison, the new Feb 2025 Release of - my high speed 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 and . 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 and other text adventures will all play on your favourite z80 platforms even faster than before!

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

  10. 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

  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

  12. I feel kind of bad for realising that I've actually managed to teach #Inform6 to a poor grad student who's studying under a friend of mine.

    I was able to send a link to an example of abusing anonymous functions in a #PunyInform `cheap_scenery` block, and another showing how to use named constants/functions to extend the number of dictionary words that can refer to the same handler, and she just ran off and implemented it all.

    This is not going to serve anyone well in Industry or Research, but hot dang is this a fun project!

  13. #PunyJam 4 is live, for anyone who likes the idea of making a text adventure for old computers using #PunyInform, a lightweight #Inform6 library: itch.io/jam/punyjam-4

    Nice loose theme, great documentation & friendly community! Imagine worlds.
    #InteractiveFiction

  14. Spontaneous (and probably unnecessary) update of my #C64 #InteractiveFiction game 'Ghost Mountain' appears!

    shinmc.itch.io/ghost-mountain

    Fixed a bug, made some minor improvements, added new Ozmoo features (command history, REU scrollback buffer).

    A short spooky text adventure, good for dark nights (and it's almost Halloween...).

    #PunyInform #Inform6 #Commodore64 #TextAdventure

  15. A couple of hours working on the adventure game this afternoon. We have time, and we have a few events.

    #inform6 #punyinform

  16. I wrote a short series of help commands in #PunyInform for an #InteractiveFiction project. I wrote a short `intro` verb, a longer `help` document with the most common verbs needed to win the game, and a `stuck` verb that tells the user not to panic before advising on strategies for solving the puzzles.

    I then decided to remap the StrongSub verbs over to my new StuckSub, so that it can catch anyone swearing at the game in frustration.

    And yes, I included the #umdpdp12 #easteregg, where they found a command log of someone swearing at "this stupid chunk of germanium". I decided to make the help system replicate the #os8 error message in honour of this moment in #pdp12 #VintageComputing history.

  17. PunyJam #3 announced! itch.io/jam/punyjam-3

    #InteractiveFiction #Inform6 people, write yourself a #PunyInform text adventure that'll run on 80s home computers (and anything beyond that has a z-code interpreter).

    Theme announced Feb 2nd, closing date for submissions Feb 26th. Imagine worlds.

  18. Aujourd'hui sur @ifiction vous trouverez un article de votre serviteur 🙂

    Le sujet est très technique : des astuces ad-hoc en #Inform6 / #PunyInform pour arriver à faire rentrer une aventure textuelle dans le format très contraint des premiers jeux #Infocom. Je voulais écrire et partager mes astuces avant de les oublier 😁 fiction-interactive.fr/economi

    Si vous n'aimez pas le code ou la technique, jouez plutôt au jeu ! 🙂 hlabrande.itch.io/l-ile-trista