Author
|
Topic: SNES Text Trans help - text dumping (newbie) (Read 2 times)
|
vx
Guest
|
|
« on: January 13, 2009, 06:44:09 pm » |
|
I am new to ROM hacking, and decided to do this because no one will prob translate some games that I want.
I know basic Japanese (enough to find and replace, I studied Japanese back in college) though I want to focus on the hacking and will get actual help to properly translate (if you're interested LMK). Hex editing is not new for me, quite fluent with that.
I started by reading various docs here and found them useful, except not much on SNES. I found nice ones for NES and GBA but that doesn't help me.
I understand that most ROMs use "bitplane graphics" and the SNES games I looked at display the fonts in Tile Layer Pro. I was able to change fonts (from Japanese to English) but that's about it.
1. When I do change fonts on TLP the ROM always has a bad checksum according to snes9x, how do I fix the checksum?
2. What's the next step? OK I can change fonts...now how do I dump text so I can actually find and replace it?
ROMs I am looking at (and playing with) is Super Baseball Simulator 1.000 (U) [!] & Super Ultra Baseball (J) = same game but Jap and Eng versions, helps me learn.
The game(s) I am looking at to translate are: Ultra Baseball Jitsumeiban (J) & Super Ultra Baseball 2 (J), TLP does not display any fonts for SUB2 any idea why or how to view them? Since it works for UBJ I guess that is a better place for me to start.
|
|
|
|
InVerse
Guest
|
|
« Reply #1 on: January 13, 2009, 07:23:33 pm » |
|
A majority of the basic techniques used in hacking NES and GBA ROMs are identical when it comes to SNES. Your next step would be to do a relative search to determine the values of the text and then build a table file using those values. This will allow you to dump the text, presuming it's not compressed. Check out The Definitive Guide to ROM Hacking Tables (which I wrote) for more information. (Keep in mind that even if the font is uncompressed, it's possible that the text could be compressed. Or vice versa.) Regarding the font for SUB2, keep in mind that what Tile Layer Pro refers to as the SNES format is simply the bitplane most commonly used for SNES graphics. It's entirely possible that the font is stored in 1BPP, NES or Gameboy formats, so if you don't find what you're looking for under the SNES codec, try the others. (You also might want to check out Tile Molester, which was written by the same author and offers support for several other formats as well.) In regards to the checksum, I don't think that really matters but I'm sure someone can tell you where it's located.
|
|
|
|
Azkadellia
Guest
|
|
« Reply #2 on: January 13, 2009, 08:37:50 pm » |
|
Whenever I need to reset the checksum for SNES games, I just fire up WinHex, load the ROM, and click Tools->Repair SNES Checksum.
|
|
|
|
DarknessSavior
Guest
|
|
« Reply #3 on: January 14, 2009, 07:54:44 am » |
|
It's entirely possible that the font is stored in 1BPP, NES or Gameboy formats, so if you don't find what you're looking for under the SNES codec, try the others. (You also might want to check out Tile Molester, which was written by the same author and offers support for several other formats as well.)
Also note that if you try Tile Molester, they list those formats as 2bpp (GB) and 4bpp (SNES). Given that the game is SNES, and that the game is a sports title, you'll likely have to relative search to figure out the table values. I hate relative searching, just because it tends to be very hit-and-miss. But I did get it to work one a few tables I made. Whenever I need to reset the checksum for SNES games, I just fire up WinHex, load the ROM, and click Tools->Repair SNES Checksum.
Does this actually matter? I have no idea what a checksum is, but does having a bad checksum actually affect anything? ~DS
|
|
|
|
Azkadellia
Guest
|
|
« Reply #4 on: January 14, 2009, 10:16:37 am » |
|
Some emulators refuse to run a game unless the checksum is good.
|
|
|
|
KingMike
Guest
|
|
« Reply #5 on: January 14, 2009, 10:24:41 am » |
|
None of the major SNES emulators care.
|
|
|
|
RedComet
Guest
|
|
« Reply #6 on: January 14, 2009, 10:31:19 am » |
|
In my experience, Genesis/Mega Drive games are the only ones you have to worry about checksums with. Even then I just find the checksum code and disable it until I'm ready to release a patch, at which time I use FixCheckSum.
|
|
|
|
Tauwasser
Guest
|
|
« Reply #7 on: January 14, 2009, 11:29:55 am » |
|
[quo Some hardware refuses to run a game unless the checksum is good.
Fixed. In my experience, Genesis/Mega Drive games are the only ones you have to worry about checksums with. Even then I just find the checksum code and disable it until I'm ready to release a patch, at which time I use FixCheckSum.
As with Genesis/Mega Drive, there the games do the check sum test. However, in many cases the hardware check those checksums and you can't disable this. I have no idea if SNES cares, but honestly, it's so easy to make it compute a checksum, why not hack it properly? cYa, Tauwasser
|
|
|
|
InVerse
Guest
|
|
« Reply #8 on: January 14, 2009, 05:33:10 pm » |
|
I hate relative searching, just because it tends to be very hit-and-miss. But I did get it to work one a few tables I made.
If the text is uncompressed, relative searching should work a majority of the time. Occasionally, there may be control codes or the like that interfere but +95% of the time, relative searching should work fine.
|
|
|
|
vx
Guest
|
|
« Reply #9 on: January 15, 2009, 12:01:35 am » |
|
Thanks once again for your help InVerse, I have downloaded your document and will read through it tonight I will certainly try viewing the games using various modes, I wasn't aware about that. I am probably getting ahead of myself here, but at some point I'll need to do it - what is a relative search and what tools do I need? I am sorry if this is covered in your doc as I haven't read it yet. As for the checksum thanks Azkadellia, Windhex http://www.romhacking.net/utils/291/ (not winhex - wrong editor in case anyone is reading this) fixed the checksum The real SNES Hardware will not play SNES games w/ a bad or incorrect checksum, FYI in case anyone wants to know for SNES I use the SWC2 DX and also an SNES Flash Cart made by Tottek - I want my work to run on the real thing too, sure it's not necessity but why release stuff that won't run on the correct hardware? DarknessSavior I don't know what a ROM checksum is per say but as for data wiki covers this well: "A checksum or hash sum is a fixed-size datum computed from an arbitrary block of digital data for the purpose of detecting accidental errors that may have been introduced during its transmissions or storage. The integrity of the data can be checked at any later time by recomputing the checksum and comparing it with the stored one. If the checksums do not match, the data was certainly altered." Read the entire overview: http://en.wikipedia.org/wiki/ChecksumThank you all for your input and help, I really appreciate it.
|
|
|
|
KingMike
Guest
|
|
« Reply #10 on: January 15, 2009, 02:57:33 pm » |
|
I don't know if the tototek flash program automatically fixes checksums, but I know I haven't had to worry about it when putting a few of my ROM hacks on it (Kigurumi Adventure, 3x3 Eyes 1 and Jelly Boy 2 (which didn't have a good checksum in the first place, probably because it was a prototype).)
|
|
|
|
DarknessSavior
Guest
|
|
« Reply #11 on: January 15, 2009, 05:57:42 pm » |
|
I hate relative searching, just because it tends to be very hit-and-miss. But I did get it to work one a few tables I made.
If the text is uncompressed, relative searching should work a majority of the time. Occasionally, there may be control codes or the like that interfere but +95% of the time, relative searching should work fine. I dunno, I guess I just suck at it. And anyway, nowadays I can just use ASM to get table values, so I don't need relative searching. XD The only game I actually relative searched and was successful with was Demon's Blazon. >.> ~DS
|
|
|
|
InVerse
Guest
|
|
« Reply #12 on: January 15, 2009, 09:42:41 pm » |
|
I am probably getting ahead of myself here, but at some point I'll need to do it - what is a relative search and what tools do I need? I am sorry if this is covered in your doc as I haven't read it yet.
The Theory of Relative Searching should cover that. I haven't officially released this doc, as I still want to add a couple of more examples, but everything you need to know should be covered.
|
|
|
|
vx
Guest
|
|
« Reply #13 on: January 16, 2009, 02:23:39 am » |
|
KingMike I haven't tested any bad checksums w/ that cart (SWC DX2 won't) so it is possible Tommy implemented a checksum fix? Thanks for the info. Thank you very much InVerse, your guide has been an invaluable tool, even if it's 7 years old. I printed up your guide and reviewed it. I was able to successfully and quite easily change some text in the US ver to SBBS1k using your Relative Searching method. I will also review your new guide (thanks I really appreciate it). I have a few questions to make things easier for me. Are there any SNES emulators that contain a pattern editor? I am using the snes9x debug build didn't see any. I have indeed learned what a relative search is and it is quite tedious - hope there is a faster way...if not the game doesn't have too much text like an RPG does. EDIT: 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. 2. Using Windhex and doing a realative search and finding English text I am still not quite sure how to get the values? This is probably do to the tables being an Anomalie. So I understand that I am doing this correctly, take for instance the word "PUSH" the values I get is: P=19 U=1E S=1C H=11 There isn't any problem and those values do seem to work (i.e. 19=P) but what gets a little confusing is when I have more then one value for the same character such as "START": S=1C T=1D A=0A R=1D T=60 Both 1D and 60=T? Which one do I use? 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?
|
|
« Last Edit: January 17, 2009, 05:28:27 am by vx »
|
|
|
|
Tauwasser
Guest
|
|
« Reply #14 on: January 17, 2009, 09:07:49 am » |
|
S=1C T=1D A=0A R=1D T=60
You wouldn't have found this string relative searching to begin with. Are you positive it's an actual string the game uses? Have you tried editing it? If it is an actual string the game uses, try changing the 0x60 to 0x1D and see if something happens. If not, then the 0x60 might either map to 0x1D, or it might be a control code of sorts that repeats certain characters in strings. If the game bugs out, you know the 0x60 was important and it's even more likely it's a control code Also, for the Kana, do not use alphabetical order on those! Use the order the rom uses, if that doesn't work, try the Go-jÅ«-on ordering. Also, there are a few cases of the same kanji in there, 下 for instance, be aware of that - they might have different uses!. Also, some games never address the Katakana directly (though it would be possible), but instead have a code like [Katakana on]ã’ーむ[Katakana off] that would yield ゲームand so on. Also, for the Kanji, if you cannot find them youself, you can post in our script help and language discussion forums and people will gladly assist you if you show that you put effort into is, e.g. getting all the kana and other stuff in the table already etc.! cYa, Tauwasser
|
|
|
|
|