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

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

injoon84

  • Jr. Member
  • **
  • Posts: 57
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #120 on: July 16, 2018, 11:14:00 pm »
I thought so. I felt funny when it doesn't increase damage to boss.

Also, I have try your new features.
Everything should be working as stated except the minimum delay on Blade's air dash. This one still got sound glitch.
The same defense as X's armors doesn't fully eliminate the usefulness of shock buffer as normal X and Zero still have slow recoil recovery. This is good.

I don't mind having Blade's normal/minimum/no delay air dash.
I just hate it as it cannot be cancel using the back direction button like Falcon or the controllable air dash length like Ultimate/Zero.

Can you share the whole psx ram on how you change the Blade's air dash value from original to minimum/no delay?
Please share the whole value. Not just the 2 digits. Like the way Z3ROZ thoroughly show us.
Maybe someone can find a breakthrough on adding the back button to cancel it or make it like Ultimate/Zero.

Ghaleonh41

  • Jr. Member
  • **
  • Posts: 27
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #121 on: July 17, 2018, 12:29:02 am »
Man, that's a lot of updates that happened when I was last here! Not sure if I'm going to update to the newest Patcher or so...

Great job with the ceiling moves! That's a change I've been waiting for a long time!

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 #122 on: July 17, 2018, 01:32:40 am »
Hello, I upload my tool demo and patcher to YT, I made a custom routine to control length of Blade's armor, the dash itself is infinite but can be cancel with jump and dash button, if you combine with infinite air moves you can cancel and dash again in any direction you want, also I left the delay and change to infinite so you can stay in the spot until you let go the button you press.
Here we go:

Infinite Blade Air Dashes
RAM = 8003F39E
BIN = 1D956BE6
02
<>
00

Blade Dash Control
RAM = 801EC768
BIN = 1D9B64D0
85 00 03 92 00 00 00 00 FF FF 63 24 85 00 03 A2 00 1E 03 00 03 1E 03 00 08 00 63 28 02 00 60 10 00 00 00 00
<>
7C 00 03 96 00 00 00 00 80 01 63 30 06 00 60 10 00 00 00 00 02 00 00 10 00 00 00 00 00 00 00 00 85 00 00 A2

Blade Automatic Dash Time
RAM = 801EAF38
BIN = 1D9B4910
01
<>
00

injoon84

  • Jr. Member
  • **
  • Posts: 57
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #123 on: July 17, 2018, 01:58:34 pm »
Z3ROX,
Thanks a lot with the detail. I just dunno how you get it.
I mean you have to change a lot of the value. That's crazy.
If I change it to gameshark, it will be like this.
#Blade Dash Control (Infinite & Stop=Jump/Dash)
801EC768 007C
801EC76A 9603
801EC76C 0000
801EC76E 0000
801EC770 0180
801EC772 3063
801EC774 0006
801EC776 1060
801EC778 0000
801EC77A 0000
801EC77C 0002
801EC77E 1000
801EC780 0000
801EC782 0000
801EC784 0000
801EC786 0000
801EC788 0085
801EC78A A200

I give up. This one is just too complicated.

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 #124 on: July 17, 2018, 08:41:57 pm »
That is why GameShak codes are not very manageable, they rely on a hook and a patch engine, the codes I post are not for use with GS, my codes are 800XXXXX, they look like a GS code, but they are not, you should be careful with that because the GS constantly write that particular RAM offset and that may crash and bug the game because the game not always has the same instructions on that offset, there is a reason why conditional codes exist (D00XXXXX) because they are assembly instructions that not always stay loaded.

I'm not good with GS but the code should look like this:
Infinite Blade Air Dashes:
D003F39F 02A2 - check if the value of the offset is equal to this.
8003F39F 00A2 - if true, write the code.
Will be an utter nightmare for the custom routines, for that reason I include the BIN offset, you can patch it yourself manually with any hex editor.

injoon84

  • Jr. Member
  • **
  • Posts: 57
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #125 on: July 17, 2018, 11:15:15 pm »
Err, you mean endian right?
So I was missing the A2 value. No wonder I couldn't get it right.

For gameshark, it goes like this.

#Infinite Blade Air moves (A202=Normal, A200=Infinite)
8003F39E A200

#Blade delay dash modifier (0000=Infinity, 0001=Normal, 000F=only slight delay)
801EAF38 000F
Note:
Seems like putting 00 doesn't affect anything. Lucky!
Maybe the original value is 00?

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 #126 on: July 18, 2018, 12:02:22 am »
#Blade delay dash modifier (0000=Infinity, 0001=Normal, 000F=only slight delay)
801EAF38 000F
Note:
Seems like putting 00 doesn't affect anything. Lucky!
Maybe the original value is 00?

That may bug the game, those are not meant to be GS constat write, you should put conditional on all of them, when you are on stage select those offset have instructions that the game use for other things.

Infinite Blade Air moves (A202=Normal, A200=Infinite)
8003F39E A200 <- this is very critical, if you change the 0x00 and 0xA2 by anything else you will be wringing garbage to RAM.

I put RAM offset not to crate GS code; is for you to see the opcode of that particular RAM offset, the complete instruction looks like this:
86 00 02 A2
Converted to Opcode:
sb v0,$86(s0)
The modified instruction:
86 00 00 A2
Converted to Opcode:
sb zero,$86(s0)
This is why is dangerous to use always GS 800 code type:
#Blade delay dash modifier (0000=Infinity, 0001=Normal, 000F=only slight delay)
801EAF38 000F
Zero Stage:

Blade Stage:
« Last Edit: July 18, 2018, 12:20:54 am by Z3R0X »

acediez

  • Full Member
  • ***
  • Posts: 215
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #127 on: July 18, 2018, 02:33:04 am »
Go figure about the damage table, you could just buff it vs the bosses at this time. Possibly buff only the Z-Saber related attacks as that is what the armor is supposed to do.

You should add a tooltip to the defense option if you haven't mentioning that buffing defense will make the shock buffer part redundant unless it stacks(I don't think so?)

I ended up writing my own code to add extra damage (on top of the table values) to certain moves when using Blade Armor. Works very well so far. It'll be up on the next update of the patcher.

As for the Shock Buffer, well, if you use the new option, it'll work on X and Zero the same as any other armor: extra defense doesn't stack, but the reduced knockback still works.

Can you share the whole psx ram on how you change the Blade's air dash value from original to minimum/no delay?
Please share the whole value. Not just the 2 digits.

As always, I'm adding everything I do on the spreadsheet, so you'll get the chance to see everything in detail soon
In the meantime, these are the big ones for the air dash op.

$801EAEE0 Starts a series of checks to determine the status of the air dash. By placing a jump to the start of the actual dash here, I skip the whole delay sequence.
D4AB0708 <-- This is the jump
01000424 <-- This puts a value needed for the initial sfx to play

$801EAF28 Is the check that detects when you let go of the button. By replacing the condition with a non-conditional jump ("always true"), I make it keep the delay but only for the minimum time
D4AB0708 <-- Same jump as before

By the way, I didn't have a "whole value" for the damage charts before because they were literally a bunch of single byte values, not whole operations. Not sure what you were expecting.

Hello, I upload my tool demo and patcher to YT, I made a custom routine to control length of Blade's armor, the dash itself is infinite but can be cancel with jump and dash button, if you combine with infinite air moves you can cancel and dash again in any direction you want, also I left the delay and change to infinite so you can stay in the spot until you let go the button you press.

Amazing! I just tried this hack, it's very fun to play with, and by writing your own code it opens up lots of possibilities
You think you could just enable the ability to cancel it by input, while keeping the normal duration of the dash?
Also, have you figured out how to control speed? Would be nice for your hack to slow it down just a bit, to at least allow the screen scrolling to keep up with your movement

injoon84

  • Jr. Member
  • **
  • Posts: 57
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #128 on: July 18, 2018, 03:11:39 am »
Hmm, from what I understand from the pictures, the one highlighted in grey, the original psx ram is
8003F39D 00
8003F39E 02
8003F39F A2
Changing the 02 to 00 will get unlimited air moves for Blade.
However, Gameshark is endian and you have to use 4 digits.
acediez explained that to me before.
Therefore, in order to safely use the gameshark without affecting others value, I can either use
8003F39D 0000
or
8003F39E A200
Am I right?

The one you highlights with blue, I don't know what it means.
I checked Wikipedia and only came out with this.
Addiu=Add immediate unsigned (no overflow)
Nop=No operation
It means Zero doe not have anything to do with 801EAF38.
This psx ram will only affects Blade.
Am I right? Is my way of understanding correct?

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 #129 on: July 18, 2018, 04:04:29 am »
Quote
Hmm, from what I understand from the pictures, the one highlighted in grey, the original psx ram is
8003F39D 00
8003F39E 02
8003F39F A2
Changing the 02 to 00 will get unlimited air moves for Blade.
However, Gameshark is endian and you have to use 4 digits.

You should investigate GS code types, here are some:
16-bit Constant Write:
80XXXXXX XXXX
8-bit Constant Write:
30XXXXXX 00XX
16-bit Equal To Activator:
D0XXXXXX 00YY

Quote
acediez explained that to me before.
Therefore, in order to safely use the gameshark without affecting others values, I can either use
8003F39D 0000
or
8003F39E A200
Am I right?
Yes, in that case this code is safe because that RAM offset always have that opcode regardless of the character are you using.

On other hand when you are using Blade Armor you have the right values(the addiu instruction)
RAM Offset: 801EAF38

Original instruction:
01 00 42 24 <- addiu v0,v0,0x0001 This is a classic increment, v0 +1
After GS patch with 0x00:
00 00 42 24 <- addiu v0,v0,0x0000 means that reg v0 always will be the same

But when you are Zero, he has a NOP, this means...
Original instruction:
00 00 00 00 <- NOP
After GS patch with 0x00:
00 00 00 00 <- We are safe here, still NOP.

But you have these values (0000=Infinity, 0001=Normal, 000F=only slight delay)

After GS patch with 0x0F or with 0x01:
0F 00 00 00 <- This is an invalid opcode.

If the CPU reach this, the game will crash, this is a case when you need to use an equal conditional, like this:

D01EAF38 0001 <- Check if the value is 0x01 that is the original, if true
801EAF38 000F    write to RAM 0x000F or whatever value you want.

injoon84

  • Jr. Member
  • **
  • Posts: 57
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #130 on: July 18, 2018, 11:41:16 am »
Z3ROX,
Sorry, I don't have the knowledge to understand all of it even after your thorough explanation.
I feel bad about it.

Anyway, how did you guys know that psx ram is for certain function?
What's the best emulator use to search them?
I can only use deduction from someone else search and hopefully get some results from trial and error.

acediez

  • Full Member
  • ***
  • Posts: 215
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #131 on: July 18, 2018, 12:08:38 pm »
Anyway, how did you guys know that psx ram is for certain function?
What's the best emulator use to search them?
I can only use deduction from someone else search and hopefully get some results from trial and error.

Using no$psx, you can see the whole RAM's content in real time, and make the game pause emulation when a specific value is written/read so you can read and modify code line per line at that point. This is called a breakpoint.

I only started learning all this just a month or so before this project was published. It's not as overwhelming as it first seems.

This is a good place to start: a walkthrough about finding addresses using CheatEngine on ePSXe, and setting up and following breakpoints on no$psx.
https://www.youtube.com/watch?v=aZxtts7HBNY
https://www.youtube.com/watch?v=YVlcZa7xJz8
I recommend following exactly as the guy in the video is doing first to understand the whole process. Once you get the hang of it, you'll come up with your own methods for finding addresses depending on what you need.

After you get the basics and are ready to try stuff on your own, you can learn to read basic ASM instructions following no$psx's own help guide (CPU Specifications section)
http://problemkaputt.de/psx-spx.htm#cpuspecifications

This is also a good read to get a general idea of instructions and the inner workings of the PS1
https://www.zophar.net/fileuploads/2/10731bgqkx/playstation.htm

If you don't have any coding experience at all and you're having a hard time following instructions, registers and so, it won't hurt to go through an assembly basic guide first, like this one:
http://skilldrick.github.io/easy6502/

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 #132 on: July 18, 2018, 12:36:14 pm »
Z3ROX,
Sorry, I don't have the knowledge to understand all of it even after your thorough explanation.
I feel bad about it.

Anyway, how did you guys know that psx ram is for certain function?
What's the best emulator use to search them?
I can only use deduction from someone else search and hopefully get some results from trial and error.
Yes, I highly recommend NO$PSX with the debugger configured with native MIPS style, so you will learn x3  8) (PSX, PS2 and N64) they have common instructions.
problemkaputt.de/psx.htm
This is my video of how I find values with cheat engine and NO$PSX and how I inject code:
https://www.youtube.com/watch?v=ETPkGLjW-VU

Lumiere

  • Jr. Member
  • **
  • Posts: 23
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #133 on: July 18, 2018, 08:40:10 pm »
Odd question but, would saber plus effect X's Z-Saber? I know X can't equip it normally however it's a little odd that Zero can buff his buster through parts but X can't buff his saber.

Edit: Could you add an option to lower the nightmare snake's HP? When you consider the fact that you have to fight it 5-6 times and as far as I know, it has about twice Blaze Heatnix's HP.
« Last Edit: July 18, 2018, 08:59:24 pm by Lumiere »

injoon84

  • Jr. Member
  • **
  • Posts: 57
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #134 on: July 18, 2018, 11:27:28 pm »
Thanks acediez and Z3ROX.
Will slowly look into it.

acediez

  • Full Member
  • ***
  • Posts: 215
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #135 on: July 19, 2018, 02:22:36 am »
Odd question but, would saber plus effect X's Z-Saber? I know X can't equip it normally however it's a little odd that Zero can buff his buster through parts but X can't buff his saber.

Hmm not sure how it works, but I'm betting X's saber is not coded to even look if that part is equipped at all. I don't think I'll get into that.
 
Edit: Could you add an option to lower the nightmare snake's HP? When you consider the fact that you have to fight it 5-6 times and as far as I know, it has about twice Blaze Heatnix's HP.

It's the second thing that came to mind once I found per enemy damage charts. But rather than reducing the lifebar, I'm setting up an option to increase all damage against it by a factor (x1.5, x2, x3). Way easier to implement.



I just managed to control Blade Armor's Air Dash speed! It was hardcoded as 2x a regular air dash speed, it wasn't a separate value to easily edit... so I had to make it into one  :)

Now I'm halfway adding the ability to cancel it anytime while keeping its normal behavior.
« Last Edit: July 19, 2018, 05:11:34 am 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 #136 on: July 19, 2018, 08:07:29 am »
Now I'm halfway adding the ability to cancel it anytime while keeping its normal behavior.
That is great man!  :woot!:
I'm doing the same thing and I came up with 2 modes without doing any JAL routine:

Version 1 (I don't like this version much)
You need to perform dash with a any dash button and let go, if not let go you will perform a small dash, if you let go and to cancel you need to hit dash again.

Version 2 (I think this is better)
You will dash almost instally and dash only while you are holding a dash button.
Video Demo (if you want I can post the two versions here):
https://www.youtube.com/watch?v=NXUd_wqLQUU

I'm doing some things for MMx4, the sad part is that I had to make a JAL routine :(
- First mod is for Kuuenbu or Kuuenzan now you need to hold "up" + attack
- Second mod is air walker, after performing Hienkyaku you will be able to stay on the air and attack with all ground techniques, I don't know if this is useful to someone, you can fall down just by jumping and doing Ryuenjin.
Demo here:
https://www.youtube.com/watch?v=gnRtN25q0bE

acediez

  • Full Member
  • ***
  • Posts: 215
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #137 on: July 19, 2018, 10:07:25 am »
It's cool that you're working on this too, thanks for sharing your progress

Personally, the setup I'm aiming for is: normal behavior (no infinite air moves, normal length), but no delay (as it's currently on the patcher), added canceling, and just a bit slower to make it less dangerous and easier to cancel in time if needed (normal air dash is "04" and Blade Armor air dash is x2, "08". I'd make it "06")

The complete skipepd delay is done, speed and duration control too, just the added cancel needs another sitting (ran out of time yesterday ;D). I just need to add a small wait so it's not as sensitive. As it is now, you have to tap it very lightly to not trigger the cancel immediately. Works perfecly if I map the cancel to a different button or DPAD direction though.

Version 2 (I think this is better)
You will dash almost instally and dash only while you are holding a dash button.

I like this one! A lot better than the one you posted before. I ran into a similar behavior at some point and played around with it a bit (accidentaly, was actually trying to do something else :laugh:). Works very well with zero delay, infinite air moves, and tweaked speed. You can also combine it with the added damage option I mentioned before to add some damage to the air dash. Now it's better than Nova Strike :P

I'll share everything I've mentioned once I've polished and tested everything throughly (all the new Blade air dash stuff, added damage to Blade armor moves, and modified damage table for the Donut subboss)
You should also share the hex values for what you've done, every option and variation is useful as reference.

I'm doing some things for MMx4, the sad part is that I had to make a JAL routine :(
- First mod is for Kuuenbu or Kuuenzan now you need to hold "up" + attack
- Second mod is air walker, after performing Hienkyaku you will be able to stay on the air and attack with all ground techniques, I don't know if this is useful to someone, you can fall down just by jumping and doing Ryuenjin.
Demo here:
https://www.youtube.com/watch?v=gnRtN25q0bE

Awesome, you've already covered all three games!  :woot!:
Input options are always welcome. Looking forward to see what else you come up with

injoon84

  • Jr. Member
  • **
  • Posts: 57
    • View Profile
Re: Mega Man X6 Tweaks/Patcher (v06)
« Reply #138 on: July 19, 2018, 01:19:27 pm »
Great! Can't wait for both release.
This time Blade will be fun to play with.

Also, I try using cheat engine 6.7 on ePSXe 1.9.25 with the game Megaman X6 (USA) 1.1
Try some easy tutorial like finding the health point.
Somehow, I couldn't change the value after finding it.
What wrong have I done?
Also, how come they aren't using the same ram value as the 8xxxxxxx xx?

Z3ROX,
This is just my personal opinion about your X4 YT.
Why don't make moves like Raijingeki, and Shippuuga to be able to execute only once in the air?
Like you can only choose one either double jump or air dash when jumping.
After all, they can be cover up by the 'infinite air moves'.
I think they are call sky master in X4 gameshark.

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 #139 on: July 19, 2018, 01:58:57 pm »
Z3ROX,
This is just my personal opinion about your X4 YT.
Why don't make moves like Raijingeki, and Shippuuga to be able to execute only once in the air?
Like you can only choose one either double jump or air dash when jumping.
After all, they can be cover up by the 'infinite air moves'.
I think they are call sky master in X4 gameshark.

That is not easy as it sound, the game again calculates weird pointers and depends of animation and they are calculated like chains, if I don't use the right pointer the stack corrupts and the game crash, don't get me wrong it can be done but is one of the things that just will take a lot of time.
The same happened to MMx6 Guard Shell, the function call are  :banghead:

Now for MMX4 I made a 2 version for Kuuenbu, the short code version (24 instructions) is only "UP" and [] the larger (164 instructions holy macro....) but this is very comfortable because square perform regular swing and /\ for Kuuenbu (if you have it).