Welcome to the PokéCommunity!

Hi there! Thanks for visiting PokéCommunity. We’re a group of Pokémon fans dedicated to providing the best place on the Internet for discussing ideas and sharing fan-made content. Welcome! We’re glad you’re here.

In order to join our community we need you to create an account with us. Doing so will allow you to make posts, submit and view fan art and fan fiction, download fan-made games, and much more. It’s quick and easy; just click here and follow the instructions.

We’re on social media!

Research & DevelopmentGot a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!

Research & Development programs in this forum are subject to moderator approval before they are displayed.

In the game, the first byte after the two FF bytes coincides with the ID of the Palette used by the overworld. However, editing this byte by itself does not seem to affect the game. I have tested and confirmed this. Instead, the first byte of the four OAM data bytes appear to dictate which palette is used by the OW.

The byte conversion originally appears to be [Palette ID]+[0xF].
(Refer to the latter section of the post)

Following this pattern, Palette 0x20 should be called with byte 0x2F.

However, when that is put into practice:

We get this:

That Axew seems a bit black, does it not?

After experimentation, I found that Palette 0x20 is called with byte 0x2A:

And we get this:

Much better.

But now, we must play a game of Psychiatrist, and deduce how this unknown byte actually points to the Palette of our desire.

Consider the following strings from the original Fire Red:

Palette 0x0 is called with byte 0x10.

Palette 0x3 is called with byte 0x12.

Palette 0x4 is called with byte 0x13.

However, as I insert my own palettes and new tables, the pattern becomes increasingly elusive.

Palette 0x21 is called with byte 0x22.

Palette 0x23 is called with byte 0x30.

Furthermore, as I add more sprites and palettes, I must constantly change the bytes, as they seem to point to different palettes each time.

If anyone has a revelation about this, please contribute to this research.

The second byte's lower half, that you have highlighted in Blue, was found by JPAN to control which palette slot the palette was put into. This allowed for fixing the problems that come into play when two different OWs are using the same slot but different palettes. The most often example is the player's palette being changed to match the palette of another on screen OW because of this.

However, the upper half of the byte is a still a mystery.

So, if you made it XY, then X is the mystery and Y is the palette slot.

Have you learned anything more about this encryption you were researching?

Edit: Knizz has found a routine that uses the first byte in Y. He doesn't know what it does yet, but he has found something that uses it.

Sorry for double posting, but when using the Bag, Trainer card, Option, Pokemon, or Pokedex selections, all the new palettes get reverted to the original ones from the game until you encounter other OWs. I think it's a bug with the actual hacked engine, but either way, it's a glitch.

Sorry for double posting, but when using the Bag, Trainer card, Option, Pokemon, or Pokedex selections, all the new palettes get reverted to the original ones from the game until you encounter other OWs. I think it's a bug with the actual hacked engine, but either way, it's a glitch.

Well, idk if this its relevant, but I make some little investigation and the OW inserted by me only overwrite the palette 0xA or 0x0 just in some cases, with the anothers, just uses whathever it was load before (Even if there its nothing, just black)

So I star to look how can I make than my OW overwrite the palete there... I don't know how, but if we can do this we can use all the pals...

(MEABE, relevant) I was chequing out some things, and I figured out than when using the 0 pal slot (Hero's one) sometimes It get replaced, sometimes not... So I try to see why... I try with two diferents Ows (Than I Insert) one replace it, and the another not, when I go to the data, the only differece was the pal number and the sprites pointer... So I try changing the pal number and it works, now both replace the pal (using the 20, btw) but when I try with both using the 23, nothing happens, the new ows use the heros pal, what makes me think that game dosn't load them...

The PokéCommunity

Meta

Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, or The Pokémon Company International. We just love Pokémon.