]> Shamusworld >> Repos - virtualjaguar/commitdiff
Added ability to use old, incompatible, but faster blitter.
authorShamus Hammons <jlhamm@acm.org>
Fri, 31 May 2013 20:06:10 +0000 (15:06 -0500)
committerShamus Hammons <jlhamm@acm.org>
Fri, 31 May 2013 20:06:10 +0000 (15:06 -0500)
Note that most games fail when using this blitter, but some games, such
as Tempest 2000 and Spacewar 2000 do. Use at your own peril!

src/blitter.cpp
src/gui/configdialog.cpp
src/gui/generaltab.cpp
src/gui/generaltab.h
src/gui/mainwin.cpp
src/settings.h

index 935e84b900ef690c59902d2fcf6aac4bdf0ead31..6a8c9ca4bafae1ad069cfd534c3414acb86ae513 100644 (file)
 #include "jaguar.h"
 #include "log.h"
 //#include "memory.h"
+#include "settings.h"
 
 // Various conditional compilation goodies...
 
 //#define LOG_BLITS
 
-//#define USE_ORIGINAL_BLITTER
+#define USE_ORIGINAL_BLITTER
 //#define USE_MIDSUMMER_BLITTER
 #define USE_MIDSUMMER_BLITTER_MKII
 
+#ifdef USE_ORIGINAL_BLITTER
+#ifdef USE_MIDSUMMER_BLITTER_MKII
+#define USE_BOTH_BLITTERS
+#endif
+#endif
+
+
 // External global variables
 
 extern int jaguar_active_memory_dumps;
@@ -1725,6 +1733,7 @@ if (blit_start_log)
        WriteLog("BLIT: Blitter started by %s...\n", whoName[who]);
        doGPUDis = true;
 }//*/
+#ifndef USE_BOTH_BLITTERS
 #ifdef USE_ORIGINAL_BLITTER
                blitter_blit(GET32(blitter_ram, 0x38));
 #endif
@@ -1734,6 +1743,14 @@ if (blit_start_log)
 #ifdef USE_MIDSUMMER_BLITTER_MKII
                BlitterMidsummer2();
 #endif
+#else
+       {
+               if (vjs.useFastBlitter)
+                       blitter_blit(GET32(blitter_ram, 0x38));
+               else
+                       BlitterMidsummer2();
+       }
+#endif
 }
 //F02278,9,A,B
 
index 752713bde6998e163e5597350d97d4e96e634eec..f8c8d4f6050603331945ec0851ad0901c259230e 100644 (file)
@@ -77,6 +77,7 @@ void ConfigDialog::LoadDialogFromSettings(void)
        generalTab->useDSP->setChecked(vjs.DSPEnabled);
        generalTab->useFullScreen->setChecked(vjs.fullscreen);
 //     generalTab->useHostAudio->setChecked(vjs.audioEnabled);
+       generalTab->useFastBlitter->setChecked(vjs.useFastBlitter);
 
        if (vjs.hardwareTypeAlpine)
        {
@@ -106,11 +107,12 @@ void ConfigDialog::UpdateVJSettings(void)
        strcpy(vjs.ROMPath,     CheckForTrailingSlash(
                generalTab->edit4->text()).toAscii().data());
 
-       vjs.useJaguarBIOS = generalTab->useBIOS->isChecked();
-       vjs.GPUEnabled    = generalTab->useGPU->isChecked();
-       vjs.DSPEnabled    = generalTab->useDSP->isChecked();
-       vjs.fullscreen    = generalTab->useFullScreen->isChecked();
-//     vjs.audioEnabled  = generalTab->useHostAudio->isChecked();
+       vjs.useJaguarBIOS  = generalTab->useBIOS->isChecked();
+       vjs.GPUEnabled     = generalTab->useGPU->isChecked();
+       vjs.DSPEnabled     = generalTab->useDSP->isChecked();
+       vjs.fullscreen     = generalTab->useFullScreen->isChecked();
+//     vjs.audioEnabled   = generalTab->useHostAudio->isChecked();
+       vjs.useFastBlitter = generalTab->useFastBlitter->isChecked();
 
        if (vjs.hardwareTypeAlpine)
        {
index d3b3cf295b183f0355421686c0a36f56a80baa3c..53adf96691488722805bf081d4357e869c6bcfb9 100644 (file)
@@ -59,6 +59,7 @@ GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent)
        useFullScreen      = new QCheckBox(tr("Start Virtual Jaguar in full screen"));
 //     useHostAudio       = new QCheckBox(tr("Enable audio playback (requires DSP)"));
        useUnknownSoftware = new QCheckBox(tr("Show all files in file chooser"));
+       useFastBlitter     = new QCheckBox(tr("Use fast blitter"));
 
        layout4->addWidget(useBIOS);
        layout4->addWidget(useGPU);
@@ -66,6 +67,7 @@ GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent)
        layout4->addWidget(useFullScreen);
 //     layout4->addWidget(useHostAudio);
        layout4->addWidget(useUnknownSoftware);
+       layout4->addWidget(useFastBlitter);
 
        setLayout(layout4);
 }
index 5696dfab1c0bbd4eb4cd7e7ab9df06a7856b61d8..3ca5b198d08991a634cc2b3d6c037e44701a471e 100644 (file)
@@ -23,6 +23,7 @@ class GeneralTab: public QWidget
 //             QCheckBox * useHostAudio;
                QCheckBox * useFullScreen;
                QCheckBox * useUnknownSoftware;
+               QCheckBox * useFastBlitter;
 };
 
 #endif // __GENERALTAB_H__
index 3a4a6207f4d70af8e075e86ce6a775122181afdc..28bb6b26cfda22bafe238a1b32353589a99a031a 100644 (file)
@@ -1133,6 +1133,7 @@ void MainWin::ReadSettings(void)
        vjs.renderType       = settings.value("renderType", 0).toInt();
        vjs.allowWritesToROM = settings.value("writeROM", false).toBool();
        vjs.biosType         = settings.value("biosType", BT_M_SERIES).toInt();
+       vjs.useFastBlitter   = settings.value("useFastBlitter", false).toBool();
        strcpy(vjs.EEPROMPath, settings.value("EEPROMs", "./eeproms/").toString().toAscii().data());
        strcpy(vjs.ROMPath, settings.value("ROMs", "./software/").toString().toAscii().data());
        strcpy(vjs.alpineROMPath, settings.value("DefaultROM", "").toString().toAscii().data());
@@ -1220,6 +1221,7 @@ void MainWin::WriteSettings(void)
        settings.setValue("renderType", vjs.renderType);
        settings.setValue("writeROM", vjs.allowWritesToROM);
        settings.setValue("biosType", vjs.biosType);
+       settings.setValue("useFastBlitter", vjs.useFastBlitter);
        settings.setValue("JagBootROM", vjs.jagBootPath);
        settings.setValue("CDBootROM", vjs.CDBootPath);
        settings.setValue("EEPROMs", vjs.EEPROMPath);
index 9824e40a983c07e5c5afd13ac4b1a94440b982cf..8c2d226821e9fecd5d0c0bc01190fd454805567b 100644 (file)
@@ -34,6 +34,7 @@ struct VJSettings
        uint32_t renderType;
        bool allowWritesToROM;
        uint32_t biosType;
+       bool useFastBlitter;
 
        // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *