OSDN Git Service

[General][Qt][CONFIG][Win32][WIP] Fixing break memories with MinGW32.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 11 Nov 2015 21:47:07 +0000 (06:47 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 11 Nov 2015 21:47:07 +0000 (06:47 +0900)
15 files changed:
source/build-cmake/config_build_cross_win32.sh
source/src/config.cpp
source/src/config.h
source/src/emu.h
source/src/qt/common/qt_main.cpp
source/src/qt/common/qt_main.h
source/src/qt/debugger/qt_debugger.cpp
source/src/qt/gui/mainwidget.h
source/src/qt/gui/menu_cmt.cpp
source/src/qt/gui/menu_metaclass.cpp
source/src/qt/gui/menu_metaclass.h
source/src/qt/gui/util_cmt.cpp
source/src/qt/gui/util_fd.cpp
source/src/vm/ym2151.h
source/src/vm/ym2203.h

index 8fc9fb3..2dabe52 100755 (executable)
@@ -5,7 +5,8 @@ TOOLCHAIN_SCRIPT="../../cmake/toolchain_mingw_cross_linux.cmake"
 
 #MAKEFLAGS_CXX="-g -O2 -DNDEBUG"
 #MAKEFLAGS_CC="-g -O2 -DNDEBUG"
-BUILD_TYPE="Relwithdebinfo"
+#BUILD_TYPE="Relwithdebinfo"
+BUILD_TYPE="Release"
 CMAKE_APPENDFLAG=""
 export WINEDEBUG="-all"
 
@@ -14,14 +15,15 @@ mkdir -p ./bin-win32/
 #if [ -e ./buildvars.dat ] ; then
 #    . ./buildvars.dat
 #fi
-#MAKEFLAGS_CXX="-g -O3 -ftree-vectorize -flto -DNDEBUG" 
-#MAKEFLAGS_CC="-g -O3 -ftree-vectorize  -flto -DNDEBUG"
+MAKEFLAGS_CXX="-O3 -DNDEBUG" 
+MAKEFLAGS_CC="-O3 -DNDEBUG"
+
 # To use MOC, please enable wine as interpreter of EXEs , below:
 # $ sudo update-binfmts --install Win32_Wine /usr/bin/wine --extension exe . 
 MAKEFLAGS_GENERAL="-j4"
 
-#CMAKE_LINKFLAG="-DCMAKE_EXE_LINKER_FLAGS='${CMAKE_EXE_LINKER_FLAGS} -flto -O3 -ftree-vectorize -g'"
-#CMAKE_LINKFLAG=""
+#CMAKE_LINKFLAG="-DCMAKE_EXE_LINKER_FLAGS='${CMAKE_EXE_LINKER_FLAGS}"
+CMAKE_LINKFLAG=""
 #CMAKE_APPENDFLAG="-DCMAKE_AR=/usr/bin/gcc-ar -DCMAKE_NM=/usr/bin/gcc-nm -DCMAKE_RANLIB=/usr/bin/gcc-ranlib"
 
 case ${BUILD_TYPE} in
@@ -56,7 +58,7 @@ for SRCDATA in $@ ; do\
             ${CMAKE_FLAGS1} \
             "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
             "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
-            "-D USE_SDL2=OFF" \
+            "-D USE_SDL2=ON" \
             ${CMAKE_APPENDFLAG} \
             ${CMAKE_LINKFLAG} \
             .. | tee make.log
@@ -64,7 +66,7 @@ for SRCDATA in $@ ; do\
     ${CMAKE} ${CMAKE_FLAGS1} \
             "${CMAKE_FLAGS2}=${MAKEFLAGS_CXX}" \
             "${CMAKE_FLAGS3}=${MAKEFLAGS_CC}" \
-            "-D USE_SDL2=OFF" \
+            "-D USE_SDL2=ON" \
             ${CMAKE_APPENDFLAG} \
             ${CMAKE_LINKFLAG} \
             .. | tee -a make.log
@@ -73,7 +75,7 @@ for SRCDATA in $@ ; do\
     
     make ${MAKEFLAGS_GENERAL} 2>&1 | tee -a ./make.log
     case $? in
-      0 ) sudo cp ./qt/common/*.exe ../../bin-win32/ ;;
+      0 ) cp ./qt/common/*.exe ../../bin-win32/ ;;
       * ) exit $? ;;
     esac
     
index 7a16c0f..2259cdb 100644 (file)
@@ -15,8 +15,7 @@
 #include "agar_logger.h"
 #endif
 
-#ifdef _USE_QT
-//# include <SDL/SDL.h>
+#if defined(_USE_QT)
 #include <string>
 #include <vector>
 #include "fileio.h"
@@ -26,6 +25,7 @@
 #include <windows.h>
 #endif
 
+
 #include <stdlib.h>
 #include <stdio.h>
 #include "common.h"
@@ -41,7 +41,7 @@ config_t config;
 #define CONFIG_NAME "conf"
 #endif
 
-#if defined(_USE_AGAR) || defined(_USE_QT)
+#if defined(_USE_QT)
 bool WritePrivateProfileString(char *lpAppName, char *lpKeyName, char *Value, FILEIO *lpFileName)
 {
    std::string s;
@@ -86,7 +86,7 @@ std::string GetPrivateProfileStr(char *lpAppName, char *lpKeyName, FILEIO *lpFil
 {
    std::string key;
    char ibuf[4096 + 102];
-   uint64_t i;
+   int64_t i;
    int l_len;
    int c = '\0';
    std::string::size_type  pos;
@@ -140,7 +140,7 @@ void GetPrivateProfileString(char *section, char *key, char *defaultstr, char *s
    } else {
        strncpy(str, defaultstr, max_len);
    }
-   printf("Got: %s\n", str);
+   AGAR_DebugLog(AGAR_LOG_DEBUG, "Got: %s\n", str);
  
 }
 
@@ -154,7 +154,7 @@ int GetPrivateProfileInt(char *lpAppName, char *lpKeyName, int nDefault, FILEIO
    } else {
       i = strtol(s.c_str(), NULL, 10);
    }
-   printf("Got: %d\n", i);
+   AGAR_DebugLog(AGAR_LOG_DEBUG, "Got: %d\n", i);
    return i;
 }
 
@@ -241,7 +241,6 @@ void init_config()
        for(int drv = 0; drv < MAX_FD; drv++) {
                config.ignore_disk_crc[drv] = false;
        }
-//     for(i = 0; i <8; i++) config.fdd_hack_fast_transfer[i] = false;
 #endif 
 #if defined(USE_SOUND_DEVICE_TYPE) && defined(SOUND_DEVICE_TYPE_DEFAULT)
        config.sound_device_type = SOUND_DEVICE_TYPE_DEFAULT;
@@ -381,6 +380,7 @@ void load_config()
                }
        }
 #endif
+
 #ifdef USE_TAPE
        GetPrivateProfileString(_T("RecentFiles"), _T("InitialTapeDir"), _T(""), config.initial_tape_dir, _MAX_PATH, config_path);
        for(i = 0; i < MAX_HISTORY; i++) {
@@ -389,6 +389,7 @@ void load_config()
                GetPrivateProfileString(_T("RecentFiles"), name, _T(""), config.recent_tape_path[i], _MAX_PATH, config_path);
        }
 #endif
+
 #ifdef USE_LASER_DISC
        GetPrivateProfileString(_T("RecentFiles"), _T("InitialLaserDiscDir"), _T(""), config.initial_laser_disc_dir, _MAX_PATH, config_path);
        for(int i = 0; i < MAX_HISTORY; i++) {
@@ -450,8 +451,9 @@ void load_config()
 #ifdef USE_SOUND_DEVICE_TYPE
        config.sound_device_type = GetPrivateProfileInt(_T("Sound"), _T("DeviceType"), config.sound_device_type, config_path);
 #endif
+#if !defined(_USE_QT)
        GetPrivateProfileString(_T("Sound"), _T("FMGenDll"), _T("mamefm.dll"), config.fmgen_dll_path, _MAX_PATH, config_path);
-       
+#endif 
        // input
        config.multiple_speakers = GetPrivateProfileBool(_T("Sound"), _T("MultipleSpeakers"),
                                                                                                         config.multiple_speakers, config_path);
@@ -642,6 +644,9 @@ void save_config()
 #ifdef USE_SOUND_DEVICE_TYPE
        WritePrivateProfileInt(_T("Sound"), _T("DeviceType"), config.sound_device_type, config_path);
 #endif
+#if !defined(_USE_QT)
+       WritePrivateProfileString(_T("Sound"), _T("FMGenDll"), config.fmgen_dll_path, config_path);
+#endif 
        WritePrivateProfileBool(_T("Sound"), _T("MultipleSpeakers"),
                                                        config.multiple_speakers, config_path);
        WritePrivateProfileInt(_T("Sound"), _T("GeneralSoundLevel"),
index 17ae458..3aa0664 100644 (file)
 #ifndef _CONFIG_H_
 #define _CONFIG_H_
 
-# if defined(_USE_AGAR) || defined(_USE_SDL)
-#include <sys/param.h>
-#include <agar/core.h>
-#ifndef _MAX_PATH
- #define _MAX_PATH AG_PATHNAME_MAX
-#endif
-# elif defined(_USE_QT)
+#if defined(_USE_QT)
 #include <sys/param.h>
 #include <QtCore/QFile>
 #include <QtCore/QFileInfo>
index 55125fd..89e7395 100644 (file)
 //     #define _IO_DEBUG_LOG
 #endif
 
-#if defined(_USE_AGAR)
-# include <SDL/SDL.h>
-# include <agar/core.h>
-# include <agar/gui.h>
-# include "simd_types.h"
-// Wrapper of WIN32->*nix
-
-#ifndef _MAX_PATH
- #define _MAX_PATH AG_PATHNAME_MAX
-#endif
-
-#elif defined(_USE_QT)
+#if defined(_USE_QT)
 # include <SDL.h>
 //# include "menuclasses.h"
 //# include "mainwidget.h"
 # include "simd_types.h"
 // Wrapper of WIN32->*nix
 
-#ifndef _MAX_PATH
- #ifdef MAX_PATH
-   #define _MAX_PATH MAX_PATH
- #else
-   #define MAX_PATH 2048
-   #define _MAX_PATH 2048
- #endif
-#endif
 
 #else // _USE_WIN32
 
index 641befd..384e000 100644 (file)
@@ -780,6 +780,6 @@ int main(int argc, char *argv[])
 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
 {
    char *arg[1] = {""};
-   main(1, arg);
+   main(0, arg);
 }
 #endif
index e6f1278..0356177 100644 (file)
@@ -43,7 +43,7 @@ extern const int screen_mode_height[];
 #endif
 
 #ifndef UPDATE_HISTORY
-#define UPDATE_HISTORY(path, recent) { \
+#define UPDATE_HISTORY(path, recent, list) { \
        int no = MAX_HISTORY - 1; \
        for(int i = 0; i < MAX_HISTORY; i++) { \
                if(strcmp(recent[i], path) == 0) { \
@@ -55,6 +55,21 @@ extern const int screen_mode_height[];
                strcpy(recent[i], recent[i - 1]); \
        } \
        strcpy(recent[0], path); \
+       list.clear(); \
+       for(int i = 0; i < MAX_HISTORY; i++) { \
+               QString _tmps = QString::fromUtf8(recent[i]); \
+               list << _tmps; \
+       } \
+}
+#endif
+
+#ifndef SETUP_HISTORY
+#define SETUP_HISTORY(recent, list) { \
+       list.clear(); \
+       for(int i = 0; i < MAX_HISTORY; i++) { \
+               QString _tmps = QString::fromUtf8(recent[i]); \
+               list << _tmps; \
+       } \
 }
 #endif
 
index 6490966..b4bd925 100644 (file)
@@ -10,7 +10,7 @@
 #include <stdio.h>
 #include <string.h>
 
-#include <unistd.h>
+//#include <unistd.h>
 #include <fcntl.h>
 #include <QObject>
 #include <QMetaObject>
index 5ee2ef3..71f7faf 100644 (file)
@@ -22,6 +22,7 @@
 #include <QIcon>
 #include <QLabel>
 #include <QGraphicsEllipseItem>
+#include <QStringList>
 #else
 #include <QtCore/QVariant>
 #include <QtGui/QAction>
@@ -167,6 +168,7 @@ class Ui_MainWindow : public QMainWindow
        class Action_Control *action_Recent_List_CART[2][MAX_HISTORY];
        class Action_Control *actionInsert_CART[2];
        class Action_Control *actionEject_CART[2];
+       QStringList listCarts[2];
 #endif
 
 #if defined(USE_QD1) || defined(USE_QD2)
@@ -178,6 +180,7 @@ class Ui_MainWindow : public QMainWindow
        class Action_Control *actionEject_QD[2];
        class Action_Control *actionProtection_ON_QD[2];
        class Action_Control *actionProtection_OFF_QD[2];
+       QStringList listQDs[2];
 #endif
 #ifdef USE_TAPE    
        QActionGroup   *actionGroup_Opened_CMT;
@@ -196,6 +199,7 @@ class Ui_MainWindow : public QMainWindow
        class Action_Control *actionPlay_Rewind;
        class Action_Control *actionPlay_Apss_Forward;
        class Action_Control *actionPlay_Apss_Rewind;
+       QStringList listCMT;
 #endif    
        class Action_Control *actionRecording;
        class Action_Control *actionProtection_ON_CMT;
@@ -208,6 +212,7 @@ class Ui_MainWindow : public QMainWindow
        QActionGroup   *actionGroup_Opened_LD;
        class Action_Control *actionRecent_Opened_LD;
        class Action_Control *action_Recent_List_LD[MAX_HISTORY];
+       QStringList listLaserDisc;
 #endif
 #if defined(USE_BINARY_FILE1)
        QActionGroup   *actionGroup_Opened_BIN[8];
@@ -216,6 +221,7 @@ class Ui_MainWindow : public QMainWindow
        class Action_Control *action_Recent_List_BIN[8][MAX_HISTORY];
        class Action_Control *actionLoad_BIN[8];
        class Action_Control *actionSave_BIN[8];
+       QStringList listBinary[8];
 #endif
        // Screen
        QActionGroup *actionGroup_Stretch;
@@ -304,6 +310,8 @@ class Ui_MainWindow : public QMainWindow
 #if defined(USE_FD1) || defined(USE_FD2) || defined(USE_FD3) || defined(USE_FD4) || \
     defined(USE_FD5) || defined(USE_FD6) || defined(USE_FD7) || defined(USE_FD8)
        Menu_FDClass *menu_fds[MAX_FD];
+       QStringList listFDs[MAX_FD];
+       QStringList listD88[MAX_FD];
 #endif
 #if defined(USE_QD1) || defined(USE_QD2)
        QMenu *menuQD[2];
index fb92a3c..a9e1205 100644 (file)
@@ -100,6 +100,7 @@ void Ui_MainWindow::CreateCMTMenu(void)
        menuCMT->setObjectName(QString::fromUtf8("menuCMT", -1));
        menuWrite_Protection_CMT = new QMenu(menuCMT);
        menuWrite_Protection_CMT->setObjectName(QString::fromUtf8("menuWrite_Protection_CMT", -1));
+       listCMT.clear();
        //CreateCMTPulldownMenu(p);
 #endif // USE_TAPE
 }
@@ -299,7 +300,9 @@ void Ui_MainWindow::ConfigCMTMenuSub(void)
        connect(actionEject_CMT, SIGNAL(triggered()),
                this, SLOT(eject_cmt()));
        // Translate Menu
+       SETUP_HISTORY(config.recent_tape_path, listCMT);
 #endif // USE_TAPE
+
 }
 
 void Ui_MainWindow::retranslateCMTMenu(void)
index 9998b59..f9dd5c5 100644 (file)
@@ -28,9 +28,11 @@ Menu_MetaClass::Menu_MetaClass(EMU *ep, QMenuBar *root_entry, QString desc, QWid
        tmps.setNum(drv);
        object_desc = desc;
        object_desc.append(tmps);
+#if defined(USE_FD1)
        for(ii = 0; ii < MAX_D88_BANKS; ii++) {
                action_select_media_list[ii] = NULL;
        }
+#endif   
        use_write_protect = true;
        use_d88_menus = false;
        initial_dir = QString::fromUtf8("");
@@ -121,11 +123,13 @@ void Menu_MetaClass::do_add_media_extension(QString ext, QString description)
 
 void Menu_MetaClass::do_select_inner_media(int num)
 {
+#if defined(USE_FD1)
        if(use_d88_menus && (num < MAX_D88_BANKS)) {
                if(action_select_media_list[num] != NULL) {
                        action_select_media_list[num]->setChecked(true);
                }
        }
+#endif   
 }
 
 void Menu_MetaClass::do_open_dialog()
@@ -153,18 +157,15 @@ void Menu_MetaClass::do_open_dialog()
        return;
 }
 
-void Menu_MetaClass::do_update_histories(_TCHAR str[MAX_HISTORY][_MAX_PATH])
+void Menu_MetaClass::do_update_histories(QStringList lst)
 {
        int ii;
        QString tmps;
        
        history.clear();
        for(ii = 0; ii < MAX_HISTORY; ii++) {
-               if(str[ii] != NULL) {
-                       tmps = QString::fromUtf8(str[ii]);
-               } else {
-                       tmps = QString::fromUtf8("");
-               }
+               tmps = QString::fromUtf8("");
+               if(ii < lst.size()) tmps = lst.value(ii);
                history << tmps;
                action_recent_list[ii]->setText(tmps);
                if(!tmps.isEmpty()) {
@@ -179,6 +180,7 @@ void Menu_MetaClass::do_clear_inner_media(void)
 {
        int ii;
        inner_media_list.clear();
+#if defined(USE_FD1)
        if(use_d88_menus) {
                for(ii = 0; ii < MAX_D88_BANKS; ii++) {
                        if(action_select_media_list[ii] != NULL) {
@@ -187,30 +189,20 @@ void Menu_MetaClass::do_clear_inner_media(void)
                        }
                }
        }
+#endif   
 }
 
-void Menu_MetaClass::do_update_inner_media(_TCHAR str[MAX_D88_BANKS][128], int num)
+#if defined(USE_FD1)
+void Menu_MetaClass::do_update_inner_media(QStringList lst, int num)
 {
        QString tmps;
        int ii;
-       
        inner_media_list.clear();
        if(use_d88_menus) {
-               if(str == NULL) {
-                       for(ii = 0; ii < MAX_D88_BANKS; ii++) {
-                               if(action_select_media_list[ii] != NULL) action_select_media_list[ii]->setVisible(false);
-                       }
-                       return;
-               }
-               
                for(ii = 0; ii < MAX_D88_BANKS; ii++) {
                        if(ii < p_emu->d88_file[media_drive].bank_num) {
-                               if(action_select_media_list[ii] != NULL) {
-                                       tmps = QString::fromUtf8(str[ii]);
-                               } else {
-                                       tmps = QString::fromUtf8("");
-                               }                                       
-                               action_select_media_list[ii]->setText(tmps);
+                               inner_media_list << lst.value(ii);
+                               action_select_media_list[ii]->setText(lst.value(ii));
                                action_select_media_list[ii]->setVisible(true);
                                if(ii == num) action_select_media_list[ii]->setChecked(true);
                        } else {
@@ -222,7 +214,7 @@ void Menu_MetaClass::do_update_inner_media(_TCHAR str[MAX_D88_BANKS][128], int n
                }
        }
 }
-
+#endif
 void Menu_MetaClass::create_pulldown_menu_sub(void)
 {
        action_insert = new Action_Control(p_wid);
@@ -257,6 +249,7 @@ void Menu_MetaClass::create_pulldown_menu_sub(void)
                        }                       
                }
        }
+#if defined(USE_FD1)
        if(use_d88_menus) {
                int ii;
                QString tmps;
@@ -279,7 +272,7 @@ void Menu_MetaClass::create_pulldown_menu_sub(void)
                        }                       
                }
        }
-               
+#endif         
        if(use_write_protect) {
                action_group_protect = new QActionGroup(p_wid);
                action_group_protect->setExclusive(true);
@@ -337,12 +330,14 @@ void Menu_MetaClass::create_pulldown_menu(void)
        menu_history = new QMenu(this);
        menu_history->setObjectName(QString::fromUtf8("menu_history_") + object_desc);
 
+#if defined(USE_FD1)
        if(use_d88_menus) {
                menu_inner_media = new QMenu(this);
                menu_inner_media->setObjectName(QString::fromUtf8("menu_inner_media_") + object_desc);
                for(ii = 0; ii < MAX_D88_BANKS; ii++) menu_inner_media->addAction(action_select_media_list[ii]);
                this->addAction(menu_inner_media->menuAction());
        }
+#endif   
        {
                menu_history = new QMenu(this);
                menu_history->setObjectName(QString::fromUtf8("menu_history_") + object_desc);
@@ -363,9 +358,11 @@ void Menu_MetaClass::create_pulldown_menu(void)
        
        // More actions
        this->addAction(menu_history->menuAction());
+#if defined(USE_FD1)
        if(use_d88_menus) {
                this->addAction(menu_inner_media->menuAction());
        }
+#endif   
        if(use_write_protect) {
                this->addSeparator();
                this->addAction(menu_write_protect->menuAction());
@@ -380,6 +377,7 @@ void Menu_MetaClass::create_pulldown_menu(void)
                connect(action_recent_list[ii]->binds, SIGNAL(set_recent_disk(int, int)),
                                this, SLOT(do_open_recent_media(int, int)));
        }
+#if defined(USE_FD1)
        if(use_d88_menus) {
                for(ii = 0; ii < MAX_D88_BANKS; ii++) {
                        connect(action_select_media_list[ii], SIGNAL(triggered()),
@@ -388,11 +386,14 @@ void Menu_MetaClass::create_pulldown_menu(void)
                                        this, SLOT(do_open_inner_media(int, int)));
                }
        }
+#endif   
        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)));
        connect(this, SIGNAL(sig_write_protect_media(int, bool)), p_wid, SLOT(write_protect_fd(int, bool)));    
        connect(this, SIGNAL(sig_set_recent_media(int, int)), p_wid, SLOT(set_recent_disk(int, int)));
+#if defined(USE_FD1)
        connect(this, SIGNAL(sig_set_inner_slot(int, int)), p_wid, SLOT(set_d88_slot(int, int)));
+#endif   
 }
 
 void Menu_MetaClass::retranslate_pulldown_menu_sub(void)
@@ -408,11 +409,13 @@ void Menu_MetaClass::retranslate_pulldown_menu_sub(void)
                action_write_protect_on->setVisible(false);
                action_write_protect_off->setVisible(false);
        }               
+#if defined(USE_FD1)
        if(use_d88_menus) {
                menu_inner_media->setTitle(QApplication::translate("MainWindow", "Select D88 image", 0));
        } else {
                //menu_inner_media->setVisible(false);
        }               
+#endif
        menu_history->setTitle(QApplication::translate("MainWindow", "Recent opened", 0));
 
 }
index 9426c9b..8953cad 100644 (file)
@@ -38,8 +38,9 @@ private:
        class Action_Control *action_inner_media;
        class Action_Control *action_write_protect_on;
        class Action_Control *action_write_protect_off;
-       
+#if defined(USE_FD1)
        class Action_Control *action_select_media_list[MAX_D88_BANKS];
+#endif   
        class Action_Control *action_recent_list[MAX_HISTORY];
 
        QActionGroup *action_group_recent;
@@ -92,8 +93,10 @@ public slots:
        void do_open_dialog(void);
        void do_clear_inner_media(void);
        void do_select_inner_media(int num);
-       void do_update_inner_media(_TCHAR s[MAX_D88_BANKS][128], int num);
-       void do_update_histories(_TCHAR   s[MAX_HISTORY][_MAX_PATH]);
+#if defined(USE_FD1)
+       void do_update_inner_media(QStringList lst, int num);
+#endif   
+       void do_update_histories(QStringList lst);
 signals:
        int sig_open_media(int, QString);
        int sig_eject_media(int);
index 64e64f0..a79262c 100644 (file)
@@ -26,7 +26,7 @@ int Ui_MainWindow::set_recent_cmt(int num)
     
        s_path = QString::fromUtf8(config.recent_tape_path[num]);
        strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
-       UPDATE_HISTORY(path_shadow, config.recent_tape_path);
+       UPDATE_HISTORY(path_shadow, config.recent_tape_path, listCMT);
        //strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
    
        get_parent_dir(path_shadow);
@@ -150,7 +150,7 @@ void Ui_MainWindow::_open_cmt(bool mode, const QString path)
 #ifdef USE_TAPE
        if(path.length() <= 0) return;
        strncpy(path_shadow, path.toUtf8().constData(), PATH_MAX);
-       UPDATE_HISTORY(path_shadow, config.recent_tape_path);
+       UPDATE_HISTORY(path_shadow, config.recent_tape_path, listCMT);
        get_parent_dir(path_shadow);
        strcpy(config.initial_tape_dir, path_shadow);
        // Copy filename again.
index af751dd..40d540d 100644 (file)
@@ -54,6 +54,20 @@ void Object_Menu_Control::do_set_ignore_crc_error(bool flag)
 #endif   
 }
 
+#ifndef UPDATE_D88_LIST
+#define UPDATE_D88_LIST(__d, lst) { \
+       lst.clear(); \
+       QString __tmps; \
+       for(int iii = 0; iii < MAX_D88_BANKS; iii++) { \
+               __tmps = QString::fromUtf8(""); \
+               if(iii < emu->d88_file[__d].bank_num) { \
+                       __tmps = QString::fromUtf8(emu->d88_file[__d].disk_name[iii]); \
+               } \
+       lst << __tmps; \
+       } \
+}
+#endif
+
 void Object_Menu_Control::do_set_correct_disk_timing(bool flag)
 {
 #ifdef USE_FD1
@@ -101,7 +115,7 @@ void Ui_MainWindow::do_update_recent_disk(int drv)
 {
        int i;
        if(emu == NULL) return;
-       menu_fds[drv]->do_update_histories(config.recent_disk_path[drv]);
+       menu_fds[drv]->do_update_histories(listFDs[drv]);
        menu_fds[drv]->do_set_initialize_directory(config.initial_disk_dir);
        if(emu->get_disk_protected(drv)) {
                menu_fds[drv]->do_write_protect_media();
@@ -119,7 +133,7 @@ int Ui_MainWindow::set_recent_disk(int drv, int num)
        if((num < 0) || (num >= MAX_HISTORY)) return -1;
        s_path = QString::fromUtf8(config.recent_disk_path[drv][num]);
        strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
-       UPDATE_HISTORY(path_shadow, config.recent_disk_path[drv]);
+       UPDATE_HISTORY(path_shadow, config.recent_disk_path[drv], listFDs[drv]);
        strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
    
        get_parent_dir(path_shadow);
@@ -129,10 +143,11 @@ int Ui_MainWindow::set_recent_disk(int drv, int num)
        if(emu) {
                emit sig_close_disk(drv);
                emit sig_open_disk(drv, s_path, 0);
-               menu_fds[drv]->do_update_histories(config.recent_disk_path[drv]);
+               menu_fds[drv]->do_update_histories(listFDs[drv]);
                menu_fds[drv]->do_set_initialize_directory(config.initial_disk_dir);
                if(check_file_extension(path_shadow, ".d88") || check_file_extension(path_shadow, ".d77")) {
-                       menu_fds[drv]->do_update_inner_media(emu->d88_file[drv].disk_name, 0);
+                       UPDATE_D88_LIST(drv, listD88[drv]);
+                       menu_fds[drv]->do_update_inner_media(listD88[drv], 0);
                } else {
                        menu_fds[drv]->do_clear_inner_media();
                }
@@ -143,9 +158,10 @@ int Ui_MainWindow::set_recent_disk(int drv, int num)
                                int drv2 = drv + 1;
                                emit sig_close_disk(drv2);
                                emit sig_open_disk(drv2, s_path, 1);
-                               menu_fds[drv2]->do_update_histories(config.recent_disk_path[drv2]);
+                               menu_fds[drv2]->do_update_histories(listFDs[drv2]);
                                menu_fds[drv2]->do_set_initialize_directory(config.initial_disk_dir);
-                               menu_fds[drv2]->do_update_inner_media(emu->d88_file[drv2].disk_name, 1);
+                               UPDATE_D88_LIST(drv2, listD88[drv2]);
+                               menu_fds[drv2]->do_update_inner_media(listD88[drv2], 1);
                        }
                }
 # endif
@@ -163,7 +179,7 @@ void Ui_MainWindow::_open_disk(int drv, const QString fname)
        if(fname.length() <= 0) return;
        drv = drv & 7;
        strncpy(path_shadow, fname.toUtf8().constData(), PATH_MAX);
-       UPDATE_HISTORY(path_shadow, config.recent_disk_path[drv]);
+       UPDATE_HISTORY(path_shadow, config.recent_disk_path[drv], listFDs[drv]);
        get_parent_dir(path_shadow);
        strcpy(config.initial_disk_dir, path_shadow);
        // Update List
@@ -172,10 +188,11 @@ void Ui_MainWindow::_open_disk(int drv, const QString fname)
                emit sig_close_disk(drv);
                //emu->LockVM();
                emit sig_open_disk(drv, fname, 0);
-               menu_fds[drv]->do_update_histories(config.recent_disk_path[drv]);
+               menu_fds[drv]->do_update_histories(listFDs[drv]);
                menu_fds[drv]->do_set_initialize_directory(config.initial_disk_dir);
                if(check_file_extension(path_shadow, ".d88") || check_file_extension(path_shadow, ".d77")) {
-                       menu_fds[drv]->do_update_inner_media(emu->d88_file[drv].disk_name, 0);
+                       UPDATE_D88_LIST(drv, listD88[drv]);
+                       menu_fds[drv]->do_update_inner_media(listD88[drv], 0);
                } else {
                        menu_fds[drv]->do_clear_inner_media();
                }
@@ -188,9 +205,10 @@ void Ui_MainWindow::_open_disk(int drv, const QString fname)
                        //emu->LockVM();
                        strncpy(path_shadow, fname.toUtf8().constData(), PATH_MAX);
                        emit sig_open_disk(drv2, fname, 1);
-                       menu_fds[drv2]->do_update_histories(config.recent_disk_path[drv2]);
+                       menu_fds[drv2]->do_update_histories(listFDs[drv2]);
                        menu_fds[drv2]->do_set_initialize_directory(config.initial_disk_dir);
-                       menu_fds[drv2]->do_update_inner_media(emu->d88_file[drv2].disk_name, 1);
+                       UPDATE_D88_LIST(drv2, listD88[drv2]);
+                       menu_fds[drv2]->do_update_inner_media(listD88[drv2], 1);
        }
        }
 # endif
@@ -235,8 +253,10 @@ void Ui_MainWindow::ConfigFloppyMenuSub(int drv)
                
                menu_fds[drv]->do_clear_inner_media();
                menu_fds[drv]->do_add_media_extension(ext, desc1);
-               menu_fds[drv]->do_update_histories(config.recent_disk_path[drv]);
+               SETUP_HISTORY(config.recent_disk_path[drv], listFDs[drv]);
+               menu_fds[drv]->do_update_histories(listFDs[drv]);
                menu_fds[drv]->do_set_initialize_directory(config.initial_disk_dir);
+               listD88[drv].clear();
        }
 #endif 
 }
index a45921a..e318574 100644 (file)
@@ -15,7 +15,7 @@
 #include "device.h"
 #include "fmgen/opm.h"
 
-#if defined(_WIN32)
+#if defined(_WIN32) && !defined(SDL) && !defined(_USE_QT) && !defined(QT_VERSION)
 #define SUPPORT_MAME_FM_DLL
 #include "fmdll/fmdll.h"
 #endif
index 281f143..ad19fd2 100644 (file)
@@ -18,7 +18,7 @@
 
 #if !(defined(HAS_AY_3_8910) || defined(HAS_AY_3_8912) || defined(HAS_AY_3_8913))
 #define HAS_YM_SERIES
-#if defined(_WIN32) && !defined(SDL) && !defined(_USE_QT)
+#if defined(_WIN32) && !defined(SDL) && !defined(_USE_QT) && !defined(QT_VERSION)
 #define SUPPORT_MAME_FM_DLL
 #include "fmdll/fmdll.h"
 #endif