Quote:
Originally Posted by wolfboyft
That helped a lot... I now understand more about Hexadecimal editing.
But...
I am having a bit of trouble with whatever these POINTER things are...
I did indeed find where all the map names are stored, but...
How do I edit them, without using the exact same amounts of characters with the exact same spaces?
Hrrrmmm...
I looked in PokéText... nothing.
JohtoMap... nope.
Also, how might I go about making more... maps in the areas?
You know... like... um... how NEW BARK TOWN has a lot of other maps inside it, and NEW BARK TOWN is just a folder to help devs work out what's what/the thing that says that whenever you're in a map in the 'folder' NEW BARK TOWN, it will show NEW BARK TOWN or whatever the folder that the map you're in is in?
Note: I have used your table and can now write (although rather tediously) text inside the ROM.
And a question: is it possible to make a wild pokémon have a 0% catch rate with all pokéballs, including the master ball?
|
You should register to Skeetendo Inc. (hax.iimarck.us) and ask more questions there so I don't have to check this thread everytime you have replied :) (unless you like my post, quote me back or something so I will notice it for sure).
Anyway...
Pointers are usually 2-byte data values that point to an address. For example pointer 2A 53 points to address XX:532A in which XX is the rom bank we are currently in. *that XX:532A is a pointer format representation of an address.*
Straight rom address of XX:532A is;
XX * 0x4000 + 0x532A - 0x4000
So for instance, we have pointer FE 64 in address 0x92388 which is the second pointer in that table consisting of 4-byte data values ( [X & Y coordinates (2 bytes)][Pointer (2 bytes)] ). That FE 64 leads to;
XX * 0x4000 + 0x64FE - 0x4000
Here XX is 0x92388 / 0x4000 = 0x24
And so the address where this points to is;
0x24 * 0x4000 + 0x64FE - 0x4000 = 0x924FE
And if you go to that address with a hex editor (and using a table file), you can see that "NEW BARK[1F]TOWN[50]" is written there.
Byte "1F" is used for changing the line when viewing the area name with Town Map and "50" is a byte that tells that the name ends here.
So if you want to change the name of "NEW BARK TOWN", repoint it to blank space at the end of the rom bank (so before 0x94000 because the banks starts at 0x24 * 0x4000 = 0x90000 and is 0x4000 bytes long), and write a new name for it there.
Take a look at how I have handled the names in Dark Energy if you like.
You can put more maps inside an area by editing the sixth byte in Primary Map Header of each map. That byte is an "Area" byte that tells, which area the map belongs to by using the byte as an index of this table here at 0x92382 (SPECIAL = 00, NEW BARK TOWN = 01 etc.). So basically, we don't have a "folder", or table of maps that belong to each area, stored in the rom file. Instead, each map knows the area it belongs to (from that area byte inside the map's Primary Header).
It's possible to do pretty much anything you want but as of now, I think catch rate of 0% is not possible. You would have to hack that feature in yourself with assembly.