Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
a35b900
name export test
Thertzlor May 13, 2024
003cbfa
subfolders
Thertzlor May 13, 2024
e993d42
implementing replacement stuff
Thertzlor May 14, 2024
9bf3654
more logical space/camelCase handling
Thertzlor May 14, 2024
b9bf494
name changes are applied first
Thertzlor May 15, 2024
ccc70c7
optimizations
Thertzlor May 15, 2024
ebb25e2
documentation of path + replacement
Thertzlor May 15, 2024
88f39eb
Term types
Thertzlor May 15, 2024
2b290f6
name randomizing test
Thertzlor May 15, 2024
86e9d40
more randomization
Thertzlor May 15, 2024
afd9546
excluding empty/filler fields from btx randomizer
Thertzlor May 15, 2024
9b06f28
serializing implemented
Thertzlor May 15, 2024
4c8b21d
static things
Thertzlor May 15, 2024
610de6e
sub finishers
Thertzlor May 15, 2024
d6212ab
ALL the card names
Thertzlor May 15, 2024
5f39d9b
fixed multipart name recognition
Thertzlor May 15, 2024
a87ac6e
Digi-Egg -> Digimental
Thertzlor May 15, 2024
47ab0e3
serious general text replacement
Thertzlor May 16, 2024
a6ffcc7
Fix File resolution
Thertzlor May 16, 2024
f78dec9
cleanup, better exclusions
Thertzlor May 16, 2024
e2048a2
minimize csv
Thertzlor May 16, 2024
934c2b7
reordering, testing exclsuions
Thertzlor May 16, 2024
b31f5a8
handling articles and apostrophes
Thertzlor May 16, 2024
a819bf5
Crest names
Thertzlor May 16, 2024
f062916
disabled Paths fix
Thertzlor May 16, 2024
6cc7b4c
fix loading yaml
Thertzlor May 16, 2024
b54a1fb
more cleanup
Thertzlor May 16, 2024
2225840
fixing path exclusion
Thertzlor May 17, 2024
c725f2d
wildcard path matching
Thertzlor May 17, 2024
2413360
fixing exact replacements
Thertzlor May 17, 2024
e04b1a6
moved special cases to general csv
Thertzlor May 17, 2024
a28c900
path inclusions
Thertzlor May 17, 2024
ab433ce
fixed sorting bug
Thertzlor May 17, 2024
1a29957
fixed newline handling
Thertzlor May 17, 2024
3d59402
fixing articles fixed
Thertzlor May 18, 2024
b0ac633
more specialized replacements
Thertzlor May 18, 2024
4042ffa
Additional file for Digimon names in general text
Thertzlor May 18, 2024
7d6b46f
Case insensitive article correction
Thertzlor May 18, 2024
8532976
Documentaion
Thertzlor May 18, 2024
ee8c484
Pruning unchanged entries
Thertzlor May 18, 2024
5aafbed
Condition check for manual CSV mode
Thertzlor May 18, 2024
8a8e6e0
Compatibility with .jar
Thertzlor May 19, 2024
09a8b20
buildHandler tweak
Thertzlor May 19, 2024
ce573c5
Performance fix
Thertzlor May 21, 2024
0f17804
safer types
Thertzlor Nov 5, 2024
3265e80
Hard fork.
Thertzlor Oct 28, 2025
604bf4e
undub and name randomizer in separate files
Thertzlor Oct 28, 2025
e0b337e
randomizer -> textmod
Thertzlor Oct 28, 2025
5e41698
package hotfix
Thertzlor Nov 6, 2025
3561fc7
readme & menu updates
Thertzlor Nov 6, 2025
c75c59b
formatting
Thertzlor Nov 6, 2025
4db514f
set version
Thertzlor Nov 6, 2025
2b5e2e0
Repository URL update
Thertzlor Nov 6, 2025
030f04e
Fix typo in README
Thertzlor Nov 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 0 additions & 14 deletions .github/FUNDING.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:
with:
name: ${{ matrix.packageName }}
path: |
target/Decode-Randomizer.jar
target/Decode-TextMod.jar
target/armips${{matrix.executableExtension}}
target/3dstex${{matrix.executableExtension}}
target/3dstool${{matrix.executableExtension}}
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,7 @@

# Testing stuff
config.yml
*.cci
*.cci
/.vscode
/renamingPresets
dependency-reduced-pom.xml
163 changes: 110 additions & 53 deletions README.MD
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Digimon World Re:Digitize Decode Randomizer
# Digimon World Re:Digitize Undub/Text Modification Tool
This software allows replacing and modifying strings in the 2013 released 3DS game "Digimon World Re:Digitize Decode".

This software allows randomizing several aspects of the 2013 released 3DS game "Digimon World Re:Digitize Decode".
The main motivation for creating this tool was tool is and was replacing the dub terminology of the game's English translation patch by Operation Decoded, with the original terms.

# Usage

Expand All @@ -10,70 +11,126 @@ Before using this software make sure you
* have Java 11 or higher installed
* you can download it from [Adoptium](https://adoptium.net/)
* have a dumped ROM of the game in .CCI/.3DS or .CIA format
* the ROM can have the English translation patch applied
* other modifications can generally be compatible as well, but success may vary
* the ROM should have the English translation patch applied
* Replacing Japanese text *might* work (untested).
* have enough empty disk space for all files created during the randomization
* 5-10 GiB on the drive you installed the randomizer on should suffice
* 5-10 GiB on the drive you installed the textmod tool on should suffice

## Setup

Download the appropriate version for your OS from the [releases tab](https://github.com/SydMontague/DecodeRandomizer/releases) and unpack the downloaded .zip archive in the location you want to install the randomizer at.
Download the appropriate version for your OS from the [releases tab](https://github.com/Thertzlor/DecodeTextMod/releases) and unpack the downloaded .zip archive in the location you want to install the textmod tool at.

Run the `Decode-Randomizer.jar`, press the "Select Base ROM" button and navigate to ROM you want to use as base for the randomizer.
After the ROM has been successfully unpacked you'll be presented with the randomization options.
Run the `Decode-TextMod.jar`, press the "Select Base ROM" button and navigate to ROM you want to use as base for the textmod tool.
After the ROM has been successfully unpacked you'll be presented with the editing options.

The program starts with the default "undub" preset which replaces localized Digimon names and terms with their original counterparts, so if that's all you want you don't need to change any settings, just hit "Save Changes" which will generate your new rom.

> [!NOTE]
The replacement process *will* take a while, since it requires opening, editing and re-packing basically every script file in the game, so it might take around ten minutes, depending on your PC.

# Current Features

## Randomization

* Digimon Properties
* Attribute (Vaccine, Virus, Data)
* Sleep Schedule
* Favorite Food
* Base Weight
* Combat Speed
* Training Type
* Size (joke option, might break things)
* Skills and Finisher
* MP Costs
* Power
* Status
* Status Chance
* Cooldown
* Learn Rate
* Evolutions
* Requirements
* Paths
* Statsgains
* Enemies NPCs
* Digimon
* Stats
* Skills
* Drops
* Player character and starter Digimon
* You can also use it to set it to a certain character or Digimon
* Other
* Type Alignments (i.e. X is strong against Y)
* Treasure Hunt items
* map item spawns
## Undub/Text Replacement

* Fully functioning Undubbing preset.
* Support for user provided renaming presets enabling replacing any term or phrase in the game script.
* Selectors for specific files/lines inside files
* Regex support
* Exclusion patterns and paths.

### Undub/Editing Settings

* **`Replace terms in ALL text`**
Replaces the terms of a list such as DigimonNames.csv not just in that list but will also replace it in all general scripts such as NPC dialogue.
* **`use manual CSV`**
Enable this option if you are **not** using the built-in undub replacment, but your own csv replacements via the `renamingPresets` folder.
* **`camelCase names`**
Use the camelCase format for Digimon names such as "WarGreymon" instead of "War Greymon".
* **`Always use 'Black' as prefix`**
The black variant of Agumon is technically called "Agumon (Black)" but with this option its name will be rendered as "BlackAgumon"
* **`Ogremon spelling`**
The undub patch will use the official "Orgemon" spelling by default, this option changes it to the widely used "Ogremon"
* **`Picklemon spelling`**
By default the undub patch will use the spelling "Piccolomon" but if you really like pickles you can enable this option and stick with the official spelling, "Picklemon"

The two last buttons should only be of interest if you are planning to create your own text editing presets:
* **`Export CSVs for current names`**
Exports the contents of the following files in the currently unpacked ROM into the `renamingPresets` directory:
* AccessoryNames.csv, CardNames1.csv, CardNames2.csv, CardSetNames.csv, CharacterNames.csv, DigimonNames.csv, FinisherNames.csv, GlossaryNames.csv, ItemNames.csv, KeyItemNames.csv, MedalNames.csv, NatureNames.csv, SkillNames.csv
* **`Export CSVs for built-in preset`**
Exports the CSV replacement files for the built-in undub preset into the `renamingPresets` directory, to make it easily usable as a base for custom patches.


## Patches
* Increased view distance
* Increased movement speed
* Increase skill learning chance from brains training
* Start with 5 MP Discs instead of Meat
* to help with running out of MP in the first fight
* add 19 previously unobtainable Digimon to the roster
## Name Randomization
This feature, which is disabled by default, is basically a silly tribute to the fact that this is forked from a randomizer tool.

The names of...
* Digimon
* Finisher
* Skills
* Characters
* Items
* Medals

Can be randomized, so you can have some silly playthrough where you never know which item actually does what and who is who.

Each category can be toggled separately.

## Known Issues / Caveats
Certain seed/settings combinations might be unplayable, for example if your starting move is too weak/expensive or if your Digimon is scaled too large to be able to hit.
Use another seed or disable the respective settings to solve this.
There are some parts of the replacement logic such as the functionality adjusting articles, that generally assume English grammar.

# Text Replacement Format
> [!NOTE]
This information is only relevant if you wish to create your own text replacement presets.
It also assumes assumes that you have already extracted the game's script data into CSV.

To create your own replacement patch simply create a folder in the same directory as the TextMod tool called `renamingPresets` containing replacement files provided in utf8 encoded csv files.

## Naming
Each file in the folder, [except for a number of special cases](#special-files), targets one of the game's script files based on its name, which is converted into a path:

`keep-15.csv` will target the file `Keep\languageKeep.res\btx_15.csv`.
`map-text-are_npc353_text-1` will target the file `map\text\are_npc353_text.pack\btx_1.csv`

... and so on.
## CSV Structure
The CSV structure in each file consists of the following columns:
`index;original;replace;excludeTerms;excludePaths`

If a value for the `index` column is provided, a *targeted replacment*, the entire line the index points to will be replaced with the content of the `replace` column. In this mode the 'original' column only serves a visual hint when creating the patch.

If the index is provided as `0`, a *general replacement*, all instances of the string in the `original` column are replaced with the string in the `replacement` column for that file.

The column `excludeTerms` is used to prevent the replacement of the `original` value in specific contexts.
For example, even though we want to replace the term "Champion" with "Adult" when it refers to the level of a Digimon, we do not want the line `"You're the Champion"` to become `"You're the Adult"`, so we add the exclusion term `"You're the $"` to our replacement definition; `$` is automatically substituted with the content of the `original` column.
Several excluded paths can be provided, separated by commas.
For example:

```csv
index;original;replace;excludeTerms;excludePaths
0;Champion;Adult;Colosseum $,You're the $;
```

The column `excludePaths` prevents the replacement in certain folders, files or specific lines in a file.
For example the following line will replace the term "Fresh" with "Baby I" except in line 4227 of btx_14 within LanguageKeep_jp.res:
`0;Fresh;Baby I;$ly;*\LanguageKeep_jp.res\14:4227`
Omitting `:4227` prevents any replacments in that file and `*\LanguageKeep_jp.res\*` prevents it for all files on that path. Multiple paths can be defined, separated by commas.

The special value `all` will exclude a replacement from the effect of the `replace terms in ALL text` toggle.

## Special Files
There are two special files, `_general.csv` and `_general_digimon.csv` which both do not target specific script files, but will simply replace the specified terms and replacements throughout the game.
The only difference between the two is that the contents of `_general_digimon.csv` are affected by Digimon name specific settings such as `camelCase names` and `Always use 'Black' as prefix`, see [editing Settings](#undubediting-settings).

# Planned Features
* more fine control for everything
* Global string randomization.

# Credits
* SydMontague for the DecodeTools and Decode Randomizer tools which this software is based on.
* A large number of replacements for the undub preset were taken from the non-dub translation patch for "Digimon World: Re:Digitize (PSP)"
* The rest were mostly compiled from Wikimon.

# Contact
* Discord: SydMontague#8056, or in either the [Digimon Modding Community](https://discord.gg/cb5AuxU6su) or [Digimon Discord Community](https://discord.gg/0VODO3ww0zghqOCO)
* Discord: Theigno#6256, or in either the [Digimon Modding Community](https://discord.gg/cb5AuxU6su) or [Digimon Discord Community](https://discord.gg/0VODO3ww0zghqOCO)
* directly on GitHub
* E-Mail: sydmontague@web.de
* Reddit: [/u/Sydmontague](https://reddit.com/u/sydmontague)
* E-Mail: yggdrasilwiz9000@yahoo.com
18 changes: 8 additions & 10 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.digimonworld</groupId>
<artifactId>decode-randomizer</artifactId>
<version>0.1.0-beta-preview5</version>
<artifactId>decode-textmod</artifactId>
<version>0.5.0</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down Expand Up @@ -68,7 +67,7 @@
<filtering>true</filtering>
</resource>
</resources>
<finalName>Decode-Randomizer</finalName>
<finalName>Decode-TextMod</finalName>

<plugins>

Expand All @@ -86,8 +85,8 @@
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.5</version>
<configuration>
<launcher>randomizer</launcher>
<mainClass>net.digimonworld.decode.decode_randomizer/net.digimonworld.decode.randomizer.Launcher</mainClass>
<launcher>textmod</launcher>
<mainClass>net.digimonworld.decode.decode_textmod/net.digimonworld.decode.textmod.Launcher</mainClass>
<compress>2</compress>
<noHeaderFiles>true</noHeaderFiles>
<noManPages>true</noManPages>
Expand All @@ -106,9 +105,8 @@
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>net.digimonworld.decode.randomizer.Launcher</mainClass>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>net.digimonworld.decode.textmod.Launcher</mainClass>
</transformer>
</transformers>
</configuration>
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
requires java.logging;
requires com.amihaiemil.eoyaml;

opens net.digimonworld.decode.randomizer to javafx.fxml;
exports net.digimonworld.decode.randomizer;
opens net.digimonworld.decode.textmod to javafx.fxml;
exports net.digimonworld.decode.textmod;
}

This file was deleted.

Loading