Sonic Crackers/Technical information
From Sonic Retro
- Back to: Sonic Crackers.
This article needs cleanup. This article needs to be edited to conform to a higher standard of article quality. |
Contents
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:
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.
References
Sonic Crackers, prototype version of Chaotix | |
---|---|
Main page | Maps | Hidden content | Magazine articles | Technical information |