Code Modifications - Ich73/DQM2-FanTranslation GitHub Wiki
This page lists and explains all modifications to the code.bin
file.
Navigation:
- Dialogue Buffer
- Item Sack Buffer
- Main Character Names
- Text Input Screens Order
- Monster Nickname Length
- Key Name Buffer
- Location Name Box Width
- Hardcoded Texts
The original code only allows you to render up to ~60 characters of text in dialogue boxes.
To fix this the following modifications change the buffer address by 0x8000 bytes and set the buffer size to 0x800 (for 256 characters).
Address | Original Bytes | Edited Bytes | |
---|---|---|---|
v1.0 | v1.1 | ||
0x100E0 |
0x10770 |
00 10 A0 E1 08 10 85 E5 42 |
02 09 80 E2 02 6B A0 E3 41 |
With the original code the have value for items in the item sack changed if the itemname was 15 to 20 characters long.
If the name was longer than 21 characters the name itself was displayed incorrectly as well.
To fix this the following modifications change the buffer address so it doesn't overlap with the other buffers anymore.
Address | Original Bytes | Edited Bytes | |
---|---|---|---|
v1.0 | v1.1 | ||
0x498A50 |
0x49A1C4 |
08 10 8D E2 |
12 1C 4D E2 |
0x498A9C |
0x49A210 |
08 00 8D E2 |
12 0C 4D E2 |
0x498AA8 |
0x49A21C |
08 10 8D E2 |
12 1C 4D E2 |
The names for イル (Iru → Tara) and ルカ (Ruka/Luca → Cobi) are defined inside the code.
This affects a) the default name of the main character when starting a new adventure and b) the name shown when talking to the them.
To fix this the modifications in a) change the default name and the modifications in b) load the name from the position in a) instead of using the hardcoded names. So changing the names in a) will change the names for b) as well.
The names are encoded with the same table used for .binJ
and .e
files (see BinJ Editor/Decoding Tables).
Address | Original Bytes | Edited Bytes | Comment | |
---|---|---|---|---|
v1.0 | v1.1 | |||
0x56D0FC |
0x56E0CC |
A8 D7 00 00 00 00 ... |
20 27 38 27 00 00 ... |
イル (Iru) → Tara |
0x56D118 |
0x56E0E8 |
D7 B0 00 00 00 00 ... |
0F 35 28 2F 00 00 ... |
ルカ (Ruka/Luca) → Cobi |
Address | Original Bytes | Edited Bytes | ||
---|---|---|---|---|
v1.0 | v1.1 | v1.0 | v1.1 | |
0x20B80C |
0x20C7D8 |
04 10 8D E2 |
04 10 9D E5 |
|
0x20B814 |
0x20C7E0 |
0D 10 A0 E1 |
00 10 1D E5 |
|
0x20B860 |
0x20C82C |
A8 D7 E3 1B D7 B0 E3 1B |
FC D0 66 00 18 D1 66 00 |
CC E0 66 00 E8 E0 66 00 |
When entering the name for the player or a monster the order of the character sets favors the japanese characters.
The original order is: Hiragana, Katakana, Kanji 1, Kanji 2, Latin Uppercase, Latin Lowercase and Symbols.
The modifications change it to: Latin Uppercase, Latin Lowercase, Symbols, Hiragana, Katakana, Kanji 1 and Kanji 2.
To accomplish this a) changes the texts of the tabs on top, b) changes the texts of the special functions at the bottom and c) reorders all characters.
Address | Original Bytes | Edited Bytes | Comment | |
---|---|---|---|---|
v1.0 | v1.1 | |||
0x5D114D |
0x5D20ED |
30 30 |
30 33 |
Tab 00 (Hiragana) → Tab 03 (Latin Uppercase) |
0x5D1212 |
0x5D21B2 |
30 31 |
30 34 |
Tab 01 (Katakana) → Tab 04 (Latin Lowercase) |
0x5D12D7 |
0x5D2277 |
30 32 |
30 35 |
Tab 02 (Kanji 1) → Tab 05 (Symbols) |
0x5D139C |
0x5D233C |
30 33 |
30 36 |
Tab 03 (Kanji 2) → Tab 06 (Hiragana) |
0x5D1457 |
0x5D23F7 |
30 34 |
30 30 |
Tab 04 (Latin Uppercase) → Tab 00 (Katakana) |
0x5D1503 |
0x5D24A3 |
30 35 |
30 31 |
Tab 05 (Latin Lowercase) → Tab 01 (Kanji 1) |
0x5D15AF |
0x5D254F |
30 36 |
30 32 |
Tab 06 (Symbols) → Tab 02 (Kanji 2) |
Address | Original Bytes | Edited Bytes | Comment | |
---|---|---|---|---|
v1.0 | v1.1 | |||
0x176628 |
0x177618 |
00 40 A0 E3 0C 13 90 E5 08 23 90 E5 04 33 90 E5 10 03 90 E5 28 10 8D E5 24 20 8D E5 2C 00 8D E5 20 30 8D E5 50 00 95 E5 0D 10 A0 E1 04 00 90 E5 02 00 50 E3 02 00 A0 C3 |
C1 4F 80 E2 0F 00 94 E8 20 40 8D E2 0F 00 84 E8 00 40 A0 E3 50 00 95 E5 0D 10 A0 E1 04 00 90 E5 03 00 50 E3 02 00 A0 B3 00 00 A0 03 04 00 50 E3 02 00 A0 C3 01 00 A0 03 |
display Dakuten/Handakuten and Upper/Lower on new Hiragana and Katakana tabs |
0x177CBC |
0x178CAC |
00 00 50 E3 |
03 00 50 E3 |
move Dakuten/Handakuten function to new Hiragana tab |
0x177CC4 |
0x178CB4 |
01 00 50 E3 |
04 00 50 E3 |
move Dakuten/Handakuten function to new Katakana tab |
0x177D00 |
0x178CF0 |
00 00 50 E3 |
03 00 50 E3 |
move Upper/Lower function to new Hiragana tab |
0x177D08 |
0x178CF8 |
01 00 50 E3 |
04 00 50 E3 |
move Upper/Lower function to new Katakana tab |
Address | Original Bytes | |
---|---|---|
v1.0 | v1.1 | |
0x56B068 |
0x56C008 |
6F E3 1B 00 00 71 E3 1B ... |
Edited Bytes
0D E3 1B 00 00 17 E3 1B 00 00 21 E3 1B 00 00 45 E3 1B 00 00 4F E3 1B 00 00 0E E3 1B 00 00 18 E3 1B 00 00 22 E3 1B 00 00 46 E3 1B 00 00 50 E3 1B 00 00 0F E3 1B 00 00 19 E3 1B 00 00 23 E3 1B 00 00 47 E3 1B 00 00 51 E3 1B 00 00 10 E3 1B 00 00 1A E3 1B 00 00 24 E3 1B 00 00 48 E3 1B 00 00 52 E3 1B 00 00 11 E3 1B 00 00 1B E3 1B 00 00 25 E3 1B 00 00 49 E3 1B 00 00 53 E3 1B 00 00 12 E3 1B 00 00 1C E3 1B 00 00 26 E3 1B 00 00 4A E3 1B 00 00 0C E3 1B 00 00 13 E3 1B 00 00 1D E3 1B 00 00 41 E3 1B 00 00 4B E3 1B 00 00 54 E3 1B 00 00 14 E3 1B 00 00 1E E3 1B 00 00 42 E3 1B 00 00 4C E3 1B 00 00 55 E3 1B 00 00 15 E3 1B 00 00 1F E3 1B 00 00 43 E3 1B 00 00 4D E3 1B 00 00 56 E3 1B 00 00 16 E3 1B 00 00 20 E3 1B 00 00 44 E3 1B 00 00 4E E3 1B 00 00 57 E3 1B 00 00 27 E3 1B 00 00 31 E3 1B 00 00 3B E3 1B 00 00 5C E3 1B 00 00 66 E3 1B 00 00 28 E3 1B 00 00 32 E3 1B 00 00 3C E3 1B 00 00 5D E3 1B 00 00 67 E3 1B 00 00 29 E3 1B 00 00 33 E3 1B 00 00 3D E3 1B 00 00 5E E3 1B 00 00 68 E3 1B 00 00 2A E3 1B 00 00 34 E3 1B 00 00 3E E3 1B 00 00 5F E3 1B 00 00 69 E3 1B 00 00 2B E3 1B 00 00 35 E3 1B 00 00 3F E3 1B 00 00 60 E3 1B 00 00 6A E3 1B 00 00 2C E3 1B 00 00 36 E3 1B 00 00 40 E3 1B 00 00 61 E3 1B 00 00 E1 04 E3 1B 00 2D E3 1B 00 00 37 E3 1B 00 00 58 E3 1B 00 00 62 E3 1B 00 00 6B E3 1B 00 00 2E E3 1B 00 00 38 E3 1B 00 00 59 E3 1B 00 00 63 E3 1B 00 00 6C E3 1B 00 00 2F E3 1B 00 00 39 E3 1B 00 00 5A E3 1B 00 00 64 E3 1B 00 00 6D E3 1B 00 00 30 E3 1B 00 00 3A E3 1B 00 00 5B E3 1B 00 00 65 E3 1B 00 00 6E E3 1B 00 00 01 E3 1B 00 00 E1 21 E3 1B 00 E1 3B E3 1B 00 E1 07 E3 1B 00 E1 1D E3 1B 00 02 E3 1B 00 00 E1 22 E3 1B 00 E1 45 E3 1B 00 E1 08 E3 1B 00 E1 32 E3 1B 00 03 E3 1B 00 00 E1 23 E3 1B 00 E1 3F E3 1B 00 E1 03 E3 1B 00 E1 34 E3 1B 00 04 E3 1B 00 00 E1 24 E3 1B 00 E1 3E E3 1B 00 E1 02 E3 1B 00 E1 10 E3 1B 00 05 E3 1B 00 00 E1 25 E3 1B 00 E1 26 E3 1B 00 E1 0A E3 1B 00 E1 33 E3 1B 00 06 E3 1B 00 00 E1 1B E3 1B 00 E1 4D E3 1B 00 E1 0B E3 1B 00 E1 51 E3 1B 00 07 E3 1B 00 00 E1 28 E3 1B 00 E1 4C E3 1B 00 E1 0C E3 1B 00 E1 5B E3 1B 00 08 E3 1B 00 00 E1 3D E3 1B 00 E1 68 E3 1B 00 E1 0D E3 1B 00 0C E3 1B 00 00 09 E3 1B 00 00 E1 1C E3 1B 00 E1 69 E3 1B 00 E1 48 E3 1B 00 0C E3 1B 00 00 0A E3 1B 00 00 E1 09 E3 1B 00 E1 19 E3 1B 00 E1 49 E3 1B 00 0C E3 1B 00 00 6F E3 1B 00 00 71 E3 1B 00 00 73 E3 1B 00 00 75 E3 1B 00 00 77 E3 1B 00 00 79 E3 1B 00 00 7A E3 1B 00 00 7B E3 1B 00 00 7C E3 1B 00 00 7D E3 1B 00 00 7E E3 1B 00 00 7F E3 1B 00 00 80 E3 1B 00 00 81 E3 1B 00 00 82 E3 1B 00 00 83 E3 1B 00 00 84 E3 1B 00 00 85 E3 1B 00 00 87 E3 1B 00 00 88 E3 1B 00 00 89 E3 1B 00 00 8A E3 1B 00 00 8B E3 1B 00 00 8C E3 1B 00 00 8D E3 1B 00 00 8E E3 1B 00 00 8F E3 1B 00 00 90 E3 1B 00 00 91 E3 1B 00 00 92 E3 1B 00 00 93 E3 1B 00 00 94 E3 1B 00 00 95 E3 1B 00 00 96 E3 1B 00 00 97 E3 1B 00 00 98 E3 1B 00 00 9A E3 1B 00 00 9C E3 1B 00 00 E1 52 E3 1B 00 0C E3 1B 00 00 9E E3 1B 00 00 9F E3 1B 00 00 A0 E3 1B 00 00 A1 E3 1B 00 00 A2 E3 1B 00 00 A3 E3 1B 00 00 A4 E3 1B 00 00 A5 E3 1B 00 00 E1 50 E3 1B 00 E1 47 E3 1B 00 A6 E3 1B 00 00 A8 E3 1B 00 00 AA E3 1B 00 00 AC E3 1B 00 00 AE E3 1B 00 00 B0 E3 1B 00 00 B1 E3 1B 00 00 B2 E3 1B 00 00 B3 E3 1B 00 00 B4 E3 1B 00 00 B5 E3 1B 00 00 B6 E3 1B 00 00 B7 E3 1B 00 00 B8 E3 1B 00 00 B9 E3 1B 00 00 BA E3 1B 00 00 BB E3 1B 00 00 BC E3 1B 00 00 BE E3 1B 00 00 BF E3 1B 00 00 C0 E3 1B 00 00 C1 E3 1B 00 00 C2 E3 1B 00 00 C3 E3 1B 00 00 C4 E3 1B 00 00 C5 E3 1B 00 00 C6 E3 1B 00 00 C7 E3 1B 00 00 C8 E3 1B 00 00 C9 E3 1B 00 00 CA E3 1B 00 00 CB E3 1B 00 00 CC E3 1B 00 00 CD E3 1B 00 00 CE E3 1B 00 00 CF E3 1B 00 00 D1 E3 1B 00 00 D3 E3 1B 00 00 E1 52 E3 1B 00 0C E3 1B 00 00 D5 E3 1B 00 00 D6 E3 1B 00 00 D7 E3 1B 00 00 D8 E3 1B 00 00 D9 E3 1B 00 00 DA E3 1B 00 00 DB E3 1B 00 00 DC E3 1B 00 00 E1 50 E3 1B 00 E1 47 E3 1B 00 E4 61 1B E3 1B E4 4F 1A E3 1B E4 5D E8 E3 1B E4 51 49 E3 1B E4 5E 2B E3 1B E4 60 AA E3 1B E4 75 4C E3 1B E4 65 59 E3 1B E4 9A D8 E3 1B E4 8E CA E3 1B E4 66 97 E3 1B E4 56 DE E3 1B E4 5F 37 E3 1B E4 9E D2 E3 1B E4 82 E5 E3 1B E4 53 F3 E3 1B E4 4E 38 E3 1B E4 69 75 E3 1B E4 5D E6 E3 1B E4 62 4B E3 1B E4 96 E8 E3 1B E4 77 3C E3 1B E4 7A 7A E3 1B E4 67 00 E3 1B E4 5B 88 E3 1B E4 70 8E E3 1B E4 9A 0E E3 1B E4 8E CD E3 1B E4 4F 5C E3 1B E4 73 63 E3 1B E4 73 8B E3 1B E4 9B 3C E3 1B E4 64 83 E3 1B E4 65 AC E3 1B E4 76 FE E3 1B E4 70 6B E3 1B E4 62 80 E3 1B E4 52 63 E3 1B E4 58 EB E3 1B E4 66 F8 E3 1B E4 6D 77 E3 1B E4 5B AE E3 1B E4 65 3B E3 1B E4 4F 7F E3 1B E4 5C 06 E3 1B E4 60 2A E3 1B E4 7A 76 E3 1B E4 76 87 E3 1B E4 6B 7B E3 1B E4 5C 11 E3 1B E4 79 5E E3 1B E4 82 39 E3 1B E4 95 77 E3 1B E4 99 AC E3 1B E4 97 27 E3 1B E4 5F C3 E3 1B E4 51 68 E3 1B E4 9C E5 E3 1B E4 76 7D E3 1B E4 54 0D E3 1B E4 4E BA E3 1B E4 7B B1 E3 1B E4 5E 1D E3 1B E4 76 7A E3 1B E4 51 A5 E3 1B E4 54 39 E3 1B E4 66 F9 E3 1B E4 59 29 E3 1B E4 50 99 E3 1B E4 65 87 E3 1B E4 6C 34 E3 1B E4 61 8E E3 1B E4 95 D8 E3 1B E4 75 C5 E3 1B E4 52 C7 E3 1B E4 80 56 E3 1B E4 60 6F E3 1B E4 90 53 E3 1B E4 5C 01 E3 1B E4 7F FC E3 1B E4 8D 64 E3 1B E4 65 CF E3 1B E4 72 79 E3 1B E4 5F A9 E3 1B E4 52 9B E3 1B E4 96 EA E3 1B E4 4F 53 E3 1B E4 5F CD E3 1B E4 67 1B E3 1B E4 7A DC E3 1B E4 7D 76 E3 1B E4 59 27 E3 1B E4 5E 74 E3 1B E4 67 28 E3 1B E4 88 C2 E3 1B E4 62 26 E3 1B E4 57 30 E3 1B E4 78 34 E3 1B E4 9B 54 E3 1B E4 80 01 E3 1B
When scouting a monster only the first two characters of the it's name get entered as the nickname.
The following modification change the amount of entered characters to zero. So you can directly start entering a nickname or you click OK to add the monster species as the nickname.
Address | Original Bytes | Edited Bytes | |
---|---|---|---|
v1.0 | v1.1 | ||
0x177960 |
0x178950 |
0C 00 00 0A |
0C 00 00 EA |
0x177A24 |
0x178A14 |
02 00 56 E3 |
00 00 56 E3 |
When entering a key world of a custom made key the game crashes if the combined key name is longer than 32 characters.
The following modifications solve that problem by increasing the buffer size.
Address | Original Bytes | Edited Bytes | |
---|---|---|---|
v1.0 | v1.1 | ||
0x2EE80 |
0x2F430 |
01 B0 A0 E1 |
81 B0 A0 E1 |
0x2EF80 |
0x2F530 |
0B 10 A0 E1 B8 9F C5 E1 |
03 10 C9 E3 B8 1F C5 E1 |
0x172900 |
0x1738F0 |
00 80 8D E5 04 80 8D E5 08 80 8D E5 0C 80 8D E5 10 80 8D E5 14 80 8D E5 18 80 8D E5 1C 80 8D E5 20 80 8D E5 24 80 8D E5 28 80 8D E5 2C 80 8D E5 30 80 8D E5 34 80 8D E5 38 80 8D E5 3C 80 8D E5 |
CE CE 4D E2 0C 30 A0 E1 00 20 A0 E3 00 80 8C E5 04 C0 8C E2 02 20 82 E2 40 00 52 E3 FA FF FF 1A 00 C0 A0 E3 00 20 A0 E3 00 F0 20 E3 00 F0 20 E3 00 F0 20 E3 00 F0 20 E3 00 F0 20 E3 00 F0 20 E3 |
0x172960 |
0x173950 |
00 00 50 E3 |
00 F0 20 E3 |
0x172968 |
0x173958 |
1C 00 00 0A |
1C 00 00 EA |
0x1729E8 |
0x1739D8 |
00 00 50 E3 |
00 F0 20 E3 |
0x1729F0 |
0x1739E0 |
07 00 00 0A |
07 00 00 EA |
0x172A18 |
0x173A08 |
0D 10 A0 E1 |
CE 1E 4D E2 |
0x172A28 |
0x173A18 |
0D 10 A0 E1 |
CE 1E 4D E2 |
The width of the box displaying the location name on the bottom screen is calculated depending on the length of the name. But because it is designed to work with much wider japanese characters, the box is too wide for non-japanese names.
To fix this the following modification changes the calculation for the box width.
Address | Original Bytes | Edited Bytes | |
---|---|---|---|
v1.0 | v1.1 | ||
0x14A384 |
0x14B244 |
00 10 90 E5 08 10 91 E5 31 FF 2F E1 02 10 86 E2 91 00 00 E0 01 00 10 E3 01 00 80 12 |
06 10 A0 E3 91 06 00 E0 10 00 80 E2 3E 00 50 E3 3E 00 A0 D3 01 60 00 E2 06 00 80 E0 |
Some texts displayed in game are not stored in romfs files but are directly stored inside the code.
The modifications in a) change the addresses used to read the texts while the modifications in b) store the translated texts to be used.
Address | Original Bytes | Edited Bytes | Comment | |||
---|---|---|---|---|---|---|
v1.0 | v1.1 | v1.0 | v1.1 | v1.0 | v1.1 | |
0x2A7CD8 |
0x2A8CB8 |
B5 2F 8F E2 |
D4 22 9F E5 |
1. | ||
0x5EA000 |
0x2A8F94 |
B9 30 AD 30 EB 30 8F 30 8A 30 75 30 8A 30 00 00 |
00 A0 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 |
20 B0 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 |
2. | |
0x2882B8 |
0x289298 |
A8 65 66 00 |
48 75 66 00 |
50 A0 6E 00 |
70 B0 6E 00 |
3. |
0x288944 |
0x289924 |
|||||
0x288FE4 |
0x289FC4 |
|||||
0x2892FC |
0x28A2DC |
Comments:
- read address stored at japanese "Allocate Skill Points" text instead of reading text directly
- replace japanese "Allocate Skill Points" text with translation address
- change "Remaining" address
Address |
EN English |
DE German |
FR French |
||||
---|---|---|---|---|---|---|---|
v1.0 | v1.1 | Edited Bytes | Text | Edited Bytes | Text | Edited Bytes | Text |
0x5EA000 |
0x5EB020 |
41 00 6C 00 6C 00 6F 00 63 00 61 00 74 00 65 00 20 00 53 00 6B 00 69 00 6C 00 6C 00 20 00 50 00 6F 00 69 00 6E 00 74 00 73 00 00 00 |
Allocate Skill Points |
54 00 61 00 6C 00 65 00 6E 00 74 00 7A 00 75 00 77 00 65 00 69 00 73 00 75 00 6E 00 67 00 00 00 |
Talentzuweisung |
41 00 74 00 74 00 72 00 69 00 62 00 75 00 74 00 69 00 6F 00 6E 00 20 00 64 00 65 00 73 00 20 00 74 00 61 00 6C 00 65 00 6E 00 74 00 73 00 00 00 |
Attribution des talents |
0x5EA050 |
0x5EB070 |
52 00 65 00 6D 00 61 00 69 00 6E 00 69 00 6E 00 67 00 3A 00 20 00 25 00 64 00 00 00 |
Remaining: %d |
4E 00 6F 00 63 00 68 00 20 00 25 00 64 00 00 00 |
Noch %d |
52 00 65 00 73 00 74 00 61 00 6E 00 74 00 3A 00 20 00 25 00 64 00 00 00 |
Restant: %d |