From 34c2f4526d11f2139130c4c94920dd7b1c7a6124 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Thu, 6 Oct 2011 14:28:34 +0000 Subject: [PATCH] Mask out ALT for now, small optimization in screen rendering code. --- docs/INSTALL | 5 +-- docs/README | 89 +++++--------------------------------- docs/WHATSNEW | 2 +- res/help.html | 13 ++++++ res/pause.png | Bin 563 -> 1348 bytes res/power.png | Bin 989 -> 3809 bytes res/zoom100.png | Bin 1448 -> 895 bytes res/zoom200.png | Bin 1487 -> 978 bytes res/zoom300.png | Bin 1452 -> 987 bytes src/filedb.cpp | 1 + src/gui/glwidget.cpp | 9 ++++ src/gui/help.cpp | 15 +++---- src/gui/keygrabber.cpp | 5 ++- src/gui/mainwin.cpp | 33 ++++++++++---- src/gui/virtualjaguar.qrc | 1 + src/op.cpp | 6 ++- src/tom.cpp | 3 ++ 17 files changed, 79 insertions(+), 103 deletions(-) create mode 100644 res/help.html diff --git a/docs/INSTALL b/docs/INSTALL index 299e206..36ea778 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -31,8 +31,7 @@ Optionally you can manually strip virtualjaguar[.exe] to downsize the binary. You can also run upx on the binary as well and you'll end up with a somewhat smaller binary. -That's it! You can now start the emulator with ./virtualjaguar. See the output -for more details (or stdout.txt on Win32) or consult the README file for more -info. +That's it! You can now start the emulator with ./virtualjaguar. See the built +in help (Help|Contents) for more info. For even more info, go to http://icculus.org/virtualjaguar. diff --git a/docs/README b/docs/README index da59ae4..1f2f3b3 100644 --- a/docs/README +++ b/docs/README @@ -107,75 +107,9 @@ http://www.libsdl.org. Thanks Sam--you rock! :) - Using Virtual Jaguar GCC/Qt - ------------------------------- -After compiling the binary (see INSTALL) you can now run original Atari Jaguar -games. These games are distributed on cartridges and can therefore cannot be -used on a PC (we're still waiting for that Jaguar-on-a-PCI-card that you plug -into your late model PC, complete with cartridge slot and controller connectors -;-). To use these games on Virtual Jaguar GCC/Qt you need to get ROM images. -For legal issues concerning ROM images please consult the DISCLAIMER at the -beginning of this file. - -After obtaining several game ROMs you can now use Virtual Jaguar using the -following command: - -./virtualjaguar [romfile] [-switches] - -The context of ROMFILE is the filename of the an Atari Jaguar ROM dump (can be -either compressed or uncompressed). You can also use switches. By just typing -./virtualjaguar -? (or ./virtualjaguar -help) you get an overview of the -options you can use. WIN32 users should look into the stdout.txt in the -directory they ran Virtual Jaguar for that information. Also, WIN32 users -should be aware that if their ROM filenames contain any spaces, you will have -to enclose the ROMFILE in double quotes for Virtual Jaguar to function -properly. - -Note that running Virtual Jaguar this way will cause the emulator to exit -completely upon pressing the ESC key. If this is not what you want, then omit -the ROMFILE and it will bring up a nice GUI instead. - -If you prefer a nice GUI instead of typing in command lines, you can either -type ./virtualjaguar or double click on the Virtual Jaguar executable. If you -have a directory full of ROM files, you can tell Virtual Jaguar where they are -by editing the appropriate line in the vj.cfg file (it assumes a ROMs directory -under the directory where VJ lives) so that they show up when you pick the -"Load" option from the "File" menu. - -This emulator also emulates the Atari Jaguar gamepads. By using the following -keyboard or joystick settings you can (possibly) play a given game: - -Atari Button C : Z or joystick button 3 -Atari Button B : X or joystick button 2 -Atari Button A : C or joystick button 1 -Atari Buttons 1 - 10 : Keypad 0 - 9 (0 = 10) -Atari Start/Pause : ENTER -Atari Select : ' -Atari UP : UP or joystick UP -Atari DOWN : DOWN or joystick DOWN -Atari LEFT : LEFT or joystick LEFT -Atari RIGHT : RIGHT or joystick RIGHT -Atari # : Keypad / -Atari * : Keypad * - -With ESC you can easily stop Virtual Jaguar GCC/Qt which will get you back to -the GUI (pressing ESC again will take you back to the game). To exit VJ, you -can either select File|Quit or press the "Q" key on your keyboard. If you want -to change the key layout, simply edit the vj.cfg file and change the keys. :) -NOTE: There are quite a few keys mapped to debugging functions at present. You -have been warned! - -------------------- -- A note on sound - -------------------- - -By default, the Virtual Jaguar's DSP is turned off, since it doesn't work very -well at present (it requires a lot of horsepower to sound decent at this -point!). In order to hear any sound at all, you have to either edit the vj.cfg -file and change the appropriate line or set the DSP on in the GUI (found under -Settings|Misc). One word of caution: Use the old DSP core instead of the new -pipelined version for now--the new pipelined DSP core has not yet been -optimized and runs quite slow at present! Once the DSP issues have been ironed -out, it will be turned on by default and you won't have to deal with it -anymore. ;) +Simply double click on the Virtual Jaguar icon or type ./virtualjaguar from +the command line. See the built in help (under Help|Contents) for more +information on how to use it. :-) ----------- - Finally - @@ -190,16 +124,13 @@ website [http://sdlemu.ngemu.com]. We hope you enjoy the emulator and will use it wisely! -Special thanks go to guys over at ngemu.com and #ngemu (EFNET). Thanks also to -David Raingeard of Potato Emulation who originally developed this emulator and +Thanks go to guys over at ngemu.com and #ngemu (EFNET). Thanks also to David +Raingeard of Potato Emulation who originally developed this emulator and released the sources to the public. We couldn't have done it without you! -SDLEMU - +Special thanks go to everyone who submitted good, detailed bug reports, +sometimes with demonstration code(!); your help has helped to make Virtual +Jaguar better, more accurate, and more polished than it would be otherwise. We +really appreciate your help! -*** Stuff to add in: - - o Documentation needs a rewrite, more or less, as the GUI is now front and - center. Need to update the docs to reflect this change. - o Document the new "solid" zip file archive mechanism which allows putting - artwork into a "ROM". +SDLEMU diff --git a/docs/WHATSNEW b/docs/WHATSNEW index 6d5d3a6..bb53efa 100644 --- a/docs/WHATSNEW +++ b/docs/WHATSNEW @@ -6,7 +6,7 @@ Virtual Jaguar v2.0.0 GCC/Qt means is that now you can have other goodies inside of your ROM ZIP like labels, box art, and overlays. See README for details. [Shamus] * Various usability improvements, too many to list here. ;-) [Shamus] -* Various compatibility improvemnents to the Jaguar core, too many to list +* Various compatibility improvements to the Jaguar core, too many to list here. ;-) [Shamus] diff --git a/res/help.html b/res/help.html new file mode 100644 index 0000000..c9bd8cc --- /dev/null +++ b/res/help.html @@ -0,0 +1,13 @@ + + + +Virtual Jaguar: The Documentation + + + +

Virtual Jaguar: The Documentation

+ +Coming Soon! + + + diff --git a/res/pause.png b/res/pause.png index 1032cb9a24b0b83d3b3a3a1db8b37b4f98671ede..7b03a0dea030b6e739bd70f6c51c2d9e4a36d279 100644 GIT binary patch literal 1348 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 Xm4PQ&*<*AF00000NkvXXu0mjfZG+fp delta 975 zcmV;=12FvI9o+{miBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=0drDE zLIAGL9O;oj9)H>a6craQDb=LK0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0} zP*;Ht7XSbQN=ZaPR9M5smrY1iQ5462j(up&q~#)mS-dDKBFI#N0Wl3SB5gB>feUL< z>drEW2$W_~NJK=Gwke2UtWh$Zpbw-;gdrVG7qv))w||(lT9i3vALiKRzPdf`D`%YY z50CfWedpc#zvrBL|K}#nWoELNSQ5`qvrcDvayXm~Y!^+#vrgwwayUE@YhOumdSD-L z5!eJI0bhYDKwYdI+2ZtEku*5Ka-b@nj^ZV-MjG6}%0v>#2fBgJz?^XL4L}p$b;Un( zz*_Na2Y<4F9C5eDLLe8o1MCJ;MB6gpAg~Ld*XIkU@(I`@o=bsFU_e}*y*^+5dB zUdjQ60h${cYHB>5vp~9n$Tgr^_JAG8P#8Xz2M35mA`Zpi0B?a&exM}89MPfgvaF#2Ggk+B3{c6Zm;mX}`!#(>wr)#BpfM-~J^Vkb4j zEhpg%V5`Ys6xf&`+5ZHrFttqrX*T{3qJLJqutDIx!XP7o1iq<4DHG^d7^F#C>q4L@ z+z&7!6X>*1H+KRER7$EU@rN2Q?z3USU>IYO@dG+_+SGokF~a}=002ovPDHLkV1nyUrJ4W$ diff --git a/res/zoom100.png b/res/zoom100.png index 1c3422797fa446ec993ecd1d9ab755c17236ed10..8cbc738ea3258d7ddcc2577014a4fa08270493ba 100644 GIT binary patch delta 833 zcmV-H1HSyI3;za?F%Je}OGiWi{{a60|De66laVeSf7=Kj4kHLQ%a|Pi0013nR9JLF zZ*6U5Zgc_CX>@2HM@dakWG-a~0008kNkl zHE2YUIaEYe;#5-+4NL?{5q*EHqD`#|q#y`dv~JO&pk<4oO@-FRu)tL&AtgiwF=&Q; zSTb5+e-sfaX&*XHn=^5^-1~fQX6(Y_op;W?=YQ^f=l;*V9?{x7pbl6E#DTm#9*_k- z0q=mHVI6t_w&lQ9U@uS)td1D$TOb2G0NR1iVFsmv7GPA(uAEORu*0h|-7)~3cC2K(k~JpRRAk%A1fF-~M8S4T8(t|xtOW3r z;^R_4E){TI+mvG^fS(Z`Y2a``0F&klRVu}^B7i;R_^ilB0|I!e@G4@!8f6@G0OSMc zfBJ*;3H$5%fz2W(eITifT}s{(kW8Lz-9g|$MDFNQa*YoxQi@SysQ``}4txO|0y=@V zX^NWJzAL%bS6qOxj8nh~pb?m3=)0xlZdXYhg$@5r#s_jrkuy492Re-1aa9V}{BlsE zZ+y?P^w}*3jd9=@a7wn?M3I;pBj*Eef0UxyF=!d^4QP@8x=NUIT**VeaZ*V-231NB zBf#YnSADILv%W!zD;N9(Ra|aMe{i9&Zk)>8v1g& zPj*Gx;DRu1Kr+2kj^kgW-i}?@C-Vfb0;o~Hzz4oaVe12ahjsWDp1AwB8IVFG00000 LNkvXXu0mjfH4AEn delta 1392 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":/res/vj_title_small.png")); // layout->addWidget(image); -// QString s = QString(tr("SVN %1
")).arg(__DATE__); - QString s;// = QString(""); - s.append(tr( - "

Virtual Jaguar Documentation

" - "
" - "Coming soon!" - )); text = new QTextBrowser; - text->setHtml(s); + text->setSource(QUrl("qrc:/res/help.html")); layout->addWidget(text); } - #if 0 +label size is 365x168 +scaled(365, 168 + #include "htmlviewer.moc" HtmlViewerWindow *htmlViewerWindow; diff --git a/src/gui/keygrabber.cpp b/src/gui/keygrabber.cpp index cc0b714..23954b8 100644 --- a/src/gui/keygrabber.cpp +++ b/src/gui/keygrabber.cpp @@ -45,5 +45,8 @@ void KeyGrabber::SetKeyText(int keyNum) void KeyGrabber::keyPressEvent(QKeyEvent * e) { key = e->key(); - accept(); + + // Since this is problematic, we don't allow this key... + if (key != Qt::Key_Alt) + accept(); } diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index 41c1a0e..08693d0 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -79,7 +79,7 @@ // We'll make the VJ core modular so that it doesn't matter what GUI is in // use, we can drop it in anywhere and use it as-is. -MainWin::MainWin(): running(false), powerButtonOn(false), showUntunedTankCircuit(true), +MainWin::MainWin(): running(true), powerButtonOn(false), showUntunedTankCircuit(true), cartridgeLoaded(false), CDActive(false),//, alpineLoadSuccessful(false), pauseForFileSelector(false) { @@ -115,7 +115,7 @@ MainWin::MainWin(): running(false), powerButtonOn(false), showUntunedTankCircuit powerAct->setStatusTip(tr("Powers Jaguar on/off")); powerAct->setCheckable(true); powerAct->setChecked(false); - powerAct->setDisabled(true); +// powerAct->setDisabled(true); connect(powerAct, SIGNAL(triggered()), this, SLOT(TogglePowerState())); pauseAct = new QAction(QIcon(":/res/pause.png"), tr("Pause"), this); @@ -226,7 +226,7 @@ MainWin::MainWin(): running(false), powerButtonOn(false), showUntunedTankCircuit x1Act->setChecked(zoomLevel == 1); x2Act->setChecked(zoomLevel == 2); x3Act->setChecked(zoomLevel == 3); - running = powerAct->isChecked(); +// running = powerAct->isChecked(); ntscAct->setChecked(vjs.hardwareTypeNTSC); palAct->setChecked(!vjs.hardwareTypeNTSC); @@ -294,11 +294,25 @@ void MainWin::closeEvent(QCloseEvent * event) void MainWin::keyPressEvent(QKeyEvent * e) { + // We ignore the Alt key for now, since it causes problems with the GUI + if (e->key() == Qt::Key_Alt) + { + e->accept(); + return; + } + HandleKeys(e, true); } void MainWin::keyReleaseEvent(QKeyEvent * e) { + // We ignore the Alt key for now, since it causes problems with the GUI + if (e->key() == Qt::Key_Alt) + { + e->accept(); + return; + } + HandleKeys(e, false); } @@ -342,7 +356,7 @@ void MainWin::HandleKeys(QKeyEvent * e, bool state) joypad_0_buttons[i] = (state ? 0x01 : 0x00); // Pad #2 is screwing up pad #1. Prolly a problem in joystick.cpp... -// So let's try to fix it there. :-P +// So let's try to fix it there. :-P [DONE] if (e->key() == (int)vjs.p2KeyBindings[i]) // joypad_1_buttons[i] = (uint8)state; joypad_1_buttons[i] = (state ? 0x01 : 0x00); @@ -444,9 +458,10 @@ void MainWin::Timer(void) { // Otherwise, run the Jaguar simulation JaguarExecuteNew(); -// memcpy(videoWidget->buffer, backbuffer, videoWidget->rasterHeight * videoWidget->rasterWidth); - memcpy(videoWidget->buffer, backbuffer, videoWidget->rasterHeight * videoWidget->textureWidth * sizeof(uint32_t)); -// memcpy(surface->pixels, backbuffer, TOMGetVideoModeWidth() * TOMGetVideoModeHeight() * 4); +//// memcpy(videoWidget->buffer, backbuffer, videoWidget->rasterHeight * videoWidget->rasterWidth); +//No longer needed--see glwidget.cpp for details! +// memcpy(videoWidget->buffer, backbuffer, videoWidget->rasterHeight * videoWidget->textureWidth * sizeof(uint32_t)); +//// memcpy(surface->pixels, backbuffer, TOMGetVideoModeWidth() * TOMGetVideoModeHeight() * 4); } videoWidget->updateGL(); @@ -568,7 +583,7 @@ void MainWin::InsertCart(void) { // If the emulator is running, we pause it here and unpause it later // if we dismiss the file selector without choosing anything - if (running) + if (running && powerButtonOn) { ToggleRunState(); pauseForFileSelector = true; @@ -618,6 +633,7 @@ void MainWin::ToggleCDUsage(void) { CDActive = !CDActive; +#if 0 if (CDActive) { powerAct->setDisabled(false); @@ -626,6 +642,7 @@ void MainWin::ToggleCDUsage(void) { powerAct->setDisabled(true); } +#endif } void MainWin::ResizeMainWindow(void) diff --git a/src/gui/virtualjaguar.qrc b/src/gui/virtualjaguar.qrc index 1e2f0f7..1c60900 100644 --- a/src/gui/virtualjaguar.qrc +++ b/src/gui/virtualjaguar.qrc @@ -23,5 +23,6 @@ ../../res/skunkboard-file.png ../../res/homebrew-file.png ../../res/unknown-file.png + ../../res/help.html diff --git a/src/op.cpp b/src/op.cpp index 3765250..2978c6d 100644 --- a/src/op.cpp +++ b/src/op.cpp @@ -682,9 +682,13 @@ OP: Scaled bitmap 4x? 4bpp at 34,? hscale=80 fpix=0 data=000756E8 pitch 1 hflipp op_pointer = link; break; case CONDITION_SECOND_HALF_LINE: +//Here's the ASIC code: +// ND4(cctrue5, newheight[2], heightl[1], heightl[0], hcb[10]); +//which means, do the link if bit 10 of HC is set... + // This basically means branch if bit 10 of HC is set #warning "Unhandled condition code causes emulator to crash... !!! FIX !!!" - WriteLog("OP: Unexpected CONDITION_SECOND_HALF_LINE in BRANCH object\nOP: shuting down\n"); + WriteLog("OP: Unexpected CONDITION_SECOND_HALF_LINE in BRANCH object\nOP: shutting down!\n"); LogDone(); exit(0); break; diff --git a/src/tom.cpp b/src/tom.cpp index 11d963b..ed47bf8 100644 --- a/src/tom.cpp +++ b/src/tom.cpp @@ -770,6 +770,7 @@ void TOMExecScanline(uint16 scanline, bool render) //Interlacing is still not handled correctly here... !!! FIX !!! if (scanline & 0x01) // Execute OP only on even lines (non-interlaced only!) +// if (!(scanline & 0x01)) // Execute OP only on even lines (non-interlaced only!) return; //Hm, it seems that the OP needs to execute from zero, so let's try it: @@ -1386,6 +1387,8 @@ if (offset == VP) WriteLog("TOM: Vertical Period written by %s: %u (%sinterlaced)\n", whoName[who], data, (data & 0x01 ? "non-" : "")); if (offset == HDB1) WriteLog("TOM: Horizontal Display Begin 1 written by %s: %u\n", whoName[who], data); +if (offset == HDB2) + WriteLog("TOM: Horizontal Display Begin 2 written by %s: %u\n", whoName[who], data); if (offset == HDE) WriteLog("TOM: Horizontal Display End written by %s: %u\n", whoName[who], data); if (offset == HP) -- 2.37.2