Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
Fantasia (Genesis)/ROM map
Jump to navigation
Jump to search
This is a sub-page of Fantasia (Genesis).
Mickey sprites and animation
Animations Frames
Informations about Mickey animations frames are stored in a table of pointers at 0xd89a:
00ff27ac ; 00: idle 00ff26a4 ; 01: walk 00ff26d8 ; 02: cast big spell 00ff272c ; 03: jump 00ff282c ; 04: ? (corrupted?) 00ff272c ; 05: jump 00ff272c ; 06: jump 00ff272c ; 07: jump 00ff272c ; 08: jump 00ff272c ; 09: jump 00ff272c ; 0a: jump 00ff270c ; 0b: ? (corrupted?) 00ff2780 ; 0c: cast small spell 00ff2760 ; 0d: cast spell while jumping 00ff27cc ; 0e: ? (corrupted?) 00ff27ec ; 0f: turnover 00ff280c ; 10: ? (corrupted?) 00ff2858 ; 11: afraid of falling 00ff2858 ; 12: afraid of falling 00ff272c ; 13: jump
These pointers are in RAM, but the 0xff0000 - 0xff3fff area in RAM is a copy of the 0x7f000 - 0x7ffff area in ROM. So, for example, data about animation #00 can be found at ROM offset 0x7e7ac:
0003 ; number of frames in the animation 00000000 ; used for static sprites (GUI) 0039 ; number of patterns for the whole animation 0001CF2E ; pointer to patterns data 0000 ; 0000 ; 0020 ; bounding box width ? 0028 ; bounding box height ? 0001CEF8 ; pointer to frame description of frame #0 0001CF0A ; pointer to frame description of frame #1 0001CF1C ; pointer to frame description of frame #2
Patterns data located in ROM at offsets 0x18354, 0x1d95e, 0x1928e, 0x1c480 and 0x1cf2e are compressed with a RLE scheme described below. Otherwise, they are uncompressed.
Frame description have the following format:
0002 ; nb of hardware sprites ; ; hardware sprite #1 0018 ; dy (counted upwards) 0f ; size (0000HHVV) 01 ; id of the hardware sprite 0000 ; offset to first pattern 0000 ; dx ; ; hardware sprite #2 0020 08 02 0010 0000 0002
Gfx Compression scheme
Compressed data is a stream of instruction code with variable arguments. Each instruction decompress into one pattern (32 bytes).
- `00`: end of the stream
- `02`: copy the 32 next bytes (i.e. pattern is not compressed)
- `04`: vertical RLE. The tile is built by columns (from top to bottom, then left to right). Each subsequent bytes is `nnnnvvvv` where n is the number of pixels and v their color index.
- `06`: same, but horizontal (pattern is built from left to right, then top to bottom)