NES Lemmings Improvement Hack [V1.4 Out Now!]

Started by The Tomato Watcher, April 03, 2023, 07:47:37 PM

Previous topic - Next topic

0 Members and 6 Guests are viewing this topic.

The Tomato Watcher

EDIT 10/07/2024: The hack has been moved to RomHack Plaza following the closure of RHDN. This doesn't change anything about the hack itself at the moment, but the new link to download it is here: https://rhpz.org/18014
For anyone who isn't too familiar with IPS patches, you will need to obtain a copy of the US Lemmings ROM yourself, then download a program like LunarIPS which will let you select the ROM and the patch and apply it for you.

Yeah I should stop running my mouth nonstop in the Discord server and actually make a proper post about this, shouldn't I :P

Anyway, I'm working on an improvement romhack for this utterly terrible version of Lemmings. I originally just wanted to see if I could fix an issue with the sound driver, but then I experimented with fixing other issues, just on a whim at times, and eventually I found myself working on a full improvement hack. Here's the title screen :)


Plus a menu screen, with the background removed so this 3-color font, provided by CindySparks, can work with no issue.


Here's some palette changes along with a lovely skill bar graphic, also by CindySparks ^^


It's not just graphics, though. Here's the bulk of the changes made so far:
  • Added code to music driver to handle the noise channel specially, so no more broken drums
  • Tweaked instrument and music data to make the soundtrack sound significantly nicer overall
  • Changed some sound effects
  • The music rotation now includes all 8 tracks (including what used to be only the credits track) in every rank
  • Added the ability to SWITCH SKILLS WHILE THE GAME IS PAUSED(!!!)
  • Pausing the game no longer obscures the HUD
  • Builders now turn around and keep building when hitting a wall (Game Boy behavior), which also means that assigning a Builder to a lemming whose back is against a wall when they start building is no longer stupidly precise (lookin' at you, Mayhem 1)
  • In any situation where a Builder cannot build at all, either hitting a ceiling or being stuck between two ramps when they try to start building, the lemming will ALWAYS turn around
  • Any levels either broken or trivial as a result of the previous two changes have had their skill sets/solutions altered
  • Builders assigned to Bashers who are very near a ledge no longer get eaten
  • Diggers assigned to Hoisters no longer get eaten

Those gameplay issues are certainly not the ONLY ones in the game but they are certainly the most annoying. There is one last oddity I intend to look into--Bashers sometimes pass through the first tile of terrain in their way without deleting it for reasons I don't yet understand. It doesn't happen often but it never feels good when it does.

Now, since I had to adjust the skill sets of some levels anyway, I have begun experimenting with tweaking the properties of other levels, particularly ones in Taxing which, in my opinion, is BY FAR the dullest rating in this version. For example, POOR WEE CREATURES was reduced to a pure Builderfest in this version, but with my edits to the skill set, save requirement, and release rate, it has at least a little more depth now.

I'll have to get into the specifics of these level changes later, as well as perhaps recruiting a couple playtesters... assuming anyone would actually be interested in that :P

The Tomato Watcher

I suppose an update is in order as I've made some exciting changes. I have not yet looked into the odd Basher behavior described above, but here's what I have done.

  • We now have SIMULTANEOUS MUSIC AND SOUND EFFECTS!!! Looking at the sound driver code initially, I thought this would be nothing more than a distant pipe dream, but I've done it! As it turns out, another game from the same development house (Special FX), Hudson Hawk, has an almost identical sound driver that can play music and sound effects simultaneously, and I was able to adapt the extra code used to accomplish that into NES Lemmings! Unfortunately, this caused some slowdown in the game at certain points (and for reference, the original game is completely impervious to slowdown), but literally today, I realized that, with a slight compromise to the status bar, I could save a bunch of execution time for basically free, and now the game doesn't slow down at all, unless maybe if you're unlucky enough to have multiple sound effects trigger on the same frame as the song loops or something.
  • The HUD has gotten an upgrade and now has a space for the status of the lemming you are hovering over (which is a function I had to implement all by myself, for the record)! Now you won't be losing track of Climbers like I did during testing ;P The icons you see are, of course, designed by CindySparks, and they look quite good for only being 8 pixels tall. Any more than 8 pixels would require more code. I intend to have the "TIME" text replaced with an icon as well.


  • A less exciting change than the rest, but I am also in the process of making the release rate on the level preview screens consistent with the actual spawn intervals because they aren't linked in any way at all. :P

The Tomato Watcher

So, I think I'm ready to post the level changes and, if anyone actually wants to play them (do keep in mind you can switch skills while paused now(!) among other things), get some feedback on my new solutions, e.g. if they're too out-of-place difficulty-wise, if there's a bad backroute, etc.

Along with the .IPS file, I've attached a spreadsheet detailing all the notable level changes as well as providing the passwords to each. Not all of them need to be tested necessarily (for example, We All Fall Down (only the Fun one in this version) is Diggers-only now, and I don't think anyone will argue with that or run into problems with the solution), but I'm keeping track of them nonetheless.

Also, I made a couple more general changes since the last post.

  • Replaced "TIME" string in the HUD with a clock icon
  • Added punctuation to some level titles
  • Slightly modified a couple of the intro graphics
  • Made a basic little logo on the title screen for the "Nintendo Lemmings Improvement Team" :)

NOTICE: Currently, this hack is only designed to be applied to the US version of the game, and there are no guarantees about what will happen with the PAL version.

CindylemSparks

cindy here, congrats on the test release!, I can't wait yall to check this out, we are working hard on making it the best it could be :thumbsup:

The Tomato Watcher

Hey all, uh- small warning. Turn your volume down before booting the game first time. Depending on a lot of factors that I don't feel like explaining right now, you might be greeted by a VERY unpleasant and loud sound during the intro cutscene. I did not encounter this before this beta release because I didn't have developer settings enabled like an idiot. I haven't fixed it yet but I'm looking into it.

On a more positive note, I've managed to get Builders to stop bouncing off exits and hatches! :D For this beta release I had to add a few extra Builders in some levels where bouncing off the exit could be lethal. The behavior now is for them to stop building and NOT turn around, and since exits aren't solid, I think this makes sense. Besides, it is exactly what happens in the original game.

My remaining goals for the next beta version:

  • Properly initialize audio on startup so the 2nd Pulse channel and Noise channel don't scream at you in the intro. :P
  • Change the skillset for Mayhem 23; the original game's solution was completely cheesed by Builders bouncing off of exits, so I made a new solution to take advantage of that behavior. I'll likely just revert it now.
  • Look into editing level terrain because Tricky 5 is simply BS and no amount of skillset edits can change that.
  • And of course, fixing any other problems any of you let me know about. ;P

The Tomato Watcher

#5
Beta Version 0.1 is now available! If it wasn't for the awful audio bug I would have waited a bit, but it really needed fixing. Plus, I discovered ANOTHER bug that I hadn't encountered before for the exact same reason as the audio bug. Both seem to be fixed now. I've posted the updated level edits spreadsheet as well. :)

Some other patch notes:

  • Added version identification information within the game itself--the intro text now reads the version number, and the title screen, for now, has "BETA" on it.
  • Builders no longer bounce off of exits and hatches; instead they simply stop building and DON'T turn around.
  • Mayhem 23's solution is now closer to the original solution due to the above.
  • Extra Builders removed from Tricky 25 and Taxing 4.
  • Tricky 5 now requires 8 Lemmings to be saved. Additionally, I crudely edited Tricky 5's terrain into... this:

It doesn't look amazing, but ANYTHING is better than how BS the level was in the original.

Known Issues:

  • Bashers may get stuck in a wall if you're one frame too late assigning it to a lemming. This has already been fixed on my end and will be in the next release.
  • Some punctation is slightly incorrect; will be corrected in next release.
  • On Tricky 8, something may go wrong with OAM RAM when the hatches open that causes the status bar to have incorrect graphics and the music to slow down for one frame. I have no idea why this happens, it may even depend on emulator or something, and it looks like there is absolutely zero rhyme or reason to it and there's likely nothing I can do, but since it's for one frame on one level only (so far...) I'll just have to live with it.
  • Mayhem 22 has a backroute, because of course it does. :P I'll need to edit the terrain data to fix it well.

The Tomato Watcher

#6
Beta Version 0.2 out now! :D This version introduces quite a few more level changes, which are detailed in the spreadsheet attached below, but the most notable ones are:

  • Taxing 1 now has no Bashers and requires an entirely different solution than its Fun rating counterpart. NOTE: I have a feeling that the new solution could be a bit too much of a difficulty spike; let me know if you think it's too hard for early in Taxing.
  • The final level, Mayhem 25, has been replaced entirely; rather than a repeat of Fun 5, it's a repeat of Tricky 5 that takes full advantage of my terrain edits and the altered Builder mechanics. I quite like how my new solution turned out here, but please do let me know what you think of it.

Some other patch notes:

  • Bashers no longer get stuck in walls; my added Basher logic was just entirely in the wrong order. :forehead:
  • Taxing 6/Mayhem 22's terrain has been edited slightly to patch a backroute in Mayhem 22. The solution to Taxing 6 is somewhat different due to this, but it doesn't require much additional thought.
  • Some punctuation was corrected and the credits scroller text was edited slightly.

Known issues:

  • In certain situations, assigning a Builder to a Shrugger will result in the Builder assignment getting eaten and the Shrugger falling off the bridge instantly. The timing seems to be very tight and it might even depend on direction. This is being looked into as I type this. EDIT: This glitch is in the vanilla game as well! And it's the stupidest glitch EVERRRRRR to track down and debug, it's been driving me insane all day!!! >:(

The Tomato Watcher

#7
Alright y'all, I am sad to report that I thought I fixed the Frame 1 Shrugger glitch, but it just happened to me again playing through the levels.

Trust me when I say there is ABSOLUTELY NOTHING I can do to fix this; I'd have to rewrite the whole main game loop from scratch pretty much. That is WELL above my paygrade. So um... don't assign Builders to Shruggers on their first frame, I guess.


Oh also there's a similar glitch with Blockers where if you assign them to a Lemming exactly on the edge of a platform, it'll just get eaten and the Lemming will fall. I'm not even gonna try fixing that one. Sorry everyone. :'(


EDIT: I just discovered ANOTHER glitch that results in a skill being eaten if you're frame perfect. And with that, I am deciding, right now, that I will no longer be fixing ANY bugs that are from the base game. If there's a bug in my own code I'll look into it, but otherwise? I'm done. There's probably HUNDREDS of weird edge cases like this and I have NO interesting in pursuing all of them. I've fixed the absolute worst of this game's issues, and that's good enough for me. This version is still not final because I may still make level changes.

The Tomato Watcher

Alright, last wave of level changes before I get some feedback.
Beta 0.3 is out now!
Spreadsheet of level edits attached as well. I hope you think they're decent fits for their ratings ^^

If the levels are all alright, I'll go ahead and put the finishing touches on this version and make it "final" (v1.0). I'll be waiting for a decent while though, and I'll consider all feedback. :)

WillLem

Looking good. Does this run in any NES emulator?

(and, I'm guessing it's a patch for the original ROM rather than a standalone...?)

The Tomato Watcher

Quote from: WillLem on April 18, 2023, 07:21:39 PM
Looking good. Does this run in any NES emulator?

Yes! And thank you. :D

Quote from: WillLem on April 18, 2023, 07:21:39 PM
(and, I'm guessing it's a patch for the original ROM rather than a standalone...?)

Yeah it's a patch. You'll need Lunar IPS and a copy of the US ROM specifically.

Proxima

Would you consider releasing a version with the quality of life changes but without the level changes?

The Tomato Watcher

Quote from: Proxima on April 18, 2023, 07:55:14 PM
Would you consider releasing a version with the quality of life changes but without the level changes?

Not a bad idea. As far as I can tell, none of the levels would be impossible thanks to these changes, but some could definitely be very easily cheesed, so that's something to keep in mind. If I were to release a version like that, should I use the original annoying Builder behavior and the like? As in, should I leave the main gameplay untouched for a version like that? Obviously I'd keep the ability to switch skills while the game is paused and stuff like that, but as far as how Lemmings would interact with the terrain, what would be the best thing for me to do?

The Tomato Watcher

So, thinking about that version with no level changes some more: I realize that there might actually be some levels rendered impossible (or at least stupidly precise) thanks to these gameplay tweaks, so what I'm now thinking of doing is testing all 100 levels, leaving the cheese-able ones alone, but changing the skill sets of the impossible/stupid hard ones by as little as possible to make the level beatable. That sound alright?

Also, I'm pretty much in the finishing touches state at this point, at least for the main version. I made the credits text blue, and I think the altered levels are probably fine; I know for sure that none of them are impossible, which is by far the most important thing. I probably--no, definitely--could have managed this a little better, but I went into this pretty much blind :P


Blue text!

The Tomato Watcher

I FIXED THE BASHER GLITCH FINALLY!!! I'm fully releasing this later today before I screw it up somehow. This was the hardest code puzzle I've had to solve BY FAR while working on this, but it was worth it. When you assign a Basher to a Lemming now, it will immediately delete the tile it's standing within, assuming there's actually terrain there. I checked all the edge cases too; they won't bash through exits or anything like that. You can now bash out of a pre-made Miner tunnel and through those STUPID bars in "THE PRISON" without worry :)