1 // NOTE: Apologies for the quality of this code, this is really from pre-opensource Dolphin - that is, 2003.
2 
3 #pragma once
4 
5 #include "Windows/W32Util/DialogManager.h"
6 #include "Windows/W32Util/TabControl.h"
7 #include "Windows/Debugger/CtrlDisAsmView.h"
8 #include "Windows/Debugger/Debugger_Lists.h"
9 #include "Core/Core.h"
10 #include "Core/MIPS/MIPSDebugInterface.h"
11 #include "Core/Debugger/Breakpoints.h"
12 #include <vector>
13 
14 #include "Common/CommonWindows.h"
15 
16 class CDisasm : public Dialog
17 {
18 private:
19 	int minWidth;
20 	int minHeight;
21 	DebugInterface *cpu;
22 	u64 lastTicks;
23 
24 	HWND statusBarWnd;
25 	CtrlBreakpointList* breakpointList;
26 	CtrlThreadList* threadList;
27 	CtrlStackTraceView* stackTraceView;
28 	CtrlModuleList* moduleList;
29 	TabControl* leftTabs;
30 	TabControl* bottomTabs;
31 	std::vector<BreakPoint> displayedBreakPoints_;
32 	std::vector<MemCheck> displayedMemChecks_;
33 	bool keepStatusBarText = false;
34 	bool hideBottomTabs = false;
35 	bool deferredSymbolFill_ = false;
36 
37 	BOOL DlgProc(UINT message, WPARAM wParam, LPARAM lParam) override;
38 	void UpdateSize(WORD width, WORD height);
39 	void SavePosition();
40 	void updateThreadLabel(bool clear);
41 	void stepInto();
42 	void stepOver();
43 	void stepOut();
44 	void runToLine();
45 
46 public:
47 	int index;
48 
49 	CDisasm(HINSTANCE _hInstance, HWND _hParent, DebugInterface *cpu);
50 	~CDisasm();
51 
52 	void Show(bool bShow, bool includeToTop = true) override;
53 
Update()54 	void Update() override {
55 		UpdateDialog(true);
56 		SetDebugMode(Core_IsStepping(), false);
57 		breakpointList->reloadBreakpoints();
58 	};
59 	void UpdateDialog(bool _bComplete = false);
60 	// SetDebugMode
61 	void SetDebugMode(bool _bDebug, bool switchPC);
62 
63 	void Goto(u32 addr);
64 	void NotifyMapLoaded();
65 };
66