Difference between revisions of "Sonic Classic Collection/Technical information"
From Sonic Retro
Ccawley2011 (talk | contribs) |
Ccawley2011 (talk | contribs) |
||
Line 38: | Line 38: | ||
==UI graphics== | ==UI graphics== | ||
− | The graphics for the user interface are stored in the screensGame_eu.dat file. The | + | The graphics for the user interface are stored in the screensGame_eu.dat file. The file begins with the following header: |
− | + | {|class="prettytable" style="width:auto;" | |
− | + | !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 [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 compression index, which is an array of the following structure: | ||
+ | |||
+ | {|class="prettytable" style="width:auto;" | ||
+ | !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. | * Image names are stored between offsets 0xF2C and 0x3558. | ||
− | |||
− | |||
− | |||
Revision as of 12:35, 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 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 |