From: Shamus Hammons Date: Wed, 11 Apr 2012 17:10:26 +0000 (+0000) Subject: Fix to compile on win32. X-Git-Tag: 2.1.0~35 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=576a7bd6373a53d9cff6a7bb88334429469e0751;p=virtualjaguar Fix to compile on win32. --- diff --git a/src/dsp.cpp b/src/dsp.cpp index a620775..3ab0b62 100644 --- a/src/dsp.cpp +++ b/src/dsp.cpp @@ -29,6 +29,12 @@ //#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 @@ -810,6 +816,9 @@ SET32(ram2, offset, data); // 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 { diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index ea4f8d4..b8a7de0 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -260,13 +260,15 @@ MainWin::MainWin(QString filenameToRun): running(true), powerButtonOn(false), 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; } @@ -292,9 +294,11 @@ MainWin::MainWin(QString filenameToRun): running(true), powerButtonOn(false), // 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); } diff --git a/src/jerry.cpp b/src/jerry.cpp index cba9571..d0d44af 100644 --- a/src/jerry.cpp +++ b/src/jerry.cpp @@ -814,8 +814,11 @@ else if (offset == 0xF10014) // 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))