Skeetendo

’Cause all games were better on the GBC

You are not logged in.

#1 2012-06-22 10:52:30

slowpoke
Member
Registered: 2012-06-22
Post 1/10

Pokemon R/B/Y in which offsets are the sprites?

I´d like to add new sprites to my hack, but I don't know in which offset are located the pokemon sprites.

Offline

#2 2012-06-22 18:42:25

Danny-E 33
Administrator
Registered: 2012-06-09
Post 4/1,023

Re: Pokemon R/B/Y in which offsets are the sprites?

The offsets for the sprites are different between RB and yellow.

The sprite offsets for yellow can be found here: http://romendo.net/stag019/pokedex/test … ion=yellow

The offsets for red can be found here: http://romendo.net/stag019/pokedex/test … ersion=red
and I believe all blue offsets are the same as red version.

Remember, all these sprites are compressed images and are not directly viewable in programs such as Tile Layer Pro or Tilemolester.

Huge credit goes to stag019 for constructing these pages :)

EDIT: Also, while you're replacing these sprites, you might notice that you may have to change their location. This means you must also change their pointers, which are found in each Pokemon's base stats data starting at 0x383DE (Bulbasaur) going in Pokedex order (not internal ID number, unlike the actual sprite data). The pointer to the frontsprite is the 12th and 13th byte of each Pokemon's base stats data and the pointer to the backsprite is the 14th and 15th byte. Each Pokemon's base stats data is 0x1C bytes long, immediately followed by the next Pokemon (Bulbasaur is at 0x383DE, Ivysaur is at 0x383FA, Venusaur is at 0x38416 etc.)

Last edited by Danny-E 33 (2012-06-22 18:54:50)


Red Hack: Pokémon Prototype

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

Offline

#3 2012-06-24 08:36:25

slowpoke
Member
Registered: 2012-06-22
Post 2/10

Re: Pokemon R/B/Y in which offsets are the sprites?

and the missingnos where are stored?

Offline

#4 2012-06-24 22:05:49

stag019
Idea Killer
Registered: 2011-01-05
Post 174/630

Re: Pokemon R/B/Y in which offsets are the sprites?

MissingNo.'s sprite isn't an intentional sprite. Game Freak didn't design a block of random pixels and say "this looks good for a random glitch Pokemon no one should ever encounter". What happens is that the game loads a "random" address from memory and it's run through the decompression algorithm, which just results in complete nonsense. The address it reads from is 0x1900 in the ROM. Here is more information on how it works.


You can try to hide yourself in this world of pretend; when the paper's crumpled up, it can't be perfect again.

Offline

#5 2012-06-25 19:51:55

Danny-E 33
Administrator
Registered: 2012-06-09
Post 7/1,023

Re: Pokemon R/B/Y in which offsets are the sprites?

Hmm, that is very interesting... Did you document that yourself? Also, do you have similar details to what data is being read for the wild pokemon data on the east coast of Cinnabar Island that causes you to encounter the wild Pokemon of the last area you were in, plus certain Pokemon determined by your name, plus MissingNo. and 'M? I'm very curious to know why this is all exactly the way it is :)


Red Hack: Pokémon Prototype

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

Offline

#6 2012-06-25 21:29:01

stag019
Idea Killer
Registered: 2011-01-05
Post 175/630

Re: Pokemon R/B/Y in which offsets are the sprites?

When you talk to the old man in Viridian that teaches you to catch Pokemon, it temporarily changes your name to "Old Man" so that when it uses a Pokeball, it says "Old Man used a Pokeball" instead of your name. In order to remember what your name is, it has to keep in somewhere. Considering RAM space was at a minimum, they had to overwrite something used somewhere else in order to store your name. The creators chose the wild pokemon in grass data to overwrite because they figure once you walk into an area with grass, it'll overwrite itself again and be fine. When you enter somewhere without grass data (Cinnabar Island), it won't be overwritten. What they didn't count on was that there would be a section of any tile with the attribute of wild grass data encounters before it's overwritten (in this case, the east coast of Cinnabar Island, which wasn't meant to have grass wild Pokemon). Therefore, it reads the data from your name, which is still in RAM, to determine the wild Pokemon.

Wild Pokemon are stored like this: xx yy xx yy xx yy
xx is the Pokemon's id and yy is the level (or vice-versa, I don't really remember)
As you should know by ever editing the text in Pokemon, every letter/number/other character (in reality, these are just tiles) has an id itself. These id's are read as Pokemon id's and levels.

Source and examples:
http://web.archive.org/web/201011301430 … ngno4.html


You can try to hide yourself in this world of pretend; when the paper's crumpled up, it can't be perfect again.

Offline

Board footer

Powered by FluxBB