Difference between revisions of "Sonic Classic Collection/Technical information"
From Sonic Retro
Ccawley2011 (talk | contribs) |
Ccawley2011 (talk | contribs) |
||
Line 53: | Line 53: | ||
| 8 | | 8 | ||
| 4 Bytes | | 4 Bytes | ||
− | | Number of | + | | Number of image names |
|- | |- | ||
| C | | C | ||
| 4 Bytes | | 4 Bytes | ||
− | | Pointer to | + | | Pointer to image name pointers, plus 0x23D1000. |
|- | |- | ||
| 10 | | 10 | ||
| 4 Bytes | | 4 Bytes | ||
− | | Number of | + | | Number of compressed image names |
|- | |- | ||
| 14 | | 14 | ||
| 4 Bytes | | 4 Bytes | ||
− | | Pointer to | + | | Pointer to compressed image name pointers, plus 0x23D1000. |
|- | |- | ||
| 18 | | 18 | ||
| 4 Bytes | | 4 Bytes | ||
− | | Number of compressed | + | | Number of compressed images |
|- | |- | ||
| 1C | | 1C | ||
| 4 Bytes | | 4 Bytes | ||
− | | Pointer to | + | | Pointer to compressed image 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. | 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 [https://web.archive.org/web/20210108175702/http://problemkaputt.de/gbatek.htm#lzdecompressionfunctions here]. These contain raw 256x192 images using 16-bit BGR555 graphics, and are referred to by the | + | Some images are instead compressed using the LZ11 algorithm described [https://web.archive.org/web/20210108175702/http://problemkaputt.de/gbatek.htm#lzdecompressionfunctions here]. These contain raw 256x192 images using 16-bit BGR555 graphics, and are referred to by the index, which is an array of the following structure: |
{|class="prettytable" style="width:auto;" | {|class="prettytable" style="width:auto;" | ||
Line 92: | Line 92: | ||
|} | |} | ||
− | + | Names are stored as an array of pointers to the null terminated strings containing the name of the corresponding image. The array only contains the names for the English images - the list should be repeated for each of the remaining languages. | |
− | |||
− | |||
Revision as of 16:05, 27 January 2021
- 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 image names |
C | 4 Bytes | Pointer to image name pointers, plus 0x23D1000. |
10 | 4 Bytes | Number of compressed image names |
14 | 4 Bytes | Pointer to compressed image name pointers, plus 0x23D1000. |
18 | 4 Bytes | Number of compressed images |
1C | 4 Bytes | Pointer to compressed image 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 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. |
Names are stored as an array of pointers to the null terminated strings containing the name of the corresponding image. The array only contains the names for the English images - the list should be repeated for each of the remaining languages.
References
Sonic Classic Collection | |
---|---|
Manuals |