1 // Burner Config file module
2 #include "burner.h"
3
4 #ifdef _UNICODE
5 #include <locale.h>
6 #endif
7
8 int nIniVersion = 0;
9
10 struct VidPresetData VidPreset[4] = {
11 { 640, 480},
12 { 1024, 768},
13 { 1280, 960},
14 // last one set at desktop resolution
15 };
16
17 struct VidPresetDataVer VidPresetVer[4] = {
18 { 640, 480},
19 { 1024, 768},
20 { 1280, 960},
21 // last one set at desktop resolution
22 };
23
CreateConfigName(TCHAR * szConfig)24 static void CreateConfigName(TCHAR* szConfig)
25 {
26 _stprintf(szConfig, _T("config/%s.ini"), szAppExeName);
27 return;
28 }
29
30 // Read in the config file for the whole application
ConfigAppLoad()31 int ConfigAppLoad()
32 {
33 TCHAR szConfig[MAX_PATH];
34 TCHAR szLine[1024];
35 FILE* h;
36
37 #ifdef _UNICODE
38 setlocale(LC_ALL, "");
39 #endif
40
41 CreateConfigName(szConfig);
42
43 if ((h = _tfopen(szConfig, _T("rt"))) == NULL) {
44 return 1;
45 }
46
47 // Go through each line of the config file
48 while (_fgetts(szLine, sizeof(szLine), h)) {
49 int nLen = _tcslen(szLine);
50
51 // Get rid of the linefeed at the end
52 if (szLine[nLen - 1] == 10) {
53 szLine[nLen - 1] = 0;
54 nLen--;
55 }
56
57 #define VAR(x) { TCHAR* szValue = LabelCheck(szLine,_T(#x)); \
58 if (szValue) x = _tcstol(szValue, NULL, 0); }
59 #define VAR64(x) { TCHAR* szValue = LabelCheck(szLine,_T(#x)); \
60 if (szValue) x = (long long)_tcstod(szValue, NULL); }
61
62 //for INT64/UINT64 aka long long:
63 #define VARI64(x) { TCHAR* szValue = LabelCheck(szLine,_T(#x)); \
64 if (szValue) x = (long long)wcstoll(szValue, NULL, 0); }
65 #define FLT(x) { TCHAR* szValue = LabelCheck(szLine,_T(#x)); \
66 if (szValue) x = _tcstod(szValue, NULL); }
67 #define STR(x) { TCHAR* szValue = LabelCheck(szLine,_T(#x) _T(" ")); \
68 if (szValue) _tcscpy(x,szValue); }
69 #define PAT(x) { TCHAR* szValue = LabelCheck(szLine,_T(#x) _T(" ")); \
70 if (szValue) { _tcscpy(x, szValue); UpdatePath(x); } }
71 #define DRV(x) { TCHAR* szValue = LabelCheck(szLine,_T(#x) _T(" ")); \
72 if (szValue) x = NameToDriver(szValue); }
73
74 VAR(nIniVersion);
75
76 // Emulation
77 #ifdef BUILD_A68K
78 VAR(bBurnUseASMCPUEmulation);
79 #endif
80
81 // Video
82 VAR(nVidDepth); VAR(nVidRefresh);
83 VAR(nVidRotationAdjust);
84
85 // horizontal oriented
86 VAR(nVidHorWidth); VAR(nVidHorHeight);
87 VAR(nVidScrnAspectX);
88 VAR(nVidScrnAspectY);
89 VAR(bVidArcaderesHor);
90 VAR(VidPreset[0].nWidth); VAR(VidPreset[0].nHeight);
91 VAR(VidPreset[1].nWidth); VAR(VidPreset[1].nHeight);
92 VAR(VidPreset[2].nWidth); VAR(VidPreset[2].nHeight);
93 VAR(VidPreset[3].nWidth); VAR(VidPreset[3].nHeight);
94 VAR(nScreenSizeHor);
95
96 // vertical oriented
97 VAR(nVidVerWidth); VAR(nVidVerHeight);
98 VAR(nVidVerScrnAspectX);
99 VAR(nVidVerScrnAspectY);
100 VAR(bVidArcaderesVer);
101 VAR(VidPresetVer[0].nWidth); VAR(VidPresetVer[0].nHeight);
102 VAR(VidPresetVer[1].nWidth); VAR(VidPresetVer[1].nHeight);
103 VAR(VidPresetVer[2].nWidth); VAR(VidPresetVer[2].nHeight);
104 VAR(VidPresetVer[3].nWidth); VAR(VidPresetVer[3].nHeight);
105 VAR(nScreenSizeVer);
106
107 VAR(nWindowSize);
108 VAR(nWindowPosX); VAR(nWindowPosY);
109 VAR(bDoGamma);
110 VAR(bVidUseHardwareGamma);
111 VAR(bHardwareGammaOnly);
112 FLT(nGamma);
113 VAR(bVidFullStretch);
114 VAR(bVidCorrectAspect);
115
116 VAR(bVidAutoSwitchFull);
117 STR(HorScreen);
118 STR(VerScreen);
119
120 VAR(bVidTripleBuffer);
121 VAR(bVidVSync);
122 VAR(bVidDWMSync);
123
124 VAR(bVidScanlines);
125 VAR(nVidScanIntensity);
126 VAR(bMonitorAutoCheck);
127 VAR(bForce60Hz);
128 VAR(bAlwaysDrawFrames);
129 VAR(bRunAhead);
130
131 VAR(nVidSelect);
132 VAR(nVidBlitterOpt[0]);
133 VAR64(nVidBlitterOpt[1]);
134 VAR(nVidBlitterOpt[2]);
135 VAR(nVidBlitterOpt[3]);
136 VAR(nVidBlitterOpt[4]);
137
138 // DirectDraw blitter
139 VAR(bVidScanHalf);
140 VAR(bVidForceFlip);
141
142 // Direct3D blitter
143 VAR(bVidBilinear);
144 VAR(bVidScanDelay);
145 VAR(bVidScanRotate);
146 VAR(bVidScanBilinear);
147 VAR(nVidFeedbackIntensity);
148 VAR(nVidFeedbackOverSaturation);
149 FLT(fVidScreenAngle);
150 FLT(fVidScreenCurvature);
151 VAR(bVidForce16bit);
152 VAR(nVidTransferMethod);
153
154 // DirectX Graphics blitter
155 FLT(dVidCubicB);
156 FLT(dVidCubicC);
157
158 // DirectX Graphics 9 Alt blitter
159 VAR(bVidDX9Bilinear);
160 VAR(bVidHardwareVertex);
161 VAR(bVidMotionBlur);
162 VAR(bVidForce16bitDx9Alt);
163
164 // Sound
165 VAR(nAudSelect);
166 VAR(nAudVolume);
167 VAR(nAudSegCount);
168 VAR(nInterpolation);
169 VAR(nFMInterpolation);
170 VAR(nAudSampleRate[0]);
171 VAR(nAudDSPModule[0]);
172 VAR(nAudSampleRate[1]);
173 VAR(nAudDSPModule[1]);
174
175 // Other
176 STR(szPlaceHolder);
177 STR(szLocalisationTemplate);
178 STR(szGamelistLocalisationTemplate);
179 VAR(nGamelistLocalisationActive);
180
181 VAR(nVidSDisplayStatus);
182 VAR(nMinChatFontSize);
183 VAR(nMaxChatFontSize);
184
185 VAR(bModelessMenu);
186
187 VAR(nSplashTime);
188
189 #if defined (FBNEO_DEBUG)
190 VAR(bDisableDebugConsole);
191 #endif
192
193 VAR(bDrvSaveAll);
194 VAR(nAppProcessPriority);
195 VAR(bAlwaysProcessKeyboardInput);
196 VAR(bAutoPause);
197 VAR(bSaveInputs);
198
199 VAR(nCDEmuSelect);
200 PAT(CDEmuImage);
201
202 VAR(nSelDlgWidth);
203 VAR(nSelDlgHeight);
204 VARI64(nLoadMenuShowX);
205 VAR(nLoadMenuShowY);
206 VAR(nLoadMenuExpand);
207 VAR(nLoadMenuBoardTypeFilter);
208 VAR(nLoadMenuGenreFilter);
209 VAR(nLoadMenuFavoritesFilter);
210 VAR(nLoadMenuFamilyFilter);
211
212 STR(szAppRomPaths[0]);
213 STR(szAppRomPaths[1]);
214 STR(szAppRomPaths[2]);
215 STR(szAppRomPaths[3]);
216 STR(szAppRomPaths[4]);
217 STR(szAppRomPaths[5]);
218 STR(szAppRomPaths[6]);
219 STR(szAppRomPaths[7]);
220 STR(szAppRomPaths[8]);
221 STR(szAppRomPaths[9]);
222 STR(szAppRomPaths[10]);
223 STR(szAppRomPaths[11]);
224 STR(szAppRomPaths[12]);
225 STR(szAppRomPaths[13]);
226 STR(szAppRomPaths[14]);
227 STR(szAppRomPaths[15]);
228 STR(szAppRomPaths[16]);
229 STR(szAppRomPaths[17]);
230 STR(szAppRomPaths[18]);
231 STR(szAppRomPaths[19]);
232
233 STR(szNeoCDGamesDir);
234
235 STR(szAppPreviewsPath);
236 STR(szAppTitlesPath);
237 STR(szAppCheatsPath);
238 STR(szAppHiscorePath);
239 STR(szAppSamplesPath);
240 STR(szAppHDDPath);
241 STR(szAppIpsPath);
242 STR(szAppIconsPath);
243 STR(szNeoCDCoverDir);
244 STR(szAppBlendPath);
245 STR(szAppSelectPath);
246 STR(szAppVersusPath);
247 STR(szAppScoresPath);
248 STR(szAppBossesPath);
249 STR(szAppGameoverPath);
250 STR(szAppFlyersPath);
251 STR(szAppMarqueesPath);
252 STR(szAppControlsPath);
253 STR(szAppCabinetsPath);
254 STR(szAppPCBsPath);
255 STR(szAppHistoryPath);
256 STR(szAppEEPROMPath);
257
258 VAR(bEnableHighResTimer);
259 VAR(bNoChangeNumLock);
260 VAR(bAlwaysCreateSupportFolders);
261 VAR(bAutoLoadGameList);
262
263 VAR(nAutoFireRate);
264
265 VAR(EnableHiscores);
266 VAR(bBurnUseBlend);
267 VAR(BurnShiftEnabled);
268 VAR(bBurnGunDrawReticles);
269 VAR(bSkipStartupCheck);
270
271 #ifdef INCLUDE_AVI_RECORDING
272 VAR(nAvi3x);
273 #endif
274
275 VAR(nIpsSelectedLanguage);
276
277 VAR(bEnableIcons);
278 VAR(bIconsOnlyParents);
279 VAR(nIconsSize);
280
281 STR(szPrevGames[0]);
282 STR(szPrevGames[1]);
283 STR(szPrevGames[2]);
284 STR(szPrevGames[3]);
285 STR(szPrevGames[4]);
286 STR(szPrevGames[5]);
287 STR(szPrevGames[6]);
288 STR(szPrevGames[7]);
289 STR(szPrevGames[8]);
290 STR(szPrevGames[9]);
291
292 // MVS cartridges
293 DRV(nBurnDrvSelect[0]);
294 DRV(nBurnDrvSelect[1]);
295 DRV(nBurnDrvSelect[2]);
296 DRV(nBurnDrvSelect[3]);
297 DRV(nBurnDrvSelect[4]);
298 DRV(nBurnDrvSelect[5]);
299
300 VAR(bNeoCDListScanSub);
301 VAR(bNeoCDListScanOnlyISO);
302
303 // Default Controls
304 VAR(nPlayerDefaultControls[0]);
305 STR(szPlayerDefaultIni[0]);
306 VAR(nPlayerDefaultControls[1]);
307 STR(szPlayerDefaultIni[1]);
308 VAR(nPlayerDefaultControls[2]);
309 STR(szPlayerDefaultIni[2]);
310 VAR(nPlayerDefaultControls[3]);
311 STR(szPlayerDefaultIni[3]);
312
313 #undef DRV
314 #undef PAT
315 #undef STR
316 #undef FLT
317 #undef VAR
318 #undef VAR64
319 #undef VARI64
320 }
321
322 fclose(h);
323 return 0;
324 }
325
326 // Write out the config file for the whole application
ConfigAppSave()327 int ConfigAppSave()
328 {
329 TCHAR szConfig[MAX_PATH];
330 FILE *h;
331
332 if (nCmdOptUsed & 1) {
333 return 1;
334 }
335
336 #ifdef _UNICODE
337 setlocale(LC_ALL, "");
338 #endif
339
340 CreateConfigName(szConfig);
341
342 if ((h = _tfopen(szConfig, _T("wt"))) == NULL) {
343 return 1;
344 }
345
346 // Write title
347 _ftprintf(h, _T("// ") _T(APP_TITLE) _T(" v%s --- Main Config File\n\n"), szAppBurnVer);
348 _ftprintf(h, _T("// Don't edit this file manually unless you know what you're doing\n"));
349 _ftprintf(h, _T("// ") _T(APP_TITLE) _T(" will restore default settings when this file is deleted\n"));
350
351 #define VAR(x) _ftprintf(h, _T(#x) _T(" %d\n"), x)
352 #define VAR64(x) _ftprintf(h, _T(#x) _T(" %lf\n"), (float)x)
353 #define VARI64(x) _ftprintf(h, _T(#x) _T(" %I64u\n"), x)
354 #define FLT(x) _ftprintf(h, _T(#x) _T(" %lf\n"), x)
355 #define STR(x) _ftprintf(h, _T(#x) _T(" %s\n"), x)
356 #define DRV(x) _ftprintf(h, _T(#x) _T(" %s\n"), DriverToName(x))
357
358 _ftprintf(h, _T("\n// The application version this file was saved from\n"));
359 // We can't use the macros for this!
360 _ftprintf(h, _T("nIniVersion 0x%06X"), nBurnVer);
361
362 #ifdef BUILD_A68K
363 _ftprintf(h, _T("\n\n\n"));
364 _ftprintf(h, _T("// --- emulation --------------------------------------------------------------\n"));
365
366 _ftprintf(h, _T("\n// If non-zero, use A68K for MC68000 emulation\n"));
367
368 bBurnUseASMCPUEmulation = 0; // Assembly MC68000 emulation only availble on a per-session basis. Causes too many problems in a non-debug setting.
369 VAR(bBurnUseASMCPUEmulation);
370 #endif
371
372 _ftprintf(h, _T("\n\n\n"));
373 _ftprintf(h, _T("// --- Video ------------------------------------------------------------------\n"));
374
375 // Horizontal oriented
376 _ftprintf(h, _T("\n// (Horizontal Oriented) The display mode to use for fullscreen\n"));
377 VAR(nVidHorWidth); VAR(nVidHorHeight);
378 _ftprintf(h, _T("\n// The aspect ratio of the (Horizontal Oriented) monitor\n"));
379 VAR(nVidScrnAspectX);
380 VAR(nVidScrnAspectY);
381 _ftprintf(h, _T("\n// (Horizontal Oriented) If non-zero, use the same fullscreen resolution as the original arcade game\n"));
382 VAR(bVidArcaderesHor);
383 _ftprintf(h, _T("\n// (Horizontal Oriented) The preset resolutions appearing in the menu\n"));
384 VAR(VidPreset[0].nWidth); VAR(VidPreset[0].nHeight);
385 VAR(VidPreset[1].nWidth); VAR(VidPreset[1].nHeight);
386 VAR(VidPreset[2].nWidth); VAR(VidPreset[2].nHeight);
387 VAR(VidPreset[3].nWidth); VAR(VidPreset[3].nHeight);
388 _ftprintf(h, _T("\n// (Horizontal Oriented) Full-screen size (0 = use display mode variables)\n"));
389 VAR(nScreenSizeHor);
390
391 // Vertical oriented
392 _ftprintf(h, _T("\n// (Vertical Oriented) The display mode to use for fullscreen\n"));
393 VAR(nVidVerWidth); VAR(nVidVerHeight);
394 _ftprintf(h, _T("\n// The aspect ratio of the (Vertical Oriented) monitor\n"));
395 VAR(nVidVerScrnAspectX);
396 VAR(nVidVerScrnAspectY);
397 _ftprintf(h, _T("\n// (Vertical Oriented) If non-zero, use the same fullscreen resolution as the original arcade game\n"));
398 VAR(bVidArcaderesVer);
399 _ftprintf(h, _T("\n// (Vertical Oriented) The preset resolutions appearing in the menu\n"));
400 VAR(VidPresetVer[0].nWidth); VAR(VidPresetVer[0].nHeight);
401 VAR(VidPresetVer[1].nWidth); VAR(VidPresetVer[1].nHeight);
402 VAR(VidPresetVer[2].nWidth); VAR(VidPresetVer[2].nHeight);
403 VAR(VidPresetVer[3].nWidth); VAR(VidPresetVer[3].nHeight);
404 _ftprintf(h, _T("\n// (Vertical Oriented) Full-screen size (0 = use display mode variables)\n"));
405 VAR(nScreenSizeVer);
406
407 _ftprintf(h, _T("\n// Full-screen bit depth\n"));
408 VAR(nVidDepth);
409 _ftprintf(h, _T("\n// Specify the refresh rate, 0 = default (changing this will not work with many video cards)\n"));
410 VAR(nVidRefresh);
411 _ftprintf(h, _T("\n// If non-zero, do not rotate the graphics for vertical games\n"));
412 VAR(nVidRotationAdjust);
413 _ftprintf(h, _T("\n// Initial window size (0 = autosize)\n"));
414 VAR(nWindowSize);
415 _ftprintf(h, _T("\n// Window position\n"));
416 VAR(nWindowPosX); VAR(nWindowPosY);
417 _ftprintf(h, _T("\n// If non-zero, perform gamma correction\n"));
418 VAR(bDoGamma);
419 _ftprintf(h, _T("\n// If non-zero, use the video hardware to correct gamma\n"));
420 VAR(bVidUseHardwareGamma);
421 _ftprintf(h, _T("\n// If non-zero, don't fall back on software gamma correction\n"));
422 VAR(bHardwareGammaOnly);
423 _ftprintf(h, _T("\n// Gamma to correct with\n"));
424 FLT(nGamma);
425 _ftprintf(h, _T("\n// If non-zero, auto-switch to fullscreen after loading game\n"));
426 VAR(bVidAutoSwitchFull);
427 _ftprintf(h, _T("\n// Monitor for Horizontal Games (GDI Identifier)\n"));
428 STR(HorScreen);
429 _ftprintf(h, _T("\n// Monitor for Vertical Games (GDI Identifier)\n"));
430 STR(VerScreen);
431 _ftprintf(h, _T("\n// If non-zero, allow stretching of the image to any size\n"));
432 VAR(bVidFullStretch);
433 _ftprintf(h, _T("\n// If non-zero, stretch the image to the largest size preserving aspect ratio\n"));
434 VAR(bVidCorrectAspect);
435 _ftprintf(h, _T("\n// If non-zero, try to use a triple buffer in fullscreen\n"));
436 VAR(bVidTripleBuffer);
437 _ftprintf(h, _T("\n// If non-zero, try to synchronise blits with the display\n"));
438 VAR(bVidVSync);
439 _ftprintf(h, _T("\n// If non-zero, try to synchronise to DWM on Windows 7+, this fixes frame stuttering problems.\n"));
440 VAR(bVidDWMSync);
441 _ftprintf(h, _T("\n// Transfer method: 0 = blit from system memory / use driver/DirectX texture management;\n"));
442 _ftprintf(h, _T("// 1 = copy to a video memory surface, then use bltfast();\n"));
443 _ftprintf(h, _T("// -1 = autodetect for DirectDraw, equals 1 for Direct3D\n"));
444 VAR(nVidTransferMethod);
445 _ftprintf(h, _T("\n// If non-zero, draw scanlines to simulate a low-res monitor\n"));
446 VAR(bVidScanlines);
447 _ftprintf(h, _T("\n// Maximum scanline intensity\n"));
448 VAR(nVidScanIntensity);
449 _ftprintf(h, _T("\n// If non-zero, rotate scanlines and RGB effects for rotated games\n"));
450 VAR(bVidScanRotate);
451 _ftprintf(h, _T("\n// The selected blitter module\n"));
452 VAR(nVidSelect);
453 _ftprintf(h, _T("\n// Options for the blitter modules\n"));
454 VAR(nVidBlitterOpt[0]);
455 VAR64(nVidBlitterOpt[1]);
456 VAR(nVidBlitterOpt[2]);
457 VAR(nVidBlitterOpt[3]);
458 VAR(nVidBlitterOpt[4]);
459 _ftprintf(h, _T("\n// If non-zero, attempt to auto-detect the monitor resolution and aspect ratio\n"));
460 VAR(bMonitorAutoCheck);
461 _ftprintf(h, _T("\n// If non-zero, force all games to use a 60Hz refresh rate\n"));
462 VAR(bForce60Hz);
463 _ftprintf(h, _T("\n// If zero, skip frames when needed to keep the emulation running at full speed\n"));
464 VAR(bAlwaysDrawFrames);
465 _ftprintf(h, _T("\n// If non-zero, enable run-ahead mode for the reduction of input lag\n"));
466 VAR(bRunAhead);
467
468 _ftprintf(h, _T("\n"));
469 _ftprintf(h, _T("// --- DirectDraw blitter module settings -------------------------------------\n"));
470 _ftprintf(h, _T("\n// If non-zero, draw scanlines at 50%% intensity\n"));
471 VAR(bVidScanHalf);
472 _ftprintf(h, _T("\n// If non-zero, force flipping for games that need it\n"));
473 VAR(bVidForceFlip);
474 _ftprintf(h, _T("\n"));
475 _ftprintf(h, _T("// --- Direct3D 7 blitter module settings -------------------------------------\n"));
476 _ftprintf(h, _T("\n// If non-zero, use bi-linear filtering to display the image\n"));
477 VAR(bVidBilinear);
478 _ftprintf(h, _T("\n// If non-zero, simulate slow phosphors (feedback)\n"));
479 VAR(bVidScanDelay);
480 _ftprintf(h, _T("\n// If non-zero, use bi-linear filtering for the scanlines\n"));
481 VAR(bVidScanBilinear);
482 _ftprintf(h, _T("\n// Feedback amount for slow phosphor simulation\n"));
483 VAR(nVidFeedbackIntensity);
484 _ftprintf(h, _T("\n// Oversaturation amount for slow phosphor simulation\n"));
485 VAR(nVidFeedbackOverSaturation);
486 _ftprintf(h, _T("\n// Angle at wich the emulated screen is tilted (in radians)\n"));
487 FLT(fVidScreenAngle);
488 _ftprintf(h, _T("\n// Angle of the sphere segment used for the 3D screen (in radians)\n"));
489 FLT(fVidScreenCurvature);
490 _ftprintf(h, _T("\n// If non-zero, force 16 bit emulation even in 32-bit screenmodes\n"));
491 VAR(bVidForce16bit);
492 _ftprintf(h, _T("\n"));
493 _ftprintf(h, _T("// --- DirectX Graphics 9 blitter module settings -----------------------------\n"));
494 _ftprintf(h, _T("\n// The filter parameters for the cubic filter\n"));
495 FLT(dVidCubicB);
496 FLT(dVidCubicC);
497 _ftprintf(h, _T("\n"));
498 _ftprintf(h, _T("// --- DirectX Graphics 9 Alt blitter module settings -------------------------\n"));
499 _ftprintf(h, _T("\n// If non-zero, use bi-linear filtering to display the image\n"));
500 VAR(bVidDX9Bilinear);
501 _ftprintf(h, _T("\n// If non-zero, use hardware vertex to display the image\n"));
502 VAR(bVidHardwareVertex);
503 _ftprintf(h, _T("\n// If non-zero, use motion blur to display the image\n"));
504 VAR(bVidMotionBlur);
505 _ftprintf(h, _T("\n// If non-zero, force 16 bit emulation even in 32-bit screenmodes\n"));
506 VAR(bVidForce16bitDx9Alt);
507
508 _ftprintf(h, _T("\n\n\n"));
509 _ftprintf(h, _T("// --- Sound ------------------------------------------------------------------\n"));
510 _ftprintf(h, _T("\n// The selected audio plugin\n"));
511 VAR(nAudSelect);
512 _ftprintf(h, _T("\n// Audio Volume\n"));
513 VAR(nAudVolume);
514 _ftprintf(h, _T("\n// Number of frames in sound buffer (= sound lag)\n"));
515 VAR(nAudSegCount);
516 _ftprintf(h, _T("\n// The order of PCM/ADPCM interpolation\n"));
517 VAR(nInterpolation);
518 _ftprintf(h, _T("\n// The order of FM interpolation\n"));
519 VAR(nFMInterpolation);
520 _ftprintf(h, _T("\n"));
521 _ftprintf(h, _T("// --- DirectSound plugin settings --------------------------------------------\n"));
522 _ftprintf(h, _T("\n// Sample rate\n"));
523 VAR(nAudSampleRate[0]);
524 _ftprintf(h, _T("\n// DSP module to use for sound enhancement: 0 = none, 1 = low-pass filter\n"));
525 VAR(nAudDSPModule[0]);
526 _ftprintf(h, _T("\n"));
527 _ftprintf(h, _T("// --- XAudio2 plugin settings ------------------------------------------------\n"));
528 _ftprintf(h, _T("\n// Sample rate\n"));
529 VAR(nAudSampleRate[1]);
530 _ftprintf(h, _T("\n// DSP module to use for sound enhancement: 0 = none, 1 = low-pass filter, 2 = reverb\n"));
531 VAR(nAudDSPModule[1]);
532
533 _ftprintf(h, _T("\n\n\n"));
534 _ftprintf(h, _T("// --- UI ---------------------------------------------------------------------\n"));
535
536 _ftprintf(h, _T("\n// The filename of the placeholder image to use (empty filename = use built-in)\n"));
537 STR(szPlaceHolder);
538
539 _ftprintf(h, _T("\n// Filename of the active UI translation template\n"));
540 STR(szLocalisationTemplate);
541
542 _ftprintf(h, _T("\n// Filename of the active gamelist translation template\n"));
543 STR(szGamelistLocalisationTemplate);
544
545 _ftprintf(h, _T("\n// If non-zero, enable gamelist localisation\n"));
546 VAR(nGamelistLocalisationActive);
547
548 _ftprintf(h, _T("\n// 1 = display pause/record/replay/kaillera icons in the upper right corner of the display\n"));
549 VAR(nVidSDisplayStatus);
550 _ftprintf(h, _T("\n// Minimum height (in pixels) of the font used for the Kaillera chat function (used for arcade resolution)\n"));
551 VAR(nMinChatFontSize);
552 _ftprintf(h, _T("\n// Maximum height (in pixels) of the font used for the Kaillera chat function (used for 1280x960 or higher).\n"));
553 VAR(nMaxChatFontSize);
554
555 _ftprintf(h, _T("\n// Make the menu modeless\n"));
556 VAR(bModelessMenu);
557
558 _ftprintf(h, _T("\n// Minimum length of time to display the splash screen (in milliseconds)\n"));
559 VAR(nSplashTime);
560
561 #if defined (FBNEO_DEBUG)
562 _ftprintf(h, _T("\n// Disable the text-debug console (hint: needed for debugging with gdb!)\n"));
563 VAR(bDisableDebugConsole);
564 #endif
565
566 _ftprintf(h, _T("\n// If non-zero, load and save all ram (the state)\n"));
567 VAR(bDrvSaveAll);
568 _ftprintf(h, _T("\n// The process priority for the application. Do *NOT* edit this manually\n"));
569 VAR(nAppProcessPriority);
570 _ftprintf(h, _T("\n// If non-zero, process keyboard input even when the application loses focus\n"));
571 VAR(bAlwaysProcessKeyboardInput);
572 _ftprintf(h, _T("\n// If non-zero, pause when the application loses focus\n"));
573 VAR(bAutoPause);
574 _ftprintf(h, _T("\n// If non-zero, save the inputs for each game\n"));
575 VAR(bSaveInputs);
576
577 _ftprintf(h, _T("\n\n\n"));
578 _ftprintf(h, _T("// --- CD emulation -----------------------------------------------------------\n"));
579 _ftprintf(h, _T("\n // The selected CD emulation module\n"));
580 VAR(nCDEmuSelect);
581 _ftprintf(h, _T("\n // The path to the CD image to use (.cue or .iso)\n"));
582 STR(CDEmuImage);
583
584 _ftprintf(h, _T("\n\n\n"));
585 _ftprintf(h, _T("// --- Load Game Dialogs ------------------------------------------------------\n"));
586 _ftprintf(h, _T("\n// Load game dialog dimensions (in win32 client co-ordinates)\n"));
587 VAR(nSelDlgWidth);
588 VAR(nSelDlgHeight);
589
590 _ftprintf(h, _T("\n// Load game dialog options\n"));
591 VARI64(nLoadMenuShowX);
592 VAR(nLoadMenuShowY);
593 VAR(nLoadMenuExpand);
594
595 _ftprintf(h, _T("\n// Load game dialog board type filter options\n"));
596 VAR(nLoadMenuBoardTypeFilter);
597
598 _ftprintf(h, _T("\n// Load game dialog genre filter options\n"));
599 VAR(nLoadMenuGenreFilter);
600
601 _ftprintf(h, _T("\n// Load game dialog favorites filter options\n"));
602 VAR(nLoadMenuFavoritesFilter);
603
604 _ftprintf(h, _T("\n// Load game dialog family filter options\n"));
605 VAR(nLoadMenuFamilyFilter);
606
607 _ftprintf(h, _T("\n// The paths to search for rom zips (include trailing backslash)\n"));
608 STR(szAppRomPaths[0]);
609 STR(szAppRomPaths[1]);
610 STR(szAppRomPaths[2]);
611 STR(szAppRomPaths[3]);
612 STR(szAppRomPaths[4]);
613 STR(szAppRomPaths[5]);
614 STR(szAppRomPaths[6]);
615 STR(szAppRomPaths[7]);
616 STR(szAppRomPaths[8]);
617 STR(szAppRomPaths[9]);
618 STR(szAppRomPaths[10]);
619 STR(szAppRomPaths[11]);
620 STR(szAppRomPaths[12]);
621 STR(szAppRomPaths[13]);
622 STR(szAppRomPaths[14]);
623 STR(szAppRomPaths[15]);
624 STR(szAppRomPaths[16]);
625 STR(szAppRomPaths[17]);
626 STR(szAppRomPaths[18]);
627 STR(szAppRomPaths[19]);
628
629 _ftprintf(h, _T("\n// The path to search for Neo Geo CDZ isos\n"));
630 STR(szNeoCDGamesDir);
631
632 _ftprintf(h, _T("\n// The paths to search for support files (include trailing backslash)\n"));
633 STR(szAppPreviewsPath);
634 STR(szAppTitlesPath);
635 STR(szAppCheatsPath);
636 STR(szAppHiscorePath);
637 STR(szAppSamplesPath);
638 STR(szAppHDDPath);
639 STR(szAppIpsPath);
640 STR(szAppIconsPath);
641 STR(szNeoCDCoverDir);
642 STR(szAppBlendPath);
643 STR(szAppSelectPath);
644 STR(szAppVersusPath);
645 STR(szAppScoresPath);
646 STR(szAppBossesPath);
647 STR(szAppGameoverPath);
648 STR(szAppFlyersPath);
649 STR(szAppMarqueesPath);
650 STR(szAppControlsPath);
651 STR(szAppCabinetsPath);
652 STR(szAppPCBsPath);
653 STR(szAppHistoryPath);
654 STR(szAppEEPROMPath);
655
656 _ftprintf(h, _T("\n// The cartridges to use for emulation of an MVS system\n"));
657 DRV(nBurnDrvSelect[0]);
658 DRV(nBurnDrvSelect[1]);
659 DRV(nBurnDrvSelect[2]);
660 DRV(nBurnDrvSelect[3]);
661 DRV(nBurnDrvSelect[4]);
662 DRV(nBurnDrvSelect[5]);
663
664 _ftprintf(h, _T("\n// Neo Geo CD Load Game Dialog options\n"));
665 VAR(bNeoCDListScanSub);
666 VAR(bNeoCDListScanOnlyISO);
667
668 _ftprintf(h, _T("\n\n\n"));
669 _ftprintf(h, _T("// --- miscellaneous ---------------------------------------------------------\n"));
670
671 _ftprintf(h, _T("\n// If non-zero, enable the high resolution system timer.\n"));
672 VAR(bEnableHighResTimer);
673
674 _ftprintf(h, _T("\n// If non-zero, don't change the status of the Num Lock key.\n"));
675 VAR(bNoChangeNumLock);
676
677 _ftprintf(h, _T("\n// If non-zero, create support folders at program start.\n"));
678 VAR(bAlwaysCreateSupportFolders);
679
680 _ftprintf(h, _T("\n// If non-zero, load game selection dialog at program start.\n"));
681 VAR(bAutoLoadGameList);
682
683 _ftprintf(h, _T("\n// Auto-Fire Rate, non-linear - use the GUI to change this setting!\n"));
684 VAR(nAutoFireRate);
685
686 _ftprintf(h, _T("\n// If non-zero, enable high score saving support.\n"));
687 VAR(EnableHiscores);
688
689 _ftprintf(h, _T("\n// If non-zero, enable alpha blending support.\n"));
690 VAR(bBurnUseBlend);
691
692 _ftprintf(h, _T("\n// If non-zero, enable gear shifter display support.\n"));
693 VAR(BurnShiftEnabled);
694
695 _ftprintf(h, _T("\n// If non-zero, enable lightgun reticle display support.\n"));
696 VAR(bBurnGunDrawReticles);
697
698 _ftprintf(h, _T("\n// If non-zero, DISABLE start-up rom scan (if needed).\n"));
699 VAR(bSkipStartupCheck);
700
701 #ifdef INCLUDE_AVI_RECORDING
702 _ftprintf(h, _T("\n// If non-zero, enable 1x - 3x pixel output for the AVI writer.\n"));
703 VAR(nAvi3x);
704 #endif
705
706 _ftprintf(h, _T("\n// The language index to use for the IPS Patch Manager dialog.\n"));
707 VAR(nIpsSelectedLanguage);
708
709 _ftprintf(h, _T("\n// If non-zero, display drivers icons.\n"));
710 VAR(bEnableIcons);
711
712 _ftprintf(h, _T("\n// If non-zero, display drivers icons for parents only (use if all icons causes UI issues).\n"));
713 VAR(bIconsOnlyParents);
714
715 _ftprintf(h, _T("\n// Specify icons display size, 0 = 16x16 , 1 = 24x24, 2 = 32x32.\n"));
716 VAR(nIconsSize);
717
718 _ftprintf(h, _T("\n// Previous games list.\n"));
719 STR(szPrevGames[0]);
720 STR(szPrevGames[1]);
721 STR(szPrevGames[2]);
722 STR(szPrevGames[3]);
723 STR(szPrevGames[4]);
724 STR(szPrevGames[5]);
725 STR(szPrevGames[6]);
726 STR(szPrevGames[7]);
727 STR(szPrevGames[8]);
728 STR(szPrevGames[9]);
729
730 _ftprintf(h, _T("\n// Player default controls, number is the index of the configuration in the input dialog\n"));
731 VAR(nPlayerDefaultControls[0]);
732 STR(szPlayerDefaultIni[0]);
733 VAR(nPlayerDefaultControls[1]);
734 STR(szPlayerDefaultIni[1]);
735 VAR(nPlayerDefaultControls[2]);
736 STR(szPlayerDefaultIni[2]);
737 VAR(nPlayerDefaultControls[3]);
738 STR(szPlayerDefaultIni[3]);
739
740 _ftprintf(h, _T("\n\n\n"));
741
742 #undef DRV
743 #undef STR
744 #undef FLT
745 #undef VAR
746 #undef VAR64
747 #undef VARI64
748
749 fclose(h);
750 return 0;
751 }
752
753