X M R I S V4.04 X M R E D V1.02 Copyright (C) 1995, 1994, 1993, 1992 Nathan Sidwell RCS $Id: README 1.3 Tue, 16 Mar 1999 11:28:16 +0000 nathan $ Modify the Imakefile as appropriate for your system. This should just mean setting SCORE to point to the score file directory, and maybe setting THEBINDIR and THEMANDIR. Both the FONT and the SCORE are checked for sanity. The source will compile with both ANSI and K&R compilers, provided that they both correctly define __STDC__. You can also use FUNCPROTO to specify partial conformance. FUNCPROTO is used in the same way that Xfuncproto.h uses it. Namely bit 0 specifies function prototypes and ANSI declarations, bit 1 specifies if varargs are used like ansi does, bit 2 specifies if const is available, bit 3 specifies if function args should be prototyped. Most KnR compilers can take FUNCPROTO=5 or 7. Some DEC 5000 systems appear to have incorrectly set up xmkmf, there are some lines in the Imakefile which will need to be uncommented to get them to compile properly. The openwindows include files for solaris are broken for K&R compilers (problems with _XString and _Xconst). The offending files are Intrinsic.h, Xfuncproto.h, and Xresource.h There are a few things which may cause problems with different platforms. The timer interrupt stuff, in timer.c, knows about BSD, SYSV, __hpux and POSIX signals, make sure that the correct define is given to the compiler from the Imakefile. The elapsed time should use gettimeofday, if you haven't got that function, then supply the define USETIME, this will give less accurate timing. Also gettimeofday may or may not need a timezone argument, this is checked by the system type in timer.c. Set SCORE to the name of the high score directory. The score file uses lockf or flock by default, this doesn't work on some distributed filing systems. If so, define USELOCKFILE, and a lock file is used to do the locking with open(O_CREAT | O_EXCL). The name of the lock file is xmris.lock. For this to work the high score directory must be writeable, which is not the case with lockf. Personal high score files are also put in this directory, if xmris can create them there, otherwise they will be put in the users' home directory. You may need to force static linking, and not use shared libraries, or store a library load path with the binary with the linker -R option. The EXTRA_LOAD_FLAGS can be used for this. (This may be necessary for a setuid version, as these programs only search /usr/lib to do the dynamic linking, disregarding LD_LIBRARY_PATH, for obvious reasons.) The make file is configured so that 'make install' will install a setuid xmris owned by games in the BINDIR. Set up the score directory appropriately, copying the example garden files into it. You can alter OWNER, SCOREFILEFLAGS and INSTPGMFLAGS as you require. If you do not want to install xmris into the normal locations, then alter THEBINDIR, THEMANDIR and XAPPLOADDIR appropriately. To make on your system type xmkmf make make install make install.man Xmred uses the same database as xmris, so that it can pick up the color resources. This means that it will not use its fallback resources if you have an old Xmris resource file installed. The result will be xmred laying itself out incorrectly, such that you will not be able to use it. The scram program is used to generate the sprites in the smallest number of bitplanes. You will get some warnings warnings of the form 'Warning: Noswap color 'COLOR_WHITE' has no pixels', these may be ignored. To remove all the garbage left by a make you can do make clean This removes all the object files, and all the sprites generated by scram. There is are two debug options to the compiler, NDEBUG, which inhibits asserts, if defined. Also DEBUGEVENTLOOP which prints the X events, as they are seen. Please report modifications, so that they can be considered for inclusion in later releases (especially true of system specific stuff). email to nathan@pact.srf.ac.uk XMRIS has been tested on the following systems, os's and compilers (but not all combinations of them!), and X release R4, R5 & R6, and openwindows. Interestingly on a 40MHz sparc classic, openwindows is a tad to slow, but X11R5 has no problems, even with the fastest animation. Platform: Sparc 1 monochrome, 8bit pseudo colour Sparc 1+ Sparc IPC 8bit pseudo colour Sparc 2 Sparc classic DECstation 5000 pmax 3100 8bit greyscale pmax 5000 colour HP 9000/720 i386 PC OS: Sunos 4.1, 4.1.1, 4.1.2 Solaris 2.1, 2.2 Ultrix 4.0, 4.2a RiscOS 5.0B Mach 2.5 HP-UX 7.05, 8.05, 8.07 linux compiler: gcc 1.38 cc sun cc sun c++ gcc 2.3.3 Have fun. nathan