- Joined
- Sep 25, 2024
- Messages
- 40
- Level up in
- 60 posts
- Reaction score
- 199
- Points
- 1,377
Reverse engineering game data & extracting Japanese text from binaries 
I build Python scripts to parse, validate, and reinsert text while respecting strict byte limits, offsets, and control codes.
Focused on low-level file structures, encodings (Shift-JIS / UTF-16), and stable data reintegration.
(Python is required to use my tools)
Strict byte limits matter: exceeding (xx bytes) breaks offsets, pointers, and can crash the game. (Applies to ALL scripts)[Memory Structure Example]
OFFSET: 0x0010
SIZE: (20 bytes)
[Original Data]
48 65 6C 6C 6F 20 4A 50 00 00 XX XX XX XX XX XX XX XX XX XX
"Hello JP"
✔ OK → fits within 20 bytes
[Modified Data]
48 65 6C 6C 6F 20 4A 61 70 61 6E 65 73 65 20 54 65 78 74 21 00 00
"Hello Japanese Text!"
ERROR → exceeds 20 bytes[What happens if overflow?]
➡ Overwrites next data block
➡ Breaks pointer alignment
➡ Corrupts file structure
➡
Game crashRule:
ALWAYS keep text ≤ (xx bytes)
Pad with 00 if shorter
SCRIPT SECTION
PS2:
Gantz The Game (Japan)
What you will find:
- Script: extract_ps2_Gantz.py
- Output: extracted_gantz_all.txt
[DIALOG01.BIN|0x90eb0] (31 bytes) KURONO_P11_0000:(今…何時だろう…)(00)
[DIALOG01.BIN|0x91000] (63 bytes) KURONO_P11_0003:(そうだ… 元はといえば全部 コイツのせいなんだ)(00)
[DIALOG01.BIN|0x91050] (47 bytes) KURONO_P11_0004:(あの時…コイツが 余計なことしなけりゃ…)(00)
[DIALOG01.BIN|0x910a0] (63 bytes) KURONO_P11_0005:(ガッコウから帰る途中、 地下鉄の駅にコイツがいたんだ)(00)
3)extracted_gantz_all_translated.txt (EXEMPLE)
[DIALOG01.BIN|0x90eb0] (31 bytes) KURONO_P11_0000:(in Japanese history) Now.....(00)
[DIALOG01.BIN|0x91000] (63 bytes) KURONO_P11_0003:(Yes... It's all his fault.)(00)
[DIALOG01.BIN|0x91050] (47 bytes) KURONO_P11_0004:(At that time... If he hadn't done something..(00)
[DIALOG01.BIN|0x910a0] (63 bytes) KURONO_P11_0005:(I was on my way back from Gakko and saw this guy at the sub..(00)
[DIALOG01.BIN|0x91000] (63 bytes) KURONO_P11_0003:(そうだ… 元はといえば全部 コイツのせいなんだ)(00)
[DIALOG01.BIN|0x91050] (47 bytes) KURONO_P11_0004:(あの時…コイツが 余計なことしなけりゃ…)(00)
[DIALOG01.BIN|0x910a0] (63 bytes) KURONO_P11_0005:(ガッコウから帰る途中、 地下鉄の駅にコイツがいたんだ)(00)
3)extracted_gantz_all_translated.txt (EXEMPLE)
[DIALOG01.BIN|0x90eb0] (31 bytes) KURONO_P11_0000:(in Japanese history) Now.....(00)
[DIALOG01.BIN|0x91000] (63 bytes) KURONO_P11_0003:(Yes... It's all his fault.)(00)
[DIALOG01.BIN|0x91050] (47 bytes) KURONO_P11_0004:(At that time... If he hadn't done something..(00)
[DIALOG01.BIN|0x910a0] (63 bytes) KURONO_P11_0005:(I was on my way back from Gakko and saw this guy at the sub..(00)
- Translated file (example): extracted_gantz_all_translated.txt
- Script: inject_ps2_Gantz.py
➡ Generates new DIALOG01.BIN
➡ Place in: \Gantz The Game (Japan)\OVL
➡ Rebuild ISO with ImgBurn ✔
PS2:
Elvandia Story (Japan)
What you will find:
➡ Place in: \Gantz The Game (Japan)\OVL
➡ Rebuild ISO with ImgBurn ✔
PS2:
Elvandia Story (Japan)
What you will find:
- Script: extract_ps2.py
- Output: extracted_DMAP.txt
[0x2E4128E1] (71 bytes) 「ごめん、ごめん、みんながこんなに集まってくれてるとは思わなかったよ」(0000)
[0x2E412A91] (65 bytes) 「そうだよな、親友のオレに会えない位だからよっぽどのことだよな」(0000)
[0x2E412C0E] (42 bytes) 「これ、アシュレイをからかうものではない」(0000)
[0x2E412CAB] (30 bytes) 「お久しぶりです。ワイツ先生」(0000)
[0x2E412E4A] (45 bytes) 「元気そうだな、宮殿の勤めも順調のようだな」(0000
3)extracted_dmap_translated.txt(EXEMPLE)
[0x2E4127CA] (49 bytes) "It's finally time for the main role hero!! "(0000)
[0x2E4128E1] (71 bytes) "I didn't think you'd all be here".(0000)
[0x2E412A91] (65 bytes) "It's not like you can't see your best friend anymore".(0000)
[0x2E412C0E] (42 bytes) "This is not a story about a girl".(0000)
[0x2E412CAB] (30 bytes) "It's been a long time, Mr...(0000)
[0x2E412A91] (65 bytes) 「そうだよな、親友のオレに会えない位だからよっぽどのことだよな」(0000)
[0x2E412C0E] (42 bytes) 「これ、アシュレイをからかうものではない」(0000)
[0x2E412CAB] (30 bytes) 「お久しぶりです。ワイツ先生」(0000)
[0x2E412E4A] (45 bytes) 「元気そうだな、宮殿の勤めも順調のようだな」(0000
3)extracted_dmap_translated.txt(EXEMPLE)
[0x2E4127CA] (49 bytes) "It's finally time for the main role hero!! "(0000)
[0x2E4128E1] (71 bytes) "I didn't think you'd all be here".(0000)
[0x2E412A91] (65 bytes) "It's not like you can't see your best friend anymore".(0000)
[0x2E412C0E] (42 bytes) "This is not a story about a girl".(0000)
[0x2E412CAB] (30 bytes) "It's been a long time, Mr...(0000)
- Translated file (example): extracted_dmap_translated.txt
- Script: inject_ps2.py
➡ Generates new DMAP.DAT
➡ Place in: Elvandia Story (Japan)\DATA
➡ Rebuild ISO ✔
PS2:
Venus & Braves (Japan)
What you will find:
➡ Place in: Elvandia Story (Japan)\DATA
➡ Rebuild ISO ✔
PS2:
Venus & Braves (Japan)
What you will find:
- Script: venus_braves_tool.py (mode 1 = extract)
- Output: pg_strings.txt
- Script: venus_braves_tool.py (mode 2 = inject)
[0x03B1D53B] (109 bytes)
JP: %m%時はアクラル正暦999年。
%m%ウェル=バリウスの予言によればこの年、
%m%世にも禍々しき魔物が現れるという。
EN: The time is 999 A.D. According to the prophecy of Wald=Varius, this year, the world will see the appearance
[0x03B1D5A9] (125 bytes)
JP: %m%しかし、1年も残すところあとわずかとなり
%m%街の人々は紙に書かれた魔物の心配よりも
%m%暮れの現実的な忙しさにかまけていた。
EN: But as the year drew to a close, the people of the city were more concerned with the reality of the evening than with the
[0x03B1D627] (119 bytes)
JP: %m%なにしろ……明けて1000年には、
%m%新しい時代の訪れを祝い、街をあげての
%m%千年祭が催されることになっていたのだ。
EN: After all, in the year 1000, the city was to celebrate the arrival of a new era and the millennium.
4)Script venus_braves_tool.py use 2
this will create a new cdimage.bin put on Venus and Braves\image
rebuild iso with imgburn voila!
-----------------------------------
PSP:
Twelve Sengoku Fuushinden
What you will find:
- Script: 1-Extract.py
- Output: twelve_dialogue.txt
[0x2e746d] (145 bytes) ──かつて 精霊と人々が 共に住まう時代があり それは神代と呼ばれた…… (0000)
[0x2e7505] (203 bytes) だが ある時現れた魔神との戦いにより 大地は一度水に没して洗われ 魔神は地の底に封じられたものの 精霊の多くは疲弊して野に隠れたという (0000)
[0x2e75da] (113 bytes) これは そんな昔の話が言い伝えとなった頃の 人の時代のお話…… (0000)
[0x2e76ac] (4 bytes) Nar(0000)
[0x2e76b4] (59 bytes) Now!--The Sengoku era is here.Yamato, land of the seal!(0000)
[0x2e7700] (127 bytes) かつては東家と西家の東西合戦{とうざいがっせん}、 そして続く南北朝戦争を経たこの島国は、 今や戦国の時代となったのであります! (0000)
3)twelve_dialogue.txt (EXEMPLE)
[0x2e746d] (145 bytes) Once upon a time, there was a time when spirits and men lived together, and it was called the Age of the Gods.(0000)
[0x2e7505] (203 bytes) But when a battle with the demons came, the earth was once washed by water, and the demons were sealed in the earth, but many spirits were weary and hid in the fields.(0000)
[0x2e75da] (113 bytes) This is the story of a time long ago when people were told stories...(0000)
[0x2e76ac] (4 bytes) Nar(0000)
[0x2e76b4] (59 bytes) Now! - The Sengoku era is here. Yamato, land of the seal!(0000)
[0x2e7700] (127 bytes) This island nation, which once was the home of the East and West, and the home of the South and the North, and the home of t..(0000)
[0x2e7505] (203 bytes) だが ある時現れた魔神との戦いにより 大地は一度水に没して洗われ 魔神は地の底に封じられたものの 精霊の多くは疲弊して野に隠れたという (0000)
[0x2e75da] (113 bytes) これは そんな昔の話が言い伝えとなった頃の 人の時代のお話…… (0000)
[0x2e76ac] (4 bytes) Nar(0000)
[0x2e76b4] (59 bytes) Now!--The Sengoku era is here.Yamato, land of the seal!(0000)
[0x2e7700] (127 bytes) かつては東家と西家の東西合戦{とうざいがっせん}、 そして続く南北朝戦争を経たこの島国は、 今や戦国の時代となったのであります! (0000)
3)twelve_dialogue.txt (EXEMPLE)
[0x2e746d] (145 bytes) Once upon a time, there was a time when spirits and men lived together, and it was called the Age of the Gods.(0000)
[0x2e7505] (203 bytes) But when a battle with the demons came, the earth was once washed by water, and the demons were sealed in the earth, but many spirits were weary and hid in the fields.(0000)
[0x2e75da] (113 bytes) This is the story of a time long ago when people were told stories...(0000)
[0x2e76ac] (4 bytes) Nar(0000)
[0x2e76b4] (59 bytes) Now! - The Sengoku era is here. Yamato, land of the seal!(0000)
[0x2e7700] (127 bytes) This island nation, which once was the home of the East and West, and the home of the South and the North, and the home of t..(0000)
- Translated file (example)
- Script: 2-injection.py
➡ Generates new Script.IMG
➡ Place in: PSP_GAME\USRDIR
➡ Rebuild ISO with UMDGen ✔
Reverse engineering is a true passion of mine, and all the scripts I develop are built to be fully ready for text editing and seamless reintegration into the game. :)
➡ Place in: PSP_GAME\USRDIR
➡ Rebuild ISO with UMDGen ✔
Reverse engineering is a true passion of mine, and all the scripts I develop are built to be fully ready for text editing and seamless reintegration into the game. :)
