Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - Hello, newbie with a question.. | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
bzeroneo
Newcomer
Level: 2

Posts: 1/6
EXP: 33
For next: 13

Since: 10-28-05

Since last post: 3 days
Last activity: 1 day
Posted on 10-28-05 06:19 AM Link | Quote
Hello everyone... I have just recently been wanting to learn hacking roms (as many rpg lovers out there).

Hopefully this board will help me a lot beggining in this.

Unfortunately i have already encountered my first problem, Im using Translhextion.

I open a rom file (.smc) and the program does open it ... but all i see beside the hex code is garbage ... no dialog at all.

I've tried all sorts of games, not only rpg, and all i get is garbage, pure symbolic nonesense. And some games display only empty spaces (00) or the max hex (FF).

Is there a setting I should change? or what am I doing wrong?

Thanks in Advance for any response.

bzeroneo


(edited by bzeroneo on 10-27-05 09:22 PM)
Danielle

Local Moderator
Level: 76

Posts: 3202/3359
EXP: 3958078
For next: 47982

Since: 09-15-04
From: RATE

Since last post: 3 hours
Last activity: 3 hours
Posted on 10-28-05 07:08 AM Link | Quote
Gonna bump this over to ROM hacking forum..

Good luck.
bzeroneo
Newcomer
Level: 2

Posts: 2/6
EXP: 33
For next: 13

Since: 10-28-05

Since last post: 3 days
Last activity: 1 day
Posted on 10-28-05 07:20 AM Link | Quote
Just adding something to my question post above.

I tried the Alien 3 rom. It is the only one that has given me text that makes sense, mission orders, menu strings and the credits showed properly, I was even able to do some editing.

Still all other roms give me nothing but, what at least to me seems garbage.

Hope you can help

bzeroneo

-----------------------------------------------------------------------------------------------------------------------
kuja killer

Rat
Level: 11

Posts: 67/80
EXP: 4582
For next: 1403

Since: 09-22-05
From: Lake Havasu City, Arizona

Since last post: 10 hours
Last activity: 1 hour
Posted on 10-28-05 07:34 AM Link | Quote
What exactly are you attempting to search for specifically to edit? Just in-game text? Or anything you can find ?

Most of the time you'll just see lots of garbled nonsense on the text string side in a hex editor. It's common.

And I take it you're working with just Super Nintendo roms ?
BTW - you're not doing anything wrong 99% sure. I've not used that hex editor before, but I have used XVI32 though which is a pretty good one.


(edited by kuja killer on 10-27-05 10:43 PM)
Schwa

Green Birdo
The Embodyment of Good,
infused with the Living Assets

"Alpha Psibeam!" (echo effects)

Level: 66

Posts: 2187/2214
EXP: 2457091
For next: 4760

Since: 04-25-04
From: Spanaway, WA

Since last post: 1 day
Last activity: 13 hours
Posted on 10-28-05 08:03 AM Link | Quote
Translhextion is the best Hex Editor for hacking in-game text. It's the one I use, and I am glad to see someone else use it proudly like that. Allow me to explain how to edit Text...

First, what you need is a Thingy Table! To get one, use the Search menu and the Scan Relative option, and scan the Rom for the EXACT string you're looking to edit, case sensitive. If you type it in perfectly and it doesn't work, it's not your fault; half of the time, Translhextion (as with most Hex Editors) can't tell some upper-case letters or punctuation. This is especially the case with SMB3, for example. Just type in another string, hopefully nearby the one you're after, and give it another shot.

Should it find a string, immediately hit Generate Table. This will save a Thingy Table into play. Now, go to the Table menu and the Open Thingy Table option, open your recently begotten Table, and suddenly your runes have morphed into *trumpet fanfare* random letters!

From here on it's only a matter of changing the bytes in the strings to make the letters you want. You can be sure of the fact that each letter is assigned a 2-digit hex number, and it'll really help you if you make a chart on paper or something that says what each letter's 2-didgit hex value is. That's what I did for SMB3.

Man, I know I'm nothing compared to some hackers in this community, so I usually keep quiet, but MAN! It felt REALLY good to actually be useful for something for once! Dude, do me a favor, take this advice and run with it, making a legendary hack in the end. I feel fulfilled that I was finally able to throughly help a fellow Haxxor.
FloBo

Koopa
Level: 17

Posts: 98/101
EXP: 20723
For next: 4020

Since: 09-11-04

Since last post: 3 days
Last activity: 13 hours
Posted on 10-28-05 10:15 AM Link | Quote
@Schwa: Feels good to help, doesn't it?^^

Anyway, for basic stuff like hacking uncompressed Texts within a rom, Translhextion may be a good idea (It's also my Hexeditor of choice, btw), but once you dealt with textcompression (which is not unlikely), you may want some alternative. Many of my romhacking friends use SNESedit which supports tables for compressed text. But if you ask me, better code some dumper and inserter for your Dialogs that handles text-compression for you. It saves a lot of time and you don't have to alter the rom directly thus damaging it in any way. Especially when trying to make a whole text-conversion of an RPG which is a lot of work, it becomes handy having dumper/inserter instead of a hexeditor.

But now, go ahead and follow Schwa's advice and try this. If you succeed, there's no text-compression used in the desired game. Else, you might want to come back to get an introduction into text-compression as well^^
bzeroneo
Newcomer
Level: 2

Posts: 3/6
EXP: 33
For next: 13

Since: 10-28-05

Since last post: 3 days
Last activity: 1 day
Posted on 10-28-05 08:07 PM Link | Quote

Thanks both for the replies: I wanna try what schwa recommended, yet i dont seem to find this convert table command, is it in Translhextion or must I download Thingy?

And also one more thing. For example when I opened Alien 3, the text was readable right there after opening it... I needn't do anything else...

Yet in any RPG I try, even going line by line I fnd nothing. Does this mean text is encoded?

In Chrono Trigger for example, the only readable thing in the whole this is the game title itself like so:

43 48 52 4F 4E 4F 20 54 52 49 47 47 45 52 // more hex // CHRONO TRIGGER

I could easily figure out the whole alphabet (although not punctuation) just from this but the thing is that it is the only thing redable in the whole rom. So is the rest encoded or something?

I'm sorry if this are "too noob" questions. I just need some help.

Thank You in advance.

bzeroneo
-----------------------------------------------------------------------------------------------------------------
blackhole89

LOLSEALS
Moderator of ROM hacking
EmuNET IRC network admin
Head GM of TwilightRO
Level: 47

Posts: 958/971
EXP: 739208
For next: 26995

Since: 03-15-04
From: Dresden/Germany

Since last post: 14 hours
Last activity: 12 hours
Posted on 10-28-05 09:11 PM Link | Quote
Most RPGs with larger amounts of text use some kind of syllable/frequent combinations compression for their text. I suggest you use the respective editor or google for a table file for the respective game.
FloBo

Koopa
Level: 17

Posts: 100/101
EXP: 20723
For next: 4020

Since: 09-11-04

Since last post: 3 days
Last activity: 13 hours
Posted on 10-28-05 09:13 PM Link | Quote
I haven't looked into Chrono Trigger yet, but just try to search for words like "sword" or something that appears regularly, 'cause what you may have found could be the game's internal name. This name doesn't have to be encoded with the same Thingy table like the dialogs are...

Concerning Alien3: This game seems to use neither text-compression nor any special character-encoding. It uses usual ASCII-code that is default by every ordinary hex-editor.


The convert table command.... well, I never used it cause I usually create my tables by hand. But let's see: alright.... open your translhexion-exe. open the rom you with to hack within the editor. then open Search->Scan Relative. Type in the word your're searching. Then press the button Save Results. This will save the thingy table into a file "YourFileName.tbl"... well at least hopefully it will.... never tested it. Having done this, open it via Script->Open Thingy Table... . Having done this, you'll just have to activate the table in the little window now opening. You should be able to read all texts, if there's no compression used.

That's about it. Any problems?!
bzeroneo
Newcomer
Level: 2

Posts: 4/6
EXP: 33
For next: 13

Since: 10-28-05

Since last post: 3 days
Last activity: 1 day
Posted on 10-29-05 03:26 AM Link | Quote

Thank you for the replies everyone.

Ok now I know that rpg's (or at least the long ones) are text-compressed.

Thanks blackhole89

Now FloBo thanks for the recommendation but what you tell me to do is exactly the problem i have ... I open Chrono Trigger.smc, i run the relative search but no word will give me results except for CHRNONO TRIGGER (which is in normal ASCII). Not even the characters' names, weapons or enemies will give a result in the search.

Its odd

Could something be wrong with the rom?

Thanks for replies.

bzeroneo
--------------------------------------------------------------------------------------------------------------------
JLukas

Red Paragoomba
Level: 13

Posts: 48/51
EXP: 8897
For next: 1370

Since: 03-15-04
From: USA

Since last post: 9 hours
Last activity: 6 hours
Posted on 10-29-05 05:29 AM Link | Quote
Every SNES game has an internal header that (usually) has the name of the game in ASCII text. That's where you're getting that CHRONO TRIGGER result. The actual in-game text you're looking for is encoded differently, most SNES games are like this, and require a table to translate the text to ASCII.

Here's an example. You're looking for the monster name Spekkio in Chrono Trigger. In Translhextion select Search -> Search Relative. Enter Spekkio and hit Search. It brings you to $0C6EA0 with that string highlighted. That's Spekkio's name. Now you need to make a table to convert it to ASCII.

Look at the string:

B2 C9 BE C4 C4 C2 C8

S p e k k i o

Now you start making a table exactly like this in a plain .txt file:

B2=S
BE=e
C2=i
C4=k
C8=o
C9=p

..and you repeat this with different names until you get all of the upper and lower case letters. You don't even really need to do that, look above and you can guess that C3=j, C5=l, C6=m,C7=n, etc.

Once you have a complete table, rename the extension for .txt to .tbl. Then in Translhextion go to Script -> Open Thingy table. It'll now make the previously unreadable text visible.

Fortunately, this has all already been done with Chrono Trigger. You can get the complete .tbl from zophar.net, and an offsets guide that lists where all the text is from Geiger's Crypt http://geigercount.net/crypt/

Of course, you can use Temporal Flux, the Chrono Trigger editor, to change text without having to edit it manually in a hex editor.

This is just a basic example, it gets more advanced with things like dictionary compression (used for the main dialogue in Chrono Trigger) To learn more I HIGHLY, HIGHLY recommend reading the Table FAQ tabdef.txt file available at Zophar's.




(edited by JLukas on 10-28-05 08:31 PM)
bzeroneo
Newcomer
Level: 2

Posts: 5/6
EXP: 33
For next: 13

Since: 10-28-05

Since last post: 3 days
Last activity: 1 day
Posted on 10-30-05 06:49 AM Link | Quote
Thank you JLukas, with your help I've made my table for the complete alphabet.

Now to check my work I downloaded the complete table fom Zophar. I was correct, but now another thing puzzles me.

Its curiousity mostly. I see in the table that some hex values stand for complete words or syllables. My question is how does one come up with those for the purpose of having the complete table?

A relative search won't give results for those hex values of course. And doing it by looking at the script with the partial table would take ages.

I could figure some on my own like the 'as' syllable because with my alphabet only table showed in parts of the script things like:

GuardiaC#tle and the value corresponding to the # was 61 so 61 in hex means 'as' but like I said, doing it this way to try and figure out all those kind of values would take a loooong time.

So how does one figure this out?

Also where do I toggle between hex editing and direct editing of script?

Thanks for replies

bzeroneo
-------------------------------------------------------------------------------------------------------------------


(edited by bzeroneo on 10-29-05 10:55 PM)
JLukas

Red Paragoomba
Level: 13

Posts: 50/51
EXP: 8897
For next: 1370

Since: 03-15-04
From: USA

Since last post: 9 hours
Last activity: 6 hours
Posted on 10-30-05 07:50 AM Link | Quote
Originally posted by bzeroneo

Its curiousity mostly. I see in the table that some hex values stand for complete words or syllables. My question is how does one come up with those for the purpose of having the complete table?



This is the dictionary compression I mentioned in my previous post, where a hex value represents more than a single letter. Again, the tabdef.txt FAQ is a huge help, and does a better job at explaining this than I could.

You have 2 options:

The first method, which is easy but slow, is to simply replace the hex value with something else. Save, load the game, go where that text string is displayed, and see what it says now.

Example, with the Guardia C#tle, you replace that hex value of 61 with 62 and save. You go into the game where that specific line of text is displayed (of course, the phrase "Guardia Castle" is used in the dialogue a number of times, so you have to find the right place first) and it'll now display "Guardia Cowtle" Now you know that hex value 62 is for "ow" Then you keep doing this with different hex values to continue completing your table.

The second option is where things get a little more advanced, and knowing things like pointers, ASM and how to use a debugger becomes necessary.

The goal is to find the substring dictionary. In Chrono Trigger the pointers to the substring entries start at $1EFA00, and the data itself begins at $1EFB00

I'm skipping ahead a little here, but look at offset $1EFCC. The first byte is 02, which means 2 bytes follow, BA CC. Now you'll notice in your table so far that BA is a, and CC is s. That's the hex value 61 "as" entry. If you work your way through the pointer table start to finish you'll get all the dictionary entries. There's a bit more detail involved here but that should give you a general idea.

To answer the question about toggling the script, check the Translhextion readme. IIRC, after you've built your table you can just enter plain text in the window and have the program automatically convert and optimize it back into the file.




(edited by JLukas on 10-30-05 01:09 PM)
bzeroneo
Newcomer
Level: 2

Posts: 6/6
EXP: 33
For next: 13

Since: 10-28-05

Since last post: 3 days
Last activity: 1 day
Posted on 10-30-05 08:44 AM Link | Quote
Thanks again for the reply JLukas, its really helpful.

Although I still have problems with script editing because when I try to do so, what I actually end up modifying the hex and of course only chars from A to F actually enter and the ten digits.

Thats why I ask about the toggle. I thought the TAB toggled (as it states in the menu) between hex editing and char editing, but when I toggle there is an od behavior because when I type anything, what is insterted are parts of the thingy table:

If I type 'w' for example what is inserted is 'our' (hex value 77). So this isn't the way to go.

Hope I explained myself ok.

Thanks for replies.

bzeroneo
--------------------------------------------------------------------------------------------------------------------
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Hello, newbie with a question.. | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.020 seconds.