Author
|
Topic: SNES Text Trans help - text dumping (newbie) (Read 2 times)
|
InVerse
Guest
|
|
« Reply #15 on: January 17, 2009, 09:42:49 am » |
|
1. I am having problems doing a realative search in Kana, perhaps this is not possible? I am using Windhex to search for some words written in katakana. I have no problems with English text. I know there is some limits to this such as case sensitive not being supported.
The only way relative searching with kana is going to work is if your game happens to use the exact same kana ordering as the utility (and while there seems to be a standard order when I see kana tables in books and such, it certainly isn't used very often in games) or the utility allows you to use a custom kana table (and I'm not sure such a utility exists.) You can, however, use the relative values, as explained in my document, to do a Value Scan Relative search in Translhextion. 3. Can I find the values of characters by looking at the table in TLP? Addtionally is this one an Anomalie that you speak of in your doc?
You can't find the values, only the relative values. However, if you can find the values of an English word using the first couple of lines of the font, the values will continue in order from there. (For instance, if your relative search determined that the value of A was 0A then the value of ン is going to be BC under normal conditions.) Also, note that if you are doing a relative search for English words using that font, you won't successfully find any words that contain a W, X, Y or Z in a normal relative searcher because of the 0-10 and the box between the V and the W. Relative searchers that allow you to simply type an English word will assume the the relative difference between V and W is +1, but in this font it is +13. So to find a word using W-Z, you would have to use the aforementioned Value Scan Relative search which is currently only available in Translhextion. (I'm not entirely clear on what you're asking about in terms of anomalies, though.)
|
|
|
|
vx
Guest
|
|
« Reply #16 on: January 17, 2009, 02:15:05 pm » |
|
Tauwasser yes if I edit any of the characters that use the word "START" it will change in the ROM. Perhaps this game is a bit more simple and I got lucky? I haven't quite covered control codes yet so I can comment about those, from my tests I believe I now have a table for numeric and romjai characters - I haven't tested them all yet. As for the letter "T" I believe the correct code is 1D, as S=1C and u=1E. Thank you for the info about using alphabetical order, the game as you can see is pretty much in order except for some characters near the end, not sure why. The Kanji are in a different section, sure I'll ask for help when I get to that point InVerse thanks again I will try the Translhextion utility. My relative values have detirmed that 0=00, A=0a etc. I see that after V=1F then there are the different font numerals (0-9) thus W=2C, again I have not tested all of these but enough to determine this is the order unless they are control codes or something? I'll do more testing tonight. As for what I was asking about anomalies was SMB2 NES was pretty straight forward A-Z whereas you can see on my screen shot it's 0-9 (Font 1), A-V, 0-9 (Font 2), ING. charcater, V-Z etc. is this an anomalie is what I was asking? I guess not. So if 0=00, A=0A etc. is there an easy way to know what the H & K are? I am going to try to count them and convert to hex...in other words is every bitplane I see is in chronological order? Thanks again.
|
|
|
|
InVerse
Guest
|
|
« Reply #17 on: January 17, 2009, 03:00:03 pm » |
|
My relative values have detirmed that 0=00, A=0a etc. I see that after V=1F then there are the different font numerals (0-9) thus W=2C, again I have not tested all of these but enough to determine this is the order unless they are control codes or something? I'll do more testing tonight.
Don't get too hung up on control codes. I'm not sure that I've seen a game where a control code has a value in the middle of a font table value range, so it shouldn't matter as far as figuring out the values for your table. Basically, once you've built the initial table, you'll have to poke around in the ROM and see what you can find. Once you've found some text, you'll likely see a few bytes before, after and/or in between the lines. These will be your control codes and you'll just have to experiment with them to see what they do. As for what I was asking about anomalies was SMB2 NES was pretty straight forward A-Z whereas you can see on my screen shot it's 0-9 (Font 1), A-V, 0-9 (Font 2), ING. charcater, V-Z etc. is this an anomalie is what I was asking? I guess not.
Now that I've went back and read what I wrote about anomalies, you would be right. That would be a non-linear font. So if 0=00, A=0A etc. is there an easy way to know what the H & K are? I am going to try to count them and convert to hex...in other words is every bitplane I see is in chronological order?
Hexadecimal is a Base 16 numerical system. It isn't a coincidence that Tile Layer Pro's default view is 16 tiles wide by 16 tiles high. Imagine a row of hex values across the top and along the left side of your tiles, with a 0 over the 0 in your font, on down to an F over the F in your font, then a 0 to the left of your 0 and an F to the left of what looks to be the upper quarter of a smiley face (the first column of the bottom row.) Take the left value, then the top value and you have the hex value for that particular character. Hence, 00=0 and 0A=A, as you've already determined. 11=H and 14=K on down to D9=?. Also, remember that you've already determined that the value of 0 is 00. If it was something else, say 01, you would have to shift the view in TLP so that 0 was in the slot for 01. (In other words, just because you have a particular tile in the first slot doesn't give it a value of 00.) And a minor tip for making your table: If I were building a table for that font, I would type the second set of numbers as (0) (1) (2), etc. That way, when you're viewing it in a hex editor, you won't be confused as to whether you're seeing the 0 from the first row or the 0 from the third row.
|
|
|
|
Tauwasser
Guest
|
|
« Reply #18 on: January 17, 2009, 05:05:05 pm » |
|
Don't get too hung up on control codes. I'm not sure that I've seen a game where a control code has a value in the middle of a font table value range, so it shouldn't matter as far as figuring out the values for your table. You sure didn't see a lot then. Also if you can find the values of an English word using the first couple of lines of the font, the values will continue in order from there. is too generic. It might be, it might not be like that. Just worked on a game where it does a conversion -0x20 from Range 0x60 on, just because it can... Also, what inverse is saying 。ï¼ï¼‘23456789ABCDEF ï¼ï¼¢ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ï½œ 1          | 2          | 3          | 4          | 5          | 6          | 7          | 8ーーーーーーーX ï¼™ A ï¼¢ ï¼£ D ï¼¥ F
Now, if you want to know X's value for your tablefile, assuming it's a straight list in GFX, then you just ADD the value you determined for B to the value you get when taking the rows/columns approach as shown above, which would yield 0x8A, and then you're done. So, if your Base B has value 0x05, and you want to know the value for H for your tablefile, simply put H = 0x8A + 0x05 = 0x8F and then you're done. This approach generally requires that this gfx table be linear, meaning that (table entry number +1) follows directly after (table entry number)! If it jumps in the middle, you have to offset for that as well. cYa, Tauwasser
|
|
|
|
InVerse
Guest
|
|
« Reply #19 on: January 17, 2009, 07:26:19 pm » |
|
Don't get too hung up on control codes. I'm not sure that I've seen a game where a control code has a value in the middle of a font table value range, so it shouldn't matter as far as figuring out the values for your table. You sure didn't see a lot then. Also I've seen games that use a control code with the same value as a font character, but I've never seen a game that had something like 2A=C, 2B=some control code, 2C=D. But, yes, I've only hacked a couple of dozen games and only 2 of them were RPGs (and pretty basic ones at that) so I'm sure there are thousands of anomalies I haven't encountered. But vx is translating a sports game, so odds are good that it doesn't use a bizarre text routine.
|
|
|
|
vx
Guest
|
|
« Reply #20 on: January 19, 2009, 12:01:53 am » |
|
Thanks again for all your Help Inverse & Tauwasser. I was able to calculate what you said and able to build a table Thanks for the heads up concerning the second set of numbers, I was going to ask what I should do. 1. How do I write the small "o" symbol in NJstar? Since I can't type it, here's the screen shot (hex value 5F): 2. Concerning that word, the English translation is roughly Exhibition (least that's what they did for the US version to the previous game) maybe "Practice" is better but can't run it through any translators or look it up since I can't type it. The problem is the English string is too long. Japanese String: 94 82 AB 5F BD (6 bytes) English String: 0E 2D 11 12 0B 12 1D 12 18 17 (10 bytes) In Windhex when I paste as Hex or Text it will overwrite the next line thus screwing up the text. If I use the insert option in Hexworkshop it screws up the checksum and the ROM won't run at all. W/o getting into ASM (not something I know or can learn overnight) is there anything I can do or does it need to be 6 bytes or less?
|
|
|
|
RedComet
Guest
|
|
« Reply #21 on: January 19, 2009, 01:03:11 am » |
|
In Windhex when I paste as Hex or Text it will overwrite the next line thus screwing up the text. If I use the insert option in Hexworkshop it screws up the checksum and the ROM won't run at all. W/o getting into ASM (not something I know or can learn overnight) is there anything I can do or does it need to be 6 bytes or less?
You need to learn about pointers, my friend.
|
|
|
|
Ryusui
Guest
|
|
« Reply #22 on: January 19, 2009, 02:41:38 am » |
|
1. How do I write the small "o" symbol in NJstar? Since I can't type it, here's the screen shot (hex value 5F):
That's a handakuten (ã‚œ), and on that subject the symbol next to it isn't a quote mark; it's a dakuten (ã‚›). Simply typing in ã¯ã‚“ã ãã¦ã‚“ and ã ãã¦ã‚“ should bring up the symbols under the conversion options.
|
|
|
|
Tauwasser
Guest
|
|
« Reply #23 on: January 19, 2009, 03:58:45 am » |
|
You should also familiarize yourself with this. Applies to Vista, too. cYa, Tauwasser
|
|
|
|
vx
Guest
|
|
« Reply #24 on: January 19, 2009, 04:22:21 pm » |
|
You need to learn about pointers, my friend. What about pointers? What good documention can I read on those? 1. How do I write the small "o" symbol in NJstar? Since I can't type it, here's the screen shot (hex value 5F):
That's a handakuten (ã‚œ), and on that subject the symbol next to it isn't a quote mark; it's a dakuten (ã‚›). Simply typing in ã¯ã‚“ã ãã¦ã‚“ and ã ãã¦ã‚“ should bring up the symbols under the conversion options. OK I will try that Ryusui. You should also familiarize yourself with this. Applies to Vista, too. cYa, Tauwasser Ah thanks Tauwasser, I am hacking on an XP PC so should be simple enough to get this set up.
|
|
|
|
RedComet
Guest
|
|
« Reply #25 on: January 19, 2009, 04:27:10 pm » |
|
You need to learn about pointers, my friend. What about pointers? What good documention can I read on those? The "Pointer Hacking" document category is a good place start your search.
|
|
|
|
vx
Guest
|
|
« Reply #26 on: January 19, 2009, 04:30:17 pm » |
|
You need to learn about pointers, my friend. What about pointers? What good documention can I read on those? The "Pointer Hacking" document category is a good place start your search. I didn't even see that, thanks that will work :thumbsup:
|
|
|
|
InVerse
Guest
|
|
« Reply #27 on: January 19, 2009, 08:50:52 pm » |
|
I'm not sure that there *is* a good pointer hacking document. Mad Hacker's document is solid as far as information goes but the organization is absolute shit. Xcalibur's document seems to be organized nicely but doesn't appear to contain any examples. And the Gameboy document seem to be geared towards someone who already knows how to hack pointers on other systems.
I've mentioned in the past that a new pointer document needs to be written and seeing as how the official release of my relative search document should occur by the weekend, I guess I know what my next project is. In the meantime, I would recommend The Mad Hacker's document. As I said, it looks like shit, but the information in it is good. It's how I learned to hack pointers.
|
|
|
|
vx
Guest
|
|
« Reply #28 on: January 20, 2009, 02:48:22 am » |
|
I'm not sure that there *is* a good pointer hacking document. Mad Hacker's document is solid as far as information goes but the organization is absolute shit. Xcalibur's document seems to be organized nicely but doesn't appear to contain any examples. And the Gameboy document seem to be geared towards someone who already knows how to hack pointers on other systems.
I've mentioned in the past that a new pointer document needs to be written and seeing as how the official release of my relative search document should occur by the weekend, I guess I know what my next project is. In the meantime, I would recommend The Mad Hacker's document. As I said, it looks like shit, but the information in it is good. It's how I learned to hack pointers.
I read Xcalibur's document today, still confused since ROM text in a technical sense is a "pointer" right? It's a pointer to a bitplane file...so I have no idea what a pointer is (yet). Thanks I am reading the mad hackers now, hope this helps me grasp it. I agree from what I can see a new pointer doc would be ideal Thanks again.
|
|
|
|
KaioShin
Guest
|
|
« Reply #29 on: January 20, 2009, 07:19:09 am » |
|
I read Xcalibur's document today, still confused since ROM text in a technical sense is a "pointer" right? It's a pointer to a bitplane file...
Interesting way to look at it like that. Not entirely right though. The text values are the offsets to the font pointer. There is one pointer that tells the game where the font is stored. The text values are offset values (multiplied by the amount of bytes per character in the font) that are then added to that pointer. For example on the GBA, say you have a font stored at 0x08001000 and one character is 0x20 bytes of data. Let's also say you have the following fragment of a table file: 10=a 11=b 12=c If you'd then want to write 'abc', the game would load the font pointer (08001000), look for the table value of the first character (10) and multiplay that by the amount of bytes per character (20) to get an offset value of 0x200. That's added to the original pointer then. 0x08001200 would be the pointer to the character "a" in the font. Accordingly, you'd get 08001220 for "b" and so on. You wouldn't find that pointer to the character in the ROM anywhere, since it's calculated from a base pointer with an offset. Pointers to text usually work differently. They don't point to any graphics, they point to individual strings of text. There are usually no offsets involved here, although there can be, depending on the game.
|
|
« Last Edit: January 20, 2009, 11:51:46 am by KaioShin »
|
|
|
|
|