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