Sonic Classic Collection/Technical information
From Sonic Retro
Revision as of 12:35, 27 January 2021 by Ccawley2011 (talk | contribs)
- Back to: Sonic Classic Collection.
This teeny-tiny article needs some work. You can help Sonic Retro by expanding it. |
TODO:
- Move emulation information from the main page
- More information about Game.pak
- Document any modifications made to the Mega Drive ROMs
- Full list of tracks from the .mods files?
Music and Sound effects
Rather than emulating the Mega Drive audio hardware, all of the music and sound effects are pre-recorded and stored in .mods files. These can be unpacked using this QuickBMS script.
The file format consists of a 32-bit integer containing the number of sound effects or tracks, followed by an array of 32-bit integers, each containing a pointer to a structure containing information about the particular sound. If a pointer is identical to the following pointer, then that pointer is for an empty sound, and should be ignored. The structure uses the following structure:
Offset | Type | Description |
---|---|---|
0 | 4 Bytes | Length of the sound in bytes, including this header. |
4 | 4 Bytes | Number of bytes from the end to be looped. |
8 | 2 Bytes | Sample rate. |
A | 6 Bytes | Unknown. |
The audio data follows immediately after this header, using the IMA ADPCM codec described here.
UI graphics
The graphics for the user interface are stored in the screensGame_eu.dat file. The file begins with the following header:
Offset | Type | Description |
---|---|---|
0 | 4 Bytes | Number of image layouts. |
4 | 4 Bytes | Pointer to image layout data, plus 0x25DF000. |
8 | 4 Bytes | Number of unknown words (1) |
C | 4 Bytes | Pointer to unknown words (1), plus 0x23D1000. |
10 | 4 Bytes | Number of unknown words (2) |
14 | 4 Bytes | Pointer to unknown words (2), plus 0x23D1000. |
18 | 4 Bytes | Number of compressed entries |
1C | 4 Bytes | Pointer to compression index, plus 0x23D1000. |
Each image layout consists of 192 32-bit words containing pointers to the 16-bit BGR555 graphics data for each row in the image, plus 0x25DF000.
Some images are instead compressed using the LZ11 algorithm described here. These contain raw 256x192 images using 16-bit BGR555 graphics, and are referred to by the compression index, which is an array of the following structure:
Offset | Type | Description |
---|---|---|
0 | 4 Bytes | Size of the compressed file. |
4 | 4 Bytes | Pointer to the compressed file, plus 0x25DF000. |
TODO:
- Figure out what the unknown sections are for...
- Image names are stored between offsets 0xF2C and 0x3558.
References
Sonic Classic Collection | |
---|---|
Manuals |