Jump to content
Sign in to follow this  
Zane Avernathy

FE5 Map Sprites

Recommended Posts

This is a crosspost from FEU.

While working on my FE5 project I had figured it'd be nice to rip the map sprites, because I can't find a unified sheet of them anywhere. Although the data is ripped using the class data table, there might be errors. If anything's odd about these, let me know.

FE5 Map Sprites

Here's an example:

Spoiler

518a9328f7.png

Each class gets its own sheet. Some sheets have some strange things going on, such as:

  • Some mage classes have incorrect sprites, probably due to the correct sprites being set in character data
  • Some mage classes have other mages in their battle sprites
  • The High Priest and Priest have some strange things going on
  • There's that weird Baron class
  • More stuff, probably

Unused sprites and stuff may be added later, but any sprites that aren't referenced are not included yet.

Share this post


Link to post
Share on other sites

Here's a writeup of how you'd go about extracting these yourself:

Map sprites in FE5 are comprised of four pieces: An unknown moving sprite, a set of 3 idle sprites, a set of 16 moving sprites, and a variable number of combat sprites. I'll be going into detail for each of these.

Each class within the game's class data has a byte for that class's default map sprite. The uppermost bit of this byte is a flag for whether the class uses mounted sprites. The unknown, moving, and combat sprites are selected by using this byte as an index for another table, but the idle sprites use this byte more directly.

The formula to get this index from the default map sprite byte is:

if default < 0x80:
  index = byte at 0x363AD+default

else:
  index = byte at 0x363AD+((default&0x7F)+0x4B)

If this index happens to be above 0x69, it is set to 1.

 

To get the unknown sprite, the formula is:

offset = 0x190000+(0x200*(index-1))

Each is a 32x32-pixel uncompressed 4bpp SNES image cut into four rows of four tiles each. Here's an example of how they're formatted within the ROM, scaled x4.

a67bdc0070.png
In the ROM, the order of these rows is 1, 3, 2, 4, where row 1 is the top row. Each unknown sprite takes up 0x200 bytes.

 

To get the idle sprites, the formula is:

if default < 0x80:
  offset = 0x388000+(default*0x180)
  sprite is 16x16 pixels

else:
  offset = 0x398000+((default&0x7F)*0x240)
  sprite is 16x24 pixels

Both are 4bpp uncompressed SNES images. Here's an example of how the smaller sprites are formatted:
27212d3244.png

And the larger ones:
ce2596c5ae.png
As you can see, these larger sprites are in the order 2, 3, 1.

Moving sprites are where things start to get complicated.

First, we get a short pointer to an animation data table:

pointer_offset = 0x51D23+(2*index)

The routines that read these short pointers expect the animation data table to be in the same bank, 0x8A (mapped). Each entry in this table consists of two long pointers followed by a byte. The first pointer is to the graphics, the second is for the animation's script. The byte determines the direction that the unit faces when initially selected. Possible values are:
 

00 - Left
01 - Right
02 - Down
03 - Up

Graphics are compressed 4bpp SNES images. Format is the same as the unknown sprite, but repeated for each of the 16 moving sprites.


Finally, there are the combat sprites. I don't actually know the specifics of these.
The sprite index is used to select an entry in a short pointer table:

pointer_offset = 0x26A89+(index*2)

Like the moving sprites, the routines involved expect the animation data table in the same bank, 0x84 (mapped). Each entry is a set of 8 long pointers, one for each cardinal and diagonal direction. The graphics are compressed 4bpp SNES images. Their format varies, and I haven't gone looking for whatever determines how they're displayed.
 

Share this post


Link to post
Share on other sites

The rips seem to have the Bow Knight and Arch Knight sprites swapped (Arch is labeled Bow, Bow is labeled Arch). Got me a bit tripped up when trying to animate them, so that might be useful to know.

Share this post


Link to post
Share on other sites

Since Zane gave me the OK, here's the palettes for the class sprites. From top to bottom it's player, enemy, NPC, turn used/petrified.

(yes it's that small, but it should do the job for palette swap purposes)

_palette.png

Edited by Xamad

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...