The current URL is datacrystal.tcrf.net.
Pokémon Mystery Dungeon: Red Rescue Team/Pokémon Graphics/Overworld Animations
Pokémon Graphics:Overworld Animations | |
Game | Pokémon Mystery Dungeon: Red Rescue Team |
Start Address | 0x0511F40 |
End Address | 0x167FE77 |
# of Entries | 423 |
Entry Length | varies |
Total Length | 18,276,152 bytes (0x116DF38) |
Back to the ROM map |
There are 423 SIRO files pointed to by the Pokémon Graphics Pointer Table. Each one represents a different Pokemon graphics file. The structure of these individual files is as follows.
Header
- Note - all pointers are stored in little-endian format.
Address Size Description -------- ---- ---------------- 0000 0004 SIRO Header - Spells out SIRO and begins file. 0004 0004 Pointer to footer - Points to main data structure in each Pokemon
Animation Data Before Sprites
Comes in 0x14 byte increments which each represent a frame of the animation.
Address Size Description -------- ---- ---------------- 0000 0001 The index of the sprite to be displayed. 0001 0001 Values less than 0x07 crash the game 0002 0001 Does Palette Effects - Use unknown 0003 0001 Unknown 0004 0002 Vertical Displacement Value 0006 0001 Horizontal Displacement 0007 0001 Flip byte - Tells which direction the sprite is flipped 80 Normal 90 Horizontal Flip A0 makes a vertical flip. B0 makes vertical and horizontal Other options may be used for different Pokemon sizes 0008 0002 Little endian offset to tell where to start reading sprite in VRAM - Usually 00 3C 000A 000A Allows VRAM to be cleared. Usually all FFs
The next section deals with animation timing in the following format:
Total Size: 0x0C Address Size Description -------- ---- ---------------- 0000 0001 Number of frames to display sprite. 0001 0001 Unknown; Usually only 0x00 0002 0002 Index of sprite to be displayed. 0004 0002 Horizontal Displacement -Signed Short 0006 0002 Vertical Displacement -Signed Short 0008 0002 Shadow Horizontal Displacement -Signed Short 000A 0002 Shadow Vertical Displacement -Signed Short
Overworld Sprites
Every Sprite has data associated with it.
The sprite data pointers in the data after the sprites point to each individual sprite's data.
The individual sprite data is in this format when it only points to one sub sprite:
Address Size Description -------- ---- ---------------- 0000 0004 Pointer to individual sprite 0004 0002 Number of bytes to read (little endian)
Very frequently, the individual sprite data is split into sub sprites and is different. Possibly due to different tile alignment.
Address Size Description -------- ---- ---------------- { 0000 0004 Unknown - Possibly a flag to tell where to stop reading sub sprites. 0004 0004 Pointer to individual sprite 0008 0002 Number of bytes to read (little endian) 000A 0006 Unknown (Nothing?) } Repeats until every sub sprite has been pointed to.
Data After Sprites
Following the sprites are six sections with different information:
- Table of pointers to the animation data.
- Unknown data
- Pointers to directional animation timing data.
- Pointers to (#3) each set of directional animations
- Pointers to Sprite Data
- The Footer
Unknown Data(Section 2)
Does not seem to have effect on sprites, yet requires a large portion of the file. Made up of repeating one byte units of 0xF or 0x0 followed by any number.
Animation Data (Section 3)
A repeating set of little-endian pointers that will point to an animation for any direction.
Index Direction Pointed to ----- -------------------- 0x00: S, SE, E, NE, 0x10: N, NW, W, SW
The header points to another set of pointers starting here and ending at the next SIRO file.
Address Size Description -------- ---- ---------------- 0000 0004 Section 1 after sprites: Pointer to animation timing table. 0004 0004 Pointer to Section 3 After Sprites - Animations - Different animations can be chosen based upon direction. 0008 0004 Unknown 000C 0004 Sprite Data Pointer (Section 5 After Sprites) 0010 0004 Pointer to (Section 2 After Sprites) Unknown Data 0014 0004 SIRO Header of next Pokemon