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