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