News:

11 March 2016 - Forum Rules

Main Menu

Translating Japanese GBA demo game

Started by Jaz, March 21, 2021, 06:31:44 PM

Previous topic - Next topic

Jaz

*edit - I realized that I posted this in the wrong section, my apologies. This can totally be deleted

I found a somewhat obscure GBA Japanese demo game and I'm working on translating it.

It took a while but I made a table for the in-game dialogue and when the dialogue is on the screen I can see the text in the video ram, but I can't find where it is located in the rom. Is the text stored differently in the rom? Translating will be relatively easy once I can get to the text, there's maybe 30 lines of dialogue so I think it's doable.

I don't even know the name of the demo, sorry if it seems vague. If anyone has encountered this before please give me guidance. This is a huge learning curve for me but I'm willing to put in the work!

FAST6191

I have seen text radically retooled between RAM and ROM but most of the time it will be that compression was used so back searching the ROM with text you found in the RAM gets tricky. It might not be that and instead line breaks of placeholders ("you need ?? gold to buy that potion" sort of thing where whatever the game uses instead of ?? in the script is swapped out in favour of the current price).


If it is compression then the GBA has a standard compression option in the BIOS that most games use or use an equivalent of. There are compression logs and searching options, though I usually aim for something a bit more directed for text as most of those are aimed more at graphics.
Speaking of graphics if there are only 30 lines then the text (I am assuming menus and whatnot) might well be stored as graphics instead. Can check with a tile editor if you want.

If doing it properly as a big boy hacker then tracing is usually the order of the day. https://www.romhacking.net/documents/361/ is a nice guide, though rather than vba-sdl-h that it suggests we tend to point people at http://problemkaputt.de/gba.htm these days as it is nice and graphical. If you know where it is in RAM you can set a break on write to that area just before it lands in RAM and for the GBA then whatever it is fishing out of the 08000000 through 08FFFFFF section (technically it goes to 09FFFFFF but unless the ROM is more than 16 megabytes then it will not be using that, and there others that are used even less commonly) a few instructions before is likely your text location, and also anything it changes along the way.

Jaz

#2
I started a new thread here because I initially posted this in the wrong section:
http://www.romhacking.net/forum/index.php?topic=32493.0

I used no$gba to view the tiles and their hex values, so I made my tables based on that. I don't really know how to find the Japanese otherwise. When there's text on the screen it shows up in vram and the tables I made makes it readable.

Looking at the rom in a hex editor the only thing I can find is what's in plain ASCII and that's the 8 or so English words in the game. My tables are useless there.

I was poking around and tried using Advance-Text but I have no idea how, and wanted to try XSE but it just won't run on my machine (Linux + Wine).

I will absolutely check out the resources you pointed to and try my hand at tracing. There's no text stored as graphics other than the tiles for the Japanese and Latin alphabet used in game.

Here's my table for the in game dialogue:
Spoiler

0000=
4100=►
4200=0
4300=1
4400=2
4500=3
4600=4
4700=5
4800=6
4900=7
4A00=8
4B00=9
4C00=A
4D00=B
4E00=C
4F00=D
5000=E
5100=F
5200=G
5300=H
5400=I
5500=J
5600=K
5700=L
5800=M
5900=N
5A00=O
5B00=P
5C00=Q
5D00=R
5E00=S
5F00=T
6000=U
6100=V
6200=W
6300=X
6400=Y
6500=Z
6600=『
6700=』
6800=を
6900=っ
6A00=ゃ
6B00=ゅ
6C00=ょ
6D00=あ
6E00=い
6F00=う
7000=え
7100=お
7200=か
7300=き
7400=く
7500=け
7600=こ
7700=さ
7800=し
7900=す
7A00=せ
7B00=そ
7C00=た
7D00=ち
7E00=つ
7F00=て
8000=と
8100=な
8200=に
8300=ぬ
8400=ね
8500=の
8600=は
8700=ひ
8800=ふ
8900=へ
8A00=ほ
8B00=ま
8C00=み
8D00=む
8E00=め
8F00=も
9000=や
9100=ゆ
9200=よ
9300=ら
9400=り
9500=る
9600=れ
9700=ろ
9800=わ
9900=ぎ
9A00=ん
9B00=ィ
9C00=「
9D00=ェ
9E00=オ
9F00=ッ
A000=ャ
A100=ュ
A200=ョ
A300=゙
A400=゚
A500=ー
A600=
A700=!
A800=?
A900=%
AA00=/
AB00=:
AC00=」
AD00=ア
AE00=イ
AF00=ウ
B000=エ
B100=オ
B200=カ
B300=キ
B400=ク
B500=ケ
B600=コ
B700=サ
B800=ツ
B900=ス
BA00=セ
BB00=ソ
BC00=タ
BD00=チ
BE00=ツ
BF00=テ
C000=ト
C100=ナ
C200=ニ
C300=ヌ
C400=ネ
C500=ノ
C600=ハ
C700=ヒ
C800=フ
C900=へ
CA00=ホ
CB00=マ
CC00=ミ
CD00=ム
CE00=メ
CF00=モ
D000=ヤ
D100=ユ
D200=ヨ
D300=ラ
D400=リ
D500=ル
D600=レ
D700=ロ
D800=ワ
D900=ヲ
DA00=ン
DB00=←
DC00=→
DD00=↕
DE00=あ
DF00=い
E000=う
E100=え
E200=お
E300="
E400=、
E500=。
E600=・
E700=♥
E800=(
E900=)
EA00=ア
EB00=ウ
EC00=Ⅱ
ED00==
[close]


Tardis

Try this table here. Not quite sure if everything is correct. Works for menu, shop system and also some dialogue.

Spoiler

01=
03=0
04=1
05=2
06=3
07=4
08=5
09=6
0A=7
0B=8
0C=9
0D=A
0E=B
0F=C
10=D
11=E
12=F
13=G
14=H
15=I
16=J
17=K
18=L
19=M
1A=N
1B=O
1C=P
1D=Q
1E=R
1F=S
20=T
21=U
22=V
23=W
24=X
25=Y
26=Z
27=『
28=』
29=を
2A=っ
2B=ゃ
2C=ゅ
2D=ょ
2E=あ
2F=い
30=う
31=え
32=お
33=か
34=き
35=く
36=け
37=こ
38=さ
39=し
3A=す
3B=せ
3C=そ
3D=た
3E=ち
3F=つ
40=て
41=と
42=な
43=に
44=ぬ
45=ね
46=の
47=は
48=ひ
49=ふ
4A=へ
4B=ほ
4C=ま
4D=み
4E=む
4F=め
50=も
51=や
52=ゆ
53=よ
54=ら
55=り
56=る
57=れ
58=ろ
59=わ
5A=ぎ
5B=ん
5C=ィ
5D=「
5E=ェ
5F=オ
60=ッ
61=ャ
62=ュ
63=ョ
64=゙
65=゚
66=ー
67=
68=!
69=?
6A=%
6B=/
6C=:
6D=」
6E=ア
6F=イ
70=ウ
71=エ
72=オ
73=カ
74=キ
75=ク
76=ケ
77=コ
78=サ
79=ツ
7A=ス
7B=セ
7C=ソ
7D=タ
7E=チ
7F=ツ
80=テ
81=ト
82=ナ
83=ニ
84=ヌ
85=ネ
86=ノ
87=ハ
88=ヒ
89=フ
8A=へ
8B=ホ
8C=マ
8D=ミ
8E=ム
8F=メ
90=モ
91=ヤ
92=ユ
93=ヨ
94=ラ
95=リ
96=ル
97=レ
98=ロ
99=ワ
9A=ヲ
9B=ン
9C=←
9D=→
9E=↕
9F=あ
A0=い
A1=う
A2=え
A3=お
A4="
A5=、
A6=。
A7=・
A8=♥
A9=(
AA=)
AB=ア
AC=ウ
AD=Ⅱ
AE==

[close]

Jaz

I finished the translation! I also did some graphical improvements.
http://www.romhacking.net/translations/6037/