Actions

Sonic Classic Collection/Technical information

From Sonic Retro

Revision as of 09:49, 13 May 2021 by Ccawley2011 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Back to: Sonic Classic Collection.
Sonicretro-round.svg This short article is in need of work. You can help Sonic Retro by adding to 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 is described below:

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. This can be unpacked using this QuickBMS script. 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, plus 0x23D1000. 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
Sonic Classic Collection Title cropped.png

Main page
Comparisons


Manuals
Magazine articles
Reception


Development
Hidden content
Technical information

Sonic Community Hacking Guide
General
SonED2 Manual | Subroutine Equivalency List
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (Master System) | Sonic 3 | Sonic 3 & Knuckles | Chaotix | Sonic Jam | Sonic Jam 6 | Sonic Adventure | Sonic Adventure DX: Director's Cut | Sonic Adventure DX: PC | Sonic Adventure (2010) | Sonic Adventure 2 | Sonic Adventure 2: Battle | Sonic Adventure 2 (PC) | Sonic Heroes | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Colours | Sonic Generations | Sonic Forces
Technical information
Sonic Eraser | Sonic 2 (Nick Arcade prototype) | Sonic CD (prototype; 1992-12-04) | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Tails Adventures | Sonic Crackers | Sonic 3D: Flickies' Island | Sonic & Knuckles Collection | Sonic R | Sonic Shuffle | Sonic Advance | Sonic Advance 3 | Sonic Battle | Shadow the Hedgehog | Sonic Rush | Sonic Classic Collection | Sonic Free Riders | Sonic Lost World
Legacy Guides
The Nemesis Hacking Guides The Esrael Hacking Guides
ROM: Sonic 1 | Sonic 2 | Sonic 2 Beta | Sonic 3

Savestate: Sonic 1 | Sonic 2 Beta/Final | Sonic 3

Sonic 1 (English / Portuguese) | Sonic 2 Beta (English / Portuguese) | Sonic 2 and Knuckles (English / Portuguese)
Move to Sega Retro
Number Systems (or scrap) | Assembly Hacking Guide | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | SMPS Music Hacking Guide | Mega Drive technical information