Actions

Difference between revisions of "Sonic the Hedgehog 2 (Nick Arcade prototype)/Technical information"

From Sonic Retro

(Yes, but there shouldn't be 2 Object lists should there? =P)
 
(31 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{cleanup1|1=Convert to SCHG organization style}}
+
{{back}}[[Category:Technical information]]
 +
{{cleanup}}
  
==General Navigation==
+
==Art==
{| border="1"
+
===Uncompressed art locations===
!Offset||Description
+
===[[Nemesis compression|Nemesis Compressed]] art locations===
|-
+
{|class="prettytable" style="width:auto;"
|$035A8
 
|Level order information
 
|-
 
|$02502
 
|Pallete pointers
 
|-
 
|$035A8
 
|Level select level order
 
|-
 
|$04620
 
|Pointer to collision indexes
 
|-
 
|$0579A
 
|Level size array
 
|-
 
|$059C6
 
|Rasterized layer Deformatiom offset index
 
|-
 
|$10AF8
 
|[[SCHG:S2 Early Prototype#Animation Script|Animation script]] (Sonic)
 
|-
 
|$1BFEC
 
|Main level load block
 
|-
 
|$1C05C
 
|Pattern load cues offset index
 
|-
 
|$1C09C
 
|Pattern load cues
 
|-
 
|$20000
 
|Curve and resistance mapping (identical to S1..)
 
|-
 
|$20100
 
|Curve and resistance mapping
 
|-
 
|$20200
 
|Collision Array (identical to S1..)
 
|-
 
|$22200
 
|Collision Array
 
|-
 
|$28218
 
|Level layout offset index
 
|-
 
|$40000
 
|Object layout offset index
 
|-
 
|$50000
 
|Ring location offset index
 
|}
 
 
 
==Palettes==
 
{| border="1"
 
!Offset||Description
 
|-
 
|$245A
 
|SEGA Foreground
 
|-
 
|$25A2
 
|SEGA Background
 
|-
 
|$2622
 
|Title Screen
 
|-
 
|$26A2
 
|Level Select
 
|-
 
|$2722
 
|Sonic and Tails
 
|-
 
|$2742
 
|Green Hill Zone
 
|-
 
|$27A2
 
|???
 
|-
 
|$2822
 
|Chemical Plant Zone
 
|-
 
|$2840
 
|???
 
|-
 
|$2882
 
|Emerald Hill Zone
 
|-
 
|$28E2
 
|Hidden Palace Zone
 
|-
 
|$2942
 
|Hill Top Zone
 
|-
 
|$29A2
 
|(Sonic again?)
 
|-
 
|$2A22
 
|Labyrinth Zone
 
|-
 
|$2A82
 
|Scrap Brain Zone Act 3
 
|-
 
|$2B02
 
|Labyrinth Zone Sonic Underwater
 
|-
 
|$2B22
 
|Scrap Brain Zone Act 3 Sonic Underwater
 
|-
 
|$2B42
 
|Special Stage Title Card (S1)
 
|-
 
|$2BC2
 
|Continue - Sonic (S1)
 
|-
 
|$2BE2
 
|Continue (S1)
 
|-
 
|$2C02
 
|Sonic - Ending (S1)
 
|}
 
 
 
==Compressed Art, [[Nemesis Format]]==
 
Documented by [[ICEknight]] and [[Quickman]].
 
{| border="1"
 
 
!Offset||Description
 
!Offset||Description
 
|-
 
|-
Line 209: Line 87:
 
|-
 
|-
 
|$A552A
 
|$A552A
|Unknown blocks
+
|HPZ ledge artwork
 
|-
 
|-
 
|$A55EA
 
|$A55EA
Line 218: Line 96:
 
|-
 
|-
 
|$A59C0
 
|$A59C0
|<font color="red">UNKNOWN unused dust</font>
+
|<span style="color: red;">Unknown unused dust</span>
 
|-
 
|-
 
|$A5AE0
 
|$A5AE0
Line 335: Line 213:
 
|-
 
|-
 
|$AC4C8
 
|$AC4C8
|<font color="red">Possible unknown explosion from the ground</font>
+
|<span style="color: red;">Possible unknown explosion from the ground</span>
 
|-
 
|-
 
|$AC6B0
 
|$AC6B0
Line 440: Line 318:
 
|-
 
|-
 
|$CFDC0
 
|$CFDC0
|<font color="red">UNKNOWN</font>
+
|<span style="color: red;">Unknown</span>
 
|-
 
|-
 
|$D8C34
 
|$D8C34
Line 458: Line 336:
 
|}
 
|}
  
 +
===[[Kosinski compression|Kosinski Compressed]] art locations===
  
==Pattern load cue's==
+
===Palette editing===
The pattern load cue's are what loads all the peices of art into the VRAM that are
+
These are the ROM offsets of the palettes:
not in the main level load block. Here's a breakdown of the pattern load cue's in
+
{|class="prettytable" style="width:auto;"
the S2 Alpha ROM:
+
!Offset||Description
 +
|-
 +
|$245A
 +
|SEGA Foreground
 +
|-
 +
|$25A2
 +
|SEGA Background
 +
|-
 +
|$2622
 +
|Title Screen
 +
|-
 +
|$26A2
 +
|Level Select
 +
|-
 +
|$2722
 +
|Sonic and Tails
 +
|-
 +
|$2742
 +
|Green Hill Zone
 +
|-
 +
|$27A2
 +
|Hidden Palace Zone Underwater
 +
|-
 +
|$2822
 +
|Chemical Plant Zone
 +
|-
 +
|$2840
 +
|???
 +
|-
 +
|$2882
 +
|Emerald Hill Zone
 +
|-
 +
|$28E2
 +
|Hidden Palace Zone
 +
|-
 +
|$2942
 +
|Hill Top Zone
 +
|-
 +
|$29A2
 +
|(Sonic again?) (Maybe the special stage Sonic)
 +
|-
 +
|$2A22
 +
|Labyrinth Zone
 +
|-
 +
|$2A82
 +
|Scrap Brain Zone Act 3
 +
|-
 +
|$2B02
 +
|Labyrinth Zone Sonic Underwater
 +
|-
 +
|$2B22
 +
|Scrap Brain Zone Act 3 Sonic Underwater
 +
|-
 +
|$2B42
 +
|Special Stage Title Card (S1)
 +
|-
 +
|$2BC2
 +
|Continue - Sonic (S1)
 +
|-
 +
|$2BE2
 +
|Continue (S1)
 +
|-
 +
|$2C02
 +
|Sonic - Ending (S1)
 +
|}
  
{|align=center border=1
+
===Pattern load requests===
 +
PLRs are what load all the peices of art into the VRAM that are not in the main level load block. Here's a breakdown of the pattern load cue's in the S2 Alpha ROM:
 +
{|class="prettytable" style="width:auto;"
 
|00||1C09C||Standard block 1 (checkpoint/HUD/life counter/ring/gathered points)||(4)
 
|00||1C09C||Standard block 1 (checkpoint/HUD/life counter/ring/gathered points)||(4)
 
|-
 
|-
Line 471: Line 416:
 
|02||1C0D0||Unknown (explosion)||(0)
 
|02||1C0D0||Unknown (explosion)||(0)
 
|-
 
|-
|03||1C0D8||Game\time over (game\time over text)||(0)
+
|03||1C0D8||Game/time over (game/time over text)||(0)
 
|-
 
|-
 
|04||1C0E0||GHZ (GHZ patterns/GHZ Piranha/Vertical spikes/Vertical spring/Horrizontal spring/EHZ Log bridge/GHZ swinging platform/Motobug/GHZ Rock)||(8)
 
|04||1C0E0||GHZ (GHZ patterns/GHZ Piranha/Vertical spikes/Vertical spring/Horrizontal spring/EHZ Log bridge/GHZ swinging platform/Motobug/GHZ Rock)||(8)
Line 481: Line 426:
 
|07||1C134||LZ (CPZ DUPLICATE)||(3)
 
|07||1C134||LZ (CPZ DUPLICATE)||(3)
 
|-
 
|-
|08||1C120||CPZ (CPZ graphics/UNKNOWN/floating platform)||(2)
+
|08||1C120||CPZ (CPZ graphics/Unknown/floating platform)||(2)
 
|-
 
|-
 
|09||1C134||CPZ (Vertical spikes/Diagonal springs/Vertical spring/Horizontal spring)||(3)
 
|09||1C134||CPZ (Vertical spikes/Diagonal springs/Vertical spring/Horizontal spring)||(3)
Line 530: Line 475:
 
|}
 
|}
 
   
 
   
 
+
==Object editing==
==Animation script==
+
===Object pointers===
===Sonic===
+
The object pointers are located at $CB7E. Objects in this list are loaded by referencing their ID (starting from 01). Mainly used by level object layout and  debug object lists. Each ID uses 4 bytes, which are 32-bit absolute pointers to the start of programming (ASM code) of a certain object.
<pre>
+
{|class="prettytable" style="width:auto;"
00 = GHZ
 
01 = lZ (loads CPZ art)
 
02 = CPZ (MZ Music)
 
03 = EHZ (SLZ music)
 
04 = HPZ (SYZ music)
 
05 = HTZ (SBZ music)
 
06 = FZ (HTZ art) (crashes)
 
07 = Special stage? (crashes)
 
08 = (crashes)
 
09 = (crashes)
 
0A = (crashes)
 
0B = (crashes)
 
0C = (illegal instuction error)
 
0D = (crashes)
 
0E = (crashes)
 
0F = (crashes)
 
10 = (crashes)
 
 
 
MAIN LEVEL LOAD BLOCK (IN SONIC 1 FORMAT!): $1BFEC
 
 
 
00: GREEN HILL ZONE
 
GHZ 8X8 ART: 0D8C34
 
GHZ 16X16 MAPPINGS: 0D7E34
 
GHZ 128X128 MAPPINGS: 0DD850
 
PALLET: $04
 
SONG: $81
 
PATTERN LOAD CUES USED: $04, $05
 
 
 
01: LABERYNTH PLANT ZONE
 
CPZ 8C8 ART: 0CC8F4
 
CPZ 16X16 MAPPINGS: 0CB314
 
CPZ 128X128 MAPPINGS: 0CFE34
 
PALLET: $05
 
SONG: $82
 
PATTERN LOAD CUES USED: $06, $07
 
 
 
02: CHEMICAL PLANT ZONE
 
CPZ 8C8 ART: 0CC8F4
 
CPZ 16X16 MAPPINGS: 0CB314
 
CPZ 128X128 MAPPINGS: 0CFE34
 
PALLET: $06
 
SONG: $83
 
PATTERN LOAD CUES USED: $08, $09
 
 
 
03: EMERALD HILL ZONE
 
EHZ 8X8 ART: 0B2184
 
EHZ 16X16 MAPPINGS: 0B11E4
 
EHZ 128X128 MAPPINGS: 0B6EB2
 
PALLET: $07
 
SONG: $84
 
PATTERN LOAD CUES USED: $0A, $0B
 
 
 
04: HIDDEN PALACE ZONE
 
HPZ 8X8 ART: 0C0492
 
HPZ 16X16 MAPPINGS: 0BEEB2
 
HPZ 128X128 MAPPINGS: 0C3314
 
PALLET: $08
 
SONG: $85
 
PATTERN LOAD CUES USED: $0C, $0D
 
 
 
05: HILL TOP ZONE
 
HTZ 8X8 ART: 0B2184
 
HTZ 16X16 MAPPINGS: 0B11E4
 
HTZ 128X128 MAPPINGS: 0B6EB2
 
PALLET: $09
 
SONG: $86
 
PATTERN LOAD CUES USED: $0E, $0F
 
 
 
00: ENDING?
 
GHZ 8X8 ART: 0D8C34
 
GHZ 16X16 MAPPINGS: 0D7E34
 
GHZ 128X128 MAPPINGS: 0DD850
 
PALLET: $13
 
SONG: $86
 
PATTERN LOAD CUES USED: NONE
 
</pre>
 
 
 
==Object list==
 
Starts at 0x0000CB7E.
 
Objects in this list are loaded by referencing their ID (starting from 01). Mainly used by level object layout and  debug object lists. Each ID uses 4 bytes, which are 32-bit absolute pointers to the start of programming (ASM code) of a certain object.
 
{| border="1"
 
 
!ID||Offset||Description||Intended place/Owner/Source
 
!ID||Offset||Description||Intended place/Owner/Source
 
|-
 
|-
 
|$01
 
|$01
|0000F9FC
+
|$F9FC
 
|Sonic
 
|Sonic
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$02
 
|$02
|00010C40
+
|$10C40
 
|Tails
 
|Tails
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$03
 
|$03
|00013E2C
+
|$13E2C
 
|Collision switcher
 
|Collision switcher
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$04
 
|$04
|000154D4
+
|$154D4
 
|Water surface
 
|Water surface
 
|Water zones
 
|Water zones
 
|-
 
|-
 
|$05
 
|$05
|00011D7E
+
|$11D7E
 
|Tails' tails
 
|Tails' tails
 
|Tails only
 
|Tails only
 
|-
 
|-
 
|$06
 
|$06
|00014970
+
|$14970
 
|Spiral path
 
|Spiral path
 
|EHZ
 
|EHZ
 
|-
 
|-
 
|$07
 
|$07
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$08
 
|$08
|00012558
+
|$12558
 
|Water splash
 
|Water splash
 
|Sonic
 
|Sonic
 
|-
 
|-
 
|$09
 
|$09
|0001A3B8
+
|$1A3B8
 
|Sonic
 
|Sonic
 
|Special Stage
 
|Special Stage
 
|-
 
|-
 
|$0A
 
|$0A
|00011E64
+
|$11E64
 
|Underwater bubbles
 
|Underwater bubbles
 
|Water zones
 
|Water zones
 
|-
 
|-
 
|$0B
 
|$0B
|000141B4
+
|$141B4
|Unused alternating plataform
+
|Unused alternating platform
 
|CPZ
 
|CPZ
 
|-
 
|-
 
|$0C
 
|$0C
|000142DC
+
|$142DC
|Unused strange plataform
+
|Unused strange platform
 
|???
 
|???
 
|-
 
|-
 
|$0D
 
|$0D
|0000EF9C
+
|$EF9C
 
|End of level signpost
 
|End of level signpost
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$0E
 
|$0E
|0000B378
+
|$B378
 
|Sonic & Tails
 
|Sonic & Tails
 
|Title screen
 
|Title screen
 
|-
 
|-
 
|$0F
 
|$0F
|0000B3FE
+
|$B3FE
 
|???
 
|???
 
|Title screen?
 
|Title screen?
 
|-
 
|-
 
|$10
 
|$10
|0001AA5A
+
|$1AA5A
 
|???
 
|???
 
|???
 
|???
 
|-
 
|-
 
|$11
 
|$11
|00007BA0
+
|$7BA0
 
|Block bridge
 
|Block bridge
 
|GHZ, HPZ, EHZ
 
|GHZ, HPZ, EHZ
 
|-
 
|-
 
|$12
 
|$12
|000143DC
+
|$143DC
 
|Emerald block
 
|Emerald block
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$13
 
|$13
|00014458
+
|$14458
 
|Waterfall
 
|Waterfall
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$14
 
|$14
|00014CA0
+
|$14CA0
 
|Seesaw
 
|Seesaw
 
|HTZ
 
|HTZ
 
|-
 
|-
 
|$15
 
|$15
|00008204
+
|$8204
|Swinging plataform
+
|Swinging platform
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$16
 
|$16
|00015104
+
|$15104
|Diagonally moving plataform
+
|Diagonally moving platform
 
|HTZ
 
|HTZ
 
|-
 
|-
 
|$17
 
|$17
|0000866C
+
|$866C
 
|Rotating spike on wooden bridge
 
|Rotating spike on wooden bridge
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$18
 
|$18
|0000880C
+
|$880C
|Generic natural plataform
+
|Generic natural platform
 
|GHZ, EHZ, HTZ
 
|GHZ, EHZ, HTZ
 
|-
 
|-
 
|$19
 
|$19
|000152B8
+
|$152B8
|Metal plataform
+
|Metal platform
 
|CPZ
 
|CPZ
 
|-
 
|-
 
|$1A
 
|$1A
|00008C44
+
|$8C44
|Collapsing plataform
+
|Collapsing platform
 
|GHZ, HPZ
 
|GHZ, HPZ
 
|-
 
|-
 
|$1B
 
|$1B
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$1C
 
|$1C
|000093A4
+
|$93A4
|Bridge support/Moving plataform support
+
|Bridge support/Moving platform support
 
|GHZ, EHZ, HTZ
 
|GHZ, EHZ, HTZ
 
|-
 
|-
 
|$1D
 
|$1D
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$1E
 
|$1E
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$1F
 
|$1F
|0000A0D0
+
|$A0D0
 
|Crabmeat (badnik)
 
|Crabmeat (badnik)
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$20
 
|$20
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$21
 
|$21
|0001B028
+
|$1B028
 
|HUD
 
|HUD
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$22
 
|$22
|0000A408
+
|$A408
 
|Buzz Bomber (badnik)
 
|Buzz Bomber (badnik)
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$23
 
|$23
|0000A55E
+
|$A55E
 
|Buzz Bomber's projectile
 
|Buzz Bomber's projectile
 
|Buzz Bomber
 
|Buzz Bomber
 
|-
 
|-
 
|$24
 
|$24
|00009808
+
|$9808
 
|Unknown explosion
 
|Unknown explosion
 
|???
 
|???
 
|-
 
|-
 
|$25
 
|$25
|0000A7E4
+
|$A7E4
 
|Ring
 
|Ring
 
|Debug
 
|Debug
 
|-
 
|-
 
|$26
 
|$26
|0000AE58
+
|$AE58
 
|Monitor
 
|Monitor
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$27
 
|$27
|0000987C
+
|$987C
 
|Dust explosion
 
|Dust explosion
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$28
 
|$28
|00009AA8
+
|$9AA8
 
|Animal plus points from badnik explosion
 
|Animal plus points from badnik explosion
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$29
 
|$29
|00009FA0
+
|$9FA0
 
|Points
 
|Points
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$2A
 
|$2A
|000094EC
+
|$94EC
 
|One way barrier
 
|One way barrier
 
|SBZ
 
|SBZ
 
|-
 
|-
 
|$2B
 
|$2B
|0000B718
+
|$B718
 
|Chopper (badnik)
 
|Chopper (badnik)
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$2C
 
|$2C
|0000B7DE
+
|$B7DE
 
|Jaws (badnik)
 
|Jaws (badnik)
 
|LZ
 
|LZ
 
|-
 
|-
 
|$2D
 
|$2D
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$2E
 
|$2E
|0000B03A
+
|$B03A
 
|Monitor contents
 
|Monitor contents
 
|Monitor
 
|Monitor
 
|-
 
|-
 
|$2F
 
|$2F
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$30
 
|$30
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$31
 
|$31
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$32
 
|$32
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$33
 
|$33
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$34
 
|$34
|0000B8C8
+
|$B8C8
 
|Title card
 
|Title card
 
|Title card
 
|Title card
 
|-
 
|-
 
|$35
 
|$35
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$36
 
|$36
|0000C664
+
|$C664
 
|Spikes
 
|Spikes
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$37
 
|$37
|0000A91E
+
|$A91E
 
|Ring spray
 
|Ring spray
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$38
 
|$38
|000123BA
+
|$123BA
 
|Blue shield
 
|Blue shield
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$39
 
|$39
|0000BA84
+
|$BA84
 
|Game Over/Time Over
 
|Game Over/Time Over
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$3A
 
|$3A
|0000BB46
+
|$BB46
 
|End of level result screen
 
|End of level result screen
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$3B
 
|$3B
|0000C848
+
|$C848
 
|Purple rock
 
|Purple rock
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$3C
 
|$3C
|0000C8C4
+
|$C8C4
 
|Breakable wall
 
|Breakable wall
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$3D
 
|$3D
|00018CFC
+
|$18CFC
 
|Robotnik
 
|Robotnik
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$3E
 
|$3E
|000194E4
+
|$194E4
 
|Egg prison
 
|Egg prison
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$3F
 
|$3F
|00009914
+
|$9914
 
|Fire explosion
 
|Fire explosion
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$40
 
|$40
|0000F248
+
|$F248
 
|Motobug (badnik)
 
|Motobug (badnik)
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$41
 
|$41
|0000E1C8
+
|$E1C8
 
|Spring
 
|Spring
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$42
 
|$42
|0000EBB8
+
|$EBB8
 
|Newtron (badnik)
 
|Newtron (badnik)
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$43
 
|$43
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$44
 
|$44
|0000EEB4
+
|$EEB4
 
|Wall barrier
 
|Wall barrier
 
|GHZ
 
|GHZ
 
|-
 
|-
 
|$45
 
|$45
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$46
 
|$46
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$47
 
|$47
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$48
 
|$48
|000190E6
+
|$190E6
 
|Big ball
 
|Big ball
 
|GHZ boss
 
|GHZ boss
 
|-
 
|-
 
|$49
 
|$49
|00015690
+
|$15690
 
|Waterfall
 
|Waterfall
 
|EHZ
 
|EHZ
 
|-
 
|-
 
|$4A
 
|$4A
|00016AA0
+
|$16AA0
 
|Octus (badnik)
 
|Octus (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$4B
 
|$4B
|00016794
+
|$16794
 
|Buzzer (badnik)
 
|Buzzer (badnik)
 
|EHZ (HPZ, HTZ)
 
|EHZ (HPZ, HTZ)
 
|-
 
|-
 
|$4C
 
|$4C
|00016D50
+
|$16D50
 
|Batbot (badnik)
 
|Batbot (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$4D
 
|$4D
|0001587C
+
|$1587C
 
|Tricerabot (badnik)
 
|Tricerabot (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$4E
 
|$4E
|000171D8
+
|$171D8
 
|Crocobot (badnik)
 
|Crocobot (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$4F
 
|$4F
|00015DA4
+
|$15DA4
 
|Dinobot (badnik)
 
|Dinobot (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$50
 
|$50
|00015F08
+
|$15F08
 
|"Strange" Aquis (badnik)
 
|"Strange" Aquis (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$51
 
|$51
|00016524
+
|$16524
 
|Aquis (badnik)
 
|Aquis (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$52
 
|$52
|00015B4C
+
|$15B4C
 
|Piranha (badnik)
 
|Piranha (badnik)
 
|HPZ
 
|HPZ
 
|-
 
|-
 
|$53
 
|$53
|000174D0
+
|$174D0
 
|Masher (badnik)
 
|Masher (badnik)
 
|EHZ
 
|EHZ
 
|-
 
|-
 
|$54
 
|$54
|000175D0
+
|$175D0
 
|Snailbot (badnik)
 
|Snailbot (badnik)
 
|EHZ (HTZ)
 
|EHZ (HTZ)
 
|-
 
|-
 
|$55
 
|$55
|000181CC
+
|$181CC
 
|???
 
|???
 
|???
 
|???
 
|-
 
|-
 
|$56
 
|$56
|00018456
+
|$18456
 
|Unknown double explosion
 
|Unknown double explosion
 
|???
 
|???
 
|-
 
|-
 
|$57
 
|$57
|00017884
+
|$17884
 
|???
 
|???
 
|???
 
|???
 
|-
 
|-
 
|$58
 
|$58
|00017AEE
+
|$17AEE
 
|???
 
|???
 
|???
 
|???
 
|-
 
|-
 
|$59
 
|$59
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$5A
 
|$5A
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$5B
 
|$5B
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$5C
 
|$5C
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$5D
 
|$5D
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$5E
 
|$5E
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$5F
 
|$5F
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$60
 
|$60
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$61
 
|$61
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$62
 
|$62
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$63
 
|$63
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$64
 
|$64
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$65
 
|$65
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$66
 
|$66
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$67
 
|$67
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$68
 
|$68
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$69
 
|$69
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$6A
 
|$6A
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$6B
 
|$6B
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$6C
 
|$6C
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$6D
 
|$6D
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$6E
 
|$6E
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$6F
 
|$6F
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$70
 
|$70
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$71
 
|$71
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$72
 
|$72
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$73
 
|$73
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$74
 
|$74
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$75
 
|$75
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$76
 
|$76
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$77
 
|$77
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$78
 
|$78
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$79
 
|$79
|000134C8
+
|$134C8
 
|Lamppost
 
|Lamppost
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$7A
 
|$7A
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$7B
 
|$7B
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$7C
 
|$7C
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$7D
 
|$7D
|00013770
+
|$13770
 
|Hidden bonus
 
|Hidden bonus
 
|Any zone
 
|Any zone
 
|-
 
|-
 
|$7E
 
|$7E
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$7F
 
|$7F
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$80
 
|$80
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$81
 
|$81
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$82
 
|$82
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$83
 
|$83
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$84
 
|$84
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$85
 
|$85
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$86
 
|$86
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$87
 
|$87
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$88
 
|$88
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$89
 
|$89
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$8A
 
|$8A
|000185E0
+
|$185E0
 
|Sonic Team Presents/Credits
 
|Sonic Team Presents/Credits
 
|Title screen/Ending sequence
 
|Title screen/Ending sequence
 
|-
 
|-
 
|$8B
 
|$8B
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|-
 
|-
 
|$8C
 
|$8C
|0000CDAE
+
|$CDAE
 
|Null object
 
|Null object
 
|Anywhere
 
|Anywhere
 
|}
 
|}
  
===Unreferenced objects===
+
====Unreferenced objects====
 
The following objects can occupy a valid slot in order to work on their own instead of being summoned by their respective owners:
 
The following objects can occupy a valid slot in order to work on their own instead of being summoned by their respective owners:
# Metal plataform's collision mask: 000152F0.
+
# Metal platform's collision mask: $152F0.
# Aquis' shot (inoffensive): 000165AA.
+
# Aquis' shot (inoffensive): $165AA.
# Buzzer's shot: 000168A0.
+
# Buzzer's shot: $168A0.
  
 
The following objects are not summoned by any other object or event and can occupy a valid slot in order to work:
 
The following objects are not summoned by any other object or event and can occupy a valid slot in order to work:
# Giant ring: 0000AA72.
+
# Giant ring: $AA72.
# Flash from giant ring: 0000AB3C.
+
# Flash from giant ring: $AB3C.
==Debug object lists==
+
 
These lists are used to tell the game which objects can be placed through debug mode at each zone. They are handled by an offset index at 0x0001BCEC.
+
===Sprite mappings===
{| border="1"
+
 
!List location||Used by
+
===Dynamic PLCs===
 +
 
 +
==Text==
 +
===Level select text===
 +
Level names use non-[[ASCII]] characters. See the table below:
 +
 
 +
{|class="prettytable" style="width:auto;"
 +
| 00 = 0
 +
| 01 = 1
 +
| 02 = 2
 +
| 03 = 3
 +
| 04 = 4
 +
|-
 +
| 05 = 5
 +
| 06 = 6
 +
| 07 = 7
 +
| 08 = 8
 +
| 09 = 9
 +
|-
 +
| 0A = $
 +
| 0B = -
 +
| 0C = =
 +
| 0D = <-
 +
| 0E = <-
 +
|-
 +
| 0F = Y
 +
| 10 = Z
 +
| 11 = A
 +
| 12 = B
 +
| 13 = C
 +
|-
 +
| 14 = D
 +
| 15 = E
 +
| 16 = F
 +
| 17 = G
 +
| 18 = H
 +
|-
 +
| 19 = I
 +
| 1A = J
 +
| 1B = K
 +
| 1C = L
 +
| 1D = M
 +
|-
 +
| 1E = N
 +
| 1F = O
 +
| 20 = P
 +
| 21 = Q
 +
| 22 = R
 +
|-
 +
| 23 = S
 +
| 24 = T
 +
| 25 = U
 +
| 26 = V
 +
| 27 = W
 +
|-
 +
| 28 = X
 +
|
 +
| FF = (space)
 +
|
 +
|
 +
|}
 +
 
 +
==Miscellaneous==
 +
===General navigation===
 +
{|class="prettytable" style="width:auto;"
 +
!Offset||Description
 +
|-
 +
|$035A8
 +
|Level order information
 +
|-
 +
|$02502
 +
|Palette pointers
 +
|-
 +
|$035A8
 +
|Level select level order
 +
|-
 +
|$04620
 +
|Pointer to collision indexes
 +
|-
 +
|$0579A
 +
|Level size array
 +
|-
 +
|$059C6
 +
|Rasterized layer Deformation offset index
 +
|-
 +
|$10AF8
 +
|Animation script (Sonic)
 
|-
 
|-
|0001BCFA
+
|$1BFEC
|Green Hill (Zone 00)
+
|Main level load block
 
|-
 
|-
|0001BD6C
+
|$1C05C
|Labyrinth (Zone 01)
+
|Pattern load cues offset index
 
|-
 
|-
|0001BD6C
+
|$1C09C
|Chemical Plant (Zone 02)
+
|Pattern load cues
 
|-
 
|-
|0001BDEE
+
|$20000
|Emerald Hill (Zone 03)
+
|Curve and resistance mapping (identical to S1)
 
|-
 
|-
|0001BF6A
+
|$20100
|Hidden Palace (Zone 04)
+
|Curve and resistance mapping
 +
|-
 +
|$20200
 +
|Collision Array (identical to S1)
 +
|-
 +
|$22200
 +
|Collision Array
 
|-
 
|-
|0001BED0
+
|$28218
|Hill Top (Zone 05)
+
|Level layout offset index
 
|-
 
|-
|0001BF6A
+
|$40000
|S1 ending's GHZ (Leftover Zone 06)
+
|Object layout offset index
 +
|-
 +
|$50000
 +
|Ring location offset index
 
|}
 
|}
The first two bytes on the list indicate how many objects are there. Each object has 8 bytes; for simply changing which object should appear instead of another, edit bytes 1 & 5, object type (ID) and sub-type, respectively.
 
  
 +
===Level slots===
 +
{|class="prettytable" style="width:auto;"
 +
! Level ID !! Level Name
 +
|-
 +
| 00 || GHZ
 +
|-
 +
| 01 || LZ (loads CPZ art)
 +
|-
 +
| 02 || CPZ (MZ Music)
 +
|-
 +
| 03 || EHZ (SLZ music)
 +
|-
 +
| 04 || HPZ (SYZ music)
 +
|-
 +
| 05 || HTZ (SBZ music)
 +
|-
 +
| 06 || Ending (GHZ art) (crashes)
 +
|}
 +
 +
===Main level load block===
 +
This is located at $1BFEC, and uses the Sonic 1 format
 +
{|class="prettytable" style="width:auto;"
 +
! Level ID !! Level Name !! 8x8 art !! 16x16 mappings !! 128x128 mappings !! Palette !! Song ID !! PLRs used
 +
|-
 +
| 00
 +
| GHZ
 +
| $D8C34
 +
| $D7E34
 +
| $DD850
 +
| $04
 +
| $81
 +
| $04, $05
 +
|-
 +
| 01
 +
| LZ
 +
| $CC8F4
 +
| $CB314
 +
| $CFE34
 +
| $05
 +
| $82
 +
| $06, $07
 +
|-
 +
| 02
 +
| CPZ
 +
| $CC8F4
 +
| $CB314
 +
| $CFE34
 +
| $06
 +
| $83
 +
| $08, $09
 +
|-
 +
| 03
 +
| EHZ
 +
| $B2184
 +
| $B11E4
 +
| $B6EB2
 +
| $07
 +
| $84
 +
| $0A, $0B
 +
|-
 +
| 04
 +
| HPZ
 +
| $C0492
 +
| $BEEB2
 +
| $C3314
 +
| $08
 +
| $85
 +
| $0C, $0D
 +
|-
 +
| 05
 +
| HTZ
 +
| $B2184
 +
| $B11E4
 +
| $B6EB2
 +
| $09
 +
| $86
 +
| $0E, $0F
 +
|-
 +
| 06
 +
| Ending
 +
| $D8C34
 +
| $D7E34
 +
| $DD850
 +
| $13
 +
| $86
 +
| None
 +
|}
 +
 +
===Debug object lists===
 +
These lists are used to tell the game which objects can be placed through debug mode at each zone. They are handled by an offset index at $1BCEC.
 +
{|class="prettytable" style="width:auto;"
 +
! List location !! Used by
 +
|-
 +
| $1BCFA
 +
| GHZ
 +
|-
 +
| $1BD6C
 +
| LZ
 +
|-
 +
| $1BD6C
 +
| CPZ
 +
|-
 +
| $1BDEE
 +
| EHZ
 +
|-
 +
| $1BF6A
 +
| HPZ
 +
|-
 +
| $1BED0
 +
| HTZ
 +
|-
 +
| $1BF6A
 +
| Ending
 +
|}
 +
The first two bytes on the list indicate how many objects are there. Each object has 8 bytes: for simply changing which object should appear instead of another, edit bytes 1 & 5, which are object type (ID) and sub-type, respectively.
 +
 +
==References==
 +
<references />
 +
 +
{{S2NAOmni}}
 
{{SCHGuides}}
 
{{SCHGuides}}

Latest revision as of 13:49, 1 October 2020

Back to: Sonic the Hedgehog 2 (Nick Arcade prototype).
Sonicretro-round.svg This article needs cleanup.

This article needs to be edited to conform to a higher standard of article quality.
After the article has been cleaned up, you may remove this message. See How to Edit a Page for help.

Art

Uncompressed art locations

Nemesis Compressed art locations

Offset Description
$9DF8E Shield
$9E114 Invincibility stars
$A0960 SEGA logo
$A1520 Title Screen graphics
$A2E82 Sonic & Tails at the Title Screen
$A39C6 GHZ bit of flower (S1)
$A3A10 GHZ & MZ platform with chain (S1)
$A3B2A EHZ Log bridge
$A3C16 Unused 16x16 block (S1)
$A3C5E GHZ rolling ball (S1)
$A3DFC GHZ rolling log with spikes (S1)
$A4010 GHZ unused spikes around the rolling log (S1)
$A413C GHZ rock (S1)
$A426A GHZ breakable wall (S1)
$A4308 Some GHZ wall (S1)
$A4368 Unknown fire
$A44A0 Unused, possible burning log
$A45AE Waterfall
$A46B4 Unused HTZ fireballs
$A4802 GHZ Log bridge (S1)
$A48DA HTZ crossing platform
$A4BCE HTZ automatic door
$A4C46 HTZ seesaw with green ball
$A4DDE HPZ bridge
$A4F56 HPZ waterfalls
$A52B8 HPZ big emerald
$A552A HPZ ledge artwork
$A55EA HPZ glowing orb
$A5826 Some platform
$A59C0 Unknown unused dust
$A5AE0 CPZ floating platform
$A5C2E Water surface
$A5D9E Button
$A5E76 Vertical spring
$A5F92 Horizontal spring
$A605C Diagonal springs
$A6230 Score/Rings/Time HUD
$A6338 Lives HUD
$A644E Rings
$A6542 Monitors
$A696C Vertical spikes
$A69BC Gathered points
$A6A96 Prototype checkpoint
$A6B3C Prototype end of level sign
$A6F8A Crocodile
$A732C EHZ Buzz Bomber
$A7512 HPZ Bat
$A7868 OOZ Octopus
$A7B88 Triceratops
$A7F84 HPZ Dinobot
$A835A Unused sideways piranha
$A8852 OOZ Prototype seahorses
$A8CA0 Unused rolling ball
$A8F36 Unused Mother Bubbler
$A9162 Unused Bubbler
$A9384 EHZ Snail
$A9580 Prototype Crawler
$A9902 EHZ Piranha
$A9B0E Boss ship
$AA24A CPZ Prototype boss
$AA7A8 Big explosion
$AAE30 Robotnik's ship boost
$AAEAE Puff of smoke
$AAF94 EHZ Boss
$AB780 EHZ Boss helicopter blades
$AB874 SBZ Ball Hog (S1)
$ABC34 Crabmeat
$AC122 GHZ Buzz Bomber (S1)
$AC4C8 Possible unknown explosion from the ground
$AC6B0 LZ Burrobot (S1)
$ACD9A GHZ Piranha (S1)
$AD002 LZ Jaws (S1)
$AD28C SYZ Roller (S1)
$AD7B0 GHZ Motobug (S1)
$ADA3A GHZ Newtron (S1)
$AE058 SYZ Snail (S1)
$AE440 MZ Bat (S1)
$AE73C Splats (S1)
$AE984 SLZ Bomb (S1)
$AEC1C LZ Orbinaut (S1)
$AEDFA MZ Catakiller (S1)
$AEF88 Title card (S1)
$AF596 Explosions
$AFBFC GAME OVER, TIME OVER
$AFD8E Vertical spring
$AFE90 Sideways spring
$AFF6C Big ring flash
$B00E0 End of level hidden bonuses (S1)
$B03E2 Sonic at Continue screen + Continue star (S1)
$B0692 CONTINUE + Minisonic (S1)
$B08CC Bunny
$B0A24 Chicken
$B0B80 Penguin
$B0CFC Seal
$B0E18 Pig
$B0F4E Flicky
$B1088 Squirrel
$B2184 EHZ graphics
$B5784 HTZ graphics
$B6BAA HTZ placeholders for animated tiles
$C0492 HPZ graphics
$C31A0 HPZ glowing orbs
$CC8F4 CPZ graphics
$CFDC0 Unknown
$D8C34 GHZ graphics (S1)
$DC1F0 GHZ graphics (S1)
$E0B62 Ending scene additional graphics (S1)
$E0DEA Credits font (S1)
$E13E8 SONIC THE HEDGEHOG ending text (S1)

Kosinski Compressed art locations

Palette editing

These are the ROM offsets of the palettes:

Offset Description
$245A SEGA Foreground
$25A2 SEGA Background
$2622 Title Screen
$26A2 Level Select
$2722 Sonic and Tails
$2742 Green Hill Zone
$27A2 Hidden Palace Zone Underwater
$2822 Chemical Plant Zone
$2840 ???
$2882 Emerald Hill Zone
$28E2 Hidden Palace Zone
$2942 Hill Top Zone
$29A2 (Sonic again?) (Maybe the special stage Sonic)
$2A22 Labyrinth Zone
$2A82 Scrap Brain Zone Act 3
$2B02 Labyrinth Zone Sonic Underwater
$2B22 Scrap Brain Zone Act 3 Sonic Underwater
$2B42 Special Stage Title Card (S1)
$2BC2 Continue - Sonic (S1)
$2BE2 Continue (S1)
$2C02 Sonic - Ending (S1)

Pattern load requests

PLRs are what load all the peices of art into the VRAM that are not in the main level load block. Here's a breakdown of the pattern load cue's in the S2 Alpha ROM:

00 1C09C Standard block 1 (checkpoint/HUD/life counter/ring/gathered points) (4)
01 1C0BC Standard block 2 (Monitor/Shield/Invincibility stars) (2)
02 1C0D0 Unknown (explosion) (0)
03 1C0D8 Game/time over (game/time over text) (0)
04 1C0E0 GHZ (GHZ patterns/GHZ Piranha/Vertical spikes/Vertical spring/Horrizontal spring/EHZ Log bridge/GHZ swinging platform/Motobug/GHZ Rock) (8)
05 1C118 GHZ (GHZ Piranha) (0)
06 1C120 LZ (CPZ DUPLICATE) (2)
07 1C134 LZ (CPZ DUPLICATE) (3)
08 1C120 CPZ (CPZ graphics/Unknown/floating platform) (2)
09 1C134 CPZ (Vertical spikes/Diagonal springs/Vertical spring/Horizontal spring) (3)
0A 1C14E EHZ (EHZ graphics/Fireball/Waterfall/GHZ bridge/HTZ seesaw/Vertical spikes/Diagonal springs/Vertical spring/Horizontal spring) (8)
0B 1C186 EHZ (Shield/Gathered points/Buzz Bomber/EHZ Snail/EHZ Piranha) (4)
0C 1C1A6 HPZ (HPZ graphics/HPZ bridge/waterfall/platform/pulsing ball/HPZ stuff/master emerald/Water surface) (7)
0D 1C1D8 HPZ (HPZ Dinobot/HPZ Bat/Crocodile/Buzz Bomber/HPZ Bat/Triceratops/Dinobot/Sideways piranha (1)[7]
0E 1C20A HTZ (EHZ graphics/HTZ graphics/HTZ placeholders for animated tiles/Fire/Fireballs/HTZ automatic door/GHZ Log bridge/HTZ seesaw/Vertical spikes/Diagonal springs/Vertical spring/Horizontal spring) (9)
0F 1C254 HTZ (HTZ lift/Buzz Bomber/EHZ Snail/EHZ Piranha) (0) [4]
10 1C26E ??? (Title card (S1)/) (0)
11 1C276 Boss (Boss ship/EHZ Boss/EHZ Boss helicopter blades/Boss ship/CPZ Prototype boss/Robotnik's ship boost/Puff of smoke/EHZ Boss/EHZ Boss helicopter blades) (2)[8]
12 1C2AE End of level (Signpost/End of level hidden bonuses (S1)/Big ring flash) (2)
13 1C2C2 ??? (INVALID) (10)
14 1C2C2 ??? (INVALID) (10)
15 1C2C4 GHZ Animals (Bunny/Flicky) (1)
16 1C2D2 LZ Animals (Penguin/Seal) (1)
17 1C2E0 CPZ Animals (Squirrel/Seal) (1)
18 1C2EE EHZ Animals (Pig/Flicky) (1)
19 1C2FC HPZ Animals (Pig/Chicken) (1)
1A 1C30A HTZ Animals (Bunny/Chicken) (1)
1B 1C318 ??? (INVALID) (NA)
1C 1C31A ??? (INVALID) (NA)
1D 1C31C ??? (INVALID) (NA)
1E 1C31E ??? (INVALID) (NA)
1F 1C320 ??? (INVALID) (NA)

Object editing

Object pointers

The object pointers are located at $CB7E. Objects in this list are loaded by referencing their ID (starting from 01). Mainly used by level object layout and debug object lists. Each ID uses 4 bytes, which are 32-bit absolute pointers to the start of programming (ASM code) of a certain object.

ID Offset Description Intended place/Owner/Source
$01 $F9FC Sonic Any zone
$02 $10C40 Tails Any zone
$03 $13E2C Collision switcher Any zone
$04 $154D4 Water surface Water zones
$05 $11D7E Tails' tails Tails only
$06 $14970 Spiral path EHZ
$07 $CDAE Null object Anywhere
$08 $12558 Water splash Sonic
$09 $1A3B8 Sonic Special Stage
$0A $11E64 Underwater bubbles Water zones
$0B $141B4 Unused alternating platform CPZ
$0C $142DC Unused strange platform ???
$0D $EF9C End of level signpost Any zone
$0E $B378 Sonic & Tails Title screen
$0F $B3FE ??? Title screen?
$10 $1AA5A ??? ???
$11 $7BA0 Block bridge GHZ, HPZ, EHZ
$12 $143DC Emerald block HPZ
$13 $14458 Waterfall HPZ
$14 $14CA0 Seesaw HTZ
$15 $8204 Swinging platform GHZ
$16 $15104 Diagonally moving platform HTZ
$17 $866C Rotating spike on wooden bridge GHZ
$18 $880C Generic natural platform GHZ, EHZ, HTZ
$19 $152B8 Metal platform CPZ
$1A $8C44 Collapsing platform GHZ, HPZ
$1B $CDAE Null object Anywhere
$1C $93A4 Bridge support/Moving platform support GHZ, EHZ, HTZ
$1D $CDAE Null object Anywhere
$1E $CDAE Null object Anywhere
$1F $A0D0 Crabmeat (badnik) GHZ
$20 $CDAE Null object Anywhere
$21 $1B028 HUD Any zone
$22 $A408 Buzz Bomber (badnik) GHZ
$23 $A55E Buzz Bomber's projectile Buzz Bomber
$24 $9808 Unknown explosion ???
$25 $A7E4 Ring Debug
$26 $AE58 Monitor Any zone
$27 $987C Dust explosion Any zone
$28 $9AA8 Animal plus points from badnik explosion Any zone
$29 $9FA0 Points Any zone
$2A $94EC One way barrier SBZ
$2B $B718 Chopper (badnik) GHZ
$2C $B7DE Jaws (badnik) LZ
$2D $CDAE Null object Anywhere
$2E $B03A Monitor contents Monitor
$2F $CDAE Null object Anywhere
$30 $CDAE Null object Anywhere
$31 $CDAE Null object Anywhere
$32 $CDAE Null object Anywhere
$33 $CDAE Null object Anywhere
$34 $B8C8 Title card Title card
$35 $CDAE Null object Anywhere
$36 $C664 Spikes Any zone
$37 $A91E Ring spray Any zone
$38 $123BA Blue shield Any zone
$39 $BA84 Game Over/Time Over Any zone
$3A $BB46 End of level result screen Any zone
$3B $C848 Purple rock GHZ
$3C $C8C4 Breakable wall GHZ
$3D $18CFC Robotnik Any zone
$3E $194E4 Egg prison Any zone
$3F $9914 Fire explosion Any zone
$40 $F248 Motobug (badnik) GHZ
$41 $E1C8 Spring Any zone
$42 $EBB8 Newtron (badnik) GHZ
$43 $CDAE Null object Anywhere
$44 $EEB4 Wall barrier GHZ
$45 $CDAE Null object Anywhere
$46 $CDAE Null object Anywhere
$47 $CDAE Null object Anywhere
$48 $190E6 Big ball GHZ boss
$49 $15690 Waterfall EHZ
$4A $16AA0 Octus (badnik) HPZ
$4B $16794 Buzzer (badnik) EHZ (HPZ, HTZ)
$4C $16D50 Batbot (badnik) HPZ
$4D $1587C Tricerabot (badnik) HPZ
$4E $171D8 Crocobot (badnik) HPZ
$4F $15DA4 Dinobot (badnik) HPZ
$50 $15F08 "Strange" Aquis (badnik) HPZ
$51 $16524 Aquis (badnik) HPZ
$52 $15B4C Piranha (badnik) HPZ
$53 $174D0 Masher (badnik) EHZ
$54 $175D0 Snailbot (badnik) EHZ (HTZ)
$55 $181CC ??? ???
$56 $18456 Unknown double explosion ???
$57 $17884 ??? ???
$58 $17AEE ??? ???
$59 $CDAE Null object Anywhere
$5A $CDAE Null object Anywhere
$5B $CDAE Null object Anywhere
$5C $CDAE Null object Anywhere
$5D $CDAE Null object Anywhere
$5E $CDAE Null object Anywhere
$5F $CDAE Null object Anywhere
$60 $CDAE Null object Anywhere
$61 $CDAE Null object Anywhere
$62 $CDAE Null object Anywhere
$63 $CDAE Null object Anywhere
$64 $CDAE Null object Anywhere
$65 $CDAE Null object Anywhere
$66 $CDAE Null object Anywhere
$67 $CDAE Null object Anywhere
$68 $CDAE Null object Anywhere
$69 $CDAE Null object Anywhere
$6A $CDAE Null object Anywhere
$6B $CDAE Null object Anywhere
$6C $CDAE Null object Anywhere
$6D $CDAE Null object Anywhere
$6E $CDAE Null object Anywhere
$6F $CDAE Null object Anywhere
$70 $CDAE Null object Anywhere
$71 $CDAE Null object Anywhere
$72 $CDAE Null object Anywhere
$73 $CDAE Null object Anywhere
$74 $CDAE Null object Anywhere
$75 $CDAE Null object Anywhere
$76 $CDAE Null object Anywhere
$77 $CDAE Null object Anywhere
$78 $CDAE Null object Anywhere
$79 $134C8 Lamppost Any zone
$7A $CDAE Null object Anywhere
$7B $CDAE Null object Anywhere
$7C $CDAE Null object Anywhere
$7D $13770 Hidden bonus Any zone
$7E $CDAE Null object Anywhere
$7F $CDAE Null object Anywhere
$80 $CDAE Null object Anywhere
$81 $CDAE Null object Anywhere
$82 $CDAE Null object Anywhere
$83 $CDAE Null object Anywhere
$84 $CDAE Null object Anywhere
$85 $CDAE Null object Anywhere
$86 $CDAE Null object Anywhere
$87 $CDAE Null object Anywhere
$88 $CDAE Null object Anywhere
$89 $CDAE Null object Anywhere
$8A $185E0 Sonic Team Presents/Credits Title screen/Ending sequence
$8B $CDAE Null object Anywhere
$8C $CDAE Null object Anywhere

Unreferenced objects

The following objects can occupy a valid slot in order to work on their own instead of being summoned by their respective owners:

  1. Metal platform's collision mask: $152F0.
  2. Aquis' shot (inoffensive): $165AA.
  3. Buzzer's shot: $168A0.

The following objects are not summoned by any other object or event and can occupy a valid slot in order to work:

  1. Giant ring: $AA72.
  2. Flash from giant ring: $AB3C.

Sprite mappings

Dynamic PLCs

Text

Level select text

Level names use non-ASCII characters. See the table below:

00 = 0 01 = 1 02 = 2 03 = 3 04 = 4
05 = 5 06 = 6 07 = 7 08 = 8 09 = 9
0A = $ 0B = - 0C = = 0D = <- 0E = <-
0F = Y 10 = Z 11 = A 12 = B 13 = C
14 = D 15 = E 16 = F 17 = G 18 = H
19 = I 1A = J 1B = K 1C = L 1D = M
1E = N 1F = O 20 = P 21 = Q 22 = R
23 = S 24 = T 25 = U 26 = V 27 = W
28 = X FF = (space)

Miscellaneous

General navigation

Offset Description
$035A8 Level order information
$02502 Palette pointers
$035A8 Level select level order
$04620 Pointer to collision indexes
$0579A Level size array
$059C6 Rasterized layer Deformation offset index
$10AF8 Animation script (Sonic)
$1BFEC Main level load block
$1C05C Pattern load cues offset index
$1C09C Pattern load cues
$20000 Curve and resistance mapping (identical to S1)
$20100 Curve and resistance mapping
$20200 Collision Array (identical to S1)
$22200 Collision Array
$28218 Level layout offset index
$40000 Object layout offset index
$50000 Ring location offset index

Level slots

Level ID Level Name
00 GHZ
01 LZ (loads CPZ art)
02 CPZ (MZ Music)
03 EHZ (SLZ music)
04 HPZ (SYZ music)
05 HTZ (SBZ music)
06 Ending (GHZ art) (crashes)

Main level load block

This is located at $1BFEC, and uses the Sonic 1 format

Level ID Level Name 8x8 art 16x16 mappings 128x128 mappings Palette Song ID PLRs used
00 GHZ $D8C34 $D7E34 $DD850 $04 $81 $04, $05
01 LZ $CC8F4 $CB314 $CFE34 $05 $82 $06, $07
02 CPZ $CC8F4 $CB314 $CFE34 $06 $83 $08, $09
03 EHZ $B2184 $B11E4 $B6EB2 $07 $84 $0A, $0B
04 HPZ $C0492 $BEEB2 $C3314 $08 $85 $0C, $0D
05 HTZ $B2184 $B11E4 $B6EB2 $09 $86 $0E, $0F
06 Ending $D8C34 $D7E34 $DD850 $13 $86 None

Debug object lists

These lists are used to tell the game which objects can be placed through debug mode at each zone. They are handled by an offset index at $1BCEC.

List location Used by
$1BCFA GHZ
$1BD6C LZ
$1BD6C CPZ
$1BDEE EHZ
$1BF6A HPZ
$1BED0 HTZ
$1BF6A Ending

The first two bytes on the list indicate how many objects are there. Each object has 8 bytes: for simply changing which object should appear instead of another, edit bytes 1 & 5, which are object type (ID) and sub-type, respectively.

References


Sonic the Hedgehog 2 (Nick Arcade prototype), prototype version of Sonic the Hedgehog 2 (16-bit)
S2b title.png

Main page | Comparisons | Maps | Hidden content | Technical information

Part of Sonic the Hedgehog 2 (16-bit) development

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