39 : accuracySetting(commandController,
40 "accuracy",
"rendering accuracy", ACC_PIXEL,
44 {
"pixel", ACC_PIXEL}})
46 , deinterlaceSetting(commandController,
47 "deinterlace",
"deinterlacing on/off",
true)
49 , deflickerSetting(commandController,
50 "deflicker",
"deflicker on/off",
false)
52 , maxFrameSkipSetting(commandController,
53 "maxframeskip",
"set the max amount of frameskip", 3, 0, 100)
55 , minFrameSkipSetting(commandController,
56 "minframeskip",
"set the min amount of frameskip", 0, 0, 100)
58 , fullScreenSetting(commandController,
59 "fullscreen",
"full screen display on/off",
false)
61 , gammaSetting(commandController,
"gamma",
62 "amount of gamma correction: low is dark, high is bright",
65 , brightnessSetting(commandController,
"brightness",
66 "brightness video setting: "
67 "0 is normal, lower is darker, higher is brighter",
69 , contrastSetting(commandController,
"contrast",
70 "contrast video setting: "
71 "0 is normal, lower is less contrast, higher is more contrast",
74 , colorMatrixSetting(commandController,
76 "3x3 matrix to transform MSX RGB to host RGB, see manual for details",
77 "{ 1 0 0 } { 0 1 0 } { 0 0 1 }")
79 , glowSetting(commandController,
80 "glow",
"amount of afterglow effect: 0 = none, 100 = lots",
83 , noiseSetting(commandController,
84 "noise",
"amount of noise to add to the frame",
87 , rendererSetting(commandController,
88 "renderer",
"rendering back-end used to display the MSX screen",
89 SDLGL_PP, getRendererMap(), Setting::DONT_SAVE)
91 , horizontalBlurSetting(commandController,
92 "blur",
"amount of horizontal blur effect: 0 = none, 100 = full",
95 , scaleAlgorithmSetting(
96 commandController,
"scale_algorithm",
"scale algorithm",
97 SCALER_SIMPLE, getScalerMap())
99 , scaleFactorSetting(commandController,
100 "scale_factor",
"scale factor",
103 , scanlineAlphaSetting(commandController,
104 "scanline",
"amount of scanline effect: 0 = none, 100 = full",
107 , limitSpritesSetting(commandController,
108 "limitsprites",
"limit number of sprites per line "
109 "(on for realism, off to reduce sprite flashing)",
true)
111 , disableSpritesSetting(commandController,
112 "disablesprites",
"disable sprite rendering",
113 false, Setting::DONT_SAVE)
115 , cmdTimingSetting(commandController,
116 "cmdtiming",
"VDP command timing",
false,
117 EnumSetting<bool>::Map{{
"real",
false}, {
"broken",
true}},
120 , tooFastAccessSetting(commandController,
121 "too_fast_vram_access",
122 "Should too fast VDP VRAM access be correctly emulated.\n"
123 "Possible values are:\n"
124 " real -> too fast accesses are dropped\n"
125 " ignore -> access speed is ignored, all accesses are executed",
127 EnumSetting<bool>::Map{{
"real",
false }, {
"ignore",
true}},
130 , displayDeformSetting(
132 "display_deform",
"Display deform", DEFORM_NORMAL,
133 EnumSetting<DisplayDeform>::Map{
134 {
"normal", DEFORM_NORMAL},
137 , vSyncSetting(commandController,
138 "vsync",
"Synchronize page flip with the host screen vertical sync:\n"
139 " on -> flip on host vsync: avoids tearing\n"
140 " off -> immediate flip: might be more fluent when host framerate"
141 " (typically 60Hz) differs from MSX framerate (50 or 60Hz).\n",
147 , horizontalStretchSetting(commandController,
148 "horizontal_stretch",
149 "Amount of horizontal stretch: this many MSX pixels will be "
150 "stretched over the complete width of the output screen.\n"
151 " 320 = no stretch (large borders)\n"
152 " 288 = a bit more than all border pixels\n"
153 " 284 = all border pixels\n"
154 " 280 = a bit less than all border pixels\n"
156 " 256 = max stretch (no border visible at all)\n"
157 " good values are 272 or 280\n",
160 , pointerHideDelaySetting(commandController,
161 "pointer_hide_delay",
162 "number of seconds after which the mouse pointer is hidden in the openMSX "
163 "window; negative = no hiding, 0 = immediately",
166 , interleaveBlackFrameSetting(commandController,
167 "interleave_black_frame",
168 "Insert a black frame in between each normal MSX frame. "
169 "Useful on (100Hz+) lightboost enabled monitors to reduce "
170 "motion blur and double frame artifacts.",
173 brightnessSetting.attach(*
this);
174 contrastSetting .attach(*
this);
175 updateBrightnessAndContrast();
177 auto& interp = commandController.getInterpreter();
178 colorMatrixSetting.setChecker([
this, &interp](TclObject& newValue) {
180 parseColorMatrix(interp, newValue);
181 }
catch (CommandException& e) {
182 throw CommandException(
183 "Invalid color matrix: ",
e.getMessage());
187 parseColorMatrix(interp, colorMatrixSetting.getValue());
188 }
catch (MSXException& e) {
189 std::cerr <<
e.getMessage() <<
'\n';
193 rendererSetting.setEnum(DUMMY);