MHQUAKE 6.10
------------
This release fixes and finishes most of the outstanding stuff with 6.00 - look on it as the
version of 6.00 that I would have released if I had the time to do more work on it back
then.  Because it's essentially a finishing up of 6.00 I've left the new feature list for
that release intact, and just added on another list of 6.10 updates - there's very little
that's genuinely new in this release.

Some of the code here is based on the unreleased MHQuake 5.03 - this version was basically
an experiment that went totally down the wrong track, and is therefore remaining unreleased.
However, it's the only reasonably up-to-date source code I have (I still have some MHQuake
4 source knocking around, the less said about which the better) that some of the stuff that
subsequently became broken was still working in, so I had to use it.


Bugs/Issues
-----------
Vertex Lighting: Shadows can look funny/no spotlights (no real fix.)

r_shadows: Not cast on brush models (could be fixed, the speed hit would probably be awful).

Console graphics occasionally go corrupt in NT4 (possibly bad drivers, probably no fix.)

Removed VCR and LCD code (probably never coming back.)

Removed r_fullbright (ditto, but it became broken which was part of the reason.)

The 3dfx ICD doesn't do fog - bleagh (driver issue, more than likely no fix.) (Except to
  do it in software like Lordhavoc.) (And there's two chances of that.)

Underwater fog not right with r_wateralpha/r_novis (bsp limitation, probably no fix.)
  (Although my auto water translucency code improves this immensely.)

CONTENTS_SKY not being set for sky brushes (caused by having to remove earlier fix for this
  bug, which introduced a more serious one - probably no real fix - BSP format limitation.)

Water surfaces fucked up with 16MB TNT2 based cards (only seen it on Windows 2000 - could
  be drivers, could be hardware.)

Console width defaults to 320 in windowed mode in every config except Debug (?!?) - this
  includes using -window with the 3dfx mini GL (which uses fullscreen anyway...)

Lock-ups: These have only been reported once, when E1M5 is loading.  I have been unable
  to reproduce this problem, and must therefore attribute it to a non-MHQuake issue.

Enhanced Particle System: Several people have reported that this is considerably slower
  than all the other particle systems out there.  My own tests have shown it to be actually
  much faster than anything else, including the original.  The jury will remain out on
  this one.

Rotating skyboxes: These just won't rotate properly - I've left them in for testing
  purposes, and in the hope that someone will be able to point me in the direction of what
  I'm doing wrong.

Dynamic water lighting has been broken since God knows when.  I did some work on fixing it,
  but getting this release out had a higher priority, so it's still broken.  Next time...


Bugs fixed in 6.10
------------------
The texture loading routines were returning the wrong texture number for dedicated servers.
  Shouldn't really be an issue, but...

Mipmapped textures with any dimension larger than 1024 would crash if gl_round_down was
  set to 1.  A highly unlikely scenario, admittedly.

Psychedelic Player Heads.  I know exactly what was going on here, but have no idea why, so
  I fixed it with a mildly nasty hack.  A by-product of this mildly nasty hack means that I
  could significantly reduce MHQuake's memory usage, but doing so caused the engine to
  crash - so I didn't.  Bleagh.  Still on the list of things to do, though.

Shambler's Groin Bug.  This was actually due to the fact that the shambler magic model
  (s_light.mdl) used the same origin as the shambler - so I moved the glow up a bit.  
  Anyone else who's put a glow on the shambler magic will have the exact same problem, so
  for what it's worth, translating it up by 75 and increasing the radius to 60 seems to
  make things nice.

Player model interpolation.  This is definitely fixed this time.

Restored 'lookstrafe' functionality.  Personally, I find Quake unplayable using this, but
  I guess (once again) it takes all sorts.  Anyone who wants 'lookspring' back is just
  taking the piss, though.  If you want 'lookstrafe' you won't find it in any menu - you'll
  have to set it yourself from the console or your autoexec.

Another drawing order bug - I thought I had them all ages ago, but I missed this one
  somehow.  Certain glows and all shadows weren't being drawn over water/liquid surfaces.
  They all are now.


What looks like a bug but isn't
-------------------------------
Jerky crucified zombie animations: It looks a lot like these aren't interpolated, but
  switch off alias model interpolation and have another look - they definitely are.


New Features for 6.10
---------------------
Water Warps: Further investigation has shown that ID's original water warp code actually
  distorted considerably less that my recoding of the thing, so I've put that back in as
  the realistic water warp option.

Made sky fogging optional (gl_skyfog or the menus) and appear to be more distant than
  world fogging.  Also made fogging not affect fullbright colours (can look ugly with low
  gl_fogend values.)

Recompiled the JPEG library (new version available on the site!) optimised for size (cos
  speed doesn't really matter in this instance) and fixed a #define problem in one of the
  headers.

Large Textures.  As far as I'm aware, I inadvertently allowed textures larger than 256 x 256
  some time ago when I rewrote the texture loading routines.  I can't test this properly
  cos I have a 3dfx, but if someone else would like to give it a go...

Changed the shirt and pants selection menu so the changes happen to the visible player model
  in real time.


Features which were unfinished in 6.00 but have been finished/expanded for 6.10
-------------------------------------------------------------------------------


New Features for 6.00
---------------------
Miscellaneous Code Changes: I've gone back over a lot of stuff and recoded it - the basic
  functionality is identical; only the code will have changed.  Hopefully you won't notice.

Increased the max. length of say or tell messages to a possible 1024 (anything more will
  cause an array overflow in SV_ClientPrintf) - you can control the message length by
  setting the sv_maxclientstring cvar (eg. to prevent spamming) but it can never be less
  than 64 or more than 1024.

Center, Right or Left handed view (view_hand 0/1/2 respectively, on the pretty options
  menu) - looks crap cos the viewmodels are drawn relative to the center of the screen
  so glRotatef rotates them relative to this position - but it's better than using scr_ofs
  cvars which really distort things and can cause HOM effects.  Must do it properly some
  time...

Restored glowing on certain powerups and made a nice cosmetic change to some of them.
  (I think you might like this...)

New menu options layout.  You wouldn't know it, but I have a brand new system behind this,
  which is fully and easily extensible (two extra lines of code should be all that's
  needed to add a new menu option now), so there will be no more confusing menus.  Full
  directions for extending it yourself (you'll have to recompile) are in gl_menu.c.
  Because of this, the location of certain things in the menus has changed: take everything
  I say about this with a very large grain of salt.  There are now 7 submenus: View, Speed,
  Static Light, Dynamic Light, Eyecandy, Hardcore (killer CPU people only need apply) and 
  Fog.

Return of FOV.  By popular demand.  You bastards.

FOV Viewmodel Perspective Correction.  High values of FOV no longer cause the viewmodel
  to be drawn in the middle of the screen - it remains centered properly at the bottom
  middle.  Low values will cause the viewmodel to disappear as normally, so you can still
  use the old sniper scope trick if you want.

Automatic Water Translucency.  Yeah, you read that one right.  Set r_autowatertrans to 1
  and any water will be made translucent without having to set r_novis 1 or re-vis your
  map.  There's some slight slowdowns (what did you expect?) but it's nowhere near as bad
  as r_novis 1.  Stuff like double-sided pools don't quite work, however.  This is the
  first implementation of this feature, so it could well improve with future releases.
  Owing to it's status as a first implementation, don't expect stuff like underwater
  entities to work...

  NOTE: DO NOT USE THIS ON A MAP THAT HAS BEEN COMPILED FOR TRANSLUCENT WATER!!!!!!!!!!!!

High Quality Sound.  Blatantly ripped off Tomaz (it's the least I could do) - to enable
  44100 Hz Sound, use the -quality_snd command line switch.

Removed the 'Killing Frenzy' messages - they *were* irritating... (finally got to me too!)

Uses the primary sound buffer by default (it's faster with current versions of Direct-X),
  unless you explicitly specify otherwise with -secondarysound on the command line.

Scripting!  A lot of people have demanded scripting, and I always wanted to implement some,
  so as a trial I've done so.  See MHScript.txt for full instructions.  A handful of
  sample scripts are included in this download.  This stuff has changed slightly since I
  released them originally, so have a look again.

  As part of this, I've also written quite a few common scripting routines, so it should be
  easy enough to extend this as necessary.  I'm in the process of writing a script 
  generating utility as well so you should be easily able to generate your own MHScripts,
  which will be guaranteed to work.

New Splash Screen.  Well, I did have one complaint about the old one, but I had such a
  cool idea for a new one anyway that you're going to have to put up with it now.  Plus it
  shaved a massive 24K off the executable size.

Finally implemented Frika-C's chasecam fix - last seen in MHQuake 4 (!!!)

Finally implemented Mr. G's wrong BSP version fix - and about bloody time too.

Finally implemented Pox's Alias Model Lighting Interpolation tutorial, with a few bugfixes
  and improvements of my own - the main ones being that it does coloured lighting properly
  too (Pox never included coloured lighting in his tut) and the last_shadelight problem
  is well and truly fixed.  If you don't want it, set gl_aliaslightlerp to 0 or use the
  menu.

Mod Command.  Thanks to Shadow for the inspiration for this.  The command works in a
  similar way to alias model scripts, except that it can be used to change individual
  properties of a single specific model without writing a script.  Good for testing (I've
  also found it useful for undoing cock-ups.)  The Mod command is explained in MHScript.txt
  (the most relevant place for it, since it works much the same way.)

Rotating Skyboxes: Originally present in an early version of release 5 (I think it was 5.04)
  but subsequently removed cos they never rotated properly.  I've restored them for this
  release, but they still don't work right.  Someone please help!

Particle based replacements for certain sprites.  Most of the old sprites are now replaced
  by appropriate particles.

Bobbing Pickups: This is absolutely loathsome, but if you really must insist in having
  bouncy items like in Quake 3, then set r_bobbing to 1 or find it hidden in one of the
  menus.

Realistic water warping.  The water warping I've had in MHQuake for the last few releases
  fixed one rather serious problem (go on, guess what it was) but was fairly static.  The
  new option for realistic warping (use the menus, or the old r_waterwarp cvar) restores
  the option to have more realistic warping, but can look ugly where a vertex on one poly
  meets another poly between 2 verts.  It's still an improvement on the original mess.
  You decide which one you want.


Feature List
------------
Alpha Test Brushes: Use '{' as first character of the texture name, and make the brush a
  func_wall entity (or func_illusionary with a clip brush).

Bloody Mirrors: Detects the standard mirror texture as well as any texture using '&' as the
  first character. Multiple mirror support - not totally reliable, but nearly there.

Brightness Control: Use the options menu.  This has been sped up since 5.05 so it's now
  safe to use.  It also does darkness too this time!

Coloured Light: Supports both white and coloured light in BSP29 (coloured dynamic only),
  QSG BSP30, Halflife BSP30 and LordHavoc LIT files (use the options menu to switch between
  white and coloured light, you must reload the map after switching.)  Coloured light is
  very slow if you have lots of dynamic lights or lightstyles since these require a lot
  of texture uploads.

Console Backgrounds: replace the console background with the "conback" command.  Put your
  new consoles in /textures under the game directory (you can use subdirectories too.)

Custom build configurations containing the additional options you want yourself (see
  mhqbare.h for further details and instructions on how to customise) - the list of
  optional components will grow with each subsequent release.

Cvarlist and cmdlist commands: Output lists of cvars or cmds to the console, or (more
  usefully) a specified file.

Dynamic Lighting: Switchable extra dynamic lights (hurts your fps), variable dynamic light
  radius (for extra speed) and toggle muzzleflashes on or off (mucho extra speed) - all
  on the options menu. Also dynamic lighting on water surfaces.

Fog: Use the options menu to set all fog options.

Fullbright Colours: On both textures and (most) skins - switch them on or off in the
  options menu.

HalfLife BSPs: Automatically detects if a BSP30 is Halflife or QSG format (100% reliable
  now) - put your WAD3s in /textures (they actually work this time).

High Contrast Palette: Use '-hicontrast' on the command line - works especially well with
  3dfx cards.

Hub System: See the Hub System readme.

HUD: Use TAB to bring up the scoreboard; use the standard viewsize controls to determine
  how much of the HUD is visible (viewsize no longer works like it used to).

Interpolation: Alias model and brush model interpolation. Fixed warping supernailgun and
  host_framerate bugs.  BM interpolation doesn't seem to work right if the BM is both
  moving and rotating.

Levelshots: Put them in /textures/mapshots - works on the multiplayer map selection menu
  (need to adjust the positioning) and replaces the console background with a mapshot of
  the new level (if one exists) when changing level (make this optional).

Midi music: Use midi_play, midi_stop, midi_pause, midi_restart, midi_loop and midi_volume
  to control, or just set midi on in the options menu. Put your midis in /music and call
  them 0.mid, 1.mid, 2.mid etc to have them automatically play for your maps.

Mipmap reduction dithering: Run with '-detailmip' for better mipmap reduction dithering,
  makes textures a lot slower to upload.

Multitexturing: Supports both ARB and SGIS (defaults to ARB if both available, use '-sgis'
  to force SGIS as default.) Switch multitexturing off altogether on the options menu (no
  restart required.)

Particles: Enhanced particle system - use the options menu to select the classic particle 
  system, if you're that way inclined - the new system is actually faster!.

Per map Progs.dat: Put them in /qc and give them the same name as the map (eg. e1m1.bsp
  would use e1m1.dat.)

Skies: Supports standard Quake sky, non-detailed sky and skyboxes. Use 'loadsky' at the
  console or '_skyname' in the worldspawn entity to set a skybox; select non-detailed sky
  in the options menu. Skyboxes go in /env or /gfx/env and follow the standard naming 
  conventions. They can be TGA, JPG or PCX format.

Speed Enhancements: Most of these available through the options menu.

Tab Completion: Prints a list of all matching cvars and cmds, and lets you tab through
  the list.

Textures: Uses TGA, JPG or PCX textures. Put BSP textures in /textures, model skins in
  /textures/progs, graphics in /textures/gfx, sprite textures in /textures/progs, etc.
  Remove any invalid Windows characters from the texture name. PCX textures can simulate
  alpha by using RGB values of 159/91/83 for any part that is supposed to be fully
  transparent (just like the classic quake palette.)  For sprite and model skins, add '_0',
  '_1', etc to represent the frame number/skin number; eg. for a replacement explosion
  sprite, put s_explod_0.tga, s_explod_1.tga, etc in /textures/progs.

Texture Caching: gl_cachereplace 1 will always replace textures with the same name in the
  cache.

Texture Replacement: Replace any texture in the game on the fly from the console!  Use the
  gl_texreplace <newname> <oldname> command - eg, to replace the existing *lava1 texture,
  use "gltexreplace mytex/mylava *lava1" - this assumes you have a directory under /textures
  called mytex.  There is currently no way of reverting to the original texture (wait for
  release 5.08)

Translucency: Alias model translucency is automatically set, use '!' as the first character
  of the texture name for brush models.

Underwater Fog: Used as a replacement for the colour shift - sets itself according to the
  colour of the water texture. Some of the 'blue' water will give grey fog: the water isn't
  really blue, it's dirty grey (open the image in a paint prog and look at the colours)

Vertex Lighting: Use the options menu, available in both white and coloured.  Vertex light
  is slower with white light and faster with coloured light.

Water enhancements: Faster (and better) warping code, waves, water shading, dynamic water
  lighting; set them all in the options menu.  Waves are silly when set to more than a
  quarter of the slider length.


Credits
-------
Far too many to mention right now: apologies for not naming names, you all know who you are.


Boring Legal Stuff
------------------
Usual GPL Rules apply to the engine.  The JPG stuff came from the international JPEG Group,
their licenscing rules apply here.  Due to GPL restrictions, I cannot legally prevent
Trainwreck studios, their employees, representatives, families or friends from doing
anything with this, but I'd like it known that I would prefer it if they didn't.

