// JPM 09/12/2017 Added the keybindings in the settings\r
// JPM 11/04/2017 Added the local window\r
// JPM 08/31/2018 Added the call stack window\r
+// JPM 09/04/2018 Added the new Models and BIOS handler\r
//\r
\r
// FIXED:\r
#include "jaguar.h"\r
#include "log.h"\r
#include "file.h"\r
+#ifndef NEWMODELSBIOSHANDLER\r
#include "jagbios.h"\r
#include "jagbios2.h"\r
-#include "jagcdbios.h"\r
#include "jagstub2bios.h"\r
+#else\r
+#include "modelsBIOS.h"\r
+#endif\r
+#include "jagcdbios.h"\r
#include "joystick.h"\r
#include "m68000/m68kinterface.h"\r
\r
WriteLog("Virtual Jaguar %s Rx (Last full build was on %s %s)\n", VJ_RELEASE_VERSION, __DATE__, __TIME__);\r
WriteLog("VJ: Initializing jaguar subsystem...\n");\r
JaguarInit();\r
-// memcpy(jagMemSpace + 0xE00000, jaguarBootROM, 0x20000); // Use the stock BIOS\r
+\r
+#ifndef NEWMODELSBIOSHANDLER\r
+ // memcpy(jagMemSpace + 0xE00000, jaguarBootROM, 0x20000); // Use the stock BIOS\r
memcpy(jagMemSpace + 0xE00000, (vjs.biosType == BT_K_SERIES ? jaguarBootROM : jaguarBootROM2), 0x20000); // Use the stock BIOS\r
+#else\r
+ SelectBIOS(vjs.biosType);\r
+#endif\r
\r
// Prevent the file scanner from running if filename passed\r
// in on the command line...\r
\r
// Attempt to load/run the ABS file...\r
LoadSoftware(vjs.absROMPath);\r
+#ifndef NEWMODELSBIOSHANDLER\r
memcpy(jagMemSpace + 0xE00000, jaguarDevBootROM2, 0x20000); // Use the stub BIOS\r
+#else\r
+ SelectBIOS(vjs.biosType);\r
+#endif\r
// Prevent the scanner from running...\r
return;\r
}\r
\r
// Attempt to load/run the ABS file...\r
LoadSoftware(vjs.absROMPath);\r
+#ifndef NEWMODELSBIOSHANDLER\r
memcpy(jagMemSpace + 0xE00000, jaguarDevBootROM2, 0x20000); // Use the stub BIOS\r
// Prevent the scanner from running...\r
+#else\r
+ SelectBIOS(vjs.biosType);\r
+#endif\r
return;\r
}\r
\r
running = false; // Prevent bad things(TM) from happening...\r
pauseForFileSelector = false; // Reset the file selector pause flag\r
\r
+#ifndef NEWMODELSBIOSHANDLER\r
uint8_t * biosPointer = jaguarBootROM;\r
\r
if (vjs.hardwareTypeAlpine || vjs.softTypeDebugger)\r
}\r
\r
memcpy(jagMemSpace + 0xE00000, biosPointer, 0x20000);\r
+#else\r
+ SelectBIOS(vjs.biosType);\r
+#endif\r
\r
powerAct->setDisabled(false);\r
powerAct->setChecked(true);\r
}\r
else\r
{\r
+ // Prevent the Alpine mode to crash in case of software without a start address\r
if (vjs.hardwareTypeAlpine && !jaguarRunAddress)\r
{\r
ToggleRunState();\r
vjs.hardwareTypeNTSC = settings.value("hardwareTypeNTSC", true).toBool();\r
vjs.frameSkip = settings.value("frameSkip", 0).toInt();\r
vjs.useJaguarBIOS = settings.value("useJaguarBIOS", false).toBool();\r
+ vjs.useRetailBIOS = settings.value("useRetailBIOS", false).toBool();\r
+ vjs.useDevBIOS = settings.value("useDevBIOS", false).toBool();\r
vjs.GPUEnabled = settings.value("GPUEnabled", true).toBool();\r
vjs.DSPEnabled = settings.value("DSPEnabled", true).toBool();\r
vjs.audioEnabled = settings.value("audioEnabled", true).toBool();\r
vjs.glFilter = settings.value("glFilterType", 1).toInt();\r
vjs.renderType = settings.value("renderType", 0).toInt();\r
vjs.biosType = settings.value("biosType", BT_M_SERIES).toInt();\r
+ vjs.jaguarModel = settings.value("jaguarModel", JAG_M_SERIES).toInt();\r
vjs.useFastBlitter = settings.value("useFastBlitter", false).toBool();\r
strcpy(vjs.EEPROMPath, settings.value("EEPROMs", QStandardPaths::writableLocation(QStandardPaths::DataLocation).append("/eeproms/")).toString().toUtf8().data());\r
strcpy(vjs.ROMPath, settings.value("ROMs", QStandardPaths::writableLocation(QStandardPaths::DataLocation).append("/software/")).toString().toUtf8().data());\r
settings.setValue("hardwareTypeNTSC", vjs.hardwareTypeNTSC);\r
settings.setValue("frameSkip", vjs.frameSkip);\r
settings.setValue("useJaguarBIOS", vjs.useJaguarBIOS);\r
+ settings.setValue("useRetailBIOS", vjs.useRetailBIOS);\r
+ settings.setValue("useDevBIOS", vjs.useDevBIOS);\r
settings.setValue("GPUEnabled", vjs.GPUEnabled);\r
settings.setValue("DSPEnabled", vjs.DSPEnabled);\r
settings.setValue("audioEnabled", vjs.audioEnabled);\r
settings.setValue("useOpenGL", vjs.useOpenGL);\r
settings.setValue("glFilterType", vjs.glFilter);\r
settings.setValue("renderType", vjs.renderType);\r
+ settings.setValue("jaguarModel", vjs.jaguarModel);\r
settings.setValue("biosType", vjs.biosType);\r
settings.setValue("useFastBlitter", vjs.useFastBlitter);\r
settings.setValue("JagBootROM", vjs.jagBootPath);\r
// the braindead way in which MAME handled memory when this was written. :-)
//
// JLH = James Hammons
+// JPM = Jean-Paul Mari
//
// WHO WHEN WHAT
// --- ---------- -----------------------------------------------------------
// JLH 11/25/2009 Major rewrite of memory subsystem and handlers
+// JPM 09/04/2018 Added the new Models and BIOS handler
//
+#define NEWMODELSBIOSHANDLER // New Jaguar models and bios usage handler
+
+
#include "jaguar.h"
#include <QApplication>
#include <QMessageBox>
#include "settings.h"
#include "tom.h"
//#include "debugger/brkWin.h"
-
+#ifdef NEWMODELSBIOSHANDLER
+#include "modelsBIOS.h"
+#endif
#define CPU_DEBUG
//Do this in makefile??? Yes! Could, but it's easier to define here...
{
// Only problem with this approach: It wipes out RAM loaded files...!
// Contents of local RAM are quasi-stable; we simulate this by randomizing RAM contents
- for(uint32_t i=8; i<vjs.DRAM_size; i+=4)
+ for (uint32_t i = 8; i < vjs.DRAM_size; i += 4)
+ {
*((uint32_t *)(&jaguarMainRAM[i])) = rand();
+ }
// New timer base code stuffola...
InitializeEventList();
//Also, have to change this here and in JaguarReadXX() currently
// Only use the system BIOS if it's available...! (it's always available now!)
// AND only if a jaguar cartridge has been inserted.
+#ifndef NEWMODELSBIOSHANDLER
if (vjs.useJaguarBIOS && jaguarCartInserted && !vjs.hardwareTypeAlpine && !vjs.softTypeDebugger)
+ {
memcpy(jaguarMainRAM, jagMemSpace + 0xE00000, 8);
+#else
+ if (vjs.useJaguarBIOS && jaguarCartInserted)
+ {
+ SetBIOS();
+#endif
+ }
else
+ {
SET32(jaguarMainRAM, 4, jaguarRunAddress);
+ }
// WriteLog("jaguar_reset():\n");
TOMReset();