OSDN Git Service

[VM][UI][FMTOWNS] Add variable memory size feature.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Fri, 22 May 2020 10:36:32 +0000 (19:36 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Fri, 22 May 2020 10:36:32 +0000 (19:36 +0900)
source/src/qt/gui/mainwidget_base.h
source/src/qt/gui/mainwindow_utils.cpp
source/src/qt/gui/menu_machine.cpp
source/src/qt/gui/menu_main.cpp
source/src/qt/gui/util_cd.cpp
source/src/vm/fmtowns/fmtowns.cpp
source/src/vm/fmtowns/fmtowns.h

index a16bae0..7909e71 100644 (file)
@@ -404,6 +404,7 @@ protected:
        class Action_Control *action_ResetFixedCpu;
        class Action_Control *action_SetFixedCpu[128];
 
+       class Action_Control *action_RAMSize;
        // Screen
        class Action_Control *actionCapture_Screen;
        class Action_Control *action_SetRenderMode[8];
@@ -625,6 +626,7 @@ public slots:
        int set_recent_cdrom(int drv, int num);
        void do_eject_cdrom(int drv);
        void do_open_cdrom(int drv, QString path);
+       void do_swap_cdaudio_byteorder(int drv, bool value);
 
        int set_recent_laserdisc(int drv, int num); 
        void do_eject_laserdisc(int drv); 
@@ -747,7 +749,8 @@ public slots:
        void do_select_fixed_cpu(int num);
        void do_add_keyname_table(uint32_t vk, QString name);
        void do_clear_keyname_table();
-
+       void do_show_ram_size_dialog(void);
+       
 signals:
        int message_changed(QString);
        int quit_emu_thread();
index d7b1c17..d356ff6 100644 (file)
@@ -209,6 +209,8 @@ void Ui_MainWindowBase::set_screen_aspect(int num)
 
 void Ui_MainWindowBase::ConfigDeviceType(void)
 {
+//     if(using_flags->is_use_variable_memory()) {
+//     }               
        if(using_flags->get_use_device_type() > 0) {
                int ii;
                menuDeviceType = new QMenu(menuMachine);
index 9f6ae38..c1920ac 100644 (file)
@@ -36,6 +36,10 @@ void Ui_MainWindowBase::retranslateMachineMenu(void)
        QString tmps;
        QString tmps2;
        menuMachine->setTitle(QApplication::translate("MenuMachine", "Machine", 0));
+       if(using_flags->is_use_ram_size()) {
+               action_RAMSize->setText(QApplication::translate("MenuMachine", "RAM Size", 0));
+               action_RAMSize->setToolTip(QApplication::translate("MenuMachine", "Set (extra) memory size.\nThis will effect after restarting this emulator.", 0));
+       }       
        if(using_flags->get_use_device_type() > 0) {
                menuDeviceType->setTitle(QApplication::translate("MenuMachine", "Device Type", 0));
                for(i = 0; i < using_flags->get_use_device_type(); i++) {
index 365e538..44c6e13 100644 (file)
@@ -172,7 +172,7 @@ void Ui_MainWindowBase::do_set_window_focus_type(bool flag)
 
 void Ui_MainWindowBase::do_show_ram_size_dialog(void)
 {
-       CSP_MemoryDialog *dlg = new CSP_MemoryDialog(using_flags, this);
+       CSP_MemoryDialog *dlg = new CSP_MemoryDialog(using_flags, NULL);
        dlg->show();
 }
 
@@ -582,7 +582,10 @@ void Ui_MainWindowBase::setupUi(void)
        }
        if(using_flags->is_use_ram_size()) {
                action_RAMSize = new Action_Control(this, using_flags);
+               menuMachine->addSeparator();
+               menuMachine->addAction(action_RAMSize);
                connect(action_RAMSize, SIGNAL(triggered()), this, SLOT(do_show_ram_size_dialog()));
+               menuMachine->addSeparator();
        }
                
 
index 2328ec0..433731c 100644 (file)
@@ -105,3 +105,10 @@ void Ui_MainWindowBase::ConfigCDROMMenu(void)
 {
        ConfigCDROMMenuSub(); 
 }
+
+void Ui_MainWindowBase::do_swap_cdaudio_byteorder(int drv, bool value)
+{
+       if(drv < 0) return;
+       if(drv > 7) return;
+       p_config->swap_audio_byteorder[drv] = value;
+}
index cd66534..d9d1d30 100644 (file)
@@ -575,7 +575,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        strncpy(_git_revision, __GIT_REPO_VERSION, sizeof(_git_revision) - 1);
 #endif
        // ToDo : Use config framework
-       int exram_size = -1;
+       int exram_size = config.current_ram_size;
        if(exram_size < 1) {
                if(machine_id < 0x0200) { // Model1 - 2H
                        exram_size = 6;
@@ -589,6 +589,10 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
                        exram_size = 31;
                }
        }
+       if(exram_size < MIN_RAM_SIZE) {
+               exram_size = MIN_RAM_SIZE;
+       }
+       
        memory->set_extra_ram_size(exram_size);
 
 #if defined(WITH_I386SX)
index c061a65..d5c8abd 100644 (file)
 
 #define HAS_MB89311
 
+#define RAM_SIZE_ORDER (1024*1024)
+
 #if defined(_FMTOWNS_1)
 #define DEVICE_NAME            "FUJITSU FM-Towns Model 1"
 #define CONFIG_NAME            "fmtowns1"
 #define MAX_DRIVE       1
 #define _HAS_HDD        4
 #undef HAS_MB89311
+#define USE_VARIABLE_MEMORY 6
+#define MIN_RAM_SIZE 1
 
 #elif defined(_FMTOWNS_2)
 #define DEVICE_NAME            "FUJITSU FM-Towns Model 2"
@@ -32,6 +36,8 @@
 #define MAX_DRIVE       2
 #define _HAS_HDD        4
 #undef HAS_MB89311
+#define USE_VARIABLE_MEMORY 6
+#define MIN_RAM_SIZE 1
 
 #elif defined(_FMTOWNS_2F)
 #define DEVICE_NAME            "FUJITSU FM-Towns 2F"
@@ -39,6 +45,8 @@
 #define MAX_DRIVE       2
 #undef  _HAS_HDD
 #define _FMTOWNS1_2ND_GEN
+#define USE_VARIABLE_MEMORY 8
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS_2H)
 #define DEVICE_NAME            "FUJITSU FM-Towns 2H"
@@ -46,6 +54,8 @@
 #define MAX_DRIVE       2
 #define _HAS_HDD        4
 #define _FMTOWNS1_2ND_GEN
+#define USE_VARIABLE_MEMORY 8
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS_20F)
 #define DEVICE_NAME            "FUJITSU FM-Towns 20F"
@@ -54,6 +64,8 @@
 #undef  _HAS_HDD
 #define TYPE_TOWNS_X0   1
 #define _FMTOWNS1_3RD_GEN
+#define USE_VARIABLE_MEMORY 8
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS_40H)
 #define DEVICE_NAME            "FUJITSU FM-Towns 40H"
@@ -62,6 +74,8 @@
 #define _HAS_HDD        4
 #define TYPE_TOWNS_X0   1
 #define _FMTOWNS1_3RD_GEN
+#define USE_VARIABLE_MEMORY 8
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS2_UX20)
 #define DEVICE_NAME            "FUJITSU FM-Towns II UX20"
@@ -71,6 +85,8 @@
 #define WITH_386SX      1
 #define TYPE_TOWNS2_UX  1
 #define _FMTOWNS_UX_VARIANTS
+#define USE_VARIABLE_MEMORY 9
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS2_UX40)
 #define DEVICE_NAME            "FUJITSU FM-Towns II UX40"
@@ -80,6 +96,8 @@
 #define WITH_386SX      1
 #define TYPE_TOWNS2_UX  1
 #define _FMTOWNS_UX_VARIANTS
+#define USE_VARIABLE_MEMORY 9
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS2_CX20)
 #define DEVICE_NAME            "FUJITSU FM-Towns II CX20"
 #undef _HAS_HDD
 #define TYPE_TOWNS2_CX  1
 #define _FMTOWNS2_CX_VARIANTS
+#define USE_VARIABLE_MEMORY 15
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS2_CX40)
 #define DEVICE_NAME            "FUJITSU FM-Towns II CX40"
 #define _HAS_HDD        4
 #define TYPE_TOWNS2_CX  1
 #define _FMTOWNS2_CX_VARIANTS
+#define USE_VARIABLE_MEMORY 15
+#define MIN_RAM_SIZE 2
 
 #elif defined(_FMTOWNS2_CX100)
 #define DEVICE_NAME            "FUJITSU FM-Towns II CX40"
 #define MAX_DRIVE       2
 #define _HAS_HDD        4
 #define TYPE_TOWNS2_CX  1
+#define USE_VARIABLE_MEMORY 15
+#define MIN_RAM_SIZE 2
 #define _FMTOWNS2_CX_VARIANTS
+
 #elif defined(_FMTOWNS2_UG10)
 #define DEVICE_NAME            "FUJITSU FM-Towns II UG10"
 #define CONFIG_NAME            "fmtowns2UG1"
 #define MAX_DRIVE       2
 #undef  _HAS_HDD        
 #define WITH_386SX      1
+#define USE_VARIABLE_MEMORY 9
+#define MIN_RAM_SIZE 2
+
 #define _FMTOWNS_UG_VARIANTS
+
 #elif defined(_FMTOWNS2_UG20)
 #define DEVICE_NAME            "FUJITSU FM-Towns II UG20"
 #define CONFIG_NAME            "fmtowns2UG20"
 #define MAX_DRIVE       2
 #undef  _HAS_HDD        
 #define WITH_386SX      1
+#define USE_VARIABLE_MEMORY 9
+#define MIN_RAM_SIZE 2
+
 #define _FMTOWNS_UG_VARIANTS
+
 #elif defined(_FMTOWNS2_UG40)
 #define DEVICE_NAME            "FUJITSU FM-Towns II UG40"
 #define CONFIG_NAME            "fmtowns2UG40"
 #define MAX_DRIVE       2
 #define _HAS_HDD        4
 #define WITH_386SX      1
+#define USE_VARIABLE_MEMORY 9
+#define MIN_RAM_SIZE 2
+
 #define _FMTOWNS_UG_VARIANTS
+
 #elif defined(_FMTOWNS2_UG80)
 #define DEVICE_NAME            "FUJITSU FM-Towns II UG80"
 #define CONFIG_NAME            "fmtowns2UG80"
 #define MAX_DRIVE       2
 #define _HAS_HDD        1
 #define WITH_386SX      1
+#define USE_VARIABLE_MEMORY 9
+#define MIN_RAM_SIZE 2
+
 #define _FMTOWNS_UG_VARIANTS
+
 #elif defined(_FMTOWNS2_HG20)
 #define DEVICE_NAME            "FUJITSU FM-Towns II HG20"
 #define CONFIG_NAME            "fmtowns2HG20"
 #define MAX_DRIVE       2
 #undef _HAS_HDD        
+#define USE_VARIABLE_MEMORY 15
+#define MIN_RAM_SIZE 2
+
 #define _FMTOWNS_HG_VARIANTS
 #elif defined(_FMTOWNS2_HG40)
 #define DEVICE_NAME            "FUJITSU FM-Towns II HG40"
 #define CONFIG_NAME            "fmtowns2HG40"
 #define MAX_DRIVE       2
 #define _HAS_HDD          4
+
+#define USE_VARIABLE_MEMORY 15
+#define MIN_RAM_SIZE 2
+
 #define _FMTOWNS_HG_VARIANTS
+
 #elif defined(_FMTOWNS2_HR20)
 #define DEVICE_NAME            "FUJITSU FM-Towns II HR20"
 #define CONFIG_NAME            "fmtowns2HR20"
 #define MAX_DRIVE       2
 #define _HAS_HDD        4
 #define _FMTOWNS_HR_VARIANTS
+
+#define USE_VARIABLE_MEMORY 31
+#define MIN_RAM_SIZE 2
+
 #define WITH_I486SX
 #elif defined(_FMTOWNS2_HR100)
 #define DEVICE_NAME            "FUJITSU FM-Towns II HR100"
 #define CONFIG_NAME            "fmtowns2HR100"
 #define MAX_DRIVE       2
 #define _HAS_HDD        4
+
+#define USE_VARIABLE_MEMORY 31
+#define MIN_RAM_SIZE 2
+
 #define _FMTOWNS_HR_VARIANTS
 #define WITH_I486SX
+
 #elif defined(_FMTOWNS2_HR200)
 #define DEVICE_NAME            "FUJITSU FM-Towns II HR200"
 #define CONFIG_NAME            "fmtowns2HR200"
 #define _HAS_HDD        4
 #define _FMTOWNS_HR_VARIANTS
 #define WITH_I486SX
+
+#define USE_VARIABLE_MEMORY 31
+#define MIN_RAM_SIZE 2
+
 #endif
 
 #if defined(WITH_386SX)