From 2136446c0d38d00a651d3eb665ee564b18f94b28 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Sun, 31 Jul 2011 23:07:25 +0000 Subject: [PATCH] Fixes in the controller config for MacOSX, added option to turn off GPU. --- src/gui/configdialog.cpp | 2 ++ src/gui/controllerwidget.cpp | 2 +- src/gui/generaltab.cpp | 2 ++ src/gui/generaltab.h | 1 + src/gui/keygrabber.cpp | 3 +++ src/gui/mainwin.cpp | 2 ++ src/jaguar.cpp | 7 ++++-- src/op.cpp | 49 ++++++++++++++++++++++++++++++++++-- src/settings.h | 1 + 9 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/gui/configdialog.cpp b/src/gui/configdialog.cpp index ab12b13..8ee3ce1 100644 --- a/src/gui/configdialog.cpp +++ b/src/gui/configdialog.cpp @@ -67,6 +67,7 @@ void ConfigDialog::LoadDialogFromSettings(void) generalTab->edit4->setText(vjs.ROMPath); generalTab->useBIOS->setChecked(vjs.useJaguarBIOS); + generalTab->useGPU->setChecked(vjs.GPUEnabled); generalTab->useDSP->setChecked(vjs.DSPEnabled); generalTab->useHostAudio->setChecked(vjs.audioEnabled); @@ -94,6 +95,7 @@ void ConfigDialog::UpdateVJSettings(void) strcpy(vjs.ROMPath, generalTab->edit4->text().toAscii().data()); vjs.useJaguarBIOS = generalTab->useBIOS->isChecked(); + vjs.GPUEnabled = generalTab->useGPU->isChecked(); vjs.DSPEnabled = generalTab->useDSP->isChecked(); vjs.audioEnabled = generalTab->useHostAudio->isChecked(); diff --git a/src/gui/controllerwidget.cpp b/src/gui/controllerwidget.cpp index 1125929..fd9ebf2 100644 --- a/src/gui/controllerwidget.cpp +++ b/src/gui/controllerwidget.cpp @@ -25,7 +25,7 @@ char ControllerWidget::keyName1[96][16] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "[", "]", "\\", "^", "_", "`", + "[", "\\", "]", "^", "_", "`", "$61", "$62", "$63", "$64", "$65", "$66", "$67", "$68", "$69", "$6A", "$6B", "$6C", "$6D", "$6E", "$6F", "$70", "$71", "$72", "$73", "$74", "$75", "$76", "$77", "$78", "$79", "$7A", "{", "|", "}", "~" diff --git a/src/gui/generaltab.cpp b/src/gui/generaltab.cpp index a9f824a..883f137 100644 --- a/src/gui/generaltab.cpp +++ b/src/gui/generaltab.cpp @@ -54,11 +54,13 @@ GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent) // Checkboxes... useBIOS = new QCheckBox(tr("Enable Jaguar BIOS")); + useGPU = new QCheckBox(tr("Enable GPU")); useDSP = new QCheckBox(tr("Enable DSP")); useHostAudio = new QCheckBox(tr("Enable audio playback (requires DSP)")); useUnknownSoftware = new QCheckBox(tr("Show all files in file chooser")); layout4->addWidget(useBIOS); + layout4->addWidget(useGPU); layout4->addWidget(useDSP); layout4->addWidget(useHostAudio); layout4->addWidget(useUnknownSoftware); diff --git a/src/gui/generaltab.h b/src/gui/generaltab.h index 2d3afb5..d1338ab 100644 --- a/src/gui/generaltab.h +++ b/src/gui/generaltab.h @@ -18,6 +18,7 @@ class GeneralTab: public QWidget QLineEdit * edit4; QCheckBox * useBIOS; + QCheckBox * useGPU; QCheckBox * useDSP; QCheckBox * useHostAudio; QCheckBox * useUnknownSoftware; diff --git a/src/gui/keygrabber.cpp b/src/gui/keygrabber.cpp index 0bea66f..cc0b714 100644 --- a/src/gui/keygrabber.cpp +++ b/src/gui/keygrabber.cpp @@ -21,6 +21,9 @@ KeyGrabber::KeyGrabber(QWidget * parent/*= 0*/): QDialog(parent) mainLayout->addWidget(label); setLayout(mainLayout); setWindowTitle(tr("Grab")); + + // Will this make Mac OSX work??? + setFocusPolicy(Qt::StrongFocus); } KeyGrabber::~KeyGrabber() diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index 5c0f1b4..3ff3ded 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -643,6 +643,7 @@ void MainWin::ReadSettings(void) vjs.hardwareTypeNTSC = settings.value("hardwareTypeNTSC", true).toBool(); vjs.frameSkip = settings.value("frameSkip", 0).toInt(); vjs.useJaguarBIOS = settings.value("useJaguarBIOS", false).toBool(); + vjs.GPUEnabled = settings.value("GPUEnabled", true).toBool(); vjs.DSPEnabled = settings.value("DSPEnabled", false).toBool(); vjs.audioEnabled = settings.value("audioEnabled", true).toBool(); vjs.usePipelinedDSP = settings.value("usePipelinedDSP", false).toBool(); @@ -726,6 +727,7 @@ void MainWin::WriteSettings(void) settings.setValue("hardwareTypeNTSC", vjs.hardwareTypeNTSC); settings.setValue("frameSkip", vjs.frameSkip); settings.setValue("useJaguarBIOS", vjs.useJaguarBIOS); + settings.setValue("GPUEnabled", vjs.GPUEnabled); settings.setValue("DSPEnabled", vjs.DSPEnabled); settings.setValue("audioEnabled", vjs.audioEnabled); settings.setValue("usePipelinedDSP", vjs.usePipelinedDSP); diff --git a/src/jaguar.cpp b/src/jaguar.cpp index 2ce5da5..2cf99db 100644 --- a/src/jaguar.cpp +++ b/src/jaguar.cpp @@ -1817,7 +1817,8 @@ if (effect_start) BUTCHExec(RISCCyclesPerScanline); //if (start_logging) // WriteLog("About to execute GPU (%u)...\n", i); - GPUExec(RISCCyclesPerScanline); + if (vjs.GPUEnabled) + GPUExec(RISCCyclesPerScanline); if (vjs.DSPEnabled) { @@ -1968,7 +1969,9 @@ void JaguarExecuteNew(void) //WriteLog("JEN: Time to next event (%u) is %f usec (%u RISC cycles)...\n", nextEvent, timeToNextEvent, USEC_TO_RISC_CYCLES(timeToNextEvent)); m68k_execute(USEC_TO_M68K_CYCLES(timeToNextEvent)); - GPUExec(USEC_TO_RISC_CYCLES(timeToNextEvent)); + + if (vjs.GPUEnabled) + GPUExec(USEC_TO_RISC_CYCLES(timeToNextEvent)); if (vjs.DSPEnabled) { diff --git a/src/op.cpp b/src/op.cpp index 510b034..3765250 100644 --- a/src/op.cpp +++ b/src/op.cpp @@ -898,6 +898,10 @@ if (depth > 5) // anyway. // This seems to be the case (at least according to the Midsummer docs)...! +// This is to test using palette zeroes instead of bit zeroes... +// And it seems that this is wrong, index == 0 is transparent apparently... :-/ +//#define OP_USES_PALETTE_ZERO + if (depth == 0) // 1 BPP { // The LSB of flags is OPFLAG_REFLECT, so sign extend it and or 2 into it. @@ -915,7 +919,11 @@ if (depth > 5) while (i++ < 64) { uint8 bit = pixels >> 63; +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bit == 0) +#else + if (flagTRANS && (paletteRAM16[index | bit] == 0)) +#endif ; // Do nothing... else { @@ -963,7 +971,11 @@ if (firstPix) // This only works for the palettized modes (1 - 8 BPP), since we actually have to // copy data from memory in 16 BPP mode (or does it? Isn't this the same as the CLUT case?) // No, it isn't because we read the memory in an endian safe way--this *won't* work... +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bits == 0) +#else + if (flagTRANS && (paletteRAM16[index | bits] == 0)) +#endif ; // Do nothing... else { @@ -1003,7 +1015,11 @@ if (firstPix) // This only works for the palettized modes (1 - 8 BPP), since we actually have to // copy data from memory in 16 BPP mode (or does it? Isn't this the same as the CLUT case?) // No, it isn't because we read the memory in an endian safe way--this *won't* work... +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bits == 0) +#else + if (flagTRANS && (paletteRAM16[index | bits] == 0)) +#endif ; // Do nothing... else { @@ -1044,7 +1060,14 @@ if (firstPix) // This only works for the palettized modes (1 - 8 BPP), since we actually have to // copy data from memory in 16 BPP mode (or does it? Isn't this the same as the CLUT case?) // No, it isn't because we read the memory in an endian safe way--this *won't* work... +//This would seem to be problematic... +//Because it's the palette entry being zero that makes the pixel transparent... +//Let's try it and see. +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bits == 0) +#else + if (flagTRANS && (paletteRAM16[bits] == 0)) +#endif ; // Do nothing... else { @@ -1087,7 +1110,10 @@ if (firstPix) // This only works for the palettized modes (1 - 8 BPP), since we actually have to // copy data from memory in 16 BPP mode (or does it? Isn't this the same as the CLUT case?) // No, it isn't because we read the memory in an endian safe way--it *won't* work... - if (flagTRANS && (bitsLo | bitsHi) == 0) +//This doesn't seem right... Let's try the encoded black value ($8800): +//Apparently, CRY 0 maps to $8800... + if (flagTRANS && ((bitsLo | bitsHi) == 0)) +// if (flagTRANS && (bitsHi == 0x88) && (bitsLo == 0x00)) ; // Do nothing... else { @@ -1379,7 +1405,11 @@ if (firstPix != 0) { uint8 bits = pixels >> 63; +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bits == 0) +#else + if (flagTRANS && (paletteRAM16[index | bits] == 0)) +#endif ; // Do nothing... else { @@ -1444,7 +1474,11 @@ if (firstPix != 0) { uint8 bits = pixels >> 62; +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bits == 0) +#else + if (flagTRANS && (paletteRAM16[index | bits] == 0)) +#endif ; // Do nothing... else { @@ -1504,7 +1538,11 @@ if (firstPix != 0) { uint8 bits = pixels >> 60; +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bits == 0) +#else + if (flagTRANS && (paletteRAM16[index | bits] == 0)) +#endif ; // Do nothing... else { @@ -1563,7 +1601,11 @@ if (firstPix) { uint8 bits = pixels >> 56; +#ifndef OP_USES_PALETTE_ZERO if (flagTRANS && bits == 0) +#else + if (flagTRANS && (paletteRAM16[bits] == 0)) +#endif ; // Do nothing... else { @@ -1619,7 +1661,10 @@ if (firstPix != 0) { uint8 bitsHi = pixels >> 56, bitsLo = pixels >> 48; - if (flagTRANS && (bitsLo | bitsHi) == 0) +//This doesn't seem right... Let's try the encoded black value ($8800): +//Apparently, CRY 0 maps to $8800... + if (flagTRANS && ((bitsLo | bitsHi) == 0)) +// if (flagTRANS && (bitsHi == 0x88) && (bitsLo == 0x00)) ; // Do nothing... else { diff --git a/src/settings.h b/src/settings.h index a8f5aa3..28aa2b9 100644 --- a/src/settings.h +++ b/src/settings.h @@ -22,6 +22,7 @@ struct VJSettings int32 joyport; // Joystick port bool hardwareTypeNTSC; // Set to false for PAL bool useJaguarBIOS; + bool GPUEnabled; bool DSPEnabled; bool usePipelinedDSP; bool fullscreen; -- 2.37.2