News: 11 March 2016 - Forum Rules

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - 91-MPH

Pages: [1] 2 3 4 5
1
Personal Projects / Re: Megaman Japanese style project.
« on: January 14, 2022, 06:05:25 pm »
Would it be alright if u made a Japanese style title screen hack for the original MM3 rom. As noble as kuja killer's romhack may be, it's not exactly a director's cut.

2
Besides the bin roms, will these Romhacks also work on the md files?

3
That is potentially fighting words there, especially around here where 1 through 4 (and whatever we are counting ages as) and online are considered different franchises for most intents and purposes.

I withdraw my last statement... >.<

4
We need a Phantasy Star III Relocalization  Hack asap

We should also make the English terminologies of the first four games be more up to date with their current installments (e.g. Phantasy Star Online 2).

5
If you're comparing this task to be on the same level as an English localization of Trials of Mana, then yes; I think it would be the case here.

This wouldn't be the first time I've heard of a project doubling the memory size of an original rom. If it means only being able to play it on a Raspberry Pi and not Hakchi, then so be it.

6
Just wondering if anyone would be interested in doing a PSP/NS script port of the first Star Ocean for the original SNES version?

7
ROM Hacking Discussion / A Link to the Past: Consistency Patch
« on: November 06, 2021, 06:08:03 pm »
Unlike those who would prefer works like Redux, there are some people (myself included) who do think that the The Legend of Zelda: A Link to the Past is perfect just the way it is. Any inconsistencies the game may have simply gives it character.

However, if there were any inconsistencies that I would like fixed in Alttp, it would be the terminologies in the English localization, simply due to the fact that they've been updated in later entries, including A Link Between Worlds.

Sure there may be some attempts like rechristening the Seven Wise Men to the Seven Sages, but they have yet to go farther than that, like rechristening the Medicine of Life and Magic to the Red Potion and Green Potion respectively.

8
ROM Hacking Discussion / Dragon Quest V-VI - DS Script Ports
« on: November 01, 2021, 11:52:12 pm »
The title says it all. Take the scripts of the DS versions of Dragon Quest V-VI, and port them to the SNES versions.

With similar attempts made to Final Fantasy installments for the NES and SNES, and Dragon Quest installments for the NES, I find it hard to believe that the SNES installments for Dragon Quest have yet to receive the same treatment.

Such script ports would make a nuanced merger of both worlds: a modern day localization, with the game's console debut of origin.

9
what type of gui patcher do you recommend? Because when I was using Delta Patcher, it refused to recognise the CD patches, due to them being in XD format.

10
The instructions mention utilizing the correct ISOs. Does that not include bins & cues?

11
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.



I'm completely new to modding, so any advice on tutorials (I found this 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
Code: [Select]
#!/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
Code: [Select]
ソシアル ナイト=CAVALIER

fe1.tbl
Code: [Select]
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=


(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.



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:

12
Personal Projects / Re: Romancing Saga 3 English re-translation [WIP]
« on: September 09, 2020, 06:22:23 pm »
I'm usually against this because the ones to port are usually not the best specimens.  That goes for both RS2 and 3, there are issues in both.  However, provided some revisions are done that approach wouldn't be necessarily a bad thing.  FFV's GBA script port turned out alright for example.

I would've wanted to reference J121, Choppasmith, Chaos Rush and the script ports they've done. But I didn't want my previous post to sound too preachy.

13
Personal Projects / Re: Romancing Saga 3 English re-translation [WIP]
« on: August 22, 2020, 06:21:21 pm »
I wouldn't mind it if the re-translation was more of a script-port of the recent U.S. releases.
It would make Romancing Saga 3 feel like an updated version of the vanilla game.
The full package, imo.

14
But this has already been implemented in most of the series retranslations and that’s what I’m trying to do with PSII by changing the names of Alis and Lassic in the introduction but that so far no hacker anywhere has wanted to help me ...
And another thing, Dark Falz is actually Dark Phallus.


That's odd, cause I noticed in the wikia/fandom page that his name was changed  back to Dark Falz in Phantasy Star Online 2. Or maybe the Wikia/fandom page isn't up to date.

Also, do you know which retranslation hacks have made these implementations? Any that you would recommend?

15
It would be nice if the English Terminologies of the first four Phantasy Star games were updated to be more in line with the rest of the series' lore.

i.e.: Foi < Foie
      Wat < Barta
      Lassic < Lashiec
      Algo < Algol
      Dark Force < Dark Falz

16
No, I've never played any of the online games. If they ever release the Algol Legends Pack for PSO2 I might try it out, but right now I'm centered in the classics only. I generally go by PSI's names and terms first and foremost, except for the name Noah which PSII and IV abandoned.

Don't forget about the name Lassic which PSII and IV also abandoned.

Also, the previous message I posted about the lore terms, I only brought it up cause the item name "Cola" I noticed in the screenshot is still called "Peloriemate" in the Phantasy Star fandom/wiki webpage.

17
Besides Phantasy Star I, do the lore terms in the hacks for PSII-IV meet the standards for the rest of the series? Including PS Online I & II?

18
Personal Projects / Re: Secret of Mana: Script Augmentation Project
« on: June 14, 2020, 09:24:13 pm »
I do not know, what the money was called in Seiken Densetsu 2, but in future games the currency is called Lucre.
Neither do I know, if it is a localised name or of the japanese original.

The first time I've noticed the word Lucre used in a localized Mana game, was from the recent Trials of Mana Remake.

19
I know it's impossible to give Seiken Densetsu 3 an English Script Port from "Trials of Mana" (from the Collection of Mana or Remake), because of how much of a hassle it would be; and the ROM for Trials of Mana (from the Collection of Mana) won't work on the Hakchi2 hardware, due to its limitations.

But someone should at least work on an addendum patch that updates or ports the Official (or Canonical) English Terminologies to Neill Corlett's Translation Patch.

(e.g.: God Beasts < Benevodons)
(e.g.: Koren: Wizard of the Crimson Lotus < Brian the Crimson Wizard)
 
I would ask someone to update the title, icon and music text, but G-Trans beat me to it.

20
Firaga doesn't exist in Phantasy Star

I was using Final Fantasy as an example.

Pages: [1] 2 3 4 5