If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
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)