Vice hack data - Vicen04/Dw1DataAndPatches GitHub Wiki
Introduction
This page will provide explanations about the hack as well as some offsets that anyone can easily change using a Hex editor to modify the hack itself. It will be divided in the following sections:
- Add an extra playable digimon
- Evolution and other miscellaneous changes
- Moves/tech Boost
- Royal Cup and other tournament changes
Here's a video showing a bit of the hack
Add an extra digimon
This is a change that allowed me to add an extra partner digimon, this is not done by adding new data, but rather by using the unused leftover data from WereGarurumon.
It uses the model from a digimon that appears in game but is not able to become a partner. This hack specifically uses Machinedramon, but it can be applied to any digimon that can battle.
How this was done
As mentioned before, this was mostly done by fixing and adding data to WereGarurumon.
WereGarurumon was planned to be a playable digimon, but the model was never added to the game and the data was left unfinished. This actually meant that data for a extra playable digimon exists, and after being completed and a model was attached to it, an extra partner could be added.
Code to avoid problems when you load a model using Weregarurumon data was also added, to make sure the game doesn't crash and does load the model properly.
What can you do with this patch
The code basically lets you decide which digimon model you can use, which would let you play with digimon such as Myotismon, WaruMonzaemon, Machinedramon...
Of course, you'll have to modify quite a bit of the data on your own to make this work.
The code only needs these two offset to be modified
- 14CCFBA4 which has the value of the model when you evolve (the patch uses 113 which is Machinedramon)
- 14CCF09C which has the value of the model when you load the save data (the patch uses 113 which is Machinedramon)
After that you have to modify the offsets located at the Hack data, which explain the use of them. The patch will contain a document with a list of any necessary changes you may need (Model pointers, audio values...)
Lastly, you will have to add animations to the original digimon model, so it can behave in a correct way, or it will softlock in some situations (such as going to the toilet). I recommend to check the Animations section of this wiki to learn more about them.
Limitations
- The partner digimon you can use will be limited to digimon that can battle, or the model will just be able to walk and not much else (this means no Jijimon, Master Tyrannomon...).
- The digimon will be limited by the amount of movements it originally had, you cannot add more movements (unless the model lets you, like Machinedramon), but you can try to substitute movements.
Evolution and other miscellaneous changes
This is the first change that was done to the game, it just started as the evolution patch with the fusion of two functions to improve the old code from the evolutions.
Originally I just planned to add Panyjamon, Gigadramon and Metal Etemon as natural evolutions, but it evolved into a lot more.
How this was done?
It was mostly thanks to the now unused code from the evolutions, which could just be rewritten to upgrade other sections of the game.
Recently I found another function with a lot of code that is never used, which half of it became the Moves/Tech Boost hack and the other half is just chart improvements.
The code and a few details about these changes can be found in the repository.
Possible changes
Evolution changes
I'll list a few offsets that can be modified safely:
-
14D19D80 Panyjamon Evolution target override (two bytes):
It works in the following way: if (digimonType == 63) //Panjamon targetDigimon = targetDigimon + value in the offset;
The value in the hack is FF (-1), which would make it read Machinedramon, if you want to change this to a different one, just modify that value.
-
14D19A84 Panyjamon requirement stat overwrite 1 (Uses Leomon, a byte)
-
14D19A94 Gigadramon requirement stat overwrite 1 (Uses Megadramon, a byte)
-
14D19AA4 Metal Etemon requirement stat overwrite 1 (Uses Etemon, a byte)
-
14D19AC8 Panyjamon requirement stat overwrite 2 (Uses Leomon, a byte)
-
14D19AD8 Gigadramon requirement stat overwrite 2 (Uses Megadramon, a byte)
-
14D19AE8 Metal Etemon requirement stat overwrite 2 (Uses Etemon, a byte)
-
14B9740C Added lifetime after you evolve to ultimate (two bytes)
Chart changes
-
14D643EE & 14D6443E New colour (two bytes): just change this if you prefer the extra digimon to render with a different colour. You'll have to experiment.
-
14CCFFF4 & 14CCFF40 Panyjamon chart exception (a byte): change this to FF if you want to stop Panyjamon from reading another digimon evolution target to display in the chart.
-
14CCFF48 Panyjamon chart evolution target 1 (a byte): change this value to select the digimon data Panjyamon should use to render its evolutions in the chart
-
14CD000C Panyjamon chart evolution target 2 (two bytes): change this value to select the digimon data Panjyamon should use to render its evolutions in the chart, this one is different, since it only works in negative multiple of 11 (-11 which then targets Machinedramon, -22 would be MegaSeadramon and so on...)
-
14D19D3C Panyjamon Pre Evolutions in the chart (5 different, 1 byte each): you can change these, a FF means no digimon
-
14D19D41 Gigadramon Pre Evolutions in the chart (5 different, 1 byte each): you can change these, a FF means no digimon
-
14D19D46 Metal Etemon Pre Evolutions in the chart (5 different, 1 byte each): you can change these, a FF means no digimon
Chart in 2.0
Old chart
Factorial Town changes before 1.11.5
Here are the offsets that can be modified safely:
Offset to change the digimon that can evolve in Factorial Town (just a byte):
- 14D19DAC digimon 1 (Greymon)
- 14D19DB4 digimon 2 (Seadramon)
- 14D19DBC digimon 3 (Elecmon)
- 14D19DC4 digimon 4 (Devimon)
- 14D19DCC digimon 5 (Etemon)
- 14D19DD4 digimon 6 (Leomon)
- 14D19DDC digimon 7 (Nanimon) (this one will use the original evolutions)
Offset to change the evolutions the digimon can have (just a byte):
-
50% chance (MetalMamemon):
- Digimon 1:
- 14D19E6C digimon value (Greymon)
- 14D19E78 digimon to evolve (Metal Greymon)
- Digimon 2:
- 14D19E74 digimon value (Seadramon)
- 14D19E84 digimon to evolve (Gigadramon)
- Digimon 3:
- 14D19E80 digimon value (Elecmon)
- 14D19E90 digimon to evolve (Unimon)
- Digimon 4:
- 14D19E8C digimon value (Devimon)
- 14D19E9C digimon to evolve (Andromon)
- Digimon 5:
- 14D19E98 digimon value (Etemon)
- 14D19EA8 digimon to evolve (Metal Etemon)
- Digimon 6:
- 14D19EA4 digimon value (Leomon)
- 14D19EB4 digimon to evolve (Panyjamon)
- Digimon 1:
-
10% chance:
- Digimon 1:
- 14D19E10 digimon value (Greymon)
- 14D19E1C digimon to evolve (Machinedramon, 3E)
- Digimon 2:
- 14D19E18 digimon value (Seadramon)
- 14D19E28 digimon to evolve (Machinedramon, 3E)
- Digimon 3:
- 14D19E24 digimon value (Elecmon)
- 14D19E34 digimon to evolve (Panyjamon)
- Digimon 4:
- 14D19E30 digimon value (Devimon)
- 14D19E40 digimon to evolve (Vademon)
- Digimon 5:
- 14D19E3C digimon value (Etemon)
- 14D19E4C digimon to evolve (Andromon)
- Digimon 6:
- 14D19E48 digimon value (Leomon)
- 14D19E58 digimon to evolve (Adromon)
- Digimon 1:
Factorial Town changes from 1.11.5
Offset to change the digimon that can evolve in Factorial Town (just a byte):
- 14054453 digimon 1 (Mamemon)
- 14054457 digimon 2 (Greymon)
- 1405445B digimon 3 (Devimon)
- 1405445F digimon 4 (Seadramon)
- 1405446F digimon 5 (Elecmon)
- 14054473 digimon 6 (Etemon)
- 14054477 digimon 7 (Leomon)
- 1405447A digimon 8 (Nanimon)
Offset to change the evolutions the digimon can have (just a byte):
-
50% chance:
- Digimon 1:
- 140546DB digimon value (Mamemon)
- 140546E5 digimon to evolve (Metal Mamemon)
- Digimon 2:
- 140546EF digimon value (Greymon)
- 140546F9 digimon to evolve (Metal Greymon)
- Digimon 3:
- 14054703 digimon value (Devimon)
- 1405470D digimon to evolve (Andromon)
- Digimon 4:
- 14054717 digimon value (Seadramon)
- 14054721 digimon to evolve (Gigadramon)
- Digimon 5:
- 1405472B digimon value (Elecmon)
- 14054735 digimon to evolve (Unimon)
- Digimon 6:
- 1405473F digimon value (Etemon)
- 14054749 digimon to evolve (Metal Etemon)
- Digimon 7:
- 14054753 digimon value (Leomon)
- 1405475D digimon to evolve (Panyjamon)
- Digimon 8 (Nanimon):
- 14054765 digimon to evolve (Giromon)
- Digimon 1:
-
10% chance:
- Digimon 1:
- 140545E1 digimon value (Mamemon)
- 140545EB digimon to evolve (Giromon)
- Digimon 2:
- 140545F5 digimon value (Greymon)
- 140545FF digimon to evolve (Machinedramon, 3E)
- Digimon 3:
- 14054609 digimon value (Devimon)
- 14054613 digimon to evolve (Vademon)
- Digimon 4:
- 1405461D digimon value (Seadramon)
- 14054627 digimon to evolve (Machinedramon, 3E)
- Digimon 5:
- 14054631 digimon value (Elecmon)
- 1405463B digimon to evolve (Panyjamon)
- Digimon 6:
- 14054645 digimon value (Etemon)
- 1405464F digimon to evolve (Andromon)
- Digimon 7:
- 14054659 digimon value (Leomon)
- 14054663 digimon to evolve (MetalEtemon)
- Digimon 8 (Nanimon):
- 1405466B digimon to evolve (Megadramon)
- Digimon 1:
-
Super remodel
-
14054923 Evolution chance: 72%
-
Digimon 1:
- 14054815 digimon value (MetalGreymon)
-
Digimon 2:
- 14054819 digimon value (MetalMamemon)
-
Digimon 3:
- 1405481D digimon value (Andromon)
-
Digimon 4:
- 14054821 digimon value (Megadramon)
-
Digimon 5:
- 14054825 digimon value (Gigadramon)
-
Evolution target:
- 1405495D digimon to evolve (Machinedramon)
-
Elecmon being accepted for a remodel
Possible Issues
Due to the extra digimon having their digimon adquired flags shared with some Jijimon dialogue, three minor glitches were created:
- If you obtain Panyjamon before speaking with Jijimon about the recruitment of Agumon, the game will skip that dialogue. If you recruit Agumon and speak about Jijimon about it, the game will show Panyjamon in the chart even if you never obtained it.
- If you obtain Gigadramon before speaking with Jijimon about the recruitment of Betamon, the game will skip that dialogue. If you recruit Betamon and speak about Jijimon about it, the game will show Gigadramon in the chart even if you never obtained it.
- If you obtain Metal Etemon before speaking with Jijimon about the recruitment of Greymon, the game will skip that dialogue. If you recruit Greymon and speak about Jijimon about it, the game will show Metal Etemon in the chart even if you never obtained it.
Other data
Any other data that I believe it is relevant, can be found inside the file.
Moves/tech boost
This is a change that adds a new mechanic to the game, now each digimon can have a specific tech boosted.
How this was done
I noticed there was some code inside the game that is never used, but it is always stored in memory for some reason, I decided to just replace that with new code to add a new mechanic.
The raise data also had 3 bytes that are never used, I decided to give them a use, 1 byte dedicated to select a technique and the other 2 bytes are used to set the amount of boost.
There has been a few tests and the game works correctly; I have not tested everything, but I'm pretty sure that code is not used anywhere, I never found any reference to it.
How to change this
The code does all the work for you, so you only have to change some of the digimon data to select a tech and the amount of boost you would like, the boost is added to that tech damage.
All of the offsets for each digimon are listed in the "Moves boost" file inside the "hack data" folder.
There are two changes you can do to the code:
- 14CCFEBC Colour for a Tech you have selected and has a boost
- 14CCFF18 Colour for the Tech data boosted
Both can be changed, I recommend to use either the current value "07"(blue), or use the value "10" (salmon), there are other colours, but are quite difficult to see (such as a lighter white or black).
The tech selected is at the top, the tech data shown at the bottom
Royal Cup and other tournament changes
An unplanned update, I just wondered why the Gigadramon mini sprite was not showing in the tournaments and this is the result.
The Royal cup will include any digimon up to WaruSeadramon (not included).
If Machinedramon appears, it will look like garbage data in the mini sprite, this is kinda unintended but it doesn't look bad in my opinion.
How this was done?
It is basically a fix to a few errors and the addition of the Royal Cup in the daily tournament schedule. Not much to explain since that is already shown in the code.
What can be changed
Here are the following offsets that can be safely changed:
-
14C7F2D6 Tournament Royal Stat base, just change this if you want an easier/harder cup, the default is 400 (is a lot).
-
14D1E138 Change this byte if you want to get the rewards from a different cup, the default is the Grade S.
-
14C57634 Babies/in-training stats multiplier, just a byte.
-
14C5760C Babies/in-training stats divisor, just a byte.
-
14C5827C Digimon that will appear in place of WereGarurumon, as an opponent NPC.
-
14C5F110 Digimon sprite to render in place of WereGarurumon, the default is 112 (Machinedramon in that sprite sheet).
Harder bosses and hardmode
Video showing a bit of the hack:
This changes the moveset of some of the boss battles in the "harder bosses" version as well as it gives a boost to all the techs to the NPC digimon in the "hardmode" version.
While the "harder bosses" can be implemented in vanilla, my hack or Maeson's hack, the "hardmode" is exclusive to my hack, due to the changes available thanks to the move expansion of some digimon that my hack has.
How this was done?
The explanation may be a bit complex.
It was quite a bit of work, since the NPC digimon have a limit due to the animations they will perform, most of the models only can perform the animations of the techs shown in the data, and not any more. An example would be this one:
- WaruSeadramon can only perform the animations for the tech it has: Aurora Freeze, Giga Freeze, Winter Blast and Confused Storm (This last one is not even active), this hack managed to make it use the moves: Ice Statue, Giga Freeze, Aqua Magic and Mail Storme.
I did replace the animations from the original techs with the animations from MegaSeadramon techs, which was possible because those two share basically the same skeleton, making the animations fully compatible. There was not much of a need for memory allocation expansion for the digimon since the code always allocates a bit of extra memory, which is enough for the usually small expansions in the size.