Program Moveset bin format structure & a bit more

AlexXsWx

Active Member
EDIT 18Jul21: for DOA6 there's this post: https://www.freestepdodge.com/threads/doa6-moveset-bin-format-partial-how-to-mod-them.8918/

I've been digging through moveset bin format for quite some time now, and even though there are still unknowns I'm now at a good point to share my findings and tools with everyone, along with some gifs I made along the way :)

Here's an example of what moveset bins contain:

Legacy information for hit reaction for BT NH / BT crouch NH:
https://gfycat.com/blondspeedyanemone

Frame advantage on block / nh (and even ch / hch as long as it doesn't stun or GB), stored as an actual advantage number (so the game does the math to make it match):
https://gfycat.com/sophisticatedwaterloggedafricanparadiseflycatcher
https://gfycat.com/severeplusharcherfish

Overall information which move ids to apply in which situations (stun / juggle / ground hit etc), here's some modding of that:
https://gfycat.com/bareacclaimedcat

Some unused moves and sometimes even inputs for them:
https://gfycat.com/acclaimedsandyleafwing
https://gfycat.com/drearycompassionatearabianhorse

Full AI configuration - pre-made combos and probability weights
e.g. here I constrained COM lvl 8 to just one combo (KK46K, PP4KKK) after I recorded the replay:
https://gfycat.com/pleasantfrequentasianporcupine
and here I changed probability weights to always start offense with an OH (which it doesn't have), and always defend with crushing moves:
https://gfycat.com/acclaimedmelodicindianglassfish

General information about character like juggle momentum multiplier:
(this one nicely shows how juggle system works)
https://gfycat.com/impressivefairafricanwildcat
https://gfycat.com/jealousanykakarikis

... or juggle starting height multiplier (sort of "character height"):
https://gfycat.com/illfatedspeedycardinal

Code:
// momentum mult. | height mult. | // char name
1.0200 0.9880 // kasumi
1.1025 0.9880 // alpha
1.0000 1.0000 // brad wong
1.0200 1.0000 // mila
1.0000 0.9880 // helena
1.0200 1.0000 // kokoro
0.9150 1.0890 // bayman
1.0000 1.0000 // christie
1.0000 1.0020 // rig
1.0000 1.0020 // jann lee
1.0000 1.0020 // zack
1.0200 0.9880 // ayane
1.0000 1.0020 // hayabusa
1.0000 1.0000 // nyotengu
1.0200 1.0000 // eliot
1.0000 1.0020 // tina
1.0000 1.0000 // lisa
1.0000 1.0020 // akira
1.0200 1.0000 // sarah
0.9150 1.0890 // bass
1.0200 0.9620 // leifang
1.0200 1.0000 // hitomi
1.0200 0.9880 // phase 4
1.0000 1.0020 // hayate
0.9150 1.0890 // raidou
1.0200 0.9880 // marie rose
1.0200 1.0000 // momiji
1.0000 0.9620 // gen fu
1.0200 0.9620 // pai
1.0000 1.0020 // jacky
1.0000 1.0000 // ein
0.9150 1.0890 // rachel
0.9150 1.0890 // leon
1.0200 0.9880 // honoka
1.0200 1.0000 // mai
1.0000 1.0020 // naotora

A chunk for collisions, I'm talking hitboxes / hurtboxes / pushboxes:
https://gfycat.com/slowcookedbarebirdbat

Event timelines, among many other stuff, contain information about followup intervals:
https://gfycat.com/athleticexcitableamazonparrot

And I briefly touched format of actual animations (not part of moveset bin, but it's still used for it to tell how long an animation is, or to define root motion):
https://gfycat.com/grandminiaturecatfish

Anyways, here you can find folder with movesets, few motions, and the code I used to parse & document the files:
EDIT (24apr2021): please make sure to have verbose logs on (see this message for more details)
https://www.mediafire.com/folder/43n9rlglsxufo/doa5lr_moveset

Be advised that it is mainly for other programmes who can read code, and it's far from user friendly or complete, so don't expect to be able to use it out of the box.

Keep in mind I mainly tested on Rig's bin / animation, and while I was briefly checking other characters from time to time, a lot of validation is currently failing (and there are some overlaps in AI combos section, apparently I got some terminators wrong).
I've also seen that structure is seriously off for Marie, Honoka and one other char (can't remember right now), so they need to be inspected more closely.
 
Last edited:

KasumiLover

xX_APO_Prince_Xx
Premium Donor
I've been digging through moveset bin format for quite some time now, and even though there are still unknowns I'm now at a good point to share my findings and tools with everyone, along with some gifs I made along the way :)

Here's an example of what moveset bins contain:

Legacy information for hit reaction for BT NH / BT crouch NH:
https://gfycat.com/blondspeedyanemone

Frame advantage on block / nh (and even ch / hch as long as it doesn't stun or GB), stored as an actual advantage number (so the game does the math to make it match):
https://gfycat.com/sophisticatedwaterloggedafricanparadiseflycatcher
https://gfycat.com/severeplusharcherfish

Overall information which move ids to apply in which situations (stun / juggle / ground hit etc), here's some modding of that:
https://gfycat.com/bareacclaimedcat

Some unused moves and sometimes even inputs for them:
https://gfycat.com/acclaimedsandyleafwing
https://gfycat.com/drearycompassionatearabianhorse

Full AI configuration - pre-made combos and probability weights
e.g. here I constrained COM lvl 8 to just one combo (KK46K, PP4KKK) after I recorded the replay:
https://gfycat.com/pleasantfrequentasianporcupine
and here I changed probability weights to always start offense with an OH (which it doesn't have), and always defend with crushing moves:
https://gfycat.com/acclaimedmelodicindianglassfish

General information about character like juggle momentum multiplier:
(this one nicely shows how juggle system works)
https://gfycat.com/impressivefairafricanwildcat
https://gfycat.com/jealousanykakarikis

... or juggle starting height multiplier (sort of "character height"):
https://gfycat.com/illfatedspeedycardinal

Code:
// momentum mult. | height mult. | // char name
1.0200 0.9880 // kasumi
1.1025 0.9880 // alpha
1.0000 1.0000 // brad wong
1.0200 1.0000 // mila
1.0000 0.9880 // helena
1.0200 1.0000 // kokoro
0.9150 1.0890 // bayman
1.0000 1.0000 // christie
1.0000 1.0020 // rig
1.0000 1.0020 // jann lee
1.0000 1.0020 // zack
1.0200 0.9880 // ayane
1.0000 1.0020 // hayabusa
1.0000 1.0000 // nyotengu
1.0200 1.0000 // eliot
1.0000 1.0020 // tina
1.0000 1.0000 // lisa
1.0000 1.0020 // akira
1.0200 1.0000 // sarah
0.9150 1.0890 // bass
1.0200 0.9620 // leifang
1.0200 1.0000 // hitomi
1.0200 0.9880 // phase 4
1.0000 1.0020 // hayate
0.9150 1.0890 // raidou
1.0200 0.9880 // marie rose
1.0200 1.0000 // momiji
1.0000 0.9620 // gen fu
1.0200 0.9620 // pai
1.0000 1.0020 // jacky
1.0000 1.0000 // ein
0.9150 1.0890 // rachel
0.9150 1.0890 // leon
1.0200 0.9880 // honoka
1.0200 1.0000 // mai
1.0000 1.0020 // naotora

A chunk for collisions, I'm talking hitboxes / hurtboxes / pushboxes:
https://gfycat.com/slowcookedbarebirdbat

Event timelines, among many other stuff, contain information about followup intervals:
https://gfycat.com/athleticexcitableamazonparrot

And I briefly touched format of actual animations (not part of moveset bin, but it's still used for it to tell how long an animation is, or to define root motion):
https://gfycat.com/grandminiaturecatfish

Anyways, here you can find folder with movesets, few motions, and the code I used to parse & document the files:
https://www.mediafire.com/folder/43n9rlglsxufo/doa5lr_moveset

Be advised that it is mainly for other programmes who can read code, and it's far from user friendly or complete, so don't expect to be able to use it out of the box.

Keep in mind I mainly tested on Rig's bin / animation, and while I was briefly checking other characters from time to time, a lot of validation is currently failing (and there are some overlaps in AI combos section, apparently I got some terminators wrong).
I've also seen that structure is seriously off for Marie, Honoka and one other char (can't remember right now), so they need to be inspected more closely.
Do you have any cut moves for Naotora and Kasumi and Phase 4 that didn't make the cut and are unused??
 

DestructionBomb

Well-Known Member
Standard Donor
I really want to dig into this. Will have to redownload the games at some point.
 
Last edited:

WAZAAAAA

Well-Known Member
hovering characters on the character select screen while monitoring stuff that gets loaded using ProcMon, lool good shit
 

DestructionBomb

Well-Known Member
Standard Donor
Yes, to an extent. I didn't dive too deep into AI stuff

That's pretty dope actually, didn't expect that one. If there's a way, i'd imagine CPU boss battles to be an actual thing than actual cheese lol. Particularly Alpha-152, Raidou, Phase-4, or someone might be able to once again replicate Akira into an incredibly hard boss but in DOA's style. iirc, every single character I mentioned have very poor AI overall.
 

AlexXsWx

Active Member
Just realized something - I print some important logs in "debug" mode, which do not show up by default; this can make following the documentation impossible (either because logs won't show up or because context menu won't be available). So please change displayed log levels to "verbose" to see that logs (that is done in browser developer tools, "Default levels" -> "verbose" for Chrome)
 

rjqnraos19

Active Member
I'm sorry for bothering you. I was trying to edit CPU AI but I can't do anything because I don't know about programming or coding at all.
I opened the .bin files on chrome and I just gave up.
Can you fix the CPU AI like this?

Hayabusa: Disable or reducing 3•4kp - CPU spamming this over and over. It's boring and makes too easy to defeat CPU hayabusa.
Christie, Marie: Fix guard - their Guard is broken. They can't block anything. They do guard but not work at all.
Sarah, Jacky: Throw the offensive hold - They keep attack when player do OH and getting Hi counter.
Jacky: Adding some combo after Critical burst - After Critical Burst Jacky just do nothing.
Akira: Punishing throws - Akira do nothing when player do throws. just guarding forever.
Rachel: Fix low hold - She can hold low attack 100%.

I really want to fix these things...
Sorry for my bad english.
 
Last edited:

AlexXsWx

Active Member
I'm sorry for bothering you. I was trying to edit CPU AI but I can't do anything because I don't know about programming or coding at all.
I opened the .bin files on chrome and I just gave up.
Can you fix the CPU AI like this?

Hayabusa: Disable or reducing 3•4kp - CPU spamming this over and over. It's boring and makes too easy to defeat CPU hayabusa.
Christie, Marie: Fix guard - their Guard is broken. They can't block anything. They do guard but not work at all.
Sarah, Jacky: Throw the offensive hold - They keep attack when player do OH and getting Hi counter.
Jacky: Adding some combo after Critical burst - After Critical Burst Jacky just do nothing.
Akira: Punishing throws - Akira do nothing when player do throws. just guarding forever.
Rachel: Fix low hold - She can hold low attack 100%.

I really want to fix these things...
Sorry for my bad english.
Uhhhh that's a project and a half, and is not really of interest to me, so sorry - not gonna do that.
 

rjqnraos19

Active Member
hello again, I finally figured out editing AI moves and combos with hex workshop.
I edited ai Akira's CB combo(4p+k . 66p . 1p . 66p+k) to 1f h+k and 466p+k. now ai akira better than before :D
but don't know where is the AI's counter like your momiji video.
as I said before, akira never block low and just do nothing when opponent trying to throw him.
also seems akira doesn't hold that much unlike other characters. that's why he block over and over.
can you teach me where is the addresses for ai's counter and editing that?
 
Last edited:

AlexXsWx

Active Member
hello again, I finally figured out editing AI moves and combos with hex workshop.
I edited ai Akira's CB combo(4p+k . 66p . 1p . 66p+k) to 1f h+k and 466p+k. now ai akira better than before :D
but don't know where is the AI's counter like your momiji video.
as I said before, akira never block low and just do nothing when opponent trying to throw him.
also seems akira doesn't hold that much unlike other characters. that's why he block over and over.
can you teach me where is the addresses for ai's counter and editing that?
Well done!
I believe for the gif I changed pAiData->pIdk21[i].aiOffenseTypeWeights to 0/0/0/100 and pAiData->pIdk21[i].aiDefenseTypeWeights to 0/100/0/0.
These weights somehow define which list of "weighted combos" to use (from pAiData->pIdk19[i]->... and pAiData->pIdk20[i]->...).
I don't have an exact understanding of how they are connected, but you can find my notes on it for doa6 (which likely uses the same structure) here - the list of 48 entries after function createBtCombo(...) { ... }
 

rjqnraos19

Active Member
Well done!
I believe for the gif I changed pAiData->pIdk21[i].aiOffenseTypeWeights to 0/0/0/100 and pAiData->pIdk21[i].aiDefenseTypeWeights to 0/100/0/0.
These weights somehow define which list of "weighted combos" to use (from pAiData->pIdk19[i]->... and pAiData->pIdk20[i]->...).
I don't have an exact understanding of how they are connected, but you can find my notes on it for doa6 (which likely uses the same structure) here - the list of 48 entries after function createBtCombo(...) { ... }
thank you for the fast reply!
that looks hard. seems I must learn java script.
I just edited the bin file with hex editor
 
ALL DOA6 DOA5 DOA4 DOA3 DOA2U DOAD
Top