usagiZ
Well-Known Member
So, this continues to be a problem in DOA:
(gif by @WAZAAAAA )
Lows hitting you during airborne attacks, even when the hitbox shouldn't connect.
Other 3D fighters deal with this by making you invincible to lows during air attacks.
DOA has the capability to do this, but the coding for these moves is not consistent at all.
This problem could be still present in the upcoming DOA6:
(hopefully this will be patched by release or early update)
Obviously that's... less than ideal.
===========================================================================================================
So! Here's how to fix that:
(Guided Instructions in bottom left corner of video, via twitch chat.)
Lows hitting you during airborne attacks, even when the hitbox shouldn't connect.
Other 3D fighters deal with this by making you invincible to lows during air attacks.
DOA has the capability to do this, but the coding for these moves is not consistent at all.
This problem could be still present in the upcoming DOA6:
(hopefully this will be patched by release or early update)
Obviously that's... less than ideal.
===========================================================================================================
So! Here's how to fix that:
I use quite a few terms that I previously defined in the [DOA2++ thread] Look there if you have trouble following along.
The highlighted bit is the anim-def that this move uses. Things like hitbox, active frames, sound effects, facial expression etc. these are contained in the anim-def.
Also in the anim-def are the player status flags -- which are the things we need to edit next. Remember this value.
Go to the start of the file, and to the pointer located at 0x54
DOA2, 2U, OL, 3, and Dimensions have flipped pointers, so what would normally be AABBCCDD is now DDCCBBAA.
So we would actually read this as 0x00007AF0 (we can just ignore the leading zeroes and read it as 0x7AF0)
Now, taking the value for the anim-def that we got earlier (0x76, in my case) we need to multiply this by 0x4
76 x 4 = 1D8
And then add this to the pointer at 0x54 (0x7AF0)
1D8 + 7AF0 = 7CC8
Now we use the goto function to go to the location we just calculated:
This leads to yet another pointer. Let's follow this one to finally get to the anim-def
Highlighted in blue is the flag we need to add to make this invincible to lows.
(I placed it right after the highlighted yellow section, which is the on-hit sound effects for this move)
24 00 ?? 00 is the air/ground state for type 02 (jumping/aerial attack) move-defs - which is what we changed 3P to in the beginning of the tutorial to make this work.
We're using 24 00 01 00 to make this invincible to lows until otherwise specified (until an instance of 24 00 03 00 is reached in code)
Now, the next thing we need to do is to tell the game where the new move coding is.
So for that, we have to revisit the second to last pointer we got in [Step 2a]
The one we got after the calculation, which was 0x7CC8. Goto 7CC8
Change this pointer to the new location, which we determined at the end of [Step 2b] was 0x14440.
We have to flip this pointer to make it work properly, so we need to input 40 44 01 00
Finally we can save and test, and the results should speak for themselves:
We have successfully turned 3P into a jumping attack that does NOT get hit by lows, despite the hitboxes touching.
I think it would be nice if a similar method could be done for every attack with legitimate jumping frames in every DOA, and hopefully the devs fix this issue for DOA6 or release a patch at a later date that fixes this problem, because it's frustrating to be swept out of the air by a low wakeup kick that doesn't even appear to touch you.
Open the character.bin in a hex editor, HxD is what I'm using for this tut.
Find the slot (move-def) for the move you want to change, then change the move type value to 02
Find the slot (move-def) for the move you want to change, then change the move type value to 02
The highlighted bit is the anim-def that this move uses. Things like hitbox, active frames, sound effects, facial expression etc. these are contained in the anim-def.
Also in the anim-def are the player status flags -- which are the things we need to edit next. Remember this value.
Go to the start of the file, and to the pointer located at 0x54
DOA2, 2U, OL, 3, and Dimensions have flipped pointers, so what would normally be AABBCCDD is now DDCCBBAA.
So we would actually read this as 0x00007AF0 (we can just ignore the leading zeroes and read it as 0x7AF0)
Now, taking the value for the anim-def that we got earlier (0x76, in my case) we need to multiply this by 0x4
76 x 4 = 1D8
And then add this to the pointer at 0x54 (0x7AF0)
1D8 + 7AF0 = 7CC8
Now we use the goto function to go to the location we just calculated:
This leads to yet another pointer. Let's follow this one to finally get to the anim-def
Following the final pointer of [Step 2a], we get here, at the actual anim-def, or part of the coding for the move
Since there won't be enough space here to add the flags we need, we have to copy-paste this data to an area that won't affect the rest of the file if we add things.
The quickest way to do that is to add it to the end of the file. Not ideal, but for the purposes of this tutorial it's fine.
After copy-pasting the anim-def to the end of the file, now we can add things to the coding of this move without displacing the rest of the data.
Remember the location, circled in blue. (0x14440)
Since there won't be enough space here to add the flags we need, we have to copy-paste this data to an area that won't affect the rest of the file if we add things.
The quickest way to do that is to add it to the end of the file. Not ideal, but for the purposes of this tutorial it's fine.
After copy-pasting the anim-def to the end of the file, now we can add things to the coding of this move without displacing the rest of the data.
Remember the location, circled in blue. (0x14440)
Highlighted in blue is the flag we need to add to make this invincible to lows.
(I placed it right after the highlighted yellow section, which is the on-hit sound effects for this move)
24 00 ?? 00 is the air/ground state for type 02 (jumping/aerial attack) move-defs - which is what we changed 3P to in the beginning of the tutorial to make this work.
We're using 24 00 01 00 to make this invincible to lows until otherwise specified (until an instance of 24 00 03 00 is reached in code)
Here's how to reactivate getting hit by lows -- for instance if your feet touch the ground, or you land later in the animation, it would be silly for lows to not hit you then.
All you have to do is specify which frame you want to reactivate that on (include 01 00 ?? 00 = on ?? frame) and then add the grounded flag (24 00 03 00)
All you have to do is specify which frame you want to reactivate that on (include 01 00 ?? 00 = on ?? frame) and then add the grounded flag (24 00 03 00)
Now, the next thing we need to do is to tell the game where the new move coding is.
So for that, we have to revisit the second to last pointer we got in [Step 2a]
The one we got after the calculation, which was 0x7CC8. Goto 7CC8
Change this pointer to the new location, which we determined at the end of [Step 2b] was 0x14440.
We have to flip this pointer to make it work properly, so we need to input 40 44 01 00
Finally we can save and test, and the results should speak for themselves:
We have successfully turned 3P into a jumping attack that does NOT get hit by lows, despite the hitboxes touching.
I think it would be nice if a similar method could be done for every attack with legitimate jumping frames in every DOA, and hopefully the devs fix this issue for DOA6 or release a patch at a later date that fixes this problem, because it's frustrating to be swept out of the air by a low wakeup kick that doesn't even appear to touch you.
Change the move-def type to 02
Find the anim-def
Include flag [24 00 01 00] in the anim-def to specify the start of invincibility to lows
Include flag [24 00 03 00] in the anim-def to specify the end of invincibility to lows
Save and it should work as expected.
Find the anim-def
Include flag [24 00 01 00] in the anim-def to specify the start of invincibility to lows
Include flag [24 00 03 00] in the anim-def to specify the end of invincibility to lows
Save and it should work as expected.
Last edited: