Other data - Vicen04/Dw1DataAndPatches GitHub Wiki
Introduction
This section will explain how to read and modify the data contained inside the "other data" section of this repository
Animations
This section will explain how to handle the data shown in the "Animations" text file from the repository.
The animations text file has data that can be used to change the animations that each digimon have linked to an action; this is not about changing the animations themselves, but rather about being able to modify which animations, from the animations the digimon has available, are used by the digimon.
How to identify and read the data
The data in the text file is basically pointers that will let the game know, which animation is used in the slot for that action, each digimon has at least a few animations, some of them more than others.
I'll add a few visual representations to help with the explanation:
Image showing all of the animation pointers for Digitamamon
When you use a Hex editor to locate the offset for the animations of a Digimon, the first byte will show you the length of the animation. The image shows highlighted all of the animations pointers and how the count of the bytes fits the first value from the offset.
Image with some pointers from Digitamamon highlighted
Each pointer uses 4 bytes, the animation count starts at 0.
From the image you can see:
- Highlighted in blue the first animation pointer, numbered 0 and being a pointer to the idle animation, which also serves as a reference to know how many animations the model has.
- Highlighted in green the second animation pointer, numbered 1 and being a pointer to the idle tired animation.
- Highlighted in yellow the third animation pointer, numbered 2 and being a pointer to the walk animation.
- Highlighted in red all of the combat animation pointers, these follow the same order the digimon movements have: Spit Fire being the first one, and the finisher being the last one. Not all the digimon have the finisher as the last animation pointer, some may have an extra pointer after the finisher (Machinedramon and MegaSeadramon).
The text document has a list of each animation pointer and their possible uses, as well as a list with the start of all of the digimon animations pointer offset.
Just be careful, because sometimes the animation pointer data will be split by the EDC/ECC:
Image showing some of Agumon's animations
The image has the animations from Agumon highlighted in yellow, while the EDC/ECC highlighted in blue.
The EDC/ECC will always have a lenght of 130, it is also always split in the same way, the data at the end of the EDC/ECC will also look similar.
How to use the data
There are multiple ways to use this data, I'll show a couple of examples from my hack:
- You can add animations to actions that did not have an animation before:
An image showing Digitamamon original animations
An image showing Digitamamon animations with the curling patch
This is the way I added animations to the digimon that did not have anything set for curling, the patch uses movement from the digimon as animations for curling too.
- You can swap/overwrite animations:
Original movement animation pointers from Panjyamon
My hack movement animation pointers from Panjyamon
In this example, I overwrote the animations pointers used by "Sonic Jab" and "Tremar" with the animations pointers for "Static Elec" and "Dynamite Kick" to fit better the movement changes I did to Panjyamon.
Movements allowed in battle
Each movement has a list with data, this data is used to check if a digimon is allowed to use the movement and how to spawn the movement.
Even if you change a movement from a digimon in its own data, if the digimon is not present in the list of the movement, the digimon will be fully unable to use that movement (the animation will play since it is not linked to that).
How to read the data
When you look at any of the offsets from the list inside the "other data" folder, you may see something like this:
An image with data from the "Bug" list
Each section of the list uses 10 bytes, which are separated in pairs of 2 bytes for each kind of data.
The way it is read, is the following:
Image with the data of one digimon highlighted from the movement "Bug" list
- In yellow the digimon value, in the case of that image, that's 111, which is Tentomon.
- In green the node where the movement will get the relative position from, or to put in a simpler way, the body part where the movement will try to spawn at.
- In orange the "position X" relative to the node.
- In light blue the "position Y" relative to the node.
- In red the "position Z" relative to the node.
Some movement list do not need positions or even the node at all, since the movement is just an full area attack:
An image with data from the "DG Dimension" list
Also, the moves "Fire tower" and "Infinity burn" spawn using the enemy rather than the digimon that used the move.
The list will keep reading data until it reaches a "FF" value when it tries to get a digimon value.
Some lists have repeated digimon, it can even have digimon that never uses the move anywhere: the lists in the examples have both Betamon, which never learns that moves in the game.
Finishers also have their own list, but that ones are a bit different and mostly contain the digimon that uses the finisher, the animation of each finisher is also pretty much exclusive to each digimon.
To end with this section, there's an extra list that you should be careful about:
Image from the movement allowed copy list
This list will make the digimon use the value in the list rather than their own numeric value, this list starts with Botamon, it ignores the Player.
Each value is 2 bytes long and it works as follows:
- If a digimon has a "FF FF" it will use its own number when the movement list checks for it.
- If a digimon has a different number there, it will use that value as the digimon value when it checks the list (for example, Snow Agumon uses Agumon's value).
This makes the lists shorter since the copies and the enemies that are mostly reskins of a digimon can just use the same data as the original digimon.
What can you do with this data
You can modify the moves from a digimon and then modify these lists to make sure it works.
Before doing that, you also have to make sure that you're not adding a movement after the finisher in the digimon data or it will not play any animation (with the exceptions of Machinedramon and MegaSeadramon which can have 1 move after the finisher), also make sure that the animation playing does not break the movement, you can always check the "Animations" section if you need to modify that.