’Cause all games were better on the GBC

You are not logged in.

#1 2014-06-16 02:19:50

New member
Registered: 2014-06-15
Post 1/2

Help with Pokemon Yellow back sprites

Hi. I'll try to be as straightforward and clear as possible. The thing is I've found this very interesting thread about Pokemon Red back sprites ( I would like to know if there was a way to implement those routines in pokemon yellow; and if there is, a bit of help in how to do so. I wanted to look for information in this website ( … ion=yellow), but it seems it was taken down.

That said, I'm a noob. I've been trying to understand assembly code on my own for way too long before giving up. I'm not sure if I'm just dumb or anything, but I think I only need to be pointed in the right direction. What I want to make is a hack of Pokemon Yellow to replace the pixelated back sprites with 2nd generation back sprites. That's all I want to do. It turned out to be much harder than I thought. Anyways, I won't give up now. I already got the sprites I want to insert in the correct format according to this guide ( I just have to overcome that big obstacle (the back sprites resizing routine) and then it should only be a repetitive process.

I really hope someone can help me out.

I also want to apologize for any grammar or spelling mistake. English isn't my native language.


#2 2014-06-16 12:25:25

Danny-E 33
Registered: 2012-06-09
Post 791/1,086

Re: Help with Pokemon Yellow back sprites

Well, like the Pokemon Red: Backsprites thread says, there are two main problems to take care of.

When you insert all the larger backsprites, the sprites won't all be in the same bank anymore, so you have to modify UncompressMonSprite and redo how the game handles determining the bank of a Pokemon's sprite.

The other problem is the magnification of the backsprites.
There are three instances of this that need to be handled: Pokemon in battle, player/old man in battle, and player in the Hall of Fame.

I would think the code in Yellow is the same but the addresses may be different.

But unless you plan on making all the gen 2 sprites work with the gen 1 palettes, then this project leads you to the problem of redoing how the game handles loading a Pokemon's palette.

Red Hack: Pokémon Prototype

Total number of registered users: 8000+
Total number of active users: ~12


#3 2014-06-17 04:45:00

New member
Registered: 2014-06-15
Post 2/2

Re: Help with Pokemon Yellow back sprites

Thanks for the quick reply. It really helped me out to find the uncompressing process in Pokemon Yellow. I will try to go step by step so I don't rush through things. I also would like to learn as much as I can.

So first I should edit the process that determines the bank of a pokemon, so that, instead of using a fixed value, it uses the last byte of the pokemon species data. Since there isn't a Pokemon Yellow rom map, I had to search in the rom myself for any similarities with Pokemon Red. I found what appears to be the UncompressMonSprite process at address 1413. The only difference is that it skips the mew check, since, if I'm not mistaken, in Yellow, mew's data was moved to the end of the pokemon data (instead of the random location it was in before). What I found, exactly, was this:

ld a,(CF90)
ld b,a
cp a,B6
ld a,0B
jr z,143B
ld a,b
cp a,1F
ld a,09
jr c,143B
ld a,b
cp a,4A
ld a,0A
jr c,143B
ld a,b
cp a,74
ld a,0B
jr c,143B
ld a,b
cp a,99
ld a,0C
jr c,143B
ld a,=D
jp 23F8

I hope I typed it correctly. If I'm not mistaken, CF90 is the ram address in which the pokemon's id number is located in yellow, which, compared is one unit less compared to red (CF91). This seems to be right, since, according to datacrystal, yellow's ram addresses are one unit less than red's. So, to put this straight, I have to modify this routine so it verifies if the pokemon's id is that of the ghost, the kabutops fossil or the aerodactyl fossil, and if it's not, then use the last byte of the pokemon species data, which should be located at ram address D0D2 (D0D3 in red).

As for inserting the sprites in the banks, I can take advantage of the fact that the back sprites in red and yellow are the same, and it goes front sprite first, then back sprite, to find out where the sprites info finishes in each bank, using datacrystal's red rom map. When I run out of space in the 09-0D banks, I'll go to the unused banks at the end of the rom. Then I will have to modify this last bit in the rom for every species to match the correct bank. Then I should modify every pokemon's front sprite and back sprite pointer to match the new locations in the bank.

Then, I will have to edit the pokemon back sprite's generation routine (Idk its real name :P) so it doesn't rescale the picture and then it should be fine.

After that, The only thing remaining to do would be edit the player/old man/prof. oak and the hall of fame routines so they don't scale the sprites either and, finally insert the new sprites in the rom and edit the respective pointers. This is where it starts being such a headache, since I don't have a way to know where those sprites are located. I hope I can figure it out somehow.

If someone notices a problem in this plan, or knows any information that could be useful, please, please, please tell me.

Oh, and I won't edit the palettes. I will use the back sprites with the G1 palettes, since I won't edit the front sprites anyway.


Board footer

Powered by FluxBB