Thank you very much, but no explanation is good if it is not useful to the person who needs it Duiz
Do not worry, if you're not good at dancing with this rhythm, let's change the music Let's put things in perspective: 1.
Our goal is for the game to put the words we want and our information is almost nil. 2.
We found 2 lists of names, but we are not sure exactly what they are for. 3.
We identify a sector that is text, but if we look closely there is also a value that is not part of the names A separator perhaps?:
? = 03 < What is your function? :O
R = 1B
Y = 22
U = 1E
? = 05 < What is your function?
M = 17
A = 0B
R = 1B
I = 13
O = 19
? = 04 < Is not this a great nick? :3
S = 1C
I = 13
C = 0D
S = 1C
This is the part where a person with common sense would explain a meticulous and well thought process, but the truth I lack that touch, in my case I would simply try changing the mysterious value for another and I would see how it affects the game.
With the following results we can establish some important data:
? = 09 < I change it for 09 (These are Hexadecimal numbers)
R = 1B
Y = 22
U = 1E
♦ The first RYU
is called "RYU5MARIO"
, but the second RYU
has not changed its name.
does not seem to have been affected in any way.
Then we know that the number affects the number of letters used in each name and that the first list only affects the first player.
Therefore we can assume that the second list belongs to player two. This hypothesis can be easily verified, we just have to modify some name in the second list or simply write random values to try to see how this affects the game and how to break is what I like...
Checked!, but there remains a question to answer How does the game to know what name to use?
, but since we are not the Sherlock Holmes of hacking, we go directly to the answer:
► The game has a list.
► The list contains information on the location where each name starts.
► The names start with a value that is equivalent to the number of letters that comprise it.
► These numbers tell the game how many letters to invoke to show on the screen.
● Well now we have enough information to get down to work: a.
First we must create a new list of names taking into account all the previous concepts and respecting the space occupied by the original list:"Number of letters"
(It is written with .TBL
When replacing the previous list we will leave all the original pointers obsolete, so we must create a new table of pointers: b.1.
For this, we simply take note of all the addresses of the numbers that are before each name:textify_setup.exe b.2.
If everything has gone well you should have a list equal to this:
The following is to give a format that the emulator can understand, for this we must subtract 10 to each of the number of our list, since 10 is the equivalent of space that occupies the header
in the rom.
is a group of additional data that is added to the ROMS at the beginning of the same, and since these are not a real part of the game, you have to ignore them when you want to calculate which is the real address of some data)
Equally, all this is not necessary to understand it, since behind that curtain of boring information it is only about doing this: d.
After prepared the pointers we select everything and we paste it in the correct direction that in this case is 3d9c6
As I mentioned earlier, the pointers are often above the data they point to, so a basic method, but effective enough to find them is:
1. Make a save state on the character selection screen.
2. Go a little higher than the block of text you are analyzing in the hexadecimal editor.
3. Now slowly replace that data with any random value, for example 00.
4. Every time you make a change, load the save state and start a new fight.
5. Repeat this process until you see that when loading a character your name is not shown as it should be.
6. When this happens, write down the address of the last data that I change.
Reload the game (this also applies if the game crashes) and analyze all the data around the address I aim to identify each of the offsets you need.
Note: If you want to dedicate yourself to this you must learn more complex and precise processes than the one I have just described, but in general this method is not a bad option to start...
Finally you will notice that the second block of names has a different format, although with this little tutorial I think you have enough information to find out the differences by your means, luck! PS1:
Sorry for taking so long to respond, I needed time to be able to forget my previous comment so I could read it in a more objective way and identify points that could be reinforced. PS2:
Here I leave a patch
with the changes you want to make, using a "hexadecimal comparator
" you can find the changes you make to be able to use them as a guide when you try to make the changes for yourself