2 // memorybrowser.cpp - Jaguar memory browser
5 // (C) 2012 Underground Software
7 // JLH = James Hammons <jlhamm@acm.org>
10 // --- ---------- -------------------------------------------------------------
11 // JLH 08/14/2012 Created this file
17 #include "memorybrowser.h"
21 MemoryBrowserWindow::MemoryBrowserWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog),
22 // layout(new QVBoxLayout), text(new QTextBrowser),
23 layout(new QVBoxLayout), text(new QLabel),
24 refresh(new QPushButton(tr("Refresh"))),
25 address(new QLineEdit),
26 go(new QPushButton(tr("Go"))),
29 setWindowTitle(tr("Memory Browser"));
31 address->setInputMask("hhhhhh");
32 QHBoxLayout * hbox1 = new QHBoxLayout;
33 hbox1->addWidget(refresh);
34 hbox1->addWidget(address);
37 // Need to set the size as well...
40 QFont fixedFont("Lucida Console", 8, QFont::Normal);
41 text->setFont(fixedFont);
42 //// layout->setSizeConstraint(QLayout::SetFixedSize);
45 layout->addWidget(text);
46 // layout->addWidget(refresh);
47 layout->addLayout(hbox1);
49 connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents()));
50 connect(go, SIGNAL(clicked()), this, SLOT(GoToAddress()));
54 void MemoryBrowserWindow::RefreshContents(void)
56 char string[1024], buf[64];
59 for(uint32_t i=0; i<480; i+=16)
61 sprintf(string, "%s%06X: ", (i != 0 ? "<br>" : ""), memBase + i);
63 for(uint32_t j=0; j<16; j++)
65 sprintf(buf, "%02X ", jaguarMainRAM[memBase + i + j]);
72 for(uint32_t j=0; j<16; j++)
74 uint8_t c = jaguarMainRAM[memBase + i + j];
75 sprintf(buf, "&#%i;", c);
78 sprintf(buf, " ");
80 if ((c < 0x20) || ((c > 0x7F) && (c < 0xA0)))
86 memDump += QString(string);
90 text->setText(memDump);
94 void MemoryBrowserWindow::keyPressEvent(QKeyEvent * e)
96 if (e->key() == Qt::Key_Escape)
98 else if (e->key() == Qt::Key_PageUp)
107 else if (e->key() == Qt::Key_PageDown)
111 if (memBase > (0x200000 - 480))
112 memBase = 0x200000 - 480;
116 else if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus)
125 else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal)
129 if (memBase > (0x200000 - 480))
130 memBase = 0x200000 - 480;
137 void MemoryBrowserWindow::GoToAddress(void)
140 QString newAddress = address->text();
141 memBase = newAddress.toUInt(&ok, 16);