New tool for reverse engineering ZX Spectrum Quill adventures

Just thought I’d share some tools that I’ve been working on over the last couple of months with the wider Interactive Fiction community.

I was always a big fan of Quilled games on the ZX Spectrum back in the day (nearly 40 years ago now). Over the last couple of months, I’ve been working on a Web-based reverse engineering tool for Quilled games and, at the same time, an online Quill adventure player and they’re now in a ready enough state to be made public. I always liked the ‘unquill’ tool, but wanted to take some of those ideas a little bit further. The unquill tool was very helpful in understanding the data structures used within Quill games, but all the code in these tools has been developed from scratch.

The site is currently blocking me from including a link here (too much like spam), so use the link through my user details if you want to take a look.

Currently, I’m using the tools to replay some of my old favourites and generate detailed walkthroughs and guides to these games.

Happy to hear any suggestions or, of course, reports of any bugs that I haven’t yet fixed.

4 Likes

The link was up for a while in that other thread, but it makes sense for it to have its own topic.

Here: https://s3-eu-west-2.amazonaws.com/quill-adventure-guides/main.html

(Copying some of my comments from the other thread)

…cool looking tool and website. Really interesting. Any plans to expand it to other Quill formats, beyond the ZX Spectrum?

We have quite a lot of tools for extracting and viewing Spectrum, Amstrad, C64 and BBC Quilled games. Sadly, there aren’t corresponding tools for some of the other formats, such as the Atari, Apple II, DOS… which is a shame as there are quite a few platform exclusive games that would be interesting to poke around in (and perhaps even port).

I’ve had a little play with the online interpreter. It’s not the way I’d ever want to play a Spectrum text adventure but it is cool.

One thing I did notice straight away (there might well be other issues) is that it’s not handling the END condact/end game loop correctly. It incorrectly processes the status table after the “Do you want to try again?” prompt.

Thanks for the comments.

Can’t say I have any long-term intentions at the moment. Really the tool was initially developed to let me quickly explore and replay games that I enjoyed from 35 years ago, as well as to find those hidden bits I may have missed first time round.

I hope that my tool does something new that the other tools don’t. I’m only really familiar with unquill but definitely interested in referencing the wide variety of other tools that are out there, as well as linking to other pages related to more recent activity with the Quill. If there is a strong interest in reverse engineering the formats for the other platforms then I can put some effort in this direction. If anyone has inside knowledge as to the data formats used on other platforms, so much the better, otherwise I don’t have much to go on initially.

Agree that the online interpreter probably won’t ever be preferable to the real thing; without the UDGs and Illustrator graphics a lot of the games don’t quite have the same atmosphere that they did in the original. But it’s been a fun project to develop all the same. I’m not at all surprised that there’s a bug in the END handling; this bit has gone through several rewrites to try and get it to work and it sounds like it’s still not quite there.

1 Like

There are quite a few of us who still use tools like the Quill and the PAW to make text adventures; as well as the related DAAD. I’m not sure how aware you are of all the various community sites and projects? There are active communities on Facebook and Twitter. The Spanish have their own, really active scene and they’re responsible for developing and maintaining a lot of the tools that make programming in these old systems a lot easier these days.

I’ve posted a link to your site in various places and people have been having a look at it… Tim Gilberts, of Gilsoft, has commented: “Wow - that is an impressive way to break down the Quill data - I love the association bit that shows where objects etc are used with expanded descriptions… very high level.”

I’m mostly a PAWs and DAAD user myself but I do want to go back and write a Quilled game, at some point. I don’t know anything about data formats for the different computers, but I did spend some time starting to put together an overview of the Quill across all the various platforms… http://8bitag.com/info/documents/Quill-AdventureWriter-Reference.pdf

I also edit and research at CASA, so I’ve seen some of your guides before… Nice to see the tool that you used to help produce them.

1 Like

I took a quick look and it seems that there are some potential issues with the Online Quill Player:

The sentence before the prompt is system message 4 when it should be randomly from 2 to 5.

What Next?
>

There are also errors with the automatic functions: AUTOG, AUTOD, AUTOW, AUTOR (note that this is also the case for the UnQuill interpreter):

The Horrors of Blackskull Mountains game:
Online Quill Player:

What next?
>i
You have with you:-
Clothing -     
  (red tunic, red trousers,
   red underclothes) (worn)
Leather sandals (worn)
                
What next?
>get tunic
OK. (wrong message)
                
What next?
>remove tunic
OK. (wrong message)

Unquill Player:

What next?
i

You have with you:-
 Clothing -                     
  (red tunic, red trousers,     
   red underclothes)(worn)
 Leather sandals(worn)

                                
What is your command?
get tunic
You can't.
                                
What is your command?
remove tunic
You are not wearing that. (wrong message)

Qaop (emulator):

What next?
>i
You have with you:-
Clothing -     
  (red tunic, red trousers,
   red underclothes) (worn)
Leather sandals (worn)
                
What next?
>get tunic
You can't.
                
What next?
>remove tunic
You can't.

Thanks. I should have realised about the prompt (that one just slipped my mind to finish implementing), but the AUTOG bug is a new one for me. I’ve added both to my ‘Known Bugs’ list (which I’ve now also published on the page).

I’ve fixed these bugs now, along with the end game loop problem mentioned by 8bitAG

Some other possible mistakes:

Autow and Autor should only work if the object index is greater than 199.

If a typed word is not in the vocabulary (e.g. ANY), it should be skipped:

>ANY NORTH
>NORTH
1 Like