GithubHelp home page GithubHelp logo

davidkinder / windows-frotz Goto Github PK

View Code? Open in Web Editor NEW
56.0 56.0 11.0 2.92 MB

Z-code interpreter for Windows, based on Stefan Jokisch's Frotz interpreter core.

Home Page: http://www.davidkinder.co.uk/frotz.html

License: GNU General Public License v2.0

C 49.66% NSIS 1.20% C++ 41.79% CSS 0.03% HTML 7.11% Batchfile 0.21%

windows-frotz's People

Contributors

borg323 avatar davidkinder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

windows-frotz's Issues

Windows-Frotz doesn't work under Wine properly

I tested Windows-Frotz here with a Linux Mint maschine and it does install and start ok, as well as the installer.exe as the standalone version.

It's also possible to select a game and load it into W-Frotz but after that you can't type in any commands or letters.

Error when print_addr gets a string that goes past 64K

(this is copied from https://gitlab.com/DavidGriffith/frotz/-/issues/276, since the Windows Frotz core looks to have the same general code causing the issue)

If print_addr is given the address of a string which starts below 64K but stretches past it, Frotz will segfault.

The issue is that print_addr tells decode_text it's a LOW_STRING, and thus uses a zword to track the address, but since the string goes past 64K, it wraps around and continues decoding from the beginning of memory.

I'm attaching a file which segfaults, as the address wraps around to 0, which ultimately results in a stack overflow as decode_text winds up in an infinite recursive loop.

Whether this is a valid Z-code construct is debatable, but since it can result in a segfault I thought it'd be worth reporting.

See https://intfiction.org/t/z-machine-standard-unclear-aspects-ambiguities/64128/26.

64k.zip

Frotz 1.24: cant set Fixed width font

windows 11.
start frotz and open ZSpec11.z6

go to options and change fix width font to cascadia mono.
hit ok
re-open zspec11.z6

pick "3" text styles. fixed width wont show as fixed width.

need to delete
HKEY_CURRENT_USER\Software\David Kinder\Frotz\Display ! Fixed Font Name
then reopen frotz to get a fixed width font back.

Investigate reports of errors with Arthur

I've had two reports of problems with Arthur:

Anyway, in testing Windows Frotz I found I can repeatedly cause the classic Frotz "Store out of dynamic memory" error, by simply clicking through the Arthur intro screens and answering no to the saved game prompt. This occurs just before the first interactive screen with the church and sword and the stone. If I check the ignore internal error option, the game proceeds, but of course may be in some kind of broken state.

and

I just downloaded v1.21 yesterday, and out of pure luck loaded up my copy of Arthur (Release 74 in case it matters). Everything went swimmingly until I typed a command into the game and was returned a 'Call to non-routine' follow by a drop to OS. If I remove the BLB file, this no longer happens. The other V6 games do not suffer this affliction.

I can reproduce neither, and the first reporter indicates that it only happens on one of their two PCs.

Add Russian translation

Add Russian translation, based on translated .rc file from Nikita Tseykovets:
FrotzRussian_rc.txt

From Nikita:

Inconsistent delays between repeated sample plays in one turn

When multiple calls to @sound_effect are made to be played in one turn, they should be played back to back without any delays. Windows Frotz introduces inconsistent pauses between the end of one play and the next.

An easy way to demonstrate this in action is to blow the whistle on the first turn in Sherlock and then wait. A cab will arrive and a sample of hoofbeats are played back to back three times in ascending volume. If you don't get into the cab, then this happens again in descending volume.

@output_stream handled improperly

Taken from https://gitlab.com/DavidGriffith/frotz/-/issues/1:

This was sent in by David Fillmore today:
According to the Z-Machine specification:
"In Version 6, a width field may optionally be given: if this is non-zero, text will then be justified as if it were in the window with that number (if width is positive) or a box -width pixels wide (if negative). Then the table will contain not ordinary text but formatted text: see print_form."
Frotz, on the other hand, tries to get the width of a window of number -width if the value is <= 0, but passes the width value through directly if it is positive. This results in the interpreter crashing with an "Illegal window" error if the width value is less than -7.
Sample Inform6 code tickling this bug:

Switches v6;
Array formatted table 50;

[ main x;
  @output_stream 3 formatted (-30);  ! Frotz treats this as a window number and crashes.
  print "ooh, hello there^boy^how are you";
  @output_stream (-3);
  @print_form formatted;
  @read_char 1 -> x;
];

See also https://intfiction.org/t/output-stream-3-with-width-parameter-causes-interpreter-halt-z6/50659

Fatal error on simple command- help person.

(new here, made account to report this, so apologies if doing it incorrectly)

I just started Seastalker Rev 16, 850603. Did the first few commands - enter name, turn on phone, adjust knob, pick up microphone, turn it on, ask bly about problem. Everything was fine so far. Next command was help Bly and it brings up a Frotz Fatal Error "Illegal Attribute" dialog box. Clicking the only choice Ok closes the program completely. Tested and reproduced multiple times. You can even type help Tip (tip is your crewmate) as your first command and it will crash.

Looks like this error goes back a long way. I tried another a different win frotz (not yours) and a dos based frotz and they all crashed the same way.

Issue is not present in the original game. Ran the Masterpiece release with it's normal interpreter under Dosbox-x and help Tip or help Bly just brings up a (said to Tip) How do you want to do that? message.

Steps to reproduce:
Start the game, enter your first and last name, type Help Tip as your first command.

Use relevant Infocom game patches from Bocfel

The Bocfel interpreter includes a number of patches to work around problems with various Infocom games. It would be worth including that patch mechanism and any appropriate patches.

Screen width

It seems that the screen width that is written into the Z-machine header (address 0x21) is the actual width % 256. This causes problems for a game or library that tries to adapt the content to the screen width, or judge if the game is even playable.

I can't find anything in the standard saying what the terp should do in this case. Setting the width to 255 may be the best, and most likely to work with existing games.

[Screen too narrow.] in Trinity

Attempting to run any of the versions of Trinity found here (https://github.com/historicalsource/trinity) will cause a [Screen too narrow.] or similar message followed by a prompt to press any key to quit, making the game impossible to run. Apparently Trinity requires 79 columns minimum, but I'm getting the error even with no margins on a modern monitor. Not sure what the issue could be.

Bug in the unsorted dictionary code

Hi,
There seems to be a bug in the custom dictionary code when I test it with ziptest.z6. While testing functionality against my own interpreter, M4ZVM, I got very different results while I was comparing the read/input functionality. In particular, WinFrotz doesn't seem to scan an unordered dictionary correctly. My results are on the left with WinFrotz 1.23 on the right (exactly the same behaviour in 1.22). Based on the responses I suspect WinFrotz may need a tweak, but happy to be corrected.

p.s. it seems to already know the words red and blue

image

Add Tolk for Screen Reader Output

I'm totally blind and use the NVDA screen reader. However, Frotz doesn't automatically output text to it unless I use an NVDA add-on. The alternative is using SAPI 5 from the options screen, but this isn't ideal since I can't stop the speech on demand. If possible, please add support for Tolk, so the program can automatically output information to NVDA and other supported screen readers. This would give the user more control over many things, including speech rate, using non-SAPI voices, changing the pronunciation of words, etc. Here's the link to Tolk.
https://github.com/dkager/tolk

Missing Transcript file (Windows 10)

The release notes mention a transcript file. Unfortunately I cannot find such a log file anywhere on my Windows 10 system. Do I have to enable it first?

I'd like to use the transcript file for auto mapping using Trizbort Interactive Fiction Mapper.

Speech and sound improvements

Suggestions from Nikita Tseykovets:

  • Add a key press to skip the current sentence, and another key to repeat the last sentence. This needs rules to define what constitutes a sentence, but that should be possible.

  • Add hotkeys to turn sound on and off, and to control the sound volume, without affecting speech.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.