44 : accuracySetting(commandController,
45 "accuracy",
"rendering accuracy",
Accuracy::PIXEL,
48 {
"line", Accuracy::LINE},
49 {
"pixel", Accuracy::PIXEL}})
51 , deinterlaceSetting(commandController,
52 "deinterlace",
"deinterlacing on/off",
true)
54 , deflickerSetting(commandController,
55 "deflicker",
"deflicker on/off",
false)
57 , maxFrameSkipSetting(commandController,
58 "maxframeskip",
"set the max amount of frameskip", 3, 0, 100)
60 , minFrameSkipSetting(commandController,
61 "minframeskip",
"set the min amount of frameskip", 0, 0, 100)
63 , fullScreenSetting(commandController,
64 "fullscreen",
"full screen display on/off",
false)
66 , gammaSetting(commandController,
"gamma",
67 "amount of gamma correction: low is dark, high is bright",
70 , brightnessSetting(commandController,
"brightness",
71 "brightness video setting: "
72 "0 is normal, lower is darker, higher is brighter",
74 , contrastSetting(commandController,
"contrast",
75 "contrast video setting: "
76 "0 is normal, lower is less contrast, higher is more contrast",
79 , colorMatrixSetting(commandController,
81 "3x3 matrix to transform MSX RGB to host RGB, see manual for details",
82 "{ 1 0 0 } { 0 1 0 } { 0 0 1 }")
84 , glowSetting(commandController,
85 "glow",
"amount of afterglow effect: 0 = none, 100 = lots",
88 , noiseSetting(commandController,
89 "noise",
"amount of noise to add to the frame",
92 , rendererSetting(commandController,
93 "renderer",
"rendering back-end used to display the MSX screen",
94 RendererID::SDLGL_PP, getRendererMap(), Setting::DONT_SAVE)
96 , horizontalBlurSetting(commandController,
97 "blur",
"amount of horizontal blur effect: 0 = none, 100 = full",
100 , scaleAlgorithmSetting(
101 commandController,
"scale_algorithm",
"scale algorithm",
102 ScaleAlgorithm::SIMPLE, getScalerMap())
104 , scaleFactorSetting(commandController,
105 "scale_factor",
"scale factor",
108 , scanlineAlphaSetting(commandController,
109 "scanline",
"amount of scanline effect: 0 = none, 100 = full",
112 , limitSpritesSetting(commandController,
113 "limitsprites",
"limit number of sprites per line "
114 "(on for realism, off to reduce sprite flashing)",
true)
116 , disableSpritesSetting(commandController,
117 "disablesprites",
"disable sprite rendering",
118 false, Setting::DONT_SAVE)
120 , cmdTimingSetting(commandController,
121 "cmdtiming",
"VDP command timing",
false,
122 EnumSetting<bool>::Map{{
"real",
false}, {
"broken",
true}},
125 , tooFastAccessSetting(commandController,
126 "too_fast_vram_access",
127 "Should too fast VDP VRAM access be correctly emulated.\n"
128 "Possible values are:\n"
129 " real -> too fast accesses are dropped\n"
130 " ignore -> access speed is ignored, all accesses are executed",
132 EnumSetting<bool>::Map{{
"real",
false }, {
"ignore",
true}},
135 , displayDeformSetting(
137 "display_deform",
"Display deform", DisplayDeform::NORMAL,
138 EnumSetting<DisplayDeform>::Map{
139 {
"normal", DisplayDeform::NORMAL},
140 {
"3d", DisplayDeform::_3D}})
142 , vSyncSetting(commandController,
143 "vsync",
"Synchronize page flip with the host screen vertical sync:\n"
144 " on -> flip on host vsync: avoids tearing\n"
145 " off -> immediate flip: might be more fluent when host framerate"
146 " (typically 60Hz) differs from MSX framerate (50 or 60Hz).\n",
152 , horizontalStretchSetting(commandController,
153 "horizontal_stretch",
154 "Amount of horizontal stretch: this many MSX pixels will be "
155 "stretched over the complete width of the output screen.\n"
156 " 320 = no stretch (large borders)\n"
157 " 288 = a bit more than all border pixels\n"
158 " 284 = all border pixels\n"
159 " 280 = a bit less than all border pixels\n"
161 " 256 = max stretch (no border visible at all)\n"
162 " good values are 272 or 280\n",
165 , pointerHideDelaySetting(commandController,
166 "pointer_hide_delay",
167 "number of seconds after which the mouse pointer is hidden in the openMSX "
168 "window; negative = no hiding, 0 = immediately",
171 , interleaveBlackFrameSetting(commandController,
172 "interleave_black_frame",
173 "Insert a black frame in between each normal MSX frame. "
174 "Useful on (100Hz+) lightboost enabled monitors to reduce "
175 "motion blur and double frame artifacts.",
178 brightnessSetting.attach(*
this);
179 contrastSetting .attach(*
this);
180 updateBrightnessAndContrast();
182 auto& interp = commandController.getInterpreter();
183 colorMatrixSetting.setChecker([
this, &interp](
const TclObject& newValue) {
185 parseColorMatrix(interp, newValue);
186 }
catch (CommandException& e) {
187 throw CommandException(
188 "Invalid color matrix: ",
e.getMessage());
192 parseColorMatrix(interp, colorMatrixSetting.getValue());
193 }
catch (MSXException& e) {
194 std::cerr <<
e.getMessage() <<
'\n';
198 rendererSetting.setEnum(RendererID::DUMMY);