I usually have quite a few patches inserted before even starting a new hack. I try to include as many bugfixes as possible; one hack has the ones for fixing block duplication, item carrying, swimming into spikes, line guide acts-like settings, line-guided ropes, Ninji ceiling interaction, screen exit rollover, passing through slopes, coin solidity, Spike Tops, note blocks, Wigglers, and X and Y scroll, plus one for allowing powerups to be used in levels with nonstandard layer priority and a level mode-based HDMA fix. I like to come up with a standardized custom palette ahead of time, where I have three full palettes (or two full and two half) used for global graphics, two full palettes for foregrounds and two for backgrounds, and one full palette (or two halves) for Layer 3 stuff and occasionally extra space for other things.
Then I have a patch for inserting all of my hex edits, and I include a lot of other single-use patches that aren't bugfixes but are nice to have anyway:
- Bounce Unrestrictor, for more flexibility with custom blocks
- The RAM clear patch
- The dynamic sprite patch (though I've been wondering lately if I should come up with my own system for those)
- Sometimes the "custom default interaction" patch (mainly just if I'm using Sonikku's SMB3 Goomba)
- Sometimes the "delay block" patch (it could come in handy)
- The explosion sensitivity patch, because I usually do have blocks that I want explosions to affect
- The player GFX DMA patch, so that I can have more space on the first sprite GFX page
- The overworld level remap patch, because I prefer to have the main levels contiguous and use levels 60-FF for non-bonus sublevels and 100-1FF for bonus rooms and testing (my debug levels sometimes go in 60-FF and sometimes 100-1FF)
- The "more control" patch, mainly for easier parsing of cheat codes and other things that care about specific buttons
- No More Sprite Tile Limits goes without saying; it's too useful not to include
- The "one player only" patch I use fairly frequently (I figure 2-player mode isn't that widely used anyway, and it can save a bit of micromanaging)
- Some form of shared subroutine patch; while one's sprite inserter of choice usually covers several such routines, there are still many more that are good to have
- The side exit teleport patch, for sky bonus rooms and some level transitions
- A patch for remapping the original sprites' tilemaps on page 2, for use with my spriteset system
- The patch that makes the exit count display properly on the title screen when it is 100 or greater, unless I'm not using the original title screen
- I usually use the Better Powerdown patch, since I prefer that system to the original
- If I'm using Yoshi in the hack, I'll often include a patch to make him only usable in the levels that you find him so that I don't have to account for him possibly being in any level
- I usually use squishable Goombas, so I'll include a patch to make them flip their graphics like the ones in SMB1 and SMB3 do because it saves a tile in SP2
- I've started using Ladida's Optimize $2132 Store patch to save some cycles
- I was using a patch to optimize the stripe image routine that I think Akaginite made (or at least some Japanese hacker), but it breaks switch palaces, so I can't use those together
- I pretty much never keep SMW's default status bar (not least because it greatly restricts what you can do with Layer 3), though which custom status bar I use depends on the hack. I've used the minimalist one, the SMB3-style one, the DKCR-style one, and completely custom ones, though I've begun to realize that having any sort of non-sprite-based status bar tends to be more trouble than it's worth for me.
I also sometimes combine a lot of little patches into one larger one (I used to do this with all of my single-use patches), though sometimes that's because some of them depend on each other. I sometimes use custom health systems, which tend to want to interact with other things. I'll sometimes tweak the algorithms used to calculate certain things like the Amazing Flying Hammer Brothers' throwing frequency and the Monty Moles' pop-up timer. There's also a bug related to interactive Layer 3 when it scrolls with the screen that needs a fix (because the way SMW handles interactive Layer 3 is stupid).
For patches that I keep adding to and reinserting, UberASM is a given, for one. And yes, I use the patch rather than the tool, because I still don't like how the tool handles shared code. I always use my multi-midway patch because I always have some levels that require multiple checkpoints, and I usually use some patch that changes the message system, most commonly the VWF message patch but sometimes WhiteYoshiEgg's message expansion patch. ObjecTool is an auto-include as well.
As far as tools are concerned, I use GPS for blocks, though I've sometimes wondered if I should use a patch for those as well, and AddmusicK for music. I'm currently using Daiyousei for sprites; I'd like to switch to GIEPY, mainly for Lunar Magic 3 compatibility, but I have one hack that isn't compatible anyway until one of the patches I'm using gets updated, so I figure I can wait on that (and hopefuly, it won't take too long for Katrina to release the next version of Daiyousei anyway). I also use YY-CHR for graphics editing (obviously), GradientTool to create HDMA color gradients more easily, and SNESGFX to rip graphics from spritesheets.
Well, in my hacks I always start with these patches installed:
- No more sprite tile limit (mandatory and a lafesaver)
- Classic Fireball(I only didnt used in SMW The Princess Rescue cause I wanted the game as classic to smw as possible)
- Item Box Mushroom Fix(Cause I hate when smw overwrite my powerups with a Mushroom)
- Star fix(to avoid the player from farming 1ups with the star)
- HDMA 3.0 Fix
- Some status bar change patch like minimalist staus bar or sprite status bar, etc so I can free the layer 3 and make to make the levels look better.
- Whatever patches with mechanics that I plan to use.
Before starting I insert the ones that I use the most like Piranha Plants, hammer bros and platforms, and then I leave the rest to insert during the development of the hack.
Interesting question as I'm building my first base rom ever.
It feels weird to think and plan a hack without even doing the level design first, on a whim, as I've always done.
So here is where I am at now
- New ship and warehouse ExGFX and Map16 sets, still in optimisation study.
- Multiple bug fixes, for example the Sprite Ceiling Check for ninji and the like
- No more sprite tiles so I have no slowdowns
- SFX for Bullet Bill (smol patch but important! haha)
- Explosion sensitive blocks by Roy
- Goal tape gives score so no more star points
- Multiple useful blocks : a custom ledge where need to press X+Down to fall down, teleport blocks, frozen blocks, better doors, etc.
- New sprites suiting a warehouse setting, for example robot-like, explosion, fire, etc.
A lot of testing and re-mapping map16 tiles is involved, so I have one base rom for ExGFX building, one rom for sprite/block/patch/level design testing. And the last rom will become the base rom and receive all of the assets, and eventually finished levels which lack the relevant GFX atmosphere.