[z-machine] Hello?

Johnny Billquist bqt@Update.UU.SE
Mon, 28 Feb 2005 00:47:26 +0100 (CET)


On Sun, 27 Feb 2005, David Kinder wrote:

> Johnny Billquist wrote:
>> Is anyone active here?
>
> I think so. It's been a long time since this list saw much activity
> though, so you might be better off just asking any questions on the
> Usenet group rec.arts.int-fiction.

What the heck. I'll give it a shot anyway.

I currently have V1-5 down pat, I believe. Every game I've tried works 
like a charm anyhow (minus the speed of some Inform stuff, as noted).

Since I decided to start trying to get V6 games working, I've stumbled 
into some "funny" stuff, though.

First of all, the V6 game I'm using for test is Zork Zero 393.890714.

If anyone would like to help me out by actually running things, and see 
what happens, let me know, and I'll give you access.

Okay, here we go.

First of all, I'm using a real live actual text terminal to play. So no 
real graphics around (unless you count the character graphics in V5). The 
interpreter is, as I said, identifying itself as type 1 (DEC-20). It's 
definitely the closest, and most sensible for me to say. :-)

What I've observed so far, which confuse me, and perhaps someone else 
might know more about is:

1) set_cursor can be called with a negative x coordinate. It appears that 
this would be a position relative to the right edge, but also, when this 
happens, the Y coordinate is off by one line.

2) Zork 0 is doing a normal aread(5), but the parsing totall fails for me
in V6. Don't know why yet, and haven't looked much at it. Someone knows
what is going on?

3) The top of the screen in Zork 0 shows your location, along with moves 
and score. The moves prompt, and number, are placed correctly. However, 
the score prompt is placed right, but the number is placed at (3,1) 
instead of (2,76) (or wherever).

While mucking around a little with item 3 above, I noticed that it picked 
the score placement from a table at 70245(octal). There are several 
references to this table, with offset 0-3, which is used to get the cursor 
coordinates. However, at the start of Zork 0, a copy_table is done, with 
the destination specified as 70245. The length of this copy_table is also 
4. It's interesting to note that copy_table is said to have the size in 
bytes, but the loadw uses an offset that is 2* the value (if you follow). 
It might be that the top two words of that table are fixed, and it might 
be a bug in Zork0, or it might be that there is some special case the the 
specification of the Z-machine have missed. Anyone know anything about 
that?

Oh, and I've tried both frotz, xzip and zoom, and neither of them deal 
well with Zork 0, so I have no working code to compare to either.

 	Johnny

Johnny Billquist                  || "I'm on a bus
                                   ||  on a psychedelic trip
email: bqt@update.uu.se           ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol