Difference between revisions of "Sonic the Hedgehog 2 (Nick Arcade prototype)/Technical information"
From Sonic Retro
m (→General Navigation) |
Ccawley2011 (talk | contribs) |
||
(39 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 206: | Line 87: | ||
|- | |- | ||
|$A552A | |$A552A | ||
− | | | + | |HPZ ledge artwork |
|- | |- | ||
|$A55EA | |$A55EA | ||
Line 215: | Line 96: | ||
|- | |- | ||
|$A59C0 | |$A59C0 | ||
− | |< | + | |<span style="color: red;">Unknown unused dust</span> |
|- | |- | ||
|$A5AE0 | |$A5AE0 | ||
Line 332: | Line 213: | ||
|- | |- | ||
|$AC4C8 | |$AC4C8 | ||
− | |< | + | |<span style="color: red;">Possible unknown explosion from the ground</span> |
|- | |- | ||
|$AC6B0 | |$AC6B0 | ||
Line 437: | Line 318: | ||
|- | |- | ||
|$CFDC0 | |$CFDC0 | ||
− | |< | + | |<span style="color: red;">Unknown</span> |
|- | |- | ||
|$D8C34 | |$D8C34 | ||
Line 455: | 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 468: | 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 478: | 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 527: | Line 475: | ||
|} | |} | ||
− | + | ==Object editing== | |
− | level layout | + | ===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;" | ||
+ | !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: | ||
+ | {|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 | |
− | + | |- | |
− | GHZ | + | | $1BCFA |
− | + | | GHZ | |
− | + | |- | |
− | + | | $1BD6C | |
− | + | | LZ | |
− | + | |- | |
− | + | | $1BD6C | |
− | + | | CPZ | |
− | + | |- | |
− | + | | $1BDEE | |
− | + | | EHZ | |
− | + | |- | |
− | + | | $1BF6A | |
− | + | | HPZ | |
− | + | |- | |
− | CPZ | + | | $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. | |
− | EHZ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==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 |