Handle number of M68K cycles used when tracing in debugger mode
[clinton/Virtual-Jaguar-Rx.git] / src / gui / mainwin.h
1 //
2 // mainwin.h: Header file
3 //
4 // by James Hammons
5 // (C) 2010 Underground Software
6 //
7 // Modified by Jean-Paul Mari
8 //
9
10 #ifndef __MAINWIN_H__
11 #define __MAINWIN_H__
12
13 //Hrm. uh??? I thought this wasn't the way to do this stuff...???
14 #include <QtWidgets/QtWidgets>
15 #include "tom.h"
16
17 #define RING_BUFFER_SIZE 32
18
19 // Main windows
20 class GLWidget;
21 //class VideoWindow;
22 class AboutWindow;
23 class HelpWindow;
24 class FilePickerWindow;
25 //class VideoOutputWindow;
26 //class DasmWindow;
27 class EmuStatusWindow;
28
29 // Alpine
30 class MemoryBrowserWindow;
31 class StackBrowserWindow;
32 class CPUBrowserWindow;
33 class OPBrowserWindow;
34 class M68KDasmBrowserWindow;
35 class RISCDasmBrowserWindow;
36 class HWRegsBrowserWindow;
37
38 // Debugger
39 class SourcesWindow;
40 class m68KDasmWindow;
41 class GPUDasmWindow;
42 class DSPDasmWindow;
43 class AllWatchBrowserWindow;
44 class LocalBrowserWindow;
45 class CallStackBrowserWindow;
46 class HeapAllocatorBrowserWindow;
47 class Memory1BrowserWindow;
48 class BreakpointsWindow;
49 class NewFnctBreakpointWindow;
50 class ExceptionVectorTableBrowserWindow;
51 class FilesrcListWindow;
52 class CartFilesListWindow;
53 class SaveDumpAsWindow;
54
55
56 //
57 class MainWin: public QMainWindow
58 {
59 // All Qt apps require this macro for signal/slot functionality to work
60 Q_OBJECT
61
62 public:
63 // MainWin(QString);
64 MainWin(bool);
65 void LoadFile(QString);
66 void SyncUI(void);
67 void DebuggerRefreshWindows(void);
68 void ViewRefreshWindows(void);
69 void RefreshWindows(void);
70 void CommonRefreshWindows(void);
71 void AlpineRefreshWindows(void);
72 void DebuggerResetWindows(void);
73 void CommonResetWindows(void);
74 void CommonReset(void);
75 void DebuggerReset(void);
76
77 protected:
78 void closeEvent(QCloseEvent *);
79 void keyPressEvent(QKeyEvent *);
80 void keyReleaseEvent(QKeyEvent *);
81
82 private slots:
83 void Open(void);
84 void Configure(void);
85 void Timer(void);
86 void TogglePowerState(void);
87 void ToggleRunState(void);
88 void SetZoom100(void);
89 void SetZoom200(void);
90 void SetZoom300(void);
91 void SetNTSC(void);
92 void SetPAL(void);
93 void ToggleBlur(void);
94 void ShowAboutWin(void);
95 void ShowHelpWin(void);
96 void InsertCart(void);
97 void Unpause(void);
98 void LoadSoftware(QString);
99 void ToggleCDUsage(void);
100 void FrameAdvance(void);
101 void ToggleFullScreen(void);
102 void ShowEmuStatusWin(void);
103 void MakeScreenshot(void);
104 // Debugger
105 void DebuggerTraceStepOver(void);
106 void DebuggerTraceStepInto(void);
107 void DebuggerRestart(void);
108 void ShowAllWatchBrowserWin(void);
109 void ShowLocalBrowserWin(void);
110 void ShowCallStackBrowserWin(void);
111 void ShowHeapAllocatorBrowserWin(void);
112 void ShowMemory1BrowserWin(int NumWin);
113 void ShowExceptionVectorTableBrowserWin(void);
114 void ShowNewFunctionBreakpointWin(void);
115 void ShowBreakpointsWin(void);
116 void DeleteAllBreakpoints(void);
117 void DisableAllBreakpoints(void);
118 void ShowSaveDumpAsWin(void);
119 void SelectdasmtabWidget(const int);
120 #if 0
121 void ShowVideoOutputWin(void);
122 void ShowDasmWin(void);
123 #endif
124 void ShowCartFilesListWin(void);
125 // Alpine
126 void ShowMemoryBrowserWin(void);
127 void ShowStackBrowserWin(void);
128 void ShowCPUBrowserWin(void);
129 void ShowOPBrowserWin(void);
130 void ShowM68KDasmBrowserWin(void);
131 void ShowHWRegsBrowserWin(void);
132 void ShowRISCDasmBrowserWin(void);
133
134 private:
135 void HandleKeys(QKeyEvent *, bool);
136 void HandleGamepads(void);
137 void SetFullScreen(bool state = true);
138 void ResizeMainWindow(void);
139 void ReadUISettings(void);
140 void ReadSettings(void);
141 void WriteSettings(void);
142 void WriteUISettings(void);
143
144 private:
145 GLWidget *videoWidget;
146 QMdiArea *mainWindowCentrale;
147 QMdiSubWindow *VideoOutputWindowCentrale;
148 AboutWindow *aboutWin;
149 HelpWindow *helpWin;
150 FilePickerWindow *filePickWin;
151 EmuStatusWindow *emuStatusWin;
152 MemoryBrowserWindow *memBrowseWin;
153 StackBrowserWindow *stackBrowseWin;
154 CPUBrowserWindow *cpuBrowseWin;
155 OPBrowserWindow *opBrowseWin;
156 M68KDasmBrowserWindow *m68kDasmBrowseWin;
157 RISCDasmBrowserWindow *riscDasmBrowseWin;
158 HWRegsBrowserWindow *hwRegsBrowseWin;
159 //VideoOutputWindow *VideoOutputWin;
160 AllWatchBrowserWindow *allWatchBrowseWin;
161 LocalBrowserWindow *LocalBrowseWin;
162 CallStackBrowserWindow *CallStackBrowseWin;
163 ExceptionVectorTableBrowserWindow *exceptionvectortableBrowseWin;
164 HeapAllocatorBrowserWindow *heapallocatorBrowseWin;
165 Memory1BrowserWindow **mem1BrowseWin;
166 //DasmWindow * DasmWin;
167 QTabWidget *dasmtabWidget;
168 //QDockWidget *dasmtabWidget;
169 SourcesWindow *SourcesWin;
170 m68KDasmWindow *m68kDasmWin;
171 GPUDasmWindow *GPUDasmWin;
172 DSPDasmWindow *DSPDasmWin;
173 FilesrcListWindow *FilesrcListWin;
174 BreakpointsWindow *BreakpointsWin;
175 NewFnctBreakpointWindow *NewFunctionBreakpointWin;
176 CartFilesListWindow *CartFilesListWin;
177 SaveDumpAsWindow *SaveDumpAsWin;
178 QTimer *timer;
179 bool running;
180 int zoomLevel;
181 bool powerButtonOn;
182 bool showUntunedTankCircuit;
183
184 public:
185 bool cartridgeLoaded;
186
187 private:
188 bool allowUnknownSoftware;
189 bool CDActive;
190 // bool alpineLoadSuccessful;
191 bool pauseForFileSelector;
192 bool loadAndGo;
193 bool keyHeld[8];
194 bool fullScreen;
195 bool scannedSoftwareFolder;
196
197 public:
198 bool plzDontKillMyComputer;
199 uint32_t oldTimestamp;
200 uint32_t ringBufferPointer;
201 uint32_t ringBuffer[RING_BUFFER_SIZE];
202
203 private:
204 QPoint mainWinPosition;
205 // QSize mainWinSize;
206 int lastEditedProfile;
207 QMenu *fileMenu;
208 QMenu *helpMenu;
209 QMenu *debugMenu, *debugWindowsMenu, *debugWindowsBrowsesMenu, *debugWindowsWatchMenu, *debugWindowOutputMenu, *debugWindowExceptionMenu, *debugWindowsMemoryMenu, *debugNewBreakpointMenu;
210 QMenu *viewMenu, *viewCartMenu;
211 QToolBar * toolbar;
212 QToolBar * debugbar;
213 QToolBar * debuggerbar;
214
215 QActionGroup * zoomActs;
216 QActionGroup * tvTypeActs;
217
218 QAction *quitAppAct;
219 QAction *powerAct;
220 QAction *pauseAct;
221 QAction *x1Act;
222 QAction *x2Act;
223 QAction *x3Act;
224 QAction *ntscAct;
225 QAction *palAct;
226 QAction *blurAct;
227 QAction *aboutAct;
228 QAction *helpAct;
229 QAction *filePickAct;
230 QAction *configAct;
231 QAction *emustatusAct;
232 QAction *useCDAct;
233 QAction *frameAdvanceAct;
234 QAction *fullScreenAct;
235 //QAction *DasmAct;
236 QAction *screenshotAct;
237
238 // Alpine
239 QAction *memBrowseAct;
240 QAction *stackBrowseAct;
241 QAction *cpuBrowseAct;
242 QAction *opBrowseAct;
243 QAction *m68kDasmBrowseAct;
244 QAction *hwRegsBrowseAct;
245 QAction *riscDasmBrowseAct;
246
247 // Debugger
248 QAction *traceStepOverAct;
249 QAction *traceStepIntoAct;
250 QAction *restartAct;
251 //QAction *VideoOutputAct;
252 QAction *heapallocatorBrowseAct;
253 QAction *allWatchBrowseAct;
254 QAction *LocalBrowseAct;
255 QAction *CallStackBrowseAct;
256 QAction **mem1BrowseAct;
257 QAction *newFunctionBreakpointAct;
258 QAction *BreakpointsAct;
259 QAction *deleteAllBreakpointsAct;
260 QAction *disableAllBreakpointsAct;
261 QAction *saveDumpAsAct;
262 QAction *exceptionVectorTableBrowseAct;
263 QAction *CartFilesListAct;
264
265 QIcon powerGreen;
266 QIcon powerRed;
267 QIcon blur;
268 uint32_t testPattern[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT_PAL];
269 uint32_t testPattern2[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT_PAL];
270 };
271
272 #endif // __MAINWIN_H__