Notices
For all updates, view the main page.

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.

Reply
 
Thread Tools
  #1    
Old June 23rd, 2016 (11:29 AM).
i0Bjhansen0's Avatar
i0Bjhansen0 i0Bjhansen0 is offline
 
Join Date: Mar 2016
Age: 20
Gender: Male
Posts: 123

Selecting no name for character creation and the 4 names for the rival.

Introduction
When playing a Pokemon game, most people choose their own name or a collection of characters that means something to them, instead of letting the game randomly choose a name. This is a small guide to change those random names.

Findings
There are 19 name choices for the boy character, 19 choices for the female character, and 4 choices for the rival. These are quite many so most people probably wouldn't need to expand the list. So, I will not be teaching that (heck even I don't know if it's possible).

There is a list of names located at 0x1C574F. It starts with "NEW NAME", "GREEN", "RED", and so on, until it ends with CD CF D4 C3 FF, or "SUZI" in hex (the "FF" is the terminator byte, used to tell the game that there is no more characters). It's about 111 bytes long, but that's not really important.
List of all names in the name table.
Spoiler:
NEW NAME
GREEN
RED
LEAF
FIRE
GARY
KAZ
TORU
ASH
KENE
GEKI
JAK
JANNE
JONN
KAMON
KARL
TAYLOR
OSCAR
HIRO
MAX
JON
RALPH
KAY
TOSH
ROAK
OMI
JODI
AMANDA
HILLARY
MAKEY
MICHI
PAULA
JUNE
CASSIE
REY
SEDA
KIKO
MINA
NORIE
SAI
MOMO
SUZI

What is important is this, there is a list of POINTERS located at 0x46308C. These are responsible for pointing to where the name is located. They are 4 bytes long and point to the first character of the name. 0x46308C actually starts the male pointer table, while the female pointer table starts at 0x4630D8, and the rival pointer table is 0x463124. The male and female table have 19 pointers each, while the rival table has 4 pointers (they show the names in the selection box).

"NEW NAME" has it's own pointer location, so that should be left alone. But if you choose to change it to something else, the pointer offset is at 0x1316E4.

I think that's everything from my findings. Let's move onto the actual guide.

Changing the Names
Before trying this all out, make a backup of your rom so if mistakes are made, you can go back to before.

If you don't know how to turn hex into GBA lettering, here's a tool made by destinedjagold that converts characters into GBA letters. All you need to do is type what you want in hex in the first line, click "Convert to HEX" and the corresponding hex value will show up in the bottom box.

Step 1- Come up with your names
Now, do you want to change all 42 names? Or do you only want to change a few? Come up with an idea on what you want your new names to be. If you aren't going to decapitalize, you'll want to make all your names in caps, otherwise keep the first letter capital.

Step 2- Convert the names to Hex
Using that tool I linked earlier, turn all of your names into hex so you won't have to later. Write or type the hex values somewhere that you can find later.

Step 3- Find some freespace
Using a Hex Editor, find an area past 0x700000 (or if you know about finding free space, anywhere you want) that contains ONLY FF's. That is most likely not being used by anything and can be used for this project.
Or if you have FSF (Free Space Finder) that can automatically find the location of free space for you.
Keep track of where you are putting your names, that will also be one of the pointers you need to use.

Step 4- Put in your names
With the hex values already made, start typing in the hex values of those names. Make sure that after one is finished, to skip a byte (2 F's) before typing the next name. That way the game will know when to stop counting letters.

Step 5- Find your pointers
This might be a little tricky at first, so hopefully I can explain it well enough that there aren't any problems. Pointers are set up in a way that's called little endian (please correct me if this is wrong). Which means that the offset you have for the first byte of data (e.g. 0x123456) is broken up into sections of 2, then reversed. (e.g. 12 34 56 -> 56 34 12) That value then has a 08 added to the end to show that it is a pointer. (e.g 56 34 12 08) That's why all pointers are 4 bytes.

So with that out of the way, let's get down to business. With your new name table (whether you are replacing them all, or only a few) the first character of each name is where you pointer is going to point to. Write down all the offsets that the first characters are located at.

Now, with all those offsets, split each of them up into groups of 2, reverse the groups, and add 08 at the end.

Step 6- Replace the pointers
There are spaces for 19 male names, 19 female names, and 4 rival names. The male pointer location is at 0x46308C. The female location is at 0x4630D8. The rival location is at 0x463124.

If you are replacing all 42 pointers with new ones, then replace all the pointers with the ones you found with your new names.

If you are only replacing certain names, then find which pointers you want to keep, and which ones you don't.

Here's a list of what each name the pointer points to.
Spoiler:
RED
FIRE
ASH
KENE
GEKI
JAK
JANNE
JOHN
KAMON
KARL
TAYLOR
HIRO
MAX
JON
RALPH
KAY
TOSH
ROAK
RED
FIRE
OMI
JODI
AMANDA
HILLARY
MAKEY
MICHI
PAULA
JUNE
CASSIE
REY
SEDA
KIKO
MINA
NORIE
SAI
MOMO
SUZI
GREEN
GARY
KAZ
TORU

Now if you were like me, you were able to tell that LEAF isn't pointed to at all, and RED and FIRE are pointed to twice. That's because RED and FIRE are used for both genders, while GameFreak most likely used the same list for both games because LEAF is still in the list but has no pointer.

Use this list to figure out which pointers you need to replace with the names you made. If you wanted to change some male names, from RED to ROAK would be your options. Or if you wanted to change some female names, the second RED to SUZI you would change. The rival's names are GREEN to TORU at the end.

End

And there you have it. You now know how to change those random name choice when you don't give your character a name.

When a name isn't chosen for the rival, it will always default to the first of the 4 names.

This is my first tutorial so I hope I didn't make too many errors and hope it was easy to follow.
__________________
Check out my Hack-in-progress and help decide the last Mega Evolution.

Reply With Quote

Relevant Advertising!

Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 2:50 AM.