mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-24 04:29:34 -04:00
add -dumptables arg to export generated translation tables to PWAD (#1052)
* add -dumptables arg to export generated translation tables to PWAD Fixes #1033 * start messages on a new line * Revert "start messages on a new line" This reverts commit 3896f9d49fecd6a17862cd19ad7b76c4dcd29c34. * proper new line in message output
This commit is contained in:
parent
4b0cb33234
commit
c6735cb110
13
src/d_main.c
13
src/d_main.c
@ -2494,6 +2494,19 @@ void D_DoomMain(void)
|
|||||||
printf("R_Init: Init DOOM refresh daemon - ");
|
printf("R_Init: Init DOOM refresh daemon - ");
|
||||||
R_Init();
|
R_Init();
|
||||||
|
|
||||||
|
//!
|
||||||
|
// @category mod
|
||||||
|
// @arg <wad>
|
||||||
|
//
|
||||||
|
// Allow writing generated lumps out as a WAD.
|
||||||
|
//
|
||||||
|
|
||||||
|
if ((p = M_CheckParm("-dumptables")) && p < myargc-1)
|
||||||
|
{
|
||||||
|
puts("\n");
|
||||||
|
WriteGeneratedLumpWad(myargv[p+1]);
|
||||||
|
}
|
||||||
|
|
||||||
puts("\nP_Init: Init Playloop state.");
|
puts("\nP_Init: Init Playloop state.");
|
||||||
P_Init();
|
P_Init();
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ static const char *params_with_args[] = {
|
|||||||
"-deh",
|
"-deh",
|
||||||
"-dehout",
|
"-dehout",
|
||||||
"-dumplumps",
|
"-dumplumps",
|
||||||
|
"-dumptables",
|
||||||
"-fastdemo",
|
"-fastdemo",
|
||||||
"-maxdemo",
|
"-maxdemo",
|
||||||
"-playdemo",
|
"-playdemo",
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "i_video.h"
|
#include "i_video.h"
|
||||||
#include "m_argv.h"
|
#include "m_argv.h"
|
||||||
#include "m_swap.h"
|
#include "m_swap.h"
|
||||||
|
#include "m_misc2.h"
|
||||||
|
|
||||||
// Each screen is [SCREENWIDTH*SCREENHEIGHT];
|
// Each screen is [SCREENWIDTH*SCREENHEIGHT];
|
||||||
byte *screens[5];
|
byte *screens[5];
|
||||||
@ -253,6 +254,28 @@ void V_InitColorTranslation(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WriteGeneratedLumpWad(const char *filename)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const size_t num_lumps = arrlen(crdefs);
|
||||||
|
lumpinfo_t *lumps = calloc(num_lumps, sizeof(*lumps));
|
||||||
|
|
||||||
|
for (i = 0; i < num_lumps - 1; i++) // last entry is dummy
|
||||||
|
{
|
||||||
|
M_CopyLumpName(lumps[i].name, crdefs[i].name);
|
||||||
|
lumps[i].data = *crdefs[i].map2;
|
||||||
|
lumps[i].size = 256;
|
||||||
|
}
|
||||||
|
|
||||||
|
M_CopyLumpName(lumps[i].name, "TRANMAP");
|
||||||
|
lumps[i].data = main_tranmap;
|
||||||
|
lumps[i].size = 256 * 256;
|
||||||
|
|
||||||
|
WriteLumpWad(filename, lumps, num_lumps);
|
||||||
|
|
||||||
|
free(lumps);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// V_CopyRect
|
// V_CopyRect
|
||||||
//
|
//
|
||||||
|
27
src/w_wad.c
27
src/w_wad.c
@ -478,7 +478,7 @@ void *W_CacheLumpNum(int lump, pu_tag tag)
|
|||||||
// killough 4/22/98: make endian-independent, remove tab chars
|
// killough 4/22/98: make endian-independent, remove tab chars
|
||||||
// haleyjd 01/21/05: rewritten to use stdio
|
// haleyjd 01/21/05: rewritten to use stdio
|
||||||
//
|
//
|
||||||
void WritePredefinedLumpWad(const char *filename)
|
void WriteLumpWad(const char *filename, const lumpinfo_t *lumps, const size_t num_lumps)
|
||||||
{
|
{
|
||||||
FILE *file;
|
FILE *file;
|
||||||
char *fn;
|
char *fn;
|
||||||
@ -495,40 +495,45 @@ void WritePredefinedLumpWad(const char *filename)
|
|||||||
if((file = M_fopen(fn, "wb")))
|
if((file = M_fopen(fn, "wb")))
|
||||||
{
|
{
|
||||||
wadinfo_t header = { "PWAD" };
|
wadinfo_t header = { "PWAD" };
|
||||||
size_t filepos = sizeof(wadinfo_t) + num_predefined_lumps * sizeof(filelump_t);
|
size_t filepos = sizeof(wadinfo_t) + num_lumps * sizeof(filelump_t);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
header.numlumps = LONG(num_predefined_lumps);
|
header.numlumps = LONG(num_lumps);
|
||||||
header.infotableofs = LONG(sizeof(header));
|
header.infotableofs = LONG(sizeof(header));
|
||||||
|
|
||||||
// write header
|
// write header
|
||||||
fwrite(&header, 1, sizeof(header), file);
|
fwrite(&header, 1, sizeof(header), file);
|
||||||
|
|
||||||
// write directory
|
// write directory
|
||||||
for(i = 0; i < num_predefined_lumps; i++)
|
for(i = 0; i < num_lumps; i++)
|
||||||
{
|
{
|
||||||
filelump_t fileinfo = { 0 };
|
filelump_t fileinfo = { 0 };
|
||||||
|
|
||||||
fileinfo.filepos = LONG(filepos);
|
fileinfo.filepos = LONG(filepos);
|
||||||
fileinfo.size = LONG(predefined_lumps[i].size);
|
fileinfo.size = LONG(lumps[i].size);
|
||||||
M_CopyLumpName(fileinfo.name, predefined_lumps[i].name);
|
M_CopyLumpName(fileinfo.name, lumps[i].name);
|
||||||
|
|
||||||
fwrite(&fileinfo, 1, sizeof(fileinfo), file);
|
fwrite(&fileinfo, 1, sizeof(fileinfo), file);
|
||||||
|
|
||||||
filepos += predefined_lumps[i].size;
|
filepos += lumps[i].size;
|
||||||
}
|
}
|
||||||
|
|
||||||
// write lumps
|
// write lumps
|
||||||
for(i = 0; i < num_predefined_lumps; i++)
|
for(i = 0; i < num_lumps; i++)
|
||||||
fwrite(predefined_lumps[i].data, 1, predefined_lumps[i].size, file);
|
fwrite(lumps[i].data, 1, lumps[i].size, file);
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
I_Error("Predefined lumps wad, %s written, exiting\n", filename);
|
I_Error("Internal lumps wad, %s written, exiting\n", filename);
|
||||||
}
|
}
|
||||||
I_Error("Cannot open predefined lumps wad %s for output\n", filename);
|
I_Error("Cannot open internal lumps wad %s for output\n", filename);
|
||||||
free(fn);
|
free(fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WritePredefinedLumpWad(const char *filename)
|
||||||
|
{
|
||||||
|
WriteLumpWad(filename, predefined_lumps, num_predefined_lumps);
|
||||||
|
}
|
||||||
|
|
||||||
// [FG] name of the WAD file that contains the lump
|
// [FG] name of the WAD file that contains the lump
|
||||||
const char *W_WadNameForLump (const int lump)
|
const char *W_WadNameForLump (const int lump)
|
||||||
{
|
{
|
||||||
|
@ -109,7 +109,9 @@ unsigned W_LumpNameHash(const char *s); // killough 1/31/98
|
|||||||
void I_BeginRead(unsigned int bytes), I_EndRead(void); // killough 10/98
|
void I_BeginRead(unsigned int bytes), I_EndRead(void); // killough 10/98
|
||||||
|
|
||||||
// Function to write all predefined lumps to a PWAD if requested
|
// Function to write all predefined lumps to a PWAD if requested
|
||||||
|
extern void WriteLumpWad(const char *filename, const lumpinfo_t *lumps, const size_t num_lumps);
|
||||||
extern void WritePredefinedLumpWad(const char *filename); // jff 5/6/98
|
extern void WritePredefinedLumpWad(const char *filename); // jff 5/6/98
|
||||||
|
extern void WriteGeneratedLumpWad(const char *filename);
|
||||||
|
|
||||||
// [FG] name of the WAD file that contains the lump
|
// [FG] name of the WAD file that contains the lump
|
||||||
const char *W_WadNameForLump (const int lump);
|
const char *W_WadNameForLump (const int lump);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user