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

Author Topic: Disabling double tap directional pad to dash for Mega Man X1-6: The List  (Read 3220 times)

pleasejust

  • Jr. Member
  • **
  • Posts: 78
    • View Profile
Hi, I've recently taken up binging X1-X6. I didn't realize how much of a problem double tap to dash would be for me.  Many times I would accidentally trigger a dash and it's been frustrating. I use a button to dash exclusively so double tap to dash is useless for me.

I'm not a rom hacker or programmer but I wanted to start this thread to have a compiled list of the ways it can be done for Mega Man X games on SNES/Playstation for me and those interested.

I assume disabling it can be done in each game by changing a certain hex value using a hex editor. If it's as simple as that, that would be great. If anyone knows how to do it for each game please feel free to contribute. I also assume that it won't conflict with any rom hacks like X3 Zero Project v4 or X5 Improvements Project Addendum as I don't think those change controls. If so, versions for those hacks would be much appreciated. I think X6 Tweaks has an option to disable double tap to dash so that one is covered.

Thanks a lot!
« Last Edit: January 04, 2020, 07:25:49 pm by pleasejust »

DarkSamus993

  • Sr. Member
  • ****
  • Posts: 280
    • View Profile
NOPing the following bits of code will disable double-tap dashing:
Code: [Select]
; Mega Man X1
0x0976D ($81976D) = [EA EA EA] ; ground dash

; Mega Man X2
0x43B30 ($08BB30) = [EA EA EA] ; ground dash
0x43B3F ($08BB3F) = [EA EA EA] ; air dash

; Mega Man X3
0x2291D ($04A91D) = [EA EA EA] ; ground dash
0x22932 ($04A932) = [EA EA EA] ; air dash (horizontal)
0x22935 ($04A935) = [EA EA EA] ; air dash (vertical)

; Mega Man X4
Mega Man X4 (USA).bin = 0x20ABE274
or
SLUS_005.61 = 0x23F7C ($8003377C)
code = [00 00 00 00]

; Mega Man X5
Mega Man X5 (USA).bin = 0x034BF5E8
or
SLUS_013.34 = 0x2A090 ($80039890)
code = [00 00 00 00]

; Mega Man X6
Mega Man X6 (USA) (v1.0).bin = 0x1D950ADC
Mega Man X6 (USA) (v1.1).bin = 0x1D950ADC
or
SLUS_013.95 = 0x2A7A4 ($80039FA4)
code = [00 00 00 00]

Unfortunately, the code for Mega Man X1 has the side effect of breaking the dash demonstration after exiting the upgrade capsule. I'll do some more debugging (whenever I get the time) and see if I can figure out a possible solution.

The rest of the games should work without issue though. :thumbsup:

pleasejust

  • Jr. Member
  • **
  • Posts: 78
    • View Profile
Wow, thanks a lot DarkSamus!

When you say NOP, what can I put in place of the values that are there?

DarkSamus993

  • Sr. Member
  • ****
  • Posts: 280
    • View Profile
I listed the file offsets and what to overwrite there (between the [ ] brackets).

In 65816 assembly (SNES code), $EA represents NOP or no operation. I used three of them to overwrite a jump instruction.

In MIPS R3000 assembly (PS1 code), $00000000 represents NOP. I used one to overwrite a load instruction.

pleasejust

  • Jr. Member
  • **
  • Posts: 78
    • View Profile
Awesome. Thanks a lot.

January 02, 2020, 03:55:40 am - (Auto Merged - Double Posts are not allowed before 7 days.)
Amazing, they all work! A few things though.

Mega Man X5 (USA).bin has a different value at that address compared to when Improvements Project Addendum v1.5 has been applied to it. Making changes to the original bin works no problem but with IPA1.5 applied, it doesn't work. I tried NOPing the original first then applying IPA1.5, but xdeltaUI gives me a checksum mismatch error.

What I discovered, which is worth mentioning, is that after making changes to the playstation games you have to use a tool to recalculate the ECC!

Also, what's the difference between the bin's and the SLU's?

Thanks again.


January 04, 2020, 07:24:57 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
brain fart, my bad! All I had to do was search for the values at the address of the original bin in the bin after the hack has been applied and I was able to disable double tap to dash in X5 with IPA applied! Thanks again for this list, DarkSamus.
« Last Edit: January 04, 2020, 07:24:57 pm by pleasejust »

niuus

  • Full Member
  • ***
  • Posts: 108
    • View Profile
NOPing the following bits of code will disable double-tap dashing:
Code: [Select]
; Mega Man X1
0x0976D ($81976D) = [EA EA EA] ; ground dash

; Mega Man X2
0x43B30 ($08BB30) = [EA EA EA] ; ground dash
0x43B3F ($08BB3F) = [EA EA EA] ; air dash

; Mega Man X3
0x2291D ($04A91D) = [EA EA EA] ; ground dash
0x22932 ($04A932) = [EA EA EA] ; air dash (horizontal)
0x22935 ($04A935) = [EA EA EA] ; air dash (vertical)

; Mega Man X4
Mega Man X4 (USA).bin = 0x20ABE274
or
SLUS_005.61 = 0x23F7C ($8003377C)
code = [00 00 00 00]

; Mega Man X5
Mega Man X5 (USA).bin = 0x034BF5E8
or
SLUS_013.34 = 0x2A090 ($80039890)
code = [00 00 00 00]

; Mega Man X6
Mega Man X6 (USA) (v1.0).bin = 0x1D950ADC
Mega Man X6 (USA) (v1.1).bin = 0x1D950ADC
or
SLUS_013.95 = 0x2A7A4 ($80039FA4)
code = [00 00 00 00]

Unfortunately, the code for Mega Man X1 has the side effect of breaking the dash demonstration after exiting the upgrade capsule. I'll do some more debugging (whenever I get the time) and see if I can figure out a possible solution.

The rest of the games should work without issue though. :thumbsup:
Thanks for the codes! The downside for Mega Man X is that it hangs the game whenever a dash is performed (tested in Snes9x 1.60). That includes exiting the upgrade capsule, or even in the gameplay demo after the intro. If you ever figure out a solution, please let us know.  :thumbsup:

X2 and X3 seem to be working fine. Haven't tested the ones for X4 and X5 since they seem to invalidate the virtual PSX image and must be fixed after the modification, as previously mentioned.

kuja killer

  • Full Member
  • ***
  • Posts: 178
    • View Profile
I've always seriously hated that D-pad tap for dashing. It's super annoying and screws me up too tons of times.

Later mm games had an option to disable it through a options menu. I dont think any of the the original mm X1-6 games had an option though. :(

niuus

  • Full Member
  • ***
  • Posts: 108
    • View Profile
I've always seriously hated that D-pad tap for dashing. It's super annoying and screws me up too tons of times.

Later mm games had an option to disable it through a options menu. I dont think any of the the original mm X1-6 games had an option though. :(
Nope, not in X1-X6, sadly.

One would have thought that it was pretty obvious that there had to be a CHOICE for using double tap, taking into account the platform component, but no...  ::)

Jo1e

  • Newbie
  • *
  • Posts: 1
    • View Profile
The dbl forward tap dash has gotten me killed numerous times in X8.

PolishedTurd

  • Full Member
  • ***
  • Posts: 156
    • View Profile
Can you explain why it results in death? I have not played these games, but I am thinking of adding double tap dash to a couple of favorite NES games. I'm interested to hear why people might be opposed.

When it has gotten me killed in a game like Battletoads or Golden Axe, it's because I was trying to nudge my way toward a cliff edge. I would think this could be reduced by shortening the window for double tap detection, or perhaps disabling the dash if a certain button is held down, for times when you want to get right on that last cliff pixel or do some artful dodging.

Using a button for dash solves the "inadvertent kamikaze" problem, but it brings along its own constraints. For example, you would have to wait for the character to finish punching in Battletoads if you used the B button for dash. And since you can't push a button again while it's being held down, the crucial running attack would become impossible.

Grimoire LD

  • Sr. Member
  • ****
  • Posts: 426
    • View Profile
Dashing in Megaman X is more of a slide. It's a quick movement in a direction, either on the ground or in the air. It is optimally used more for evasion or platforming than blind straight-forward traversal.

When you are doing a lot of these quick movements in succession sometimes when you turn around to face your foe, you may accidentally double tap the direction, causing you to go flying towards them. It takes a bit of muscle memory to prevent that. It personally never bothered me, but I could see the difficulty in it for some people.