News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Ness

Pages: [1]
I just released a "Bugfix & Polish" hack of TMNT2 for NES, as well as hacks that lets the player switch the turtle they're playing by pressing Select for both TMNT2 and 3.

The TMNT2 bugfix hack already has 100 downloads in less than a day, so if the download counters are reliable (bots?), I thought some people might be interested in further details.

Links for reference:

TMNT2 Bugfix & Polish:
TMNT2 Turtle Swap:
TMNT3 Turle Swap:
TMNT4 run with L/R:
TMNT4 Balance Tweaks:

I know that TMNT3 already had two hacks that let players switch turtles, and credits go to them for doing it first, but they didn't change the palette nor the face/name on the hud, and considering that each turtle has different attributes (attack range, attack speed, etc) I thought it would be important to make a full character swap. My version also lets both players pick the same turtle if they want to.

As a side note, I also added some unused graphics on TMNT2's TCRF page and made these:
TMNT2 (uncomplete) RAM map:

TMNT3 character FAQ:

TMNT4 Character FAQ:

TMNT THH Character FAQ:

Anyway - the meat of this is the bugfix hack for TMNT2.
I played this game a lot and I always felt that something was "off" about it but I could never put my finger on what it was, until I actually took the time to look at the game in details... turns out that a LOT of small things were off, mostly graphical issues with sprites: wrong tiles being used, tiles being misplaced, missing tiles, etc
My gut feeling tells me that development of the game ended before they had time to finish their bugfix & polish pass, the two mains clues to support this theory are the Footsoldiers, and the palette flickering for enemies. It's also worth noting that a tiny bit more polish was done in the Jap version, but even then not a lot and there were even mistakes in what was "polished" in that version.

Here is how it works: each different type of Footsoldier uses two sprite banks: one of those sprite banks (# 29, which goes from 04A410 to 04A800 if you want to look in YYCHR, you need to use FC/NES x16 pattern) is shared between all Footsoldiers and contains tiles which they all have in common: dmg'd frame, defeated frame, explosion, but also feet. Then, each Footsoldier variant also uses its own specific sprite bank on top of that. For instance, the "basic" purple Footsoldier, first one you encounter in the game uses bank #28 (04A010 to 04A400).

A polish pass on those footsoldiers was started by the devs of the game, but never finished, so some Footsoldiers used "final" tiles, but others used "beta" tiles. Most of the enemies in the first stage had that polish pass (basic purple Foot, knife throwing Foot, star throwing Foot), and most of the others didn't.
Now, the sprite bank that is shared between all Footsoldiers did get the polish pass, which is where the most obvious looking issues came from: indeed that bank has the feet for everyone, so in other words, most Footsoldiers used polished feet in combination with beta tiles for the rest of their bodies. This resulted in obvious discrepencies in the leg/knees areas. Here is an example, the gif compares the original game with the polish that I did:

In this case, the polish consisted in taking the polished tiles from the polished Foots and simplying copy-pasting onto the non-polished ones, because in a lot of cases there are a lot of tiles that are identical even in the non shared banks, indeed this Foot behaves mostly like the regular one, just with one less move, and the only reason it uses another bank is because they need the space to put the objects the player can interact with (the parking meter in this case).
However, in a lot of cases (gun Foot, spear Foot, hammer Foot, etc) some extra work was needed even after replacing the beta tiles.

As a side-note, here is an interesting case with the Katana Foot, check the section about him on TCRF:

The NTSC-U version uses polished tiles, but has the missing sword bit.
The Japanese version is not missing the sword bit, but uses beta tiles.

The interesting thing is that the Japanese version came out later. What I think happened: for the NTSC-U version, someone updated the Kanata's tiles to the polished version by copy-pasting the polished tiles in his bank, which erased the sword bit (indeed, the two sprites are identical except for that sword bit which is easy to miss). Then, the person who did the extra polish for the Japanese version wanted to fix that missing sword bit, so he reverted to the previous tiles, and thus gave him back his beta tiles in the process... of course it's also possible that the devs had two builds even before the NTSC-U release, and that the Kanata Foot was updated in the NTSC-U version and not in the Jap one, but considering the Jap version has some other extra fixes and features, I think my theory holds.
Now, the best part in all that, is that either version isn't completely proper. On TCRF, in the first frame notice the empty space above the backleg but also the wrong knee and shadow on that same leg in the second frame. That was an error with the sprite definition, some sprites of the upper body were offset 1 pixel too much to the left. This is actually the case for a couple of other Foot variants, so my theory is those definitions were fine for the complete beta Foot (which we don't know what they look like since we don't have the beta feet), and weren't updated even in the cases were the sprites were.
Anyway, I made a version of the Kanata guy that uses the polished tiles for everything, has the sword bit, but also fixes those offset sprites. I also did a small pixel fix on the shape of the kanata near the handle on one of the frames.

As I said, the second thing that tells me the game started having a polish pass which was never completed, is the palette flickering for bosses (and some enemies) when they get hit and are low on HP.
For about half of those bosses, the palette flickering behaves like this: PAL 3 -> PAL 2 -> PAL 3 -> PAL 2
But for the other halfs and all the enemies that have the flickering: PAL 3 -> PAL 2 -> PAL 3 -> PAL 1
Pal 3 is the enemies original palette, pal 2 is the red/orange palette, and pal 1 is the 2nd player's palette, which is where things look wrong. Indeed that palette not only looks terrible on enemies, but the colours also differs depending on which turtle the 2nd player has selected.
Here is a comparison, PAL1 on the left (notice that it matches Donatello), PAL2 on the right:

The point is, the fact that some bosses had the fixed pal cycle and some didn't, is the clue that the polish pass wasn't finished. It's also worth noting that not all enemies use the same code for this, some simply AND or EOR the value, some load the pal slot number from a small bank (which isn't always the same bank for all enemies due to different PRG banks, even though they could have fit those 4 bytes in the main PRG bank that is active at all time but let's not nitpick too much).

I'll spare you a copy-pasting of the long list of fixes and polish I did, you can find it in the readme. I also included a bunch of screenshots and gifs, here is one of the first and most obvious I did (top= original, bottom = fixed):

Last thing I'd like to share is that there is a bit of un-used content in the rom that afaik wasn't known about (it's not on TCRF at least), one I found completely by accident: I was working on the continue screen in order to add the missing sound (the title screen has a second when you go from one option to the other, but the continue screen didn't). I wanted to verify that the turtle face used as a cursor was indeed a sprite, I saw the number 74 in the RAM addresses for frame numbers, replaced that by 75 just to see if it would do something to the face... and suddenly the face was grinning at me. Obviously this is meant to happen when you press A/Start to select something so I added it in:

I found at least one other piece of un-used content that I'd like to share, but I need to present it properly and also check if there is more un-used stuff in there.

Thanks to SCD and rainponcho for their "Revamped" hack of TMNT2. I didn't use anything from their hack (everything we have in common but both took from the Jap version), but I did look at how they handled the Bebop defeated frame which in a way helped me a bit (even though I went for a completely different solution). My bugfix&polish hack is also compatible with Revamped, so if you want the extras from Revamped and these fixes, you can apply bugfix&polish onto Revamped.
Thanks to to Anonymous (?) and Ilya Indigo for their "weapons select" hacks for TMNT3. Again I didn't use anything from them but they deserve the credit for doing it first.

ROM Hacking Discussion / Mega Man 5 - Protoman Edition
« on: August 25, 2017, 07:52:17 am »

Mega Man 5: Protoman Edition is now available on this site.

This thread is dedicated to keeping track of feedback and potential future updates.

The hack:

Video trailer:

Two hacks in one:
- The "MM5ProtomanEdition" patch to play the original MM5 as Protoman
- The "MM5SSPE" patch to play Second Strike, my previous MM5 hack, as Protoman

More info about the hack:

Changes related to Protoman:
- Protoman can use his shield to deflect/destroy projectiles.

- Beat was replaced by the Proto Dash. Collect all 8 "Protoman" letters to unlock it.
The Proto Dash is a very powerful move which drains a lot of weapon energy. You can damage
enemies with it, but also destroy projectiles.
It can not be cancelled by pressing the opposite direction on the d-pad, but it can cancelled
by performing a Dash Jump.
Dash Jumps offer a speed boost which allows for longer jumps, similar to Bass's Dash Jumps
in MM&B and MM10, or to the X series. However, unlike in those games, the speed boost given
by a P.Dash jump will only last as long as you're pressing the direction you were initially going to.

- In MM9/10, enemies deal 100% more damage to Protoman than to Mega Man. In this hack you can turn on/off
this setting in the main menu: "Damage x1" will keep the original damage values of the game,
and with "Damage x2" Protoman will recieve double the damage.
If you want to resume a "Damage x2" playthrough using a password, SET DAMAGE TO "x2" BEFORE

- Protoman's knockback when taking a hit is twice longer as MM's, like in MM9.

- The charge shot has a smaller hit detection size than the original MM5 charge shot.
It also takes a bit longer to charge up, and its movement speed is slightly faster.

- Protoman can fire a 2nd regular P.Buster shot when a "half-charge" shot is on screen,
which MM originally couldn't in MM5.

- Protoman can only shoot 2 P.Busters shots at the same time.

- R.Coil and R.Jet are replaced by P.Coil and P.Jet

- Protoman starts the game with his P.Jet, like in MM9/10.

- The story, intro and cutscenes were altered

Other changes:
- The charge shot charging sound now fades out
- Charging up a charge shot now works during a slide and during the "360° rotation" animation (on moving platforms)
- Underwater slide-jumps are now possible
- During a slide, you can't jump if holding "down" on the d-pad. In reverse gravity this remained the same, while it should be when holding "up". Fixed.
- Charge shots go through destructible blocks and can destroy several blocks in a row (like in MM4)
- While charging, if the player would release the B button during a slide or during the "360° rotation" animation, the palette could freeze with one of the charging palettes. Fixed.
- When dying in a pit while charging the charge shot, palette gets reset to default to avoid items on the screen (1up, tanks, etc) being 'frozen' with the wrong palette.
- M tanks now always appear, even if the player already has one. You can still only carry 1 at a time though.
- Picking an E/M Tank or a 1up when they're already full no longer makes a sound, like in later games in the series
- Falling crystals gimmick in Crystal Man stage: when 'destroying' a crystal with Star Shield, the following crystals falling from the same tube would go through the player. Fixed.
- Crystal Man's orbs: they no longer disappear if hitting the player during invicibility frame time. I also added a small visual explosion when they disappear when their timer runs out. This change of code also makes them less laggy when there are 3-4 of them at the same time.
- Fixed the possibility to skip most of the boss rush by sliding through the wall (at least I think I fixed it)
- Jetski segment: fixed the possibility to "miss" the jetski during the cutscene and play the segment without the jetski, glitching the entire part. (At least I fixed the easiest way there was to pull that glitch, it might still be possible to do it with the S.Arrow but since I can't pull it off, I can't check)
- Title screen: Slightly shortened the time it takes to loop back to the intro, so that you can no longer hear the title screen song start again for a split second.
- Boss intro screen: fixed the Y-axis location of the bottom flickering light of the teleporter (the lights flickering before bosses appear)
- Wily cutscene at the end of Protoman fortress stage 4: made the text flow faster.
- Slightly reduced Darkman 1 and Darkman 3's hit detection size, so that it matches their art better and jumping above them is a bit easier.
- Getting frozen by Darkman 3's onion rings during a Charge Kick will nullify the charge kick (turn the animation into regular sliding), to avoid C.Kick working while being frozen.
- The B button now works to select things everywhere it didn't (weapons menu, stage select screen, password/continue screen)
- The drop rate of 1ups was reduced
- [not in Second Strike version] Protoman Fortress stage 1: When dying and loading either checkpoint, a colour of the foreground would change. Fixed.
- [not in Second Strike version] Napalm Man stage: Fixed a wall that was set as "foreground", that the player could slide into.
- ... and more !

- Steambull for his work on the art, betatesting and ideas
- Rock5easily, Matrixz and Kuja Killer for their tools and documentations


Programming / Mega Man V gameplay hack, ASM advice needed
« on: March 22, 2017, 11:43:34 am »

I'm working on a gameplay hack for Mega Man V and I need advice from MM and ASM experts.

I'm trying to make a 'weapon' that can deflect some enemy bullets, and those bullets should be able to hit enemies after deflection. Think of Protoman's shield in MM9/10, same thing.

I've tried to turn enemy bullets into the object ID and attributes of buster shot upon deflection.

However that doesn't work because the EFF8 routine which determines contact between MM's shots and enemies, only checks indexes 1 to 3, and the deflected shots which I turn into buster shots remain in their original address indexes (8 to 17). For instance for object ID: ram addresses 301->303 is for MM's shots, 308->317 for enemies and their shots.

AFAIK there is no way to change the address indexes upon deflection (?).

So I tried to change the EFF8 (shots->enemies hit detection) routine so that it checks all object ID addresses rather than just the first 3, so I changed LDY 03 to LDY 17 (at ram address F010, rom address 3F020). That did work and the deflected shots would hurt enemies, however, on top of being a solution that should increases lag, I also got glitches like enemies disappearing on spawn.

I couldn't figure out the enemy disappearing thing. It looks like SOME enemy types (and some only...) would basically detect that they are in contact with themselves. What I don't understand is why it happens to some enemies only, and why it happens at all since onl MM's shots are programmed to dmg enemies (although it looks like it skips HP altogether and jumps directly to the 'delete enemy' part).

BTW - I also thought of a completly different solution: upon deflection the enemy shot would disappear and I'd make a buster shot appear instead (rather than giving the enemy shots buster shot attributes); however I'm afraid that this would have impact on other things such as the "3 shots per screen" limit, meaning that the player couldn't fire 3 times if there is a deflected shot on screen...

So, does anyone have an idea, any clue, on how to achieve this?

Thank you

ROM Hacking Discussion / Mega Man 5 - Second Strike
« on: March 01, 2017, 07:10:43 am »

My Mega Man 5 hack called Second Strike is now up on the site:

It intends to offer classic style Mega Man gameplay by drawing into what I consider to be MM5's untapped potential.



Gameplay changes:
a) Stages:
- All new stage layouts.
4 of them include MM6 style forking paths (Stone Man, Charge Man, Wily Fortress 1 and 2).

b) Enemies:
- Altered bosses behaviour. All of them, at varying degrees.
- A few other enemies also got their behaviour slightly altered.

c) Weapons:
Altered weapon behaviour for:
- Power Stone
- Napalm Bomb
- Crystal Eye, which was also renamed to Crystal Orb.

d) Other:
- The hit detection of the charge shot was slightly reduced, and its art changed accordingly.
- Reduced invicibily frame time of bosses after they get hit.
Both of these changes aim at making the regular buster shot a more viable solution in combat.
- Reduced item drop rate of enemies, making it more on par with previous MM games.
- Weaknesses of bosses were changed.
- Rush Jet and Super Arrow are acquired in different stages. Passwords were changed accordingly.

- Steambull: Beta testing, ideas
- Anons of /vr/: Hacking help

Built using:
- The "rock5_bossroomjump" patch by Rock5easily
- MM5 hex editing documentation by Rock5easily
- MegaFLE X by Matrixz and Kuja Killer
- FCEU X emulator

Very special thanks to Matrixz, Kuja Killer and Rock5easily. Without their initial work this hack wouldn't exist.

I also decided to play my humble part and share my hex editing notes:

They are not much really, this was my first step into hacking. They only aim at being an addition to rock5easily's documentation, documenting a few things not present in his documentation.
Again it's not much but maybe it can help a future new hacker like I was not long ago.

Feedback always welcome.


Newcomer's Board / Megaman 5 romhack palette swap
« on: January 02, 2013, 06:00:09 am »
Hi, I'm having a bit of a trouble with the mandatory palette swap in Megaman V. Indeed, you have to switch palettes in order to access the 2nd part of the structure table.

However, I'm using MegaFLE X, and I keep getting glitches such as this one (see how some of the stuff is giltched out in the middle) :

If I fix it on this set on screens, then it will glitch out in the following ones. I just can't get ALL of it to work at the same time.

What am I doing wrong? Is there some mandatory logic to it I have to follow I'm unaware of? Like, are you limited in the number of times you can swap between the 2 parts of the structure table? Or is there something that has to be done for it to work that I'm missing out on?

I also tried using Rockman 5 Edit but in that editor I couldn't even figure out how to access the 2nd part of the structure table...

thanks alot

Pages: [1]