ROM Hack Toolkit for Translation?

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,795
Trophies
3
XP
28,452
Country
United Kingdom
There have been a few tools (FF3 had one, visit http://www.romhacking.net/ and you should be able to drag it up. Said link also contains the basics of romhacking (the more advanced stuff there tends to be limited to other systems).

I made a short intro to it but it is as yet unfinished:
http://www.4shared.com/file/3636881/1f5f088d/rom101.html
This forum has loads of threads too that will have a lot of nice info for you.
 

Agjsdfd

My title
Member
Joined
Apr 18, 2007
Messages
1,205
Trophies
0
Age
114
Location
Arctica
XP
255
Country
There has been some text editors for older pokemon and zelda games(GBC/GBA). But nowdays you have to use hexeditor as mentioned above.
 
D

Deleted User

Guest
There has been some text editors for older pokemon and zelda games(GBC/GBA). But nowdays you have to use hexeditor as mentioned above.
mmm... I've heard that lately some crazy guy as made a full text editor for Final fantasy tactics A2 (opensource one it seems)... But it must be some hoax...
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,795
Trophies
3
XP
28,452
Country
United Kingdom
Sorry about that defeufeu.

Oh and for giggles here is a quick reply I made to a PM about pointers, it is better in some regards than what I have in that document.
Assuming your text is not graphical (a good chunk of puzzle games have a very small amount of text so they eschew encoding a font in place drawing a picture) and the very rare cases of end to end and set limit text (I will quickly summarise them at the end) what you want to read about is pointers.

In short they are like a contents to a book as trying to get the computer to calculate the end of a work is a pain and a waste of resources.

If you run over the length without changing the pointers to match the worst that will happen is you will crash and at best your text will spill over into other areas.

They come in three main forms:
Standard: you will get a list of hexadecimal numbers (if you do not know what hexadecimal is have a read of chapter 3 on the following website, if you still do not get it PM me back: http://webster.cs.ucr.edu/AoA/Windows/HTML/AoATOC.html )
These numbers count from the start of the file to the text. My example today in rune factory 2 ( http://gbatemp.net/index.php?showtopic=70192&st=41 ) is a good example and it deals with the endianness problem .

Offset:
The numbers in the standard form above usually come at the start of the file and are called a header. These work in the exact same way as standard but count from the start of the text.

Relative:
A hybrid of offset and standard types and in some ways the easiest on the system (although not on your head). Basically they count on from their place in the file. For example if the pointer is at address 5c in the file and reads 10 you add the two numbers together to get where you are at.


The exceptions and a few problems
GBA: This is perhaps outside the scope of the question but the GBA cart is in the memory so pointers will usually start with a 08 for roms 16 megabytes and under and 09 for some roms 32 megabytes in size. DS roms tend to be little files which is nice and keeps things simple.

End to end: I know a sentence is finished when you put a fullstop: some games (mainly nes and snes era) do the same with a 00 or something.

Fixed length:
ever wondered why certain final fantasy titles have names of spells that look horrible when translated. Basically the devs decided 12 (or some other number of) characters would do for names (and it does in Japanese) but when it comes to the west things get a bit more difficult. Rather than redo it the localisation team just scrunched the names up. If you encounter this it is usually wise to continue at the next section i.e. for 4 characters ACBD|EFGH|HI__|JK__

Endianness:
I know the number 7000000000 is bigger than 6999999999 despite most of the numbers in the one starting with 7 are smaller than the one with 6 at the start. This is called big endian and the GBA/DS read numbers the other way i.e. 0745 would actually be read 4507. Simple enough really once you know the trick. The link I gave you to hexadecimal should sort you out for this as well.
 
D

Deleted User

Guest
wow FAST6191 while the info you're giving are indeed good, do you really think some random dude asking such question will do anything useful with it ? It's like giving jam to pigs (french idiom...).
 

Agjsdfd

My title
Member
Joined
Apr 18, 2007
Messages
1,205
Trophies
0
Age
114
Location
Arctica
XP
255
Country
LOL. Sound pretty complicated.
Do you know if its possible to edit the text using a hexeditor and table(TBL) file?

I used to do that with gbc and gb games.
If its still possible, I might try to find the right value for certain game and make a table file.
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,795
Trophies
3
XP
28,452
Country
United Kingdom
I heard of that saying before somehow. Random info I agree is sometimes less than brilliant (especially I as neglected to deal with basic stuff like what hexadecimal is) but I figured better here than my sent messages.

@Kamui101 a good chunk of the text we play with these days is 16bit (shiftJIS and unicode even for the ASCII subrange only) which discounts some of the older tools but tables still work and are often common to companies. Rarely do I come up against fun things like DTE/MTE as well.
 
D

Deleted User

Guest
@Kamui101 a good chunk of the text we play with these days is 16bit (shiftJIS and unicode even for the ASCII subrange only) which discounts some of the older tools but tables still work and are often common to companies. Rarely do I come up against fun things like DTE/MTE as well.
FFTA2 was using a hash based archive of 70mb and script files in it where using 4 tables : control codes, main character table, another kanji table loaded on demand for every script file or even for every line (out of more than 100...), substitution codes (current character's class, ...). You can still have this kind of fun these days
wink.gif

But I agree usually companies are lazy and they'd rather pay for a big cartridge size and don't worry about cryptic encodings...
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • NinStar @ NinStar:
    there is a plugin that display them on the wii u menu, pretty sure it is enabled by default
  • crafthp434 @ crafthp434:
    so like it doesnt exist
  • crafthp434 @ crafthp434:
    yeah
    ?
  • NinStar @ NinStar:
    it doesn't exist, at least not for aroma
  • crafthp434 @ crafthp434:
    ohhhhh
  • NinStar @ NinStar:
    on tiramisu you can access it by opening mii maker
  • crafthp434 @ crafthp434:
    okay
  • NinStar @ NinStar:
    I don't have a wii u anymore to test it myself, but if homebrews are not visible on the wii u menu I think you can press L + R + minus to open the plugin menu, there should be an option called "homebrews on wii u menu" or something similar
  • crafthp434 @ crafthp434:
    nope
  • crafthp434 @ crafthp434:
    it is L+dpad down+ select
  • crafthp434 @ crafthp434:
    but homebrew is appearing in the home menu btw
  • NinStar @ NinStar:
    yes, now I remember it
  • NinStar @ NinStar:
    then it is working, I also don't like that they did this but it is the only option you have if you are using aroma
  • crafthp434 @ crafthp434:
    i just didint know the homebrew launcher didint exist in aroma
  • crafthp434 @ crafthp434:
    thanks btw
  • Xdqwerty @ Xdqwerty:
    Im downloading fallout 3 goty edition
    +1
  • BigOnYa @ BigOnYa:
    I'm downloading more ram for my hamster pc
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    New hamster PC, with anal operation and BT connectivity!
    +1
  • Xdqwerty @ Xdqwerty:
    @BigOnYa, How do I make enemies respawn on gdevelop after
    the player dies?
  • Psionic Roshambo @ Psionic Roshambo:
    Carrying a PC or phone is so old school!
  • Psionic Roshambo @ Psionic Roshambo:
    Squeeze your cheeks twice to answer calls!
  • BigOnYa @ BigOnYa:
    @Xdqwerty you can use a "spawner" function on any object.
    +1
  • BigOnYa @ BigOnYa:
    Or when your player dies, you can say in code, if enemy exists, do nothing, but if enemy does not exist, then create enemy at certain spot. (This would be a pain tho for lots of emeies)
    +1
  • BigOnYa @ BigOnYa:
    Easiest, simple way would be just restart scene, but player would restart from beginning.
  • Xdqwerty @ Xdqwerty:
    @BigOnYa, thx in advance
    +1
    Xdqwerty @ Xdqwerty: @BigOnYa, thx in advance +1