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

Author Topic: Mega Man X6 Tweaks/Patcher (v15)  (Read 35812 times)

x6fan

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #140 on: July 20, 2018, 12:21:26 am »
I'm working on a X6 tweaker command line program based on the spreadsheet data. Should be most useful for Linux users, but it can probably be used on Windows as well. There's a simple JSON-based configuration interface and it can also be used as a Python module.

https://gitlab.com/x6fan/customizer

It can be used like this:

Code: [Select]
./customizer x6.bin < tweaks.json
Currently, it supports verifying the X6 image and editing the rank data like soul requirements and parts. I plan to add the rest of the features with time. Contributions, comments, criticism are all welcome.
« Last Edit: July 26, 2018, 11:39:17 am by x6fan »

acediez

  • Full Member
  • ***
  • Posts: 229
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #141 on: July 20, 2018, 01:00:43 am »
Welcome to the club, x6fan  :woot!: :woot!: :woot!: :woot!: :woot!:
Thanks for expanding this hack to Linux territory



A little demo with everything tacked on:
https://youtu.be/1bNJMMYYi3Q

Edit: All these codes are outdated! Fixed versions will be available on the next version of the speadsheet
Quote
1. DELAY

1a) Infinite wait (thanks to Z3R0X)
BIN (DEC): 496716048
PSX RAM: $801EAF38
00

1b) Minimum delay (already on patcher)
BIN (DEC): 496716032
PSX RAM: $801EAF28
D4AB0708

1c) No delay (a bit cleaner than the one on the last patcher)
BIN (DEC): 496715956
PSX RAM: $801EAEE0
D4AB0708
01000424

2. DASH DURATION CONTROL (already on patcher)

BIN (DEC): 496331716
PSX RAM: $8003F37C
0F <-- Default value

3. DASH SPEED CONTROL (This one's quite the rewrite. It'll be properly commented on the next version of the spreadsheet)

BIN (DEC): 496716088
PSX RAM: $801EAF60
06001B3C  <-- First byte controls speed. 04 = Falcon/Zero, 08 = Blade Armor. I'm using 06 in the video.
00607B37
04006230
05004010
00000436
81EE000C
BE000534
E9AB0708
200000AE
08006230
09004010
00000000
81EE000C
BF000534
00000000
200000AE
23D81B00
00000000
FCAB0708
24001BAE
00000436
81EE000C
C0000534
15000292
00000000
04004010
00000000
00006237
FAAB0708
00000000
00006237
00000000
23100200
00000000

4. DASH CANCELLING

I also ended up with two options, to be used depending on the "Delay" option. Though I can't tell by Z3R0X video how similar or different they are, I'd have to try them myself.

4a) Dash normally, cancel by pressing Dash/Jump again (To be used with "Normal delay" or "Minimum delay")
BIN (DEC): 496723152
PSX RAM: $801EC768
85000392
7C000596
FFFF6324
850003A2
0A00632C -> First byte (0A) adjusts the cancelling's sensitivity range
02006010
8001A530
1D00A014
00000000

As I mentioned before, one challenge this modification had is that if you pressed the button for too long the move would be automatically cancelled, so I added a small wait time before detection (first 5 cycles, out of the default duration of 15, won't be cancelled)
This obviously needs to be adjusted if the dash duration is changed, so within the patcher, this will be automatically assigned (Dash duration - 5)

4b) Dash while button is held, cancel by letting go, or when "dash duration" ends (To be used with "Minimum delay" or "No delay". Unusable with "Normal delay", since it waits for you to let go of the button before the dash even begins)
BIN (DEC): 496723152
PSX RAM: $801EC768
85000392
7C000596
FFFF6324
850003A2
8001A530
1F00A010
00000000
00000000
00000000

This one's obviously cheap, but it's a lot of fun. It's the one used in the video:

4c) Dash while button is held, cancel by letting go, but unlimited (To be used with "Minimum delay" or "No delay")
BIN (DEC): 496723152
PSX RAM: $801EC768
7C000396
00000000
80016330
06006010

Finally, for completion's sake:

5. INFINITE AIR DASHES (thanks to Z3R0X)
BIN (DEC): 496331750
PSX RAM: $8003F39E
00


Also related and comming soon: Dash contact damage to enemies. It's gonna be part of the bonus damage options for the Blade Armor's moves.
This wraps up my planned Blade Armor modifications. Got caught up documenting this stuff. I'll put the next update during the weekend.
(Though I haven't tested anything outside of no$psx yet, I hope everything works  :P)
« Last Edit: July 29, 2018, 04:36:41 pm by acediez »

Z3R0X

  • Jr. Member
  • **
  • Posts: 43
  • My name's not shane, kid.
    • View Profile
    • My YT channel with mini tools.
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #142 on: July 20, 2018, 04:37:41 am »
Oh yeah!
We have similar instructions.
I don't really like to tap again to cancel when you have original duration, is just too short, so I discard my v1.
This is my v2 version, dash while button is held:
RAM = 801EC76C
BIN = 1D9B64D4
7C 00 02 96
FF FF 63 24 <- If you replace with a NOP the dash becomes infinite
85 00 03 A2
05 00 60 10
8F 01 42 30 <- This is important*
03 00 40 14
00 00 00 00
85 00 00 A2
I put andi 0x018F to include the d-pad if not, you cannot dash with double tap.

Blade Dash Delay
RAM = 801EAF38
BIN = 1D9B4910
0x01 - Original
0x0F - Small
0x78 - No delay

acediez

  • Full Member
  • ***
  • Posts: 229
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #143 on: July 20, 2018, 09:14:38 am »
I put andi 0x018F to include the d-pad if not, you cannot dash with double tap.
Good catch! Thanks, I'm gonna have to amend this

injoon84

  • Jr. Member
  • **
  • Posts: 59
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #144 on: July 20, 2018, 10:11:48 am »
I combine both of your work and get this.
Can it be used?
Blade Dash (v01) acediez+Z3ROX (Can damage enemies and use direction for distant control)
RAM = 801EC76C
7C 00 02 96 : Z3ROX
FF FF 63 24 : same
85 00 03 A2 : same
0A 00 63 2C : acediez
8F 01 42 30 : Z3ROX
03 00 40 14 : Z3ROX
00 00 00 00 : Z3ROX
85 00 00 A2 : Z3ROX

Z3R0X

  • Jr. Member
  • **
  • Posts: 43
  • My name's not shane, kid.
    • View Profile
    • My YT channel with mini tools.
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #145 on: July 20, 2018, 11:03:48 am »
I combine both of your work and get this.
Can it be used?
Blade Dash (v01) acediez+Z3ROX (Can damage enemies and use direction for distant control)
RAM = 801EC76C
7C 00 02 96 : Z3ROX
FF FF 63 24 : same
85 00 03 A2 : same
0A 00 63 2C : acediez
8F 01 42 30 : Z3ROX
03 00 40 14 : Z3ROX
00 00 00 00 : Z3ROX
85 00 00 A2 : Z3ROX

acediez v1
Code: [Select]
801EC768 92030085 lbu     v1,$85(s0)
801EC76C 9605007C lhu     a1,$7C(s0)
801EC770 2463FFFF subiu   v1,$1
801EC774 A2030085 sb      v1,$85(s0)
801EC778 2C63000A sltiu   v1,v1,$A
801EC77C 10600002 beq     v1,0,$801EC788
801EC780 30A50180 andi    a1,$180
801EC784 14A0001D bne     a1,0,$801EC7FC
801EC788 00000000 nop
801EC78C A200007A sb      0,$7A(s0)

acediez v2
Code: [Select]
801EC768 92030085 lbu     v1,$85(s0)
801EC76C 9605007C lhu     a1,$7C(s0)
801EC770 2463FFFF subiu   v1,$1
801EC774 A2030085 sb      v1,$85(s0)
801EC778 30A50180 andi    a1,$180
801EC77C 10A0001F beq     a1,0,$801EC7FC
801EC780 00000000 nop
801EC784 00000000 nop
801EC788 00000000 nop
801EC78C A200007A sb      0,$7A(s0)

Mine
Code: [Select]
801EC768 92030085 lbu     v1,$85(s0)
801EC76C 9602007C lhu     v0,$7C(s0)
801EC770 2463FFFF subiu   v1,$1
801EC774 A2030085 sb      v1,$85(s0)
801EC778 10600005 beq     v1,0,$801EC790
801EC77C 3042018F andi    v0,$18F
801EC780 14400003 bne     v0,0,$801EC790
801EC784 00000000 nop
801EC788 A2000085 sb      0,$85(s0)
801EC78C A200007A sb      0,$7A(s0)

Yours:
Code: [Select]
801EC768 92030085 lbu     v1,$85(s0)
801EC76C 9602007C lhu     v0,$7C(s0)
801EC770 2463FFFF subiu   v1,$1
801EC774 A2030085 sb      v1,$85(s0)
801EC778 2C63000A sltiu   v1,v1,$A  <- This is doing nothig and is wasted.
801EC77C 3042018F andi    v0,$18F
801EC780 14400003 bne     v0,0,$801EC790
801EC784 00000000 nop
801EC788 A2000085 sb      0,$85(s0)
801EC78C A200007A sb      0,$7A(s0)
You only have a function that make dash infinite while you hold a button, but is not properly coded.
As I said before, you should be careful, GS codes and assembly codes are not the same thing, I put MIPS instructions so you can study the 4 routines.

@acediez
With the andi 0x018F include X and Y axis and 0x0183 X axis for the d-pad
but I still feel weird to control... I should implement only activeate dash on doable tap but not maintain the dash with the axis. My goodness this Blade is more nightmare than the nightmare mother in the game.

Edit Update:
I did this in a sitting, is about Sentsuizan:
https://www.youtube.com/watch?v=tv7VvQRmhf8
What I have done?... ;D
« Last Edit: July 21, 2018, 04:37:45 am by Z3R0X »

injoon84

  • Jr. Member
  • **
  • Posts: 59
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #146 on: July 21, 2018, 06:38:49 am »
Very good. From the YT, it seems like how long Zero perform sentsuizan is depend on how long you hold the up+square button. Am I right?
I personally prefer it delay a bit to stop the sentsuizan so that it won't be abusively use.
Something like making sentsuizan to be perform at least 1 second even if you let go the button straight away?
Please share it with acediez asap. Maybe he can include it in the latest version?
I feel like a kid. Eagerly waiting to play all this upgrade.

Also, there is something I want to know. The coming release of Megaman X Legacy Collection 2, will Capcom fix any problems that have been included in X6?

Z3R0X

  • Jr. Member
  • **
  • Posts: 43
  • My name's not shane, kid.
    • View Profile
    • My YT channel with mini tools.
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #147 on: July 21, 2018, 07:00:11 am »
Very good. From the YT, it seems like how long Zero perform sentsuizan is depend on how long you hold the up+square button. Am I right?
I personally prefer it delay a bit to stop the sentsuizan so that it won't be abusively use.
Something like making sentsuizan to be perform at least 1 second even if you let go the button straight away?
Please share it with acediez asap. Maybe he can include it in the latest version?
I feel like a kid. Eagerly waiting to play all this upgrade.

Also, there is something I want to know. The coming release of Megaman X Legacy Collection 2, will Capcom fix any problems that have been included in X6?

Is not fully tested and yes but holding up is not required only the button, also is an andi, can be changed with 0x10 for square and 0x20 for triangle, here:
Cancelable Sentsuizan
RAM = 801ECFB0
ROM = 1D9C3868
15 00 02 92 00 00 00 00 02 00 40 10 0A 00 03 24 09 00 03 24 89 00 02 92 00 00 00 00 24 10 43 00 2D 00 40 10
<>
89 00 02 92 00 00 00 00 06 00 40 14 00 00 00 00 09 00 03 24 7C 00 02 92 00 00 00 00 10 00 42 30 2D 00 40 14

Will be tight but I'm sure a delay can be implemented, there are some NOP that can be used.

KaosuReido

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #148 on: July 23, 2018, 04:05:27 am »
Just FYI, using the patcher, I can't seem to get the Ultimate Armor to work, code or not. If I don't change anything in the Characters Available section, and put in the Ultimate Armor code, I get the armor for the intro stage; but then it vanishes, and I can't select it again once I'm in the game proper. It just acts like it was never there. If I enable the Ultimate Armor in the Characters Available section, it doesn't appear at all. On either a save, or a new game. I'm assuming a lot of people just haven't messed with this section, but I wanted to mess around with it, and it just doesn't seem to be working. Thanks for the patcher though, everything else seems to work pretty well.

injoon84

  • Jr. Member
  • **
  • Posts: 59
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #149 on: July 23, 2018, 04:30:23 am »
By the way, High Max cannot be beaten without special weapons/moves except for Ultimate and Shadow.
I was thinking, is it alright to include:
1) X's Z-Saber can damage High Max when stun.
2) Zero's double jump spin attack can stun High Max. 2nd hit can damage High Max.
What do you guys think?

acediez

  • Full Member
  • ***
  • Posts: 229
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #150 on: July 23, 2018, 11:03:29 am »
Just FYI, using the patcher, I can't seem to get the Ultimate Armor to work, code or not. If I don't change anything in the Characters Available section, and put in the Ultimate Armor code, I get the armor for the intro stage; but then it vanishes, and I can't select it again once I'm in the game proper. It just acts like it was never there. If I enable the Ultimate Armor in the Characters Available section, it doesn't appear at all. On either a save, or a new game. I'm assuming a lot of people just haven't messed with this section, but I wanted to mess around with it, and it just doesn't seem to be working. Thanks for the patcher though, everything else seems to work pretty well.
Which version of the patcher are you using?

KaosuReido

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #151 on: July 23, 2018, 02:57:08 pm »
Which version of the patcher are you using?

I'm using v08. Here's a screenshot of how I set it up:

Also, would there be a way to create like a set of defaults that can be loaded? Each time I run a new patcher version, I need to set everything back up manually. It's not a long process, but it does get a little annoying. I don't know if there's a way to add a function to the launcher to load an INI file or something with defaults, for ease of use.

acediez

  • Full Member
  • ***
  • Posts: 229
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #152 on: July 23, 2018, 05:42:46 pm »
Thanks for reporting, I'm gonna take a look at it. It was probably broken by a small recent change, because it was confirmed as working correctly before.

(Edit. It was. Just a typo. Already fixed for the next version. Thank you very much for reporting  ;)
I've already written a solution to have the patcher modifications to always be compatible with the cheat codes regardless of selection, I'm just having a bit of trouble fitting new lines of code at this point lol)

Implementing saving and loading of settings is entirely possible, I just haven't coded it yet, and probably won't, not until I've finished fixing problems with existing options, and finish implementing a few options I've been working on but haven't put on the parcher yet



I didn't get much time to work on this the past few days but the next version is well in the works, I just need to find some more time to properly test everything out



@Z3R0X
I've yet to try the cancelable Sentsuizan, so I it's not implemented yet (I'll probably add a couple more stuff before releasing).

I did try your version of the blade armor air dash though, and just then realized mine wasn't dealing any damage!  :laugh: :laugh: :laugh: I was so excited to get it to control exactly like I wanted that I didn't even notice about the blue aura missing.
I'll probably keep the "F" out of the hold/release andi though, since I found myself holding either direction between air dashes and didn't feel natural having to let go. I'm sure not many people will mind not being able to air dash with a double tap

Anyway, thank you so much for your contributions again!

@injoon84
I haven't tested anything related to High Max. Is it really that much of a problem having to use subweapons to hit him? I thought it was a clever idea for an optional boss (it's not like it's the only part where the game expects you to kill yourself if you don't meet a requirement lol)
« Last Edit: July 24, 2018, 12:29:24 am by acediez »

KaosuReido

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #153 on: July 23, 2018, 11:30:37 pm »
No problem. Actually, on the subject of the Ultimate Armor, any possibility of adding something like an in-game way to unlock it? Say, linking it to getting UH rank? I dunno, it just seems a little annoying that we now have a way to get Black Zero legit (well, "legit"), and the Ultimate Armor is still locked behind a cheat code or a patcher option.

injoon84

  • Jr. Member
  • **
  • Posts: 59
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #154 on: July 24, 2018, 02:07:30 am »
Yes I agree with that.
That's why I felt having always exit a stage button is compulsory needed in this game unless you're a pro gamer or know what you're doing.
I don't have much problem with using special weapons defeating High Max.
Just that I thought it may be useful and fair for beginner who have never beaten the game.

About the damage chart, do you have other characters data?
At least some references so that we can adjust the damage table correctly to our liking instead of a few try and error to get it correctly.

Z3R0X

  • Jr. Member
  • **
  • Posts: 43
  • My name's not shane, kid.
    • View Profile
    • My YT channel with mini tools.
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #155 on: July 24, 2018, 07:13:04 pm »
@acediez
I'm just curious, you use 0x1D9965XX offset for custom routines.
Is a particular reason for use that space in the PSX-EXE?
I want to create your patcher 1:1 options but in C# with auto ECC, image restore and read what is currently patched without making backup copies.

acediez

  • Full Member
  • ***
  • Posts: 229
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #156 on: July 24, 2018, 07:42:17 pm »
No specific reason. I just looked for seemingly blank RAM addresses that stayed loaded during the whole game and discarded the ones that gave any problems. After some trial and error I settled on that space.

I know it's not the cleanest solution, it's probably part of something else, but so far hasn't given me any troubles. At least the parts currenly used.

Do you happen to know a better address? More space would come very handy

Z3R0X

  • Jr. Member
  • **
  • Posts: 43
  • My name's not shane, kid.
    • View Profile
    • My YT channel with mini tools.
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #157 on: July 24, 2018, 09:19:14 pm »
No specific reason. I just looked for seemingly blank RAM addresses that stayed loaded during the whole game and discarded the ones that gave any problems. After some trial and error I settled on that space.

I know it's not the cleanest solution, it's probably part of something else, but so far hasn't given me any troubles. At least the parts currenly used.

Do you happen to know a better address? More space would come very handy

I always use the leftover from SDK, there are some function names, I tested on a moded PSX with a burnt CD and not give me any problem on real hardware, is not much space but is better than nothing, I'm still digging of a way of load a chunk of data without calling read CD sector.
I use this space:
BIN from:
0x1D922790
To:
0x1D922960
I left over 4 bytes (the offset 0x1D922964) to make a nop and separate my routines because the offset 0x1D922968 is where some critical data starts.
« Last Edit: July 24, 2018, 09:32:51 pm by Z3R0X »

acediez

  • Full Member
  • ***
  • Posts: 229
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #158 on: July 25, 2018, 04:02:27 am »
Thanks. Will definitely try it if I encounter any problems with the ones I'm currently using

No problem. Actually, on the subject of the Ultimate Armor, any possibility of adding something like an in-game way to unlock it? Say, linking it to getting UH rank?

I like that idea!

Z3R0X

  • Jr. Member
  • **
  • Posts: 43
  • My name's not shane, kid.
    • View Profile
    • My YT channel with mini tools.
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #159 on: July 25, 2018, 09:10:17 am »
Thanks. Will definitely try it if I encounter any problems with the ones I'm currently using

I like that idea!

Yes I like that too, is not hard to implement, but I think it need a small custom routine. I can do it but we need to standardize were the routines will be stores on the PS-EXE