Commit | Line | Data |
---|---|---|
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 |
26 | EmuStatusWindow::EmuStatusWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog), |
27 | layout(new QVBoxLayout), | |
28 | resetcycles(new QPushButton(tr("Reset cycles"))), | |
29 | text(new QLabel), | |
30 | M68K_totalcycles(0), | |
31 | M68K_opcodecycles(0), | |
32 | GPURunning(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 | // | |
49 | void EmuStatusWindow::ResetCycles(void) | |
50 | { | |
51 | ResetM68KCycles(); | |
52 | RefreshContents(); | |
53 | } | |
54 | ||
55 | ||
56 | // | |
57 | void EmuStatusWindow::ResetM68KCycles(void) | |
58 | { | |
59 | M68K_totalcycles = M68K_opcodecycles = 0; | |
60 | } | |
61 | ||
62 | ||
63 | // | |
64 | void EmuStatusWindow::UpdateM68KCycles(size_t cycles) | |
65 | { | |
66 | M68K_totalcycles += (M68K_opcodecycles = cycles); | |
cf76e892 JPM |
67 | } |
68 | ||
69 | ||
d259f61f | 70 | // |
cf76e892 JPM |
71 | void 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 |
101 | void EmuStatusWindow::keyPressEvent(QKeyEvent * e) |
102 | { | |
103 | if (e->key() == Qt::Key_Escape) | |
cf76e892 | 104 | { |
d259f61f | 105 | hide(); |
cf76e892 JPM |
106 | } |
107 | } |