This is a patch for Kingpin that fixes a number of bugs and adds some other
improvements too (see the lists below). No files are modified by the patch, so
it works with all Kingpin (v1.21) releases, including the Steam version. The
WSOCK32.DLL file is the patch that gets loaded by Kingpin, and PATCHCFG.EXE is
an extra configuration app. Both files should be put in your Kingpin directory.

The patch can be disabled by adding "set nopatch 1" to your MAIN\AUTOEXEC.CFG
file (or adding it to the command-line) but doing so will reset the patch's
settings to defaults (except for any in the AUTOEXEC.CFG).


New features and tweaks
=======================
Asynchronous frame and physics/network updates
  The frame rendering can now be at a different rate to the physics/network
  updates, which allows higher frame rates to be used without breaking movement
  and flooding servers. The physics/network rate is still controlled by the
  "cl_maxfps" console variable, while the frame rate is controlled by the new
  "r_maxfps" console variable and "FPS limit" option in the "visuals" menu. The
  original synchronous behaviour can be restored by setting the new "cl_async"
  console variable to 0.

Higher tickrate support
  More than the usual 10 updates per second are supported when connecting to a
  similarly updated server (look for "sv_fps" in the serverinfo), which gives
  lower and more consistent latency. If wanted, the new "cl_updaterate" console
  variable can be used to request a particular update rate (0 = server's rate),
  which will get rounded down to the nearest multiple of 10 that is also a
  factor of the server's rate.

More screen resolution options
  All resolutions supported by the video card are included in the video mode
  option in the "visuals" menu. A custom resolution can also be set via a new
  "vid_size" console variable (eg. "set vid_size 1024x768"). Fullscreen mode
  can be set to always use the desktop resolution, in which case the video mode
  setting only applies to windowed mode. The current resolution is now added to
  the "gl_mode" console variable (which is sent to servers) as well as being in
  the new "vid_size" console variable.

Resizable window
  When running in windowed mode, the size of the Kingpin window can be adjusted
  by dragging the edges. Note this is only possible when the "fullscreen mode"
  option is set to "desktop", so that an irregular windowed resolution does not
  prevent fullscreen mode working.

FOV scaling
  A new "FOV scaling" option is available in the "visuals" menu and a
  "cl_adjustfov" console variable, which allows "hor+" scaling to be used
  instead of "vert-". This results in the horizontal view expanding, instead of
  the vertical view shrinking, when using a widescreen aspect ratio. The "fov"
  console variable is unchanged by this (the adjustment is applied on top of
  that).

Improved support for any image size
  Standard Kingpin limits images/textures to 256x256 pixels and anything larger
  gets reduced, losing detail. It also resizes any images/textures that are not
  a power of 2 (256/128/64/etc) because they needed to be a power of 2 in the
  past, again losing detail. Both of those limitations are removed now, so
  affected images/textures are shown in higher quality. If wanted, images can
  still be limited with the "gl_maxtexsize" console variable (which now
  defaults to 4096 instead of 256), and power of 2 images can be re-enabled by
  setting the new "gl_pow2" console variable to 1. "vid_restart" is needed
  after changes to either of these settings.

Hi-res images and models
  High resolution versions of images and models can be installed in a HIRES
  subdirectory (eg. MAIN\HIRES). As they do not replace the original files,
  they can be toggled on/off through a new "hires files" option in the
  "visuals" menu and a "r_hires" console variable. The hi-res images may be in
  TGA or PNG format (TGA has priority when both exist).

Hi-res model format extension
  New enhanced (and back-compatible) MDX/MD2 file formats with 16-bit vertices
  (instead of 8-bit) are supported, allowing wobble-free model animations. A
  Blender add-on for exporting and importing them is available here:
  https://github.com/hypov8/blender_kingpin_models

Model wobble reduction
  Standard 8-bit vertex MDX models (including players/weapons/NPCs) are
  internally converted to the 16-bit format and processed to reduce wobbling.
  This can be toggled on/off through a new "dewobble models" option in the
  "visuals" menu and a "r_dewobble" console variable.

Accelerated mipmap generation
  Mipmap images are now generated by the video card instead of Kingpin itself
  whenever possible, to possibly save a little time. This can be disabled by
  setting the new "gl_generatemipmap" console variable to 0. The built-in
  mipmap generation is also SIMD-accelerated now.

Anisotropic filtering
  A new anisotropic filtering option is available in the "visuals" menu and a
  "gl_anisotropy" console variable. When enabled, it keeps images/textures
  looking sharp when they are viewed at an angle. Higher settings allow it to
  have effect at greater angles and distances. Note this setting may be
  overridden in the video card's control panel.

Anti-aliasing
  A new multisample anti-aliasing (MSAA) option is available in the "visuals"
  menu and a "gl_multisample" console variable. When enabled, anti-aliasing
  smooths jagged edges. Higher settings are smoother but more demanding. Note
  this setting may be overridden in the video card's control panel.

Vertical sync setting
  A new "vertical sync" option is available in the "visuals" menu, which gives
  access to the existing "gl_swapinterval" console variable, and also adds an
  "adaptive" setting when supported by the video card. Note this setting may be
  overridden in the video card's control panel.

Improved lighting of see-through surfaces
  See-through surfaces (eg. grills/fences/signs) now have the same lighting
  applied as other surfaces in the same area, so that they blend in better.
  Dynamic lighting is also now applied to those surfaces, and they can be
  charred by explosions and flames.

Lower visibility threshold for alpha surfaces
  Alpha surfaces are normally shown with a minimum alpha threshold of 66.6%
  (any parts with an alpha channel level below that are not seen) but there is
  now no threshold when they are detected to be standalone images (eg. signs),
  making them fully visible. Other alpha surfaces (eg. grills/fences) have had
  their threshold lowered to 60% to make them appear slightly more solid too.

Animated see-through surfaces
  Animated textures can now be seen on see-through surfaces.

Improved dynamic lighting
  The performance of dynamic lighting (and charring) is much improved so that
  it can now be enabled on Intel GPUs without causing lag. Dynamic lights also
  now work properly on bmodels (eg. moving platforms) and windows, and no
  longer show on the other side of thin walls.

Dynamic light disabling
  A new "dynamic lighting" option is available in the "visuals" menu. When that
  is set to "none", no dynamic lighting or charring is applied to surfaces.
  When set to "partial", map lights and charring are enabled, but not other
  dynamic lights like muzzle flashes or explosions. When set to "full", all
  dynamic lights are enabled.

Limited charring
  Surface charring (eg. from explosions and flames) is limited to 75% to avoid
  the map becoming pitch black. Charring also no longer affects the lighting of
  players/NPCs or items except for props.

Improved effect visibility
  Effects such as flames/sparks/blood/etc are now visible through translucent
  surfaces (eg. windows and water).

Improved shadows
  Shadows are now shaded rather than pitch-black. They also point away from the
  nearest/strongest light sources, and are not shown for things that are a long
  way off the ground.

Hybrid directional lighting
  A new "hybrid" setting is available for the "directional lighting" option
  (which is now in the "visuals" menu) that combines the map's lightmap with
  the normal "junior" lighting to prevent too dark shading of players/NPCs in
  bright areas of the map.

Bright team skins
  A new "bright team skins" option is available in the "visuals" menu and a
  "r_brightteam" console variable. When enabled, bright white lighting is used
  (instead of the map's normal lighting) on players in team game modes to make
  it easier to distinguish between the teams. 2 levels of brightening are
  available, equivalent to 100% and 150% brightness.

More visuals options
  A new "flares" option is available in the "visuals" menu, which gives access
  to the existing "r_lightflares" console variable. The "fireworks" and "blood
  time" options have also been moved to the "visuals" menu from the "options"
  menu.

FPS display
  A new FPS display option is available in the "visuals" menu and a "showfps"
  console variable. When enabled, the current number of frames per second is
  displayed at the bottom of the screen, along with the longest time (in
  milliseconds) taken to render a frame during the last second.

Faster map loading
  Processing delays have been removed so that the game can begin sooner.

Asynchronous image and sound loading
  Image and sound files are loaded asynchronously (in the background) so that
  the gameplay does not get delayed and stutter in the meantime.

Internet server browsing
  A live server list is downloaded and included in the "join network server"
  menu. A copy of the list is also written to a SERVERS.TXT file, which will
  be used if the master server is ever unavailable. The dead "play on heat.net"
  menu option is removed.

Faster downloading
  Download speed is no longer limited by the "rate" or "cl_maxfps" settings or
  by vertical sync, and it can now reach speeds of up to 4 MB/s if the server
  allows. If wanted, the new "download_rate" console variable can be used to
  set a speed limit (in KB/s). Downloads are also now sent in fewer/larger
  packets when connected to a kpded2 server for greater efficiency.

PAK downloading tweaks
  PAK files are downloaded (if the server offers any) before any other files,
  to avoid separately requesting files that are in the PAKs. Only the mod's
  directory is checked for existing PAK files (and other root directory files)
  so that existing files in the "main" directory do not prevent mod-specific
  client files being downloaded.

PAK update downloading
  When kicked for having old client files, the new "redownload" command can be
  used to reconnect and download the latest PAK file(s) from the server instead
  of visiting a website to get them.

Map redownloading
  When kicked for having an incorrect version of a map, the new "redownload"
  command can be used to reconnect and download the map from the server. The
  redownloading (including PAKs) can be automated via a new "auto-redownload"
  option in the "options" menu and a new "cl_redownload" console variable.

Map downloading to main directory
  Map files will always be downloaded to the "main" directory instead of mod-
  specific directories, to avoid wasting time and disk space on downloading
  duplicate files. This can be disabled by setting the new "download_main"
  console variable to 0.

Sound and sky downloading
  Sounds and skies are downloaded from the server, even if the server is not
  running kpded2.

Model skin downloading
  Skins/textures used by models (including weapon models) are downloaded from
  the server.

Model extras downloading
  Any accessory options (hat/cigar/etc) that a custom player model has are
  downloaded from the server.

Out-of-order download recovery
  When a file packet is received in the wrong order during a download, it will
  still be used to avoid having to re-request it from the server.

Clearer download progress
  The small download progress bar has been replaced with a clearer text-based
  download progress display.

Network compression
  When connected to a kpded2 server, game state data will be compressed when it
  would otherwise be too large to send, instead of delaying or dropping it.
  This can be disabled by setting the new "net_compress" console variable to 0
  (changes take effect from the next connection). Note that demos containing
  compressed data will not be playable without the patch enabled. Downloads
  are also compressed for greater speed and lower bandwidth usage.

Increased visibility range
  The skybox is drawn at a further distance from the player to allow large open
  space maps to be fully visible.

Increased entity limit
  The entity display limit is increased from 128 to 256. This fixes the problem
  of your gun sometimes disappearing/flickering when there is a lot of action.
  The number of parse entities is also increased from 1024 to 2048, which helps
  prevent "Delta parse_entities too old" errors when there are a lot of
  entities.

Entity overflow prevention
  When hosting a server or local game, and there are too many entities to fit
  in a packet, the number of entities will be reduced to avoid an overflow
  error.

Weapon visible with any FOV
  The player's weapon is now visible with any "fov" setting, not only up to 90.
  Most weapon models are not designed to be shown in a high FOV and appear to
  be floating in front of the player then, so the weapon will be drawn with a
  lower FOV than the rest of the view then to prevent that.

Weapon transparency
  The weapon's transparency can be set with the new "cl_gunalpha" console
  variable, in the range of 0 (transparent) to 1 (opaque).

Chasecam transparency
  When using togglecam or chasecam spectating, the chased player will become
  semi-transparent when they get close to the camera so that they do not block
  the view.

Consistent HUD layout
  The position of the HUD items and the chat text are now the same in all
  screen resolutions and aspect ratios.

HUD enlarging
  A new "hud size" option is available in the "visuals" menu and a "hudsize"
  console variable, to adjust the size of the HUD items and scoreboards (and
  centred text messages) when using screen resolutions over 600 pixels high
  (and over 1280 pixels wide for scoreboards). The minimum setting leaves
  things at their original size.

Hi-res console text
  A hi-res font is used to show console and overlay text, adding support for
  lowercase letters and colouring. A new console font size option is available
  in the "options" menu and a "con_scale" console variable.

Hi-res small text
  The hi-res font is used for small text items in the HUD and for centred text
  messages. Centred text messages are also enlarged.

Centred text is not logged
  Centred text messages no longer appear in the console, which also stops the
  overlay and chat text areas being cleared whenever a centred text message is
  shown.

Improved text input
  Non-US keyboard layouts are now supported, and the cursor can be moved using
  the left/right arrow keys to modify the entered text. The Ctrl key can also
  be used to jump words, and the home/end keys to jump to the start/end of the
  text.

Highlighted non-chat text
  Non-chat text shown in the chat area (eg. connection notifications) is shown
  in light blue to make it more distinguishable from chat. This also applies to
  the console when hi-res console text is enabled.

Nicer scoreboard text
  Scoreboard text now has smoother edges and a drop shadow.

Chat while console is open
  The chat area is now still shown while the console is open.

Console access without developer mode
  The console key (`) and menu option can now be used to access the console at
  any time without needing the "developer" variable to be set to 1.

Console history duplicate removal
  When a command is repeated in the console, the old entry will be removed from
  the console's command history (accessed by pressing the up/down keys).

Console history saving
  A new "con_history" console variable is available to enable saving the
  console's command history so that it persists across sessions. The history is
  saved in a CONHIST.TXT file.

Larger console buffer
  The console buffer size is now 128 KB rather than 32 KB, which allows 4 times
  as many lines of text to be retained.

Console scrolling
  The mouse wheel can now be used to scroll the console.

Console width limiting
  A new "console line width" option is available in the "options" menu and a
  "con_maxwidth" console variable, to set the maximum number of characters per
  line of console text. Shorter lines allow more lines of text to be retained
  for scrolling back.

Console image brightness
  The brightness (vid_gamma) setting no longer affects the console background
  image, so that the text does not become harder to read when the brightness is
  turned up. The console brightness can instead be controlled separately via a
  new "console brightness" option in the "options" menu and a "con_brightness"
  console variable.

Console transparency
  A new "console opacity" option is available in the "options" menu and a
  "con_alpha" console variable, in the range of 0 (transparent) to 1 (opaque).

Notification lines
  A new "notification lines" option is available in the "options" menu and a
  "con_notifylines" console variable, to set the maximum number of lines of
  text that overlays the top of the screen.

Chat lines
  A new "chat display lines" option is available in the "options" menu and a
  "cl_chatlines" console variable, to set the maximum number of lines of text
  shown in the chat area.

Improved chat word wrapping
  Chat area text can now be broken at hyphens too, not only spaces. Very long
  text that exceeds the console width is also rejoined now to avoid an
  unnecessary line break.

Chat across maps
  Chat text stays on screen across map changes.

Semi-transparent graphs
  The netgraph and timegraph backgrounds are now semi-transparent. The
  transparency can be changed with the new "graphalpha" console variable, in
  the range of 0 (transparent) to 1 (opaque).

Wider graphs
  The screen can now be up to 4096 pixels wide (instead of 1024 pixels) before
  the netgraph and timegraph displays repeat.

Netgraph ping range
  The default ping range covered by the netgraph display is halved from 900 to
  450, to make it more visible. The 900 range can be restored by setting the
  "graphscale" console variable to 0.5, and other ranges are possible with
  other values.

Larger menus
  Menus are drawn using a hi-res font that is sized according to the screen
  resolution, to make them easier to read.

Darkened menu background
  The background image is darkened when using menus to make them easier to
  read.

Quicker visuals option changes
  The enter key can be used to apply changes in the "visuals" menu without
  having to first select the "apply changes" option.

More crosshairs
  Up to 27 extra crosshairs (30 in total) can be installed for selection in the
  "options" menu. The selected crosshair image is also shown alongside. The
  extra crosshair files are searched in sequence until the first non-existent
  one, so they should be added in sequence (eg. CH4.PCX first).

TGA crosshairs
  Crosshairs may now be in TGA format, adding support for transparency in them.
  PCX has priority when both PCX and TGA files exist.

Crosshair enlargement
  A new "crosshair size" option is available in the "options" menu and a
  "crosshairsize" console variable.

Customisable crosshair colour
  A new "crosshair color" option is available in the "options" menu, which
  allows the crosshair colour to be changed. It can also be set to change
  colour with the health level. Custom RGB settings (from "000" to "999") are
  possible with a new "crosshaircolor" console variable.

Crosshair transparency
  The crosshair's transparency can be set with the new "crosshairalpha" console
  variable, in the range of 0 (transparent) to 1 (opaque).

Unused crosshair removal
  The crosshair is not shown when spectating except when using eyecam mode.

Targeted player name placement
  A new "crosshair names" option is available in the "options" menu and a
  "crosshairnames" console variable, which allows adjustment of where the name
  of the targeted player is shown. The amount of cash carried by the player
  (if it is a bagman teammate) is also placed accordingly. Targeted player
  names are also now shown during playback of demos.

Instant shots
  When the fire button is pressed, that is sent to the server immediately
  rather than waiting for the next scheduled packet. This is disabled when the
  "cl_async" console variable is set to 0.

Weapon key binding
  The weapons can now be bound to other keys/buttons in the "customize
  controls" menu. A "previous weapon" option is also added to the menu.

Chat key binding
  The chat and team chat commands can now be bound to other keys/buttons in the
  "customize controls" menu.

Raw mouse input
  A new "raw mouse input" option is available in the "options" menu, which
  enables bypassing Windows' mouse motion processing. It can also be enabled by
  setting the "in_mouse" console variable to 2.

More precise mouse movement
  Mouse movement processing is now done in floating-point rather than integer,
  which allows fractional mouse sensitivity settings to have the expected
  effect.

Support for 5 mouse buttons and horizontal wheel scrolling/tilting
  If your mouse has them, 2 extra buttons (MOUSE4 and MOUSE5) and horizontal
  wheel scrolling/tilting (MWHEEL_L and MWHEEL_R) can be bound in the
  "customize controls" menu options and AUTOEXEC.CFG files.

Bind reloading
  Binds are reloaded from the "main" config whenever changing mod so that
  mod-specific binds do not carry over to other mods. Mod-specific CONFIG.CFG
  files are only written when they already exist and "+set game" is used in the
  command-line because that is the only time they get loaded.

Ignoring arrow key commands
  When an arrow key is pressed, a command is sent to tell the server even if
  those keys are bound to something else (eg. player movement). Those commands
  are generally ignored by servers, so they are now not sent by default. The
  command sending can be re-enabled by setting the new "cl_sendarrows" console
  variable to 1.

Improved reverb effect
  Kingpin's built-in reverb sound effect is replaced with a better-sounding
  one. A new option is available in the "options" menu to switch back to the
  original reverb effect or disable reverb. That option is also accessible
  with a new "s_reverb" console variable.

Custom model sounds
  A new "custom model sounds" option is available in the "options" menu and a
  "s_models" console variable. When enabled, model-specific sounds will be
  played instead of the usual male or female sounds when jumping/dying/etc,
  if custom sounds are installed for the player model. The sounds will not be
  downloaded from servers but are included with some player models available
  from www.kingpin.info.

Sound when inactive
  A new "mute when inactive" option is available in the "options" menu and a
  "s_focus" console variable. When disabled, it allows Kingpin's sound to be
  still heard when Kingpin is in the background.

Sound quality is always high
  The sound quality is now permanently set to high. The option has been removed
  from the "options" menu.

Improved playback of 8-bit sounds
  The playback quality of 8-bit sounds is improved, particularly at lower
  volume levels.

Sound buffering control
  A new "buffer / delay" option is available in the "options" menu, which gives
  access to the existing "s_mixahead" console variable. It determines how much
  sounds are delayed by. Note there may be glitches in the sound if it is set
  too low.

JPEG screenshots
  A new "screenshot format" option is available in the "options" menu, with the
  option of writing screenshots in the JPEG format at various quality levels. A
  new "screenshot_quality" console variable is also available for more control
  over the JPEG quality level (0 = TGA). The high-quality TGA format is still
  supported and is also now compressed but the size reduction will not be as
  great as JPEG.

Map-based screenshots
  A new "screenshot naming" option is available in the "options" menu and a
  "screenshot_name" console variable. It gives the option of having the map's
  name (instead of the default "kingpin") in screenshot filenames.

Cleaner screenshots
  The "screenshot" command can be followed by "nomsg" ("screenshot nomsg") to
  have the console and chat text excluded from the saved screenshot, and by
  "nohud" to have the HUD and scoreboard excluded, and by "nogun" to have the
  weapon and crosshair excluded.

New lasers
  The existing railgun laser has been replaced with a new one that supports
  different colours, for use in the instagib game mode (can also be used in
  other mods). The muzzle flash is also the same colour as the laser now.

Underwater rocket tweak
  A rocket's flame trail stops when it enters water.

More efficient scoreboards
  New scoreboard layout options are provided (for use in mods) that allow more
  players to be shown in the scoreboards. There is also a new option for image
  alpha level adjustment.

Reduced idle bandwidth usage
  When you are not moving, fewer packets will be sent to the server, reducing
  bandwidth usage and server load.

Reduced userinfo bandwidth usage
  The "msg" and "hand" console variables are not sent to servers when they are
  set to 0.

Connect speed setting obsoleted
  The "rate" console variable now defaults to 25000 (T1/LAN) instead of 4000
  (56 MODEM), and the "connect speed" option for it has been removed from the
  "player setup" menu. The only thing the "rate" setting still affects is the
  amount of data that a server sends during a game, which never exceeds 14000
  bytes/sec (usually much less), nothing for today's internet connections.

Playing demos from File Explorer
  DM2 demo files can be associated with Kingpin in the PATCHCFG app, which
  allows them to be played from File Explorer and other software.

Demo playback speed control and rewinding
  The mouse wheel can be scrolled forward to speed up demo playback, and
  scrolled back to slow down and pause. Scrolling back again while paused will
  rewind 1 second, or restart if the Shift key is held down too. The demo's
  position is displayed at the bottom of the screen then. The volume level is
  reduced when playing at higher speeds to prevent excessive noise.

Demo frame stepping
  Demo playback can step one frame at a time by holding down the Ctrl key while
  scrolling the mouse wheel. Scrolling the wheel without Ctrl pressed resumes
  normal playback.

Demo angle adjustment
  The view angle can be changed during demo playback by holding down the left
  mouse button and moving the mouse.

Demo end pausing
  Demos are paused instead of unloaded at the end (allowing rewinding). This
  can be disabled by setting the new "cl_demowait" console variable to 0.

Using commands/binds while playing demos
  Key binds can be used while playing demos (eg. to take screenshots). The
  console can also be accessed while playing demos.

Downloads excluded from demos
  Any files that are downloaded while recording a demo are now not included in
  the demo.

F12 confirmation and disabling
  To avoid mishaps, the F12 key can be disabled or set to ask for confirmation
  before closing Kingpin in the "options" menu.

Reset to defaults option removed
  To avoid mishaps, the "reset to defaults" option has been removed from the
  "options" menu. If wanted, the MAIN\CONFIG.CFG file can be deleted to revert
  to the default config.

Hidden console variables not saved
  Console variables without a menu option are not saved in CONFIG.CFG files
  (with a few exceptions). All console variables can still be set persistently
  in AUTOEXEC.CFG files.

Sorted console variables
  The "cvarlist" command now gives a sorted list of all console variables.

No empty directories created
  Directories are no longer created for missing downloads.

CPU priority boost
  Kingpin's CPU priority is raised to reduce the chances of other processes
  denying it CPU time and causing lag. This can be adjusted with a new
  "win_priority" console variable. Possible values are: -2 = low, -1 = below
  normal, 0 = normal, 1 = above normal, 2 = high. The default is 1 (above
  normal). When the CPU priority is raised, it will automatically drop back to
  normal while Kingpin is in the background.
  
Reduced CPU usage
  A new "lower CPU usage" option is available in the "options" menu and a
  "cpusleep" console variable. When enabled, the CPU will sleep briefly
  between frames to reduce CPU usage. The CPU sleeping also always happens
  when not active in game (eg. when using menus or in the background). If
  Kingpin is left inactive in the background for a while, frame processing will
  stop entirely to use practically no CPU.

Close/minimize buttons
  Close and minimize buttons are included in the window title bar.

Minimize command
  A new "minimize" command can be used to minimize Kingpin.

No CD check
  The CD check is disabled so that you can play without having the CD in the
  drive (if you are using the CD version of Kingpin).

Recovery when model limit is reached
  When the number of loaded models exceeds the limit (eg. when trying lots of
  different player models), models that are no longer needed will be unloaded
  instead of leaving the game with a "mod_numknown == MAX_MOD_KNOWN" error
  message.

More verbose model error messages
  The model's filename is included in "R_DrawAliasModel" and "R_CullAliasModel"
  error messages.

Improved stats
  The "cl_stats" output includes the current number of sprites, and raindrops
  (and snow) are included in the particles count. The number of entites in the
  current frame (including non-visible ones like sounds) is also shown, which
  is useful for checking when a map is hitting the limit of 128 (after which
  entities may start being dropped). Duplicate lines are also eliminated to
  avoid flooding the console (this applies to the "r_speeds" output too).

Launch freeze fix
  On Windows 7, the PATCHCFG app gives the option of applying a registry fix
  that stops the GameUX component (from Games Explorer) blocking the first
  launch of Kingpin after booting when it gets stuck trying to contact defunct
  Microsoft servers. This will also affect/fix other games that GameUX deals
  with.

Support for Wine
  The patch works on Linux/macOS with Wine but requires a "DllOverrides"
  registry entry to tell Wine to load the patch's WSOCK32.DLL file. The
  PATCHCFG app includes an option to set that registry entry.


Fixed issues
============
Alt-tab does not work even when enabled in the "options" menu.

Physical memory detection only works up to 2GB RAM. This bug could result in
reduced sound and image quality.

Multiple copies of images/textures are loaded when they have uppercase
letters in their name. This bug can result in "MAX_GLTEXTURES" errors.

If a player carries a cashbag/flag while spawn protection is active, it results
in multiple "r_cullaliasmodel" errors for everyone that sees them.

Cast characters that are set to use a custom skin may not have the correct skin
on when the pain skins option is enabled.

Chat text turns to garbage in the output of the "condump" command.

Crash when there have been 32768 lines of console text.

Buffer overflow/crash with text messages over 4095 characters long. This bug
prevents Kingpin running without Windows' app compatibility feature enabled.

Applying any changes in the "visuals" menu results in a graphics system
reinitialization even if the changes do not require it.

Trying to change model in the "player setup" menu after a model has been
downloaded from a server (or installed manually) can result in a crash.

If there is any file (not only subdirectories) in the PLAYERS directory then
all player models that follow it alphabetically will not be present in the
"player setup" menu.

Memory leak when going to the console while the "player setup" menu is open.

Player model SKINFOLDER.TXT and EXTRAS.TXT files in PAKs are not loaded.

Kingpin cannot be played on a secondary monitor because the mouse is handled
incorrectly then.

Demo playback is jerky, particularly during fast movement.

Looping sounds are not recorded in demos.

The game directory is not updated when playing demos, possibly resulting in the
wrong textures/sounds/etc being used.

Only the first map is played back from demos that span multiple maps.

Demos end early when they contain an empty message (caused by an overflow when
the demo was recorded).

Muzzle flashes are bigger in playback of multiplayer demos than they were when
the demos were recorded.

Flames from the player's flamethrower are not visible in demos.

If the player is firing the flamethrower at the end of a map or when becoming a
spectator, the flames will continue to appear on screen.

When another player/NPC stops firing a flamethrower, their flames immediately
disappear instead of dying out, and those flames then reappear if the player
starts firing again (possibly at a different position).

When a flamethrower is fired from close to a wall, the flames can disappear
into the wall and possibly out the other side. Flames also disappear into
bmodels (eg. doors/platforms).

When another player/NPC fires a flamethrower while crouching, the flames still
appear at their standing height.

The flames from the player's flamethrower are in the wrong position when
spectating in eyecam mode.

The player will drift towards the origin (usually middle of map) while moving.
The fix for this only applies to single player, and multiplayer when the
server is running the latest kpded2 version.

Crash when taking a screenshot before the game's directory exists.

When a file is missing, it may be requested from the server multiple times
instead of just once.

When changing mod, the Kingpin window is unnecessarily recreated/reinitialized.

When connecting to a mod server and then a standard server, files (eg. config
and downloads) will be written in Kingpin's root directory instead of "main".

In deathmatch, the reverb sound effect is only applied to the first player
(client 0).

The sound of moving bmodels (eg. doors/platforms) is heard in the wrong
position or not heard at all.

Distortion and panning of non-attenuated sounds.

Effects such as flames/sparks/blood/etc are always seen in front of alpha
bmodels (eg. moving gates) even when they should be behind.

A targeted player's name is not shown when they are behind a see-through
surface (eg. fence or window) but is shown when they are close behind a door.

A targeted player's name is shown even when dense fog means they cannot be
seen.

Targeted player names are not shown when movement prediction is disabled
through the "cl_predict" console variable or by the server (eg. when chasing).

The surface area covered by dynamic lights and charring is inconsistent across
different texture sizes.

Dynamic lights (eg. muzzle flashes and explosions) are not visible on players
and NPCs when directional lighting is enabled.

A server's instruction to disable directional lighting is ignored on the
player's weapon, which means it may be pitch-black on some maps.

The lighting of the player's weapon is incorrect when spectating in eyecam mode
with directional lighting enabled.

Laser beams are sometimes black instead of their correct colour.

Semi-transparent entities may be drawn in an incorrect order, resulting in
more distant entities overlapping closer ones.

The RF_FULLBRIGHT flag does not work on MDX models.

The "pic" HUD layout option does nothing.

After picking up cash, the amount display does not fade-out with the cash icon.

You are sometimes left facing the ceiling/floor after spawning or teleporting.

When a packet from a server is lost, moving entities may jump back a bit before
warping forward.

The graphheight console variable (to set the height of netgraph and timegraph
displays) does not work properly.

The graphscale console variable does not work properly on the netgraph display.

The Esc key does not access the main menu while a scoreboard is showing.

Using Alt+F4 keys to quit results in an error message.

In the controls menu, when changing a control that currently has 2 keys set for
it, they will be unset before a new key is pressed, making it impossible to
cancel.

The Kingpin window sometimes re-grabs the mouse when clicking away from it.

In some cases, when an error occurs in REF_GL.DLL, the screen will go black and
the error message cannot be seen.

When failing to send a packet to a server, Kingpin may crash to desktop with a
NET_SendPacket recursive error message. Now logged to console instead.

Loading a savegame will result in a "function pointers have moved" error if the
GAMEX86.DLL isn't loaded at its default memory location. The fix for this only
applies to the standard GAMEX86.DLL, not any custom replacement.

The "dir" command lists the files in a mod's directory twice.

When "+exec" is used in the command-line and the executed file does not end in
a newline then subsequent command-line options will not work.

When hosting a server, renderfx2 flags with a value of 256 or above will not be
sent to clients in some situations.

Nvidia drivers automatically turn on vertical sync when it has been turned off
in-game and the driver is set to use the game's setting in the Nvidia control
panel.


New/modified menu options
=========================
gangbang > join network server
options > custom model sounds
options > reverb
options > buffer / delay
options > mute when inactive
options > raw mouse input
options > crosshair
options > crosshair size
options > crosshair color
options > crosshair names
options > console brightness
options > console opacity
options > console font size
options > console line width
options > notification lines
options > chat display lines
options > auto-redownload
options > screenshot format
options > screenshot naming
options > allow f12 to quit
options > lower cpu usage
options > customize controls
visuals > windowed resolution
visuals > fullscreen resolution
visuals > fov scaling
visuals > vertical sync
visuals > fps limit
visuals > show fps
visuals > hud size
visuals > anisotropic filter
visuals > anti-aliasing
visuals > directional lighting
visuals > dynamic lighting
visuals > flares
visuals > bright team skins
visuals > dewobble models
visuals > hires files


New console variables
=====================
cl_adjustfov
cl_async
cl_chatlines
cl_demowait
cl_gunalpha
cl_redownload
cl_sendarrows
cl_updaterate
con_alpha
con_brightness
con_history
con_maxwidth
con_notifylines
con_scale
cpusleep
crosshairalpha
crosshaircolor
crosshairnames
crosshairsize
download_main
download_rate
gl_anisotropy
gl_generatemipmap
gl_multisample
gl_pow2
graphalpha
hudsize
net_compress
r_brightteam
r_dewobble
r_hires
r_maxfps
s_async
s_focus
s_models
s_reverb
screenshot_name
screenshot_quality
showfps
vid_nativefs
vid_size
win_priority


Modified console variables
==========================
gl_dynamic
gl_mode
gl_swapinterval
in_mouse
r_directional_lighting


New commands
============
minimize
redownload
