Coolcord / Level-Headed_Data

Patches and Patterns for Level-Headed

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Feature Request] Add the "Silhouette Mario Bros (by Leon Arnott)" Graphics Patch

opened this issue · comments

"Silhouette Mario Bros" by Leon Arnott, is an extremely simplistic yet elegant and beautiful graphics hack that can also add additional challenge to the game by providing enemies with camouflage.

I used Lunar IPS to apply the patch, then Hexagon to convert it into something usable to Level-Headed. It seems to work fine for the most part however some new power-ups such as the Hammer Bros. Suit and Spinball Flower cause Mario to no longer be a silhouette (I'm hoping that will be an easy fix for you).

To help expedite the process, I've enclosed the Hexagon version of this graphics patch:
Silhouette Mario Bros (by Leon Arnott).zip

Here are some screenshots of it in action with Level-Headed:

pretty sunset test-180730-232710
pretty sunset test-180730-232856
pretty sunset test-180730-233123
pretty sunset test-180730-234926
pretty sunset test-180730-230720

I might be able to get around to this eventually, but if you want to help out, this is definitely a way that you can step in and contribute if you're interested. As you stated, the fixes for some features will need to be made. This actually isn't as hard as it sounds, and this would be a good graphics pack to start with, since all you have to do is make everything black.

In this example, I'll assume that you're trying to fix the Spinball Flower power-up.

  1. Generate a new game with Level-Headed with the Spinball Flower power-up. Use the "Powerup Test" level script if you want a level with quick access to power-ups. Once generated, make a copy of it and name it "SMB.nes".
  2. Make another copy of this newly generated game. Name it "SMB.orig.nes".
  3. You are now ready to try to make the fix. We'll be modifying the "SMB.nes" ROM. There are many tools that can help with this process, so hacking to make the fix is likely not necessary. Mario's palette (and many other palettes) can be changed with a tool called SMB Remodeler. If this isn't enough, you can also edit the tiles directly with Tile Layer Pro to make them all the same color.
  4. Test your fix in an emulator and make sure that it is working. If it is, you can now create a fix patch with Hexagon. Open Hexagon, Choose Patch -> Apply Patch, use "SMB.orig.nes" for the original file. Use "SMB.nes" for the modified file. A patch file should be generated called "SMB.hexp".
  5. You can now add the fix to the proper folder. The fix needs to have the same exact file name as the original patch that you placed under Graphics/. Once renamed, place your fix under "Graphics/Spinball Flower/", then repack Graphics with SAM.
  6. Now, you can test it in Level-Headed. Generate another game with the graphics pack and check the Spinball Flower in-game. If it works, you did it! This process will have to be repeated for every power-up, as well as Fire Bros (if they're broken).

Wanna give it a shot? If not, (or if you can't figure it out) it's no big deal. If you can get it working, you can either submit it here or make a pull request to this repository.

Seems doable, sure, I'll contribute. It's the least I can do. :) If I get stuck I'll ask you how to proceed.

P.S. I mentioned this in my other reply, but is there a Linux port of SMB Remodeler? If not, could you somehow make one? I don't have much, but I could donate up to $20 for your troubles if you're able.

I have a question. When making each of these fixes, should I have any extra modifications such as Complimentary Hacks disabled? I don't want the patches to accidentally contain data that they shouldn't. So I figured I'd ask to make them as clean as possible.

SMB Remodeler should work fine on Linux with Wine.

I can't rewrite SMB Remodeler myself as I'm only one person and I only have so much free time. I already have numerous other projects planned. Adding another one onto the pile would only delay my other software much further. Hexagon could be used as a replacement for SMB Remodeler, but you would need to know what byte changes need to be made at what offsets. If you were to use SMB Remodeler to modify a single feature then use Hexagon to create a patch out of that, you could quickly find out what these offsets and values are.

For the fixes, it actually shouldn't matter what's turned on, so long as you start this process by making 2 copies of the generated ROM (so you start with 2 identical files), then making the fix on one of them. The idea is that when you go to make the fix patch with Hexagon, the only difference between "SMB.orig.nes" and "SMB.nes" is the bytes you changed to make the fix.

Ok, sorry this is taking so long. I hit a few snags. First off, I noticed in the original patch, that Luigi's colors were never set, so I had to fix that and a few other minor hiccups in the original patch. I tested the Spinball Flower edit and it was successful.

I did notice one issue I'm not sure how to address though, Red Piranha Plants, according to SMB Remodeler, are listed as a Red Group Enemy. I can't edit the Red Group Palette without breaking fireworks, fire balls, Bowser flames, and fire bars (which are intended to be a light source and thus remain their normal colors). For this graphics hack, I'll need "Red" Piranha Plants to be a "Green Group" enemy. Please advise.

Nice work so far! I pushed a commit to help address this.

The new code now checks for a "Red Piranha Plants" folder. You can put your red piranha plants fix in there (using the same naming scheme as the other fixes). I've also added a check for "Black Piranha Plants" just in case it is ever necessary in the future.

Just fyi, I consider v0.3.0 ready for release, but I won't have access to my build system for a few days. In other words, if you manage to get it fully working, it won't be included until v0.3.1, as I don't want to risk introducing any new bugs. So take your time, as there isn't any rush.

Thanks! Let me know if you run into any other issues!

Sorry I'm taking so long to finish this. I haven't forgotten, just been busy with a side project. Figured I'd just touch base to let you know I haven't bailed.