rlm@1: #include "stdafx.h" rlm@1: #include "resource.h" rlm@1: #include "MainWnd.h" rlm@1: #include "Associate.h" rlm@1: #include "Directories.h" rlm@1: #include "FileDlg.h" rlm@1: #include "GBColorDlg.h" rlm@1: #include "Joypad.h" rlm@1: #include "MaxScale.h" rlm@1: #include "ModeConfirm.h" rlm@1: #include "Reg.h" rlm@1: #include "RewindInterval.h" rlm@1: #include "Throttle.h" rlm@1: #include "TextOptions.h" rlm@1: #include "WinResUtil.h" rlm@1: #include "VBA.h" rlm@1: rlm@1: #include "../gba/GBA.h" rlm@1: #include "../gba/GBAGlobals.h" rlm@1: #include "../gba/Flash.h" rlm@1: #include "../gba/GBASound.h" rlm@1: #include "../gba/agbprint.h" rlm@1: #include "../gb/GB.h" rlm@1: #include "../gb/gbGlobals.h" rlm@1: #include "../gb/gbPrinter.h" rlm@1: #include "../common/inputGlobal.h" rlm@1: #include "../common/movie.h" rlm@1: #include "../version.h" rlm@1: rlm@1: extern int emulating; rlm@1: rlm@1: #define VBA_CONFIRM_MODE WM_APP + 100 rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottleNothrottle() rlm@1: { rlm@1: systemSetThrottle(0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottleNothrottle(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle6() rlm@1: { rlm@1: systemSetThrottle(6); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle6(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 6); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle15() rlm@1: { rlm@1: systemSetThrottle(15); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle15(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 15); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle25() rlm@1: { rlm@1: systemSetThrottle(25); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle25(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 25); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle50() rlm@1: { rlm@1: systemSetThrottle(50); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle50(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 50); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle75() rlm@1: { rlm@1: systemSetThrottle(75); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle75(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 75); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle100() rlm@1: { rlm@1: systemSetThrottle(100); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle100(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 100); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle125() rlm@1: { rlm@1: systemSetThrottle(125); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle125(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 125); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle150() rlm@1: { rlm@1: systemSetThrottle(150); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle150(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 150); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle200() rlm@1: { rlm@1: systemSetThrottle(200); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle200(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 200); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle300() rlm@1: { rlm@1: systemSetThrottle(300); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle300(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 300); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle400() rlm@1: { rlm@1: systemSetThrottle(400); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle400(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 400); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle600() rlm@1: { rlm@1: systemSetThrottle(600); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle600(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 600); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottle1000() rlm@1: { rlm@1: systemSetThrottle(1000); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottle1000(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.throttle == 1000); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottleOther() rlm@1: { rlm@1: Throttle dlg; rlm@1: int v = dlg.DoModal(); rlm@1: if (v) rlm@1: systemSetThrottle(v); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottleOther(CCmdUI*pCmdUI) rlm@1: { rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottleIncrease() rlm@1: { rlm@1: systemIncreaseThrottle(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottleIncrease(CCmdUI*pCmdUI) rlm@1: { rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipThrottleDecrease() rlm@1: { rlm@1: systemDecreaseThrottle(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipThrottleDecrease(CCmdUI*pCmdUI) rlm@1: { rlm@1: } rlm@1: rlm@1: /* rlm@1: void MainWnd::OnOptionsFrameskipAutomatic() rlm@1: { rlm@1: theApp.autoFrameSkip = !theApp.autoFrameSkip; rlm@1: if(!theApp.autoFrameSkip && emulating) rlm@1: theApp.updateFrameSkip(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipAutomatic(CCmdUI* pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.autoFrameSkip); rlm@1: } rlm@1: */ rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipAccuratePitch() rlm@1: { rlm@1: theApp.accuratePitchThrottle = true; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipAccuratePitch(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.accuratePitchThrottle); rlm@1: pCmdUI->Enable(!soundOffFlag && synchronize); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFrameskipAccurateSpeed() rlm@1: { rlm@1: theApp.accuratePitchThrottle = false; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFrameskipAccurateSpeed(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(!theApp.accuratePitchThrottle); rlm@1: pCmdUI->Enable(!soundOffFlag && synchronize); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsFrameskip(UINT nID) rlm@1: { rlm@1: switch (nID) rlm@1: { rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_0: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_1: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_2: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_3: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_4: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_5: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_6: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_7: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_8: rlm@1: case ID_OPTIONS_VIDEO_FRAMESKIP_9: rlm@1: if (systemCartridgeType == 0) rlm@1: { rlm@1: frameSkip = nID - ID_OPTIONS_VIDEO_FRAMESKIP_0; rlm@1: } rlm@1: else rlm@1: { rlm@1: gbFrameSkip = nID - ID_OPTIONS_VIDEO_FRAMESKIP_0; rlm@1: } rlm@1: if (emulating) rlm@1: theApp.updateFrameSkip(); rlm@1: return TRUE; rlm@1: break; rlm@1: } rlm@1: return FALSE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip0(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 0 : gbFrameSkip == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip1(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 1 : gbFrameSkip == 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip2(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 2 : gbFrameSkip == 2); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip3(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 3 : gbFrameSkip == 3); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip4(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 4 : gbFrameSkip == 4); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip5(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 5 : gbFrameSkip == 5); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip6(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 6 : gbFrameSkip == 6); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip7(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 7 : gbFrameSkip == 7); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip8(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 8 : gbFrameSkip == 8); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFrameskip9(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(systemCartridgeType == 0 ? frameSkip == 9 : gbFrameSkip == 9); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoVsync() rlm@1: { rlm@1: theApp.vsync = !theApp.vsync; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoVsync(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.vsync); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoX1(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_1X); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoX2(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_2X); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoX3(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_3X); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoX4(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_4X); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFullscreen320x240(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.mode320Available); rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_320x240); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFullscreen640x480(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.mode640Available); rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_640x480); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFullscreen800x600(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.mode800Available); rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_800x600); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionVideoSize(UINT nID) rlm@1: { rlm@1: theApp.updateVideoSize(nID); rlm@1: theApp.m_pMainWnd->PostMessage(VBA_CONFIRM_MODE); rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoFullscreen320x240() rlm@1: { rlm@1: OnOptionVideoSize(ID_OPTIONS_VIDEO_FULLSCREEN320X240); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoFullscreen640x480() rlm@1: { rlm@1: OnOptionVideoSize(ID_OPTIONS_VIDEO_FULLSCREEN640X480); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoFullscreen800x600() rlm@1: { rlm@1: OnOptionVideoSize(ID_OPTIONS_VIDEO_FULLSCREEN800X600); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoFullscreen() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: GUID *pGUID = NULL; rlm@1: int size = theApp.display->selectFullScreenMode(&pGUID); rlm@1: if (size != -1) rlm@1: { rlm@1: int width = (size >> 12) & 4095; rlm@1: int height = (size & 4095); rlm@1: int colorDepth = (size >> 24); rlm@1: if (width != theApp.fsWidth || rlm@1: height != theApp.fsHeight || rlm@1: colorDepth != theApp.fsColorDepth || rlm@1: pGUID != theApp.pVideoDriverGUID || rlm@1: theApp.videoOption != VIDEO_OTHER) rlm@1: { rlm@1: theApp.fsForceChange = true; rlm@1: theApp.fsWidth = width; rlm@1: theApp.fsHeight = height; rlm@1: theApp.fsColorDepth = colorDepth; rlm@1: theApp.pVideoDriverGUID = pGUID; rlm@1: if (pGUID) rlm@1: { rlm@1: theApp.videoDriverGUID = *pGUID; rlm@1: regSetDwordValue("defaultVideoDriver", FALSE); rlm@1: regSetBinaryValue("videoDriverGUID", rlm@1: (char *)pGUID, sizeof(GUID)); rlm@1: } rlm@1: else rlm@1: { rlm@1: regSetDwordValue("defaultVideoDriver", TRUE); rlm@1: } rlm@1: theApp.updateVideoSize(ID_OPTIONS_VIDEO_FULLSCREEN); rlm@1: theApp.m_pMainWnd->PostMessage(VBA_CONFIRM_MODE); rlm@1: } rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFullscreen(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.videoOption == VIDEO_OTHER); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoDisablesfx() rlm@1: { rlm@1: cpuDisableSfx = !cpuDisableSfx; rlm@1: if (emulating && systemCartridgeType == 0) rlm@1: CPUUpdateRender(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoDisablesfx(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(cpuDisableSfx); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoFullscreenstretchtofit() rlm@1: { rlm@1: theApp.fullScreenStretch = !theApp.fullScreenStretch; rlm@1: theApp.updateWindowSize(theApp.videoOption); rlm@1: if (theApp.display) rlm@1: theApp.display->clear(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoFullscreenstretchtofit(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.fullScreenStretch); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnVideoLayer(UINT nID) rlm@1: { rlm@1: layerSettings ^= 0x0100 << ((nID & 0xFFFF) - ID_OPTIONS_VIDEO_LAYERS_BG0); rlm@1: layerEnable = DISPCNT & layerSettings; rlm@1: CPUUpdateRenderBuffers(false); rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateVideoLayer(CCmdUI *pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck((layerSettings >> (8 + pCmdUI->m_nID - ID_OPTIONS_VIDEO_LAYERS_BG0)) & 1); rlm@1: switch (pCmdUI->m_nID) rlm@1: { rlm@1: case ID_OPTIONS_VIDEO_LAYERS_BG1: rlm@1: case ID_OPTIONS_VIDEO_LAYERS_BG2: rlm@1: case ID_OPTIONS_VIDEO_LAYERS_BG3: rlm@1: case ID_OPTIONS_VIDEO_LAYERS_WIN1: rlm@1: case ID_OPTIONS_VIDEO_LAYERS_OBJWIN: rlm@1: pCmdUI->Enable(systemCartridgeType == 0); rlm@1: break; rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRendermethodGdi() rlm@1: { rlm@1: theApp.renderMethod = GDI; rlm@1: theApp.updateRenderMethod(false); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRendermethodGdi(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.renderMethod == GDI); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRendermethodDirectdraw() rlm@1: { rlm@1: theApp.renderMethod = DIRECT_DRAW; rlm@1: theApp.updateRenderMethod(false); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRendermethodDirectdraw(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.renderMethod == DIRECT_DRAW); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRendermethodDirect3d() rlm@1: { rlm@1: theApp.renderMethod = DIRECT_3D; rlm@1: theApp.updateRenderMethod(false); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRendermethodDirect3d(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.renderMethod == DIRECT_3D); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRendermethodOpengl() rlm@1: { rlm@1: theApp.renderMethod = OPENGL; rlm@1: theApp.updateRenderMethod(false); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRendermethodOpengl(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.renderMethod == OPENGL); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoTriplebuffering() rlm@1: { rlm@1: theApp.tripleBuffering = !theApp.tripleBuffering; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoTriplebuffering(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.tripleBuffering); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoDdrawemulationonly() rlm@1: { rlm@1: theApp.ddrawEmulationOnly = !theApp.ddrawEmulationOnly; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoDdrawemulationonly(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.ddrawEmulationOnly); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoDdrawusevideomemory() rlm@1: { rlm@1: theApp.ddrawUseVideoMemory = !theApp.ddrawUseVideoMemory; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoDdrawusevideomemory(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.ddrawUseVideoMemory); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsD3dnofilter() rlm@1: { rlm@1: theApp.d3dFilter = 0; rlm@1: if (theApp.display) rlm@1: theApp.display->setOption("d3dFilter", 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsD3dnofilter(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.d3dFilter == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsD3dbilinear() rlm@1: { rlm@1: theApp.d3dFilter = 1; rlm@1: if (theApp.display) rlm@1: theApp.display->setOption("d3dFilter", 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsD3dbilinear(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.d3dFilter == 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsGlnearest() rlm@1: { rlm@1: theApp.glFilter = 0; rlm@1: if (theApp.display) rlm@1: theApp.display->setOption("glFilter", 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsGlnearest(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.glFilter == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsGlbilinear() rlm@1: { rlm@1: theApp.glFilter = 1; rlm@1: if (theApp.display) rlm@1: theApp.display->setOption("glFilter", 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsGlbilinear(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.glFilter == 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsGltriangle() rlm@1: { rlm@1: theApp.glType = 0; rlm@1: if (theApp.display) rlm@1: theApp.display->setOption("glType", 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsGltriangle(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.glType == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsGlquads() rlm@1: { rlm@1: theApp.glType = 1; rlm@1: if (theApp.display) rlm@1: theApp.display->setOption("glType", 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsGlquads(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.glType == 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsSelectskin() rlm@1: {} rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsSelectskin(CCmdUI*pCmdUI) rlm@1: {} rlm@1: rlm@1: void MainWnd::OnOptionsVideoRenderoptionsSkin() rlm@1: {} rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoRenderoptionsSkin(CCmdUI*pCmdUI) rlm@1: {} rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorAssociate() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: Associate dlg; rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorDirectories() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: Directories dlg; rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorFilenamePreference(UINT nID) rlm@1: { rlm@1: theApp.filenamePreference = nID - ID_OPTIONS_PREFER_ARCHIVE_NAME; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorFilenamePreference(CCmdUI *pCmdUI) rlm@1: { rlm@1: pCmdUI->SetRadio(pCmdUI->m_nID == theApp.filenamePreference + ID_OPTIONS_PREFER_ARCHIVE_NAME); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoDisablestatusmessages() rlm@1: { rlm@1: theApp.disableStatusMessage = !theApp.disableStatusMessage; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoDisablestatusmessages(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.disableStatusMessage); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSynchronize() rlm@1: { rlm@1: synchronize = !synchronize; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSynchronize(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(synchronize); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorAlwaysOnTop() rlm@1: { rlm@1: theApp.alwaysOnTop = !theApp.alwaysOnTop; rlm@1: SetWindowPos((theApp.alwaysOnTop ? &wndTopMost : &wndNoTopMost), 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorAlwaysOnTop(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.alwaysOnTop); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorPausewheninactive() rlm@1: { rlm@1: theApp.pauseWhenInactive = !theApp.pauseWhenInactive; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorPausewheninactive(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.pauseWhenInactive); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorEnableBackgroundInput() rlm@1: { rlm@1: theApp.enableBackgroundInput = !theApp.enableBackgroundInput; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorEnableBackgroundInput(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.enableBackgroundInput); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsPriority(UINT nID) rlm@1: { rlm@1: switch (nID) rlm@1: { rlm@1: case ID_OPTIONS_PRIORITY_HIGHEST: rlm@1: theApp.threadPriority = 0; rlm@1: break; rlm@1: case ID_OPTIONS_PRIORITY_ABOVENORMAL: rlm@1: theApp.threadPriority = 1; rlm@1: break; rlm@1: case ID_OPTIONS_PRIORITY_NORMAL: rlm@1: theApp.threadPriority = 2; rlm@1: break; rlm@1: case ID_OPTIONS_PRIORITY_BELOWNORMAL: rlm@1: theApp.threadPriority = 3; rlm@1: break; rlm@1: default: rlm@1: return FALSE; rlm@1: } rlm@1: theApp.updatePriority(); rlm@1: rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsPriority(CCmdUI *pCmdUI) rlm@1: { rlm@1: switch (pCmdUI->m_nID) rlm@1: { rlm@1: case ID_OPTIONS_PRIORITY_HIGHEST: rlm@1: pCmdUI->SetCheck(theApp.threadPriority == 0); rlm@1: break; rlm@1: case ID_OPTIONS_PRIORITY_ABOVENORMAL: rlm@1: pCmdUI->SetCheck(theApp.threadPriority == 1); rlm@1: break; rlm@1: case ID_OPTIONS_PRIORITY_NORMAL: rlm@1: pCmdUI->SetCheck(theApp.threadPriority == 2); rlm@1: break; rlm@1: case ID_OPTIONS_PRIORITY_BELOWNORMAL: rlm@1: pCmdUI->SetCheck(theApp.threadPriority == 3); rlm@1: break; rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSpeeduptoggle() rlm@1: { rlm@1: theApp.speedupToggle = !theApp.speedupToggle; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSpeeduptoggle(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.speedupToggle); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorRemoveintrosgba() rlm@1: { rlm@1: // theApp.removeIntros = !theApp.removeIntros; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorRemoveintrosgba(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(false); rlm@1: // pCmdUI->SetCheck(theApp.removeIntros); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorAutomaticallyipspatch() rlm@1: { rlm@1: theApp.autoIPS = !theApp.autoIPS; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorAutomaticallyipspatch(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.autoIPS); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorAgbprint() rlm@1: { rlm@1: agbPrintEnable(!agbPrintIsEnabled()); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorAgbprint(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(agbPrintIsEnabled()); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorRealtimeclock() rlm@1: { rlm@1: theApp.winRtcEnable = !theApp.winRtcEnable; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorRealtimeclock(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winRtcEnable); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorAutohidemenu() rlm@1: { rlm@1: theApp.autoHideMenu = !theApp.autoHideMenu; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorAutohidemenu(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.autoHideMenu); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorRewindinterval() rlm@1: { rlm@1: RewindInterval dlg((float)theApp.rewindTimer/6.0f, theApp.rewindSlots); rlm@1: int v = dlg.DoModal(); rlm@1: rlm@1: if (v >= 0) rlm@1: { rlm@1: int interval = v & 0x0000ffff; rlm@1: int slots = (v & 0xffff0000) >> 16; rlm@1: rlm@1: int prevSlots = theApp.rewindSlots; rlm@1: rlm@1: theApp.rewindTimer = interval; // already converted to a multiple of 10 frames rlm@1: theApp.rewindSlots = slots; rlm@1: if (interval == 0 || slots == 0) rlm@1: { rlm@1: theApp.rewindTimer = theApp.rewindSlots = 0; rlm@1: regSetDwordValue("rewindTimer", interval); rlm@1: regSetDwordValue("rewindSlots", slots); rlm@1: if (theApp.rewindMemory) rlm@1: free(theApp.rewindMemory); rlm@1: theApp.rewindMemory = NULL; rlm@1: theApp.rewindCount = 0; rlm@1: theApp.rewindCounter = 0; rlm@1: theApp.rewindSaveNeeded = false; rlm@1: } rlm@1: else rlm@1: { rlm@1: regSetDwordValue("rewindTimer", interval); rlm@1: regSetDwordValue("rewindSlots", slots); rlm@1: if (slots != prevSlots) rlm@1: { rlm@1: if (theApp.rewindMemory) rlm@1: free(theApp.rewindMemory); rlm@1: theApp.rewindMemory = NULL; rlm@1: theApp.rewindPos = 0; rlm@1: } rlm@1: if (theApp.rewindMemory == NULL) rlm@1: theApp.rewindMemory = (char *)malloc(theApp.rewindSlots*REWIND_SIZE); rlm@1: theApp.rewindCount = 0; rlm@1: theApp.rewindSaveNeeded = true; rlm@1: } rlm@1: } rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsEmulatorShowSpeed(UINT nID) rlm@1: { rlm@1: switch (nID) rlm@1: { rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_NONE: rlm@1: theApp.showSpeed = 0; rlm@1: systemSetTitle(VBA_NAME_AND_VERSION); rlm@1: break; rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_PERCENTAGE: rlm@1: theApp.showSpeed = 1; rlm@1: break; rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_DETAILED: rlm@1: theApp.showSpeed = 2; rlm@1: break; rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_TRANSPARENT: rlm@1: theApp.showSpeedTransparent = !theApp.showSpeedTransparent; rlm@1: break; rlm@1: default: rlm@1: return FALSE; rlm@1: } rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorShowSpeed(CCmdUI *pCmdUI) rlm@1: { rlm@1: switch (pCmdUI->m_nID) rlm@1: { rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_NONE: rlm@1: pCmdUI->SetCheck(theApp.showSpeed == 0); rlm@1: break; rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_PERCENTAGE: rlm@1: pCmdUI->SetCheck(theApp.showSpeed == 1); rlm@1: break; rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_DETAILED: rlm@1: pCmdUI->SetCheck(theApp.showSpeed == 2); rlm@1: break; rlm@1: case ID_OPTIONS_EMULATOR_SHOWSPEED_TRANSPARENT: rlm@1: pCmdUI->SetCheck(theApp.showSpeedTransparent); rlm@1: break; rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeAutomatic() rlm@1: { rlm@1: theApp.winSaveType = 0; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeAutomatic(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winSaveType == 0); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeEeprom() rlm@1: { rlm@1: theApp.winSaveType = 1; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeEeprom(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winSaveType == 1); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeSram() rlm@1: { rlm@1: theApp.winSaveType = 2; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeSram(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winSaveType == 2); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeFlash() rlm@1: { rlm@1: theApp.winSaveType = 3; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeFlash(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winSaveType == 3); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeEepromsensor() rlm@1: { rlm@1: theApp.winSaveType = 4; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeEepromsensor(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winSaveType == 4); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeNone() rlm@1: { rlm@1: theApp.winSaveType = 5; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeNone(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winSaveType == 5); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeFlash512k() rlm@1: { rlm@1: flashSetSize(0x10000); rlm@1: theApp.winFlashSize = 0x10000; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeFlash512k(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winFlashSize == 0x10000); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSavetypeFlash1m() rlm@1: { rlm@1: flashSetSize(0x20000); rlm@1: theApp.winFlashSize = 0x20000; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSavetypeFlash1m(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winFlashSize == 0x20000); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorUsebiosfile() rlm@1: { rlm@1: if (!theApp.biosFileName.IsEmpty()) rlm@1: theApp.useBiosFile = !theApp.useBiosFile; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorUsebiosfile(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.useBiosFile); rlm@1: pCmdUI->Enable(!theApp.biosFileName.IsEmpty() && (!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL))); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSkipbios() rlm@1: { rlm@1: theApp.skipBiosFile = !theApp.skipBiosFile; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorSkipbios(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.skipBiosFile); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorUseOldGBTiming() rlm@1: { rlm@1: useOldFrameTiming = !useOldFrameTiming; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorUseOldGBTiming(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(useOldFrameTiming); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorUseGBNullInputKludge() rlm@1: { rlm@1: if (VBAMovieActive()) rlm@1: gbNullInputHackTempEnabled = !gbNullInputHackTempEnabled; rlm@1: else rlm@1: gbNullInputHackTempEnabled = gbNullInputHackEnabled = !gbNullInputHackEnabled; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorUseGBNullInputKludge(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(VBAMovieActive() || GetAsyncKeyState(VK_CONTROL) ? gbNullInputHackTempEnabled : gbNullInputHackEnabled); rlm@1: pCmdUI->Enable((!VBAMovieActive() && !useOldFrameTiming) || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorGBALag() rlm@1: { rlm@1: extern void TogglePrefetchHack(); rlm@1: TogglePrefetchHack(); rlm@1: memLagEnabled = memLagTempEnabled; // memLagEnabled is only to hold the last value that the user chose, so temporary changes rlm@1: // don't get into the registry rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorGBALag(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(!memLagTempEnabled); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorSelectbiosfile() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: LPCTSTR exts[] = { NULL }; rlm@1: CString filter = winResLoadFilter(IDS_FILTER_BIOS); rlm@1: CString title = winResLoadString(IDS_SELECT_BIOS_FILE); rlm@1: rlm@1: FileDlg dlg(this, rlm@1: theApp.biosFileName, rlm@1: filter, rlm@1: 0, rlm@1: "BIOS", rlm@1: exts, rlm@1: "", rlm@1: title, rlm@1: false); rlm@1: rlm@1: if (dlg.DoModal() == IDOK) rlm@1: { rlm@1: theApp.biosFileName = dlg.GetPathName(); rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorPngformat() rlm@1: { rlm@1: theApp.captureFormat = 0; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorPngformat(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.captureFormat == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsEmulatorBmpformat() rlm@1: { rlm@1: theApp.captureFormat = 1; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsEmulatorBmpformat(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.captureFormat == 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundDisable() rlm@1: { rlm@1: if (soundOffFlag) rlm@1: { rlm@1: soundOffFlag = false; rlm@1: soundInit(); rlm@1: } rlm@1: else rlm@1: { rlm@1: soundOffFlag = true; rlm@1: soundShutdown(); rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundDisable(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundOffFlag); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: static void OnSoundToggleEnabled(int c) rlm@1: { rlm@1: if (soundGetEnabledChannels() & c) rlm@1: { rlm@1: soundDisableChannels(c); rlm@1: } rlm@1: else rlm@1: { rlm@1: soundEnableChannels(c); rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundMute() rlm@1: { rlm@1: if ((soundGetEnabledChannels() & 0x030f) == 0) rlm@1: soundEnableChannels(0x030f); rlm@1: else rlm@1: soundDisableChannels(0x030f); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundMute(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck((soundGetEnabledChannels() & 0x030f) == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundOff() rlm@1: { rlm@1: soundDisableChannels(0x030f); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundOff(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck((soundGetEnabledChannels() & 0x030f) == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundOn() rlm@1: { rlm@1: soundEnableChannels(0x030f); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundOn(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundGetEnabledChannels() == 0x030f); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundUseoldsynchronization() rlm@1: { rlm@1: theApp.useOldSync = !theApp.useOldSync; rlm@1: systemMessage(IDS_SETTING_WILL_BE_EFFECTIVE, rlm@1: "Setting will be effective the next time you start the emulator"); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundUseoldsynchronization(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.useOldSync); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundEcho() rlm@1: { rlm@1: soundEcho = !soundEcho; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundEcho(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundEcho); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundLowpassfilter() rlm@1: { rlm@1: soundLowPass = !soundLowPass; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundLowpassfilter(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundLowPass); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundReversestereo() rlm@1: { rlm@1: soundReverse = !soundReverse; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundReversestereo(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundReverse); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundMuteFrameAdvance() rlm@1: { rlm@1: theApp.muteFrameAdvance = !theApp.muteFrameAdvance; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundMuteFrameAdvance(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.muteFrameAdvance); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundMuteWhenInactive() rlm@1: { rlm@1: theApp.muteWhenInactive = !theApp.muteWhenInactive; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundMuteWhenInactive(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.muteWhenInactive); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSound11khz() rlm@1: { rlm@1: if (systemCartridgeType == 0) rlm@1: soundSetQuality(4); rlm@1: else rlm@1: gbSoundSetQuality(4); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSound11khz(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundQuality == 4); rlm@1: pCmdUI->Enable((!VBAMovieActive() || rlm@1: GetAsyncKeyState(VK_CONTROL)) && !(theApp.soundRecording || theApp.aviRecording || theApp.nvAudioLog)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSound22khz() rlm@1: { rlm@1: if (systemCartridgeType == 0) rlm@1: soundSetQuality(2); rlm@1: else rlm@1: gbSoundSetQuality(2); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSound22khz(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundQuality == 2); rlm@1: pCmdUI->Enable((!VBAMovieActive() || rlm@1: GetAsyncKeyState(VK_CONTROL)) && !(theApp.soundRecording || theApp.aviRecording || theApp.nvAudioLog)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSound44khz() rlm@1: { rlm@1: systemSoundSetQuality(1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSound44khz(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundQuality == 1); rlm@1: pCmdUI->Enable(!(theApp.soundRecording || theApp.aviRecording || theApp.nvAudioLog)); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsSoundVolume(UINT nID) rlm@1: { rlm@1: soundVolume = nID - ID_OPTIONS_SOUND_VOLUME_1X; rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundVolume(CCmdUI *pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundVolume == (int)(pCmdUI->m_nID - ID_OPTIONS_SOUND_VOLUME_1X)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundVolume25x() rlm@1: { rlm@1: soundVolume = 4; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundVolume25x(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundVolume == 4); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundVolume5x() rlm@1: { rlm@1: soundVolume = 5; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundVolume5x(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundVolume == 5); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundChannel1() rlm@1: { rlm@1: OnSoundToggleEnabled(0x01); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundChannel1(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundGetEnabledChannels() & 0x01); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundChannel2() rlm@1: { rlm@1: OnSoundToggleEnabled(0x02); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundChannel2(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundGetEnabledChannels() & 0x02); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundChannel3() rlm@1: { rlm@1: OnSoundToggleEnabled(0x04); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundChannel3(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundGetEnabledChannels() & 0x04); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundChannel4() rlm@1: { rlm@1: OnSoundToggleEnabled(0x08); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundChannel4(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundGetEnabledChannels() & 0x08); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundDirectsounda() rlm@1: { rlm@1: OnSoundToggleEnabled(0x0100); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundDirectsounda(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundGetEnabledChannels() & 0x0100); rlm@1: //pCmdUI->Enable(systemCartridgeType == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsSoundDirectsoundb() rlm@1: { rlm@1: OnSoundToggleEnabled(0x0200); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsSoundDirectsoundb(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(soundGetEnabledChannels() & 0x0200); rlm@1: //pCmdUI->Enable(systemCartridgeType == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyBorder() rlm@1: { rlm@1: theApp.winGbBorderOn = !theApp.winGbBorderOn; rlm@1: gbBorderOn = theApp.winGbBorderOn; rlm@1: if (emulating && systemCartridgeType == 1 && gbBorderOn) rlm@1: { rlm@1: gbSgbRenderBorder(); rlm@1: } rlm@1: theApp.updateWindowSize(theApp.videoOption); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyBorder(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.winGbBorderOn); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyPrinter() rlm@1: { rlm@1: theApp.winGbPrinterEnabled = !theApp.winGbPrinterEnabled; rlm@1: if (theApp.winGbPrinterEnabled) rlm@1: gbSerialFunction = gbPrinterSend; rlm@1: else rlm@1: gbSerialFunction = NULL; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyPrinter(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbSerialFunction == gbPrinterSend); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyBorderAutomatic() rlm@1: { rlm@1: gbBorderAutomatic = !gbBorderAutomatic; rlm@1: if (emulating && systemCartridgeType == 1 && gbBorderOn) rlm@1: { rlm@1: gbSgbRenderBorder(); rlm@1: theApp.updateWindowSize(theApp.videoOption); rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyBorderAutomatic(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbBorderAutomatic); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyAutomatic() rlm@1: { rlm@1: gbEmulatorType = 0; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyAutomatic(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbEmulatorType == 0); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyGba() rlm@1: { rlm@1: gbEmulatorType = 4; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyGba(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbEmulatorType == 4); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyCgb() rlm@1: { rlm@1: gbEmulatorType = 1; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyCgb(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbEmulatorType == 1); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboySgb() rlm@1: { rlm@1: gbEmulatorType = 2; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboySgb(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbEmulatorType == 2); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboySgb2() rlm@1: { rlm@1: gbEmulatorType = 5; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboySgb2(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbEmulatorType == 5); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyGb() rlm@1: { rlm@1: gbEmulatorType = 3; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyGb(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbEmulatorType == 3); rlm@1: pCmdUI->Enable(!VBAMovieActive() || GetAsyncKeyState(VK_CONTROL)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyRealcolors() rlm@1: { rlm@1: gbColorOption = 0; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyRealcolors(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbColorOption == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyGameboycolors() rlm@1: { rlm@1: gbColorOption = 1; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsGameboyGameboycolors(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(gbColorOption == 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsGameboyColors() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: GBColorDlg dlg; rlm@1: if (dlg.DoModal()) rlm@1: { rlm@1: gbPaletteOption = dlg.getWhich(); rlm@1: memcpy(systemGbPalette, dlg.getColors(), 24*sizeof(u16)); rlm@1: if (emulating && systemCartridgeType == 1) rlm@1: { rlm@1: memcpy(gbPalette, &systemGbPalette[dlg.getWhich()*8], 8*sizeof(u16)); rlm@1: } rlm@1: } rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsFilter(UINT nID) rlm@1: { rlm@1: switch (nID) rlm@1: { rlm@1: case ID_OPTIONS_FILTER_NORMAL: rlm@1: theApp.filterType = 0; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_TVMODE: rlm@1: theApp.filterType = 1; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_2XSAI: rlm@1: theApp.filterType = 2; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_SUPER2XSAI: rlm@1: theApp.filterType = 3; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_SUPEREAGLE: rlm@1: theApp.filterType = 4; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL: rlm@1: theApp.filterType = 5; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_MOTIONBLUREXPERIMENTAL: rlm@1: theApp.filterType = 6; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_ADVANCEMAMESCALE2X: rlm@1: theApp.filterType = 7; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_SIMPLE2X: rlm@1: theApp.filterType = 8; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_BILINEAR: rlm@1: theApp.filterType = 9; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_BILINEARPLUS: rlm@1: theApp.filterType = 10; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_SCANLINES: rlm@1: theApp.filterType = 11; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ2X2: rlm@1: theApp.filterType = 12; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ2X: rlm@1: theApp.filterType = 13; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_LQ2X: rlm@1: theApp.filterType = 14; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ3X2: rlm@1: theApp.filterType = 15; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ3X: rlm@1: theApp.filterType = 16; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_SIMPLE3X: rlm@1: theApp.filterType = 17; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_SIMPLE4X: rlm@1: theApp.filterType = 18; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL3X: rlm@1: theApp.filterType = 19; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL4X: rlm@1: theApp.filterType = 20; rlm@1: break; rlm@1: default: rlm@1: return FALSE; rlm@1: } rlm@1: theApp.updateFilter(); rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFilter(CCmdUI *pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(systemColorDepth == 16 || systemColorDepth == 32); rlm@1: switch (pCmdUI->m_nID) rlm@1: { rlm@1: case ID_OPTIONS_FILTER_NORMAL: rlm@1: pCmdUI->SetCheck(theApp.filterType == 0); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_TVMODE: rlm@1: pCmdUI->SetCheck(theApp.filterType == 1); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_2XSAI: rlm@1: pCmdUI->SetCheck(theApp.filterType == 2); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_SUPER2XSAI: rlm@1: pCmdUI->SetCheck(theApp.filterType == 3); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_SUPEREAGLE: rlm@1: pCmdUI->SetCheck(theApp.filterType == 4); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL: rlm@1: pCmdUI->SetCheck(theApp.filterType == 5); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_MOTIONBLUREXPERIMENTAL: rlm@1: pCmdUI->SetCheck(theApp.filterType == 6); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_ADVANCEMAMESCALE2X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 7); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_SIMPLE2X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 8); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_BILINEAR: rlm@1: pCmdUI->SetCheck(theApp.filterType == 9); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_BILINEARPLUS: rlm@1: pCmdUI->SetCheck(theApp.filterType == 10); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_SCANLINES: rlm@1: pCmdUI->SetCheck(theApp.filterType == 11); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ2X2: rlm@1: pCmdUI->SetCheck(theApp.filterType == 12); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ2X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 13); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_LQ2X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 14); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ3X2: rlm@1: pCmdUI->SetCheck(theApp.filterType == 15); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_HQ3X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 16); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_SIMPLE3X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 17); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_SIMPLE4X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 18); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL3X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 19); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL4X: rlm@1: pCmdUI->SetCheck(theApp.filterType == 20); rlm@1: break; rlm@1: } rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsFilterIFB(UINT nID) rlm@1: { rlm@1: switch (nID) rlm@1: { rlm@1: case ID_OPTIONS_FILTER_INTERFRAMEBLENDING_NONE: rlm@1: theApp.ifbType = 0; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_INTERFRAMEBLENDING_MOTIONBLUR: rlm@1: theApp.ifbType = 1; rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_INTERFRAMEBLENDING_SMART: rlm@1: theApp.ifbType = 2; rlm@1: break; rlm@1: default: rlm@1: return FALSE; rlm@1: } rlm@1: theApp.updateIFB(); rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFilterIFB(CCmdUI *pCmdUI) rlm@1: { rlm@1: switch (pCmdUI->m_nID) rlm@1: { rlm@1: case ID_OPTIONS_FILTER_INTERFRAMEBLENDING_NONE: rlm@1: pCmdUI->SetCheck(theApp.ifbType == 0); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_INTERFRAMEBLENDING_MOTIONBLUR: rlm@1: pCmdUI->SetCheck(theApp.ifbType == 1); rlm@1: break; rlm@1: case ID_OPTIONS_FILTER_INTERFRAMEBLENDING_SMART: rlm@1: pCmdUI->SetCheck(theApp.ifbType == 2); rlm@1: break; rlm@1: } rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsFilterDisablemmx() rlm@1: { rlm@1: theApp.disableMMX = !theApp.disableMMX; rlm@1: if (!theApp.disableMMX) rlm@1: cpu_mmx = theApp.detectMMX(); rlm@1: else rlm@1: cpu_mmx = 0; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsFilterDisablemmx(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.disableMMX); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsLanguageSystem() rlm@1: { rlm@1: theApp.winSetLanguageOption(0, false); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsLanguageSystem(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.languageOption == 0); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsLanguageEnglish() rlm@1: { rlm@1: theApp.winSetLanguageOption(1, false); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsLanguageEnglish(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.languageOption == 1); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsLanguageOther() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: theApp.winSetLanguageOption(2, false); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsLanguageOther(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.languageOption == 2); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsJoypadConfigure1() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: JoypadConfig dlg(0); rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadConfigure1(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.videoOption != VIDEO_320x240); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsJoypadConfigure2() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: JoypadConfig dlg(1); rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadConfigure2(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.videoOption != VIDEO_320x240); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsJoypadConfigure3() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: JoypadConfig dlg(2); rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadConfigure3(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.videoOption != VIDEO_320x240); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsJoypadConfigure4() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: JoypadConfig dlg(3); rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadConfigure4(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.videoOption != VIDEO_320x240); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsJoypadDefault(UINT nID) rlm@1: { rlm@1: theApp.joypadDefault = nID - ID_OPTIONS_JOYPAD_DEFAULTJOYPAD_1; rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadDefault(CCmdUI *pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.joypadDefault == (int)(pCmdUI->m_nID - ID_OPTIONS_JOYPAD_DEFAULTJOYPAD_1)); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsJoypadMotionconfigure() rlm@1: { rlm@1: theApp.winCheckFullscreen(); rlm@1: MotionConfig dlg; rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadMotionconfigure(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(theApp.videoOption != VIDEO_320x240); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsJoypadAllowLeftRight() rlm@1: { rlm@1: theApp.allowLeftRight = !theApp.allowLeftRight; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadAllowLeftRight(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.allowLeftRight); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsJoypadAutofireAccountForLag() rlm@1: { rlm@1: theApp.autofireAccountForLag = !theApp.autofireAccountForLag; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadAutofireAccountForLag(CCmdUI*pCmdUI) rlm@1: { rlm@1: pCmdUI->SetCheck(theApp.autofireAccountForLag); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsJoypadAutofire(UINT nID) rlm@1: { rlm@1: int & autoFire = (theApp.autoFireToggle ? theApp.autoFire : theApp.autoFire2); rlm@1: int & autoFire2 = (theApp.autoFireToggle ? theApp.autoFire2 : theApp.autoFire); rlm@1: int autoFires = (theApp.autoFire | theApp.autoFire2); rlm@1: rlm@1: switch (nID) rlm@1: { rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_A: rlm@1: if (autoFires & BUTTON_MASK_A) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_A; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_A_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_A; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_A)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_A; rlm@1: theApp.autoHold &= ~BUTTON_MASK_A; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_B: rlm@1: if (autoFires & BUTTON_MASK_B) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_B; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_B_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_B; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_B)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_B; rlm@1: theApp.autoHold &= ~BUTTON_MASK_B; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_L: rlm@1: if (autoFires & BUTTON_MASK_L) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_L; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_L_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_L; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_L)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_L; rlm@1: theApp.autoHold &= ~BUTTON_MASK_L; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_R: rlm@1: if (autoFires & BUTTON_MASK_R) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_R; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_R_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_R; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_R)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_R; rlm@1: theApp.autoHold &= ~BUTTON_MASK_R; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_START: rlm@1: if (autoFires & BUTTON_MASK_START) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_START; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_START_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_START; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_START)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_START; rlm@1: theApp.autoHold &= ~BUTTON_MASK_START; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_SELECT: rlm@1: if (autoFires & BUTTON_MASK_SELECT) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_SELECT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_SELECT_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_SELECT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_SELECT)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_SELECT; rlm@1: theApp.autoHold &= ~BUTTON_MASK_SELECT; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_UP: rlm@1: if (autoFires & BUTTON_MASK_UP) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_UP; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_UP_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_UP; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_UP)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_UP; rlm@1: theApp.autoHold &= ~BUTTON_MASK_UP; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_DOWN: rlm@1: if (autoFires & BUTTON_MASK_DOWN) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_DOWN; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_DOWN_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_DOWN; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_DOWN)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_DOWN; rlm@1: theApp.autoHold &= ~BUTTON_MASK_DOWN; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_LEFT: rlm@1: if (autoFires & BUTTON_MASK_LEFT) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_LEFT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_LEFT_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_LEFT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_LEFT)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_LEFT; rlm@1: theApp.autoHold &= ~BUTTON_MASK_LEFT; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_RIGHT: rlm@1: if (autoFires & BUTTON_MASK_RIGHT) rlm@1: { rlm@1: autoFire &= ~BUTTON_MASK_RIGHT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_RIGHT_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: autoFire |= BUTTON_MASK_RIGHT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_RIGHT)); rlm@1: } rlm@1: autoFire2 &= ~BUTTON_MASK_RIGHT; rlm@1: theApp.autoHold &= ~BUTTON_MASK_RIGHT; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_CLEAR: rlm@1: if (autoFires != 0) rlm@1: { rlm@1: theApp.autoFire = theApp.autoFire2 = 0; rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: /// systemScreenMessage(winResLoadString(IDS_AUTOFIRE_ALREADY_DISABLED)); rlm@1: systemScreenMessage("already cleared"); rlm@1: } rlm@1: break; rlm@1: default: rlm@1: return FALSE; rlm@1: } rlm@1: rlm@1: extern void VBAUpdateButtonPressDisplay(); VBAUpdateButtonPressDisplay(); rlm@1: rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadAutofire(CCmdUI *pCmdUI) rlm@1: { rlm@1: /// pCmdUI->Enable(emulating); // FIXME: this is right, but disabling menu items screws up accelerators until you view the rlm@1: // menu! rlm@1: pCmdUI->Enable(TRUE); // TEMP rlm@1: rlm@1: int autoFires = (theApp.autoFire | theApp.autoFire2); rlm@1: rlm@1: bool check = true; rlm@1: switch (pCmdUI->m_nID) rlm@1: { rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_A: rlm@1: check = (autoFires & BUTTON_MASK_A) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_B: rlm@1: check = (autoFires & BUTTON_MASK_B) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_L: rlm@1: check = (autoFires & BUTTON_MASK_L) != 0; rlm@1: /// extern int gbSgbMode; // from gbSGB.cpp rlm@1: /// if(emulating && systemCartridgeType != 0 && !gbSgbMode) // regular GB has no L button rlm@1: /// pCmdUI->Enable(false); // FIXME: this is right, but disabling menu items screws up accelerators until you view the rlm@1: // menu! rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_R: rlm@1: check = (autoFires & BUTTON_MASK_R) != 0; rlm@1: /// extern int gbSgbMode; // from gbSGB.cpp rlm@1: /// if(emulating && systemCartridgeType != 0 && !gbSgbMode) // regular GB has no R button rlm@1: /// pCmdUI->Enable(false); // FIXME: this is right, but disabling menu items screws up accelerators until you view the rlm@1: // menu! rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_START: rlm@1: check = (autoFires & BUTTON_MASK_START) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_SELECT: rlm@1: check = (autoFires & BUTTON_MASK_SELECT) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_UP: rlm@1: check = (autoFires & BUTTON_MASK_UP) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_DOWN: rlm@1: check = (autoFires & BUTTON_MASK_DOWN) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_LEFT: rlm@1: check = (autoFires & BUTTON_MASK_LEFT) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_RIGHT: rlm@1: check = (autoFires & BUTTON_MASK_RIGHT) != 0; rlm@1: break; rlm@1: case ID_OPTIONS_JOYPAD_AUTOFIRE_CLEAR: rlm@1: check = (autoFires == 0); rlm@1: /// pCmdUI->Enable(!check); // FIXME: this is right, but disabling menu items screws up accelerators until you view the menu! rlm@1: break; rlm@1: } rlm@1: pCmdUI->SetCheck(check); rlm@1: } rlm@1: rlm@1: BOOL MainWnd::OnOptionsJoypadSticky(UINT nID) rlm@1: { rlm@1: switch (nID) rlm@1: { rlm@1: case ID_STICKY_A: rlm@1: if (theApp.autoHold & BUTTON_MASK_A) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_A; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_A_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_A; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_A)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_A; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_A; rlm@1: break; rlm@1: case ID_STICKY_B: rlm@1: if (theApp.autoHold & BUTTON_MASK_B) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_B; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_B_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_B; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_B)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_B; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_B; rlm@1: break; rlm@1: case ID_STICKY_L: rlm@1: if (theApp.autoHold & BUTTON_MASK_L) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_L; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_L_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_L; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_L)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_L; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_L; rlm@1: break; rlm@1: case ID_STICKY_R: rlm@1: if (theApp.autoHold & BUTTON_MASK_R) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_R; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_R_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_R; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_R)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_R; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_R; rlm@1: break; rlm@1: case ID_STICKY_START: rlm@1: if (theApp.autoHold & BUTTON_MASK_START) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_START; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_START_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_START; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_START)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_START; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_START; rlm@1: break; rlm@1: case ID_STICKY_SELECT: rlm@1: if (theApp.autoHold & BUTTON_MASK_SELECT) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_SELECT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_SELECT_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_SELECT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_SELECT)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_SELECT; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_SELECT; rlm@1: break; rlm@1: case ID_STICKY_UP: rlm@1: if (theApp.autoHold & BUTTON_MASK_UP) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_UP; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_UP_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_UP; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_UP)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_UP; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_UP; rlm@1: if (!theApp.allowLeftRight) rlm@1: theApp.autoHold &= ~BUTTON_MASK_DOWN; rlm@1: break; rlm@1: case ID_STICKY_DOWN: rlm@1: if (theApp.autoHold & BUTTON_MASK_DOWN) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_DOWN; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_DOWN_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_DOWN; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_DOWN)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_DOWN; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_DOWN; rlm@1: if (!theApp.allowLeftRight) rlm@1: theApp.autoHold &= ~BUTTON_MASK_UP; rlm@1: break; rlm@1: case ID_STICKY_LEFT: rlm@1: if (theApp.autoHold & BUTTON_MASK_LEFT) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_LEFT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_LEFT_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_LEFT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_LEFT)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_LEFT; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_LEFT; rlm@1: if (!theApp.allowLeftRight) rlm@1: theApp.autoHold &= ~BUTTON_MASK_RIGHT; rlm@1: break; rlm@1: case ID_STICKY_RIGHT: rlm@1: if (theApp.autoHold & BUTTON_MASK_RIGHT) rlm@1: { rlm@1: theApp.autoHold &= ~BUTTON_MASK_RIGHT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_RIGHT_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: theApp.autoHold |= BUTTON_MASK_RIGHT; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_RIGHT)); rlm@1: } rlm@1: theApp.autoFire &= ~BUTTON_MASK_RIGHT; rlm@1: theApp.autoFire2 &= ~BUTTON_MASK_RIGHT; rlm@1: if (!theApp.allowLeftRight) rlm@1: theApp.autoHold &= ~BUTTON_MASK_LEFT; rlm@1: break; rlm@1: case ID_STICKY_CLEAR: rlm@1: if (theApp.autoHold != 0) rlm@1: { rlm@1: theApp.autoHold = 0; rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_DISABLED)); rlm@1: } rlm@1: else rlm@1: { rlm@1: /// systemScreenMessage(winResLoadString(IDS_STICKY_ALREADY_DISABLED)); rlm@1: systemScreenMessage("already cleared"); rlm@1: } rlm@1: break; rlm@1: default: rlm@1: return FALSE; rlm@1: } rlm@1: rlm@1: extern void VBAUpdateButtonPressDisplay(); VBAUpdateButtonPressDisplay(); rlm@1: rlm@1: return TRUE; rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsJoypadSticky(CCmdUI *pCmdUI) rlm@1: { rlm@1: /// pCmdUI->Enable(emulating); // FIXME: this is right, but disabling menu items screws up accelerators until you view the rlm@1: // menu! rlm@1: pCmdUI->Enable(TRUE); // TEMP rlm@1: rlm@1: bool check = true; rlm@1: switch (pCmdUI->m_nID) rlm@1: { rlm@1: case ID_STICKY_A: rlm@1: check = (theApp.autoHold & BUTTON_MASK_A) != 0; rlm@1: break; rlm@1: case ID_STICKY_B: rlm@1: check = (theApp.autoHold & BUTTON_MASK_B) != 0; rlm@1: break; rlm@1: case ID_STICKY_L: rlm@1: check = (theApp.autoHold & BUTTON_MASK_L) != 0; rlm@1: /// extern int gbSgbMode; // from gbSGB.cpp rlm@1: /// if(emulating && systemCartridgeType != 0 && !gbSgbMode) // regular GB has no L button rlm@1: /// pCmdUI->Enable(false); // FIXME: this is right, but disabling menu items screws up accelerators until you view the rlm@1: // menu! rlm@1: break; rlm@1: case ID_STICKY_R: rlm@1: check = (theApp.autoHold & BUTTON_MASK_R) != 0; rlm@1: /// extern int gbSgbMode; // from gbSGB.cpp rlm@1: /// if(emulating && systemCartridgeType != 0 && !gbSgbMode) // regular GB has no R button rlm@1: /// pCmdUI->Enable(false); // FIXME: this is right, but disabling menu items screws up accelerators until you view the rlm@1: // menu! rlm@1: break; rlm@1: case ID_STICKY_START: rlm@1: check = (theApp.autoHold & BUTTON_MASK_START) != 0; rlm@1: break; rlm@1: case ID_STICKY_SELECT: rlm@1: check = (theApp.autoHold & BUTTON_MASK_SELECT) != 0; rlm@1: break; rlm@1: case ID_STICKY_UP: rlm@1: check = (theApp.autoHold & BUTTON_MASK_UP) != 0; rlm@1: break; rlm@1: case ID_STICKY_DOWN: rlm@1: check = (theApp.autoHold & BUTTON_MASK_DOWN) != 0; rlm@1: break; rlm@1: case ID_STICKY_LEFT: rlm@1: check = (theApp.autoHold & BUTTON_MASK_LEFT) != 0; rlm@1: break; rlm@1: case ID_STICKY_RIGHT: rlm@1: check = (theApp.autoHold & BUTTON_MASK_RIGHT) != 0; rlm@1: break; rlm@1: case ID_STICKY_CLEAR: rlm@1: check = (theApp.autoHold == 0); rlm@1: /// pCmdUI->Enable(!check); // FIXME: this is right, but disabling menu items screws up accelerators until you view the menu! rlm@1: break; rlm@1: } rlm@1: pCmdUI->SetCheck(check); rlm@1: } rlm@1: rlm@1: LRESULT MainWnd::OnConfirmMode(WPARAM, LPARAM) rlm@1: { rlm@1: // we need to do this separately or the window will not have the right rlm@1: // parent. must be related to the way MFC does modal dialogs rlm@1: winConfirmMode(); rlm@1: return 0; rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoFullscreenmaxscale() rlm@1: { rlm@1: MaxScale dlg; rlm@1: rlm@1: theApp.winCheckFullscreen(); rlm@1: rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnOptionsVideoTextdisplayoptions() rlm@1: { rlm@1: TextOptions dlg; rlm@1: rlm@1: theApp.winCheckFullscreen(); rlm@1: rlm@1: dlg.DoModal(); rlm@1: } rlm@1: rlm@1: void MainWnd::OnUpdateOptionsVideoTextdisplayoptions(CCmdUI *pCmdUI) rlm@1: { rlm@1: pCmdUI->Enable(TRUE); rlm@1: } rlm@1: