From be0b102eec76acf80acce7cd3de8e690e27564d4 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Sat, 23 Jan 2010 05:58:20 +0000 Subject: [PATCH] Added beginnings of graphical file chooser --- Makefile | 1 + src/gui/filepicker.cpp | 102 +++++++++++++++++++++++++++++++++++++++++ src/gui/filepicker.h | 5 ++ src/gui/mainwin.cpp | 9 +--- src/gui/vj.pro | 2 + 5 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 src/gui/filepicker.cpp create mode 100644 src/gui/filepicker.h diff --git a/Makefile b/Makefile index ebce4f7..870cd31 100644 --- a/Makefile +++ b/Makefile @@ -74,6 +74,7 @@ OBJS = \ \ obj/about.o \ obj/app.o \ + obj/filepicker.o \ obj/mainwin.o \ obj/moc_mainwin.o \ obj/glwidget.o \ diff --git a/src/gui/filepicker.cpp b/src/gui/filepicker.cpp new file mode 100644 index 0000000..2280f82 --- /dev/null +++ b/src/gui/filepicker.cpp @@ -0,0 +1,102 @@ +// +// filepicker.cpp - A ROM chooser +// +// by James L. Hammons +// (C) 2010 Underground Software +// +// JLH = James L. Hammons +// +// Who When What +// --- ---------- ------------------------------------------------------------- +// JLH 01/22/2010 Created this file +// + +#include "filepicker.h" + +#include "types.h" + +struct RomIdentifier +{ + const uint32 crc32; + const char name[128]; + const char file[128]; +}; + +RomIdentifier romList[] = { + { 0x0509C85E, "Raiden (World)", "" }, + { 0x08F15576, "Iron Soldier (World) (v1.04)", "" }, + { 0x0957A072, "Kasumi Ninja (World)", "" }, + { 0x0AC83D77, "NBA Jam T.E. (World)", "" }, + { 0x0EC5369D, "Evolution - Dino Dudes (World)", "" }, + { 0x0F6A1C2C, "Ultra Vortek (World)", "" }, + { 0x14915F20, "White Men Can't Jump (World)", "" }, + { 0x1660F070, "Power Drive Rally (World)", "" }, + { 0x1E451446, "Trevor McFur in the Crescent Galaxy (World)", "" }, + { 0x27594C6A, "Defender 2000 (World)", "" }, + { 0x2E17D5DA, "Bubsy in Fractured Furry Tales (World)", "" }, + { 0x348E6449, "Double Dragon V - The Shadow Falls (World)", "" }, + { 0x3615AF6A, "Fever Pitch Soccer (World) (En,Fr,De,Es,It)", "" }, + { 0x38A130ED, "Troy Aikman NFL Football (World)", "" }, + { 0x3C044941, "Skyhammer (World)", "" }, + { 0x42A13EC5, "Soccer Kid (World)", "" }, + { 0x47EBC158, "Theme Park (World)", "" }, + { 0x4899628F, "Hover Strike (World)", "" }, + { 0x53DF6440, "Space War 2000 (World)", "" }, + { 0x55A0669C, "[BIOS] Atari Jaguar Developer CD (World)", "" }, + { 0x58272540, "Syndicate (World)", "" }, + { 0x5A101212, "Sensible Soccer - International Edition (World)", "" }, + { 0x5B6BB205, "Ruiner Pinball (World)", "" }, + { 0x5CFF14AB, "Pinball Fantasies (World)", "" }, + { 0x5E2CDBC0, "Doom (World)", "" }, + { 0x61C7EEC0, "Zero 5 (World)", "" }, + { 0x67F9AB3A, "Battle Sphere Gold (World)", "" }, + { 0x687068D5, "[BIOS] Atari Jaguar CD (World)", "" }, + { 0x6B2B95AD, "Tempest 2000 (World)", "" }, + { 0x6EB774EB, "Worms (World)", "" }, + { 0x6F8B2547, "Super Burnout (World)", "" }, + { 0x817A2273, "Pitfall - The Mayan Adventure (World)", "" }, + { 0x8975F48B, "Zool 2 (World)", "" }, + { 0x8D15DBC6, "[BIOS] Atari Jaguar Stubulator '94 (World)", "" }, + { 0x8FEA5AB0, "Dragon - The Bruce Lee Story (World)", "" }, + { 0x97EB4651, "I-War (World)", "" }, + { 0xA27823D8, "Ultra Vortek (World) (v0.94) (Beta)", "" }, + { 0xA56D0798, "Protector - Special Edition (World)", "" }, + { 0xA9F8A00E, "Rayman (World)", "" }, + { 0xB14C4753, "Fight for Life (World)", "" }, + { 0xBCB1A4BF, "Brutal Sports Football (World)", "" }, + { 0xBDA405C6, "Cannon Fodder (World)", "" }, + { 0xBDE67498, "Cybermorph (World) (Rev 1)", "" }, + { 0xC5562581, "Zoop! (World)", "" }, + { 0xC654681B, "Total Carnage (World)", "" }, + { 0xC6C7BA62, "Fight for Life (World) (Alt)", "" }, + { 0xC9608717, "Val d'Isere Skiing and Snowboarding (World)", "" }, + { 0xCBFD822A, "Air Cars (World)", "" }, + { 0xCD5BF827, "Attack of the Mutant Penguins (World)", "" }, + { 0xD6C19E34, "Iron Soldier 2 (World)", "" }, + { 0xDA9C4162, "Missile Command 3D (World)", "" }, + { 0xDC187F82, "Alien vs Predator (World)", "" }, + { 0xDE55DCC7, "Flashback - The Quest for Identity (World) (En,Fr)", "" }, + { 0xE28756DE, "Atari Karts (World)", "" }, + { 0xE60277BB, "[BIOS] Atari Jaguar Stubulator '93 (World)", "" }, + { 0xE91BD644, "Wolfenstein 3D (World)", "" }, + { 0xEC22F572, "SuperCross 3D (World)", "" }, + { 0xECF854E7, "Cybermorph (World) (Rev 2)", "" }, + { 0xEEE8D61D, "Club Drive (World)", "" }, + { 0xF0360DB3, "Hyper Force (World)", "" }, + { 0xFA7775AE, "Checkered Flag (World)", "" }, + { 0xFAE31DD0, "Flip Out! (World)", "" }, + { 0xFB731AAA, "[BIOS] Atari Jaguar (World)", "" }, + { 0xFFFFFFFF, "***END***", "" } +}; + +/* +Our strategy here is like so: +Look at the files in the directory pointed to by ROMPath. +For each file in the directory, take the CRC32 of it and compare it to the CRC +in the romList[]. If there's a match, put it in a list and note it's index value +in romList for future reference. + +When constructing the list, use the index to pull up an image of the cart and +put that in the list. User picks from a graphical image of the cart. +*/ + diff --git a/src/gui/filepicker.h b/src/gui/filepicker.h new file mode 100644 index 0000000..ec02cba --- /dev/null +++ b/src/gui/filepicker.h @@ -0,0 +1,5 @@ +// +// filepicker.h - A ROM chooser +// + +#include diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index 40af9eb..69634f6 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -102,8 +102,7 @@ MainWin::MainWin() connect(blurAct, SIGNAL(triggered()), this, SLOT(ToggleBlur())); aboutAct = new QAction(QIcon(":/res/generic.png"), tr("&About..."), this); - aboutAct->setStatusTip(tr("Shows self-serving credits")); -// aboutAct->setCheckable(true); + aboutAct->setStatusTip(tr("Blatant self-promotion")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(ShowAboutWin())); // Create menus & toolbars @@ -139,7 +138,7 @@ MainWin::MainWin() ntscAct->setChecked(vjs.hardwareTypeNTSC); palAct->setChecked(!vjs.hardwareTypeNTSC); - // Do this in case original size isn't correct + // Do this in case original size isn't correct (mostly for the first-run case) ResizeMainWindow(); // Set up timer based loop for animation... @@ -229,10 +228,6 @@ void MainWin::ToggleBlur(void) void MainWin::ShowAboutWin(void) { aboutWin->show(); -// QMessageBox::about(this, tr("About Application"), -// tr("The Application example demonstrates how to " -// "write modern GUI applications using Qt, with a menu bar, " -// "toolbars, and a status bar.")); } void MainWin::ResizeMainWindow(void) diff --git a/src/gui/vj.pro b/src/gui/vj.pro index f95b90e..ae383ed 100644 --- a/src/gui/vj.pro +++ b/src/gui/vj.pro @@ -10,11 +10,13 @@ HEADERS += app.h HEADERS += mainwin.h HEADERS += glwidget.h HEADERS += about.h +HEADERS += filepicker.h SOURCES += app.cpp SOURCES += mainwin.cpp SOURCES += glwidget.cpp SOURCES += about.cpp +SOURCES += filepicker.cpp RESOURCES += vj.qrc -- 2.37.2