diff -ruN SDL_perl-1.20.2/CHANGELOG SDL_perl-1.20.3/CHANGELOG
--- SDL_perl-1.20.2/CHANGELOG	Fri Mar 21 20:45:09 2003
+++ SDL_perl-1.20.3/CHANGELOG	Tue Apr  1 19:37:19 2003
@@ -1,6 +1,78 @@
 Revision history for Perl extension SDL_perl.
 
-* Mar 21 2003	Tels <http://bloodgate.com/perl/sdl/>
+* Apr 01 2003 v1.20.3 Tels <http://bloodgate.com/perl/sdl/>
+
+  !! This is not an official release, but my private release. Use at your !! 
+  !!  own risk! Send comments to me or the sdlperl mailing list.          !!
+
+  - moved some files to win32/ dir, renamed readme.win32.txt to REAME.win32
+  - removed test.pl (it was quite pointless, testing the already inst. vers.)
+  - fixed GL_BTYE to GL_UNSIGNED_BYTE in glCallListsScalar (just to be sure)
+  - support for SDL_BUTTON_WHEELUP and SDL_BUTTON_WHEELDOWN
+  - added SDL_GL_STEREO (not sure if it works)
+  - added the following OpenGL functions:
+    * glDeleteLists(base, count)
+    * $scalar = glReadPixels(x,y,width,height,type,format)
+    * ($r,$g,$b,$a) = glReadPixel(x,y);
+    * glLightModel() (supports all 4 modi)
+  - added SDL::OpenGL::SaveBMP($file,$w,$h,$bpp,$data);
+
+  - incorporated all the win32 changes from Wayne Keenan, thanx!
+    This includes critical win32 patches never released via the 'official'
+    release. Here is a list of the win32 changes:
+
+  - makefile.pl     * fixed to identify Win32 platform correctly
+  - Makefile.win32  * fixed syntax errors taken out of 
+	            * fixed lib list problem
+		    * other fixes...
+	            * made things f*cking 'strict'
+  - setenv.bat      * has a fairly full set of default libs to look for (well,
+		      mine)
+  - SDL_perl.xs:    * on WIN32 smpeg/smpeg.h is 'known'* as smpeg.h 
+	              *(well, in the 'make it up' any old way sense)
+	            * SDL_sound.h was not getting included
+  - Opengl.xs:      * on WIN32 SDL_opengl.h is included if HAVE_GL or HAVE_GLU
+	              is defined
+		    * changes var names 'near' & 'far' 
+		      as they are keywords (memory models) in MS VC++
+	            * NURBS support is removed unless GL_HAS_NURBS is defined
+		      (MS GL 1.1 (vc.6) doesn't have it, does 7.0 anyone?)
+                    * The follwing GL functions will only be included if the
+		      GL implementation supports version 1.3:
+	              (not checked if one could get away with 1.2 for any)
+			glActiveTextureARB          
+			glBlendEquation             
+			glColorSubTable             
+			glColorTable                
+			glColorTableParameterfv     
+			glConvolutionFilter1D       
+			glConvolutionFilter2D       
+			glConvolutionParameterfv    
+			glConvolutionParameteri     
+			glCopyColorSubTable         
+			glCopyColorTable            
+			glCopyConvolutionFilter1D   
+			glCopyConvolutionFilter2D   
+			glCopyTexSubImage3D         
+			glDrawRangeElements         
+			glGetHistogram              
+			glGetMinmax                 
+			glHistogram                 
+			glMinmax                    
+			glMultiTexCoord4dARB        
+			glResetHistogram            
+			glResetMinmax               
+			glSeparableFilter2D         
+			glTexImage3D                
+			glTexSubImage3D             
+
+  - added Win32 binary release creation support (uses
+    http://www.nullsoft.com/free/nsis/)
+    * release.pl       (very messy build script)
+    * sdlperl.nsi.env  (scipt used as template for release.pl)
+  - added readme.win32.txt
+	
+* Mar 21 2003 v1.20.2 Tels <http://bloodgate.com/perl/sdl/>
 
   !! This is not an official release, but my private release. Use at your !! 
   !!  own risk! Send comments to me or the sdlperl mailing list.          !!
diff -ruN SDL_perl-1.20.2/MANIFEST SDL_perl-1.20.3/MANIFEST
--- SDL_perl-1.20.2/MANIFEST	Fri Mar 21 20:31:19 2003
+++ SDL_perl-1.20.3/MANIFEST	Thu Mar 27 12:24:13 2003
@@ -2,7 +2,9 @@
 MANIFEST
 COPYING
 README
+README.orig
 README.freebsd
+README.win32
 BUGS
 TODO
 Makefile.PL
@@ -19,8 +21,9 @@
 configure
 defines.h
 detect.c
-setenv.bat
-test.pl
+win32/setenv.bat
+win32/release.pl
+win32/sdlperl.nsi.env
 typemap
 lib/SDL.pm
 lib/SDL/App.pm
diff -ruN SDL_perl-1.20.2/Makefile.PL SDL_perl-1.20.3/Makefile.PL
--- SDL_perl-1.20.2/Makefile.PL	Tue Jun 11 04:13:10 2002
+++ SDL_perl-1.20.3/Makefile.PL	Thu Mar 27 11:17:23 2003
@@ -6,7 +6,7 @@
 
 %OS = (
 	linux 	=> "Makefile.linux",
-	win 	=> "Makefile.win32",
+	win32 	=> "Makefile.win32",
 	freebsd => "Makefile.freebsd",
 );
 
@@ -16,5 +16,5 @@
 
 for (keys %OS ) {
 	my $k = lc($_);
-	require "$OS{$k}" && last if ($^O =~ /$k/);
+	require "$OS{$k}" && last if ($^O =~ /$k/i);
 }
diff -ruN SDL_perl-1.20.2/Makefile.win32 SDL_perl-1.20.3/Makefile.win32
--- SDL_perl-1.20.2/Makefile.win32	Wed Mar 12 01:38:08 2003
+++ SDL_perl-1.20.3/Makefile.win32	Thu Mar 27 11:17:23 2003
@@ -1,14 +1,35 @@
 #!/usr/bin/env perl -w
 
 use ExtUtils::MakeMaker;
+use strict;
+use Config;
 
 #
 # Configure SDL proper
 #
 
-use vars qw/ $sdl_cflags $sdl_libs @dirs $inc_flags
-	$sdl_image $sdl_mixer $sdl_ttf $sdl_net 
-	$png $jpeg $gl $glu $smpeg $gfx $sound /;
+
+my @defs;
+my $sdl_cflags;
+my $sdl_libs;
+my @dirs;
+my $inc_flags;
+my $sdl_image;
+my $sdl_mixer;
+my $sdl_ttf;
+my $sdl_net;
+my $png;
+my $jpeg;
+my $gl;
+my $glu;
+my $smpeg;
+my $gfx;
+my $sound;
+my @libDirs;
+my $glLib;
+my $gluLib;
+my $glVendorFlags;
+
 
 #
 # Windows configuration detection
@@ -21,16 +42,16 @@
 	warn "Warning: Env var LIB should be set."  unless exists $ENV{LIB};
 
 	my @incDirs = grep {$_} map {$_} split ';', $ENV{INCLUDE};
-	my @libdirs = grep {$_} map {$_} split ';', $ENV{LIB};
+	my @libDirs = grep {$_} map {$_} split ';', $ENV{LIB};
 
 	my $glVendor = $ENV{SDL_GL_VENDOR} || "MS";
 	
 	my $mesagl = ( $glVendor eq "MESA" ? 1 : ( $glVendor eq "MS" ? 0 : 
 		die "Unrecognized SDL_GL_VENDOR: $glVendor\n" ) );
 
-	my ($glLib,$gluLib,$glVendorFlags) = ( $mesagl ?
+	($glLib,$gluLib,$glVendorFlags) =  $mesagl ?
 		( '-lmesagl', '-lmesaglu -losmesa', '-DOPENGL_VENDOR_MESA -DCOMMON_OGL_SUPPORT') :
-		( '-lopengl', '-glu32', '-DOPENGL_VENDOR_MS -DCOMMON_OGL_SUPPORT');
+		( '-lopengl32', '-lglu32', '-DOPENGL_VENDOR_MS -DCOMMON_OGL_SUPPORT');
 
 	@dirs=@incDirs;
 	$sdl_libs = '-lsdl';
@@ -67,8 +88,8 @@
 	$sdl_ttf = '-DHAVE_SDL_TTF' if -e "$_/SDL_ttf.h";
 	$png = '-DHAVE_PNG' if -e "$_/png.h";
 	$jpeg = '-DHAVE_JPEG' if -e "$_/jpeglib.h";
-	$gl = '-DHAVE_GL' if -e "$_/gl.h";
-	$glu = '-DHAVE_GLU' if -e "$_/glu.h";	
+	$gl = '-DHAVE_GL' if -e "$_/GL/gl.h";
+	$glu = '-DHAVE_GLU' if -e "$_/GL/glu.h";	
 	$smpeg = '-DHAVE_SMPEG' if -e "$_/smpeg.h";
 	$gfx = '-DHAVE_SDL_GFX' if -e "$_/SDL_gfxPrimitives.h";
 	$sound = '-DHAVE_SDL_SOUND' if -e "$_/SDL_sound.h";
@@ -106,7 +127,7 @@
 
 my %options = (
     'NAME'	=> 'SDL_perl',
-    'VERSION_FROM' => 'SDL.pm', 
+    'VERSION_FROM' => 'lib/SDL.pm', 
     'LIBS'	=> [ join( " ",	"$sdl_libs", 
 			($sdl_image) ? '-lSDL_image' : "", 
 			($png) ? '-lpng' : "",
@@ -131,5 +152,12 @@
 #
 
 WriteMakefile(%options );
+
+
+
+
+
+
+
 
 
diff -ruN SDL_perl-1.20.2/OpenGL.xs SDL_perl-1.20.3/OpenGL.xs
--- SDL_perl-1.20.2/OpenGL.xs	Fri Mar 21 13:09:11 2003
+++ SDL_perl-1.20.3/OpenGL.xs	Thu Mar 27 16:39:33 2003
@@ -12,13 +12,23 @@
 
 #include <SDL.h>
 
+#ifdef WIN32
+#ifdef HAVE_GL
+#include <SDL_opengl.h>
+#endif
+#ifdef HAVE_GLU
+#include <SDL_opengl.h>
+#endif
+#else
 #ifdef HAVE_GL
 #include <GL/gl.h>
 #endif
-
 #ifdef HAVE_GLU
 #include <GL/glu.h>
 #endif
+#endif
+
+
 
 #ifdef WIN32
 #define HAVE_TLS_CONTEXT
@@ -504,6 +514,8 @@
 	CODE:
 		glDrawElements( mode, count, type, indices);
 
+#ifdef GL_VERSION_1_3
+
 void
 DrawRangeElements ( mode, start, end, count, type, indices )
 	GLenum mode
@@ -515,6 +527,9 @@
 	CODE:
 		glDrawRangeElements(mode,start,end,count,type,indices);
 
+#endif 
+
+
 void
 DrawArrays ( mode, first, count )
 	GLenum mode
@@ -610,26 +625,26 @@
 		glScaled(x,y,z);
 
 void
-Frustum ( left, right, bottom, top, near, far )
+Frustum ( left, right, bottom, top, myNear, myFar )
 	double left
 	double right
 	double bottom
 	double top
-	double near
-	double far
+	double myNear
+	double myFar
 	CODE:
-		glFrustum(left,right,bottom,top,near,far);
+		glFrustum(left,right,bottom,top,myNear,myFar);
 
 void
-Ortho ( left, right, bottom, top, near, far )
+Ortho ( left, right, bottom, top, myNear, myFar )
 	double left
 	double right
 	double bottom
 	double top
-	double near
-	double far
+	double myNear
+	double myFar
 	CODE:
-		glOrtho(left,right,bottom,top,near,far);
+		glOrtho(left,right,bottom,top,myNear,myFar);
 
 void
 Viewport ( x, y, width, height )
@@ -641,11 +656,11 @@
 		glViewport(x,y,width,height);
 
 void
-DepthRange ( near, far )
-	double near
-	double far
+DepthRange ( myNear, myFar )
+	double myNear
+	double myFar
 	CODE:
-		glDepthRange(near,far);
+		glDepthRange(myNear,myFar);
 
 void
 PushMatrix ()
@@ -721,6 +736,36 @@
 		}
 
 void
+LightModel ( name, ...)
+	GLenum name
+  CODE:
+    if ( name == GL_LIGHT_MODEL_AMBIENT)
+      {
+      if ( items != 5)
+        {
+	Perl_croak(aTHX_ "usage: glLightMaterial (GL_LIGHT_MODEL_AMBIENT, r,g,b,a )");
+	}
+      float v[4]; int i;
+      for ( i = 0; i < 4; i++ )
+        {
+	v[i] = (SvNOK(ST(i+1))) ? SvNV(ST(i+1)) : 0.0;
+        }
+      glLightModelfv (name, v);
+      }
+    else
+      {
+      if ( (items != 2) ||
+           (name != GL_LIGHT_MODEL_LOCAL_VIEWER &&
+            name != GL_LIGHT_MODEL_TWO_SIDE &&
+            name != GL_LIGHT_MODEL_COLOR_CONTROL)
+         )
+	{
+	Perl_croak(aTHX_ "usage: glLightMaterial ( pname, flag )");
+	}
+      glLightModeli (name, SvIV(ST(1)));
+      }
+
+void
 Material ( face, name, ... )
 	GLenum face
 	GLenum name
@@ -803,6 +848,13 @@
 		RETVAL
 
 void
+DeleteLists ( base, count )
+	Uint32 base
+	Uint32 count
+	CODE:
+		glDeleteLists(base, count);
+
+void
 NewList ( list, mode )
 	Uint32 list
 	GLenum mode
@@ -857,7 +909,7 @@
 		STRLEN len;
 
 		str = SvPV(string,len);
-		glCallLists(len, GL_BYTE, str);
+		glCallLists(len, GL_UNSIGNED_BYTE, str);
 
 void
 RasterPos ( x, y, z, ... )
@@ -894,6 +946,52 @@
 	CODE:
 		glDrawPixels(width,height,format,type,pixels);
 
+SV*
+ReadPixels ( x, y, width, height, format, type )
+	Uint32 x
+	Uint32 y
+	Uint32 height
+	Uint32 width
+	GLenum format
+	GLenum type
+	CODE:
+		int len, size;
+		char *buf;
+
+		size = 1;	/* ALPHA, BLUE, GREEN or RED */
+		if (format == GL_BGR || format == GL_RGB) {
+			size = 3;
+			}
+		if (format == GL_BGRA || format == GL_RGBA) {
+			size = 4;
+			}
+		len = height * width * size; 		/* in bytes */
+    		RETVAL = newSV(len);			/* alloc len+1 bytes */
+		SvPOK_on(RETVAL);			/* make an PV */
+		buf = SvPVX(RETVAL);			/* get ptr to buffer */
+
+		glReadPixels(x,y,width,height,format,type,buf);
+    		SvCUR_set(RETVAL, len);			/* set real length */
+	OUTPUT:
+		RETVAL
+
+AV*
+ReadPixel ( x, y )
+	Uint32 x
+	Uint32 y
+	CODE:
+		int rgba[4];	/* r,g,b,a */
+		int i;
+
+		glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_INT,rgba);
+                RETVAL = newAV();
+                for ( i = 0; i < 4; i++ ) {
+                        av_push(RETVAL,newSViv(rgba[i]));
+                }
+        OUTPUT:
+                RETVAL
+
+
 void
 CopyPixels ( x, y, width, height, buffer )
 	Sint32 x
@@ -953,6 +1051,8 @@
 	CODE:
 		glPixelZoom(zoomx,zoomy);
 
+#ifdef GL_VERSION_1_3
+
 void
 ColorTable ( target, internalFormat, width, format, type, data )
 	GLenum target 
@@ -1146,12 +1246,16 @@
 	CODE:
 		glResetMinmax(target);
 
+
+
 void
 BlendEquation ( mode )
 	Uint32 mode
 	CODE:
 		glBlendEquation(mode);
 
+#endif  // GL_VERSION_1_3
+
 void
 TexImage2D ( target, level, internalFormat, width, height, border, format, type, data )
 	GLenum target
@@ -1254,6 +1358,8 @@
 	CODE:
 		glCopyTexSubImage1D(target,level,xoffset,x,y,width);
 
+#ifdef GL_VERSION_1_3
+
 void
 TexImage3D ( target, level, internalFormat, width, height, depth, border, format, type, data )
 	GLenum target
@@ -1269,6 +1375,8 @@
 	CODE:
 		glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,data);
 
+
+
 void
 TexSubImage3D ( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data )
 	GLenum target
@@ -1286,6 +1394,9 @@
 		glTexSubImage3D(target,level,xoffset,yoffset,zoffset,
 			width,height,depth,format,type,data);
 
+
+
+
 void
 CopyTexSubImage3D ( target, level, xoffset, yoffset, zoffset, x, y, width, height )
 	GLenum target
@@ -1300,6 +1411,9 @@
 	CODE:
 		glCopyTexSubImage3D(target,level,xoffset,yoffset,zoffset,x,y,width,height);
 
+#endif  // GL_VERSION_1_3
+
+
 AV*
 GenTextures ( n )
 	Uint32 n;
@@ -1472,11 +1586,14 @@
 				break;
 		}
 
+#ifdef GL_VERSION_1_3
+
 void
 ActiveTextureARB ( texUnit )
 	GLenum texUnit
 	CODE:
 		glActiveTextureARB(texUnit);
+
 				
 void
 MultiTexCoord ( texUnit,  ... )
@@ -1499,6 +1616,9 @@
 		}
 		glMultiTexCoord4dARB(texUnit,s,t,r,q);
 
+#endif
+
+
 void
 DrawBuffer ( mode )
 	GLenum mode
@@ -1692,13 +1812,13 @@
 		gluLookAt(eyex,eyey,eyez,centerx,centery,centerz,upx,upy,upz);
 
 void
-Perspective ( fovy, aspect, near, far )
+Perspective ( fovy, aspect, myNear, myFar )
 	double fovy
 	double aspect
-	double near
-	double far
+	double myNear
+	double myFar
 	CODE:
-		gluPerspective(fovy,aspect,near,far);
+		gluPerspective(fovy,aspect,myNear,myFar);
 
 void
 Ortho2D ( left, right, bottom, top )
@@ -1898,6 +2018,8 @@
 	CODE:
 		gluLoadSamplingMatrices(obj,(GLfloat*)mm,(GLfloat*)pm,(GLint*)vp);
 
+#ifdef GL_HAS_NURBS
+
 double
 GetNurbsProperty ( obj, property )
 	GLUnurbsObj *obj
@@ -2021,6 +2143,9 @@
 		gluNurbsCurve(obj,uknot_count,(GLfloat*)uknot,u_stride,(GLfloat*)ctlarray,
 			uorder,type);
 
+#endif
+
+
 void
 BeginTrim ( obj )
 	GLUnurbsObj *obj
@@ -2062,8 +2187,10 @@
 	OUTPUT:
 		RETVAL
 		
+#ifdef GL_VERSION_1_3
+
 AV*
-UnProject4 ( winx, winy, winz, clipw, mm, pm, vp, near, far )
+UnProject4 ( winx, winy, winz, clipw, mm, pm, vp, myNear, myFar )
         double winx
         double winy
         double winz
@@ -2071,13 +2198,13 @@
         char *mm
         char *pm
         char *vp
-	double near
-	double far
+	double myNear
+	double myFar
         CODE:
                 GLdouble objx, objy, objz, objw;
                 RETVAL = newAV();
                 av_push(RETVAL,newSViv(gluUnProject4(winx,winy,winz,clipw,(GLdouble*)mm,
-                        (GLdouble*)pm,(GLint*)vp,(GLclampd)near,(GLclampd)far,
+                        (GLdouble*)pm,(GLint*)vp,(GLclampd)myNear,(GLclampd)myFar,
 			&objx,&objy,&objz,&objw)));
                 av_push(RETVAL,newSVnv((double)objx));
                 av_push(RETVAL,newSVnv((double)objy));
@@ -2085,6 +2212,9 @@
                 av_push(RETVAL,newSVnv((double)objw));
         OUTPUT:
                 RETVAL
+
+#endif
+
 
 AV*
 Project ( objx, objy, objz, mm, pm, vp )
diff -ruN SDL_perl-1.20.2/README SDL_perl-1.20.3/README
--- SDL_perl-1.20.2/README	Fri Mar 21 20:53:20 2003
+++ SDL_perl-1.20.3/README	Thu Mar 27 12:28:48 2003
@@ -1,4 +1,4 @@
-README for SDL_perl-1.20.2
+README for SDL_perl-1.20.3
 
 This is not the official version, but a forked version made by Tels. See
 
@@ -6,67 +6,26 @@
 
 for details.
 
-Thi package is digitally signed with my key (http://bloodgate.com/tels.asc),
+You will need SDL v1.2.5 as pre-requisite, otherwise the mouse wheel support
+will not work.
+
+This package is digitally signed with my key (http://bloodgate.com/tels.asc),
 install Module::Signature and check the signature before you do anything with
 tihs package! If the signature is not valid, do not configure, make or install
 this package nor run any scripts from it - your system might get compromised!
 
 In the case of a mismatch in the SIGNATURE, please notify me immidiately.
 
+See the README.orig file for details on how to configure and install this
+package.
+
+See the CHANGELOG for details on what has improved (well, or changed) from
+the "official" release to this.
+
 Any feedback or comments are certainly welcome. Please email them to me
 directly or to the sdlperl mailinglist.
 
 Have fun!
 
-Tels, 2003-03-21
-
-******************************************************************************
-Original README text follows:
-
-Installation:
-
-	./configure
-	make
-	make install
-
-The perl script Makefile.PL will attempt to search for 
-the standard place you may have installed SDL and its
-supplemental libraries. 
-
-Documentation:
-
-Each module now includes its own documentation, and 
-is accessible through perldoc.  Additional tutorials,
-code, and tips can be found at the website:
-
-	http://www.sdlperl.org
-
-Disabling Modules:
-
-You can disable individual libraries
-using the command line switches.  For example you can
-avoid compiling OpenGL and GLU support as follows:
-
-	./configure -GL -GLU
-
-Contributing:
-
-Anyone wishing to contribute modules, sprite engines, and anything
-else that others might find useful, please email:
-
-	sdlperl@sdlperl.org
-
-This is a mailing list for those interested in SDLperl development,
-both as an applications developer, and as a core contributor.
-Subscription information can be found at:
-
-	http://www.sdlperl.org/index.htpl?id=114&cat=faq
-
-I am always more than happy to take patches, bug reports, and
-helpful suggestions.  It is feedback, both good and poor, that
-keeps projects like this going.
-
-Enjoy,
-
-David J. Goehrig
+Tels, 2003-03-27
 
diff -ruN SDL_perl-1.20.2/README.orig SDL_perl-1.20.3/README.orig
--- SDL_perl-1.20.2/README.orig	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.3/README.orig	Thu Mar 27 12:24:06 2003
@@ -0,0 +1,49 @@
+Original README text follows:
+
+Installation:
+
+	./configure
+	make
+	make install
+
+The perl script Makefile.PL will attempt to search for 
+the standard place you may have installed SDL and its
+supplemental libraries. 
+
+Documentation:
+
+Each module now includes its own documentation, and 
+is accessible through perldoc.  Additional tutorials,
+code, and tips can be found at the website:
+
+	http://www.sdlperl.org
+
+Disabling Modules:
+
+You can disable individual libraries
+using the command line switches.  For example you can
+avoid compiling OpenGL and GLU support as follows:
+
+	./configure -GL -GLU
+
+Contributing:
+
+Anyone wishing to contribute modules, sprite engines, and anything
+else that others might find useful, please email:
+
+	sdlperl@sdlperl.org
+
+This is a mailing list for those interested in SDLperl development,
+both as an applications developer, and as a core contributor.
+Subscription information can be found at:
+
+	http://www.sdlperl.org/index.htpl?id=114&cat=faq
+
+I am always more than happy to take patches, bug reports, and
+helpful suggestions.  It is feedback, both good and poor, that
+keeps projects like this going.
+
+Enjoy,
+
+David J. Goehrig
+
diff -ruN SDL_perl-1.20.2/README.win32 SDL_perl-1.20.3/README.win32
--- SDL_perl-1.20.2/README.win32	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.3/README.win32	Thu Mar 27 11:44:18 2003
@@ -0,0 +1,77 @@
+SDL_perl-1.20.2.win32
+=====================
+
+These are some (hopefully) useful comments regarding the binary release
+on win32.  For any build related changes, such as details of the missing
+Opengl functionality from the unix/'official' release, please see the
+CHANGELOG.
+
+Pre-requisites
+--------------
+
+You need ActiveState Perl from http://www.activestate.com/
+
+(the win32 installer won't tell you if you haven't Perl, please check that you
+can run 'PPM' before you attemt to install it!)
+
+
+Upfront Install issues
+----------------------
+
+On win9x, for 'some' reason, you have to manually have close the ppm dos box 
+once things have 'Finished', this doesn't effect w2k cmd.exe.
+
+The installer takes no prisoners in terms of DLL's (I think thats normal isn't
+it!), it won't care where you want them, it won't warn you if there are any
+there already, and it certainly won't make a backup of any even if they are.
+Understood?
+
+The SDL DLL's and 3rd party dlls are installed into the Windows System
+directory, overwriting what (if anything) was there previously, and they are:
+
+	sdl_gfx.dll
+	zlib.dll
+	libpng1.dll
+	sdl_image.dll
+	jpeg.dll
+	sdl_mixer.dll
+	sdl_net.dll
+	vorbisfile.dll
+	ogg.dll
+	sdl_sound.dll
+	smpeg.dll
+	vorbis.dll
+	in_flac.dll
+	sdl_ttf.dll
+	sdl.dll
+	sdl_console.dll  ('unofficial', sorry, can't remeber why, needs fixing)
+
+
+Install
+-------
+
+Run the .exe. when you see all the options, go forth and explore...
+
+
+Current "Issues"
+----------------
+
+1) Open GL is only at version 1.1 (I cant get the Mesa (OGL1.4) build to run
+   properly, blank screen)
+2) console doesn't work again... due to unaligned version changes in
+   SDL_console & SDL_perl
+   (or really: due to cant be arse to fixed it just yet, until someone
+   complains)
+3) It seems you need an internet connection for PPM to work :-( [Tels]
+4) undiscovered bugs....
+
+all the best
+Wayne
+
+
+
+
+
+
+
+
diff -ruN SDL_perl-1.20.2/SDL_perl.xs SDL_perl-1.20.3/SDL_perl.xs
--- SDL_perl-1.20.2/SDL_perl.xs	Wed Mar 12 06:57:45 2003
+++ SDL_perl-1.20.3/SDL_perl.xs	Thu Mar 27 11:17:23 2003
@@ -41,6 +41,10 @@
 #include <SDL_net.h>
 #endif
 
+#ifdef HAVE_SDL_SOUND
+#include <SDL_sound.h>
+#endif
+
 #ifdef HAVE_SDL_TTF
 #include <SDL_ttf.h>
 #define TEXT_SOLID	1
@@ -55,7 +59,11 @@
 #endif
 
 #ifdef HAVE_SMPEG
+#ifdef WIN32
+#include <smpeg.h>
+#else
 #include <smpeg/smpeg.h>
+#endif
 #endif
 
 #ifdef HAVE_SDL_GFX
diff -ruN SDL_perl-1.20.2/TODO SDL_perl-1.20.3/TODO
--- SDL_perl-1.20.2/TODO	Thu Jan  2 06:23:36 2003
+++ SDL_perl-1.20.3/TODO	Tue Apr  1 19:33:14 2003
@@ -1,10 +1,10 @@
 TODO for SDL_perl
 
-	o Add SDL_envvars support
-	o Add SDL_ExposeEvent support
-	o Add SDL_EventFilter support
-	o Add SDL_GetAppState support
-	o Add SDL_GetMouseState support
-	o Add SDL_GetRelativeMouseState support
-
+Add:	
+  * SDL_envvars support
+  * SDL_ExposeEvent support
+  * SDL_EventFilter support
+  * SDL_GetAppState support
+  * SDL_GetMouseState support
+  * SDL_GetRelativeMouseState support
 
diff -ruN SDL_perl-1.20.2/lib/SDL/Constants.pm SDL_perl-1.20.3/lib/SDL/Constants.pm
--- SDL_perl-1.20.2/lib/SDL/Constants.pm	Fri Mar 21 18:52:47 2003
+++ SDL_perl-1.20.3/lib/SDL/Constants.pm	Thu Mar 27 13:37:37 2003
@@ -65,10 +65,15 @@
 	SDL_YV12_OVERLAY SDL_YVYU_OVERLAY SMPEG_ERROR SMPEG_PLAYING 
 	SMPEG_STOPPED TEXT_BLENDED TEXT_SHADED TEXT_SOLID TTF_STYLE_BOLD 
 	TTF_STYLE_ITALIC TTF_STYLE_NORMAL TTF_STYLE_UNDERLINE UNICODE_BLENDED 
-	UNICODE_SHADED UNICODE_SOLID UTF8_BLENDED UTF8_SHADED  /;
-
+	UNICODE_SHADED UNICODE_SOLID UTF8_BLENDED UTF8_SHADED  
+	SDL_BUTTON_WHEELUP
+	SDL_BUTTON_WHEELDOWN
+        SDL_GL_STEREO
+	/;
 
 
+sub SDL_BUTTON_WHEELUP { 4 }
+sub SDL_BUTTON_WHEELDOWN { 5 }
 sub SDLK_INSERT { 277 }
 sub SDL_INIT_VIDEO { 32 }
 sub SDLK_AMPERSAND { 38 }
@@ -234,6 +239,7 @@
 sub CD_PLAYING { 2 }
 sub SDLK_F2 { 283 }
 sub SDL_GL_ACCUM_ALPHA_SIZE { 11 }
+sub SDL_GL_STEREO { 12 }
 sub SDLK_F3 { 284 }
 sub SDLK_F4 { 285 }
 sub SDLK_F5 { 286 }
diff -ruN SDL_perl-1.20.2/lib/SDL/OpenGL.pm SDL_perl-1.20.3/lib/SDL/OpenGL.pm
--- SDL_perl-1.20.2/lib/SDL/OpenGL.pm	Fri Mar 21 18:59:48 2003
+++ SDL_perl-1.20.3/lib/SDL/OpenGL.pm	Thu Mar 27 16:03:12 2003
@@ -8,7 +8,7 @@
 require Exporter;
 use strict;
 use SDL;
-use vars qw/@ISA @EXPORT/;
+use vars qw/@ISA @EXPORT @EXPORT_OK/;
 @ISA = qw/Exporter/;
 
 use SDL::OpenGL::Constants;
@@ -25,7 +25,7 @@
 	BeginTrim EndTrim PwlCurve
 	/;	
 
-	my @gl = qw/ StencilMask Light DrawElements EdgeFlagPointer
+	my @gl = qw/ StencilMask Light LightModel DrawElements EdgeFlagPointer
 	NormalPointer Color 
 	PopClientAttrib GetError TexImage1D IndexMask DeleteTess CopyTexImage1D 
 	GetTessProperty IsList ClearStencil CallLists PushClientAttrib Scissor
@@ -34,7 +34,7 @@
 	ConvolutionParameter CopyTexImage2D ListBase Minmax FrontFace
 	PolygonStipple 
 	DepthFunc NewList BlendFunc ClearAccum TessEndPolygon TexImage3D
-	DrawPixels 
+	DrawPixels ReadPixels ReadPixel 
 	CopyPixels GenTextures Viewport UnProject SeparableFilter2D Begin
 	EdgeFlag 
 	LineWidth MapGrid1 TexEnv MatrixMode MapGrid2 EndList
@@ -51,7 +51,7 @@
 	VertexPointer Disable DrawBuffer PushAttrib GetHistogram StencilFunc
 	End 
 	EvalCoord1 CopyTexSubImage1D EvalCoord2 Translate TexSubImage1D
-	GenLists 
+	GenLists DeleteLists 
 	ConvolutionFilter1D CopyConvolutionFilter1D Ortho MultiTexCoord
 	AlphaFunc 
 	IsTexture LogicOp PixelStore ClearColor ColorTable Finish ColorPointer 
@@ -72,7 +72,7 @@
        # for all routines in SDL::OpenGL, either export it or create an
        # alias and export this alias then
        for my $name ( @routines ) {
-		next if $name =~ /^(BEGIN|CHECK|END)$/;
+		next if $name =~ /^(BEGIN|CHECK|END|SaveBMP)$/;
 		#if ($name =~ /^GL/) {
 		#	push @EXPORT, "&$name";
 		#} elsif ( in ( $name, @glu )) {
@@ -84,9 +84,32 @@
 			push @EXPORT, "gl$name";
 		}
 	}
+	@EXPORT_OK = qw/SaveBMP/;
 
 };
 
+sub SaveBMP
+  {
+  my ($file, $w, $h, $bpp, $data) = @_;
+
+  my $datasize = int($w * $h * $bpp) / 8;
+  my $headersize = 14;
+  my $infoheadersize = 40;
+
+  my $header = pack ("SLSSL", 0x4d42, 
+    $headersize, 0, 0, 
+    $headersize + $infoheadersize );
+  my $infoheader = pack ("LLLSSLLLLLL", 
+   $infoheadersize, $w, $h, 1, $bpp, 0, 	# 0 = uncompressed
+	$datasize, 0, 0, 0, 0);
+
+  my $FILE;
+  open $FILE, ">$file" or die("Cannot write to $file: $!");
+  binmode $FILE;
+  print $FILE $header, $infoheader, $data;
+  close $FILE;
+  }
+
 1;
 
 __END__;
@@ -125,9 +148,25 @@
 list of numbers from the given scalars. For a faster version see
 L<glCallListsString>.
 
+=item glReadPixels
+
+	$scalar = glReadPixels($x,$y,$width,$height,$format,$type);
+
+Reads the pixels at $x,$y and returnes them packed into the scalar.
+
+Here is a short example on how to make a screenshot of an OpenGL app and save
+it to a BMP file:
+
+	# get the data from the screen	
+	$data = glReadPixels(0,0,$width,$height,GL_GBR,GL_UNSIGNED_BYTE);
+	SaveBMP ($filename, $width, $height, 24, $data);
+
+See also L<glSaveBMP()>, which implements this.
+	
 =back
 
-The following methods exist in addition to the normal OpenGL specification:
+The following methods exist in Perl in addition to the normal OpenGL
+specification:
 
 =over 2
 
@@ -146,11 +185,28 @@
 
 	glCallListsScalar($lists);
 
+=item glReadPixel
+
+	($r,$g,$b,$a) = glReadPixel($x,$y);
+
+Reads one pixel and unpacks the returned data into RGBA. If you specified a
+pixel type different than GL_BGRA or GL_RGBA, only partial information
+is returned, e.g. GL_BLUE sets $b, and leaves $r,$g and $a as 0.
+
+=item SDL::OpenGL::SaveBMP
+
+	SDL::OpenGL::SaveBMP ($file, $width, $height, $bits_per_pixel, $data);
+
+Save the data in $data to a BMP file. $data must contain 3-byte per pixel,
+BGR packed data and $bits_per_pixel must (currently) be 24.
+
+See L<glReadPixels()> for an example how to get the data.
+
 =back
 
 =head1 AUTHOR
 
-David J. Goehrig, additional doc by Tels
+David J. Goehrig, additional doc plus SaveBMP by Tels
 
 =head1 SEE ALSO
 
diff -ruN SDL_perl-1.20.2/lib/SDL.pm SDL_perl-1.20.3/lib/SDL.pm
--- SDL_perl-1.20.2/lib/SDL.pm	Fri Mar 21 18:37:18 2003
+++ SDL_perl-1.20.3/lib/SDL.pm	Thu Mar 27 11:59:31 2003
@@ -15,7 +15,7 @@
 };
 
 
-$VERSION = '1.20.2';
+$VERSION = '1.20.3';
 
 print "$VERSION" if (defined($ARGV[0]) && ($ARGV[0] eq '--SDLperl'));
 
diff -ruN SDL_perl-1.20.2/scripts/SDL/Constants.pm SDL_perl-1.20.3/scripts/SDL/Constants.pm
--- SDL_perl-1.20.2/scripts/SDL/Constants.pm	Wed Mar 12 05:04:03 2003
+++ SDL_perl-1.20.3/scripts/SDL/Constants.pm	Thu Mar 27 13:34:09 2003
@@ -105,6 +105,8 @@
 sub main::KMOD_CAPS { 8192 }
 sub main::UTF8_BLENDED { 32 }
 sub main::SDL_MOUSEBUTTONUP { 6 }
+sub main::SDL_BUTTON_WHEELUP  { 4 }
+sub main::SDL_BUTTON_WHEELDOWN { 5 }
 sub main::SDLK_HASH { 35 }
 sub main::SDL_HAT_RIGHTUP { 3 }
 sub main::SDL_SWSURFACE { 0 }
diff -ruN SDL_perl-1.20.2/scripts/sdl_words.txt SDL_perl-1.20.3/scripts/sdl_words.txt
--- SDL_perl-1.20.2/scripts/sdl_words.txt	Wed Mar 12 04:42:52 2003
+++ SDL_perl-1.20.3/scripts/sdl_words.txt	Thu Mar 27 13:32:04 2003
@@ -222,6 +222,8 @@
 SDL_MOUSEBUTTONDOWN
 SDL_MOUSEBUTTONUP
 SDL_MOUSEMOTION
+SDL_BUTTON_WHEELUP
+SDL_BUTTON_WHEELDOWN
 SDL_OPENGL
 SDL_OPENGLBLIT
 SDL_PREALLOC
diff -ruN SDL_perl-1.20.2/setenv.bat SDL_perl-1.20.3/setenv.bat
--- SDL_perl-1.20.2/setenv.bat	Sat Jun 15 03:10:18 2002
+++ SDL_perl-1.20.3/setenv.bat	Thu Jan  1 01:00:00 1970
@@ -1,82 +0,0 @@
-@echo off
-
-
-set MY_DEV_ROOT=d:\sdlpl
-set INCLUDE=
-set LIB=
-
-
-
-Echo ** Adding settings for: VC++
-Echo **
-call D:\APPS\MSVC\VC98\BIN\VCVARS32.BAT
-
-
-Echo ** Adding settings for: SDL_perl
-Echo **
-set INCLUDE=%INCLUDE%;%MY_DEV_ROOT%
-
-
-
-Echo ** Adding settings for: SDL
-Echo **
-set SDL_HOME=%MY_DEV_ROOT%\sdl
-set INCLUDE=%INCLUDE%;%SDL_HOME%\include
-set LIB=%LIB%;%SDL_HOME%\lib
-set PATH=%SDL_HOME%\dll;%PATH%
-
-
-
-
-Echo ** Adding settings for: OpenGL (MS)
-Echo **
-
-set SDL_GL_VENDOR=MESA
-set SDL_GL_HOME=%MY_DEV_ROOT%\mesa
-rem set SDL_GL_HOME=%MY_DEV_ROOT%\opengl\ms
-
-set INCLUDE=%INCLUDE%;%SDL_GL_HOME%\include
-set INCLUDE=%INCLUDE%;%SDL_GL_HOME%\include\gl
-set LIB=%LIB%;%SDL_GL_HOME%\lib
-set PATH=%SDL_GL_HOME%\lib;%PATH%
-
-
-
-
-
-Echo ** Adding settings for: SDL_gfx
-Echo **
-set SDLGFX_HOME=%MY_DEV_ROOT%\SDL_gfx
-set INCLUDE=%INCLUDE%;%SDLGFX_HOME%
-set LIB=%LIB%;%SDLGFX_HOME%
-set PATH=%SDLGFX_HOME%;%PATH%
-
-
-
-Echo ** Adding settings for: SDL_sound
-Echo **
-set SDLSOUND_HOME=%MY_DEV_ROOT%\SDL_sound
-set INCLUDE=%INCLUDE%;%SDLSOUND_HOME%
-set LIB=%LIB%;%SDLSOUND_HOME%\visualc\win32lib
-set PATH=%SDLSOUND_HOME%\visualc\win32bin;%PATH%
-
-
-
-Echo ** Adding settings for: SDL_console
-Echo **
-set SDLCONSOLE_HOME=%MY_DEV_ROOT%\sdl_console
-set INCLUDE=%INCLUDE%;%SDLCONSOLE_HOME%\include
-set LIB=%LIB%;%SDLCONSOLE_HOME%\lib
-
-
-
-Echo ** Adding settings for: SMPEG
-Echo **
-set SMPEG_HOME=%MY_DEV_ROOT%\smpeg
-set INCLUDE=%INCLUDE%;%SMPEG_HOME%\include
-set LIB=%LIB%;%SMPEG_HOME%\lib
-set PATH=%SMPEG_HOME%\dll;%PATH%
-
-
-rem sorry, I (ab)use 98...
-doskey
diff -ruN SDL_perl-1.20.2/t/opengl.t SDL_perl-1.20.3/t/opengl.t
--- SDL_perl-1.20.2/t/opengl.t	Fri Mar 21 19:02:08 2003
+++ SDL_perl-1.20.3/t/opengl.t	Thu Mar 27 16:39:22 2003
@@ -2,7 +2,7 @@
 
 # basic testing of SDL::OpenGL
 
-use Test::More tests => 2;
+use Test::More tests => 3;
 use strict;
 use vars qw/@INC/;
 
@@ -14,15 +14,23 @@
   use_ok( 'SDL::OpenGL' ); 
   }
 
-#can_ok ('SDL::OpenGL', qw/
-#	new title delay ticks error warp fullscreen iconify
-#	grab_input loop attribute/);
-
 # These are exported by default, so main:: should know about them
 # Actually, this is just a short test, we don't want to list them all, right?
 can_ok ('main', qw/
         GL_CULL_FACE
 	glCallLists
 	glCallListsScalar
-       /);
+	glDeleteLists
+	glGenLists
+	glIsList
+	glCallList
+	glCallLists
+	glReadPixels
+	glReadPixel
+      /);
+
+# not exported by default, but exists
+can_ok ('SDL::OpenGL', qw/
+	SaveBMP
+      /);
 
diff -ruN SDL_perl-1.20.2/test.pl SDL_perl-1.20.3/test.pl
--- SDL_perl-1.20.2/test.pl	Sat Jan  4 18:21:36 2003
+++ SDL_perl-1.20.3/test.pl	Thu Jan  1 01:00:00 1970
@@ -1,20 +0,0 @@
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl test.pl'
-
-######################### We start with some black magic to print on failure.
-
-# Change 1..1 below to 1..last_test_to_print .
-# (It may become useful if the test is moved to ./t subdirectory.)
-
-BEGIN { $| = 1; print "1..1\n"; }
-END {print "not ok 1\n" unless $loaded;}
-use SDL;
-$loaded = 1;
-print "ok 1\n";
-
-######################### End of black magic.
-
-# Insert your test code below (better if it prints "ok 13"
-# (correspondingly "not ok 13") depending on the success of chunk 13
-# of the test code):
-
diff -ruN SDL_perl-1.20.2/win32/release.pl SDL_perl-1.20.3/win32/release.pl
--- SDL_perl-1.20.2/win32/release.pl	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.3/win32/release.pl	Thu Mar 27 11:51:31 2003
@@ -0,0 +1,148 @@
+#!perl -w
+
+use strict;
+use File::Find;
+
+
+$ENV{SDL_PERL_RELEASE_ID} = "SDL_perl-1.20.3.win32";
+$ENV{TAR}      = 'C:\cygwin\bin\tar.exe';
+$ENV{GZIP}     = 'C:\cygwin\bin\gzip.exe';
+$ENV{MAKENSIS} = '"c:\Program Files\NSIS\makensis.exe"';
+$ENV{NSISCFG}  = 'sdlperl.nsi';
+$ENV{NSISCFGENV} = $ENV{NSISCFG}. ".env";
+$ENV{PPDFILE}    = "SDL_perl.ppd";
+$ENV{MAKE}    = "nmake";
+$ENV{PERL}    = "perl";
+$ENV{RM}    = "del";
+
+
+
+my $tarFile = $ENV{SDL_PERL_RELEASE_ID}. ".tar";
+my $nsisCfg = $ENV{NSISCFG}; 
+my $sdlDll  = $ENV{SDL_DLL_PATH}; 
+
+my @foundDLLs = ();
+
+my @ignoreDLLs = (
+				  '.*\visualc\win32bin\SDL.dll$',
+				  '.*\visualc\win32bin\sdl_sound_d.dll$',
+				  );
+
+scan_dll(FOUND_DLL => \@foundDLLs, 
+		 IGNORE_DLL => \@ignoreDLLs);
+
+
+system($ENV{MAKE}      , 'clean');
+system($ENV{PERL}      , 'Makefile.PL');
+system($ENV{MAKE});
+
+
+system $ENV{RM},  $tarFile.".gz";
+system $ENV{RM},  $ENV{PPDFILE};
+
+system($ENV{TAR}       , 'cvf' , $tarFile, 'blib');
+system($ENV{GZIP}      , '--best', '--force', $tarFile);
+
+system($ENV{MAKE}      , 'ppd'); # "BINARY_LOCATION=$tarFile.gz");
+envreplace_ppd();
+
+envreplace_nsiscfg(DLLS => \@foundDLLs);
+
+system($ENV{MAKENSIS}  , $nsisCfg);
+
+
+exit;
+
+
+
+
+
+sub envreplace_ppd
+{
+	local $/ = undef;
+	open PPD,  "<$ENV{PPDFILE}" or die "$!";
+	my $text = <PPD>;
+	close PPD;
+
+	$text =~ s/CODEBASE HREF=""/CODEBASE HREF="$ENV{SDL_PERL_RELEASE_ID}.tar.gz"/m;
+
+	open PPD,  ">$ENV{PPDFILE}" or die "$!";
+	print PPD $text;
+	close PPD;
+}
+
+
+
+				
+sub scan_dll
+{
+	my %args = ( @_
+				);
+	my $dll        = $args{FOUND_DLL};
+	my $ignoreDlls = $args{IGNORE_DLL};
+# find the SDL DLLS'
+
+find( sub 
+{
+	my $fullPath=$File::Find::name;
+	$fullPath =~ s/\//\\/g;
+	if ($fullPath =~ /\.dll$/i)
+	{
+		my $foundIgnoreDll = 0 ;
+		foreach my $regexOrg (@$ignoreDlls)
+		{
+			my $regex = $regexOrg;
+			$regex =~ s/\\/\\\\/g;
+			#print "********** checking against : $regex\n";
+			$foundIgnoreDll = 1 if $fullPath =~/$regex/;
+		}
+		push @$dll, $fullPath if not $foundIgnoreDll;  
+	}
+	#print $fullPath."\n";
+} , split ';', $sdlDll);
+
+}
+
+
+# perform env substitution on 
+sub envreplace_nsiscfg
+{
+	my %args = ( @_
+				);
+	
+	my @dll = @{$args{DLLS}};
+open NSIS_IN,  "<$ENV{NSISCFGENV}" or die "$!";
+open NSIS_OUT, ">$ENV{NSISCFG}"    or die "$!";
+
+while (my $line = <NSIS_IN>)
+{
+	if ( $line =~ /\%LIST:DLLFiles\%/)
+	{
+		print ">>>> FILE REP\n";
+		print NSIS_OUT map { "File \"$_\"\n"; } @dll;		
+	}
+	elsif ($line =~ /\%(.*)\%/)
+	{
+		print ">>>> ENV REPL $1\n";
+		my $var = $ENV{$1} or die "No value set in ENV for variable named $1";
+		$line =~ s/\%$1\%/$var/g;
+		print NSIS_OUT $line;
+	}
+	else
+	{
+		print ">>>> WRITE\n";
+		
+		print NSIS_OUT $line;
+	}
+	print ">>>>>>>>>> ".$line;
+}
+close NSIS_IN;
+close NSIS_OUT;
+
+
+print ">" x 80 ."\n";
+print "DLLS: \n", join "\n", @dll;
+print "\n";
+#print "<" x 80 ."\n";		
+
+}
diff -ruN SDL_perl-1.20.2/win32/sdlperl.nsi.env SDL_perl-1.20.3/win32/sdlperl.nsi.env
--- SDL_perl-1.20.2/win32/sdlperl.nsi.env	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.3/win32/sdlperl.nsi.env	Thu Mar 27 11:52:35 2003
@@ -0,0 +1,132 @@
+; sdlperl.nsi
+;
+; Wayne Keenan 2002
+
+; The name of the installer
+Name "SDL_Perl"
+
+; The file to write
+OutFile "%SDL_PERL_RELEASE_ID%.exe"
+
+; The default installation directory
+InstallDir $PROGRAMFILES\SDL_Perl
+
+; Registry key to check for directory (so if you install again, it will 
+; overwrite the old one automatically)
+InstallDirRegKey HKLM SOFTWARE\SDL_Perl "Install_Dir"
+
+; The text to prompt the user to enter a directory
+ComponentText "This will install SDL_Perl on your computer. Select which optional things you want installed."
+
+; The text to prompt the user to enter a directory
+DirText "Choose a directory to install in to:"
+
+ShowInstDetails Show
+
+; The stuff to install
+Section "SDL_Perl Modules (required)"
+
+	
+  ; Set output path to the installation directory.
+  SetOutPath $INSTDIR
+  ; Put file there
+  File "README.win32"
+  File "CHANGELOG"
+  File /r test
+
+
+  ; put in the PPD files
+  File "SDL_perl.ppd"
+  File "%SDL_PERL_RELEASE_ID%.tar.gz"
+  SearchPath $1 ppm.bat
+  ExecWait '$1 remove SDL_Perl'
+  ExecWait '$1 install --location="$INSTDIR" SDL_Perl'
+
+
+
+
+  ; Write the installation path into the registry
+  WriteRegStr HKLM SOFTWARE\SDL_Perl "Install_Dir" "$INSTDIR"
+
+  ; Write the uninstall keys for Windows
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SDL_Perl" "DisplayName" "SDL_Perl (remove only)"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SDL_Perl" "UninstallString" '"$INSTDIR\uninstall.exe"'
+  WriteUninstaller "uninstall.exe"
+SectionEnd
+
+
+
+Section "SDL_Perl Examples"
+  ; Set output path to the installation directory.
+  SetOutPath $INSTDIR
+  File /r test
+SectionEnd
+
+
+
+
+; optional section
+Section "Core SDL and 3rd party DLL's"
+  SetOutPath $WINDIR
+	%LIST:DLLFiles%
+SectionEnd
+
+
+; optional section
+Section "Start Menu Shortcuts"
+  CreateDirectory "$SMPROGRAMS\SDL_Perl"
+  CreateShortCut "$SMPROGRAMS\SDL_Perl\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+  CreateShortCut "$SMPROGRAMS\SDL_Perl\ReadMe.lnk" "$INSTDIR\readme.win32.txt" "" "$INSTDIR\readme.win32.txt" 0
+  CreateShortCut "$SMPROGRAMS\SDL_Perl\CHANGELOG.lnk" "$INSTDIR\readme.win32.txt" "" "$INSTDIR\CHANGELOG" 0
+  CreateShortCut "$SMPROGRAMS\SDL_Perl\Examples.lnk" "$INSTDIR\Test" "" "$INSTDIR\test" 0
+SectionEnd
+
+
+
+; uninstall stuff
+
+UninstallText "This will uninstall SDL_Perl. Hit next to continue."
+
+; special uninstall section.
+Section "Uninstall"
+  ; remove registry keys
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SDL_Perl"
+  DeleteRegKey HKLM SOFTWARE\SDL_Perl
+  ; remove files
+  Delete $INSTDIR\readme.win32.txt
+  Delete $INSTDIR\CHANGELOG
+  Delete "$INSTDIR\SDL_perl.ppd"
+  Delete "$INSTDIR\%SDL_PERL_RELEASE_ID%.tar.gz"
+  
+  ; MUST REMOVE UNINSTALLER, too
+  Delete $INSTDIR\uninstall.exe
+  Delete "$WINDIR\sdl_gfx.dll"
+  Delete "$WINDIR\zlib.dll"
+  Delete "$WINDIR\libpng1.dll"
+  Delete "$WINDIR\sdl_image.dll"
+  Delete "$WINDIR\jpeg.dll"
+  Delete "$WINDIR\sdl_mixer.dll"
+  Delete "$WINDIR\sdl_net.dll"
+  Delete "$WINDIR\vorbisfile.dll"
+  Delete "$WINDIR\ogg.dll"
+  Delete "$WINDIR\sdl_sound.dll"
+  Delete "$WINDIR\smpeg.dll"
+  Delete "$WINDIR\vorbis.dll"
+  Delete "$WINDIR\in_flac.dll"
+  Delete "$WINDIR\sdl_ttf.dll"
+  Delete "$WINDIR\sdl.dll"
+  Delete "$WINDIR\sdl_console.dll"
+  
+  ; remove shortcuts, if any.
+  Delete "$SMPROGRAMS\SDL_Perl\*.*"
+  ; remove directories used.
+  RMDir "$SMPROGRAMS\SDL_Perl"
+  RMDir /r "$INSTDIR"
+
+	SearchPath $1 ppm.bat
+
+  ExecWait '$1 remove SDL_Perl'
+  
+SectionEnd
+
+; eof
diff -ruN SDL_perl-1.20.2/win32/setenv.bat SDL_perl-1.20.3/win32/setenv.bat
--- SDL_perl-1.20.2/win32/setenv.bat	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.3/win32/setenv.bat	Sun Mar 23 00:00:00 2003
@@ -0,0 +1,110 @@
+@echo off
+
+set MY_DEV_ROOT=c:\sauce
+set INCLUDE=
+set LIB=
+
+set SDL_DLL_PATH=
+
+Echo ** Adding settings for: VC++
+Echo **
+call C:\PROGRA~1\MICROS~3\VC98\BIN\VCVARS32.BAT
+
+
+Echo ** Adding settings for: SDL_perl
+Echo **
+set INCLUDE=%INCLUDE%;%MY_DEV_ROOT%\SDL_perl-1.20.2.win32
+
+
+
+Rem  SDL paths
+
+set SDL_COMMON_HOME=%MY_DEV_ROOT%\sdl
+
+set SDL=SDL-1.2.5
+set SDL_IMAGE=SDL_image-1.2.2
+set SDL_MIXER=SDL_mixer-1.2.4
+set SDL_TTF=SDL_ttf-2.0.5
+set SDL_GFX=SDL_gfx-2.0.3
+set SDL_NET=SDL_net-1.2.4
+set SDL_SOUND=SDL_sound-01232002
+set SDL_CONSOLE=SDL_console-1.2
+
+	
+
+
+Echo ** Adding settings for: SDL Core
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL%\include
+set LIB=%SDL_COMMON_HOME%\%SDL%\lib;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL%\lib;%SDL_DLL_PATH%
+
+
+
+Echo ** Adding settings for: SDL Image
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL_IMAGE%\include
+set LIB=%SDL_COMMON_HOME%\%SDL_IMAGE%\lib;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL_IMAGE%\lib;%SDL_DLL_PATH%
+
+
+Echo ** Adding settings for: SDL Net
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL_NET%\include
+set LIB=%SDL_COMMON_HOME%\%SDL_NET%\lib;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL_NET%\lib;%SDL_DLL_PATH%
+
+
+
+Echo ** Adding settings for: SDL Mixer
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL_MIXER%\include
+set LIB=%SDL_COMMON_HOME%\%SDL_MIXER%\lib;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL_MIXER%\lib;%SDL_DLL_PATH%
+
+
+Echo ** Adding settings for: SDL Sound
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL_SOUND%
+set LIB=%SDL_COMMON_HOME%\%SDL_SOUND%\visualc\win32lib;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL_SOUND%\visualc\win32bin;%SDL_DLL_PATH%
+
+
+
+Echo ** Adding settings for: SDL TTF
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL_TTF%\include
+set LIB=%SDL_COMMON_HOME%\%SDL_TTF%\lib;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL_TTF%\lib;%SDL_DLL_PATH%
+
+
+Echo ** Adding settings for: SDL GFX
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL_GFX%
+set LIB=%SDL_COMMON_HOME%\%SDL_GFX%;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL_GFX%;%SDL_DLL_PATH%
+
+Echo ** Adding settings for: SDL Console
+Echo **
+set INCLUDE=%INCLUDE%;%SDL_COMMON_HOME%\%SDL_CONSOLE%\ConsoleSource
+set LIB=%SDL_COMMON_HOME%\%SDL_CONSOLE%\ConsoleSource;%LIB%
+set SDL_DLL_PATH=%SDL_COMMON_HOME%\%SDL_CONSOLE%\ConsoleSource;%SDL_DLL_PATH%
+
+
+
+Echo ** Adding settings for: OpenGL (MS)
+Echo **
+
+
+set SDL_GL_VENDOR=MS
+
+
+
+rem set SDL_GL_VENDOR=MESA
+rem set SDL_GL_HOME=%MY_DEV_ROOT%\opengl\mesa-5.0
+rem set INCLUDE=%INCLUDE%;%SDL_GL_HOME%\include\gl
+rem set LIB=%LIB%;%SDL_GL_HOME%\lib
+rem set SDL_DLL_PATH=%SDL_GL_HOME%\lib;%SDL_DLL_PATH%
+
+
+set PATH=%SDL_DLL_PATH%;%PATH%
