void MainWnd::OnCheatsSavecheatlist() { CString buffer; CString filename; int index = theApp.filename.ReverseFind('\\'); if(index != -1) buffer = theApp.filename.Right(theApp.filename.GetLength()-index-1); else buffer = theApp.filename; CString saveDir = regQueryStringValue(_T("saveDir"), NULL); if(saveDir.IsEmpty()) saveDir = getDirFromFile(theApp.filename); if(isDriveRoot(saveDir)) filename.Format(_T("%s%s.clt"), saveDir, buffer); else filename.Format(_T("%s\\%s.clt"), saveDir, buffer); LPCTSTR exts[] = { _T(".clt") }; CString filter = winLoadFilter(IDS_FILTER_CHEAT_LIST); CString title = winResLoadString(IDS_SELECT_CHEAT_LIST_NAME); FileDlg dlg(this, filename, filter, 0, _T("CLT"), exts, saveDir, title, true); if(dlg.DoModal() == IDOK) { winSaveCheatList(dlg.GetPathName()); } }
void MainWnd::writeBatteryFile() { CString buffer; CString filename; int index = theApp.filename.ReverseFind('\\'); if(index != -1) buffer = theApp.filename.Right(theApp.filename.GetLength()-index-1); else buffer = theApp.filename; CString saveDir = regQueryStringValue("batteryDir", NULL); if(saveDir.IsEmpty()) saveDir = getDirFromFile(theApp.filename); if(isDriveRoot(saveDir)) filename.Format("%s%s.sav", saveDir, buffer); else filename.Format("%s\\%s.sav", saveDir, buffer); if(theApp.emuWriteBattery) theApp.emuWriteBattery(filename); }
void MainWnd::readBatteryFile() { CString buffer; CString filename; int index = theApp.filename.ReverseFind('\\'); if(index != -1) buffer = theApp.filename.Right(theApp.filename.GetLength()-index-1); else buffer = theApp.filename; CString saveDir = regQueryStringValue("batteryDir", NULL); if(saveDir.IsEmpty()) saveDir = getDirFromFile(theApp.filename); if(isDriveRoot(saveDir)) filename.Format("%s%s.sav", saveDir, buffer); else filename.Format("%s\\%s.sav", saveDir, buffer); bool res = false; if(theApp.emuReadBattery) res = theApp.emuReadBattery(filename); if(res) systemScreenMessage(winResLoadString(IDS_LOADED_BATTERY)); }
void MainWnd::OnOptionsSoundStartrecording() { CString captureBuffer; CString capdir = regQueryStringValue("soundRecordDir", NULL); if(capdir.IsEmpty()) capdir = getDirFromFile(theApp.filename); CString filter = theApp.winLoadFilter(IDS_FILTER_WAV); CString title = winResLoadString(IDS_SELECT_WAV_NAME); LPCTSTR exts[] = { ".WAV" }; FileDlg dlg(this, "", filter, 1, "WAV", exts, capdir, title, true); if(dlg.DoModal() == IDCANCEL) { return; } captureBuffer = theApp.soundRecordName = dlg.GetPathName(); soundRecording = true; if(dlg.m_ofn.nFileOffset > 0) { captureBuffer = captureBuffer.Left(dlg.m_ofn.nFileOffset); } int len = captureBuffer.GetLength(); if(len > 3 && captureBuffer[len-1] == '\\') captureBuffer = captureBuffer.Left(len-1); regSetStringValue("soundRecordDir", captureBuffer); }
void MainWnd::writeBatteryFile() { CString buffer; CString filename; int index = theApp.filename.ReverseFind('\\'); if(index != -1) buffer = theApp.filename.Right(theApp.filename.GetLength()-index-1); else buffer = theApp.filename; CString saveDir = regQueryStringValue("batteryDir", NULL); if( saveDir[0] == '.' ) { // handle as relative path char baseDir[MAX_PATH+1]; GetModuleFileName( NULL, baseDir, MAX_PATH ); baseDir[MAX_PATH] = '\0'; // for security reasons PathRemoveFileSpec( baseDir ); // removes the trailing file name and backslash strcat( baseDir, "\\" ); strcat( baseDir, saveDir ); saveDir = baseDir; } if(saveDir.IsEmpty()) saveDir = getDirFromFile(theApp.filename); if(isDriveRoot(saveDir)) filename.Format("%s%s.sav", saveDir, buffer); else filename.Format("%s\\%s.sav", saveDir, buffer); if(theApp.emulator.emuWriteBattery) theApp.emulator.emuWriteBattery(MakeInstanceFilename((const char *)filename)); }
void MainWnd::winLoadCheatListDefault() { CString name; CString filename; int index = theApp.filename.ReverseFind('\\'); if(index != -1) name = theApp.filename.Right(theApp.filename.GetLength()-index-1); else name = theApp.filename; CString dir = regQueryStringValue("saveDir", NULL); if( dir[0] == '.' ) { // handle as relative path char baseDir[MAX_PATH+1]; GetModuleFileName( NULL, baseDir, MAX_PATH ); baseDir[MAX_PATH] = '\0'; // for security reasons PathRemoveFileSpec( baseDir ); // removes the trailing file name and backslash strcat( baseDir, "\\" ); strcat( baseDir, dir ); dir = baseDir; } if(!dir.GetLength()) dir = getDirFromFile(filename); if(isDriveRoot(dir)) filename.Format("%s%s.clt", dir, name); else filename.Format("%s\\%s.clt", dir, name); winLoadCheatList(filename); }
void MainWnd::screenCapture(int captureNumber) { CString buffer; CString captureDir = regQueryStringValue("captureDir", ""); if( captureDir[0] == '.' ) { // handle as relative path char baseDir[MAX_PATH+1]; GetModuleFileName( NULL, baseDir, MAX_PATH ); baseDir[MAX_PATH] = '\0'; // for security reasons PathRemoveFileSpec( baseDir ); // removes the trailing file name and backslash strcat( baseDir, "\\" ); strcat( baseDir, captureDir ); captureDir = baseDir; } int index = theApp.filename.ReverseFind('\\'); CString name; if(index != -1) name = theApp.filename.Right(theApp.filename.GetLength()-index-1); else name = theApp.filename; if(captureDir.IsEmpty()) captureDir = getDirFromFile(theApp.filename); LPCTSTR ext = "png"; if(theApp.captureFormat != 0) ext = "bmp"; if(isDriveRoot(captureDir)) buffer.Format("%s%s_%02d.%s", captureDir, name, captureNumber, ext); else buffer.Format("%s\\%s_%02d.%s", captureDir, name, captureNumber, ext); if( fileExists( buffer ) ) { // screenshot file already exists screenCapture(++captureNumber); // this will recursively use the first non-existent screenshot number return; } if(theApp.captureFormat == 0) theApp.emulator.emuWritePNG(buffer); else theApp.emulator.emuWriteBMP(buffer); CString msg = winResLoadString(IDS_SCREEN_CAPTURE); systemScreenMessage(msg); }
void MainWnd::OnToolsRecordStartmovierecording() { CString captureBuffer; CString capdir = regQueryStringValue("movieRecordDir", ""); if(capdir.IsEmpty()) capdir = getDirFromFile(theApp.filename); CString filter = theApp.winLoadFilter(IDS_FILTER_VMV); CString title = winResLoadString(IDS_SELECT_MOVIE_NAME); LPCTSTR exts[] = { ".VMV" }; FileDlg dlg(this, "", filter, 1, "VMV", exts, capdir, title, true); if(dlg.DoModal() == IDCANCEL) { return; } CString movieName = dlg.GetPathName(); captureBuffer = movieName; if(dlg.m_ofn.nFileOffset > 0) { captureBuffer = captureBuffer.Left(dlg.m_ofn.nFileOffset); } int len = captureBuffer.GetLength(); if(len > 3 && captureBuffer[len-1] == '\\') captureBuffer = captureBuffer.Left(len-1); regSetStringValue("movieRecordDir", captureBuffer); theApp.movieFile = fopen(movieName, "wb"); if(!theApp.movieFile) { systemMessage(IDS_CANNOT_OPEN_FILE, "Cannot open file %s", (const char *)movieName); return; } int version = 1; fwrite(&version, 1, sizeof(int), theApp.movieFile); movieName = movieName.Left(movieName.GetLength()-3) + "VM0"; if(writeSaveGame(movieName)) { movieFrame = 0; movieLastJoypad = 0; movieRecording = true; moviePlaying = false; } else { systemMessage(IDS_CANNOT_OPEN_FILE, "Cannot open file %s", (const char *)movieName); } }
void MainWnd::screenCapture(int captureNumber) { CString buffer; CString captureDir = regQueryStringValue("captureDir", ""); int index = theApp.filename.ReverseFind('\\'); CString name; if(index != -1) name = theApp.filename.Right(theApp.filename.GetLength()-index-1); else name = theApp.filename; if(captureDir.IsEmpty()) captureDir = getDirFromFile(theApp.filename); LPCTSTR ext = "png"; if(theApp.captureFormat != 0) ext = "bmp"; if(isDriveRoot(captureDir)) buffer.Format("%s%s_%02d.%s", captureDir, name, captureNumber, ext); else buffer.Format("%s\\%s_%02d.%s", captureDir, name, captureNumber, ext); if(theApp.captureFormat == 0) theApp.emuWritePNG(buffer); else theApp.emuWriteBMP(buffer); CString msg = winResLoadString(IDS_SCREEN_CAPTURE); systemScreenMessage(msg); }
void MainWnd::winLoadCheatListDefault() { CString name; CString filename; int index = theApp.filename.ReverseFind('\\'); if(index != -1) name = theApp.filename.Right(theApp.filename.GetLength()-index-1); else name = theApp.filename; CString dir = regQueryStringValue("saveDir", NULL); if(!dir.GetLength()) dir = getDirFromFile(filename); if(isDriveRoot(dir)) filename.Format("%s%s.clt", dir, name); else filename.Format("%s\\%s.clt", dir, name); winLoadCheatList(filename); }
void MainWnd::OnToolsPlayStartmovieplaying() { static bool moviePlayMessage = false; if(!moviePlayMessage) { moviePlayMessage = true; CString msg = winResLoadString(IDS_MOVIE_PLAY); CString title = winResLoadString(IDS_CONFIRM_ACTION); if(MessageBox(msg, title, MB_OKCANCEL) == IDCANCEL) return; } CString captureBuffer; CString capdir = regQueryStringValue("movieRecordDir", ""); if(capdir.IsEmpty()) capdir = getDirFromFile(theApp.filename); CString filter = theApp.winLoadFilter(IDS_FILTER_VMV); CString title = winResLoadString(IDS_SELECT_MOVIE_NAME); LPCTSTR exts[] = { ".VMV" }; FileDlg dlg(this, "", filter, 1, "VMV", exts, capdir, title, false); if(dlg.DoModal() == IDCANCEL) { return; } CString movieName = dlg.GetPathName(); captureBuffer = movieName; theApp.movieFile = fopen(movieName, "rb"); if(!theApp.movieFile) { systemMessage(IDS_CANNOT_OPEN_FILE, "Cannot open file %s", (const char *)movieName); return; } int version = 0; fread(&version, 1, sizeof(int), theApp.movieFile); if(version != 1) { systemMessage(IDS_UNSUPPORTED_MOVIE_VERSION, "Unsupported movie version %d.", version); fclose(theApp.movieFile); theApp.movieFile = NULL; return; } movieName = movieName.Left(movieName.GetLength()-3)+"VM0"; if(loadSaveGame(movieName)) { moviePlaying = true; movieFrame = 0; moviePlayFrame = 0; movieLastJoypad = 0; theApp.movieReadNext(); } else { systemMessage(IDS_CANNOT_OPEN_FILE, "Cannot open file %s", (const char *)movieName); } }
void MainWnd::OnToolsRecordStartavirecording() { CString captureBuffer; CString capdir = regQueryStringValue( "aviRecordDir", NULL ); if( capdir.IsEmpty() ) { capdir = getDirFromFile( theApp.filename ); } CString filter = theApp.winLoadFilter( IDS_FILTER_AVI ); CString title = winResLoadString( IDS_SELECT_AVI_NAME ); LPCTSTR exts[] = { ".AVI" }; FileDlg dlg( this, "", filter, 1, "AVI", exts, capdir, title, true ); if( dlg.DoModal() == IDCANCEL ) { return; } captureBuffer = theApp.soundRecordName = dlg.GetPathName(); theApp.aviRecordName = captureBuffer; aviRecording = true; if( dlg.m_ofn.nFileOffset > 0 ) { captureBuffer = captureBuffer.Left( dlg.m_ofn.nFileOffset ); } int len = captureBuffer.GetLength(); if( ( len > 3 ) && captureBuffer[ len - 1 ] == '\\' ) { captureBuffer = captureBuffer.Left( len - 1 ); } regSetStringValue( "aviRecordDir", captureBuffer ); // create AVI file bool ret; if( theApp.aviRecorder ) { delete theApp.aviRecorder; theApp.aviRecorder = NULL; } theApp.aviRecorder = new AVIWrite(); // create AVI file ret = theApp.aviRecorder->CreateAVIFile( theApp.aviRecordName ); if( !ret ) { systemMessage( IDS_AVI_CANNOT_CREATE_AVI, "Cannot create AVI file." ); delete theApp.aviRecorder; theApp.aviRecorder = NULL; aviRecording = false; return; } // add video stream ret = theApp.aviRecorder->CreateVideoStream( sizeX, sizeY, ( systemColorDepth == 32 ) ? 24 : 16, 60, this->GetSafeHwnd() ); if( !ret ) { systemMessage( IDS_AVI_CANNOT_CREATE_VIDEO, "Cannot create video stream in AVI file. Make sure the selected codec supports input in RGB24 color space!" ); delete theApp.aviRecorder; theApp.aviRecorder = NULL; aviRecording = false; return; } // add audio stream ret = theApp.aviRecorder->CreateAudioStream( 2, soundGetSampleRate(), 16, this->GetSafeHwnd() ); if( !ret ) { systemMessage( IDS_AVI_CANNOT_CREATE_AUDIO, "Cannot create audio stream in AVI file." ); delete theApp.aviRecorder; theApp.aviRecorder = NULL; aviRecording = false; return; } }