Scott2zil - a tool for converting SA-games to ZIL

Just what the world wanted… a new Scott Adams interpreter…

I did this much as an excercise in ZIL. This is a first release and so far I only tested it with a couple of games… I’m happy to recieve any bug-reports (here or as an issue in GitHub).

You find the code here https://github.com/heasm66/scott2zil

scott2zil

Tool for creating converting a SA-game dat-file to ZIL that compiles with ZILF.

Scott2Zil is a tool that takes a data-file for a game in the Scott Adams-style genre (games that can be played with for example ScottFree or PerlScott) and repackage it inside a ZIL-shell that can be compiled with ZILF to and independed z5-game.

Thanks to:

scott2zil is tested with the following games:

  • 01 Adventureland
  • 03 Mission Impossible
  • Ghost King

Manual

  • Take the data from the *.sao or *.dat you created with scottkit or obtained by other means and paste it in the table game-dat. Currently there is adventure 1 - Adventureland, just replace it.
  • If you want you can change some of the game constants that controls for example the standard messages and if the gameflow is with split screen or conversational.
  • Compile the game with ZILF and play in a Z-machine of your choice (I use Windows Frotz 1.21 myself). There is a make-file with the syntax for ZILF and ZAPF but you probably need to change the paths.
7 Likes

You’re gonna want to account for the item location bug in Buckaroo Banzai if you haven’t already…

Guess that will be the next game to test…

Screenshots Adventureland in split screen mode:

!

Screenshot Adventureland in conversational mode:

!

2 Likes

That’s awesome! I’m sure it will solve a lot of the problems that people have had with running SA games on different platforms, like the web.

This is the first time I’ve tried using ZILF, and when I run the second command in the make.bat file manually on my Linux box (../zilf-0.9.0-linux-x64/bin/zapf -ab scott2zil.zap > scott2zil_freq.xzap) i get the error message:

Assembling
:0: fatal error: unrecognized symbol: WORDS

Not sure if my ZILF installation is just broken or if there’s something else I’m missing.

Strange.

The second step is only to create an abbreviation file. You don’t need that for these small games (I only think it saves about 1500 bytes). So you could just try zapf without the -ab and the > …

just tried it with a fresh copy and had no problem. I work in Win10 that could possible make a difference.

It really should work with:

..\zilf.exe scott2zil.zil
..\zapf.exe scott2zil.zap
2 Likes

Ah! If i don’t remove old files from previous build attempts, bad things happen. The following variation on the build script worked better for me:

../zilf-0.9.0-linux-x64/bin/zilf -w scott2zil.zil
../zilf-0.9.0-linux-x64/bin/zapf -ab scott2zil.zap > scott2zil_freq.xzap
../zilf-0.9.0-linux-x64/bin/zapf scott2zil.zap
rm *.xzap *.zap

Again, not sure if i did the ZILF installation incorrectly or something.

To the question on FB: is there a reason this has to be z5 instead of z3?

I switched to z5 when I implemented the split screen because I needed CLEAR and CURSET (not avaible in z3).

I just tried to compile with ZIP (–> z3) and the following commands that I use is not supported in ZIP:

LEX
CLEAR
CURSET
CURGET
INPUT

I use LEX to reparse for the abbreviations (e --> go east).

CLEAR, CURSET & CURGET is only used in split screen.

INPUT is used in the intro text and the “pause” (wait one second).

I think it would work to compile a game as ZIP if you remove the split screen and only play in conversational mode. You also will lose the pause (not vital, I think).

I will create an issue in GitHub to fix this with compiler directives.

In other words: If you choose ZIP (z3) as target you get a conversational game with no abbreviations for directions (like the old BASIC-interpreter).

2 Likes

If you want the abbreviations you create in step 2 to be use in step 3 you need to delete the “scott2zil_freq.zap”-file between step 2 and 3. Otherwise zapf will use the *_freq.zap instead of the newly created *_freq.xzap.

I think there is an issue to make this process a bit more streamlined for future versions of ZILF…

There is now a version that can compile to ZIP (z3, version 3). The following ZIL-commands doesn’t work in V3:

LEX
CLEAR
CURSET
CURGET
INPUT
HLIGHT

Because of that you will lose the following if you compile to V3:

  • Game mode ‘split screen’ is not available, only conversational.
  • The player can obviously not change game mode with ‘CHANGE MODE’.
  • You can’t use n, s, e, w, u, d, i & l you have to type the full ‘go north, go south, …’
  • You have to live with a status line (always there in V3).
  • ‘70 CLS - clear’ doesn’t work in V3 (it is simply ignored).
  • ‘88 DELAY - pause’ doesn’t work in V3 (it is simply ignored).

There is a new release (release 4) of scott2zil. I have fixed a couple of issues in this. Most notably is that:

  • More parameters are configurable in game-dat.zil.
  • Conversion table that converts ISO-8859-1 to ZASCII_C1. This “should” fix international characters, but I have not tested more than a little bit with some swedish letters.
  • If you compile to z3 you still can use the shortform for directions and inventory.

You find the latest version here.

I also tried running a z3-game in C64 with Ozmoo Online

It loaded much faster than the recently C64 port of ScottFree. Gameplay was a bit slower but still acceptable (Brian Howarth’s 1984 C64-version is still the fastest I tried).

4 Likes

I’ve played through a couple of games with scott2zil and currently is the following games testet:

  • 01 Adventureland
  • 02 Pirate Adventure
  • 03 Mission Impossible
  • 12 The Golden Voyage
  • 14b Buckaroo Banzai
  • Ghost King

The IFDB entry on The Golden Voyage specifically states that the inform conversion of the game is " *WARNING! The Z-Code conversion of this game is certifiably unwinnable, due to a faulty conversion." so I wanted to check if the scott2zil-version is winnable (which it is, I’m happy to say).

If you want to try the games the convertet versions are here (I’m gonna update the IFDB entries as soon as the new parchment version is released that hopefully fixes a problem with INPUT 1 (ZIL)/read_char (Inform)).

3 Likes