Please use the newer snapshot from:
http://git.zerfleddert.de/cgi-bin/gitweb.cgi/micropolis

Direct .tar.gz link:
http://git.zerfleddert.de/cgi-bin/gitweb.cgi/micropolis?a=snapshot;h=HEAD;sf=tgz

Or clone the git repository:
git clone git://git.zerfleddert.de/micropolis

Or get the automatically updated patch:
http://rmdir.de/~michael/micropolis_git.patch

This version of the patch is outdated!

diff -ru /tmp/micropolis-activity/Micropolis micropolis-activity/Micropolis
--- /tmp/micropolis-activity/Micropolis	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/Micropolis	2008-01-13 02:15:05.000000000 +0100
@@ -1,7 +1,7 @@
 #!/bin/bash
 export SIMHOME=`pwd`
 echo "Starting Micropolis in $SIMHOME ... "
-res/sim $*
+res/sim -w $*
 
 #
 # Micropolis, Unix Version.  This game was released for the Unix platform
diff -ru /tmp/micropolis-activity/src/sim/g_map.c micropolis-activity/src/sim/g_map.c
--- /tmp/micropolis-activity/src/sim/g_map.c	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/sim/g_map.c	2008-01-13 02:01:53.000000000 +0100
@@ -467,11 +467,8 @@
 	unsigned char *data = 
 	  (unsigned char *)view->data;
 	unsigned char *image;
-	int bitmapPad = view->x->small_tile_image->bitmap_pad;
-	int rowBytes = view->x->small_tile_image->bytes_per_line;
-	line = rowBytes >> 1; /* Convert from byte offset to short offset */
 	image = 
-	  &data[(line * y) + x];
+	  &data[(line * y) + x * pixelBytes];
 
 	if (solid) {
 	  for (i = h; i > 0; i--) {
@@ -479,11 +476,11 @@
 	      *(image++) = (pixel >> 0) & 0xff;
 	      *(image++) = (pixel >> 8) & 0xff;
 	      *(image++) = (pixel >> 16) & 0xff;
-	      if (bitmapPad == 32) {
+	      if (pixelBytes == 4) {
 	        image++;
 	      }
 	    }
-	    image += line - w;
+	    image += line - w * pixelBytes;
 	  }
 	} else {
 	  for (i = h; i > 0; i--) {
@@ -492,15 +489,17 @@
 		*(image++) = (pixel >> 0) & 0xff;
 		*(image++) = (pixel >> 8) & 0xff;
 		*(image++) = (pixel >> 16) & 0xff;
-	        if (bitmapPad == 32) {
-		  image++;
-		}
+	      } else {
+	        image += 3;
+	      }
+	      if (pixelBytes == 4) {
+		image++;
 	      }
 	    }
 	    if (!(w & 1)) {
 	      stipple++;
 	    }
-	    image += line - w;
+	    image += line - w * pixelBytes;
 	  }
 	}
       }
diff -ru /tmp/micropolis-activity/src/sim/g_smmaps.c micropolis-activity/src/sim/g_smmaps.c
--- /tmp/micropolis-activity/src/sim/g_smmaps.c	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/sim/g_smmaps.c	2008-01-13 01:11:12.000000000 +0100
@@ -153,8 +153,6 @@
 		  ROW3_16 \
 		  break; \
 		case 24: \
-		  ROW3_24 \
-		  break; \
 		case 32: \
 		  ROW3_32 \
 		  break; \
diff -ru /tmp/micropolis-activity/src/sim/headers/sim.h micropolis-activity/src/sim/headers/sim.h
--- /tmp/micropolis-activity/src/sim/headers/sim.h	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/sim/headers/sim.h	2008-01-13 02:02:51.000000000 +0100
@@ -91,7 +91,6 @@
 #include <assert.h>
 #include <ctype.h>
 #include <setjmp.h>
-#include <malloc.h>
 #include <errno.h>
 #include <signal.h>
 #include <math.h>
diff -ru /tmp/micropolis-activity/src/sim/makefile micropolis-activity/src/sim/makefile
--- /tmp/micropolis-activity/src/sim/makefile	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/sim/makefile	2008-01-12 22:41:13.000000000 +0100
@@ -16,6 +16,7 @@
 CFLAGS = $(OPTFLAGS) $(DEFINES)
 
 #LDFLAGS = -Bstatic
+LDFLAGS=-L/usr/X11/lib
 
 INSTALL = install -s
 
diff -ru /tmp/micropolis-activity/src/sim/w_x.c micropolis-activity/src/sim/w_x.c
--- /tmp/micropolis-activity/src/sim/w_x.c	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/sim/w_x.c	2008-01-13 02:13:23.000000000 +0100
@@ -1156,7 +1156,7 @@
 	  view->pixel_bytes = 4;
 	  //view->pixel_bytes = 3;
 	  view->depth = 24;
-	  bitmap_depth = 32;
+	  bitmap_depth = 24;
 	  bitmap_pad = 32;
 	  view->line_bytes8 =
 	    ((view->m_width * 4) + 3) & (~3);
diff -ru /tmp/micropolis-activity/src/tcl/tclunix.h micropolis-activity/src/tcl/tclunix.h
--- /tmp/micropolis-activity/src/tcl/tclunix.h	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/tcl/tclunix.h	2008-01-12 22:14:51.000000000 +0100
@@ -101,7 +101,7 @@
  */
 
 extern int errno;
-extern int sys_nerr;
+//extern int sys_nerr;
 //#ifndef IS_LINUX
 //extern char *sys_errlist[];
 //#endif
diff -ru /tmp/micropolis-activity/src/tclx/ossupp/makefile micropolis-activity/src/tclx/ossupp/makefile
--- /tmp/micropolis-activity/src/tclx/ossupp/makefile	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/tclx/ossupp/makefile	2008-01-12 22:17:50.000000000 +0100
@@ -30,7 +30,7 @@
 all: made.tmp
 
 made.tmp: $(SUPPORT_OBJS)
-	$(AR) cr ../libtcl.a $(SUPPORT_OBJS)
+	#$(AR) cr ../libtcl.a $(SUPPORT_OBJS)
 	touch made.tmp
 
 #------------------------------------------------------------------------------
diff -ru /tmp/micropolis-activity/src/tclx/src/tclxgdat.y micropolis-activity/src/tclx/src/tclxgdat.y
--- /tmp/micropolis-activity/src/tclx/src/tclxgdat.y	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/tclx/src/tclxgdat.y	2008-01-12 22:36:27.000000000 +0100
@@ -64,78 +64,78 @@
 timedate:               /* empty */
         | timedate item;
 
-item:   tspec =
+item:   tspec 
                 {timeflag++;}
-        | zone =
+        | zone 
                 {zoneflag++;}
-        | dtspec =
+        | dtspec 
                 {dateflag++;}
-        | dyspec =
+        | dyspec 
                 {dayflag++;}
-        | rspec =
+        | rspec 
                 {relflag++;}
         | nspec;
 
-nspec:  NUMBER =
+nspec:  NUMBER 
                 {if (timeflag && dateflag && !relflag) year = $1;
                 else {timeflag++;hh = $1/100;mm = $1%100;ss = 0;merid = 24;}};
 
-tspec:  NUMBER MERIDIAN =
+tspec:  NUMBER MERIDIAN
                 {hh = $1; mm = 0; ss = 0; merid = $2;}
-        | NUMBER ':' NUMBER =
+        | NUMBER ':' NUMBER
                 {hh = $1; mm = $3; merid = 24;}
-        | NUMBER ':' NUMBER MERIDIAN =
+        | NUMBER ':' NUMBER MERIDIAN
                 {hh = $1; mm = $3; merid = $4;}
-        | NUMBER ':' NUMBER NUMBER =
+        | NUMBER ':' NUMBER NUMBER
                 {hh = $1; mm = $3; merid = 24;
                 dayLight = STANDARD; ourzone = -($4%100 + 60*$4/100);}
-        | NUMBER ':' NUMBER ':' NUMBER =
+        | NUMBER ':' NUMBER ':' NUMBER
                 {hh = $1; mm = $3; ss = $5; merid = 24;}
-        | NUMBER ':' NUMBER ':' NUMBER MERIDIAN =
+        | NUMBER ':' NUMBER ':' NUMBER MERIDIAN
                 {hh = $1; mm = $3; ss = $5; merid = $6;}
-        | NUMBER ':' NUMBER ':' NUMBER NUMBER =
+        | NUMBER ':' NUMBER ':' NUMBER NUMBER
                 {hh = $1; mm = $3; ss = $5; merid = 24;
                 dayLight = STANDARD; ourzone = -($6%100 + 60*$6/100);};
 
-zone:   ZONE =
+zone:   ZONE
                 {ourzone = $1; dayLight = STANDARD;}
-        | DAYZONE =
+        | DAYZONE
                 {ourzone = $1; dayLight = DAYLIGHT;};
 
-dyspec: DAY =
+dyspec: DAY
                 {dayord = 1; dayreq = $1;}
-        | DAY ',' =
+        | DAY ','
                 {dayord = 1; dayreq = $1;}
-        | NUMBER DAY =
+        | NUMBER DAY
                 {dayord = $1; dayreq = $2;};
 
-dtspec: NUMBER '/' NUMBER =
+dtspec: NUMBER '/' NUMBER
                 {month = $1; day = $3;}
-        | NUMBER '/' NUMBER '/' NUMBER =
+        | NUMBER '/' NUMBER '/' NUMBER
                 {month = $1; day = $3; year = $5;}
-        | MONTH NUMBER =
+        | MONTH NUMBER
                 {month = $1; day = $2;}
-        | MONTH NUMBER ',' NUMBER =
+        | MONTH NUMBER ',' NUMBER
                 {month = $1; day = $2; year = $4;}
-        | NUMBER MONTH =
+        | NUMBER MONTH
                 {month = $2; day = $1;}
-        | NUMBER MONTH NUMBER =
+        | NUMBER MONTH NUMBER
                 {month = $2; day = $1; year = $3;};
 
 
-rspec:  NUMBER UNIT =
+rspec:  NUMBER UNIT
                 {relsec +=  60L * $1 * $2;}
-        | NUMBER MUNIT =
+        | NUMBER MUNIT
                 {relmonth += $1 * $2;}
-        | NUMBER SUNIT =
+        | NUMBER SUNIT
                 {relsec += $1;}
-        | UNIT =
+        | UNIT
                 {relsec +=  60L * $1;}
-        | MUNIT =
+        | MUNIT
                 {relmonth += $1;}
-        | SUNIT =
+        | SUNIT
                 {relsec++;}
-        | rspec AGO =
+        | rspec AGO
                 {relsec = -relsec; relmonth = -relmonth;};
 %%
 
@@ -228,7 +228,7 @@
 
 static char *lptr;
 
-static
+//static
 yylex()
 {
 #ifndef YYSTYPE
diff -ru /tmp/micropolis-activity/src/tclx/src/tclxint.h micropolis-activity/src/tclx/src/tclxint.h
--- /tmp/micropolis-activity/src/tclx/src/tclxint.h	2007-12-01 03:49:55.000000000 +0100
+++ micropolis-activity/src/tclx/src/tclxint.h	2008-01-12 22:39:12.000000000 +0100
@@ -67,7 +67,10 @@
 #    include <sys/times.h>
 #endif 
 
-#include <values.h>
+//#include "values.h"
+#include <limits.h>
+#include <float.h>
+#define MAXDOUBLE       DBL_MAX
 #include <grp.h>
 /*
  * On some systems this is not included by tclUnix.h.
