Welcome Guest [Log In] [Register]
Navi version attack variables; and how to find them
Topic Started: Jan 2 2011, 07:02 AM (2,884 Views)
Prof. 9
Member Avatar
Moderaptor

For those who have played MegaRockPatch V3, you may have fought the GD Navis already. Their attacks and speed have increased a bit, but they're still the same attacks. What makes these sort of enemy modifications possible is attack variable hacking.

Every Navi has certain variables that determine things like speed of attacks, rate of attacks, etc. These variable differ for each Navi version. They're not part of the AI, but they're used by the Navi's attack routines. Meaning that if you give a Navi an attack that was originally not used by a Navi, that attack will not have version specific variable. Sometimes an attack will not have variables even though it's a Navi's attack; that means the attack behaves the same way for all its versions. Every attack that does have variables, though, has unique variables that are only used by that attack (at least, as far as I know).

So how do you go about finding these variables? If you have an emulator with debugging capabilities, you can use breakpoints. Otherwise, there is a neat trick you can use.

Boot up VBA, and get into a fight with the Navi whose attack variables you want to find. Then, open up the Memory Viewer and the Disassembler. Set the Disassembler to Automatic update. In the Memory Viewer, go to address 0800FE32.

Posted Image

The trick to finding attack variables is pausing the game right before the Navi is about to execute an attack. This includes jumping to a specific panel, etc. Pause the game before any of this happens (pressing Start will do). So before you go look for attack variables, watch for a bit and try to predict the Navi's moves.

Once you've paused the game, go to 0800FE32 and put the following two bytes: FE E7. Unpause the game and wait. After a little bit, the game will hang. Normally this would be a bad thing, but this is really what you want to happen. Look at the contents of register 1 (I've put a red box around it in the picture).

Posted Image

Congratulations, you've found an attack variable! If you check out the address you found in the Memory Viewer, you'll see a set of 4 values. One value for each version. The first value is V1, the fourth is V4. Changing these values can have all kinds of effects, so experiment a bit with them.

Of course, you'd probably like the game to continue. To do so, pause the emulator, go back to 0800FE32 and put back the "40 5C".

Sometimes, an attack will have multiple attack variables. In order to get the next one to be used, put back the "40 5C", then go to the Disassembler window and press the Next button twice. Finally, go back to the Memory Viewer and put the "FE E7".

Posted Image

I'm fighting ProtoManSP, which is his 3rd version, so I changed the 3rd value (originally 0x0E) to something big, 0x70. Now, ProtoMan waits a long while after doing his Plus-slash.

It's a bit of a tedious process, but all attack variables can be found this way. Props to mega rock.exe for getting an attack variable for HeatMan, so that I could find this breakpoint.
:ninja: Follow me on Twitter! :trap: Fork me on GitHub!
Posted Image
Profile
Quote
 
brianuuu
Member Avatar
SF Noise Spriter
This has been found by Timaeus's guide but he didn't say how to find where is the value though.

This just change the speed and delay of the attacks, the thing I really want is to make navi to have a chance to use a slot of attack more often.
Edited by brianuuu, Jan 2 2011, 08:46 AM.
Posted ImagePosted ImagePosted Image
Posted Image
Profile
Quote
 
Prof. 9
Member Avatar
Moderaptor

brianuuu
Jan 2 2011, 08:45 AM
This has been found by Timaeus's guide but he didn't say how to find where is the value though.

This just change the speed and delay of the attacks, the thing I really want is to make navi to have a chance to use a slot of attack more often.
Ah, well... I guess I elaborated on the subject then.

Changing the chances of picking an attack slot requires full-blown AI hacking. You'd need to know ASM and be able to modify the AI attack selector routines. I have something planned which should make AI crafting possible but I haven't started working on it.
:ninja: Follow me on Twitter! :trap: Fork me on GitHub!
Posted Image
Profile
Quote
 
MegaRockEXE
Member Avatar
BN Guides Author

Elaborating is always better. It's better than not having enough information or the reason why.
The Rockman EXE Zone | YouTube
Profile
Quote
 
Dramz
No Avatar
Spastic Colon

Thanks for explaining it to me in the chat earlier.


Spoiler: click to toggle

Slot 0 would be the movement. Slot 1 would be the first attack...etc
Edited by Dramz, Jan 3 2011, 12:13 AM.
Profile
Quote
 
Dramz
No Avatar
Spastic Colon

Sorry to double post, but I can't seem to find Circusman or Chargeman's variables.
Profile
Quote
 
brianuuu
Member Avatar
SF Noise Spriter
still don't know how chargeman's AI works, when I change his AI, he doesn't act like other navi.
Posted ImagePosted ImagePosted Image
Posted Image
Profile
Quote
 
Prof. 9
Member Avatar
Moderaptor

I could never find ChargeMan's vars either. I'm guessing his attacks are the same for all his versions. I doubt he'd use a different way of loading them.
:ninja: Follow me on Twitter! :trap: Fork me on GitHub!
Posted Image
Profile
Quote
 
Dramz
No Avatar
Spastic Colon

I remember once playing with upgrade codes, and you could upgrade Chargeman's attack speeds with them.
Profile
Quote
 
timaeus222
Member Avatar
The Tech Guy
Prof. 9, is there any chance you could try to figure out why this happens? V

When I change ChargeMan's movement data to another navi's, when he actually "moves", he moves in place, rather than on other panels. Then afterwards he does his attacks. So basically he does attacks in the same spot over and over again.

EDIT: Oh, and Brian, I did explain how to find those AI speed/delay modification values, but perhaps I wasn't as clear as I should've been. I said find values that looked either pattern-based or chronological backwards (or in some similar wording), meaning something like 0E0C0A08, or 37251301 (considering you're viewing in 32-bit because you want to see offsets when attack sequence modding). There's also an offset right before it that points to it, and a header as I call it, like how attacks start with something similar to 4802B500.

Posted Image

Like so.
Edited by timaeus222, Jan 20 2011, 11:54 PM.
~Timaeus~
Web Designer, Music Composer

"There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix

My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges
Posted Image
Posted Image
Profile
Quote
 
Dramz
No Avatar
Spastic Colon

Much easier to find them in 8-Bit, in a hex editor, (if you aren't using a debugger). Control-F function helps a lot.
Its also simpler to edit them in 8-bit.
Prof's method for finding them is the most reliable though, and the technical way to do it.
Posted Image
http://img189.imageshack.us/img189/433/screenshot20110121at555.png
Edited by Dramz, Jan 21 2011, 12:02 AM.
Profile
Quote
 
timaeus222
Member Avatar
The Tech Guy
Yep, it's what I was hoping someone would find, because scrolling manually is a bit harder if you want to know which one is which.

Also, the values that are changed are the speeds in milliseconds. Prof. 9 just didn't look like he knew, although I'd expect him to know that.

Prof. 9
 
Changing these values can have all kinds of effects, so experiment a bit with them.

Edited by timaeus222, Jan 21 2011, 12:11 AM.
~Timaeus~
Web Designer, Music Composer

"There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix

My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges
Posted Image
Posted Image
Profile
Quote
 
Dramz
No Avatar
Spastic Colon

timaeus222
Jan 20 2011, 11:54 PM
Also, the values that are changed are the speeds in milliseconds. Prof. 9 just didn't look like he knew, although I'd expect him to know that.

Prof. 9
 
Changing these values can have all kinds of effects, so experiment a bit with them.
Not always the speeds.
eg) Elementman Meteors, there is a variable for speed, and a variable for the number of meteors used.
Profile
Quote
 
timaeus222
Member Avatar
The Tech Guy
Ah, that's what he meant. Okay then. I guess that means there might occasionally be sets of two or three if it ever could happen. Like Dustman's panels or Falzar's feathers.

EDIT: Oh hey, Ablon, I just realized something. On GBeast's AI slot speed mods, you put Slot 4 twice. xD So you did have slot 5 put down. :D
Edited by timaeus222, Jan 21 2011, 12:11 AM.
~Timaeus~
Web Designer, Music Composer

"There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix

My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges
Posted Image
Posted Image
Profile
Quote
 
Dramz
No Avatar
Spastic Colon

Both of those seem to affect slot 4, and I couldn't find 5.

In my notes, I've just started labelling them as slot 1, 2, 3, 4...etc, regardless of which attack they effect.

updated notes

I can't find a slot 0 for Elecman.
Profile
Quote
 
timaeus222
Member Avatar
The Tech Guy
You found slot 0, 2, 3, 4, and 5 for Elecman. Slot 1 for him is at 080F3BA0. It's very close behind Slot 2.
~Timaeus~
Web Designer, Music Composer

"There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix

My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges
Posted Image
Posted Image
Profile
Quote
 
Dramz
No Avatar
Spastic Colon

Thanks Tim.

Now all we need is *shudders* a list of Gregar offsets.
Profile
Quote
 
debjits11
No Avatar


I don't get this.
Profile
Quote
 
1 user reading this topic (1 Guest and 0 Anonymous)
« Previous Topic · Guides & Research · Next Topic »