Table of Contents
Metasprites
Metroid 2's metasprite format is very simple.
In fact, it's so simple, that it's virtually the same as the hardware's sprite format.
The Format
A metasprite is sprite made out of sprites. The “sprites” you see onscreen are actually collections of 8×8 pixel hardware sprites. Thus, metasprites are just lists of hardware sprites.
Accordingly, each sprite in the list is four bytes:
- Y position
- X position
- Tile number
- Attributes. Note that each enemy entry in $c600 has fields for the attributes that are XORed with these.
- Bit 7 - Sprite Priority (0 = Above, 1 = Behind)
- Bit 6 - Y flip (0 = Normal, 1 = Flipped)
- Bit 5 - X flip (same)
- Bit 4 - Palette number
A Y position of $FF lets the game know that the metasprite is done.
And that's about it.
TODO: Put an example here.
Pointer List
For convenience, here's the pointer list for the metasprites in bank 1 (which starts at 0x4000 in the ROM).
TODO: This is probably better suited for a “Locations of Data” page.
$425F $429C $42FE $4360 $4391 $43C6 $4476 $44AB $44E8 $45AC $4606 $4660 $46B2 $425F $42CD $432F $43EB $441C $4451 $4511 $4546 $4583 $45D9 $4633 $4689 $46DB $4197 $41B0 $41C9 $41E2 $410F $4120 $4131 $4142 $41FB $4214 $422D $4246 $4153 $4164 $4175 $4186 $410A $4704 $4735 $476E $4793 $47C4 $47FD $4859 $4848 $4827 $4822 $489A $489F $48A4 $48B5 $48C6 $48D7 $48E8 $48F9 $490A $491B $492C $4935 $40E1 $40B8 $4093 $408A
Figuring out which sprite is used by which enemy (and if there's even an easy way to determine that) is an exercise left to the reader/author.