From bcb620ccf914ab1f935c9ef79688cdcc8521316f Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Thu, 8 Jul 2021 19:43:25 -0400 Subject: [PATCH] Added debug symbol address decode tool top. --- src/drivers/Qt/ConsoleDebugger.cpp | 40 +++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/drivers/Qt/ConsoleDebugger.cpp b/src/drivers/Qt/ConsoleDebugger.cpp index 3673e8b5..4e643ee8 100644 --- a/src/drivers/Qt/ConsoleDebugger.cpp +++ b/src/drivers/Qt/ConsoleDebugger.cpp @@ -2613,7 +2613,7 @@ void QAsmView::updateAssemblyView(void) *d = *a; d->type = dbg_asm_entry_t::SYMBOL_NAME; - d->text.assign( dbgSym->name ); + d->text.assign( " " + dbgSym->name ); d->text.append( ":"); d->line = asmEntry.size(); @@ -2644,6 +2644,13 @@ void QAsmView::updateAssemblyView(void) } else { + if ( j == 0 ) + { + while ( j < 3 ) + { + stmp[j] = ' '; j++; + } + } stmp[j] = c[i]; j++; i++; } } @@ -3679,7 +3686,7 @@ bool QAsmView::event(QEvent *event) { int line; QHelpEvent *helpEvent = static_cast(event); - bool opcodeValid, showOpcodeDesc = false; + bool opcodeValid = false, showOpcodeDesc = false, showSymHexDecode = false; QPoint c = convPixToCursor(helpEvent->pos()); @@ -3690,6 +3697,23 @@ bool QAsmView::event(QEvent *event) showOpcodeDesc = (c.x() >= 22) && (c.x() < 25) && opcodeValid; + if ( (c.x() > 25) && opcodeValid && (asmEntry[line]->sym.name.size() > 0) ) + { + size_t subStrLoc = asmEntry[line]->text.find( asmEntry[line]->sym.name, 25 ); + + if ( (subStrLoc != std::string::npos) && (subStrLoc > 25) ) + { + //printf("Line:%i asmEntry DB Sym: %zi '%s'\n", line, subStrLoc, asmEntry[line]->sym.name.c_str() ); + int symTextStart = subStrLoc; + int symTextEnd = subStrLoc + asmEntry[line]->sym.name.size(); + + if ( (c.x() >= symTextStart) && (c.x() < symTextEnd) ) + { + showSymHexDecode = true; + } + } + } + if ( showOpcodeDesc ) { QString qs = fceuGetOpcodeToolTip(asmEntry[line]->opcode, asmEntry[line]->size ); @@ -3697,6 +3721,14 @@ bool QAsmView::event(QEvent *event) //QToolTip::setFont(font); QToolTip::showText(helpEvent->globalPos(), qs, this ); } + else if ( showSymHexDecode ) + { + char stmp[64]; + + sprintf( stmp, "$%04X", asmEntry[line]->sym.ofs ); + + QToolTip::showText(helpEvent->globalPos(), tr(stmp), this ); + } else { QToolTip::hideText(); @@ -4097,9 +4129,9 @@ void QAsmView::mousePressEvent(QMouseEvent * event) if ( asmEntry[line]->sym.name.size() > 0 ) { - size_t subStrLoc = asmEntry[line]->text.find( asmEntry[line]->sym.name, 22 ); + size_t subStrLoc = asmEntry[line]->text.find( asmEntry[line]->sym.name, 25 ); - if ( (subStrLoc != std::string::npos) && (subStrLoc > 22) ) + if ( (subStrLoc != std::string::npos) && (subStrLoc > 25) ) { //printf("Line:%i asmEntry DB Sym: %zi '%s'\n", line, subStrLoc, asmEntry[line]->sym.name.c_str() ); symTextStart = subStrLoc;