Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
  }
}