- Introduction
- The English patch file
Translations
Special characters
Variables
Menus - Know bugs / Improvements
Fixes
Missing translations
Screenshots
BPS Patcher - Tips and Hints
Scenario mode
Locations
Special chests
Dokapon Ring
Sky Palace
Quizz
This project is a Java program that generates a translation file (.bps) for the Super Famicom video game
Dokapon 3-2-1: Arashi o Yobu Yuujou (ドカポン3・2・1 〜嵐を呼ぶ友情〜) released in 1994.
This is a work in progress
Feel free to fork it, share it, improve it.
You're welcome to report any bugs or issues
Dokapon 3-2-1 is the second Dokapon game for the Super Famicom. Like its predecessor, it follows a group of ragtag RPG heroes across a board game-like map as they attempt to outmaneuver each other and be the first to save the kingdom. Characters move around determinant on dice rolls and can acquire items and treasure depending on where they land. They can also get into fights with random monsters to gain experience points and increase their stats, though being defeated will cause them to lose a turn.
A remake for the Wii and PS2 was released in 2008.
Patch file v1.4 is available here : Dokapon 3-2-1 English v1.4.zip
New wiki: https://github.com/Krokodyl/dokapon-english/wiki
Patch v1.3 : Dokapon 3-2-1 English v1.3.zip
Patch v1.2 : Dokapon 3-2-1 English v1.2.zip
Also available on romhacking.net https://www.romhacking.net/translations/5561/
It applies to the following ROM :
File: Dokapon 3-2-1 - Arashi o Yobu Yuujou (Japan)
No-Intro: Super Nintendo Entertainment System (v. 20180813-062835)
ROM SHA-1: 9343CA8D3161DEA847E0369A4A91CD7F8DC2D3AE
ROM CRC32: FC353400
Japanese rom size : 1.5 Mb (1 572 864 bytes)
Patched rom size : 2.0 Mb (2 097 152 bytes)
Japanese | English |
---|---|
- git
- Java 7 or above
- Maven
- The original japanese ROM of the game (not provided here)
-
git clone dokapon-gen
-
Edit src/main/resources/config.json with the location of the ROM
"config": {
"rom-input" : "../roms/Dokapon 3-2-1 - Arashi wo Yobu Yujo (J).smc",
"rom-output" : "../roms/Dokapon 3-2-1 - English.smc",
"bps-patch-output": "../roms/Dokapon 3-2-1 - English.bps",
"file.jap" : "tables/table-complete.txt",
"file.latin" : "tables/table-latin.txt",
"file.names" : "tables/table-names.txt"
}
-
Copy the ROM in the folder you defined in "rom-input" (by default ../roms)
-
Compile
dokapon-gen git:(master) ✗ mvn clean install
- Execute
dokapon-gen git:(master) ✗ java -jar ./target/Dokapon-1.0-jar-with-dependencies.jar
Loading config
rom-input=../roms/Dokapon 3-2-1 - Arashi wo Yobu Yujo (J).smc
rom-output=../roms/Dokapon 3-2-1 - English.smc
bps-patch-output=../roms/Dokapon 3-2-1 - English.bps
Saving rom-output...
Saving bps-patch-output...
Process complete
Many translations are inspired by the Wii remake from 2008. Such as the character names, the items and magic names, the chapter titles, etc.
The town names, unlike in the Wii version, are actual city names. But because the city names in Japanese fit on 4 characters, I added two-letter characters in order to be able to write 8-letter city names. The city names that were longer than 8 letters are replaced with shorter names from other actual cities of the same area.
The two-letter characters are also used for some of the equipment names but due to the way the characters are encoded in the game, there's only so many that can be used.
Japanese | English |
---|---|
The translations are split into 6 files (matching the 6 data banks of the rom). For practical reasons, there's no table 3.
File | Translations | Comment |
---|---|---|
Table 1 | 131 | |
Table 2 | 139 | Contains menus |
Table 4 | 256 | |
Table 5 | 208 | |
Table 6 | 20 | Contains all the names (items, magic, towns, monsters etc.) |
Table 7 | 418 |
OFFSET=15066
VALUE=f590(90f5)
OFFSETDATA=17590
DATA=8000 4c00 4f00 9600 0700 0200 1e00 2c00 0200 2200 1400 b900 0030 2400 1c00 4400 4a00 7401 1400 0600 4e01 4b00 2200 8101 1000 0200 b400 ffff
JAP=ファイルがいっぱいです!{NL}どちらを消すか選んで下さい.{EL}
ENG=No empty save file!{NL}Please choose one to erase.{EL}
- The characters between {} are not printed in game, unless they match a special code.
- A translation must always end with {EL} (EL for End of Line)
- A translation must be segmented by line breaks with {NL} (NL for New Line).
- A segment cannot be longer than 30 printed characters.
- Table 6 doesn't use {EL} because the names have a fixed size (8 for the items, 8 for the armor/weapons/shields including the icon, 6 for the castles, 9 for the continents, etc.)
Special code | In game |
---|---|
{NL} | Line break |
{EL} | End of line |
{CW} | Set text color to white (default) |
{CR} | Set text color to red |
{CY} | Set text color to yellow |
{CG} | Set text color to green |
{CB} | Set text color to blue |
{SHIELD} | Shield icon |
{WEAP} | Weapon icon |
{ARMOR} | Weapon icon |
{BUT} | Button icon |
Many translations contain variables (player name, gold amount, health points etc) which are usually represented by two codes (e.g. {8014 5985} is current player name) These are 2-character long in the data but can go from 2 (monster level) to 9 (gold amount) printed characters. These codes are listed (not all) under "special" in config.json and used to calculate the length of a given translation to make sure they don't go over 30 printed characters. This list is not exhaustive. It can be shown when calling DataReader.collectSpecialChars from the main class.
Table 2 contains menus. Each entry has an extra field MENUDATA
MENUDATA=1107 0d05
ENG=Resume{NL}Scenario mode{NL}Normal mode{NL}Battle Royale{NL}Quizz{EL}
MENUDATA represents the coordinates (x,y) and the dimensions (width,height) of the menu. 1107 0d05 means the menu is at 16,7 with width 13 and height 5 The top left coordinates 0,0. The width unit is a character width. (Screen width is 30) The height unit is half a character height. (Screen height is 25)
I wrote a function DataReader.checkMenuData to check if a menu is out of bound but it needs testing.
- Yes/No questions are sometimes hidden under the Yes/No menu
v1.4 (January 2023)
- New wiki for the translated game: https://github.com/Krokodyl/dokapon-english/wiki/
- Better compression algorithm
- Translations rewritten (about 200)
- Renamed Magic (to match the visuals): Blaze, Shock, Frost, Rust, Berserk, Seize, Bounce, Mirror
- Renamed Items: Detector
- Fixed many menus where Yes/No was overlapping text
- Updated fonts
- Fixed "ghost" values next to the continent names in the town list
- Side-by-side comparison shows that the long AI decision-making is inherent to the game. (The worst situation is an AI using spinners when Asia, Europe, NA, Africa and Greenland are all open) This is due to the path finding algorithm.
v1.3 (March 2022)
- Improvement : Translated the quote after the logo
- Improvement : Translated the introduction texts
- Improvement : Translated the town names on the map
- Fix : Move the AI menu to the left to show full words instead of Wea, Nor, Har
- Fix : When using Look on a square with 2 or more characters, only shows 1st char.
- Changes :
- Dakar -> Bamako
- Bamako -> Niamey
- Ciuaba -> Manaus
- Lynton -> Auckland
- Weak AI -> Easy AI
v1.2 (February 2022)
- Fixed the ranking table for 3 and 4 players
- In the menus, differentiate Towns and Castles
- Fixed menu size when talking with Risque
- Bug on menu after a player escapes another player
- Text too long when using a revival after a loss
- Text correction in the casino.
- Translation for MOSK8: Sap (Gremlin skill that reduces the target's magic count)
- Translation for MOSK2: Steal (Gnome skill that takes 25% of the target's gold)
- Translation for Item8: Doka.Orb
- Translation for MOSK11: Twister (かまいたち Kamaitachi, a wind yokai)
v1.1 (April 2021)
- Bad translation: "Who will play together"
- Typo: "Knifes"
- Bug on the Kill Race starting level
- Menu after a player kill is not wide enough
- Bug on the rename screen (after a player kill)
The whole game is translated.
Japanese | English |
---|---|
I could not find an open-source Java BPS patch generator so I made one.
It's under /dokapon-gen/src/main/java/dokapon/bps
It's still experimental and is not very well optimized but it seems to work.
See wiki: https://github.com/Krokodyl/dokapon-english/wiki/Game-modes#story-mode
Special location | Access |
---|---|
Spring Cave | Asia |
Casino Cave | Europe |
Lava Cave | North America |
Lost Forest | North America South America |
Freaky Mountain | South America |
Sea Temple | South America |
Ruins | Africa |
Underground Passage | Africa Australia |
Rabble Tower | Australia |
Sky Palace | Freaky Mountain (requires Wings) |
Hell Devil's Castle |
Last chapter in scenario mode |
See wiki: https://github.com/Krokodyl/dokapon-english/wiki/Spaces#special-chests
Taking the three rings (Onyx Ring, Ruby Ring and Jade Ring) to the castle will merge them into one ring (Dokapon Ring). AFAIK, the Dokapon Ring only has the combine effects of the three rings but it only uses one inventory slot.
Beating Rico Jr. (random spawn in some dungeons, or fixed spawn in story mode) will give you the item [Wings]. Going to the top of the Freaky Mountain (in South America), with the Wings will take you to the Sky Palace. The Sky Palace is a place with many blue, yellow and white chests and one special chest.
See wiki: https://github.com/Krokodyl/dokapon-english/wiki/Game-modes#quiz
Hidden message
In the middle of the South Atlantic ocean, there's a tree on an island. Examine it for the credit roll of the dev team.