
S2B
A no bullshit Sonic the Hedgehog site
|
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
|
|
Magazine Preview #25


Source: Sonic 2 US Manual
|

Source: Sonic 2 Beta ROM
|

Source: Sonic 2 Final ROM
|
|
Yet another picture of a prototype in the Sonic 2 US manual. The rings
counters are linked together, and the extra score counters make an
appearance, unlike in the final.Assuming this screenshot was taken from
the same source as the others (e.g. M08) in the
manual, this is a later prototype than our ROM.
|
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;
}
##############################################################################