Actions

SCHG

Sonic Crackers

From Sonic Retro

This is the Sonic Community Hacking Guide for Sonic Crackers. This guide was originally written by Hivebrain, and is used here with permission. The original guide can be found here.

ROM Contents

Offset Purpose
$0 Header
$200 Code
$1E14 Collision array
$3E14 Curve and resistance mapping
$3F14 Code
$3F2A Something affecting Sonic's movement
$44C4 Palette (1) - unknown
$44E4 Code
$4684 Palettes (4) - unknown
$4704 Code
$6F62 Palettes (2) - Sega logo
$6FA2 Crackers Compressed Art - Sega logo
$7348 Code
$749C Palettes (2) - main menu
$74DC Code - title and menu screens
$75DA Nemesis Compressed Art - alphabet from main menu screens
$78E8 Mappings - title screen
$7E08 Code - field levels
$7E98 Palettes (2) - Sonic & Tails; arms & rings
$7ED8 Code - field levels
$835C Palette - Rainbow Field cycling
$837C Code
$83EA Palette - Electric Field cycling
$856A Code
$8572 Palette - Electric Field cycling
$85D4 Code
$8988 Palettes (2) - Sonic & Tails on field levels
$89C8 Code
$8D08 Palettes (8) - Techno Tower Zone
$8E08 Code
$90B6 Nemesis Compressed Art - borders from menu screens
$90EA Mappings - "SELECT" menu screens
$93CA Code
$9C68 Palettes (2) - Speed Slider Zone
$9CA8 Code
$9CF0 Palettes (2) - Techno Tower Zone (unused)
$9D30 Code
$EDE4 Palette - TTZ cycling
$EE0C Code
$EE4C Palette - TTZ cycling
$EE5C Code
$EEBA Palette - TTZ cycling
$EEDA Code
$EF38 Palette - TTZ cycling
$EF58 Code
$EFA4 Palette - TTZ cycling
$EFD4 Code
$FDB0 Music data
$15630 Unknown
$30000 Uncompressed Art - Numbers and letters from the HUD
$30E80 Nemesis Compressed Art - Orbs / fireballs or something (no pointer points to this item)
$30EE2 Nemesis Compressed Art - SSZ 8x8 tiles
$3452C Enigma Compressed Data - SSZ 16x16 tiles
$35762 Enigma Compressed Data - SSZ 128x128 tiles
$39086 Enigma Compressed Data - SSZ level layout
$3931E SSZ primary collision index
$3971E SSZ secondary collision index
$39B1E Nemesis Compressed Art - SSZ 8x8 bg tiles
$3A5FE Enigma Compressed Data - SSZ 16x16 bg tiles
$3A6E8 Enigma Compressed Data - SSZ 128x128 bg tiles
$3A7B8 Enigma Compressed Data - SSZ bg layout
$3A7CE Nemesis Compressed Art - TTZ 8x8 tiles
$3BB24 Enigma Compressed Data - TTZ 16x16 tiles
$3C60A Enigma Compressed Data - TTZ 128x128 tiles
$3ED12 Enigma Compressed Data - TTZ level layout
$3EEC4 TTZ primary collision index
$3F2C4 TTZ secondary collision index
$3F6C4 Nemesis Compressed Art - TTZ 8x8 bg tiles
$409E2 Enigma Compressed Data - TTZ 16x16 bg tiles
$4108C Enigma Compressed Data - TTZ 128x128 bg tiles
$4183E Enigma Compressed Data - TTZ bg layout
$41954 Uncompressed Art - splash screen
$41B9C Nemesis Compressed Art - springs
$41F76 Nemesis Compressed Art - horizontal spikes
$4221E Nemesis Compressed Art - vertical spikes
$42486 Uncompressed Art - animated patterns in TTZ
$44946 Uncompressed Art - "COMBI" (unused)
$44A66 Uncompressed Art - end-of-level splash screen? (unused)
$44F66 Uncompressed Art - numbers
$451E6 Uncompressed Art - exclaimation mark and minute symbol
$45246 Uncompressed Art - stars and rings (some unused)
$45906 Uncompressed Art - seconds symbol
$45926 Palettes (2) - Rainbow Field
$4596C Crackers Compressed Art - 8x8 tiles for Rainbow Field (Entry 00)
$4732E Crackers Compressed Art - 8x8 tiles for Rainbow Field (Entry 01)
$48FEA Mappings - Rainbow Field foreground (Entry 00)
$497F2 Mappings - Rainbow Field foreground (Entry 01)
$49FFA Mappings - Rainbow Field foreground (Entry 02)
$4A802 Mappings - Rainbow Field foreground (Entry 03)
$4B00C Mappings - Rainbow Field background (Entry 00)
$4B814 Mappings - Rainbow Field background (Entry 01)
$4C014 Palettes (2) - Electric Field
$4C05A Crackers Compressed Art - 8x8 tiles for Electric Field (Entry 00)
$4F3D8 Crackers Compressed Art - 8x8 tiles for Electric Field (Entry 01)
$51094 Mappings - Electric Field foreground (Entry 00)
$5189C Mappings - Electric Field foreground (Entry 01)
$520A4 Mappings - Electric Field foreground (Entry 02)
$528AC Mappings - Electric Field foreground (Entry 03)
$530B6 Mappings - Electric Field background (Entry 00)
$5373E Mappings - Electric Field background (Entry 01)
$53DC6 Mappings - Electric Field background (Entry 02)
$54460 Empty
$60000 Uncompressed Art - Sonic's arms
$64000 Uncompressed Art - Tails' arms
$66680 Index system for frames used for Sonic's arm
$667D8 Pattern load cues - Sonic's arm
$66B34 Mappings - Sonic's arm
$66D5C Something to do with how Sonic's arm is connected to Sonic
$66E26 Index system for frames used for Sonic
$66F92 Pattern load cues - Sonic
$67302 Mappings - Sonic
$6777C Index system for frames used for Tails' arm
$6788C Pattern load cues - Tails' arm
$67B34 Mappings - Tails' arm
$67CD2 Something to do with how Tails' arm is connected to Tails
$67DD2 Index system for frames used for Tails
$67FBE Pattern load cues - Tails
$6852C Mappings - Tails
$68A06 Code
$68A42 Index system for frames used for Sonic on field levels
$68ABA Pattern load cues - Sonic on field levels
$68BE6 Mappings - Sonic on field levels
$68CFA Code
$68D36 Index system for frames used for Tails on field levels
$68DC6 Pattern load cues - Tails on field levels
$68EF2 Mappings - Tails on field levels
$68FD6 Empty
$80000 Uncompressed Art - Sonic
$90000 Uncompressed Art - Sonic on field levels
$98000 Uncompressed Art - Text
$A0000 Uncompressed Art - Tails
$B0000 Uncompressed Art - Tails on field levels
$B3820 Empty or unused data until end of ROM

Savestate Contents (Speed Slider Zone)

Offset Purpose
$2478 Unknown
$2678 Collision Data
$2E78 Unknown
$3180 16x16 Tile Mappings
$4938 128x128 Tile Mappings
$BC38 Level Layout
$C238 16x16 Background Tile Mappings
$C4F8 128x128 Background Tile Mappings
$C878 Background Layout
$F85C Palettes

Savestate Contents (Techno Tower Zone)

Offset Purpose
$2478 Unknown
$2678 Collision Data
$2E78 Unknown
$3180 16x16 Tile Mappings
$3FD0 128x128 Tile Mappings
$9B50 Level Layout
$9D50 16x16 Background Tile Mappings
$A748 128x128 Background Tile Mappings
$B748 Background Layout
$F85C Palettes

Mappings for Title Screen, Menu and Field Levels

Each image on the game select screen is made up of 8x8 pixel tiles. The way these tiles are arranged is called mappings. Each 8x8 tile is given a two-byte value based on where it appears in the VRAM:

Sonic Crackers vram.png

Starting at 0000, so that on the title screen 0003 is a hash symbol (#). To change which palette the tile uses, add 2000 to its value.

Pattern Load Cues for Sonic and Tails

Pattern load cues tell the game which graphics are to be loaded into the VRAM from the ROM for each frame of Sonic's and Tails' sprite. Each load cue consists of ten bytes

S2S1 97L3 L2L1 DDDD FFFF

S2S1 = DMA Size

  • This is the number of bytes of the art to transfer to V-Ram, the size (number of bytes) is divided by 2 and then the bytes are swapped.
  • For example 0280 (Size), divided by 2 is 0140, and then swapped to 4001. (This will be unpacked to 93409410 ready for DMA).

97L3 and L2L1 = DMA Location (Source)

  • This is the source address (where the art is being transfered from), it is divided by 2 and then broken into 4 bytes L4L3L2L1, L4 is ignored completely as you cannot have an address that extends that far on the MC68 (it'll mask it), L3 is put with 97 (DMA register), while L2 is put with L1.
  • For example 00018040 (Source Location), divided by 2 is 0000C020, the far 00 is ignored 00C020, and 97 is put on the end 9700C020. (This will all be unpacked to 970096C09520 ready for DMA).

DDDD = DMA Destination

  • This is the destination address (where the art is being transfered to in V-Ram), although this is simply aligned (or arranged) to the VDP port format, there is hard coded data at the rom offset address 0000CA2C, the data there is "added" to the destination address before it's aligned correctly, those hard coded locations can allow you to send ALL art data to another address in V-Ram without having to change all of the PLC entries.
  • This data will be unpacked like so; D380, add hard coded address 0420 = D7A0, the data is now a long-word in size with the destination on the left word D7A00000, the two most significant bits are sent to the far right 17A00003, add (or) the VDP address mode bits 57A00003, add (or) the DMA mode bit 57A00083, it is then sent to VDP for processing.

FFFF = End of list flag

  • If it is a non-zero value (i.e. not 0000), then it is the end of the list, if not, it'll continue to the next entry.

V-Ram "add" address at 0000CA2C

  • The format for the V-Ram "add" data held at offset 0000CA2C consists of 10 bytes, each word (two bytes) is a V-Ram add address for each "character" in game, there can be a total of 8 characters, the first word being the first character, the last word being the eighth character (The reason the word "character" has been used here, is because Sonic and Tails can switch character slots in game in real time, so they are not hard coded to a particular slot).

Mappings for Sonic and Tails

Mappings define how the 8x8 tiles are arranged to make up the characters' sprites. Each mappings block consists of six bytes:

SS YY TT TT XX ZZ

SS = Size and shape of the piece of sprite, where:

  • 00 = 1 tile high, 1 tile wide
  • 01 = 2 tiles high, 1 tile wide
  • 02 = 3 tiles high, 1 tile wide
  • 03 = 4 tiles high, 1 tile wide
  • 04 = 1 tile high, 2 tiles wide
  • 0E = 3 tiles high, 4 tiles wide
  • 0F = 4 tiles high, 4 tiles wide (this is the largest possible sprite piece)

YY and XX = Position of the sprite piece.

TTTT = Which tiles from the VRAM are to be displayed on the screen. 0000 is the first tile in the VRAM, 0001 is the second etc.

ZZ = Defines whether there are additional pieces of sprite in the current frame of animation or not. 00 tells the game to assume the next mappings block is part of the same sprite frame. FF tells the game to end the current sprite frame and start a new one.


Sonic Community Hacking Guide
General
Sonic Music Hacking Guide | SonED2 Manual
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic Eraser | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic 2 (Nick Arcade prototype) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (8-bit) | Sonic 2 & Knuckles | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Sonic 3 | Sonic & Knuckles | Sonic 3 & Knuckles | Sonic & Knuckles Collection | Sonic Crackers | Sonic 3D: Flickies' Island | Chaotix | Sonic R PC | Sonic Jam 6 | Sonic Advance | Sonic Advance 2 | Sonic Advance 3 | Sonic Battle | 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 | Shadow the Hedgehog | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Generations
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 | Subroutine Equivalency List | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | VDP Documentation | Official Sega 32X Documentation | Official Mega-CD Documentation | Official Sega Mega Drive Documentation