Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
mkfanatic

Final Doom yellow key patch

Recommended Posts

Okay, here's my dilemma. I've been playing Final Doom TNT and I got to the secret level Pharaoh. This is my first time playing this level but I had read before about the yellow key glitch before but had forgotten about it until I couldn't get any farther in the level. Here's what I want to know. I downloaded the update patch and I can start a new game just fine with the patch but is there any way I can load my current game with the new patch? Cuz I can't seem to get that to work any way that I try. I'm trying to play all the way through Final Doom normally without cheating but I want to continue playing through with all my current items and such. I don't want to start the level over completely and starting with just the pistol. Know what I mean? Is there any way to do this?

Share this post


Link to post

No. The "patch" is actually an external PWAD just like any other addon level and thus loading it makes loading a saved game impossible, since it will be like loading a game made from another level.

This mean that you'll either get a crash, or see no change at all, since the objects, monsters etc. will be loaded from the existing save file, not the patched one.

At this point you can restart the level, restart the game, or simply use one of the many tricks to complete the level without the yellow key.

Share this post


Link to post

What annoys me is that when you buy Final Doom from Steam, as I did a 6 months back, you still get the flawed version of Pharaoh without the yellow key in SP. I spent ages trying to finish the level until I gave up and checked the net, I'm sure many others have done likewise.

Shouldn't they be selling a patched version by now?

Share this post


Link to post
aldiboronti said:

Shouldn't they be selling a patched version by now?


AFAIK there was never an official "patched" version for sale, and some tools/source ports may barf on a patched IWAD, if the size and checksum aren't exactly as expected. It may also break demo compatibility, so IMHO they just let it as is, and whoever wants can play TNT with the external patch wad loaded.

Share this post


Link to post

While some may consider this to be blasphemous, you could just use the 'give yellowskull' cheat (if you're running zDoom). If you get to the spot where the key *should* be, and don't want to lose your progress, I don't see a problem with that. And if you're not running zDoom/a child port, just look up the cheat for the appropriate program that you're using.

Share this post


Link to post

You could always hack the save game to add in a yellow key object ;) This would require expert knowledge about the layout of mobj_t in memory in the port that you are using, of course. :)

Share this post


Link to post

There's another, very simple way to patch the IWAD without causing utilities etc. to throw a wobbler. All you'll need is a hex editor (if you've not got one, google it - there are various freeware ones kicking around the net.)

The problem is that the yellow key has incorrectly been flagged as "multiplayer only". With a bit of detective work and a map editor, I found out that the yellow key is thing 470 and that its entry in map31's thing list begins at byte 0x49483C (decimal 4802620) in the IWAD. If you've got a legitimate unpatched version of TNT.WAD, the ten byes starting at 0x49483C should read as follows in a hex editor:

59 F5 48 F8 00 00 06 00 17 00

These five pairs of bytes respectively describe its x-coordinate, its y-coordinate, its angle, its thing type and - most importantly - its flags. The important byte is the ninth one, "17". If you change it to 07 (make sure you're overwriting it and not inserting it!) you'll make the key appear in single player.

And although it's a minor change, I'd suggest backing up TNT.WAD beforehand in case it does go wrong. [Edit] And as Quasar pointed out, your old savegames will not have the yellow key in them.

Share this post


Link to post
kaplanator said:

There's another, very simple way to patch the IWAD without causing utilities etc. to throw a wobbler. All you'll need is a hex editor


Any alteration, even of one byte, will cause pretty much any decent checksumming algorithm to go way off course, and the alteration will still be detectable (notably, prboom refuses to start with altered IWADs, although I don't know if they just check the length or checksum the whole thing).

Anyway, why don't you just do the throne-jumping thing (if you have saved game in the throne room) and continue with the level? It's easy, and it's not even cheating.

Share this post


Link to post
Maes said:

Any alteration, even of one byte, will cause pretty much any decent checksumming algorithm to go way off course, and the alteration will still be detectable (notably, prboom refuses to start with altered IWADs, although I don't know if they just check the length or checksum the whole thing).

Just tried it with PrBoom, didn't have any problems there.

Share this post


Link to post
kaplanator said:

Just tried it with PrBoom, didn't have any problems there.


Then it must be a size thing, because applying a patch to the Doom II v1.9 IWAD didn't work (but that also altered the size of the IWAD), I just got that cryptic "can't find main IWAD in path" that pops up if you screw with the IWADs.

Share this post


Link to post
Maes said:

It may also break demo compatibility, so IMHO they just let it as is

If that was a strong argument, Doom v1.1 wouldn't have been updated to begin with. But that would be rather stupid, I think. It's really a shame they never released a patch. Wouldn't be too hard to change one byte, right?
And for demo compatibility, I'm sure, a downgrade patch would have appeared, just as we have them for Ultimate Doom and Doom II.

Share this post


Link to post

In any case, in addition to borking demos, editing the IWAD will get you kicked off multiplayer servers or cause consistency issues when connecting to other peers, so it's better to either make an extra copy of the IWAD to hack or to use the patch TeamTNT provides.

Maes said:
I just got that cryptic "can't find main IWAD in path" that pops up if you screw with the IWADs.

The WAD editing utility must have changed the header to PWAD instead of IWAD.

Share this post


Link to post
Maes said:

(notably, prboom refuses to start with altered IWADs, although I don't know if they just check the length or checksum the whole thing)

O_O Is that under all circumstances or just when certain options are set? I mean, what about custom IWADs? What's more, in ye goode olde dayes before source ports or DEUSF, lots of graphics replacements ran a batch file to replace sprites and another to restore the old ones, thereby changing the IWAD.

Share this post


Link to post
myk said:

The WAD editing utility must have changed the header to PWAD instead of IWAD.


Well, damn. That was exactly the problem. I don't recall why I kept a patched DOOM2.WAD (there was some sort of fix?) but since I applied it with XWE, it must have srewed up the IWAD. Changed the WAD gender manually and it worked. Heh.

LogicDeLuxe said:

If that [demo compatibility] was a strong argument, Doom v1.1 wouldn't have been updated to begin with.


They did forsake demo compatibility in the past a lot of times, but the v1.9 DOS exe was pretty much finalized and was for the first time, common across all DOS versions of Doom, so altering even one byte from it could have repercussions well beyond just Final Doom: TNT. It was not something major enough to warrant invalidating all the v1.9 demo base, or recall/republish the game again.

Call them historical/hysterical reasons if you wish :-p

Same thing as the IWAD: it would render any existing v1.9 demos for TNT as a whole invalid (I'm not sure, but while it is possible to watch Doom 2 demos on Final Doom, surely there must be the occasional fuckup?)

Share this post


Link to post
Never_Again said:

Why don't you load the patch and then your older savegame from the previous level, MAP15 Dead Zone and continue from there? Strange that no one suggested this so far.

Presumably, mkfanatic is not interested in speedrunning. Without the Yellow Key most of MAP31 is inaccessible, thus no 100% kills and secrets.


I didn't have a load point from Map15 and you guessed correct, I'm not interested in speedrunning. This is my first time playing through Final Doom (I've played through the PSX version but as everyone knows, it has many levels missing from it and missing monsters (Archvile's and the Cyberdemon in some places)). Something I've noticed with the PC version, the Revenants are hella faster than in the PSX version. I also enjoy trying to get 100% on everything. Just so everyone knows, instead of going through all the trouble of finding some way to incorporate the saved game into the patched version somehow, I just went ahead and started a new game on that level (since it pretty much gives you all the weapons at the start) and played through the rest of the game normally. I'm done with Final Doom and am now working my way through Plutonia2 (which is hella harder than Final Doom, especially since I ALWAYS play on Ultra Violence, even though it's my first time playing it. To me, there is no other way to play Doom).

Share this post


Link to post

Or the long way:

Go to yellow key spot and IDKFA, shoot off all your ammo until you're back to normal. Then just go find the key cards and don't use any color doors unless you know you have the key.

Share this post


Link to post

Source ports have an obligation to fix this bug, just like they would fix a bug in the code that prevented a level from being completeable.

The following has been in EDGE since 2005 and I hereby put it into the public domain for anybody to use:

static void CheckEvilutionBug(byte *data, int length)
{
    // The IWAD for TNT Evilution has a bug in MAP31 which prevents
    // the yellow keycard from appearing (the "Multiplayer Only" flag
    // is set), and the level cannot be completed.  This fixes it.

    static const byte Y_key_data[] =
    {
        0x59,0xf5, 0x48,0xf8, 0,0, 6,0, 0x17,0
    };

    static const int Y_key_offset = 0x125C;

    if (length < Y_key_offset + 10)
        return;

    data += Y_key_offset;

    if (memcmp(data, Y_key_data, 10) != 0)
        return;

    I_Printf("Detected TNT MAP31 bug, adding fix.\n");

    data[8] &= ~MTF_NOT_SINGLE;
}

Share this post


Link to post

Just realised something that concerns me: Final Doom has had an ESRB rating for the Xbox 360 for a long while, if it ever gets released for XBLA, they might forget about this bug. You cant just add a patch wad to that, so yeah

Share this post


Link to post
Maes said:

AFAIK there was never an official "patched" version for sale, and some tools/source ports may barf on a patched IWAD, if the size and checksum aren't exactly as expected. It may also break demo compatibility, so IMHO they just let it as is, and whoever wants can play TNT with the external patch wad loaded.

How about a readme file explaining the problem?

Share this post


Link to post

I was thinking that maybe the TeamTNT guys made the bug on purpose to encourage people to play it on cooperative mode :p

andrewj said:
Source ports have an obligation to fix this bug, just like they would fix a bug in the code that prevented a level from being completeable.

Well, unlike a code bug it's a problem in the broken level, and the level may be exited as it stands. It should indeed be applicable anyway in various engines if it suits their aims, of course. Although taking it to a greater extreme, you might as well add in code that makes 100% kills or secrets possible in levels where that's not possible.

Also. the level seems to have a nodes problem, so that simple fix (or tweaking the IWAD to make the key show up) becomes more convenient than using the patch mainly in engines that rebuild the nodes.

Share this post


Link to post
myk said:

I was thinking that maybe the TeamTNT guys made the bug on purpose to encourage people to play it on cooperative mode :p


Nice thought, but they admitted long time ago, that it's simply a bug.
(click!)

Share this post


Link to post

Yeah, thanks for the correction and link... I totally didn't know that!

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×