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