Handle number of M68K cycles used when tracing in debugger mode
[clinton/Virtual-Jaguar-Rx.git] / src / gui / emustatus.cpp
CommitLineData
cf76e892
JPM
1//
2// emustatus.cpp - Jaguar emulator status
3//
4// by Jean-Paul Mari
cf76e892
JPM
5//
6// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
7//
8// Who When What
9// --- ---------- -----------------------------------------------------------
10// JPM 02/02/2017 Created this file
44432db5 11// JPM Apr./2021 Display number of M68K cycles used in tracing mode
cf76e892
JPM
12//
13
14// STILL TO DO:
15//
16
17#include "emustatus.h"
18#include "memory.h"
19#include "gpu.h"
20#include "m68000/m68kinterface.h"
21#include "jaguar.h"
d259f61f 22#include "settings.h"
cf76e892
JPM
23
24
d259f61f 25//
44432db5
JPM
26EmuStatusWindow::EmuStatusWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),
27layout(new QVBoxLayout),
28resetcycles(new QPushButton(tr("Reset cycles"))),
29text(new QLabel),
30M68K_totalcycles(0),
31M68K_opcodecycles(0),
32GPURunning(GPUIsRunning())
cf76e892
JPM
33{
34 setWindowTitle(tr("Emulator status"));
35
cf76e892 36 QFont fixedFont("Lucida Console", 8, QFont::Normal);
cf76e892
JPM
37 fixedFont.setStyleHint(QFont::TypeWriter);
38 text->setFont(fixedFont);
cf76e892
JPM
39 setLayout(layout);
40
41 layout->addWidget(text);
44432db5
JPM
42 layout->addWidget(resetcycles);
43
44 connect(resetcycles, SIGNAL(clicked()), this, SLOT(ResetCycles()));
45}
46
47
48//
49void EmuStatusWindow::ResetCycles(void)
50{
51 ResetM68KCycles();
52 RefreshContents();
53}
54
55
56//
57void EmuStatusWindow::ResetM68KCycles(void)
58{
59 M68K_totalcycles = M68K_opcodecycles = 0;
60}
61
62
63//
64void EmuStatusWindow::UpdateM68KCycles(size_t cycles)
65{
66 M68K_totalcycles += (M68K_opcodecycles = cycles);
cf76e892
JPM
67}
68
69
d259f61f 70//
cf76e892
JPM
71void EmuStatusWindow::RefreshContents(void)
72{
73 char string[1024];
74 QString emuStatusDump;
75
76 if (isVisible())
77 {
78 text->clear();
79
80 GPURunning = GPUIsRunning();
81 sprintf(string, " GPU active | %s\n", (GPURunning ? "Yes" : "No"));
82 emuStatusDump += QString(string);
83 M68000DebugHaltStatus = M68KDebugHaltStatus();
84 sprintf(string, "M68K debugger status | %s\n", (M68000DebugHaltStatus ? "Halt" : "Run"));
85 emuStatusDump += QString(string);
d259f61f
JPM
86 sprintf(string, " M68K tracing | %s\n", (startM68KTracing ? "On" : "Off"));
87 emuStatusDump += QString(string);
44432db5
JPM
88 sprintf(string, " DRAM | %zi KB\n", (vjs.DRAM_size / 1024));
89 emuStatusDump += QString(string);
90 sprintf(string, " M68K tracing | %zi cycle%s\n", M68K_opcodecycles, (M68K_opcodecycles ? "s" : ""));
91 emuStatusDump += QString(string);
92 sprintf(string, " M68K tracing total | %zi cycle%s", M68K_totalcycles, (M68K_totalcycles ? "s" : ""));
cf76e892
JPM
93 emuStatusDump += QString(string);
94
95 text->setText(emuStatusDump);
96 }
97}
98
99
d259f61f 100//
cf76e892
JPM
101void EmuStatusWindow::keyPressEvent(QKeyEvent * e)
102{
103 if (e->key() == Qt::Key_Escape)
cf76e892 104 {
d259f61f 105 hide();
cf76e892
JPM
106 }
107}