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:

Animation Count

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.

Digimon World Animations example

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:

Digimon World Animations 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:

image digitamamon curling original

An image showing Digitamamon original animations

image

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:

image

Original movement animation pointers from Panjyamon

image

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:

Movement list bug

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:

Digimon World movement list example

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:

DG dimension list

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:

Movement copy list

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.