From fe3b257de12df90c1d99ea00ef9d22c7ccc52876 Mon Sep 17 00:00:00 2001 From: Jean-Paul Mari Date: Sun, 7 Oct 2018 03:34:19 -0400 Subject: [PATCH] Minor cosmetic and comments modifications --- docs/INSTALL | 4 +- docs/TODO | 2 +- docs/WHATSNEW | 2 +- docs/virtualjaguar.1 | 91 ++++++++++++------ docs/vj_ReleaseNotes.txt | 40 +++++--- jaguarcore.mak | 2 +- src/debugger/DBGManager.cpp | 26 +++--- src/debugger/DBGManager.h | 14 ++- src/debugger/FilesrcListWin.cpp | 2 +- src/debugger/allwatchbrowser.cpp | 2 + src/gui/app.cpp | 2 +- src/gui/generaltab.cpp | 12 +-- src/gui/keybindingstab.cpp | 3 + src/gui/mainwin.cpp | 152 ++++++++++++++++--------------- src/gui/mainwin.h | 46 +++++----- src/settings.h | 15 +-- virtualjaguar.pro | 2 + 17 files changed, 245 insertions(+), 172 deletions(-) diff --git a/docs/INSTALL b/docs/INSTALL index e276312..9bd01c4 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -9,8 +9,8 @@ REQUIREMENTS: The minimum requirements for compiling Virtual Jaguar from source are: o GCC v4.4.x or higher - o SDL v1.2.15 or higher - o zlib v1.2.8 + o SDL v1.2.15 + o zlib v1.2.8 or higher o libelf 0.8.13 o libdwarf 1.41 o libcdio v0.90 or higher (optional, for Jaguar CD support) diff --git a/docs/TODO b/docs/TODO index d15efa1..fc04435 100644 --- a/docs/TODO +++ b/docs/TODO @@ -12,7 +12,6 @@ Stuff to add/fix for the next release of Virtual Jaguar - Need to propagate blitter fixes in the A1 <- A2 direction to the A1 -> A2 direction and the GPU fixes to various instructions to the DSP. [Shamus] - Blitter needs fixing. [Shamus] -- In emulator screenshots. [Shamus] - Audio/video dumping. [Shamus] - Need to emulate bus contention. [Shamus] - Need to fix timing in the OP. As it is now, it gives a false impression of @@ -28,6 +27,7 @@ Stuff to add/fix for the next release of Virtual Jaguar Stuff that was added/fixed -------------------------- +- In emulator screenshots. [Shamus] [DONE--Flynn] - Create an EEPROMs directory (or whatever is in EEPROMPath[]) if it doesn't already exist. [Shamus] [DONE--Flynn] - Controller handling. [Shamus] [DONE--Shamus] diff --git a/docs/WHATSNEW b/docs/WHATSNEW index 7769e15..56ad6f1 100644 --- a/docs/WHATSNEW +++ b/docs/WHATSNEW @@ -7,7 +7,7 @@ Virtual Jaguar v2.1.3 R3 GCC/Qt * Added ui, alpine & debugger groups in the settings * Added the possibility to erase settings * Added the --es-all, --es-ui, --es-alpine & --es-debugger options to erase specific settings -* Added a keybindings tab and adapted the configuration dialog tabs +* Added a key bindings tab and adapted the configuration dialog tabs * Fixed a crash, in Release mode, when the HW labels setting is turn on * Fixed the SP (Stack) window UI potential missing data * Create a directory for EEPROMs (based on the EEPROMs setting) if it doesn't already exist diff --git a/docs/virtualjaguar.1 b/docs/virtualjaguar.1 index fda9eb9..a9ddf02 100644 --- a/docs/virtualjaguar.1 +++ b/docs/virtualjaguar.1 @@ -1,11 +1,11 @@ -.TH virtualjaguar 1 2017-09-06 Virtualjaguar Rx +.TH virtualjaguar 1 2018-09-19 Virtualjaguar Rx .SH NAME virtualjaguar \- An Atari Jaguar emulator .SH SYNOPSIS .B virtualjaguar .RI [options] -.RI [rom\ image\ file] +.RI [rom image file] .SH DESCRIPTION Virtualjaguar is an emulator for the Atari Jaguar videogame system. @@ -13,7 +13,7 @@ Virtualjaguar is an emulator for the Atari Jaguar videogame system. .SH OPTIONS .TP .B [rom image file] -Name of file to load +Name of file to load; .TP .B \-a, \-\-alpine Run in Alpine emulation mode @@ -24,10 +24,10 @@ Boot using Jaguar BIOS .B \-\-no\-bios Do not use Jaguar BIOS .TP -.B \-a, \-\-debugger +.B \-d, \-\-debugger Run in Debugger emulation mode .TP -.B \-a, \-\-dram-max +.B , \-\-dram-max Set the main ram to 8MB .TP .B \-g, \-\-gpu @@ -42,11 +42,22 @@ Create and use log file .B \-\-no\-log Do not use log file .TP -.B \-h, \-\-help +.B \-h, \-?, \-\-help Show command line help +.SH SETTINGS +.TP +.B \-\-es\-all +Erase all settings, +.B \-\-es\-ui +Erase UI settings only, +.B \-\-es\-alpine +Erase alpine mode settings only, +.B \-\-es\-debugger +Erase debugger mode settings only + .SH SOUND -DSP emulation is needed for audio output +DSP emulation is needed for audio output; .TP .B \-d, \-\-dsp Enable DSP emulation @@ -74,53 +85,74 @@ Disable GL bilinear filter .B \-z, \-\-please\-dont\-kill\-my\-computer Do not show emulation of tv static. This can be slow on low end CPUs. -.SH CONTROLS +.SH SHORTCUTS +.TP +The default key bindings are: .TP .B Ctrl-Q -Quit virtualjaguar +Quit virtualjaguar, .TP .B Ctrl-I -Load a new program +Load a new program, +.TP +.B Ctrl+C +Configure tab, +.TP +.B Ctrl+S +Emulator status, +.TP +.B Ctrl+Shift+F5 +Restart program, +.TP +.B F11 +Step into code, +.TP +.B F10 +Step over code, .TP .B Esc -Pause emulation +Pause emulation, .TP .B F7 -Advance the emulation by a single frame +Advance the emulation by a single frame, .TP .B F9 -Toggle full screen mode +Toggle full screen mode, +.TP +.B F8 +Screenshot +.SH CONTROLS .TP -The default keybindings for controller 1 are: -(Keybindings can be changed in the configuration dialog.) +The default key bindings for controller 1 are: +(Key bindings can be changed in the configuration dialog.) .TP .B S -Up +Up, .TP .B X -Down +Down, .TP .B A -Left +Left, .TP .B D -Right +Right, .TP .B P -Pause +Pause, .TP .B O -Option +Option, .TP .B J -Button C +Button C, .TP .B K -Button B +Button B, .TP .B L -Button A +Button A, .TP .B 1 through 0 Buttons 1 through 0 on the keypad @@ -132,19 +164,22 @@ Keypad * Keypad # .SH FILES -.TP +.PP .B virtualjaguar.log Virtualjaguar log file. Only written if the log option (\-l or \-\-log) is given. If the file cannot be opened, the log it sent to standard output instead. The log file is overwritten on startup. Note that the file is written to the current directory. -.TP +.PP +.B ${XDG_DATA_HOME}/virtualjaguar/screenshots/ (typically ~/.local/share/data/virtualjaguar/screenshots/) +Screenshots will be save in this directory. +.PP .B ${XDG_DATA_HOME}/virtualjaguar/eeproms/ (typically ~/.local/share/data/virtualjaguar/eeproms/) Some Atari Jaguar cartridges feature a small writable EEPROM, used for saving game state and score lists. If this directory exists, virtualjaguar will emulate the EEPROM by saving the state in file in this directory. -.TP +.PP .B ${XDG_DATA_HOME}/virtualjaguar/software/ (typically ~/.local/share/data/virtualjaguar/software/) The virtualjaguar GUI for loading software scans this directory, and shows the loadable files, along with information about the program, @@ -152,4 +187,4 @@ and a label image if one is included in a zip archive of the software. .SH AUTHOR This manual page was written by Teemu Hukkanen . -Additional informations written by Flynn. +Additional information written by Jean-Paul Mari . diff --git a/docs/vj_ReleaseNotes.txt b/docs/vj_ReleaseNotes.txt index 5ad331e..6fa36f0 100644 --- a/docs/vj_ReleaseNotes.txt +++ b/docs/vj_ReleaseNotes.txt @@ -13,7 +13,7 @@ Git commit: TBD -- ROM cartridge writing detection follow the alpine "allow writes to cartridge rom"'s flag check -- Alert box will display a message with possibility to pass or not the breakpoint only if this is related to a 8 or 16 bits ROM access 8) Local variables window detects now if a variable is used or not by the code -9) The address provided in the memory window is now verified to prevent crash +9) The address provided in the debugger memory windows is now verified to prevent crash -- Wrong address will be displayed in red 10) UI changes -- Added new icons for the exit and status features @@ -44,7 +44,7 @@ Git commit: TBD 23) Added LEB128 decoding functions -- It is used for the DWARF decoding information 24) Debugger support improvement --- DWARF support for the enum type (partial), and subroutine type +-- DWARF support for the enum type (partial), structure and subroutine type -- Debugger can report variable's unsigned char value 25) UI modifications -- Added a status bar, better status report & information display for the heap allocation window @@ -52,6 +52,18 @@ Git commit: TBD -- Added better information display for the exception vectors table window, and added some missing vectors -- Added a status bar, better status report & information display for the call stack window -- Added a status bar, better status report & information display for the all watches window +26) Added screenshot feature +-- Not accessible in debugger mode +-- Added screenshot editable path in the general tab, and a key binding +27) Minor misspellings fixes +28) DWARF source code directory path clean-up +29) Added a source code files list viewer +-- List comes from the DWARF information +30) Check potential variables missing/incomplete description found in the DWARF information +-- No crash involved but can help to reduce such as variables duplicate or the blank ones +31) Added a sorting filter in the all watches window +32) Improve source code file reading to avoid additional text/bytes reading +33) Help & content texts updates Release 3 (13th November 2017) ------------------------------ @@ -66,9 +78,9 @@ Git commit: b1b673a3b0d19e3c2c45b6590b773b11e45bced7 5) Added ui, alpine and debugger groups in the settings 6) Added the possibility to erase settings 7) Added the --es-all, --es-ui, --es-alpine and --es-debugger options to erase specific settings -8) Added a keybindings tab and adapted the configuration dialog tabs --- User can modify the keybindings where appropriate --- Keybindings UI is displayed based on the option used (--debugger, -- alpine) +8) Added a key bindings tab and adapted the configuration dialog tabs +-- User can modify the key bindings where appropriate +-- Key bindings UI is displayed based on the option used (--debugger, -- alpine) 9) Fixed a crash, in Release mode, when the HW labels setting is turn on 10) Solved an interference between the HW labels setting and the one used by the debugger -- The setting is now only the reference used @@ -161,17 +173,19 @@ Known issues 8) User needs to manualy check if the Atari Jaguar executable match his source code files -- Otherwise, source code and assembly may not match or leads to instabilities 9) The emulator needs to be restarted in case of the following actions occur --- Keybindings changes +-- Key bindings changes -- BIOS selection changes and without new executable load 10) In the case of a ROM cartridge writing, and with occuring breakpoint, the PC pointer will point at the next instruction and not at the instruction causing the breakpoint 11) Emulator will crash in case of wrong address value provided in the memory browser 12) The RAM access log is limited to the 2MB +13) In various occasions, global variables may be duplicated or without name in the DWARF information +-- It may come from the Vlink linker and/or GCC 7.1.0 or 8.2.0 compilation with -gdwarf-2 option Cosmetic / UX issues ==================== 1) The SP (Stack) icon color backgound doesn't look similar with the other ones 2) The SP (Stack) browser size always open at a forced size no matter if the size has been changed -3) Not every features have associated keybindings +3) Not every features have associated key bindings Legacy issues/hints =================== @@ -189,12 +203,12 @@ Project information 5) QT 5.5.1 library 64bits for VS 2015 6) QT 5.9.1 library 64bits for VS 2017 7) Zlib 1.2.8 library 64bits for VS 2015 -7) Zlib 1.2.11 library 64bits for VS 2017 -8) SDL 1.2.15 library 64bits for VS 2015/2017 -9) The original make files have been modified to follow the requirements and modifications -10) The 'Rx' word has been added to the emulator name to make distinction with the official version -11) The project source is set at https://github.com/djipi/Virtual-Jaguar-Rx -12) GPLv3 file document has been renamed as LICENSE, to fit better the GitHub requirements +8) Zlib 1.2.11 library 64bits for VS 2017 +9) SDL 1.2.15 library 64bits for VS 2015/2017 +10) The original make files have been modified to follow the requirements and modifications +11) The 'Rx' word has been added to the emulator name to make distinction with the official version +12) The project is set at https://github.com/djipi/Virtual-Jaguar-Rx +13) GPLv3 file document has been renamed as LICENSE, to fit better the GitHub requirements -- Text / License terms are the same diff --git a/jaguarcore.mak b/jaguarcore.mak index 80355c2..aa4971e 100644 --- a/jaguarcore.mak +++ b/jaguarcore.mak @@ -2,7 +2,7 @@ # Makefile for Virtual Jaguar core library # # by James Hammons -# Edited by Jean-Paul Mari +# Modified by Jean-Paul Mari # # This software is licensed under the GPL v3 or any later version. See the # file LICENSE file for details. ;-) diff --git a/src/debugger/DBGManager.cpp b/src/debugger/DBGManager.cpp index 5f9251a..e3d5956 100644 --- a/src/debugger/DBGManager.cpp +++ b/src/debugger/DBGManager.cpp @@ -10,7 +10,9 @@ // JPM 12/21/2016 Created this file // JPM Various efforts to set the ELF format support // JPM Various efforts to set the DWARF format support -// JPM 09/15/2018 Support the unsigned char +// JPM 09/15/2018 Support the unsigned char +// JPM 10/06/2018 Cosmetic changes +// // To Do // @@ -600,44 +602,44 @@ char *DBGManager_GetSymbolNameFromAdr(size_t Adr) // Return NULL if no source line has been found char *DBGManager_GetLineSrcFromAdr(size_t Adr, size_t Tag) { - char *Symbolname = NULL; + char *TextLine = NULL; if ((DBGType & DBG_ELFDWARF)) { - Symbolname = DWARFManager_GetLineSrcFromAdr(Adr, Tag); + TextLine = DWARFManager_GetLineSrcFromAdr(Adr, Tag); } - return Symbolname; + return TextLine; } -// Get text line from source based on address and num line (starting by 1) +// Get text line from source based on address and num line (starting from 1) // Return NULL if no text line has been found char *DBGManager_GetLineSrcFromAdrNumLine(size_t Adr, size_t NumLine) { - char *Symbolname = NULL; + char *TextLine = NULL; if ((DBGType & DBG_ELFDWARF)) { - Symbolname = DWARFManager_GetLineSrcFromAdrNumLine(Adr, NumLine); + TextLine = DWARFManager_GetLineSrcFromAdrNumLine(Adr, NumLine); } - return Symbolname; + return TextLine; } -// Get text line from source based on address and num line (starting by 1) +// Get text line from source based on address and num line (starting from 1) // Return NULL if no text line has been found char *DBGManager_GetLineSrcFromNumLineBaseAdr(size_t Adr, size_t NumLine) { - char *Symbolname = NULL; + char *TextLine = NULL; if ((DBGType & DBG_ELFDWARF)) { - Symbolname = DWARFManager_GetLineSrcFromNumLineBaseAdr(Adr, NumLine); + TextLine = DWARFManager_GetLineSrcFromNumLineBaseAdr(Adr, NumLine); } - return Symbolname; + return TextLine; } diff --git a/src/debugger/DBGManager.h b/src/debugger/DBGManager.h index 6e61bb9..fd9a159 100644 --- a/src/debugger/DBGManager.h +++ b/src/debugger/DBGManager.h @@ -227,16 +227,22 @@ extern size_t DBGManager_GetType(void); extern void DBGManager_Reset(void); extern void DBGManager_Close(void); -// General manager -extern char *DBGManager_GetSymbolNameFromAdr(size_t Adr); -extern char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr, bool *Error); +// Source text lines manager extern size_t DBGManager_GetNumLineFromAdr(size_t Adr, size_t Tag); extern char *DBGManager_GetLineSrcFromAdr(size_t Adr, size_t Tag); extern char *DBGManager_GetLineSrcFromAdrNumLine(size_t Adr, size_t NumLine); extern char *DBGManager_GetLineSrcFromNumLineBaseAdr(size_t Adr, size_t NumLine); -extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName); + +// General manager extern char *DBGManager_GetFunctionName(size_t Adr); extern char *DBGManager_GetVariableValueFromAdr(size_t Adr, size_t TypeEncoding, size_t TypeByteSize); + +// Symbols manager +extern char *DBGManager_GetSymbolNameFromAdr(size_t Adr); +extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName); + +// Source text files manager +extern char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr, bool *Error); extern size_t DBGManager_GetNbFullSourceFilename(void); extern char *DBGManager_GetNumFullSourceFilename(size_t Index); diff --git a/src/debugger/FilesrcListWin.cpp b/src/debugger/FilesrcListWin.cpp index 8554c0f..ab0fb9c 100644 --- a/src/debugger/FilesrcListWin.cpp +++ b/src/debugger/FilesrcListWin.cpp @@ -123,7 +123,7 @@ void FilesrcListWindow::AddFilename(char *FileName, QStandardItem *root, size_t char Buffer[255]; char a; -#ifdef _MSC_VER +#ifdef _WIN32 while ((a = *Ptr++) && (a != '\\')); #else while ((a = *Ptr++) && (a != '/')); diff --git a/src/debugger/allwatchbrowser.cpp b/src/debugger/allwatchbrowser.cpp index 5aad5e7..54a8126 100644 --- a/src/debugger/allwatchbrowser.cpp +++ b/src/debugger/allwatchbrowser.cpp @@ -15,6 +15,8 @@ // STILL TO DO: // Better presentation // To set the information display at the right +// Display arrays information +// Display structures information // //#define AW_DEBUGNUMVARIABLE 4415 // Set the global variable number to debug diff --git a/src/gui/app.cpp b/src/gui/app.cpp index 9b3dc43..6eb8493 100644 --- a/src/gui/app.cpp +++ b/src/gui/app.cpp @@ -191,7 +191,7 @@ bool ParseCommandLine(int argc, char * argv[]) " --pal -p PAL mode\n" " --ntsc -n NTSC mode\n" " --dram-max Set DRAM size to 8MB\n" - " --bios -b Boot using Jagaur BIOS\n" + " --bios -b Boot using Jaguar BIOS\n" " --no-bios Do not use Jaguar BIOS\n" " --gpu -g Enable GPU\n" " --no-gpu Disable GPU\n" diff --git a/src/gui/generaltab.cpp b/src/gui/generaltab.cpp index dbdee3e..3f8cfa3 100644 --- a/src/gui/generaltab.cpp +++ b/src/gui/generaltab.cpp @@ -11,11 +11,14 @@ // WHO WHEN WHAT // --- ---------- ------------------------------------------------------------ // JLH 06/23/2011 Created this file -// JPM 09/03/2018 Added a Models & Bios tab -// JPM 09/03/2018 Depend the platform transform slashes or backslashes -// JPM 09/17/2018 Added a screenshot path +// JPM Sept./2018 Added a Models & Bios tab, slashes / backslashes formatting, and screenshot path // +// STILL TO DO: +// To scan the bios folder for the 5 known BIOSes, and just present a radio button to choose between them... +// + + #include "configdialog.h" #include "generaltab.h" #include "settings.h" @@ -24,9 +27,6 @@ // GeneralTab::GeneralTab(QWidget * parent/*= 0*/): QWidget(parent) { -// I'm thinking we should scan the bios folder for the 5 known BIOSes, and -// just present a radio button to choose between them... -// (BIOS is built-in now...) // QLabel * label1 = new QLabel("Boot ROM:"); // QLabel * label2 = new QLabel("CD Boot ROM:"); QLabel * label3 = new QLabel("EEPROMs:"); diff --git a/src/gui/keybindingstab.cpp b/src/gui/keybindingstab.cpp index 4e906da..2757bc9 100644 --- a/src/gui/keybindingstab.cpp +++ b/src/gui/keybindingstab.cpp @@ -8,6 +8,9 @@ // WHO WHEN WHAT // --- ---------- ------------------------------------------------------------ // JPM 09/10/2017 Created this file +// JPM Sept./2018 Added screenshot key bindings +// + #include "keybindingstab.h" #include "settings.h" diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index ad3a838..7b14d7e 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -239,29 +239,25 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), setUnifiedTitleAndToolBarOnMac(true); - // Create actions - + // Quit actions quitAppAct = new QAction(QIcon(":/res/exit.png"), tr("E&xit"), this); -// quitAppAct->setShortcuts(QKeySequence::Quit); -// quitAppAct->setShortcut(QKeySequence(tr("Alt+x"))); - //quitAppAct->setShortcut(QKeySequence(tr("Ctrl+q"))); quitAppAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBQUIT].KBSettingValue))); quitAppAct->setShortcutContext(Qt::ApplicationShortcut); quitAppAct->setStatusTip(tr("Quit Virtual Jaguar")); connect(quitAppAct, SIGNAL(triggered()), this, SLOT(close())); + // Power action 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(powerGreen, tr("&Power"), this); powerAct->setStatusTip(tr("Powers Jaguar on/off")); powerAct->setCheckable(true); powerAct->setChecked(false); connect(powerAct, SIGNAL(triggered()), this, SLOT(TogglePowerState())); - // Pause feature + // Pause action QIcon pauseIcon; pauseIcon.addFile(":/res/pause-off.png", QSize(), QIcon::Normal, QIcon::Off); pauseIcon.addFile(":/res/pause-on.png", QSize(), QIcon::Normal, QIcon::On); @@ -269,12 +265,11 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), pauseAct->setStatusTip(tr("Toggles the running state")); pauseAct->setCheckable(true); pauseAct->setDisabled(true); - //pauseAct->setShortcut(QKeySequence(tr("Esc"))); pauseAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBPAUSE].KBSettingValue))); pauseAct->setShortcutContext(Qt::ApplicationShortcut); connect(pauseAct, SIGNAL(triggered()), this, SLOT(ToggleRunState())); - // Screenshot feature + // Screenshot action screenshotAct = new QAction(QIcon(":/res/screenshot.png"), tr("&Screenshot"), this); screenshotAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBSCREENSHOT].KBSettingValue))); screenshotAct->setShortcutContext(Qt::ApplicationShortcut); @@ -282,51 +277,51 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), screenshotAct->setDisabled(false); connect(screenshotAct, SIGNAL(triggered()), this, SLOT(MakeScreenshot())); + // Zoom actions zoomActs = new QActionGroup(this); - x1Act = new QAction(QIcon(":/res/zoom100.png"), tr("Zoom 100%"), zoomActs); x1Act->setStatusTip(tr("Set window zoom to 100%")); x1Act->setCheckable(true); connect(x1Act, SIGNAL(triggered()), this, SLOT(SetZoom100())); - x2Act = new QAction(QIcon(":/res/zoom200.png"), tr("Zoom 200%"), zoomActs); x2Act->setStatusTip(tr("Set window zoom to 200%")); x2Act->setCheckable(true); connect(x2Act, SIGNAL(triggered()), this, SLOT(SetZoom200())); - x3Act = new QAction(QIcon(":/res/zoom300.png"), tr("Zoom 300%"), zoomActs); x3Act->setStatusTip(tr("Set window zoom to 300%")); x3Act->setCheckable(true); connect(x3Act, SIGNAL(triggered()), this, SLOT(SetZoom300())); + // TV type actions tvTypeActs = new QActionGroup(this); - ntscAct = new QAction(QIcon(":/res/ntsc.png"), tr("NTSC"), tvTypeActs); ntscAct->setStatusTip(tr("Sets Jaguar to NTSC mode")); ntscAct->setCheckable(true); connect(ntscAct, SIGNAL(triggered()), this, SLOT(SetNTSC())); - palAct = new QAction(QIcon(":/res/pal.png"), tr("PAL"), tvTypeActs); palAct->setStatusTip(tr("Sets Jaguar to PAL mode")); palAct->setCheckable(true); connect(palAct, SIGNAL(triggered()), this, SLOT(SetPAL())); + // Blur action blur.addFile(":/res/blur-off.png", QSize(), QIcon::Normal, QIcon::Off); blur.addFile(":/res/blur-on.png", QSize(), QIcon::Normal, QIcon::On); - blurAct = new QAction(blur, tr("Blur"), this); blurAct->setStatusTip(tr("Sets OpenGL rendering to GL_NEAREST")); blurAct->setCheckable(true); connect(blurAct, SIGNAL(triggered()), this, SLOT(ToggleBlur())); + // About action aboutAct = new QAction(QIcon(":/res/vj-icon.png"), tr("&About..."), this); aboutAct->setStatusTip(tr("Blatant self-promotion")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(ShowAboutWin())); + // Help action helpAct = new QAction(QIcon(":/res/vj-icon.png"), tr("&Contents..."), this); helpAct->setStatusTip(tr("Help is available, if you should need it")); connect(helpAct, SIGNAL(triggered()), this, SLOT(ShowHelpWin())); + // File pickup action if (!vjs.softTypeDebugger) { filePickAct = new QAction(QIcon(":/res/software.png"), tr("&Insert Cartridge..."), this); @@ -337,99 +332,109 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), filePickAct = new QAction(QIcon(":/res/software.png"), tr("&Insert executable file..."), this); filePickAct->setStatusTip(tr("Insert an executable into Virtual Jaguar")); } - //filePickAct->setShortcut(QKeySequence(tr("Ctrl+i"))); filePickAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBPICKFILE].KBSettingValue))); filePickAct->setShortcutContext(Qt::ApplicationShortcut); connect(filePickAct, SIGNAL(triggered()), this, SLOT(InsertCart())); + // Configuration action configAct = new QAction(QIcon(":/res/wrench.png"), tr("&Configure"), this); configAct->setStatusTip(tr("Configure options for Virtual Jaguar")); - //configAct->setShortcut(QKeySequence(tr("Ctrl+c"))); configAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBCONFIGURE].KBSettingValue))); configAct->setShortcutContext(Qt::ApplicationShortcut); connect(configAct, SIGNAL(triggered()), this, SLOT(Configure())); + // Emulation status action emustatusAct = new QAction(QIcon(":/res/status.png"), tr("&Status"), this); emustatusAct->setStatusTip(tr("Emulator status")); - //emustatusAct->setShortcut(QKeySequence(tr("Ctrl+s"))); emustatusAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBEMUSTATUS].KBSettingValue))); emustatusAct->setShortcutContext(Qt::ApplicationShortcut); connect(emustatusAct, SIGNAL(triggered()), this, SLOT(ShowEmuStatusWin())); + // Use CD action useCDAct = new QAction(QIcon(":/res/compact-disc.png"), tr("&Use CD Unit"), this); useCDAct->setStatusTip(tr("Use Jaguar Virtual CD unit")); -// useCDAct->setShortcut(QKeySequence(tr("Ctrl+c"))); useCDAct->setCheckable(true); connect(useCDAct, SIGNAL(triggered()), this, SLOT(ToggleCDUsage())); + // Frame advance action frameAdvanceAct = new QAction(QIcon(":/res/frame-advance.png"), tr("&Frame Advance"), this); - //frameAdvanceAct->setShortcut(QKeySequence(tr("F7"))); frameAdvanceAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBFRAMEADVANCE].KBSettingValue))); frameAdvanceAct->setShortcutContext(Qt::ApplicationShortcut); frameAdvanceAct->setDisabled(true); connect(frameAdvanceAct, SIGNAL(triggered()), this, SLOT(FrameAdvance())); + // Fullscreen action + fullScreenAct = new QAction(QIcon(":/res/fullscreen.png"), tr("F&ull Screen"), this); + fullScreenAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBFULLSCREEN].KBSettingValue))); + fullScreenAct->setShortcutContext(Qt::ApplicationShortcut); + fullScreenAct->setCheckable(true); + connect(fullScreenAct, SIGNAL(triggered()), this, SLOT(ToggleFullScreen())); + + // Actions dedicated to debugger mode if (vjs.softTypeDebugger) { + // Restart restartAct = new QAction(QIcon(":/res/debug-restart.png"), tr("&Restart"), this); - //restartAct->setShortcut(QKeySequence(tr("Ctrl+Shift+F5"))); restartAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBRESTART].KBSettingValue))); restartAct->setShortcutContext(Qt::ApplicationShortcut); restartAct->setCheckable(false); restartAct->setDisabled(true); connect(restartAct, SIGNAL(triggered()), this, SLOT(DebuggerRestart())); + // Step over trace traceStepOverAct = new QAction(QIcon(":/res/debug-stepover.png"), tr("&Step Over"), this); - //traceStepOverAct->setShortcut(QKeySequence(tr("F10"))); traceStepOverAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBSTEPOVER].KBSettingValue))); traceStepOverAct->setShortcutContext(Qt::ApplicationShortcut); traceStepOverAct->setCheckable(false); traceStepOverAct->setDisabled(true); connect(traceStepOverAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepOver())); + // Trace into trace traceStepIntoAct = new QAction(QIcon(":/res/debug-stepinto.png"), tr("&Step Into"), this); - //traceStepIntoAct->setShortcut(QKeySequence(tr("F11"))); traceStepIntoAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBSTEPINTO].KBSettingValue))); traceStepIntoAct->setShortcutContext(Qt::ApplicationShortcut); traceStepIntoAct->setCheckable(false); traceStepIntoAct->setDisabled(true); connect(traceStepIntoAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepInto())); - newBreakpointFunctionAct = new QAction(QIcon(""), tr("&Function Breakpoint"), this); - newBreakpointFunctionAct->setShortcut(QKeySequence(tr("Ctrl+B"))); - connect(newBreakpointFunctionAct, SIGNAL(triggered()), this, SLOT(NewBreakpointFunction())); - } + //newBreakpointFunctionAct = new QAction(QIcon(""), tr("&Function Breakpoint"), this); + //newBreakpointFunctionAct->setShortcut(QKeySequence(tr("Ctrl+B"))); + //connect(newBreakpointFunctionAct, SIGNAL(triggered()), this, SLOT(NewBreakpointFunction())); - fullScreenAct = new QAction(QIcon(":/res/fullscreen.png"), tr("F&ull Screen"), this); - //fullScreenAct->setShortcut(QKeySequence(tr("F9"))); - fullScreenAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBFULLSCREEN].KBSettingValue))); - fullScreenAct->setShortcutContext(Qt::ApplicationShortcut); - fullScreenAct->setCheckable(true); - connect(fullScreenAct, SIGNAL(triggered()), this, SLOT(ToggleFullScreen())); + //VideoOutputAct = new QAction(tr("Output Video"), this); + //VideoOutputAct->setStatusTip(tr("Shows the output video window")); + //connect(VideoOutputAct, SIGNAL(triggered()), this, SLOT(ShowVideoOutputWin())); - // Debugger Actions - if (vjs.softTypeDebugger) - { + //DasmAct = new QAction(tr("Disassembly"), this); + //DasmAct->setStatusTip(tr("Shows the disassembly window")); + //connect(DasmAct, SIGNAL(triggered()), this, SLOT(ShowDasmWin())); + + // Exception vector table window exceptionVectorTableBrowseAct = new QAction(QIcon(""), tr("Exception Vector Table"), this); exceptionVectorTableBrowseAct->setStatusTip(tr("Shows all Exception Vector Table browser window")); connect(exceptionVectorTableBrowseAct, SIGNAL(triggered()), this, SLOT(ShowExceptionVectorTableBrowserWin())); + // All watch variables window allWatchBrowseAct = new QAction(QIcon(":/res/debug-watch.png"), tr("All Watch"), this); allWatchBrowseAct->setStatusTip(tr("Shows all Watch browser window")); connect(allWatchBrowseAct, SIGNAL(triggered()), this, SLOT(ShowAllWatchBrowserWin())); + // Local variables window LocalBrowseAct = new QAction(QIcon(":/res/debug-local.png"), tr("Locals"), this); LocalBrowseAct->setStatusTip(tr("Shows Locals browser window")); connect(LocalBrowseAct, SIGNAL(triggered()), this, SLOT(ShowLocalBrowserWin())); + // Heap (memory) allocation window heapallocatorBrowseAct = new QAction(QIcon(""), tr("Heap allocator"), this); heapallocatorBrowseAct->setStatusTip(tr("Shows the heap allocator browser window")); connect(heapallocatorBrowseAct, SIGNAL(triggered()), this, SLOT(ShowHeapAllocatorBrowserWin())); + // Call stack window CallStackBrowseAct = new QAction(QIcon(":/res/debug-callstack.png"), tr("Call Stack"), this); CallStackBrowseAct->setStatusTip(tr("Shows Call Stack browser window")); connect(CallStackBrowseAct, SIGNAL(triggered()), this, SLOT(ShowCallStackBrowserWin())); + // Memory windows mem1BrowseAct = (QAction **)calloc(vjs.nbrmemory1browserwindow, sizeof(QAction)); QSignalMapper *signalMapper = new QSignalMapper(this); #ifdef _MSC_VER @@ -443,56 +448,42 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), sprintf(MB, "Memory %i", (unsigned int)(i+1)); mem1BrowseAct[i] = new QAction(QIcon(":/res/debug-memory.png"), tr(MB), this); mem1BrowseAct[i]->setStatusTip(tr("Shows a Jaguar memory browser window")); - //mem1BrowseAct[i]-> - //connect(mem1BrowseAct[0], SIGNAL(triggered()), this, SLOT(ShowMemory1BrowserWin(size_t(0)))); connect(mem1BrowseAct[i], SIGNAL(triggered()), signalMapper, SLOT(map())); signalMapper->setMapping(mem1BrowseAct[i], (int)i); connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(ShowMemory1BrowserWin(int))); } } - // Debugger Browser Actions + // Memory browser window action memBrowseAct = new QAction(QIcon(":/res/tool-memory.png"), tr("Memory Browser"), this); memBrowseAct->setStatusTip(tr("Shows the Jaguar memory browser window")); -// memBrowseAct->setCheckable(true); connect(memBrowseAct, SIGNAL(triggered()), this, SLOT(ShowMemoryBrowserWin())); + // Stack browser window action stackBrowseAct = new QAction(QIcon(":/res/tool-stack.png"), tr("Stack Browser"), this); stackBrowseAct->setStatusTip(tr("Shows the Jaguar stack browser window")); - // memBrowseAct->setCheckable(true); connect(stackBrowseAct, SIGNAL(triggered()), this, SLOT(ShowStackBrowserWin())); + // CPUs (M68000, GPU & DSP browser window action cpuBrowseAct = new QAction(QIcon(":/res/tool-cpu.png"), tr("CPU Browser"), this); cpuBrowseAct->setStatusTip(tr("Shows the Jaguar CPU browser window")); -// memBrowseAct->setCheckable(true); connect(cpuBrowseAct, SIGNAL(triggered()), this, SLOT(ShowCPUBrowserWin())); + // OP browser window action opBrowseAct = new QAction(QIcon(":/res/tool-op.png"), tr("OP Browser"), this); opBrowseAct->setStatusTip(tr("Shows the Jaguar OP browser window")); -// memBrowseAct->setCheckable(true); connect(opBrowseAct, SIGNAL(triggered()), this, SLOT(ShowOPBrowserWin())); + // M68000 disassembly browser window m68kDasmBrowseAct = new QAction(QIcon(":/res/tool-68k-dis.png"), tr("68K Listing Browser"), this); m68kDasmBrowseAct->setStatusTip(tr("Shows the 68K disassembly browser window")); -// memBrowseAct->setCheckable(true); connect(m68kDasmBrowseAct, SIGNAL(triggered()), this, SLOT(ShowM68KDasmBrowserWin())); + // Risc (DSP / GPU) disassembly browser window riscDasmBrowseAct = new QAction(QIcon(":/res/tool-risc-dis.png"), tr("RISC Listing Browser"), this); riscDasmBrowseAct->setStatusTip(tr("Shows the RISC disassembly browser window")); -// memBrowseAct->setCheckable(true); connect(riscDasmBrowseAct, SIGNAL(triggered()), this, SLOT(ShowRISCDasmBrowserWin())); - if (vjs.softTypeDebugger) - { - //VideoOutputAct = new QAction(tr("Output Video"), this); - //VideoOutputAct->setStatusTip(tr("Shows the output video window")); - //connect(VideoOutputAct, SIGNAL(triggered()), this, SLOT(ShowVideoOutputWin())); - - //DasmAct = new QAction(tr("Disassembly"), this); - //DasmAct->setStatusTip(tr("Shows the disassembly window")); - //connect(DasmAct, SIGNAL(triggered()), this, SLOT(ShowDasmWin())); - } - // Misc. connections... connect(filePickWin, SIGNAL(RequestLoad(QString)), this, SLOT(LoadSoftware(QString))); connect(filePickWin, SIGNAL(FilePickerHiding()), this, SLOT(Unpause())); @@ -574,6 +565,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), } } + // Help menus helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(helpAct); helpMenu->addAction(aboutAct); @@ -1138,6 +1130,7 @@ static uint32_t refresh = 0; } +// Toggle the power state, it can be either on or off void MainWin::TogglePowerState(void) { powerButtonOn = !powerButtonOn; @@ -1148,30 +1141,33 @@ void MainWin::TogglePowerState(void) { // Restore the mouse pointer, if hidden: if (!vjs.softTypeDebugger) + { videoWidget->CheckAndRestoreMouseCursor(); + } + useCDAct->setDisabled(false); palAct->setDisabled(false); ntscAct->setDisabled(false); pauseAct->setChecked(false); pauseAct->setDisabled(true); showUntunedTankCircuit = true; + DACPauseAudioThread(); - // This is just in case the ROM we were playing was in a narrow or wide - // field mode, so the untuned tank sim doesn't look wrong. :-) + // This is just in case the ROM we were playing was in a narrow or wide field mode, so the untuned tank sim doesn't look wrong. :-) TOMReset(); if (plzDontKillMyComputer) { - //if (!vjs.softTypeDebugger) + // We have to do it line by line, because the texture pitch is not the same as the picture buffer's pitch. + for (uint32_t y = 0; y < videoWidget->rasterHeight; y++) { - // We have to do it line by line, because the texture pitch is not - // the same as the picture buffer's pitch. - for (uint32_t y = 0; y < videoWidget->rasterHeight; y++) + if (vjs.hardwareTypeNTSC) { - if (vjs.hardwareTypeNTSC) - memcpy(videoWidget->buffer + (y * videoWidget->textureWidth), testPattern + (y * VIRTUAL_SCREEN_WIDTH), VIRTUAL_SCREEN_WIDTH * sizeof(uint32_t)); - else - memcpy(videoWidget->buffer + (y * videoWidget->textureWidth), testPattern2 + (y * VIRTUAL_SCREEN_WIDTH), VIRTUAL_SCREEN_WIDTH * sizeof(uint32_t)); + memcpy(videoWidget->buffer + (y * videoWidget->textureWidth), testPattern + (y * VIRTUAL_SCREEN_WIDTH), VIRTUAL_SCREEN_WIDTH * sizeof(uint32_t)); + } + else + { + memcpy(videoWidget->buffer + (y * videoWidget->textureWidth), testPattern2 + (y * VIRTUAL_SCREEN_WIDTH), VIRTUAL_SCREEN_WIDTH * sizeof(uint32_t)); } } } @@ -1204,13 +1200,16 @@ void MainWin::TogglePowerState(void) } +// Toggle the emulator state, it can be either on or off void MainWin::ToggleRunState(void) { startM68KTracing = running; running = !running; + // Pause mode if (!running) { + // Set action buttons for the pause mode frameAdvanceAct->setDisabled(false); pauseAct->setChecked(true); pauseAct->setDisabled(false); @@ -1228,7 +1227,6 @@ void MainWin::ToggleRunState(void) { // Restore the mouse pointer, if hidden: videoWidget->CheckAndRestoreMouseCursor(); - // frameAdvanceAct->setDisabled(false); for (uint32_t i = 0; i < (uint32_t)(videoWidget->textureWidth * 256); i++) { @@ -1367,6 +1365,7 @@ void MainWin::LoadSoftware(QString file) running = false; // Prevent bad things(TM) from happening... pauseForFileSelector = false; // Reset the file selector pause flag + // Setup BIOS in his own dedicated Jaguar memory #ifndef NEWMODELSBIOSHANDLER uint8_t * biosPointer = jaguarBootROM; @@ -1380,6 +1379,7 @@ void MainWin::LoadSoftware(QString file) SelectBIOS(vjs.biosType); #endif + // Turn 'on' the power to initialize the Jaguar powerAct->setDisabled(false); powerAct->setChecked(true); powerButtonOn = false; @@ -1387,7 +1387,7 @@ void MainWin::LoadSoftware(QString file) // We have to load our software *after* the Jaguar RESET cartridgeLoaded = JaguarLoadFile(file.toUtf8().data()); - SET32(jaguarMainRAM, 0, vjs.DRAM_size); // Set top of stack... + SET32(jaguarMainRAM, 0, vjs.DRAM_size); // Set stack in the M68000's Reset SP // This is icky because we've already done it // it gets worse :-P @@ -1698,12 +1698,13 @@ void MainWin::ShowVideoOutputWin(void) #endif +// Resize video window based on zoom factor +// It doesn't apply in debugger mode as we use this window to display disassembly void MainWin::ResizeMainWindow(void) { if (!vjs.softTypeDebugger) { - videoWidget->setFixedSize(zoomLevel * VIRTUAL_SCREEN_WIDTH, - zoomLevel * (vjs.hardwareTypeNTSC ? VIRTUAL_SCREEN_HEIGHT_NTSC : VIRTUAL_SCREEN_HEIGHT_PAL)); + videoWidget->setFixedSize(zoomLevel * VIRTUAL_SCREEN_WIDTH, zoomLevel * (vjs.hardwareTypeNTSC ? VIRTUAL_SCREEN_HEIGHT_NTSC : VIRTUAL_SCREEN_HEIGHT_PAL)); // Show the test pattern if user requested plzDontKillMyComputer mode if (!powerButtonOn && plzDontKillMyComputer) @@ -1711,9 +1712,13 @@ void MainWin::ResizeMainWindow(void) for (uint32_t y = 0; y < videoWidget->rasterHeight; y++) { if (vjs.hardwareTypeNTSC) + { memcpy(videoWidget->buffer + (y * videoWidget->textureWidth), testPattern + (y * VIRTUAL_SCREEN_WIDTH), VIRTUAL_SCREEN_WIDTH * sizeof(uint32_t)); + } else + { memcpy(videoWidget->buffer + (y * videoWidget->textureWidth), testPattern2 + (y * VIRTUAL_SCREEN_WIDTH), VIRTUAL_SCREEN_WIDTH * sizeof(uint32_t)); + } } } @@ -1788,6 +1793,7 @@ void MainWin::ReadSettings(void) WriteLog(" AlpineROMPath = \"%s\"\n", vjs.alpineROMPath); WriteLog("DebuggerROMPath = \"%s\"\n", vjs.debuggerROMPath); WriteLog(" absROMPath = \"%s\"\n", vjs.absROMPath); + WriteLog("ScreenshotsPath = \"%s\"\n", vjs.screenshotPath); WriteLog(" Pipelined DSP = %s\n", (vjs.usePipelinedDSP ? "ON" : "off")); #if 0 @@ -2021,8 +2027,8 @@ void MainWin::WriteSettings(void) settings.setValue("jaguarModel", vjs.jaguarModel); settings.setValue("biosType", vjs.biosType); settings.setValue("useFastBlitter", vjs.useFastBlitter); - settings.setValue("JagBootROM", vjs.jagBootPath); - settings.setValue("CDBootROM", vjs.CDBootPath); + //settings.setValue("JagBootROM", vjs.jagBootPath); + //settings.setValue("CDBootROM", vjs.CDBootPath); settings.setValue("EEPROMs", vjs.EEPROMPath); settings.setValue("ROMs", vjs.ROMPath); settings.setValue("Screenshots", vjs.screenshotPath); @@ -2247,6 +2253,6 @@ void MainWin::MakeScreenshot(void) // Create screenshot screenshot = videoWidget->grabFrameBuffer(); - screenshot.save(Text, "JPG", 100); + screenshot.save((char *)Text, "JPG", 100); } diff --git a/src/gui/mainwin.h b/src/gui/mainwin.h index bcf12b1..2e41579 100644 --- a/src/gui/mainwin.h +++ b/src/gui/mainwin.h @@ -4,6 +4,8 @@ // by James Hammons // (C) 2010 Underground Software // +// Modified by Jean-Paul Mari +// #ifndef __MAINWIN_H__ #define __MAINWIN_H__ @@ -177,9 +179,9 @@ class MainWin: public QMainWindow QPoint mainWinPosition; // QSize mainWinSize; int lastEditedProfile; - QMenu * fileMenu; - QMenu * helpMenu; - QMenu * debugMenu, * debugWindowsMenu, *debugWindowsBrowsesMenu, *debugWindowsWatchMenu, *debugWindowOutputMenu, *debugWindowExceptionMenu, *debugWindowsMemoryMenu, *debugNewBreakpointMenu; + QMenu *fileMenu; + QMenu *helpMenu; + QMenu *debugMenu, *debugWindowsMenu, *debugWindowsBrowsesMenu, *debugWindowsWatchMenu, *debugWindowOutputMenu, *debugWindowExceptionMenu, *debugWindowsMemoryMenu, *debugNewBreakpointMenu; QToolBar * toolbar; QToolBar * debugbar; QToolBar * debuggerbar; @@ -187,28 +189,28 @@ class MainWin: public QMainWindow QActionGroup * zoomActs; QActionGroup * tvTypeActs; - QAction * quitAppAct; - QAction * powerAct; - QAction * pauseAct; - QAction * x1Act; - QAction * x2Act; - QAction * x3Act; - QAction * ntscAct; - QAction * palAct; - QAction * blurAct; - QAction * aboutAct; - QAction * helpAct; - QAction * filePickAct; - QAction * configAct; - QAction * emustatusAct; - QAction * useCDAct; - QAction * frameAdvanceAct; + QAction *quitAppAct; + QAction *powerAct; + QAction *pauseAct; + QAction *x1Act; + QAction *x2Act; + QAction *x3Act; + QAction *ntscAct; + QAction *palAct; + QAction *blurAct; + QAction *aboutAct; + QAction *helpAct; + QAction *filePickAct; + QAction *configAct; + QAction *emustatusAct; + QAction *useCDAct; + QAction *frameAdvanceAct; QAction *traceStepOverAct; QAction *traceStepIntoAct; QAction *restartAct; - QAction * fullScreenAct; + QAction *fullScreenAct; //QAction *DasmAct; - QAction *screenshotAct;; + QAction *screenshotAct; // Alpine QAction *memBrowseAct; @@ -225,7 +227,7 @@ class MainWin: public QMainWindow QAction *LocalBrowseAct; QAction *CallStackBrowseAct; QAction **mem1BrowseAct; - QAction *newBreakpointFunctionAct; + //QAction *newBreakpointFunctionAct; QAction *exceptionVectorTableBrowseAct; QIcon powerGreen; diff --git a/src/settings.h b/src/settings.h index 5671ef8..56615bc 100644 --- a/src/settings.h +++ b/src/settings.h @@ -6,6 +6,7 @@ // Who When What // --- ---------- ------------------------------------------------------------ // JPM 06/19/2016 Soft debugger support +// JPM Sept. / 2018 Added the new Models and BIOS handler, and a screenshot settings // #ifndef __SETTINGS_H__ @@ -55,16 +56,16 @@ extern bool EraseSettings(char *Setting); // Settings struct struct VJSettings { - bool useJoystick; + bool useJoystick; // Joystick usage int32_t joyport; // Joystick port bool hardwareTypeNTSC; // Set to false for PAL, otherwise it is NTSC bool useJaguarBIOS; // Use of any Jaguar BIOS bool useRetailBIOS; // Use of Retail BIOS bool useDevBIOS; // Use of Development BIOS - bool GPUEnabled; - bool DSPEnabled; + bool GPUEnabled; // Use of GPU + bool DSPEnabled; // Use of DSP bool usePipelinedDSP; - bool fullscreen; + bool fullscreen; // Emulator in full screen mode so video output display only bool useOpenGL; // OpenGL support (always 'true') uint32_t glFilter; bool hardwareTypeAlpine; // Alpine mode @@ -73,7 +74,7 @@ struct VJSettings uint32_t frameSkip; uint32_t renderType; uint32_t refresh; - bool allowWritesToROM; + bool allowWritesToROM; // Allow writing to ROM cartdridge uint32_t biosType; // Bios type used uint32_t jaguarModel; // Jaguar model size_t nbrdisasmlines; // Number of lines to show in the M68K tracing window @@ -93,8 +94,8 @@ struct VJSettings // Paths char ROMPath[MAX_PATH]; - char jagBootPath[MAX_PATH]; - char CDBootPath[MAX_PATH]; + //char jagBootPath[MAX_PATH]; + //char CDBootPath[MAX_PATH]; char EEPROMPath[MAX_PATH]; char alpineROMPath[MAX_PATH]; char debuggerROMPath[MAX_PATH]; diff --git a/virtualjaguar.pro b/virtualjaguar.pro index 7d33423..e66a3b0 100644 --- a/virtualjaguar.pro +++ b/virtualjaguar.pro @@ -4,6 +4,8 @@ # by James Hammons # Copyright (C) 2011 Underground Software # +# Modified by Jean-Paul Mari +# # See the README and GPLv3 files for licensing and warranty information # # NOTE: M68000 core is built and linked in as a library, so there should be no -- 2.20.1