Home | Forums | What's new | Resources | |
Changing Memory Items |
legalize freedom! - Jul 17, 2006 |
ExCyber | Jul 17, 2006 | |||
I'm not sure what you want to do. Can you elaborate a bit? |
ExCyber | Jul 17, 2006 | |||
Yeah, I see what you mean. I can't supply any details about how SF3 does it, but normally how this is done is to have a "formatting sequence" (in the case of the standard C printf function, these would be strings like %d, %s, %x, etc., but SF3 is almost certainly using something else) in the string, and extra parameters passed to the display routine that supply the address or value of the thing to substitute for the formatting sequence. In the case of a string, it would be passing the memory address and possibly the length of the string to substitute (item/character/spell name). Probably what happens is something like this: - Player triggers a "get item" event - Game calls the "get item" subroutine with the reference number for the particular item obtained - for the sake of illustration I'll say it's item #42 - The subroutine does any checking and sorting necessary to add one of item #42 to the inventory - The subroutine loads the 42nd entry in a table of string addresses for item names, and passes this address and the address of the common string to a display routine Unless you're going to somehow manage to replace all of these strings with ones of equal length, you'll need to know the location and format of this table so that you can generate a new one pointing to the proper addresses for your translated strings. There are several possible approaches to finding it. One is to locate the subroutine in question and find the address of the table there. Another would be to run the game in an emulator, do a RAM dump, find the actual strings, then search for the offsets where each string begins in order to find the table. I've never looked at SF3's code, but the situation is probably at least similar to what I've described. If you're not comfortable looking at code then you'll have to talk to somebody who will hack it for you. If you want to give it a shot yourself I'd be happy to answer any other questions you have. |
legalize freedom! | Jul 17, 2006 | |||
What emulator should I use for this and what can I expect for output? Is this the same memory dump as the action replay features? I can get codes with cassini, using the memory dump (CSS action replay.exe)... I know which memory slot it is (12)... but somehow I don't think this is what your talking about... sounds as if your expecting different output. I suppose I will have to do it (qualified or not). What I would really like is someone who really knows how this machine works to join the translation team (even if only as a consultant). We number at least a dozen and are making excellent progress. (close to half finished with scenario 2). Just thought I'd throw that out there if anyone here is interested and qualified. You can check our message board at Shining Force Central. I really appreciate your help ExCyber. I feel like I only have a couple of tasks I need to figure out to take this project to completion. If you can point me to the software I need to accomplish this, I will be half way there. One more thing please. How do you get the LBA table off of the game cd? EDIT: These problems have been solved due to a little help from my friends. Turns out the game stores these memory items when you start a new game and then they are saved with the save game file. So I had to start a new game for the changes to become apparent. legalize freedom! |