int StatedLoad(int nSlot) { TCHAR szFilter[1024]; int nRet; int bOldPause; if (nSlot) { CreateStateName(nSlot); } else { if (bDrvOkay) { _stprintf(szChoice, _T("%s*.fs"), BurnDrvGetText(DRV_NAME)); } else { _stprintf(szChoice, _T("savestate")); } MakeOfn(szFilter); ofn.lpstrTitle = FBALoadStringEx(hAppInst, IDS_STATE_LOAD, true); bOldPause = bRunPause; bRunPause = 1; nRet = GetOpenFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { // Error return 1; } } nRet = BurnStateLoad(szChoice, 1, &DrvInitCallback); if (nSlot) { return nRet; } // Describe any possible errors: if (nRet == 3) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_UNAVAIL)); } else { if (nRet == 4) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_TOOOLD), _T(APP_TITLE)); } else { if (nRet == 5) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_TOONEW), _T(APP_TITLE)); } else { if (nRet && !nSlot) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_LOAD)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_STATE)); } } } } if (nRet) { FBAPopupDisplay(PUF_TYPE_ERROR); } return nRet; }
int WaveLogStart() { TCHAR szFilter[1024]; int nRet; int bOldPause; WaveLogStop(); // make sure old log is closed MakeOfn(szFilter); bOldPause = bRunPause; bRunPause = 1; nRet = GetSaveFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { return 1; } { WaveLog=_tfopen(szChoice,_T("wb")); if (WaveLog==NULL) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_CREATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_SOUND)); FBAPopupDisplay(PUF_TYPE_ERROR); return 1; } WaveLogHeaderStart(WaveLog,nAudSampleRate[nAudSelect]); } MenuEnableItems(); return 0; }
int MemCardCreate() { TCHAR szFilter[1024]; int nRet; _stprintf(szFilter, FBALoadStringEx(hAppInst, IDS_DISK_FILE_CARD, true), _T(APP_TITLE)); memcpy(szFilter + _tcslen(szFilter), _T(" (*.fc)\0*.fc\0\0"), 14 * sizeof(TCHAR)); _stprintf (szMemoryCardFile, _T("memorycard")); MakeOfn(); ofn.lpstrTitle = FBALoadStringEx(hAppInst, IDS_MEMCARD_CREATE, true); ofn.lpstrFilter = szFilter; ofn.Flags |= OFN_OVERWRITEPROMPT; int bOldPause = bRunPause; bRunPause = 1; nRet = GetSaveFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { return 1; } { unsigned char* pCard; MemCardGetSize(); pCard = (unsigned char*)malloc(nMemoryCardSize); memset(pCard, 0, nMemoryCardSize); bMemCardFC1Format = true; if (MemCardWrite(szMemoryCardFile, pCard, nMemoryCardSize)) { return 1; } if (pCard) { free(pCard); pCard = NULL; } } nMemoryCardStatus = 1; MenuEnableItems(); return 0; }
int FBALocaliseCreateTemplate() { _stprintf(szChoice, _T("template")); MakeOfn(); ofn.lpstrTitle = _T("Create localisation template"); ofn.Flags |= OFN_OVERWRITEPROMPT; int bOldPause = bRunPause; bRunPause = 1; int nRet = GetSaveFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { return 1; } return FBALocaliseWriteTemplate(szChoice); }
int FBALocaliseLoadTemplate() { _stprintf(szChoice, _T("template")); MakeOfn(); ofn.lpstrTitle = _T("Select localisation template"); ofn.Flags |= OFN_OVERWRITEPROMPT; int bOldPause = bRunPause; bRunPause = 1; int nRet = GetOpenFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { return 1; } return FBALocaliseInit(szChoice); }
int MemCardSelect() { TCHAR szFilter[1024]; TCHAR* pszTemp = szFilter; int nRet; pszTemp += _stprintf(pszTemp, FBALoadStringEx(hAppInst, IDS_DISK_ALL_CARD, true)); memcpy(pszTemp, _T(" (*.fc, MEMCARD.\?\?\?)\0*.fc;MEMCARD.\?\?\?\0"), 38 * sizeof(TCHAR)); pszTemp += 38; pszTemp += _stprintf(pszTemp, FBALoadStringEx(hAppInst, IDS_DISK_FILE_CARD, true), _T(APP_TITLE)); memcpy(pszTemp, _T(" (*.fc)\0*.fc\0"), 13 * sizeof(TCHAR)); pszTemp += 13; pszTemp += _stprintf(pszTemp, FBALoadStringEx(hAppInst, IDS_DISK_FILE_CARD, true), _T("MAME")); memcpy(pszTemp, _T(" (MEMCARD.\?\?\?)\0MEMCARD.\?\?\?\0\0"), 28 * sizeof(TCHAR)); MakeOfn(); ofn.lpstrTitle = FBALoadStringEx(hAppInst, IDS_MEMCARD_SELECT, true); ofn.lpstrFilter = szFilter; int bOldPause = bRunPause; bRunPause = 1; nRet = GetOpenFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { return 1; } MemCardGetSize(); if (nMemoryCardSize <= 0) { return 1; } nMemoryCardStatus = 1; MenuEnableItems(); return 0; }
int SelectPlaceHolder() { int nRet; int bOldPause; MakeOfn(); ofn.lpstrTitle = FBALoadStringEx(hAppInst, IDS_PLACEHOLDER_LOAD, true); bOldPause = bRunPause; bRunPause = 1; nRet = GetOpenFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { // Error return 1; } szPlaceHolder[0] = _T('\0'); memcpy(szPlaceHolder, szChoice, sizeof(szChoice)); return nRet; }
int StatedSave(int nSlot) { TCHAR szFilter[1024]; int nRet; int bOldPause; if (bDrvOkay == 0) { return 1; } if (nSlot) { CreateStateName(nSlot); } else { _stprintf(szChoice, _T("%s"), BurnDrvGetText(DRV_NAME)); MakeOfn(szFilter); ofn.lpstrTitle = FBALoadStringEx(hAppInst, IDS_STATE_SAVE, true); ofn.Flags |= OFN_OVERWRITEPROMPT; bOldPause = bRunPause; bRunPause = 1; nRet = GetSaveFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { // Error return 1; } } nRet = BurnStateSave(szChoice, 1); if (nRet && !nSlot) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_CREATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_STATE)); FBAPopupDisplay(PUF_TYPE_ERROR); } return nRet; }
static BOOL CALLBACK RecordDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) { if (Msg == WM_INITDIALOG) { // come up with a unique name WCHAR szPath[_MAX_PATH]; WCHAR szFilename[_MAX_PATH]; int i = 0; wsprintf(szFilename, L"%s.mar", _AtoT(machine->basename())); wcscpy(szPath, szFilename); while(VerifyRecordingAccessMode(szPath, 0) == 1) { wsprintf(szFilename, L"%s-%d.mar", _AtoT(machine->basename()), ++i); wcscpy(szPath, szFilename); } SetDlgItemText(hDlg, IDC_FILENAME, szFilename); // SetDlgItemTextW(hDlg, IDC_METADATA, L""); // CheckDlgButton(hDlg, IDC_REPLAYRESET, BST_CHECKED); VerifyRecordingFilename(hDlg); // SetFocus(GetDlgItem(hDlg, IDC_METADATA)); return FALSE; } if (Msg == WM_COMMAND) { if (HIWORD(wParam) == EN_CHANGE) { VerifyRecordingFilename(hDlg); } else { int wID = LOWORD(wParam); switch (wID) { case IDC_BROWSE: { wsprintf(szChoice, L"%s", _AtoT(machine->basename())); MakeOfn(szFilter); ofn.lpstrTitle = L"Record Input to File"; ofn.Flags |= OFN_OVERWRITEPROMPT; int nRet = GetSaveFileName(&ofn); if (nRet != 0) { // this should trigger an EN_CHANGE message SetDlgItemText(hDlg, IDC_FILENAME, szChoice); } } return TRUE; case IDOK: GetDlgItemText(hDlg, IDC_FILENAME, szChoice, _MAX_PATH); // GetDlgItemTextW(hDlg, IDC_METADATA, wszMetadata, MAX_METADATA); // bStartFromReset = false; // if (BST_CHECKED == SendDlgItemMessage(hDlg, IDC_REPLAYRESET, BM_GETCHECK, 0, 0)) { // bStartFromReset = true; // } // wszMetadata[MAX_METADATA-1] = L'\0'; // ensure a relative path has the "inp\" path in prepended to it GetRecordingPath(szChoice); EndDialog(hDlg, 1); return TRUE; case IDCANCEL: szChoice[0] = '\0'; EndDialog(hDlg, 0); return FALSE; } } } return FALSE; }
static BOOL CALLBACK ReplayDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM) { if (Msg == WM_INITDIALOG) { WCHAR szFindPath[_MAX_PATH]; WIN32_FIND_DATA wfd; HANDLE hFind; int i = 0; SendDlgItemMessage(hDlg, IDC_READONLY, BM_SETCHECK, BST_UNCHECKED, 0); memset(&wfd, 0, sizeof(WIN32_FIND_DATA)); wsprintf(szFindPath, L"inp\\%s*.mar", _AtoT(machine->basename())); hFind = FindFirstFile(szFindPath, &wfd); if (hFind != INVALID_HANDLE_VALUE) { do { if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_INSERTSTRING, i++, (LPARAM)wfd.cFileName); } while(FindNextFile(hFind, &wfd)); FindClose(hFind); } SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_INSERTSTRING, i, (LPARAM)L"Browse..."); SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_SETCURSEL, i, 0); if (i>0) { SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_SETCURSEL, i-1, 0); DisplayReplayProperties(hDlg, false); } SetFocus(GetDlgItem(hDlg, IDC_CHOOSE_LIST)); return FALSE; } if (Msg == WM_COMMAND) { if (HIWORD(wParam) == CBN_SELCHANGE) { LONG lCount = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETCOUNT, 0, 0); LONG lIndex = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETCURSEL, 0, 0); if (lIndex != CB_ERR) { DisplayReplayProperties(hDlg, (lIndex == lCount - 1)); // Selecting "Browse..." will clear the replay properties display } } else if (HIWORD(wParam) == CBN_CLOSEUP) { LONG lCount = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETCOUNT, 0, 0); LONG lIndex = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETCURSEL, 0, 0); if (lIndex != CB_ERR) { if (lIndex == lCount - 1) { // send an OK notification to open the file browser SendMessage(hDlg, WM_COMMAND, (WPARAM)IDOK, 0); } } } else { int wID = LOWORD(wParam); switch (wID) { case IDOK: { LONG lCount = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETCOUNT, 0, 0); LONG lIndex = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_GETCURSEL, 0, 0); if (lIndex != CB_ERR) { if (lIndex == lCount - 1) { MakeOfn(szFilter); ofn.lpstrTitle = L"Replay Input from File"; ofn.Flags &= ~OFN_HIDEREADONLY; int nRet = GetOpenFileName(&ofn); if (nRet != 0) { LONG lOtherIndex = SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_FINDSTRING, (WPARAM)-1, (LPARAM)szChoice); if (lOtherIndex != CB_ERR) { // select already existing string SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_SETCURSEL, lOtherIndex, 0); } else { SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_INSERTSTRING, lIndex, (LPARAM)szChoice); SendDlgItemMessage(hDlg, IDC_CHOOSE_LIST, CB_SETCURSEL, lIndex, 0); } // restore focus to the dialog SetFocus(GetDlgItem(hDlg, IDC_CHOOSE_LIST)); DisplayReplayProperties(hDlg, false); if (ofn.Flags & OFN_READONLY) { SendDlgItemMessage(hDlg, IDC_READONLY, BM_SETCHECK, BST_CHECKED, 0); } else { SendDlgItemMessage(hDlg, IDC_READONLY, BM_SETCHECK, BST_UNCHECKED, 0); } } } else { // get readonly status bReplayReadOnly = false; if (BST_CHECKED == SendDlgItemMessage(hDlg, IDC_READONLY, BM_GETCHECK, 0, 0)) { bReplayReadOnly = true; } EndDialog(hDlg, 1); // only allow OK if a valid selection was made } } } return TRUE; case IDCANCEL: szChoice[0] = '\0'; EndDialog(hDlg, 0); return FALSE; } } } return FALSE; }