[UI][Qt] Update menu for DISK.
config.roma_kana_conversion = false;
config.rendering_type = CONFIG_RENDER_TYPE_STD;
config.virtual_media_position = 2; // Down.
+ for(int drv = 0; drv < 16; drv++) {
+ config.disk_count_immediate[drv] = false;
+ }
#endif
}
for(int drv = 0; drv < MAX_FD; drv++) {
config.correct_disk_timing[drv] = MyGetPrivateProfileBool(_T("Control"), create_string(_T("CorrectDiskTiming%d"), drv + 1), config.correct_disk_timing[drv], config_path);
config.ignore_disk_crc[drv] = MyGetPrivateProfileBool(_T("Control"), create_string(_T("IgnoreDiskCRC%d"), drv + 1), config.ignore_disk_crc[drv], config_path);
+ #ifdef _USE_QT
+ config.disk_count_immediate[drv] = MyGetPrivateProfileBool(_T("Control"), create_string(_T("DiskIncrementImmediate%d"), drv + 1), config.disk_count_immediate[drv], config_path);
+ #endif
}
#endif
#ifdef USE_TAPE1
for(int drv = 0; drv < MAX_FD; drv++) {
MyWritePrivateProfileBool(_T("Control"), create_string(_T("CorrectDiskTiming%d"), drv + 1), config.correct_disk_timing[drv], config_path);
MyWritePrivateProfileBool(_T("Control"), create_string(_T("IgnoreDiskCRC%d"), drv + 1), config.ignore_disk_crc[drv], config_path);
+ #ifdef _USE_QT
+ MyWritePrivateProfileBool(_T("Control"), create_string(_T("DiskIncrementImmediate%d"), drv + 1), config.disk_count_immediate[drv], config_path);
+ #endif
}
#endif
#ifdef USE_TAPE1
bool use_opengl_filters;
bool focus_with_click;
int opengl_filter_num;
-
+
+
bool swap_kanji_pause;
/*
* TYPE :
int render_platform;
int render_major_version;
int render_minor_version;
+ bool disk_count_immediate[16]; // Hack for MB8877, FLEX for FM-7.
#endif
// sound
message("* qt/osd")
-SET(THIS_LIB_VERSION 2.9.14)
+SET(THIS_LIB_VERSION 2.9.15)
set(s_qt_osd_headers
osd_base.h
message("* qt/avio")
-SET(THIS_LIB_VERSION 2.6.12)
+SET(THIS_LIB_VERSION 2.6.13)
set(s_qt_avio_headers
movie_saver.h
movie_loader.h
../../fileio.cpp
)
-SET(THIS_LIB_VERSION 2.6.3)
+SET(THIS_LIB_VERSION 2.6.4)
if(WIN32)
include (GenerateExportHeader)
message("* qt/gui")
-set(THIS_LIB_VERSION 2.10.7)
+set(THIS_LIB_VERSION 2.10.8)
set(s_qt_gui_headers
csp_logger.h
void no_write_protect_fd(void);
void do_set_ignore_crc_error(bool flag);
void do_set_correct_disk_timing(bool flag);
+ void do_set_disk_count_immediate(bool flag);
// Bubble
void insert_bubble(void);
void eject_bubble(void);
void Menu_FDClass::create_pulldown_menu_device_sub(void)
{
+ config_t *p;
action_ignore_crc_error = new Action_Control(p_wid, using_flags);
action_ignore_crc_error->setVisible(true);
action_ignore_crc_error->setCheckable(true);
- connect(action_ignore_crc_error->binds, SIGNAL(sig_emu_update_config()),
- p_wid, SLOT(do_emu_update_config()));
action_correct_timing = new Action_Control(p_wid, using_flags);
action_correct_timing->setVisible(true);
action_correct_timing->setCheckable(true);
- connect(action_correct_timing->binds, SIGNAL(sig_emu_update_config()),
- p_wid, SLOT(do_emu_update_config()));
+
+ action_count_immediate = new Action_Control(p_wid, using_flags);
+ action_count_immediate->setVisible(true);
+ action_count_immediate->setCheckable(true);
+ p = using_flags->get_config_ptr();
+ if(p != NULL) {
+ if(p->correct_disk_timing[media_drive]) action_correct_timing->setChecked(true);
+ if(p->ignore_disk_crc[media_drive]) action_ignore_crc_error->setChecked(true);
+ if(p->disk_count_immediate[media_drive]) action_count_immediate->setChecked(true);
+ }
}
this->addSeparator();
this->addAction(action_ignore_crc_error);
this->addAction(action_correct_timing);
+ this->addAction(action_count_immediate);
connect(action_ignore_crc_error, SIGNAL(toggled(bool)),
action_ignore_crc_error->binds, SLOT(do_set_ignore_crc_error(bool)));
connect(action_correct_timing, SIGNAL(toggled(bool)),
action_correct_timing->binds, SLOT(do_set_correct_disk_timing(bool)));
+
+ connect(action_count_immediate, SIGNAL(toggled(bool)),
+ action_count_immediate->binds, SLOT(do_set_disk_count_immediate(bool)));
connect(this, SIGNAL(sig_open_media(int, QString)), p_wid, SLOT(_open_disk(int, QString)));
connect(this, SIGNAL(sig_eject_media(int)), p_wid, SLOT(eject_fd(int)));
action_ignore_crc_error->setToolTip(QApplication::translate("MainWindow", "Ignore CRC error of virtual floppy.\nUseful for some softwares,\n but causes wrong working with some softwares.", 0));
action_correct_timing->setText(QApplication::translate("MainWindow", "Correct transfer timing", 0));
action_correct_timing->setToolTip(QApplication::translate("MainWindow", "Correct transferring timing.\nUseful for some softwares\n needs strict transfer timing.", 0));
+
+ action_count_immediate->setText(QApplication::translate("MainWindow", "Immediate increment", 0));
+ action_count_immediate->setToolTip(QApplication::translate("MainWindow", "Increment data pointer immediately.\nThis is test hack for MB8877.\nUseful for some softwares\n needs strict transfer timing.", 0));
}
protected:
class Action_Control *action_ignore_crc_error;
class Action_Control *action_correct_timing;
+ class Action_Control *action_count_immediate;
QIcon icon_floppy;
public:
Menu_FDClass(QMenuBar *root_entry, QString desc, USING_FLAGS *p, QWidget *parent = 0, int drv = 0);
emit sig_emu_update_config();
}
+void Object_Menu_Control::do_set_disk_count_immediate(bool flag)
+{
+ using_flags->get_config_ptr()->disk_count_immediate[drive] = flag;
+ emit sig_emu_update_config();
+}
+
int Ui_MainWindowBase::write_protect_fd(int drv, bool flag)
{
if((drv < 0) || (drv >= using_flags->get_max_drive())) return -1;
cmdtype = 0;
set_irq(true);
}
- if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
//fdc[drvreg].index++;
}
if((fdc[drvreg].index + 1) >= disk[drvreg]->sector_size.sd) {
} else {
register_drq_event(1);
}
+ if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
}
status &= ~FDC_ST_DRQ;
} else if(cmdtype == FDC_CMD_WR_TRK) {
cmdtype = 0;
set_irq(true);
}
- if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
//fdc[drvreg].index++;
}
if((fdc[drvreg].index + 1) >= disk[drvreg]->get_track_size()) {
} else {
register_drq_event(1);
}
+ if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
}
status &= ~FDC_ST_DRQ;
}
// read or multisector read
if(fdc[drvreg].index < disk[drvreg]->sector_size.sd) {
datareg = disk[drvreg]->sector[fdc[drvreg].index];
- if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
}
if((fdc[drvreg].index + 1) >= disk[drvreg]->sector_size.sd) { // Reading complete this sector.
}
} else { // Still data remain.
register_drq_event(1);
+ if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
}
status &= ~FDC_ST_DRQ;
} else if(cmdtype == FDC_CMD_RD_ADDR) {
// read address
if(fdc[drvreg].index < 6) {
datareg = disk[drvreg]->id[fdc[drvreg].index];
- if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
//fdc[drvreg].index++;
}
if((fdc[drvreg].index + 1) >= 6) {
//#endif
} else {
register_drq_event(1);
+ if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
}
status &= ~FDC_ST_DRQ;
} else if(cmdtype == FDC_CMD_RD_TRK) {
// read track
if(fdc[drvreg].index < disk[drvreg]->get_track_size()) {
datareg = disk[drvreg]->track[fdc[drvreg].index];
- if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
//fdc[drvreg].index++;
}
if((fdc[drvreg].index + 1) >= disk[drvreg]->get_track_size()) {
set_irq(true);
} else {
register_drq_event(1);
+ if(fdc[drvreg].count_immediate) fdc[drvreg].index++;
}
status &= ~FDC_ST_DRQ;
}
{
if(drv < _max_drive) {
disk[drv]->open(file_path, bank);
-#if 0
+#if defined(_USE_QT)
+ if((disk[drv]->is_special_disk == SPECIAL_DISK_FM7_FLEX) || (config.disk_count_immediate[drv])) {
+#else
if(disk[drv]->is_special_disk == SPECIAL_DISK_FM7_FLEX) {
+#endif
fdc[drv].count_immediate = true;
} else {
fdc[drv].count_immediate = false;
}
-#else /* TEST for FLEX */
- fdc[drv].count_immediate = true;
-#endif
}
}