aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2020-04-27 22:32:33 +0200
committerArisotura <thetotalworm@gmail.com>2020-04-27 22:32:33 +0200
commit3c883a2152c699b432c951b3498a1adc3d4c21b1 (patch)
treece44dc894d6bd499d7d4b901f9c1e3e60fbcda08 /src
parent931da1c66fb50138109f8bf4cb157db8f1e79c64 (diff)
hey look, it runs shit now!
Diffstat (limited to 'src')
-rw-r--r--src/frontend/FrontendUtil.h2
-rw-r--r--src/frontend/Util_ROM.cpp2
-rw-r--r--src/frontend/qt_sdl/main.cpp60
3 files changed, 58 insertions, 6 deletions
diff --git a/src/frontend/FrontendUtil.h b/src/frontend/FrontendUtil.h
index 7e171ce..91f3cdd 100644
--- a/src/frontend/FrontendUtil.h
+++ b/src/frontend/FrontendUtil.h
@@ -42,7 +42,7 @@ void Init_ROM();
// load a ROM file to the specified cart slot
// note: loading a ROM to the NDS slot resets emulation
-bool LoadROM(char* file, int slot);
+bool LoadROM(const char* file, int slot);
// get the filename associated with the given savestate slot
void GetSavestateName(int slot, char* filename, int len);
diff --git a/src/frontend/Util_ROM.cpp b/src/frontend/Util_ROM.cpp
index 574148b..ffee69a 100644
--- a/src/frontend/Util_ROM.cpp
+++ b/src/frontend/Util_ROM.cpp
@@ -57,7 +57,7 @@ void SetupSRAMPath(int slot)
strncpy(SRAMPath[slot] + strlen(ROMPath[slot]) - 3, "sav", 3);
}
-bool LoadROM(char* file, int slot)
+bool LoadROM(const char* file, int slot)
{
char oldpath[1024];
char oldsram[1024];
diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp
index 648cd99..6b4c873 100644
--- a/src/frontend/qt_sdl/main.cpp
+++ b/src/frontend/qt_sdl/main.cpp
@@ -35,13 +35,15 @@
#include "types.h"
#include "version.h"
+#include "FrontendUtil.h"
+
#include "NDS.h"
-#include "GBACart.h"
#include "GPU.h"
#include "SPU.h"
#include "Wifi.h"
#include "Platform.h"
#include "Config.h"
+#include "PlatformConfig.h"
#include "Savestate.h"
@@ -102,7 +104,7 @@ void EmuThread::run()
char melontitle[100];
SDL_mutex* titlemutex = SDL_CreateMutex();
void* titledata[2] = {melontitle, titlemutex};
-printf("emu thread start: %d\n", EmuRunning);
+
while (EmuRunning != 0)
{
/*ProcessInput();
@@ -389,8 +391,56 @@ MainWindow::~MainWindow()
void MainWindow::onOpenFile()
{
- QString filename = QFileDialog::getOpenFileName(this, "Open ROM", "", "DS ROMs (*.nds *.srl);;Any file (*.*)");
- printf("fark: %p %d %s\n", filename, filename.isEmpty(), filename.toStdString().c_str());
+ emuThread->emuPause(true);
+
+ QString filename = QFileDialog::getOpenFileName(this,
+ "Open ROM",
+ Config::LastROMFolder,
+ "DS ROMs (*.nds *.srl);;GBA ROMs (*.gba);;Any file (*.*)");
+ if (filename.isEmpty())
+ {
+ emuThread->emuUnpause();
+ return;
+ }
+
+ // this shit is stupid
+ char file[1024];
+ strncpy(file, filename.toStdString().c_str(), 1023); file[1023] = '\0';
+
+ int pos = strlen(file)-1;
+ while (file[pos] != '/' && file[pos] != '\\' && pos > 0) pos--;
+ strncpy(Config::LastROMFolder, file, pos);
+ Config::LastROMFolder[pos] = '\0';
+ char* ext = &file[strlen(file)-3];
+
+ int slot; bool res;
+ if (!strcasecmp(ext, "gba"))
+ {
+ slot = 1;
+ res = Frontend::LoadROM(file, Frontend::ROMSlot_GBA);
+ }
+ else
+ {
+ slot = 0;
+ res = Frontend::LoadROM(file, Frontend::ROMSlot_NDS);
+ }
+
+ if (!res)
+ {
+ QMessageBox::critical(this,
+ "melonDS",
+ "Failed to load the ROM.\n\nMake sure the file is accessible and isn't used by another application.");
+ emuThread->emuUnpause();
+ }
+ else if (slot == 1)
+ {
+ // checkme
+ emuThread->emuUnpause();
+ }
+ else
+ {
+ emuThread->emuRun();
+ }
}
@@ -557,6 +607,8 @@ int main(int argc, char** argv)
}
#endif
+ RunningSomething = false;
+
mainWindow = new MainWindow();
mainWindow->show();