prepare:
@echo -e "\033[01;33m***\033[00;32m Preparing to compile Virtual Jaguar...\033[00m"
-# @echo "#define VJ_RELEASE_VERSION \"v2.0.1\"" > src/version.h
+# @echo "#define VJ_RELEASE_VERSION \"v2.0.2\"" > src/version.h
# @echo "#define VJ_RELEASE_SUBVERSION \"Final\"" >> src/version.h
@echo "#define VJ_RELEASE_VERSION \"SVN `svn info | grep -i revision`\"" > src/version.h
- @echo "#define VJ_RELEASE_SUBVERSION \"2.0.1 Prerelease\"" >> src/version.h
+ @echo "#define VJ_RELEASE_SUBVERSION \"2.0.2 Prerelease\"" >> src/version.h
virtualjaguar: sources libs makefile-qt
@echo -e "\033[01;33m***\033[00;32m Making Virtual Jaguar GUI...\033[00m"
----------------------------------------
-Virtual Jaguar v2.0.0 Qt release INSTALL
+Virtual Jaguar v2.0.2 Qt release INSTALL
----------------------------------------
-------------------------------------------
-Virtual Jaguar v2.0.0 GCC/Qt release README
+Virtual Jaguar v2.0.2 GCC/Qt release README
-------------------------------------------
--------------
The use of this software is entirely at your own risk. While it won't rape
your dog, it might do other nasty things. We can't be held responsible for
-damage done to you hardware and/or software. You have been warned! You may only
-use the ROM images if you own the cartridges itself. The use of Commercial ROMs
-without owning the original cartridge is illegal in most countries and could
-result in fines and/or legal actions.
+damage done to you hardware and/or software. You may only use the ROM images if
+you own the cartridges itself. The use of Commercial ROMs without owning the
+original cartridge is illegal in most countries and could result in fines
+and/or legal actions.
This software is released under the GPL v3 or later. For more information I
direct you to the GPLv3 file. You may hack/change the code anyway you like. You
+Virtual Jaguar v2.0.2 GCC/Qt
+----------------------------
+
+* Fixed problem on OP with 24BPP bitmaps. [Shamus]
+* Cosmetic GUI fixes. [Shamus]
+
+Virtual Jaguar v2.0.1 GCC/Qt
+----------------------------
+
+* Fixed NTSC timings; they were hardwired to PAL rates. [Shamus]
+* Fixed possible missing trailing slash on path fields input by user. [Shamus]
+* Fixed exit hotkey to work on Win32. [Shamus]
+* Changed PAL/NTSC switch to only work when virtual machine is powered off.
+ [Shamus]
+* Miscellaneous documentation fixes. [Shamus]
+
Virtual Jaguar v2.0.0 GCC/Qt
----------------------------
"</td></tr>"
"<tr><td align='right'><b>Coders: </b></td><td>James L. Hammons (shamus)<br>Niels Wagenaar (nwagenaar)<br>Carwin Jones (Caz)<br>Adam Green</td></tr>"
"<tr><td align='right'><b>Testers: </b></td><td>Cyrano Jones, Robert R, TheUMan, Dissection,<br>overridex, geormetal</td></tr>"
- "<tr><td align='right'><b>Build Team: </b></td><td>ggn (win32)<br>goldenegg (MacOS)</td></tr>"
+ "<tr><td align='right'><b>Build Team: </b></td><td>ggn (win32)<br>LinkoVitch, goldenegg (MacOS)</td></tr>"
"<tr><td align='right'><b>Homepage: </b></td><td>http://icculus.org/virtualjaguar/</td></tr>"
"</table>"
"<br><br>"
quitAppAct->setStatusTip(tr("Quit Virtual Jaguar"));
connect(quitAppAct, SIGNAL(triggered()), this, SLOT(close()));
- powerAct = new QAction(QIcon(":/res/power.png"), tr("&Power"), this);
+ powerGreen.addFile(":/res/power-off.png", QSize(), QIcon::Normal, QIcon::Off);
+ powerGreen.addFile(":/res/power-on-green.png", QSize(), QIcon::Normal, QIcon::On);
+ powerRed.addFile(":/res/power-off.png", QSize(), QIcon::Normal, QIcon::Off);
+ powerRed.addFile(":/res/power-on-red.png", QSize(), QIcon::Normal, QIcon::On);
+
+// powerAct = new QAction(QIcon(":/res/power.png"), tr("&Power"), this);
+ powerAct = new QAction(powerGreen, tr("&Power"), this);
powerAct->setStatusTip(tr("Powers Jaguar on/off"));
powerAct->setCheckable(true);
powerAct->setChecked(false);
// powerAct->setDisabled(true);
connect(powerAct, SIGNAL(triggered()), this, SLOT(TogglePowerState()));
- pauseAct = new QAction(QIcon(":/res/pause.png"), tr("Pause"), this);
+ QIcon pauseIcon;
+ pauseIcon.addFile(":/res/pause-off", QSize(), QIcon::Normal, QIcon::Off);
+ pauseIcon.addFile(":/res/pause-on", QSize(), QIcon::Normal, QIcon::On);
+// pauseAct = new QAction(QIcon(":/res/pause.png"), tr("Pause"), this);
+ pauseAct = new QAction(pauseIcon, tr("Pause"), this);
pauseAct->setStatusTip(tr("Toggles the running state"));
pauseAct->setCheckable(true);
pauseAct->setDisabled(true);
// running = powerAct->isChecked();
ntscAct->setChecked(vjs.hardwareTypeNTSC);
palAct->setChecked(!vjs.hardwareTypeNTSC);
+ powerAct->setIcon(vjs.hardwareTypeNTSC ? powerRed : powerGreen);
// Do this in case original size isn't correct (mostly for the first-run case)
ResizeMainWindow();
void MainWin::SetNTSC(void)
{
+ powerAct->setIcon(powerRed);
timer->setInterval(16);
vjs.hardwareTypeNTSC = true;
ResizeMainWindow();
void MainWin::SetPAL(void)
{
+ powerAct->setIcon(powerGreen);
timer->setInterval(20);
vjs.hardwareTypeNTSC = false;
ResizeMainWindow();
QAction * filePickAct;
QAction * configAct;
QAction * useCDAct;
+
+ QIcon powerGreen;
+ QIcon powerRed;
};
#endif // __MAINWIN_H__
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>../../res/vj-icon.png</file>
- <file>../../res/power.png</file>
- <file>../../res/pause.png</file>
+ <file>../../res/power-off.png</file>
+ <file>../../res/power-on-red.png</file>
+ <file>../../res/power-on-green.png</file>
+ <file>../../res/pause-off.png</file>
+ <file>../../res/pause-on.png</file>
<file>../../res/zoom100.png</file>
<file>../../res/zoom200.png</file>
<file>../../res/zoom300.png</file>
if (!render || iwidth == 0)
return;
+//OK, so we know the position in the line buffer is correct. It's the clipping in
+//24bpp mode that's wrong!
+#if 0
+//This is a total kludge, based upon the fact that 24BPP mode puts *4* bytes
+//into the line buffer for each pixel.
+if (depth == 5) // i.e., 24bpp mode...
+ xpos >>= 1; // Cut it in half...
+#endif
+
//#define OP_DEBUG_BMP
//#ifdef OP_DEBUG_BMP
// WriteLog("bitmap %ix%i %ibpp at %i,%i firstpix=%i data=0x%.8x pitch %i hflipped=%s dwidth=%i (linked to 0x%.8x) Transluency=%s\n",
// Not sure if this is Jaguar Two only location or what...
// From the docs, it is... If we want to limit here we should think of something else.
// int32 limit = GET16(tom_ram_8, 0x0008); // LIMIT
+// int32 limit = 720;
+// int32 lbufWidth = (!in24BPPMode ? limit - 1 : (limit / 2) - 1); // Zero based limit...
+//printf("[OP:xpos=%i,spos=%i,epos=%i>", xpos, startPos, endPos);
+ // This is correct, the OP line buffer is a constant size...
int32 limit = 720;
- int32 lbufWidth = (!in24BPPMode ? limit - 1 : (limit / 2) - 1); // Zero based limit...
+ int32 lbufWidth = 719;
// If the image is completely to the left or right of the line buffer, then bail.
//If in REFLECT mode, then these values are swapped! !!! FIX !!! [DONE]
clippedWidth = startPos - lbufWidth,
dataClippedWidth = phraseClippedWidth = clippedWidth / phraseWidthToPixels[depth],
startPos = lbufWidth + (clippedWidth % phraseWidthToPixels[depth]);
+//printf("<OP:spos=%i,epos=%i]", startPos, endPos);
// If the image is sitting on the line buffer left or right edge, we need to compensate
// by decreasing the image phrase width accordingly.
// uint32 lbufAddress = 0x1800 + (!in24BPPMode ? leftMargin * 2 : leftMargin * 4);
//Why does this work right when multiplying startPos by 2 (instead of 4) for 24 BPP mode?
//Is this a bug in the OP?
- uint32 lbufAddress = 0x1800 + (!in24BPPMode ? startPos * 2 : startPos * 2);
+//It's because in 24bpp mode, each pixel takes *4* bytes, instead of the usual 2.
+//Though it looks like we're doing it here no matter what...
+// uint32 lbufAddress = 0x1800 + (!in24BPPMode ? startPos * 2 : startPos * 2);
+//Let's try this:
+ uint32 lbufAddress = 0x1800 + (startPos * 2);
uint8 * currentLineBuffer = &tomRam8[lbufAddress];
// Render.
// From the docs, it is... If we want to limit here we should think of something else.
// int32 limit = GET16(tom_ram_8, 0x0008); // LIMIT
int32 limit = 720;
- int32 lbufWidth = (!in24BPPMode ? limit - 1 : (limit / 2) - 1); // Zero based limit...
+// int32 lbufWidth = (!in24BPPMode ? limit - 1 : (limit / 2) - 1); // Zero based limit...
+ int32 lbufWidth = 719; // Zero based limit...
// If the image is completely to the left or right of the line buffer, then bail.
//If in REFLECT mode, then these values are swapped! !!! FIX !!! [DONE]
src/gui/help.h \
src/gui/imagedelegate.h \
src/gui/keygrabber.h \
- src/gui/mainwin.h
+ src/gui/mainwin.h \
+ src/gui/sdljoystick.h
SOURCES = \
src/gui/about.cpp \
src/gui/help.cpp \
src/gui/imagedelegate.cpp \
src/gui/keygrabber.cpp \
- src/gui/mainwin.cpp
+ src/gui/mainwin.cpp \
+ src/gui/sdljoystick.cpp