rainwarrior wrote:
Though, to tell you the truth, the more somebody asks about MMC5, the less likely I think they are ever going to finish an NES game.
I think almost everyone that gets started on NES development becomes fascinated with the MMC5. We have tons of topics where people ask "Is this, this and that possible?" with answers like "Yes, if you use the MMC5", so this is only natural. I know I really wanted to use the MMC5 at one point.
My opinions about mappers changed a lot as time passed. Being obsessed about complexity didn't get me anywhere, and the more I'm able to simplify things, the closer I think I am to reaching my goals. Aiming for simplicity doesn't necessarily mean dumbing things down or giving up features though, it's more about asking yourself questions like "do I really need this?" or "is this the best way to do this task?". Sometimes we assume that one particular path is the way to go, and the stubbornness to remain on that path prevents us from making as much real progress as we'd like.
I started making a game for the MMC3, which is what a lot of iconic NES games use, but now I'm fairly happy with the incredibly simple BNROM mapper. In retrospective, the only significant thing I had to give up was the scanline counter, which was only really necessary for a couple of non-essential visual effects, which weren't really worth the complications of using a more advanced mapper. I can still have some of these effects, using sprite 0 hits, sprite overflows and timed code, so I got over that pretty quickly. Everything else from the previous design is intact, even if implemented a little differently.
I simplified things a lot on the engine side too... Previously I believed that I'd only be able to max out the VRAM update capabilities of the NES if I used dedicated NMI handlers and update routines, but recently I was able to come up with a very optimized general VRAM update method, which can be used for the entire game. I literally replaced 20 subroutines with a single one, which is slightly more complex than the average subroutine it replaced, but still, it does the job of 20!
It frustrates me a bit that I was never able to accomplish anything significant in the field of NES development, so hopefully this new line of thinking will get me somewhere sooner. I am making progress faster than I used to, and what I'm creating does feel more robust and stable, so those are good signs.