NokiMo
elmrtev
elmrtev

patreon


(NES) TMNT TF [U!] - Finish Him Hack - Asm

I'm not sure how useful will it be for anyone - but here is my part of asm coding.

It contains only additional banks (a bank, really).
Original banks were rewritten to contain a new bank switching code and tactical jumps, but I don't think that it is viable to post them.

It is somewhat commented, you can gain some knowledge about ram addresses, and I'm fairly sure that you can edit it and compile it over the hack to get things going.
I used ASM6 to compile the stuff.

Comments

Here be a long and boring postmortem. As many things do - it started with me questioning whether I can do it or not. TMNT TF was the biggest fighting game on NES and the biggest fighting game on Genesis has those sweet, sweet finishing moves. Even bootleg MK games on NES do not have the finishers, I think. As a side challenge, I didn't want to screw with too much of original coding or move large tables of character sprites composition data. After I've finished general fatality coding (it helped that the game doesn't consider a character dead until he gets into 'dead' state) - I had no idea how objects worked in there, but I was fairly sure that I would be able to replace "power up ball" object with something else. Which I did for head decapitation. It also uses redrawn headless bodies from additional gfx banks. It worked but seemed as an absolute waste of resources. After Leo finisher was done - the whole project seemed doable, and I had no reason to stop at a proof of concept. I thought of Hothead burning his opponent, but still didn't know enough about the game to do it. Pit/level specific fatality was a good idea, and since Shredder was big on power throws - it transformed into Shredder's finisher. Initially I wanted him to yeet his opponent offscreen. But it was boring and screen scrolling routines got in the way. So I settled for him throwing his victim into the screen's side and a comically slow slide down (which I sped up a bit, because it was excruciating after the first time). At the same time, I was looking at how the game handled objects in walls minigame, and found a way to redraw tiles/palettes. Hothead finisher was going to end on his opponent burning up to black soot (using the same method game uses to fade out on round end), and that was all. However, it forced palette to switch back on round end, and it didn't seem right. So, that was when I started to use doubles. After the initial trigger - the game hides the original opponent offscreen leaving a double of him in the same place. It doesn't have a collision box, it doesn't revert palettes or states. It's perfect. And since I was already using custom objects - I could do the 'blow them to dust' effect also. Casey's was an array of ideas, some of which were retreads of Leo fatality. He was brutal, agile and had a stick, I wanted to use it. He was going to do Sheeva/Goro's jump and then do a large swing on an already downed opponent to slide him back across the level. Collisions were dealt with by the same 'doubles' method. But since it wasn't a carbon copy of jumping offscreen and coming straight down, it seemed weird that he came to an abrupt stop. It only fitted for him to slide/surf on top of his opponent. I also rewrote the attributes to bloody up the ground, but there was no good way to mark up which tiles were bloodied, and it used an already existing palette which gave different results on different levels. It was decent looking when it worked and not so much when it didn't. So I left in those that worked better. I had no idea what to do with the rest of the turtles. I would've left them out altogether, but it seemed incomplete. After some consideration, I stumbled onto Mikey's tag finisher. They do similar things in Injustice 2, and there was a palette that I could use to simulate another turtle appearing. Also, I could use the same finisher for both of the turtles. It was cheating, but it seemed reasonable enough. There were two moderately annoying problems there. While I could use three characters on screen (surprisingly, even Hothead didn't cause sprite overflow) - I couldn't use graphics banks for three characters. It forced me to mirror the actions as well. And to get around the collisions - I had to use yet another double. So, out of three characters there are two fake ones. Raph was last. I was going to use something really simple, but ok looking. Eating opponent's face fit, but also was a retread. I settled on him ripping the heart out. Interestingly enough, with heart object frames - it went exactly to the object limit. If I had to add something else - it would've forced me to redo the code considerably. I attempted to do the chomp, but it had weird leg positions (since he is in the air while chomping), and redoing the sprites was out of the question by that point. Sound does make most of the finisher there. I am surprised at how clean it managed to look in the end. Original game has some malleable coding. The biggest obstacle was them capping the objects quantity (and using most of them for various hitfx already). It works for the game, but prevents you from doing explosions and fiddly things. On my part, the laziest finisher is Raph's. Leo finisher is simple, but it was the first one and I do like how silly it looks. Raph's one is too much a child of necessity to my tastes.


Related Creators