S2B
S2B

Forget Tails guarding the Master Emerald. Welcome back to Kansas.

Google
Web
www.s2beta.com

Message Board

Origin
FAQ
Downloads
Cheats
Comparisons
Prototype Zones
Music
Concept Art Sketches
Magazine Previews
Video Previews
Timeline
Lost Sprites & Tiles
Savestates
False Alarms
Summary
Links

Engineering Archive
Sonic Community Hacking Guide External Link
Sonic 2 Algorithms & Specs Patents

Hoaxes
Fonts
HK Bootleg Sonic CD
Foreign Languages

Contact
Help Needed

9.6 years
since unearthing of
prototype ROM


15.7 years
since release
of Sonic 2 on MegaDrive


1.9 years
since renaming to S2B


S2B/False Alarms/The splashing rock and torch tiles are not from a Sonic game

The above tiles are found within the Sonic 2 Beta ROM. Following are screenshots from Chiki Chiki Boys. Notice how the tiles match exactly, minus the palette difference.

"From what I can tell, all the currently unidentified areas of lost data belong to this game. It would seem that the flashcart used to hold S2B previously held a copy of this game, much the same as was the case with a Ninja Turtles game being used for the cart that Sonic Crackers came from. So yeah, that solves that mystery. Just for the disappointed, if it's any consolation, the leftover data from Chiki Chiki Boys is from a prerelease =P."

― Nemesis, ROM Hacker @ Sonic Cult Forums

How did Nemesis find out the connection with Chiki Chiki Boys? He didn't pull it out of his memory.

"Today I isolated a section of this lost data, and ran a search of my entire genesis rom collection for a match. I found one."

― Nemesis, ROM Hacker @ Sonic Cult Forums

Amazingly, long time ago, Nemesis has already figured out the tiles don't belong to the current Sonic 2 Beta compilation:

"You know that one with the fire in the pot against the stone wall? That actually wasn't compiled in our version of the rom, but is merely left over from a previous build."

― Nemesis, ROM Hacker @ Area 51 phpBB (defunct)

Who knows, perhaps a pre-release of another game would contain leftover data of Sonic games that we're looking for? Some might argue it's close to impossible to tell if the data belongs to a previous Sonic build since we don't know how those data look like, but:

"That's the easy part. First of all, it's highly unlikely that the only data that would be present is stuff we haven't seen before. It's most likely it would be coupled with other data that we can recognise from the final version. Secondly, the way the data is arranged is very different between games. The structure alone gives something away. Third, Sonic Team used several compression formats that are unique to them, and if data is found using a certain compression format in a game that doesn't use it, that gives something away too."

― Nemesis, ROM Hacker @ Sonic Cult Forums

 

 

 

Page Hits: #!/usr/bin/perl ############################################################################## # # # SSI Counter Version 1.0d # # Copyright 2000 Robert DeFusco defsoft@gis.net # # Created 2/16/2000 Last Modified 9/14/2002 # # # ############################################################################## # # # COPYRIGHT NOTICE # # Copyright 2000 Robert S. DeFusco All Rights Reserved. # # # # This script may be used and modified by anyone so long as # # this copyright notice and the comments above remain intact. # # By using this this code you agree to indemnify Robert S. DeFusco from # # any liability that might arise from it's use. # # # # Selling the code for this program without prior written consent is # # expressly forbidden. In other words, please ask first before you try and # # make money off of my program. # # # # Obtain permission before redistributing this software over the Internet or # # in any other medium. In all cases copyright and header must remain intact.# # # ############################################################################## use CGI qw(:standard); ############################################################################## # Counter URL # # --------------------------------------- open(PUF,"url.path"); @upath=; close(PUF); $counturl="@upath"; # --------------------------------------- ############################################################################## ############################################################################## # System Variables # @schemes=( "bluenight", "coalfire", "custom", "default", "digitalalarm", "encounter", "futuregreen", "ghost", "gilligan", "metallica", "neonpower", "ocean3d", "purplefunk", "silver3d", "thematrix", "unionform", "winamp", "windowsxp", "woodburn", "x-files" ); @bcolors=( "black", "white", "red", "green", "blue", "yellow", "orange", "custom" ); $picked_scheme=param("scheme"); $picked_scheme=~s/ //ig; $picked_scheme=~tr/A-Z/a-z/; $pageid=param("id"); $cmode=param("type"); $cmode=~s/ //ig; $cmode=~tr/A-Z/a-z/; $border=param("border"); $border=~tr/A-Z/a-z/; $max=param("max"); ###################### ## Random Scheme Code if($picked_scheme eq 'random'){ srand(time ^ $$); $rnum = rand(@schemes); $picked_scheme=$schemes[$rnum]; } ###################### ############################################################################## ############################################################################## # Main command handler # ## Check ID List ######## open(IDL,"pageid.list"); @idfile=; close(IDL); @idlist=split(/\,/,"@idfile"); $idpassed="0"; foreach $iditem (@idlist){ chomp($iditem); if($pageid eq $iditem) { $idpassed="1"; } } if($idpassed eq '0'){ print "Content-type: text/html\n\n"; print "invalid page id!"; exit; } ######################### if(!($cmode)){ print "Content-type: text/html\n\n"; print "invalid counter type!"; exit; } if($cmode eq 'ascii' || $cmode eq 'text') { &ascii_counter; exit; } if($cmode eq 'image' || $cmode eq 'img' || !($cmode)) { &image_counter; exit; } ############################################################################## ############################################################################## # ASCII Counter # sub ascii_counter { $counter=count_log(); if($max) { if($max <= length($counter)) { } else { for($i=0;$i<($max-length($counter));$i++) { $addzero.="0"; } $addzero.=$counter; $counter=$addzero; } } print "Content-type: text/html\n\n"; print "$counter"; } ############################################################################## ############################################################################## # Image Counter # sub image_counter { ## Check scheme ######## if(!($picked_scheme)) { $picked_scheme="default"; } $passed="0"; foreach $scheme (@schemes){ if($picked_scheme eq $scheme) { $passed="1"; } } if($passed eq '0') { print "Content-type: text/html\n\n"; print "invalid scheme"; exit; } ######################## $counter=count_log(); if($max) { if($max <= length($counter)) { } else { for($i=0;$i<($max-length($counter));$i++) { $addzero.="0"; } $addzero.=$counter; $counter=$addzero; } } for($i=0;$i"; } if($border) { $bcpassed="0"; foreach $bcolor (@bcolors){ if($border eq $bcolor) { $bcpassed="1"; } } if($bcpassed eq '1'){ $borderurl=$counturl . "borders/" . "$border.gif"; $ciw=(length($counter)*8)+2; $prehtml="
"; $posthtml="
"; $fullhtml=$prehtml . $ihtml . $posthtml; chomp($fullhtml); $ihtml=$fullhtml; } } print "Content-type: text/html\n\n"; print "$ihtml"; } ############################################################################## ############################################################################## # Counter Log # sub count_log { open(CF,"+>>$pageid.count"); flock(CF,2); seek CF, 0, 0; ($countval = join '', ); truncate CF, 0; $countval++; print CF $countval; close(CF); return $countval; } ##############################################################################