Seeking full version of demo of “Uh-Oh” by Scott Covert

Hi There

I’m trying to trace down the full version of this text adventure released in about 1998/1999 by a man called Scott Covert from Ontario, Canada:

‘Uh-Oh’

I played the demo version over 20 years ago and it is very limited, however having not finished it (though I’m sure I pushed the demo to it’s limits) it has been on my mind for a long time.

Hoping someone out there has a copy of this game, or can point me to some forgotten place on the internet where it pay be stored.

I’ve tried to find the author to no avail, his old website is on archive. org is dead links and bouncing email addresses

Many thanks,

TC

3 Likes

The name rings a bell, but I might be thinking of something else. What platform?

1 Like

Hi Garry

Thank you very much for your reply, appreciate it!

It was available on PC, the full details of it are here on IFDB:

It’s an odd one, the demo seems to be the full game, but there is a ‘fairy’ mechanic that only lets you make 20 moves.

TC

1 Like

Hypothetically, could someone decompile a *.z5 file?

TXD, part of ztools, decompiles z5 files. Not sure what it actually decompiles them into, though. This is the output from uhoh-demo.z5.

1 Like

Hmm… that doesn’t look like enough, does it? While the tweak needed to shut off the “fairy mechanic” is probably fairly small, I suspect you might need the source to track that down.

Also, while the IFDB listing is from 2007, the page history doesn’t seem to include the IFDB member who posted it. And Scott Covert only seems to have the one game on IFDB.

Seems that routine r0244 is what prints the “demo fairy” messages, at least.

1 Like

Reform (Index: if-archive/infocom/tools/reform (ifarchive.org)) does a decent job at decompiling Z-machine games back to Inform syntax, but (just like with decompiling C code), routine names, property names, etc. are all lost.

1 Like

With the uninform tool (also called Disinformation) I got something close to Inform code, but I think the end was cut off?

Perhaps Reform works better.

output.inf (176 KB)

2 Likes

If I understand correctly, simply snipping that routine and attempting to recompile likely won’t work, correct? To recompile the code produced by the decompiler, you’d have to explicitly supply some bits of information that are lost in the original lossy compilation, no?

1 Like

By the way, does anyone know how to compile the Reform source with the current ghc? I keep getting “Could not find module” errors.

2 Likes

I’ve been doing a bit of digging around.

You were supposed to be able to purchase the game from the author’s web site at http://www.successinformation.com/game.htm. That web site is now defunct, but it is preserved on The Wayback Machine. If you download the zipped demo version from there, it includes a readme file. The readme file tells us that the demo version (as stored on the ifarchive) is named ‘uhohdemo.z5’, whereas the full version is named ‘uh-oh.z5’.

I did a search for the latter (and the ‘uhohpc.zip’ file that it’s contained in) and could not find it on the Internet. This tells us that there probably was a full version and it’s probably not archived anywhere.

The other interesting thing is that the author’s web site has a tale of woe, where he withdrew the game because some trademark scammer had trademarked a heap of terms related to Y2K, including the term ‘Uh 00h’ and was threatening to sue because the name of Scott’s game was so close to this trademarked term.

4 Likes

I’m using the precompiled Windows executable and running into a “non-exhaustive patterns” error. So this might need some more work.

Edit: unfortunately I don’t know enough about Haskell (let alone what has changed about the language and libraries since 2004) to update this code.

3 Likes

uninform seems to choke on the nested citation marks at line 13653, but replacing them with apostrophes only seems to make it cut off more.

2 Likes

Alright, @Warrigal got me down quite the rabbit hole of various defunct websites, but I eventually found one of his contact numbers, and, on a whim, called.

Got a former business partner and friend of his who was absolutely astounded that I was calling about a 25 year old video game. He took down the information and my contact details and emailed Scott immediately. He said Scott is very responsive and I should expect a response by later this afternoon. (He also said Scott keeps and religiously backs up everything, so he most certainly has a copy of the game hanging around.)

14 Likes

The Fearless Team of IF Archaeologists in Action!

Wonderful tale. Excited to see how it ends.

6 Likes

I have not yet heard back.

3 Likes

Wow. Thank you all for this amazing call to action! It’s such a shame that he encountered legal action. Fortunately he did get his demo out there (and hopefully some full copies!), as I got the demo on a cd pack in for (I think) Australian PC User magazine, sometime in 1999. I’m still going through the Internet Archive trying to locate the exact issue.

I had not thought of decompiling the z5, indeed I didn’t know it was possible. Thank you for uploading the output - it will be an interesting read later, hopefully after playing as I’m sure some of the content will give away the ending!

Years ago I did locate his archived Success Information website and attempted to email some people who I thought could be him through LinkedIn but never heard back, or those emails went with or without bounce into some void. Calling is not something that occurred to me - how cool! Good luck and thank you!

3 Likes

I made a very quick first sstab at it with Reform. It balked at a function called binaryLeft2 at the end so more work is needed. The decompiled file + the autogenerated symbol-file below.

uhoh-demo_reform.zip (128.4 KB)

3 Likes

The “demo fairy”-object

Object -> obj25_demo_fairy__flitting_about_your_head_ "demo fairy (flitting about your head)"	! 25 / 0x19
  with	name 'demo' 'fairy' 'fairie',
	before routine51524,
	description [43 a1],
	each_turn routine51544,
	limit [0 0],
  has	animate;

Have a before and a each turn-property looking like this:

! References: obj25_demo_fairy__flitting_about_your_head_.before

[ routine51524 ;	! 51524 / 0xc944
    if (global233 == 16[obj16_floor?]) {
        print "You cannot get rid of the demo fairy in the trial version. She will be with you throughout.";
        new_line;
        rtrue;
    }
    if (global233 == 66[obj66_scary_halloween_mask?]) {
        print "No use trying to harm the impervious demo fairy.";
        new_line;
        rtrue;
    }
    rfalse;
];

! References: obj25_demo_fairy__flitting_about_your_head_.each_turn

[ routine51544 ;	! 51544 / 0xc958
    routine64884(global235,76[obj76_Master_bedroom?]);
    if (routine64380(global235,76[obj76_Master_bedroom?]) == 12[obj12_northwest_wall?] && random(3) == 1 && global8 == 2[?] or 4[String?] or 5[CompassDirection?]) {
        routine39592(94[obj94_PC_TV_Integrator_software?]);
    }
    if (routine64380(global235,76[obj76_Master_bedroom?]) == 18[obj18_inside?]) {
        routine64352(global235,76[obj76_Master_bedroom?],0);
        if (global8 < 5) {
            style bold;
            print "^^The demo fairy squeaks: ~That's all the time you have to experiment with this phase of the adventure. It's time to see what the next phase holds! ...~^^";
        }
        if (global8 == 5[CompassDirection?]) {
            style bold;
            print "^^The demo fairy boinks you on the nose with her tiny wand and squeaks: ~That's all the time you have to experiment this time around. You'll see a message that says you've won, but really, you haven't. Sorry ... at least you can get the full version of this game for what Infocom(TM) used to charge for an Invisiclues(TM) booklet! My master hates shareware nag screens as much as anybody does, but he's explained to me that making this game took him 50 consecutive 10-hour days out of his direct marketing career, so ...~";
            routine64012();
        }
        routine63592(global8 + 1);
    }
    if (routine64380(global235,76[obj76_Master_bedroom?]) == 9[obj9_east_wall?]) {
        style bold;
        print "^^The demo fairy flitting about your head says: ~Just 8 more moves in this phase, then we move on ...~^";
        new_line;
        rtrue;
    }
    rfalse;
];

If these are removed (or the routines are hacked so they return without action) is maybe a way to get rid of the fairy?

3 Likes