Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,476,084
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-24-24 06:36 AM
Guest: Register | Login

0 users currently in ROM Hacking | 3 guests

Main - ROM Hacking - Advanced Text Hacking New thread | New reply


RedJet
Posted on 03-08-09 01:13 AM Link | Quote | ID: 102330

Newcomer
Level: 4

Posts: 1/2
EXP: 210
Next: 69

Since: 03-08-09

Last post: 5525 days
Last view: 5525 days
...or it seems advanced to me. What do I know?

Up until now I've only dealt with relative searching, making tables & text hacking with hex editors. I was looking at how the text is stored in MGS: Ghost Babel (GBC) and I see there are several points where entire words are represented by only a couple of hex values.

For example, instead of 'Snake' being 1C 3D 30 3A 34, it's just FB 00. You can't change individual letters - you just have a hex value representing a pre-defined word (apologies if I'm using the wrong terms).

All I can find out through searching the usual resources is that this is probably dictionary/DTE related. I've found tutorials that explain how to institute DTE but none that explain how alter DTE values.

My question: how do I change what these dictionary codes point to? For example, how would I make FB 00 show 'Steve' instead of 'Snake' (I take it the same number of characters would have to be maintained)?

Any help would be much appreciated.

____________________
I need scissors!

Dwedit
Posted on 03-08-09 05:10 AM Link | Quote | ID: 102339


Red Paratroopa
Level: 30

Posts: 142/162
EXP: 163112
Next: 2757

Since: 03-07-07
From: Chicago

Last post: 3516 days
Last view: 1611 days
Use Data Breakpoints.

Wait for the game to read from the address in question, then follow the ASM code until you see it read the dictionary string.

____________________

Kawa
Posted on 03-08-09 03:01 PM (rev. 2 of 03-08-09 03:02 PM) Link | Quote | ID: 102351


CHIKKN NI A BAAZZKIT!!!
80's Cheerilee is best pony
Level: 138

Posts: 1591/5344
EXP: 30939494
Next: 723487

Since: 02-20-07
From: The Netherlands

Last post: 4496 days
Last view: 2631 days
I'd say it was indeed dictionary compression if it weren't for the null byte you mentioned. Smells more like FB itself is a dedicated "insert common word here" command byte and that 00 as a parameter means Snake...

Way I'd do it, assuming I'm right, I'd edit it to FB 01, see what it says then. Assume it says Campbell, for example. Search for "Snake", find one appropriately close to "Campbell", there ya go.

Ofcourse, that's just a theory.

____________________
Wife make lunch - Shampoo
Opera - give it a spin
Spare some of your free time?
<GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered
Kawa rocks — byuu

Celice
Posted on 03-08-09 05:01 PM Link | Quote | ID: 102352


Buzz Blob
Level: 39

Posts: 206/285
EXP: 379688
Next: 25083

Since: 04-06-07
From: Oroville, CA

Last post: 3684 days
Last view: 3645 days
That's basically how Destiny of an Emperor worked on the NES too: running a search for the actual word, rather than a string of words, would bring you to the dictionary table. From there, you could just see which words were which in terms of which comes where in the table.

RedJet
Posted on 03-08-09 05:09 PM Link | Quote | ID: 102353

Newcomer
Level: 4

Posts: 2/2
EXP: 210
Next: 69

Since: 03-08-09

Last post: 5525 days
Last view: 5525 days
Thanks for the help, guys. I tracked down the dictionary list of words & can edit them from there. The weird thing is I tried doing that before and couldn't get it to work - I must have just gone about it the wrong way.

List begins at offset 00148987 if anyone's interested!


Cheers

____________________
I need scissors!

Main - ROM Hacking - Advanced Text Hacking New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.019 seconds. (339KB of memory used)
MySQL - queries: 52, rows: 76/77, time: 0.015 seconds.