From 1f1e00446272b00ab05b19cf9be8ed89e796913f Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Fri, 31 May 2013 15:06:10 -0500 Subject: [PATCH] Added ability to use old, incompatible, but faster blitter. 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 | 19 ++++++++++++++++++- src/gui/configdialog.cpp | 12 +++++++----- src/gui/generaltab.cpp | 2 ++ src/gui/generaltab.h | 1 + src/gui/mainwin.cpp | 2 ++ src/settings.h | 1 + 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/blitter.cpp b/src/blitter.cpp index 935e84b..6a8c9ca 100644 --- a/src/blitter.cpp +++ b/src/blitter.cpp @@ -28,15 +28,23 @@ #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 diff --git a/src/gui/configdialog.cpp b/src/gui/configdialog.cpp index 752713b..f8c8d4f 100644 --- a/src/gui/configdialog.cpp +++ b/src/gui/configdialog.cpp @@ -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) { diff --git a/src/gui/generaltab.cpp b/src/gui/generaltab.cpp index d3b3cf2..53adf96 100644 --- a/src/gui/generaltab.cpp +++ b/src/gui/generaltab.cpp @@ -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); } diff --git a/src/gui/generaltab.h b/src/gui/generaltab.h index 5696dfa..3ca5b19 100644 --- a/src/gui/generaltab.h +++ b/src/gui/generaltab.h @@ -23,6 +23,7 @@ class GeneralTab: public QWidget // QCheckBox * useHostAudio; QCheckBox * useFullScreen; QCheckBox * useUnknownSoftware; + QCheckBox * useFastBlitter; }; #endif // __GENERALTAB_H__ diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index 3a4a620..28bb6b2 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -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); diff --git a/src/settings.h b/src/settings.h index 9824e40..8c2d226 100644 --- a/src/settings.h +++ b/src/settings.h @@ -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, #, * -- 2.37.2