S2B
S2B

Still kickin' ass after all these years

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/Sonic Does Not Loose His Rings Twice

The s2b-3.avi video clip of the Mean Machine Sega VHS gives an impression that in this prototype Sonic can loose his rings more than once, like in Sonic Crackers.


Sonic getting hurt from a coconut thrown by a monkey...


...and again by landing on spikes. Or so it seems.


The above shot is taken between the first two. Notice Sonic suddenly has 1 ring instead of 0. Explanation? Tails (off screen) grabs a ring after Sonic is first hit. Therefore Sonic can afford to land on the spikes without dying.

Like the prototype we have, Sonic does not become invincible for 2 seconds when landing on spikes. However he does become temporarily invincible when landing on the ground, as illustrated by the Hill Top clip.

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; } ##############################################################################