Difference between revisions of "Sonic the Hedgehog 2 (Nick Arcade prototype)/Technical information"
From Sonic Retro
(Revert, Add info in correctly or not at all.) |
Ccawley2011 (talk | contribs) |
||
(33 intermediate revisions by 14 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{back}}[[Category:Technical information]] | |
− | { | + | {{cleanup}} |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | ==Art== |
− | + | ===Uncompressed art locations=== | |
− | {| | + | ===[[Nemesis compression|Nemesis Compressed]] art locations=== |
+ | {|class="prettytable" style="width:auto;" | ||
!Offset||Description | !Offset||Description | ||
|- | |- | ||
Line 207: | Line 87: | ||
|- | |- | ||
|$A552A | |$A552A | ||
− | | | + | |HPZ ledge artwork |
|- | |- | ||
|$A55EA | |$A55EA | ||
Line 216: | Line 96: | ||
|- | |- | ||
|$A59C0 | |$A59C0 | ||
− | |< | + | |<span style="color: red;">Unknown unused dust</span> |
|- | |- | ||
|$A5AE0 | |$A5AE0 | ||
Line 333: | Line 213: | ||
|- | |- | ||
|$AC4C8 | |$AC4C8 | ||
− | |< | + | |<span style="color: red;">Possible unknown explosion from the ground</span> |
|- | |- | ||
|$AC6B0 | |$AC6B0 | ||
Line 438: | Line 318: | ||
|- | |- | ||
|$CFDC0 | |$CFDC0 | ||
− | |< | + | |<span style="color: red;">Unknown</span> |
|- | |- | ||
|$D8C34 | |$D8C34 | ||
Line 456: | Line 336: | ||
|} | |} | ||
+ | ===[[Kosinski compression|Kosinski Compressed]] art locations=== | ||
− | == | + | ===Palette editing=== |
− | + | These are the ROM offsets of the palettes: | |
− | + | {|class="prettytable" style="width:auto;" | |
− | + | !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: | ||
+ | {|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 469: | Line 416: | ||
|02||1C0D0||Unknown (explosion)||(0) | |02||1C0D0||Unknown (explosion)||(0) | ||
|- | |- | ||
− | |03||1C0D8||Game | + | |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 479: | Line 426: | ||
|07||1C134||LZ (CPZ DUPLICATE)||(3) | |07||1C134||LZ (CPZ DUPLICATE)||(3) | ||
|- | |- | ||
− | |08||1C120||CPZ (CPZ graphics/ | + | |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 528: | Line 475: | ||
|} | |} | ||
− | + | ==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. |
− | + | {|class="prettytable" style="width:auto;" | |
− | |||
− | |||
− | |||
− | |||
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | 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 | !ID||Offset||Description||Intended place/Owner/Source | ||
|- | |- | ||
|$01 | |$01 | ||
− | | | + | |$F9FC |
|Sonic | |Sonic | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$02 | |$02 | ||
− | | | + | |$10C40 |
|Tails | |Tails | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$03 | |$03 | ||
− | | | + | |$13E2C |
|Collision switcher | |Collision switcher | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$04 | |$04 | ||
− | | | + | |$154D4 |
|Water surface | |Water surface | ||
|Water zones | |Water zones | ||
|- | |- | ||
|$05 | |$05 | ||
− | | | + | |$11D7E |
|Tails' tails | |Tails' tails | ||
|Tails only | |Tails only | ||
|- | |- | ||
|$06 | |$06 | ||
− | | | + | |$14970 |
|Spiral path | |Spiral path | ||
|EHZ | |EHZ | ||
|- | |- | ||
|$07 | |$07 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$08 | |$08 | ||
− | | | + | |$12558 |
|Water splash | |Water splash | ||
|Sonic | |Sonic | ||
|- | |- | ||
|$09 | |$09 | ||
− | | | + | |$1A3B8 |
|Sonic | |Sonic | ||
|Special Stage | |Special Stage | ||
|- | |- | ||
|$0A | |$0A | ||
− | | | + | |$11E64 |
|Underwater bubbles | |Underwater bubbles | ||
|Water zones | |Water zones | ||
|- | |- | ||
|$0B | |$0B | ||
− | | | + | |$141B4 |
− | |Unused alternating | + | |Unused alternating platform |
|CPZ | |CPZ | ||
|- | |- | ||
|$0C | |$0C | ||
− | | | + | |$142DC |
− | |Unused strange | + | |Unused strange platform |
|??? | |??? | ||
|- | |- | ||
|$0D | |$0D | ||
− | | | + | |$EF9C |
|End of level signpost | |End of level signpost | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$0E | |$0E | ||
− | | | + | |$B378 |
|Sonic & Tails | |Sonic & Tails | ||
|Title screen | |Title screen | ||
|- | |- | ||
|$0F | |$0F | ||
− | | | + | |$B3FE |
|??? | |??? | ||
|Title screen? | |Title screen? | ||
|- | |- | ||
|$10 | |$10 | ||
− | | | + | |$1AA5A |
|??? | |??? | ||
|??? | |??? | ||
|- | |- | ||
|$11 | |$11 | ||
− | | | + | |$7BA0 |
|Block bridge | |Block bridge | ||
|GHZ, HPZ, EHZ | |GHZ, HPZ, EHZ | ||
|- | |- | ||
|$12 | |$12 | ||
− | | | + | |$143DC |
|Emerald block | |Emerald block | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$13 | |$13 | ||
− | | | + | |$14458 |
|Waterfall | |Waterfall | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$14 | |$14 | ||
− | | | + | |$14CA0 |
|Seesaw | |Seesaw | ||
|HTZ | |HTZ | ||
|- | |- | ||
|$15 | |$15 | ||
− | | | + | |$8204 |
− | |Swinging | + | |Swinging platform |
|GHZ | |GHZ | ||
|- | |- | ||
|$16 | |$16 | ||
− | | | + | |$15104 |
− | |Diagonally moving | + | |Diagonally moving platform |
|HTZ | |HTZ | ||
|- | |- | ||
|$17 | |$17 | ||
− | | | + | |$866C |
|Rotating spike on wooden bridge | |Rotating spike on wooden bridge | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$18 | |$18 | ||
− | | | + | |$880C |
− | |Generic natural | + | |Generic natural platform |
|GHZ, EHZ, HTZ | |GHZ, EHZ, HTZ | ||
|- | |- | ||
|$19 | |$19 | ||
− | | | + | |$152B8 |
− | |Metal | + | |Metal platform |
|CPZ | |CPZ | ||
|- | |- | ||
|$1A | |$1A | ||
− | | | + | |$8C44 |
− | |Collapsing | + | |Collapsing platform |
|GHZ, HPZ | |GHZ, HPZ | ||
|- | |- | ||
|$1B | |$1B | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$1C | |$1C | ||
− | | | + | |$93A4 |
− | |Bridge support/Moving | + | |Bridge support/Moving platform support |
|GHZ, EHZ, HTZ | |GHZ, EHZ, HTZ | ||
|- | |- | ||
|$1D | |$1D | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$1E | |$1E | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$1F | |$1F | ||
− | | | + | |$A0D0 |
|Crabmeat (badnik) | |Crabmeat (badnik) | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$20 | |$20 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$21 | |$21 | ||
− | | | + | |$1B028 |
|HUD | |HUD | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$22 | |$22 | ||
− | | | + | |$A408 |
|Buzz Bomber (badnik) | |Buzz Bomber (badnik) | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$23 | |$23 | ||
− | | | + | |$A55E |
|Buzz Bomber's projectile | |Buzz Bomber's projectile | ||
|Buzz Bomber | |Buzz Bomber | ||
|- | |- | ||
|$24 | |$24 | ||
− | | | + | |$9808 |
|Unknown explosion | |Unknown explosion | ||
|??? | |??? | ||
|- | |- | ||
|$25 | |$25 | ||
− | | | + | |$A7E4 |
|Ring | |Ring | ||
|Debug | |Debug | ||
|- | |- | ||
|$26 | |$26 | ||
− | | | + | |$AE58 |
|Monitor | |Monitor | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$27 | |$27 | ||
− | | | + | |$987C |
|Dust explosion | |Dust explosion | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$28 | |$28 | ||
− | | | + | |$9AA8 |
|Animal plus points from badnik explosion | |Animal plus points from badnik explosion | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$29 | |$29 | ||
− | | | + | |$9FA0 |
|Points | |Points | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$2A | |$2A | ||
− | | | + | |$94EC |
|One way barrier | |One way barrier | ||
|SBZ | |SBZ | ||
|- | |- | ||
|$2B | |$2B | ||
− | | | + | |$B718 |
|Chopper (badnik) | |Chopper (badnik) | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$2C | |$2C | ||
− | | | + | |$B7DE |
|Jaws (badnik) | |Jaws (badnik) | ||
|LZ | |LZ | ||
|- | |- | ||
|$2D | |$2D | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$2E | |$2E | ||
− | | | + | |$B03A |
|Monitor contents | |Monitor contents | ||
|Monitor | |Monitor | ||
|- | |- | ||
|$2F | |$2F | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$30 | |$30 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$31 | |$31 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$32 | |$32 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$33 | |$33 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$34 | |$34 | ||
− | | | + | |$B8C8 |
|Title card | |Title card | ||
|Title card | |Title card | ||
|- | |- | ||
|$35 | |$35 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$36 | |$36 | ||
− | | | + | |$C664 |
|Spikes | |Spikes | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$37 | |$37 | ||
− | | | + | |$A91E |
|Ring spray | |Ring spray | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$38 | |$38 | ||
− | | | + | |$123BA |
|Blue shield | |Blue shield | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$39 | |$39 | ||
− | | | + | |$BA84 |
|Game Over/Time Over | |Game Over/Time Over | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$3A | |$3A | ||
− | | | + | |$BB46 |
|End of level result screen | |End of level result screen | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$3B | |$3B | ||
− | | | + | |$C848 |
|Purple rock | |Purple rock | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$3C | |$3C | ||
− | | | + | |$C8C4 |
|Breakable wall | |Breakable wall | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$3D | |$3D | ||
− | | | + | |$18CFC |
|Robotnik | |Robotnik | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$3E | |$3E | ||
− | | | + | |$194E4 |
|Egg prison | |Egg prison | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$3F | |$3F | ||
− | | | + | |$9914 |
|Fire explosion | |Fire explosion | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$40 | |$40 | ||
− | | | + | |$F248 |
|Motobug (badnik) | |Motobug (badnik) | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$41 | |$41 | ||
− | | | + | |$E1C8 |
|Spring | |Spring | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$42 | |$42 | ||
− | | | + | |$EBB8 |
|Newtron (badnik) | |Newtron (badnik) | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$43 | |$43 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$44 | |$44 | ||
− | | | + | |$EEB4 |
|Wall barrier | |Wall barrier | ||
|GHZ | |GHZ | ||
|- | |- | ||
|$45 | |$45 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$46 | |$46 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$47 | |$47 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$48 | |$48 | ||
− | | | + | |$190E6 |
|Big ball | |Big ball | ||
|GHZ boss | |GHZ boss | ||
|- | |- | ||
|$49 | |$49 | ||
− | | | + | |$15690 |
|Waterfall | |Waterfall | ||
|EHZ | |EHZ | ||
|- | |- | ||
|$4A | |$4A | ||
− | | | + | |$16AA0 |
|Octus (badnik) | |Octus (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$4B | |$4B | ||
− | | | + | |$16794 |
|Buzzer (badnik) | |Buzzer (badnik) | ||
|EHZ (HPZ, HTZ) | |EHZ (HPZ, HTZ) | ||
|- | |- | ||
|$4C | |$4C | ||
− | | | + | |$16D50 |
|Batbot (badnik) | |Batbot (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$4D | |$4D | ||
− | | | + | |$1587C |
|Tricerabot (badnik) | |Tricerabot (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$4E | |$4E | ||
− | | | + | |$171D8 |
|Crocobot (badnik) | |Crocobot (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$4F | |$4F | ||
− | | | + | |$15DA4 |
|Dinobot (badnik) | |Dinobot (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$50 | |$50 | ||
− | | | + | |$15F08 |
|"Strange" Aquis (badnik) | |"Strange" Aquis (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$51 | |$51 | ||
− | | | + | |$16524 |
|Aquis (badnik) | |Aquis (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$52 | |$52 | ||
− | | | + | |$15B4C |
|Piranha (badnik) | |Piranha (badnik) | ||
|HPZ | |HPZ | ||
|- | |- | ||
|$53 | |$53 | ||
− | | | + | |$174D0 |
|Masher (badnik) | |Masher (badnik) | ||
|EHZ | |EHZ | ||
|- | |- | ||
|$54 | |$54 | ||
− | | | + | |$175D0 |
|Snailbot (badnik) | |Snailbot (badnik) | ||
|EHZ (HTZ) | |EHZ (HTZ) | ||
|- | |- | ||
|$55 | |$55 | ||
− | | | + | |$181CC |
|??? | |??? | ||
|??? | |??? | ||
|- | |- | ||
|$56 | |$56 | ||
− | | | + | |$18456 |
|Unknown double explosion | |Unknown double explosion | ||
|??? | |??? | ||
|- | |- | ||
|$57 | |$57 | ||
− | | | + | |$17884 |
|??? | |??? | ||
|??? | |??? | ||
|- | |- | ||
|$58 | |$58 | ||
− | | | + | |$17AEE |
|??? | |??? | ||
|??? | |??? | ||
|- | |- | ||
|$59 | |$59 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$5A | |$5A | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$5B | |$5B | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$5C | |$5C | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$5D | |$5D | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$5E | |$5E | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$5F | |$5F | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$60 | |$60 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$61 | |$61 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$62 | |$62 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$63 | |$63 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$64 | |$64 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$65 | |$65 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$66 | |$66 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$67 | |$67 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$68 | |$68 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$69 | |$69 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$6A | |$6A | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$6B | |$6B | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$6C | |$6C | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$6D | |$6D | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$6E | |$6E | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$6F | |$6F | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$70 | |$70 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$71 | |$71 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$72 | |$72 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$73 | |$73 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$74 | |$74 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$75 | |$75 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$76 | |$76 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$77 | |$77 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$78 | |$78 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$79 | |$79 | ||
− | | | + | |$134C8 |
|Lamppost | |Lamppost | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$7A | |$7A | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$7B | |$7B | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$7C | |$7C | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$7D | |$7D | ||
− | | | + | |$13770 |
|Hidden bonus | |Hidden bonus | ||
|Any zone | |Any zone | ||
|- | |- | ||
|$7E | |$7E | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$7F | |$7F | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$80 | |$80 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$81 | |$81 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$82 | |$82 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$83 | |$83 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$84 | |$84 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$85 | |$85 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$86 | |$86 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$87 | |$87 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$88 | |$88 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$89 | |$89 | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$8A | |$8A | ||
− | | | + | |$185E0 |
|Sonic Team Presents/Credits | |Sonic Team Presents/Credits | ||
|Title screen/Ending sequence | |Title screen/Ending sequence | ||
|- | |- | ||
|$8B | |$8B | ||
− | | | + | |$CDAE |
|Null object | |Null object | ||
|Anywhere | |Anywhere | ||
|- | |- | ||
|$8C | |$8C | ||
− | | | + | |$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 | + | # Metal platform's collision mask: $152F0. |
− | # Aquis' shot (inoffensive): | + | # Aquis' shot (inoffensive): $165AA. |
− | # Buzzer's shot: | + | # 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: | + | # Giant ring: $AA72. |
− | # Flash from giant ring: | + | # Flash from giant ring: $AB3C. |
− | == | + | |
− | + | ===Sprite mappings=== | |
− | {| | + | |
− | + | ===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) | ||
+ | |- | ||
+ | |$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=== | ||
+ | {|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
This article needs cleanup. This article needs to be edited to conform to a higher standard of article quality. |
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:
- Metal platform's collision mask: $152F0.
- Aquis' shot (inoffensive): $165AA.
- 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:
- Giant ring: $AA72.
- 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
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) | |
---|---|
Main page | Comparisons | Maps | Hidden content | Technical information |