1) Direct3D version.
a) Does not support stencil buffer in the wrapper.
b) Does not support GL_RGBA as a download source (imagedump problems?  Also do we need to add fake extra alpha layer for those to write PNG?)
   but maybe I can change this.
c) Does not support tex env_combine.  The direct result of this is the drawing path is different in D3D than GL.
   Because Fitz has different path ways for combine vs. non-combine drawing of brush model textures
d) Does not support mirrors because #a needs it for skybox support

WinQuake
----------
1) Does not support fog
2) Does not support rgb
3) Does not support colored lits.
4) Does not have texturemode.
3) Replacement textures, env textures, mirrors, scrolling textures.
4) Does not have a stencil buffer so does not support mirrors.
5) To do .alpha and fence textures, texture pointer + inspector
6) Does not support r_waterriple.
7) Does support v_polyblend



Transparent water
-------------------------------------------------------------------------------
The original Quake did not have transparent water, it was added to GLQuake.

In the old days, if you wanted to play GLQuake with transparent water, it was
best to vispatch the maps, which was a bit of a cumbersome process.

Mark V has external vis support, you can unzip this to quake\id1\maps and the
original Quake maps will have transparent water.


Make sure you do this right and strip out newlines

Clipboard
-------------------------------------------------------------------------------

copy, screenshot copy, copy ents



External Music Support
-------------------------------------------------------------------------------

Mark V supports external music and uses the system API for hardware accelerated decoding, 
which means the engine performs robustly and responsively even when playing the music.  The opposite is
software decoding, which slows the engine and puts a heavily load on the cpu and cuts into framerates.

Mark V only supports mp3.  mp3 has the deepest and widest support of any music format currently.

id1\music folder mp3 only.  Can't be a pak file, must be in the folder.

You can name them id1/music/track00.mp3 or use the names as they are and remap

[remap example]
id1/music/setmusic.cfg
setmusic 00 track1_sara
setmusic 01 track2_nadia
setmusic 02 track3_rachel
setmusic 03 track4_stephanie
setmusic 04 track5_yasmin



External Texture Support
-------------------------------------------------------------------------------

Mark V provides replacement texture support for:

1) Map and brush model textures
2) Model textures
3) Sprite textures
4) All 2D textures including the console background and status bar

The naming and placement convention is identical to DarkPlaces because that is the right way to do it.

For map replacement textures, they go in the 'textures' folder and for models, they go in the folder with the model which is usually progs.

If the texture is explicitly for a specific map, put them in textures/map folder.  If the textures are specifically for the Quake levels, put them in textures\exmy.


Retexturing 
-------------------------------------------------------------------------------

[todo:screenshot]

Mark V provides some unique tools for retexturing:

1) tool_texturepointer 1 

Load a map and look at a wall, it will display the texture name and size. You 
can test a replacement texture by actually pasting a texturing from a texture editor doing CTRL-V
or copy it using CTRL-C.

2) type 'imagelist' to see a list of textures

3) type 'imagelist unreplaced' to see a list of unreplaced bsp textures

Enhanced Mapping And QuakeC Tools
-------------------------------------------------------------------------------
qcfuncs
tool_inspector 1
qcexec
"copy" 



Quoth classes:
item_artifact_cross
item_artifact_trinity
item_flashlight
monster_army_rocket
monster_bob
monster_death_guard
monster_death_knight
monster_death_lord
monster_deathguard
monster_defender
monster_drole
monster_edie
monster_eliminator
monster_fade
monster_fade_start
monster_gaunt
monster_gug
monster_ogre_flak
monster_polyp
monster_pyro
monster_scourge
monster_sentinel
monster_spawn
monster_teleport
monster_teleport_go
monster_vermis
monster_voreling


id1 classes:

item_armor1
item_armor2
item_armorInv
item_artifact_envirosuit
item_artifact_invisibility
item_artifact_invulnerability
item_artifact_super_damage
item_cells
item_health
item_key1
item_key2
item_megahealth_rot
item_rockets
item_shells
item_sigil
item_spikes
item_weapon
monster_army
monster_boss
monster_death_use
monster_demon1
monster_dog
monster_enforcer
monster_fish
monster_hell_knight
monster_knight
monster_ogre
monster_ogre_marksman
monster_oldone
monster_shalrath
monster_shambler
monster_tarbaby
monster_use
monster_wizard
monster_zombie

rogue

item_flag
item_flag_team1
item_flag_team2
item_lava_spikes
item_multi_rockets
item_plasma
item_powerup_belt
item_powerup_shield
item_random_powerup
item_sphere
item_time_core
item_time_machine
monster_dragon
monster_eel
monster_lava_man
monster_morph
monster_mummy
monster_super_wrath
monster_sword
monster_wrath

hipnotic:

item_artifact_wetsuit
item_hornofconjuring
item_artifact_empathy_shields
monster_gremlin
monster_armagon
monster_spikemine
monster_scourge
monster_decoy

nehahra:

item_artifact_flight
item_artifact_regeneration
item_artifact_resurrection
monster_archgaunt
monster_army2
monster_army3
monster_army4
monster_army5
monster_baron
monster_beard
monster_cook
monster_enf2
monster_enf3
monster_gaunt
monster_horse
monster_hunter
monster_jagger
monster_labguy
monster_library
monster_nehahra
monster_oglib
monster_qforge
monster_qguy
monster_swim
monster_vomitus
monster_wraith

zerstoerer?

item_armor4
item_bloodcube
item_tree
item_wings
item_zerlogo
monster_lt
monster_me
monster_troglodyte
monster_zer



travail:

monster_axegrunt
monster_azoth
monster_azoth_restart
monster_azoth_restart_go
monster_juggernaut
monster_spider
monster_touch
monster_ubs
monster_vermis


what about travail or drake or such, soul of evil.

ASM functions:

.globl C(VGA_UpdatePlanarScreen)
.globl C(VGA_UpdateLinearScreen)
.globl C(D_DrawSpans8)
.globl C(D_DrawZSpans)
.globl C(D_DrawSpans16)
.globl C(D_DrawParticle)
.globl C(D_PolysetCalcGradients)
.globl C(D_PolysetRecursiveTriangle)
.globl C(D_PolysetAff8Start)
.globl C(D_PolysetDrawSpans8)
.globl C(D_PolysetAff8End)
.globl C(D_Aff8Patch)
.globl C(D_PolysetDraw)
.globl C(D_PolysetScanLeftEdge)
.globl C(D_PolysetDrawFinalVerts)
.globl C(D_DrawNonSubdiv)
.globl C(D_DrawTurbulent8Span)
.globl C(D_SpriteDrawSpans)
.globl C(Invert24To16)
.globl C(TransformVector)
.globl C(BoxOnPlaneSide)
.globl C(R_Alias_clip_bottom)
.globl C(R_Alias_clip_top)
.globl C(R_Alias_clip_right)
.globl C(R_Alias_clip_left)
.globl C(R_AliasTransformAndProjectFinalVerts)
.globl C(R_ClipEdge)
.globl C(R_EdgeCodeStart)
.globl C(R_InsertNewEdges)
.globl C(R_RemoveEdges)
.globl C(R_StepActiveU)
.globl C(R_GenerateSpans)
.globl C(R_EdgeCodeEnd)
.globl C(R_SurfacePatch)
.globl C(SND_PaintChannelFrom8)
.globl C(Snd_WriteLinearBlastStereo16)
.globl C(R_Surf16Start)
.globl C(R_DrawSurfaceBlock16)
.globl C(R_Surf16End)
.globl C(R_Surf16Patch)
.globl C(R_Surf8Start)
.globl C(R_DrawSurfaceBlock8_mip0)
.globl C(R_DrawSurfaceBlock8_mip1)
.globl C(R_DrawSurfaceBlock8_mip2)
.globl C(R_DrawSurfaceBlock8_mip3)
.globl C(R_Surf8End)
.globl C(R_Surf8Patch)
.globl C(MaskExceptions)
.globl C(unmaskexceptions)
.globl C(Sys_LowFPPrecision)
.globl C(Sys_HighFPPrecision)
.globl C(Sys_PushFPCW_SetHigh)
.globl C(Sys_PopFPCW)
.globl C(Sys_SetFPCW)
.globl C(MaskExceptions)
.globl C(unmaskexceptions)
.globl C(Sys_LowFPPrecision)
.globl C(Sys_HighFPPrecision)
.globl C(Sys_PushFPCW_SetHigh)
.globl C(Sys_PopFPCW)
.globl C(Sys_SetFPCW)
.globl C(SV_HullPointContents)

