|LEVEL0.002||MEDIVO LEVEL ONE||19.47 kB||17 Sep 2021|
|LEVEL1.005||ORBITUS LEVEL TWO||20.03 kB||17 Sep 2021|
|LEVEL1.009||TURTEMPLE LEVEL TWO||25.91 kB||15 Oct 1994|
|LEVEL0.011||JUNGROCK LEVEL ONE||17.44 kB||17 Sep 2021|
|LEVEL1.011||JUNGROCK LEVEL TWO||20.41 kB||17 Sep 2021|
|LEVEL1.015||PEZROCK LEVEL TWO||28.35 kB||15 Oct 1994|
|LEVEL1.017||BATTLESHIPS LEVEL TWO||21.83 kB||17 Sep 2021|
|MENU.000||217.15 kB||17 Sep 2021|
Here it is. The Jazz Jackrabbit GOG patch. The first one, anyway. GOG has yet to push it as an update, but I figured I might as well put it here.
The majority of the work on this patch was carried out by myself (Love & Thunder), with help by Simon (aka SimonNaar, Jazz speedrunner), some input from various users on the Jazz Discord (primarily rsgdbfevx), and some pointers from Violet CLM (Jazz 2+ developer, all-round awesome person), who is the reason this patch happened and got sent to GOG at all. Our initial goal was to fix just a few core issues in the (then) final released version of Jazz Jackrabbit; the infamous Orbitus 2 choke point, and the broken airboard ditches.
The goal with this patch was to restore broken functionality, and fix other unintentional bugs. We have avoided the temptation to try to “improve” the game (for instance, we didn’t open up the scrapped secret area in Sluggion 2); this is entirely a patch devoted to fixing issues in playing the game. Subjective “improvements” may be the subject of a later J2O upload.
Simon was the one to fix Orbitus 2 (aka LEVEL1.005). Previous community fixes we’d seen had simply put up barriers to block the bounce ceiling that made the section near-impassable, but we chose to err on the side of recreating the experience of playing this level as it was in earlier, more functional versions (versions 1.0, 1.1, and the European release of 1.2; more on this later), so Simon moved a few of the bounce ceilings up slightly, and enlarged the opening you’re supposed to go through.
In earlier versions of the game, you could simply hold the right arrow and drift straight through this section trivially. In the 1.2 update, this was broken because all the bounce floors in Orbitus were rendered non-functional; in the European release of this version (often referred to as the “Good version”) a slightly janky fix was applied involving an invisible sprite called “quickfix” being added to the level, while the American release of 1.2 had no functional bounce floors at all! The more common version 1.3 remedied these problems (as well as a problem dating back to 1.0 that made it possible to fall through the bounce floors), but it also increased the vertical bounding box of the bounce floors so significantly that this one section was made nearly impossible.
This is easily the headline fix of this patch, and was the primary impetus behind us doing it.
With this fix, this level now functions as intended for the first time since at least 1995.
This still left a few other problems; namely, airboard ditches. That is, areas after you’ve picked up an airboard that should force you to drop them. Many of these airboard ditches simply don’t work, such as the one in Medivo 1 (LEVEL0.002). I created a fix for this by simply giving the airboard ditch object in this level a small sprite that should be totally invisible to the player, as it will only display when Jazz is standing in front of it, and only for one frame, since after that Jazz picks it up like it’s an item, and drops his airboard.
With this fix, this level now functions as intended for the first time since 1994.
Two other airboard ditches actually functioned correctly in the European release of version 1.2, while the American release was just as broken as 1.3. We were able to fix these levels, Turtemple 2 (LEVEL1.009) and Pezrock 2 (LEVEL1.015), by simply using the European 1.2 copies of these levels, which work just a treat in version 1.3. One wonders how these didn’t get used in the original release of 1.3!
With this fix, these levels now function as intended for the first time since 1995.
Finally, we wanted to fix one other issue in Jazz that has been present since its initial 1.0 release; some levels are impossible to get 100% completion on. Unfortunately tracking down every issue and fixing them without introducing more bugs proved to be infeasible in any reasonable amount of time, so the plan is to do a second patch down the line with the 100% thresholds fixed, if we can actually fix enough of them for it to matter. A lot of these fixes that we had already prepared were shown in Simon’s stream on 19 September 2021, which also demonstrated the various problems with those fixes. (rsgdbfevx found fixes for several of these, but there’s still a lot of testing to do, and it wasn’t worth pushing back the Orbitus and airboard ditch fixes by potentially several months for the sake of this feature that most people probably don’t care about anyway!)
I was happy to send off the patch with the work so far done, but then Violet CLM directed my attention to a series of fixes carried out on Jazz 1’s levels by fellow Jazz 2 Online user Doubble Dutch in the “JJ1 Levelfixes” upload. Their fixes were unfortunately hampered by various glitches likely introduced by the fact the levels were edited using JCS ’94 (aka J1CS, or Jazz 1 Creation Station), a modding tool for Jazz 1 released in 2003, infamous for causing issues such as random sounds playing at the wrong pitch. Its far more stable successor, Jazz 1 Editor or J1E for short, would have its initial release a mere three months after Doubble Dutch’s upload, in 2010.
Despite Dutch’s levels being impossible to use in their current state (in addition to their numerous bugs, they were designed for use in European 1.2, so most users would not get the same benefits from these fixes, and it lacked an Orbitus 2 fix), many of the actual fixes are still sound (at least in theory), and they cover numerous issues we were unaware of, so after having already sent all the prior files to Violet, I began work on recreating Dutch’s fixes in J1E and J1LES for 1.3, and carrying out some testing to ensure no bugs were introduced on my end.
For this patch, I made use of two fixes from Dutch’s upload: – Jungrock 1 & 2 (LEVEL0.011, LEVEL1.011): Event #29 in level 1 and #28 in level 2 is supposed to be a visual effect causing an explosion of leaves when you jump through some vines. Looks very nice. Broken in the unpatched game because of Jazz 1’s poor support for collisions with invisible objects. Dutch’s fix used one of the leaf animations as a static animation for the game object so Jazz has something to collide with, but this presented the problem of the leaves dancing around until you hit them to get rid of them. My fix added a new animation sequence that has the leaves sit still. Additionally, I changed their object type from Item to Remove Airboard. You don’t collect any airboards in Jungrock so it mostly makes no difference, however it means the leaves won’t count towards 100% item collection progress. I then used Jazz 1 Layout Editing Suite (a tool Violet created) to get a new automatically-generated item count to use for the 100% quota in the two levels then manually tested the levels to ensure it was all correct (I did this part when we were still looking at doing only one patch including all the 100% fixes). There was one more oddity with Jungrock, which is various uses of event #32 in level 2. Violet and I couldn’t make heads or tails of what these were supposed to be for, and in their current state ingame they do absolutely nothing (unless you use OpenJazz, which hasn’t been updated in years so realistically no one’s using that these days), so I elected to leave them non-functional; any functionality I could assign to them would be entirely of my own invention/speculation. The upshot is the leaves now work for the first time since the floppy disk releases! – Battleships 2 (LEVEL1.017): The cannons on top of the ship failed to fire. I couldn’t work out how Dutch fixed this, but a user on the Jazz Discord called rsgdbfevx pointed it out. In hindsight, it should have been obvious, but all it was is Dutch replaced the GunnerRight events with the Gunners from Battleships 1, and then changed the event parameters to match GunnerRight. I’m still scratching my head at why this fix works. I can only assume the event ID used for GunnerRight is reserved for something, or otherwise is just broken for no reason at all. Jazz 1 is programmed really weirdly.
Doubble Dutch had several other fixes that either were 100% fixes (and thus are being held back for later), didn’t do anything in 1.3 or, to my mind, weren’t “fixes” but instead changes, such as adding a sun to Muckamok. As I said at the top of this file, the intent here is to fix Jazz 1, not to change/“enhance” it. Those sorts of changes are best left as J2O uploads as custom enhancements, which is something we may be working on at the same time as patch 2.
While working on Dutch’s fixes, rsgdbfevx piped up with something interesting; the images in the episode select menu changed between versions as well. Yet another headache we had to reconcile! The two that swapped are episodes 3 & 4, and A & B. Episode 4’s original art depicts Jill of the Jungle, who has a cameo in the episode, and episode A’s original art depicts an enemy who shows up in that episode. In version 1.2 (where episodes A-C were added), episodes 3 and 4 had their art switched around for no known reason, and in version 1.3, episodes A and B had their art swapped too. This did create a nice effect of episode 6’s art transitioning into episode A’s, but the original layout made more sense with the episode titles and their contents, so for this patch I elected to swap the artwork for 3 & 4, and A & B, working under the assumption that these episode art swaps in later versions were accidental. I also gave a lot of thought to doing one further swap after this, of 2 and 3. The enemy depicted in the episode 2 art doesn’t appear in that episode, so it would make a lot of sense to make that additional swap. It would also offer a potential explanation for the accidental swap in version 1.2; the episodes’ art may have been accidentally switched when episodes 2 and 3 were supposed to be switched (assuming the artwork for each episode is numbered from 0, as many computer-related things are; “Episode 2” could refer to the second episode, or the one numbered 2 in the art files, which is actually the third episode). I decided to only swap 3 & 4 and A & B in the end. It’s unlikely anyone else cares enough to notice the slight incogruity with the episode 2 art, so I decided to err on the side of not changing it further. Again, the changes in this patch are fixing bugs and other issues introduced in later versions, not impressing my own personal preferences on everyone else.
In addition to all this, I altered the GOG launcher to allow setup & configuration of Holiday Hare 95 as well as the main game, but I’ve not included that in this J2O upload, since GOG will presumably be pushing the patch out soon and this upload will mainly serve as useful for anyone who owns a physical copy.
So, to recap, here’s everyone who worked on this patch, in no particular order:
Epic Games (primarily Cliff Bleszinski and Arjan Brussee) – Created the fixed versions of Turtemple 2 and Pezrock 2 back in 1995 that were mistakenly not used in 1.3.
Doubble Dutch – Created the original “JJ1 Levelfixes” upload on Jazz 2 Online.
rsgdbfevx – Assisting in reimplementing some of Dutch’s fixes, calling attention to the episode art swaps.
Violet CLM – Handing our fixes over to GOG, advising on various things, bringing my attention to Dutch’s fixes.
SimonNaar – Fixed Orbitus, advised on various things, tested the patch on stream (which helped us to find the issues with the 100% quota fixes).
Love & Thunder – Fixed Medivo airboard ditch, advised on Simon’s Orbitus fix, re-implemented Dutch’s fixes as explained above, rearranged episode menu images, modified the launcher CONF.
Aside from the 100% completion fixes (which are coming… someday), I hope there’s nothing we didn’t catch. If there is, please be sure and say something! I’m all ears (floppy ears, that is — and a big gun!).
Enjoy the patch,
Eat your lima beans, Johnny.