Romhacking.net

Romhacking => Personal Projects => Topic started by: splch on December 06, 2020, 12:08:02 AM

Title: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: splch on December 06, 2020, 12:08:02 AM
Hi all!

I'm planning on playing through the Switch rerelease of Fire Emblem: Shadow Dragon & the Blade of Light. I figured I'd record all the dialogue throughout my full playthrough for translation purposes.

(https://lh3.googleusercontent.com/pw/ACtC-3dtXeIbR97n4rQDhSQn7d8I2sYkWXC0-qR81MEQE4FtrLqCZCp4nwMJvlamVHh3DBVEjiYKXJg0r_HPkAb7tjsY8fXT2LeTdq_fLW2oXHHjs9rYjTApdbO3-o2EOC1kt55MIdGI9TulW7T5jaz8hgdtFw=w960-h540-no)

I'm completely new to modding, so any advice on tutorials (I found this https://arekuse.net/blog/tech-guides/nes-roms-translation-guide/ (https://arekuse.net/blog/tech-guides/nes-roms-translation-guide/) to be helpful) would be appreciated.

I'm excited to start working on this project and meeting people along the way :)




UPDATE 1:

I wrote a basic python program that loads a rom, thingy table, and translation file and exports a translated rom. I'm going to use this with the dialog script to make the job a lot easier.

rom.py
#!/usr/bin/env python
# coding: utf-8

# In[1]:


import binascii


# In[2]:


class ROM():
    def __init__(self, rom_path, table_path=None, translation_path=None):
        self.rom_path = rom_path
        self.rom = ''
        self.final_rom = ''
        self.table = {}
        self.inv_table = {}
       
        self.translation = []
       
        self._load_rom(self.rom_path)
       
        if table_path:
            self._load_table(table_path)
       
        if translation_path:
            self._load_translation(translation_path)
       
    def _load_rom(self, rom_path):
        # load rom as bytes
        with open(rom_path, 'rb') as f:
            self.rom = f.read()
       
        # convert binary to hex
        self.rom = str(binascii.hexlify(self.rom), 'ascii').upper()
        self.final_rom = self.rom
       
    def _load_table(self, table_path):
        # add all thingy table entries to dictionary
        with open(table_path, 'r') as f:
            for line in map(lambda x: x.strip('\n'), f.readlines()):
                self.table[line[:2]] = line[3:]
                self.inv_table[line[3:]] = line[:2]
   
    def search_string(self, string):
        return ''.join(self.inv_table.get(char, char) for char in string)
   
    def search_hex(self, hex_code):
        hex_code = hex_code.strip(' ')
        return ''.join(self.table.get(h, h) for h in [hex_code[i:i+2] for i in range(0, len(hex_code), 2)])

    def _load_translation(self, translation_path):
        with open(translation_path, 'r') as f:
            self.translation = list(map(lambda x: x.strip('\n'), f.readlines()))
   
    def _conv(self, initial_hex, final_hex):
        if initial_hex in self:
            self.final_rom = self.final_rom.replace(initial_hex, final_hex)
        else:
            print(self.search_hex(initial_hex), 'not in ROM')
   
    def translate(self):
        for line in self.translation:
            initial_string, final_string = line.split('=')
            self._conv(self.search_string(initial_string), self.search_string(final_string))
        print('ROM successfully translated')
   
    def export(self):
        with open(self.rom_path.split('.')[0]+'_translation.'+self.rom_path.split('.')[1], 'wb') as f:
            f.write(binascii.unhexlify(self.final_rom))
   
    def __unicode__(self):
        rom = ''
        for hex_code in self:
            try:
                rom += self.search_hex(hex_code)
            except Exception as e:
                rom += hex_code
        return rom
   
    def __str__(self):
        # display hex in standard form
        s = ''
        for i, hex_code in enumerate(self):
            if i % 16 != 0:
                s += hex_code
                if i % 16 != 15:
                    s += ' '
            else:
                s += '\n'+hex_code+' '
        return s.strip()
   
    def __contains__(self, item):
        return self.search_string(item) in self.rom or self.search_hex(item) in self.rom or item in self.rom
   
    def __iter__(self):
        return iter([self.rom[i:i+2] for i in range(0, len(self.rom), 2)])


# In[3]:


fe1 = ROM('fe1.nes', 'fe1.tbl', 'dialogue.txt')


# In[4]:


fe1.translate()


# In[5]:


fe1.export()


I also ran a quick test with one of the first strings in the game:

dialogue.txt

ソシアル ナイト=CAVALIER


fe1.tbl

00=あ
01=い
02=う
03=え
04=お
05=か
06=き
07=く
08=け
09=こ
0A=さ
0B=し
0C=す
0D=せ
0E=そ
0F="
10=た
11=ち
12=つ
13=て
14=と
15=な
16=に
17=ぬ
18=ね
19=の
1A=は
1B=ひ
1C=ふ
1D=へ
1E=ほ
1F=°
20=ま
21=み
22=む
23=め
24=も
25=や
26=ゆ
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=0
61=1
62=2
63=3
64=4
65=5
66=6
67=7
68=8
69=9
6A=A
6B=B
6C=C
6D=D
6E=E
6F=F
70=G
71=H
72=I
73=J
74=K
75=L
76=M
77=N
78=O
79=P
7A=Q
7B=R
7C=S
7D=T
7E=U
7F=V
80=W
81=X
82=Y
83=Z
84=ゃ
85=っ
86=ゅ
87=ょ
88=ャ
89=ッ
8A=ュ
8B=ョ
8C=;
8D=:
8E=,
8f=<box>
93=.
96=ぁ
97=ぃ
98=ぅ
99=ぇ
9A=ぉ
9B=•
9C=?
9D=!
9E=*
9F=♥️
A6=ァ
A7=ィ
A8=ゥ
A9=ェ
AA=ォ
AB=「
AC=」
AD=/
AE=%
AF=<×>
BB=[
BC=]
BD=(
BE=)
BF=<FE>
C0=<SetPoin>
DF=<SetMusic>
E1=<BossQuote?>
E2=<MouthOff>
E3=
E4=<ShopPoin?>
E5=<ChapTitle>
E6=<Change>
E8=<LoadFace>
E9=<SetSpeed>
EA=<*>
EC=<LoadVar>
ED=<N>\r
EE=<A>\r
F0=,
FE=<OpeningN>
FF=


(https://lh3.googleusercontent.com/pw/ACtC-3eiy7QEwX7EQDqQZ4qkqc0yvpj-hJXcqZ8-yWpv2vSYoKUg2T8evrtUItR9a_rVwucyDi6koYmWZi5wdtZCWsrOHv3Z0hzWjuxf_nYW0x4lMdvQHezrwXikrVZ89e3PkJcy-Rm0nRf-FcF9nM7rwAxYOA=w960-h600-no)
(the actual translation is Cavalier, but I have yet to modify the tileset)





UPDATE 2:

I learned that you can't just replace Japanese text with English text 😂 It seems so obvious to me now that there would be memory limitations and pointers thrown off by going over the initially allocated text space.

(https://lh3.googleusercontent.com/pw/ACtC-3fy-MAfXnTGI0oTFD48dzrRyUxJ6nIrdhjoAMGslzIek4XE21NqwxPUiplkBu1QTkNogxopTAY4EgMqDSCUDTgXHhyBYTUf54Q0mDAwTRwsx6Fi4txaDGrYazkiACTuKK7VF0HqaR-UVWHEW5EBiE_PFg=w960-h600-no)

I'm actually happy that I've run into these challenges, as I've been looking into ways to compress the English transcript. I'm thinking about running an analysis of the English transcript in a couple ways.


Despite these roadblocks, I still want to work on tools that make this project simpler. I'll of course post the tools and translation patch I create. I'm also writing the tools in Python so they can be easily understood by other beginners and run on every OS.

UPDATE 3:

I have finally completed the transcription of the main game. I have yet to cover miscellaneous locations like shops and arenas, but the general scripts are done. They will allow me to compress efficiently.

Here's the formatted script:
https://pastebin.com/raw/1PUiL23i (https://pastebin.com/raw/QdNEaqG5)

I'm now going to begin finding optimal encodings for DTE, but so far these are the top 10 tiles:
DTEs

e
t
th
s
he
t
in
ou
a

...

("..." is the only occurance of TTE 😂 Triple Tile Encoding because it appears 177 times)

Also, the characters used in the game's transcript are:
characters


!
"
'
(
)
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
?
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
S
T
U
V
W
X
Y
Z
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
©


So, I'll be able to free up some space in the CHR ROM for more DTEs :thumbsup:

I've been making some videos about my progress in this album https://photos.app.goo.gl/xWnyqBss5nbVGkfL7 (https://photos.app.goo.gl/xWnyqBss5nbVGkfL7), so feel free to check them out if you're curious about anything. I'll also be making the GitHub repository public once I'm finished... because I can't distribute the ROM - only the IPS.

The next step will be modifying the tileset to include the DTEs. I believe I can include around 125 DTEs.
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: Dzumeister on December 07, 2020, 01:07:34 PM
oooh, are you doing this project to create a patch for the NES game, or are you porting the script over to the SNES version?
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: CoolCatBomberMan on December 07, 2020, 01:40:42 PM
Here's to hoping OP can do both!
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: splch on December 07, 2020, 02:04:02 PM
Quote from: Dzumeister on December 07, 2020, 01:07:34 PM
oooh, are you doing this project to create a patch for the NES game, or are you porting the script over to the SNES version?

As my first project, I'm only working on the NES port. I got in contact with Quirino (the Hacker for the first FE1 translation), so I can hopefully learn from him and his notes about some of the good pointer locations 😂

Quote from: CoolCatBomberMan on December 07, 2020, 01:40:42 PM
Here's to hoping OP can do both!

I can definitely learn :) After I finish the NES translation, I don't think that SNES would be a huge learning jump... So we'll see!
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: Bonesy on December 07, 2020, 02:29:47 PM
In the future please upload your pictures to an actual image host, the Scratchpad is for hosting romhacks that are supposed to be uploaded to the site.
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: souziago on December 08, 2020, 07:52:02 PM
Interesting. I Don't have any skill to help you with this project, though. :-\ But I'll share it everywhere so more people can see it.
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: splch on December 11, 2020, 02:53:02 AM
Quote from: souziago on December 08, 2020, 07:52:02 PM
Interesting. I Don't have any skill to help you with this project, though. :-\ But I'll share it everywhere so more people can see it.

Thank you!

I've started transcribing the official translation, and once I finish, I can start determining which words to use for dictionary/dual tile compression.

So I think in the next couple months there should be some good updates :)
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: 91-MPH on December 12, 2020, 02:19:24 AM
Quote from: splch on December 06, 2020, 12:08:02 AM
Hi all!

I'm planning on playing through the Switch rerelease of Fire Emblem: Shadow Dragon & the Blade of Light. I figured I'd record all the dialogue throughout my full playthrough for translation purposes.

(https://lh3.googleusercontent.com/pw/ACtC-3dtXeIbR97n4rQDhSQn7d8I2sYkWXC0-qR81MEQE4FtrLqCZCp4nwMJvlamVHh3DBVEjiYKXJg0r_HPkAb7tjsY8fXT2LeTdq_fLW2oXHHjs9rYjTApdbO3-o2EOC1kt55MIdGI9TulW7T5jaz8hgdtFw=w960-h540-no)

I'm completely new to modding, so any advice on tutorials (I found this https://arekuse.net/blog/tech-guides/nes-roms-translation-guide/ (https://arekuse.net/blog/tech-guides/nes-roms-translation-guide/) to be helpful) would be appreciated.

I'm excited to start working on this project and meeting people along the way :)




UPDATE 1:

I wrote a basic python program that loads a rom, thingy table, and translation file and exports a translated rom. I'm going to use this with the dialog script to make the job a lot easier.

rom.py
#!/usr/bin/env python
# coding: utf-8

# In[1]:


import binascii


# In[2]:


class ROM():
    def __init__(self, rom_path, table_path=None, translation_path=None):
        self.rom_path = rom_path
        self.rom = ''
        self.final_rom = ''
        self.table = {}
        self.inv_table = {}
       
        self.translation = []
       
        self._load_rom(self.rom_path)
       
        if table_path:
            self._load_table(table_path)
       
        if translation_path:
            self._load_translation(translation_path)
       
    def _load_rom(self, rom_path):
        # load rom as bytes
        with open(rom_path, 'rb') as f:
            self.rom = f.read()
       
        # convert binary to hex
        self.rom = str(binascii.hexlify(self.rom), 'ascii').upper()
        self.final_rom = self.rom
       
    def _load_table(self, table_path):
        # add all thingy table entries to dictionary
        with open(table_path, 'r') as f:
            for line in map(lambda x: x.strip('\n'), f.readlines()):
                self.table[line[:2]] = line[3:]
                self.inv_table[line[3:]] = line[:2]
   
    def search_string(self, string):
        return ''.join(self.inv_table.get(char, char) for char in string)
   
    def search_hex(self, hex_code):
        hex_code = hex_code.strip(' ')
        return ''.join(self.table.get(h, h) for h in [hex_code[i:i+2] for i in range(0, len(hex_code), 2)])

    def _load_translation(self, translation_path):
        with open(translation_path, 'r') as f:
            self.translation = list(map(lambda x: x.strip('\n'), f.readlines()))
   
    def _conv(self, initial_hex, final_hex):
        if initial_hex in self:
            self.final_rom = self.final_rom.replace(initial_hex, final_hex)
        else:
            print(self.search_hex(initial_hex), 'not in ROM')
   
    def translate(self):
        for line in self.translation:
            initial_string, final_string = line.split('=')
            self._conv(self.search_string(initial_string), self.search_string(final_string))
        print('ROM successfully translated')
   
    def export(self):
        with open(self.rom_path.split('.')[0]+'_translation.'+self.rom_path.split('.')[1], 'wb') as f:
            f.write(binascii.unhexlify(self.final_rom))
   
    def __unicode__(self):
        rom = ''
        for hex_code in self:
            try:
                rom += self.search_hex(hex_code)
            except Exception as e:
                rom += hex_code
        return rom
   
    def __str__(self):
        # display hex in standard form
        s = ''
        for i, hex_code in enumerate(self):
            if i % 16 != 0:
                s += hex_code
                if i % 16 != 15:
                    s += ' '
            else:
                s += '\n'+hex_code+' '
        return s.strip()
   
    def __contains__(self, item):
        return self.search_string(item) in self.rom or self.search_hex(item) in self.rom or item in self.rom
   
    def __iter__(self):
        return iter([self.rom[i:i+2] for i in range(0, len(self.rom), 2)])


# In[3]:


fe1 = ROM('fe1.nes', 'fe1.tbl', 'dialogue.txt')


# In[4]:


fe1.translate()


# In[5]:


fe1.export()


I also ran a quick test with one of the first strings in the game:

dialogue.txt

ソシアル ナイト=CAVALIER


fe1.tbl

00=あ
01=い
02=う
03=え
04=お
05=か
06=き
07=く
08=け
09=こ
0A=さ
0B=し
0C=す
0D=せ
0E=そ
0F="
10=た
11=ち
12=つ
13=て
14=と
15=な
16=に
17=ぬ
18=ね
19=の
1A=は
1B=ひ
1C=ふ
1D=へ
1E=ほ
1F=。
20=ま
21=み
22=む
23=め
24=も
25=や
26=ゆ
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=0
61=1
62=2
63=3
64=4
65=5
66=6
67=7
68=8
69=9
6A=A
6B=B
6C=C
6D=D
6E=E
6F=F
70=G
71=H
72=I
73=J
74=K
75=L
76=M
77=N
78=O
79=P
7A=Q
7B=R
7C=S
7D=T
7E=U
7F=V
80=W
81=X
82=Y
83=Z
84=ゃ
85=っ
86=ゅ
87=ょ
88=ヵ
89=ッ
8A=ュ
8B=ョ
8C=;
8D=:
8E=,
8F=。
93=.
96=ぁ
97=ぃ
98=ぅ
99=ぇ
9A=ぉ
9B=•
9C=?
9D=!
9F=♥️
A6=ァ
A7=ィ
A8=ゥ
A9=ェ
AA=ォ
AB=「
AC=」
AD=/
AE=%
AF=×
BB=[
BC=]
BD=(
BE=)
E5=N
E6=in
E7=te
E8=n
E9=d
EA=o
EB=©
EC=0
ED=1
EE=9
F0=,
FF=


(https://lh3.googleusercontent.com/pw/ACtC-3eiy7QEwX7EQDqQZ4qkqc0yvpj-hJXcqZ8-yWpv2vSYoKUg2T8evrtUItR9a_rVwucyDi6koYmWZi5wdtZCWsrOHv3Z0hzWjuxf_nYW0x4lMdvQHezrwXikrVZ89e3PkJcy-Rm0nRf-FcF9nM7rwAxYOA=w960-h600-no)
(the actual translation is Cavalier, but I have yet to modify the tileset)





UPDATE 2:

I learned that you can't just replace Japanese text with English text 😂 It seems so obvious to me now that there would be memory limitations and pointers thrown off by going over the initially allocated text space.

(https://lh3.googleusercontent.com/pw/ACtC-3fy-MAfXnTGI0oTFD48dzrRyUxJ6nIrdhjoAMGslzIek4XE21NqwxPUiplkBu1QTkNogxopTAY4EgMqDSCUDTgXHhyBYTUf54Q0mDAwTRwsx6Fi4txaDGrYazkiACTuKK7VF0HqaR-UVWHEW5EBiE_PFg=w960-h600-no)

I'm actually happy that I've run into these challenges, as I've been looking into ways to compress the English transcript. I'm thinking about running an analysis of the English transcript in a couple ways.


  • I'll only include the strings that are larger than the initial transcript.
  • Scan those strings for two-letter frequencies and use those for dual tiles.
  • Replace every word in the transcript with those DTEs and use either Huffman coding to compress the words further or dictionary compression (if space permits).

Despite these roadblocks, I still want to work on tools that make this project simpler. I'll of course post the tools and translation patch I create. I'm also writing the tools in Python so they can be easily understood by other beginners and run on every OS.

You should check out the works of ChaosRush and Choppasmith. You'll like them. :thumbsup:
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: mrbuttman on December 27, 2020, 07:10:38 AM
Hi,

Skimmed through your first video and this is just a small note regarding the text - This game doesn't appear to output at 1080p natively while docked or the game does not scale to 4x properly. Either way this seems to cause blurring of the spirtes/text.

Changing the switch resolution to 720p and capturing at that should yield sharp, uniform square pixels while in perfect-pixel mode (3x scale) for better text ripping. See example screenshot below. (Save image or open image in new tab to view full size)

Keep up the great work, looking forward to the finished version!

(https://i.imgur.com/LkmlEGy.png)
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: The_Iced_Tea_Addict on January 20, 2021, 03:13:02 PM
Glad to see someone else trying to do this as well.
So I'll tell ya some things I've noticed while experimenting with the text at the beginning.

The text in the Switch translation is a few spaces to the left.
So knowing this, I went on to try to figure that out, the screen (PPPU?) location values are a few bytes before each line of the
QuoteAT FIRST,
THERE ARE
DARK DRAGON,
FALCHION SWORD
AND
text in the ROM, changing this can have a few issues (Relating to the color palettes), but works. I believed the value for the text length was somewhere there as well, but that has not given me any good results when changed, usually resulting in the similar visual glitches or crashes like in the picture from Update 2, so either I'm wrong or the ROM is doing something weird. My current theory is that the text length data is where ever the pointers are, but idk.

I have no idea where the pointers are for the title screen text, but if that is somehow found, I believe it would be better to point it to an empty space in the rom before replacing it. Unless the unused text found near that location can be replaced with little problem as that will provide quite a bit of space.
Quote"THE ACRNEAR ERA, 3011.           
"DOLLUER WAR" BROKE OUT.         
A BRAVE MAN BATTLED WITH EMBLEM. BUT     
HE COULDN'T STOP "TEARS OF ALTEMIS".

Wish I can help ya out more, but I would likely only be able to help with graphical stuff, such as remaking sprites from the translation. Maybe even add a bit extra with weapon icons (Since there likely will be extra space in the tile set for letters). But besides that, I would only be able to help with the odd bit of experimenting.
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: The_Iced_Tea_Addict on April 04, 2021, 09:53:46 AM
So an update about dem pointers. Not sure if you're still working on this, but my focus has been on the opening screen. I ended up finding some pointers related to the opening text, but they seem to be unused. Because whenever I change them to a freed up space in Bank 8, they don't seem to do anything. You can find them by opening the rom in a hex editor and look for "07 AA 1D AA" that will bring you to their location. I'll probably open a new topic to find help to understand why this is the case later I guess.
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: splch on June 01, 2021, 07:03:26 AM
Quote from: mrbuttman on December 27, 2020, 07:10:38 AM
Hi,

Skimmed through your first video and this is just a small note regarding the text - This game doesn't appear to output at 1080p natively while docked or the game does not scale to 4x properly. Either way this seems to cause blurring of the spirtes/text.

Changing the switch resolution to 720p and capturing at that should yield sharp, uniform square pixels while in perfect-pixel mode (3x scale) for better text ripping. See example screenshot below. (Save image or open image in new tab to view full size)

Keep up the great work, looking forward to the finished version!

(https://i.imgur.com/LkmlEGy.png)

Thanks for that info! I'll go back and confirm my font matches the 720p version :D

Quote from: The_Iced_Tea_Addict on April 04, 2021, 09:53:46 AM
So an update about dem pointers. Not sure if you're still working on this, but my focus has been on the opening screen. I ended up finding some pointers related to the opening text, but they seem to be unused. Because whenever I change them to a freed up space in Bank 8, they don't seem to do anything. You can find them by opening the rom in a hex editor and look for "07 AA 1D AA" that will bring you to their location. I'll probably open a new topic to find help to understand why this is the case later I guess.

I've been pretty busy finishing up school, but I'm starting to come back to this project again :) Thanks for the info about the pointers... That's an interesting discovery. Right now, I'm going to postpone the difficult translations until I've finished basic hex replacement, DTE, and Huffman compression.

I'll check out the title screen pointers when I begin Huffman because I think I'll need to point the text to the decompressor anyways. Right now, I'm still making a list of the Japanese -> English text, though. If you have a GitHub I can add you to the repository (https://github.com/splch/fe1 (https://github.com/splch/fe1)) that I've been working on in case any of it comes in handy. :thumbsup:
Title: Re: Official Translation of Fire Emblem: Shadow Dragon & the Blade of Light
Post by: The_Iced_Tea_Addict on June 26, 2021, 05:37:17 PM
Quote from: splch on June 01, 2021, 07:03:26 AM
I've been pretty busy finishing up school, but I'm starting to come back to this project again :) Thanks for the info about the pointers... That's an interesting discovery. Right now, I'm going to postpone the difficult translations until I've finished basic hex replacement, DTE, and Huffman compression.

I'll check out the title screen pointers when I begin Huffman because I think I'll need to point the text to the decompressor anyways. Right now, I'm still making a list of the Japanese -> English text, though. If you have a GitHub I can add you to the repository (https://github.com/splch/fe1 (https://github.com/splch/fe1)) that I've been working on in case any of it comes in handy. :thumbsup:
I found a txt file talking about pointer addresses, unfortunately nothing came out of it that was new to me relating to the title screen, but I'll share it to the git if you want. I'm not sure how to upload it here. lol.
@TheIcedTeaAddict is my Github account.
I'm still going at it at times, but still find it so odd that it refuses to work the way I originally expected.