(This file is compiled from the ldescent mailing list and the 
README.Linux of previous versions. I hope all respective authors
don't have objections against this. -- Arne de Bruijn)

Changed in v0.0.20 (1998-09-11)
-	sound samplerate fixed (now 11025, was 8000)
-	now --without-, --disable-, ...=no options to configure work as
	expected
-	keyboard repeat in X is now only turned off when ldescent has focus
-	Kali support in the form of a KaliNix interface is added
-	included enhanched joystick support from Owen Evans.
	(this broke FreeBSD joystick support)
-	fixed DGA detection, made it compile w/o sigcontext and
	disabled it by default: use -UseDGA to enable it.
-	fixed number of players in join menu.

Changed in v0.0.19 (1998-08-12)
-	removed support for a commercial ipx over tcp/ip tunneler
-	changed some dos filename conventions for editor (slash, case)
-	incoperated patches from Richard Henderson (mostly Alpha support, 
	x11 enhancements, bug fixes)
-	added get_sig gcc 2.8.x bug workaround
-	distribution created with make dist (removes most unnecessary files,
	deps are not created unless you run automake yourself).
-	used automake 1.3 instead of 1.2 (fixes some build problems)
-	fixed automap in x11 
-	removed bogus MEM_LEAKAGE warning
-	added --enable-p5-tmap and --enable-ppro-tmap configuration options
	to enable the Pentium resp. PPro optimized texturemappers by
	Brian Raiter

Arne de Bruijn
arne@knoware.nl

------------------------------------------------------------------------------
Release notes v0.0.18 (1998-05-10) by Stephen Hocking <shocking@prth.pgs.com>:

This has some code to handle different window sizes for X11, although double
uffereing is not yet working, so you'll have to have to fire it up with the
nodoublebuffer option if you're running at other than the default resolution.
A few people sent me patches to do this. I'm planning on doing the mouse
handling next.

The second change is based on the work the XFree86 people did to make their
assembler code portable, as the various assemblers have different syntax and
some systems use an _ prepended to global variable names. I have changed
tmap_opt.s and scanline_flat.s to conform to this. The observant will notice
that NOPs haver been inserted to take jump targets to multiple of 4 bytes.
This was because the FreeBSD version of GAS gets confused when you have
multiple .align 4's scattered through the code. After all that work, my nice
shiny new K6-233 doesn't see much improvement at all, presumably because of
the different rules about what instructions can be paired with what in
parallel. Grr. I'll take a look at optimising this stuff for the K6 now I have
AMD's  guide for doing so. I may also do the later versions of the optimised
code that are on the ftp site (tmap_per.s & tmapp_per.s).

------------------------------------------------------------------------------
Release notes v0.0.17 (1998-04-24) by Stephen Hocking <shocking@prth.pgs.com>:
 
This adds support for FreeBSD, including sound, X11 (of course) and joysticks
under FreeBSD. It will also act as a spur for the FreeBSD people to add the
additional support for fancy joysticks that linux has (more than 2 axis & 2
buttons).

------------------------------------------------------------------------------
Changed in v0.0.16 (1998-04-14):
-	X keycode fixed;
- 	new join game menu;
-	editor compilable with configure --with-editor
	(currently the editor works only with svgalib);
-	X/svgalib in one executable (X used when DISPLAY environment variabele
	present or display argument given).
	X is compiled in if libraries found, for svgalib you still need to
	specify --with-svga;
-	score unreversed;
-	ipx code should now work with glibc (untested);
-	fix.c/fvc.c fix to prevent SIGFPE's;
-	[ the following is modified at 1998-08-09 ]
	simple server compatible to a commercial ipx over tcp/ip tunneler
	added.
	[ this was removed in v0.0.19 ]
-	SHIFT-F2 & SHIFT-F3 mapped to save/restore too (previously
	controlled VR things...);
-	Ctrl-C disabled for svgalib;
-	bogus arch/linux/svgalib_mouse.c removed.
	
Arne de Bruijn
arne@knoware.nl

------------------------------------------------------------------------------
Release notes v0.0.15 (1998-02-23) by 
Kirk Petersen <kirk@eidolon.speakeasy.org>

        I added most of the patches I could find and released 0.0.15.  I
added the editor patches, but didn't want to play with the makefiles
right now, so it isn't going to work without some effort on your
part.  Sorry about that.

------------------------------------------------------------------------------
Changed in v0.0.13:
- changed the __u16 and __u32 to u_short and u_long
- removed the requirement for both joystick devices to be opened
- added the music patch
- added the mouse patch


README information for ldescent v0.0.1 - v0.0.12:
------------------------------------------------------------------------------
Thu Feb  5 12:51:00 EST 1998

  ModeX support is in, with some partial SVGA/VESA support. (gr_svga_bitmap
  isn't implemented, me in all my slackfulness didn't do anything about it
  tho) However, page flipping doesn't seem to work: SVGALib segfaults when I
  try access memory below the 400th line(that's at 32K in the vidram). Had to
  put a kludge into the automap to make it work, and it makes the automap
  kind of annoying to look at. But it works. so there.

  Consciously noted that frametime needed gabbagabbahey, fixed that. Also
  consciously fixed the loading of player files.

  HAVE_JOYSTICK became WANT_JOYSTICK. *shrug*

--
Patrick McCarthy
The .sigless one

------------------------------------------------------------------------------
Mon Feb  2 12:05:29 EST 1998

  More work on modex support, added a few new interface things:

  void int_gr_modex_plane(int plane)	Sets the plane for ModeX usage.
  int int_gr_bm_type(void)		Returns the bitmap type(linear/modex/vesa)

  I suppose it's possible to kludge the automap by having it write
  everything to a buffer set as BM_LINEAR and then copyplanar it. But that's
  no fun.

  Decided I felt like crap, stopped programming to slack, cough, and read for
  awhile.

--
Patrick McCarthy (lowen@home.com)

------------------------------------------------------------------------------
Mon Feb  2 11:33:03 EST 1998

  Okay, I made the sound code #ifdef'd. If you don't want it, you don't get
  it rammed down your throat. =)

  Tried Hawkins' port of asm_tmap_scanline_flat, in
  arch/i386/scanline_flat.s. You can #define ASM_SCANLINE_FLAT in
  includes/dlinux.h and try it if you want, it's kinda fubar though, and not
  much faster than c_tmap_scanline_flat (which I changed to just a plain ol'
  memset(), much quicker)

  Noted that addon missions don't work. Started hunting for this bug. Found
  it and squashed it in about 3 nanoseconds. missions.c was strcatting
  ".MSN" instead of ".msn" *doh!* damn case insensitive d'hos...

--
Patrick McCarthy (lowen@home.com)

------------------------------------------------------------------------------
Sun Feb  1 19:29:48 EST 1998

Files modified: more than too many
  Thanks to Peter Hawkins(dph-man@iname.com), the weird shifting tile bug is
  fixed(yay.). Well, sort of. In ntmap.c there's a choice in interpolation
  methods. Prior versions used the cheesy forced-linear ones. When set to
  auto-choose, everything comes out fine, except for a simple problem.
  Division. The texture mapping code goes slower than hell (frame rate drops
  DRASTICALLY on my system)... ugh. Anyone wanna get cracking on a real
  assembly port? =) Until then, PROPER_INTERPOLATION is #define'd in
  includes/dlinux.h. define/undef it at will.

  Also added the FRAMETIME cheat code (shows FPS), thanks to Peter as well.
  I get ~15 FPS with PROPER_INTERPOLATION #defined... on a P200. *chunder*

  I was about to add Jonathan Allen(jonallen@ns1.ntrnet.net)'s sound patch
  to this, but I decided against it.. (Is it really still singleprocess? W/o
  threads available you really do have to fork() or popen() another sound
  slave to make it not fubar.) If you want it, you can snag it at
  http://www.ntrnet.net/~jonallen/software.html

--
Patrick McCarthy (lowen@home.com)
(New e-mail due to sandwich exploding)

------------------------------------------------------------------------------
Sat Jan 31 11:09:19 EST 1998

Files modified: arch/linux/joystick.c main/joydefs.c include/dlinux.h
  Rehacked joystick.c, made it work. Turned the L7 boss into something
  resembling stew.

Files modified: too damn many
  Sped up the redraw ALOT, fixed the cockpit(The original PC ibitblt code
  for the cockpit is REALLY DAMN COOL. look at it. %)) as well. Made some
  work towards modex-compatibility. (some vesa stuff is already in place)

--
Patrick McCarthy (lowen@sandwich.net)

------------------------------------------------------------------------------
Fri Jan 30 18:47:25 EST 1998

Did some work on separating everything. All the header files went into the
'include' directory (which is currently barren), and the separation work in
arch/linux/ was started. Get those ggi/x11 drivers crackin'! =)

--
Patrick McCarthy (lowen@sandwich.net)

------------------------------------------------------------------------------
Fri Jan 30 14:25:15 MST 1998

The only problem with porting such a great game is that you'd rather play it
for hours than fix all the bugs :P  Two things have been updated in this
version:

- Most of the extra files (*.asm, *.inc, etc.) were removed.  I might have
gotten a little carried away with it, so you should probably keep the
original source around.  I didn't release this as a patch file since I don't
think patch removes files/directories.

- Added optimization flags to the Makefiles.  This gives a nice boost in
speed and makes the ldescent file a little smaller (if you're going for
memory conservation instead of speed, change the -O3 in the Makefiles in the
2d and 3d directories to -O2).

--
Joel Hardy (deeng@inficad.com, deguan@usa.net)

------------------------------------------------------------------------------
Thu Jan 29 13:21:43 EST 1998

No real updates, did some hunting for the shifting texture bug. I think I know
where it is now. The texture block comes out fine if (IF!) the entire block
is in view at once. However, if it's not, it starts screwing up due to
mismatched start locations. I did some hunting about this and it turned out
that compute_dx_dy and compute_du_dy_lin seem to be screwing the restarts
somehow. Those led me back to..you guessed it... fixmul!

--
Patrick McCarthy (lowen@sandwich.net)

------------------------------------------------------------------------------
Tue Jan 27 20:50:11 EST 1998

Okay, I'm eating my words. But after playing a 2 hour game of Descent
without it crashing I felt I needed to fix the bugs so I could have more
fun.. PARTICULARLY that &($@#^@$^# reactor wiggle bug =)

** More known bugs/fixes
- means it's known, but not fixed
/ means it's partially fixed
% means it's fully fixed.

Not in game or in both.
% Load game window fubar
    Problem/Files modified: bios/key.c bios/key.h
    It was returning a *signed* char instead of an unsigned one. Another
    Watcom <-> GNU difference.
- The windows clip over and don't restore the 'descent' background pic
    Probably the canvas stuff.
% Game font is not seethrough.
    Problem/Files modified: 2d/font.c 2d/palette.c
    UGH. It was swapping 0 and 255 around for no apparent reason. I made
    that not happen unless SWAP_0_255 was #define'd and it worked perfectly
    fine. I also got rid of an ugly palette kludge in the process(yay!).

In game.
% Load/save game windows kept console switching
    Problem/Files modified: main/game.c
    Now checks for CTRLED as well as ALTED. Ctrl-F2/Ctrl-F3 work fine now.
% Save game window doesn't show proper text
    I don't know how I fixed this.
- Cockpit's not properly transparent.
    I think this has to do with weird canvas management.
- Weird shifting of tiles in drawing
    I don't have the foggiest idea what causes this. Anyone want to tell me?
- Full screen graphics mode causes you to get an ULTRA CLOSE UP.
    I now know this is only caused in full screen mode. With the status bar it
    doesn't do this. This, of course, makes NO sense whatsoever. It seems to
    have to do with the point setting(which shouldn't be causing problems),
    or the render_window buffer.
% Ship wiggling on reactor 'splosion is a little, umm, violent
    Problem/Files modified: bios/pcm.c
    D'oh. D'oh. D'oh. custom rand() should be 0-32767 (fix 0.5),
    not 0-65535 (fix 1.0). This fixed a whole shitload of things, mainly the
    reason the AI seemed fubar to me...

--
Patrick McCarthy (lowen@sandwich.net)

------------------------------------------------------------------------------
01/27/98

** Foreword and bugs

Okay, here's my first attempt at a port of Descent to Linux. It, umm... well,
it runs. Sorta. I made this port from a hybrid of the PC and Mac sources (PC
has too much code in assembly, and NO not all of it is in C as well, the Mac
code has everything in C, so I copied those chunks out and ported 'em..) Here
are the known list of bugs/unfinished things, in order of apparent-ness:

1. Graphics looks fubar when you're close to a wall or rotated slightly.
   This probably has to do with the fixed point stuff, fixmul() notably.
2. Transparency on the game font is fubar as well. Worked fine when I had
   TRANSPARENCY_COLOR set at 0, but when I set it to 255 so everything *else*
   came out right, noooooo. transparency on the ship's cockpit is messed as
   well.
3. Random crashes/core dumps.
4. Engine randomly goes nuts and you get this weirdassed ULTRA CLOSE UP of
   the wall. You can see this in the descent.dem demo file that comes with
   Descent v1.5.. It seems to carry over to the next time you run the demo
   w/o quitting too. I've also had it become uberthin.. boggles the hell
   outta me.
5. It's so unoptimized in this form it makes Quake look fast.
6. Automap cores it. I do believe this is because I used the Mac 2D code,
   which does NOT handle annoying VESA-style paging. That and I don't think
   I supported 320x400 anywhere.
7. Bug I inserted myself into texmerge.c. 'least_recently_used=0;' It's a
   kludge that will undoubtedly fail at some point, but it prevents a console
   lockup from happening. Which would you rather have? fubared graphics, or
   no console? =) Remove it if you dare -- I couldn't figure out an easy way
   to fix it.
8. Ship "wiggle" when you blow the reactor core is a little too violent..
9. SVGALib only, and I didn't separate any code, just because I wanted a
   functional ver, "NOW". =) !!WARNING!!: Your console may lock up if things
   don't go well, though I haven't had too much of a problem with it recently.
10. No joystick/mouse code. And man, does Descent suck on a keyboard. The
   Linux joystick code is partially implemented (joyc.c), but I was having
   some problems with it so I took it out. Errm, I just realized -- you may
   need linux/joystick.h to compile it. =)
11. No network code. Maybe implement true TCP/IP Descent along with the IPX
    stuff?
12. Obviously, no modem/serial code.
13. VR Devices got the Boot[tm].
14. Does the editor code even compile? I haven't even checked. =)

** Building and running:

Just run make and try to avoid reading all the bagillions of warnings, for
they are deadly to the eyes. Most of them are "warning: data definition has
no type or storage class", and the others are just errors as a result of
that, which shows that this was, indeed, a quick hack. just add 'int' or
'void' to the beginning of procs in the proper headers. *slack*

Once built, copy the resulting 'ldescent' binary somewhere and copy the
.hog and .pig files from Descent 1 registered version *1.5*. (IMPORTANT!
Prior versions will make it not load!) Run it, and bask in quick-hack
LinuxDescent.

Now, I suggest the rest of you get to work on cleaning it up now that it
runs somewhat. :P

** Things I learned about this code:

Static stuff is everywhere. I could hardly find anything dynamic in the
code, and everything was ripped directly from the pigfiles without
sizechecks.

DPMI is Wrong and Evil[tm] and should be destroyed at all costs.

GNU C automatically pads structs to 4 byte boundaries.. The load code didn't
like this much. (hence the zillions of __attribute__((packed))'s)

glob() is a Good Thing[tm]

** Epilogue

I'm probably not going to work on this much after this, I just got bored and
wanted the base code in Linux for a challenge. But hey, just give me credit
somewhere if you work off this base.. even if nestled in a far, dark, corner,
in an obscure chunk of code that no one ever dares look at..

--
Patrick McCarthy (lowen@sandwich.net)

------------------------------------------------------------------------------
