Adventshark

That’s my github account - the engine there is a total rewrite from the ground up that was designed to be as compact as possible so I could squeeze graphics onto a BBC Micro port. It is mostly finished and all the Brian Howarth games are playable with graphics. The basic Scott Adams games are playable without graphics (the graphics scheme on the Scott Adams games is quite disc space intensive - although I may be able to abuse the PC version of the graphics).

At the moment it will only work on a BBC Master - mainly because the BBC Master has a build in flood fill routine; although it should be possible to add a simple BBC Micro version.

I sort of shelved the project about eight years ago because i had other things to do.

It’s 3.5 KB of handcoded 6502 which is significantly smaller than either the Howard or Jukic engines. It may be possible to port to other 6502 machines (e.g. C64, Apple II); but it uses the BBC micro OS routines for text, so would need some conversion.

Anyway, I update my github to add a couple of pre-built disk images you can shift-break to load the game straight up.

4 Likes

Sample screen on BeebEm:

3 Likes

The “sagarework” project is impressive. Especially, in my eyes, the graphics part.

I haven’t spent time reading about the graphics encoding method involved, but could it be extended to work as a sort of platform independent graphics system as well, that would work with other platforms? Are there better ones?

The Scott Adams engine games suffer from so many different incompatible ways to show graphics that if I wanted to support graphics in Adventshark, I’d be forced to pick one. If so, I’d like to pick one that strikes a balance between being efficient and portable on lower spec platforms, while still being relevant for something like a modern smartphone or PC monitor.

There were several ways of doing graphics for the Scott Adams adventures:

  1. For Mysterious Adventures a simple line and fill technique was used
  2. For some of the US Scott Adams games a screen was encoded using run length encoding and usually loaded off disk (On PC, Atari, C64)
  3. For some of the UK Scott Adams games the screen was constructed of blocks and colours (On C64, Spectrum)
  4. There was a line drawn version for Scott Adams games on the Apple II and Atari. I haven’t decoded this yet

My notes can be found: http://aimemorial.if-legends.org/format.html and my code at https://github.com/tautology0/textadventuregraphics/tree/master/AdventureInternational (mostly C code, but I added a Python converter recently).

To be honest, if I was doing a version for a modern computer, I’d think about just storing the graphics as .PNGs.

@tautology Thanks, that’s what i was about to ask!

Also, has anyone got any Scott Adams graphic files (or where they can be found)?

1 Like

I have a load of them in various places on my computer; a lot I stole from the disk images from the original games. I will see what I can gather together and upload to my github.

Some of the converted ones can be found on the AI memorial page, if you go to the file format and then click on the sample image, it will download all the images in that game for that platform. http://aimemorial.if-legends.org/format.html

(Apologies for the HTML on that page - I wrote the pages back in 1999 and have never updated them as I no longer have access to that server.)

2 Likes

Since i’ve been hacking adv05 “The Count” by Scott Adams, i had a go at putting the images i found under Atari RLE format through the XBR4 algorithm;

Original

Count_orig_028
Count_orig_070 Count_orig_010 Count_orig_106 Count_orig_142

XBR4






Obviously not fantastic, but better than simple resize.

Just need a de-stippler :slight_smile:

2 Likes

Great job! I’ve never seen these images before. That’s not at all how I imagined the layout of the bedroom. Is that the same algorithm you used on the Scrolls games?

It seems there are different versions of pictures for some of the games. Presumably for different machines.

These up-scalings were done using XBR4 one of several interesting Pixel-art scaling algorithms. XBR4 works quite well for originals with stipple patterns and halftoning. Yes, this is the same method we used on the Magnetic Scrolls remasters.

We’ve tried some other ideas too like AI-based rescaling, but this doesn’t work too well when the source is too pixelated. It’ll probably work well on either plain area drawings or photos.

I had a look at scott2zip from ifarchive.org. It lets you convert Scott Adams .dat format files to Inform 5.5, which in turn can be converted to Z-Machine, which in turn would make adventures created with adventshark easier to share online etc.

It needed a bit of cleanup to work with Perl 5 but i followed the instructions in the thread “errors when converting with scoot2zip with SAC” and created a github repo for it: https://github.com/pdxiv/scott2zip

Only after doing all this, did i realize that I couldn’t figure out how to compile Inform 5.5 to Z-Machine. Oh well :confused:

Anyone happen to know how big the difference is between Inform 5.5 and Inform 6, and how much work would be required if i wanted to update scott2zip to do Inform 6 instead?

http://ifarchive.org/indexes/if-archive/infocom/compilers/inform5/

Inform 6 is mostly backwards-compatible with 5 but you might run into annoyances. I think (haven’t looked for years) that scott2zip relies on the Inform parser, which changes a fair bit between releases.

2 Likes

Thanks. That pointed me to a bit more useful information. I still can’t figure out how to build an inform 5.5 compiler that works for me in Ubuntu though.

I’ve tried using the Inform 6.33 compiler instead and it gives me a lot of error messages and warnings on the scott2zip output. I managed to get rid of all the error messages by hand-tweaking the Inform file generated by scott2zip. (This was encouraging, since all the manual tweaks could probably be added to scott2zip.) After a while, I managed to get a runnable .z5 file.

Running my demonstration game (also in the repo) with Frotz 2.44 gave me the following output, however:

I'm outside the gates of the adventurers' guild
Obvious exit: EAST
Visible items: None
<--------------------------------------------------------------->

WHAT SHALL I DO?
[** Programming error: tried to write to ->0 in the string array
"raw_buffer", which has entries 1 up to 80 **]

Seems like I’m still missing something, and I have no idea what. :rofl:

1 Like

Yeah, I think this is a combination of some parser internals changing and an…oddness…in Strict mode.

In I5, iirc raw_buffer was just a normal byte array, filled with bytes. The first element held the length of the buffer, but that was an implementation detail that Inform didn’t care about.

In I6, raw_buffer is now a string array, which has special runtime restrictions imposed on it. In particular, a string array is a byte array whose first element holds the length of the array—but you are not allowed to change the first element directly. Altering that value requires assembly code. (And, of course, you shouldn’t change it to anything that’ll overflow into unrelated areas of memory. But that’s on you.)

1 Like

I released a new version v0.1.2 of adventshark which can be downloaded from the web site.

It adds a “create noun in list for object noun” button and has some bug fixes that make the program more pleasant to use and less prone to die unexpectedly.

(There’s usually some extra tweaking required to the code to make adventshark work well on MacOS, and I haven’t been able to test that the new object noun button actually works there, but it’s fine on Linux and Windows at least.)

2 Likes

It seems to work on macOS Mojave – or, at least, the button seems to create a new noun for a new object as expected:

1 Like

Thanks a lot ahope1! The screenshot helps too. The screen resolution of the emulated Mac that I’m using for building is much too low to allow me to see the whole application window right now. :slight_smile:

1 Like

I managed to get the Inform 5.5 code to build on Linux. (I had to change #define ARCHIMEDES to #define UNIX in header.h to get it to build.) It throws a lot of warnings at me, but it seems to work well enough to build something usable. When i run the converted game in Frotz, I still have problems:

I'm outside the gates of the adventurers' guild
Obvious exit: EAST
Visible items: None
<----------------------------------------------->

WHAT SHALL I DO? go east
I don't know what a "east" is.
WHAT SHALL I DO?

Does anybody know the licence of Inform 5.5? Can I create a github repo for it with some minor improvements without violating Graham Nelson’s copyright?

I’m not sure it has one, honestly. There’s no COPYING or LICENSE file in its source, and the documentation I can find doesn’t mention a specific license either. It’s clear the source was meant to be freely available, and it’s clear ports to new platforms were welcomed and encouraged, but I can’t find anything specifically allowing or forbidding people to fork it and modify the basic functionality.

So, the best suggestion I can give is—ask Graham. Seeing as he posted the source publicly on the Archive (and seeing as I6’s library and source code are released under the Artistic License) I don’t really expect him to deny you permission, but it would be nice to get an actual license on it.

How are the graphics related to the game data and action logic? In some game data files I’ve found a single graphics “command” but it’s not entirely obvious to me how it’s used, or if there were many different ways to control graphics on the different platforms.

In the MS-DOS titles it appears that every room optionally has an RLE encoded image associated with it, for example.

(Still thinking about what it would take to include graphics in adventshark, that would be both compatible and interesting for the development of new games.)

Most of them seem to be room based - as in the room image is drawn each time you visit the room. Then it separates on scheme and engine.

AI US SAGA games have separate icons for each object and an inventory screen and the icon can be shown on an inventory screen.

Mysterious Adventures just seem to have graphics/room and nothing else.

AI UK SAGA and further games (e.g. Supergran, Fighting Fantasy, Gremlins etc) have a graphics command with animation. I haven’t really dug into how the command works.