//-------------------------------------------------------------------------------------------
//
// Note:
// Much of the menu structure defined here is accessed internally by CCMDs
// and menu generation code. If you want to design your own menus make sure
// that they are named identically and that links to all important submenus
// are present.
//
//-------------------------------------------------------------------------------------------

DEFAULTLISTMENU
{
	Font "BigFont", "Untranslated"
	LineSpacing 20
	IfGame(Doom)
	{
		Selector "M_SKULL1", -32, -5
		Font "BigUpper", "Red"
		LineSpacing 18
	}
	IfGame(Chex)
	{
		Selector "M_SKULL1", -32, -5
		Font "BigFont", "Green"
	}
	IfGame(Strife)
	{
		Selector "M_CURS1", -28, -5
	}
	IfGame(Heretic, Hexen)
	{
		Selector "M_SLCTR1", -28, -1
	}
}

//-------------------------------------------------------------------------------------------
//
// The main menu. There's a lot of differences here between the games
//
//-------------------------------------------------------------------------------------------

LISTMENU "MainMenu"
{
	IfGame(Doom, Chex)
	{
		LineSpacing 16	// This must account for some single-graphic replacements, so it cannot be widened
// RT begin
		Position -8, 80
// RT end
	}
	IfGame(Strife)
	{
		StaticPatch 84, 2, "M_STRIFE"
		Position 97, 45
	}
	IfGame(Heretic)
	{
		StaticPatch 88, 0, "M_HTIC"
		StaticPatch 40, 10, "M_SKL01"
		StaticPatch 232, 10, "M_SKL00"
		Position 110, 56
	}
	IfGame(Hexen)
	{
		StaticPatch 88, 0, "M_HTIC"
		StaticPatch 37, 80, "FBULB0"
		StaticPatch 278, 80, "FBULA0"
		Position 110, 56
	}

	IfGame(Doom, Strife, Chex)
	{
		PatchItem "M_NGAME", "n", "PlayerclassMenu"
// RT begin
		PatchItem "M_LOADG", "l", "LoadGameMenu", 0
		PatchItem "M_SAVEG", "s", "SaveGameMenu",0
		PatchItem "M_OPTION","o", "RT_OptionsMenu", 0
// RT end
		PatchItem "M_QUITG", "q", "QuitMenu", 0
	}

	IfGame(Heretic, Hexen)
	{
		TextItem "$MNU_NEWGAME", "n", "PlayerclassMenu"
// RT begin
		TextItem "$MNU_OPTIONS", "o", "RT_OptionsMenu"
		TextItem "$MNU_GAMEFILES", "g", "GameFilesMenu"
// RT end
		TextItem "$MNU_QUITGAME", "q", "QuitMenu"
	}
}

//-------------------------------------------------------------------------------------------
//
// Text only variant of the main menu for Doom, Strife and Chex Quest to be used with localized content.
//
//-------------------------------------------------------------------------------------------

LISTMENU "MainMenuTextOnly"
{
	IfGame(Doom, Chex)
	{
		StaticPatch 94, 2, "M_DOOM"
		Position 97, 72
// RT begin
// RT end
	}
	IfGame(Strife)
	{
		StaticPatch 84, 2, "M_STRIFE"
		Position 97, 45
	}
	
	TextItem "$MNU_NEWGAME", "n", "PlayerclassMenu"
// RT begin
	TextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
	TextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
	TextItem "$MNU_OPTIONS", "o", "RT_OptionsMenu"
// RT end
	TextItem "$MNU_QUITGAME", "q", "QuitMenu"
}

//-------------------------------------------------------------------------------------------
//
// Important note about the following template menus:
// Don't even think about replacing them with something that's not an empty menu
// with some static elements only. Proper function is not guaranteed then.
//
//-------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------
//
// The player class menu
// The init code will set the first item to 'autoselect' if it's the only one.
//
//-------------------------------------------------------------------------------------------

ListMenu "PlayerclassMenu"
{
	IfGame(Doom, Heretic, Hexen, Strife)
	{
		NetgameMessage "$NEWGAME"
	}
	IfGame(Chex)
	{
		NetgameMessage "$CNEWGAME"
	}

	IfGame(Doom, Strife, Chex)
	{
		StaticTextCentered 160, 15, "$MNU_CHOOSECLASS"
		Position 48, 63
		PlayerDisplay 220, 63, "20 00 00", "80 00 40"
		MouseWindow 0, 220
	}
	IfGame(Heretic)
	{
		StaticTextCentered 160, 15, "$MNU_CHOOSECLASS"
		Position 80, 50
		PlayerDisplay 220, 50, "20 00 00", "80 00 40"
		MouseWindow 0, 220
	}
	IfGame(Hexen)
	{
		StaticText 34, 24, "$MNU_CHOOSECLASS"
		Position 66, 58
		PlayerDisplay 174, 8, "00 07 00", "40 53 40"
		MouseWindow 0, 174
	}
	// The rest of this menu will be set up based on the actual player definitions.
}

//-------------------------------------------------------------------------------------------
//
// The episode menu
// The init code will set the first item to 'autoselect' if it's the only one.
//
//-------------------------------------------------------------------------------------------

ListMenu "EpisodeMenu"
{
	IfGame(Doom, Heretic, Hexen, Strife)
	{
		NetgameMessage "$NEWGAME"
	}
	IfGame(Chex)
	{
		NetgameMessage "$CNEWGAME"
	}

	IfGame(Doom, Chex)
	{
// RT begin
		Position -8, 80
		StaticPatch -8, 35, "M_EPISOD", 0 , "$MNU_EPISODE"
// RT end
		linespacing 16
	}
	IfGame(Strife)
	{
		Position 48, 63
		StaticText 54, 38, "$MNU_EPISODE"
	}
	IfGame(Heretic, Hexen)
	{
		Position 80, 50
	}
	// items will be filled in by MAPINFO
}

//-------------------------------------------------------------------------------------------
//
// The skill menu
// Most of this will be filled in at runtime
//
//-------------------------------------------------------------------------------------------

ListMenu "SkillMenu"
{
	IfGame(Doom, Chex)
	{
// RT begin
// RT end
		linespacing 16
	}
	IfGame(Strife)
	{
		StaticPatch 96, 14, "M_NGAME", 0, "$MNU_NEWGAME"
	}
	IfGame(Doom, Strife, Chex)
	{
// RT begin
		StaticPatch -8, 35, "M_SKILL", 0, "$MNU_CHOOSESKILL"
		Position -8, 80
// RT end
	}
	IfGame (Heretic)
	{
		Position 38, 30
	}
	IfGame (Hexen)
	{
		StaticText 74, 16, "$MNU_CHOOSESKILL"
		Position 160, 44
		centermenu
	}
}

//-------------------------------------------------------------------------------------------
//
// Raven's game files menu
//
//-------------------------------------------------------------------------------------------

ListMenu "GameFilesMenu"
{
	Position 110, 60
	TextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
	TextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
}

//-------------------------------------------------------------------------------------------
//
// Base definition for load game menu. Only the configurable part is done here
//
//-------------------------------------------------------------------------------------------

ListMenu "LoadGameMenu"
{
	IfGame(Doom, Heretic, Hexen, Strife)
	{
		NetgameMessage "$LOADNET"
	}
	IfGame(Chex)
	{
		NetgameMessage "$CLOADNET"
	}
	CaptionItem "$MNU_LOADGAME"
	Position 80,40
	Class "LoadMenu"	// uses its own implementation
	Size Clean
}

//-------------------------------------------------------------------------------------------
//
// Base definition for save game menu. Only the configurable part is done here
//
//-------------------------------------------------------------------------------------------

ListMenu "SaveGameMenu"
{
	CaptionItem "$MNU_SAVEGAME"
	Position 80,40
	Class "SaveMenu"	// uses its own implementation
	Size Clean
}

//-------------------------------------------------------------------------------------------
//
// The option menu
//
//-------------------------------------------------------------------------------------------

OptionValue "YesNo"
{
	0, "$TXT_NO"
	1, "$TXT_YES"
}

OptionValue "NoYes"
{
	0, "$TXT_YES"
	1, "$TXT_NO"
}

OptionValue "OnOff"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ON"
}

OptionValue "OffOn"
{
	0, "$OPTVAL_ON"
	1, "$OPTVAL_OFF"
}

OptionValue AutoOffOn
{
	-1, "$OPTVAL_AUTO"
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ON"
}

DefaultOptionMenu
{
	Position -15
	IfGame(Heretic, Hexen)
	{
		Position -13
	}
}

OptionMenu "OptionsMenu" protected
{
	Title "$OPTMNU_TITLE"
	Submenu "$OPTMNU_CONTROLS",			"CustomizeControls"
	Submenu "$OPTMNU_MOUSE",			"MouseOptions"
	Submenu "$OPTMNU_JOYSTICK",			"JoystickOptions"
	StaticText " "
	Submenu "$OPTMNU_PLAYER",			"NewPlayerMenu"
	Submenu "$OPTMNU_GAMEPLAY",			"GameplayOptions"
	Submenu "$OPTMNU_COMPATIBILITY",	"CompatibilityOptions"
	Submenu "$OPTMNU_AUTOMAP",			"AutomapOptions"
	Submenu "$OPTMNU_HUD",				"HUDOptions"
	Submenu "$OPTMNU_MISCELLANEOUS",	"MiscOptions"
	Submenu "$OPTMNU_NETWORK",			"NetworkOptions"
	Submenu "$OPTMNU_SOUND",			"SoundOptions"
	Submenu "$OPTMNU_DISPLAY",			"VideoOptions"
	Submenu "$OPTMNU_VIDEO",			"VideoModeMenu"
	StaticText " "
	Submenu "$OS_TITLE", "os_Menu"
	Option "$OPTMNU_SIMPLEON",			"m_simpleoptions", "OnOff"
	
	StaticText " "
	SafeCommand	"$OPTMNU_DEFAULTS",		"reset2defaults"
	SafeCommand	"$OPTMNU_RESETTOSAVED",	"reset2saved"
	SafeCommand	"$OPTMNU_WRITEINI",		"writeini"
	
	Command "$OPTMNU_CONSOLE",			"menuconsole"
	Command "$OPTMNU_OPENCONFIG",		"openconfig"
	Command "$OPTMNU_OPENSCREENSHOTS",	"openscreenshots"
	Command "$OPTMNU_OPENSAVES",		"opensaves"
	StaticText " "
}

// RT begin
LISTMENU "RT_OptionsMenu"
{
	StaticPatch -16, 10, "M_DISOPT"
	Position 45, 35
	

	Font "SmallFont"
	Selector "M_RTSLCT", 0,0
	Linespacing	10
	

	TextItem_RT	"RTMNU_WINDOW_RESOL"
										Linespacing	10
	TextItem_RT	"RTMNU_DXGI"
										Linespacing	10
	TextItem_RT	"RTMNU_VSYNC"
										Linespacing	14
	TextItem_RT	"RTMNU_HDR"
										Linespacing	10
	

	// "Performance"
	TextItem_RT	"RTMNU_MODE"
										Linespacing	10
	TextItem_RT	"RTMNU_PRESET"
										Linespacing	14
	TextItem_RT	"RTMNU_FRAMEGEN"
										Linespacing	10

	// "Visuals"
	// RTMNU_CLASSIC (rt_classic, the retro-renderer blend) is deliberately not
	// offered - same reasoning as RTMNU_HUD_STYLE below, and as RT_OptionsMenuRemix
	// which never listed it. This mod ships one look; d64rt-pins.cfg pins
	// rt_classic 0 on every launch, so the row could only ever fight the pin.
	TextItem_RT	"RTMNU_BLOOM"
										Linespacing	14
	TextItem_RT	"Quality",				"RT_QualityMenu"
										Linespacing	10
	TextItem_RT	"Flashlight",			"RT_FlashlightMenu"
										Linespacing	10

	// "HUD"
	// RTMNU_HUD_STYLE (None / Simple / Classic, i.e. screenblocks 12/11/10)
	// is deliberately not offered - the mod ships one HUD.
	TextItem_RT	"RTMNU_HUD_SIZE"
										Linespacing	18
	TextItem_RT	"HUD Opacity",			"RT_HudMenu"
	// 									Linespacing	18
	// TextItem_RT	"RTMNU_HUD_CROSSHAIR"
	
	TextItem_RT	"Other",				"OptionsMenu"
}

LISTMENU "RT_OptionsMenuRemix"
{
	StaticPatch -16, 10, "M_DISOPT"
	Position 75, 35
	

	Font "SmallFont"
	Selector "M_RTSLCT", 0,0
	Linespacing	10
	

	TextItem_RT	"RTMNU_WINDOW_RESOL"
										Linespacing	14
	TextItem_RT	"RTMNU_VSYNC"
	

	// "Performance"
										Linespacing	10
	TextItem_RT	"RTMNU_MODE"
										Linespacing	10
	TextItem_RT	"RTMNU_PRESET"
										Linespacing	10
	TextItem_RT	"RTMNU_RAYRECONST"
										Linespacing	14
	TextItem_RT	"RTMNU_FRAMEGEN"


	// "Visuals"
										Linespacing	14
	TextItem_RT	"RTMNU_BLOOM"


	// "HUD"  (RTMNU_HUD_STYLE removed - see RT_OptionsMenu)
										Linespacing	10
	TextItem_RT	"RTMNU_HUD_SIZE"
										Linespacing	18
	TextItem_RT	"HUD Opacity",			"RT_HudMenu"
	
	TextItem_RT	"Other",				"OptionsMenu"
}

//
// Ray-tracing quality. Stock OptionMenu items, so no new TextItem_RT key (and
// therefore no engine rebuild) is needed; reached from RT_OptionsMenu.
//
// Two views of the same cvars. RT_QualityMenu is the simplified one -- the
// preset plus the ray-budget sliders this menu had before the performance
// work -- and it is what "Quality" opens. RT_QualityMenuFull adds the content
// budget the preset drives (persistence, effects, per-sprite geometry, lamp
// lights) and is reached from the last item of the simplified menu; Back
// returns to it, so the two are one path rather than two entries in Options.
//
// NOTE: rt_shadow_samples / rt_spp_direct / rt_spp_indirect / rt_restir_* are
// declared RT_CVAR_NOARCH in rt_cvars.inc, i.e. NOT archived - they take effect
// immediately but reset to their compiled default on the next launch.
// rt_quality_preset IS archived, so choosing a preset is what makes a choice
// survive a restart; it re-applies the whole group on load.
//
// rt_gi_bounces / rt_gi_bounce_legacy ARE archived (RT_CVAR), like the two
// ray-depth sliders beside them: a depth is a choice, not a per-session probe.
// The preset table does not drive them yet -- with the legacy weight on, each
// extra bounce is ~6x too bright, so Ultra must not raise the depth until the
// energy fix has been judged (docs/rt-gi-bounces.md, Stage 4 then 5).
//
// Everything these menus touch is deliberately UNPINNED in tools/d64rt-pins.cfg
// -- a pin runs at launch and would overwrite the player's choice every start.
//
OptionValue "RTQualityPresets"
{
	0, "Custom"
	1, "Ultra"
	2, "High (as shipped)"
	3, "Balanced"
	4, "Performance"
}

// rt_gi_bounce_legacy: 1 is the stock weighting -- every bounce past the first
// multiplied by 1/pdf with no BRDF and no cosine, ~2pi too much. 0 is the
// correct throughput of 1: dimmer, less saturated, no stable bright dots.
OptionValue "RTBounceEnergy"
{
	1, "Stock (bright)"
	0, "Physical"
}

// rt_liquid_checkerboard is deliberately NOT in these menus. It is a real
// choice -- 0 shades every stylized liquid at full resolution and drops the
// checkerboard mirror -- but the reflection it trades away is the one thing
// that sells WATER, and a player meeting it in an options list has no way to
// know that. Sludge does not need it: rt_sludge_refl 0 already takes the mud
// bed down the no-split path on its own. Console only, still archived.
OptionMenu "RT_QualityMenu" protected
{
	Title "QUALITY"

	StaticText "Preset", 1
	Option "Quality preset",			"rt_quality_preset",	"RTQualityPresets"
	StaticText "High is exactly what the game shipped with.", 1
	StaticText "Balanced and Performance bound what a firefight leaves", 1
	StaticText "behind - casings, debris, scorch marks, lamp lights.", 1
	StaticText " "

	StaticText "Direct lighting", 1
	Slider "Shadow rays / pixel",		"rt_shadow_samples",	1, 8, 1, 0
	Slider "Direct samples / pixel",	"rt_spp_direct",		1, 8, 1, 0
	StaticText " "
	StaticText "Indirect lighting", 1
	Slider "Indirect samples / pixel",	"rt_spp_indirect",		1, 8, 1, 0
	Slider "Candidate lights",			"rt_restir_initial",	1, 64, 1, 0
	Slider "Spatial reuse taps",		"rt_restir_spatial",	0, 16, 1, 0
	Slider "Temporal history cap",		"rt_restir_mcap",		1, 64, 1, 0
	StaticText " "
	StaticText "Ray depth", 1
	Slider "Bounces per path",			"rt_gi_bounces",		1, 4, 1, 0
	Option "Bounce energy",				"rt_gi_bounce_legacy",	"RTBounceEnergy"
	Slider "Shadow ray depth",			"rt_shadowrays",		1, 8, 1, 0
	Slider "Reflect / refract depth",	"rt_reflrefr_depth",	1, 16, 1, 0
	StaticText " "
	StaticText "Higher values cost GPU time.", 1
	StaticText "Bounces past the shadow ray depth collect glow only.", 1
	StaticText " "
	Submenu "Full settings",			"RT_QualityMenuFull"
	StaticText "Every knob a preset drives, one at a time.", 1
}

//
// The full view. Same preset selector at the top so a wrong turn here is one
// item away from being undone; the sections below it follow the preset table
// in rt_quality.cpp, section for section. Not a 1:1 map either way: rt_gore_max
// and rt_gore_life are in the table with no slider here, and rt_restir_mcap has
// a slider with no table entry.
//
OptionMenu "RT_QualityMenuFull" protected
{
	Title "QUALITY - FULL"

	StaticText "Preset", 1
	Option "Quality preset",			"rt_quality_preset",	"RTQualityPresets"
	StaticText "High is exactly what the game shipped with.", 1
	StaticText "Moving any slider below leaves the preset name behind.", 1
	StaticText " "

	StaticText "Persistence  -  the cost that grows as you play", 1
	Option "Drop shell casings",		"d64_dropcasings",		"OnOff"
	Option "Impact debris",				"rt_spark_debris",		"OnOff"
	Slider "Particle pool",				"rt_spark_max",			200, 2000, 100, 0
	Slider "Scorch marks kept",			"rt_arc_burn_max",		0, 128, 8, 0
	StaticText "Casings and scorch marks never expire. 40s of held", 1
	StaticText "trigger measured 490 -> 2009 primitives, still rising.", 1
	StaticText " "

	StaticText "Effects", 1
	Slider "Dust motes",				"rt_dust_max",			0, 1400, 100, 0
	Slider "Smoke puffs",				"rt_smoke_budget",		0, 128, 8, 0
	Slider "Smoke samples / froxel",	"rt_smoke_spp",			1, 8, 1, 0
	Slider "Impact arcs",				"rt_arc_max",			0, 200, 10, 0
	Slider "Arc lights",				"rt_arc_glow_max",		0, 128, 8, 0
	StaticText " "

	StaticText "Per-sprite geometry", 1
	Slider "Contact shadow detail",		"rt_sprite_ao_segments", 6, 32, 2, 0
	Slider "Contact shadow distance",	"rt_sprite_ao_dist",	0, 40, 2, 0
	Slider "Sprite shadow planes",		"rt_sprite_shadow_planes", 0, 4, 1, 0
	Slider "Sprite shadow distance",	"rt_sprite_shadow_dist", 0, 60, 4, 0
	StaticText " "

	StaticText "Lamp lights", 1
	Slider "Ceiling bulb lights",		"rt_ceiling_edge_max",	0, 1024, 64, 0
	Slider "Single bulb lights",		"rt_solo_lamp_max",		0, 384, 32, 0
	Slider "Panel lights",				"rt_faux_lamp_max",		0, 256, 32, 0
	Slider "Wall strip lights",			"rt_wall_strip_max",	0, 128, 8, 0
	StaticText " "

	StaticText "Direct lighting", 1
	Slider "Shadow rays / pixel",		"rt_shadow_samples",	1, 8, 1, 0
	Slider "Direct samples / pixel",	"rt_spp_direct",		1, 8, 1, 0
	StaticText " "
	StaticText "Indirect lighting", 1
	Slider "Indirect samples / pixel",	"rt_spp_indirect",		1, 8, 1, 0
	Slider "Candidate lights",			"rt_restir_initial",	1, 64, 1, 0
	Slider "Spatial reuse taps",		"rt_restir_spatial",	0, 16, 1, 0
	Slider "Temporal history cap",		"rt_restir_mcap",		1, 64, 1, 0
	StaticText " "
	StaticText "Ray depth", 1
	Slider "Bounces per path",			"rt_gi_bounces",		1, 4, 1, 0
	Option "Bounce energy",				"rt_gi_bounce_legacy",	"RTBounceEnergy"
	Slider "Shadow ray depth",			"rt_shadowrays",		1, 8, 1, 0
	Slider "Reflect / refract depth",	"rt_reflrefr_depth",	1, 16, 1, 0
	StaticText " "
	StaticText "Persistence and effects cost CPU; the rest cost GPU.", 1
}

//
// HUD opacity. d64_hud_alpha is declared in rt/wad/cvarinfo.lmp and is read at
// draw time by the ifcvarint ladder in d64r-mugshot.pk3's SBARINFO - the only
// way to make the SBARINFO header alpha (a float literal) a runtime setting.
// The ladder has one branch per multiple of 10, so the step here must stay 10.
//
OptionValue "D64HudStyles"
{
	0, "Classic"
	1, "Modern"
}

OptionMenu "RT_HudMenu" protected
{
	Title "HUD"

	Option "HUD Style",					"d64_hud_style",		"D64HudStyles"
	StaticText " "
	Slider "HUD Opacity",				"d64_hud_alpha",		0, 100, 10, 0
	StaticText " "
	StaticText "0 hides the status bar.", 1
	StaticText " "
	Option "Hide HUD in menus",			"rt_menu_hidehud",		"OnOff"
	StaticText "Stops long option pages reading through the", 1
	StaticText "ammo counters. Automap and console keep the HUD.", 1
}

//
// Flashlight. All cvars here are RT_CVAR (archived), declared in rt_cvars.inc
// next to rt_flsh -- see RT_AddFlashlight in rt_weapon.cpp for how the battery
// state machine (on -> dying flicker -> recharge -> repeat) uses them.
//
OptionMenu "RT_FlashlightMenu" protected
{
	Title "FLASHLIGHT"

	Option "Enabled",					"rt_flsh",				"OnOff"
	StaticText " "

	StaticText "Battery", 1
	Option "Battery drain",				"rt_flsh_battery",		"OnOff"
	StaticText "Off = never dims or needs to recharge.", 1
	Slider "Battery lifetime (secs)",	"rt_flsh_on_secs",		5, 120, 5, 0
	Slider "Dying flicker (secs)",		"rt_flsh_die_secs",		1, 15, 1, 0
	Slider "Recharge time (secs)",		"rt_flsh_off_secs",		1, 60, 1, 0
	Slider "Idle recharge rate",		"rt_flsh_idle_recharge", 0, 4, 0.25, 2
	StaticText "How fast the battery refills while switched off,", 1
	StaticText "as a fraction of the post-burnout recharge rate.", 1
	Slider "Timing randomness",			"rt_flsh_jitter",		0, 1, 0.05, 2
	StaticText " "

	StaticText "Beam", 1
	Slider "Brightness",				"rt_flsh_intensity",	20, 400, 10, 0
	ColorPicker "Color",					"rt_flsh_color"
		StaticText " "

		StaticText "Sound", 1
		Option "Enable battery sounds",		"d64rt_flsh_sound",		"OnOff"
		Slider "Sound volume",				"d64rt_flsh_sound_vol", 0, 1, 0.05, 2
}

// RT end

//-------------------------------------------------------------------------------------------
//
// The player menu
//
//-------------------------------------------------------------------------------------------

OptionValue "Gender"
{
	0, "$OPTVAL_MALE"
	1, "$OPTVAL_FEMALE"
	2, "$OPTVAL_NEUTRAL"
	3, "$OPTVAL_OTHER"
}

OptionValue "PlayerTeam"
{
	// Filled in programmatically
}

OptionValue "PlayerColors"
{
	// Filled in programmatically
}

OptionValue "PlayerClass"
{
	// Filled in programmatically
}

OptionValue "PlayerSkin"
{
	// Filled in programmatically
}

/*
	IfGame(Doom, Heretic, Strife, Chex)
	{
		MouseWindow 0, 220
		PlayerDisplay 220, 48, "20 00 00", "80 00 40", 1, "PlayerDisplay"
	}
	IfGame(Hexen)
	{
		MouseWindow 0, 220
		PlayerDisplay 220, 48, "00 07 00", "40 53 40", 1, "PlayerDisplay"
	}
*/

OptionMenu "NewPlayerMenu" protected
{
	Title "$MNU_PLAYERSETUP"
	PlayerNameField "$PLYRMNU_NAME"
	PlayerTeamItem "$PLYRMNU_TEAM", "PlayerTeam"
	PlayerColorItem "$PLYRMNU_PLAYERCOLOR", "PlayerColors"
	PlayerColorSlider "$PLYRMNU_RED", 0
	PlayerColorSlider "$PLYRMNU_GREEN", 1
	PlayerColorSlider "$PLYRMNU_BLUE", 2
	PlayerClassItem "$PLYRMNU_PLAYERCLASS", "PlayerClass"
	PlayerSkinItem "$PLYRMNU_PLAYERSKIN", "PlayerSkin"
	PlayerGenderItem "$PLYRMNU_PLAYERGENDER", "Gender"
	AutoaimSlider "$PLYRMNU_AUTOAIM"
	Option "$PLYRMNU_VERTSPREAD", vertspread, "OnOff"
	PlayerSwitchOnPickupItem "$PLYRMNU_SWITCHONPICKUP", "OffOn"
	Option "$PLYRMNU_ALWAYSRUN", cl_run, "OnOff"
	Class "NewPlayerMenu"
}

// The old player menu is kept for mods that redefine it.
ListMenu "PlayerMenu"
{
	StaticTextCentered 160, 6, "$MNU_PLAYERSETUP"
	Font "SmallFont"
	Linespacing 14
	Position 48, 36

	IfGame (Doom, Strife, Chex)
	{
		PlayerNameBox "$PLYRMNU_NAME", 0, "Playerbox"
		Selector "-", -16, -1
	}
	IfGame(Heretic, Hexen)
	{
		PlayerNameBox "$PLYRMNU_NAME", 5, "Playerbox"
		Selector "-", -16, 1
	}
	IfGame(Doom, Heretic, Strife, Chex)
	{
		MouseWindow 0, 220
		PlayerDisplay 220, 48, "20 00 00", "80 00 40", 1, "PlayerDisplay"
	}
	IfGame(Hexen)
	{
		MouseWindow 0, 220
		PlayerDisplay 220, 48, "00 07 00", "40 53 40", 1, "PlayerDisplay"
	}

	ValueText "$PLYRMNU_TEAM", "Team"
	ValueText "$PLYRMNU_PLAYERCOLOR", "Color"
	Linespacing 10
	Slider "$PLYRMNU_RED", "Red", 0, 255, 16
	Slider "$PLYRMNU_GREEN", "Green", 0, 255, 16
	Linespacing 14
	Slider "$PLYRMNU_BLUE", "Blue", 0, 255, 16
	ValueText "$PLYRMNU_PLAYERCLASS", "Class"
	ValueText "$PLYRMNU_PLAYERSKIN", "Skin"
	ValueText "$PLYRMNU_PLAYERGENDER", "Gender", "Gender"
	Slider "$PLYRMNU_AUTOAIM", "Autoaim", 0, 35, 1
	ValueText "$PLYRMNU_VERTSPREAD", vertspread, "OnOff"
	ValueText "$PLYRMNU_SWITCHONPICKUP", "Switch", "OffOn"
	ValueText "$PLYRMNU_ALWAYSRUN", "AlwaysRun", "OnOff"
	Class "PlayerMenu"
}

//-------------------------------------------------------------------------------------------
//
// Controls Menu
//
//-------------------------------------------------------------------------------------------

OptionValue "Layouts"
{
	0, "$OPTVAL_MODERN"
	1, "$OPTVAL_CLASSICZ"
	2, "$OPTVAL_MODERNLEFT"
}

OptionMenu "CustomizeControls" protected
{
	Title "$CNTRLMNU_TITLE"

	Submenu    "$CNTRLMNU_ACTION"      , "ActionControlsMenu"
	Submenu    "$CNTRLMNU_WEAPONS"     , "WeaponsControlMenu"
	Submenu    "$CNTRLMNU_INVENTORY"   , "InventoryControlsMenu"
	Submenu    "$MAPCNTRLMNU_CONTROLS" , "MapControlsMenu"
	Submenu    "$CNTRLMNU_OTHER"       , "OtherControlsMenu"
	Submenu    "$CNTRLMNU_POPUPS"      , "StrifeControlsMenu"
	Submenu    "$MNU_MULTIPLAYER"        , "ChatControlsMenu"
	StaticText ""
	Option "$CNTRLMNU_LAYOUT",			"cl_defaultconfiguration", "Layouts"
	SafeCommand "$OPTMNU_DEFAULTS",		"resetb2defaults"
}

OptionMenu "ActionControlsMenu" protected
{
	Title "$CNTRLMNU_ACTION_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_ATTACK"           , "+attack"
	Control    "$CNTRLMNU_ALTATTACK"        , "+altattack"
	Control    "$CNTRLMNU_RELOAD"           , "+reload"
	Control    "$CNTRLMNU_ZOOM"             , "+zoom"

	StaticText ""
	Control    "$CNTRLMNU_USE"              , "+use"

	StaticText ""
	Control    "$CNTRLMNU_FORWARD"          , "+forward"
	Control    "$CNTRLMNU_BACK"             , "+back"
	Control    "$CNTRLMNU_MOVELEFT"         , "+moveleft"
	Control    "$CNTRLMNU_MOVERIGHT"        , "+moveright"

	StaticText ""
	Control    "$CNTRLMNU_TURNLEFT"         , "+left"
	Control    "$CNTRLMNU_TURNRIGHT"        , "+right"
	Control    "$CNTRLMNU_TURN180"          , "turn180"

	StaticText ""
	Control    "$CNTRLMNU_JUMP"             , "+jump"
	Control    "$CNTRLMNU_CROUCH"           , "+crouch"
	Control    "$CNTRLMNU_TOGGLECROUCH"     , "crouch"

	StaticText ""
	Control    "$CNTRLMNU_MOVEUP"           , "+moveup"
	Control    "$CNTRLMNU_MOVEDOWN"         , "+movedown"
	Control    "$CNTRLMNU_LAND"             , "land"

	StaticText ""
	Control    "$CNTRLMNU_MOUSELOOK"        , "+mlook"
	Control    "$CNTRLMNU_KEYBOARDLOOK"     , "+klook"
	Control    "$CNTRLMNU_LOOKUP"           , "+lookup"
	Control    "$CNTRLMNU_LOOKDOWN"         , "+lookdown"
	Control    "$CNTRLMNU_CENTERVIEW"       , "centerview"

	StaticText ""
	Control    "$CNTRLMNU_RUN"              , "+speed"
	Control    "$CNTRLMNU_TOGGLERUN"        , "toggle cl_run"
	Control    "$CNTRLMNU_STRAFE"           , "+strafe"
}

OptionMenu "ChatControlsMenu" protected
{
	Title "$MNU_MULTIPLAYER"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_SCOREBOARD"       , "+showscores"
	Control    "$CNTRLMNU_TOGGLESCOREBOARD" , "togglescoreboard"

	StaticText ""
	Control    "$CNTRLMNU_SAY"     , "messagemode"
	Control    "$CNTRLMNU_TEAMSAY" , "messagemode2"
}

OptionMenu "WeaponsControlMenu" protected
{
	Title "$CNTRLMNU_WEAPONS_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_NEXTWEAPON"     , "weapnext"
	Control    "$CNTRLMNU_PREVIOUSWEAPON" , "weapprev"

	StaticText ""
	Control    "$CNTRLMNU_SLOT1"          , "slot 1"
	Control    "$CNTRLMNU_SLOT2"          , "slot 2"
	Control    "$CNTRLMNU_SLOT3"          , "slot 3"
	Control    "$CNTRLMNU_SLOT4"          , "slot 4"
	Control    "$CNTRLMNU_SLOT5"          , "slot 5"
	Control    "$CNTRLMNU_SLOT6"          , "slot 6"
	Control    "$CNTRLMNU_SLOT7"          , "slot 7"
	Control    "$CNTRLMNU_SLOT8"          , "slot 8"
	Control    "$CNTRLMNU_SLOT9"          , "slot 9"
	Control    "$CNTRLMNU_SLOT0"          , "slot 0"

	StaticText ""
	Control    "$CNTRLMNU_USER1"            , "+user1"
	Control    "$CNTRLMNU_USER2"            , "+user2"
	Control    "$CNTRLMNU_USER3"            , "+user3"
	Control    "$CNTRLMNU_USER4"            , "+user4"
}

OptionMenu "InventoryControlsMenu" protected
{
	Title "$CNTRLMNU_INVENTORY_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_USEITEM"      , "invuse"
	Control    "$CNTRLMNU_USEALLITEMS"  , "invuseall"

	StaticText ""
	Control    "$CNTRLMNU_NEXTITEM"     , "invnext"
	Control    "$CNTRLMNU_PREVIOUSITEM" , "invprev"

	StaticText ""
	Control    "$CNTRLMNU_DROPITEM"     , "invdrop"
	Control    "$CNTRLMNU_QUERYITEM"    , "invquery"

	StaticText ""
	Control    "$CNTRLMNU_DROPWEAPON"   , "weapdrop"
}

OptionMenu "OtherControlsMenu" protected
{
	Title "$CNTRLMNU_OTHER_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_AUTOMAP"         , "togglemap"

	StaticText ""
	Control    "$CNTRLMNU_CHASECAM"        , "chase"
	Control    "$CNTRLMNU_COOPSPY"         , "spynext"

	StaticText ""
	Control    "$CNTRLMNU_SCREENSHOT"      , "screenshot"
	Control    "$CNTRLMNU_CONSOLE"         , "toggleconsole"
	Control    "$CNTRLMNU_PAUSE"           , "pause"

	StaticText ""
	Control    "$CNTRLMNU_DISPLAY_INC"     , "sizeup"
	Control    "$CNTRLMNU_DISPLAY_DEC"     , "sizedown"
	Control    "$CNTRLMNU_TOGGLE_MESSAGES" , "togglemessages"
	Control    "$CNTRLMNU_ADJUST_GAMMA"    , "bumpgamma"

	StaticText ""
	Control    "$CNTRLMNU_OPEN_HELP"       , "menu_help"
	Control    "$CNTRLMNU_OPEN_SAVE"       , "menu_save"
	Control    "$CNTRLMNU_OPEN_LOAD"       , "menu_load"
	Control    "$CNTRLMNU_OPEN_OPTIONS"    , "menu_options"
	Control    "$CNTRLMNU_OPEN_DISPLAY"    , "menu_display"
	Control    "$CNTRLMNU_EXIT_TO_MAIN"    , "menu_endgame"
	Control    "$CNTRLMNU_MENU_QUIT"       , "menu_quit"

	StaticText ""
	Control    "$CNTRLMNU_QUICKSAVE"       , "quicksave"
	Control    "$CNTRLMNU_QUICKLOAD"       , "quickload"
}

OptionMenu "StrifeControlsMenu" protected
{
	Title "$CNTRLMNU_POPUPS_TITLE"
	ScrollTop 2
	StaticTextSwitchable "$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	Control    "$CNTRLMNU_MISSION" , "showpop 1"
	Control    "$CNTRLMNU_KEYS"    , "showpop 2"
	Control    "$CNTRLMNU_STATS"   , "showpop 3"
}

//-------------------------------------------------------------------------------------------
//
// Mouse Menu
//
//-------------------------------------------------------------------------------------------

OptionValue "Corners"
{
	-1, "$OPTVAL_OFF"
	0, "$OPTVAL_UPPERLEFT"
	1, "$OPTVAL_UPPERRIGHT"
	2, "$OPTVAL_LOWERLEFT"
	3, "$OPTVAL_LOWERRIGHT"
}

OptionValue "MenuMouse"
{
	0, "$TXT_NO"
	1, "$TXT_YES"
	2, "$OPTVAL_TOUCHSCREENLIKE"
}

OptionString "Cursors"
{
	"None", "$OPTVAL_DEFAULT"
	"cursor", "$OPTSTR_SIMPLEARROW"
	"doomcurs", "$OPTVAL_DOOM"
	"herecurs", "$OPTSTR_HERETIC"
	"hexncurs", "$OPTVAL_HEXEN"
	"strfcurs", "$OPTVAL_STRIFE"
	"chexcurs", "$OPTSTR_CHEX"
	"-", "$OPTSTR_SYSTEMCURSOR"
}

OptionMenu "MouseOptions" protected
{
	Title "$MOUSEMNU_TITLE"
	Option "$MOUSEMNU_ENABLEMOUSE",		"use_mouse", "YesNo"
	Option "$MOUSEMNU_MOUSEINMENU",		"m_use_mouse", "MenuMouse", "use_mouse"
	Option "$MOUSEMNU_SHOWBACKBUTTON",	"m_show_backbutton", "Corners", "use_mouse"
	IfOption(Windows)
	{
		Option "$MOUSEMNU_SWAPBUTTONS", "m_swapbuttons", "YesNo"
	}
	Option "$MOUSEMNU_CURSOR",			"vid_cursor", "Cursors"
	StaticText 	""
	Slider "$MOUSEMNU_SENSITIVITY_X",	"m_sensitivity_x", 0.1, 8, 0.05
	Slider "$MOUSEMNU_SENSITIVITY_Y",	"m_sensitivity_y", 0.1, 8, 0.05
	StaticText 	""
	Slider "$MOUSEMNU_TURNSPEED",		"m_yaw", 0, 2.5, 0.1
	Slider "$MOUSEMNU_MOUSELOOKSPEED",	"m_pitch", 0, 2.5, 0.1
	Slider "$MOUSEMNU_FORWBACKSPEED",	"m_forward", 0, 2.5, 0.1
	Slider "$MOUSEMNU_STRAFESPEED",		"m_side", 0, 2.5, 0.1
	StaticText 	""
	Option "$MOUSEMNU_ALWAYSMOUSELOOK",	"freelook", "OnOff"
	Option "$MOUSEMNU_INVERTMOUSEX",	"invertmousex", "OnOff"
	Option "$MOUSEMNU_INVERTMOUSE",		"invertmouse", "OnOff"
	Option "$MOUSEMNU_LOOKSPRING",		"lookspring", "OnOff"
	Option "$MOUSEMNU_LOOKSTRAFE",		"lookstrafe", "OnOff"
}


//-------------------------------------------------------------------------------------------
//
// Joystick Menu
//
//-------------------------------------------------------------------------------------------

OptionMenu "JoystickOptionsDefaults" protected
{
	Title "$JOYMNU_OPTIONS"
	Option "$JOYMNU_ENABLE", "use_joystick", "YesNo"
	Option "$JOYMNU_NOMENU", "m_blockcontrollers", "YesNo"
	IfOption(Windows)
	{
		Option "$JOYMNU_DINPUT", "joy_dinput", "YesNo"
		Option "$JOYMNU_XINPUT", "joy_xinput", "YesNo"
		Option "$JOYMNU_PS2", "joy_ps2raw", "YesNo"
	}
	StaticText ""
	StaticTextSwitchable "$JOYMNU_NOCON", "$JOYMNU_CONFIG", "ConfigureMessage"
	StaticTextSwitchable " ", "$JOYMNU_DISABLED1", "ConnectMessage1"
	StaticTextSwitchable " ", "$JOYMNU_DISABLED2", "ConnectMessage2"

	// The rest will be filled in by joystick code if devices get connected or disconnected
}

OptionMenu "JoystickOptions" protected
{
	Title "$JOYMNU_OPTIONS"
}

OptionValue "JoyAxisMapNames"
{
	-1, "$OPTVAL_NONE"
	0, "$OPTVAL_TURNING"
	1, "$OPTVAL_LOOKINGUPDOWN"
	2, "$OPTVAL_MOVINGFORWARD"
	3, "$OPTVAL_STRAFING"
	4, "$OPTVAL_MOVINGUPDOWN"
}

OptionValue "Inversion"
{
	0, "$OPTVAL_NOTINVERTED"
	1, "$OPTVAL_INVERTED"
}

OptionMenu "JoystickConfigMenu" protected
{
	Title "$JOYMNU_TITLE"
	Class "JoystickConfigMenu"
	// Will be filled in by joystick code.
}


//-------------------------------------------------------------------------------------------
//
// Video Menu
//
//-------------------------------------------------------------------------------------------

OptionValue BlendMethods
{
	0.0, "$OPTVAL_CLASSIC"
	1.0, "$OPTVAL_PRECISE"
}

OptionValue SkyModes
{
	0.0, "$OPTVAL_NORMAL"
	1.0, "$OPTVAL_STRETCH"
	2.0, "$OPTVAL_CAPPED"
}

OptionValue RocketTrailTypes
{
	0.0, "$OPTVAL_OFF"
	1.0, "$OPTVAL_PARTICLES"
	2.0, "$OPTVAL_SPRITES"
	3.0, "$OPTVAL_SPRITESPARTICLES"
}

OptionValue BloodTypes
{
	0.0, "$OPTVAL_SPRITES"
	1.0, "$OPTVAL_SPRITESPARTICLES"
	2.0, "$OPTVAL_PARTICLES"
}

OptionValue PuffTypes
{
	0.0, "$OPTVAL_SPRITES"
	1.0, "$OPTVAL_PARTICLES"
	2.0, "$OPTVAL_SPRITESPARTICLES"
}

OptionValue Wipes
{
	0.0, "$OPTVAL_NONE"
	1.0, "$OPTVAL_MELT"
	2.0, "$OPTVAL_BURN"
	3.0, "$OPTVAL_CROSSFADE"
}

OptionValue Endoom
{
	0.0, "$OPTVAL_OFF"
	1.0, "$OPTVAL_ON"
	2.0, "$OPTVAL_ONLYMODIFIED"
}

OptionValue Contrast
{
	0.0, "$OPTVAL_OFF"
	1.0, "$OPTVAL_ON"
	2.0, "$OPTVAL_SMOOTH_1"
}

OptionValue Fuzziness
{
	0.0, "$OPTVAL_TRANSLUCENT"
	1.0, "$OPTVAL_FUZZ"
	2.0, "$OPTVAL_SHADOW"
}

OptionValue VanillaTrans
{
	0.0, "$OPTVAL_VTFZDOOM"
	1.0, "$OPTVAL_VTFVANILLA"
	2.0, "$OPTVAL_VTAZDOOM"
	3.0, "$OPTVAL_VTAVANILLA"
}

OptionValue PreferBackend
{
	0, "$OPTVAL_OPENGL"
	1, "$OPTVAL_VULKAN"
	2, "$OPTVAL_OPENGLES"
}

OptionMenu "TrueColorOptions" protected
{
	Title "$TCMNU_TITLE"
	StaticText " "
	Option "$TCMNU_MINFILTER",				"r_minfilter", "OnOff"
	Option "$TCMNU_MAGFILTER",				"r_magfilter", "OnOff"
	Option "$TCMNU_MIPMAP",					"r_mipmap", "OnOff"
}

OptionMenu "SWROptions" protected
{
	Title "$DSPLYMNU_SWOPT"
	Submenu "$DSPLYMNU_TCOPT",			"TrueColorOptions"
	Option "$DSPLYMNU_BLENDMETHOD",				"r_blendmethod", "BlendMethods"
	StaticText " "
	Option "$DSPLYMNU_SKYMODE",					"r_skymode", "SkyModes"
	Option "$DSPLYMNU_LINEARSKY",				"r_linearsky", "OnOff"
	Option "$DSPLYMNU_GZDFULLBRIGHT",			"r_fullbrightignoresectorcolor", "OnOff"
	Option "$DSPLYMNU_SCALEFUZZ",				"r_fuzzscale", "OnOff"
	Option "$DSPLYMNU_MODELS",					"r_models", "OnOff"
}

OptionMenu "VideoOptions" protected
{
	Title "$DSPLYMNU_TITLE"

	Submenu "$DSPLYMNU_GLOPT", 			"OpenGLOptions"
	Submenu "$DSPLYMNU_SWOPT", 			"SWROptions"
	Submenu "$DSPLYMNU_VKOPT",			"VKOptions"
	Submenu "$GLMNU_TEXOPT", 			"GLTextureGLOptions"
	Submenu "$GLMNU_DYNLIGHT",			"GLLightOptions"
	StaticText " "
	Slider "$DSPLYMNU_SCREENSIZE",				"screenblocks", 				3.0, 12.0, 1.0, 0

	Slider "$DSPLYMNU_GAMMA",					"vid_gamma",					0.75, 3.0, 0.05, 2
	Slider "$DSPLYMNU_BRIGHTNESS",				"vid_brightness",				-0.8,0.8, 0.05,2
	Slider "$DSPLYMNU_CONTRAST",				"vid_contrast",	   				0.1, 3.0, 0.1
	Slider "$DSPLYMNU_SATURATION",				"vid_saturation",  				-3.0, 3.0, 0.25, 2
	StaticText " "
	Slider "$DSPLYMNU_FOV",						"fov",							75.0, 120.0, 0.1, 1
	StaticText " "
	Option "$DSPLYMNU_SPRITESHADOW",			"r_actorspriteshadow", "SpriteShadowModes"
	Option "$DSPLYMNU_CUSTOMINVERTMAP",			"cl_customizeinvulmap", "OnOff"
	ColorPicker "$DSPLYMNU_CUSTOMINVERTC1",		"cl_custominvulmapcolor1"
	ColorPicker "$DSPLYMNU_CUSTOMINVERTC2",		"cl_custominvulmapcolor2"
	Option "$DSPLYMNU_WIPETYPE",				"wipetype", "Wipes"
	Option "$DSPLYMNU_DRAWFUZZ",				"r_drawfuzz", "Fuzziness"
	Option "$DSPLYMNU_OLDTRANS",				"r_vanillatrans", "VanillaTrans"
	Option "$DSPLYMNU_FAKECONTRAST",			"r_fakecontrast", "Contrast"
	Option "$DSPLYMNU_ROCKETTRAILS",			"cl_rockettrails", "RocketTrailTypes"
	Option "$DSPLYMNU_BLOODTYPE",				"cl_bloodtype", "BloodTypes"
	Option "$DSPLYMNU_PUFFTYPE",				"cl_pufftype", "PuffTypes"
	Slider "$DSPLYMNU_MAXPARTICLES",			"r_maxparticles", 100, 10000, 100, 0
	Slider "$DSPLYMNU_MAXDECALS",				"cl_maxdecals", 0, 10000, 100, 0
	Option "$DSPLYMNU_PLAYERSPRITES",			"r_drawplayersprites", "OnOff"
	Option "$DSPLYMNU_DEATHCAM",				"r_deathcamera", "OnOff"
	Option "$DSPLYMNU_TELEZOOM",				"telezoom", "OnOff"
	Slider "$DSPLYMNU_QUAKEINTENSITY",			"r_quakeintensity", 0.0, 1.0, 0.05, 2
	Option "$DSPLYMNU_NOMONSTERINTERPOLATION",	"nomonsterinterpolation", "NoYes"
}


//-------------------------------------------------------------------------------------------
//
// HUD menu
//
//-------------------------------------------------------------------------------------------

OptionValue CrosshairHealthTypes
{
	0.0, "$TXT_NO"
	1.0, "$OPTVAL_YES_STANDARD"
	2.0, "$OPTVAL_YES_ENHANCED"
}

OptionValue DisplayTagsTypes
{
	0.0, "$OPTVAL_NONE"
	1.0, "$OPTVAL_ITEMS"
	2.0, "$OPTVAL_WEAPONS"
	3.0, "$OPTVAL_BOTH"
}

OptionValue TextColors
{
	0.0, "$C_BRICK"
	1.0, "$C_TAN"
	2.0, "$C_GRAY"
	3.0, "$C_GREEN"
	4.0, "$C_BROWN"
	5.0, "$C_GOLD"
	6.0, "$C_RED"
	7.0, "$C_BLUE"
	8.0, "$C_ORANGE"
	9.0, "$C_WHITE"
	10.0, "$C_YELLOW"
	11.0, "$C_DEFAULT"
	12.0, "$C_BLACK"
	13.0, "$C_LIGHTBLUE"
	14.0, "$C_CREAM"
	15.0, "$C_OLIVE"
	16.0, "$C_DARKGREEN"
	17.0, "$C_DARKRED"
	18.0, "$C_DARKBROWN"
	19.0, "$C_PURPLE"
	20.0, "$C_DARKGRAY"
	21.0, "$C_CYAN"
	22.0, "$C_ICE"
	23.0, "$C_FIRE"
	24.0, "$C_SAPPHIRE"
	25.0, "$C_TEAL"
}

OptionValue Crosshairs
{
	// will be filled in from the XHAIRS lump
}

OptionValue ZDoomHexen
{
	0.0, "$OPTVAL_ZDOOM"
	1.0, "$OPTVAL_HEXEN"
}

OptionValue ZDoomStrife
{
	0.0, "$OPTVAL_ZDOOM"
	1.0, "$OPTVAL_STRIFE"
}

OptionMenu "HUDOptions" protected
{
	Title "$HUDMNU_TITLE"
	Submenu "$HUDMNU_SCALEOPT",				"ScalingOptions"
	Submenu "$HUDMNU_ALTHUD",				"AltHudOptions"
	Submenu "$HUDMNU_MESSAGE", 				"MessageOptions"
	Submenu "$HUDMNU_FLASH", 				"FlashOptions"
	Submenu "$DSPLYMNU_SCOREBOARD", 		"ScoreboardOptions"
	Submenu "$HUDMNU_FONTOPTIONS",			"FontOptions"
	StaticText " "
	Option "$HUDMNU_CROSSHAIRON",			"crosshairon", "OnOff"
	Option "$HUDMNU_CROSSHAIR",				"crosshair", "Crosshairs"
	Option "$HUDMNU_FORCECROSSHAIR",		"crosshairforce", "OnOff"
	Option "$HUDMNU_GROWCROSSHAIR",			"crosshairgrow", "OnOff"
	ColorPicker "$HUDMNU_CROSSHAIRCOLOR", 	"crosshaircolor"
	Option "$HUDMNU_CROSSHAIRHEALTH",		"crosshairhealth", "CrosshairHealthTypes"
	Slider "$HUDMNU_CROSSHAIRSCALE",		"crosshairscale", 0.0, 2.0, 0.05, 2
	StaticText " "
	Option "$HUDMNU_NAMETAGS",				"displaynametags", "DisplayTagsTypes"
	Option "$HUDMNU_NAMETAGCOLOR",			"nametagcolor", "TextColors", "displaynametags"
	Option "$HUDMNU_OLDOUCH",				"st_oldouch", "OnOff"
	StaticText " "
	Slider "$DSPLYMNU_MOVEBOB",				"movebob", 0, 1.0, 0.05, 2
	Slider "$DSPLYMNU_STILLBOB",			"stillbob", 0, 1.0, 0.05, 2
	Slider "$DSPLYMNU_BOBSPEED",			"wbobspeed", 0, 2.0, 0.1
	Slider "$DSPLYMNU_BOBFIRE",				"wbobfire", 0, 1.0, 0.1
	StaticText " "
	Slider "$DSPLYMNU_MENUDIM",					"dimamount", 0, 1.0, 0.05, 2
	ColorPicker "$DSPLYMNU_DIMCOLOR",			"dimcolor"

}

OptionMenu "FlashOptions" protected
{
	Title "$HUDMNU_FLASH"
	Option "$HUDMNU_HEXENFLASHES",			"pf_hexenweaps", "ZDoomHexen"
	Option "$HUDMNU_POISONFLASHES",			"pf_poison", "ZDoomHexen"
	Option "$HUDMNU_ICEFLASHES",			"pf_ice", "ZDoomHexen"
	Option "$HUDMNU_HAZARDFLASHES",			"pf_hazard", "ZDoomStrife"
	StaticText " "
	Slider "$DSPLYMNU_BLOODFADE",				"blood_fade_scalar", 0.0, 1.0, 0.05, 2
	Slider "$DSPLYMNU_PICKUPFADE",				"pickup_fade_scalar", 0.0, 1.0, 0.05, 2
	Slider "$DSPLYMNU_WATERFADE",				"underwater_fade_scalar", 0.0, 1.0, 0.05, 2
}

OptionMenu "ScalingOptions" protected
{
	Title "$SCALEMNU_TITLE"
	ScaleSlider "$HUDMNU_UISCALE",				"uiscale", 0.0, 8.0, 1.0, "$SCALEMNU_ADAPT"
	StaticText " "
	// These will need a new control type.
	StaticText "$SCALEMNU_OVERRIDE", 1
	ScaleSlider "$SCALEMNU_MESSAGES", 			"con_scaletext", 0.0, 8.0, 1.0, "$SCALEMNU_USEUI"
	ScaleSlider "$SCALEMNU_CONSOLE", 			"con_scale", 0.0, 8.0, 1.0, "$SCALEMNU_USEUI"
	ScaleSlider "$SCALEMNU_STATBAR",			"st_scale", -1.0, 8.0, 1.0, "$SCALEMNU_USEUI", "$SCALEMNU_USEFS"
	ScaleSlider "$SCALEMNU_HUD", 				"hud_scale", -1.0, 8.0, 1.0, "$SCALEMNU_USEUI", "$SCALEMNU_USEFS"
	ScaleSlider "$SCALEMNU_ALTHUD",				"hud_althudscale", 0.0, 8.0, 1.0, "$SCALEMNU_USEUI"
	StaticText " "
	Option "$SCALEMNU_HUDASPECT", 				"hud_aspectscale", "OnOff"
	StaticText " "
	StaticText "$SCALEMNU_SCALECLASSIC", 1
	Option "$SCALEMNU_INTER",					"inter_classic_scaling", "OnOff"
	Option "$SCALEMNU_BORDER",					"ui_screenborder_classic_scaling", "OnOff"
	Slider "$SCALEMNU_FACTOR",					"classic_scaling_factor", 1.0, 3.0, 0.2, 1
	Slider "$SCALEMNU_RATIO",					"classic_scaling_pixelaspect", 1.0, 1.2, 0.2, 1
}
//-------------------------------------------------------------------------------------------
//
// Alternative HUD
//
//-------------------------------------------------------------------------------------------

OptionValue "AMCoordinates"
{
	0, "$OPTVAL_PLAYER"
	1, "$OPTVAL_MAP"
}

OptionValue "AltHUDAmmo"
{
	0, "$OPTVAL_CURRENTWEAPON"
	1, "$OPTVAL_AVAILABLEWEAPONS"
	2, "$OPTVAL_ALLWEAPONS"
}

OptionValue "AltHUDTime"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_LEVELMILLISECONDS"
	2, "$OPTVAL_LEVELSECONDS"
	3, "$OPTVAL_LEVEL"
	4, "$OPTVAL_HUBSECONDS"
	5, "$OPTVAL_HUB"
	6, "$OPTVAL_TOTALSECONDS"
	7, "$OPTVAL_TOTAL"
	8, "$OPTVAL_SYSTEMSECONDS"
	9, "$OPTVAL_SYSTEM"
}

OptionValue "AltHUDLag"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_NETGAMESONLY"
	2, "$OPTVAL_ALWAYS"
}

OptionValue "AltHUDAmmoOrder"
{
	0, "$OPTVAL_AMMOIMAGETEXT"
	1, "$OPTVAL_AMMOTEXTIMAGE"
}

OptionMenu "AltHUDOptions" protected
{
	Title "$ALTHUDMNU_TITLE"
	//Indent 220
	Option "$ALTHUDMNU_ENABLE",					"hud_althud", "OnOff"
	Option "$ALTHUDMNU_SHOWSECRETS",			"hud_showsecrets", "OnOff"
	Option "$ALTHUDMNU_SHOWMONSTERS",			"hud_showmonsters", "OnOff"
	Option "$ALTHUDMNU_SHOWITEMS",				"hud_showitems", "OnOff"
	Option "$ALTHUDMNU_SHOWSTATS",				"hud_showstats", "OnOff"
	Option "$ALTHUDMNU_SHOWBERSERK",			"hud_berserk_health", "OnOff"
	Option "$ALTHUDMNU_SHOWWEAPONS",			"hud_showweapons", "OnOff"
	Option "$ALTHUDMNU_SHOWTIMESTAT",			"hud_showtimestat", "OnOff"
	Option "$ALTHUDMNU_SHOWAMMO",				"hud_showammo", "AltHUDAmmo"
	Option "$ALTHUDMNU_SHOWTIME",				"hud_showtime", "AltHUDTime"
	Option "$ALTHUDMNU_TIMECOLOR",				"hud_timecolor", "TextColors"
	Option "$ALTHUDMNU_SHOWLAG",				"hud_showlag", "AltHUDLag"
	Option "$ALTHUDMNU_AMMOORDER",				"hud_ammo_order", "AltHUDAmmoOrder"
	Slider "$ALTHUDMNU_AMMORED",				"hud_ammo_red", 0, 100, 1, 0
	Slider "$ALTHUDMNU_AMMOYELLOW",				"hud_ammo_yellow", 0, 100, 1, 0
	Slider "$ALTHUDMNU_HEALTHRED",				"hud_health_red", 0, 100, 1, 0
	Slider "$ALTHUDMNU_HEALTHYELLOW",			"hud_health_yellow", 0, 100, 1, 0
	Slider "$ALTHUDMNU_HEALTHGREEN",			"hud_health_green", 0, 100, 1, 0
	Slider "$ALTHUDMNU_ARMORRED",				"hud_armor_red", 0, 100, 1, 0
	Slider "$ALTHUDMNU_ARMORYELLOW",			"hud_armor_yellow", 0, 100, 1, 0
	Slider "$ALTHUDMNU_ARMORGREEN",				"hud_armor_green", 0, 100, 1, 0
	StaticText " "
	StaticText "$ALTHUDMNU_AUTOMAPHUD", 1
	option "$ALTHUDMNU_TITLECOLOR",				"hudcolor_titl", "TextColors"
	option "$ALTHUDMNU_MAPTIMECOLOR",			"hudcolor_ltim", "TextColors"
	option "$ALTHUDMNU_HUBTIMECOLOR",			"hudcolor_time", "TextColors"
	option "$ALTHUDMNU_TOTALTIMECOLOR",			"hudcolor_ttim", "TextColors"
	option "$ALTHUDMNU_COORDINATECOLOR",		"hudcolor_xyco", "TextColors"
	option "$ALTHUDMNU_COORDINATEMODE",			"map_point_coordinates", "AMCoordinates"
	option "$ALTHUDMNU_STATSNAMECOLOR",			"hudcolor_statnames", "TextColors"
	option "$ALTHUDMNU_STATSCOLOR",				"hudcolor_stats", "TextColors"
}

//-------------------------------------------------------------------------------------------
//
// Misc menu
//
//-------------------------------------------------------------------------------------------

OptionValue Autosave
{
	0,	"$OPTVAL_ALWAYS"
	1,	"$OPTVAL_SCRIPTSONLY"
	2,	"$OPTVAL_NEVER"
}

OptionValue dehopt
{
	0,	"$OPTVAL_NEVER"
	1,	"$OPTVAL_ALL"
	2,	"$OPTVAL_ONLYLASTONE"
}

OptionValue AlwaysTally
{
	0,	"$OPTVAL_MODDEFINED"
	1,	"$OPTVAL_NOTHUBS"
	2,	"$OPTVAL_WITHHUBS"
}

OptionMenu "MiscOptions" protected
{
	Title "$MISCMNU_TITLE"
	//Indent 220
	IfOption(Windows)
	{
		Option "$MISCMNU_MERGEKEYS", 			"k_mergekeys", "OnOff"
		Option "$MISCMNU_WINFULLSCREENTOGGLE",	"k_allowfullscreentoggle", "OnOff"
	}
	IfOption(Mac)
	{
		Option "$MISCMNU_MACFULLSCREENTOGGLE",	"k_allowfullscreentoggle", "OnOff"
	}
	Option "$MISCMNU_QUERYIWAD",				"queryiwad", "OnOff"
	StaticText " "
	Option "$MISCMNU_FVIEWBOB",            "fviewbob", "OnOff"
	Option "$MISCMNU_NOCHEATS",					"nocheats", "OnOff"
	Option "$MISCMNU_ALLCHEATS",				"allcheats", "OnOff"
	Option "$MISCMNU_ENABLEAUTOSAVES",			"disableautosave", "Autosave"
	Option "$MISCMNU_SAVELOADCONFIRMATION",		"saveloadconfirmation", "OnOff"
	Slider "$MISCMNU_AUTOSAVECOUNT",			"autosavecount", 1, 20, 1, 0
	Option "$MISCMNU_QUICKSAVEROTATION",		"quicksaverotation", "OnOff"
	Slider "$MISCMNU_QUICKSAVECOUNT",			"quicksaverotationcount", 1, 20, 1, 0
	Option "$MISCMNU_DEHLOAD",					"dehload", "dehopt"
	Option "$MISCMNU_ENABLESCRIPTSCREENSHOTS",	"enablescriptscreenshot", "OnOff"
	Option "$MISCMNU_SETSLOTSTRICT",			"setslotstrict", "YesNo"
	Option "$MISCMNU_INTERSCROLL",				"nointerscrollabort", "OffOn"
	Option "$MISCMNU_PAUSEINBACKGROUND",		"i_pauseinbackground", "OnOff"
	StaticText " "
	Option "$MISCMNU_CACHENODES",				"gl_cachenodes", "OnOff"
	Slider "$MISCMNU_CACHETIME",				"gl_cachetime", 0.0, 2.0, 0.1
	SafeCommand "$MISCMNU_CLEARNODECACHE",		"clearnodecache"
	StaticText " "
	Option "$OPTMNU_LANGUAGE",					"language", "LanguageOptions"

	StaticText " "
	Option "$MISCMNU_QUICKEXIT",				"m_quickexit", "OnOff"

	StaticText " "
	Option	"$DSPLYMNU_SHOWENDOOM",			"showendoom", "Endoom"

	StaticText " "
	Option "$MISCMNU_CLEANMENU",				"m_cleanscale", "OffOn"
	Option "$MISCMNU_CLEANSTAT",				"wi_cleantextscale", "OnOff"
	Option "$MISCMNU_WIPERCENT",				"wi_percents", "OnOff"

	StaticText " "
	Option "$MISCMNU_ALWAYSTALLY",				"sv_alwaystally", "AlwaysTally"
	
}

//-------------------------------------------------------------------------------------------
//
// Automap Menu
//
//-------------------------------------------------------------------------------------------

OptionValue MapColorTypes
{
	0, "$OPTVAL_CUSTOM"
	1, "$OPTVAL_TRADITIONALDOOM"
	2, "$OPTVAL_TRADITIONALSTRIFE"
	3, "$OPTVAL_TRADITIONALRAVEN"
}

OptionValue SecretTypes
{
	0, "$OPTVAL_NEVER"
	1, "$OPTVAL_ONLYWHENFOUND"
	2, "$OPTVAL_ALWAYS"
}

OptionValue RotateTypes
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ON"
	2, "$OPTVAL_ONFOROVERLAYONLY"
}

OptionValue OverlayTypes
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_OVERLAYNORMAL"
	2, "$OPTVAL_OVERLAYONLY"
}

OptionValue MaplabelTypes
{
	0, "$OPTVAL_NEVER"
	1, "$OPTVAL_ALWAYS"
	2, "$OPTVAL_NOTFORHUBS"
}

OptionValue STSTypes
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_FRONT"
	2, "$OPTVAL_ANIMATED"
	3, "$OPTVAL_ROTATED"
}

OptionValue MapBackTypes
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ON"
	2, "$OPTVAL_MAPDEFINEDCOLORSONLY"
}

OptionValue MapTriggers
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_NODOORS"
	2, "$OPTVAL_ON"
}

OptionString MapMarkFont
{
	"AMMNUMx", "$OPTVAL_DEFAULT"
	"SmallFont", "$OPTVAL_SMALL"
	"BigFont", "$OPTVAL_LARGE"
	"ConsoleFont", "$OPTVAL_CONSOLE"
}

OptionMenu AutomapOptions protected
{
	Title "$AUTOMAPMNU_TITLE"

	Option "$AUTOMAPMNU_COLORSET",				"am_colorset", "MapColorTypes"
	Option "$AUTOMAPMNU_CUSTOMCOLORS",			"am_customcolors", "YesNo"
	Submenu "$AUTOMAPMNU_SETCUSTOMCOLORS",		"MapColorMenu"

	StaticText ""
	Submenu "$AUTOMAPMNU_CONTROLS",				"MapControlsMenu"

	StaticText ""
	Option "$AUTOMAPMNU_ROTATE",				"am_rotate", "RotateTypes"
	Option "$AUTOMAPMNU_FOLLOW",				"am_followplayer", "OnOff"
	Option "$AUTOMAPMNU_OVERLAY",				"am_overlay", "OverlayTypes"
	Option "$AUTOMAPMNU_TEXTURED",				"am_textured", "OnOff"
	Slider "$AUTOMAPMNU_LINEALPHA",				"am_linealpha", 0.1, 1.0, 0.1, 1
	Slider "$AUTOMAPMNU_LINETHICKNESS",			"am_linethickness", 1, 8, 1, 0
	Option "$AUTOMAPMNU_LINEANTIALIASING",		"am_lineantialiasing", "OnOff"

	StaticText ""
	Option "$AUTOMAPMNU_SHOWITEMS",				"am_showitems", "OnOff"
	Option "$AUTOMAPMNU_SHOWMONSTERS",			"am_showmonsters", "OnOff"
	Option "$AUTOMAPMNU_SHOWSECRETS",			"am_showsecrets", "OnOff"
	Option "$AUTOMAPMNU_SHOWTIME",				"am_showtime", "OnOff"
	Option "$AUTOMAPMNU_SHOWTOTALTIME",			"am_showtotaltime", "OnOff"
	Option "$AUTOMAPMNU_SHOWMAPLABEL",			"am_showmaplabel", "MaplabelTypes"

	StaticText ""
	Option "$AUTOMAPMNU_SHOWKEYS",				"am_showkeys", "OnOff"
	Option "$AUTOMAPMNU_SHOWKEYS_ALWAYS",			"am_showkeys_always", "OnOff"

	StaticText ""
	Option "$AUTOMAPMNU_MAPSECRETS",			"am_map_secrets", "SecretTypes"
	Option "$AUTOMAPMNU_DRAWMAPBACK",			"am_drawmapback", "MapBackTypes"
	Option "$AUTOMAPMNU_SHOWTRIGGERLINES",		"am_showtriggerlines", "MapTriggers"
	Option "$AUTOMAPMNU_SHOWTHINGSPRITES",		"am_showthingsprites", "STSTypes"

	StaticText ""
	Option "$AUTOMAPMNU_PTOVERLAY",				"am_portaloverlay", "OnOff"
	Slider "$AUTOMAPMNU_EMPTYSPACEMARGIN",		"am_emptyspacemargin", 0, 90, 5, 0

	StaticText ""
	Option "$AUTOMAPMNU_MARKFONT",				"am_markfont", "MapMarkFont"
	Option "$AUTOMAPMNU_MARKCOLOR",				"am_markcolor", "TextColors"
}

//-------------------------------------------------------------------------------------------
//
// Automap Controls
//
//-------------------------------------------------------------------------------------------

OptionMenu MapControlsMenu protected
{
	Title "$MAPCNTRLMNU_TITLE"
	ScrollTop 2
	StaticTextSwitchable 	"$CNTRLMNU_SWITCHTEXT1", "$CNTRLMNU_SWITCHTEXT2", "ControlMessage"

	StaticText ""
	MapControl "$MAPCNTRLMNU_PANLEFT",			"+am_panleft"
	MapControl "$MAPCNTRLMNU_PANRIGHT",			"+am_panright"
	MapControl "$MAPCNTRLMNU_PANUP",			"+am_panup"
	MapControl "$MAPCNTRLMNU_PANDOWN",			"+am_pandown"

	StaticText ""
	MapControl "$MAPCNTRLMNU_ZOOMIN",			"+am_zoomin"
	MapControl "$MAPCNTRLMNU_ZOOMOUT",			"+am_zoomout"

	StaticText ""
	MapControl "$MAPCNTRLMNU_TOGGLEZOOM",		"am_gobig"
	MapControl "$MAPCNTRLMNU_TOGGLEFOLLOW",		"am_togglefollow"
	MapControl "$MAPCNTRLMNU_ROTATE",			"toggle am_rotate"
	MapControl "$MAPCNTRLMNU_TOGGLEGRID",		"am_togglegrid"
	MapControl "$MAPCNTRLMNU_TOGGLETEXTURE",	"am_toggletexture"

	StaticText ""
	MapControl "$MAPCNTRLMNU_SETMARK",			"am_setmark"
	MapControl "$MAPCNTRLMNU_CLEARMARK",		"am_clearmarks"
}

//-------------------------------------------------------------------------------------------
//
// Automap Colors
//
//-------------------------------------------------------------------------------------------

OptionMenu MapColorMenu protected
{
	Title "$MAPCOLORMNU_TITLE"
	SafeCommand "$MAPCOLORMNU_DEFAULTMAPCOLORS", 		"am_restorecolors"
	StaticText " "
	Submenu "$MAPCOLORMNU_CHEATMODE",					"MapColorMenuCheats"
	Submenu "$MAPCOLORMNU_OVERLAY",						"MapColorMenuOverlay"
	Submenu "$MAPCOLORMNU_OVCHEATMODE",					"MapColorMenuCheatsOverlay"
	StaticText " "
	ColorPicker "$MAPCOLORMNU_BACKCOLOR",				"am_backcolor"
	ColorPicker "$MAPCOLORMNU_YOURCOLOR",				"am_yourcolor"
	ColorPicker "$MAPCOLORMNU_WALLCOLOR",				"am_wallcolor"
	ColorPicker "$MAPCOLORMNU_FDWALLCOLOR",				"am_fdwallcolor"
	ColorPicker "$MAPCOLORMNU_CDWALLCOLOR",				"am_cdwallcolor"
	ColorPicker "$MAPCOLORMNU_EFWALLCOLOR",				"am_efwallcolor"
	ColorPicker "$MAPCOLORMNU_GRIDCOLOR",				"am_gridcolor"
	ColorPicker "$MAPCOLORMNU_XHAIRCOLOR",				"am_xhaircolor"
	ColorPicker "$MAPCOLORMNU_NOTSEENCOLOR",			"am_notseencolor"
	ColorPicker "$MAPCOLORMNU_LOCKEDCOLOR",				"am_lockedcolor"
	ColorPicker "$MAPCOLORMNU_INTRALEVELCOLOR",			"am_intralevelcolor"
	ColorPicker "$MAPCOLORMNU_INTERLEVELCOLOR",			"am_interlevelcolor"
	ColorPicker "$MAPCOLORMNU_SECRETSECTORCOLOR",		"am_secretsectorcolor"
	ColorPicker "$MAPCOLORMNU_UNEXPLOREDSECRETCOLOR",	"am_unexploredsecretcolor"
	ColorPicker "$MAPCOLORMNU_SPECIALWALLCOLOR",		"am_specialwallcolor"
	ColorPicker "$MAPCOLORMNU_PORTAL",					"am_portalcolor"
}

OptionMenu MapColorMenuCheats protected
{
	Title "$MAPCOLORMNU_CHEATMODE"
	ColorPicker "$MAPCOLORMNU_TSWALLCOLOR",				"am_tswallcolor"
	ColorPicker "$MAPCOLORMNU_SECRETWALLCOLOR",			"am_secretwallcolor"
	ColorPicker "$MAPCOLORMNU_THINGCOLOR",				"am_thingcolor"
	ColorPicker "$MAPCOLORMNU_MONSTERCOLOR",			"am_thingcolor_monster"
	ColorPicker "$MAPCOLORMNU_NONCOUNTINGMONSTERCOLOR",	"am_thingcolor_ncmonster"
	ColorPicker "$MAPCOLORMNU_FRIENDCOLOR",				"am_thingcolor_friend"
	ColorPicker "$MAPCOLORMNU_ITEMCOLOR",				"am_thingcolor_item"
	ColorPicker "$MAPCOLORMNU_COUNTITEMCOLOR",			"am_thingcolor_citem"
}

OptionMenu MapColorMenuOverlay protected
{
	Title "$MAPCOLORMNU_OVERLAY"
	ColorPicker "$MAPCOLORMNU_YOURCOLOR",				"am_ovyourcolor"
	ColorPicker "$MAPCOLORMNU_WALLCOLOR",				"am_ovwallcolor"
	ColorPicker "$MAPCOLORMNU_FDWALLCOLOR",				"am_ovfdwallcolor"
	ColorPicker "$MAPCOLORMNU_CDWALLCOLOR",				"am_ovcdwallcolor"
	ColorPicker "$MAPCOLORMNU_EFWALLCOLOR",				"am_ovefwallcolor"
	ColorPicker "$MAPCOLORMNU_NOTSEENCOLOR",			"am_ovunseencolor"
	ColorPicker "$MAPCOLORMNU_LOCKEDCOLOR",				"am_ovlockedcolor"
	ColorPicker "$MAPCOLORMNU_INTRALEVELCOLOR",			"am_ovtelecolor"
	ColorPicker "$MAPCOLORMNU_INTERLEVELCOLOR",			"am_ovinterlevelcolor"
	ColorPicker "$MAPCOLORMNU_SECRETSECTORCOLOR",		"am_ovsecretsectorcolor"
	ColorPicker "$MAPCOLORMNU_SPECIALWALLCOLOR",		"am_ovspecialwallcolor"
	ColorPicker "$MAPCOLORMNU_PORTAL",					"am_ovportalcolor"
}

OptionMenu MapColorMenuCheatsOverlay protected
{
	Title "$MAPCOLORMNU_OVCHEATMODE"
	ColorPicker "$MAPCOLORMNU_TSWALLCOLOR",				"am_ovotherwallscolor"
	ColorPicker "$MAPCOLORMNU_SECRETWALLCOLOR",			"am_ovsecretwallcolor"
	ColorPicker "$MAPCOLORMNU_THINGCOLOR",				"am_ovthingcolor"
	ColorPicker "$MAPCOLORMNU_MONSTERCOLOR",			"am_ovthingcolor_monster"
	ColorPicker "$MAPCOLORMNU_NONCOUNTINGMONSTERCOLOR",	"am_ovthingcolor_ncmonster"
	ColorPicker "$MAPCOLORMNU_FRIENDCOLOR",				"am_ovthingcolor_friend"
	ColorPicker "$MAPCOLORMNU_ITEMCOLOR",				"am_ovthingcolor_item"
	ColorPicker "$MAPCOLORMNU_COUNTITEMCOLOR",			"am_ovthingcolor_citem"
}

//-------------------------------------------------------------------------------------------
//
// Color Picker
//
//-------------------------------------------------------------------------------------------

OptionMenu ColorPickerMenu protected
{
	Title "$MNU_COLORPICKER"
	// This menu will be created by the calling code
}

//-------------------------------------------------------------------------------------------
//
// Messages
//
//-------------------------------------------------------------------------------------------


OptionValue MessageLevels
{
	0.0, "$OPTVAL_ITEMPICKUP"
	1.0, "$OPTVAL_OBITUARIES"
	2.0, "$OPTVAL_CRITICALMESSAGES"
}

OptionValue DevMessageLevels
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_ERRORS"
	2, "$OPTVAL_WARNINGS"
	3, "$OPTVAL_NOTIFICATIONS"
	4, "$OPTVAL_EVERYTHING"
}

OptionMenu MessageOptions protected
{
	Title 	"$MSGMNU_TITLE"
	Option "$MSGMNU_SHOWMESSAGES",				"show_messages", "OnOff"
	Option "$MSGMNU_SHOWOBITUARIES",			"show_obituaries", "OnOff"
	Option "$MSGMNU_SHOWSECRETS",				"cl_showsecretmessage", "OnOff"
	Option "$MSGMNU_MESSAGELEVEL", 				"msg", "MessageLevels"
	Option "$MSGMNU_DEVELOPER", 				"developer", "DevMessageLevels"
	Option "$MSGMNU_CENTERMESSAGES",			"con_centernotify", "OnOff"
	Option "$MSGMNU_PULSEMESSAGES",				"con_pulsetext", "OnOff"
	Option "$MSGMNU_SUBTITLES",					"inter_subtitles", "OnOff"
	StaticText " "
	StaticText "$MSGMNU_MESSAGECOLORS", 1
	StaticText " "
	Option "$MSGMNU_ITEMPICKUP",				"msg0color", "TextColors"
	Option "$MSGMNU_OBITUARIES",				"msg1color", "TextColors"
	Option "$MSGMNU_CRITICALMESSAGES",			"msg2color", "TextColors"
	Option "$MSGMNU_CHATMESSAGES",				"msg3color", "TextColors"
	Option "$MSGMNU_TEAMMESSAGES",				"msg4color", "TextColors"
	Option "$MSGMNU_CENTEREDMESSAGES",			"msgmidcolor", "TextColors"
	StaticText " "
	Option "$MSGMNU_SCREENSHOTMESSAGES",		"screenshot_quiet",	"OffOn"
	Option "$MSGMNU_LONGSAVEMESSAGES",			"longsavemessages",	"OnOff"
}

//-------------------------------------------------------------------------------------------
//
// Scoreboard
//
//-------------------------------------------------------------------------------------------

OptionMenu ScoreboardOptions protected
{
	Title "$SCRBRDMNU_TITLE"
	StaticText "$SCRBRDMNU_COOPERATIVE", 1
	StaticText " "
	Option "$SCRBRDMNU_ENABLE",				"sb_cooperative_enable", "YesNo"
	Option "$SCRBRDMNU_HEADERCOLOR",		"sb_cooperative_headingcolor", "TextColors"
	Option "$SCRBRDMNU_YOURCOLOR",			"sb_cooperative_yourplayercolor", "TextColors"
	Option "$SCRBRDMNU_OTHERPLAYERCOLOR",	"sb_cooperative_otherplayercolor", "TextColors"
	StaticText " "
	StaticText " "
	StaticText "$SCRBRDMNU_DEATHMATCH", 1
	StaticText " "
	Option "$SCRBRDMNU_ENABLE",				"sb_deathmatch_enable",	"YesNo"
	Option "$SCRBRDMNU_HEADERCOLOR",		"sb_deathmatch_headingcolor", "TextColors"
	Option "$SCRBRDMNU_YOURCOLOR",			"sb_deathmatch_yourplayercolor", "TextColors"
	Option "$SCRBRDMNU_OTHERPLAYERCOLOR",	"sb_deathmatch_otherplayercolor", "TextColors"
	StaticText " "
	StaticText " "
	StaticText "$SCRBRDMNU_TEAMDEATHMATCH", 1
	StaticText " "
	Option "$SCRBRDMNU_ENABLE",				"sb_teamdeathmatch_enable", "YesNo"
	Option "$SCRBRDMNU_HEADERCOLOR",		"sb_teamdeathmatch_headingcolor", "TextColors"
}

//-------------------------------------------------------------------------------------------
//
// Font options
//
//-------------------------------------------------------------------------------------------

OptionMenu FontOptions protected
{
	Title "$HUDMNU_FONTOPTIONS"
	Option "$FONTMNU_LOG",					"log_vgafont", "YesNo"
	Option "$FONTMNU_DLG",					"dlg_vgafont", "YesNo"
}

/*=======================================
 *
 * Gameplay Options (dmflags) Menu
 *
 *=======================================*/

OptionValue  SmartAim
{
	0.0, "$OPTVAL_OFF"
	1.0, "$OPTVAL_ON"
	2.0, "$OPTVAL_NEVERFRIENDS"
	3.0, "$OPTVAL_ONLYMONSTERS"
}

OptionValue  FallingDM
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_OLD"
	2, "$OPTVAL_HEXEN"
	3, "$OPTVAL_STRIFE"
}

OptionValue  JumpCrouchFreeLook
{
	0, "$OPTVAL_DEFAULT"
	1, "$OPTVAL_OFF"
	2, "$OPTVAL_ON"
}


OptionMenu GameplayOptions protected
{
	Position -35
	Title 	"$GMPLYMNU_TITLE"
	//Indent 222
	Submenu "$GMPLYMNU_DEATHMATCH",				"DeathmatchOptions"
	Submenu "$GMPLYMNU_COOPERATIVE",			"CoopOptions"
	StaticText " "
	Option "$GMPLYMNU_TEAMPLAY",				"teamplay",	"OnOff"
	Slider	"$GMPLYMNU_TEAMDAMAGE",				"teamdamage", 0, 1, 0.05,2
	StaticText " "
	Option "$GMPLYMNU_SMARTAUTOAIM",			"sv_smartaim", "SmartAim"
	StaticText " "
	Option "$GMPLYMNU_FALLINGDAMAGE",			"sv_fallingdamage", "FallingDM"
	Option "$GMPLYMNU_DROPWEAPON",				"sv_weapondrop", "YesNo"
	Option "$GMPLYMNU_DOUBLEAMMO",				"sv_doubleammo", "YesNo"
	Option "$GMPLYMNU_INFINITEAMMO",			"sv_infiniteammo", "YesNo"
	Option "$GMPLYMNU_INFINITEINVENTORY",		"sv_infiniteinventory", "YesNo"
	Option "$GMPLYMNU_NOMONSTERS",				"sv_nomonsters", "YesNo"
	Option "$GMPLYMNU_NOMONSTERSTOEXIT",		"sv_killallmonsters", "YesNo"
	Option "$GMPLYMNU_MONSTERSRESPAWN",			"sv_monsterrespawn", "YesNo"
	Option "$GMPLYMNU_NORESPAWN",				"sv_norespawn", "YesNo"
	Option "$GMPLYMNU_ITEMSRESPAWN",			"sv_itemrespawn", "YesNo"
	Option "$GMPLYMNU_SUPERRESPAWN",			"sv_respawnsuper", "YesNo"
	Option "$GMPLYMNU_FASTMONSTERS",			"sv_fastmonsters", "YesNo"
	Option "$GMPLYMNU_INSTANTREACTION",			"sv_instantreaction", "YesNo"
	Option "$GMPLYMNU_DEGENERATION",			"sv_degeneration", "YesNo"
	Option "$GMPLYMNU_NOAUTOAIM",				"sv_noautoaim", "NoYes"
	Option "$GMPLYMNU_NOVERTSPREAD",			"sv_novertspread", "NoYes"
	Option "$GMPLYMNU_ALLOWSUICIDE",			"sv_disallowsuicide", "NoYes"
	Option "$GMPLYMNU_ALLOWJUMP",				"sv_jump", "JumpCrouchFreeLook"
	Option "$GMPLYMNU_ALLOWCROUCH",				"sv_crouch", "JumpCrouchFreeLook"
	Option "$GMPLYMNU_ALLOWFREELOOK",			"sv_freelook", "JumpCrouchFreeLook"
	Option "$GMPLYMNU_ALLOWFOV",				"sv_nofov", "NoYes"
	Option "$GMPLYMNU_BFGFREEAIM",				"sv_nobfgaim", "NoYes"
	Option "$GMPLYMNU_ALLOWAUTOMAP",			"sv_noautomap", "NoYes"
	Option "$GMPLYMNU_AUTOMAPALLIES",			"sv_noautomapallies", "NoYes"
	Option "$GMPLYMNU_ALLOWSPYING",				"sv_disallowspying", "NoYes"
	Option "$GMPLYMNU_CHASECAM",				"sv_chasecam", "YesNo"
	Option "$GMPLYMNU_DONTCHECKAMMO",			"sv_dontcheckammo", "NoYes"
	Option "$GMPLYMNU_KILLBOSSSPAWNS",			"sv_killbossmonst", "YesNo"
	Option "$GMPLYMNU_NOCOUNTENDMONSTER",		"sv_nocountendmonst", "NoYes"
	Option "$GMPLYMNU_ALWAYSSPAWNMULTI",		"sv_alwaysspawnmulti", "YesNo"
	Class "GameplayMenu"
}

OptionMenu DeathmatchOptions protected
{
	Position -35
	Title 	"$GMPLYMNU_DEATHMATCH"

	Option "$GMPLYMNU_WEAPONSSTAY",				"sv_weaponstay", "YesNo"
	Option "$GMPLYMNU_ALLOWPOWERUPS",			"sv_noitems", "NoYes"
	Option "$GMPLYMNU_ALLOWHEALTH",				"sv_nohealth", "NoYes"
	Option "$GMPLYMNU_ALLOWARMOR",				"sv_noarmor", "NoYes"
	Option "$GMPLYMNU_SPAWNFARTHEST",			"sv_spawnfarthest", "YesNo"
	Option "$GMPLYMNU_SAMEMAP",					"sv_samelevel", "YesNo"
	Option "$GMPLYMNU_FORCERESPAWN",			"sv_forcerespawn", "YesNo"
	Option "$GMPLYMNU_ALLOWEXIT",				"sv_noexit", "NoYes"
	Option "$GMPLYMNU_BARRELSRESPAWN",			"sv_barrelrespawn", "YesNo"
	Option "$GMPLYMNU_RESPAWNPROTECTION",		"sv_respawnprotect", "YesNo"
	Option "$GMPLYMNU_LOSEFRAG",				"sv_losefrag", "YesNo"
	Option "$GMPLYMNU_KEEPFRAGS",				"sv_keepfrags", "YesNo"
	Option "$GMPLYMNU_NOTEAMSWITCH",			"sv_noteamswitch", "YesNo"
	Option "$GMPLYMNU_NOEXTRAAMMO",				"sv_noextraammo", "NoYes"
	Class "GameplayMenu"
}

OptionMenu CoopOptions protected
{
	Position -35
	Title 	"$GMPLYMNU_COOPERATIVE"

	Option "$GMPLYMNU_MULTIPLAYERTHINGS",	 	"sv_nothingspawn", "NoYes"
	Option "$GMPLYMNU_MULTIPLAYERWEAPONS",	 	"sv_noweaponspawn", "NoYes"
	Option "$GMPLYMNU_LOSEINVENTORY",			"sv_cooploseinventory", "YesNo"
	Option "$GMPLYMNU_KEEPKEYS",				"sv_cooplosekeys", "NoYes"
	Option "$GMPLYMNU_KEEPWEAPONS",				"sv_cooploseweapons", "NoYes"
	Option "$GMPLYMNU_KEEPARMOR",				"sv_cooplosearmor", "NoYes"
	Option "$GMPLYMNU_KEEPPOWERUPS",			"sv_cooplosepowerups", "NoYes"
	Option "$GMPLYMNU_KEEPAMMO",				"sv_cooploseammo", "NoYes"
	Option "$GMPLYMNU_LOSEHALFAMMO",			"sv_coophalveammo", "YesNo"
	Option "$GMPLYMNU_SPAWNWHEREDIED",			"sv_samespawnspot", "YesNo"
	Option "$GMPLYMNU_NOPLAYERCLIP",			"sv_noplayerclip", "YesNo"
	Class "GameplayMenu"
}

/*=======================================
 *
 * Compatibility Options Menu
 *
 *=======================================*/


OptionValue CompatModes
{
	0, "$OPTVAL_DEFAULT"
	1, "$OPTVAL_DOOM"
	2, "$OPTVAL_DOOMSTRICT"
	3, "$OPTVAL_BOOM"
	6, "$OPTVAL_BOOMSTRICT"
	5, "$OPTVAL_MBF"
	7, "$OPTVAL_MBFSTRICT"
	4, "$OPTVAL_ZDOOM2063"
}

OptionMenu "CompatibilityOptions" protected
{
	Position -35
	Title "$CMPTMNU_TITLE"
	Option "$CMPTMNU_MODE",							"compatmode", "CompatModes", "", 1
	StaticText " "
	Submenu "$CMPTMNU_ACTORBEHAVIOR",				"CompatActorMenu"
	Submenu "$CMPTMNU_DEHACKEDBEHAVIOR",			"CompatDehackedMenu"
	Submenu "$CMPTMNU_MAPACTIONBEHAVIOR",			"CompatMapMenu"
	Submenu "$CMPTMNU_PHYSICSBEHAVIOR",				"CompatPhysicsMenu"
	Submenu "$CMPTMNU_RENDERINGBEHAVIOR",			"CompatRenderMenu"
	Submenu "$CMPTMNU_SOUNDBEHAVIOR",				"CompatSoundMenu"
	Class "CompatibilityMenu"
}

OptionMenu "CompatActorMenu" protected
{
	Position -35
	Title "$CMPTMNU_ACTORBEHAVIOR"
	Option "$CMPTMNU_VILEGHOSTS",					"compat_VILEGHOSTS", "YesNo"
	Option "$CMPTMNU_NOBLOCKFRIENDS",				"compat_NOBLOCKFRIENDS", "YesNo"
	Option "$CMPTMNU_LIMITPAIN",					"compat_LIMITPAIN", "YesNo"
	Option "$CMPTMNU_MBFMONSTERMOVE",				"compat_MBFMONSTERMOVE", "YesNo"
	Option "$CMPTMNU_CROSSDROPOFF",					"compat_CROSSDROPOFF", "YesNo"
	Option "$CMPTMNU_DROPOFF",						"compat_DROPOFF", "YesNo"
	Option "$CMPTMNU_INVISIBILITY",					"compat_INVISIBILITY", "YesNo"
	Option "$CMPTMNU_MINOTAUR",						"compat_MINOTAUR", "YesNo"
	Option "$CMPTMNU_NOTOSSDROPS",					"compat_NOTOSSDROPS", "YesNo"
	Class "CompatibilityMenu"
}

OptionMenu "CompatDehackedMenu" protected
{
	Position -35
	Title "$CMPTMNU_DEHACKEDBEHAVIOR"
	Option "$CMPTMNU_DEHHEALTH",					"compat_DEHHEALTH", "YesNo"
	Option "$CMPTMNU_MUSHROOM",						"compat_MUSHROOM", "YesNo"
	Class "CompatibilityMenu"
}

OptionMenu "CompatMapMenu" protected
{
	Position -35
	Title "$CMPTMNU_MAPACTIONBEHAVIOR"
	Option "$CMPTMNU_USEBLOCKING",					"compat_USEBLOCKING", "YesNo"
	Option "$CMPTMNU_ANYBOSSDEATH",					"compat_ANYBOSSDEATH", "YesNo"
	Option "$CMPTMNU_NODOORLIGHT",					"compat_NODOORLIGHT", "YesNo"
	Option "$CMPTMNU_LIGHT",						"compat_LIGHT", "YesNo"
	Option "$CMPTMNU_SHORTTEX",						"compat_SHORTTEX", "YesNo"
	Option "$CMPTMNU_STAIRS",						"compat_stairs", "YesNo"
	Option "$CMPTMNU_FLOORMOVE",					"compat_floormove", "YesNo"
	Option "$CMPTMNU_POINTONLINE",					"compat_pointonline", "YesNo"
	Option "$CMPTMNU_MULTIEXIT",					"compat_multiexit", "YesNo"
	Option "$CMPTMNU_TELEPORT",						"compat_teleport", "YesNo"
	Option "$CMPTMNU_PUSHWINDOW",					"compat_pushwindow", "YesNo"
	Option "$CMPTMNU_CHECKSWITCHRANGE",				"compat_checkswitchrange", "YesNo"
	Option "$CMPTMNU_RAILINGHACK",					"compat_railing", "YesNo"
	Option "$CMPTMNU_NOMBF21",						"compat_nombf21", "YesNo"
	Class "CompatibilityMenu"
}

OptionMenu "CompatPhysicsMenu" protected
{
	Position -35
	Title "$CMPTMNU_PHYSICSBEHAVIOR"
	Option "$CMPTMNU_NOPASSOVER",					"compat_nopassover", "YesNo"
	Option "$CMPTMNU_BOOMSCROLL",					"compat_BOOMSCROLL", "YesNo"
	Option "$CMPTMNU_BADANGLES",					"compat_badangles", "YesNo"
	Option "$CMPTMNU_WALLRUN",						"compat_WALLRUN", "YesNo"
	Option "$CMPTMNU_RAVENSCROLL",					"compat_RAVENSCROLL", "YesNo"
	Option "$CMPTMNU_TRACE",						"compat_TRACE", "YesNo"
	Option "$CMPTMNU_HITSCAN",						"compat_HITSCAN", "YesNo"
	Option "$CMPTMNU_MISSILECLIP",					"compat_MISSILECLIP", "YesNo"
	Option "$CMPTMNU_EXPLODE1",						"compat_explode1", "YesNo"
	Option "$CMPTMNU_EXPLODE2",						"compat_explode2", "YesNo"
	Class "CompatibilityMenu"
}


OptionMenu "CompatRenderMenu" protected
{
	Position -35
	Title "$CMPTMNU_RENDERINGBEHAVIOR"
	Option "$CMPTMNU_POLYOBJ",						"compat_POLYOBJ", "YesNo"
	Option "$CMPTMNU_MASKEDMIDTEX",					"compat_MASKEDMIDTEX", "YesNo"
	Option "$CMPTMNU_SPRITESORT",					"compat_SPRITESORT", "YesNo"
	Class "CompatibilityMenu"
}

OptionMenu "CompatSoundMenu" protected
{
	Position -35
	Title "$CMPTMNU_SOUNDBEHAVIOR"
	Option "$CMPTMNU_SOUNDSLOTS",					"compat_soundslots", "YesNo"
	Option "$CMPTMNU_SILENTPICKUP",					"compat_SILENTPICKUP", "YesNo"
	Option "$CMPTMNU_SILENTINSTANTFLOORS",			"compat_silentinstantfloors", "YesNo"
	Option "$CMPTMNU_SECTORSOUNDS",					"compat_SECTORSOUNDS", "YesNo"
	Option "$CMPTMNU_SOUNDTARGET",					"compat_SOUNDTARGET", "YesNo"
	Class "CompatibilityMenu"
}

/*=======================================
 *
 * Sound Options Menu
 *
 *=======================================*/

OptionValue SampleRates
{
	0,		"$OPTVAL_DEFAULT"
	8000,	"$OPTVAL_8000HZ"
	11025,	"$OPTVAL_11025HZ"
	22050,	"$OPTVAL_22050HZ"
	32000,	"$OPTVAL_32000HZ"
	44100,	"$OPTVAL_44100HZ"
	48000,	"$OPTVAL_48000HZ"
}


OptionValue BufferSizes
{
	   0, "$OPTVAL_DEFAULT"
	  64, "$OPTVAL_64SAMPLES"
	 128, "$OPTVAL_128SAMPLES"
	 256, "$OPTVAL_256SAMPLES"
	 512, "$OPTVAL_512SAMPLES"
	1024, "$OPTVAL_1024SAMPLES"
	2048, "$OPTVAL_2048SAMPLES"
	4096, "$OPTVAL_4096SAMPLES"
}


OptionValue BufferCounts
{
	   0, "$OPTVAL_DEFAULT"
	   2, "2"
	   3, "3"
	   4, "4"
	   5, "5"
	   6, "6"
	   7, "7"
	   8, "8"
	   9, "9"
	  10, "10"
	  11, "11"
	  12, "12"
}


OptionString ALDevices
{
	// filled in by the sound code
}

OptionString ALResamplers
{
	// filled in by the sound code
}

OptionString SpeakerModes
{
	"Auto",		"$OPTSTR_AUTO"
	"Mono",		"$OPTSTR_MONO"
	"Stereo",	"$OPTSTR_STEREO"
	"Prologic",	"$OPTSTR_PROLOGIC"
	"Quad",		"$OPTSTR_QUAD"
	"Surround",	"$OPTSTR_SURROUND"
	"5.1",		"$OPTSTR_5POINT1"
	"7.1",		"$OPTSTR_7POINT1"
}


OptionString Resamplers
{
	"NoInterp",		"$OPTSTR_NOINTERPOLATION"
	"Linear",		"$OPTVAL_LINEAR_1"
	"Cubic",		"$OPTVAL_CUBIC"
	"Spline",		"$OPTSTR_SPLINE"
}


OptionMenu OpenALSoundItems protected
{
	Title "$OPENALMNU_TITLE"
	Option "$OPENALMNU_PLAYBACKDEVICE",		"snd_aldevice",		"ALDevices"
	Option "$OPENALMNU_ENABLEEFX",			"snd_efx",			"OnOff"
	Option "$OPENALMNU_RESAMPLER",			"snd_alresampler",	"ALResamplers"
}


OptionValue MidiDevices
{
	// filled in by the sound code
}

OptionMenu SoundOptions protected
{
	Title "$SNDMNU_TITLE"
	Slider "$MODMNU_MASTERVOLUME",		"snd_mastervolume", 0, 1, 0.05, 2
	StaticText " "
	Slider "$SNDMNU_SFXVOLUME",			"snd_sfxvolume", 0, 1, 0.05, 2
	Slider "$SNDMNU_MUSICVOLUME",		"snd_musicvolume", 0, 1, 0.05, 2
	StaticText " "
	Slider "$SNDMNU_MENUVOLUME",		"snd_menuvolume", 0, 1, 0.05, 2
	StaticText " "
	Option "$SNDMNU_MIDIDEVICE",		"snd_mididevice", "MidiDevices"
	StaticText " "
	Option "$SNDMNU_UNDERWATERREVERB",	"snd_waterreverb", "OnOff"
	Option "$SNDMNU_RANDOMIZEPITCHES",	"snd_pitched", "OnOff"
	Slider "$SNDMNU_CHANNELS",			"snd_channels", 64, 256, 8, 0
	StaticText " "
	Submenu "$SNDMNU_ADVANCED",			"AdvSoundOptions"
	Submenu "$OPTMNU_REVERB",			"ReverbEdit"
}

/*=======================================
 *
 * Advanced Sound Options Menu
 *
 *=======================================*/

OptionValue GusMemory
{
	0, "$OPTVAL_UNLIMITED"
	1, "$OPTVAL_256K"
	2, "$OPTVAL_512K"
	3, "$OPTVAL_768K"
	4, "$OPTVAL_1024K"
}

OptionValue OplCores
{
	0, "$OPTVAL_MAMEOPL2"
	1, "$OPTVAL_DOSBOXOPL3"
	2, "$OPTVAL_JAVAOPL3"
	3, "$OPTVAL_NUKEDOPL3"
}


OptionMenu AdvSoundOptions protected
{
	Title "$ADVSNDMNU_TITLE"
	Option "$ADVSNDMNU_SAMPLERATE",			"snd_samplerate", "SampleRates"
	Option "$ADVSNDMNU_HRTF",				"snd_hrtf", "AutoOffOn"
	StaticText " "
	Option "$SNDMNU_BACKGROUND",			"i_soundinbackground", "OnOff"
	StaticText " "

	ifoption(openal)
	{
	StaticText " "
		Submenu "$SNDMNU_OPENAL",		"OpenALSoundItems"
	}

	StaticText " "
	Submenu "$SNDMNU_MIDIPLAYER",		"MidiPlayerOptions"
	Submenu "$SNDMNU_MODREPLAYER",		"ModReplayerOptions"
	StaticText " "
	Command "$SNDMNU_RESTART",			"snd_reset"
}

OptionMenu GusConfigMenu protected
{
	Title "$ADVSNDMNU_SELCONFIG"
}

OptionMenu WildMidiConfigMenu protected
{
	Title "$ADVSNDMNU_SELCONFIG"
}

OptionMenu TimidityConfigMenu protected
{
	Title "$ADVSNDMNU_SELCONFIG"
}

OptionMenu FluidPatchsetMenu protected
{
	Title "$ADVSNDMNU_SELCONFIG"
}

OptionMenu ADLBankMenu protected
{
	Title "$ADVSNDMNU_OPLBANK"
}

OptionMenu ADLMIDICustomBanksMenu protected
{
	Title "$ADVSNDMNU_OPLBANKFILE"
}

OptionMenu OPNMIDICustomBanksMenu protected
{
	Title "$ADVSNDMNU_OPNBANKFILE"
}


/*=======================================
 *
 * Module Replayer Options Menu
 *
 *=======================================*/


OptionValue ModQuality
{
	0.0, "$OPTVAL_ALIASING"
	1.0, "$OPTVAL_LINEAR_1"
	2.0, "$OPTVAL_CUBIC"
	3.0, "$OPTVAL_BLEP"		// Band-limited step
	4.0, "$OPTVAL_LINEARSLOW"
	5.0, "$OPTVAL_BLAM"		// Band-limited linear
	6.0, "$OPTVAL_CUBICSLOW"
	7.0, "$OPTVAL_SINC"
}


OptionValue ModVolumeRamps
{
	0.0, "$OPTVAL_NONE"
	1.0, "$OPTVAL_NOTEONOFFONLY"
	2.0, "$OPTVAL_FULLRAMPING"
}



OptionMenu ModReplayerOptions protected
{
	Title "$MODMNU_TITLE"
	Slider "$MODMNU_MASTERVOLUME",			"mod_dumb_mastervolume", 0.25, 4, 0.1, 1
	Option "$ADVSNDMNU_SAMPLERATE",			"mod_samplerate", "SampleRates"
	Option "$MODMNU_QUALITY",				"mod_interp", "ModQuality"
	Option "$MODMNU_VOLUMERAMPING",			"mod_volramp", "ModVolumeRamps"
	StaticText " "
	Option "$MODMNU_CHIPOMATIC",			"mod_autochip", "OnOff"
	// TODO if the menu system is ever rewritten: Provide a decent
	// mechanism to edit the chip-o-matic settings like you can with
	// the foo_dumb preferences in foobar2000.
}

/*=======================================
 *
 * MIDI player
 *
 *=======================================*/

 OptionValue TimidityReverb
 {
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_STANDARD"
	2, "$ADVSNDMNU_GLOBAL"
	3, "$ADVSNDMNU_FREEVERB"
	4, "$ADVSNDMNU_GLOBAL_FREEVERB"
 }

  OptionMenu MidiPlayerOptions protected
 {
	Title "$SNDMNU_MIDIPLAYER"
	Submenu "$ADVSNDMNU_FLUIDSYNTH", "FluidsynthOptions", 0, 1
	Submenu "$ADVSNDMNU_TIMIDITY", "TimidityOptions", 0, 1
	Submenu "$ADVSNDMNU_GUSEMULATION", "GUSOptions", 0, 1
	Submenu "$ADVSNDMNU_WILDMIDI", "WildMidiOptions", 0, 1
	Submenu "$ADVSNDMNU_OPLSYNTHESIS", "OPLOptions", 0, 1
	Submenu "$ADVSNDMNU_ADLMIDI", "ADLOptions", 0, 1
	Submenu "$ADVSNDMNU_OPNMIDI", "OPNOptions", 0, 1
 }

 OptionMenu FluidsynthOptions protected
 {
	Title "$ADVSNDMNU_FLUIDSYNTH"
	LabeledSubMenu "$ADVSNDMNU_SELCONFIG",		"fluid_patchset", "FluidPatchsetMenu"
	Slider "$ADVSNDMNU_FLUIDGAIN",			"fluid_gain", 0, 10, 0.5, 1
	Option "$ADVSNDMNU_REVERB", 			"fluid_reverb", "OnOff"
	Option "$ADVSNDMNU_CHORUS", 			"fluid_chorus", "OnOff"
	Slider "$ADVSNDMNU_MIDIVOICES", 		"fluid_voices", 16, 4096, 16, 0
	// other CVARs need to be revieved for usefulness
 }

 OptionMenu TimidityOptions protected
 {
	Title "$ADVSNDMNU_TIMIDITY"
	LabeledSubMenu "$ADVSNDMNU_SELCONFIG",		"timidity_config", "TimidityConfigMenu"
	Option "$ADVSNDMNU_REVERB", 			"timidity_reverb", "TimidityReverb"
	Slider "$ADVSNDMNU_REVERB_LEVEL", 		"timidity_reverb_level", 0, 127, 1, 0
	Option "$ADVSNDMNU_CHORUS", 			"timidity_chorus", "OnOff"
	// other CVARs need to be revieved for usefulness
 }

 OptionMenu GUSOptions protected
 {
	Title "$ADVSNDMNU_GUSEMULATION"
	LabeledSubMenu "$ADVSNDMNU_SELCONFIG",		"midi_config", "GusConfigMenu"
	Slider "$ADVSNDMNU_MIDIVOICES",			"midi_voices", 16, 256, 4, 0
	Option "$ADVSNDMNU_DMXGUS", 			"midi_dmxgus", "OnOff"
	Option "$ADVSNDMNU_GUSMEMSIZE", 		"gus_memsize", "GusMemory"
 }

  OptionMenu WildMidiOptions protected
 {
	Title "$ADVSNDMNU_WILDMIDI"
	LabeledSubMenu "$ADVSNDMNU_SELCONFIG",		"wildmidi_config", "WildMidiConfigMenu"
	Option "$ADVSNDMNU_REVERB", 			"wildmidi_reverb", "OnOff"
	Option "$ADVSNDMNU_ADVRESAMPLING",		"wildmidi_enhanced_resampling", "OnOff"
 }

 OptionMenu OPLOptions protected
 {
 	Title "$ADVSNDMNU_OPLSYNTHESIS"
	Option "$ADVSNDMNU_OPLCORES", 			"opl_core", "OplCores"
	Slider "$ADVSNDMNU_OPLNUMCHIPS", 		"opl_numchips", 1, 8, 1, 0
	Option "$ADVSNDMNU_OPLFULLPAN",			"opl_fullpan", "OnOff"
 }

 OptionValue AdlVolumeModels
 {
	0, "$ADLVLMODEL_AUTO"
	1, "$ADLVLMODEL_GENERIC"
	2, "$ADLVLMODEL_NATIVE"
	3, "$ADLVLMODEL_DMX"
	4, "$ADLVLMODEL_APOGEE"
	5, "$ADLVLMODEL_WIN9X"
	6, "$ADLVLMODEL_DMX_FIXED"
	7, "$ADLVLMODEL_APOGEE_FIXED"
	8, "$ADLVLMODEL_AIL"
	9, "$ADLVLMODEL_WIN9XGENERIC"
	10, "$ADLVLMODEL_HMI"
	11, "$ADLVLMODEL_HMIOLD"
 }

 OptionValue ADLOplCores
 {
	0, "$OPTVAL_NUKEDOPL3"
	1, "$OPTVAL_NUKEDOPL3174"
	2, "$OPTVAL_DOSBOXOPL3"
	3, "$OPTVAL_OPALOPL3"
	4, "$OPTVAL_JAVAOPL3"
 }

 OptionValue OpnCores
 {
	0, "$OPTVAL_MAMEOPN2"
	1, "$OPTVAL_NUKEDOPN2"
	2, "$OPTVAL_GENSOPN2"
	4, "$OPTVAL_NP2OPNA"
	5, "$OPTVAL_MAMEOPNA"
	6, "$OPTVAL_PMDWINOPNA"
 }

 OptionMenu ADLOptions protected
 {
	Title "$ADVSNDMNU_ADLMIDI"
	Option "$ADVSNDMNU_OPLCORES",		 "adl_emulator_id", "ADLOplCores"
	Option "$ADVSNDMNU_RUNPCMRATE",		 "adl_run_at_pcm_rate", "OnOff"
	Slider "$ADVSNDMNU_ADLNUMCHIPS", 	 "adl_chips_count", 1, 32, 1, 0
	Option "$ADVSNDMNU_OPLFULLPAN", 	 "adl_fullpan", "OnOff"
	Option "$ADVSNDMNU_VLMODEL",		 "adl_volume_model", "AdlVolumeModels"
	StaticText ""
	LabeledSubmenu "$ADVSNDMNU_OPLBANK", "adl_bank", "ADLBankMenu"
	StaticText ""
	Option "$ADVSNDMNU_ADLCUSTOMBANK", 	 "adl_use_custom_bank", "OnOff"
	LabeledSubmenu "$ADVSNDMNU_OPLBANKFILE", "adl_custom_bank", "ADLMIDICustomBanksMenu"
 }

 OptionMenu OPNOptions protected
 {
	Title "$ADVSNDMNU_OPNMIDI"
	Option "$ADVSNDMNU_OPNCORES",		 "opn_emulator_id", "OpnCores"
	Option "$ADVSNDMNU_RUNPCMRATE",		 "opn_run_at_pcm_rate", "OnOff"
	Slider "$ADVSNDMNU_OPNNUMCHIPS", 	 "opn_chips_count", 1, 32, 1, 0
	Option "$ADVSNDMNU_OPLFULLPAN", 	 "opn_fullpan", "OnOff"
	StaticText ""
	Option "$ADVSNDMNU_OPNCUSTOMBANK", 	 "opn_use_custom_bank", "OnOff"
	LabeledSubmenu "$ADVSNDMNU_OPNBANKFILE", "opn_custom_bank", "OPNMIDICustomBanksMenu"
 }

/*=======================================
 *
 * Change Renderer Menu
 *
 *=======================================*/

OptionValue "RenderMode"
{
	0, "$OPTVAL_SWDOOM"
	1, "$OPTVAL_SWDOOMTC"
	4,  "$OPTVAL_HWPOLY"
}

/*=======================================
 *
 * Video mode menu
 *
 *=======================================*/

OptionValue ForceRatios
{
	0.0, "$OPTVAL_OFF"
	3.0, "4:3"
	1.0, "16:9"
	5.0, "17:10"
	2.0, "16:10"
	4.0, "5:4"
	6.0, "21:9"
}
OptionValue Ratios
{
	0.0, "4:3"
	4.0, "5:4"
	1.0, "16:9"
	2.0, "16:10"
	3.0, "17:10"
	6.0, "21:9"
	 -1, "$OPTVAL_ALL"
}
OptionValue ScaleModes
{
	0, "$OPTVAL_NORMAL"
	6, "320x200"
	2, "640x400"
	3, "960x600"
	4, "1280x800"
	5, "$OPTVAL_CUSTOM"
	1, "$OPTVAL_LOWEST"
}
OptionValue CropAspect
{
	0, "$OPTVAL_STRETCH"
	1, "$OPTVAL_LETTERBOX"
}

OptionValue MaxFps
{
	0, "$OPTVAL_UNLIMITED"
	60, "$OPTVAL_60FPS"
	75, "$OPTVAL_75FPS"
	90, "$OPTVAL_90FPS"
	120, "$OPTVAL_120FPS"
	144, "$OPTVAL_144FPS"
	200, "$OPTVAL_200FPS"
}


OptionMenu VideoModeMenu protected
{
	Title "$VIDMNU_TITLE"

	Option "$VIDMNU_PREFERBACKEND",		"vid_preferbackend", "PreferBackend"
	StaticText " "
	IfOption(SWRender)
	{
		Option "$VIDMNU_RENDERMODE",		"vid_rendermode", "RenderMode"
	}
	Option "$VIDMNU_FULLSCREEN",		"vid_fullscreen", "YesNo"

	IfOption(Mac)
	{
		Option "$VIDMNU_HIDPI",			"vid_hidpi", "YesNo"
	}

	Option "$VIDMNU_FORCEASPECT",		"vid_aspect", "ForceRatios"
	Option "$VIDMNU_CROPASPECT",		"vid_cropaspect", "CropAspect"
	Option "$VIDMNU_SCALEMODE",			"vid_scalemode", "ScaleModes"
	Slider "$VIDMNU_SCALEFACTOR",		"vid_scalefactor", 0.25, 2.0, 0.25, 2

	StaticText " "
	Option "$DSPLYMNU_VSYNC",					"vid_vsync", "OnOff"
	Slider "$VIDMNU_MAXFPS",					"vid_maxfps", 35, 500, 1
	Option "$DSPLYMNU_CAPFPS",					"cl_capfps", "OffOn"
	
	StaticText ""
	StaticText "$VIDMNU_CUSTOMRES"
	TextField "$VIDMNU_CUSTOMX", menu_resolution_custom_width
	TextField "$VIDMNU_CUSTOMY", menu_resolution_custom_height
	Option "$VIDMNU_USELINEAR", "vid_scale_linear", "YesNo"
	StaticText ""
	Command "$VIDMNU_APPLYW", "menu_resolution_commit_changes 0"
	Command "$VIDMNU_APPLYFS", "menu_resolution_commit_changes 1"
	StaticText ""

	SubMenu "$VIDMNU_RESPRESET", CustomResolutionMenu
}

OptionMenu CustomResolutionMenu protected
{
	Title "$VIDMNU_RESPRESETTTL"

	StaticText "$VIDMNU_RESPRESETHEAD"
	StaticText ""
	StaticText "$VIDMNU_ASPECT43"
	Command "640x480", "menu_resolution_set_custom 640 480"
	Command "1024x768", "menu_resolution_set_custom 1024 768"
	Command "1280x960", "menu_resolution_set_custom 1280 960"
	Command "1600x1200", "menu_resolution_set_custom 1600 1200"
	StaticText ""
	StaticText "$VIDMNU_ASPECT54"
	Command "1280x1024", "menu_resolution_set_custom 1280 1024"
	StaticText ""
	StaticText "$VIDMNU_ASPECT169"
	Command "960x540", "menu_resolution_set_custom 960 540"
	Command "(720p HD)   1280x720", "menu_resolution_set_custom 1280 720"
	Command "1366x768", "menu_resolution_set_custom 1366 768"
	Command "(1080p HD) 1920x1080", "menu_resolution_set_custom 1920 1080"
	Command "(1440p HD) 2560x1440", "menu_resolution_set_custom 2560 1440"
	Command "(4K UHD) 3840x2160", "menu_resolution_set_custom 3840 2160"
	StaticText ""
	StaticText "$VIDMNU_ASPECT1610"
	Command "960x600", "menu_resolution_set_custom 960 600"
	Command "1280x800", "menu_resolution_set_custom 1280 800"
	Command "1440x900", "menu_resolution_set_custom 1440 900"
	Command "1680x1050", "menu_resolution_set_custom 1680 1050"
	Command "1920x1200", "menu_resolution_set_custom 1920 1200"
	StaticText ""
	StaticText "$VIDMNU_ASPECT219"
	Command "1920x810", "menu_resolution_set_custom 1920 810"
	Command "2560x1080", "menu_resolution_set_custom 2560 1080"
}

/*=======================================
 *
 * Network options menu
 *
 *=======================================*/

OptionMenu NetworkOptions protected
{
	Title "$NETMNU_TITLE"
	StaticText "$NETMNU_LOCALOPTIONS", 1
	Option "$NETMNU_MOVEPREDICTION",		"cl_noprediction", "OffOn"
	Option "$NETMNU_LINESPECIALPREDICTION",	"cl_predict_specials", "OnOff"
	Slider "$NETMNU_PREDICTIONLERPSCALE",	"cl_predict_lerpscale", 0.0, 0.5, 0.05, 2
	Slider "$NETMNU_LERPTHRESHOLD",			"cl_predict_lerpthreshold", 0.1, 16.0, 0.1
	StaticText " "
	StaticText "$NETMNU_HOSTOPTIONS", 1
	Option "$NETMNU_EXTRATICS",				"net_extratic", "ExtraTicMode"
	Option "$NETMNU_TICBALANCE",			"net_ticbalance", "OnOff"

}

OptionValue ExtraTicMode
{
	0, "$OPTVAL_NONE"
	1, "1"
	2, "$OPTVAL_ALLUNACKNOWLEDGED"
}

OptionValue "LookupOrder"
{
	0, "$OPTVAL_OBVERSEFIRST"
	1, "$OPTVAL_REVERSEFIRST"
}

OptionValue "SpriteclipModes"
{
	0, "$OPTVAL_NEVER"
	1, "$OPTVAL_SMART"
	2, "$OPTVAL_ALWAYS"
	3, "$OPTVAL_SMARTER"
}

OptionValue "EnhancedStealth"
{
	0, "$OPTVAL_NEVER"
	1, "$OPTVAL_INFRAREDONLY"
	2, "$OPTVAL_INFRAREDANDTORCH"
	3, "$OPTVAL_ANYFIXEDCOLORMAP"
}

OptionValue "FilterModes"
{
	0, "$OPTVAL_NONE"
	1, "$OPTVAL_NONENEARESTMIPMAP"
	5, "$OPTVAL_NONELINEARMIPMAP"
	6, "$OPTVAL_NONETRILINEAR"
	2, "$OPTVAL_LINEAR_2"
	3, "$OPTVAL_BILINEAR"
	4, "$OPTVAL_TRILINEAR"
}

OptionValue "TonemapModes"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_UNCHARTED2"
	2, "$OPTVAL_HEJLDAWSON"
	3, "$OPTVAL_REINHARD"
	5, "$OPTVAL_PALETTE"
}

OptionValue "SSAOModes"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_LOW"
	2, "$OPTVAL_MEDIUM"
	3, "$OPTVAL_HIGH"
}

OptionValue "FXAAQuality"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_LOW"
	2, "$OPTVAL_MEDIUM"
	3, "$OPTVAL_HIGH"
	4, "$OPTVAL_EXTREME"
}

OptionValue "Anisotropy"
{
	1, "$OPTVAL_OFF"
	2, "$OPTVAL_2X"
	4, "$OPTVAL_4X"
	8, "$OPTVAL_8X"
	16, "$OPTVAL_16X"
}

OptionValue "Multisample"
{
	1, "$OPTVAL_OFF"
	2, "$OPTVAL_2X"
	4, "$OPTVAL_4X"
	8, "$OPTVAL_8X"
	16, "$OPTVAL_16X"
	32, "$OPTVAL_32X"
}

OptionValue "Colormaps"
{
	0, "$OPTVAL_USEASPALETTE"
	1, "$OPTVAL_BLEND"
}

OptionValue "LightingModes"
{
	0, "$OPTVAL_CLASSIC"
	1, "$OPTVAL_SOFTWARE"
	2, "$OPTVAL_VANILLA"
}

OptionValue "Precision"
{
	0, "$OPTVAL_SPEED"
	1, "$OPTVAL_QUALITY"
}

OptionValue "DitherModes"
{
	0, "$OPTVAL_OFF"
	-1, "$OPTVAL_ON"
	6, "6 BPC"
	8, "8 BPC"
	10, "10 BPC"
	12, "12 BPC"
}

OptionValue "BillboardModes"
{
	0, "$OPTVAL_YAXIS"
	1, "$OPTVAL_XYAXIS"
}


OptionValue "Particles"
{
	0, "$OPTVAL_SQUARE"
	1, "$OPTVAL_ROUND"
	2, "$OPTVAL_SMOOTH_2"
}

OptionValue "HqResizeModes"
{
   0, "$OPTVAL_OFF"
   1, "$OPTVAL_SCALENX"
   2, "$OPTVAL_HQNX"
   3, "$OPTVAL_HQNXMMX"
   4, "$OPTVAL_NXBRZ"
   5, "$OPTVAL_OLD_NXBRZ"
   6, "$OPTVAL_NORMALNX"
}

OptionValue "HqResizeMultipliers"
{
   1, "$OPTVAL_OFF"
   2, "2x"
   3, "3x"
   4, "4x"
   5, "5x"
   6, "6x"
}

OptionValue "HqResizeModesNoMMX"
{
   0, "$OPTVAL_OFF"
   1, "$OPTVAL_SCALENX"
   2, "$OPTVAL_HQNX"
   4, "$OPTVAL_NXBRZ"
   5, "$OPTVAL_OLD_NXBRZ"
   6, "$OPTVAL_NORMALNX"
}

OptionValue "FogMode"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_STANDARD"
	2, "$OPTVAL_RADIAL"
}

OptionValue "FuzzStyle"
{
	0, "$OPTVAL_SHADOW"
	1, "$OPTVAL_PIXELFUZZ"
	2, "$OPTVAL_SMOOTHFUZZ"
	3, "$OPTVAL_SWIRLYFUZZ"
	4, "$OPTVAL_TRANSLUCENTFUZZ"
	6, "$OPTVAL_NOISE"
	7, "$OPTVAL_SMOOTHNOISE"
	8, "$OPTVAL_SOFTWARE"
	//5, "$OPTVAL_JAGGEDFUZZ" I can't see any difference between this and 4 so it's disabled for now.
}

OptionValue VRMode
{
	0, "$OPTVAL_NORMAL"
	1, "$OPTVAL_GREENMAGENTA"
	2, "$OPTVAL_REDCYAN"
	9, "$OPTVAL_AMBERBLUE"
	3, "$OPTVAL_SBSFULL"
	4, "$OPTVAL_SBSNARROW"
	8, "$OPTVAL_SBSLETTERBOX"
	11, "$OPTVAL_TOPBOTTOM"
	12, "$OPTVAL_ROWINTERLEAVED"
	13, "$OPTVAL_COLUMNINTERLEAVED"
	14, "$OPTVAL_CHECKERBOARD"
	5, "$OPTVAL_LEFTEYE"
	6, "$OPTVAL_RIGHTEYE"
	7, "$OPTVAL_QUADBUFFERED"
}

OptionValue ShadowMapQuality
{
	128, "128"
	256, "256"
	512, "512"
	1024, "1024"
}

OptionValue ShadowMapFilter
{
	0, "$OPTVAL_NEAREST"
	1, "$OPTVAL_PCF_LOW"
	2, "$OPTVAL_PCF_MEDIUM"
	3, "$OPTVAL_PCF_HIGH"
}


OptionMenu "GLTextureGLOptions" protected
{
	Title "$GLTEXMNU_TITLE"
	Option "$GLTEXMNU_TEXFILTER",		gl_texture_filter,				"FilterModes"
	Option "$GLTEXMNU_ANISOTROPIC",		gl_texture_filter_anisotropic,	"Anisotropy"

	ifOption(MMX)
	{
		Option "$GLTEXMNU_HQRESIZE",		gl_texture_hqresizemode,		"HqResizeModes"
	}
	else
	{
		Option "$GLTEXMNU_HQRESIZE",		gl_texture_hqresizemode,		"HqResizeModesNoMMX"
	}
	Option "$GLTEXMNU_HQRESIZEMULT",	gl_texture_hqresizemult,		"HqResizeMultipliers"
	StaticText "!HQRESIZE_WARNING!"

	Option "$GLTEXMNU_RESIZETEX",		gl_texture_hqresize_textures,	"OnOff"
	Option "$GLTEXMNU_RESIZESPR",		gl_texture_hqresize_sprites,	"OnOff"
	Option "$GLTEXMNU_RESIZEFNT",		gl_texture_hqresize_fonts,		"OnOff"
	Option "$GLTEXMNU_RESIZESKN",		gl_texture_hqresize_skins,		"OnOff"
	Option "$GLTEXMNU_PRECACHETEX",		gl_precache,					"YesNo"
	Option "$GLTEXMNU_SORTDRAWLIST", 	gl_sort_textures,				"YesNo"
	Class "GLTextureGLOptions"
}

OptionMenu "GLLightOptions" protected
{
	Title "$GLLIGHTMNU_TITLE"
	Option "$TCMNU_DYNLIGHTS",					"r_dynlights", "OnOff"
	Option "$GLLIGHTMNU_LIGHTSENABLED",			gl_lights,				"OnOff"
	Option "$GLLIGHTMNU_LIGHTSPRITES",			gl_light_sprites,		"YesNo"
	Option "$GLLIGHTMNU_LIGHTPARTICLES",		gl_light_particles,		"YesNo"
	Option "$GLLIGHTMNU_LIGHTSHADOWMAP",		gl_light_shadowmap,		"YesNo"
	Option "$GLLIGHTMNU_LIGHTSHADOWMAPQUALITY", gl_shadowmap_quality,	"ShadowMapQuality"
	Option "$GLLIGHTMNU_LIGHTSHADOWMAPFILTER", 	gl_shadowmap_filter,	"ShadowMapFilter"
}

OptionMenu "OpenGLOptions" protected
{
	Title "$GLMNU_TITLE"
	Submenu "$GLPREFMNU_VRMODE",				"VR3DMenu"
	Submenu "$GLMNU_POSTPROCESS",				"PostProcessMenu"
	StaticText " "
	Option "$GLPREFMNU_SECLIGHTMODE",			gl_lightmode,					"LightingModes"
	Option "$GLPREFMNU_SWLMBANDED",				gl_bandedswlight,				"OnOff"
	Option "$GLPREFMNU_FOGMODE",				gl_fogmode,						"FogMode"
	Option "$GLPREFMNU_FOGFORCEFULLBRIGHT",		gl_brightfog,					"YesNo"
	Slider "$GLPREFMNU_WPNLIGHTSTR",			gl_weaponlight,					0,32, 2
	Option "$GLPREFMNU_ENVIRONMENTMAPMIRROR",	gl_mirror_envmap,				"OnOff"
	Option "$GLPREFMNU_ENV",					gl_enhanced_nightvision,		"OnOff"
	Option "$GLPREFMNU_ENVSTEALTH",				gl_enhanced_nv_stealth,			"EnhancedStealth"
	Option "$GLPREFMNU_SPRCLIP",				gl_spriteclip,					"SpriteclipModes"
	Option "$GLPREFMNU_SPRBLEND",				gl_sprite_blend,				"OnOff"
	Option "$GLPREFMNU_FUZZSTYLE",				gl_fuzztype,					"FuzzStyle"
	Option "$GLPREFMNU_SPRBILLBOARD",			gl_billboard_mode,				"BillboardModes"
	Option "$GLPREFMNU_SPRBILLFACECAMERA",		gl_billboard_faces_camera,		"OnOff"
	Option "$GLPREFMNU_PARTICLESTYLE",			gl_particles_style,				"Particles"
	Option "$GLPREFMNU_RENDERQUALITY",			gl_seamless,					"Precision"
	//Option "$GLPREFMNU_CORONAS",				gl_coronas,						"OnOff"
	StaticText " "
	Slider "$GLPREFMNU_MENUBLUR",				gl_menu_blur, 0, 5.0, 0.5, 2
	StaticText " "
	Option "$GLPREFMNU_MULTISAMPLE", 			gl_multisample,					"Multisample"
}

OptionMenu "VR3DMenu" protected
{
	Title "$GLPREFMNU_VRMODE"
	Option "$GLMNU_3DMODE",					vr_mode, 						"VRMode"
	IfOption(Windows)
	{
		Option "$GLPREFMNU_VRQUADSTEREO",			vr_enable_quadbuffered,			"OnOff"
	}
	Slider "$GLPREFMNU_VRIPD",					vr_ipd,							0.041, 0.073, 0.001, 3
	Slider "$GLPREFMNU_VRSCREENDIST",			vr_screendist,					0.2, 10.0, 0.1, 1
}

OptionMenu "PostProcessMenu" protected
{
	Title "$GLMNU_POSTPROCESS"
	Option "$GLPREFMNU_BLOOM",		 			gl_bloom,						"OnOff"
	Option "$GLPREFMNU_LENS",		 			gl_lens,						"OnOff"
	Option "$GLPREFMNU_SSAO",		 			gl_ssao,						"SSAOModes"
	Slider "$GLPREFMNU_SSAO_PORTALS",			gl_ssao_portals,				0.0, 4.0, 1.0, 0
	Option "$GLPREFMNU_FXAA",		 			gl_fxaa,						"FXAAQuality"
	Option "$GLPREFMNU_DITHER",		 			gl_dither_bpc,					"DitherModes"
	Option "$GLPREFMNU_TONEMAP", 				gl_tonemap,						"TonemapModes"
	StaticText " "
	Slider "$GLPREFMNU_PALTONEMAPPOWER",		gl_paltonemap_powtable,			0.2, 3.0, 0.1, 1
	Option "$GLPREFMNU_PALTONEMAPORDER",		gl_paltonemap_reverselookup,	"LookupOrder"
}

OptionMenu "ReverbEdit" protected
{
	Class "ReverbEdit"
	Title "$OPTMNU_REVERB"
	StaticTextSwitchable 	"", "", "EvironmentName", 1
	StaticTextSwitchable 	"", "", "EvironmentID"
	StaticText " "
	Submenu "$REVMNU_SELECT", "ReverbSelect"
	Option "$REVMNU_TEST", "eaxedit_test", OnOff
	StaticText " "
	Submenu "$REVMNU_NEW", "ReverbNew"
	Submenu "$REVMNU_SAVE", "ReverbSave"
	Submenu "$REVMNU_EDIT", "ReverbSettings"
}

OptionMenu "ReverbSelect" protected
{
	Class "ReverbSelect"
	Title "$REVMNU_SELECT"
	// filled in by code
}

OptionMenu "ReverbSettings" protected
{
	Title "$REVMNU_EDIT"
	SafeCommand "$REVMNU_REVERT", "revertenvironment"
	StaticText " "
	SliderReverbEditOption "$REVMNU_Environment_Size", 1, 100, 0.01, 3, 1
	SliderReverbEditOption "$REVMNU_Environment_Diffusion", 0, 1, 0.01, 3, 2
	SliderReverbEditOption "$REVMNU_Room", -10000, 0, 1, 0, 3
	SliderReverbEditOption "$REVMNU_Room_HF", -10000, 0, 1, 0, 4
	SliderReverbEditOption "$REVMNU_Room_LF", -10000, 0, 1, 0, 5
	SliderReverbEditOption "$REVMNU_Decay_Time", 1, 200, 0.01, 3, 6
	SliderReverbEditOption "$REVMNU_Decay_HF_Ratio", 1, 20, 0.01, 3, 7
	SliderReverbEditOption "$REVMNU_Decay_LF_Ratio", 1, 20, 0.01, 3, 8
	SliderReverbEditOption "$REVMNU_Reflections", -10000, 1000, 1, 0, 9
	SliderReverbEditOption "$REVMNU_Reflections_Delay", 0, 0.3, 1, 3, 10
	SliderReverbEditOption "$REVMNU_Reflections_Pan_X", -2000, 2000, 1, 3, 11
	SliderReverbEditOption "$REVMNU_Reflections_Pan_Y", -2000, 2000, 1, 3, 12
	SliderReverbEditOption "$REVMNU_Reflections_Pan_Z", -2000, 2000, 1, 3, 13
	SliderReverbEditOption "$REVMNU_Reverb", -10000, 2000, 1, 0, 14
	SliderReverbEditOption "$REVMNU_Reverb_Delay", 0, 0.1, 0.01, 3, 15
	SliderReverbEditOption "$REVMNU_Reverb_Pan_X", -2000, 2000, 1, 3, 16
	SliderReverbEditOption "$REVMNU_Reverb_Pan_Y", -2000, 2000, 1, 3, 17
	SliderReverbEditOption "$REVMNU_Reverb_Pan_Z", -2000, 2000, 1, 3, 18
	SliderReverbEditOption "$REVMNU_Echo_Time", 0.075, 0.25, 0.005, 3, 19
	SliderReverbEditOption "$REVMNU_Echo_Depth", 0, 1, 0.01, 3, 20
	SliderReverbEditOption "$REVMNU_Modulation_Time", 0.04, 4, 0.01, 3, 21
	SliderReverbEditOption "$REVMNU_Modulation_Depth",0, 1, 0.01, 3, 22
	SliderReverbEditOption "$REVMNU_Air_Absorption_HF", -100, 0, 0.01, 3, 23
	SliderReverbEditOption "$REVMNU_HF_Reference", 10000, 200000, 1, 3, 24
	SliderReverbEditOption "$REVMNU_LF_Reference",20, 10000, 0.1, 3, 25
	SliderReverbEditOption "$REVMNU_Room_Rolloff_Factor",0, 10, 0.01, 3, 26
	SliderReverbEditOption "$REVMNU_Diffusion",0, 100, 0.01, 3, 27
	SliderReverbEditOption "$REVMNU_Density",0, 100, 0.01, 3, 28
	StaticText " "
	ReverbOption "$REVMNU_Reflections_Scale", 29, OnOff
	ReverbOption "$REVMNU_Reflections_Delay_Scale", 30, OnOff
	ReverbOption "$REVMNU_Decay_Time_Scale", 31, OnOff
	ReverbOption "$REVMNU_Decay_HF_Limit", 32, OnOff
	ReverbOption "$REVMNU_Reverb_Scale", 33, OnOff
	ReverbOption "$REVMNU_Reverb_Delay_Scale", 34, OnOff
	ReverbOption "$REVMNU_Echo_Time_Scale", 35, OnOff
	ReverbOption "$REVMNU_Modulation_Time_Scale", 36, OnOff
}

OptionMenu "ReverbNew" protected
{
	Title "$REVMNU_NEW"
	ReverbSelect "$REVMNU_Based_on", "ReverbSelect"
	TextField "$REVMNU_Name", "reverbedit_name"
	NumberField "$REVMNU_ID_1", "reverbedit_id1", 0, 255
	NumberField "$REVMNU_ID_2", "reverbedit_id2", 0, 255
	Command "$REVMNU_Create", "createenvironment", 0, 1
}

OptionMenu "ReverbSave" protected
{
	Class "ReverbSave"
	Title "$REVMNU_SAVE"
	Command "$REVMNU_Save", "savereverbs"
	TextField "$REVMNU_File_name", "reverbsavename"
	StaticText ""
	StaticText "$REVMNU_Environments_to_save"
	// Rest is filled in by code.
}

/*=======================================
 *
 * Language menu
 *
 *=======================================*/

OptionString "LanguageOptions"
{
	"auto", "Auto"
	"default", "English (US)"
	"eng", "English (UK)"
	"cs", "??esky (Czech)"
	"da", "Dansk (Danish)"
	"de", "Deutsch (German)"
	"es", "Espa??ol (Espa??a) (Castilian Spanish)"
	"esm", "Espa??ol (Latino) (Latin American Spanish)"
	"eo", "Esperanto"
	"fi", "Suomi (Finnish)"
	"fr", "Fran??ais (French)"
	"hu", "Magyar (Hungarian)"
	"it", "Italiano (Italian)"
	"jp", "????????? (Japanese)"
	"ko", "????????? (Korean)"
	"nl", "Nederlands (Dutch)"
	"no", "Norsk Bokm??l (Norwegian)"
	"pl", "Polski (Polish)"
	"ptg", "Portugu??s (European Portuguese)"
	"pt", "Portugu??s do Brasil (Brazilian Portuguese)"
	"ro", "Rom??n?? (Romanian)"
	"ru", "?????????????? (Russian)"
	"sr", "???????????? (Serbian)"
	"tr", "T??rk??e (Turkish)"
}

/*=======================================
 *
 * Option Search menu
 *
 *=======================================*/

OptionMenu "os_Menu"
{
	Class "os_Menu"
	Title "$OS_TITLE"
}

OptionValue "os_isanyof_values"
{
	0, "$OS_ALL"
	1, "$OS_ANY"
}

/*=======================================
 *
 * Vulkan Menu
 *
 *=======================================*/

OptionMenu "vkoptions"
{
	Title "$VK_TITLE"
	//StaticText "$VK_WARNING"
	StaticText "$VK_RESTART"
	StaticText ""
	TextField "$VKMNU_DEVICE",			vk_device
	Option "$VKMNU_HDR",				"vk_hdr", "OnOff"
}

OptionValue "SpriteShadowModes"
{
	0, "$OPTVAL_OFF"
	1, "$OPTVAL_DEFAULT"
	2, "$OPTVAL_SPRSHADALWAYS"
}

