rlm@1
|
1 // MainWnd.cpp : implementation file
|
rlm@1
|
2 //
|
rlm@1
|
3
|
rlm@1
|
4 #include "stdafx.h"
|
rlm@1
|
5 #include <winsock.h>
|
rlm@1
|
6
|
rlm@1
|
7 #include "resource.h"
|
rlm@1
|
8 #include "MainWnd.h"
|
rlm@1
|
9
|
rlm@1
|
10 #include "CmdAccelOb.h"
|
rlm@1
|
11 #include "FileDlg.h"
|
rlm@1
|
12 #include "ModeConfirm.h"
|
rlm@1
|
13 #include "Reg.h"
|
rlm@1
|
14 #include "WinResUtil.h"
|
rlm@1
|
15 #include "WinMiscUtil.h"
|
rlm@1
|
16 #include "Input.h"
|
rlm@1
|
17 #include "7zip/7zip.h"
|
rlm@1
|
18 #include "7zip/OpenArchive.h"
|
rlm@1
|
19 #include "LuaOpenDialog.h"
|
rlm@1
|
20 #include "ram_search.h"
|
rlm@1
|
21 #include "ramwatch.h"
|
rlm@1
|
22 #include "Sound.h"
|
rlm@1
|
23 #include "VBA.h"
|
rlm@1
|
24
|
rlm@1
|
25 #include "../version.h"
|
rlm@1
|
26 #include "../common/Util.h"
|
rlm@1
|
27 #include "../common/movie.h"
|
rlm@1
|
28 #include "../common/vbalua.h"
|
rlm@1
|
29 #include "../gba/GBASound.h"
|
rlm@1
|
30 #include "../gba/GBAGlobals.h"
|
rlm@1
|
31 #include "../gb/gbGlobals.h"
|
rlm@1
|
32
|
rlm@1
|
33 #define VBA_CONFIRM_MODE WM_APP + 100
|
rlm@1
|
34
|
rlm@1
|
35 /////////////////////////////////////////////////////////////////////////////
|
rlm@1
|
36 // MainWnd
|
rlm@1
|
37
|
rlm@1
|
38 MainWnd::MainWnd()
|
rlm@1
|
39 {
|
rlm@1
|
40 m_hAccelTable = NULL;
|
rlm@1
|
41 arrow = LoadCursor(NULL, IDC_ARROW);
|
rlm@1
|
42
|
rlm@1
|
43 InitDecoder();
|
rlm@1
|
44 }
|
rlm@1
|
45
|
rlm@1
|
46 MainWnd::~MainWnd()
|
rlm@1
|
47 {
|
rlm@1
|
48 CleanupDecoder();
|
rlm@1
|
49 }
|
rlm@1
|
50
|
rlm@1
|
51 BEGIN_MESSAGE_MAP(MainWnd, CWnd)
|
rlm@1
|
52 //{{AFX_MSG_MAP(MainWnd)
|
rlm@1
|
53 ON_WM_MOVE()
|
rlm@1
|
54 ON_WM_SIZE()
|
rlm@1
|
55 ON_WM_CLOSE()
|
rlm@1
|
56 ON_WM_INITMENUPOPUP()
|
rlm@1
|
57 ON_WM_INITMENU()
|
rlm@1
|
58 ON_WM_CONTEXTMENU()
|
rlm@1
|
59 ON_WM_MOUSEMOVE()
|
rlm@1
|
60 ON_WM_ACTIVATE()
|
rlm@1
|
61 ON_WM_ACTIVATEAPP()
|
rlm@1
|
62 ON_WM_DROPFILES()
|
rlm@1
|
63 ON_WM_PAINT()
|
rlm@1
|
64
|
rlm@1
|
65 ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
|
rlm@1
|
66 ON_COMMAND(ID_HELP_FAQ, OnHelpFaq)
|
rlm@1
|
67 ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
|
rlm@1
|
68 ON_COMMAND(ID_FILE_OPENGAMEBOY, OnFileOpenGBx)
|
rlm@1
|
69 ON_COMMAND(ID_FILE_PAUSE, OnFilePause)
|
rlm@1
|
70 ON_UPDATE_COMMAND_UI(ID_FILE_PAUSE, OnUpdateFilePause)
|
rlm@1
|
71 ON_COMMAND(ID_FILE_RESET, OnFileReset)
|
rlm@1
|
72 ON_UPDATE_COMMAND_UI(ID_FILE_RESET, OnUpdateFileReset)
|
rlm@1
|
73 ON_UPDATE_COMMAND_UI(ID_FILE_RECENT_FREEZE, OnUpdateFileRecentFreeze)
|
rlm@1
|
74 ON_COMMAND(ID_FILE_RECENT_RESET, OnFileRecentReset)
|
rlm@1
|
75 ON_COMMAND(ID_FILE_RECENT_FREEZE, OnFileRecentFreeze)
|
rlm@1
|
76 ON_COMMAND(ID_FILE_EXIT, OnFileExit)
|
rlm@1
|
77 ON_COMMAND(ID_FILE_CLOSE, OnFileClose)
|
rlm@1
|
78 ON_UPDATE_COMMAND_UI(ID_FILE_CLOSE, OnUpdateFileClose)
|
rlm@1
|
79 ON_COMMAND(ID_FILE_LOAD, OnFileLoad)
|
rlm@1
|
80 ON_UPDATE_COMMAND_UI(ID_FILE_LOAD, OnUpdateFileLoad)
|
rlm@1
|
81 ON_COMMAND(ID_FILE_SAVE, OnFileSave)
|
rlm@1
|
82 ON_UPDATE_COMMAND_UI(ID_FILE_SAVE, OnUpdateFileSave)
|
rlm@1
|
83 ON_COMMAND(ID_FILE_IMPORT_BATTERYFILE, OnFileImportBatteryfile)
|
rlm@1
|
84 ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT_BATTERYFILE, OnUpdateFileImportBatteryfile)
|
rlm@1
|
85 ON_COMMAND(ID_FILE_IMPORT_GAMESHARKCODEFILE, OnFileImportGamesharkcodefile)
|
rlm@1
|
86 ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT_GAMESHARKCODEFILE, OnUpdateFileImportGamesharkcodefile)
|
rlm@1
|
87 ON_COMMAND(ID_FILE_IMPORT_GAMESHARKSNAPSHOT, OnFileImportGamesharksnapshot)
|
rlm@1
|
88 ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT_GAMESHARKSNAPSHOT, OnUpdateFileImportGamesharksnapshot)
|
rlm@1
|
89 ON_COMMAND(ID_FILE_EXPORT_BATTERYFILE, OnFileExportBatteryfile)
|
rlm@1
|
90 ON_UPDATE_COMMAND_UI(ID_FILE_EXPORT_BATTERYFILE, OnUpdateFileExportBatteryfile)
|
rlm@1
|
91 ON_COMMAND(ID_FILE_EXPORT_GAMESHARKSNAPSHOT, OnFileExportGamesharksnapshot)
|
rlm@1
|
92 ON_UPDATE_COMMAND_UI(ID_FILE_EXPORT_GAMESHARKSNAPSHOT, OnUpdateFileExportGamesharksnapshot)
|
rlm@1
|
93 ON_COMMAND(ID_FILE_QUICKSCREENCAPTURE, OnFileQuickScreencapture)
|
rlm@1
|
94 ON_COMMAND(ID_FILE_SCREENCAPTURE, OnFileScreencapture)
|
rlm@1
|
95 ON_UPDATE_COMMAND_UI(ID_FILE_SCREENCAPTURE, OnUpdateFileScreencapture)
|
rlm@1
|
96 ON_COMMAND(ID_FILE_ROMINFORMATION, OnFileRominformation)
|
rlm@1
|
97 ON_UPDATE_COMMAND_UI(ID_FILE_ROMINFORMATION, OnUpdateFileRominformation)
|
rlm@1
|
98 ON_COMMAND(ID_FILE_TOGGLEMENU, OnFileTogglemenu)
|
rlm@1
|
99 ON_UPDATE_COMMAND_UI(ID_FILE_TOGGLEMENU, OnUpdateFileTogglemenu)
|
rlm@1
|
100 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_6, OnUpdateOptionsFrameskipThrottle6)
|
rlm@1
|
101 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_15, OnUpdateOptionsFrameskipThrottle15)
|
rlm@1
|
102 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_25, OnUpdateOptionsFrameskipThrottle25)
|
rlm@1
|
103 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_50, OnUpdateOptionsFrameskipThrottle50)
|
rlm@1
|
104 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_75, OnUpdateOptionsFrameskipThrottle75)
|
rlm@1
|
105 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_100, OnUpdateOptionsFrameskipThrottle100)
|
rlm@1
|
106 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_125, OnUpdateOptionsFrameskipThrottle125)
|
rlm@1
|
107 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_150, OnUpdateOptionsFrameskipThrottle150)
|
rlm@1
|
108 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_200, OnUpdateOptionsFrameskipThrottle200)
|
rlm@1
|
109 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_300, OnUpdateOptionsFrameskipThrottle300)
|
rlm@1
|
110 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_400, OnUpdateOptionsFrameskipThrottle400)
|
rlm@1
|
111 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_600, OnUpdateOptionsFrameskipThrottle600)
|
rlm@1
|
112 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_1000, OnUpdateOptionsFrameskipThrottle1000)
|
rlm@1
|
113 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_OTHER, OnUpdateOptionsFrameskipThrottleOther)
|
rlm@1
|
114 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_INCREASE, OnUpdateOptionsFrameskipThrottleIncrease)
|
rlm@1
|
115 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_THROTTLE_DECREASE, OnUpdateOptionsFrameskipThrottleDecrease)
|
rlm@1
|
116 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_6, OnOptionsFrameskipThrottle6)
|
rlm@1
|
117 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_15, OnOptionsFrameskipThrottle15)
|
rlm@1
|
118 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_25, OnOptionsFrameskipThrottle25)
|
rlm@1
|
119 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_50, OnOptionsFrameskipThrottle50)
|
rlm@1
|
120 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_75, OnOptionsFrameskipThrottle75)
|
rlm@1
|
121 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_100, OnOptionsFrameskipThrottle100)
|
rlm@1
|
122 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_125, OnOptionsFrameskipThrottle125)
|
rlm@1
|
123 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_150, OnOptionsFrameskipThrottle150)
|
rlm@1
|
124 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_200, OnOptionsFrameskipThrottle200)
|
rlm@1
|
125 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_300, OnOptionsFrameskipThrottle300)
|
rlm@1
|
126 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_400, OnOptionsFrameskipThrottle400)
|
rlm@1
|
127 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_600, OnOptionsFrameskipThrottle600)
|
rlm@1
|
128 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_1000, OnOptionsFrameskipThrottle1000)
|
rlm@1
|
129 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_OTHER, OnOptionsFrameskipThrottleOther)
|
rlm@1
|
130 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_INCREASE, OnOptionsFrameskipThrottleIncrease)
|
rlm@1
|
131 ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_DECREASE, OnOptionsFrameskipThrottleDecrease)
|
rlm@1
|
132 ON_COMMAND(ID_OPTIONS_FRAMESKIP_ACCURATEPITCH, OnOptionsFrameskipAccuratePitch)
|
rlm@1
|
133 ON_COMMAND(ID_OPTIONS_FRAMESKIP_ACCURATESPEED, OnOptionsFrameskipAccurateSpeed)
|
rlm@1
|
134 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_ACCURATEPITCH, OnUpdateOptionsFrameskipAccuratePitch)
|
rlm@1
|
135 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_ACCURATESPEED, OnUpdateOptionsFrameskipAccurateSpeed)
|
rlm@1
|
136 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_0, OnUpdateOptionsVideoFrameskip0)
|
rlm@1
|
137 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_1, OnUpdateOptionsVideoFrameskip1)
|
rlm@1
|
138 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_2, OnUpdateOptionsVideoFrameskip2)
|
rlm@1
|
139 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_3, OnUpdateOptionsVideoFrameskip3)
|
rlm@1
|
140 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_4, OnUpdateOptionsVideoFrameskip4)
|
rlm@1
|
141 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_5, OnUpdateOptionsVideoFrameskip5)
|
rlm@1
|
142 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_6, OnUpdateOptionsVideoFrameskip6)
|
rlm@1
|
143 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_7, OnUpdateOptionsVideoFrameskip7)
|
rlm@1
|
144 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_8, OnUpdateOptionsVideoFrameskip8)
|
rlm@1
|
145 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_9, OnUpdateOptionsVideoFrameskip9)
|
rlm@1
|
146 ON_COMMAND(ID_OPTIONS_VIDEO_VSYNC, OnOptionsVideoVsync)
|
rlm@1
|
147 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_VSYNC, OnUpdateOptionsVideoVsync)
|
rlm@1
|
148 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_X1, OnUpdateOptionsVideoX1)
|
rlm@1
|
149 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_X2, OnUpdateOptionsVideoX2)
|
rlm@1
|
150 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_X3, OnUpdateOptionsVideoX3)
|
rlm@1
|
151 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_X4, OnUpdateOptionsVideoX4)
|
rlm@1
|
152 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FULLSCREEN320X240, OnUpdateOptionsVideoFullscreen320x240)
|
rlm@1
|
153 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FULLSCREEN640X480, OnUpdateOptionsVideoFullscreen640x480)
|
rlm@1
|
154 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FULLSCREEN800X600, OnUpdateOptionsVideoFullscreen800x600)
|
rlm@1
|
155 ON_COMMAND(ID_OPTIONS_VIDEO_FULLSCREEN320X240, OnOptionsVideoFullscreen320x240)
|
rlm@1
|
156 ON_COMMAND(ID_OPTIONS_VIDEO_FULLSCREEN640X480, OnOptionsVideoFullscreen640x480)
|
rlm@1
|
157 ON_COMMAND(ID_OPTIONS_VIDEO_FULLSCREEN800X600, OnOptionsVideoFullscreen800x600)
|
rlm@1
|
158 ON_COMMAND(ID_OPTIONS_VIDEO_FULLSCREEN, OnOptionsVideoFullscreen)
|
rlm@1
|
159 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FULLSCREEN, OnUpdateOptionsVideoFullscreen)
|
rlm@1
|
160 ON_COMMAND(ID_OPTIONS_VIDEO_DISABLESFX, OnOptionsVideoDisablesfx)
|
rlm@1
|
161 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_DISABLESFX, OnUpdateOptionsVideoDisablesfx)
|
rlm@1
|
162 ON_COMMAND(ID_OPTIONS_VIDEO_FULLSCREENSTRETCHTOFIT, OnOptionsVideoFullscreenstretchtofit)
|
rlm@1
|
163 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FULLSCREENSTRETCHTOFIT, OnUpdateOptionsVideoFullscreenstretchtofit)
|
rlm@1
|
164 ON_COMMAND(ID_OPTIONS_VIDEO_RENDERMETHOD_GDI, OnOptionsVideoRendermethodGdi)
|
rlm@1
|
165 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDERMETHOD_GDI, OnUpdateOptionsVideoRendermethodGdi)
|
rlm@1
|
166 ON_COMMAND(ID_OPTIONS_VIDEO_RENDERMETHOD_DIRECTDRAW, OnOptionsVideoRendermethodDirectdraw)
|
rlm@1
|
167 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDERMETHOD_DIRECTDRAW, OnUpdateOptionsVideoRendermethodDirectdraw)
|
rlm@1
|
168 ON_COMMAND(ID_OPTIONS_VIDEO_RENDERMETHOD_DIRECT3D, OnOptionsVideoRendermethodDirect3d)
|
rlm@1
|
169 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDERMETHOD_DIRECT3D, OnUpdateOptionsVideoRendermethodDirect3d)
|
rlm@1
|
170 ON_COMMAND(ID_OPTIONS_VIDEO_RENDERMETHOD_OPENGL, OnOptionsVideoRendermethodOpengl)
|
rlm@1
|
171 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDERMETHOD_OPENGL, OnUpdateOptionsVideoRendermethodOpengl)
|
rlm@1
|
172 ON_COMMAND(ID_OPTIONS_VIDEO_TRIPLEBUFFERING, OnOptionsVideoTriplebuffering)
|
rlm@1
|
173 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_TRIPLEBUFFERING, OnUpdateOptionsVideoTriplebuffering)
|
rlm@1
|
174 ON_COMMAND(ID_OPTIONS_VIDEO_DDRAWEMULATIONONLY, OnOptionsVideoDdrawemulationonly)
|
rlm@1
|
175 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_DDRAWEMULATIONONLY, OnUpdateOptionsVideoDdrawemulationonly)
|
rlm@1
|
176 ON_COMMAND(ID_OPTIONS_VIDEO_DDRAWUSEVIDEOMEMORY, OnOptionsVideoDdrawusevideomemory)
|
rlm@1
|
177 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_DDRAWUSEVIDEOMEMORY, OnUpdateOptionsVideoDdrawusevideomemory)
|
rlm@1
|
178 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_D3DNOFILTER, OnOptionsVideoRenderoptionsD3dnofilter)
|
rlm@1
|
179 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_D3DNOFILTER, OnUpdateOptionsVideoRenderoptionsD3dnofilter)
|
rlm@1
|
180 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_D3DBILINEAR, OnOptionsVideoRenderoptionsD3dbilinear)
|
rlm@1
|
181 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_D3DBILINEAR, OnUpdateOptionsVideoRenderoptionsD3dbilinear)
|
rlm@1
|
182 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLNEAREST, OnOptionsVideoRenderoptionsGlnearest)
|
rlm@1
|
183 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLNEAREST, OnUpdateOptionsVideoRenderoptionsGlnearest)
|
rlm@1
|
184 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR, OnOptionsVideoRenderoptionsGlbilinear)
|
rlm@1
|
185 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR, OnUpdateOptionsVideoRenderoptionsGlbilinear)
|
rlm@1
|
186 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE, OnOptionsVideoRenderoptionsGltriangle)
|
rlm@1
|
187 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE, OnUpdateOptionsVideoRenderoptionsGltriangle)
|
rlm@1
|
188 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLQUADS, OnOptionsVideoRenderoptionsGlquads)
|
rlm@1
|
189 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLQUADS, OnUpdateOptionsVideoRenderoptionsGlquads)
|
rlm@1
|
190 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_SELECTSKIN, OnOptionsVideoRenderoptionsSelectskin)
|
rlm@1
|
191 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_SELECTSKIN, OnUpdateOptionsVideoRenderoptionsSelectskin)
|
rlm@1
|
192 ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_SKIN, OnOptionsVideoRenderoptionsSkin)
|
rlm@1
|
193 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_SKIN, OnUpdateOptionsVideoRenderoptionsSkin)
|
rlm@1
|
194 ON_COMMAND(ID_OPTIONS_EMULATOR_ASSOCIATE, OnOptionsEmulatorAssociate)
|
rlm@1
|
195 ON_COMMAND(ID_OPTIONS_EMULATOR_DIRECTORIES, OnOptionsEmulatorDirectories)
|
rlm@1
|
196 ON_COMMAND_RANGE(ID_OPTIONS_PREFER_ARCHIVE_NAME, ID_OPTIONS_PREFER_ROM_NAME, OnOptionsEmulatorFilenamePreference)
|
rlm@1
|
197 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_PREFER_ARCHIVE_NAME, ID_OPTIONS_PREFER_ROM_NAME, OnUpdateOptionsEmulatorFilenamePreference)
|
rlm@1
|
198 ON_COMMAND(ID_OPTIONS_VIDEO_DISABLESTATUSMESSAGES, OnOptionsVideoDisablestatusmessages)
|
rlm@1
|
199 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_DISABLESTATUSMESSAGES, OnUpdateOptionsVideoDisablestatusmessages)
|
rlm@1
|
200 ON_COMMAND(ID_OPTIONS_EMULATOR_SYNCHRONIZE, OnOptionsEmulatorSynchronize)
|
rlm@1
|
201 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SYNCHRONIZE, OnUpdateOptionsEmulatorSynchronize)
|
rlm@1
|
202
|
rlm@1
|
203 ON_COMMAND(ID_OPTIONS_EMULATOR_ALWAYSONTOP, OnOptionsEmulatorAlwaysOnTop)
|
rlm@1
|
204 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_ALWAYSONTOP, OnUpdateOptionsEmulatorAlwaysOnTop)
|
rlm@1
|
205 ON_COMMAND(ID_OPTIONS_EMULATOR_PAUSEWHENINACTIVE, OnOptionsEmulatorPausewheninactive)
|
rlm@1
|
206 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_PAUSEWHENINACTIVE, OnUpdateOptionsEmulatorPausewheninactive)
|
rlm@1
|
207 ON_COMMAND(ID_OPTIONS_EMULATOR_BACKGROUNDINPUT, OnOptionsEmulatorEnableBackgroundInput)
|
rlm@1
|
208 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_BACKGROUNDINPUT, OnUpdateOptionsEmulatorEnableBackgroundInput)
|
rlm@1
|
209 ON_COMMAND(ID_OPTIONS_EMULATOR_SPEEDUPTOGGLE, OnOptionsEmulatorSpeeduptoggle)
|
rlm@1
|
210
|
rlm@1
|
211 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SPEEDUPTOGGLE, OnUpdateOptionsEmulatorSpeeduptoggle)
|
rlm@1
|
212 ON_COMMAND(ID_OPTIONS_EMULATOR_REMOVEINTROSGBA, OnOptionsEmulatorRemoveintrosgba)
|
rlm@1
|
213 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_REMOVEINTROSGBA, OnUpdateOptionsEmulatorRemoveintrosgba)
|
rlm@1
|
214 ON_COMMAND(ID_OPTIONS_EMULATOR_AUTOMATICALLYIPSPATCH, OnOptionsEmulatorAutomaticallyipspatch)
|
rlm@1
|
215 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_AUTOMATICALLYIPSPATCH, OnUpdateOptionsEmulatorAutomaticallyipspatch)
|
rlm@1
|
216 ON_COMMAND(ID_OPTIONS_EMULATOR_AGBPRINT, OnOptionsEmulatorAgbprint)
|
rlm@1
|
217 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_AGBPRINT, OnUpdateOptionsEmulatorAgbprint)
|
rlm@1
|
218 ON_COMMAND(ID_OPTIONS_EMULATOR_REALTIMECLOCK, OnOptionsEmulatorRealtimeclock)
|
rlm@1
|
219 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_REALTIMECLOCK, OnUpdateOptionsEmulatorRealtimeclock)
|
rlm@1
|
220 ON_COMMAND(ID_OPTIONS_EMULATOR_AUTOHIDEMENU, OnOptionsEmulatorAutohidemenu)
|
rlm@1
|
221 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_AUTOHIDEMENU, OnUpdateOptionsEmulatorAutohidemenu)
|
rlm@1
|
222 ON_COMMAND(ID_OPTIONS_EMULATOR_REWINDINTERVAL, OnOptionsEmulatorRewindinterval)
|
rlm@1
|
223 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_AUTOMATIC, OnOptionsEmulatorSavetypeAutomatic)
|
rlm@1
|
224 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_AUTOMATIC, OnUpdateOptionsEmulatorSavetypeAutomatic)
|
rlm@1
|
225 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_EEPROM, OnOptionsEmulatorSavetypeEeprom)
|
rlm@1
|
226 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_EEPROM, OnUpdateOptionsEmulatorSavetypeEeprom)
|
rlm@1
|
227 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_SRAM, OnOptionsEmulatorSavetypeSram)
|
rlm@1
|
228 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_SRAM, OnUpdateOptionsEmulatorSavetypeSram)
|
rlm@1
|
229 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_FLASH, OnOptionsEmulatorSavetypeFlash)
|
rlm@1
|
230 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_FLASH, OnUpdateOptionsEmulatorSavetypeFlash)
|
rlm@1
|
231 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_EEPROMSENSOR, OnOptionsEmulatorSavetypeEepromsensor)
|
rlm@1
|
232 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_EEPROMSENSOR, OnUpdateOptionsEmulatorSavetypeEepromsensor)
|
rlm@1
|
233 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_NONE, OnOptionsEmulatorSavetypeNone)
|
rlm@1
|
234 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_NONE, OnUpdateOptionsEmulatorSavetypeNone)
|
rlm@1
|
235 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_FLASH512K, OnOptionsEmulatorSavetypeFlash512k)
|
rlm@1
|
236 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_FLASH512K, OnUpdateOptionsEmulatorSavetypeFlash512k)
|
rlm@1
|
237 ON_COMMAND(ID_OPTIONS_EMULATOR_SAVETYPE_FLASH1M, OnOptionsEmulatorSavetypeFlash1m)
|
rlm@1
|
238 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SAVETYPE_FLASH1M, OnUpdateOptionsEmulatorSavetypeFlash1m)
|
rlm@1
|
239 ON_COMMAND(ID_OPTIONS_EMULATOR_USEBIOSFILE, OnOptionsEmulatorUsebiosfile)
|
rlm@1
|
240 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_USEBIOSFILE, OnUpdateOptionsEmulatorUsebiosfile)
|
rlm@1
|
241 ON_COMMAND(ID_OPTIONS_EMULATOR_SKIPBIOS, OnOptionsEmulatorSkipbios)
|
rlm@1
|
242 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_SKIPBIOS, OnUpdateOptionsEmulatorSkipbios)
|
rlm@1
|
243 ON_COMMAND(ID_OPTIONS_EMULATOR_SELECTBIOSFILE, OnOptionsEmulatorSelectbiosfile)
|
rlm@1
|
244
|
rlm@1
|
245 ON_COMMAND(ID_EMULATOR_USE_OLD_FRAME_TIMING, OnOptionsEmulatorUseOldGBTiming)
|
rlm@1
|
246 ON_UPDATE_COMMAND_UI(ID_EMULATOR_USE_OLD_FRAME_TIMING, OnUpdateOptionsEmulatorUseOldGBTiming)
|
rlm@1
|
247 ON_COMMAND(ID_EMULATOR_USE_GB_INPUT_KLUDGE, OnOptionsEmulatorUseGBNullInputKludge)
|
rlm@1
|
248 ON_UPDATE_COMMAND_UI(ID_EMULATOR_USE_GB_INPUT_KLUDGE, OnUpdateOptionsEmulatorUseGBNullInputKludge)
|
rlm@1
|
249 ON_COMMAND(ID_EMULATOR_GBALAG, OnOptionsEmulatorGBALag)
|
rlm@1
|
250 ON_UPDATE_COMMAND_UI(ID_EMULATOR_GBALAG, OnUpdateOptionsEmulatorGBALag)
|
rlm@1
|
251
|
rlm@1
|
252 ON_COMMAND(ID_OPTIONS_EMULATOR_PNGFORMAT, OnOptionsEmulatorPngformat)
|
rlm@1
|
253 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_PNGFORMAT, OnUpdateOptionsEmulatorPngformat)
|
rlm@1
|
254 ON_COMMAND(ID_OPTIONS_EMULATOR_BMPFORMAT, OnOptionsEmulatorBmpformat)
|
rlm@1
|
255 ON_UPDATE_COMMAND_UI(ID_OPTIONS_EMULATOR_BMPFORMAT, OnUpdateOptionsEmulatorBmpformat)
|
rlm@1
|
256 ON_COMMAND(ID_OPTIONS_SOUND_DISABLE, OnOptionsSoundDisable)
|
rlm@1
|
257 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_DISABLE, OnUpdateOptionsSoundDisable)
|
rlm@1
|
258 ON_COMMAND(ID_OPTIONS_SOUND_MUTE, OnOptionsSoundMute)
|
rlm@1
|
259 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_MUTE, OnUpdateOptionsSoundMute)
|
rlm@1
|
260 ON_COMMAND(ID_OPTIONS_SOUND_OFF, OnOptionsSoundOff)
|
rlm@1
|
261 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_OFF, OnUpdateOptionsSoundOff)
|
rlm@1
|
262 ON_COMMAND(ID_OPTIONS_SOUND_ON, OnOptionsSoundOn)
|
rlm@1
|
263 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_ON, OnUpdateOptionsSoundOn)
|
rlm@1
|
264 ON_COMMAND(ID_OPTIONS_SOUND_USEOLDSYNCHRONIZATION, OnOptionsSoundUseoldsynchronization)
|
rlm@1
|
265 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_USEOLDSYNCHRONIZATION, OnUpdateOptionsSoundUseoldsynchronization)
|
rlm@1
|
266 ON_COMMAND(ID_OPTIONS_SOUND_ECHO, OnOptionsSoundEcho)
|
rlm@1
|
267 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_ECHO, OnUpdateOptionsSoundEcho)
|
rlm@1
|
268 ON_COMMAND(ID_OPTIONS_SOUND_LOWPASSFILTER, OnOptionsSoundLowpassfilter)
|
rlm@1
|
269 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_LOWPASSFILTER, OnUpdateOptionsSoundLowpassfilter)
|
rlm@1
|
270 ON_COMMAND(ID_OPTIONS_SOUND_REVERSESTEREO, OnOptionsSoundReversestereo)
|
rlm@1
|
271 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_REVERSESTEREO, OnUpdateOptionsSoundReversestereo)
|
rlm@1
|
272 ON_COMMAND(ID_OPTIONS_SOUND_MUTEFRAMEADVANCE, OnOptionsSoundMuteFrameAdvance)
|
rlm@1
|
273 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_MUTEFRAMEADVANCE, OnUpdateOptionsSoundMuteFrameAdvance)
|
rlm@1
|
274 ON_COMMAND(ID_OPTIONS_SOUND_MUTEWHENINACTIVE, OnOptionsSoundMuteWhenInactive)
|
rlm@1
|
275 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_MUTEWHENINACTIVE, OnUpdateOptionsSoundMuteWhenInactive)
|
rlm@1
|
276 ON_COMMAND(ID_OPTIONS_SOUND_11KHZ, OnOptionsSound11khz)
|
rlm@1
|
277 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_11KHZ, OnUpdateOptionsSound11khz)
|
rlm@1
|
278 ON_COMMAND(ID_OPTIONS_SOUND_22KHZ, OnOptionsSound22khz)
|
rlm@1
|
279 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_22KHZ, OnUpdateOptionsSound22khz)
|
rlm@1
|
280 ON_COMMAND(ID_OPTIONS_SOUND_44KHZ, OnOptionsSound44khz)
|
rlm@1
|
281 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_44KHZ, OnUpdateOptionsSound44khz)
|
rlm@1
|
282 ON_COMMAND(ID_OPTIONS_SOUND_CHANNEL1, OnOptionsSoundChannel1)
|
rlm@1
|
283 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_CHANNEL1, OnUpdateOptionsSoundChannel1)
|
rlm@1
|
284 ON_COMMAND(ID_OPTIONS_SOUND_CHANNEL2, OnOptionsSoundChannel2)
|
rlm@1
|
285 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_CHANNEL2, OnUpdateOptionsSoundChannel2)
|
rlm@1
|
286 ON_COMMAND(ID_OPTIONS_SOUND_CHANNEL3, OnOptionsSoundChannel3)
|
rlm@1
|
287 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_CHANNEL3, OnUpdateOptionsSoundChannel3)
|
rlm@1
|
288 ON_COMMAND(ID_OPTIONS_SOUND_CHANNEL4, OnOptionsSoundChannel4)
|
rlm@1
|
289 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_CHANNEL4, OnUpdateOptionsSoundChannel4)
|
rlm@1
|
290 ON_COMMAND(ID_OPTIONS_SOUND_DIRECTSOUNDA, OnOptionsSoundDirectsounda)
|
rlm@1
|
291 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_DIRECTSOUNDA, OnUpdateOptionsSoundDirectsounda)
|
rlm@1
|
292 ON_COMMAND(ID_OPTIONS_SOUND_DIRECTSOUNDB, OnOptionsSoundDirectsoundb)
|
rlm@1
|
293 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_DIRECTSOUNDB, OnUpdateOptionsSoundDirectsoundb)
|
rlm@1
|
294 ON_COMMAND(ID_OPTIONS_GAMEBOY_BORDER, OnOptionsGameboyBorder)
|
rlm@1
|
295 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_BORDER, OnUpdateOptionsGameboyBorder)
|
rlm@1
|
296 ON_COMMAND(ID_OPTIONS_GAMEBOY_PRINTER, OnOptionsGameboyPrinter)
|
rlm@1
|
297 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_PRINTER, OnUpdateOptionsGameboyPrinter)
|
rlm@1
|
298 ON_COMMAND(ID_OPTIONS_GAMEBOY_BORDERAUTOMATIC, OnOptionsGameboyBorderAutomatic)
|
rlm@1
|
299 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_BORDERAUTOMATIC, OnUpdateOptionsGameboyBorderAutomatic)
|
rlm@1
|
300 ON_COMMAND(ID_OPTIONS_GAMEBOY_AUTOMATIC, OnOptionsGameboyAutomatic)
|
rlm@1
|
301 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_AUTOMATIC, OnUpdateOptionsGameboyAutomatic)
|
rlm@1
|
302 ON_COMMAND(ID_OPTIONS_GAMEBOY_GBA, OnOptionsGameboyGba)
|
rlm@1
|
303 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_GBA, OnUpdateOptionsGameboyGba)
|
rlm@1
|
304 ON_COMMAND(ID_OPTIONS_GAMEBOY_CGB, OnOptionsGameboyCgb)
|
rlm@1
|
305 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_CGB, OnUpdateOptionsGameboyCgb)
|
rlm@1
|
306 ON_COMMAND(ID_OPTIONS_GAMEBOY_SGB, OnOptionsGameboySgb)
|
rlm@1
|
307 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_SGB, OnUpdateOptionsGameboySgb)
|
rlm@1
|
308 ON_COMMAND(ID_OPTIONS_GAMEBOY_SGB2, OnOptionsGameboySgb2)
|
rlm@1
|
309 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_SGB2, OnUpdateOptionsGameboySgb2)
|
rlm@1
|
310 ON_COMMAND(ID_OPTIONS_GAMEBOY_GB, OnOptionsGameboyGb)
|
rlm@1
|
311 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_GB, OnUpdateOptionsGameboyGb)
|
rlm@1
|
312 ON_COMMAND(ID_OPTIONS_GAMEBOY_REALCOLORS, OnOptionsGameboyRealcolors)
|
rlm@1
|
313 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_REALCOLORS, OnUpdateOptionsGameboyRealcolors)
|
rlm@1
|
314 ON_COMMAND(ID_OPTIONS_GAMEBOY_GAMEBOYCOLORS, OnOptionsGameboyGameboycolors)
|
rlm@1
|
315 ON_UPDATE_COMMAND_UI(ID_OPTIONS_GAMEBOY_GAMEBOYCOLORS, OnUpdateOptionsGameboyGameboycolors)
|
rlm@1
|
316 ON_COMMAND(ID_OPTIONS_GAMEBOY_COLORS, OnOptionsGameboyColors)
|
rlm@1
|
317 ON_COMMAND(ID_OPTIONS_FILTER_DISABLEMMX, OnOptionsFilterDisablemmx)
|
rlm@1
|
318 ON_UPDATE_COMMAND_UI(ID_OPTIONS_FILTER_DISABLEMMX, OnUpdateOptionsFilterDisablemmx)
|
rlm@1
|
319 ON_COMMAND(ID_OPTIONS_LANGUAGE_SYSTEM, OnOptionsLanguageSystem)
|
rlm@1
|
320 ON_UPDATE_COMMAND_UI(ID_OPTIONS_LANGUAGE_SYSTEM, OnUpdateOptionsLanguageSystem)
|
rlm@1
|
321 ON_COMMAND(ID_OPTIONS_LANGUAGE_ENGLISH, OnOptionsLanguageEnglish)
|
rlm@1
|
322 ON_UPDATE_COMMAND_UI(ID_OPTIONS_LANGUAGE_ENGLISH, OnUpdateOptionsLanguageEnglish)
|
rlm@1
|
323 ON_COMMAND(ID_OPTIONS_LANGUAGE_OTHER, OnOptionsLanguageOther)
|
rlm@1
|
324 ON_UPDATE_COMMAND_UI(ID_OPTIONS_LANGUAGE_OTHER, OnUpdateOptionsLanguageOther)
|
rlm@1
|
325 ON_COMMAND(ID_OPTIONS_JOYPAD_CONFIGURE_1, OnOptionsJoypadConfigure1)
|
rlm@1
|
326 ON_UPDATE_COMMAND_UI(ID_OPTIONS_JOYPAD_CONFIGURE_1, OnUpdateOptionsJoypadConfigure1)
|
rlm@1
|
327 ON_COMMAND(ID_OPTIONS_JOYPAD_CONFIGURE_2, OnOptionsJoypadConfigure2)
|
rlm@1
|
328 ON_UPDATE_COMMAND_UI(ID_OPTIONS_JOYPAD_CONFIGURE_2, OnUpdateOptionsJoypadConfigure2)
|
rlm@1
|
329 ON_COMMAND(ID_OPTIONS_JOYPAD_CONFIGURE_3, OnOptionsJoypadConfigure3)
|
rlm@1
|
330 ON_UPDATE_COMMAND_UI(ID_OPTIONS_JOYPAD_CONFIGURE_3, OnUpdateOptionsJoypadConfigure3)
|
rlm@1
|
331 ON_COMMAND(ID_OPTIONS_JOYPAD_CONFIGURE_4, OnOptionsJoypadConfigure4)
|
rlm@1
|
332 ON_UPDATE_COMMAND_UI(ID_OPTIONS_JOYPAD_CONFIGURE_4, OnUpdateOptionsJoypadConfigure4)
|
rlm@1
|
333 ON_COMMAND(ID_OPTIONS_JOYPAD_MOTIONCONFIGURE, OnOptionsJoypadMotionconfigure)
|
rlm@1
|
334 ON_UPDATE_COMMAND_UI(ID_OPTIONS_JOYPAD_MOTIONCONFIGURE, OnUpdateOptionsJoypadMotionconfigure)
|
rlm@1
|
335 ON_COMMAND(ID_OPTIONS_JOYPAD_ALLOWLEFTRIGHT, OnOptionsJoypadAllowLeftRight)
|
rlm@1
|
336 ON_UPDATE_COMMAND_UI(ID_OPTIONS_JOYPAD_ALLOWLEFTRIGHT, OnUpdateOptionsJoypadAllowLeftRight)
|
rlm@1
|
337 ON_COMMAND(ID_OPTIONS_JOYPAD_AUTOFIRE_ACCOUNTFORLAG, OnOptionsJoypadAutofireAccountForLag)
|
rlm@1
|
338 ON_UPDATE_COMMAND_UI(ID_OPTIONS_JOYPAD_AUTOFIRE_ACCOUNTFORLAG, OnUpdateOptionsJoypadAutofireAccountForLag)
|
rlm@1
|
339 ON_COMMAND(ID_CHEATS_SEARCHFORCHEATS, OnCheatsSearchforcheats)
|
rlm@1
|
340 ON_UPDATE_COMMAND_UI(ID_CHEATS_SEARCHFORCHEATS, OnUpdateCheatsSearchforcheats)
|
rlm@1
|
341 ON_COMMAND(ID_CHEATS_CHEATLIST, OnCheatsCheatlist)
|
rlm@1
|
342 ON_UPDATE_COMMAND_UI(ID_CHEATS_CHEATLIST, OnUpdateCheatsCheatlist)
|
rlm@1
|
343 ON_COMMAND(ID_CHEATS_AUTOMATICSAVELOADCHEATS, OnCheatsAutomaticsaveloadcheats)
|
rlm@1
|
344 ON_COMMAND(ID_CHEATS_PAUSEDURINGCHEATSEARCH, OnCheatsPauseDuringCheatSearch)
|
rlm@1
|
345 ON_COMMAND(ID_CHEATS_LOADCHEATLIST, OnCheatsLoadcheatlist)
|
rlm@1
|
346 ON_UPDATE_COMMAND_UI(ID_CHEATS_LOADCHEATLIST, OnUpdateCheatsLoadcheatlist)
|
rlm@1
|
347 ON_COMMAND(ID_CHEATS_SAVECHEATLIST, OnCheatsSavecheatlist)
|
rlm@1
|
348 ON_UPDATE_COMMAND_UI(ID_CHEATS_SAVECHEATLIST, OnUpdateCheatsSavecheatlist)
|
rlm@1
|
349 ON_COMMAND(ID_TOOLS_DISASSEMBLE, OnToolsDisassemble)
|
rlm@1
|
350 ON_UPDATE_COMMAND_UI(ID_TOOLS_DISASSEMBLE, OnUpdateToolsDisassemble)
|
rlm@1
|
351 ON_COMMAND(ID_TOOLS_LOGGING, OnToolsLogging)
|
rlm@1
|
352 ON_UPDATE_COMMAND_UI(ID_TOOLS_LOGGING, OnUpdateToolsLogging)
|
rlm@1
|
353 ON_COMMAND(ID_TOOLS_IOVIEWER, OnToolsIoviewer)
|
rlm@1
|
354 ON_UPDATE_COMMAND_UI(ID_TOOLS_IOVIEWER, OnUpdateToolsIoviewer)
|
rlm@1
|
355 ON_COMMAND(ID_TOOLS_MAPVIEW, OnToolsMapview)
|
rlm@1
|
356 ON_UPDATE_COMMAND_UI(ID_TOOLS_MAPVIEW, OnUpdateToolsMapview)
|
rlm@1
|
357 ON_COMMAND(ID_TOOLS_MEMORYVIEWER, OnToolsMemoryviewer)
|
rlm@1
|
358 ON_UPDATE_COMMAND_UI(ID_TOOLS_MEMORYVIEWER, OnUpdateToolsMemoryviewer)
|
rlm@1
|
359 ON_COMMAND(ID_TOOLS_OAMVIEWER, OnToolsOamviewer)
|
rlm@1
|
360 ON_UPDATE_COMMAND_UI(ID_TOOLS_OAMVIEWER, OnUpdateToolsOamviewer)
|
rlm@1
|
361 ON_COMMAND(ID_TOOLS_PALETTEVIEW, OnToolsPaletteview)
|
rlm@1
|
362 ON_UPDATE_COMMAND_UI(ID_TOOLS_PALETTEVIEW, OnUpdateToolsPaletteview)
|
rlm@1
|
363 ON_COMMAND(ID_TOOLS_TILEVIEWER, OnToolsTileviewer)
|
rlm@1
|
364 ON_UPDATE_COMMAND_UI(ID_TOOLS_TILEVIEWER, OnUpdateToolsTileviewer)
|
rlm@1
|
365
|
rlm@1
|
366 ON_COMMAND(ID_DEBUG_NEXTFRAME, OnDebugNextframe)
|
rlm@1
|
367 ON_UPDATE_COMMAND_UI(ID_DEBUG_NEXTFRAME, OnUpdateDebugNextframe)
|
rlm@1
|
368 ON_COMMAND(ID_DEBUG_NEXTFRAME_ACCOUNTFORLAG, OnDebugNextframeAccountForLag)
|
rlm@1
|
369 ON_UPDATE_COMMAND_UI(ID_DEBUG_NEXTFRAME_ACCOUNTFORLAG, OnUpdateDebugNextframeAccountForLag)
|
rlm@1
|
370 ON_COMMAND(ID_DEBUG_FRAMESEARCH, OnDebugFramesearch)
|
rlm@1
|
371 ON_UPDATE_COMMAND_UI(ID_DEBUG_FRAMESEARCH, OnUpdateDebugFramesearch)
|
rlm@1
|
372 ON_COMMAND(ID_DEBUG_FRAMESEARCHPREV, OnDebugFramesearchPrev)
|
rlm@1
|
373 ON_UPDATE_COMMAND_UI(ID_DEBUG_FRAMESEARCHPREV, OnUpdateDebugFramesearchPrev)
|
rlm@1
|
374 ON_COMMAND(ID_DEBUG_FRAMESEARCHLOAD, OnDebugFramesearchLoad)
|
rlm@1
|
375 ON_UPDATE_COMMAND_UI(ID_DEBUG_FRAMESEARCHLOAD, OnUpdateDebugFramesearchLoad)
|
rlm@1
|
376 ON_UPDATE_COMMAND_UI(ID_CHEATS_AUTOMATICSAVELOADCHEATS, OnUpdateCheatsAutomaticsaveloadcheats)
|
rlm@1
|
377 ON_UPDATE_COMMAND_UI(ID_CHEATS_PAUSEDURINGCHEATSEARCH, OnUpdateCheatsPauseDuringCheatSearch)
|
rlm@1
|
378 ON_COMMAND(ID_TOOLS_FRAMECOUNTER, OnToolsFrameCounter)
|
rlm@1
|
379 ON_UPDATE_COMMAND_UI(ID_TOOLS_FRAMECOUNTER, OnUpdateToolsFrameCounter)
|
rlm@1
|
380 ON_COMMAND(ID_TOOLS_LAGCOUNTER, OnToolsLagCounter)
|
rlm@1
|
381 ON_UPDATE_COMMAND_UI(ID_TOOLS_LAGCOUNTER, OnUpdateToolsLagCounter)
|
rlm@1
|
382 ON_COMMAND(ID_TOOLS_EXTRACOUNTER, OnToolsExtraCounter)
|
rlm@1
|
383 ON_UPDATE_COMMAND_UI(ID_TOOLS_EXTRACOUNTER, OnUpdateToolsExtraCounter)
|
rlm@1
|
384 ON_COMMAND(ID_TOOLS_EXTRACOUNTERRESET, OnToolsExtraCounterReset)
|
rlm@1
|
385 ON_COMMAND(ID_TOOLS_INPUTDISPLAY, OnToolsInputDisplay)
|
rlm@1
|
386 ON_UPDATE_COMMAND_UI(ID_TOOLS_INPUTDISPLAY, OnUpdateToolsInputDisplay)
|
rlm@1
|
387 ON_COMMAND(ID_TOOLS_DEBUG_GDB, OnToolsDebugGdb)
|
rlm@1
|
388 ON_UPDATE_COMMAND_UI(ID_TOOLS_DEBUG_GDB, OnUpdateToolsDebugGdb)
|
rlm@1
|
389 ON_COMMAND(ID_TOOLS_DEBUG_LOADANDWAIT, OnToolsDebugLoadandwait)
|
rlm@1
|
390 ON_UPDATE_COMMAND_UI(ID_TOOLS_DEBUG_LOADANDWAIT, OnUpdateToolsDebugLoadandwait)
|
rlm@1
|
391 ON_COMMAND(ID_TOOLS_DEBUG_BREAK, OnToolsDebugBreak)
|
rlm@1
|
392 ON_UPDATE_COMMAND_UI(ID_TOOLS_DEBUG_BREAK, OnUpdateToolsDebugBreak)
|
rlm@1
|
393 ON_COMMAND(ID_TOOLS_DEBUG_DISCONNECT, OnToolsDebugDisconnect)
|
rlm@1
|
394 ON_UPDATE_COMMAND_UI(ID_TOOLS_DEBUG_DISCONNECT, OnUpdateToolsDebugDisconnect)
|
rlm@1
|
395
|
rlm@1
|
396 ON_COMMAND(ID_TOOLS_SOUNDRECORDING, OnToolsSoundRecording)
|
rlm@1
|
397 ON_UPDATE_COMMAND_UI(ID_TOOLS_SOUNDRECORDING, OnUpdateToolsSoundRecording)
|
rlm@1
|
398 ON_COMMAND(ID_TOOLS_AVIRECORDING, OnToolsAVIRecording)
|
rlm@1
|
399 ON_UPDATE_COMMAND_UI(ID_TOOLS_AVIRECORDING, OnUpdateToolsAVIRecording)
|
rlm@1
|
400 ON_COMMAND(ID_TOOLS_PAUSEAVIRECORDING, OnToolsPauseAVIRecording)
|
rlm@1
|
401 ON_UPDATE_COMMAND_UI(ID_TOOLS_PAUSEAVIRECORDING, OnUpdateToolsPauseAVIRecording)
|
rlm@1
|
402
|
rlm@1
|
403 ON_COMMAND(ID_MOVIE_RECORD, OnToolsRecordMovie)
|
rlm@1
|
404 ON_UPDATE_COMMAND_UI(ID_MOVIE_RECORD, OnUpdateToolsRecordMovie)
|
rlm@1
|
405 ON_COMMAND(ID_MOVIE_STOP, OnToolsStopMovie)
|
rlm@1
|
406 ON_UPDATE_COMMAND_UI(ID_MOVIE_STOP, OnUpdateToolsStopMovie)
|
rlm@1
|
407 ON_COMMAND(ID_MOVIE_PLAY, OnToolsPlayMovie)
|
rlm@1
|
408 ON_UPDATE_COMMAND_UI(ID_MOVIE_PLAY, OnUpdateToolsPlayMovie)
|
rlm@1
|
409 ON_COMMAND(ID_MOVIE_READONLY, OnToolsPlayReadOnly)
|
rlm@1
|
410 ON_UPDATE_COMMAND_UI(ID_MOVIE_READONLY, OnUpdateToolsPlayReadOnly)
|
rlm@1
|
411 ON_COMMAND(ID_MOVIE_ASSC_WITH_SAVESTATE, OnAsscWithSaveState)
|
rlm@1
|
412 ON_UPDATE_COMMAND_UI(ID_MOVIE_ASSC_WITH_SAVESTATE, OnUpdateAsscWithSaveState)
|
rlm@1
|
413 ON_COMMAND(ID_MOVIE_RESUME_RECORD, OnToolsResumeRecord)
|
rlm@1
|
414 ON_UPDATE_COMMAND_UI(ID_MOVIE_RESUME_RECORD, OnUpdateToolsResumeRecord)
|
rlm@1
|
415 ON_COMMAND(ID_MOVIE_RESTART_PLAY, OnToolsPlayRestart)
|
rlm@1
|
416 ON_UPDATE_COMMAND_UI(ID_MOVIE_RESTART_PLAY, OnUpdateToolsPlayRestart)
|
rlm@1
|
417
|
rlm@1
|
418 ON_COMMAND(ID_MOVIE_END_PAUSE, OnToolsOnMovieEndPause)
|
rlm@1
|
419 ON_UPDATE_COMMAND_UI(ID_MOVIE_END_PAUSE, OnUpdateToolsOnMovieEndPause)
|
rlm@1
|
420 ON_COMMAND(ID_MOVIE_END_STOP, OnToolsOnMovieEndStop)
|
rlm@1
|
421 ON_UPDATE_COMMAND_UI(ID_MOVIE_END_STOP, OnUpdateToolsOnMovieEndStop)
|
rlm@1
|
422 ON_COMMAND(ID_MOVIE_END_RESTART, OnToolsOnMovieEndRestart)
|
rlm@1
|
423 ON_UPDATE_COMMAND_UI(ID_MOVIE_END_RESTART, OnUpdateToolsOnMovieEndRestart)
|
rlm@1
|
424 ON_COMMAND(ID_MOVIE_END_APPEND, OnToolsOnMovieEndAppend)
|
rlm@1
|
425 ON_UPDATE_COMMAND_UI(ID_MOVIE_END_APPEND, OnUpdateToolsOnMovieEndAppend)
|
rlm@1
|
426 ON_COMMAND(ID_MOVIE_END_KEEP, OnToolsOnMovieEndKeep)
|
rlm@1
|
427 ON_UPDATE_COMMAND_UI(ID_MOVIE_END_KEEP, OnUpdateToolsOnMovieEndKeep)
|
rlm@1
|
428
|
rlm@1
|
429 ON_COMMAND(ID_MOVIE_TOOL_SET_PAUSE_AT, OnToolsMovieSetPauseAt)
|
rlm@1
|
430 ON_UPDATE_COMMAND_UI(ID_MOVIE_TOOL_SET_PAUSE_AT, OnUpdateToolsSetMoviePauseAt)
|
rlm@1
|
431 ON_COMMAND(ID_MOVIE_TOOL_CONVERT, OnToolsMovieConvertCurrent)
|
rlm@1
|
432 ON_UPDATE_COMMAND_UI(ID_MOVIE_TOOL_CONVERT, OnUpdateToolsMovieConvertCurrent)
|
rlm@1
|
433 ON_COMMAND(ID_MOVIE_TOOL_AUTO_CONVERT, OnToolsMovieAutoConvert)
|
rlm@1
|
434 ON_UPDATE_COMMAND_UI(ID_MOVIE_TOOL_AUTO_CONVERT, OnUpdateToolsMovieAutoConvert)
|
rlm@1
|
435 ON_COMMAND(ID_MOVIE_TOOL_FIX_HEADER, OnToolsMovieFixHeader)
|
rlm@1
|
436 ON_UPDATE_COMMAND_UI(ID_MOVIE_TOOL_FIX_HEADER, OnUpdateToolsMovieFixHeader)
|
rlm@1
|
437 ON_COMMAND(ID_MOVIE_TOOL_TRUNCATE, OnToolsMovieTruncateAtCurrent)
|
rlm@1
|
438 ON_UPDATE_COMMAND_UI(ID_MOVIE_TOOL_TRUNCATE, OnUpdateToolsMovieTruncateAtCurrent)
|
rlm@1
|
439 ON_COMMAND(ID_MOVIE_TOOL_EXTRACT_FROM_SAVEGAME, OnToolsMovieExtractFromSavegame)
|
rlm@1
|
440 ON_UPDATE_COMMAND_UI(ID_MOVIE_TOOL_EXTRACT_FROM_SAVEGAME, OnUpdateToolsMovieExtractFromSavegame)
|
rlm@1
|
441
|
rlm@1
|
442 ON_COMMAND(ID_TOOLS_REWIND, OnToolsRewind)
|
rlm@1
|
443 ON_UPDATE_COMMAND_UI(ID_TOOLS_REWIND, OnUpdateToolsRewind)
|
rlm@1
|
444 ON_COMMAND(ID_TOOLS_CUSTOMIZE, OnToolsCustomize)
|
rlm@1
|
445 ON_UPDATE_COMMAND_UI(ID_TOOLS_CUSTOMIZE, OnUpdateToolsCustomize)
|
rlm@1
|
446 // ON_COMMAND(ID_TOOLS_CUSTOMIZE_COMMON, OnToolsCustomizeCommon)
|
rlm@1
|
447 // ON_UPDATE_COMMAND_UI(ID_TOOLS_CUSTOMIZE_COMMON, OnUpdateToolsCustomizeCommon)
|
rlm@1
|
448 ON_COMMAND(ID_HELP_BUGREPORT, OnHelpBugreport)
|
rlm@1
|
449
|
rlm@1
|
450 ON_COMMAND_EX_RANGE(ID_FILE_MRU_FILE1, ID_FILE_MRU_FILE10, OnFileRecentFile)
|
rlm@1
|
451 ON_COMMAND_EX_RANGE(ID_FILE_LOADGAME_SLOT1, ID_FILE_LOADGAME_SLOT10, OnFileLoadSlot)
|
rlm@1
|
452 ON_COMMAND_EX_RANGE(ID_FILE_SAVEGAME_SLOT1, ID_FILE_SAVEGAME_SLOT10, OnFileSaveSlot)
|
rlm@1
|
453 ON_COMMAND_EX_RANGE(ID_SELECT_SLOT1, ID_SELECT_SLOT10, OnSelectSlot)
|
rlm@1
|
454 ON_UPDATE_COMMAND_UI_RANGE(ID_FILE_MRU_FILE1, ID_FILE_MRU_FILE10, OnUpdateFileRecentFile)
|
rlm@1
|
455 ON_UPDATE_COMMAND_UI_RANGE(ID_FILE_LOADGAME_SLOT1, ID_FILE_LOADGAME_SLOT10, OnUpdateFileLoadSlot)
|
rlm@1
|
456 ON_UPDATE_COMMAND_UI_RANGE(ID_FILE_SAVEGAME_SLOT1, ID_FILE_SAVEGAME_SLOT10, OnUpdateFileSaveSlot)
|
rlm@1
|
457 ON_UPDATE_COMMAND_UI_RANGE(ID_SELECT_SLOT1, ID_SELECT_SLOT10, OnUpdateSelectSlot)
|
rlm@1
|
458
|
rlm@1
|
459 ON_COMMAND(ID_FILE_SAVEGAME_OLDESTSLOT, OnFileSavegameOldestslot)
|
rlm@1
|
460 ON_UPDATE_COMMAND_UI(ID_FILE_SAVEGAME_OLDESTSLOT, OnUpdateFileSavegameOldestslot)
|
rlm@1
|
461 ON_COMMAND(ID_FILE_LOADGAME_MOSTRECENT, OnFileLoadgameMostrecent)
|
rlm@1
|
462 ON_UPDATE_COMMAND_UI(ID_FILE_LOADGAME_MOSTRECENT, OnUpdateFileLoadgameMostrecent)
|
rlm@1
|
463 ON_COMMAND(ID_FILE_SAVEGAME_CURRENT, OnFileSavegameCurrent)
|
rlm@1
|
464 ON_UPDATE_COMMAND_UI(ID_FILE_SAVEGAME_CURRENT, OnUpdateFileSavegameCurrent)
|
rlm@1
|
465 ON_COMMAND(ID_FILE_LOADGAME_CURRENT, OnFileLoadgameCurrent)
|
rlm@1
|
466 ON_UPDATE_COMMAND_UI(ID_FILE_LOADGAME_CURRENT, OnUpdateFileLoadgameCurrent)
|
rlm@1
|
467 ON_COMMAND(ID_FILE_LOADGAME_MAKECURRENT, OnFileLoadgameMakeCurrent)
|
rlm@1
|
468 ON_UPDATE_COMMAND_UI(ID_FILE_LOADGAME_MAKECURRENT, OnUpdateFileLoadgameMakeCurrent)
|
rlm@1
|
469 ON_COMMAND(ID_FILE_SAVEGAME_MAKECURRENT, OnFileSavegameMakeCurrent)
|
rlm@1
|
470 ON_UPDATE_COMMAND_UI(ID_FILE_SAVEGAME_MAKECURRENT, OnUpdateFileSavegameMakeCurrent)
|
rlm@1
|
471
|
rlm@1
|
472 ON_COMMAND(ID_FILE_SAVEGAME_INCREMENTSLOT, OnFileSavegameIncrementSlot)
|
rlm@1
|
473 ON_UPDATE_COMMAND_UI(ID_FILE_SAVEGAME_INCREMENTSLOT, OnUpdateFileSavegameIncrementSlot)
|
rlm@1
|
474 ON_COMMAND(ID_FILE_SAVEGAME_DECREMENTSLOT, OnFileSavegameDecrementSlot)
|
rlm@1
|
475 ON_UPDATE_COMMAND_UI(ID_FILE_SAVEGAME_DECREMENTSLOT, OnUpdateFileSavegameDecrementSlot)
|
rlm@1
|
476 ON_COMMAND(ID_FILE_SLOT_DISPLAYMODIFICATIONTIME, OnFileSlotDisplayModificationTime)
|
rlm@1
|
477 ON_UPDATE_COMMAND_UI(ID_FILE_SLOT_DISPLAYMODIFICATIONTIME, OnUpdateFileSlotDisplayModificationTime)
|
rlm@1
|
478
|
rlm@1
|
479 ON_COMMAND(ID_FILE_LOADGAME_AUTOLOADMOSTRECENT, OnFileLoadgameAutoloadmostrecent)
|
rlm@1
|
480 ON_UPDATE_COMMAND_UI(ID_FILE_LOADGAME_AUTOLOADMOSTRECENT, OnUpdateFileLoadgameAutoloadmostrecent)
|
rlm@1
|
481 ON_COMMAND(ID_FILE_LOADGAME_MAKERECENT, OnFileLoadgameMakeRecent)
|
rlm@1
|
482 ON_UPDATE_COMMAND_UI(ID_FILE_LOADGAME_MAKERECENT, OnUpdateFileLoadgameMakeRecent)
|
rlm@1
|
483
|
rlm@1
|
484 ON_COMMAND(ID_OPTIONS_SOUND_VOLUME_25X, OnOptionsSoundVolume25x)
|
rlm@1
|
485 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_VOLUME_25X, OnUpdateOptionsSoundVolume25x)
|
rlm@1
|
486 ON_COMMAND(ID_OPTIONS_SOUND_VOLUME_5X, OnOptionsSoundVolume5x)
|
rlm@1
|
487 ON_UPDATE_COMMAND_UI(ID_OPTIONS_SOUND_VOLUME_5X, OnUpdateOptionsSoundVolume5x)
|
rlm@1
|
488 ON_COMMAND(ID_CHEATS_DISABLECHEATS, OnCheatsDisablecheats)
|
rlm@1
|
489 ON_UPDATE_COMMAND_UI(ID_CHEATS_DISABLECHEATS, OnUpdateCheatsDisablecheats)
|
rlm@1
|
490 ON_COMMAND(ID_OPTIONS_VIDEO_FULLSCREENMAXSCALE, OnOptionsVideoFullscreenmaxscale)
|
rlm@1
|
491
|
rlm@1
|
492 ON_COMMAND_EX_RANGE(ID_OPTIONS_VIDEO_FRAMESKIP_0, ID_OPTIONS_VIDEO_FRAMESKIP_9, OnOptionsFrameskip)
|
rlm@1
|
493 ON_COMMAND_EX_RANGE(ID_OPTIONS_VIDEO_X1, ID_OPTIONS_VIDEO_X4, OnOptionVideoSize)
|
rlm@1
|
494 ON_COMMAND_EX_RANGE(ID_OPTIONS_VIDEO_LAYERS_BG0, ID_OPTIONS_VIDEO_LAYERS_OBJWIN, OnVideoLayer)
|
rlm@1
|
495 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_VIDEO_LAYERS_BG0, ID_OPTIONS_VIDEO_LAYERS_OBJWIN, OnUpdateVideoLayer)
|
rlm@1
|
496 ON_COMMAND(ID_SYSTEM_MINIMIZE, OnSystemMinimize)
|
rlm@1
|
497 ON_COMMAND(ID_SYSTEM_MAXIMIZE, OnSystemMaximize)
|
rlm@1
|
498 ON_COMMAND_EX_RANGE(ID_OPTIONS_EMULATOR_SHOWSPEED_NONE, ID_OPTIONS_EMULATOR_SHOWSPEED_TRANSPARENT, OnOptionsEmulatorShowSpeed)
|
rlm@1
|
499 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_EMULATOR_SHOWSPEED_NONE,
|
rlm@1
|
500 ID_OPTIONS_EMULATOR_SHOWSPEED_TRANSPARENT,
|
rlm@1
|
501 OnUpdateOptionsEmulatorShowSpeed)
|
rlm@1
|
502 ON_COMMAND_EX_RANGE(ID_OPTIONS_SOUND_VOLUME_1X, ID_OPTIONS_SOUND_VOLUME_4X, OnOptionsSoundVolume)
|
rlm@1
|
503 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_SOUND_VOLUME_1X, ID_OPTIONS_SOUND_VOLUME_4X, OnUpdateOptionsSoundVolume)
|
rlm@1
|
504 ON_COMMAND_EX_RANGE(ID_OPTIONS_PRIORITY_HIGHEST, ID_OPTIONS_PRIORITY_BELOWNORMAL, OnOptionsPriority)
|
rlm@1
|
505 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_PRIORITY_HIGHEST, ID_OPTIONS_PRIORITY_BELOWNORMAL, OnUpdateOptionsPriority)
|
rlm@1
|
506
|
rlm@1
|
507 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER_NORMAL, ID_OPTIONS_FILTER_TVMODE, OnOptionsFilter)
|
rlm@1
|
508 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL, ID_OPTIONS_FILTER16BIT_MOTIONBLUREXPERIMENTAL, OnOptionsFilter)
|
rlm@1
|
509 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER16BIT_ADVANCEMAMESCALE2X, ID_OPTIONS_FILTER16BIT_SIMPLE2X, OnOptionsFilter)
|
rlm@1
|
510 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER_BILINEAR, ID_OPTIONS_FILTER_BILINEARPLUS, OnOptionsFilter)
|
rlm@1
|
511 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER_SCANLINES, ID_OPTIONS_FILTER_SCANLINES, OnOptionsFilter)
|
rlm@1
|
512 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER_LQ2X, ID_OPTIONS_FILTER_HQ3X2, OnOptionsFilter)
|
rlm@1
|
513 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER16BIT_SIMPLE3X, ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL4X, OnOptionsFilter)
|
rlm@1
|
514 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER_NORMAL, ID_OPTIONS_FILTER_TVMODE, OnUpdateOptionsFilter)
|
rlm@1
|
515 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL, ID_OPTIONS_FILTER16BIT_MOTIONBLUREXPERIMENTAL, OnUpdateOptionsFilter)
|
rlm@1
|
516 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER16BIT_ADVANCEMAMESCALE2X, ID_OPTIONS_FILTER16BIT_SIMPLE2X, OnUpdateOptionsFilter)
|
rlm@1
|
517 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER_BILINEAR, ID_OPTIONS_FILTER_BILINEARPLUS, OnUpdateOptionsFilter)
|
rlm@1
|
518 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER_SCANLINES, ID_OPTIONS_FILTER_SCANLINES, OnUpdateOptionsFilter)
|
rlm@1
|
519 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER_LQ2X, ID_OPTIONS_FILTER_HQ3X2, OnUpdateOptionsFilter)
|
rlm@1
|
520 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER16BIT_SIMPLE3X, ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL4X, OnUpdateOptionsFilter)
|
rlm@1
|
521 ON_COMMAND_EX_RANGE(ID_OPTIONS_FILTER_INTERFRAMEBLENDING_NONE, ID_OPTIONS_FILTER_INTERFRAMEBLENDING_SMART, OnOptionsFilterIFB)
|
rlm@1
|
522 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_FILTER_INTERFRAMEBLENDING_NONE,
|
rlm@1
|
523 ID_OPTIONS_FILTER_INTERFRAMEBLENDING_SMART,
|
rlm@1
|
524 OnUpdateOptionsFilterIFB)
|
rlm@1
|
525
|
rlm@1
|
526 ON_COMMAND_EX_RANGE(ID_OPTIONS_JOYPAD_DEFAULTJOYPAD_1, ID_OPTIONS_JOYPAD_DEFAULTJOYPAD_4, OnOptionsJoypadDefault)
|
rlm@1
|
527 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_JOYPAD_DEFAULTJOYPAD_1, ID_OPTIONS_JOYPAD_DEFAULTJOYPAD_4, OnUpdateOptionsJoypadDefault)
|
rlm@1
|
528 ON_COMMAND_EX_RANGE(ID_OPTIONS_JOYPAD_AUTOFIRE_A, ID_OPTIONS_JOYPAD_AUTOFIRE_CLEAR, OnOptionsJoypadAutofire)
|
rlm@1
|
529 ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_JOYPAD_AUTOFIRE_A, ID_OPTIONS_JOYPAD_AUTOFIRE_CLEAR, OnUpdateOptionsJoypadAutofire)
|
rlm@1
|
530 ON_COMMAND_EX_RANGE(ID_STICKY_A, ID_STICKY_CLEAR, OnOptionsJoypadSticky)
|
rlm@1
|
531 ON_UPDATE_COMMAND_UI_RANGE(ID_STICKY_A, ID_STICKY_CLEAR, OnUpdateOptionsJoypadSticky)
|
rlm@1
|
532 ON_MESSAGE(VBA_CONFIRM_MODE, OnConfirmMode)
|
rlm@1
|
533 ON_MESSAGE(WM_SYSCOMMAND, OnMySysCommand)
|
rlm@1
|
534 ON_COMMAND(ID_OPTIONS_VIDEO_TEXTDISPLAYOPTIONS, OnOptionsVideoTextdisplayoptions)
|
rlm@1
|
535 ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_TEXTDISPLAYOPTIONS, OnUpdateOptionsVideoTextdisplayoptions)
|
rlm@1
|
536
|
rlm@1
|
537 ON_COMMAND(ID_FILE_LUA_OPEN, OnFileLuaOpen)
|
rlm@1
|
538 ON_UPDATE_COMMAND_UI(ID_FILE_LUA_OPEN, OnUpdateFileLuaOpen)
|
rlm@1
|
539 ON_COMMAND(ID_FILE_LUA_CLOSE_ALL, OnFileLuaCloseAll)
|
rlm@1
|
540 ON_UPDATE_COMMAND_UI(ID_FILE_LUA_CLOSE_ALL, OnUpdateFileLuaCloseAll)
|
rlm@1
|
541 ON_COMMAND(ID_FILE_LUA_RELOAD, OnFileLuaReload)
|
rlm@1
|
542 ON_COMMAND(ID_FILE_LUA_STOP, OnFileLuaStop)
|
rlm@1
|
543 ON_COMMAND(ID_RAM_SEARCH, OnFileRamSearch)
|
rlm@1
|
544 ON_UPDATE_COMMAND_UI(ID_RAM_SEARCH, OnUpdateFileRamSearch)
|
rlm@1
|
545 ON_COMMAND(ID_RAM_WATCH, OnFileRamWatch)
|
rlm@1
|
546 ON_UPDATE_COMMAND_UI(ID_RAM_WATCH, OnUpdateFileRamWatch)
|
rlm@1
|
547 //}}AFX_MSG_MAP
|
rlm@1
|
548 END_MESSAGE_MAP()
|
rlm@1
|
549
|
rlm@1
|
550 /////////////////////////////////////////////////////////////////////////////
|
rlm@1
|
551 // MainWnd message handlers
|
rlm@1
|
552
|
rlm@1
|
553 bool vbaShuttingDown = false;
|
rlm@1
|
554
|
rlm@1
|
555 void MainWnd::OnClose()
|
rlm@1
|
556 {
|
rlm@1
|
557 vbaShuttingDown = true; // HACK to fix crash on exit while memory viewer is open
|
rlm@1
|
558
|
rlm@1
|
559 CWnd::OnClose();
|
rlm@1
|
560
|
rlm@1
|
561 delete this;
|
rlm@1
|
562 }
|
rlm@1
|
563
|
rlm@1
|
564 void MainWnd::OnMove(int x, int y)
|
rlm@1
|
565 {
|
rlm@1
|
566 CWnd::OnMove(x, y);
|
rlm@1
|
567
|
rlm@1
|
568 if (!theApp.changingVideoSize)
|
rlm@1
|
569 {
|
rlm@1
|
570 if (this)
|
rlm@1
|
571 {
|
rlm@1
|
572 if (!IsIconic() && !IsZoomed())
|
rlm@1
|
573 {
|
rlm@1
|
574 RECT r;
|
rlm@1
|
575
|
rlm@1
|
576 GetWindowRect(&r);
|
rlm@1
|
577 theApp.windowPositionX = r.left;
|
rlm@1
|
578 theApp.windowPositionY = r.top;
|
rlm@1
|
579 theApp.adjustDestRect();
|
rlm@1
|
580 regSetDwordValue("windowX", theApp.windowPositionX);
|
rlm@1
|
581 regSetDwordValue("windowY", theApp.windowPositionY);
|
rlm@1
|
582 }
|
rlm@1
|
583 }
|
rlm@1
|
584 }
|
rlm@1
|
585 }
|
rlm@1
|
586
|
rlm@1
|
587 void MainWnd::OnSize(UINT nType, int cx, int cy)
|
rlm@1
|
588 {
|
rlm@1
|
589 CWnd::OnSize(nType, cx, cy);
|
rlm@1
|
590
|
rlm@1
|
591 static int lastType = -1;
|
rlm@1
|
592
|
rlm@1
|
593 // FIXME: hack to re-maximize window after it auto-unmaximizes while loading a ROM
|
rlm@1
|
594 if (nType == SIZE_MAXIMIZED && lastType == SIZE_MAXIMIZED)
|
rlm@1
|
595 {
|
rlm@1
|
596 lastType = -1;
|
rlm@1
|
597 ShowWindow(SW_SHOWMAXIMIZED);
|
rlm@1
|
598 MoveWindow(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
|
rlm@1
|
599 return;
|
rlm@1
|
600 }
|
rlm@1
|
601
|
rlm@1
|
602 lastType = nType;
|
rlm@1
|
603
|
rlm@1
|
604 if (IsIconic())
|
rlm@1
|
605 {
|
rlm@1
|
606 theApp.iconic = true;
|
rlm@1
|
607 return;
|
rlm@1
|
608 }
|
rlm@1
|
609 else if (theApp.iconic)
|
rlm@1
|
610 {
|
rlm@1
|
611 theApp.iconic = false;
|
rlm@1
|
612 }
|
rlm@1
|
613
|
rlm@1
|
614 if (!theApp.changingVideoSize)
|
rlm@1
|
615 {
|
rlm@1
|
616 if (this)
|
rlm@1
|
617 {
|
rlm@1
|
618 if (theApp.videoOption <= VIDEO_4X)
|
rlm@1
|
619 {
|
rlm@1
|
620 theApp.surfaceSizeX = cx;
|
rlm@1
|
621 theApp.surfaceSizeY = cy;
|
rlm@1
|
622 theApp.adjustDestRect();
|
rlm@1
|
623 if (theApp.display)
|
rlm@1
|
624 theApp.display->resize(theApp.dest.right - theApp.dest.left, theApp.dest.bottom - theApp.dest.top);
|
rlm@1
|
625 systemRefreshScreen(); // useful when shrinking
|
rlm@1
|
626 }
|
rlm@1
|
627 }
|
rlm@1
|
628 }
|
rlm@1
|
629 }
|
rlm@1
|
630
|
rlm@1
|
631 void MainWnd::OnContextMenu(CWnd *pWnd, CPoint point)
|
rlm@1
|
632 {
|
rlm@1
|
633 winMouseOn();
|
rlm@1
|
634 }
|
rlm@1
|
635
|
rlm@1
|
636 void MainWnd::OnSystemMinimize()
|
rlm@1
|
637 {
|
rlm@1
|
638 ShowWindow(SW_SHOWMINIMIZED);
|
rlm@1
|
639 }
|
rlm@1
|
640
|
rlm@1
|
641 void MainWnd::OnSystemMaximize()
|
rlm@1
|
642 {
|
rlm@1
|
643 ShowWindow(SW_SHOWMAXIMIZED);
|
rlm@1
|
644 }
|
rlm@1
|
645
|
rlm@1
|
646 void MainWnd::OnPaint()
|
rlm@1
|
647 {
|
rlm@1
|
648 CPaintDC dc(this); // device context for painting, calling BeginPaint/EndPaint internally
|
rlm@1
|
649 if (emulating && (!theApp.active || theApp.paused))
|
rlm@1
|
650 {
|
rlm@1
|
651 systemRedrawScreen();
|
rlm@1
|
652 }
|
rlm@1
|
653 }
|
rlm@1
|
654
|
rlm@1
|
655 static bool translatingAccelerator = false;
|
rlm@1
|
656
|
rlm@1
|
657 // FIXME: this fix for accel keys is ugly
|
rlm@1
|
658 // using too many static variables for a single accel key kludge
|
rlm@1
|
659 static bool recursiveCall = true;
|
rlm@1
|
660 static bool fullUpdated = false;
|
rlm@1
|
661 static bool lastKeyModifier = false; // maybe better check current key press status instead
|
rlm@1
|
662 static WPARAM lastKey = 0;
|
rlm@1
|
663
|
rlm@1
|
664 BOOL MainWnd::PreTranslateMessage(MSG *pMsg)
|
rlm@1
|
665 {
|
rlm@1
|
666 if (RamSearchHWnd && ::IsDialogMessage(RamSearchHWnd, pMsg))
|
rlm@1
|
667 {
|
rlm@1
|
668 return TRUE;
|
rlm@1
|
669 }
|
rlm@1
|
670 else if (RamWatchHWnd && ::IsDialogMessage(RamWatchHWnd, pMsg))
|
rlm@1
|
671 {
|
rlm@1
|
672 if (RamWatchAccels)
|
rlm@1
|
673 TranslateAccelerator(RamWatchHWnd, RamWatchAccels, pMsg);
|
rlm@1
|
674 return TRUE;
|
rlm@1
|
675 }
|
rlm@1
|
676 else if (LuaConsoleHWnd && ::IsDialogMessage(LuaConsoleHWnd, pMsg))
|
rlm@1
|
677 {
|
rlm@1
|
678 return TRUE;
|
rlm@1
|
679 }
|
rlm@1
|
680 else if (CWnd::PreTranslateMessage(pMsg))
|
rlm@1
|
681 {
|
rlm@1
|
682 return TRUE;
|
rlm@1
|
683 }
|
rlm@1
|
684 else if (pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN)
|
rlm@1
|
685 {
|
rlm@1
|
686 translatingAccelerator = true;
|
rlm@1
|
687
|
rlm@1
|
688 bool bHit = theApp.hAccel != NULL && ::TranslateAccelerator(m_hWnd, theApp.hAccel, pMsg);
|
rlm@1
|
689 bool isModifier = pMsg->wParam == VK_SHIFT || pMsg->wParam == VK_CONTROL || pMsg->wParam == VK_MENU;
|
rlm@1
|
690
|
rlm@1
|
691 // HACK to get around the fact that TranslateAccelerator can't handle modifier-only accelerators
|
rlm@1
|
692 // (it would be better to fix TranslateAccelerator, but its code is in a Microsoft library...)
|
rlm@1
|
693 if (!bHit)
|
rlm@1
|
694 {
|
rlm@1
|
695 if (isModifier)
|
rlm@1
|
696 {
|
rlm@1
|
697 // do a linear loop through all accelerators to find modifier-only ones...
|
rlm@1
|
698 CCmdAccelOb *pCmdAccel;
|
rlm@1
|
699 WORD wKey;
|
rlm@1
|
700 CAccelsOb * pAccelOb;
|
rlm@1
|
701 POSITION pos = theApp.winAccelMgr.m_mapAccelTable.GetStartPosition();
|
rlm@1
|
702 const int modifiers = ((pMsg->wParam == VK_SHIFT) ? FSHIFT : ((pMsg->wParam == VK_CONTROL) ? FCONTROL : FALT));
|
rlm@1
|
703 while (pos != NULL)
|
rlm@1
|
704 {
|
rlm@1
|
705 theApp.winAccelMgr.m_mapAccelTable.GetNextAssoc(pos, wKey, pCmdAccel);
|
rlm@1
|
706 POSITION pos = pCmdAccel->m_Accels.GetHeadPosition();
|
rlm@1
|
707 while (pos != NULL)
|
rlm@1
|
708 {
|
rlm@1
|
709 pAccelOb = pCmdAccel->m_Accels.GetNext(pos);
|
rlm@1
|
710
|
rlm@1
|
711 if (pAccelOb->m_wKey == 0) // if accelerator-only
|
rlm@1
|
712 {
|
rlm@1
|
713 if ((pAccelOb->m_cVirt & modifiers) == modifiers) // if modifier matches
|
rlm@1
|
714 {
|
rlm@1
|
715 bHit = true;
|
rlm@1
|
716 SendMessage(WM_COMMAND, pCmdAccel->m_wIDCommand, 0); // tell Windows to call the right function
|
rlm@1
|
717 }
|
rlm@1
|
718 }
|
rlm@1
|
719 }
|
rlm@1
|
720 }
|
rlm@1
|
721 }
|
rlm@1
|
722
|
rlm@1
|
723 if (!bHit)
|
rlm@1
|
724 {
|
rlm@1
|
725 lastKeyModifier = true;
|
rlm@1
|
726 }
|
rlm@1
|
727 }
|
rlm@1
|
728
|
rlm@1
|
729 if (bHit)
|
rlm@1
|
730 {
|
rlm@1
|
731 if (lastKeyModifier && !isModifier)
|
rlm@1
|
732 {
|
rlm@1
|
733 fullUpdated = false;
|
rlm@1
|
734 lastKeyModifier = false;
|
rlm@1
|
735 }
|
rlm@1
|
736
|
rlm@1
|
737 if (lastKey != pMsg->wParam)
|
rlm@1
|
738 {
|
rlm@1
|
739 fullUpdated = false;
|
rlm@1
|
740 lastKey = pMsg->wParam;
|
rlm@1
|
741 }
|
rlm@1
|
742 }
|
rlm@1
|
743
|
rlm@1
|
744 translatingAccelerator = false;
|
rlm@1
|
745 return bHit ? TRUE : FALSE;
|
rlm@1
|
746 }
|
rlm@1
|
747
|
rlm@1
|
748 return FALSE;
|
rlm@1
|
749 }
|
rlm@1
|
750
|
rlm@1
|
751 void MainWnd::OnMouseMove(UINT nFlags, CPoint point)
|
rlm@1
|
752 {
|
rlm@1
|
753 winMouseOn();
|
rlm@1
|
754
|
rlm@1
|
755 CWnd::OnMouseMove(nFlags, point);
|
rlm@1
|
756 }
|
rlm@1
|
757
|
rlm@1
|
758 // recursive kludge
|
rlm@1
|
759 static void InitMenuKludge(CMenu *pParentMenu, CMenu *pMenu, CCmdTarget *pWnd)
|
rlm@1
|
760 {
|
rlm@1
|
761 ASSERT(pMenu != NULL);
|
rlm@1
|
762
|
rlm@1
|
763 CCmdUI state;
|
rlm@1
|
764 state.m_pParentMenu = pParentMenu;
|
rlm@1
|
765 state.m_pMenu = pMenu;
|
rlm@1
|
766 ASSERT(state.m_pOther == NULL);
|
rlm@1
|
767
|
rlm@1
|
768 state.m_nIndexMax = pMenu->GetMenuItemCount();
|
rlm@1
|
769 for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax;
|
rlm@1
|
770 state.m_nIndex++)
|
rlm@1
|
771 {
|
rlm@1
|
772 state.m_nID = pMenu->GetMenuItemID(state.m_nIndex);
|
rlm@1
|
773 if (state.m_nID == 0)
|
rlm@1
|
774 continue; // menu separator or invalid cmd - ignore it
|
rlm@1
|
775
|
rlm@1
|
776 ASSERT(state.m_pOther == NULL);
|
rlm@1
|
777 ASSERT(state.m_pMenu != NULL);
|
rlm@1
|
778 if (state.m_nID == (UINT)-1)
|
rlm@1
|
779 {
|
rlm@1
|
780 // possibly a popup menu, route to first item of that popup
|
rlm@1
|
781 state.m_pSubMenu = pMenu->GetSubMenu(state.m_nIndex);
|
rlm@1
|
782 if (state.m_pSubMenu == NULL)
|
rlm@1
|
783 {
|
rlm@1
|
784 continue; // first item of popup can't be routed to
|
rlm@1
|
785 }
|
rlm@1
|
786
|
rlm@1
|
787 state.DoUpdate(pWnd, false);
|
rlm@1
|
788 if (recursiveCall)
|
rlm@1
|
789 {
|
rlm@1
|
790 // FIXME: slow recursive calls to fix enabling/disabling of accel keys
|
rlm@1
|
791 InitMenuKludge(state.m_pMenu, state.m_pSubMenu, pWnd);
|
rlm@1
|
792 }
|
rlm@1
|
793 }
|
rlm@1
|
794 else
|
rlm@1
|
795 {
|
rlm@1
|
796 // normal menu item
|
rlm@1
|
797 // Auto enable/disable if frame window has 'm_bAutoMenuEnable'
|
rlm@1
|
798 // set and command is _not_ a system command.
|
rlm@1
|
799 state.m_pSubMenu = NULL;
|
rlm@1
|
800 state.DoUpdate(pWnd, state.m_nID < 0xF000);
|
rlm@1
|
801 }
|
rlm@1
|
802
|
rlm@1
|
803 // adjust for menu deletions and additions
|
rlm@1
|
804 UINT nCount = pMenu->GetMenuItemCount();
|
rlm@1
|
805 if (nCount < state.m_nIndexMax)
|
rlm@1
|
806 {
|
rlm@1
|
807 state.m_nIndex -= (state.m_nIndexMax - nCount);
|
rlm@1
|
808 while (state.m_nIndex < nCount &&
|
rlm@1
|
809 pMenu->GetMenuItemID(state.m_nIndex) == state.m_nID)
|
rlm@1
|
810 {
|
rlm@1
|
811 state.m_nIndex++;
|
rlm@1
|
812 }
|
rlm@1
|
813 }
|
rlm@1
|
814 state.m_nIndexMax = nCount;
|
rlm@1
|
815 }
|
rlm@1
|
816 }
|
rlm@1
|
817
|
rlm@1
|
818 void MainWnd::OnInitMenuPopup(CMenu *pMenu, UINT nIndex, BOOL bSysMenu)
|
rlm@1
|
819 {
|
rlm@1
|
820 ASSERT(pMenu != NULL);
|
rlm@1
|
821
|
rlm@1
|
822 CCmdUI state;
|
rlm@1
|
823 state.m_pMenu = pMenu;
|
rlm@1
|
824 ASSERT(state.m_pOther == NULL);
|
rlm@1
|
825 ASSERT(state.m_pParentMenu == NULL);
|
rlm@1
|
826
|
rlm@1
|
827 // determine if menu is popup in top-level menu and set m_pOther to
|
rlm@1
|
828 // it if so (m_pParentMenu == NULL indicates that it is secondary popup)
|
rlm@1
|
829 HMENU hParentMenu;
|
rlm@1
|
830 if (AfxGetThreadState()->m_hTrackingMenu == pMenu->m_hMenu)
|
rlm@1
|
831 state.m_pParentMenu = pMenu; // parent == child for tracking popup
|
rlm@1
|
832 else if ((hParentMenu = ::GetMenu(m_hWnd)) != NULL)
|
rlm@1
|
833 {
|
rlm@1
|
834 CWnd *pParent = GetTopLevelParent();
|
rlm@1
|
835 // children windows don't have menus -- need to go to the top!
|
rlm@1
|
836 if (pParent != NULL &&
|
rlm@1
|
837 (hParentMenu = ::GetMenu(pParent->m_hWnd)) != NULL)
|
rlm@1
|
838 {
|
rlm@1
|
839 int nIndexMax = ::GetMenuItemCount(hParentMenu);
|
rlm@1
|
840 for (int nIndex = 0; nIndex < nIndexMax; nIndex++)
|
rlm@1
|
841 {
|
rlm@1
|
842 if (::GetSubMenu(hParentMenu, nIndex) == pMenu->m_hMenu)
|
rlm@1
|
843 {
|
rlm@1
|
844 // when popup is found, m_pParentMenu is containing menu
|
rlm@1
|
845 state.m_pParentMenu = CMenu::FromHandle(hParentMenu);
|
rlm@1
|
846 break;
|
rlm@1
|
847 }
|
rlm@1
|
848 }
|
rlm@1
|
849 }
|
rlm@1
|
850 }
|
rlm@1
|
851
|
rlm@1
|
852 // FIXME: magic to workaround the accel key bug without slowing down too much
|
rlm@1
|
853 if (translatingAccelerator && !fullUpdated && state.m_pParentMenu == &theApp.m_menu)
|
rlm@1
|
854 {
|
rlm@1
|
855 state.m_pMenu = state.m_pParentMenu;
|
rlm@1
|
856 recursiveCall = true;
|
rlm@1
|
857 fullUpdated = true;
|
rlm@1
|
858 }
|
rlm@1
|
859 else if (!translatingAccelerator && fullUpdated)
|
rlm@1
|
860 {
|
rlm@1
|
861 fullUpdated = false;
|
rlm@1
|
862 }
|
rlm@1
|
863
|
rlm@1
|
864 InitMenuKludge(state.m_pParentMenu, state.m_pMenu, this);
|
rlm@1
|
865
|
rlm@1
|
866 recursiveCall = false;
|
rlm@1
|
867 }
|
rlm@1
|
868
|
rlm@1
|
869 void MainWnd::OnInitMenu(CMenu *pMenu)
|
rlm@1
|
870 {
|
rlm@1
|
871 // CWnd::OnInitMenu(pMenu);
|
rlm@1
|
872
|
rlm@1
|
873 if (translatingAccelerator)
|
rlm@1
|
874 {}
|
rlm@1
|
875 else
|
rlm@1
|
876 {
|
rlm@1
|
877 // HACK: we only want to call this if the user is pulling down the menu,
|
rlm@1
|
878 // but TranslateAccelerator also causes OnInitMenu to be called, so ignore that
|
rlm@1
|
879
|
rlm@1
|
880 systemSoundPause();
|
rlm@1
|
881 }
|
rlm@1
|
882 }
|
rlm@1
|
883
|
rlm@1
|
884 void MainWnd::OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized)
|
rlm@1
|
885 {
|
rlm@1
|
886 CWnd::OnActivate(nState, pWndOther, bMinimized);
|
rlm@1
|
887
|
rlm@1
|
888 bool activated = (nState == WA_ACTIVE || nState == WA_CLICKACTIVE) && !bMinimized;
|
rlm@1
|
889
|
rlm@1
|
890 theApp.active = activated || !theApp.pauseWhenInactive;
|
rlm@1
|
891
|
rlm@1
|
892 extern bool inputActive;
|
rlm@1
|
893 inputActive = activated || (!theApp.pauseWhenInactive && theApp.enableBackgroundInput);
|
rlm@1
|
894
|
rlm@1
|
895 if (theApp.active)
|
rlm@1
|
896 {
|
rlm@1
|
897 if (theApp.input)
|
rlm@1
|
898 {
|
rlm@1
|
899 theApp.input->activate();
|
rlm@1
|
900 }
|
rlm@1
|
901
|
rlm@1
|
902 if (!theApp.paused && emulating)
|
rlm@1
|
903 {
|
rlm@1
|
904 systemSoundResume();
|
rlm@1
|
905 }
|
rlm@1
|
906 }
|
rlm@1
|
907 else
|
rlm@1
|
908 {
|
rlm@1
|
909 theApp.wasPaused = true;
|
rlm@1
|
910
|
rlm@1
|
911 if (!theApp.paused && emulating)
|
rlm@1
|
912 {
|
rlm@1
|
913 systemSoundPause();
|
rlm@1
|
914 }
|
rlm@1
|
915
|
rlm@1
|
916 memset(theApp.delta, 255, sizeof(theApp.delta));
|
rlm@1
|
917 }
|
rlm@1
|
918
|
rlm@1
|
919 if (theApp.muteWhenInactive)
|
rlm@1
|
920 {
|
rlm@1
|
921 theApp.winMuteForNow = !activated;
|
rlm@1
|
922 }
|
rlm@1
|
923
|
rlm@1
|
924 if (theApp.paused && emulating)
|
rlm@1
|
925 {
|
rlm@1
|
926 systemRefreshScreen();
|
rlm@1
|
927 }
|
rlm@1
|
928 }
|
rlm@1
|
929
|
rlm@1
|
930 #if _MSC_VER <= 1200
|
rlm@1
|
931 void MainWnd::OnActivateApp(BOOL bActive, HTASK hTask)
|
rlm@1
|
932 #else
|
rlm@1
|
933 void MainWnd::OnActivateApp(BOOL bActive, DWORD hTask)
|
rlm@1
|
934 #endif
|
rlm@1
|
935 {
|
rlm@1
|
936 CWnd::OnActivateApp(bActive, hTask);
|
rlm@1
|
937
|
rlm@1
|
938 if (theApp.tripleBuffering && theApp.videoOption > VIDEO_4X)
|
rlm@1
|
939 {
|
rlm@1
|
940 if (bActive)
|
rlm@1
|
941 {
|
rlm@1
|
942 if (theApp.display)
|
rlm@1
|
943 theApp.display->clear();
|
rlm@1
|
944 }
|
rlm@1
|
945 }
|
rlm@1
|
946 }
|
rlm@1
|
947
|
rlm@1
|
948 LRESULT MainWnd::OnMySysCommand(WPARAM wParam, LPARAM lParam)
|
rlm@1
|
949 {
|
rlm@1
|
950 if (emulating && !theApp.paused)
|
rlm@1
|
951 {
|
rlm@1
|
952 if ((wParam & 0xFFF0) == SC_SCREENSAVE || (wParam & 0xFFF0) == SC_MONITORPOWER)
|
rlm@1
|
953 return 0;
|
rlm@1
|
954 }
|
rlm@1
|
955 return Default();
|
rlm@1
|
956 }
|
rlm@1
|
957
|
rlm@1
|
958 void MainWnd::OnDropFiles(HDROP hDropInfo)
|
rlm@1
|
959 {
|
rlm@1
|
960 // FIXME: required for the accel key fix
|
rlm@1
|
961 fullUpdated = false;
|
rlm@1
|
962
|
rlm@1
|
963 systemSoundClearBuffer();
|
rlm@1
|
964
|
rlm@1
|
965 char szFile[1024];
|
rlm@1
|
966 char ext[1024];
|
rlm@1
|
967
|
rlm@1
|
968 if (DragQueryFile(hDropInfo, 0, szFile, 1024))
|
rlm@1
|
969 {
|
rlm@1
|
970 DragFinish(hDropInfo);
|
rlm@1
|
971
|
rlm@1
|
972 _splitpath(szFile, NULL, NULL, NULL, ext);
|
rlm@1
|
973 if (strcasecmp(ext, ".lua") == 0)
|
rlm@1
|
974 {
|
rlm@1
|
975 if (VBALoadLuaCode(szFile))
|
rlm@1
|
976 {
|
rlm@1
|
977 // success, there is nothing to do
|
rlm@1
|
978 }
|
rlm@1
|
979 else
|
rlm@1
|
980 {
|
rlm@1
|
981 // Errors are displayed by the Lua code.
|
rlm@1
|
982 }
|
rlm@1
|
983 }
|
rlm@1
|
984 else if (strcasecmp(ext, ".vbm") == 0)
|
rlm@1
|
985 {
|
rlm@1
|
986 SMovie movieInfo;
|
rlm@1
|
987 char * movieName = szFile;
|
rlm@1
|
988 char romTitle [12];
|
rlm@1
|
989 uint32 romGameCode;
|
rlm@1
|
990 uint16 checksum;
|
rlm@1
|
991 uint8 crc;
|
rlm@1
|
992
|
rlm@1
|
993 if (VBAMovieGetInfo(movieName, &movieInfo) != MOVIE_SUCCESS)
|
rlm@1
|
994 {
|
rlm@1
|
995 return;
|
rlm@1
|
996 }
|
rlm@1
|
997
|
rlm@1
|
998 int cartType = movieInfo.header.typeFlags & 1 ? 0 : 1;
|
rlm@1
|
999
|
rlm@1
|
1000 if (!emulating)
|
rlm@1
|
1001 {
|
rlm@1
|
1002 theApp.winCheckFullscreen();
|
rlm@1
|
1003 if (winFileOpenSelect(cartType))
|
rlm@1
|
1004 {
|
rlm@1
|
1005 if (VBAMovieActive())
|
rlm@1
|
1006 VBAMovieStop(false); // will only get here on user selecting to play a ROM, canceling movie
|
rlm@1
|
1007 if (!winFileRun())
|
rlm@1
|
1008 return;
|
rlm@1
|
1009 }
|
rlm@1
|
1010 else
|
rlm@1
|
1011 return;
|
rlm@1
|
1012 }
|
rlm@1
|
1013 VBAMovieGetRomInfo(movieInfo, romTitle, romGameCode, checksum, crc);
|
rlm@1
|
1014
|
rlm@1
|
1015 while (movieInfo.header.romCRC != crc
|
rlm@1
|
1016 || strncmp(movieInfo.header.romTitle, romTitle, 12) != 0
|
rlm@1
|
1017 || movieInfo.header.romOrBiosChecksum != checksum
|
rlm@1
|
1018 && !((movieInfo.header.optionFlags & MOVIE_SETTING_USEBIOSFILE) == 0 && checksum == 0))
|
rlm@1
|
1019 {
|
rlm@1
|
1020 char msg[1024], warning1[1024], warning2[1024], buffer[1024];
|
rlm@1
|
1021
|
rlm@1
|
1022 strcpy(warning1, "");
|
rlm@1
|
1023 strcpy(warning2, "");
|
rlm@1
|
1024 {
|
rlm@1
|
1025 char str [13];
|
rlm@1
|
1026 strncpy(str, movieInfo.header.romTitle, 12);
|
rlm@1
|
1027 str[12] = '\0';
|
rlm@1
|
1028 sprintf(buffer, "title=%s ", str);
|
rlm@1
|
1029 strcat(warning1, buffer);
|
rlm@1
|
1030
|
rlm@1
|
1031 strncpy(str, romTitle, 12);
|
rlm@1
|
1032 str[12] = '\0';
|
rlm@1
|
1033 sprintf(buffer, "title=%s ", str);
|
rlm@1
|
1034 strcat(warning2, buffer);
|
rlm@1
|
1035 }
|
rlm@1
|
1036 {
|
rlm@1
|
1037 sprintf(buffer, "type=%s ",
|
rlm@1
|
1038 (movieInfo.header.typeFlags & MOVIE_TYPE_GBA) ?
|
rlm@1
|
1039 "GBA" : (movieInfo.header.typeFlags & MOVIE_TYPE_GBC) ?
|
rlm@1
|
1040 "GBC" : (movieInfo.header.typeFlags & MOVIE_TYPE_SGB) ? "SGB" : "GB");
|
rlm@1
|
1041 strcat(warning1, buffer);
|
rlm@1
|
1042
|
rlm@1
|
1043 sprintf(buffer, "type=%s ", systemCartridgeType ==
|
rlm@1
|
1044 0 ? "GBA" : (gbRom[0x143] & 0x80 ? "GBC" : (gbRom[0x146] == 0x03 ? "SGB" : "GB")));
|
rlm@1
|
1045 strcat(warning2, buffer);
|
rlm@1
|
1046 }
|
rlm@1
|
1047 {
|
rlm@1
|
1048 sprintf(buffer, "crc=%02x ", movieInfo.header.romCRC);
|
rlm@1
|
1049 strcat(warning1, buffer);
|
rlm@1
|
1050
|
rlm@1
|
1051 sprintf(buffer, "crc=%02x ", crc);
|
rlm@1
|
1052 strcat(warning2, buffer);
|
rlm@1
|
1053 }
|
rlm@1
|
1054 {
|
rlm@1
|
1055 char code [5];
|
rlm@1
|
1056 if (movieInfo.header.typeFlags & MOVIE_TYPE_GBA)
|
rlm@1
|
1057 {
|
rlm@1
|
1058 memcpy(code, &movieInfo.header.romGameCode, 4);
|
rlm@1
|
1059 code[4] = '\0';
|
rlm@1
|
1060 sprintf(buffer, "code=%s ", code);
|
rlm@1
|
1061 strcat(warning1, buffer);
|
rlm@1
|
1062 }
|
rlm@1
|
1063
|
rlm@1
|
1064 if (systemCartridgeType == 0)
|
rlm@1
|
1065 {
|
rlm@1
|
1066 memcpy(code, &romGameCode, 4);
|
rlm@1
|
1067 code[4] = '\0';
|
rlm@1
|
1068 sprintf(buffer, "code=%s ", code);
|
rlm@1
|
1069 strcat(warning2, buffer);
|
rlm@1
|
1070 }
|
rlm@1
|
1071 }
|
rlm@1
|
1072 {
|
rlm@1
|
1073 sprintf(buffer,
|
rlm@1
|
1074 movieInfo.header.typeFlags &
|
rlm@1
|
1075 MOVIE_TYPE_GBA ? ((movieInfo.header.optionFlags & MOVIE_SETTING_USEBIOSFILE) ==
|
rlm@1
|
1076 0 ? "(bios=none) " : "(bios=%04x) ") : "check=%04x ",
|
rlm@1
|
1077 movieInfo.header.romOrBiosChecksum);
|
rlm@1
|
1078 strcat(warning1, buffer);
|
rlm@1
|
1079
|
rlm@1
|
1080 sprintf(buffer,
|
rlm@1
|
1081 checksum == 0 ? "(bios=none) " : systemCartridgeType == 0 ? "(bios=%04x) " : "check=%04x ",
|
rlm@1
|
1082 checksum);
|
rlm@1
|
1083 strcat(warning2, buffer);
|
rlm@1
|
1084 }
|
rlm@1
|
1085
|
rlm@1
|
1086 strcpy(msg, "");
|
rlm@1
|
1087 sprintf(buffer, "Movie ROM: %s\n", warning1);
|
rlm@1
|
1088 strcat(msg, buffer);
|
rlm@1
|
1089 sprintf(buffer, "Your ROM: %s\n", warning2);
|
rlm@1
|
1090 strcat(msg, buffer);
|
rlm@1
|
1091 strcat(msg, "still want to play the movie?");
|
rlm@1
|
1092
|
rlm@1
|
1093 int sel = MessageBox(msg, TEXT("ROM Mismatch"), MB_ABORTRETRYIGNORE | MB_ICONQUESTION);
|
rlm@1
|
1094 switch (sel)
|
rlm@1
|
1095 {
|
rlm@1
|
1096 case IDABORT:
|
rlm@1
|
1097 return;
|
rlm@1
|
1098 case IDRETRY:
|
rlm@1
|
1099 theApp.winCheckFullscreen();
|
rlm@1
|
1100 if (winFileOpenSelect(cartType))
|
rlm@1
|
1101 {
|
rlm@1
|
1102 if (VBAMovieActive())
|
rlm@1
|
1103 VBAMovieStop(false); // will only get here on user selecting to play a ROM, canceling movie
|
rlm@1
|
1104 if (!winFileRun())
|
rlm@1
|
1105 return;
|
rlm@1
|
1106 VBAMovieGetRomInfo(movieInfo, romTitle, romGameCode, checksum, crc);
|
rlm@1
|
1107 }
|
rlm@1
|
1108 else
|
rlm@1
|
1109 return;
|
rlm@1
|
1110 break;
|
rlm@1
|
1111 default:
|
rlm@1
|
1112 goto romcheck_exit;
|
rlm@1
|
1113 }
|
rlm@1
|
1114 }
|
rlm@1
|
1115 romcheck_exit:
|
rlm@1
|
1116
|
rlm@1
|
1117 bool useBIOSFile = (movieInfo.header.optionFlags & MOVIE_SETTING_USEBIOSFILE) != 0;
|
rlm@1
|
1118 if (useBIOSFile)
|
rlm@1
|
1119 {
|
rlm@1
|
1120 extern bool systemLoadBIOS(const char *biosFileName, bool useBiosFile);
|
rlm@1
|
1121 if (!systemLoadBIOS(theApp.biosFileName, useBIOSFile))
|
rlm@1
|
1122 {
|
rlm@1
|
1123 systemMessage(0, "This movie requires a valid GBA BIOS file to play.\nPlease locate a BIOS file.");
|
rlm@1
|
1124 ((MainWnd *)theApp.m_pMainWnd)->OnOptionsEmulatorSelectbiosfile();
|
rlm@1
|
1125 if (!systemLoadBIOS(theApp.biosFileName, useBIOSFile))
|
rlm@1
|
1126 {
|
rlm@1
|
1127 systemMessage(0, "\"%s\" is not a valid BIOS file; cannot play movie without one.", theApp.biosFileName);
|
rlm@1
|
1128 return;
|
rlm@1
|
1129 }
|
rlm@1
|
1130 }
|
rlm@1
|
1131 }
|
rlm@1
|
1132
|
rlm@1
|
1133 int code = VBAMovieOpen(movieName, TRUE);
|
rlm@1
|
1134
|
rlm@1
|
1135 if (code != MOVIE_SUCCESS)
|
rlm@1
|
1136 {
|
rlm@1
|
1137 if (code == MOVIE_FILE_NOT_FOUND)
|
rlm@1
|
1138 systemMessage(0, "Could not find movie file \"%s\".", (const char *)movieName);
|
rlm@1
|
1139 else if (code == MOVIE_WRONG_FORMAT)
|
rlm@1
|
1140 systemMessage(0, "Movie file \"%s\" is not in proper VBM format.", (const char *)movieName);
|
rlm@1
|
1141 else if (code == MOVIE_WRONG_VERSION)
|
rlm@1
|
1142 systemMessage(0, "Movie file \"%s\" is not a supported version.", (const char *)movieName);
|
rlm@1
|
1143 else
|
rlm@1
|
1144 systemMessage(0, "Failed to open movie \"%s\".", (const char *)movieName);
|
rlm@1
|
1145 return;
|
rlm@1
|
1146 }
|
rlm@1
|
1147 }
|
rlm@1
|
1148 else if (strcasecmp(ext, ".wch") == 0)
|
rlm@1
|
1149 {
|
rlm@1
|
1150 if (emulating)
|
rlm@1
|
1151 {
|
rlm@1
|
1152 MainWnd::OnFileRamWatch();
|
rlm@1
|
1153 Load_Watches(true, szFile);
|
rlm@1
|
1154 }
|
rlm@1
|
1155 }
|
rlm@1
|
1156 else
|
rlm@1
|
1157 {
|
rlm@1
|
1158 theApp.romFilename = szFile;
|
rlm@1
|
1159 if (winFileRun())
|
rlm@1
|
1160 {
|
rlm@1
|
1161 SetForegroundWindow();
|
rlm@1
|
1162 }
|
rlm@1
|
1163 }
|
rlm@1
|
1164 }
|
rlm@1
|
1165 else
|
rlm@1
|
1166 DragFinish(hDropInfo);
|
rlm@1
|
1167 }
|
rlm@1
|
1168
|
rlm@1
|
1169 /////////////////////
|
rlm@1
|
1170
|
rlm@1
|
1171 void MainWnd::winMouseOn()
|
rlm@1
|
1172 {
|
rlm@1
|
1173 SetCursor(arrow);
|
rlm@1
|
1174 if (theApp.videoOption > VIDEO_4X)
|
rlm@1
|
1175 {
|
rlm@1
|
1176 theApp.mouseCounter = 120;
|
rlm@1
|
1177 }
|
rlm@1
|
1178 else
|
rlm@1
|
1179 theApp.mouseCounter = 0;
|
rlm@1
|
1180 }
|
rlm@1
|
1181
|
rlm@1
|
1182 void MainWnd::winConfirmMode()
|
rlm@1
|
1183 {
|
rlm@1
|
1184 if (theApp.renderMethod == DIRECT_DRAW && theApp.videoOption > VIDEO_4X)
|
rlm@1
|
1185 {
|
rlm@1
|
1186 theApp.winCheckFullscreen();
|
rlm@1
|
1187 ModeConfirm dlg(this);
|
rlm@1
|
1188
|
rlm@1
|
1189 if (!dlg.DoModal())
|
rlm@1
|
1190 {
|
rlm@1
|
1191 theApp.updateVideoSize(ID_OPTIONS_VIDEO_X2);
|
rlm@1
|
1192 }
|
rlm@1
|
1193 }
|
rlm@1
|
1194 }
|
rlm@1
|
1195
|
rlm@1
|
1196 bool MainWnd::winFileOpenSelect(int cartridgeType)
|
rlm@1
|
1197 {
|
rlm@1
|
1198 int selectedFilter = regQueryDwordValue("selectedFilter", 0);
|
rlm@1
|
1199 if (selectedFilter < 0 || selectedFilter > 2)
|
rlm@1
|
1200 selectedFilter = 0;
|
rlm@1
|
1201
|
rlm@1
|
1202 LPCTSTR exts[] = { NULL };
|
rlm@1
|
1203 CString filter = winResLoadFilter(IDS_FILTER_ROM);
|
rlm@1
|
1204 CString title = winResLoadString(IDS_SELECT_ROM);
|
rlm@1
|
1205
|
rlm@1
|
1206 bool isOverrideEmpty = false;
|
rlm@1
|
1207 CString initialDir = regQueryStringValue(cartridgeType == 0 ? IDS_ROM_DIR : IDS_GBXROM_DIR, NULL);
|
rlm@1
|
1208 if (initialDir.IsEmpty())
|
rlm@1
|
1209 {
|
rlm@1
|
1210 isOverrideEmpty = true;
|
rlm@1
|
1211 CString altDir = regQueryStringValue(cartridgeType != 0 ? IDS_ROM_DIR : IDS_GBXROM_DIR, NULL);
|
rlm@1
|
1212 initialDir = altDir.IsEmpty() ? theApp.exeDir : altDir;
|
rlm@1
|
1213 }
|
rlm@1
|
1214
|
rlm@1
|
1215 FileDlg dlg(this, "", filter, selectedFilter, "ROM", exts, initialDir, title, false, true);
|
rlm@1
|
1216
|
rlm@1
|
1217 if (dlg.DoModal() == IDOK)
|
rlm@1
|
1218 {
|
rlm@1
|
1219 regSetDwordValue("selectedFilter", dlg.m_ofn.nFilterIndex);
|
rlm@1
|
1220 theApp.romFilename = dlg.GetPathName();
|
rlm@1
|
1221 initialDir = winGetDirFromFilename(theApp.romFilename);
|
rlm@1
|
1222
|
rlm@1
|
1223 // we have directory override for that purpose
|
rlm@1
|
1224 // but this can be...desirable
|
rlm@1
|
1225 if (isOverrideEmpty)
|
rlm@1
|
1226 regSetStringValue(cartridgeType == 0 ? IDS_ROM_DIR : IDS_GBXROM_DIR, initialDir);
|
rlm@1
|
1227 return true;
|
rlm@1
|
1228 }
|
rlm@1
|
1229 return false;
|
rlm@1
|
1230 }
|
rlm@1
|
1231
|
rlm@1
|
1232 // some extensions that might commonly be near emulation-related files that we almost certainly can't open, or at least not
|
rlm@1
|
1233 // directly.
|
rlm@1
|
1234 // also includes definitely non-ROM extensions we know about, since we only use this variable in a ROM opening function.
|
rlm@1
|
1235 // we do this by exclusion instead of inclusion because we don't want to exclude extensions used for any archive files, even
|
rlm@1
|
1236 // extensionless or unusually-named archives.
|
rlm@1
|
1237 static const char *s_romIgnoreExtensions[] = {
|
rlm@1
|
1238 "vbm", "sgm", "clt", "dat", "gbs", "gcf", "spc", "xpc", "pal", "act", "dmp", "avi", "ini", "txt", "nfo",
|
rlm@1
|
1239 "htm", "html", "jpg", "jpeg", "png", "bmp", "gif", "mp3", "wav", "lnk", "exe", "bat", "sav", "luasav"
|
rlm@1
|
1240 };
|
rlm@1
|
1241
|
rlm@1
|
1242 #include "GBACheatsDlg.h"
|
rlm@1
|
1243 #include "GBCheatsDlg.h"
|
rlm@1
|
1244
|
rlm@1
|
1245 #include "../common/CheatSearch.h"
|
rlm@1
|
1246 #include "../gba/GBA.h"
|
rlm@1
|
1247 #include "../gb/GB.h"
|
rlm@1
|
1248 #include "../gba/Flash.h"
|
rlm@1
|
1249 #include "../gba/RTC.h"
|
rlm@1
|
1250
|
rlm@1
|
1251 void MainWnd::winFileClose(bool reopening)
|
rlm@1
|
1252 {
|
rlm@1
|
1253 if (rom != NULL || gbRom != NULL)
|
rlm@1
|
1254 {
|
rlm@1
|
1255 if (theApp.autoSaveLoadCheatList)
|
rlm@1
|
1256 winSaveCheatListDefault();
|
rlm@1
|
1257
|
rlm@1
|
1258 if (!reopening)
|
rlm@1
|
1259 {
|
rlm@1
|
1260 // save battery file before we change the filename...
|
rlm@1
|
1261 winWriteBatteryFile();
|
rlm@1
|
1262 cheatSearchCleanup(&cheatSearchData);
|
rlm@1
|
1263 capturePrevious = 0;
|
rlm@1
|
1264 captureNumber = 0;
|
rlm@1
|
1265 }
|
rlm@1
|
1266
|
rlm@1
|
1267 theApp.emulator.emuCleanUp();
|
rlm@1
|
1268
|
rlm@1
|
1269 extern void remoteCleanUp();
|
rlm@1
|
1270 remoteCleanUp();
|
rlm@1
|
1271 }
|
rlm@1
|
1272
|
rlm@1
|
1273 if (VBAMovieActive())
|
rlm@1
|
1274 VBAMovieStop(false); // will only get here on user selecting to open a ROM, canceling movie
|
rlm@1
|
1275
|
rlm@1
|
1276 theApp.frameSearching = false;
|
rlm@1
|
1277 theApp.frameSearchSkipping = false;
|
rlm@1
|
1278 emulating = 0;
|
rlm@1
|
1279
|
rlm@1
|
1280 if (this)
|
rlm@1
|
1281 RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_ERASE | RDW_ALLCHILDREN);
|
rlm@1
|
1282 systemSetTitle(VBA_NAME_AND_VERSION);
|
rlm@1
|
1283 }
|
rlm@1
|
1284
|
rlm@1
|
1285 bool MainWnd::winFileRun(bool reopening)
|
rlm@1
|
1286 {
|
rlm@1
|
1287 int prevCartridgeType = systemCartridgeType;
|
rlm@1
|
1288
|
rlm@1
|
1289 //bool requiresInitRAMSearch = (rom == NULL && gbRom == NULL) || !reopening;
|
rlm@1
|
1290 winFileClose(reopening);
|
rlm@1
|
1291
|
rlm@1
|
1292 // use ObtainFile to support opening files within archives (.7z, .rar, .zip, .zip.rar.7z, etc.)
|
rlm@1
|
1293 if (theApp.romFilename.GetLength() > 2048) theApp.romFilename.Truncate(2048);
|
rlm@1
|
1294
|
rlm@1
|
1295 char logicalName[2048], physicalName[2048];
|
rlm@1
|
1296
|
rlm@1
|
1297 // FIXME: assertion failure in fopen.c if canceled
|
rlm@1
|
1298 if (ObtainFile(theApp.romFilename, logicalName, physicalName, "rom", s_romIgnoreExtensions,
|
rlm@1
|
1299 sizeof(s_romIgnoreExtensions) / sizeof(*s_romIgnoreExtensions)))
|
rlm@1
|
1300 {
|
rlm@1
|
1301 // theApp.romFilename is exactly the filename used for opening, while theApp.gameFilename is always the logical name
|
rlm@1
|
1302 theApp.romFilename = theApp.gameFilename = logicalName;
|
rlm@1
|
1303 ReleaseTempFileCategory("rom", physicalName);
|
rlm@1
|
1304 }
|
rlm@1
|
1305 else
|
rlm@1
|
1306 {
|
rlm@1
|
1307 return false;
|
rlm@1
|
1308 }
|
rlm@1
|
1309
|
rlm@1
|
1310 IMAGE_TYPE type = utilFindType(physicalName);
|
rlm@1
|
1311
|
rlm@1
|
1312 if (type == IMAGE_UNKNOWN)
|
rlm@1
|
1313 {
|
rlm@1
|
1314 systemMessage(IDS_UNSUPPORTED_FILE_TYPE,
|
rlm@1
|
1315 "The file \"%s\" is an unsupported type.", logicalName);
|
rlm@1
|
1316 return false;
|
rlm@1
|
1317 }
|
rlm@1
|
1318 systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
|
rlm@1
|
1319 systemCartridgeType = (int)type;
|
rlm@1
|
1320 if (type == IMAGE_GB)
|
rlm@1
|
1321 {
|
rlm@1
|
1322 if (!gbLoadRom(physicalName))
|
rlm@1
|
1323 return false;
|
rlm@1
|
1324
|
rlm@1
|
1325 gbBorderOn = theApp.winGbBorderOn;
|
rlm@1
|
1326 theApp.emulator = GBSystem;
|
rlm@1
|
1327 theApp.romSize = gbRomSize;
|
rlm@1
|
1328 if (theApp.autoIPS)
|
rlm@1
|
1329 {
|
rlm@1
|
1330 CString ipsname = winGetDestFilename(logicalName, IDS_IPS_DIR, ".ips");
|
rlm@1
|
1331 int size = gbRomSize;
|
rlm@1
|
1332 utilApplyIPS(ipsname, &gbRom, &size);
|
rlm@1
|
1333 if (size != gbRomSize)
|
rlm@1
|
1334 {
|
rlm@1
|
1335 extern bool gbUpdateSizes();
|
rlm@1
|
1336 gbUpdateSizes();
|
rlm@1
|
1337 theApp.romSize = size;
|
rlm@1
|
1338 }
|
rlm@1
|
1339 }
|
rlm@1
|
1340
|
rlm@1
|
1341 useBios = false; // FIXME
|
rlm@1
|
1342
|
rlm@1
|
1343 if (reopening)
|
rlm@1
|
1344 {
|
rlm@1
|
1345 bool winGbCheatReaddress();
|
rlm@1
|
1346 winGbCheatReaddress();
|
rlm@1
|
1347 }
|
rlm@1
|
1348 }
|
rlm@1
|
1349 else
|
rlm@1
|
1350 {
|
rlm@1
|
1351 int size = CPULoadRom(physicalName);
|
rlm@1
|
1352 if (!size)
|
rlm@1
|
1353 return false;
|
rlm@1
|
1354
|
rlm@1
|
1355 flashSetSize(theApp.winFlashSize);
|
rlm@1
|
1356 rtcEnable(theApp.winRtcEnable);
|
rlm@1
|
1357 cpuSaveType = theApp.winSaveType;
|
rlm@1
|
1358
|
rlm@1
|
1359 // if(cpuEnhancedDetection && winSaveType == 0) {
|
rlm@1
|
1360 // utilGBAFindSave(rom, size);
|
rlm@1
|
1361 // }
|
rlm@1
|
1362
|
rlm@1
|
1363 char buffer[5];
|
rlm@1
|
1364 strncpy(buffer, (const char *)&rom[0xac], 4);
|
rlm@1
|
1365 buffer[4] = 0;
|
rlm@1
|
1366
|
rlm@1
|
1367 // vba-over.ini
|
rlm@1
|
1368 CString vbaOverINI = theApp.exeDir;
|
rlm@1
|
1369 vbaOverINI += "\\vba-over.ini";
|
rlm@1
|
1370
|
rlm@1
|
1371 UINT i = GetPrivateProfileInt(buffer, "rtcEnabled", -1, vbaOverINI);
|
rlm@1
|
1372 if (i != (UINT)-1)
|
rlm@1
|
1373 rtcEnable(i == 0 ? false : true);
|
rlm@1
|
1374
|
rlm@1
|
1375 i = GetPrivateProfileInt(buffer, "flashSize", -1, vbaOverINI);
|
rlm@1
|
1376 if (i != (UINT)-1 && (i == 0x10000 || i == 0x20000))
|
rlm@1
|
1377 flashSetSize((int)i);
|
rlm@1
|
1378
|
rlm@1
|
1379 i = GetPrivateProfileInt(buffer, "saveType", -1, vbaOverINI);
|
rlm@1
|
1380 if (i != (UINT)-1 && (i <= 5))
|
rlm@1
|
1381 cpuSaveType = (int)i;
|
rlm@1
|
1382
|
rlm@1
|
1383 /* disabled due to problems
|
rlm@1
|
1384 if(theApp.removeIntros && rom != NULL) {
|
rlm@1
|
1385 *((u32 *)rom)= 0xea00002e;
|
rlm@1
|
1386 }
|
rlm@1
|
1387 */
|
rlm@1
|
1388 theApp.emulator = GBASystem;
|
rlm@1
|
1389 theApp.romSize = size;
|
rlm@1
|
1390 if (theApp.autoIPS)
|
rlm@1
|
1391 {
|
rlm@1
|
1392 CString ipsname = winGetDestFilename(logicalName, IDS_IPS_DIR, ".ips");
|
rlm@1
|
1393 int size = 0x2000000;
|
rlm@1
|
1394 utilApplyIPS(ipsname, &rom, &size);
|
rlm@1
|
1395 }
|
rlm@1
|
1396
|
rlm@1
|
1397 skipBios = theApp.skipBiosFile ? true : false;
|
rlm@1
|
1398 CPUInit();
|
rlm@1
|
1399 CPULoadBios(theApp.biosFileName, theApp.useBiosFile ? true : false);
|
rlm@1
|
1400 CPUReset();
|
rlm@1
|
1401
|
rlm@1
|
1402 if (reopening)
|
rlm@1
|
1403 {
|
rlm@1
|
1404 bool winGbaCheatReaddress();
|
rlm@1
|
1405 winGbaCheatReaddress();
|
rlm@1
|
1406 }
|
rlm@1
|
1407 }
|
rlm@1
|
1408
|
rlm@1
|
1409 if (theApp.soundInitialized)
|
rlm@1
|
1410 {
|
rlm@1
|
1411 if (systemCartridgeType == 1)
|
rlm@1
|
1412 gbSoundReset();
|
rlm@1
|
1413 else
|
rlm@1
|
1414 soundReset();
|
rlm@1
|
1415 }
|
rlm@1
|
1416 else
|
rlm@1
|
1417 {
|
rlm@1
|
1418 if (!soundOffFlag)
|
rlm@1
|
1419 soundInit();
|
rlm@1
|
1420 theApp.soundInitialized = true;
|
rlm@1
|
1421 }
|
rlm@1
|
1422
|
rlm@1
|
1423 winReadBatteryFile();
|
rlm@1
|
1424
|
rlm@1
|
1425 emulating = true;
|
rlm@1
|
1426
|
rlm@1
|
1427 if (theApp.autoSaveLoadCheatList)
|
rlm@1
|
1428 winLoadCheatListDefault();
|
rlm@1
|
1429
|
rlm@1
|
1430 if (theApp.filenamePreference == 0)
|
rlm@1
|
1431 theApp.addRecentFile(winGetOriginalFilename(logicalName));
|
rlm@1
|
1432 else
|
rlm@1
|
1433 theApp.addRecentFile(logicalName);
|
rlm@1
|
1434
|
rlm@1
|
1435 theApp.updateWindowSize(theApp.videoOption);
|
rlm@1
|
1436
|
rlm@1
|
1437 theApp.updateFrameSkip();
|
rlm@1
|
1438
|
rlm@1
|
1439 if (theApp.autoHideMenu && theApp.videoOption > VIDEO_4X && theApp.menuToggle)
|
rlm@1
|
1440 OnFileTogglemenu();
|
rlm@1
|
1441
|
rlm@1
|
1442 if (theApp.autoLoadMostRecent && !VBAMovieActive() && !VBAMovieLoading()) // would cause desync in movies...
|
rlm@1
|
1443 OnFileLoadgameMostrecent();
|
rlm@1
|
1444
|
rlm@1
|
1445 theApp.renderedFrames = 0;
|
rlm@1
|
1446
|
rlm@1
|
1447 theApp.rewindCount = 0;
|
rlm@1
|
1448 theApp.rewindCounter = 0;
|
rlm@1
|
1449 theApp.rewindSaveNeeded = false;
|
rlm@1
|
1450
|
rlm@1
|
1451 {
|
rlm@1
|
1452 extern bool playMovieFile, playMovieFileReadOnly, outputWavFile, outputAVIFile, flagHideMenu; // from VBA.cpp
|
rlm@1
|
1453 extern char movieFileToPlay[1024], wavFileToOutput[1024]; // from VBA.cpp
|
rlm@1
|
1454 extern int pauseAfterTime; // from VBA.cpp
|
rlm@1
|
1455 if (playMovieFile)
|
rlm@1
|
1456 {
|
rlm@1
|
1457 playMovieFile = false;
|
rlm@1
|
1458 VBAMovieOpen(movieFileToPlay, playMovieFileReadOnly);
|
rlm@1
|
1459 }
|
rlm@1
|
1460 if (outputWavFile)
|
rlm@1
|
1461 {
|
rlm@1
|
1462 outputWavFile = false;
|
rlm@1
|
1463 theApp.soundRecordName = wavFileToOutput;
|
rlm@1
|
1464 theApp.soundRecording = true;
|
rlm@1
|
1465 }
|
rlm@1
|
1466 if (outputAVIFile)
|
rlm@1
|
1467 {
|
rlm@1
|
1468 outputAVIFile = false;
|
rlm@1
|
1469 OnToolsStartAVIRecording();
|
rlm@1
|
1470 }
|
rlm@1
|
1471 if (pauseAfterTime >= 0)
|
rlm@1
|
1472 {
|
rlm@1
|
1473 VBAMovieSetPauseAt(pauseAfterTime);
|
rlm@1
|
1474 }
|
rlm@1
|
1475 if (flagHideMenu)
|
rlm@1
|
1476 {
|
rlm@1
|
1477 OnFileTogglemenu();
|
rlm@1
|
1478 theApp.updateWindowSize(theApp.videoOption);
|
rlm@1
|
1479 }
|
rlm@1
|
1480 }
|
rlm@1
|
1481
|
rlm@1
|
1482 if (systemCartridgeType != prevCartridgeType)
|
rlm@1
|
1483 {
|
rlm@1
|
1484 extern GBACheatSearch gbaDlg;
|
rlm@1
|
1485 extern GBCheatSearch gbDlg;
|
rlm@1
|
1486 if (!theApp.pauseDuringCheatSearch && theApp.modelessCheatDialogIsOpen)
|
rlm@1
|
1487 {
|
rlm@1
|
1488 gbaDlg.DestroyWindow();
|
rlm@1
|
1489 gbDlg.DestroyWindow();
|
rlm@1
|
1490 theApp.modelessCheatDialogIsOpen = false;
|
rlm@1
|
1491 }
|
rlm@1
|
1492 }
|
rlm@1
|
1493
|
rlm@1
|
1494 theApp.winCheckFullscreen();
|
rlm@1
|
1495 ReopenRamWindows();
|
rlm@1
|
1496
|
rlm@1
|
1497 // FIXME
|
rlm@1
|
1498 reset_address_info();
|
rlm@1
|
1499 //if (requiresInitRAMSearch)
|
rlm@1
|
1500 {
|
rlm@1
|
1501 // extern void soft_reset_address_info();
|
rlm@1
|
1502 // soft_reset_address_info();
|
rlm@1
|
1503 }
|
rlm@1
|
1504
|
rlm@1
|
1505 VBAUpdateButtonPressDisplay();
|
rlm@1
|
1506 VBAUpdateFrameCountDisplay();
|
rlm@1
|
1507 systemRefreshScreen();
|
rlm@1
|
1508
|
rlm@1
|
1509 return true;
|
rlm@1
|
1510 }
|
rlm@1
|
1511
|