How did you decipher the command format from the memory? Is there some readable scripts from the game installs that you were able to obtain the format?
I have always wondered how people were able to create bots on pc and consoles, but I haven't seen people describe the process of how they came up with it.
Not sure if I fully understood your question, I'll just give you some general guidelines.
I have used Cheat Engine to search the memory addresses (in game.exe) required to start coding a bot. The more you can find out about what the other player is doing, the more complicated and precise your response can be.
Memory addresses tell you what's happening in a program.
In DOA's case, I had to find the addresses for the following game mechanics on both Player 1 and Player 2 side: combocounter/currentanimationframe/currentmove/direction/distance/highmidlowground/movetype/movetypedetailed/stance/striketype/totalactiveframes/totalstartup. These are the names *I* gave to each, nothing's official. You can read what each of them means (and how to find them using CE) by reading documentation.txt. Most of them were pretty straightforward to find, here some examples:
P1_combocounter:
Do a 3 hit combo ingame with Player 1, scan 3 in CE. 5 hit combo = scan 5 etc. etc...
P2_totalactiveframes:
Open the ingame Move Details screen. Do any move. Check ingame how many startup frames it is let's say 11, scan 11. Do another move that is let's say 20, scan 20 etc. etc...
After I found all the necessary addresses, I coded a program with a programming language of choice (AutoHotkey) that monitors what's happening inside of the game every millisecond on Player 1 and Player 2 at those aforementioned addresses and then chooses what to do accordingly. Here's an actual piece of code I used inside of the bot to break neutral throws:
Code:
if (p2_movetype = 4 and p2_currentanimationframe < 4)
5T()
Which basically means: "If player 2 has landed a throw (= 4) and such throw is in its first 3 frames (< 4) then press the throw button (5T()). What those 3 variables really mean is defined elsewhere, but I hope you still get the general idea.