Ghost King, a Scott Adams Literary Adventure Diversion (S.A.L.A.D.)

I’ve made a CSS fix that I think should at least be livable on both very wide and very tall screens. Optimizing it looks like it needs someone who knows more about this stuff than I do, but please tell me if it’s still unviewable for you and if that’s the case, what window resolution you’re using.

1 Like

The current version is all visible on one screen for me, but the text is squashed together. (I’m using firefox on a mac, resolution 1920 x 1080.)

Tweaked again. I’ve opened at various window sizes and everything at a reasonable size and aspect seemed at least readable. Really nailing it for a variety of browser and size combos probably needs more CSS than I am capable of, and/or an approach that doesn’t rely on DOSBox.

3 Likes

Looks good!

1 Like

There’s something weird about the code, you have two EXRM0’s in a row, and a CONT in a .cont, which as far as I remember doesn’t make much sense.

>KILL CLAU
	? IN ROOM_5 && BIT 10 && -BIT 11
	"*DEAD FOR A DUCAT!*^Wait NOT CLAUDIUS at all!^I killed Polonius, \"
	"Ophelia's dad^'What a RASH and BLOODY deed!' Gertrude runs away!^Time to \"
	"LUG THE GUTS!"
	DELAY 
	DROPX OBJ_16
	CONT 

	.cont
	EXRM0 
	EXRM0 
	SETZ 11
	CONT 
	rem "cont"

	.cont
	CT<-N 20
	X->Y OBJ_14 ROOM_17
	rem "cont"

It would be nice if it could run on a TRS-80.

The double-EXRM0 is what ScottKit calls swap_room and you’re right, it doesn’t make sense except that it’s the best* available workaround to ScottKit Issue 38.

We discuss this a bunch in what started out as a thread about the 99 message limit and then turned into a thread about ScottKit’s iffy management of situations requiring continue. (Casual glancing at a couple of decompiled original SA games suggests that he does in fact use continue a little differently for lengthy actions than SK does, but aside from being inefficient I’m not sure there’s anything wrong with continue-inside-continue. In any case it’s a compiler question.)

As for running on a TRS-80, yes, I agree, but I couldn’t find an accessible workflow to test it and try to make that happen. Do you have one?

*- okay sure all of the other workarounds were equally pretty but I wanted to pick one and stick with it, and that’s the one I picked.

If your game respects the limits of the Scott Adams 8.5 interpreter for TRS-80, there are some possibilities to tinker with The Adventure System (I did this to fix the James Bond Adventure game, visible on CASA).

To replace the " (&quot) in strings, it seems preferable to use the ` (&grave) instead of the ’ (&apos)

You’re right, it does look like ` is the authentic quotation mark for SA games, I’ll keep that in mind for S.A.L.A.D. #2.

I would really appreciate a collaborator for this. I have found that my enthusiasm for learning how to operate emulators for platforms that I have very little person experience with has significantly diminished since the early 1990s when it was in fact one of my most favoritest things to do.

Another thing, don’t mix in your code automatic-actions and player-inputs. Automatic actions will be ignored if they are not placed first (with Scott Adams’ interpreter).

Ah, yes, I see now looking at a couple of decompiled SA adventures that all of the occur events are at the top and then the actions follow. It wasn’t clear to me that that was a limitation/requirement of the original interpreters.

That’s unfortunate from a writing perspective but is easy-ish to clean up in source before building a binary for a classic interpreter. I suppose it doesn’t hurt to ask for some sort of “compile-strict” mode, either…

Thank you for going through the effort of building the TRS-80 disk!

Can you point to specific documentation on this 8.5 interpreter, and ideally highlight all of the areas where the GK object code violates it? I’ll file an optimistic feature request for ScottKit to compile with strict compliance, but it will definitely help if we have the specifics of what that means.

No, but there is documentation for The Adventure System that is compatible with version 8.3 of Scott Adams’ interpreter:
https://mocagh.org/loadpage.php?getgame=advsystem

Apart from separating occurs from actions, did you have to make other changes to make it compatible with the TRS-80 interpreter?

Quotation marks in strings (`), and line breaks within strings are done by LF (0A) and CR(0D) on the outside.
Here’s what I remember, it’s a long time ago…

And I forgot to say we need to complete the Header (0: The number of bytes required to contain the text of the verbs, nouns, messages, room descriptions and object descriptions.) and Trailer (security checksum).
A TRS-80 screenshot:
ghost_king

1 Like

TRS80 compatibility issue filed on the ScottKit tracker.

No, but for these calculations, checksum and size value, it is interesting to look at the Basic versions of the Adams interpreter.
You should find this on The Big List of TRS-80 Software

I’ve posted a review of this game on IFDB.

2 Likes

I appreciate it. As a sidebar, do you have a take on the Cruelty rating I submitted? By the letter of the law, Polite seems to require UNDO and that’s simply not available, but it seems overall more Polite than Cruel (the other most applicable setting).

Even the last treasure is still technically available from Horatio while you’re actively dying of poison…

I’m not sure. I think that Polite rather presumes the existence of UNDO, and without it I don’t think Ghost King quite fulfils the criteria. The rules as written on IFDB seem strangely misordered to me, since I would think it more polite to let the player know when they’re about to do something irrevocable, rather than when they’ve already done it (UNDO or no UNDO). For this reason, I’m not sure whether any of the ratings are a perfect fit for Ghost King, but perhaps Tough is a less misleading descriptor than Polite.

There’s no obvious warning that Ophelia is about to trip you up, for example, or that the platform is slippery.