Ticket #1481: bs-binary-palette.diff

File bs-binary-palette.diff, 2.8 KB (added by eriktorbjorn, 20 years ago)

Patch against a February 22 branch snapshot

  • sword1/animation.cpp

    diff -ur --exclude=CVS ScummVM-0.6.0/sword1/animation.cpp ScummVM-0.6.0+hack/sword1/animation.cpp
    old new  
    6363        uint i, p;
    6464
    6565        // Load lookup palettes
    66         // TODO: Binary format so we can use File class
    6766        sprintf(tempFile, "%s.pal", basename);
    68         FILE *f = fopen(tempFile, "r");
     67        FILE f;
    6968
    70         if (!f) {
     69        if (!f.open(tempFile)) {
    7170                warning("Cutscene: %s.pal palette missing", basename);
    7271                return false;
    7372        }
    7473
    7574        p = 0;
    76         while (!feof(f)) {
    77                 int end, cnt;
    78 
     75        while (1) {
    7976                if (fscanf(f, "%i %i", &end, &cnt) != 2)
    8077                        break;
    8178
    82                 palettes[p].end = (uint) end;
    83                 palettes[p].cnt = (uint) cnt;
     79                palettes[p].end = f.readUint16LE();
     80                palettes[p].cnt = f.readUint16LE();
     81
     82                if (f.ioFailed())
     83                        break;
    8484
    8585                for (i = 0; i < palettes[p].cnt; i++) {
    86                         int r, g, b;
    87                         fscanf(f, "%i", &r);
    88                         fscanf(f, "%i", &g);
    89                         fscanf(f, "%i", &b);
    90                         palettes[p].pal[4 * i] = r;
    91                         palettes[p].pal[4 * i + 1] = g;
    92                         palettes[p].pal[4 * i + 2] = b;
     86                        palettes[p].pal[4 * i] = f.readByte();
     87                        palettes[p].pal[4 * i + 1] = f.readByte();
     88                        palettes[p].pal[4 * i + 2] = f.readByte();
    9389                        palettes[p].pal[4 * i + 3] = 0;
    9490                }
    9591                for (; i < 256; i++) {
     
    10096                }
    10197                p++;
    10298        }
    103         fclose(f);
     99        f.close();
    104100
    105101        palnum = 0;
    106102        maxPalnum = p;
  • sword2/driver/animation.cpp

    diff -ur --exclude=CVS ScummVM-0.6.0/sword2/driver/animation.cpp ScummVM-0.6.0+hack/sword2/driver/animation.cpp
    old new  
    6969        uint i, p;
    7070
    7171        // Load lookup palettes
    72         // TODO: Binary format so we can use File class
    73         sprintf(tempFile, "%s/%s.pal", _vm->getGameDataPath(), name);
    74         FILE *f = fopen(tempFile, "r");
     72        File f;
    7573
    76         if (!f) {
     74        sprintf(tempFile, "%s.pal", name);
     75        if (!f.open(tempFile)) {
    7776                warning("Cutscene: %s.pal palette missing", name);
    7877                return false;
    7978        }
    8079
    8180        p = 0;
    82         while (!feof(f)) {
    83                 int end, cnt;
     81        while (1) {
     82                palettes[p].end = f.readUint16LE();
     83                palettes[p].cnt = f.readUint16LE();
    8484
    85                 if (fscanf(f, "%i %i", &end, &cnt) != 2)
     85                if (f.ioFailed())
    8686                        break;
    8787
    88                 palettes[p].end = (uint) end;
    89                 palettes[p].cnt = (uint) cnt;
    90 
    9188                for (i = 0; i < palettes[p].cnt; i++) {
    92                         int r, g, b;
    93                         fscanf(f, "%i", &r);
    94                         fscanf(f, "%i", &g);
    95                         fscanf(f, "%i", &b);
    96                         palettes[p].pal[4 * i] = r;
    97                         palettes[p].pal[4 * i + 1] = g;
    98                         palettes[p].pal[4 * i + 2] = b;
     89                        palettes[p].pal[4 * i] = f.readByte();
     90                        palettes[p].pal[4 * i + 1] = f.readByte();
     91                        palettes[p].pal[4 * i + 2] = f.readByte();
    9992                        palettes[p].pal[4 * i + 3] = 0;
    10093                }
    10194                for (; i < 256; i++) {
     
    10699                }
    107100                p++;
    108101        }
    109         fclose(f);
     102        f.close();
    110103
    111104        palnum = 0;
    112105        maxPalnum = p;