X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Fmainwin.cpp;h=4f9dcce2e8576ea89525adf5ea984197a09e571d;hb=f45b4acc547ca85d9af9efa37d8caa68c20a42e6;hp=0c3567116d0664cbb82644d8f92ae670ff56be74;hpb=9b7c073bb2dd8392c5f1fd9373e6b8eb1ceab2d3;p=virtualjaguar diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index 0c35671..4f9dcce 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -63,7 +63,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() +MainWin::MainWin(): showUntunedTankCircuit(true) { videoWidget = new GLWidget(this); setCentralWidget(videoWidget); @@ -133,6 +133,9 @@ MainWin::MainWin() filePickAct->setStatusTip(tr("Insert a cartridge into Virtual Jaguar")); connect(filePickAct, SIGNAL(triggered()), this, SLOT(InsertCart())); + // Misc. connections... + connect(filePickWin, SIGNAL(RequestLoad(QString)), this, SLOT(LoadSoftware(QString))); + // Create menus & toolbars fileMenu = menuBar()->addMenu(tr("&File")); @@ -145,6 +148,7 @@ MainWin::MainWin() toolbar = addToolBar(tr("Stuff")); toolbar->addAction(powerAct); + toolbar->addAction(filePickAct); toolbar->addSeparator(); toolbar->addAction(x1Act); toolbar->addAction(x2Act); @@ -175,6 +179,10 @@ MainWin::MainWin() connect(timer, SIGNAL(timeout()), this, SLOT(Timer())); timer->start(20); + // NOTE: Keyboards/joysticks will *not* work until SDL is brought back in, or + // the key handling is improved in Qt... + // Wait a minute... it seems they already are... So why no keyboard love? + #ifdef VJ_RELEASE_VERSION WriteLog("Virtual Jaguar %s (Last full build was on %s %s)\n", VJ_RELEASE_VERSION, __DATE__, __TIME__); #else @@ -210,12 +218,14 @@ WriteLog("About to attempt to load BIOSes...\n"); // JaguarLoadFile("./software/Rayman (World).j64"); // JaguarLoadFile("./software/I-War (World).j64"); // JaguarLoadFile("./software/Alien vs Predator (World).j64"); - JaguarLoadFile("./software/Rayman (USA, Europe).zip"); +//no JaguarLoadFile("./software/battlesphere.bin"); +// JaguarLoadFile("./software/Battle Sphere Gold (World).j64"); +// JaguarLoadFile("./software/Rayman (USA, Europe).zip"); //This is crappy!!! !!! FIX !!! //Is this even needed any more? Hmm. Maybe. Dunno. //Seems like it is... But then again, maybe not. Have to test it to see. -WriteLog("GUI: Resetting Jaguar...\n"); - JaguarReset(); +//WriteLog("GUI: Resetting Jaguar...\n"); +// JaguarReset(); } void MainWin::closeEvent(QCloseEvent * event) @@ -236,23 +246,27 @@ void MainWin::Timer(void) if (!running) return; -#if 0 - // Random hash & trash - // We try to simulate an untuned tank circuit here... :-) - for(uint32_t x=0; xrasterWidth; x++) + if (showUntunedTankCircuit) { - for(uint32_t y=0; yrasterHeight; y++) + // Random hash & trash + // We try to simulate an untuned tank circuit here... :-) + for(uint32_t x=0; xrasterWidth; x++) { - videoWidget->buffer[(y * videoWidget->textureWidth) + x] = (rand() & 0xFF) << 8 | (rand() & 0xFF) << 16 | (rand() & 0xFF) << 24;// | (rand() & 0xFF);//0x000000FF; -// buffer[(y * textureWidth) + x] = x*y; + for(uint32_t y=0; yrasterHeight; y++) + { + videoWidget->buffer[(y * videoWidget->textureWidth) + x] = (rand() & 0xFF) << 8 | (rand() & 0xFF) << 16 | (rand() & 0xFF) << 24;// | (rand() & 0xFF);//0x000000FF; + // buffer[(y * textureWidth) + x] = x*y; + } } } -#else - 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); -#endif + else + { + // 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); + } videoWidget->updateGL(); } @@ -441,6 +455,19 @@ void MainWin::InsertCart(void) filePickWin->show(); } +void MainWin::LoadSoftware(QString file) +{ + running = false; // Prevent bad things(TM) from happening... + SET32(jaguarMainRAM, 0, 0x00200000); // Set top of stack... + showUntunedTankCircuit = (JaguarLoadFile(file.toAscii().data()) ? false : true); +//This is crappy!!! !!! FIX !!! +//Is this even needed any more? Hmm. Maybe. Dunno. +//Seems like it is... But then again, maybe not. Have to test it to see. + WriteLog("GUI: Resetting Jaguar...\n"); + JaguarReset(); + running = true; +} + void MainWin::ResizeMainWindow(void) { videoWidget->setFixedSize(zoomLevel * 320, zoomLevel * (vjs.hardwareTypeNTSC ? 240 : 256));