FIX: games/xboing -fno-common

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

FIX: games/xboing -fno-common

Ryan Freeman

From FreeBSD, a bit hard to follow as their commit (re)touched the
original patches

https://svnweb.freebsd.org/ports?view=revision&revision=548113

Once this builds, the game doesn't seem very playable.  Seems like
it might be running /way/ too fast on modern systems.  Tried stock
fvwm with no fancy stuff to see if compositing was problematic, no
improvement.

Does this work for anyone else?  Should it get booted?


Index: Makefile
===================================================================
RCS file: /cvs/ports/games/xboing/Makefile,v
retrieving revision 1.31
diff -u -p -r1.31 Makefile
--- Makefile 12 Jul 2019 20:46:27 -0000 1.31
+++ Makefile 13 Feb 2021 00:30:05 -0000
@@ -5,7 +5,7 @@ COMMENT= blockout style game for X11
 V= 2.4
 DISTNAME= xboing${V}
 PKGNAME= xboing-${V}
-REVISION= 4
+REVISION= 5
 
 CATEGORIES= games
 
Index: patches/patch-bonus_c
===================================================================
RCS file: /cvs/ports/games/xboing/patches/patch-bonus_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-bonus_c
--- patches/patch-bonus_c 8 Jul 2011 11:42:09 -0000 1.1
+++ patches/patch-bonus_c 13 Feb 2021 00:30:05 -0000
@@ -1,6 +1,19 @@
 $OpenBSD: patch-bonus_c,v 1.1 2011/07/08 11:42:09 jasper Exp $
---- bonus.c.orig Fri Nov 22 02:28:46 1996
-+++ bonus.c Fri Jul  8 13:37:55 2011
+
+fix -fno-common, from FreeBSD
+
+Index: bonus.c
+--- bonus.c.orig
++++ bonus.c
+@@ -120,7 +120,7 @@ enum BonusStates BonusState;
+ static Pixmap titlePixmap, titlePixmapM;
+ static int ypos;
+ static int waitingFrame;
+-enum BonusStates waitMode;
++extern enum BonusStates waitMode;
+ static char string[80];
+ static u_long bonusScore;
+ static int firstTime = True;
 @@ -311,7 +311,7 @@ void DrawTitleText(display, window)
  XFlush(display);
 
Index: patches/patch-demo_c
===================================================================
RCS file: /cvs/ports/games/xboing/patches/patch-demo_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-demo_c
--- patches/patch-demo_c 6 Mar 2004 02:41:00 -0000 1.1
+++ patches/patch-demo_c 13 Feb 2021 00:30:05 -0000
@@ -1,6 +1,19 @@
 $OpenBSD: patch-demo_c,v 1.1 2004/03/06 02:41:00 naddy Exp $
---- demo.c.orig 2004-03-06 01:50:10.000000000 +0100
-+++ demo.c 2004-03-06 01:51:28.000000000 +0100
+
+now includes -fno-common fix, from FreeBSD
+
+Index: demo.c
+--- demo.c.orig
++++ demo.c
+@@ -107,7 +107,7 @@ static int endFrame = 0;
+ static int startFrame = 0;
+ enum DemoStates DemoState;
+ static int waitingFrame;
+-enum DemoStates waitMode;
++extern enum DemoStates waitMode;
+
+ #if NeedFunctionPrototypes
+ void SetUpDemonstration(Display *display, Window window, Colormap colormap)
 @@ -154,7 +154,7 @@ static void DoBlocks(display, window)
 
      /* Construct the demo level filename */
Index: patches/patch-editor_c
===================================================================
RCS file: /cvs/ports/games/xboing/patches/patch-editor_c,v
retrieving revision 1.2
diff -u -p -r1.2 patch-editor_c
--- patches/patch-editor_c 6 Mar 2004 02:41:00 -0000 1.2
+++ patches/patch-editor_c 13 Feb 2021 00:30:05 -0000
@@ -1,6 +1,19 @@
 $OpenBSD: patch-editor_c,v 1.2 2004/03/06 02:41:00 naddy Exp $
---- editor.c.orig 1996-11-22 02:28:46.000000000 +0100
-+++ editor.c 2004-03-06 01:55:49.000000000 +0100
+
+now includes -fno-common fix, from FreeBSD
+
+Index: editor.c
+--- editor.c.orig
++++ editor.c
+@@ -121,7 +121,7 @@ void DoEditWait();
+ enum EditStates EditState;
+ enum EditStates oldEditState;
+ static int waitingFrame;
+-enum EditStates waitMode;
++extern enum EditStates waitMode;
+ static int oldWidth, oldHeight;
+ static int curBlockType;
+ static int drawAction = ED_NOP;
 @@ -213,7 +213,7 @@ static void DoLoadLevel(display, window)
 
      /* Construct the Edit level filename */
Index: patches/patch-highscore_c
===================================================================
RCS file: /cvs/ports/games/xboing/patches/patch-highscore_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-highscore_c
--- patches/patch-highscore_c 8 Jul 2011 11:42:09 -0000 1.1
+++ patches/patch-highscore_c 13 Feb 2021 00:30:05 -0000
@@ -1,6 +1,10 @@
 $OpenBSD: patch-highscore_c,v 1.1 2011/07/08 11:42:09 jasper Exp $
---- highscore.c.orig Fri Nov 22 02:28:46 1996
-+++ highscore.c Fri Jul  8 13:37:55 2011
+
+now includes -fno-common fix, from FreeBSD
+
+Index: highscore.c
+--- highscore.c.orig
++++ highscore.c
 @@ -55,6 +55,7 @@
  #include <time.h>
  #include <file.h>
@@ -18,6 +22,15 @@ $OpenBSD: patch-highscore_c,v 1.1 2011/0
  #else
  static int LockUnlock();
  static void DeleteScore();
+@@ -137,7 +138,7 @@ static int endFrame = 0;
+ enum HighScoreStates HighScoreState;
+ static Pixmap titlePixmap, titlePixmapM;
+ static int waitingFrame;
+-enum HighScoreStates waitMode;
++extern enum HighScoreStates waitMode;
+ static int sparkley = 0;
+ static int sindex = 0;
+ static int si = 0;
 @@ -844,7 +845,7 @@ int CheckAndAddScoreToHighScore(score, level, gameTime
 
  /* Lock the file for me only */
Index: patches/patch-inst_c
===================================================================
RCS file: patches/patch-inst_c
diff -N patches/patch-inst_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-inst_c 13 Feb 2021 00:30:05 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+fix -fno-common, from FreeBSD
+
+Index: inst.c
+--- inst.c.orig
++++ inst.c
+@@ -107,7 +107,7 @@ static int endFrame = 0;
+ static int nextFrame = 0;
+ enum InstructStates InstructState;
+ static int waitingFrame;
+-enum InstructStates waitMode;
++extern enum InstructStates waitMode;
+
+ #if NeedFunctionPrototypes
+ void SetUpInstructions(Display *display, Window window, Colormap colormap)
Index: patches/patch-intro_c
===================================================================
RCS file: patches/patch-intro_c
diff -N patches/patch-intro_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-intro_c 13 Feb 2021 00:30:05 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+fix -fno-common, from FreeBSD
+
+Index: intro.c
+--- intro.c.orig
++++ intro.c
+@@ -120,7 +120,7 @@ enum IntroStates IntroState;
+ Pixmap bigtitlePixmap, bigtitlePixmapM;
+ Pixmap stars[12], starsM[12];
+ static int waitingFrame;
+-enum IntroStates waitMode;
++extern enum IntroStates waitMode;
+
+ #if NeedFunctionPrototypes
+ void SetUpIntroduction(Display *display, Window window, Colormap colormap)
Index: patches/patch-keys_c
===================================================================
RCS file: patches/patch-keys_c
diff -N patches/patch-keys_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-keys_c 13 Feb 2021 00:30:05 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+fix -fno-common, from FreeBSD
+
+Index: keys.c
+--- keys.c.orig
++++ keys.c
+@@ -105,7 +105,7 @@ static int endFrame = 0;
+ static int startFrame = 0;
+ enum KeysStates KeysState;
+ static int waitingFrame;
+-enum KeysStates waitMode;
++extern enum KeysStates waitMode;
+ Pixmap mouse, leftarrow, rightarrow;
+ Pixmap mouseM, leftarrowM, rightarrowM;
+
Index: patches/patch-preview_c
===================================================================
RCS file: /cvs/ports/games/xboing/patches/patch-preview_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-preview_c
--- patches/patch-preview_c 6 Mar 2004 02:41:00 -0000 1.1
+++ patches/patch-preview_c 13 Feb 2021 00:30:05 -0000
@@ -1,6 +1,19 @@
 $OpenBSD: patch-preview_c,v 1.1 2004/03/06 02:41:00 naddy Exp $
---- preview.c.orig 2004-03-06 02:03:41.000000000 +0100
-+++ preview.c 2004-03-06 02:04:07.000000000 +0100
+
+now includes -fno-common fix, from FreeBSD
+
+Index: preview.c
+--- preview.c.orig
++++ preview.c
+@@ -102,7 +102,7 @@ void DoPreviewWait();
+
+ enum PreviewStates PreviewState;
+ static int waitingFrame;
+-enum PreviewStates waitMode;
++extern enum PreviewStates waitMode;
+
+ #if NeedFunctionPrototypes
+ void SetUpPreviewLevel(Display *display, Window window, Colormap colormap)
 @@ -139,7 +139,7 @@ static void DoLoadLevel(display, window)
 
      /* Construct the Preview level filename */

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

Stuart Henderson
On 2021/02/12 16:39, Ryan Freeman wrote:

>
> From FreeBSD, a bit hard to follow as their commit (re)touched the
> original patches
>
> https://svnweb.freebsd.org/ports?view=revision&revision=548113
>
> Once this builds, the game doesn't seem very playable.  Seems like
> it might be running /way/ too fast on modern systems.  Tried stock
> fvwm with no fancy stuff to see if compositing was problematic, no
> improvement.
>
> Does this work for anyone else?  Should it get booted?

naddy had a similar diff and same problem. Looking at the compiler
warnings it doesn't exactly seem LP64-clean (or, well, clean at all);
I wonder if it might do better on a 32-bit arch. That said,
there are alternatives like kbreakout / lbreakout2, I'd be OK with
just rm'ing.

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

Christian Weisgerber
In reply to this post by Ryan Freeman
Ryan Freeman:

> From FreeBSD, a bit hard to follow as their commit (re)touched the
> original patches
>
> Once this builds, the game doesn't seem very playable.

I already looked at this.  If you build it with -fcommon, it already
isn't playable.  That needs to be fixed first--or the port should
be removed.

This is a case where the no-common fix is not obvious.  If you look
at the code, the intent appears to have been to have local waitMode
variables in each module.  However, they are all merged into a
single common.

If you follow the likely intent, the different instances of waitMode
should be declared static.  However, it's entirely possible that
the game logic has come to rely on the accidental merging of the
variables.  So this needs testing... for which the game needs to
be playable in the first place.

--
Christian "naddy" Weisgerber                          [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

Christian Weisgerber
In reply to this post by Stuart Henderson
Stuart Henderson:

> naddy had a similar diff and same problem. Looking at the compiler
> warnings it doesn't exactly seem LP64-clean (or, well, clean at all);

Speaking in general terms:  A lot of the crufty X11 code in the
ports tree has a pattern where they use callback APIs that take a
pointer argument, and if they just want to pass an int, they cast
it to a pointer and back (instead of allocating an int and passing
a pointer to it).  That works out fine, no truncation, despite scary
compiler warnings.

IIRC we mostly cleaned up the actual LP64 problems years ago.

--
Christian "naddy" Weisgerber                          [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

Klemens Nanni-2
In reply to this post by Christian Weisgerber
On Sat, Feb 13, 2021 at 03:59:23PM +0100, Christian Weisgerber wrote:

> Ryan Freeman:
>
> > From FreeBSD, a bit hard to follow as their commit (re)touched the
> > original patches
> >
> > Once this builds, the game doesn't seem very playable.
>
> I already looked at this.  If you build it with -fcommon, it already
> isn't playable.  That needs to be fixed first--or the port should
> be removed.
>
> This is a case where the no-common fix is not obvious.  If you look
> at the code, the intent appears to have been to have local waitMode
> variables in each module.  However, they are all merged into a
> single common.
>
> If you follow the likely intent, the different instances of waitMode
> should be declared static.  However, it's entirely possible that
> the game logic has come to rely on the accidental merging of the
> variables.  So this needs testing... for which the game needs to
> be playable in the first place.
That makes me tend towards simply removing the port (as sthen suggests).

Fixing actually used ports is one thing but spending valuable porter's
time on life support for such cruft seems more like a burden to me.

OK kn to remove this, although I certainly do not object to fixing it
if someone wants to do the legwork -- it just seems unreasonable to me
(if done by people who only fix it "to fix the tree").

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

Christian Weisgerber
Klemens Nanni:

> OK kn to remove this, although I certainly do not object to fixing it
> if someone wants to do the legwork -- it just seems unreasonable to me
> (if done by people who only fix it "to fix the tree").

FWIW, the FreeBSD port is equally unplayable.

--
Christian "naddy" Weisgerber                          [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

Ryan Freeman
On Sun, Feb 14, 2021 at 05:23:17PM +0100, Christian Weisgerber wrote:

> Klemens Nanni:
>
> > OK kn to remove this, although I certainly do not object to fixing it
> > if someone wants to do the legwork -- it just seems unreasonable to me
> > (if done by people who only fix it "to fix the tree").
>
> FWIW, the FreeBSD port is equally unplayable.
>
> --
> Christian "naddy" Weisgerber                          [hidden email]
>

Based on various observations here, here is a diff to remove this, includes
unhook, quirks diff shortly


Index: Makefile
===================================================================
RCS file: /cvs/ports/games/Makefile,v
retrieving revision 1.434
diff -u -p -r1.434 Makefile
--- Makefile 8 Feb 2021 20:33:31 -0000 1.434
+++ Makefile 15 Feb 2021 00:06:52 -0000
@@ -341,7 +341,6 @@
      SUBDIR += xbl
      SUBDIR += xblast
      SUBDIR += xboard
-     SUBDIR += xboing
      SUBDIR += xbomber
      SUBDIR += xbreaky
      SUBDIR += xbubble
Index: xboing/Makefile
===================================================================
RCS file: xboing/Makefile
diff -N xboing/Makefile
--- xboing/Makefile 12 Jul 2019 20:46:27 -0000 1.31
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-# $OpenBSD: Makefile,v 1.31 2019/07/12 20:46:27 sthen Exp $
-
-COMMENT= blockout style game for X11
-
-V= 2.4
-DISTNAME= xboing${V}
-PKGNAME= xboing-${V}
-REVISION= 4
-
-CATEGORIES= games
-
-HOMEPAGE= http://www.techrescue.org/xboing/
-
-# X Consortium
-PERMIT_PACKAGE= Yes
-
-WANTLIB= X11 Xau Xdmcp Xext Xpm c m sndio
-
-MASTER_SITES= ${MASTER_SITE_XCONTRIB:=games/}
-
-CONFIGURE_STYLE=imake
-WRKDIST= ${WRKDIR}/xboing
-
-NO_TEST= Yes
-
-post-install:
- ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/xboing
- ${INSTALL_DATA} /dev/null ${PREFIX}/share/examples/xboing/xboing.score
-
-.include <bsd.port.mk>
Index: xboing/distinfo
===================================================================
RCS file: xboing/distinfo
diff -N xboing/distinfo
--- xboing/distinfo 18 Jan 2015 03:14:03 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,2 +0,0 @@
-SHA256 (xboing2.4.tar.gz) = ZwGcuMik2gsRd9zIvtBjr+O48YU7GDRdvB3qylHUopo=
-SIZE (xboing2.4.tar.gz) = 588811
Index: xboing/patches/patch-Imakefile
===================================================================
RCS file: xboing/patches/patch-Imakefile
diff -N xboing/patches/patch-Imakefile
--- xboing/patches/patch-Imakefile 25 Aug 2010 18:04:37 -0000 1.8
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,82 +0,0 @@
-$OpenBSD: patch-Imakefile,v 1.8 2010/08/25 18:04:37 jasper Exp $
---- Imakefile.orig Fri Nov 22 02:28:46 1996
-+++ Imakefile Wed Aug 25 20:02:50 2010
-@@ -24,23 +24,23 @@ XCOMM ================================================
- XCOMM This is the directory where the highscore, level & sound data will be
- XCOMM placed. Default will be the current directory.
-
--    XBOING_DIR = .
-+    XBOING_DIR = ${PREFIX}/share/xboing
-
- XCOMM These are some defines that must be set. Some may be overwritten in the
- XCOMM machine arch section.
-
--    XPMLIB = -L/usr/X11/lib -lXpm
--    XPMINCLUDE = -I/usr/X11/include/X11
-+    XPMLIB = -lXpm
-+    XPMINCLUDE = -I${X11BASE}/include/X11
-     XBOINGINCLUDE = -I./include
-     LEVEL_INSTALL_DIR = $(XBOING_DIR)/levels
-     SOUNDS_DIR = $(XBOING_DIR)/sounds
-     BACKUP_DIR = $(XBOING_DIR)/../backups
--    HIGH_SCORE_FILE = $(XBOING_DIR)/.xboing.scr
--    AUDIO_AVAILABLE = False
--    AUDIO_SRC = audio/NOaudio.c
-+    HIGH_SCORE_DIR = /var/games
-+    HIGH_SCORE_FILE = $(HIGH_SCORE_DIR)/xboing.score
-+    AUDIO_AVAILABLE = True
-+    AUDIO_SRC = audio/LINUXaudio.c
-     AUDIO_INCLUDE =
--    AUDIO_LIB =
-- CDEBUGFLAGS         = -g
-+    AUDIO_LIB = -lsndio
-
- XCOMM Uncomment this if you want to use ANY of the AUDIO sound systems
- #define COMPILE_IN_AUDIO    
-@@ -53,7 +53,7 @@ XCOMM #define USE_NETAUDIO
-
- XCOMM Below are the special defines for different machine archs.
-
--#if defined(HPArchitecture) && defined(COMPILE_IN_AUDIO)
-+#if defined(HPArchitecture) && defined(COMPILE_IN_AUDIO) && !defined(OpenBSDArchitecture)
-     AUDIO_AVAILABLE = True
-     AUDIO_SRC = audio/HPaudio.c
-     AUDIO_INCLUDE =
-@@ -74,14 +74,14 @@ XCOMM Below are the special defines for different mach
-     AUDIO_LIB           =
- #endif /* svr4 */  
-
--#if defined(SGIArchitecture) && defined(COMPILE_IN_AUDIO)
-+#if defined(SGIArchitecture) && defined(COMPILE_IN_AUDIO) && !defined(OpenBSDArchitecture)
-     AUDIO_AVAILABLE = True
-     AUDIO_SRC = audio/SGIaudio.c
-     AUDIO_INCLUDE =
-     AUDIO_LIB = -laudio
- #endif /* SGIArchitecture */
-
--#if defined(SparcArchitecture) && defined(COMPILE_IN_AUDIO)
-+#if defined(SparcArchitecture) && defined(COMPILE_IN_AUDIO) && !defined(OpenBSDArchitecture)
-     AUDIO_AVAILABLE = True
-     AUDIO_SRC = audio/SUNaudio.c
-
-@@ -132,8 +132,8 @@ XCOMM hasn't a usleep() function.
-         -DLEVEL_INSTALL_DIR=\"$(LEVEL_INSTALL_DIR)\" \
-         -DAUDIO_AVAILABLE=\"$(AUDIO_AVAILABLE)\" \
-         -DSOUNDS_DIR=\"$(SOUNDS_DIR)\" \
--        -DREADMEP_FILE=\"$(XBOING_DIR)/docs/problems.doc\"
--XCOMM   -DUSE_FLOCK=\"True\" \
-+        -DREADMEP_FILE=\"$(XBOING_DIR)/problems.doc\" \
-+        -DUSE_FLOCK=\"True\"
- XCOMM   -DNEED_USLEEP=\"True\" \
- XCOMM   -DNO_LOCKING=\"True\"
-
-@@ -203,9 +203,6 @@ install:: $(PROGRAMS)
- done; \
- fi
- @:
-- @echo "Creating a highscore file " $(HIGH_SCORE_FILE)
-- @touch $(HIGH_SCORE_FILE);
-- @chmod a+rw $(HIGH_SCORE_FILE);
-
- XCOMM I use this for my daily backup of my code.
-
Index: xboing/patches/patch-audio_LINUXaudio_c
===================================================================
RCS file: xboing/patches/patch-audio_LINUXaudio_c
diff -N xboing/patches/patch-audio_LINUXaudio_c
--- xboing/patches/patch-audio_LINUXaudio_c 8 Jul 2011 11:42:09 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,128 +0,0 @@
-$OpenBSD: patch-audio_LINUXaudio_c,v 1.1 2011/07/08 11:42:09 jasper Exp $
---- audio/LINUXaudio.c.orig Fri Nov 22 02:28:33 1996
-+++ audio/LINUXaudio.c Fri Jul  8 13:37:55 2011
-@@ -52,11 +52,13 @@
-  *  Include file dependencies:
-  */
-
-+#include <fcntl.h>
- #include <unistd.h>
- #include <stdio.h>
--#include <fcntl.h>
--#include <linux/soundcard.h>
-+#include <sndio.h>
-
-+#include "include/ulaw.h"
-+
- #include "include/error.h"
- #include "include/audio.h"
-
-@@ -77,10 +79,11 @@ static int snd_pipes[2];
-  *  Internal variable declarations:
-  */
-
--static char *Audio_dev = "/dev/audio";
--static int Audio_fd;
-+static struct sio_hdl *hdl;
-+
- /* size should depend on sample_rate */
- static unsigned char   buf[BUFFER_SIZE];      
-+static short   linBuf[BUFFER_SIZE];
- static char errorString[255];
-
- #if NeedFunctionPrototypes
-@@ -90,7 +93,9 @@ int SetUpAudioSystem(display)
- Display *display;
- #endif
- {
-- int err, cnt;
-+ struct sio_par par;
-+ int i,err, cnt;
-+ uint32_t pos = 0;
-      
-
- if (child_pid == 0)
-@@ -124,17 +129,30 @@ int SetUpAudioSystem(display)
-
-                   if (!strcmp(string, "EXIT"))
-             {
--                     /* Make sure that the audio device is flushed and reset */
--             ioctl(Audio_fd, SNDCTL_DSP_RESET, 0);
--
-     exit(0);
-             }
-
-          /* Try to open the audio device */
--          if (!(Audio_fd = open(Audio_dev, O_WRONLY)))
-+          if (!(hdl = sio_open(NULL, SIO_PLAY, 0)))
-            {
-+fprintf(stderr, "sio_open failed\n");
-         continue;
-            }
-+  sio_initpar(&par);
-+  par.bits = 16;
-+  par.sig = 1;
-+  par.rate = 8000;
-+  par.le = SIO_LE_NATIVE;
-+  if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) {
-+ sprintf(errorString, "Unable to configure sndio device.");
-+                        WarningMessage(errorString);
-+ continue;
-+  }
-+  if (!sio_start(hdl)) {
-+ sprintf(errorString, "Unable to start sndio device.");
-+                        WarningMessage(errorString);
-+ continue;
-+                  }
-
- /* Must be a sound file name */
-   if (str != NULL)
-@@ -151,13 +169,28 @@ int SetUpAudioSystem(display)
-
-                 }
-
-+ /* skip the header, if present */
-+ if (read(ifd, (char *)buf, 4) == 4) {
-+ if (!strncmp(buf, ".snd", 4)) {
-+ if (read(ifd, &pos, sizeof(pos)) == sizeof(pos)) {
-+ pos = ntohl(pos);
-+ }
-+ }
-+ }
-+ lseek(ifd, (off_t)pos, SEEK_SET);
-+
-                 /* At this point, we're all ready to copy the data. */
--                while ((cnt = read(ifd, (char *) buf, BUFFER_SIZE)) >= 0)
-+                while ((cnt = read(ifd, (char *) buf, BUFFER_SIZE)) > 0)
-                 {
-+ /* Now do the ulaw stuff to the raw data */
-+ for(i = 0; i < cnt; i++)
-+ {
-+     linBuf[i] = UlToLin(buf[i]);
-+ }
-                         /* If input EOF, write an eof marker */
--                        err = write(Audio_fd, (char *)buf, cnt);
-+                        err = sio_write(hdl, (char *)linBuf, cnt * 2);
-
--                        if (err != cnt)
-+                        if (err != cnt * 2)
-                         {
-                                 sprintf(errorString, "Problem while writing to sound device");
-                                 WarningMessage(errorString);
-@@ -176,15 +209,9 @@ int SetUpAudioSystem(display)
-                 }
-        
-
-- /* Flush any audio activity */
-- if (ioctl(Audio_fd, SNDCTL_DSP_SYNC, 0) < 0)
--       {
--       sprintf(errorString, "Unable to flush audio device.");
--       WarningMessage(errorString);
--       }
-                 /* Close the sound file */
-                 (void) close(ifd);
-- (void) close(Audio_fd);
-+ sio_close(hdl);
-              } while (True);
-           }
-        
Index: xboing/patches/patch-ball_c
===================================================================
RCS file: xboing/patches/patch-ball_c
diff -N xboing/patches/patch-ball_c
--- xboing/patches/patch-ball_c 8 Jul 2011 11:42:09 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-$OpenBSD: patch-ball_c,v 1.1 2011/07/08 11:42:09 jasper Exp $
---- ball.c.orig Fri Nov 22 02:28:46 1996
-+++ ball.c Fri Jul  8 13:37:55 2011
-@@ -50,7 +50,6 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
--#include <values.h>
- #include <xpm.h>
- #include <X11/Xos.h>
-
Index: xboing/patches/patch-bonus_c
===================================================================
RCS file: xboing/patches/patch-bonus_c
diff -N xboing/patches/patch-bonus_c
--- xboing/patches/patch-bonus_c 8 Jul 2011 11:42:09 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,111 +0,0 @@
-$OpenBSD: patch-bonus_c,v 1.1 2011/07/08 11:42:09 jasper Exp $
---- bonus.c.orig Fri Nov 22 02:28:46 1996
-+++ bonus.c Fri Jul  8 13:37:55 2011
-@@ -311,7 +311,7 @@ void DrawTitleText(display, window)
- XFlush(display);
-
- SetBonusWait(BONUS_SCORE, frame + 5);
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- DEBUG("set bonus mode to BONUS_SCORE.")
- }
-@@ -326,7 +326,7 @@ static void DoScore(display, window)
- {
- DEBUG("in function DoScore() in bonus.c")
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Nice message rewarding you for your efforts */
- strcpy(string, "Congratulations on finishing this level.");
-@@ -336,7 +336,7 @@ static void DoScore(display, window)
-
- ypos += (35 + GAP);
- SetBonusWait(BONUS_BONUS, frame + LINE_DELAY);
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
- DEBUG("set bonus mode to BONUS_BONUS.")
- }
-
-@@ -387,7 +387,7 @@ static void DoBonuses(display, window)
- DrawShadowCentredText(display, window, textFont,
- string, ypos, blue, TOTAL_WIDTH);
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Now skip to the next sequence */
- SetBonusWait(BONUS_LEVEL, frame + LINE_DELAY);
-@@ -411,7 +411,7 @@ static void DoBonuses(display, window)
- bonusScore += ComputeScore(SUPER_BONUS_SCORE);
- DisplayScore(display, scoreWindow, bonusScore);
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Now skip to the next sequence */
- SetBonusWait(BONUS_LEVEL, frame + LINE_DELAY);
-@@ -454,7 +454,7 @@ static void DoBonuses(display, window)
- ypos += (int) (textFont->ascent + GAP * 1.5);
- firstTime = True;
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
- }
- }
-
-@@ -468,7 +468,7 @@ static void DoLevel(display, window)
- {
- int secs, theLevel;
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Get the number of seconds left on the clock */
- secs = GetLevelTimeBonus();
-@@ -533,7 +533,7 @@ static void DoBullets(display, window)
- /* Play the sound for the super bonus */
- if (noSound == False) playSoundFile("Doh3", 80);
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Get ready for the next sequence */
- SetBonusWait(BONUS_TIME, frame + LINE_DELAY);
-@@ -569,7 +569,7 @@ static void DoBullets(display, window)
- SetBonusWait(BONUS_TIME, frame + LINE_DELAY);
- ypos += (textFont->ascent + GAP/2);
- firstTime = True;
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
- }
- }
-
-@@ -583,7 +583,7 @@ static void DoTimeBonus(display, window)
- {
- int secs = 0;
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Get the number of seconds left on the clock */
- secs = GetLevelTimeBonus();
-@@ -627,7 +627,7 @@ static void DoHighScore(display, window)
- int myrank = 0;
- char str[5];
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Obtain current ranking for this score */
- myrank = GetHighScoreRanking(score);
-@@ -680,7 +680,7 @@ static void DoEndText(display, window)
- {
- DEBUG("DoEndText in bonus screen.")
-
-- SetGameSpeed(SLOW_SPEED);
-+ SetGameSpeed(MEDIUM_SPEED);
-
- /* Finishing sentence - so you know what level to do */
- sprintf(string, "Prepare for level %ld", level+1);
Index: xboing/patches/patch-demo_c
===================================================================
RCS file: xboing/patches/patch-demo_c
diff -N xboing/patches/patch-demo_c
--- xboing/patches/patch-demo_c 6 Mar 2004 02:41:00 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-demo_c,v 1.1 2004/03/06 02:41:00 naddy Exp $
---- demo.c.orig 2004-03-06 01:50:10.000000000 +0100
-+++ demo.c 2004-03-06 01:51:28.000000000 +0100
-@@ -154,7 +154,7 @@ static void DoBlocks(display, window)
-
-     /* Construct the demo level filename */
-     if ((str = getenv("XBOING_LEVELS_DIR")) != NULL)
--        sprintf(levelPath, "%s/demo.data", str);
-+        snprintf(levelPath, sizeof(levelPath), "%s/demo.data", str);
-     else
-         sprintf(levelPath, "%s/demo.data", LEVEL_INSTALL_DIR);
-
Index: xboing/patches/patch-editor_c
===================================================================
RCS file: xboing/patches/patch-editor_c
diff -N xboing/patches/patch-editor_c
--- xboing/patches/patch-editor_c 6 Mar 2004 02:41:00 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,55 +0,0 @@
-$OpenBSD: patch-editor_c,v 1.2 2004/03/06 02:41:00 naddy Exp $
---- editor.c.orig 1996-11-22 02:28:46.000000000 +0100
-+++ editor.c 2004-03-06 01:55:49.000000000 +0100
-@@ -213,7 +213,7 @@ static void DoLoadLevel(display, window)
-
-     /* Construct the Edit level filename */
-     if ((str = getenv("XBOING_LEVELS_DIR")) != NULL)
--        sprintf(levelPath, "%s/editor.data", str);
-+        snprintf(levelPath, sizeof(levelPath), "%s/editor.data", str);
-     else
-         sprintf(levelPath, "%s/editor.data", LEVEL_INSTALL_DIR);
-
-@@ -652,9 +652,15 @@ static void SetupPlayTest(display)
-     Display *display;
- #endif
- {
-+ int fd;
-+
- EditState = EDIT_TEST;
-
-- strcpy(tempName, tempnam("/tmp", "xboing-"));
-+ sprintf(tempName, "/tmp/xboing-XXXXXXXXXX");
-+ if ((fd = mkstemp(tempName)) < 0)
-+  ShutDown(display, 1, "Sorry, cannot save test play level.");
-+
-+ close(fd);
-   if (SaveLevelDataFile(display, tempName) == False)
-     ShutDown(display, 1, "Sorry, cannot save test play level.");
-
-@@ -957,9 +963,9 @@ static void LoadALevel(display)
-     num = atoi(str);
-     if ((num > 0) && (num <= MAX_NUM_LEVELS))
-     {
--    /* Construct the Edit level filename */
--   if ((str2 = getenv("XBOING_LEVELS_DIR")) != NULL)
--         sprintf(levelPath, "%s/level%02ld.data", str2, (u_long) num);
-+ /* Construct the Edit level filename */
-+   if ((str2 = getenv("XBOING_LEVELS_DIR")) != NULL)
-+         snprintf(levelPath, sizeof(levelPath), "%s/level%02ld.data", str2, (u_long) num);
-     else
-         sprintf(levelPath, "%s/level%02ld.data",
- LEVEL_INSTALL_DIR, (u_long) num);
-@@ -1017,9 +1023,9 @@ static void SaveALevel(display)
-     num = atoi(str);
-     if ((num > 0) && (num <= MAX_NUM_LEVELS))
-     {
--    /* Construct the Edit level filename */
--   if ((str2 = getenv("XBOING_LEVELS_DIR")) != NULL)
--         sprintf(levelPath, "%s/level%02ld.data", str2, (u_long) num);
-+ /* Construct the Edit level filename */
-+   if ((str2 = getenv("XBOING_LEVELS_DIR")) != NULL)
-+         snprintf(levelPath, sizeof(levelPath), "%s/level%02ld.data", str2, (u_long) num);
-     else
-         sprintf(levelPath, "%s/level%02ld.data",
- LEVEL_INSTALL_DIR, (u_long) num);
Index: xboing/patches/patch-file_c
===================================================================
RCS file: xboing/patches/patch-file_c
diff -N xboing/patches/patch-file_c
--- xboing/patches/patch-file_c 6 Mar 2004 02:41:00 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,48 +0,0 @@
-$OpenBSD: patch-file_c,v 1.1 2004/03/06 02:41:00 naddy Exp $
---- file.c.orig 2004-03-06 01:56:25.000000000 +0100
-+++ file.c 2004-03-06 01:58:32.000000000 +0100
-@@ -139,7 +139,7 @@ void SetupStage(display, window)
-
-     /* Construct the level filename */
-     if ((str = getenv("XBOING_LEVELS_DIR")) != NULL)
--        sprintf(levelPath, "%s/level%02ld.data", str, newLevel);
-+        sprintf(levelPath, sizeof(levelPath), "%s/level%02ld.data", str, newLevel);
-     else
-         sprintf(levelPath, "%s/level%02ld.data", LEVEL_INSTALL_DIR, newLevel);
-
-@@ -177,7 +177,7 @@ int LoadSavedGame(display, window)
-     static int bgrnd = 1;
-
- /* Save the file in home directory - construct path */
-- sprintf(levelPath, "%s/.xboing-saveinfo", GetHomeDir());
-+ snprintf(levelPath, sizeof(levelPath), "%s/.xboing-saveinfo", GetHomeDir());
-
-     /* Open the save file info for reading */
-     if ((saveFile = fopen(levelPath, "r+")) == NULL)
-@@ -239,7 +239,7 @@ int LoadSavedGame(display, window)
-     DisplayLevelInfo(display, levelWindow, level);
-
- /* Load the saved file in home directory - construct path */
-- sprintf(levelPath, "%s/.xboing-savelevel", GetHomeDir());
-+ snprintf(levelPath, sizeof(levelPath), "%s/.xboing-savelevel", GetHomeDir());
-
- /* Read in the saved level data */
-     if (ReadNextLevel(display, window, levelPath, True) == False)
-@@ -283,7 +283,7 @@ int SaveCurrentGame(display, window)
- saveGame.numBullets = GetNumberBullets();
-
- /* Save the file in home directory - construct path */
-- sprintf(levelPath, "%s/.xboing-saveinfo", GetHomeDir());
-+ snprintf(levelPath, sizeof(levelPath), "%s/.xboing-saveinfo", GetHomeDir());
-
-     /* Open the save file info for writing */
-     if ((saveFile = fopen(levelPath, "w+")) == NULL)
-@@ -309,7 +309,7 @@ int SaveCurrentGame(display, window)
-     WarningMessage("Cannot close save game info file.");
-
- /* Save the file in home directory - construct path */
-- sprintf(levelPath, "%s/.xboing-savelevel", GetHomeDir());
-+ snprintf(levelPath, sizeof(levelPath), "%s/.xboing-savelevel", GetHomeDir());
-
- if (SaveLevelDataFile(display, levelPath) == True)
- {
Index: xboing/patches/patch-highscore_c
===================================================================
RCS file: xboing/patches/patch-highscore_c
diff -N xboing/patches/patch-highscore_c
--- xboing/patches/patch-highscore_c 8 Jul 2011 11:42:09 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,100 +0,0 @@
-$OpenBSD: patch-highscore_c,v 1.1 2011/07/08 11:42:09 jasper Exp $
---- highscore.c.orig Fri Nov 22 02:28:46 1996
-+++ highscore.c Fri Jul  8 13:37:55 2011
-@@ -55,6 +55,7 @@
- #include <time.h>
- #include <file.h>
- #include <sys/param.h>
-+#include <sys/stat.h>
- #include <X11/Xlib.h>
- #include <X11/Xutil.h>
- #include <X11/Xos.h>
-@@ -119,7 +120,7 @@ static void SetHighScoreWait(enum HighScoreStates newM
- static void InitialiseHighScores(void);
- static void SortHighScores(void);
- static void DeleteScore(int i);
--static int LockUnlock(int cmd);
-+static int LockUnlock(int cmd, int fd);
- #else
- static int LockUnlock();
- static void DeleteScore();
-@@ -844,7 +845,7 @@ int CheckAndAddScoreToHighScore(score, level, gameTime
-
- /* Lock the file for me only */
- if (type == GLOBAL)
-- id = LockUnlock(LOCK_FILE);
-+ id = LockUnlock(LOCK_FILE, -1);
-
- /* Read in the lastest scores */
- if (ReadHighScoreTable(type) == False)
-@@ -875,8 +876,8 @@ int CheckAndAddScoreToHighScore(score, level, gameTime
- {
- /* Don't add as score is smaller */
- if (id != -1)
-- id = LockUnlock(UNLOCK_FILE);
-- return False;
-+ id = LockUnlock(UNLOCK_FILE, id);
-+ goto doUnlock;
- }
- }
- } /* for */
-@@ -898,16 +899,17 @@ int CheckAndAddScoreToHighScore(score, level, gameTime
-
- /* Unlock the file now thanks */
- if (id != -1)
-- id = LockUnlock(UNLOCK_FILE);
-+ id = LockUnlock(UNLOCK_FILE, id);
-
- /* Yes - it was placed in the highscore */
- return True;
- }
- }
-
-+doUnlock:
- /* Unlock the file now thanks */
- if (id != -1)
-- id = LockUnlock(UNLOCK_FILE);
-+ id = LockUnlock(UNLOCK_FILE, id);
-
- /* Not even a highscore - loser! */
- return False;
-@@ -1023,7 +1025,7 @@ int ReadHighScoreTable(type)
- {
- /* Use the environment variable if it exists */
- if ((str = getenv("XBOING_SCORE_FILE")) != NULL)
-- strcpy(filename, str);
-+ strlcpy(filename, str, sizeof(filename));
- else
- strcpy(filename, HIGH_SCORE_FILE);
- }
-@@ -1185,10 +1187,10 @@ void ResetHighScore(type)
- }
-
- #if NeedFunctionPrototypes
--static int LockUnlock(int cmd)
-+static int LockUnlock(int cmd, int fd)
- #else
- static int LockUnlock(cmd)
-- int cmd;
-+ int cmd, fd;
- #endif
- {
- static int inter = -1;
-@@ -1218,13 +1220,16 @@ static int LockUnlock(cmd)
-
- /* Use the environment variable if it exists */
- if ((str = getenv("XBOING_SCORE_FILE")) != NULL)
-- strcpy(filename, str);
-+ strlcpy(filename, str, sizeof(filename));
- else
- strcpy(filename, HIGH_SCORE_FILE);
-
- /* Open the highscore file for both read & write */
- if (cmd == LOCK_FILE)
- inter = open(filename, O_CREAT | O_RDWR, 0666);
-+ else
-+ /* use old fd to unlock */
-+ inter = fd;
-
- #ifndef NO_LOCKING
-
Index: xboing/patches/patch-init_c
===================================================================
RCS file: xboing/patches/patch-init_c
diff -N xboing/patches/patch-init_c
--- xboing/patches/patch-init_c 4 Jan 2010 11:21:21 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,55 +0,0 @@
-$OpenBSD: patch-init_c,v 1.3 2010/01/04 11:21:21 sthen Exp $
---- init.c.orig Fri Nov 22 01:28:46 1996
-+++ init.c Sun Jan  3 11:07:53 2010
-@@ -438,7 +438,7 @@ static void HandleDisplayErrors(displayName)
- WarningMessage("Your X Window system display variable is not set.");
- else
- {
-- sprintf(string, "Cannot connect to display called <%s>.", displayName);
-+ snprintf(string, sizeof(string), "Cannot connect to display called <%s>.", displayName);
- WarningMessage(string);
- }
- }
-@@ -474,7 +474,7 @@ static void PrintUsage()
- "              [-speed <1-9>] [-scores] [-keys] [-sound] [-setup]",
- " [-nosfx]",
- "              [-grab] [-maxvol <1-100>] [-startlevel <1-MAX>]",
-- " [-usedefcmap]",
-+ " [-no-usedefcmap]",
- "              [-nickname <name>] [-noicon]");
-
- /* Exit now */
-@@ -551,7 +551,7 @@ static void PrintHelp()
-         "    -setup                  - Print setup information.\n",
-         "    -nosfx                  - Do not use some special effects.\n",
-         "    -grab                   - Turn ON pointer grab.\n",
--        "    -usedefcmap             - Use the default colourmap.\n",
-+        "    -no-usedefcmap          - Don't use the default colourmap.\n",
- "    -nickname <name>        - Use nickname instead of real name.\n",
-         "    -noicon                 - Do not create a custom icon.\n",
-         "    -display <display>      - Set the display for the game.\n");
-@@ -599,7 +599,7 @@ static void InitialiseSettings()
- syncOn = False;
- debug = False;
- grabPointer = False;
-- useDefaultColourmap = False;
-+ useDefaultColourmap = True;
-
- /* This will force the use of the users real name */
- SetNickName("");
-@@ -744,12 +744,12 @@ static void ParseCommandLine(argv, argc)
- SetNickName(argv[i]);
- } else PrintUsage();
-
-- } else if (!compareArgument(argv[i], "-usedefcmap", 10))
-+ } else if (!compareArgument(argv[i], "-no-usedefcmap", 10))
- {
- /* Try to use the default colourmap */
-- useDefaultColourmap = True;
-+ useDefaultColourmap = False;
-
-- DEBUG("Using default colourmap please.")
-+ DEBUG("Not using default colourmap.")
-
- } else if (!compareArgument(argv[i], "-speed", 5))
- {
Index: xboing/patches/patch-main_c
===================================================================
RCS file: xboing/patches/patch-main_c
diff -N xboing/patches/patch-main_c
--- xboing/patches/patch-main_c 5 Mar 2004 22:56:42 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-main_c,v 1.1 2004/03/05 22:56:42 naddy Exp $
---- main.c.orig 1996-11-22 02:28:46.000000000 +0100
-+++ main.c 2004-03-05 23:30:39.000000000 +0100
-@@ -156,7 +156,7 @@ void SetUserSpeed(delay)
-
- /* Set an entire game speedup or slowdown speed */
- temp = (speed / (long) userDelay);
-- userDelay = delay;
-+ userDelay = delay/2 + 3;
- speed = (long) (temp * userDelay);
- speedLevel = 10 - delay;
- }
Index: xboing/patches/patch-misc_c
===================================================================
RCS file: xboing/patches/patch-misc_c
diff -N xboing/patches/patch-misc_c
--- xboing/patches/patch-misc_c 6 Mar 2004 02:41:00 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,202 +0,0 @@
-$OpenBSD: patch-misc_c,v 1.2 2004/03/06 02:41:00 naddy Exp $
---- misc.c.orig 1996-11-22 02:28:46.000000000 +0100
-+++ misc.c 2004-03-06 02:03:24.000000000 +0100
-@@ -89,8 +89,8 @@ void usleep(usec)
- #ifdef SYSV
- #ifdef __clipper__
-     struct timeval tv;
--    tv.tv_sec=((usec)/1000);
--    tv.tv_usec=(((usec)%1000)*1000);
-+    tv.tv_sec=((usec)/1000000);
-+    tv.tv_usec=((usec)%1000000);
-     select(1,NULL,NULL,NULL,&tv);
- #else
-     poll((struct poll *) 0, (size_t) 0, usec / 1000);   /* ms resolution */
-@@ -105,6 +105,68 @@ void usleep(usec)
- #endif
-
- #if NeedFunctionPrototypes
-+static int kudelay(unsigned long count)
-+#else
-+static int kudelay(count)
-+unsigned long count;
-+#endif
-+{
-+    unsigned int bluff = 1;
-+
-+    while( count-- != 0 ) /* this can hardly be "optimised out" */
-+ bluff = (bluff ^ ((bluff & 1) * 0x6110)) >> 1;
-+
-+    return( bluff );
-+}
-+
-+#if NeedFunctionPrototypes
-+static void kusleep(unsigned long usec)
-+#else
-+static void kusleep(usec)
-+        unsigned long usec;
-+#endif
-+{
-+    static float kuliber_time = 0.0;
-+    static float kuliber_count = 0.0;
-+    static unsigned long kutimerswap = (1000000 / 15);
-+    struct timeval st, et;
-+    long gap;
-+    unsigned long count;
-+
-+    if( kuliber_time == 0.0 )
-+    {
-+ count = 0x1000; /* calibrate delay loop */
-+ gettimeofday(&st, NULL);
-+
-+ while( True )
-+ {
-+    kudelay( count );
-+    count = (count << 1);
-+    gettimeofday(&et, NULL);
-+    gap = (((et.tv_sec - st.tv_sec) * 1000000) +
-+ (et.tv_usec - st.tv_usec) );
-+
-+    if( gap > 400*1000 )
-+ break;
-+ }
-+
-+ kuliber_time = (float)(gap/4);
-+ kuliber_count = (float)(((count-1)&~0xFFF)>>2);
-+    }
-+
-+    if( usec > kutimerswap )
-+    {
-+ kutimerswap = (1000000 / 30);
-+ usleep( usec ); /* using usleep() for low resolution only */
-+    }
-+    else
-+    {
-+ kutimerswap = (1000000 / 15);
-+ kudelay( (unsigned long)(kuliber_count*((float)usec/kuliber_time)) );
-+    }
-+}
-+
-+#if NeedFunctionPrototypes
- void sleepSync(Display *display, unsigned long ms)
- #else
- void sleepSync(display, ms)
-@@ -112,27 +174,85 @@ void sleepSync(display, ms)
-     unsigned long ms;
- #endif
- {
--    struct timeval st, et;
--    long SyncTime;
--    static unsigned long accu;
-+    static long Expected_time = 0;
-+    static long Ref_sec = 0;
-+    static long Ref_usec = 0;
-+    static long Sleeping_time = 0;
-+    static int PLL_filter = 0;
-+    struct timeval st;
-+    long elapsed;
-+    long dodelay;
-+    float x;
-
--    gettimeofday(&st, NULL);
-     XSync(display, False);
--    gettimeofday(&et, NULL);
-
--    SyncTime = (((et.tv_sec - st.tv_sec) * 1000) +
--               ((et.tv_usec - st.tv_usec) / 1000) );
-+    gettimeofday(&st, NULL);
-
--/*    if ((ms) > ((1000 / 60) + SyncTime))
--        usleep(ms - SyncTime);
--*/
--    if ((ms + accu) > ((1000 / 30) + SyncTime))
-+    if( Ref_sec == 0 )
-     {
--        usleep(ms +accu - SyncTime);
--        accu = 0;
-+ Ref_sec = st.tv_sec; /* take the initial reference point */
-+ Ref_usec = st.tv_usec;
-+ Sleeping_time = ms * 1000;
-     }
--    else if (ms > SyncTime)
--       accu += (ms - SyncTime);
-+
-+    elapsed = (st.tv_sec - Ref_sec) * 1000000 + (st.tv_usec - Ref_usec);
-+    dodelay = Sleeping_time;
-+
-+    if( PLL_filter > 0 && elapsed != 0 ) /* Phase lock loop */
-+    {
-+ dodelay = Expected_time + Sleeping_time - elapsed;
-+
-+ if( dodelay < 0 )
-+ {
-+    dodelay = 0; PLL_filter--;
-+ }
-+ else
-+    if( dodelay > 2*Sleeping_time )
-+    {
-+ dodelay = 2*Sleeping_time; PLL_filter--;
-+    }
-+    else
-+ PLL_filter = 3;
-+
-+ if( elapsed > 40*Sleeping_time && Expected_time > 40*Sleeping_time )
-+ {
-+    elapsed -= 20*Sleeping_time; /* Ref. point shouldn't be far away*/
-+    Expected_time -= 20*Sleeping_time;
-+    Ref_usec += 20*Sleeping_time;
-+    Ref_sec += Ref_usec/1000000; Ref_usec %= 1000000;
-+ }
-+    }
-+
-+    if( PLL_filter <= 0 && elapsed > 40000 ) /* Frequency lock loop */
-+    {
-+ /* feedback filter */
-+ x = 0.5 + 0.5 * (float)Expected_time / (float)elapsed;
-+
-+ if( x < 0.966 ) /* Acceleration must be strongly limited */
-+    x = 0.966;
-+
-+ if( x > 2.0 )
-+    x = 2.0;
-+
-+ Sleeping_time = (long)((float)Sleeping_time * x);
-+
-+ if( Sleeping_time < 500 )
-+    Sleeping_time = 500;
-+
-+ if( x > 0.99 && x < 1.01 && Sleeping_time > ms*500 )
-+    PLL_filter = -1 - 4*PLL_filter; /* locked - it's time to try PLL */
-+ else
-+    PLL_filter = 0;
-+
-+ Ref_sec = st.tv_sec;
-+ Ref_usec = st.tv_usec;
-+ Expected_time = 0;
-+ dodelay = Sleeping_time;
-+    }
-+
-+    kusleep( dodelay );
-+
-+    Expected_time += ms * 1000;
- }
-
- #if NeedFunctionPrototypes
-@@ -427,7 +547,7 @@ char *GetHomeDir()
-      */
-
-     if ((ptr = getenv("HOME")) != NULL)
--        (void) strcpy(dest, ptr);
-+        (void) strlcpy(dest, ptr, sizeof(dest));
-     else
-     {
-         /* HOME variable is not present so get USER var */
-@@ -441,7 +561,7 @@ char *GetHomeDir()
-         }
-
-         if (pw)
--            (void) strcpy(dest, pw->pw_dir);
-+            (void) strlcpy(dest, pw->pw_dir, sizeof(dest));
-         else
-             *dest = '\0';
-     }
Index: xboing/patches/patch-presents_c
===================================================================
RCS file: xboing/patches/patch-presents_c
diff -N xboing/patches/patch-presents_c
--- xboing/patches/patch-presents_c 7 Dec 2007 10:25:46 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,153 +0,0 @@
-$OpenBSD: patch-presents_c,v 1.2 2007/12/07 10:25:46 ajacoutot Exp $
---- presents.c.orig Fri Nov 22 02:28:46 1996
-+++ presents.c Fri Dec  7 09:53:24 2007
-@@ -287,7 +287,7 @@ void DoPresentFlag(display, window)
- }
- #endif
-
-- SetPresentWait(PRESENT_TEXT1, frame + 800);
-+ SetPresentWait(PRESENT_TEXT1, frame + 200);
- }
-
- #if NeedFunctionPrototypes
-@@ -309,7 +309,7 @@ static void DoText1(display, window)
- RenderShape(display, window, justin, justinM,
- x, y, 285, 44, True);
-
-- SetPresentWait(PRESENT_TEXT2, frame + 300);
-+ SetPresentWait(PRESENT_TEXT2, frame + 100);
- }
-
- #if NeedFunctionPrototypes
-@@ -331,7 +331,7 @@ static void DoText2(display, window)
- RenderShape(display, window, kibell, kibellM,
- x, y, 260, 40, True);
-
-- SetPresentWait(PRESENT_TEXT3, frame + 500);
-+ SetPresentWait(PRESENT_TEXT3, frame + 200);
- }
-
- #if NeedFunctionPrototypes
-@@ -355,7 +355,7 @@ static void DoText3(display, window)
- RenderShape(display, window, presents, presentsM,
- x, y, 410, 44, True);
-
-- SetPresentWait(PRESENT_TEXT_CLEAR, frame + 750);
-+ SetPresentWait(PRESENT_TEXT_CLEAR, frame + 250);
- }
-
- #if NeedFunctionPrototypes
-@@ -375,7 +375,7 @@ static void DoTextClear(display, window)
-
- FadeAwayArea(display, window, x, y, 410, 44);
-
-- SetPresentWait(PRESENT_LETTERS, frame + 10);
-+ SetPresentWait(PRESENT_LETTERS, frame + 5);
- }
-
- /* The distances for the gap inbetwen blocks */
-@@ -404,7 +404,7 @@ static void DoLetters(display, window)
- DrawLetter(display, window, i, x, y);
- x += 10 + dists[i];
-
-- SetPresentWait(PRESENT_LETTERS, frame + 300);
-+ SetPresentWait(PRESENT_LETTERS, frame + 100);
- }
- else
- {
-@@ -416,7 +416,7 @@ static void DoLetters(display, window)
- x += dists[3];
- DrawLetter(display, window, 3, x, y);
-
-- SetPresentWait(PRESENT_SHINE, frame + 200);
-+ SetPresentWait(PRESENT_SHINE, frame + 100);
- }
-
- i++;
-@@ -463,7 +463,7 @@ static void DoSparkle(display, window)
-         if (in == 11)
-         {
-             XCopyArea(display, store, window, gc, 0, 0, 20, 20, x, y);
-- SetPresentWait(PRESENT_SPECIAL_TEXT1, frame + 500);
-+ SetPresentWait(PRESENT_SPECIAL_TEXT1, frame + 100);
-         }
-     }
- }
-@@ -499,7 +499,7 @@ static void DoSpecialText1(display, window)
- len = strlen(wisdom);
- x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) -
- (XTextWidth(dataFont, wisdom, len) / 2);
-- nextFrame = frame + 10;
-+ nextFrame = frame + 5;
- first = False;
- }
-
-@@ -508,11 +508,11 @@ static void DoSpecialText1(display, window)
- if (noSound == False) playSoundFile("key", 60);
- DrawText(display, window, x, y, dataFont, red, wisdom, i);
-
-- nextFrame = frame + 30;
-+ nextFrame = frame + 15;
-
- i++;
- if (i > len)
-- SetPresentWait(PRESENT_SPECIAL_TEXT2, frame + 700);
-+ SetPresentWait(PRESENT_SPECIAL_TEXT2, frame + 150);
- }
- }
-
-@@ -542,7 +542,7 @@ static void DoSpecialText2(display, window)
- len = strlen(wisdom2);
- x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) -
- (XTextWidth(dataFont, wisdom2, len) / 2);
-- nextFrame = frame + 10;
-+ nextFrame = frame + 5;
- first = False;
- }
-
-@@ -551,11 +551,11 @@ static void DoSpecialText2(display, window)
- if (noSound == False) playSoundFile("key", 60);
- DrawText(display, window, x, y, dataFont, red, wisdom2, i);
-
-- nextFrame = frame + 30;
-+ nextFrame = frame + 15;
-
- i++;
- if (i > len)
-- SetPresentWait(PRESENT_SPECIAL_TEXT3, frame + 700);
-+ SetPresentWait(PRESENT_SPECIAL_TEXT3, frame + 150);
- }
- }
-
-@@ -584,7 +584,7 @@ static void DoSpecialText3(display, window)
- len = strlen(wisdom3);
- x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) -
- (XTextWidth(dataFont, wisdom3, len) / 2);
-- nextFrame = frame + 10;
-+ nextFrame = frame + 5;
- first = False;
- }
-
-@@ -593,11 +593,11 @@ static void DoSpecialText3(display, window)
- if (noSound == False) playSoundFile("key", 60);
- DrawText(display, window, x, y, dataFont, red, wisdom3, i);
-
-- nextFrame = frame + 30;
-+ nextFrame = frame + 15;
-
- i++;
- if (i > len)
-- SetPresentWait(PRESENT_CLEAR, frame + 800);
-+ SetPresentWait(PRESENT_CLEAR, frame + 200);
- }
- }
-
-@@ -642,7 +642,7 @@ static void DoClear(display, window)
- yb -= 10;
-
- if (yt > ((PLAY_HEIGHT + MAIN_HEIGHT) / 2))
-- SetPresentWait(PRESENT_FINISH, frame + 20);
-+ SetPresentWait(PRESENT_FINISH, frame + 10);
-
- nextFrame = frame + 20;
- }
Index: xboing/patches/patch-preview_c
===================================================================
RCS file: xboing/patches/patch-preview_c
diff -N xboing/patches/patch-preview_c
--- xboing/patches/patch-preview_c 6 Mar 2004 02:41:00 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-preview_c,v 1.1 2004/03/06 02:41:00 naddy Exp $
---- preview.c.orig 2004-03-06 02:03:41.000000000 +0100
-+++ preview.c 2004-03-06 02:04:07.000000000 +0100
-@@ -139,7 +139,7 @@ static void DoLoadLevel(display, window)
-
-     /* Construct the Preview level filename */
-     if ((str = getenv("XBOING_LEVELS_DIR")) != NULL)
--        sprintf(levelPath, "%s/level%02d.data", str, lnum);
-+        snprintf(levelPath, sizeof(levelPath), "%s/level%02d.data", str, lnum);
-     else
-         sprintf(levelPath, "%s/level%02d.data", LEVEL_INSTALL_DIR, lnum);
-
Index: xboing/patches/patch-xboing_man
===================================================================
RCS file: xboing/patches/patch-xboing_man
diff -N xboing/patches/patch-xboing_man
--- xboing/patches/patch-xboing_man 4 Jan 2010 11:21:21 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-$OpenBSD: patch-xboing_man,v 1.1 2010/01/04 11:21:21 sthen Exp $
---- xboing.man.orig Sun Jan  3 11:09:12 2010
-+++ xboing.man Sun Jan  3 11:10:26 2010
-@@ -45,7 +45,7 @@
- xboing \- An X Window System based blockout clone. V2.4
- .SH SYNOPSIS
- .B xboing
--[-version] [-usage] [-help] [-sync] [-display <displayName>] [-speed <1-10>] [-scores] [-keys] [-sound] [-setup] [-nosfx] [-grab] [-maxvol <1-100>] [-startlevel <1-MAXLEVELS>] [-usedefcmap] [-nickname <name>] [-noicon]
-+[-version] [-usage] [-help] [-sync] [-display <displayName>] [-speed <1-10>] [-scores] [-keys] [-sound] [-setup] [-nosfx] [-grab] [-maxvol <1-100>] [-startlevel <1-MAXLEVELS>] [-no-usedefcmap] [-nickname <name>] [-noicon]
- .IP
- -speed <n>         - The game speed, 1 - 9. 9=Fast
- .br
-@@ -73,7 +73,7 @@ xboing \- An X Window System based blockout clone. V2.
- .br
- -grab              - Turn pointer grabbing on
- .br
---usedefcmap        - Use the default colourmap
-+-no-usedefcmap     - Don't use the default colourmap
- .br
- -nickname <name>   - Use nickname instead of real one
- .br
-@@ -178,7 +178,7 @@ The nosfx option will turn OFF special effects. The sp
-
- The grab option will tell xboing to grab the mouse pointer when the game is visible. Pointer grabbing has the effect of stopping you move the pointer outside the game window. This is useful as it constrains the mouse and you don't get colourmap flashes. The default is Off.
-
--The usedefcmap option will make xboing try to use the default colourmap. This will be fine if the default colourmap is reasonabily empty (ie: 200 free colour cells!). If you have a complex picture on your background then this option will not work and xboing will be unable to allocate enough colours.
-+Unless the no-usedefcmap option is used, xboing will try to use the default colourmap. This will be fine if the default colourmap is reasonabily empty (ie: 200 free colour cells!). If you have a complex picture on your background in 8-bit colour, then this option will be needed otherwise xboing will be unable to allocate enough colours.
-
- The nickname option allows you to specify a nick name for you instead of using your real name found in the password file. This can be useful for hiding your identity. Please note that I store the user id in the highscore file and use that for checking and sorting. You will still appear only once in the global highscore table.
-
Index: xboing/pkg/DESCR
===================================================================
RCS file: xboing/pkg/DESCR
diff -N xboing/pkg/DESCR
--- xboing/pkg/DESCR 4 Jan 2010 11:21:21 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,6 +0,0 @@
-XBoing is a blockout type game where you have a paddle which you use
-to bounce a ball around the game area blowing up blocks with the ball.
-You win by obtaining points for each block destroyed and each level
-completed. The person with the highest score wins.
-
-Sounds are disabled by default and can be enabled with the '-sound' switch.
Index: xboing/pkg/PLIST
===================================================================
RCS file: xboing/pkg/PLIST
diff -N xboing/pkg/PLIST
--- xboing/pkg/PLIST 11 Oct 2013 20:39:25 -0000 1.9
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,147 +0,0 @@
-@comment $OpenBSD: PLIST,v 1.9 2013/10/11 20:39:25 naddy Exp $
-@mode g+s
-@group games
-@bin bin/xboing
-@mode
-@group
-@man man/man1/xboing.1
-share/examples/xboing/
-share/examples/xboing/xboing.score
-@mode g+w
-@group games
-@sample /var/games/xboing.score
-@mode
-@group
-share/xboing/
-share/xboing/levels/
-share/xboing/levels/demo.data
-share/xboing/levels/editor.data
-share/xboing/levels/level01.data
-share/xboing/levels/level02.data
-share/xboing/levels/level03.data
-share/xboing/levels/level04.data
-share/xboing/levels/level05.data
-share/xboing/levels/level06.data
-share/xboing/levels/level07.data
-share/xboing/levels/level08.data
-share/xboing/levels/level09.data
-share/xboing/levels/level10.data
-share/xboing/levels/level11.data
-share/xboing/levels/level12.data
-share/xboing/levels/level13.data
-share/xboing/levels/level14.data
-share/xboing/levels/level15.data
-share/xboing/levels/level16.data
-share/xboing/levels/level17.data
-share/xboing/levels/level18.data
-share/xboing/levels/level19.data
-share/xboing/levels/level20.data
-share/xboing/levels/level21.data
-share/xboing/levels/level22.data
-share/xboing/levels/level23.data
-share/xboing/levels/level24.data
-share/xboing/levels/level25.data
-share/xboing/levels/level26.data
-share/xboing/levels/level27.data
-share/xboing/levels/level28.data
-share/xboing/levels/level29.data
-share/xboing/levels/level30.data
-share/xboing/levels/level31.data
-share/xboing/levels/level32.data
-share/xboing/levels/level33.data
-share/xboing/levels/level34.data
-share/xboing/levels/level35.data
-share/xboing/levels/level36.data
-share/xboing/levels/level37.data
-share/xboing/levels/level38.data
-share/xboing/levels/level39.data
-share/xboing/levels/level40.data
-share/xboing/levels/level41.data
-share/xboing/levels/level42.data
-share/xboing/levels/level43.data
-share/xboing/levels/level44.data
-share/xboing/levels/level45.data
-share/xboing/levels/level46.data
-share/xboing/levels/level47.data
-share/xboing/levels/level48.data
-share/xboing/levels/level49.data
-share/xboing/levels/level50.data
-share/xboing/levels/level51.data
-share/xboing/levels/level52.data
-share/xboing/levels/level53.data
-share/xboing/levels/level54.data
-share/xboing/levels/level55.data
-share/xboing/levels/level56.data
-share/xboing/levels/level57.data
-share/xboing/levels/level58.data
-share/xboing/levels/level59.data
-share/xboing/levels/level60.data
-share/xboing/levels/level61.data
-share/xboing/levels/level62.data
-share/xboing/levels/level63.data
-share/xboing/levels/level64.data
-share/xboing/levels/level65.data
-share/xboing/levels/level66.data
-share/xboing/levels/level67.data
-share/xboing/levels/level68.data
-share/xboing/levels/level69.data
-share/xboing/levels/level70.data
-share/xboing/levels/level71.data
-share/xboing/levels/level72.data
-share/xboing/levels/level73.data
-share/xboing/levels/level74.data
-share/xboing/levels/level75.data
-share/xboing/levels/level76.data
-share/xboing/levels/level77.data
-share/xboing/levels/level78.data
-share/xboing/levels/level79.data
-share/xboing/levels/level80.data
-share/xboing/levels/new.data
-share/xboing/problems.doc
-share/xboing/sounds/
-share/xboing/sounds/Doh1.au
-share/xboing/sounds/Doh2.au
-share/xboing/sounds/Doh3.au
-share/xboing/sounds/Doh4.au
-share/xboing/sounds/ammo.au
-share/xboing/sounds/applause.au
-share/xboing/sounds/ball2ball.au
-share/xboing/sounds/balllost.au
-share/xboing/sounds/ballshot.au
-share/xboing/sounds/boing.au
-share/xboing/sounds/bomb.au
-share/xboing/sounds/bonus.au
-share/xboing/sounds/buzzer.au
-share/xboing/sounds/click.au
-share/xboing/sounds/ddloo.au
-share/xboing/sounds/evillaugh.au
-share/xboing/sounds/game_over.au
-share/xboing/sounds/gate.au
-share/xboing/sounds/hithere.au
-share/xboing/sounds/hypspc.au
-share/xboing/sounds/intro.au
-share/xboing/sounds/key.au
-share/xboing/sounds/looksbad.au
-share/xboing/sounds/metal.au
-share/xboing/sounds/mgun.au
-share/xboing/sounds/ouch.au
-share/xboing/sounds/paddle.au
-share/xboing/sounds/ping.au
-share/xboing/sounds/shark.au
-share/xboing/sounds/shoot.au
-share/xboing/sounds/shotgun.au
-share/xboing/sounds/spring.au
-share/xboing/sounds/stamp.au
-share/xboing/sounds/sticky.au
-share/xboing/sounds/supbons.au
-share/xboing/sounds/toggle.au
-share/xboing/sounds/tone.au
-share/xboing/sounds/touch.au
-share/xboing/sounds/wallsoff.au
-share/xboing/sounds/warp.au
-share/xboing/sounds/weeek.au
-share/xboing/sounds/whizzo.au
-share/xboing/sounds/whoosh.au
-share/xboing/sounds/wzzz.au
-share/xboing/sounds/wzzz2.au
-share/xboing/sounds/youagod.au

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

Ryan Freeman
On Sun, Feb 14, 2021 at 04:08:34PM -0800, Ryan Freeman wrote:

> On Sun, Feb 14, 2021 at 05:23:17PM +0100, Christian Weisgerber wrote:
> > Klemens Nanni:
> >
> > > OK kn to remove this, although I certainly do not object to fixing it
> > > if someone wants to do the legwork -- it just seems unreasonable to me
> > > (if done by people who only fix it "to fix the tree").
> >
> > FWIW, the FreeBSD port is equally unplayable.
> >
> > --
> > Christian "naddy" Weisgerber                          [hidden email]
> >
>
> Based on various observations here, here is a diff to remove this, includes
> unhook, quirks diff shortly

quirks bump


Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/quirks/Makefile,v
retrieving revision 1.1165
diff -u -p -r1.1165 Makefile
--- Makefile 14 Feb 2021 18:06:22 -0000 1.1165
+++ Makefile 15 Feb 2021 00:11:22 -0000
@@ -5,7 +5,7 @@ CATEGORIES = devel databases
 DISTFILES =
 
 # API.rev
-PKGNAME = quirks-3.553
+PKGNAME = quirks-3.554
 PKG_ARCH = *
 MAINTAINER = Marc Espie <[hidden email]>
 
Index: files/Quirks.pm
===================================================================
RCS file: /cvs/ports/devel/quirks/files/Quirks.pm,v
retrieving revision 1.1181
diff -u -p -r1.1181 Quirks.pm
--- files/Quirks.pm 14 Feb 2021 18:06:22 -0000 1.1181
+++ files/Quirks.pm 15 Feb 2021 00:11:23 -0000
@@ -2095,6 +2095,7 @@ my $obsolete_reason = {
  'libquvi-scripts' => 39,
  'cclive' => 6,
  'viz' => 4,
+ 'xboing' => 0,
 };
 
 # reasons for obsolete packages

Reply | Threaded
Open this post in threaded view
|

Re: FIX: games/xboing -fno-common

George Koehler-2
On Sun, 14 Feb 2021 16:14:41 -0800
Ryan Freeman <[hidden email]> wrote:

> > Based on various observations here, here is a diff to remove this, includes
> > unhook, quirks diff shortly
>
> quirks bump

ok gkoehler@ to remove games/xboing

On Sat, 13 Feb 2021 13:48:34 +0000
Stuart Henderson <[hidden email]> wrote:

> I wonder if it might do better on a 32-bit arch. That said,
> there are alternatives like kbreakout / lbreakout2, I'd be OK with
> just rm'ing.

I built xboing with -fcommon for 32-bit macppc and I can't play it.
The frame rate alternates between too slow and too fast, so the ball
becomes almost stuck, then teleports off the screen before I can move
my paddle.  Also, I can't hear the sound.  I played this game many years
ago (I forget where) and don't know when it became broken.

--George