• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Development: Hacking the PokéNav (map data, phone data, etc.)

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
I feel that it's pretty safe to say that we don't have much hacking information done on the PokéNav. I mean, some people just put it into a hack without really changing anything.

I, for one, have started to hack the little information box that appears when you scroll over a place in the map on Zoom mode.

I found a little table located at 0x623118 that controls this, although how so, I don't really know. The format is like this:
[map name ID] [00] [01 if scrolled over second half] [00] [pointer to data]

The routines that load the table start at 0x1ccd34 and 0x1ccd70.

There is a limiter byte at 0x1ccd40 that makes the first routine not work if r4 is over 0x15. The number is not the map name ID, however, so I assume that it's to make sure it passes through the routine 0x15 times, each time increasing by 1. After all, this is the routine that loads at the load of the map. I believe this routine is the checker to see which map names have a mini-map and which do not; however, I may be wrong.

The second routine, however, I know a bit more about. This one loads the map name byte and checks it against the ones in the table. It also does checks to see if it's the second half of the map name. It also has a limiter byte like the one above, this one at 0x1ccd8c. This is also, supposedly, to check how much times it's gone through the routine. After that, though, I lose track of what it does.

This is just one part of the PokéNav, though; feel free to help with any part of it.
 

U.Flame

Maker of Short Games
1,326
Posts
15
Years
I don't know how, but I noticed Baro's Pokemon Quartz had a hacked PokeNav. Not much of a difference but the rotating PokeNav image was changed. Quartz is the only hack that I've seen that.
 

knizz

192
Posts
16
Years
  • Seen Oct 28, 2020
Since the posting of this thread, I've made major advances in hacking the PokéNav. If anybody would like me to share this info in this thread, feel free to ask.

I want more info. Also: Y U not on mah irc-channel?
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
Well, for one, I've figured out how to hack the phone to its (almost) fullest. Should I start there?
Or should I tell you how I finally managed to get what I said in the first post working?
Maybe how the order of the buttons, the palettes of the buttons, and some other things were changed?
Tell me what you'd like to know and I'll share.
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
Well, first things first: the phone.
At 0x6252A8 is a list of pointers. Following one of these pointers will lead to some data in the order of:
[byte - type] [byte - location] [hword - flag to check if in PokéNav] [word - pointer to trainer class name] [word - pointer to name] [word - pointer to 2nd array]

2nd array:
[word - pointer to text] [hword - flag to check to see if this message should be shown] [hword - flag to set after this message is shown]... until 00 00 00 00 FF FF FF FF.

I'm attempting to do something else ATM, so I'll try to post more some other time.
 

U.Flame

Maker of Short Games
1,326
Posts
15
Years
Is it possible at all to import Emerald PokeNav features to Ruby and Sapphire's Pokenav?
 
14
Posts
13
Years
  • Age 28
  • Seen Apr 12, 2011
Has anybdy found out how to use the radio function on the PokéNav for better Pokégear emulation?
 
14
Posts
13
Years
  • Age 28
  • Seen Apr 12, 2011
Oh, well have u thought of using the Nav's match call function to "call" the broadcast of a certain radio station? Sorry not expert just tryin to give suggestions
 
14
Posts
13
Years
  • Age 28
  • Seen Apr 12, 2011
I was trying to give some suggestions/ideas, because i was just thinking that if you could set a trainer and make it a radio station and everytime you would call it, the broadcasting response would never be the same message over and over depending on time of day, locations, a maybe a randomness factor? And the phone card function would still be applicable at the same time in the "match call" function.
 
457
Posts
10
Years
  • Age 28
  • Seen Mar 17, 2024
I know this thread is centuries old but I am going to post what I found anyways...

0x08622028: The table controls the data for CHECK inside the MATCH CALL. The size of the table is 0x4E0 bytes containing 0x10 bytes (four .word-s) per slot. There are 78 Match Call entries have CHECK function although there are 82 Match Call slots so only 4 don't have CHECK functions (they are Mr. Stone, Prof. Birch, Mom, and Scott) however I haven't found how they control these exceptions. Note that common trainers comes first before the boss trainers.
Code:
.word STRATEGY
.word TRAINERS_POKEMON
.word SELF_INTRO_LINE1
.word SELF_INTRO_LINE2

0x085500A4: The table controls the rematch data for both common and special Trainers. The size of the table is 0x4E0 bytes containing 0x10 bytes (four .word-s) per slot. Same that it only have 78 entries and I haven't found out how again these are controlled.
Code:
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword 0x0000 (outerior Trainers) or 0x0018 (interior Trainers)
.word MAP_NAME_ID

These are only I can give for now. Although I'm more interested to find out how Trainer data are loaded for PokeNav and Trainer sprites as well.
 
Last edited:
Back
Top