Exemple #1
0
static int iffdrv_write_file_header_memmap(int x_size, int y_size, BYTE *palette)
{
  BYTE header[836];
  int i;
  int totalsize;

  memset(header, 0, sizeof(header));

  iffdrv_memmap_iff_rowbytes=((x_size+15)>>4)<<1;

  totalsize=828+(iffdrv_memmap_iff_rowbytes*y_size*8);

  header[0]='F';
  header[1]='O';
  header[2]='R';
  header[3]='M';
  util_dword_to_be_buf(&header[4], totalsize);
  header[8]='I';
  header[9]='L';
  header[10]='B';
  header[11]='M';
  header[12]='B';
  header[13]='M';
  header[14]='H';
  header[15]='D';
  util_dword_to_be_buf(&header[16], 20);
  util_word_to_be_buf(&header[20],(WORD)(x_size));
  util_word_to_be_buf(&header[22],(WORD)(y_size));
  header[28]=8;
  util_word_to_be_buf(&header[36],(WORD)(x_size));
  util_word_to_be_buf(&header[38],(WORD)(y_size));
  header[40]='C';
  header[41]='M';
  header[42]='A';
  header[43]='P';
  util_dword_to_be_buf(&header[44],3*256);

  for (i = 0; i < 256; i++)
  {
    header[48+(i*3)]=palette[i*3];
    header[49+(i*3)]=palette[(i*3)+1];
    header[50+(i*3)]=palette[(i*3)+2];
  }
  header[816]='C';
  header[817]='A';
  header[818]='M';
  header[819]='G';
  util_dword_to_be_buf(&header[820],4);
  header[828]='B';
  header[829]='O';
  header[830]='D';
  header[831]='Y';
  util_dword_to_be_buf(&header[832],iffdrv_memmap_iff_rowbytes*y_size*8);

  if (fwrite(header,836,1,iffdrv_memmap_fd)<1)
    return -1;

  return 0;
}
Exemple #2
0
/*
    Create crt file with header, return NULL on fault, fd otherwise
*/
FILE *crt_create(const char *filename, int type, int exrom, int game, const char *name)
{
    BYTE crt_header[0x40];
    FILE *fd;

    if (filename == NULL) {
        return NULL;
    }

    fd = fopen(filename, MODE_WRITE);

    if (fd == NULL) {
        return NULL;
    }

    memset(&crt_header, 0, sizeof(crt_header));
    memcpy(crt_header, CRT_HEADER, 16);
    util_dword_to_be_buf(&crt_header[0x10], sizeof(crt_header));
    util_word_to_be_buf(&crt_header[0x14], 0x100); /* version */
    util_word_to_be_buf(&crt_header[0x16], (WORD)type);
    crt_header[0x18] = exrom ? 1 : 0;
    crt_header[0x19] = game ? 1 : 0;
    strncpy((char*)&crt_header[0x20], name, sizeof(crt_header) - 0x20);

    if (fwrite(crt_header, sizeof(crt_header), 1, fd) < 1) {
        fclose(fd);
        return NULL;
    }

    return fd;
}
Exemple #3
0
/*
    Write chip header and data, return -1 on fault
*/
int crt_write_chip(BYTE *data, crt_chip_header_t *header, FILE *fd)
{
    BYTE chipheader[0x10];

    memcpy(chipheader, CHIP_HEADER, 4);
    util_dword_to_be_buf(&chipheader[4], header->size + sizeof(chipheader));
    util_word_to_be_buf(&chipheader[8], header->type);
    util_word_to_be_buf(&chipheader[10], header->bank);
    util_word_to_be_buf(&chipheader[12], header->start);
    util_word_to_be_buf(&chipheader[14], header->size);

    if (fwrite(chipheader, sizeof(chipheader), 1, fd) < 1) {
        return -1; /* could not write chip header */
    }

    if (fwrite(data, header->size, 1, fd) < 1) {
        return -1; /* could not write chip content */
    }

    return 0;
}
Exemple #4
0
static int iffdrv_write_file_header(screenshot_t *screenshot)
{
  gfxoutputdrv_data_t *sdata;
  BYTE header[836];
  int i;
  int totalsize;

  memset(header, 0, sizeof(header));

  sdata = screenshot->gfxoutputdrv_data;

  sdata->iff_rowbytes=((screenshot->width+15)>>4)<<1;

  totalsize=828+(sdata->iff_rowbytes*screenshot->height*8);

  header[0]='F';
  header[1]='O';
  header[2]='R';
  header[3]='M';
  util_dword_to_be_buf(&header[4], totalsize);
  header[8]='I';
  header[9]='L';
  header[10]='B';
  header[11]='M';
  header[12]='B';
  header[13]='M';
  header[14]='H';
  header[15]='D';
  util_dword_to_be_buf(&header[16], 20);
  util_word_to_be_buf(&header[20],(WORD)(screenshot->width));
  util_word_to_be_buf(&header[22],(WORD)(screenshot->height));
  header[28]=8;
  util_word_to_be_buf(&header[36],(WORD)(screenshot->width));
  util_word_to_be_buf(&header[38],(WORD)(screenshot->height));
  header[40]='C';
  header[41]='M';
  header[42]='A';
  header[43]='P';
  util_dword_to_be_buf(&header[44],3*256);

  for (i = 0; i < 256; i++)
  {
    header[48+(i*3)]=screenshot->palette->entries[i].red;
    header[49+(i*3)]=screenshot->palette->entries[i].green;
    header[50+(i*3)]=screenshot->palette->entries[i].blue;
  }
  header[816]='C';
  header[817]='A';
  header[818]='M';
  header[819]='G';
  util_dword_to_be_buf(&header[820],4);
  header[828]='B';
  header[829]='O';
  header[830]='D';
  header[831]='Y';
  util_dword_to_be_buf(&header[832],sdata->iff_rowbytes*screenshot->height*8);

  if (fwrite(header,836,1,sdata->fd)<1)
    return -1;

  return 0;
}