- Fixed: Dehacked string replacement did not check the clusters' finaleflats.

- Changed the definition of several typedef'd structs so that they are
  properly named.
- Limited DEHSUPP lump lookup to search zdoom.pk3 only. It will no longer
  be possible to load DEHSUPP lumps from user WADs.
- Brought back the text-based DEHSUPP parser and changed it to be able to 
  reference states by label. Also changed label names of 
  DoomUnusedStates and added proper labels to all states that were
  previously forced to be the first state of an actor so that the old
  (limited) method could access them. This was done to address the following
  bug:
- Fixed: The player's death states calling A_PlayerSkinCheck should not be
  part of the state set that is accessible by Dehacked. These will produce
  error messages when mapped to non-players.

SVN r1512 (trunk)
This commit is contained in:
Christoph Oelckers 2009-03-28 11:49:44 +00:00
parent 3ee37fdc08
commit bf4e17703d
33 changed files with 756 additions and 4988 deletions

View file

@ -1,4 +1,20 @@
March 27, 2009 (Changes by Graf Zahl) March 28, 2009 (Changes by Graf Zahl)
- Fixed: Dehacked string replacement did not check the clusters' finaleflats.
- Changed the definition of several typedef'd structs so that they are
properly named.
- Limited DEHSUPP lump lookup to search zdoom.pk3 only. It will no longer
be possible to load DEHSUPP lumps from user WADs.
- Brought back the text-based DEHSUPP parser and changed it to be able to
reference states by label. Also changed label names of
DoomUnusedStates and added proper labels to all states that were
previously forced to be the first state of an actor so that the old
(limited) method could access them. This was done to address the following
bug:
- Fixed: The player's death states calling A_PlayerSkinCheck should not be
part of the state set that is accessible by Dehacked. These will produce
error messages when mapped to non-players.
March 27, 2009 (Changes by Graf Zahl)
- Fixed: Reading the RNG states from a savegame calculated the amounts of - Fixed: Reading the RNG states from a savegame calculated the amounts of
RNGs in the savegame wrong. RNGs in the savegame wrong.

View file

@ -200,25 +200,30 @@ CVAR (Color, am_ovthingcolor_item, 0xe88800, CVAR_ARCHIVE);
#define CXMTOF(x) (MTOF((x)-m_x)/* - f_x*/) #define CXMTOF(x) (MTOF((x)-m_x)/* - f_x*/)
#define CYMTOF(y) (f_h - MTOF((y)-m_y)/* + f_y*/) #define CYMTOF(y) (f_h - MTOF((y)-m_y)/* + f_y*/)
typedef struct { struct fpoint_t
{
int x, y; int x, y;
} fpoint_t; };
typedef struct { struct fline_t
{
fpoint_t a, b; fpoint_t a, b;
} fline_t; };
typedef struct { struct mpoint_t
{
fixed_t x,y; fixed_t x,y;
} mpoint_t; };
typedef struct { struct mline_t
{
mpoint_t a, b; mpoint_t a, b;
} mline_t; };
typedef struct { struct islope_t
{
fixed_t slp, islp; fixed_t slp, islp;
} islope_t; };

File diff suppressed because it is too large Load diff

View file

@ -57,7 +57,7 @@
// //
// Network packet data. // Network packet data.
// //
typedef struct struct doomcom_t
{ {
DWORD id; // should be DOOMCOM_ID DWORD id; // should be DOOMCOM_ID
SWORD intnum; // DOOM executes an int to execute commands SWORD intnum; // DOOM executes an int to execute commands
@ -86,7 +86,7 @@ typedef struct
// packet data to be sent // packet data to be sent
BYTE data[MAX_MSGLEN]; BYTE data[MAX_MSGLEN];
} doomcom_t; };
class FDynamicBuffer class FDynamicBuffer

View file

@ -64,7 +64,7 @@ struct zdemoheader_s {
BYTE consoleplayer; BYTE consoleplayer;
}; };
struct usercmd_s struct usercmd_t
{ {
DWORD buttons; DWORD buttons;
short pitch; // up/down short pitch; // up/down
@ -74,7 +74,6 @@ struct usercmd_s
short sidemove; short sidemove;
short upmove; short upmove;
}; };
typedef struct usercmd_s usercmd_t;
class FArchive; class FArchive;

View file

@ -460,13 +460,13 @@ void F_TextWrite (void)
// Casting by id Software. // Casting by id Software.
// in order of appearance // in order of appearance
// //
typedef struct struct castinfo_t
{ {
const char *name; const char *name;
const char *type; const char *type;
const AActor *info; const AActor *info;
const PClass *Class; const PClass *Class;
} castinfo_t; };
castinfo_t castorder[] = castinfo_t castorder[] =
{ {

View file

@ -116,7 +116,8 @@ typedef enum {
struct GUIDName; struct GUIDName;
typedef struct menuitem_s { struct menuitem_t
{
itemtype type; itemtype type;
const char *label; const char *label;
union { union {
@ -159,7 +160,7 @@ typedef struct menuitem_s {
int highlight; int highlight;
int flagmask; int flagmask;
} e; } e;
} menuitem_t; };
struct menu_t { struct menu_t {
const char *texttitle; const char *texttitle;
@ -190,7 +191,7 @@ struct valueenum_t {
const char *name; // Name on menu const char *name; // Name on menu
}; };
typedef struct struct oldmenuitem_t
{ {
// -1 = no cursor here, 1 = ok, 2 = arrows ok // -1 = no cursor here, 1 = ok, 2 = arrows ok
SBYTE status; SBYTE status;
@ -206,9 +207,9 @@ typedef struct
// choice=0:leftarrow,1:rightarrow // choice=0:leftarrow,1:rightarrow
void (*routine)(int choice); void (*routine)(int choice);
int textcolor; int textcolor;
} oldmenuitem_t; };
typedef struct oldmenu_s struct oldmenu_t
{ {
short numitems; // # of menu items short numitems; // # of menu items
oldmenuitem_t *menuitems; // menu items oldmenuitem_t *menuitems; // menu items
@ -216,9 +217,9 @@ typedef struct oldmenu_s
short x; short x;
short y; // x,y of menu short y; // x,y of menu
short lastOn; // last item user was on in menu short lastOn; // last item user was on in menu
} oldmenu_t; };
typedef struct struct menustack_t
{ {
union { union {
menu_t *newmenu; menu_t *newmenu;
@ -226,7 +227,7 @@ typedef struct
} menu; } menu;
bool isNewStyle; bool isNewStyle;
bool drawSkull; bool drawSkull;
} menustack_t; };
extern value_t YesNo[2]; extern value_t YesNo[2];
extern value_t NoYes[2]; extern value_t NoYes[2];

View file

@ -401,7 +401,7 @@ void M_LoadDefaults ()
// //
typedef struct struct pcx_t
{ {
char manufacturer; char manufacturer;
char version; char version;
@ -424,7 +424,7 @@ typedef struct
unsigned short palette_type; unsigned short palette_type;
char filler[58]; char filler[58];
} pcx_t; };
// //

View file

@ -41,7 +41,7 @@
// bits 9-15: reserved // bits 9-15: reserved
//40 bytes //40 bytes
typedef struct struct sectortype
{ {
SWORD wallptr, wallnum; SWORD wallptr, wallnum;
SDWORD ceilingz, floorz; SDWORD ceilingz, floorz;
@ -54,7 +54,7 @@ typedef struct
BYTE floorpal, floorxpanning, floorypanning; BYTE floorpal, floorxpanning, floorypanning;
BYTE visibility, filler; BYTE visibility, filler;
SWORD lotag, hitag, extra; SWORD lotag, hitag, extra;
} sectortype; };
//cstat: //cstat:
// bit 0: 1 = Blocking wall (use with clipmove, getzrange) "B" // bit 0: 1 = Blocking wall (use with clipmove, getzrange) "B"
@ -70,7 +70,7 @@ typedef struct
// bits 10-15: reserved // bits 10-15: reserved
//32 bytes //32 bytes
typedef struct struct walltype
{ {
SDWORD x, y; SDWORD x, y;
SWORD point2, nextwall, nextsector, cstat; SWORD point2, nextwall, nextsector, cstat;
@ -78,7 +78,7 @@ typedef struct
SBYTE shade; SBYTE shade;
BYTE pal, xrepeat, yrepeat, xpanning, ypanning; BYTE pal, xrepeat, yrepeat, xpanning, ypanning;
SWORD lotag, hitag, extra; SWORD lotag, hitag, extra;
} walltype; };
//cstat: //cstat:
// bit 0: 1 = Blocking sprite (use with clipmove, getzrange) "B" // bit 0: 1 = Blocking sprite (use with clipmove, getzrange) "B"
@ -96,7 +96,7 @@ typedef struct
// bit 15: 1 = Invisible sprite, 0 = not invisible // bit 15: 1 = Invisible sprite, 0 = not invisible
//44 bytes //44 bytes
typedef struct struct spritetype
{ {
SDWORD x, y, z; SDWORD x, y, z;
SWORD cstat, picnum; SWORD cstat, picnum;
@ -107,7 +107,7 @@ typedef struct
SWORD sectnum, statnum; SWORD sectnum, statnum;
SWORD ang, owner, xvel, yvel, zvel; SWORD ang, owner, xvel, yvel, zvel;
SWORD lotag, hitag, extra; SWORD lotag, hitag, extra;
} spritetype; };
struct SlopeWork struct SlopeWork
{ {

View file

@ -150,16 +150,16 @@ void P_NoiseAlert (AActor* target, AActor* emmiter, bool splash);
// //
// P_MAPUTL // P_MAPUTL
// //
typedef struct struct divline_t
{ {
fixed_t x; fixed_t x;
fixed_t y; fixed_t y;
fixed_t dx; fixed_t dx;
fixed_t dy; fixed_t dy;
} divline_t; };
typedef struct struct intercept_t
{ {
fixed_t frac; // along trace line fixed_t frac; // along trace line
bool isaline; bool isaline;
@ -168,7 +168,7 @@ typedef struct
AActor *thing; AActor *thing;
line_t *line; line_t *line;
} d; } d;
} intercept_t; };
typedef bool (*traverser_t) (intercept_t *in); typedef bool (*traverser_t) (intercept_t *in);
@ -470,14 +470,14 @@ bool EV_OpenPolyDoor (line_t *line, int polyNum, int speed, angle_t angle, int d
// [RH] Data structure for P_SpawnMapThing() to keep track // [RH] Data structure for P_SpawnMapThing() to keep track
// of polyobject-related things. // of polyobject-related things.
typedef struct polyspawns_s struct polyspawns_t
{ {
struct polyspawns_s *next; polyspawns_t *next;
fixed_t x; fixed_t x;
fixed_t y; fixed_t y;
short angle; short angle;
short type; short type;
} polyspawns_t; };
enum enum
{ {

View file

@ -62,14 +62,14 @@ inline FArchive &operator<< (FArchive &arc, psprnum_t &i)
} }
*/ */
typedef struct pspdef_s struct pspdef_t
{ {
FState* state; // a NULL state means not active FState* state; // a NULL state means not active
int tics; int tics;
fixed_t sx; fixed_t sx;
fixed_t sy; fixed_t sy;
} pspdef_t; };
class FArchive; class FArchive;

View file

@ -139,9 +139,10 @@ void R_ClearDrawSegs (void)
// should use it, since smaller arrays fit better in cache. // should use it, since smaller arrays fit better in cache.
// //
typedef struct { struct cliprange_t
{
short first, last; // killough short first, last; // killough
} cliprange_t; };
// newend is one past the last valid seg // newend is one past the last valid seg

View file

@ -89,10 +89,11 @@ typedef enum
SS_CMD_END SS_CMD_END
} sscmds_t; } sscmds_t;
typedef struct { struct hexenseq_t
{
ENamedName Name; ENamedName Name;
BYTE Seqs[4]; BYTE Seqs[4];
} hexenseq_t; };
class DSeqActorNode : public DSeqNode class DSeqActorNode : public DSeqNode
{ {

View file

@ -130,12 +130,12 @@ unsigned int I_MSTime (void);
// Directory searching routines // Directory searching routines
typedef struct struct findstate_t
{ {
int count; int count;
struct dirent **namelist; struct dirent **namelist;
int current; int current;
} findstate_t; };
void *I_FindFirst (const char *filespec, findstate_t *fileinfo); void *I_FindFirst (const char *filespec, findstate_t *fileinfo);
int I_FindNext (void *handle, findstate_t *fileinfo); int I_FindNext (void *handle, findstate_t *fileinfo);

View file

@ -123,10 +123,10 @@ typedef enum
} animenum_t; } animenum_t;
typedef struct struct yahpt_t
{ {
int x, y; int x, y;
} yahpt_t; };
struct lnode_t struct lnode_t
{ {
@ -146,7 +146,7 @@ struct lnode_t
// //
#define MAX_ANIMATION_FRAMES 20 #define MAX_ANIMATION_FRAMES 20
typedef struct struct in_anim_t
{ {
int type; // Made an int so I can use '|' int type; // Made an int so I can use '|'
int period; // period in tics between animations int period; // period in tics between animations
@ -162,7 +162,7 @@ typedef struct
char levelname[9]; char levelname[9];
char levelname2[9]; char levelname2[9];
} in_anim_t; };
static TArray<lnode_t> lnodes; static TArray<lnode_t> lnodes;
static TArray<in_anim_t> anims; static TArray<in_anim_t> anims;

View file

@ -6,5 +6,4 @@ if( WIN32 )
add_subdirectory( fixrtext ) add_subdirectory( fixrtext )
endif( WIN32 ) endif( WIN32 )
add_subdirectory( updaterevision ) add_subdirectory( updaterevision )
add_subdirectory( dehsupp )
add_subdirectory( zipdir ) add_subdirectory( zipdir )

View file

@ -1,24 +0,0 @@
cmake_minimum_required( VERSION 2.4 )
include( CheckFunctionExists )
set( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG" )
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/parse.h ${CMAKE_CURRENT_BINARY_DIR}/parse.c
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/parse.y ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_BINARY_DIR}/tools/lemon/lemon parse.y
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS lemon parse.y )
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/scanner.c
COMMAND ${CMAKE_BINARY_DIR}/tools/re2c/re2c -s -o ${CMAKE_CURRENT_BINARY_DIR}/scanner.c ${CMAKE_CURRENT_SOURCE_DIR}/scanner.re
DEPENDS re2c scanner.re )
include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
CHECK_FUNCTION_EXISTS( stricmp STRICMP_EXISTS )
if( NOT STRICMP_EXISTS )
add_definitions( -Dstricmp=strcasecmp )
endif( NOT STRICMP_EXISTS )
add_executable( dehsupp dehsupp.c parse.c scanner.c )
add_dependencies( dehsupp ${CMAKE_CURRENT_BINARY_DIR}/parse.c ${CMAKE_CURRENT_BINARY_DIR}/scanner.c )

View file

@ -1,571 +0,0 @@
#include <malloc.h>
#include <stdlib.h>
#include <search.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include "dehsupp.h"
FILE *Source, *Dest;
int SourceLine;
int ErrorCount;
struct StringList *NameList, **NameListLast = &NameList;
int NameCount;
name *ActionsList;
unsigned char *HeightsArray;
unsigned char *ActionMap;
unsigned short *CodePMap;
char *SpriteNames;
struct StateMapE *StateMaps;
name *SoundMaps;
name *InfoNamesArray;
struct ThingBitsE *ThingBitsMap;
struct RenderStylesE *RenderStylesMap;
int ActionsListSize, MaxActionsListSize;
int HeightsSize, MaxHeightsSize;
int ActionMapSize, MaxActionMapSize;
int CodePMapSize, MaxCodePMapSize;
int SpriteNamesSize, MaxSpriteNamesSize;
int StateMapsSize, MaxStateMapsSize;
int SoundMapsSize, MaxSoundMapsSize;
int InfoNamesSize, MaxInfoNamesSize;
int ThingBitsMapSize, MaxThingBitsMapSize;
int RenderStylesSize, MaxRenderStylesSize;
int main (int argc, char **argv)
{
if (argc != 3)
{
printf ("Usage: dehsupp <infile> <outfile>\n");
return -1;
}
Source = fopen (argv[1], "r");
if (Source == NULL)
{
printf ("Could not open %s\n", argv[1]);
return -2;
}
#if !defined(NDEBUG) && 0
ParseTrace(fopen("trace.txt", "w"), "");
#endif
SourceLine = 1;
yyparse ();
fclose (Source);
if (ErrorCount)
{
printf ("There were %d errors\n", ErrorCount);
return -3;
}
SortNames ();
Dest = fopen (argv[2], "wb");
if (Dest == NULL)
{
printf ("Could not open %s\n", argv[2]);
return -4;
}
WriteNameTable ();
WriteActions ();
WriteCodePConv ();
WriteSprites ();
WriteSounds ();
WriteInfoNames ();
WriteStates ();
WriteActionMap ();
WriteThingBits ();
WriteRenderStyles ();
WriteHeights ();
WriteLabel ("END ");
fclose (Dest);
return 0;
}
void fail (int code, char *err)
{
fclose (Dest);
printf ("%s\n", err);
exit (code);
}
void *ParseAlloc(void *(*mallocProc)(size_t));
void Parse(void *yyp, int yymajor, struct Token yyminor);
void ParseFree(void *p, void (*freeProc)(void*));
void yyparse (void)
{
Scanner scanner = { Source };
void *pParser = ParseAlloc (malloc);
struct Token token;
int tokentype;
while ((tokentype = lex(&scanner, &token)) != EOI)
{
SourceLine = scanner.line;
Parse (pParser, tokentype, token);
}
memset (&token, 0, sizeof(token));
Parse (pParser, 0, token);
ParseFree (pParser, free);
}
name FindName (char *name)
{
struct StringList *probe = NameList;
int count = 0;
while (probe != NULL)
{
if (stricmp (probe->String, name) == 0)
{
return count;
}
count++;
probe = probe->Next;
}
return -1;
}
name AddName (char *name)
{
struct StringList *newone;
int index = FindName (name);
if (index != -1)
return index;
newone = malloc (sizeof(*newone) + strlen(name));
strcpy (newone->String, name);
newone->Next = NULL;
*NameListLast = newone;
NameListLast = &newone->Next;
return NameCount++;
}
int FindAction (char *namei)
{
int name = FindName (namei);
if (name != -1)
{
int i;
for (i = 0; i < ActionsListSize; i++)
{
if (ActionsList[i] == name)
return i;
}
}
printf ("Line %d: Unknown action %s\n", SourceLine, namei);
ErrorCount++;
return -1;
}
void AddAction (char *name)
{
int newname = AddName (name);
if (ActionsListSize == MaxActionsListSize)
{
MaxActionsListSize = MaxActionsListSize ? MaxActionsListSize * 2 : 256;
ActionsList = realloc (ActionsList, MaxActionsListSize*sizeof(*ActionsList));
}
ActionsList[ActionsListSize++] = newname;
}
void AddHeight (int h)
{
if (MaxHeightsSize == HeightsSize)
{
MaxHeightsSize = MaxHeightsSize ? MaxHeightsSize * 2 : 256;
HeightsArray = realloc (HeightsArray, MaxHeightsSize);
}
HeightsArray[HeightsSize++] = h;
}
void AddActionMap (char *name)
{
int index = FindAction (name);
if (index != -1)
{
if (ActionMapSize == MaxActionMapSize)
{
MaxActionMapSize = MaxActionMapSize ? MaxActionMapSize * 2 : 256;
ActionMap = realloc (ActionMap, MaxActionMapSize*sizeof(*ActionMap));
}
ActionMap[ActionMapSize++] = index;
}
}
void AddCodeP (int codep)
{
if (CodePMapSize == MaxCodePMapSize)
{
MaxCodePMapSize = MaxCodePMapSize ? MaxCodePMapSize * 2 : 256;
CodePMap = realloc (CodePMap, MaxCodePMapSize*sizeof(*CodePMap));
}
CodePMap[CodePMapSize++] = codep;
}
void AddSpriteName (char *name)
{
if (strlen (name) != 4)
{
printf ("Line %d: Sprite name %s must be 4 characters\n", SourceLine, name);
ErrorCount++;
return;
}
if (SpriteNamesSize == MaxSpriteNamesSize)
{
MaxSpriteNamesSize = MaxSpriteNamesSize ? MaxSpriteNamesSize * 2 : 256*4;
SpriteNames = realloc (SpriteNames, MaxSpriteNamesSize*sizeof(*SpriteNames));
}
SpriteNames[SpriteNamesSize+0] = toupper (name[0]);
SpriteNames[SpriteNamesSize+1] = toupper (name[1]);
SpriteNames[SpriteNamesSize+2] = toupper (name[2]);
SpriteNames[SpriteNamesSize+3] = toupper (name[3]);
SpriteNamesSize += 4;
}
void AddSoundMap (char *name)
{
if (SoundMapsSize == MaxSoundMapsSize)
{
MaxSoundMapsSize = MaxSoundMapsSize ? MaxSoundMapsSize * 2 : 256;
SoundMaps = realloc (SoundMaps, MaxSoundMapsSize*sizeof(*SoundMaps));
}
SoundMaps[SoundMapsSize++] = AddName (name);
}
void AddInfoName (char *name)
{
if (InfoNamesSize == MaxInfoNamesSize)
{
MaxInfoNamesSize = MaxInfoNamesSize ? MaxInfoNamesSize * 2 : 256;
InfoNamesArray = realloc (InfoNamesArray, MaxInfoNamesSize*sizeof(*InfoNamesArray));
}
InfoNamesArray[InfoNamesSize++] = AddName (name);
}
void AddStateMap (char *name, int state, int count)
{
if (count == 0)
{
printf ("Line %d: Count is 0. Is this right?\n", SourceLine);
return;
}
if ((unsigned)count > 255)
{
printf ("Line %d: Count must be in the range 1-255\n", SourceLine);
ErrorCount++;
}
if (StateMapsSize == MaxStateMapsSize)
{
MaxStateMapsSize = MaxStateMapsSize ? MaxStateMapsSize*2 : 256;
StateMaps = realloc (StateMaps, MaxStateMapsSize*sizeof(*StateMaps));
}
StateMaps[StateMapsSize].Name = AddName (name);
StateMaps[StateMapsSize].State = state;
StateMaps[StateMapsSize].Count = count;
StateMapsSize++;
}
void AddThingBits (char *name, int bitnum, int flagnum)
{
if ((unsigned)bitnum > 31)
{
printf ("Line %d: Bit %d must be in the range 0-31\n", SourceLine, bitnum);
ErrorCount++;
return;
}
if (MaxThingBitsMapSize == ThingBitsMapSize)
{
MaxThingBitsMapSize = MaxThingBitsMapSize ? MaxThingBitsMapSize*2 : 128;
ThingBitsMap = realloc (ThingBitsMap, MaxThingBitsMapSize*sizeof(*ThingBitsMap));
}
ThingBitsMap[ThingBitsMapSize].Name = AddName (name);
ThingBitsMap[ThingBitsMapSize].BitNum = bitnum;
ThingBitsMap[ThingBitsMapSize].FlagNum = flagnum;
ThingBitsMapSize++;
}
void AddRenderStyle (char *name, int stylenum)
{
if ((unsigned)stylenum > 255)
{
printf ("Line %d: %s must be in the range 0-255\n", SourceLine, name);
ErrorCount++;
return;
}
if (MaxRenderStylesSize == RenderStylesSize)
{
MaxRenderStylesSize = MaxRenderStylesSize ? MaxRenderStylesSize*2 : 16;
RenderStylesMap = realloc (RenderStylesMap, MaxRenderStylesSize*sizeof(*RenderStylesMap));
}
RenderStylesMap[RenderStylesSize].Name = AddName (name);
RenderStylesMap[RenderStylesSize].StyleNum = stylenum;
RenderStylesSize++;
}
int sortfunc (const void *a, const void *b)
{
return stricmp (((struct StringSorter *)a)->Entry->String,
((struct StringSorter *)b)->Entry->String);
}
void SortNames ()
{
name *remap = malloc (NameCount * sizeof(*remap));
struct StringSorter *sorter = malloc (NameCount * sizeof(*sorter));
struct StringList *probe, **prev;
int i;
for (i = 0, probe = NameList; probe != NULL; probe = probe->Next, i++)
{
sorter[i].OldName = i;
sorter[i].Entry = probe;
}
// There are some warnings here, though I have no idea why.
qsort (sorter, NameCount, sizeof(*sorter), sortfunc);
for (i = 0, prev = &NameList; i < NameCount; i++)
{
*prev = sorter[i].Entry;
prev = &sorter[i].Entry->Next;
}
*prev = NULL;
for (i = 0; i < NameCount; i++)
{
remap[sorter[i].OldName] = i;
}
for (i = 0; i < ActionsListSize; i++)
{
ActionsList[i] = remap[ActionsList[i]];
}
for (i = 0; i < SoundMapsSize; i++)
{
SoundMaps[i] = remap[SoundMaps[i]];
}
for (i = 0; i < InfoNamesSize; i++)
{
InfoNamesArray[i] = remap[InfoNamesArray[i]];
}
for (i = 0; i < StateMapsSize; i++)
{
StateMaps[i].Name = remap[StateMaps[i].Name];
}
for (i = 0; i < ThingBitsMapSize; i++)
{
ThingBitsMap[i].Name = remap[ThingBitsMap[i].Name];
}
for (i = 0; i < RenderStylesSize; i++)
{
RenderStylesMap[i].Name = remap[RenderStylesMap[i].Name];
}
}
int yyerror (char *s)
{
printf ("Line %d: %s\n", SourceLine, s);
ErrorCount++;
return 0;
}
void WriteWord (int word)
{
putc (word >> 8, Dest);
putc (word & 255, Dest);
}
void WriteLabel (char *label)
{
fwrite (label, 1, 4, Dest);
}
void WriteWords (int count, short *array)
{
int i;
WriteWord (count);
for (i = 0; i < count; i++)
{
WriteWord (array[i]);
}
}
void WriteBytes (int count, unsigned char *array)
{
WriteWord (count);
fwrite (array, 1, count, Dest);
}
void WriteNameTable ()
{
struct StringList *probe;
int i, size;
WriteLabel ("NAME");
// Count the length of each string, including nulls
for (probe = NameList, size = 0; probe != NULL; probe = probe->Next)
{
size += (int)strlen (probe->String) + 1;
}
if (size == 0)
{
WriteWord (2); // Size of this lump
WriteWord (0); // Number of names
return;
}
size += NameCount*2 + 2;
if (size >= 65536)
{
fail (-5, "Name table is larger than 64K");
}
WriteWord (size); // Size of this lump
WriteWord (NameCount); // Number of names
// Write each name's offset from the first name, which is stored
// immediately after this list
for (i = size = 0, probe = NameList; i < NameCount; i++, probe = probe->Next)
{
WriteWord (size);
size += (int)strlen (probe->String) + 1;
}
// Write each name's string in order now
for (probe = NameList; probe != NULL; probe = probe->Next)
{
fputs (probe->String, Dest);
putc (0, Dest);
}
}
typedef struct
{
name Name;
short Num;
} NameNum;
int sortfunc2 (const void *a, const void *b)
{
return ((NameNum *)a)->Name - ((NameNum *)b)->Name;
}
void WriteActions ()
{
NameNum *sorter = malloc (ActionsListSize * sizeof(*sorter));
int i;
WriteLabel ("ACTF");
WriteWord (ActionsListSize);
for (i = 0; i < ActionsListSize; i++)
{
sorter[i].Name = ActionsList[i];
sorter[i].Num = i;
}
// warnings here. ignore.
qsort (sorter, ActionsListSize, sizeof(*sorter), sortfunc2);
for (i = 0; i < ActionsListSize; i++)
{
WriteWord (sorter[i].Name);
WriteWord (sorter[i].Num);
}
free (sorter);
}
void WriteActionMap ()
{
WriteLabel ("ACTM");
WriteBytes (ActionMapSize, ActionMap);
}
void WriteHeights ()
{
WriteLabel ("HIGH");
WriteBytes (HeightsSize, HeightsArray);
}
void WriteCodePConv ()
{
WriteLabel ("CODP");
WriteWords (CodePMapSize, (short *)CodePMap);
}
void WriteSprites ()
{
WriteLabel ("SPRN");
WriteWord (SpriteNamesSize / 4);
fwrite (SpriteNames, SpriteNamesSize, 1, Dest);
}
void WriteStates ()
{
int i;
WriteLabel ("STAT");
WriteWord (StateMapsSize);
for (i = 0; i < StateMapsSize; i++)
{
WriteWord (StateMaps[i].Name);
putc (StateMaps[i].State, Dest);
putc (StateMaps[i].Count, Dest);
}
}
void WriteSounds ()
{
WriteLabel ("SND ");
WriteWords (SoundMapsSize, SoundMaps);
}
void WriteInfoNames ()
{
WriteLabel ("INFN");
WriteWords (InfoNamesSize, InfoNamesArray);
}
int sortfunc3 (const void *a, const void *b)
{
return ((struct ThingBitsE *)a)->Name - ((struct ThingBitsE *)b)->Name;
}
void WriteThingBits ()
{
int i;
WriteLabel ("TBIT");
WriteWord (ThingBitsMapSize);
// warnings here; ignore them
qsort (ThingBitsMap, ThingBitsMapSize, sizeof(*ThingBitsMap), sortfunc3);
for (i = 0; i < ThingBitsMapSize; i++)
{
WriteWord (ThingBitsMap[i].Name);
putc (ThingBitsMap[i].BitNum | (ThingBitsMap[i].FlagNum<<5), Dest);
}
}
int sortfunc4 (const void *a, const void *b)
{
return ((struct RenderStylesE *)a)->Name - ((struct RenderStylesE *)b)->Name;
}
void WriteRenderStyles ()
{
int i;
WriteLabel ("REND");
WriteWord (RenderStylesSize);
// More warnings; ignore
qsort (RenderStylesMap, RenderStylesSize, sizeof(*RenderStylesMap), sortfunc4);
for (i = 0; i < RenderStylesSize; i++)
{
WriteWord (RenderStylesMap[i].Name);
putc (RenderStylesMap[i].StyleNum, Dest);
}
}

View file

@ -1,124 +0,0 @@
#include <stdio.h>
#include "parse.h"
typedef enum { false, true } bool;
typedef short name;
typedef unsigned char uchar;
typedef unsigned int uint;
typedef struct Scanner {
FILE *fd;
uchar *bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof;
uint line;
} Scanner;
struct Token
{
int val;
char *string;
};
int lex(Scanner *s, struct Token *tok);
int yyerror (char *s);
void yyparse (void);
extern FILE *Source, *Dest;
extern int SourceLine;
extern int ErrorCount;
void WriteWord (int word);
void WriteLabel (char *label);
void WriteWords (int count, short *array);
void WriteBytes (int count, unsigned char *array);
void WriteNameTable ();
void WriteActions ();
void WriteActionMap ();
void WriteHeights ();
void WriteCodePConv ();
void WriteSprites ();
void WriteStates ();
void WriteSounds ();
void WriteInfoNames ();
void WriteThingBits ();
void WriteRenderStyles ();
struct StringList
{
struct StringList *Next;
char String[1];
};
struct StringSorter
{
name OldName;
struct StringList *Entry;
};
extern struct StringList *NameList, **NameListLast;
extern int NameCount;
name AddName (char *name);
name FindName (char *name);
void SortNames ();
struct StateMapE
{
name Name;
unsigned char State;
unsigned char Count;
};
struct ThingBitsE
{
name Name;
unsigned char BitNum;
unsigned char FlagNum;
};
struct RenderStylesE
{
name Name;
unsigned char StyleNum;
};
void AddAction (char *name);
int FindAction (char *name);
extern name *ActionsList;
extern unsigned char *HeightsArray;
extern unsigned char *ActionMap;
extern unsigned short *CodePMap;
extern char *SpriteNames;
extern struct StateMapE *StateMaps;
extern name *SoundMaps;
extern name *InfoNamesArray;
extern struct ThingBitsE *ThingBitsMap;
extern struct RenderStylesE *RenderStylesMap;
extern int ActionsListSize, MaxActionsListSize;
extern int HeightsSize, MaxHeightsSize;
extern int ActionMapSize, MaxActionMapSize;
extern int CodePMapSize, MaxCodePMapSize;
extern int SpriteNamesSize, MaxSpriteNamesSize;
extern int StateMapsSize, MaxStateMapsSize;
extern int SoundMapsSize, MaxSoundMapsSize;
extern int InfoNamesSize, MaxInfoNamesSize;
extern int ThingBitsMapSize, MaxThingBitsMapSize;
extern int RenderStylesSize, MaxRenderStylesSize;
void AddHeight (int h);
void AddActionMap (char *name);
void AddCodeP (int codep);
void AddSpriteName (char *name);
void AddStateMap (char *name, int type, int count);
void AddSoundMap (char *sound);
void AddInfoName (char *sound);
void AddThingBits (char *name, int bitnum, int flagnum);
void AddRenderStyle (char *name, int stylenum);

View file

@ -1,469 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="dehsupp"
ProjectGUID="{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}"
RootNamespace="dehsupp"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__STDC__=0"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/dehsupp.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/dehsupp.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(ProjectDir)\$(TargetFileName)&quot;"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/dehsupp.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/dehsupp.pdb"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(ProjectDir)\$(TargetFileName)&quot;"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="1"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/dehsupp.exe"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(ProjectDir)\$(TargetFileName)&quot;"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="1"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/dehsupp.exe"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(ProjectDir)\$(TargetFileName)&quot;"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\CMakeLists.txt"
>
</File>
<File
RelativePath=".\dehsupp.c"
>
</File>
<File
RelativePath=".\dehsupp.h"
>
</File>
<File
RelativePath=".\parse.c"
>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\parse.h"
>
</File>
<File
RelativePath=".\parse.y"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating parse.c from parse.y"
CommandLine="..\lemon\lemon.exe -s &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)parse.c;$(InputDir)parse.h"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating parse.c from parse.y"
CommandLine="..\lemon\lemon.exe -s &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)parse.c"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating parse.c from parse.y"
CommandLine="..\lemon\lemon.exe -s &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)parse.c;$(InputDir)parse.h"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating parse.c from parse.y"
CommandLine="..\lemon\lemon.exe -s &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)parse.c"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\scanner.c"
>
</File>
<File
RelativePath=".\scanner.re"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating scanner.c from scanner.re"
CommandLine="..\re2c\re2c -s --no-generation-date -o &quot;scanner.c&quot; &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)scanner.c"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating scanner.c from scanner.re"
CommandLine="..\re2c\re2c -s -o &quot;scanner.c&quot; &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)scanner.c"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating scanner.c from scanner.re"
CommandLine="..\re2c\re2c -s --no-generation-date -o &quot;scanner.c&quot; &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)scanner.c"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating scanner.c from scanner.re"
CommandLine="..\re2c\re2c -s -o &quot;scanner.c&quot; &quot;$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="$(InputDir)scanner.c"
/>
</FileConfiguration>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

File diff suppressed because it is too large Load diff

View file

@ -1,33 +0,0 @@
#define OR 1
#define XOR 2
#define AND 3
#define MINUS 4
#define PLUS 5
#define MULTIPLY 6
#define DIVIDE 7
#define NEG 8
#define EOI 9
#define PRINT 10
#define LPAREN 11
#define RPAREN 12
#define COMMA 13
#define STRING 14
#define ENDL 15
#define NUM 16
#define Actions 17
#define LBRACE 18
#define RBRACE 19
#define SEMICOLON 20
#define SYM 21
#define OrgHeights 22
#define ActionList 23
#define CodePConv 24
#define OrgSprNames 25
#define StateMap 26
#define FirstState 27
#define SpawnState 28
#define DeathState 29
#define SoundMap 30
#define InfoNames 31
#define ThingBits 32
#define RenderStyles 33

View file

@ -1,152 +0,0 @@
%include{
#include <malloc.h>
#include "dehsupp.h"
}
%token_type {struct Token}
%syntax_error { yyerror("Syntax error"); }
%token_destructor { if ($$.string) free($$.string); }
%left OR.
%left XOR.
%left AND.
%left MINUS PLUS.
%left MULTIPLY DIVIDE.
%left NEG.
%left EOI.
main ::= translation_unit.
translation_unit ::= . /* empty */
translation_unit ::= translation_unit external_declaration.
external_declaration ::= print_statement.
external_declaration ::= actions_def.
external_declaration ::= org_heights_def.
external_declaration ::= action_list_def.
external_declaration ::= codep_conv_def.
external_declaration ::= org_spr_names_def.
external_declaration ::= state_map_def.
external_declaration ::= sound_map_def.
external_declaration ::= info_names_def.
external_declaration ::= thing_bits_def.
external_declaration ::= render_styles_def.
print_statement ::= PRINT LPAREN print_list RPAREN.
{
printf ("\n");
}
print_list ::= . /* EMPTY */
print_list ::= print_item.
print_list ::= print_item COMMA print_list.
print_item ::= STRING(A). { printf ("%s", A.string); }
print_item ::= exp(A). { printf ("%d", A); }
print_item ::= ENDL. { printf ("\n"); }
%type exp {int}
exp(A) ::= NUM(B). { A = B.val; }
exp(A) ::= exp(B) PLUS exp(C). { A = B + C; }
exp(A) ::= exp(B) MINUS exp(C). { A = B - C; }
exp(A) ::= exp(B) MULTIPLY exp(C). { A = B * C; }
exp(A) ::= exp(B) DIVIDE exp(C). { A = B / C; }
exp(A) ::= exp(B) OR exp(C). { A = B | C; }
exp(A) ::= exp(B) AND exp(C). { A = B & C; }
exp(A) ::= exp(B) XOR exp(C). { A = B ^ C; }
exp(A) ::= MINUS exp(B). [NEG] { A = -B; }
exp(A) ::= LPAREN exp(B) RPAREN. { A = B; }
actions_def ::= Actions LBRACE actions_list RBRACE SEMICOLON.
actions_def ::= Actions LBRACE error RBRACE SEMICOLON.
actions_list ::= . /* empty */
actions_list ::= SYM(A). { AddAction (A.string); }
actions_list ::= actions_list COMMA SYM(A). { AddAction (A.string); }
org_heights_def ::= OrgHeights LBRACE org_heights_list RBRACE SEMICOLON.
org_heights_def ::= OrgHeights LBRACE error RBRACE SEMICOLON.
org_heights_list ::= . /* empty */
org_heights_list ::= exp(A). { AddHeight (A); }
org_heights_list ::= org_heights_list COMMA exp(A). { AddHeight (A); }
action_list_def ::= ActionList LBRACE action_list_list RBRACE SEMICOLON.
action_list_def ::= ActionList LBRACE error RBRACE SEMICOLON.
action_list_list ::= . /* empty */
action_list_list ::= SYM(A). { AddActionMap (A.string); }
action_list_list ::= action_list_list COMMA SYM(A). { AddActionMap (A.string); }
codep_conv_def ::= CodePConv LBRACE codep_conv_list RBRACE SEMICOLON.
codep_conv_def ::= CodePConv LBRACE error RBRACE SEMICOLON.
codep_conv_list ::= . /* empty */
codep_conv_list ::= exp(A). { AddCodeP (A); }
codep_conv_list ::= codep_conv_list COMMA exp(A). { AddCodeP (A); }
org_spr_names_def ::= OrgSprNames LBRACE org_spr_names_list RBRACE SEMICOLON.
org_spr_names_def ::= OrgSprNames LBRACE error RBRACE SEMICOLON.
org_spr_names_list ::= . /* empty */
org_spr_names_list ::= SYM(A). { AddSpriteName (A.string); }
org_spr_names_list ::= org_spr_names_list COMMA SYM(A). { AddSpriteName (A.string); }
state_map_def ::= StateMap LBRACE state_map_list RBRACE SEMICOLON.
state_map_def ::= StateMap LBRACE error RBRACE SEMICOLON.
state_map_list ::= . /* empty */
state_map_list ::= state_map_entry.
state_map_list ::= state_map_list COMMA state_map_entry.
state_map_entry ::= SYM(A) COMMA state_type(B) COMMA exp(C). { AddStateMap (A.string, B, C); }
%type state_type {int}
state_type(A) ::= FirstState. { A = 0; }
state_type(A) ::= SpawnState. { A = 1; }
state_type(A) ::= DeathState. { A = 2; }
sound_map_def ::= SoundMap LBRACE sound_map_list RBRACE SEMICOLON.
sound_map_def ::= SoundMap LBRACE error RBRACE SEMICOLON.
sound_map_list ::= . /* empty */
sound_map_list ::= STRING(A). { AddSoundMap (A.string); }
sound_map_list ::= sound_map_list COMMA STRING(A). { AddSoundMap (A.string); }
info_names_def ::= InfoNames LBRACE info_names_list RBRACE SEMICOLON.
info_names_def ::= InfoNames LBRACE error RBRACE SEMICOLON.
info_names_list ::= . /* empty */
info_names_list ::= SYM(A). { AddInfoName (A.string); }
info_names_list ::= info_names_list COMMA SYM(A). { AddInfoName (A.string); }
thing_bits_def ::= ThingBits LBRACE thing_bits_list RBRACE SEMICOLON.
thing_bits_def ::= ThingBits LBRACE error RBRACE SEMICOLON.
thing_bits_list ::= . /* empty */
thing_bits_list ::= thing_bits_entry.
thing_bits_list ::= thing_bits_list COMMA thing_bits_entry.
thing_bits_entry ::= exp(A) COMMA exp(B) COMMA SYM(C). { AddThingBits (C.string, A, B); }
render_styles_def ::= RenderStyles LBRACE render_styles_list RBRACE SEMICOLON.
render_styles_def ::= RenderStyles LBRACE error RBRACE SEMICOLON.
render_styles_list ::= . /* empty */
render_styles_list ::= render_styles_entry.
render_styles_list ::= render_styles_list COMMA render_styles_entry.
render_styles_entry ::= exp(A) COMMA SYM(B). { AddRenderStyle (B.string, A); }

File diff suppressed because it is too large Load diff

View file

@ -1,179 +0,0 @@
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include "dehsupp.h"
#define BSIZE 8192
#define YYCTYPE uchar
#define YYCURSOR cursor
#define YYLIMIT s->lim
#define YYMARKER s->ptr
#define YYFILL(n) {cursor = fill(s, cursor);}
#define RET(i) {s->cur = cursor; return i;}
uchar *fill(Scanner *s, uchar *cursor)
{
if(!s->eof)
{
ptrdiff_t cnt = s->tok - s->bot;
if(cnt)
{
memcpy(s->bot, s->tok, s->lim - s->tok);
s->tok = s->bot;
s->ptr -= cnt;
cursor -= cnt;
s->pos -= cnt;
s->lim -= cnt;
}
if((s->top - s->lim) < BSIZE)
{
uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar));
memcpy(buf, s->tok, s->lim - s->tok);
s->tok = buf;
s->ptr = &buf[s->ptr - s->bot];
cursor = &buf[cursor - s->bot];
s->pos = &buf[s->pos - s->bot];
s->lim = &buf[s->lim - s->bot];
s->top = &s->lim[BSIZE];
free(s->bot);
s->bot = buf;
}
if((cnt = fread((char*) s->lim, 1, BSIZE, s->fd)) != BSIZE)
{
s->eof = &s->lim[cnt]; *(s->eof)++ = '\n';
}
s->lim += cnt;
}
return cursor;
}
int scan(Scanner *s)
{
uchar *cursor = s->cur;
std:
s->tok = cursor;
/*!re2c
any = [\000-\377];
O = [0-7];
D = [0-9];
L = [a-zA-Z_];
H = [a-fA-F0-9];
ESC = [\\] ([abfnrtv?'"\\] | "x" H+ | O+);
*/
/*!re2c
"/*" { goto comment; } /* C comment */
"//" (any\"\n")* "\n" /* C++ comment */
{
if(cursor == s->eof) RET(EOI);
s->tok = s->pos = cursor; s->line++;
goto std;
}
"endl" { RET(ENDL); }
"print" { RET(PRINT); }
"Actions" { RET(Actions); }
"OrgHeights" { RET(OrgHeights); }
"ActionList" { RET(ActionList); }
"CodePConv" { RET(CodePConv); }
"OrgSprNames" { RET(OrgSprNames); }
"StateMap" { RET(StateMap); }
"SoundMap" { RET(SoundMap); }
"InfoNames" { RET(InfoNames); }
"ThingBits" { RET(ThingBits); }
"DeathState" { RET(DeathState); }
"SpawnState" { RET(SpawnState); }
"FirstState" { RET(FirstState); }
"RenderStyles" { RET(RenderStyles); }
L (L|D)* { RET(SYM); }
("0" [xX] H+) | ("0" D+) | (D+)
{ RET(NUM); }
(["] (ESC|any\[\n\\"])* ["])
{ RET(STRING); }
[ \t\v\f]+ { goto std; }
"|" { RET(OR); }
"^" { RET(XOR); }
"&" { RET(AND); }
"-" { RET(MINUS); }
"+" { RET(PLUS); }
"*" { RET(MULTIPLY); }
"/" { RET(DIVIDE); }
"(" { RET(LPAREN); }
")" { RET(RPAREN); }
"," { RET(COMMA); }
"{" { RET(LBRACE); }
"}" { RET(RBRACE); }
";" { RET(SEMICOLON); }
"\n"
{
if(cursor == s->eof) RET(EOI);
s->pos = cursor; s->line++;
goto std;
}
any
{
if (*s->tok != '\r')
{
printf("unexpected character: %c (%#02x)\n", *s->tok, *s->tok);
}
goto std;
}
*/
comment:
/*!re2c
"*/" { goto std; }
"\n"
{
if(cursor == s->eof) RET(EOI);
s->tok = s->pos = cursor; s->line++;
goto comment;
}
any { goto comment; }
*/
}
int lex(Scanner *s, struct Token *tok)
{
int tokentype = scan(s);
char *p, *q;
tok->val = 0;
tok->string = NULL;
switch (tokentype)
{
case NUM:
tok->val = strtol((char *)s->tok, NULL, 0);
break;
case STRING:
tok->string = (char *)malloc(s->cur - s->tok - 1);
strncpy(tok->string, (char *)s->tok + 1, s->cur - s->tok - 2);
tok->string[s->cur - s->tok - 2] = '\0';
for (p = q = tok->string; *p; ++p, ++q)
{
if (p[0] == '\\' && p[1] == '\\')
++p;
*q = *p;
}
break;
case SYM:
tok->string = (char *)malloc(s->cur - s->tok + 1);
strncpy(tok->string, (char *)s->tok, s->cur - s->tok);
tok->string[s->cur - s->tok] = '\0';
break;
}
return tokentype;
}

View file

@ -1,13 +1,9 @@
cmake_minimum_required( VERSION 2.4 ) cmake_minimum_required( VERSION 2.4 )
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated/dehsupp.lmp
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/generated
COMMAND ${CMAKE_BINARY_DIR}/tools/dehsupp/dehsupp ${CMAKE_CURRENT_SOURCE_DIR}/sources/dehsupp.txt ${CMAKE_CURRENT_BINARY_DIR}/generated/dehsupp.lmp
DEPENDS dehsupp ${CMAKE_CURRENT_SOURCE_DIR}/sources/dehsupp.txt )
add_custom_command( OUTPUT ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 add_custom_command( OUTPUT ${ZDOOM_OUTPUT_DIR}/zdoom.pk3
COMMAND ${CMAKE_BINARY_DIR}/tools/zipdir/zipdir -uf ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 ${CMAKE_CURRENT_SOURCE_DIR}/static ${CMAKE_CURRENT_BINARY_DIR}/generated COMMAND ${CMAKE_BINARY_DIR}/tools/zipdir/zipdir -uf ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 ${CMAKE_CURRENT_SOURCE_DIR}/static ${CMAKE_CURRENT_BINARY_DIR}/generated
DEPENDS zipdir ${CMAKE_CURRENT_BINARY_DIR}/generated/dehsupp.lmp ${CMAKE_CURRENT_SOURCE_DIR}/static ) DEPENDS zipdir ${CMAKE_CURRENT_SOURCE_DIR}/static )
add_custom_target( pk3 ALL add_custom_target( pk3 ALL
DEPENDS ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 ) DEPENDS ${ZDOOM_OUTPUT_DIR}/zdoom.pk3 )

Binary file not shown.

View file

@ -781,3 +781,20 @@ ACTOR BrainStem 81
} }
} }
// Grey stalagmite (unused Doom sprite, definition taken from Skulltag -----
ACTOR Stalagmite 5050
{
Game Doom
Radius 16
Height 48
+SOLID
States
{
Spawn:
SMT2 A -1
Stop
}
}

View file

@ -69,9 +69,10 @@ ACTOR DoomUnusedStates
{ {
States States
{ {
Label1:
SMT2 A -1 SMT2 A -1
stop stop
Death: Label2:
PLAY N -1 PLAY N -1
stop stop
PLAY S -1 PLAY S -1

View file

@ -44,14 +44,18 @@ ACTOR DoomPlayer : PlayerPawn
PLAY G 4 A_Pain PLAY G 4 A_Pain
Goto Spawn Goto Spawn
Death: Death:
PLAY H 10 A_PlayerSkinCheck("AltSkinDeath") PLAY H 0 A_PlayerSkinCheck("AltSkinDeath")
Death1:
PLAY H 10
PLAY I 10 A_PlayerScream PLAY I 10 A_PlayerScream
PLAY J 10 A_NoBlocking PLAY J 10 A_NoBlocking
PLAY KLM 10 PLAY KLM 10
PLAY N -1 PLAY N -1
Stop Stop
XDeath: XDeath:
PLAY O 5 A_PlayerSkinCheck("AltSkinXDeath") PLAY O 0 A_PlayerSkinCheck("AltSkinXDeath")
XDeath1:
PLAY O 5
PLAY P 5 A_XScream PLAY P 5 A_XScream
PLAY Q 5 A_NoBlocking PLAY Q 5 A_NoBlocking
PLAY RSTUV 5 PLAY RSTUV 5

View file

@ -1,107 +1,3 @@
Actions
{
NULL,
MonsterRail,
FireRailgun,
FireRailgunLeft,
FireRailgunRight,
RailWait,
Light0,
WeaponReady,
Lower,
Raise,
Punch,
ReFire,
FirePistol,
Light1,
FireShotgun,
Light2,
FireShotgun2,
CheckReload,
OpenShotgun2,
LoadShotgun2,
CloseShotgun2,
FireCGun,
GunFlash,
FireMissile,
Saw,
FirePlasma,
BFGsound,
FireBFG,
BFGSpray,
Explode,
Pain,
PlayerScream,
Fall,
XScream,
Look,
Chase,
FaceTarget,
PosAttack,
Scream,
SPosAttack,
VileChase,
VileStart,
VileTarget,
VileAttack,
StartFire,
Fire,
FireCrackle,
Tracer,
SkelWhoosh,
SkelFist,
SkelMissile,
FatRaise,
FatAttack1,
FatAttack2,
FatAttack3,
BossDeath,
CPosAttack,
CPosRefire,
TroopAttack,
SargAttack,
HeadAttack,
BruisAttack,
SkullAttack,
Metal,
SpidRefire,
BabyMetal,
BspiAttack,
Hoof,
CyberAttack,
PainAttack,
PainDie,
KeenDie,
BrainPain,
BrainScream,
BrainDie,
BrainAwake,
BrainSpit,
SpawnSound,
SpawnFly,
BrainExplode,
Die,
Detonate,
Mushroom,
// Additional stuff
SetFloorClip,
UnSetFloorClip,
HideThing,
UnHideThing,
SetInvulnerable,
UnSetInvulnerable,
SetReflective,
UnSetReflective,
SetReflectiveInvulnerable,
UnSetReflectiveInvulnerable,
SetShootable,
UnSetShootable,
NoGravity,
Gravity,
LowGravity
};
OrgHeights OrgHeights
{ {
56, 56, 56, 56, 16, 56, 8, 16, 64, 8, 56, 56, 56, 56, 56, 56, 16, 56, 8, 16, 64, 8, 56, 56,
@ -329,140 +225,142 @@ OrgSprNames
StateMap StateMap
{ {
// S_NULL is implicit // S_NULL is implicit
Weapon, FirstState, 1, // S_LIGHTDONE Weapon, LightDone, 1, // S_LIGHTDONE
Fist, FirstState, 8, // S_PUNCH - S_PUNCH5 Fist, Ready, 8, // S_PUNCH - S_PUNCH5
Pistol, FirstState, 8, // S_PISTOL - S_PISTOLFLASH Pistol, Ready, 8, // S_PISTOL - S_PISTOLFLASH
Shotgun, FirstState, 14, // S_SGUN - S_SGUNFLASH2 Shotgun, Ready, 14, // S_SGUN - S_SGUNFLASH2
SuperShotgun, FirstState, 17, // S_DSGUN - S_DSGUNFLASH2 SuperShotgun, Ready, 17, // S_DSGUN - S_DSGUNFLASH2
Chaingun, FirstState, 8, // S_CHAIN - S_CHAINFLASH2 Chaingun, Ready, 8, // S_CHAIN - S_CHAINFLASH2
RocketLauncher, FirstState, 10, // S_MISSILE - S_MISSILEFLASH4 RocketLauncher, Ready, 10, // S_MISSILE - S_MISSILEFLASH4
Chainsaw, FirstState, 7, // S_SAW - S_SAW3 Chainsaw, Ready, 7, // S_SAW - S_SAW3
PlasmaRifle, FirstState, 7, // S_PLASMA - S_PLASMAFLASH2 PlasmaRifle, Ready, 7, // S_PLASMA - S_PLASMAFLASH2
BFG9000, FirstState, 9, // S_BFG - S_BFGFLASH2 BFG9000, Ready, 9, // S_BFG - S_BFGFLASH2
Blood, FirstState, 3, // S_BLOOD1 - S_BLOOD3 Blood, Spawn, 3, // S_BLOOD1 - S_BLOOD3
BulletPuff, FirstState, 4, // S_PUFF1 - S_PUFF4 BulletPuff, Spawn, 4, // S_PUFF1 - S_PUFF4
DoomImpBall, FirstState, 5, // S_TBALL1 - S_TBALLX3 DoomImpBall, Spawn, 5, // S_TBALL1 - S_TBALLX3
CacodemonBall, FirstState, 5, // S_RBALL1 - S_RBALLX3 CacodemonBall, Spawn, 5, // S_RBALL1 - S_RBALLX3
PlasmaBall, FirstState, 7, // S_PLASBALL - S_PLASEXP5 PlasmaBall, Spawn, 7, // S_PLASBALL - S_PLASEXP5
Rocket, SpawnState, 1, // S_ROCKET Rocket, Spawn, 1, // S_ROCKET
BFGBall, SpawnState, 8, // S_BFGSHOT - S_BFGLAND6 BFGBall, Spawn, 8, // S_BFGSHOT - S_BFGLAND6
BFGExtra, SpawnState, 4, // S_BFGEXP - S_BFGEXP4 BFGExtra, Spawn, 4, // S_BFGEXP - S_BFGEXP4
Rocket, DeathState, 3, // S_EXPLODE1 - S_EXPLODE3 Rocket, Death, 3, // S_EXPLODE1 - S_EXPLODE3
TeleportFog, SpawnState, 12, // S_TFOG - S_TFOG10 TeleportFog, Spawn, 12, // S_TFOG - S_TFOG10
ItemFog, SpawnState, 7, // S_IFOG - S_IFOG5 ItemFog, Spawn, 7, // S_IFOG - S_IFOG5
DoomPlayer, FirstState, 25, // S_PLAY - S_PLAY_XDIE9 DoomPlayer, Spawn, 9, // S_PLAY - S_PLAY_PAIN2
ZombieMan, FirstState, 33, // S_POSS_STND - S_POSS_RAISE4 DoomPlayer, Death1, 7, // S_PLAY_DIE - S_PLAY_DIE7
ShotgunGuy, FirstState, 34, // S_SPOS_STND - S_SPOS_RAISE5 DoomPlayer, XDeath1, 9, // S_PLAY_XDIE - S_PLAY_XDIE9
Archvile, FirstState, 40, // S_VILE_STND - S_VILE_DIE10 ZombieMan, Spawn, 33, // S_POSS_STND - S_POSS_RAISE4
ArchvileFire, FirstState, 30, // S_FIRE1 - S_FIRE30 ShotgunGuy, Spawn, 34, // S_SPOS_STND - S_SPOS_RAISE5
RevenantTracerSmoke, FirstState, 5, // S_SMOKE1 - S_SMOKE5 Archvile, Spawn, 40, // S_VILE_STND - S_VILE_DIE10
RevenantTracer, FirstState, 5, // S_TRACER - S_TRACEEXP3 ArchvileFire, Spawn, 30, // S_FIRE1 - S_FIRE30
Revenant, FirstState, 36, // S_SKEL_STND - S_SKEL_RAISE6 RevenantTracerSmoke, Spawn, 5, // S_SMOKE1 - S_SMOKE5
FatShot, FirstState, 5, // S_FATSHOT1 - S_FATSHOTX3 RevenantTracer, Spawn, 5, // S_TRACER - S_TRACEEXP3
Fatso, FirstState, 44, // S_FATT_STND - S_FATT_RAISE8 Revenant, Spawn, 36, // S_SKEL_STND - S_SKEL_RAISE6
ChaingunGuy, FirstState, 36, // S_CPOS_STND - S_CPOS_RAISE7 FatShot, Spawn, 5, // S_FATSHOT1 - S_FATSHOTX3
DoomImp, FirstState, 33, // S_TROO_STND - S_TROO_RAISE5 Fatso, Spawn, 44, // S_FATT_STND - S_FATT_RAISE8
Demon, FirstState, 27, // S_SARG_STND - S_SARG_RAISE6 ChaingunGuy, Spawn, 36, // S_CPOS_STND - S_CPOS_RAISE7
Cacodemon, FirstState, 20, // S_HEAD_STND - S_HEAD_RAISE6 DoomImp, Spawn, 33, // S_TROO_STND - S_TROO_RAISE5
BaronBall, FirstState, 5, // S_BRBALL1 - S_BRBALLX3 Demon, Spawn, 27, // S_SARG_STND - S_SARG_RAISE6
BaronOfHell, FirstState, 29, // S_BOSS_STND - S_BOSS_RAISE7 Cacodemon, Spawn, 20, // S_HEAD_STND - S_HEAD_RAISE6
HellKnight, FirstState, 29, // S_BOS2_STND - S_BOS2_RAISE7 BaronBall, Spawn, 5, // S_BRBALL1 - S_BRBALLX3
LostSoul, FirstState, 16, // S_SKULL_STND - S_SKULL_DIE6 BaronOfHell, Spawn, 29, // S_BOSS_STND - S_BOSS_RAISE7
SpiderMastermind, FirstState, 31, // S_SPID_STND - S_SPID_DIE11 HellKnight, Spawn, 29, // S_BOS2_STND - S_BOS2_RAISE7
Arachnotron, FirstState, 35, // S_BSPI_STND - S_BSPI_RAISE7 LostSoul, Spawn, 16, // S_SKULL_STND - S_SKULL_DIE6
ArachnotronPlasma, FirstState, 7, // S_ARACH_PLAZ - S_ARACH_PLEX5 SpiderMastermind, Spawn, 31, // S_SPID_STND - S_SPID_DIE11
Cyberdemon, FirstState, 27, // S_CYBER_STND - S_CYBER_DIE10 Arachnotron, Spawn, 35, // S_BSPI_STND - S_BSPI_RAISE7
PainElemental, FirstState, 25, // S_PAIN_STND - S_PAIN_RAISE6 ArachnotronPlasma, Spawn, 7, // S_ARACH_PLAZ - S_ARACH_PLEX5
WolfensteinSS, FirstState, 37, // S_SSWV_STND - S_SSWV_RAISE5 Cyberdemon, Spawn, 27, // S_CYBER_STND - S_CYBER_DIE10
CommanderKeen, FirstState, 15, // S_KEENSTND - S_KEENPAIN2 PainElemental, Spawn, 25, // S_PAIN_STND - S_PAIN_RAISE6
BossBrain, SpawnState, 6, // S_BRAIN - S_BRAIN_DIE4 WolfensteinSS, Spawn, 37, // S_SSWV_STND - S_SSWV_RAISE5
BossEye, FirstState, 3, // S_BRAINEYE - S_BRAINEYE1 CommanderKeen, Spawn, 15, // S_KEENSTND - S_KEENPAIN2
SpawnShot, FirstState, 4, // S_SPAWN1 - S_SPAWN4 BossBrain, Spawn, 6, // S_BRAIN - S_BRAIN_DIE4
SpawnFire, FirstState, 8, // S_SPAWNFIRE1 - S_SPAWNFIRE8 BossEye, Spawn, 3, // S_BRAINEYE - S_BRAINEYE1
BossBrain, FirstState, 3, // S_BRAINEXPLODE1 - S_BRAINEXPLODE3 SpawnShot, Spawn, 4, // S_SPAWN1 - S_SPAWN4
GreenArmor, FirstState, 2, // S_ARM1 - S_ARM1A SpawnFire, Spawn, 8, // S_SPAWNFIRE1 - S_SPAWNFIRE8
BlueArmor, FirstState, 2, // S_ARM2 - S_ARM2A BossBrain, BrainExplode, 3, // S_BRAINEXPLODE1 - S_BRAINEXPLODE3
ExplosiveBarrel, FirstState, 7, // S_BAR1 - S_BEXP5 GreenArmor, Spawn, 2, // S_ARM1 - S_ARM1A
BurningBarrel, FirstState, 3, // S_BBAR1 - S_BBAR3 BlueArmor, Spawn, 2, // S_ARM2 - S_ARM2A
HealthBonus, FirstState, 6, // S_BON1 - S_BON1E ExplosiveBarrel, Spawn, 7, // S_BAR1 - S_BEXP5
ArmorBonus, FirstState, 6, // S_BON2 - S_BON2E BurningBarrel, Spawn, 3, // S_BBAR1 - S_BBAR3
BlueCard, FirstState, 2, // S_BKEY - S_BKEY2 HealthBonus, Spawn, 6, // S_BON1 - S_BON1E
RedCard, FirstState, 2, // S_RKEY - S_RKEY2 ArmorBonus, Spawn, 6, // S_BON2 - S_BON2E
YellowCard, FirstState, 2, // S_YKEY - S_YKEY2 BlueCard, Spawn, 2, // S_BKEY - S_BKEY2
BlueSkull, FirstState, 2, // S_BSKULL - S_BSKULL2 RedCard, Spawn, 2, // S_RKEY - S_RKEY2
RedSkull, FirstState, 2, // S_RSKULL - S_RSKULL2 YellowCard, Spawn, 2, // S_YKEY - S_YKEY2
YellowSkull, FirstState, 2, // S_YSKULL - S_YSKULL2 BlueSkull, Spawn, 2, // S_BSKULL - S_BSKULL2
Stimpack, FirstState, 1, // S_STIM RedSkull, Spawn, 2, // S_RSKULL - S_RSKULL2
Medikit, FirstState, 1, // S_MEDI YellowSkull, Spawn, 2, // S_YSKULL - S_YSKULL2
Soulsphere, FirstState, 6, // S_SOUL - S_SOUL6 Stimpack, Spawn, 1, // S_STIM
InvulnerabilitySphere, FirstState, 4, // S_PINV - S_PINV4 Medikit, Spawn, 1, // S_MEDI
Berserk, FirstState, 1, // S_PSTR Soulsphere, Spawn, 6, // S_SOUL - S_SOUL6
BlurSphere, FirstState, 4, // S_PINS - P_PINS4 InvulnerabilitySphere, Spawn, 4, // S_PINV - S_PINV4
Megasphere, FirstState, 4, // S_MEGA - S_MEGA4 Berserk, Spawn, 1, // S_PSTR
RadSuit, FirstState, 1, // S_SUIT BlurSphere, Spawn, 4, // S_PINS - P_PINS4
Allmap, FirstState, 6, // S_PMAP - S_PMAP6 Megasphere, Spawn, 4, // S_MEGA - S_MEGA4
Infrared, FirstState, 2, // S_PVIS - S_PVIS2 RadSuit, Spawn, 1, // S_SUIT
Clip, FirstState, 1, // S_CLIP Allmap, Spawn, 6, // S_PMAP - S_PMAP6
ClipBox, FirstState, 1, // S_AMMO Infrared, Spawn, 2, // S_PVIS - S_PVIS2
RocketAmmo, FirstState, 1, // S_ROCK Clip, Spawn, 1, // S_CLIP
RocketBox, FirstState, 1, // S_BROK ClipBox, Spawn, 1, // S_AMMO
Cell, FirstState, 1, // S_CELL RocketAmmo, Spawn, 1, // S_ROCK
CellPack, FirstState, 1, // S_CELP RocketBox, Spawn, 1, // S_BROK
Shell, FirstState, 1, // S_SHEL Cell, Spawn, 1, // S_CELL
ShellBox, FirstState, 1, // S_SBOX CellPack, Spawn, 1, // S_CELP
Backpack, FirstState, 1, // S_BPAK Shell, Spawn, 1, // S_SHEL
BFG9000, SpawnState, 1, // S_BFUG ShellBox, Spawn, 1, // S_SBOX
Chaingun, SpawnState, 1, // S_MGUN Backpack, Spawn, 1, // S_BPAK
Chainsaw, SpawnState, 1, // S_CSAW BFG9000, Spawn, 1, // S_BFUG
RocketLauncher, SpawnState, 1, // S_LAUN Chaingun, Spawn, 1, // S_MGUN
PlasmaRifle, SpawnState, 1, // S_PLAS Chainsaw, Spawn, 1, // S_CSAW
Shotgun, SpawnState, 1, // S_SHOT RocketLauncher, Spawn, 1, // S_LAUN
SuperShotgun, SpawnState, 1, // S_SHOT2 PlasmaRifle, Spawn, 1, // S_PLAS
Column, FirstState, 1, // S_COLU Shotgun, Spawn, 1, // S_SHOT
DoomUnusedStates, FirstState, 1, // S_STALAG SuperShotgun, Spawn, 1, // S_SHOT2
BloodyTwitch, FirstState, 4, // S_BLOODYTWITCH - S_BLOODYTWITCH4 Column, Spawn, 1, // S_COLU
DoomUnusedStates, DeathState, 2, // S_DEADTORSO - S_DEADBOTTOM DoomUnusedStates, Label1, 1, // S_STALAG
HeadsOnAStick, FirstState, 1, // S_HEADSONSTICK BloodyTwitch, Spawn, 4, // S_BLOODYTWITCH - S_BLOODYTWITCH4
RealGibs, FirstState, 1, // S_GIBS DoomUnusedStates, Label2, 2, // S_DEADTORSO - S_DEADBOTTOM
HeadOnAStick, FirstState, 1, // S_HEADONASTICK HeadsOnAStick, Spawn, 1, // S_HEADSONSTICK
HeadCandles, FirstState, 2, // S_HEADCANDLES - S_HEADCANDLES2 RealGibs, Spawn, 1, // S_GIBS
DeadStick, FirstState, 1, // S_DEADSTICK HeadOnAStick, Spawn, 1, // S_HEADONASTICK
LiveStick, FirstState, 2, // S_LIVESTICK HeadCandles, Spawn, 2, // S_HEADCANDLES - S_HEADCANDLES2
Meat2, FirstState, 1, // S_MEAT2 DeadStick, Spawn, 1, // S_DEADSTICK
Meat3, FirstState, 1, // S_MEAT3 LiveStick, Spawn, 2, // S_LIVESTICK
Meat4, FirstState, 1, // S_MEAT4 Meat2, Spawn, 1, // S_MEAT2
Meat5, FirstState, 1, // S_MEAT5 Meat3, Spawn, 1, // S_MEAT3
Stalagtite, FirstState, 1, // S_STALAGTITE Meat4, Spawn, 1, // S_MEAT4
TallGreenColumn, FirstState, 1, // S_TALLGRNCOL Meat5, Spawn, 1, // S_MEAT5
ShortGreenColumn, FirstState, 1, // S_SHRTGRNCOL Stalagtite, Spawn, 1, // S_STALAGTITE
TallRedColumn, FirstState, 1, // S_TALLREDCOL TallGreenColumn, Spawn, 1, // S_TALLGRNCOL
ShortRedColumn, FirstState, 1, // S_SHRTREDCOL ShortGreenColumn, Spawn, 1, // S_SHRTGRNCOL
Candlestick, FirstState, 1, // S_CANDLESTIK TallRedColumn, Spawn, 1, // S_TALLREDCOL
Candelabra, FirstState, 1, // S_CANDELABRA ShortRedColumn, Spawn, 1, // S_SHRTREDCOL
SkullColumn, FirstState, 1, // S_SKULLCOL Candlestick, Spawn, 1, // S_CANDLESTIK
TorchTree, FirstState, 1, // S_TORCHTREE Candelabra, Spawn, 1, // S_CANDELABRA
BigTree, FirstState, 1, // S_BIGTREE SkullColumn, Spawn, 1, // S_SKULLCOL
TechPillar, FirstState, 1, // S_TECHPILLAR TorchTree, Spawn, 1, // S_TORCHTREE
EvilEye, FirstState, 4, // S_EVILEYE - S_EVILEYE4 BigTree, Spawn, 1, // S_BIGTREE
FloatingSkull, FirstState, 3, // S_FLOATSKULL - S_FLOATSKULL3 TechPillar, Spawn, 1, // S_TECHPILLAR
HeartColumn, FirstState, 2, // S_HEARTCOL - S_HEARTCOL2 EvilEye, Spawn, 4, // S_EVILEYE - S_EVILEYE4
BlueTorch, FirstState, 4, // S_BLUETORCH - S_BLUETORCH4 FloatingSkull, Spawn, 3, // S_FLOATSKULL - S_FLOATSKULL3
GreenTorch, FirstState, 4, // S_GREENTORCH - S_GREENTORCH4 HeartColumn, Spawn, 2, // S_HEARTCOL - S_HEARTCOL2
RedTorch, FirstState, 4, // S_REDTORCH - S_REDTORCH4 BlueTorch, Spawn, 4, // S_BLUETORCH - S_BLUETORCH4
ShortBlueTorch, FirstState, 4, // S_BTORCHSHRT - S_BTORCHSHRT4 GreenTorch, Spawn, 4, // S_GREENTORCH - S_GREENTORCH4
ShortGreenTorch, FirstState, 4, // S_GTORCHSHRT - S_GTORCHSHRT4 RedTorch, Spawn, 4, // S_REDTORCH - S_REDTORCH4
ShortRedTorch, FirstState, 4, // S_RTORCHSHRT - S_RTORCHSHRT4 ShortBlueTorch, Spawn, 4, // S_BTORCHSHRT - S_BTORCHSHRT4
HangNoGuts, FirstState, 1, // S_HANGNOGUTS ShortGreenTorch, Spawn, 4, // S_GTORCHSHRT - S_GTORCHSHRT4
HangBNoBrain, FirstState, 1, // S_HANGBNOBRAIN ShortRedTorch, Spawn, 4, // S_RTORCHSHRT - S_RTORCHSHRT4
HangTLookingDown, FirstState, 1, // S_HANGTLOOKDN HangNoGuts, Spawn, 1, // S_HANGNOGUTS
HangTSkull, FirstState, 1, // S_HANGTSKULL HangBNoBrain, Spawn, 1, // S_HANGBNOBRAIN
HangTLookingUp, FirstState, 1, // S_HANGTLOOKUP HangTLookingDown, Spawn, 1, // S_HANGTLOOKDN
HangTNoBrain, FirstState, 1, // S_HANGTNOBRAIN HangTSkull, Spawn, 1, // S_HANGTSKULL
ColonGibs, FirstState, 1, // S_COLONGIBS HangTLookingUp, Spawn, 1, // S_HANGTLOOKUP
SmallBloodPool, FirstState, 1, // S_SMALLPOOL HangTNoBrain, Spawn, 1, // S_HANGTNOBRAIN
BrainStem, FirstState, 1, // S_BRAINSTEM ColonGibs, Spawn, 1, // S_COLONGIBS
TechLamp, FirstState, 4, // S_TECHLAMP - S_TECHLAMP4 SmallBloodPool, Spawn, 1, // S_SMALLPOOL
TechLamp2, FirstState, 4 // S_TECH2LAMP - S_TECH2LAMP4 BrainStem, Spawn, 1, // S_BRAINSTEM
TechLamp, Spawn, 4, // S_TECHLAMP - S_TECHLAMP4
TechLamp2, Spawn, 4 // S_TECH2LAMP - S_TECH2LAMP4
}; };
// Sound equivalences. When a patch tries to change a sound, use these sound names. // Sound equivalences. When a patch tries to change a sound, use these sound names.
@ -807,3 +705,32 @@ RenderStyles
6, STYLE_Translucent, 6, STYLE_Translucent,
7, STYLE_Add 7, STYLE_Add
}; };
AmmoNames
{
Clip,
Shell,
Cell,
RocketAmmo,
GoldWandAmmo,
NULL,
BlasterAmmo,
SkullRodAmmo,
PhoenixRodAmmo,
MaceAmmo,
Mana1,
Mana2
};
WeaponNames
{
Fist,
Pistol,
Shotgun,
Chaingun,
RocketLauncher,
PlasmaRifle,
BFG9000,
Chainsaw,
SuperShotgun
};

View file

@ -114,50 +114,6 @@
RelativePath=".\CMakeLists.txt" RelativePath=".\CMakeLists.txt"
> >
</File> </File>
<File
RelativePath=".\sources\dehsupp.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Compiling dehsupp.txt..."
CommandLine="&quot;$(SolutionDir)\tools\dehsupp\dehsupp.exe&quot; &quot;$(InputPath)&quot; &quot;$(ProjectDir)\generated\dehsupp.lmp&quot;&#x0D;&#x0A;"
Outputs="$(ProjectDir)\generated\dehsupp.lmp"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Compiling dehsupp.txt..."
CommandLine="&quot;$(SolutionDir)\tools\dehsupp\dehsupp.exe&quot; &quot;$(InputPath)&quot; &quot;$(ProjectDir)\generated\dehsupp.lmp&quot;&#x0D;&#x0A;"
Outputs="$(ProjectDir)\generated\dehsupp.lmp"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Compiling dehsupp.txt..."
CommandLine="&quot;$(SolutionDir)\tools\dehsupp\dehsupp.exe&quot; &quot;$(InputPath)&quot; &quot;$(ProjectDir)\generated\dehsupp.lmp&quot;&#x0D;&#x0A;"
Outputs="$(ProjectDir)\generated\dehsupp.lmp"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Compiling dehsupp.txt..."
CommandLine="&quot;$(SolutionDir)\tools\dehsupp\dehsupp.exe&quot; &quot;$(InputPath)&quot; &quot;$(ProjectDir)\generated\dehsupp.lmp&quot;&#x0D;&#x0A;"
Outputs="$(ProjectDir)\generated\dehsupp.lmp"
/>
</FileConfiguration>
</File>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>

View file

@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00 Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005 # Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zdoom", "zdoom.vcproj", "{8049475B-5C87-46F9-9358-635218A4EF18}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zdoom", "zdoom.vcproj", "{8049475B-5C87-46F9-9358-635218A4EF18}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{E83FD370-2E72-4D4C-9427-FF9D9DED1E88} = {E83FD370-2E72-4D4C-9427-FF9D9DED1E88} {E83FD370-2E72-4D4C-9427-FF9D9DED1E88} = {E83FD370-2E72-4D4C-9427-FF9D9DED1E88}
@ -24,16 +24,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "re2c", "tools\re2c\re2c.vcp
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wadsrc", "wadsrc\wadsrc.vcproj", "{1D179D4B-F008-431B-8C72-111F8372584F}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wadsrc", "wadsrc\wadsrc.vcproj", "{1D179D4B-F008-431B-8C72-111F8372584F}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8} = {AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}
{24A19C02-F041-4AB0-A1A1-02E1E88EDBD3} = {24A19C02-F041-4AB0-A1A1-02E1E88EDBD3} {24A19C02-F041-4AB0-A1A1-02E1E88EDBD3} = {24A19C02-F041-4AB0-A1A1-02E1E88EDBD3}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dehsupp", "tools\dehsupp\dehsupp.vcproj", "{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}"
ProjectSection(ProjectDependencies) = postProject
{667D2EE7-C357-49E2-9BAB-0A4A45F0F76E} = {667D2EE7-C357-49E2-9BAB-0A4A45F0F76E}
{0F80ACBF-460E-44F0-B28E-B3272D1774A7} = {0F80ACBF-460E-44F0-B28E-B3272D1774A7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "updaterevision", "tools\updaterevision\updaterevision.vcproj", "{6077B7D6-349F-4077-B552-3BC302EF5859}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "updaterevision", "tools\updaterevision\updaterevision.vcproj", "{6077B7D6-349F-4077-B552-3BC302EF5859}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg-6b", "jpeg-6b\jpeg-6b.vcproj", "{AC3F5340-40CB-4C3A-8AA7-CB7158DB4466}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg-6b", "jpeg-6b\jpeg-6b.vcproj", "{AC3F5340-40CB-4C3A-8AA7-CB7158DB4466}"
@ -105,14 +98,6 @@ Global
{1D179D4B-F008-431B-8C72-111F8372584F}.Release|Win32.Build.0 = Release|Win32 {1D179D4B-F008-431B-8C72-111F8372584F}.Release|Win32.Build.0 = Release|Win32
{1D179D4B-F008-431B-8C72-111F8372584F}.Release|x64.ActiveCfg = Release|Win32 {1D179D4B-F008-431B-8C72-111F8372584F}.Release|x64.ActiveCfg = Release|Win32
{1D179D4B-F008-431B-8C72-111F8372584F}.Release|x64.Build.0 = Release|Win32 {1D179D4B-F008-431B-8C72-111F8372584F}.Release|x64.Build.0 = Release|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Debug|Win32.ActiveCfg = Debug|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Debug|Win32.Build.0 = Debug|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Debug|x64.ActiveCfg = Release|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Debug|x64.Build.0 = Release|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Release|Win32.ActiveCfg = Release|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Release|Win32.Build.0 = Release|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Release|x64.ActiveCfg = Release|Win32
{AC64EE8F-F019-4A3E-BCAF-BD1FD072B9C8}.Release|x64.Build.0 = Release|Win32
{6077B7D6-349F-4077-B552-3BC302EF5859}.Debug|Win32.ActiveCfg = Debug|Win32 {6077B7D6-349F-4077-B552-3BC302EF5859}.Debug|Win32.ActiveCfg = Debug|Win32
{6077B7D6-349F-4077-B552-3BC302EF5859}.Debug|Win32.Build.0 = Debug|Win32 {6077B7D6-349F-4077-B552-3BC302EF5859}.Debug|Win32.Build.0 = Debug|Win32
{6077B7D6-349F-4077-B552-3BC302EF5859}.Debug|x64.ActiveCfg = Debug|x64 {6077B7D6-349F-4077-B552-3BC302EF5859}.Debug|x64.ActiveCfg = Debug|x64