Added hooks to Qt GUI for importing of ld65 debug symbol files.
This commit is contained in:
parent
c1e7465fe5
commit
07617997f4
|
@ -7,6 +7,7 @@
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "fceu.h"
|
#include "fceu.h"
|
||||||
#include "cart.h"
|
#include "cart.h"
|
||||||
|
#include "ld65dbg.h"
|
||||||
|
|
||||||
#ifdef __QT_DRIVER__
|
#ifdef __QT_DRIVER__
|
||||||
#include "Qt/ConsoleUtilities.h"
|
#include "Qt/ConsoleUtilities.h"
|
||||||
|
@ -773,6 +774,7 @@ int debugSymbolTable_t::loadGameSymbols(void)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
//--------------------------------------------------------------
|
||||||
int debugSymbolTable_t::addSymbolAtBankOffset(int bank, int ofs, const char *name, const char *comment)
|
int debugSymbolTable_t::addSymbolAtBankOffset(int bank, int ofs, const char *name, const char *comment)
|
||||||
{
|
{
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
@ -909,3 +911,14 @@ const char *debugSymbolTable_t::errorMessage(void)
|
||||||
return dbgSymTblErrMsg;
|
return dbgSymTblErrMsg;
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
int debugSymbolTable_t::ld65LoadDebugFile( const char *dbgFilePath )
|
||||||
|
{
|
||||||
|
ld65::database db;
|
||||||
|
|
||||||
|
if ( db.dbgFileLoad( dbgFilePath ) )
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
|
|
@ -153,6 +153,8 @@ class debugSymbolTable_t
|
||||||
|
|
||||||
const char *errorMessage(void);
|
const char *errorMessage(void);
|
||||||
|
|
||||||
|
int ld65LoadDebugFile( const char *dbgFilePath );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map <int, debugSymbolPage_t*> pageMap;
|
std::map <int, debugSymbolPage_t*> pageMap;
|
||||||
FCEU::mutex *cs;
|
FCEU::mutex *cs;
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QRadioButton>
|
#include <QRadioButton>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
|
#include <QFileDialog>
|
||||||
#include <QFontDialog>
|
#include <QFontDialog>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
|
@ -43,6 +44,7 @@
|
||||||
#include <QActionGroup>
|
#include <QActionGroup>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
|
#include <QStandardPaths>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QToolTip>
|
#include <QToolTip>
|
||||||
#include <QWindow>
|
#include <QWindow>
|
||||||
|
@ -262,6 +264,83 @@ void ConsoleDebugger::closeWindow(void)
|
||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void ConsoleDebugger::ld65ImportDebug(void)
|
||||||
|
{
|
||||||
|
int ret, useNativeFileDialogVal;
|
||||||
|
QString filename;
|
||||||
|
std::string last;
|
||||||
|
const char *romPath;
|
||||||
|
QFileDialog dialog(this, tr("Open ld65 Debug File") );
|
||||||
|
QList<QUrl> urls;
|
||||||
|
QDir d;
|
||||||
|
|
||||||
|
const QStringList filters({
|
||||||
|
"dbg files (*.dbg *.DBG)",
|
||||||
|
"Any files (*)"
|
||||||
|
});
|
||||||
|
|
||||||
|
urls << QUrl::fromLocalFile( QDir::rootPath() );
|
||||||
|
urls << QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first());
|
||||||
|
urls << QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::DesktopLocation).first());
|
||||||
|
urls << QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::DownloadLocation).first());
|
||||||
|
urls << QUrl::fromLocalFile( QDir( FCEUI_GetBaseDirectory() ).absolutePath() );
|
||||||
|
|
||||||
|
romPath = getRomFile();
|
||||||
|
|
||||||
|
if ( romPath != nullptr )
|
||||||
|
{
|
||||||
|
std::string dir;
|
||||||
|
|
||||||
|
getDirFromFile( romPath, dir);
|
||||||
|
|
||||||
|
d.setPath(dir.c_str());
|
||||||
|
|
||||||
|
if ( d.exists() )
|
||||||
|
{
|
||||||
|
urls << QUrl::fromLocalFile( d.absolutePath() );
|
||||||
|
|
||||||
|
dialog.setDirectory( tr(dir.c_str()) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||||
|
|
||||||
|
dialog.setNameFilters( filters );
|
||||||
|
|
||||||
|
dialog.setViewMode(QFileDialog::List);
|
||||||
|
dialog.setFilter( QDir::AllEntries | QDir::AllDirs | QDir::Hidden );
|
||||||
|
dialog.setLabelText( QFileDialog::Accept, tr("Open") );
|
||||||
|
|
||||||
|
// Check config option to use native file dialog or not
|
||||||
|
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
|
||||||
|
|
||||||
|
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
|
||||||
|
dialog.setSidebarUrls(urls);
|
||||||
|
|
||||||
|
ret = dialog.exec();
|
||||||
|
|
||||||
|
if ( ret )
|
||||||
|
{
|
||||||
|
QStringList fileList;
|
||||||
|
fileList = dialog.selectedFiles();
|
||||||
|
|
||||||
|
if ( fileList.size() > 0 )
|
||||||
|
{
|
||||||
|
filename = fileList[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( filename.isNull() )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//qDebug() << "selected file path : " << filename.toUtf8();
|
||||||
|
|
||||||
|
debugSymbolTable.ld65LoadDebugFile( filename.toStdString().c_str() );
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
QMenuBar *ConsoleDebugger::buildMenuBar(void)
|
QMenuBar *ConsoleDebugger::buildMenuBar(void)
|
||||||
{
|
{
|
||||||
QMenu *fileMenu, *viewMenu, *debugMenu,
|
QMenu *fileMenu, *viewMenu, *debugMenu,
|
||||||
|
@ -283,6 +362,14 @@ QMenuBar *ConsoleDebugger::buildMenuBar(void)
|
||||||
// File
|
// File
|
||||||
fileMenu = menuBar->addMenu(tr("&File"));
|
fileMenu = menuBar->addMenu(tr("&File"));
|
||||||
|
|
||||||
|
// File -> Import ld65 dbg
|
||||||
|
act = new QAction(tr("&Import ld65 dbg file"), this);
|
||||||
|
//act->setShortcut(QKeySequence::Close);
|
||||||
|
act->setStatusTip(tr("Import ld65 Debug File"));
|
||||||
|
connect(act, SIGNAL(triggered()), this, SLOT(ld65ImportDebug(void)) );
|
||||||
|
|
||||||
|
fileMenu->addAction(act);
|
||||||
|
|
||||||
// File -> Close
|
// File -> Close
|
||||||
act = new QAction(tr("&Close"), this);
|
act = new QAction(tr("&Close"), this);
|
||||||
act->setShortcut(QKeySequence::Close);
|
act->setShortcut(QKeySequence::Close);
|
||||||
|
|
|
@ -557,6 +557,7 @@ class ConsoleDebugger : public QDialog
|
||||||
void asmViewCtxMenuRunToCursor(void);
|
void asmViewCtxMenuRunToCursor(void);
|
||||||
void moveTab( QWidget *w, int row, int column);
|
void moveTab( QWidget *w, int row, int column);
|
||||||
private slots:
|
private slots:
|
||||||
|
void ld65ImportDebug(void);
|
||||||
void updatePeriodic(void);
|
void updatePeriodic(void);
|
||||||
void hbarChanged(int value);
|
void hbarChanged(int value);
|
||||||
void vbarChanged(int value);
|
void vbarChanged(int value);
|
||||||
|
|
|
@ -26,4 +26,11 @@ namespace ld65
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------
|
||||||
|
int database::dbgFileLoad( const char *dbgFilePath )
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------------------------------
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,8 @@ namespace ld65
|
||||||
public:
|
public:
|
||||||
database(void);
|
database(void);
|
||||||
|
|
||||||
|
int dbgFileLoad( const char *dbgFilePath );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<int, scope*> scopeMap;
|
std::map<int, scope*> scopeMap;
|
||||||
std::map<int, segment*> segmentMap;
|
std::map<int, segment*> segmentMap;
|
||||||
|
|
Loading…
Reference in New Issue