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