[PATCH] bsputil: Attempt correct byte-swapping in bsp -> wad export
Untested, but this should be all that is required. Signed-off-by: Tyrann <tyrann@disenchant.net>
This commit is contained in:
parent
05dab0640e
commit
2e4a4a917f
|
|
@ -45,22 +45,25 @@ ExportWad(FILE *f)
|
||||||
wadinfo_t header;
|
wadinfo_t header;
|
||||||
dmiptexlump_t *m;
|
dmiptexlump_t *m;
|
||||||
miptex_t *mt;
|
miptex_t *mt;
|
||||||
int i, data;
|
int i, j, datalen;
|
||||||
lumpinfo_t l;
|
lumpinfo_t l;
|
||||||
|
|
||||||
m = (dmiptexlump_t *)dtexdata;
|
m = (dmiptexlump_t *)dtexdata;
|
||||||
|
|
||||||
memcpy(&header.identification, "WAD2", 4);
|
memcpy(&header.identification, "WAD2", 4);
|
||||||
header.numlumps = m->nummiptex;
|
header.numlumps = m->nummiptex;
|
||||||
header.infotableofs = sizeof(wadinfo_t);
|
header.infotableofs = sizeof(wadinfo_t);
|
||||||
|
|
||||||
|
/* Byte-swap header and write out */
|
||||||
|
header.numlumps = LittleLong(header.numlumps);
|
||||||
|
header.infotableofs = LittleLong(header.infotableofs);
|
||||||
fwrite(&header, sizeof(wadinfo_t), 1, f);
|
fwrite(&header, sizeof(wadinfo_t), 1, f);
|
||||||
|
|
||||||
data = sizeof(wadinfo_t) + sizeof(lumpinfo_t) * m->nummiptex;
|
datalen = sizeof(wadinfo_t) + sizeof(lumpinfo_t) * m->nummiptex;
|
||||||
|
|
||||||
for (i = 0; i < m->nummiptex; i++) {
|
for (i = 0; i < m->nummiptex; i++) {
|
||||||
mt = (miptex_t *)((byte *)m + m->dataofs[i]);
|
mt = (miptex_t *)((byte *)m + m->dataofs[i]);
|
||||||
|
|
||||||
l.filepos = data;
|
l.filepos = datalen;
|
||||||
l.disksize = sizeof(miptex_t) + mt->width * mt->height / 64 * 85;
|
l.disksize = sizeof(miptex_t) + mt->width * mt->height / 64 * 85;
|
||||||
l.size = l.disksize;
|
l.size = l.disksize;
|
||||||
l.type = 'D';
|
l.type = 'D';
|
||||||
|
|
@ -68,13 +71,25 @@ ExportWad(FILE *f)
|
||||||
l.pad1 = l.pad2 = 0;
|
l.pad1 = l.pad2 = 0;
|
||||||
memcpy(l.name, mt->name, 15);
|
memcpy(l.name, mt->name, 15);
|
||||||
l.name[15] = 0;
|
l.name[15] = 0;
|
||||||
fwrite(&l, sizeof(lumpinfo_t), 1, f);
|
|
||||||
|
|
||||||
data += l.disksize;
|
datalen += l.disksize;
|
||||||
|
|
||||||
|
/* Byte-swap lumpinfo and write out */
|
||||||
|
l.filepos = LittleLong(l.filepos);
|
||||||
|
l.disksize = LittleLong(l.disksize);
|
||||||
|
l.size = LittleLong(l.size);
|
||||||
|
fwrite(&l, sizeof(lumpinfo_t), 1, f);
|
||||||
}
|
}
|
||||||
for (i = 0; i < m->nummiptex; i++) {
|
for (i = 0; i < m->nummiptex; i++) {
|
||||||
mt = (miptex_t *)((byte *)m + m->dataofs[i]);
|
mt = (miptex_t *)((byte *)m + m->dataofs[i]);
|
||||||
fwrite(mt, sizeof(miptex_t) + mt->width * mt->height / 64 * 85, 1, f);
|
datalen = sizeof(miptex_t) + mt->width * mt->height / 64 * 85;
|
||||||
|
|
||||||
|
/* Byte-swap miptex info and write out */
|
||||||
|
mt->width = LittleLong(mt->width);
|
||||||
|
mt->height = LittleLong(mt->height);
|
||||||
|
for (j = 0; j < MIPLEVELS; j++)
|
||||||
|
mt->offsets[j] = LittleLong(mt->offsets[j]);
|
||||||
|
fwrite(mt, datalen, 1, f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue