void OutVMSave::flush() { extern const char *gGameName; extern Icon icon; if(committed >= pos) return; char *data = buffer, *compbuf = NULL; int len = pos; if(pos) { // Try compression compbuf = new char[pos]; unsigned long destlen = pos; if(!compress((Bytef*)compbuf, &destlen, (Bytef*)buffer, pos)) { data = compbuf; len = destlen; } } vmsaveResult r = writeSaveGame(gGameName, data, len, filename, icon); committed = pos; if(compbuf != NULL) delete[] compbuf; if(r != VMSAVE_OK) iofailed = true; displaySaveResult(r); }
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); } }