- y = 32;
- M_Print(16, y, " Customize controls");y += 8;
- M_Print(16, y, " Go to console");y += 8;
- M_Print(16, y, " Reset to defaults");y += 8;
- M_Print(16, y, " Video Options");y += 8;
- M_Print(16, y, " Effects Options");y += 8;
- M_Print(16, y, " Color Control Options");y += 8;
- M_Print(16, y, " 2D Resolution");M_DrawSlider(220, y, scr_2dresolution.value, 0, 1);y += 8;
- M_Print(16, y, " Console Speed");M_DrawSlider(220, y, scr_conspeed.value, 0, 1000);y += 8;
- M_Print(16, y, " Console Alpha");M_DrawSlider(220, y, scr_conalpha.value, 0, 1);y += 8;
- M_Print(16, y, " Conback Brightness");M_DrawSlider(220, y, scr_conbrightness.value, 0, 1);y += 8;
- M_Print(16, y, " Screen size");M_DrawSlider(220, y, scr_viewsize.value, 30, 120);y += 8;
- M_ItemPrint(16, y, " JPEG screenshots", jpeg_dll != NULL);M_DrawCheckbox(220, y, scr_screenshot_jpeg.integer);y += 8;
- M_Print(16, y, " Sky");M_DrawCheckbox(220, y, r_sky.integer);y += 8;
- // LordHavoc: FIXME: overbright needs to be disabled in GAME_GOODVSBAD2 but combine should not be disabled
- // LordHavoc: perhaps it's time for Overbright Bits to die, and a r_lightmapintensity option to be added?
- M_Print(16, y, " Overbright Bits");M_DrawSlider(220, y, v_overbrightbits.value, 0, 4);y += 8;
- M_Print(16, y, " Texture Combine");M_DrawCheckbox(220, y, gl_combine.integer);y += 8;
- M_Print(16, y, " Dithering");M_DrawCheckbox(220, y, gl_dither.integer);y += 8;
- M_Print(16, y, "Delay refresh (faster)");M_DrawCheckbox(220, y, gl_delayfinish.integer);y += 8;
- M_ItemPrint(16, y, " Game Speed", sv.active);M_DrawSlider(220, y, slowmo.value, 0, 5);y += 8;
- M_ItemPrint(16, y, " CD Music Volume", cdaudioinitialized);M_DrawSlider(220, y, bgmvolume.value, 0, 1);y += 8;
- M_ItemPrint(16, y, " Sound Volume", snd_initialized);M_DrawSlider(220, y, volume.value, 0, 1);y += 8;
- if (gamemode == GAME_GOODVSBAD2)
- M_ItemPrint(16, y, " Music Volume", snd_initialized);
- else
- M_ItemPrint(16, y, " Ambient Sound Volume", snd_initialized);
- M_DrawSlider(220, y, snd_staticvolume.value, 0, 1);
- y += 8;
- M_Print(16, y, " Crosshair");M_DrawSlider(220, y, crosshair.value, 0, 5);y += 8;
- M_Print(16, y, " Crosshair Size");M_DrawSlider(220, y, crosshair_size.value, 1, 5);y += 8;
- M_Print(16, y, " Static Crosshair");M_DrawCheckbox(220, y, crosshair_static.integer);y += 8;
- M_Print(16, y, " Show Framerate");M_DrawCheckbox(220, y, showfps.integer);y += 8;
- M_Print(16, y, " Always Run");M_DrawCheckbox(220, y, cl_forwardspeed.value > 200);y += 8;
- M_Print(16, y, " Lookspring");M_DrawCheckbox(220, y, lookspring.integer);y += 8;
- M_Print(16, y, " Lookstrafe");M_DrawCheckbox(220, y, lookstrafe.integer);y += 8;
- M_Print(16, y, " Mouse Speed");M_DrawSlider(220, y, sensitivity.value, 1, 50);y += 8;
- M_Print(16, y, " Mouse Look");M_DrawCheckbox(220, y, freelook.integer);y += 8;
- M_Print(16, y, " Invert Mouse");M_DrawCheckbox(220, y, m_pitch.value < 0);y += 8;
- M_Print(16, y, " Use Mouse");M_DrawCheckbox(220, y, vid_mouse.integer);y += 8;
-
- // cursor
- M_DrawCharacter(200, 32 + options_cursor*8, 12+((int)(realtime*4)&1));
-}
-
-
-void M_Options_Key (int k)
+ optnum = 0;
+ optcursor = options_cursor;
+ visible = (vid.conheight - 32) / 8;
+ opty = 32 - bound(0, optcursor - (visible >> 1), max(0, OPTIONS_ITEMS - visible)) * 8;
+
+ M_Options_PrintCommand( "Customize controls", true);
+ M_Options_PrintCommand( " Go to console", true);
+ M_Options_PrintCommand( " Reset to defaults", true);
+ M_Options_PrintCommand( " Video", true);
+ M_Options_PrintCommand( " Effects", true);
+ M_Options_PrintCommand( " Color Control", true);
+ M_Options_PrintSlider( " 2D Screen Width ", true, vid_conwidth.value, 320, 2048);
+ M_Options_PrintSlider( " 2D Screen Height", true, vid_conheight.value, 240, 1536);
+ M_Options_PrintSlider( " Console Speed", true, scr_conspeed.value, 0, 1000);
+ M_Options_PrintSlider( " Console Alpha", true, scr_conalpha.value, 0, 1);
+ M_Options_PrintSlider( "Conback Brightness", true, scr_conbrightness.value, 0, 1);
+ M_Options_PrintSlider( " Screen size", true, scr_viewsize.value, 30, 120);
+ M_Options_PrintSlider( " Field of View", true, scr_fov.integer, 1, 170);
+ M_Options_PrintCheckbox(" JPEG screenshots", jpeg_dll != NULL, scr_screenshot_jpeg.integer);
+ M_Options_PrintSlider( " JPEG quality", jpeg_dll != NULL, scr_screenshot_jpeg_quality.value, 0, 1);
+ M_Options_PrintCheckbox(" Sky", true, r_sky.integer);
+ M_Options_PrintCheckbox(" Texture Combine", true, gl_combine.integer);
+ M_Options_PrintCheckbox(" Dithering", true, gl_dither.integer);
+ M_Options_PrintCheckbox("Delay gfx (faster)", true, gl_delayfinish.integer);
+ M_Options_PrintSlider( "Anisotropic Filter", gl_support_anisotropy, gl_texture_anisotropy.integer, 1, gl_max_anisotropy);
+ M_Options_PrintSlider( " Game Speed", sv.active, slowmo.value, 0, 5);
+ M_Options_PrintSlider( " CD Music Volume", cdaudioinitialized.integer, bgmvolume.value, 0, 1);
+ M_Options_PrintSlider( " Sound Volume", snd_initialized.integer, volume.value, 0, 1);
+ M_Options_PrintSlider(gamemode == GAME_GOODVSBAD2 ? " Music Volume" : " Ambient Volume", snd_initialized.integer, snd_staticvolume.value, 0, 1);
+ M_Options_PrintSlider( " Crosshair", true, crosshair.value, 0, 5);
+ M_Options_PrintSlider( " Crosshair Size", true, crosshair_size.value, 1, 5);
+ M_Options_PrintCheckbox(" Static Crosshair", true, crosshair_static.integer);
+ M_Options_PrintCheckbox(" Show Framerate", true, showfps.integer);
+ M_Options_PrintCheckbox(" Show Time", true, showtime.integer);
+ M_Options_PrintCheckbox(" Show Date", true, showdate.integer);
+ M_Options_PrintCheckbox(" Always Run", true, cl_forwardspeed.value > 200);
+ M_Options_PrintCheckbox(" Lookspring", true, lookspring.integer);
+ M_Options_PrintCheckbox(" Lookstrafe", true, lookstrafe.integer);
+ M_Options_PrintSlider( " Mouse Speed", true, sensitivity.value, 1, 50);
+ M_Options_PrintCheckbox(" Mouse Look", true, freelook.integer);
+ M_Options_PrintCheckbox(" Invert Mouse", true, m_pitch.value < 0);
+ M_Options_PrintCheckbox(" Use Mouse", true, vid_mouse.integer);
+}
+
+
+void M_Options_Key (int k, char ascii)