//#include "memory.h"
+#ifdef __GCCWIN32__
+// Apparently on win32, they left of the last little bits of these. So let's do this:
+#define random rand
+#define srandom srand
+#endif
+
// Seems alignment in loads & stores was off...
#define DSP_CORRECT_ALIGNMENT
//#define DSP_CORRECT_ALIGNMENT_STORE
// Maybe it works like this: It acknowledges the 1st interrupt, but never clears it.
// So subsequent interrupts come into the chip, but they're never serviced but the
// I2S subsystem keeps going.
+// After some testing on real hardware, it seems that if you enable TIMER0 and EXTERNAL
+// IRQs on J_INT ($F10020), you don't have to run an I2S interrupt on the DSP. Also,
+// It seems that it's only stable for values of SCLK <= 9.
if (data & INT_ENA1) // I2S interrupt
{
WriteLog("Virtual Jaguar %s (Last full build was on %s %s)\n", VJ_RELEASE_VERSION, __DATE__, __TIME__);
WriteLog("VJ: Initializing jaguar subsystem...\n");
JaguarInit();
+ memcpy(jagMemSpace + 0xE00000, jaguarBootROM, 0x20000); // Use the stock BIOS
+ // Check for filename passed in on the command line...
if (!filenameToRun.isEmpty())
{
loadAndGo = true;
// Attempt to load/run the file the user passed in...
LoadSoftware(filenameToRun);
- memcpy(jagMemSpace + 0xE00000, jaguarBootROM, 0x20000); // Use the stock BIOS
+// memcpy(jagMemSpace + 0xE00000, jaguarBootROM, 0x20000); // Use the stock BIOS
// Prevent the scanner from running...
return;
}
// Prevent the scanner from running...
return;
}
- else
- memcpy(jagMemSpace + 0xE00000, jaguarBootROM, 0x20000); // Otherwise, use the stock BIOS
+// else
+// memcpy(jagMemSpace + 0xE00000, jaguarBootROM, 0x20000); // Otherwise, use the stock BIOS
+ // Run the scanner if nothing passed in and *not* Alpine mode...
+ // NB: Really need to look into caching the info scanned in here...
filePickWin->ScanSoftwareFolder(allowUnknownSoftware);
}
// WriteLog("JERRY: D_FLAGS word written by %s: %u\n", whoName[who], data);
//else if (offset == 0xF1A102)
// WriteLog("JERRY: D_FLAGS+2 word written by %s: %u\n", whoName[who], data);
-//else if (offset == 0xF10020)
-// WriteLog("JERRY: JINTCTRL word written by %s: $%04X\n", whoName[who], data);
+else if (offset == 0xF10020)
+ WriteLog("JERRY: JINTCTRL word written by %s: $%04X (%s%s%s%s%s%s)\n", whoName[who], data,
+ (data & 0x01 ? "Extrnl " : ""), (data & 0x02 ? "DSP " : ""),
+ (data & 0x04 ? "Timer0 " : ""), (data & 0x08 ? "Timer1 " : ""),
+ (data & 0x10 ? "ASI " : ""), (data & 0x20 ? "I2S " : ""));
#endif
if ((offset >= DSP_CONTROL_RAM_BASE) && (offset < DSP_CONTROL_RAM_BASE+0x20))