diff -ruN ram:defendguin-0.0.11/Makefile ./Makefile
--- ram:defendguin-0.0.11/Makefile	Sun Jan 29 09:23:31 2006
+++ ./Makefile	Sat Feb  2 16:12:35 2008
@@ -14,7 +14,8 @@
 PREFIX=/usr/local
 MAN_PREFIX=$(PREFIX)
 BIN_PREFIX=$(PREFIX)/bin
-DATA_PREFIX=$(PREFIX)/share/defendguin/
+#DATA_PREFIX=$(PREFIX)/share/defendguin/
+DATA_PREFIX=PROGDIR:data/
 JOY=YES
 
 
diff -ruN ram:defendguin-0.0.11/src/defendguin.c ./src/defendguin.c
--- ram:defendguin-0.0.11/src/defendguin.c	Sun Jan 29 11:11:06 2006
+++ ./src/defendguin.c	Sat Feb  2 16:29:12 2008
@@ -33,6 +33,9 @@
 #define M_PI  3.14159265358979323846  /* mmm... pi... */
 #endif /* #ifndef M_PI */
 
+#ifdef __MORPHOS__
+CONST_STRPTR __verstag__ = "\0$VER: Defendguin " VERSION " (02.02.2008)";
+#endif
 
 /* Image enumerations: */
 
@@ -589,7 +592,7 @@
 int game(int mode);
 int option_screen(void);
 int title(void);
-void setup(void);
+int setup(void);
 SDL_Surface * set_vid_mode(unsigned flags);
 void my_shutdown(void);
 void create_land(int ply);
@@ -726,41 +729,42 @@
   
   /* Setup: */
   
-  setup();
-  quit = 0;
+  quit = setup();
   
   
   /* MAIN INTERFACE LOOP! */
   
-  do
-    {
-      /* Display the title screen: */
-      
-      mode = title();
-      
-      
-      /* What's our choice? */
-      
-      if (mode == TITLE_OPTION_ONE_PLAYER ||
-	  mode == TITLE_OPTION_TWO_PLAYERS)
-	{
-	  /* Play the game */
+  if (!quit)
+  {
+  	  do
+	    {
+	      /* Display the title screen: */
+	      
+	      mode = title();
+	      
+	      
+	      /* What's our choice? */
+	      
+	      if (mode == TITLE_OPTION_ONE_PLAYER ||
+		  mode == TITLE_OPTION_TWO_PLAYERS)
+		{
+		  /* Play the game */
 
-	  quit = game(mode);
-	}
-      else if (mode == TITLE_OPTION_OPTIONS)
-	{
-	  /* Option screen: */
-	  
-	  quit = option_screen();
-	}
-      else if (mode == TITLE_OPTION_QUIT)
-	{
-	  quit = 1;
-	}
-    }
-  while (quit == 0);
-  
+		  quit = game(mode);
+		}
+	      else if (mode == TITLE_OPTION_OPTIONS)
+		{
+		  /* Option screen: */
+		  
+		  quit = option_screen();
+		}
+	      else if (mode == TITLE_OPTION_QUIT)
+		{
+		  quit = 1;
+		}
+	    }
+	  while (quit == 0);
+  }
 
   save_options();
 
@@ -4303,13 +4307,14 @@
 
 /* Setup: */
 
-void setup(void)
+int setup(void)
 {
   int i, done, distortion, distortion_m;
   Uint32 old_ticks, last_time;
   SDL_Surface * image;
   SDL_Rect dest, src;
   SDL_Event event;
+  int justdie = 0;
   
   
   /* Init SDL Video: */
@@ -4687,6 +4692,12 @@
 	{
 	  if (event.type == SDL_KEYDOWN)
 	    done = 1;
+
+	  if (event.type == SDL_QUIT)
+		{
+			justdie = 1;
+			done = 1;
+		}
 	  
 	  if (event.type == SDL_JOYBUTTONDOWN &&
 	      (num_joysticks < 2 || event.jbutton.which == player))
@@ -4763,6 +4774,8 @@
 #endif /* #ifndef NOSOUND */
     }
   while (done == 0);
+
+  return justdie;
 }
 
 
@@ -5882,10 +5895,14 @@
   vol_effects = 5;
   vol_music = 5;
 
+#ifndef __MORPHOS__
   if (getenv("HOME") != NULL)
     {
       snprintf(fname, sizeof(fname), "%s/.defendguinrc", getenv("HOME"));
-
+#else
+    {
+	  snprintf(fname, sizeof(fname), "PROGDIR:.defendguinrc");
+#endif
       fi = fopen(fname, "r");
 
       if (fi != NULL)
@@ -5946,9 +5963,14 @@
   FILE * fi;
   char fname[512];
   
+#ifndef __MORPHOS__
   if (getenv("HOME") != NULL)
     {
       snprintf(fname, sizeof(fname), "%s/.defendguinrc", getenv("HOME"));
+#else
+	{
+	  snprintf(fname, sizeof(fname), "PROGDIR:.defendguinrc");
+#endif
 
       fi = fopen(fname, "w");
 
