1 /*
2  * PUAE - The *nix Amiga Emulator
3  *
4  * QT GUI for PUAE
5  *
6  * Copyright 2010-2011 Mustafa 'GnoStiC' TUFAN
7  * (GUI layout cloned from WinUAE/Toni Wilen)
8  *
9  */
10 
11 // REMOVEME>tmp stuff from *.h
12 #define CSMASK_ECS_AGNUS 1
13 #define CSMASK_ECS_DENISE 2
14 #define CSMASK_AGA 4
15 #define CSMASK_MASK (CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE | CSMASK_AGA)
16 
17 #define VRES_NONDOUBLE 0
18 #define VRES_DOUBLE 1
19 #define VRES_MAX 1
20 
21 #define DEFAULT_SOUND_MAXB 16384
22 // REMOVEME>tmp stuff from *.h
23 
24 #include "puae_registry.h"
25 #include "puae_mainwindow.h"
26 #include "ui_puae_mainwindow.h"
27 
28 #include "puae_bridge.h"
29 #include "puae_misc.h"
30 
31 #include <QMessageBox>
32 #include <QDir>
33 #include <QFileDialog>
34 #define hDlg 0
35 
36 extern "C" {
37 #include "include/rommgr.h"
38 #include "include/options.h"
39 extern int candirect;
40 extern bool canbang;
41 struct uae_prefs workprefs;
42 
43 // REMOVEME>tmp
44 #define CYCLE_UNIT 512
45 extern const char *uae_archive_extensions[];
46 #ifdef ARCADIA
47 extern struct romdata *scan_arcadia_rom (char*, int);
48 #endif
49 // REMOVEME>tmp
50 }
51 
52 //
53 int full_property_sheet = 1;
54 
55 // Paths Tab
56 QString PATHS_ROM, PATHS_CONFIG, PATHS_SCREENSHOT, PATHS_SAVESTATE, PATHS_AVIOUTPUT, PATHS_SAVEIMAGE, PATHS_RIP;
57 
58 // mem
59 static const char *memsize_names[] = {
60         /* 0 */ "none",
61         /* 1 */ "256 K",
62         /* 2 */ "512 K",
63         /* 3 */ "1 MB",
64         /* 4 */ "2 MB",
65         /* 5 */ "4 MB",
66         /* 6 */ "8 MB",
67         /* 7 */ "16 MB",
68         /* 8 */ "32 MB",
69         /* 9 */ "64 MB",
70         /* 10*/ "128 MB",
71         /* 11*/ "256 MB",
72         /* 12*/ "512 MB",
73         /* 13*/ "1 GB",
74         /* 14*/ "1.5MB",
75         /* 15*/ "1.8MB",
76         /* 16*/ "2 GB",
77         /* 17*/ "384 MB",
78         /* 18*/ "768 MB",
79         /* 19*/ "1.5 GB",
80         /* 20*/ "2.5 GB",
81         /* 21*/ "3 GB"
82 };
83 
84 static unsigned long memsizes[] = {
85         /* 0 */ 0,
86         /* 1 */ 0x00040000, /* 256K */
87         /* 2 */ 0x00080000, /* 512K */
88         /* 3 */ 0x00100000, /* 1M */
89         /* 4 */ 0x00200000, /* 2M */
90         /* 5 */ 0x00400000, /* 4M */
91         /* 6 */ 0x00800000, /* 8M */
92         /* 7 */ 0x01000000, /* 16M */
93         /* 8 */ 0x02000000, /* 32M */
94         /* 9 */ 0x04000000, /* 64M */
95         /* 10*/ 0x08000000, //128M
96         /* 11*/ 0x10000000, //256M
97         /* 12*/ 0x20000000, //512M
98         /* 13*/ 0x40000000, //1GB
99         /* 14*/ 0x00180000, //1.5MB
100         /* 15*/ 0x001C0000, //1.8MB
101         /* 16*/ 0x80000000, //2GB
102         /* 17*/ 0x18000000, //384M
103         /* 18*/ 0x30000000, //768M
104         /* 19*/ 0x60000000, //1.5GB
105         /* 20*/ 0xA8000000, //2.5GB
106         /* 21*/ 0xC0000000, //3GB
107 };
108 
109 static int msi_chip[] = { 1, 2, 3, 14, 4, 5, 6 };
110 static int msi_bogo[] = { 0, 2, 3, 14, 15 };
111 static int msi_fast[] = { 0, 3, 4, 5, 6 };
112 static int msi_z3fast[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 12, 18, 13, 19, 16, 20, 21 };
113 static int msi_z3chip[] = { 0, 7, 8, 9, 10, 11, 12, 13 };
114 static int msi_gfx[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
115 
puae_MainWindow(QWidget * parent)116 puae_MainWindow::puae_MainWindow(QWidget *parent) :
117     QMainWindow(parent),
118     ui(new Ui::puae_MainWindow)
119 {
120     ui->setupUi(this);
121 
122     QString myPath;
123     myPath = QDir::currentPath ();
124 
125     // Paths Tab
126     PATHS_ROM = myPath;
127     PATHS_CONFIG = myPath;
128     PATHS_SCREENSHOT = myPath;
129     PATHS_SAVESTATE = myPath;
130     PATHS_AVIOUTPUT = myPath;
131     PATHS_SAVEIMAGE = myPath;
132     PATHS_RIP = myPath;
133 
134     workprefs = currprefs;
135     // USER
136 	values_to_expansiondlg ();
137 	enable_for_expansiondlg ();
138 
139 	values_to_memorydlg ();
140 	enable_for_memorydlg ();
141 
142 	values_to_cpudlg ();
143 	enable_for_cpudlg ();
144 
145 	values_to_sounddlg ();
146 	enable_for_sounddlg ();
147 
148 	enable_for_inputdlg ();
149 	values_to_inputdlg ();
150 
151 	values_to_displaydlg ();
152 	enable_for_displaydlg ();
153 
154 	values_to_chipsetdlg ();
155 	enable_for_chipsetdlg ();
156 
157 	values_to_chipsetdlg2 ();
158 	enable_for_chipsetdlg2 ();
159 
160 	values_to_miscdlg ();
161 	enable_for_miscdlg ();
162 }
163 
~puae_MainWindow()164 puae_MainWindow::~puae_MainWindow()
165 {
166     delete ui;
167 }
168 
169 //
170 //
171 //
GetPath(QWidget * who,QString what,QString where)172 QString puae_MainWindow::GetPath(QWidget *who, QString what, QString where)
173 {
174     QString path = QFileDialog::getExistingDirectory(who, what, where, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
175 
176     if ( path.isNull() ) {
177         path = "./";
178     }
179 
180     return path;
181 }
182 
GetFile(QWidget * who,QString what,QString extensions)183 QString puae_MainWindow::GetFile(QWidget *who, QString what, QString extensions)
184 {
185     QString file = QFileDialog::getOpenFileName(who, what, PATHS_ROM, extensions);
186 
187 //    if ( !file.isNull() ) {
188     return file;
189 }
190 
191 //*************************************************
192 // PATHS TAB
193 //*************************************************
194 
195 /* Choose System ROMS Path */
on_IDC_PATHS_ROMS_clicked()196 void puae_MainWindow::on_IDC_PATHS_ROMS_clicked()
197 {
198     PATHS_ROM = GetPath(this, "Select System ROMS Path", PATHS_ROM);
199     ui->IDC_PATHS_ROM->setText (PATHS_ROM);
200     //if (!scan_roms())
201     //  notice
202 }
203 
204 /* Choose Configuration Files Path */
on_IDC_PATHS_CONFIGS_clicked()205 void puae_MainWindow::on_IDC_PATHS_CONFIGS_clicked()
206 {
207     PATHS_CONFIG = GetPath(this, "Select Config Path", PATHS_CONFIG);
208     ui->IDC_PATHS_CONFIG->setText (PATHS_CONFIG);
209 }
210 
211 /* Choose Screenshot Path */
on_IDC_PATHS_SCREENSHOTS_clicked()212 void puae_MainWindow::on_IDC_PATHS_SCREENSHOTS_clicked()
213 {
214     PATHS_SCREENSHOT = GetPath(this, "Select Screenshot Path", PATHS_SCREENSHOT);
215     ui->IDC_PATHS_SCREENSHOT->setText (PATHS_SCREENSHOT);
216 }
217 
218 /* Choose Savestate Path */
on_IDC_PATHS_SAVESTATES_clicked()219 void puae_MainWindow::on_IDC_PATHS_SAVESTATES_clicked()
220 {
221     PATHS_SAVESTATE = GetPath(this, "Select Savestate Path", PATHS_SAVESTATE);
222     ui->IDC_PATHS_SAVESTATE->setText (PATHS_SAVESTATE);
223 }
224 
225 /* Choose AVI Output Path */
on_IDC_PATHS_AVIOUTPUTS_clicked()226 void puae_MainWindow::on_IDC_PATHS_AVIOUTPUTS_clicked()
227 {
228     PATHS_AVIOUTPUT = GetPath(this, "Select AVI Output Path", PATHS_AVIOUTPUT);
229     ui->IDC_PATHS_AVIOUTPUT->setText (PATHS_AVIOUTPUT);
230 }
231 
232 /* Choose Save Images Path */
on_IDC_PATHS_SAVEIMAGES_clicked()233 void puae_MainWindow::on_IDC_PATHS_SAVEIMAGES_clicked()
234 {
235     PATHS_SAVEIMAGE = GetPath(this, "Select Save Image Path", PATHS_SAVEIMAGE);
236     ui->IDC_PATHS_SAVEIMAGE->setText (PATHS_SAVEIMAGE);
237 }
238 
239 /* Choose RIP Path */
on_IDC_PATHS_RIPS_clicked()240 void puae_MainWindow::on_IDC_PATHS_RIPS_clicked()
241 {
242     PATHS_RIP = GetPath(this, "Select RIP Path", PATHS_RIP);
243     ui->IDC_PATHS_RIP->setText (PATHS_RIP);
244 }
245 
246 //*************************************************
247 // ROMS TAB
248 //*************************************************
249 
250 /* Choose Main ROM File */
on_IDC_KICKCHOOSER_clicked()251 void puae_MainWindow::on_IDC_KICKCHOOSER_clicked()
252 {
253     QString fileName = GetFile (this, "Select Main ROM", "ROM Files (*.rom)");
254     //ui->IDC_ROMFILE->setText(fileName);
255 
256 }
257 
258 /* Choose Extended ROM File */
on_IDC_ROMCHOOSER2_clicked()259 void puae_MainWindow::on_IDC_ROMCHOOSER2_clicked()
260 {
261     QString fileName = GetFile (this, "Select Extended ROM", "ROM Files (*.rom)");
262 
263 }
264 
265 /* Choose Cartridge ROM File */
on_IDC_CARTCHOOSER_clicked()266 void puae_MainWindow::on_IDC_CARTCHOOSER_clicked()
267 {
268     QString fileName = GetFile (this, "Select Cartridge ROM File", "ROM Files (*.rom)");
269 
270 }
271 
272 /* Choose Flash RAM File */
on_IDC_FLASHCHOOSER_clicked()273 void puae_MainWindow::on_IDC_FLASHCHOOSER_clicked()
274 {
275     QString fileName = GetFile (this, "Select Flash RAM File", "RAM Files (*.ram)");
276 
277 }
278 
279 /* Map ROM Emulation */
on_IDC_MAPROM_toggled(bool ischecked)280 void puae_MainWindow::on_IDC_MAPROM_toggled(bool ischecked)
281 {
282     workprefs.maprom = ischecked ? 0x0f000000 : 0;
283 }
284 
285 /* Shapeshifter support */
on_IDC_KICKSHIFTER_toggled(bool ischecked)286 void puae_MainWindow::on_IDC_KICKSHIFTER_toggled(bool ischecked)
287 {
288     workprefs.kickshifter = ischecked;
289 }
290 
291 //*************************************************
292 // HW-CPU
293 //*************************************************
294 
295 /* CPU 68000 */
on_IDC_CPU0_clicked()296 void puae_MainWindow::on_IDC_CPU0_clicked()
297 {
298     workprefs.cpu_model = 68000;
299     enable_for_cpudlg ();
300 
301 }
302 
303 /* CPU 68010 */
on_IDC_CPU1_clicked()304 void puae_MainWindow::on_IDC_CPU1_clicked()
305 {
306     workprefs.cpu_model = 68010;
307     enable_for_cpudlg ();
308 }
309 
310 /* CPU 68020 */
on_IDC_CPU2_clicked()311 void puae_MainWindow::on_IDC_CPU2_clicked()
312 {
313     workprefs.cpu_model = 68020;
314     enable_for_cpudlg ();
315 }
316 
317 /* CPU 68030 */
on_IDC_CPU3_clicked()318 void puae_MainWindow::on_IDC_CPU3_clicked()
319 {
320     workprefs.cpu_model = 68030;
321     enable_for_cpudlg ();
322 }
323 
324 /* CPU 68040 */
on_IDC_CPU4_clicked()325 void puae_MainWindow::on_IDC_CPU4_clicked()
326 {
327     workprefs.cpu_model = 68040;
328     enable_for_cpudlg ();
329 }
330 
331 /* CPU 68060 */
on_IDC_CPU5_clicked()332 void puae_MainWindow::on_IDC_CPU5_clicked()
333 {
334     workprefs.cpu_model = 68060;
335     enable_for_cpudlg ();
336 }
337 
338 /* 24-bit Addressing */
on_IDC_COMPATIBLE24_toggled(bool ischecked)339 void puae_MainWindow::on_IDC_COMPATIBLE24_toggled(bool ischecked)
340 {
341     workprefs.address_space_24 = ischecked;
342     enable_for_cpudlg ();
343 }
344 
345 /* More Compatible */
on_IDC_COMPATIBLE_toggled(bool ischecked)346 void puae_MainWindow::on_IDC_COMPATIBLE_toggled(bool ischecked)
347 {
348     workprefs.cpu_compatible = ischecked;
349     enable_for_cpudlg ();
350 }
351 
352 /* JIT Enable */
on_IDC_JITENABLE_toggled(bool ischecked)353 void puae_MainWindow::on_IDC_JITENABLE_toggled(bool ischecked)
354 {
355     //
356     enable_for_cpudlg ();
357 }
358 
359 /* JIT Cache Size */
on_IDC_CACHE_valueChanged(int value)360 void puae_MainWindow::on_IDC_CACHE_valueChanged(int value)
361 {
362     char foo[30];
363 
364     value = value *1024;
365     workprefs.cachesize = value;
366 
367     sprintf (foo, "%d", value);
368     ui->IDC_CACHETEXT->setText(foo);
369 }
370 
371 /*68040 MMU Enable */
on_IDC_MMUENABLE_toggled(bool ischecked)372 void puae_MainWindow::on_IDC_MMUENABLE_toggled(bool ischecked)
373 {
374     //workprefs
375 }
376 
377 /* FPU None */
on_IDC_FPU0_clicked()378 void puae_MainWindow::on_IDC_FPU0_clicked()
379 {
380     workprefs.mmu_model = 0;
381 }
382 
383 /* FPU 68881 */
on_IDC_FPU1_clicked()384 void puae_MainWindow::on_IDC_FPU1_clicked()
385 {
386     workprefs.mmu_model = 1;
387 }
388 
389 /* FPU 68882 */
on_IDC_FPU2_clicked()390 void puae_MainWindow::on_IDC_FPU2_clicked()
391 {
392     workprefs.mmu_model = 2;
393 }
394 
395 /* FPU Internal */
on_IDC_FPU3_clicked()396 void puae_MainWindow::on_IDC_FPU3_clicked()
397 {
398     workprefs.mmu_model = 3;
399 }
400 
401 /* FPU More Compatible */
on_IDC_COMPATIBLE_FPU_toggled(bool ischecked)402 void puae_MainWindow::on_IDC_COMPATIBLE_FPU_toggled(bool ischecked)
403 {
404     //workprefs.fpu_strict = ischecked;
405 }
406 
407 /* CPU Fastest Possible */
on_IDC_CS_HOST_clicked()408 void puae_MainWindow::on_IDC_CS_HOST_clicked()
409 {
410     workprefs.m68k_speed = -1;
411 }
412 
413 /* CPU Cycle-Exact */
on_IDC_CS_68000_clicked()414 void puae_MainWindow::on_IDC_CS_68000_clicked()
415 {
416     workprefs.m68k_speed = 0;
417 }
418 
419 /* CPU Adjustable */
on_IDC_CS_ADJUSTABLE_clicked()420 void puae_MainWindow::on_IDC_CS_ADJUSTABLE_clicked()
421 {
422     workprefs.m68k_speed = 1;
423 }
424 
425 /* CPU CPU<-->Chipset */
on_IDC_SPEED_valueChanged(int value)426 void puae_MainWindow::on_IDC_SPEED_valueChanged(int value)
427 {
428 
429 }
430 
431 /* CPU CPU Idle*/
on_IDC_CPUIDLE_sliderMoved(int position)432 void puae_MainWindow::on_IDC_CPUIDLE_sliderMoved(int position)
433 {
434 
435 }
436 
437 /* CPU CE */
on_IDC_CPU_FREQUENCY_currentIndexChanged(int index)438 void puae_MainWindow::on_IDC_CPU_FREQUENCY_currentIndexChanged(int index)
439 {
440 
441 }
442 
443 //*************************************************
444 // HW-Chipset
445 //*************************************************
446 
447 /* OCS */
on_IDC_OCS_clicked()448 void puae_MainWindow::on_IDC_OCS_clicked()
449 {
450     workprefs.chipset_mask = 0;
451 }
452 
453 /* ECS AGNUS */
on_IDC_ECS_AGNUS_clicked()454 void puae_MainWindow::on_IDC_ECS_AGNUS_clicked()
455 {
456     workprefs.chipset_mask = 1;
457 }
458 
459 /* ECS DENISE */
on_IDC_ECS_DENISE_clicked()460 void puae_MainWindow::on_IDC_ECS_DENISE_clicked()
461 {
462     workprefs.chipset_mask = 2;
463 }
464 
465 /* ECS FULL = AGNUS + DENISE */
on_IDC_ECS_clicked()466 void puae_MainWindow::on_IDC_ECS_clicked()
467 {
468     workprefs.chipset_mask = 3;
469 }
470 
471 /* AGA */
on_IDC_AGA_clicked()472 void puae_MainWindow::on_IDC_AGA_clicked()
473 {
474     workprefs.chipset_mask = 4;
475 }
476 
477 /* NTSC */
on_IDC_NTSC_toggled(bool ischecked)478 void puae_MainWindow::on_IDC_NTSC_toggled(bool ischecked)
479 {
480     workprefs.ntscmode = ischecked;
481 }
482 
483 /* Chipset Extra */
on_IDC_CS_EXT_currentIndexChanged(int index)484 void puae_MainWindow::on_IDC_CS_EXT_currentIndexChanged(int index)
485 {
486 
487 }
488 
489 /* Blitter Immediate */
on_IDC_BLITIMM_toggled(bool ischecked)490 void puae_MainWindow::on_IDC_BLITIMM_toggled(bool ischecked)
491 {
492     workprefs.immediate_blits = ischecked;
493 }
494 
495 /* Cycle Exact */
on_IDC_CYCLEEXACT_toggled(bool ischecked)496 void puae_MainWindow::on_IDC_CYCLEEXACT_toggled(bool ischecked)
497 {
498     workprefs.cpu_cycle_exact = ischecked;
499 }
500 
501 /* Genlock Enabled */
on_IDC_GENLOCK_toggled(bool ischecked)502 void puae_MainWindow::on_IDC_GENLOCK_toggled(bool ischecked)
503 {
504     workprefs.genlock = ischecked;
505 }
506 
507 /* Sprite Collision None */
on_IDC_COLLISION0_clicked()508 void puae_MainWindow::on_IDC_COLLISION0_clicked()
509 {
510     workprefs.collision_level = 0;
511 }
512 
513 /* Sprites Only */
on_IDC_COLLISION1_clicked()514 void puae_MainWindow::on_IDC_COLLISION1_clicked()
515 {
516     workprefs.collision_level = 1;
517 }
518 
519 /* Sprites and Sprites vs Playfield */
on_IDC_COLLISION2_clicked()520 void puae_MainWindow::on_IDC_COLLISION2_clicked()
521 {
522     workprefs.collision_level = 2;
523 }
524 
525 /* Collision Full */
on_IDC_COLLISION3_clicked()526 void puae_MainWindow::on_IDC_COLLISION3_clicked()
527 {
528     workprefs.collision_level = 3;
529 }
530 
531 //*************************************************
532 // Advanced Chipset
533 //*************************************************
534 
535 /* Compatible Settings */
on_IDC_CS_COMPATIBLE_toggled(bool ischecked)536 void puae_MainWindow::on_IDC_CS_COMPATIBLE_toggled(bool ischecked)
537 {
538     workprefs.cs_compatible = ischecked;
539 }
540 
541 /* Battery Backed Real Time Clock None */
on_IDC_CS_RTC1_clicked()542 void puae_MainWindow::on_IDC_CS_RTC1_clicked()
543 {
544     workprefs.cs_rtc = 0;
545 }
546 
547 /* Battery Backed Real Time Clock None */
on_IDC_CS_RTC2_clicked()548 void puae_MainWindow::on_IDC_CS_RTC2_clicked()
549 {
550     workprefs.cs_rtc = 1;
551 }
552 
553 /* Battery Backed Real Time Clock None */
on_IDC_CS_RTC3_clicked()554 void puae_MainWindow::on_IDC_CS_RTC3_clicked()
555 {
556     workprefs.cs_rtc = 2;
557 }
558 
559 /* CIA-A TOD Clock Source */
on_IDC_CS_CIAA_TOD1_clicked()560 void puae_MainWindow::on_IDC_CS_CIAA_TOD1_clicked()
561 {
562     workprefs.cs_ciaatod = 0;
563 }
564 
565 /* CIA-A TOD Clock Source */
on_IDC_CS_CIAA_TOD2_clicked()566 void puae_MainWindow::on_IDC_CS_CIAA_TOD2_clicked()
567 {
568     workprefs.cs_ciaatod = 1;
569 }
570 
571 /* CIA-A TOD Clock Source */
on_IDC_CS_CIAA_TOD3_clicked()572 void puae_MainWindow::on_IDC_CS_CIAA_TOD3_clicked()
573 {
574     workprefs.cs_ciaatod = 2;
575 }
576 
577 /* CIA ROM Overlay */
on_IDC_CS_CIAOVERLAY_toggled(bool ischecked)578 void puae_MainWindow::on_IDC_CS_CIAOVERLAY_toggled(bool ischecked)
579 {
580     workprefs.cs_ciaoverlay = ischecked;
581 }
582 
583 /* CD32 CD */
on_IDC_CS_CD32CD_toggled(bool ischecked)584 void puae_MainWindow::on_IDC_CS_CD32CD_toggled(bool ischecked)
585 {
586     workprefs.cs_cd32cd = ischecked;
587 }
588 
on_IDC_CS_CD32C2P_toggled(bool ischecked)589 void puae_MainWindow::on_IDC_CS_CD32C2P_toggled(bool ischecked)
590 {
591     workprefs.cs_cd32c2p = ischecked;
592 }
593 
on_IDC_CS_CD32NVRAM_toggled(bool ischecked)594 void puae_MainWindow::on_IDC_CS_CD32NVRAM_toggled(bool ischecked)
595 {
596     workprefs.cs_cd32nvram = ischecked;
597 }
598 
on_IDC_CS_CDTVCD_toggled(bool ischecked)599 void puae_MainWindow::on_IDC_CS_CDTVCD_toggled(bool ischecked)
600 {
601     workprefs.cs_cdtvcd = ischecked;
602 }
603 
on_IDC_CS_CDTVRAM_toggled(bool ischecked)604 void puae_MainWindow::on_IDC_CS_CDTVRAM_toggled(bool ischecked)
605 {
606     workprefs.cs_cdtvram = ischecked;
607 }
608 
on_IDC_CS_IDE1_toggled(bool ischecked)609 void puae_MainWindow::on_IDC_CS_IDE1_toggled(bool ischecked)
610 {
611     workprefs.cs_ide = (ui->IDC_CS_IDE1->checkState()) ? 1 : ((ui->IDC_CS_IDE2->checkState()) ? 2 : 0);
612 }
613 
on_IDC_CS_IDE2_toggled(bool ischecked)614 void puae_MainWindow::on_IDC_CS_IDE2_toggled(bool ischecked)
615 {
616     workprefs.cs_ide = (ui->IDC_CS_IDE1->checkState()) ? 1 : ((ui->IDC_CS_IDE2->checkState()) ? 2 : 0);
617 }
618 
619 /* ROM Mirror E0 */
on_IDC_CS_KSMIRROR_E0_toggled(bool ischecked)620 void puae_MainWindow::on_IDC_CS_KSMIRROR_E0_toggled(bool ischecked)
621 {
622     workprefs.cs_ksmirror_e0 = ischecked;
623 }
624 
625 /* ROM Mirror A8 */
on_IDC_CS_KSMIRROR_A8_toggled(bool ischecked)626 void puae_MainWindow::on_IDC_CS_KSMIRROR_A8_toggled(bool ischecked)
627 {
628     workprefs.cs_ksmirror_a8 = ischecked;
629 }
630 
631 /* C00000 is Fast RAM */
on_IDC_CS_SLOWISFAST_toggled(bool ischecked)632 void puae_MainWindow::on_IDC_CS_SLOWISFAST_toggled(bool ischecked)
633 {
634     workprefs.cs_slowmemisfast = ischecked;
635 }
636 
637 /* A1000 Boot ROM/RAM */
on_IDC_CS_A1000RAM_toggled(bool ischecked)638 void puae_MainWindow::on_IDC_CS_A1000RAM_toggled(bool ischecked)
639 {
640     workprefs.cs_a1000ram = ischecked;
641 }
642 
643 /* DF0: ID Hardware */
on_IDC_CS_DF0IDHW_toggled(bool ischecked)644 void puae_MainWindow::on_IDC_CS_DF0IDHW_toggled(bool ischecked)
645 {
646     workprefs.cs_df0idhw = ischecked;
647 }
648 
649 /* CDTV SRAM Expansion */
on_IDC_CS_CDTVRAMEXP_toggled(bool ischecked)650 void puae_MainWindow::on_IDC_CS_CDTVRAMEXP_toggled(bool ischecked)
651 {
652     workprefs.cs_cdtvram = ischecked;
653 }
654 
655 /* PCMCIA */
on_IDC_CS_PCMCIA_toggled(bool ischecked)656 void puae_MainWindow::on_IDC_CS_PCMCIA_toggled(bool ischecked)
657 {
658     workprefs.cs_pcmcia = ischecked;
659 }
660 
661 /* KB Reset Warning */
on_IDC_CS_RESETWARNING_toggled(bool ischecked)662 void puae_MainWindow::on_IDC_CS_RESETWARNING_toggled(bool ischecked)
663 {
664     workprefs.cs_resetwarning = ischecked;
665 }
666 
667 /* No-EHB DENISE */
on_IDC_CS_NOEHB_toggled(bool ischecked)668 void puae_MainWindow::on_IDC_CS_NOEHB_toggled(bool ischecked)
669 {
670     workprefs.cs_denisenoehb = ischecked;
671 }
672 
673 /* A1000 Agnus */
on_IDC_CS_DIPAGNUS_toggled(bool ischecked)674 void puae_MainWindow::on_IDC_CS_DIPAGNUS_toggled(bool ischecked)
675 {
676     workprefs.cs_dipagnus = ischecked;
677 }
678 
679 /* A590/A2091 SCSI */
on_IDC_CS_A2091_toggled(bool ischecked)680 void puae_MainWindow::on_IDC_CS_A2091_toggled(bool ischecked)
681 {
682     workprefs.cs_a2091 = ischecked;
683 }
684 
685 /* A3000 SCSI */
on_IDC_CS_DMAC_toggled(bool ischecked)686 void puae_MainWindow::on_IDC_CS_DMAC_toggled(bool ischecked)
687 {
688     workprefs.cs_mbdmac = (ui->IDC_CS_DMAC->checkState()) ? 1 : ((ui->IDC_CS_DMAC2->checkState()) ? 2 : 0);
689 }
690 
691 /* A4000T SCSI */
on_IDC_CS_DMAC2_toggled(bool ischecked)692 void puae_MainWindow::on_IDC_CS_DMAC2_toggled(bool ischecked)
693 {
694     workprefs.cs_mbdmac = (ui->IDC_CS_DMAC->checkState()) ? 1 : ((ui->IDC_CS_DMAC2->checkState()) ? 2 : 0);
695 }
696 
697 /* A4901 SCSI */
on_IDC_CS_A4091_toggled(bool ischecked)698 void puae_MainWindow::on_IDC_CS_A4091_toggled(bool ischecked)
699 {
700     workprefs.cs_a4091 = ischecked;
701 }
702 
703 /* CDTV SCSI */
on_IDC_CS_CDTVSCSI_toggled(bool ischecked)704 void puae_MainWindow::on_IDC_CS_CDTVSCSI_toggled(bool ischecked)
705 {
706     workprefs.cs_cdtvscsi = ischecked;
707 }
708 
709 /* Ramsey Revision */
on_IDC_CS_RAMSEY_toggled(bool ischecked)710 void puae_MainWindow::on_IDC_CS_RAMSEY_toggled(bool ischecked)
711 {
712     workprefs.cs_ramseyrev = ischecked ? 0x0f : -1;
713     //ui->IDC_CS_RAMSEYREV->setText(workprefs.cs_ramseyrev);
714 }
715 
716 /* Fat Gary Revision */
on_IDC_CS_FATGARY_toggled(bool ischecked)717 void puae_MainWindow::on_IDC_CS_FATGARY_toggled(bool ischecked)
718 {
719     workprefs.cs_fatgaryrev = ischecked ? 0x00 : -1;
720 }
721 
722 /* Agnus/Alice Revision */
on_IDC_CS_AGNUS_toggled(bool checked)723 void puae_MainWindow::on_IDC_CS_AGNUS_toggled(bool checked)
724 {
725 
726 }
727 
728 /* Denise/Lisa Revision */
on_IDC_CS_DENISE_toggled(bool checked)729 void puae_MainWindow::on_IDC_CS_DENISE_toggled(bool checked)
730 {
731 
732 }
733 
734 //*************************************************
735 // RAM
736 //*************************************************
737 
738 /* Chip RAM */
on_IDC_CHIPMEM_valueChanged(int value)739 void puae_MainWindow::on_IDC_CHIPMEM_valueChanged(int value)
740 {
741     workprefs.chipmem_size = memsizes[msi_chip[value]];
742     ui->IDC_CHIPRAM->setText(memsize_names[msi_chip[value]]);
743 }
744 
745 /* Fast RAM */
on_IDC_FASTMEM_valueChanged(int value)746 void puae_MainWindow::on_IDC_FASTMEM_valueChanged(int value)
747 {
748     workprefs.fastmem_size = memsizes[msi_fast[value]];
749     ui->IDC_FASTRAM->setText(memsize_names[msi_fast[value]]);
750 }
751 
752 /* Slow RAM */
on_IDC_SLOWMEM_valueChanged(int value)753 void puae_MainWindow::on_IDC_SLOWMEM_valueChanged(int value)
754 {
755     workprefs.bogomem_size = memsizes[msi_bogo[value]];
756     ui->IDC_SLOWRAM->setText(memsize_names[msi_bogo[value]]);
757 }
758 
759 /* Z3 Fast RAM */
on_IDC_Z3FASTMEM_valueChanged(int value)760 void puae_MainWindow::on_IDC_Z3FASTMEM_valueChanged(int value)
761 {
762     workprefs.z3chipmem_size = memsizes[msi_z3fast[value]];
763     ui->IDC_Z3FASTRAM->setText(memsize_names[msi_z3fast[value]]);
764 }
765 
766 /* Motherboard Fast RAM */
on_IDC_MBMEM1_valueChanged(int value)767 void puae_MainWindow::on_IDC_MBMEM1_valueChanged(int value)
768 {
769     workprefs.mbresmem_low_size = memsizes[msi_gfx[value]];
770     ui->IDC_MBRAM1->setText(memsize_names[msi_gfx[value]]);
771 }
772 
773 /* Processor Slot RAM */
on_IDC_MBMEM2_valueChanged(int value)774 void puae_MainWindow::on_IDC_MBMEM2_valueChanged(int value)
775 {
776     workprefs.mbresmem_high_size = memsizes[msi_gfx[value]];
777     ui->IDC_MBRAM2->setText(memsize_names[msi_gfx[value]]);
778 }
779 
on_IDC_FLOPPYSPD_valueChanged(int value)780 void puae_MainWindow::on_IDC_FLOPPYSPD_valueChanged(int value)
781 {
782     workprefs.floppy_speed = value;
783     if (workprefs.floppy_speed > 0) {
784             workprefs.floppy_speed--;
785             workprefs.floppy_speed = 1 << workprefs.floppy_speed;
786             workprefs.floppy_speed *= 100;
787     }
788 
789     out_floppyspeed();
790 }
791 
792 //
793 // Santa's Little Helpers
794 //
795 
isromext(const char * path,bool deepscan)796 int puae_MainWindow::isromext (const char *path, bool deepscan)
797 {
798 	const TCHAR *ext;
799 	int i;
800 
801 	if (!path)
802 		return 0;
803 	ext = strrchr (path, '.');
804 	if (!ext)
805 		return 0;
806 	ext++;
807 
808 	if (!strcasecmp (ext, "rom") ||  !strcasecmp (ext, "adf") || !strcasecmp (ext, "key")
809 		|| !strcasecmp (ext, "a500") || !strcasecmp (ext, "a1200") || !strcasecmp (ext, "a4000") || !strcasecmp (ext, "cd32"))
810 		return 1;
811 	if (strlen (ext) >= 2 && toupper(ext[0]) == 'U' && isdigit (ext[1]))
812 		return 1;
813 	if (!deepscan)
814 		return 0;
815 	for (i = 0; uae_archive_extensions[i]; i++) {
816 		if (!strcasecmp (ext, uae_archive_extensions[i]))
817 			return 1;
818 	}
819 	return 0;
820 }
821 
scan_rom_hook(const char * name,int line)822 bool puae_MainWindow::scan_rom_hook (const char *name, int line)
823 {
824 /*	MSG msg;
825 	if (!infoboxhwnd)
826 		return true;
827 	if (name != NULL) {
828 		const char *s = NULL;
829 		if (line == 2) {
830 			s = strrchr (name, '/');
831 			if (!s)
832 				s = strrchr (name, '\\');
833 			if (s)
834 				s++;
835 		}
836 		SetWindowText (GetDlgItem (infoboxhwnd, line == 1 ? IDC_INFOBOX_TEXT1 : (line == 2 ? IDC_INFOBOX_TEXT2 : IDC_INFOBOX_TEXT3)), s ? s : name);
837 	}
838 	while (PeekMessage (&msg, infoboxhwnd, 0, 0, PM_REMOVE)) {
839 		if (!IsDialogMessage (infoboxhwnd, &msg)) {
840 			TranslateMessage (&msg);
841 			DispatchMessage (&msg);
842 		}
843 	}
844 	return infoboxdialogstate;*/
845 	return false;
846 }
847 
848 //fixme:
addrom(struct romdata * rd,const char * name)849 int puae_MainWindow::addrom (struct romdata *rd, const char *name)
850 {
851 	char tmp1[MAX_DPATH], tmp2[MAX_DPATH];
852 
853 	if (rd) {
854 		snprintf (tmp1, MAX_DPATH, "ROM_%03d", rd->id);
855 		// And then?
856 		return 1;
857 	}
858 	return 0;
859 }
860 
scan_rom(const char * path,bool deepscan)861 int puae_MainWindow::scan_rom (const char *path, bool deepscan)
862 {
863 	struct romdata *rd;
864 	int cnt = 0;
865 
866 	if (!isromext (path, deepscan)) {
867 		return 0;
868 	}
869 	scan_rom_hook (path, 2);
870 #ifdef ARCADIA
871 	for (;;) {
872 		char tmp[MAX_DPATH];
873 		strcpy (tmp, path);
874 		rd = scan_arcadia_rom (tmp, cnt++);
875 		if (rd) {
876 			if (!addrom (rd, tmp))
877 				return 1;
878 			continue;
879 		}
880 		break;
881 	}
882 #endif
883 	return 0;
884 }
885 
886 
display_fromselect(int val,int * fs,int * vsync,int p96)887 void puae_MainWindow::display_fromselect (int val, int *fs, int *vsync, int p96)
888 {
889 	int ofs = *fs;
890 	if (!val)
891 		return;
892 	*fs = 0;
893 	*vsync = 0;
894 	if (p96) {
895 		*fs = val / 2;
896 		*vsync = val & 1;
897 		return;
898 	}
899 	switch (val)
900 	{
901 	case 0:
902 		*fs = 0;
903 		break;
904 	case 1:
905 		*fs = 1;
906 		break;
907 	case 2:
908 		*fs = 1;
909 		*vsync = 1;
910 		break;
911 	case 3:
912 		*fs = 1;
913 		*vsync = 2;
914 		break;
915 	case 4:
916 		*fs = 2;
917 		if (workprefs.gfx_filter == 0 && *fs != ofs && !workprefs.gfx_api) {
918 			workprefs.gfx_filter = 1;
919 			workprefs.gfx_filter_horiz_zoom = 0;
920 			workprefs.gfx_filter_vert_zoom = 0;
921 			workprefs.gfx_filter_horiz_zoom_mult = 0;
922 			workprefs.gfx_filter_vert_zoom_mult = 0;
923 			workprefs.gfx_filter_aspect = -1;
924 			workprefs.gfx_filter_horiz_offset = 0;
925 			workprefs.gfx_filter_vert_offset = 0;
926 			workprefs.gfx_filter_keep_aspect = 0;
927 		}
928 		break;
929 	}
930 }
931 
getcpufreq(int m)932 int puae_MainWindow::getcpufreq (int m)
933 {
934         int f;
935 
936         f = workprefs.ntscmode ? 28636360.0 : 28375160.0;
937         return f * (m >> 8) / 8;
938 }
939 
out_floppyspeed()940 void puae_MainWindow::out_floppyspeed()
941 {
942     char spe[30];
943 
944     if (workprefs.floppy_speed)
945             sprintf (spe, "%d%%%s", workprefs.floppy_speed, workprefs.floppy_speed == 100 ? " (compatible)" : "");
946     else
947             strcpy (spe, "Turbo");
948     ui->IDC_FLOPPYSPDTEXT->setText(spe);
949 }
950 
values_to_memorydlg()951 void puae_MainWindow::values_to_memorydlg()
952 {
953     unsigned int mem_size = 0;
954     unsigned long v;
955 
956     switch (workprefs.chipmem_size) {
957     case 0x00040000: mem_size = 0; break;
958     case 0x00080000: mem_size = 1; break;
959     case 0x00100000: mem_size = 2; break;
960     case 0x00180000: mem_size = 3; break;
961     case 0x00200000: mem_size = 4; break;
962     case 0x00400000: mem_size = 5; break;
963     case 0x00800000: mem_size = 6; break;
964     }
965     ui->IDC_CHIPMEM->setValue(mem_size);
966 	ui->IDC_CHIPRAM->setText(memsize_names[msi_chip[mem_size]]);
967 
968     mem_size = 0;
969     switch (workprefs.fastmem_size) {
970     case 0x00000000: mem_size = 0; break;
971     case 0x00100000: mem_size = 1; break;
972     case 0x00200000: mem_size = 2; break;
973     case 0x00400000: mem_size = 3; break;
974     case 0x00800000: mem_size = 4; break;
975     case 0x01000000: mem_size = 5; break;
976     }
977     ui->IDC_FASTMEM->setValue(mem_size);
978 	ui->IDC_FASTRAM->setText(memsize_names[msi_fast[mem_size]]);
979 
980     mem_size = 0;
981     switch (workprefs.bogomem_size) {
982     case 0x00000000: mem_size = 0; break;
983     case 0x00080000: mem_size = 1; break;
984     case 0x00100000: mem_size = 2; break;
985     case 0x00180000: mem_size = 3; break;
986     case 0x001C0000: mem_size = 4; break;
987     }
988     ui->IDC_SLOWMEM->setValue(mem_size);
989 	ui->IDC_SLOWRAM->setText(memsize_names[msi_bogo[mem_size]]);
990 
991     mem_size = 0;
992     v = workprefs.z3fastmem_size + workprefs.z3fastmem2_size;
993     if      (v < 0x00100000)
994             mem_size = 0;
995     else if (v < 0x00200000)
996             mem_size = 1;
997     else if (v < 0x00400000)
998             mem_size = 2;
999     else if (v < 0x00800000)
1000             mem_size = 3;
1001     else if (v < 0x01000000)
1002             mem_size = 4;
1003     else if (v < 0x02000000)
1004             mem_size = 5;
1005     else if (v < 0x04000000)
1006             mem_size = 6;
1007     else if (v < 0x08000000)
1008             mem_size = 7;
1009     else if (v < 0x10000000)
1010             mem_size = 8;
1011     else if (v < 0x18000000)
1012             mem_size = 9;
1013     else if (v < 0x20000000)
1014             mem_size = 10;
1015     else if (v < 0x30000000)
1016             mem_size = 11;
1017     else if (v < 0x40000000) // 1GB
1018             mem_size = 12;
1019     else if (v < 0x60000000) // 1.5GB
1020             mem_size = 13;
1021     else if (v < 0x80000000) // 2GB
1022             mem_size = 14;
1023     else if (v < 0xA8000000) // 2.5GB
1024             mem_size = 15;
1025     else if (v < 0xC0000000) // 3GB
1026             mem_size = 16;
1027     else
1028             mem_size = 17;
1029 	ui->IDC_Z3FASTMEM->setValue(mem_size);
1030 	ui->IDC_Z3FASTRAM->setText(memsize_names[msi_z3fast[mem_size]]);
1031 
1032 	mem_size = 0;
1033 	v = workprefs.z3chipmem_size;
1034 	if (v < 0x01000000)
1035 		mem_size = 0;
1036 	else if (v < 0x02000000)
1037 		mem_size = 1;
1038 	else if (v < 0x04000000)
1039 		mem_size = 2;
1040 	else if (v < 0x08000000)
1041 		mem_size = 3;
1042 	else if (v < 0x10000000)
1043 		mem_size = 4;
1044 	else if (v < 0x20000000)
1045 		mem_size = 5;
1046 	else if (v < 0x40000000)
1047 		mem_size = 6;
1048 	else
1049 		mem_size = 7;
1050 	ui->IDC_Z3CHIPMEM->setValue(mem_size);
1051 	ui->IDC_Z3CHIPRAM->setText(memsize_names[msi_z3chip[mem_size]]);
1052 
1053     mem_size = 0;
1054     switch (workprefs.rtgmem_size) {
1055     case 0x00000000: mem_size = 0; break;
1056     case 0x00100000: mem_size = 1; break;
1057     case 0x00200000: mem_size = 2; break;
1058     case 0x00400000: mem_size = 3; break;
1059     case 0x00800000: mem_size = 4; break;
1060     case 0x01000000: mem_size = 5; break;
1061     case 0x02000000: mem_size = 6; break;
1062     case 0x04000000: mem_size = 7; break;
1063     case 0x08000000: mem_size = 8; break;
1064     case 0x10000000: mem_size = 9; break;
1065     case 0x20000000: mem_size = 10; break;
1066     case 0x40000000: mem_size = 11; break;
1067     }
1068     ui->IDC_P96MEM->setValue(mem_size);
1069     ui->IDC_P96RAM->setText(memsize_names[msi_gfx[mem_size]]);
1070 
1071 /*
1072 	ui->IDC_RTG_8BIT->setValue ((workprefs.picasso96_modeflags & RGBFF_CLUT) ? 1 : 0, 0);
1073 	ui->IDC_RTG_16BIT->setValue (
1074 		(manybits (workprefs.picasso96_modeflags, RGBFF_R5G6B5PC | RGBFF_R5G6B5PC | RGBFF_R5G6B5 | RGBFF_R5G5B5 | RGBFF_B5G6R5PC | RGBFF_B5G5R5PC)) ? 1 :
1075 		(workprefs.picasso96_modeflags & RGBFF_R5G6B5PC) ? 2 :
1076 		(workprefs.picasso96_modeflags & RGBFF_R5G5B5PC) ? 3 :
1077 		(workprefs.picasso96_modeflags & RGBFF_R5G6B5) ? 4 :
1078 		(workprefs.picasso96_modeflags & RGBFF_R5G5B5) ? 5 :
1079 		(workprefs.picasso96_modeflags & RGBFF_B5G6R5PC) ? 6 :
1080 		(workprefs.picasso96_modeflags & RGBFF_B5G5R5PC) ? 7 : 0, 0);
1081 	ui->IDC_RTG_24BIT->setValue (
1082 		(manybits (workprefs.picasso96_modeflags, RGBFF_R8G8B8 | RGBFF_B8G8R8)) ? 1 :
1083 		(workprefs.picasso96_modeflags & RGBFF_R8G8B8) ? 2 :
1084 		(workprefs.picasso96_modeflags & RGBFF_B8G8R8) ? 3 : 0, 0);
1085 	ui->IDC_RTG_32BIT->setValue (
1086 		(manybits (workprefs.picasso96_modeflags, RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8)) ? 1 :
1087 		(workprefs.picasso96_modeflags & RGBFF_A8R8G8B8) ? 2 :
1088 		(workprefs.picasso96_modeflags & RGBFF_A8B8G8R8) ? 3 :
1089 		(workprefs.picasso96_modeflags & RGBFF_R8G8B8A8) ? 4 :
1090 		(workprefs.picasso96_modeflags & RGBFF_B8G8R8A8) ? 5 : 0, 0);
1091 */
1092 		//ui->IDC_RTG_VBLANKRATE->setText(tmp);
1093 	mem_size = 0;
1094 	switch (workprefs.mbresmem_low_size) {
1095 	case 0x00000000: mem_size = 0; break;
1096 	case 0x00100000: mem_size = 1; break;
1097 	case 0x00200000: mem_size = 2; break;
1098 	case 0x00400000: mem_size = 3; break;
1099 	case 0x00800000: mem_size = 4; break;
1100 	case 0x01000000: mem_size = 5; break;
1101 	case 0x02000000: mem_size = 6; break;
1102 	case 0x04000000: mem_size = 7; break;
1103 	}
1104 	ui->IDC_MBMEM1->setValue(mem_size);
1105 	ui->IDC_MBRAM1->setText(memsize_names[msi_gfx[mem_size]]);
1106 
1107 	mem_size = 0;
1108 	switch (workprefs.mbresmem_high_size) {
1109 	case 0x00000000: mem_size = 0; break;
1110 	case 0x00100000: mem_size = 1; break;
1111 	case 0x00200000: mem_size = 2; break;
1112 	case 0x00400000: mem_size = 3; break;
1113 	case 0x00800000: mem_size = 4; break;
1114 	case 0x01000000: mem_size = 5; break;
1115 	case 0x02000000: mem_size = 6; break;
1116 	case 0x04000000: mem_size = 7; break;
1117 	}
1118 	ui->IDC_MBMEM2->setValue(mem_size);
1119 	ui->IDC_MBRAM2->setText(memsize_names[msi_gfx[mem_size]]);
1120 }
1121 
fix_values_memorydlg()1122 void puae_MainWindow::fix_values_memorydlg()
1123 {
1124     if (workprefs.chipmem_size > 0x200000)
1125             workprefs.fastmem_size = 0;
1126 }
1127 
updatez3(unsigned int * size1p,unsigned int * size2p)1128 void puae_MainWindow::updatez3 (unsigned int *size1p, unsigned int *size2p)
1129 {
1130         int i;
1131         unsigned int s1, s2;
1132 
1133         // no 2GB Z3 size so we need 2x1G
1134         if (*size1p >= 0x80000000) {
1135                 *size2p = *size1p - 0x40000000;
1136                 *size1p = 0x40000000;
1137                 return;
1138         }
1139         s1 = *size1p;
1140         *size1p = 0;
1141         *size2p = 0;
1142         s2 = 0;
1143         for (i = 32; i >= 0; i--) {
1144                 if (s1 & (1 << i))
1145                         break;
1146         }
1147         if (i < 20)
1148                 return;
1149         if (s1 == (1U << i)) {
1150                 *size1p = s1;
1151                 return;
1152         }
1153         s2 = s1 & ((1 << i) - 1);
1154         s1 = 1 << i;
1155         i--;
1156         while (i >= 0) {
1157                 if (s2 & (1 << i)) {
1158                         s2 = 1 << i;
1159                         break;
1160                 }
1161                 i--;
1162         }
1163         if (i < 19)
1164                 s2 = 0;
1165         *size1p = s1;
1166         *size2p = s2;
1167 }
1168 
enable_for_memorydlg()1169 void puae_MainWindow::enable_for_memorydlg ()
1170 {
1171     int z3 = ! workprefs.address_space_24;
1172     int fast = workprefs.chipmem_size <= 0x200000;
1173     int rtg = workprefs.rtgmem_size; //&& full_property_sheet;
1174     int rtg2 = workprefs.rtgmem_size;
1175 
1176 #ifndef AUTOCONFIG
1177     z3 = false;
1178     fast = false;
1179 #endif
1180 
1181     ui->IDC_Z3FASTRAM->setEnabled(z3);
1182     ui->IDC_Z3FASTMEM->setEnabled(z3);
1183     ui->IDC_FASTMEM->setEnabled(fast);
1184     ui->IDC_FASTRAM->setEnabled(fast);
1185 //    ui->IDC_FASTTEXT->setEnabled(fast);
1186 //    ui->IDC_GFXCARDTEXT->setEnabled(z3);
1187     ui->IDC_P96RAM->setEnabled(z3);
1188     ui->IDC_P96MEM->setEnabled(z3);
1189     ui->IDC_MBRAM1->setEnabled(z3);
1190     ui->IDC_MBMEM1->setEnabled(z3);
1191     ui->IDC_MBRAM2->setEnabled(z3);
1192     ui->IDC_MBMEM2->setEnabled(z3);
1193 
1194     ui->IDC_RTG_8BIT->setEnabled(rtg);
1195     ui->IDC_RTG_16BIT->setEnabled(rtg);
1196     ui->IDC_RTG_24BIT->setEnabled(rtg);
1197     ui->IDC_RTG_32BIT->setEnabled(rtg);
1198     ui->IDC_RTG_MATCH_DEPTH->setEnabled(rtg2);
1199     ui->IDC_RTG_SCALE->setEnabled(rtg2);
1200     ui->IDC_RTG_SCALE_ALLOW->setEnabled(rtg2);
1201     ui->IDC_RTG_SCALE_ASPECTRATIO->setEnabled(rtg2);
1202     ui->IDC_RTG_VBLANKRATE->setEnabled(rtg2);
1203 }
1204 
values_to_chipsetdlg()1205 void puae_MainWindow::values_to_chipsetdlg ()
1206 {
1207         switch (workprefs.chipset_mask) {
1208         case 0:
1209 		ui->IDC_OCS->setChecked(true);
1210                 break;
1211         case CSMASK_ECS_AGNUS:
1212 		ui->IDC_ECS_AGNUS->setChecked(true);
1213                 break;
1214         case CSMASK_ECS_DENISE:
1215 		ui->IDC_ECS_DENISE->setChecked(true);
1216                 break;
1217         case CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE:
1218 		ui->IDC_ECS->setChecked(true);
1219                 break;
1220         case CSMASK_AGA:
1221         case CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE | CSMASK_AGA:
1222 		ui->IDC_AGA->setChecked(true);
1223                 break;
1224         }
1225 
1226 	ui->IDC_NTSC->setChecked(workprefs.ntscmode);
1227 	ui->IDC_GENLOCK->setChecked(workprefs.genlock);
1228 	ui->IDC_BLITIMM->setChecked(workprefs.immediate_blits);
1229 	switch (workprefs.collision_level) {
1230 	case 0:
1231 		ui->IDC_COLLISION0->setChecked(true);
1232 		break;
1233 	case 1:
1234 		ui->IDC_COLLISION1->setChecked(true);
1235 		break;
1236 	case 2:
1237 		ui->IDC_COLLISION2->setChecked(true);
1238 		break;
1239 	case 3:
1240 		ui->IDC_COLLISION3->setChecked(true);
1241 		break;
1242 	}
1243 	ui->IDC_CYCLEEXACT->setChecked(workprefs.cpu_cycle_exact);
1244 	int index = ui->IDC_CS_EXT->findData(workprefs.cs_compatible);
1245 	ui->IDC_CS_EXT->setCurrentIndex(index);
1246 }
1247 
values_from_chipsetdlg()1248 void puae_MainWindow::values_from_chipsetdlg ()
1249 {
1250         bool success = false;
1251         int nn;
1252         bool n;
1253 
1254         workprefs.genlock = ui->IDC_GENLOCK->checkState();
1255         workprefs.immediate_blits = ui->IDC_BLITIMM->checkState();
1256         n = ui->IDC_CYCLEEXACT->checkState();
1257         if (workprefs.cpu_cycle_exact != n) {
1258                 workprefs.cpu_cycle_exact = workprefs.blitter_cycle_exact = n;
1259                 if (n) {
1260                         if (workprefs.cpu_model == 68000)
1261                                 workprefs.cpu_compatible = 1;
1262                         if (workprefs.cpu_model <= 68020)
1263                                 workprefs.m68k_speed = 0;
1264                         workprefs.immediate_blits = 0;
1265                         workprefs.gfx_framerate = 1;
1266                         workprefs.cachesize = 0;
1267                 }
1268         }
1269         workprefs.collision_level = ui->IDC_COLLISION0->isChecked() ? 0
1270                 : ui->IDC_COLLISION1->isChecked() ? 1
1271                 : ui->IDC_COLLISION2->isChecked() ? 2 : 3;
1272         workprefs.chipset_mask = ui->IDC_OCS->isChecked() ? 0
1273                 : ui->IDC_ECS_AGNUS->isChecked() ? CSMASK_ECS_AGNUS
1274                 : ui->IDC_ECS_DENISE->isChecked() ? CSMASK_ECS_DENISE
1275                 : ui->IDC_ECS->isChecked() ? CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE
1276                 : CSMASK_AGA | CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE;
1277         n = ui->IDC_NTSC->isChecked();
1278         if (workprefs.ntscmode != n) {
1279                 workprefs.ntscmode = n;
1280         }
1281 //TODO
1282 
1283 }
1284 
values_to_chipsetdlg2()1285 void puae_MainWindow::values_to_chipsetdlg2 ()
1286 {
1287         TCHAR txt[32];
1288         uae_u32 rev;
1289 
1290         switch(workprefs.cs_ciaatod) {
1291         case 0:
1292 		ui->IDC_CS_CIAA_TOD1->setChecked(true);
1293                 break;
1294         case 1:
1295 		ui->IDC_CS_CIAA_TOD2->setChecked(true);
1296                 break;
1297         case 2:
1298 		ui->IDC_CS_CIAA_TOD3->setChecked(true);
1299                 break;
1300         }
1301 
1302         switch(workprefs.cs_rtc) {
1303         case 0:
1304 		ui->IDC_CS_RTC1->setChecked(true);
1305                 break;
1306         case 1:
1307 		ui->IDC_CS_RTC2->setChecked(true);
1308                 break;
1309         case 2:
1310 		ui->IDC_CS_RTC3->setChecked(true);
1311                 break;
1312         }
1313 
1314         ui->IDC_CS_COMPATIBLE->setChecked(workprefs.cs_compatible);
1315         ui->IDC_CS_RESETWARNING->setChecked(workprefs.cs_resetwarning);
1316         ui->IDC_CS_NOEHB->setChecked(workprefs.cs_denisenoehb);
1317         ui->IDC_CS_DIPAGNUS->setChecked(workprefs.cs_dipagnus);
1318         ui->IDC_CS_KSMIRROR_E0->setChecked(workprefs.cs_ksmirror_e0);
1319         ui->IDC_CS_KSMIRROR_A8->setChecked(workprefs.cs_ksmirror_a8);
1320         ui->IDC_CS_CIAOVERLAY->setChecked(workprefs.cs_ciaoverlay);
1321         ui->IDC_CS_DF0IDHW->setChecked(workprefs.cs_df0idhw);
1322         ui->IDC_CS_CD32CD->setChecked(workprefs.cs_cd32cd);
1323         ui->IDC_CS_CD32C2P->setChecked(workprefs.cs_cd32c2p);
1324         ui->IDC_CS_CD32NVRAM->setChecked(workprefs.cs_cd32nvram);
1325         ui->IDC_CS_CDTVCD->setChecked(workprefs.cs_cdtvcd);
1326         ui->IDC_CS_CDTVRAM->setChecked(workprefs.cs_cdtvram);
1327         ui->IDC_CS_CDTVRAMEXP->setChecked(workprefs.cs_cdtvcard);
1328         ui->IDC_CS_A1000RAM->setChecked(workprefs.cs_a1000ram);
1329         ui->IDC_CS_RAMSEY->setChecked(workprefs.cs_ramseyrev >= 0);
1330         ui->IDC_CS_FATGARY->setChecked(workprefs.cs_fatgaryrev >= 0);
1331         ui->IDC_CS_AGNUS->setChecked(workprefs.cs_agnusrev >= 0);
1332         ui->IDC_CS_DENISE->setChecked(workprefs.cs_deniserev >= 0);
1333         ui->IDC_CS_DMAC->setChecked(workprefs.cs_mbdmac == 1);
1334         ui->IDC_CS_DMAC2->setChecked(workprefs.cs_mbdmac == 2);
1335         ui->IDC_CS_A2091->setChecked(workprefs.cs_a2091);
1336         ui->IDC_CS_A4091->setChecked(workprefs.cs_a4091);
1337         ui->IDC_CS_CDTVSCSI->setChecked(workprefs.cs_cdtvscsi);
1338   //      ui->IDC_CS_SCSIMODE->setChecked(workprefs.scsi == 2);
1339         ui->IDC_CS_PCMCIA->setChecked(workprefs.cs_pcmcia);
1340         ui->IDC_CS_SLOWISFAST->setChecked(workprefs.cs_slowmemisfast);
1341         ui->IDC_CS_IDE1->setChecked(workprefs.cs_ide > 0 && (workprefs.cs_ide & 1));
1342         ui->IDC_CS_IDE2->setChecked(workprefs.cs_ide > 0 && (workprefs.cs_ide & 2));
1343         txt[0] = 0;
1344 
1345         printf (txt, "%d", workprefs.cs_rtc_adjust);
1346         ui->IDC_CS_RTCADJUST->setText(txt);
1347         txt[0] = 0;
1348         if (workprefs.cs_fatgaryrev >= 0)
1349                 printf (txt, "%02X", workprefs.cs_fatgaryrev);
1350         ui->IDC_CS_FATGARYREV->setText(txt);
1351         txt[0] = 0;
1352         if (workprefs.cs_ramseyrev >= 0)
1353                 printf (txt, "%02X", workprefs.cs_ramseyrev);
1354         ui->IDC_CS_RAMSEYREV->setText(txt);
1355         txt[0] = 0;
1356         if (workprefs.cs_agnusrev >= 0) {
1357                 rev = workprefs.cs_agnusrev;
1358                 printf (txt, "%02X", rev);
1359         } else if (workprefs.cs_compatible) {
1360                 rev = 0;
1361                 if (workprefs.ntscmode)
1362                         rev |= 0x10;
1363                 rev |= (workprefs.chipset_mask & CSMASK_AGA) ? 0x23 : 0;
1364                 rev |= (currprefs.chipset_mask & CSMASK_ECS_AGNUS) ? 0x20 : 0;
1365                 if (workprefs.chipmem_size > 1024 * 1024 && (workprefs.chipset_mask & CSMASK_ECS_AGNUS))
1366                         rev |= 0x21;
1367                 printf (txt, "%02X", rev);
1368         }
1369         ui->IDC_CS_AGNUSREV->setText(txt);
1370         txt[0] = 0;
1371         if (workprefs.cs_deniserev >= 0) {
1372                 rev = workprefs.cs_deniserev;
1373                 printf (txt, "%01.1X", rev);
1374         } else if (workprefs.cs_compatible) {
1375                 rev = 0xf;
1376                 if (workprefs.chipset_mask & CSMASK_ECS_DENISE)
1377                         rev = 0xc;
1378                 if (workprefs.chipset_mask & CSMASK_AGA)
1379                         rev = 0x8;
1380                 printf (txt, "%01.1X", rev);
1381         }
1382         ui->IDC_CS_DENISEREV->setText(txt);
1383 }
1384 
values_from_chipsetdlg2()1385 void puae_MainWindow::values_from_chipsetdlg2 ()
1386 {
1387         TCHAR txt[32], *p;
1388         int v;
1389 
1390         workprefs.cs_compatible = ui->IDC_CS_COMPATIBLE->isChecked();
1391         workprefs.cs_resetwarning = ui->IDC_CS_RESETWARNING->isChecked();
1392         workprefs.cs_denisenoehb = ui->IDC_CS_NOEHB->isChecked();
1393         workprefs.cs_dipagnus = ui->IDC_CS_DIPAGNUS->isChecked();
1394         workprefs.cs_agnusbltbusybug = workprefs.cs_dipagnus;
1395         workprefs.cs_ksmirror_e0 = ui->IDC_CS_KSMIRROR_E0->isChecked();
1396         workprefs.cs_ksmirror_a8 = ui->IDC_CS_KSMIRROR_A8->isChecked();
1397         workprefs.cs_ciaoverlay = ui->IDC_CS_CIAOVERLAY->isChecked();
1398         workprefs.cs_df0idhw = ui->IDC_CS_DF0IDHW->isChecked();
1399         workprefs.cs_cd32cd = ui->IDC_CS_CD32CD->isChecked();
1400         workprefs.cs_cd32c2p = ui->IDC_CS_CD32C2P->isChecked();
1401         workprefs.cs_cd32nvram = ui->IDC_CS_CD32NVRAM->isChecked();
1402         workprefs.cs_cdtvcd = ui->IDC_CS_CDTVCD->isChecked();
1403         workprefs.cs_cdtvram = ui->IDC_CS_CDTVRAM->isChecked();
1404         workprefs.cs_cdtvcard = ui->IDC_CS_CDTVRAMEXP->isChecked() ? 64 : 0;
1405         workprefs.cs_a1000ram = ui->IDC_CS_A1000RAM->isChecked();
1406         workprefs.cs_ramseyrev = ui->IDC_CS_RAMSEY->isChecked() ? 0x0f : -1;
1407         workprefs.cs_fatgaryrev = ui->IDC_CS_FATGARY->isChecked() ? 0x00 : -1;
1408         workprefs.cs_mbdmac = ui->IDC_CS_DMAC->isChecked() ? 1 : 0;
1409         if (workprefs.cs_mbdmac == 0)
1410                 workprefs.cs_mbdmac = ui->IDC_CS_DMAC2->isChecked() ? 2 : 0;
1411         workprefs.cs_a2091 = ui->IDC_CS_A2091->isChecked() ? 1 : 0;
1412         workprefs.cs_a4091 = ui->IDC_CS_A4091->isChecked() ? 1 : 0;
1413 
1414         workprefs.cs_cdtvscsi = ui->IDC_CS_CDTVSCSI->isChecked() ? 1 : 0;
1415         workprefs.cs_pcmcia = ui->IDC_CS_PCMCIA->isChecked() ? 1 : 0;
1416         workprefs.cs_slowmemisfast = ui->IDC_CS_SLOWISFAST->isChecked() ? 1 : 0;
1417         workprefs.cs_ide = ui->IDC_CS_IDE1->isChecked() ? 1 : (ui->IDC_CS_IDE2->isChecked() ? 2 : 0);
1418         workprefs.cs_ciaatod = ui->IDC_CS_CIAA_TOD1->isChecked() ? 0
1419                 : (ui->IDC_CS_CIAA_TOD2->isChecked() ? 1 : 2);
1420         workprefs.cs_rtc = ui->IDC_CS_RTC1->isChecked() ? 0
1421                 : (ui->IDC_CS_RTC2->isChecked() ? 1 : 2);
1422 
1423 /*        if (workprefs.cs_rtc) {
1424                 txt[0] = 0;
1425                 SendDlgItemMessage (hDlg, IDC_CS_RTCADJUST, WM_GETTEXT, (WPARAM)sizeof (txt) / sizeof (TCHAR), (LPARAM)txt);
1426                 workprefs.cs_rtc_adjust = _tstol(txt);
1427         }
1428         if (workprefs.cs_fatgaryrev >= 0) {
1429                 txt[0] = 0;
1430                 SendDlgItemMessage (hDlg, IDC_CS_FATGARYREV, WM_GETTEXT, (WPARAM)sizeof (txt) / sizeof (TCHAR), (LPARAM)txt);
1431                 v = _tcstol (txt, &p, 16);
1432                 if (v >= 0 && v <= 255)
1433                         workprefs.cs_fatgaryrev = v;
1434         }
1435         if (workprefs.cs_ramseyrev >= 0) {
1436                 txt[0] = 0;
1437                 SendDlgItemMessage (hDlg, IDC_CS_RAMSEYREV, WM_GETTEXT, (WPARAM)sizeof (txt) / sizeof (TCHAR), (LPARAM)txt);
1438                 v = _tcstol (txt, &p, 16);
1439                 if (v >= 0 && v <= 255)
1440                         workprefs.cs_ramseyrev = v;
1441         }
1442         if (workprefs.cs_agnusrev >= 0) {
1443                 txt[0] = 0;
1444                 SendDlgItemMessage (hDlg, IDC_CS_AGNUSREV, WM_GETTEXT, (WPARAM)sizeof (txt) / sizeof (TCHAR), (LPARAM)txt);
1445                 v = _tcstol (txt, &p, 16);
1446                 if (v >= 0 && v <= 255)
1447                         workprefs.cs_agnusrev = v;
1448         }
1449         if (workprefs.cs_deniserev >= 0) {
1450                 txt[0] = 0;
1451                 SendDlgItemMessage (hDlg, IDC_CS_DENISEREV, WM_GETTEXT, (WPARAM)sizeof (txt) / sizeof (TCHAR), (LPARAM)txt);
1452                 v = _tcstol (txt, &p, 16);
1453                 if (v >= 0 && v <= 15)
1454                         workprefs.cs_deniserev = v;
1455         }
1456 */
1457 
1458 }
1459 
enable_for_chipsetdlg2()1460 void puae_MainWindow::enable_for_chipsetdlg2 ()
1461 {
1462         int e = workprefs.cs_compatible ? false : true;
1463 
1464         ui->IDC_CS_FATGARY->setEnabled(e);
1465         ui->IDC_CS_RAMSEY->setEnabled(e);
1466         ui->IDC_CS_AGNUS->setEnabled(e);
1467         ui->IDC_CS_DENISE->setEnabled(e);
1468         ui->IDC_CS_FATGARYREV->setEnabled(e);
1469         ui->IDC_CS_RAMSEYREV->setEnabled(e);
1470         ui->IDC_CS_AGNUSREV->setEnabled(e);
1471         ui->IDC_CS_DENISEREV->setEnabled(e);
1472         ui->IDC_CS_IDE1->setEnabled(e);
1473         ui->IDC_CS_IDE2->setEnabled(e);
1474         ui->IDC_CS_DMAC->setEnabled(e);
1475         ui->IDC_CS_DMAC2->setEnabled(e);
1476         ui->IDC_CS_A2091->setEnabled(e);
1477         ui->IDC_CS_A4091->setEnabled(e);
1478 //        ShowWindow (GetDlgItem(hDlg, IDC_CS_SCSIMODE), SW_HIDE);
1479 //        ui->IDC_CS_SCSIMODE, false);
1480         ui->IDC_CS_CDTVSCSI->setEnabled(e);
1481         ui->IDC_CS_PCMCIA->setEnabled(e);
1482         ui->IDC_CS_SLOWISFAST->setEnabled(e);
1483         ui->IDC_CS_CD32CD->setEnabled(e);
1484         ui->IDC_CS_CD32NVRAM->setEnabled(e);
1485         ui->IDC_CS_CD32C2P->setEnabled(e);
1486         ui->IDC_CS_CDTVCD->setEnabled(e);
1487         ui->IDC_CS_CDTVRAM->setEnabled(e);
1488         ui->IDC_CS_CDTVRAMEXP->setEnabled(e);
1489         ui->IDC_CS_RESETWARNING->setEnabled(e);
1490         ui->IDC_CS_NOEHB->setEnabled(e);
1491         ui->IDC_CS_DIPAGNUS->setEnabled(e);
1492         ui->IDC_CS_KSMIRROR_E0->setEnabled(e);
1493         ui->IDC_CS_KSMIRROR_A8->setEnabled(e);
1494         ui->IDC_CS_CIAOVERLAY->setEnabled(e);
1495         ui->IDC_CS_A1000RAM->setEnabled(e);
1496         ui->IDC_CS_DF0IDHW->setEnabled(e);
1497         ui->IDC_CS_CIAA_TOD1->setEnabled(e);
1498         ui->IDC_CS_CIAA_TOD2->setEnabled(e);
1499         ui->IDC_CS_CIAA_TOD3->setEnabled(e);
1500         ui->IDC_CS_RTC1->setEnabled(e);
1501         ui->IDC_CS_RTC2->setEnabled(e);
1502         ui->IDC_CS_RTC3->setEnabled(e);
1503         ui->IDC_CS_RTCADJUST->setEnabled(e);
1504 
1505 }
1506 
enable_for_chipsetdlg()1507 void puae_MainWindow::enable_for_chipsetdlg ()
1508 {
1509         int enable = workprefs.cpu_cycle_exact ? false : true;
1510 
1511 #if !defined (CPUEMU_12)
1512         ui->IDC_CYCLEEXACT->setEnabled(false);
1513 #endif
1514 //        ui->IDC_FASTCOPPER->setEnabled(enable);
1515 //        ui->IDC_GENLOCK->setEnabled(full_property_sheet);
1516         ui->IDC_BLITIMM->setEnabled(enable);
1517         if (enable == false) {
1518                 workprefs.immediate_blits = 0;
1519 //		ui->IDC_FASTCOPPER->setEnabled(false);
1520 		ui->IDC_BLITIMM->setEnabled(false);
1521         }
1522         ui->IDC_CS_EXT->setEnabled(workprefs.cs_compatible ? true : false);
1523 }
1524 
enable_for_displaydlg()1525 void puae_MainWindow::enable_for_displaydlg ()
1526 {
1527         int rtg = ! workprefs.address_space_24;
1528 #ifndef PICASSO96
1529         rtg = false;
1530 #endif
1531         ui->IDC_SCREENMODE_RTG->setEnabled(rtg);
1532         ui->IDC_XCENTER->setEnabled(true);
1533         ui->IDC_YCENTER->setEnabled(true);
1534         ui->IDC_LM_SCANLINES->setEnabled(true);
1535         ui->IDC_FRAMERATE2->setEnabled(!workprefs.gfx_framerate);
1536         ui->IDC_FRAMERATE->setEnabled(!workprefs.cpu_cycle_exact);
1537         ui->IDC_LORES->setEnabled(!workprefs.gfx_autoresolution);
1538         ui->IDC_LM_NORMAL->setEnabled(!workprefs.gfx_autoresolution);
1539         ui->IDC_LM_DOUBLED->setEnabled(!workprefs.gfx_autoresolution);
1540         ui->IDC_LM_SCANLINES->setEnabled(!workprefs.gfx_autoresolution);
1541 }
1542 
enable_for_cpudlg()1543 void puae_MainWindow::enable_for_cpudlg ()
1544 {
1545         bool enable = false, jitenable = false;
1546         bool cpu_based_enable = false;
1547         bool fpu;
1548 
1549         /* These four items only get enabled when adjustable CPU style is enabled */
1550         ui->IDC_SPEED->setEnabled(workprefs.m68k_speed > 0);
1551         ui->IDC_COMPATIBLE24->setEnabled(workprefs.cpu_model == 68020);
1552         ui->IDC_CS_HOST->setEnabled(!workprefs.cpu_cycle_exact);
1553         ui->IDC_CS_68000->setEnabled(!workprefs.cpu_cycle_exact);
1554         ui->IDC_CS_ADJUSTABLE->setEnabled(!workprefs.cpu_cycle_exact);
1555         ui->IDC_CPUIDLE->setEnabled(workprefs.m68k_speed != 0 ? true : false);
1556 #if !defined(CPUEMU_0) || defined(CPUEMU_68000_ONLY)
1557         ui->IDC_CPU1->setEnabled(false);
1558         ui->IDC_CPU2->setEnabled(false);
1559         ui->IDC_CPU3->setEnabled(false);
1560         ui->IDC_CPU4->setEnabled(false);
1561         ui->IDC_CPU5->setEnabled(false);
1562 #endif
1563 
1564         cpu_based_enable = workprefs.cpu_model >= 68020 && workprefs.address_space_24 == 0;
1565 
1566         jitenable = cpu_based_enable;
1567 #ifndef JIT
1568         jitenable = false;
1569 #endif
1570         enable = jitenable && workprefs.cachesize;
1571 
1572         ui->IDC_TRUST0->setEnabled(enable);
1573         ui->IDC_TRUST1->setEnabled(enable);
1574         ui->IDC_HARDFLUSH->setEnabled(enable);
1575         ui->IDC_CONSTJUMP->setEnabled(enable);
1576         ui->IDC_JITFPU->setEnabled(enable);
1577         ui->IDC_NOFLAGS->setEnabled(enable);
1578 //        ui->IDC_CS_CACHE_TEXT->setEnabled(enable);
1579         ui->IDC_CACHE->setEnabled(enable);
1580         ui->IDC_JITENABLE->setEnabled(jitenable);
1581         ui->IDC_COMPATIBLE->setEnabled(!workprefs.cpu_cycle_exact && !workprefs.cachesize);
1582         ui->IDC_COMPATIBLE_FPU->setEnabled(workprefs.fpu_model > 0);
1583         ui->IDC_CPU_FREQUENCY->setEnabled(workprefs.cpu_cycle_exact);
1584         ui->IDC_CPU_FREQUENCY2->setEnabled(workprefs.cpu_cycle_exact && !workprefs.cpu_clock_multiplier);
1585 
1586         fpu = true;
1587         if (workprefs.cpu_model > 68030 || workprefs.cpu_compatible || workprefs.cpu_cycle_exact)
1588                 fpu = false;
1589         ui->IDC_FPU1->setEnabled(fpu);
1590         ui->IDC_FPU2->setEnabled(fpu);
1591         ui->IDC_FPU3->setEnabled(workprefs.cpu_model >= 68040);
1592         ui->IDC_MMUENABLE->setEnabled(workprefs.cpu_model == 68040 && workprefs.cachesize == 0);
1593 }
1594 
values_to_cpudlg()1595 void puae_MainWindow::values_to_cpudlg ()
1596 {
1597         TCHAR cache[8] = "";
1598         int cpu;
1599 
1600 //        ui->IDC_SPEED->setChecked( workprefs.m68k_speed <= 0 ? 1 : workprefs.m68k_speed / CYCLE_UNIT );
1601 //        ui->IDC_CPUTEXT->setChecked(workprefs.m68k_speed <= 0 ? 1 : workprefs.m68k_speed / CYCLE_UNIT);
1602         ui->IDC_COMPATIBLE->setChecked(workprefs.cpu_compatible);
1603         ui->IDC_COMPATIBLE24->setChecked(workprefs.address_space_24);
1604 #ifdef JIT
1605         ui->IDC_COMPATIBLE_FPU->setChecked(workprefs.fpu_strict);
1606 #endif
1607 //	ui->IDC_CPUIDLE->setPOS ( workprefs.cpu_idle == 0 ? 0 : 12 - workprefs.cpu_idle / 15);
1608         cpu = (workprefs.cpu_model - 68000) / 10;
1609 	printf("CPU: %d\n", cpu);
1610         if (cpu >= 5)
1611                 cpu--;
1612 	switch (cpu) {
1613 	case 0:
1614         	ui->IDC_CPU0->setChecked(true);
1615 		break;
1616 	case 1:
1617         	ui->IDC_CPU1->setChecked(true);
1618 		break;
1619 	case 2:
1620         	ui->IDC_CPU2->setChecked(true);
1621 		break;
1622 	case 3:
1623         	ui->IDC_CPU3->setChecked(true);
1624 		break;
1625 	case 4:
1626         	ui->IDC_CPU4->setChecked(true);
1627 		break;
1628 	case 5:
1629         	ui->IDC_CPU5->setChecked(true);
1630 		break;
1631 	}
1632 
1633 	switch (workprefs.fpu_model == 0 ? 0 : (workprefs.fpu_model == 68881 ? 1 : (workprefs.fpu_model == 68882 ? 2 : 3))) {
1634 	case 0:
1635         	ui->IDC_FPU0->setChecked(true);
1636 		break;
1637 	case 1:
1638         	ui->IDC_FPU1->setChecked(true);
1639 		break;
1640 	case 2:
1641         	ui->IDC_FPU2->setChecked(true);
1642 		break;
1643 	case 3:
1644         	ui->IDC_FPU3->setChecked(true);
1645 		break;
1646 	}
1647 
1648 /*        if (workprefs.m68k_speed == -1)
1649                 CheckRadioButton(hDlg, IDC_CS_HOST, IDC_CS_ADJUSTABLE, IDC_CS_HOST);
1650         else if (workprefs.m68k_speed == 0)
1651                 CheckRadioButton(hDlg, IDC_CS_HOST, IDC_CS_ADJUSTABLE, IDC_CS_68000);
1652         else
1653                 CheckRadioButton(hDlg, IDC_CS_HOST, IDC_CS_ADJUSTABLE, IDC_CS_ADJUSTABLE);
1654 */
1655 #ifdef JIT
1656 	switch (workprefs.comptrustbyte) {
1657 	case 0:
1658 		ui->IDC_TRUST0->setChecked(true);
1659 		break;
1660 	case 1:
1661 		ui->IDC_TRUST1->setChecked(true);
1662 		break;
1663 	}
1664 #endif
1665 //        SendDlgItemMessage (hDlg, IDC_CACHE, TBM_SETPOS, true, workprefs.cachesize / 1024);
1666         printf (cache, "%d MB", workprefs.cachesize / 1024 );
1667 //        ui->IDC_CACHETEXT->setText(cache);
1668 #ifdef JIT
1669         ui->IDC_NOFLAGS->setChecked(workprefs.compnf);
1670         ui->IDC_JITFPU->setChecked(workprefs.compfpu);
1671         ui->IDC_HARDFLUSH->setChecked(workprefs.comp_hardflush);
1672         ui->IDC_CONSTJUMP->setChecked(workprefs.comp_constjump);
1673 #endif
1674         ui->IDC_JITENABLE->setChecked(workprefs.cachesize > 0);
1675         ui->IDC_MMUENABLE->setChecked(workprefs.cpu_model == 68040 && workprefs.cachesize == 0 && workprefs.mmu_model == 68040);
1676 
1677         if (workprefs.cpu_cycle_exact) {
1678                 if (workprefs.cpu_clock_multiplier) {
1679                         TCHAR txt[20];
1680                         double f = getcpufreq (workprefs.cpu_clock_multiplier);
1681                         printf (txt, "%.6f", f / 1000000.0);
1682 			ui->IDC_CPU_FREQUENCY2->setText(txt);
1683                 }
1684         } else {
1685 		ui->IDC_CPU_FREQUENCY2->setText("");
1686         }
1687 }
1688 
values_from_cpudlg()1689 void puae_MainWindow::values_from_cpudlg ()
1690 {
1691         int newcpu, newfpu, newtrust, oldcache, jitena, idx;
1692         static int cachesize_prev, trust_prev;
1693 
1694         workprefs.cpu_compatible = workprefs.cpu_cycle_exact | (ui->IDC_COMPATIBLE->isChecked() ? 1 : 0);
1695 #ifdef JIT
1696         workprefs.fpu_strict = ui->IDC_COMPATIBLE_FPU->isChecked() ? 1 : 0;
1697 #endif
1698         workprefs.address_space_24 = ui->IDC_COMPATIBLE24->isChecked() ? 1 : 0;
1699         workprefs.m68k_speed = ui->IDC_CS_HOST->isChecked() ? -1
1700                 : ui->IDC_CS_68000->isChecked() ? 0
1701                 : ui->IDC_SPEED->value() * CYCLE_UNIT;
1702 
1703         workprefs.mmu_model = ui->IDC_MMUENABLE->isChecked() ? 68040 : 0;
1704 
1705         newcpu = ui->IDC_CPU0->isChecked() ? 68000
1706                 : ui->IDC_CPU1->isChecked() ? 68010
1707                 : ui->IDC_CPU2->isChecked() ? 68020
1708                 : ui->IDC_CPU3->isChecked() ? 68030
1709                 : ui->IDC_CPU4->isChecked() ? 68040
1710                 : ui->IDC_CPU5->isChecked() ? 68060 : 0;
1711         newfpu = ui->IDC_FPU0->isChecked() ? 0
1712                 : ui->IDC_FPU1->isChecked() ? 1
1713                 : ui->IDC_FPU2->isChecked() ? 2
1714                 : ui->IDC_FPU3->isChecked() ? 3 : 0;
1715 
1716         /* When switching away from 68000, disable 24 bit addressing.  */
1717         if (workprefs.cpu_model != newcpu && newcpu <= 68010)
1718                 newfpu = 0;
1719         workprefs.cpu_model = newcpu;
1720         switch (newcpu)
1721         {
1722         case 68000:
1723         case 68010:
1724                 workprefs.fpu_model = newfpu == 0 ? 0 : (newfpu == 2 ? 68882 : 68881);
1725                 if (workprefs.cpu_compatible || workprefs.cpu_cycle_exact)
1726                         workprefs.fpu_model = 0;
1727                 workprefs.address_space_24 = 1;
1728                 if (newcpu == 0 && workprefs.cpu_cycle_exact)
1729                         workprefs.m68k_speed = 0;
1730                 break;
1731         case 68020:
1732                 workprefs.fpu_model = newfpu == 0 ? 0 : (newfpu == 2 ? 68882 : 68881);
1733                 break;
1734         case 68030:
1735                 workprefs.address_space_24 = 0;
1736                 workprefs.fpu_model = newfpu == 0 ? 0 : (newfpu == 2 ? 68882 : 68881);
1737                 break;
1738         case 68040:
1739                 workprefs.fpu_model = newfpu ? 68040 : 0;
1740                 workprefs.address_space_24 = 0;
1741                 if (workprefs.fpu_model)
1742                         workprefs.fpu_model = 68040;
1743                 break;
1744         case 68060:
1745                 workprefs.fpu_model = newfpu ? 68060 : 0;
1746                 workprefs.address_space_24 = 0;
1747                 break;
1748         }
1749 
1750 #ifdef JIT
1751         newtrust = ui->IDC_TRUST0->isChecked() ? 0 : 1;
1752         workprefs.comptrustbyte = newtrust;
1753         workprefs.comptrustword = newtrust;
1754         workprefs.comptrustlong = newtrust;
1755         workprefs.comptrustnaddr= newtrust;
1756 
1757         workprefs.compnf            = ui->IDC_NOFLAGS->isChecked();
1758         workprefs.compfpu           = ui->IDC_JITFPU->isChecked();
1759         workprefs.comp_hardflush    = ui->IDC_HARDFLUSH->isChecked();
1760         workprefs.comp_constjump    = ui->IDC_CONSTJUMP->isChecked();
1761 
1762         oldcache = workprefs.cachesize;
1763         jitena = ui->IDC_JITENABLE->isChecked() ? 1 : 0;
1764 
1765         if (!jitena) {
1766                 cachesize_prev = workprefs.cachesize;
1767                 trust_prev = workprefs.comptrustbyte;
1768                 workprefs.cachesize = 0;
1769         } else if (jitena && !oldcache) {
1770                 workprefs.cachesize = 8192;
1771                 if (cachesize_prev) {
1772                         workprefs.cachesize = cachesize_prev;
1773                         workprefs.comptrustbyte = trust_prev;
1774                         workprefs.comptrustword = trust_prev;
1775                         workprefs.comptrustlong = trust_prev;
1776                         workprefs.comptrustnaddr = trust_prev;
1777                 }
1778         }
1779         if (oldcache == 0 && candirect && workprefs.cachesize > 0)
1780                 canbang = 1;
1781 #endif
1782         workprefs.cpu_idle = ui->IDC_CPUIDLE->value();
1783         if (workprefs.cpu_idle > 0)
1784                 workprefs.cpu_idle = (12 - workprefs.cpu_idle) * 15;
1785 
1786         if (workprefs.cachesize > 0)
1787                 workprefs.cpu_compatible = 0;
1788 
1789         idx = ui->IDC_CPU_FREQUENCY->currentIndex();
1790         if (idx != -1) {
1791                 int m = workprefs.cpu_clock_multiplier;
1792                 workprefs.cpu_frequency = 0;
1793                 workprefs.cpu_clock_multiplier = 0;
1794                 if (idx == 0)
1795                         workprefs.cpu_clock_multiplier = 2 << 8;
1796                 if (idx == 1)
1797                         workprefs.cpu_clock_multiplier = 4 << 8;
1798                 if (idx == 2)
1799                         workprefs.cpu_clock_multiplier = 8 << 8;
1800                 if (idx == 3) {
1801                         TCHAR txt[20];
1802                         ui->IDC_CPU_FREQUENCY2->text();
1803                         workprefs.cpu_clock_multiplier = 0;
1804                         workprefs.cpu_frequency = atof (txt) * 1000000.0;
1805                         if (workprefs.cpu_frequency < 1 * 1000000)
1806                                 workprefs.cpu_frequency = 0;
1807                         if (workprefs.cpu_frequency >= 99 * 1000000)
1808                                 workprefs.cpu_frequency = 0;
1809                 }
1810         }
1811 }
1812 
values_from_kickstartdlg()1813 void puae_MainWindow::values_from_kickstartdlg () {
1814 /*
1815   	getromfile (hDlg, IDC_ROMFILE, workprefs.romfile, sizeof (workprefs.romfile) / sizeof (TCHAR));
1816 	getromfile (hDlg, IDC_ROMFILE2, workprefs.romextfile, sizeof (workprefs.romextfile) / sizeof (TCHAR));
1817 	getromfile (hDlg, IDC_CARTFILE, workprefs.cartfile, sizeof (workprefs.cartfile) / sizeof (TCHAR));
1818 */
1819 }
1820 
values_to_kickstartdlg()1821 void puae_MainWindow::values_to_kickstartdlg () {
1822 /*
1823 	addromfiles (fkey, hDlg, IDC_ROMFILE, workprefs.romfile, ROMTYPE_KICK | ROMTYPE_KICKCD32);
1824 	addromfiles (fkey, hDlg, IDC_ROMFILE2, workprefs.romextfile, ROMTYPE_EXTCD32 | ROMTYPE_EXTCDTV | ROMTYPE_ARCADIABIOS);
1825 	addromfiles (fkey, hDlg, IDC_CARTFILE, workprefs.cartfile, ROMTYPE_AR | ROMTYPE_SUPERIV | ROMTYPE_NORDIC | ROMTYPE_XPOWER | ROMTYPE_ARCADIAGAME | ROMTYPE_HRTMON | ROMTYPE_CD32CART);
1826 */
1827 
1828 	ui->IDC_FLASHFILE->setText(workprefs.flashfile);
1829 	ui->IDC_KICKSHIFTER->setChecked(workprefs.kickshifter);
1830 	ui->IDC_MAPROM->setChecked(workprefs.maprom);
1831 }
1832 
values_from_displaydlg()1833 void puae_MainWindow::values_from_displaydlg () {
1834 	bool success = false;
1835 	int i, j;
1836 	int gfx_width = workprefs.gfx_size_win.width;
1837 	int gfx_height = workprefs.gfx_size_win.height;
1838 
1839 /*	display_fromselect (SendDlgItemMessage (hDlg, IDC_SCREENMODE_NATIVE, CB_GETCURSEL, 0, 0), &workprefs.gfx_afullscreen, &workprefs.gfx_avsync, 0);
1840 	display_fromselect (SendDlgItemMessage (hDlg, IDC_SCREENMODE_RTG, CB_GETCURSEL, 0, 0), &workprefs.gfx_pfullscreen, &workprefs.gfx_pvsync, 1);*/
1841 
1842 	workprefs.gfx_lores_mode     = ui->IDC_LORES_SMOOTHED->isChecked();
1843 	workprefs.gfx_scandoubler     = ui->IDC_FLICKERFIXER->isChecked();
1844 	workprefs.gfx_blackerthanblack = ui->IDC_BLACKER_THAN_BLACK->isChecked();
1845 	workprefs.gfx_vresolution = ui->IDC_LM_DOUBLED->isChecked() || ui->IDC_LM_SCANLINES->isChecked() ? VRES_DOUBLE : VRES_NONDOUBLE;
1846 	workprefs.gfx_scanlines = ui->IDC_LM_SCANLINES->isChecked();
1847 //	workprefs.gfx_backbuffers = SendDlgItemMessage (hDlg, IDC_DISPLAY_BUFFERCNT, CB_GETCURSEL, 0, 0);
1848 //	workprefs.gfx_framerate = SendDlgItemMessage (hDlg, IDC_FRAMERATE, TBM_GETPOS, 0, 0);
1849 //	workprefs.chipset_refreshrate = SendDlgItemMessage (hDlg, IDC_FRAMERATE2, TBM_GETPOS, 0, 0);
1850 }
1851 
values_to_displaydlg()1852 void puae_MainWindow::values_to_displaydlg () {
1853 }
1854 
enable_for_sounddlg()1855 void puae_MainWindow::enable_for_sounddlg () {
1856 	int numdevs;
1857 
1858 	numdevs = enumerate_sound_devices ();
1859 	if (numdevs == 0)
1860 		ui->IDC_SOUNDCARDLIST->setEnabled(false);
1861 	else
1862 		ui->IDC_SOUNDCARDLIST->setEnabled(workprefs.produce_sound);
1863 
1864 //	ui->IDC_FREQUENCY->setEnabled(workprefs.produce_sound);
1865 	ui->IDC_SOUNDFREQ->setEnabled(workprefs.produce_sound ? true : false);
1866 	ui->IDC_SOUNDSTEREO->setEnabled(workprefs.produce_sound);
1867 	ui->IDC_SOUNDINTERPOLATION->setEnabled(workprefs.produce_sound);
1868 	ui->IDC_SOUNDVOLUME->setEnabled(workprefs.produce_sound);
1869 	ui->IDC_SOUNDVOLUME2->setEnabled(workprefs.produce_sound);
1870 	ui->IDC_SOUNDSTEREOSEP->setEnabled(workprefs.sound_stereo > 0 && workprefs.produce_sound);
1871 	ui->IDC_SOUNDSTEREOMIX->setEnabled(workprefs.sound_stereo > 0 && workprefs.produce_sound);
1872 
1873 /*	ui->IDC_SOUNDBUFFERMEM->setEnabled(workprefs.produce_sound);
1874 	ui->IDC_SOUNDBUFFERRAM->setEnabled(workprefs.produce_sound);
1875 	ui->IDC_SOUNDADJUST->setEnabled(workprefs.produce_sound);
1876 	ui->IDC_SOUNDADJUSTNUM->setEnabled(workprefs.produce_sound);
1877 	ui->IDC_SOUNDBUFFERTEXT->setEnabled(workprefs.produce_sound);*/
1878 
1879 	ui->IDC_SOUNDDRIVE->setEnabled(workprefs.produce_sound);
1880 	ui->IDC_SOUNDDRIVESELECT->setEnabled(workprefs.produce_sound);
1881 	ui->IDC_SOUNDDRIVEVOLUME->setEnabled(workprefs.produce_sound);
1882 	ui->IDC_SOUNDDRIVEVOLUME2->setEnabled(workprefs.produce_sound);
1883 //	ui->IDC_AUDIOSYNC->setEnabled(workprefs.produce_sound);
1884 	ui->IDC_SOUNDFILTER->setEnabled(workprefs.produce_sound);
1885 	ui->IDC_SOUNDSWAP->setEnabled(workprefs.produce_sound);
1886 
1887 //	ui->IDC_SOUNDCALIBRATE->setEnabled(workprefs.produce_sound /*&& full_property_sheet*/);
1888 }
1889 
values_from_sounddlg()1890 void puae_MainWindow::values_from_sounddlg () {
1891 	TCHAR txt[10];
1892 	int soundcard, i;
1893 	int idx, res;
1894 
1895 	idx = ui->IDC_SOUNDFREQ->currentIndex();
1896 	if (idx >= 0) {
1897 		workprefs.sound_freq = idx;
1898 	} else {
1899 //		txt = ui->IDC_SOUNDFREQ->itemData(ui->IDC_SOUNDFREQ->currentIndex());
1900 //		workprefs.sound_freq = atol (txt);
1901 	}
1902 	if (workprefs.sound_freq < 8000)
1903 		workprefs.sound_freq = 8000;
1904 	if (workprefs.sound_freq > 96000)
1905 		workprefs.sound_freq = 96000;
1906 
1907 	//workprefs.produce_sound = ui->IDC_SOUND0->isChecked() ? 0 : (ui->IDC_SOUND1->isChecked() ? 1 : 3);
1908 	workprefs.sound_auto =  ui->IDC_SOUND_AUTO->isChecked();
1909 
1910 	idx = ui->IDC_SOUNDSTEREO->currentIndex();
1911 	if (idx)
1912 		workprefs.sound_stereo = idx;
1913 	workprefs.sound_stereo_separation = 0;
1914 	workprefs.sound_mixed_stereo_delay = 0;
1915 	if (workprefs.sound_stereo > 0) {
1916 		idx = ui->IDC_SOUNDSTEREOSEP->currentIndex();
1917 		if (idx) {
1918 			if (idx > 0)
1919 				workprefs.sound_mixed_stereo_delay = -1;
1920 			workprefs.sound_stereo_separation = 10 - idx;
1921 		}
1922 		idx = ui->IDC_SOUNDSTEREOMIX->currentIndex();
1923 		if (idx > 0)
1924 			workprefs.sound_mixed_stereo_delay = idx;
1925 	}
1926 
1927 	workprefs.sound_interpol = ui->IDC_SOUNDINTERPOLATION->currentIndex();
1928 	soundcard = ui->IDC_SOUNDCARDLIST->currentIndex();
1929 
1930 	switch (ui->IDC_SOUNDFILTER->currentIndex())
1931 	{
1932 	case 0:
1933 		workprefs.sound_filter = FILTER_SOUND_OFF;
1934 		break;
1935 	case 1:
1936 		workprefs.sound_filter = FILTER_SOUND_EMUL;
1937 		workprefs.sound_filter_type = 0;
1938 		break;
1939 	case 2:
1940 		workprefs.sound_filter = FILTER_SOUND_EMUL;
1941 		workprefs.sound_filter_type = 1;
1942 		break;
1943 	case 3:
1944 		workprefs.sound_filter = FILTER_SOUND_ON;
1945 		workprefs.sound_filter_type = 0;
1946 		break;
1947 	case 4:
1948 		workprefs.sound_filter = FILTER_SOUND_ON;
1949 		workprefs.sound_filter_type = 1;
1950 		break;
1951 	}
1952 
1953 	workprefs.sound_stereo_swap_paula = (ui->IDC_SOUNDSWAP->currentIndex() & 1) ? 1 : 0;
1954 	workprefs.sound_stereo_swap_ahi = (ui->IDC_SOUNDSWAP->currentIndex() & 2) ? 1 : 0;
1955 /*
1956 	for (i = 0; sounddrivers[i]; i++) {
1957 		int old = sounddrivermask;
1958 		sounddrivermask &= ~(1 << i);
1959 		if (ischecked (hDlg, sounddrivers[i]))
1960 			sounddrivermask |= 1 << i;
1961 		if (old != sounddrivermask)
1962 			regsetint (NULL, "SoundDriverMask", sounddrivermask);
1963 	}
1964 
1965 	idx = ui->IDC_SOUNDDRIVE->currentIndex();
1966 	if (idx != NULL && idx >= 0) {
1967 		res = ui->IDC_SOUNDDRIVESELECT->currentIndex();
1968 		if (res != NULL && res >= 0) {
1969 			int xtra = driveclick_pcdrivemask ? 2 : 0;
1970 			if (res > DS_BUILD_IN_SOUNDS + xtra) {
1971 				int j = res - (DS_BUILD_IN_SOUNDS + xtra + 1);
1972 				TCHAR *p = drivesounds;
1973 				while (j-- > 0)
1974 					p += _tcslen (p) + 1;
1975 				workprefs.floppyslots[idx].dfxclick = -1;
1976 				tcscpy (workprefs.floppyslots[idx].dfxclickexternal, p);
1977 			} else {
1978 				workprefs.floppyslots[idx].dfxclick = res;
1979 				workprefs.floppyslots[idx].dfxclickexternal[0] = 0;
1980 			}
1981 		}
1982 	}
1983 */
1984 }
1985 
values_to_sounddlg()1986 void puae_MainWindow::values_to_sounddlg () {
1987 	int which_button;
1988 	int sound_freq = workprefs.sound_freq;
1989 	int produce_sound = workprefs.produce_sound;
1990 	int stereo = workprefs.sound_stereo;
1991 	TCHAR txt[100], txt2[100], *p;
1992 	int i, selected;
1993 	int idx;
1994 
1995 	if (workprefs.sound_maxbsiz & (workprefs.sound_maxbsiz - 1))
1996 		workprefs.sound_maxbsiz = DEFAULT_SOUND_MAXB;
1997 
1998 	i = 0;
1999 	switch (workprefs.sound_filter)
2000 	{
2001 	case 0:
2002 		i = 0;
2003 		break;
2004 	case 1:
2005 		i = workprefs.sound_filter_type ? 2 : 1;
2006 		break;
2007 	case 2:
2008 		i = workprefs.sound_filter_type ? 4 : 3;
2009 		break;
2010 	}
2011 
2012 }
2013 
enable_for_expansiondlg()2014 void puae_MainWindow::enable_for_expansiondlg () {
2015 	int cw, en;
2016 
2017 	en = !!full_property_sheet;
2018 #ifdef CATWEASEL
2019 	cw = catweasel_detect ();
2020 #else
2021 	cw = 0;
2022 #endif
2023 	ui->IDC_CATWEASEL->setEnabled(cw && en);
2024 	//ui->IDC_SOCKETS->setEnabled(en);
2025 	ui->IDC_SCSIDEVICE->setEnabled(en);
2026 	//ui->IDC_CATWEASEL->setEnabled(en);
2027 	ui->IDC_NETDEVICE->setEnabled(en);
2028 	//ui->IDC_SANA2->setEnabled(en);
2029 	//ui->IDC_A2065->setEnabled(en);
2030 	ui->IDC_NETDEVICE->setEnabled(en && workprefs.a2065name[0]);
2031 }
2032 
values_to_expansiondlg()2033 void puae_MainWindow::values_to_expansiondlg () {
2034 	int cw;
2035 
2036 	ui->IDC_SOCKETS->setChecked(workprefs.socket_emu);
2037 	ui->IDC_CATWEASEL->setChecked(workprefs.catweasel);
2038 	ui->IDC_SCSIDEVICE->setChecked(workprefs.scsi == 1);
2039 	ui->IDC_SANA2->setChecked(workprefs.sana2);
2040 	ui->IDC_A2065->setChecked(workprefs.a2065name[0] ? 1 : 0);
2041 #ifdef CATWEASEL
2042 	cw = catweasel_detect ();
2043 #else
2044 	cw = 0;
2045 #endif
2046 	ui->IDC_CATWEASEL->setEnabled(cw);
2047 	if (!cw && workprefs.catweasel < 100)
2048 		workprefs.catweasel = 0;
2049 }
2050 
enable_for_miscdlg()2051 void puae_MainWindow::enable_for_miscdlg () {
2052 /*
2053 	if (!full_property_sheet) {
2054 		ui->IDC_JULIAN->setEnabled(true);
2055 		ui->IDC_CTRLF11->setEnabled(true);
2056 		ui->IDC_SHOWGUI->setEnabled(false);
2057 		ui->IDC_NOSPEED->setEnabled(true);
2058 		ui->IDC_NOSPEEDPAUSE->setEnabled(true);
2059 		ui->IDC_NOSOUND->setEnabled(true);
2060 		ui->IDC_DOSAVESTATE->setEnabled(true);
2061 		ui->IDC_SCSIMODE->setEnabled(false);
2062 		ui->IDC_CLOCKSYNC->setEnabled(false);
2063 		ui->IDC_CLIPBOARDSHARE->setEnabled(false);
2064 	} else {
2065 #if !defined (SCSIEMU)
2066 		EnableWindow (GetDlgItem(hDlg, IDC_SCSIMODE, true);
2067 #endif
2068 		ui->IDC_DOSAVESTATE->setEnabled(false);
2069 	}
2070 	ui->IDC_ASSOCIATELIST->setEnabled(!rp_isactive ());
2071 	ui->IDC_ASSOCIATE_ON->setEnabled(!rp_isactive ());
2072 	ui->IDC_ASSOCIATE_OFF->setEnabled(!rp_isactive ());
2073 	ui->IDC_DD_SURFACETYPE->setEnabled(full_property_sheet && workprefs.gfx_api == 0);
2074 */
2075 	; //
2076 }
2077 
values_to_miscdlg()2078 void puae_MainWindow::values_to_miscdlg () {
2079 #define STATUSLINE_CHIPSET 1
2080 #define STATUSLINE_RTG 2
2081 #define STATUSLINE_TARGET 0x80
2082 /*                ui->IDC_ILLEGAL->setEnabled(workprefs.illegal_mem);
2083                 ui->IDC_SHOWGUI->setEnabled(workprefs.start_gui);
2084                 ui->IDC_SHOWLEDS->setEnabled((workprefs.leds_on_screen & STATUSLINE_CHIPSET) ? 1 : 0);
2085                 ui->IDC_SHOWLEDSRTG->setEnabled((workprefs.leds_on_screen & STATUSLINE_RTG) ? 1 : 0);
2086                 ui->IDC_CLOCKSYNC->setEnabled(workprefs.tod_hack);
2087                 ui->IDC_CLIPBOARDSHARE->setEnabled(workprefs.clipboard_sharing);
2088                 ui->IDC_FASTERRTG->setEnabled(workprefs.picasso96_nocustom);
2089 */
2090 }
2091 
enable_for_gameportsdlg()2092 void puae_MainWindow::enable_for_gameportsdlg () {
2093 /*
2094 	int v = full_property_sheet;
2095 	ui->IDC_PORT_TABLET_FULL->setEnabled(false);
2096 	ui->IDC_PORT_TABLET_CURSOR->setEnabled(v && workprefs.input_tablet > 0);
2097 	ui->IDC_PORT_TABLET->setEnabled(v);
2098 */
2099 }
2100 
values_from_gameportsdlg()2101 void puae_MainWindow::values_from_gameportsdlg () {
2102 }
2103 
enable_for_inputdlg()2104 void puae_MainWindow::enable_for_inputdlg () {
2105 /*
2106 	bool v = workprefs.input_selected_setting != GAMEPORT_INPUT_SETTINGS;
2107 	ui->IDC_INPUTLIST->setEnabled(true);
2108 	ui->IDC_INPUTAMIGA->setEnabled(v);
2109 	ui->IDC_INPUTAMIGACNT->setEnabled(true);
2110 	ui->IDC_INPUTDEADZONE->setEnabled(true);
2111 	ui->IDC_INPUTAUTOFIRERATE->setEnabled(true);
2112 	ui->IDC_INPUTSPEEDA->setEnabled(true);
2113 	ui->IDC_INPUTSPEEDD->setEnabled(true);
2114 	ui->IDC_INPUTCOPY->setEnabled(v);
2115 	ui->IDC_INPUTCOPYFROM->setEnabled(v);
2116 	ui->IDC_INPUTSWAP->setEnabled(v);
2117 	ui->IDC_INPUTDEVICEDISABLE->setEnabled(v);
2118 	ui->IDC_INPUTREMAP->setEnabled(v);
2119 */
2120 }
2121 
values_from_inputdlg()2122 void puae_MainWindow::values_from_inputdlg () {
2123 }
2124 
2125 static int input_selected_device, input_selected_widget, input_total_devices;
2126 static int input_selected_event, input_selected_sub_num;
2127 
2128 
values_to_inputdlg()2129 void puae_MainWindow::values_to_inputdlg () {
2130 	ui->IDC_INPUTTYPE->setCurrentIndex(workprefs.input_selected_setting);
2131 	ui->IDC_INPUTDEVICE->setCurrentIndex(input_selected_device);
2132 //        ui->IDC_INPUTDEADZONE->setText(workprefs.input_joystick_deadzone);
2133 //        ui->IDC_INPUTAUTOFIRERATE->setText(workprefs.input_autofire_linecnt);
2134 //        ui->IDC_INPUTSPEEDD->setText(workprefs.input_joymouse_speed);
2135 //        ui->IDC_INPUTSPEEDA->setText(workprefs.input_joymouse_multiplier);
2136 //	ui->IDC_INPUTDEVICEDISABLE->setEnabled(!input_total_devices || inputdevice_get_device_status (input_selected_device)) ? BST_CHECKED : BST_UNCHECKED);
2137 }
2138 
init_portsdlg()2139 void puae_MainWindow::init_portsdlg () {
2140 }
2141 
enable_for_portsdlg()2142 void puae_MainWindow::enable_for_portsdlg () {
2143 	int v;
2144 	int isprinter, issampler;
2145 
2146 	ui->IDC_SWAP->setEnabled(true);
2147 #if !defined (SERIAL_PORT)
2148 /*
2149 	ui->IDC_MIDIOUTLIST->setEnabled(false);
2150 	ui->IDC_MIDIINLIST->setEnabled(false);
2151 	ui->IDC_SHARED->setEnabled(false);
2152 	ui->IDC_SER_CTSRTS->setEnabled(false);
2153 	ui->IDC_SERIAL_DIRECT->setEnabled(false);
2154 	ui->IDC_SERIAL->setEnabled(false);
2155 	ui->IDC_UAESERIAL->setEnabled(false);
2156 */
2157 #else
2158 	v = workprefs.use_serial ? true : false;
2159 	ui->IDC_SER_SHARED->setEnabled(v);
2160 	ui->IDC_SER_CTSRTS->setEnabled(v);
2161 	ui->IDC_SER_DIRECT->setEnabled(v);
2162 	ui->IDC_UAESERIAL->setEnabled(full_property_sheet);
2163 #endif
2164 	isprinter = true;
2165 	issampler = true;
2166 #if !defined (PARALLEL_PORT)
2167 	isprinter = false;
2168 	issampler = false;
2169 #endif
2170 /*	if (workprefs.prtname[0]) {
2171 		issampler = false;
2172 	}
2173 	ui->IDC_PRINTERLIST->setEnabled (isprinter);
2174 	ui->IDC_SAMPLERLIST->setEnabled (issampler);
2175 	ui->IDC_PRINTERAUTOFLUSH->setEnabled (isprinter);
2176 	ui->IDC_PRINTERTYPELIST->setEnabled (isprinter);
2177 	ui->IDC_FLUSHPRINTER->setEnabled (isprinteropen () && isprinter ? true : false);
2178 	ui->IDC_PSPRINTER->setEnabled (full_property_sheet && ghostscript_available && isprinter ? true : false);
2179 	ui->IDC_PSPRINTERDETECT->setEnabled (full_property_sheet && isprinter ? true : false);
2180 	ui->IDC_PS_PARAMS->setEnabled (full_property_sheet && ghostscript_available && isprinter);
2181 */
2182 }
2183 
values_from_portsdlg()2184 void puae_MainWindow::values_from_portsdlg () {
2185 }
2186 
values_to_portsdlg()2187 void puae_MainWindow::values_to_portsdlg () {
2188 }
2189 
2190