// FIXED:
//
+// - Add dbl click/enter to select in cart list, ESC to dimiss [DONE]
+// - Autoscan/autoload all available BIOS from 'software' folder [DONE]
+// - Add 1 key jumping in cartridge list (press 'R', jumps to carts starting with 'R', etc) [DONE]
//
// STILL TO BE DONE:
//
-// - Autoscan/autoload all available BIOS from 'software' folder
// - Controller configuration
// - Remove SDL dependencies (sound, mainly) from Jaguar core lib
-// - Add 1 key jumping in cartridge list (press 'R', jumps to carts starting with 'R', etc)
-// - Add dbl click/enter to select in cart list, ESC to dimiss
+// - Fix inconsistency with trailing slashes in paths (eeproms needs one, software doesn't)
//
-/*
-For BIOS autoscan, infrastructure is already there in filethread.cpp; just need to figure out
-if we want to scan every time, or stuff filenames found into the config file, or what.
-Should filethread emit signal that's intercepted here? Maybe...
-*/
-
// Uncomment this for debugging...
//#define DEBUG
//#define DEBUGFOO // Various tool debugging...
#include "generaltab.h"
#include "version.h"
+#include "dac.h"
#include "jaguar.h"
#include "tom.h"
#include "log.h"
WriteLog("VJ: Using built in BIOS/CD BIOS...\n");
memcpy(jaguarBootROM, jagBootROM, 0x20000);
memcpy(jaguarCDBootROM, jagCDROM, 0x40000);
- BIOSLoaded = CDBIOSLoaded = true;
+// BIOSLoaded = CDBIOSLoaded = true;
+ biosAvailable |= (BIOS_NORMAL | BIOS_CD);
#else
// What would be nice here would be a way to check if the BIOS was loaded so that we
// could disable the pushbutton on the Misc Options menu... !!! FIX !!! [DONE here, but needs to be fixed in GUI as well!]
- WriteLog("VJ: About to attempt to load BIOSes...\n");
+// WriteLog("VJ: About to attempt to load BIOSes...\n");
//This is short-circuiting the file finding thread... ??? WHY ???
//Not anymore. Was related to a QImage object creation/corruption bug elsewhere.
- BIOSLoaded = (JaguarLoadROM(jaguarBootROM, vjs.jagBootPath) == 0x20000 ? true : false);
- WriteLog("VJ: BIOS is %savailable...\n", (BIOSLoaded ? "" : "not "));
- CDBIOSLoaded = (JaguarLoadROM(jaguarCDBootROM, vjs.CDBootPath) == 0x40000 ? true : false);
- WriteLog("VJ: CD BIOS is %savailable...\n", (CDBIOSLoaded ? "" : "not "));
+// BIOSLoaded = (JaguarLoadROM(jaguarBootROM, vjs.jagBootPath) == 0x20000 ? true : false);
+// WriteLog("VJ: BIOS is %savailable...\n", (BIOSLoaded ? "" : "not "));
+// CDBIOSLoaded = (JaguarLoadROM(jaguarCDBootROM, vjs.CDBootPath) == 0x40000 ? true : false);
+// WriteLog("VJ: CD BIOS is %savailable...\n", (CDBIOSLoaded ? "" : "not "));
#endif
filePickWin->ScanSoftwareFolder(allowUnknownSoftware);
|| (e->key() == vjs.p1KeyBindings[BUTTON_D] && joypad_0_buttons[BUTTON_U]))
return;
#else
- if (e->key() == vjs.p1KeyBindings[BUTTON_L] && joypad_0_buttons[BUTTON_R])
+ if (e->key() == (int)vjs.p1KeyBindings[BUTTON_L] && joypad_0_buttons[BUTTON_R])
joypad_0_buttons[BUTTON_R] = 0;
- if (e->key() == vjs.p1KeyBindings[BUTTON_R] && joypad_0_buttons[BUTTON_L])
+ if (e->key() == (int)vjs.p1KeyBindings[BUTTON_R] && joypad_0_buttons[BUTTON_L])
joypad_0_buttons[BUTTON_L] = 0;
- if (e->key() == vjs.p1KeyBindings[BUTTON_U] && joypad_0_buttons[BUTTON_D])
+ if (e->key() == (int)vjs.p1KeyBindings[BUTTON_U] && joypad_0_buttons[BUTTON_D])
joypad_0_buttons[BUTTON_D] = 0;
- if (e->key() == vjs.p1KeyBindings[BUTTON_D] && joypad_0_buttons[BUTTON_U])
+ if (e->key() == (int)vjs.p1KeyBindings[BUTTON_D] && joypad_0_buttons[BUTTON_U])
joypad_0_buttons[BUTTON_U] = 0;
#endif
// No bad combos exist, let's stuff the emulator key buffers...!
for(int i=BUTTON_FIRST; i<=BUTTON_LAST; i++)
{
- if (e->key() == vjs.p1KeyBindings[i])
+ if (e->key() == (int)vjs.p1KeyBindings[i])
joypad_0_buttons[i] = (uint8)state;
}
}
return;
QString before = vjs.ROMPath;
+ bool audioBefore = vjs.audioEnabled;
dlg.UpdateVJSettings();
QString after = vjs.ROMPath;
+ bool audioAfter = vjs.audioEnabled;
bool allowOld = allowUnknownSoftware;
//ick.
if ((before != after) || (allowOld != allowUnknownSoftware))
filePickWin->ScanSoftwareFolder(allowUnknownSoftware);
+ // If the "Enable audio" checkbox changed, then we have to re-init the DAC...
+ if (audioBefore != audioAfter)
+ {
+ DACDone();
+ DACInit();
+ }
+
// Just in case we crash before a clean exit...
WriteSettings();
}
pauseAct->setDisabled(true);
showUntunedTankCircuit = true;
running = true;
+ // This is just in case the ROM we were playing was in a narrow or wide field mode,
+ // so the untuned tank sim doesn't look wrong. :-)
+ TOMReset();
}
else
{
pauseAct->setChecked(false);
pauseAct->setDisabled(false);
memcpy(jagMemSpace + 0x800000, jaguarCDBootROM, 0x40000);
+ setWindowTitle(QString("Virtual Jaguar " VJ_RELEASE_VERSION
+ " - Now playing: Jaguar CD"));
}
//(Err, what's so crappy about this? It seems to do what it's supposed to...)
if (!running)
{
-#if 0
- for(uint32_t x=0; x<videoWidget->rasterWidth; x++)
- for(uint32_t y=0; y<videoWidget->rasterHeight; y++)
- videoWidget->buffer[(y * videoWidget->textureWidth) + x] = 0x00000000;
-#else
-// for(uint32_t i=0; i<TOMGetVideoModeWidth() * 256; i++)
- for(uint32_t i=0; i<videoWidget->textureWidth * 256; i++)
+ for(uint32_t i=0; i<(uint32_t)(videoWidget->textureWidth * 256); i++)
{
uint32_t pixel = backbuffer[i];
-// uint8_t b = (pixel >> 16) & 0xFF, g = (pixel >> 8) & 0xFF, r = pixel & 0xFF;
uint8_t r = (pixel >> 24) & 0xFF, g = (pixel >> 16) & 0xFF, b = (pixel >> 8) & 0xFF;
pixel = ((r + g + b) / 3) & 0x00FF;
-// backbuffer[i] = 0xFF000000 | (pixel << 16) | (pixel << 8);
backbuffer[i] = 0x000000FF | (pixel << 16) | (pixel << 8);
}
-// memcpy(videoWidget->buffer, backbuffer, videoWidget->rasterHeight * videoWidget->rasterWidth);
memcpy(videoWidget->buffer, backbuffer, videoWidget->rasterHeight * videoWidget->textureWidth * sizeof(uint32_t));
-#endif
videoWidget->updateGL();
}
vjs.frameSkip = settings.value("frameSkip", 0).toInt();
vjs.useJaguarBIOS = settings.value("useJaguarBIOS", false).toBool();
vjs.DSPEnabled = settings.value("DSPEnabled", false).toBool();
+ vjs.audioEnabled = settings.value("audioEnabled", true).toBool();
vjs.usePipelinedDSP = settings.value("usePipelinedDSP", false).toBool();
vjs.fullscreen = settings.value("fullscreen", false).toBool();
vjs.useOpenGL = settings.value("useOpenGL", true).toBool();
vjs.renderType = settings.value("renderType", 0).toInt();
strcpy(vjs.jagBootPath, settings.value("JagBootROM", "./bios/[BIOS] Atari Jaguar (USA, Europe).zip").toString().toAscii().data());
strcpy(vjs.CDBootPath, settings.value("CDBootROM", "./bios/jagcd.rom").toString().toAscii().data());
- strcpy(vjs.EEPROMPath, settings.value("EEPROMs", "./eeproms").toString().toAscii().data());
- strcpy(vjs.ROMPath, settings.value("ROMs", "./software").toString().toAscii().data());
+ strcpy(vjs.EEPROMPath, settings.value("EEPROMs", "./eeproms/").toString().toAscii().data());
+ strcpy(vjs.ROMPath, settings.value("ROMs", "./software/").toString().toAscii().data());
WriteLog("MainWin: Paths\n");
-WriteLog(" jagBootPath = \"%s\"\n", vjs.jagBootPath);
-WriteLog(" CDBootPath = \"%s\"\n", vjs.CDBootPath);
+//WriteLog(" jagBootPath = \"%s\"\n", vjs.jagBootPath);
+//WriteLog(" CDBootPath = \"%s\"\n", vjs.CDBootPath);
WriteLog(" EEPROMPath = \"%s\"\n", vjs.EEPROMPath);
WriteLog(" ROMPath = \"%s\"\n", vjs.ROMPath);
settings.setValue("frameSkip", vjs.frameSkip);
settings.setValue("useJaguarBIOS", vjs.useJaguarBIOS);
settings.setValue("DSPEnabled", vjs.DSPEnabled);
+ settings.setValue("audioEnabled", vjs.audioEnabled);
settings.setValue("usePipelinedDSP", vjs.usePipelinedDSP);
settings.setValue("fullscreen", vjs.fullscreen);
settings.setValue("useOpenGL", vjs.useOpenGL);