Author
|
Topic: SNES Text Trans help - text dumping (newbie) (Read 2 times)
|
InVerse
Guest
|
|
« Reply #45 on: January 25, 2009, 02:16:00 pm » |
|
Okay, I'm still a bit confused. I think what you're saying is that there is a single byte value that will print LAYBALL when used. Is this correct?
If so, when you say "pointer" in this case, are you referring to that single byte? If so, let's get away from using the word pointer and, instead, use something like "dictionary byte" or some such. Technically, it is a pointer, but not a pointer in the traditional sense the word is usually used in regards to ROM hacking. (There would be traditional pointers involved in regards to indicating to which word each byte corresponds.)
Anywayz, I guess if you've resolved it, it doesn't really matter now. It sounds like you did it in the same manner I would have, keep breaking shit until it starts working. If you do need any more help with it, however, you might try including a couple of screen shots, one of the hex editor and one of the actual game, so we can see exactly what you're talking about.
|
|
|
|
Tauwasser
Guest
|
|
« Reply #46 on: January 25, 2009, 02:37:15 pm » |
|
Technically, it is a pointer No, technically, it's an index. Also, it sounded a lot like it was supposed to mean that tiles get used in both menus but are only loaded for one, so you can't use other tiles besides the ones used in Playball. cYa, Tauwasser
|
|
|
|
vx
Guest
|
|
« Reply #47 on: January 26, 2009, 11:56:22 pm » |
|
Okay, I'm still a bit confused. I think what you're saying is that there is a single byte value that will print LAYBALL when used. Is this correct?
If so, when you say "pointer" in this case, are you referring to that single byte? If so, let's get away from using the word pointer and, instead, use something like "dictionary byte" or some such. Technically, it is a pointer, but not a pointer in the traditional sense the word is usually used in regards to ROM hacking. (There would be traditional pointers involved in regards to indicating to which word each byte corresponds.)
Anywayz, I guess if you've resolved it, it doesn't really matter now. It sounds like you did it in the same manner I would have, keep breaking shit until it starts working. If you do need any more help with it, however, you might try including a couple of screen shots, one of the hex editor and one of the actual game, so we can see exactly what you're talking about.
I guess you can call it an index or something else? The ROM uses some pointers that seem to have their own byte format (which I have not decoded) - they are a pointer within a text block that point to addtional text (weird) but do not follow the same pointer table...for now I am staying clear of them! Yes there are also the "dictionary byte" pointers too, and in some cases the text doesn't even use pointers...not sure how to squeeze the text in at this time, perhaps I will have to use "Y" for yes and "N" for no. It's been a learning curve and a pain when you get into this non-standard bytes. Sure I can and will post screen shots, I didn't want to sound insulting - look at this and everyone knows what it is...that type of BS that n00bs do :laugh: Tauwasser what is the differnce between an index and a pointer?
|
|
|
|
Tauwasser
Guest
|
|
« Reply #48 on: January 27, 2009, 04:01:44 am » |
|
Well, usually a pointer points somewhere and an index is just an ordinal number corresponding to a single entry in a table somewhere. Usually, you will have certain bytes that are just dictionary indices and another routine in the game handles where and how this text comes from. Example: Your dictinary codes start at 0xD0 and end at 0xD3 (that is, there is only 4 of them in this example). Now, the game does the following: Get dictionary byte. Subtract 0xD0 from it. Times by 2. (If each pointer takes 2 bytes) Add to Offset X. Read pointer from Offset. Display text at Offset Return to main text engine.
X: [PNT1][PNT2][PNT3][PNT4][here][thing][see][really]     |    |    |   |    ^    ^   ^   ^ ã€€ã€€ã€€ã€€ï½œã€€ã€€ã€€ã€€ï½œã€€ã€€ã€€ã€€ï½œã€€ã€€ã€€ï½œâ€•â€•â€•ï½œâ€•â€•ï½œâ€•â€•ï½œâ€•ï¼ ã€€ã€€ã€€ã€€ï½œã€€ã€€ã€€ã€€ï½œã€€ã€€ã€€ã€€ï½œâ€•â€•â€•â€•â€•â€•ï½œâ€•â€•ï½œâ€•ï¼ ã€€ã€€ã€€ã€€ï½œã€€ã€€ã€€ã€€ï½œâ€â€â€•â€•â€•â€•â€•â€•â€•â€•â€•ï½œâ€•ï¼ ã€€ã€€ã€€ã€€ï½œâ€•â€•â€•â€•â€•â€•â€•â€•â€•â€•â€•â€•â€•ï¼ This didn't turn out as nicely, quote my post and you'll see it correctly in the edit window.
So, if your text looks like 「T[0xD0] is no[0xD1] to [0xD2], [0xD3].〠It would be "There is nothing to see, really." It is important to understand that the values 0xD0 thru 0xD3 do not point anywhere, they're just values! The game can do with them whatever it wants! On the other hand, you can have pointers in texts, that are real pointers and actually point to stuff in a certain/current rom bank etc.! If you're dealing with pointers here, you might as well just find where they point to. If you deal with other values, it might not be as easy, because the game can juggle around with them all it likes. cYa, Tauwasser
|
|
|
|
vx
Guest
|
|
« Reply #49 on: January 27, 2009, 09:10:58 pm » |
|
Thank you very much once again Tauwasser for that nice detailed explanation. Now that sums it up for me and I understand the difference between a pointer and index values (and how they work) very interesting! I have indeed come across these values and if there is a standard in the way they work I do not know what it is, except the ones I have seen seem to point to a pointer table and not text blocks themselves. It's easy for me to determine if it is a pointer or a value now, I am not going to go crazy w/ values as I can adjust my translation if needed...as long as it gets finished. I do have a problem w/ the current screen (hopefully I don't have to ask for help) as I can find the text blocks, edit them and they don't change on screen...the only thing I can think of is I am editing the wrong blocks until I do further research. Thanks
|
|
|
|
InVerse
Guest
|
|
« Reply #50 on: January 27, 2009, 10:17:57 pm » |
|
I can find the text blocks, edit them and they don't change on screen...the only thing I can think of is I am editing the wrong blocks until I do further research.
One really obviously thing you might be overlooking (as I and probably most people here have also done at one point or another....) Are you reaching the screen you're referring to via a save state? If so, it's possible that the text is already stored in that save state and isn't being reloaded fresh from the ROM. If that's the case, you'll have to find some way to force the game to reload, either playing through to that point again or going to/away from a subscreen and back to the text in question.
|
|
|
|
vx
Guest
|
|
« Reply #51 on: January 29, 2009, 05:49:05 pm » |
|
EDIT: Well I have some screen shots and a patch for anyone who really cares about this, I am only happy as it's my first translation It's not 100%, most KANJI has not been translated and some menus very well may use *compression* so I'll never get to those. It's far from perfect, it is a beta patch (mainly for testing). Download the patch: http://www.mediafire.com/?myjmymmxzujROM: Ultra_Baseball_Jitsumeiban (SNES) (part ENG beta 001).zip Some good news is that the next game in the series (Super Ultra Baseball 2) the one that was mentioned in this thread: http://www.romhacking.net/forum/index.php/topic,4397.0.html uses basically the same table format and I have been able to start work on that game, which is quite different and uses a new engine. The current problem with that is the text can only be viewed at 1BPP and the bitplane images are not complete in a box (hard to explain w/o a screen shot) so editing the KANI is the only issue...text is easy since it contains the complete ROMAJI alpha. I can find the text blocks, edit them and they don't change on screen...the only thing I can think of is I am editing the wrong blocks until I do further research.
One really obviously thing you might be overlooking (as I and probably most people here have also done at one point or another....) Are you reaching the screen you're referring to via a save state? If so, it's possible that the text is already stored in that save state and isn't being reloaded fresh from the ROM. If that's the case, you'll have to find some way to force the game to reload, either playing through to that point again or going to/away from a subscreen and back to the text in question. I won't use Save States for that reason and this game is mostly menus so I am not dealing with in-depth platform or rpgs etc. I have just skipped over that section for the time being until I have to figure it out, hopefully I will. If you have any other ideas please let me know. Thanks InVerse.
|
|
« Last Edit: February 03, 2009, 12:47:00 am by vx »
|
|
|
|
|