Curling Randomizer - Vicen04/Dw1DataAndPatches GitHub Wiki

Intro

This page will explain about the Curling randomizer, show a few screenshots and ways to modify it on your own.

Video showing a bit of the randomizer (click on the image to open the video on Youtube):

Curling video

What the randomizer does?

The randomizer will modify the curling matches against Penguinmon, selecting a random digimon that will play against you.

All of the digimon will have animations that more or less fit the game.

It does not change anything else, it does not change the opponent when you play against Metal Mamemon.

As an extra, it also puts in the right line one of the dialogues penguinmon had, which was displaced.

How is this done?

The randomizer was achieved by simplifiying the original game code related to curling to have lines to introduce the randomizer code.

The randomizer works in the following way:

  1. Checks if you're playing against Penguinmon.
  2. If you're playing against Penguinmon, deletes Penguinmon's model.
  3. A random number between 0 and 113 is generated (which compressed almost all of the digimon you can battle against).
  4. If the number is 0 (Player) it will change to 115 (Machinedramon), if the number is 62 (WereGarurumon) it will change to a random number between 117 adn 120 (Jijimon to King Sukamon).
  • Vice Hack version: Here the random number will be between 1 and 120, then if the number is 62 (WereGarurumon) it will change to 122 (Hagurumon), if the number is 114 (empty) it will change to 123 (Tinmon).
  1. Uses the random value generated to load a digimon model.
  2. Uses the random value generated to overwrite the name shown in the curling dialogue.

Possible Issues

  • Some digimon will use animations that will displace them, this will make the disk move to a different place than the intended by the AI (Agumon and Gabumon being the most easy to spot).

This is caused by me being unable to change the animation, since the game uses that animation at some point.

  • The line used for the digimon name in the dialogue has a 14 characters limit, some digimon will have the name a bit truncated
  • The Penguinmon image used next to the score could not be changed, so that may look weird.
  • Since the dialogue is still the same, it may look awkward for some digimon.

platinum sukamon

Image showing the name limit error

A video showing the displacement error (click the image to watch it on Youtube):

Displacement error video

How to modify the randomizer

Some of the steps show in the section "How is this done?" can be modified pretty easily, here's a list of stuff you can easily change after patching the game (You will need a hex editor):

  • 14BB59E4 is the offset that has the number limit for the random number generator, you can change this to reduce the amount of digimon (expansion is currently impossible due to Analogman lacking animations (you could technically add some), non-existent 114 digimon and the line limit my code has to add an extra exception for Analogman and 114).

Change the animations

You can change the animations yourself, it is pretty simple to do, but it can take some time to test.

I would recommend to read the "animations" section of the wiki to learn how to change them, also to check the code to know the offsets for each digimon and the animations that can be changed without breaking the game: Curling randomizer code

Make a Metal Mamemon randomizer

Version 1.0:

This is completely possible, but it is going to require a lot of manual work.

  1. By changing the offset 14BB59D4 from "39" to "95", the code will check for Metal Mamemon rather than Penguinmon.
  2. By changing the offset 14BB5A08 from "39" to "95", the code will set up the Model for Metal Mamemon to be deleted properly.
  3. By changing the offset 14BB5A50 from "D0 AB 84 24" to "58 B0 84 24", the code will overwrite Metal Mamemon's name rather than Penguinmon's name.
  4. You're going to have to manually change all of the animations to their original value, then change the animations again to fit Metal Mamemon curling. I would recommend to check the "animations" section inside "Other data" before attempting this.

Version 1.1:

  1. By changing the offset 14BB59D4 from "39" to "95", the code will check for Metal Mamemon rather than Penguinmon.
  2. By changing the offset 14BB5A18 from "05" to "06", the code will set up the Model for Metal Mamemon to be deleted properly.
  3. By changing the offset 14BB5A50 from "D0 AB 84 24" to "58 B0 84 24", the code will overwrite Metal Mamemon's name rather than Penguinmon's name.
  4. You're going to have to manually change all of the animations to their original value, then change the animations again to fit Metal Mamemon curling. I would recommend to check the "animations" section inside "Other data" before attempting this.

Transform this into just a fixed change for either Penguinmon or Metal Mamemon

You can just transform this randomizer in code that will just change the digimon you play against into a different one permanently:

  • To do it with Penguinmon, you will have to do the following:

Version 1.0:

  • Change 14BB59E0 from "B5 8D 02 0C" to "XX 00 02 24" (XX is the value in hex of the digimon you want to transform Penguinmon into).
  • Make everything between 14BB59E5 to 14BB59FF (both included) zeros.

Version 1.1:

  • Change 14BB59DC from "B5 8D 02 0C" to "XX 00 02 24" (XX is the value in hex of the digimon you want to transform Penguinmon into).

  • Make everything between 14BB59E0 to 14BB5A07 (both included) zeros.

  • To do it with Metal Mamemon, you will have to follow the steps above, do steps 1, 2 and 3 from the earlier section and change the animations of the digimon you're transforming Metal Mamemon into.

Doing it with both at the same time would require extra code, feel free to use my code as a reference if you want to do a version with both.

JP randomizer

This randomizer works in a slighty different way:

  1. The script has been changed, so Penguinmon never loads.
  2. Checks if you're playing against MetalMamemon.
  3. If you're playing against MetalMamemon, ignore the next steps.
  4. A random number between 0 and 113 is generated (which compressed almost all of the digimon you can battle against).
  5. If the number is 0 (Player) it will change to 115 (Machinedramon), if the number is 62 (WereGarurumon) it will change to a random number between 117 adn 120 (Jijimon to King Sukamon).
  6. Uses the random value generated to overwrite the name shown in the curling dialogue.

It also has a few diferent animations for 2 digimon (Shellmon and Ninjamon)

Possible Issues

The issues are more or less the same, with this difference:

  • The character limit is 10 characters this time, so the names will be even shorter.

JP - ESP randomizer

Funciona exactamente igual al parche de la version japonesa, pero tuve que hacer un par de cambios extra en el script ya que ha sido cambiado bastante.

Possible Issues

Como la manera en que los nombres son renderizados es distinta a la versión JP, se notará mucho más que los nombres son más cortos, el resto de posibles problemas son el mismo.

image