Code Modifications - Ich73/DQM2-FanTranslation GitHub Wiki

This page lists and explains all modifications to the code.bin file.

Navigation:

  1. Dialogue Buffer
  2. Item Sack Buffer
  3. Main Character Names
  4. Text Input Screens Order
  5. Monster Nickname Length
  6. Key Name Buffer
  7. Location Name Box Width
  8. Hardcoded Texts

Dialogue Buffer

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

Item Sack Buffer

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

Main Character Names

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.

a) Default Name

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

b) Dialogue Name

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

Text Input Screens Order

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.

a) Tab Texts

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)

b) Function Texts

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

c) Characters

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

Monster Nickname Length

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

Key Name Buffer

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

Location Name Box Width

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

Hardcoded Texts

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.

a) Text Addresses

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:

  1. read address stored at japanese "Allocate Skill Points" text instead of reading text directly
  2. replace japanese "Allocate Skill Points" text with translation address
  3. change "Remaining" address

b) Translations

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
⚠️ **GitHub.com Fallback** ⚠️