コード例 #1
0
ファイル: memcard.cpp プロジェクト: Pa0l0ne/fbanext
int	MemCardToggle()
{
	if (nMemoryCardStatus & 1) {
		if (nMemoryCardStatus & 2) {
			return MemCardEject();
		} else {
			return MemCardInsert();
		}
	}

	return 1;
}
コード例 #2
0
ファイル: drv.cpp プロジェクト: coca8cola/iFBA
int DrvExit()
{
	if (bDrvOkay) {
		StopReplay();

		VidExit();

		InvalidateRect(hScrnWnd, NULL, 1);
		UpdateWindow(hScrnWnd);			// Blank screen window

		DestroyWindow(hInpdDlg);		// Make sure the Input Dialog is exited
		DestroyWindow(hInpDIPSWDlg);	// Make sure the DipSwitch Dialog is exited
		DestroyWindow(hInpCheatDlg);	// Make sure the Cheat Dialog is exited

		if (nBurnDrvActive < nBurnDrvCount) {
			MemCardEject();				// Eject memory card if present

			if (bSaveRAM) {
				StatedAuto(1);			// Save NV (or full) RAM
				bSaveRAM = false;
			}

			ConfigGameSave(bSaveInputs);

			GameInpExit();				// Exit game input
			
			BurnDrvExit();				// Exit the driver
		}
	}

	BurnExtLoadRom = NULL;

	bDrvOkay = 0;					// Stop using the BurnDrv functions

	bRunPause = 0;					// Don't pause when exitted

	if (bAudOkay) {
		// Write silence into the sound buffer on exit, and for drivers which don't use pBurnSoundOut
		memset(nAudNextSound, 0, nAudSegLen << 2);
	}
	
	CDEmuExit();

	BurnExtCartridgeSetupCallback = NULL;

	nBurnDrvActive = ~0U;			// no driver selected

	return 0;
}
コード例 #3
0
static void onCommand(HWND hDlg, int id, HWND /*hwndCtl*/, UINT codeNotify)
{
    if (bLoading) {
        return;
    }

    switch (id) {
    case MENU_LOAD:
        HK_openGame(0);
        break;

    case MENU_LOAD_QUICK:
        HK_quickOpenGame(0);
        break;

    case MENU_QUIT:
        HK_exitGame(0);
        break;

    case MENU_EXIT:
        StopReplay();
        AviStop();
        FBA_KailleraEnd();
        PostQuitMessage(0);

        menuSync(MENUT_ALL);
        return;

    case MENU_PAUSE:
        HK_pause(0);
        break;

    case MENU_CARTR_MOUNT:
        mountCartridge(true);
        menuSync(MENUT_FILE);
        break;

    case MENU_CARTR_UNMOUNT:
        mountCartridge(false);
        menuSync(MENUT_FILE);
        break;

    case MENU_STARTNET:
        if (!kNetGame) {
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
            audio.blank();
            SplashDestroy(1);
            StopReplay();
            AviStop();
            BurnerDrvExit();
            // load kaillera.dll
            if (FBA_KailleraInit()) {
                DoNetGame();
            }
            menuSync(MENUT_ALL);
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
        }
        break;

    case MENU_STARTREPLAY:
        HK_playRec(0);
        break;
    case MENU_STARTRECORD:
        HK_startRec(0);
        break;
    case MENU_STOPREPLAY:
        HK_stopRec(0);
        break;

    case MENU_AVISTART:
        HK_startAvi(0);
        break;
    case MENU_AVISTOP:
        HK_stopAvi(0);
        break;
    case MENU_AVIINTAUD:
        nAviIntAudio = !nAviIntAudio;
        menuSync(MENUT_FILE);
        break;

    case MENU_MEMCARD_CREATE:
        if (useDialogs() && bDrvOkay && !kNetGame
                && (BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO) {
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
            audio.blank();
            MemCardEject();
            MemCardCreate();
            MemCardInsert();
            menuSync(MENUT_FILE);
            GameInpCheckMouse();
        }
        break;
    case MENU_MEMCARD_SELECT:
        if (useDialogs() && bDrvOkay && !kNetGame
                && (BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO) {
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
            audio.blank();
            MemCardEject();
            MemCardSelect();
            MemCardInsert();
            menuSync(MENUT_FILE);
            GameInpCheckMouse();
        }
        break;
    case MENU_MEMCARD_INSERT:
        if (bDrvOkay && !kNetGame
                && (BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO) {
            MemCardInsert();
        }
        break;
    case MENU_MEMCARD_EJECT:
        if (bDrvOkay && !kNetGame
                && (BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO) {
            MemCardEject();
        }
        break;

    case MENU_MEMCARD_TOGGLE:
        if (bDrvOkay && !kNetGame
                && (BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO) {
            MemCardToggle();
        }
        break;

    case MENU_STATE_LOAD_DIALOG:
        HK_loadStateDialog(0);
        break;
    case MENU_STATE_SAVE_DIALOG:
        HK_saveStateDialog(0);
        return;
    case MENU_STATE_PREVSLOT:
        HK_prevState(0);
        break;
    case MENU_STATE_NEXTSLOT:
        HK_nextState(0);
        break;
    case MENU_STATE_LOAD_SLOT:
        HK_loadCurState(0);
        break;
    case MENU_STATE_SAVE_SLOT:
        HK_saveCurState(0);
        break;

    case MENU_STATE_ALLRAM:
        bDrvSaveAll = !bDrvSaveAll;
        menuSync(MENUT_FILE);
        break;

    case MENU_WLOGSTART:
        audio.blank();
        waveLogStart();
        break;
    case MENU_WLOGEND:
        audio.blank();
        waveLogStop();
        break;

    case MENU_NOSTRETCH:
        bVidCorrectAspect = 0;
        bVidFullStretch = 0;
        simpleReinitScrn(false);
        menuSync(MENUT_SETTING);
        break;
    case MENU_STRETCH:
        bVidFullStretch = 1;
        bVidCorrectAspect = 0;
        simpleReinitScrn(false);
        menuSync(MENUT_SETTING);
        break;
    case MENU_ASPECT:
        bVidCorrectAspect = 1;
        bVidFullStretch = 0;
        simpleReinitScrn(false);
        menuSync(MENUT_SETTING);
        break;

    case MENU_FULL:
        HK_fullscreen(0);
        return;

    case MENU_AUTOSIZE:
        if (nWindowSize != 0) {
            nWindowSize = 0;
            simpleReinitScrn(false);
            menuSync(MENUT_SETTING);
        }
        break;
    case MENU_WINDOWSIZE1X:
        HK_windowSize(1);
        break;
    case MENU_WINDOWSIZE2X:
        HK_windowSize(2);
        break;
    case MENU_WINDOWSIZE3X:
        HK_windowSize(3);
        break;
    case MENU_WINDOWSIZE4X:
        HK_windowSize(4);
        break;
    case MENU_WINDOWSIZEMAX:
        HK_windowSizeMax(0);
        break;

    case MENU_HOTKEYS:
        MHkeysCreate(hDlg);
        break;

    case MENU_INPUT:
        HK_configPad(0);
        break;

    case MENU_DIPSW:
        HK_setDips(0);
        break;

    case MENU_SETCPUCLOCK:
        audio.blank();
        CPUClockDialog(hDlg);
        menuSync(MENUT_GAME);
        GameInpCheckMouse();
        break;
    case MENU_RESETCPUCLOCK:
        nBurnCPUSpeedAdjust = 0x0100;
        menuSync(MENUT_GAME);
        break;

    // ==> rom save
    case MENU_SAVEC:
        bsavedecryptedcs = !bsavedecryptedcs;
        menuSync(MENUT_GAME);
        break;
    case MENU_SAVEP:
        bsavedecryptedps = !bsavedecryptedps;
        menuSync(MENUT_GAME);
        break;
    case MENU_SAVES:
        bsavedecrypteds1 = !bsavedecrypteds1;
        menuSync(MENUT_GAME);
        break;
    case MENU_SAVEV:
        bsavedecryptedvs = !bsavedecryptedvs;
        menuSync(MENUT_GAME);
        break;
    case MENU_SAVEM:
        bsavedecryptedm1 = !bsavedecryptedm1;
        menuSync(MENUT_GAME);
        break;
    case MENU_SAVEXOR:
        bsavedecryptedxor = !bsavedecryptedxor;
        menuSync(MENUT_GAME);
        break;
    case MENU_SAVEDPROM:
        bsavedecryptedprom = !bsavedecryptedprom;
        menuSync(MENUT_GAME);
        break;
    // <== rom save

    case MENU_LANGUAGE_SELECT:
        if (useDialogs()) {
            if (!FBALocaliseLoad()) {
                menuReinit();
            }
        }
        break;
    case MENU_LANGUAGE_UNLOAD:
        _tcsncpy(szLanguage, _T(""), sizearray(szLanguage));
        FBALocaliseExit();
        menuReinit();
        break;

    case MENU_GAMELIST_SELECT:
        if (useDialogs()) {
            loadGamelist();
        }
        break;
    case MENU_GAMELIST_EXPORT:
        if (useDialogs()) {
            createGamelist();
        }
        break;

    case MENU_MISCDIR_EDIT:
        if (useDialogs()) {
            pathSheetCreate(hDlg);
        }
        break;
    case MENU_ROMDIR_EDIT:
        if (useDialogs()) {
            RomsDirCreate(hDlg);
        }
        break;

    case MENU_ENABLECHEAT:
        HK_cheatEditor(0);
        break;

#ifndef NO_CHEATSEARCH
    case MENU_CHEATSEARCH:
        HK_cheatSearch(0);
        break;
#endif

    // ==> simple jukebox, added by regret
    case MENU_JUKEBOX:
        if (useDialogs()) {
            jukeCreate();
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
        }
        break;
    // <== simple jukebox

    case MENU_DEBUG:
        if (useDialogs()) {
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
            DebugCreate();
        }
        break;

    case MENU_SAVESNAP: {
        HK_screenShot(0);
        break;
    }
    case MENU_SNAPFACT:
        HK_shotFactory(0);
        break;

    case MENU_SKIN_SELECT:
        if (useDialogs()) {
            if (selectSkin() == 0) {
                simpleReinitScrn(true);
            }
        }
        break;
    case MENU_SKIN_UNLOAD:
        _tcsncpy(szPlaceHolder, _T(""), sizearray(szPlaceHolder));
        simpleReinitScrn(true);
        break;

    case MENU_CLRMAMEPRO_XML:
        if (useDialogs()) {
            createDatfileWindows(1);
        }
        break;
    case MENU_CLRMAME_PRO:
        if (useDialogs()) {
            createDatfileWindows(0);
        }
        break;

    case MENU_SAVESET:
        configAppSaveXml();
        break;
    case MENU_LOADSET:
        configAppLoadXml();
        POST_INITIALISE_MESSAGE;
        break;

    case MENU_ABOUT:
        if (useDialogs()) {
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
            audio.blank();
            AboutCreate(hDlg);
            GameInpCheckMouse();
        }
        break;
    case MENU_SYSINFO:
        if (useDialogs()) {
            InputSetCooperativeLevel(false, !bAlwaysProcessKey);
            audio.blank();
            SystemInfoCreate(hDlg);
            GameInpCheckMouse();
        }
        break;

    case MENU_CONTENTS: {
        if (useDialogs()) {
            FILE* fp = _tfopen(_T("readme.txt"), _T("r"));
            if (fp) {
                fclose(fp);
                ShellExecute(NULL, _T("open"), _T("readme.txt"), NULL, NULL, SW_SHOWNORMAL);
            }
        }
        break;
    }

    case MENU_WWW_HOME:
        ShellExecute(NULL, _T("open"), _T("http://www.barryharris.me.uk/"), NULL, NULL, SW_SHOWNORMAL);
        break;
    case MENU_WWW_FORUM:
        ShellExecute(NULL, _T("open"), _T("http://neosource.1emulation.com/forums/"), NULL, NULL, SW_SHOWNORMAL);
        break;
    case MENU_WWW_FORUM1:
        ShellExecute(NULL, _T("open"), _T("http://www.egcg.com.cn/bbs/"), NULL, NULL, SW_SHOWNORMAL);
        break;

    // filters
    case MENU_SOFT_NONE:
        vidUseFilter = 0;
        nVidFilter = 0;
        VidReinit();
        menuSync(MENUT_SETTING);
        break;

    case MENU_SOFT_EPXB:
    case MENU_SOFT_EPXC:
    case MENU_SOFT_SCALE2X:
    case MENU_SOFT_SCALE3X:
    case MENU_SOFT_2XSAI:
    case MENU_SOFT_SUPER2XSAI:
    case MENU_SOFT_SUPEREAGLE:
    case MENU_SOFT_2XPMHQ:
    case MENU_SOFT_HQ2X:
    case MENU_SOFT_HQ2XS:
    case MENU_SOFT_HQ2XBOLD:
    case MENU_SOFT_HQ3X:
    case MENU_SOFT_HQ3XS:
    case MENU_SOFT_HQ3XBOLD:
    case MENU_SOFT_SCANLINE:
    case MENU_SOFT_SCANLINE50:
    case MENU_SOFT_SCANLINE25:
    case MENU_SOFT_INTERSCANLINE:
    case MENU_SOFT_INTERSCANLINE50:
    case MENU_SOFT_INTERSCANLINE25:
        vidUseFilter = 1;
        nVidFilter = id - MENU_SOFT_NONE;
        scrnSize();
        VidSwitchFilter(nVidFilter);
        menuSync(MENUT_SETTING);
        break;

    case MENU_FILTER_AUTOSIZE:
        vidForceFilterSize = !vidForceFilterSize;
        simpleReinitScrn(true);
        menuSync(MENUT_SETTING);
        break;

    // Options for blitters
    case MENU_FILTER_POINT:
        if (vidFilterLinear) {
            vidFilterLinear = 0;
            VidReinit();
            menuSync(MENUT_SETTING);
        }
        break;
    case MENU_FILTER_LINEAR:
        if (!vidFilterLinear) {
            vidFilterLinear = 1;
            VidReinit();
            menuSync(MENUT_SETTING);
        }
        break;

    case MENU_CONFIGALL:
        if (useDialogs()) {
            preferenceCreate(hDlg);
            setWindowAspect();
            menuReinit();
            simpleReinitScrn(true);
            mediaReInitAudio();
        }
        break;
    case MENU_VIDEOCONFIG:
        if (useDialogs()) {
            prefVideoCreate(hDlg);
            setWindowAspect();
            simpleReinitScrn(true);
        }
        break;
    case MENU_AUDIOCONFIG:
        if (useDialogs()) {
            prefAudioCreate(hDlg);
            mediaReInitAudio();
        }
        break;
    case MENU_MISCCONFIG:
        if (useDialogs()) {
            prefMiscCreate(hDlg);
            menuReinit();
            VidReinit();
        }
        break;

//		default:
//			printf("  * Command %i sent.\n");
    }

    if (ChatActivated()) {
        switch (codeNotify) {
        case EN_CHANGE: {
            bEditTextChanged = true;
            SendMessage(GetChatWindow(), WM_GETTEXT, (WPARAM)MAX_CHAT_SIZE + 1, (LPARAM)EditText);
            break;
        }
        case EN_KILLFOCUS: {
            ActivateChat();
            break;
        }
        case EN_MAXTEXT: {
            VidSNewShortMsg(FBALoadStringEx(IDS_NETPLAY_TOOMUCH), 0xFF3F3F);
            break;
        }
        }
    }
}