0
0
Fork 0
mirror of https://github.com/ZDoom/raze-gles.git synced 2025-03-01 14:41:06 +00:00

CON cleanup/tweaks. This improves the game update time by about 5% in some of my test scenarios.

git-svn-id: https://svn.eduke32.com/eduke32@7261 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2018-12-15 01:37:49 +00:00
parent 0bbde29c85
commit 72d80890e2
3 changed files with 587 additions and 717 deletions

View file

@ -144,19 +144,19 @@ static tokenmap_t const vm_keywords[] =
{ "addammo", CON_ADDAMMO }, { "addammo", CON_ADDAMMO },
{ "addinventory", CON_ADDINVENTORY }, { "addinventory", CON_ADDINVENTORY },
{ "addkills", CON_ADDKILLS }, { "addkills", CON_ADDKILLS },
{ "addlog", CON_ADDLOG }, { "addlog", CON_ADDLOGVAR },
{ "addlogvar", CON_ADDLOGVAR }, { "addlogvar", CON_ADDLOGVAR },
{ "addphealth", CON_ADDPHEALTH }, { "addphealth", CON_ADDPHEALTH },
{ "addstrength", CON_ADDSTRENGTH }, { "addstrength", CON_ADDSTRENGTH },
{ "addvar", CON_ADDVAR }, { "addvar", CON_ADDVAR },
{ "addvarvar", CON_ADDVARVAR }, { "addvarvar", CON_ADDVARVAR },
{ "addweapon", CON_ADDWEAPON }, { "addweapon", CON_ADDWEAPON },
{ "addweaponvar", CON_ADDWEAPONVAR }, { "addweaponvar", CON_ADDWEAPON },
{ "ai", CON_AI }, { "ai", CON_AI },
{ "andvar", CON_ANDVAR }, { "andvar", CON_ANDVAR },
{ "andvarvar", CON_ANDVARVAR }, { "andvarvar", CON_ANDVARVAR },
{ "angoff", CON_ANGOFF }, { "angoff", CON_ANGOFF },
{ "angoffvar", CON_ANGOFFVAR }, { "angoffvar", CON_ANGOFF },
{ "appendevent", CON_APPENDEVENT }, { "appendevent", CON_APPENDEVENT },
{ "betaname", CON_BETANAME }, { "betaname", CON_BETANAME },
{ "break", CON_BREAK }, { "break", CON_BREAK },
@ -225,18 +225,18 @@ static tokenmap_t const vm_keywords[] =
{ "ends", CON_ENDS }, { "ends", CON_ENDS },
{ "endswitch", CON_ENDSWITCH }, { "endswitch", CON_ENDSWITCH },
{ "enhanced", CON_ENHANCED }, { "enhanced", CON_ENHANCED },
{ "eqspawnvar", CON_EQSPAWNVAR }, { "eqspawnvar", CON_EQSPAWN },
{ "eshootvar", CON_ESHOOTVAR }, { "eshootvar", CON_ESHOOT },
{ "espawnvar", CON_ESPAWNVAR }, { "espawnvar", CON_ESPAWN },
{ "eventloadactor", CON_EVENTLOADACTOR }, { "eventloadactor", CON_EVENTLOADACTOR },
{ "ezshootvar", CON_EZSHOOTVAR }, { "ezshootvar", CON_EZSHOOT },
{ "fall", CON_FALL }, { "fall", CON_FALL },
{ "findnearactor3dvar", CON_FINDNEARACTOR3DVAR }, { "findnearactor3dvar", CON_FINDNEARACTOR3D },
{ "findnearactorvar", CON_FINDNEARACTORVAR }, { "findnearactorvar", CON_FINDNEARACTOR },
{ "findnearactorzvar", CON_FINDNEARACTORZVAR }, { "findnearactorzvar", CON_FINDNEARACTORZ },
{ "findnearsprite3dvar", CON_FINDNEARSPRITE3DVAR }, { "findnearsprite3dvar", CON_FINDNEARSPRITE3D },
{ "findnearspritevar", CON_FINDNEARSPRITEVAR }, { "findnearspritevar", CON_FINDNEARSPRITE },
{ "findnearspritezvar", CON_FINDNEARSPRITEZVAR }, { "findnearspritezvar", CON_FINDNEARSPRITEZ },
{ "findotherplayer", CON_FINDOTHERPLAYER }, { "findotherplayer", CON_FINDOTHERPLAYER },
{ "findplayer", CON_FINDPLAYER }, { "findplayer", CON_FINDPLAYER },
{ "flash", CON_FLASH }, { "flash", CON_FLASH },
@ -278,14 +278,14 @@ static tokenmap_t const vm_keywords[] =
{ "getwall", CON_GETWALL }, { "getwall", CON_GETWALL },
{ "getzrange", CON_GETZRANGE }, { "getzrange", CON_GETZRANGE },
{ "globalsound", CON_GLOBALSOUND }, { "globalsound", CON_GLOBALSOUND },
{ "globalsoundvar", CON_GLOBALSOUNDVAR }, { "globalsoundvar", CON_GLOBALSOUND },
{ "gmaxammo", CON_GMAXAMMO }, { "gmaxammo", CON_GMAXAMMO },
{ "guniqhudid", CON_GUNIQHUDID }, { "guniqhudid", CON_GUNIQHUDID },
{ "guts", CON_GUTS }, { "guts", CON_GUTS },
{ "headspritesect", CON_HEADSPRITESECT }, { "headspritesect", CON_HEADSPRITESECT },
{ "headspritestat", CON_HEADSPRITESTAT }, { "headspritestat", CON_HEADSPRITESTAT },
{ "hitradius", CON_HITRADIUS }, { "hitradius", CON_HITRADIUS },
{ "hitradiusvar", CON_HITRADIUSVAR }, { "hitradiusvar", CON_HITRADIUS },
{ "hitscan", CON_HITSCAN }, { "hitscan", CON_HITSCAN },
{ "ifaction", CON_IFACTION }, { "ifaction", CON_IFACTION },
{ "ifactioncount", CON_IFACTIONCOUNT }, { "ifactioncount", CON_IFACTIONCOUNT },
@ -416,7 +416,7 @@ static tokenmap_t const vm_keywords[] =
{ "preloadtrackslotforswap", CON_PRELOADTRACKSLOTFORSWAP }, { "preloadtrackslotforswap", CON_PRELOADTRACKSLOTFORSWAP },
{ "pstomp", CON_PSTOMP }, { "pstomp", CON_PSTOMP },
{ "qgetsysstr", CON_QGETSYSSTR }, { "qgetsysstr", CON_QGETSYSSTR },
{ "qspawnvar", CON_QSPAWNVAR }, { "qspawnvar", CON_QSPAWN },
{ "qsprintf", CON_QSPRINTF }, { "qsprintf", CON_QSPRINTF },
{ "qstrcat", CON_QSTRCAT }, { "qstrcat", CON_QSTRCAT },
{ "qstrcmp", CON_QSTRCMP }, { "qstrcmp", CON_QSTRCMP },
@ -488,7 +488,7 @@ static tokenmap_t const vm_keywords[] =
{ "shiftvarr", CON_SHIFTVARR }, { "shiftvarr", CON_SHIFTVARR },
{ "shiftvarvarl", CON_SHIFTVARVARL }, { "shiftvarvarl", CON_SHIFTVARVARL },
{ "shiftvarvarr", CON_SHIFTVARVARR }, { "shiftvarvarr", CON_SHIFTVARVARR },
{ "shootvar", CON_SHOOTVAR }, { "shootvar", CON_SHOOT },
{ "showview", CON_SHOWVIEW }, { "showview", CON_SHOWVIEW },
{ "showviewunbiased", CON_SHOWVIEWUNBIASED }, { "showviewunbiased", CON_SHOWVIEWUNBIASED },
{ "showviewq16", CON_SHOWVIEWQ16 }, { "showviewq16", CON_SHOWVIEWQ16 },
@ -500,8 +500,8 @@ static tokenmap_t const vm_keywords[] =
{ "smaxammo", CON_SMAXAMMO }, { "smaxammo", CON_SMAXAMMO },
{ "sound", CON_SOUND }, { "sound", CON_SOUND },
{ "soundonce", CON_SOUNDONCE }, { "soundonce", CON_SOUNDONCE },
{ "soundoncevar", CON_SOUNDONCEVAR }, { "soundoncevar", CON_SOUNDONCE },
{ "soundvar", CON_SOUNDVAR }, { "soundvar", CON_SOUND },
{ "spawn", CON_SPAWN }, { "spawn", CON_SPAWN },
{ "spawnceilingglass", CON_SPAWNCEILINGGLASS }, { "spawnceilingglass", CON_SPAWNCEILINGGLASS },
{ "spawnwallstainedglass", CON_SPAWNWALLSTAINEDGLASS }, { "spawnwallstainedglass", CON_SPAWNWALLSTAINEDGLASS },
@ -521,13 +521,13 @@ static tokenmap_t const vm_keywords[] =
{ "startscreen", CON_STARTSCREEN }, { "startscreen", CON_STARTSCREEN },
{ "starttrack", CON_STARTTRACK }, { "starttrack", CON_STARTTRACK },
{ "starttrackslot", CON_STARTTRACKSLOT }, { "starttrackslot", CON_STARTTRACKSLOT },
{ "starttrackvar", CON_STARTTRACKVAR }, { "starttrackvar", CON_STARTTRACK },
{ "state", CON_STATE }, { "state", CON_STATE },
{ "stopactorsound", CON_STOPACTORSOUND }, { "stopactorsound", CON_STOPACTORSOUND },
{ "stopallmusic", CON_STOPALLMUSIC }, { "stopallmusic", CON_STOPALLMUSIC },
{ "stopallsounds", CON_STOPALLSOUNDS }, { "stopallsounds", CON_STOPALLSOUNDS },
{ "stopsound", CON_STOPSOUND }, { "stopsound", CON_STOPSOUND },
{ "stopsoundvar", CON_STOPSOUNDVAR }, { "stopsoundvar", CON_STOPSOUND },
{ "strength", CON_STRENGTH }, { "strength", CON_STRENGTH },
{ "subvar", CON_SUBVAR }, { "subvar", CON_SUBVAR },
{ "subvarvar", CON_SUBVARVAR }, { "subvarvar", CON_SUBVARVAR },
@ -554,7 +554,7 @@ static tokenmap_t const vm_keywords[] =
{ "writearraytofile", CON_WRITEARRAYTOFILE }, { "writearraytofile", CON_WRITEARRAYTOFILE },
{ "xorvar", CON_XORVAR }, { "xorvar", CON_XORVAR },
{ "xorvarvar", CON_XORVARVAR }, { "xorvarvar", CON_XORVARVAR },
{ "zshootvar", CON_ZSHOOTVAR }, { "zshootvar", CON_ZSHOOT },
{ "{", CON_LEFTBRACE }, { "{", CON_LEFTBRACE },
{ "}", CON_RIGHTBRACE }, { "}", CON_RIGHTBRACE },
@ -621,22 +621,22 @@ static tokenmap_t const vm_keywords[] =
{ "qputs", CON_REDEFINEQUOTE }, { "qputs", CON_REDEFINEQUOTE },
{ "espawn", CON_ESPAWNVAR }, { "espawn", CON_ESPAWN },
{ "qspawn", CON_QSPAWNVAR }, { "qspawn", CON_QSPAWN },
{ "eqspawn", CON_EQSPAWNVAR }, { "eqspawn", CON_EQSPAWN },
{ "eshoot", CON_ESHOOTVAR }, { "eshoot", CON_ESHOOT },
{ "zshoot", CON_ZSHOOTVAR }, { "zshoot", CON_ZSHOOT },
{ "ezshoot", CON_EZSHOOTVAR }, { "ezshoot", CON_EZSHOOT },
{ "shoot", CON_SHOOTVAR }, { "shoot", CON_SHOOT },
{ "findnearactor", CON_FINDNEARACTORVAR }, { "findnearactor", CON_FINDNEARACTOR },
{ "findnearactor3d", CON_FINDNEARACTOR3DVAR }, { "findnearactor3d", CON_FINDNEARACTOR3D },
{ "findnearactorz", CON_FINDNEARACTORZVAR }, { "findnearactorz", CON_FINDNEARACTORZ },
{ "findnearsprite", CON_FINDNEARSPRITEVAR }, { "findnearsprite", CON_FINDNEARSPRITE },
{ "findnearsprite3d", CON_FINDNEARSPRITE3DVAR }, { "findnearsprite3d", CON_FINDNEARSPRITE3D },
{ "findnearspritez", CON_FINDNEARSPRITEZVAR }, { "findnearspritez", CON_FINDNEARSPRITEZ },
}; };
static const vec2_t varvartable[] = static const vec2_t varvartable[] =
@ -3099,7 +3099,7 @@ DO_DEFSTATE:
C_GetManyVars(4); C_GetManyVars(4);
continue; continue;
case CON_HITRADIUSVAR: case CON_HITRADIUS:
case CON_DRAWLINE256: case CON_DRAWLINE256:
C_GetManyVars(5); C_GetManyVars(5);
continue; continue;
@ -3108,14 +3108,8 @@ DO_DEFSTATE:
C_GetManyVars(6); C_GetManyVars(6);
continue; continue;
case CON_HITRADIUS:
C_GetNextValue(LABEL_DEFINE);
C_GetNextValue(LABEL_DEFINE);
C_GetNextValue(LABEL_DEFINE);
fallthrough__;
case CON_ADDAMMO: case CON_ADDAMMO:
case CON_ADDINVENTORY: case CON_ADDINVENTORY:
case CON_ADDWEAPON:
case CON_DEBRIS: case CON_DEBRIS:
case CON_GUTS: case CON_GUTS:
case CON_SIZEAT: case CON_SIZEAT:
@ -3125,7 +3119,6 @@ DO_DEFSTATE:
case CON_ADDKILLS: case CON_ADDKILLS:
case CON_ADDPHEALTH: case CON_ADDPHEALTH:
case CON_ADDSTRENGTH: case CON_ADDSTRENGTH:
case CON_ANGOFF:
case CON_CACTOR: case CON_CACTOR:
case CON_CLIPDIST: case CON_CLIPDIST:
case CON_COUNT: case CON_COUNT:
@ -3133,7 +3126,6 @@ DO_DEFSTATE:
case CON_DEBUG: case CON_DEBUG:
case CON_ENDOFGAME: case CON_ENDOFGAME:
case CON_ENDOFLEVEL: case CON_ENDOFLEVEL:
case CON_GLOBALSOUND:
case CON_LOTSOFGLASS: case CON_LOTSOFGLASS:
case CON_MAIL: case CON_MAIL:
case CON_MONEY: case CON_MONEY:
@ -3142,11 +3134,8 @@ DO_DEFSTATE:
case CON_SAVE: case CON_SAVE:
case CON_SAVENN: case CON_SAVENN:
case CON_SLEEPTIME: case CON_SLEEPTIME:
case CON_SOUND:
case CON_SOUNDONCE:
case CON_SPAWN: case CON_SPAWN:
case CON_SPRITEPAL: case CON_SPRITEPAL:
case CON_STOPSOUND:
case CON_STRENGTH: case CON_STRENGTH:
C_GetNextValue(LABEL_DEFINE); C_GetNextValue(LABEL_DEFINE);
continue; continue;
@ -3213,12 +3202,12 @@ DO_DEFSTATE:
continue; continue;
} }
case CON_FINDNEARACTOR3DVAR: case CON_FINDNEARACTOR3D:
case CON_FINDNEARACTORVAR: case CON_FINDNEARACTOR:
case CON_FINDNEARACTORZVAR: case CON_FINDNEARACTORZ:
case CON_FINDNEARSPRITE3DVAR: case CON_FINDNEARSPRITE3D:
case CON_FINDNEARSPRITEVAR: case CON_FINDNEARSPRITE:
case CON_FINDNEARSPRITEZVAR: case CON_FINDNEARSPRITEZ:
{ {
C_GetNextValue(LABEL_DEFINE); // get <type> C_GetNextValue(LABEL_DEFINE); // get <type>
@ -3226,8 +3215,8 @@ DO_DEFSTATE:
C_GetNextVar(); C_GetNextVar();
switch (tw) switch (tw)
{ {
case CON_FINDNEARACTORZVAR: case CON_FINDNEARACTORZ:
case CON_FINDNEARSPRITEZVAR: case CON_FINDNEARSPRITEZ:
C_GetNextVar(); C_GetNextVar();
default: default:
break; break;
@ -3568,17 +3557,17 @@ setvarvar:
fallthrough__; fallthrough__;
case CON_ACTIVATECHEAT: case CON_ACTIVATECHEAT:
case CON_ADDLOGVAR: case CON_ADDLOGVAR:
case CON_ANGOFFVAR: case CON_ANGOFF:
case CON_CHECKACTIVATORMOTION: case CON_CHECKACTIVATORMOTION:
case CON_CHECKAVAILINVEN: case CON_CHECKAVAILINVEN:
case CON_CHECKAVAILWEAPON: case CON_CHECKAVAILWEAPON:
case CON_CLEARMAPSTATE: case CON_CLEARMAPSTATE:
case CON_CMENU: case CON_CMENU:
case CON_ECHO: case CON_ECHO:
case CON_EQSPAWNVAR: case CON_EQSPAWN:
case CON_ESHOOTVAR: case CON_ESHOOT:
case CON_ESPAWNVAR: case CON_ESPAWN:
case CON_GLOBALSOUNDVAR: case CON_GLOBALSOUND:
case CON_GUNIQHUDID: case CON_GUNIQHUDID:
case CON_INITTIMER: case CON_INITTIMER:
case CON_JUMP: case CON_JUMP:
@ -3586,7 +3575,7 @@ setvarvar:
case CON_MOVESECTOR: case CON_MOVESECTOR:
case CON_OPERATEMASTERSWITCHES: case CON_OPERATEMASTERSWITCHES:
case CON_OPERATERESPAWNS: case CON_OPERATERESPAWNS:
case CON_QSPAWNVAR: case CON_QSPAWN:
case CON_QUAKE: case CON_QUAKE:
case CON_RESETPLAYERFLAGS: case CON_RESETPLAYERFLAGS:
case CON_SAVEGAMEVAR: case CON_SAVEGAMEVAR:
@ -3597,12 +3586,12 @@ setvarvar:
case CON_SETGAMEPALETTE: case CON_SETGAMEPALETTE:
case CON_SETMUSICPOSITION: case CON_SETMUSICPOSITION:
case CON_SETPLAYERANGLE: case CON_SETPLAYERANGLE:
case CON_SHOOTVAR: case CON_SHOOT:
case CON_SOUNDONCEVAR: case CON_SOUNDONCE:
case CON_SOUNDVAR: case CON_SOUND:
case CON_STARTCUTSCENE: case CON_STARTCUTSCENE:
case CON_STARTTRACKVAR: case CON_STARTTRACK:
case CON_STOPSOUNDVAR: case CON_STOPSOUND:
case CON_TIME: case CON_TIME:
case CON_USERQUOTE: case CON_USERQUOTE:
C_GetNextVar(); C_GetNextVar();
@ -3634,7 +3623,7 @@ setvarvar:
case CON_ACTORSOUND: case CON_ACTORSOUND:
case CON_CHANGESPRITESECT: case CON_CHANGESPRITESECT:
case CON_CHANGESPRITESTAT: case CON_CHANGESPRITESTAT:
case CON_EZSHOOTVAR: case CON_EZSHOOT:
case CON_GETPNAME: case CON_GETPNAME:
case CON_PRELOADTRACKSLOTFORSWAP: case CON_PRELOADTRACKSLOTFORSWAP:
case CON_QGETSYSSTR: case CON_QGETSYSSTR:
@ -3647,7 +3636,7 @@ setvarvar:
case CON_STARTTRACKSLOT: case CON_STARTTRACKSLOT:
case CON_STOPACTORSOUND: case CON_STOPACTORSOUND:
case CON_SWAPTRACKSLOT: case CON_SWAPTRACKSLOT:
case CON_ZSHOOTVAR: case CON_ZSHOOT:
C_GetManyVars(2); C_GetManyVars(2);
continue; continue;
@ -3892,7 +3881,7 @@ setvarvar:
continue; continue;
case CON_ACTIVATEBYSECTOR: case CON_ACTIVATEBYSECTOR:
case CON_ADDWEAPONVAR: case CON_ADDWEAPON:
case CON_DIST: case CON_DIST:
case CON_DIVSCALE: case CON_DIVSCALE:
case CON_GETANGLE: case CON_GETANGLE:
@ -4141,11 +4130,6 @@ setvarvar:
} }
continue; continue;
case CON_STARTTRACK:
// one parameter (track#)
C_GetNextValue(LABEL_DEFINE);
continue;
case CON_IFACTORSOUND: case CON_IFACTORSOUND:
case CON_IFVARVARA: case CON_IFVARVARA:
case CON_IFVARVARAE: case CON_IFVARVARAE:
@ -5634,7 +5618,6 @@ repeatcase:
g_scriptPtr--; g_scriptPtr--;
continue; continue;
case CON_ADDLOG:
case CON_FALL: case CON_FALL:
case CON_GETLASTPAL: case CON_GETLASTPAL:
case CON_GETTEXTURECEILING: case CON_GETTEXTURECEILING:

View file

@ -836,449 +836,432 @@ enum IterationTypes_t
enum ScriptKeywords_t enum ScriptKeywords_t
{ {
CON_ELSE, // 0 CON_ACTION,
CON_ACTOR, // 1 CON_ACTIVATE,
CON_ADDAMMO, // 2 CON_ACTIVATEBYSECTOR,
CON_IFRND, // 3 CON_ACTIVATECHEAT,
CON_ENDA, // 4 CON_ACTORSOUND,
CON_IFCANSEE, // 5 CON_ADDAMMO,
CON_IFHITWEAPON, // 6 CON_ADDINVENTORY,
CON_ACTION, // 7 CON_ADDKILLS,
CON_IFPDISTL, // 8 CON_ADDLOGVAR,
CON_IFPDISTG, // 9 CON_ADDPHEALTH,
CON_DEFINELEVELNAME, // 10 CON_ADDSTRENGTH,
CON_STRENGTH, // 11 CON_ADDVAR,
CON_BREAK, // 12 CON_ADDVARVAR,
CON_SHOOT, // 13 CON_ADDWEAPON,
CON_PALFROM, // 14 CON_AI,
CON_SOUND, // 15 CON_ANDVAR,
CON_FALL, // 16 CON_ANDVARVAR,
CON_STATE, // 17 CON_ANGOFF,
CON_ENDS, // 18 CON_BREAK,
CON_DEFINE, // 19 CON_CACTOR,
CON_RETURN, // 20 CON_CALCHYPOTENUSE,
CON_IFAI, // 21 CON_CANSEE,
CON_KILLIT, // 22 CON_CANSEESPR,
CON_ADDWEAPON, // 23 CON_CHANGESPRITESECT,
CON_AI, // 24 CON_CHANGESPRITESTAT,
CON_ADDPHEALTH, // 25 CON_CHECKACTIVATORMOTION,
CON_IFDEAD, // 26 CON_CHECKAVAILINVEN,
CON_IFSQUISHED, // 27 CON_CHECKAVAILWEAPON,
CON_SIZETO, // 28 CON_CLAMP,
CON_LEFTBRACE, // 29 CON_CLEARMAPSTATE,
CON_RIGHTBRACE, // 30 CON_CLIPDIST,
CON_SPAWN, // 31 CON_CLIPMOVE,
CON_MOVE, // 32 CON_CLIPMOVENOSLIDE,
CON_IFWASWEAPON, // 33 CON_CMENU,
CON_IFACTION, // 34 CON_COPY,
CON_IFACTIONCOUNT, // 35 CON_COS,
CON_RESETACTIONCOUNT, // 36 CON_COUNT,
CON_DEBRIS, // 37 CON_CSTAT,
CON_PSTOMP, // 38 CON_CSTATOR,
CON_BLOCKCOMMENT, // 39 deprecated CON_DEBRIS,
CON_CSTAT, // 40 CON_DEBUG,
CON_IFMOVE, // 41 CON_DIGITALNUMBER,
CON_RESETPLAYER, // 42 CON_DIGITALNUMBERZ,
CON_IFONWATER, // 43 CON_DISPLAYRAND,
CON_IFINWATER, // 44 CON_DISPLAYRANDVAR,
CON_IFCANSHOOTTARGET, // 45 CON_DISPLAYRANDVARVAR,
CON_IFCOUNT, // 46 CON_DIST,
CON_RESETCOUNT, // 47 CON_DIVR,
CON_ADDINVENTORY, // 48 CON_DIVRU,
CON_IFACTORNOTSTAYPUT, // 49 CON_DIVSCALE,
CON_HITRADIUS, // 50 CON_DIVVAR,
CON_IFP, // 51 CON_DIVVARVAR,
CON_COUNT, // 52 CON_DRAGPOINT,
CON_IFACTOR, // 53 CON_DRAWLINE256,
CON_MUSIC, // 54 CON_DRAWLINERGB,
CON_INCLUDE, // 55 CON_ECHO,
CON_IFSTRENGTH, // 56 CON_ELSE,
CON_DEFINESOUND, // 57 CON_ENDA,
CON_GUTS, // 58 CON_ENDEVENT,
CON_IFSPAWNEDBY, // 59 CON_ENDOFGAME,
CON_GAMESTARTUP, // 60 CON_ENDOFLEVEL,
CON_WACKPLAYER, // 61 CON_ENDS,
CON_IFGAPZL, // 62 CON_ENDSWITCH,
CON_IFHITSPACE, // 63 CON_EQSPAWN,
CON_IFOUTSIDE, // 64 CON_ESHOOT,
CON_IFMULTIPLAYER, // 65 CON_ESPAWN,
CON_OPERATE, // 66 CON_EVENTLOADACTOR,
CON_IFINSPACE, // 67 CON_EZSHOOT,
CON_DEBUG, // 68 CON_FALL,
CON_ENDOFGAME, // 69 CON_FINDNEARACTOR3D,
CON_IFBULLETNEAR, // 70 CON_FINDNEARACTOR,
CON_IFRESPAWN, // 71 CON_FINDNEARACTORZ,
CON_IFFLOORDISTL, // 72 CON_FINDNEARSPRITE3D,
CON_IFCEILINGDISTL, // 73 CON_FINDNEARSPRITE,
CON_SPRITEPAL, // 74 CON_FINDNEARSPRITEZ,
CON_IFPINVENTORY, // 75 CON_FINDOTHERPLAYER,
CON_BETANAME, // 76 CON_FINDPLAYER,
CON_CACTOR, // 77 CON_FLASH,
CON_IFPHEALTHL, // 78 CON_FOR,
CON_DEFINEQUOTE, // 79 CON_GAMETEXT,
CON_QUOTE, // 80 CON_GAMETEXTZ,
CON_IFINOUTERSPACE, // 81 CON_GETACTOR,
CON_IFNOTMOVING, // 82 CON_GETACTORANGLE,
CON_RESPAWNHITAG, // 83 CON_GETACTORSTRUCT,
CON_TIP, // 84 CON_GETACTORVAR,
CON_IFSPRITEPAL, // 85 CON_GETANGLE,
CON_MONEY, // 86 CON_GETANGLETOTARGET,
CON_SOUNDONCE, // 87 CON_GETARRAYSIZE,
CON_ADDKILLS, // 88 CON_GETCEILZOFSLOPE,
CON_STOPSOUND, // 89 CON_GETCLOSESTCOL,
CON_IFAWAYFROMWALL, // 90 CON_GETCURRADDRESS,
CON_IFCANSEETARGET, // 91 CON_GETFLORZOFSLOPE,
CON_GLOBALSOUND, // 92 CON_GETINCANGLE,
CON_LOTSOFGLASS, // 93 CON_GETINPUT,
CON_IFGOTWEAPONCE, // 94 CON_GETKEYNAME,
CON_GETLASTPAL, // 95 CON_GETLASTPAL,
CON_PKICK, // 96 CON_GETMUSICPOSITION,
CON_MIKESND, // 97 CON_GETPLAYER,
CON_USERACTOR, // 98 CON_GETPLAYERANGLE,
CON_SIZEAT, // 99 CON_GETPLAYERVAR,
CON_ADDSTRENGTH, // 100 CON_GETPNAME,
CON_CSTATOR, // 101 CON_GETPROJECTILE,
CON_MAIL, // 102 CON_GETSECTOR,
CON_PAPER, // 103 CON_GETSPRITEEXT,
CON_TOSSWEAPON, // 104 CON_GETSPRITESTRUCT,
CON_SLEEPTIME, // 105 CON_GETTEXTURECEILING,
CON_NULLOP, // 106 CON_GETTEXTUREFLOOR,
CON_DEFINEVOLUMENAME, // 107 CON_GETTHISPROJECTILE,
CON_DEFINESKILLNAME, // 108 CON_GETTICKS,
CON_IFNOSOUNDS, // 109 CON_GETTILEDATA,
CON_CLIPDIST, // 110 CON_GETTIMEDATE,
CON_IFANGDIFFL, // 111 CON_GETTSPR,
CON_GAMEVAR, // 112 CON_GETUSERDEF,
CON_IFVARL, // 113 CON_GETWALL,
CON_IFVARG, // 114 CON_GETZRANGE,
CON_SETVARVAR, // 115 CON_GLOBALSOUND,
CON_SETVAR, // 116 CON_GMAXAMMO,
CON_ADDVARVAR, // 117 CON_GUNIQHUDID,
CON_ADDVAR, // 118 CON_GUTS,
CON_IFVARVARL, // 119 CON_HEADSPRITESECT,
CON_IFVARVARG, // 120 CON_HEADSPRITESTAT,
CON_ADDLOGVAR, // 121 CON_HITRADIUS,
CON_ADDLOG, // 122 CON_HITSCAN,
CON_ONEVENT, // 123 CON_IFACTION,
CON_ENDEVENT, // 124 CON_IFACTIONCOUNT,
CON_IFVARE, // 125 CON_IFACTOR,
CON_IFVARVARE, // 126 CON_IFACTORNOTSTAYPUT,
CON_SPGETLOTAG, // 127 CON_IFACTORSOUND,
CON_SPGETHITAG, // 128 CON_IFAI,
CON_SECTGETLOTAG, // 129 CON_IFANGDIFFL,
CON_SECTGETHITAG, // 130 CON_IFAWAYFROMWALL,
CON_IFSOUND, // 131 CON_IFBULLETNEAR,
CON_GETTEXTUREFLOOR, // 132 CON_IFCANSEE,
CON_GETTEXTURECEILING, // 133 CON_IFCANSEETARGET,
CON_INITTIMER, // 134 CON_IFCANSHOOTTARGET,
CON_STARTTRACK, // 135 CON_IFCEILINGDISTL,
CON_RANDVAR, // 136 CON_IFCLIENT,
CON_ENHANCED, // 137 CON_IFCOUNT,
CON_GETANGLETOTARGET, // 138 CON_IFCUTSCENE,
CON_GETACTORANGLE, // 139 CON_IFDEAD,
CON_SETACTORANGLE, // 140 CON_IFFLOORDISTL,
CON_MULVAR, // 141 CON_IFGAPZL,
CON_MULVARVAR, // 142 CON_IFGOTWEAPONCE,
CON_DIVVAR, // 143 CON_IFHITSPACE,
CON_DIVVARVAR, // 144 CON_IFHITWEAPON,
CON_MODVAR, // 145 CON_IFINOUTERSPACE,
CON_MODVARVAR, // 146 CON_IFINSPACE,
CON_ANDVAR, // 147 CON_IFINWATER,
CON_ANDVARVAR, // 148 CON_IFMOVE,
CON_ORVAR, // 149 CON_IFMULTIPLAYER,
CON_ORVARVAR, // 150 CON_IFNOSOUNDS,
CON_GETPLAYERANGLE, // 151 CON_IFNOTMOVING,
CON_SETPLAYERANGLE, // 152 CON_IFONWATER,
CON_LOCKPLAYER, // 153 CON_IFOUTSIDE,
CON_SETSECTOR, // 154 CON_IFP,
CON_GETSECTOR, // 155 CON_IFPDISTG,
CON_SETACTOR, // 156 CON_IFPDISTL,
CON_GETACTOR, // 157 CON_IFPHEALTHL,
CON_SETWALL, // 158 CON_IFPINVENTORY,
CON_GETWALL, // 159 CON_IFPLAYBACKON,
CON_FINDNEARACTOR, // 160 CON_IFPLAYERSL,
CON_FINDNEARACTORVAR, // 161 CON_IFRESPAWN,
CON_SETACTORVAR, // 162 CON_IFRND,
CON_GETACTORVAR, // 163 CON_IFSERVER,
CON_ESPAWN, // 164 CON_IFSOUND,
CON_GETPLAYER, // 165 CON_IFSPAWNEDBY,
CON_SETPLAYER, // 166 CON_IFSPRITEPAL,
CON_SQRT, // 167 CON_IFSQUISHED,
CON_EVENTLOADACTOR, // 168 CON_IFSTRENGTH,
CON_ESPAWNVAR, // 169 CON_IFVARA,
CON_GETUSERDEF, // 170 CON_IFVARAE,
CON_SETUSERDEF, // 171 CON_IFVARAND,
CON_SUBVARVAR, // 172 CON_IFVARB,
CON_SUBVAR, // 173 CON_IFVARBE,
CON_IFVARN, // 174 CON_IFVARBOTH,
CON_IFVARVARN, // 175 CON_IFVARE,
CON_IFVARAND, // 176 CON_IFVAREITHER,
CON_IFVARVARAND, // 177 CON_IFVARG,
CON_MYOS, // 178 CON_IFVARGE,
CON_MYOSPAL, // 179 CON_IFVARL,
CON_DISPLAYRAND, // 180 CON_IFVARLE,
CON_SIN, // 181 CON_IFVARN,
CON_XORVARVAR, // 182 CON_IFVAROR,
CON_XORVAR, // 183 CON_IFVARVARA,
CON_RANDVARVAR, // 184 CON_IFVARVARAE,
CON_MYOSX, // 185 CON_IFVARVARAND,
CON_MYOSPALX, // 186 CON_IFVARVARB,
CON_GMAXAMMO, // 187 CON_IFVARVARBE,
CON_SMAXAMMO, // 188 CON_IFVARVARBOTH,
CON_STARTLEVEL, // 189 CON_IFVARVARE,
CON_ESHOOT, // 190 CON_IFVARVAREITHER,
CON_QSPAWN, // 191 CON_IFVARVARG,
CON_ROTATESPRITE, // 192 CON_IFVARVARGE,
CON_DEFINEPROJECTILE, // 193 CON_IFVARVARL,
CON_SPRITESHADOW, // 194 CON_IFVARVARLE,
CON_COS, // 195 CON_IFVARVARN,
CON_ESHOOTVAR, // 196 CON_IFVARVAROR,
CON_FINDNEARACTOR3D, // 197 CON_IFVARVARXOR,
CON_FINDNEARACTOR3DVAR, // 198 CON_IFVARXOR,
CON_FLASH, // 199 CON_IFWASWEAPON,
CON_QSPAWNVAR, // 200 CON_INITTIMER,
CON_EQSPAWN, // 201 CON_INSERTSPRITEQ,
CON_EQSPAWNVAR, // 202 CON_INV,
CON_MINITEXT, // 203 CON_JUMP,
CON_GAMETEXT, // 204 CON_KILLIT,
CON_DIGITALNUMBER, // 205 CON_KLABS,
CON_ADDWEAPONVAR, // 206 CON_LDIST,
CON_SETPROJECTILE, // 207 CON_LEFTBRACE,
CON_ANGOFF, // 208 CON_LINEINTERSECT,
CON_UPDATESECTOR, // 209 CON_LOADMAPSTATE,
CON_INSERTSPRITEQ, // 210 CON_LOCKPLAYER,
CON_ANGOFFVAR, // 211 CON_LOTSOFGLASS,
CON_WHILEVARN, // 212 CON_MAIL,
CON_SWITCH, // 213 CON_MIKESND,
CON_CASE, // 214 CON_MINITEXT,
CON_DEFAULT, // 215 CON_MODVAR,
CON_ENDSWITCH, // 216 CON_MODVARVAR,
CON_SHOOTVAR, // 217 CON_MONEY,
CON_SOUNDVAR, // 218 CON_MOVE,
CON_FINDPLAYER, // 219 CON_MOVESECTOR,
CON_FINDOTHERPLAYER, // 220 CON_MOVESPRITE,
CON_ACTIVATEBYSECTOR, // 221 CON_MULSCALE,
CON_OPERATESECTORS, // 222 CON_MULVAR,
CON_OPERATERESPAWNS, // 223 CON_MULVARVAR,
CON_OPERATEACTIVATORS, // 224 CON_MUSIC,
CON_OPERATEMASTERSWITCHES, // 225 CON_MYOS,
CON_CHECKACTIVATORMOTION, // 226 CON_MYOSPAL,
CON_ZSHOOT, // 227 CON_MYOSPALX,
CON_DIST, // 228 CON_MYOSX,
CON_LDIST, // 229 CON_NEARTAG,
CON_SHIFTVARL, // 230 CON_NEXTSECTORNEIGHBORZ,
CON_SHIFTVARR, // 231 CON_NEXTSPRITESECT,
CON_SPRITENVG, // 232 CON_NEXTSPRITESTAT,
CON_GETANGLE, // 233 CON_NULLOP,
CON_WHILEVARVARN, // 234 CON_OPERATE,
CON_HITSCAN, // 235 CON_OPERATEACTIVATORS,
CON_TIME, // 236 CON_OPERATEMASTERSWITCHES,
CON_GETPLAYERVAR, // 237 CON_OPERATERESPAWNS,
CON_SETPLAYERVAR, // 238 CON_OPERATESECTORS,
CON_MULSCALE, // 239 CON_ORVAR,
CON_SETASPECT, // 240 CON_ORVARVAR,
CON_EZSHOOT, // 241 CON_PALFROM,
CON_SPRITENOSHADE, // 242 CON_PAPER,
CON_MOVESPRITE, // 243 CON_PKICK,
CON_CHECKAVAILWEAPON, // 244 CON_PRECACHE,
CON_SOUNDONCEVAR, // 245 CON_PRELOADTRACKSLOTFORSWAP,
CON_UPDATESECTORZ, // 246 CON_PREVSPRITESECT,
CON_STOPALLSOUNDS, // 247 CON_PREVSPRITESTAT,
CON_SSP, // 248 CON_PSTOMP,
CON_STOPSOUNDVAR, // 249 CON_QGETSYSSTR,
CON_DISPLAYRANDVAR, // 250 CON_QSPAWN,
CON_DISPLAYRANDVARVAR, // 251 CON_QSPRINTF,
CON_CHECKAVAILINVEN, // 252 CON_QSTRCAT,
CON_GLOBALSOUNDVAR, // 253 CON_QSTRCMP,
CON_GUNIQHUDID, // 254 CON_QSTRCPY,
CON_GETPROJECTILE, // 255 CON_QSTRDIM,
CON_GETTHISPROJECTILE, // 256 CON_QSTRLEN,
CON_SETTHISPROJECTILE, // 257 CON_QSTRNCAT,
CON_DEFINECHEAT, // 258 CON_QSUBSTR,
CON_CHEATKEYS, // 259 CON_QUAKE,
CON_USERQUOTE, // 260 CON_QUOTE,
CON_PRECACHE, // 261 CON_RANDVAR,
CON_DEFINEGAMEFUNCNAME, // 262 CON_RANDVARVAR,
CON_REDEFINEQUOTE, // 263 CON_RAYINTERSECT,
CON_QSPRINTF, // 264 CON_READARRAYFROMFILE,
CON_GETPNAME, // 265 CON_READGAMEVAR,
CON_QSTRCAT, // 266 CON_REDEFINEQUOTE,
CON_QSTRCPY, // 267 CON_RESETACTIONCOUNT,
CON_SETSPRITE, // 268 CON_RESETCOUNT,
CON_ROTATEPOINT, // 269 CON_RESETPLAYER,
CON_DRAGPOINT, // 270 CON_RESETPLAYERFLAGS,
CON_GETZRANGE, // 271 CON_RESIZEARRAY,
CON_CHANGESPRITESTAT, // 272 CON_RESPAWNHITAG,
CON_GETCEILZOFSLOPE, // 273 CON_RETURN,
CON_GETFLORZOFSLOPE, // 274 CON_RIGHTBRACE,
CON_NEARTAG, // 275 CON_ROTATEPOINT,
CON_DEFINEGAMETYPE, // 276 CON_ROTATESPRITE,
CON_CHANGESPRITESECT, // 277 CON_ROTATESPRITE16,
CON_SPRITEFLAGS, // 278 CON_ROTATESPRITEA,
CON_SAVEGAMEVAR, // 279 CON_SAVE,
CON_READGAMEVAR, // 280 CON_SAVEGAMEVAR,
CON_FINDNEARSPRITE, // 281 CON_SAVEMAPSTATE,
CON_FINDNEARSPRITEVAR, // 282 CON_SAVENN,
CON_FINDNEARSPRITE3D, // 283 CON_SCALEVAR,
CON_FINDNEARSPRITE3DVAR,// 284 CON_SCREENPAL,
CON_DYNAMICREMAP, // 285 CON_SCREENSOUND,
CON_SETINPUT, // 286 CON_SCREENTEXT,
CON_GETINPUT, // 287 CON_SECTCLEARINTERPOLATION,
CON_SAVE, // 288 CON_SECTGETHITAG,
CON_CANSEE, // 289 CON_SECTGETLOTAG,
CON_CANSEESPR, // 290 CON_SECTOROFWALL,
CON_FINDNEARACTORZ, // 291 CON_SECTSETINTERPOLATION,
CON_FINDNEARACTORZVAR, // 292 CON_SETACTOR,
CON_FINDNEARSPRITEZ, // 293 CON_SETACTORANGLE,
CON_FINDNEARSPRITEZVAR, // 294 CON_SETACTORSOUNDPITCH,
CON_ZSHOOTVAR, // 295 CON_SETACTORSTRUCT,
CON_EZSHOOTVAR, // 296 CON_SETACTORVAR,
CON_GETCURRADDRESS, // 297 CON_SETARRAY,
CON_JUMP, // 298 CON_SETASPECT,
CON_QSTRLEN, // 299 CON_SETGAMEPALETTE,
CON_GETINCANGLE, // 300 CON_SETINPUT,
CON_QUAKE, // 301 CON_SETMUSICPOSITION,
CON_SHOWVIEW, // 302 CON_SETPLAYER,
CON_HEADSPRITESTAT, // 303 CON_SETPLAYERANGLE,
CON_PREVSPRITESTAT, // 304 CON_SETPLAYERVAR,
CON_NEXTSPRITESTAT, // 305 CON_SETPROJECTILE,
CON_HEADSPRITESECT, // 306 CON_SETSECTOR,
CON_PREVSPRITESECT, // 307 CON_SETSPRITE,
CON_NEXTSPRITESECT, // 308 CON_SETSPRITEEXT,
CON_GETKEYNAME, // 309 CON_SETSPRITESTRUCT,
CON_QSUBSTR, // 310 CON_SETTHISPROJECTILE,
CON_GAMETEXTZ, // 311 CON_SETTILEDATA,
CON_DIGITALNUMBERZ, // 312 CON_SETTSPR,
CON_SPRITENOPAL, // 313 CON_SETUSERDEF,
CON_HITRADIUSVAR, // 314 CON_SETVAR,
CON_ROTATESPRITE16, // 315 CON_SETVARVAR,
CON_GAMEARRAY, // 316 CON_SETWALL,
CON_SETARRAY, // 317 CON_SHADETO,
CON_RESIZEARRAY, // 318 CON_SHIFTVARL,
CON_WRITEARRAYTOFILE, // 319 CON_SHIFTVARR,
CON_READARRAYFROMFILE, // 320 CON_SHIFTVARVARL,
CON_STARTTRACKVAR, // 321 CON_SHIFTVARVARR,
CON_QGETSYSSTR, // 322 CON_SHOOT,
CON_GETTICKS, // 323 CON_SHOWVIEW,
CON_GETTSPR, // 324 CON_SHOWVIEWQ16,
CON_SETTSPR, // 325 CON_SHOWVIEWQ16UNBIASED,
CON_SAVEMAPSTATE, // 326 CON_SHOWVIEWUNBIASED,
CON_LOADMAPSTATE, // 327 CON_SIN,
CON_CLEARMAPSTATE, // 328 CON_SIZEAT,
CON_SCRIPTSIZE, // 329 CON_SIZETO,
CON_SETGAMENAME, // 330 CON_SLEEPTIME,
CON_CMENU, // 331 CON_SMAXAMMO,
CON_GETTIMEDATE, // 332 CON_SOUNDONCE,
CON_ACTIVATECHEAT, // 333 CON_SOUND,
CON_SETGAMEPALETTE, // 334 CON_SPAWN,
CON_SETDEFNAME, // 335 CON_SPAWNCEILINGGLASS,
CON_SETCFGNAME, // 336 CON_SPAWNWALLGLASS,
CON_IFVAROR, // 337 CON_SPAWNWALLSTAINEDGLASS,
CON_IFVARVAROR, // 338 CON_SPGETHITAG,
CON_IFVARXOR, // 339 CON_SPGETLOTAG,
CON_IFVARVARXOR, // 340 CON_SPRITEFLAGS,
CON_IFVAREITHER, // 341 CON_SPRITEPAL,
CON_IFVARVAREITHER, // 342 CON_SQRT,
CON_GETARRAYSIZE, // 343 CON_SSP,
CON_SAVENN, // 344 CON_STARTCUTSCENE,
CON_COPY, // 345 CON_STARTLEVEL,
CON_INV, // 346 CON_STARTSCREEN,
CON_SECTOROFWALL, // 347 CON_STARTTRACKSLOT,
CON_QSTRNCAT, // 348 CON_STARTTRACK,
CON_IFACTORSOUND, // 349 CON_STATE,
CON_STOPACTORSOUND, // 350 CON_STOPACTORSOUND,
CON_IFCLIENT, // 351 CON_STOPALLMUSIC,
CON_IFSERVER, // 352 CON_STOPALLSOUNDS,
CON_SECTSETINTERPOLATION, // 353 CON_STOPSOUND,
CON_SECTCLEARINTERPOLATION, // 354 CON_STRENGTH,
CON_CLIPMOVE, // 355 CON_SUBVAR,
CON_LINEINTERSECT, // 356 CON_SUBVARVAR,
CON_RAYINTERSECT, // 357 CON_SWAPARRAYS,
CON_CALCHYPOTENUSE, // 358 CON_SWAPTRACKSLOT,
CON_CLIPMOVENOSLIDE, // 359 CON_SWITCH,
CON_INCLUDEDEFAULT, // 360 CON_TIME,
CON_SETACTORSOUNDPITCH, // 361 CON_TIP,
CON_ECHO, // 362 CON_TOSSWEAPON,
CON_SHOWVIEWUNBIASED, // 363 CON_UPDATESECTOR,
CON_ROTATESPRITEA, // 364 CON_UPDATESECTORZ,
CON_SHADETO, // 365 CON_USERQUOTE,
CON_ENDOFLEVEL, // 366 CON_WACKPLAYER,
CON_IFPLAYERSL, // 367 CON_WHILEVARL,
CON_ACTIVATE, // 368 CON_WHILEVARN,
CON_QSTRDIM, // 369 CON_WHILEVARVARL,
CON_SCREENTEXT, // 370 CON_WHILEVARVARN,
CON_DYNAMICSOUNDREMAP, // 371 CON_WRITEARRAYTOFILE,
CON_SCREENSOUND, // 372 CON_XORVAR,
CON_GETMUSICPOSITION, // 373 CON_XORVARVAR,
CON_SETMUSICPOSITION, // 374 CON_ZSHOOT,
CON_UNDEFINEVOLUME, // 375
CON_UNDEFINESKILL, // 376 CON_OPCODE_END,
CON_UNDEFINELEVEL, // 377
CON_STARTCUTSCENE, // 378 // these are the keywords that don't get written into the bytecode
CON_IFCUTSCENE, // 379 CON_ACTOR,
CON_DEFINEVOLUMEFLAGS, // 380 CON_APPENDEVENT,
CON_RESETPLAYERFLAGS, // 381 CON_BETANAME,
CON_APPENDEVENT, // 382 CON_CASE,
CON_DEFSTATE, // 383 CON_CHEATKEYS,
CON_SHIFTVARVARL, // 384 CON_DAMAGEEVENTTILE,
CON_SHIFTVARVARR, // 385 CON_DAMAGEEVENTTILERANGE,
CON_IFVARVARLE, // 386 CON_DEFAULT,
CON_IFVARVARGE, // 387 CON_DEFINE,
CON_IFVARVARBOTH, // 388 CON_DEFINECHEAT,
CON_WHILEVARL, // 389 CON_DEFINEGAMEFUNCNAME,
CON_WHILEVARVARL, // 390 CON_DEFINEGAMETYPE,
CON_KLABS, // 391 CON_DEFINELEVELNAME,
CON_IFVARLE, // 392 CON_DEFINEPROJECTILE,
CON_IFVARGE, // 393 CON_DEFINEQUOTE,
CON_IFVARBOTH, // 394 CON_DEFINESKILLNAME,
CON_MOVESECTOR, // 395 CON_DEFINESOUND,
CON_FOR, // 396 CON_DEFINEVOLUMEFLAGS,
CON_NEXTSECTORNEIGHBORZ,// 397 CON_DEFINEVOLUMENAME,
CON_CLAMP, // 398 CON_DEFSTATE,
CON_IFPLAYBACKON, // 399 CON_DYNAMICREMAP,
CON_DIVSCALE, // 400 CON_DYNAMICSOUNDREMAP,
CON_SCALEVAR, // 401 CON_ENHANCED,
CON_UNDEFINEGAMEFUNC, // 402 CON_GAMEARRAY,
CON_GETCLOSESTCOL, // 403 CON_GAMESTARTUP,
CON_DRAWLINE256, // 404 CON_GAMEVAR,
CON_DRAWLINERGB, // 405 CON_INCLUDE,
CON_STARTTRACKSLOT, // 406 CON_INCLUDEDEFAULT,
CON_STOPALLMUSIC, // 407 CON_ONEVENT,
CON_ACTORSOUND, // 408 CON_SCRIPTSIZE,
CON_STARTSCREEN, // 409 CON_SETCFGNAME,
CON_SCREENPAL, // 410 CON_SETDEFNAME,
CON_QSTRCMP, // 411 CON_SETGAMENAME,
CON_DIVR, // 412 CON_SPRITENOPAL,
CON_DIVRU, // 413 CON_SPRITENOSHADE,
CON_SWAPTRACKSLOT, // 414 CON_SPRITENVG,
CON_PRELOADTRACKSLOTFORSWAP, // 415 CON_SPRITESHADOW,
CON_IFVARA, // 416 CON_UNDEFINECHEAT,
CON_IFVARVARA, // 417 CON_UNDEFINEGAMEFUNC,
CON_IFVARAE, // 418 CON_UNDEFINELEVEL,
CON_IFVARVARAE, // 419 CON_UNDEFINESKILL,
CON_IFVARB, // 420 CON_UNDEFINEVOLUME,
CON_IFVARVARB, // 421 CON_USERACTOR,
CON_IFVARBE, // 422
CON_IFVARVARBE, // 423
CON_UNDEFINECHEAT, // 424
CON_SHOWVIEWQ16, // 425
CON_SHOWVIEWQ16UNBIASED,// 426
CON_GETTILEDATA, // 427
CON_SETTILEDATA, // 428
CON_DAMAGEEVENTTILE, // 429
CON_DAMAGEEVENTTILERANGE, // 430
CON_SPAWNWALLGLASS, // 431
CON_SPAWNWALLSTAINEDGLASS, // 432
CON_SPAWNCEILINGGLASS, // 433
CON_SWAPARRAYS, // 434
CON_GETACTORSTRUCT, // 435
CON_SETACTORSTRUCT, // 436
CON_GETSPRITEEXT, // 437
CON_SETSPRITEEXT, // 438
CON_GETSPRITESTRUCT, // 439
CON_SETSPRITESTRUCT, // 440
CON_END CON_END
}; };
// KEEPINSYNC with the keyword list in lunatic/con_lang.lua // KEEPINSYNC with the keyword list in lunatic/con_lang.lua
#endif #endif

View file

@ -74,6 +74,7 @@ GAMEEXEC_STATIC void VM_Execute(native_t loop);
# include "gamestructures.cpp" # include "gamestructures.cpp"
#endif #endif
// be careful when changing this--the assignment used as a condition doubles as a null pointer check
#define VM_CONDITIONAL(xxx) \ #define VM_CONDITIONAL(xxx) \
{ \ { \
if ((xxx) || ((insptr = (intptr_t *)insptr[1]) && ((*insptr & VM_INSTMASK) == CON_ELSE))) \ if ((xxx) || ((insptr = (intptr_t *)insptr[1]) && ((*insptr & VM_INSTMASK) == CON_ELSE))) \
@ -86,11 +87,9 @@ GAMEEXEC_STATIC void VM_Execute(native_t loop);
#if !defined LUNATIC #if !defined LUNATIC
void VM_ScriptInfo(intptr_t const *ptr, int range) void VM_ScriptInfo(intptr_t const *ptr, int range)
{ {
if (!apScript || (!vm.pSprite && !vm.pPlayer && g_currentEvent == -1)) if (!apScript || !ptr || g_currentEvent == -1)
return; return;
if (ptr)
{
initprintf("\n"); initprintf("\n");
for (auto pScript = max<intptr_t const *>(ptr - (range >> 1), apScript), for (auto pScript = max<intptr_t const *>(ptr - (range >> 1), apScript),
@ -100,14 +99,13 @@ void VM_ScriptInfo(intptr_t const *ptr, int range)
{ {
initprintf("%5d: %3d: ", (int32_t)(pScript - apScript), (int32_t)(pScript - ptr)); initprintf("%5d: %3d: ", (int32_t)(pScript - apScript), (int32_t)(pScript - ptr));
if (*pScript >> 12 && (*pScript & VM_INSTMASK) < CON_END) if (*pScript >> 12 && (*pScript & VM_INSTMASK) < CON_OPCODE_END)
initprintf("%5d %s\n", (int32_t)(*pScript >> 12), VM_GetKeywordForID(*pScript & VM_INSTMASK)); initprintf("%5d %s\n", (int32_t)(*pScript >> 12), VM_GetKeywordForID(*pScript & VM_INSTMASK));
else else
initprintf("%d\n", (int32_t)*pScript); initprintf("%d\n", (int32_t)*pScript);
} }
initprintf("\n"); initprintf("\n");
}
if (ptr == insptr) if (ptr == insptr)
{ {
@ -155,43 +153,39 @@ static FORCE_INLINE int32_t VM_EventCommon__(int const &eventNum, int const &spr
static void VM_DummySprite(void) static void VM_DummySprite(void)
{ {
static uspritetype dummy_sprite; static uspritetype dummy_sprite;
static actor_t dummy; static actor_t dummy_actor;
vm.pUSprite = &dummy_sprite; vm.pUSprite = &dummy_sprite;
vm.pActor = &dummy; vm.pActor = &dummy_actor;
vm.pData = &dummy.t_data[0]; vm.pData = &dummy_actor.t_data[0];
} }
static FORCE_INLINE int32_t VM_EventCommon__(int const &eventNum, int const &spriteNum, int const &playerNum, int const &playerDist, int32_t returnValue) static FORCE_INLINE int32_t VM_EventCommon__(int const &eventNum, int const &spriteNum, int const &playerNum, int const &playerDist, int32_t returnValue)
{ {
double const t = timerGetHiTicks(); vmstate_t const tempvm = { spriteNum, playerNum, playerDist, 0, &sprite[spriteNum], &actor[spriteNum].t_data[0], g_player[playerNum].ps, &actor[spriteNum] };
vmstate_t const tempvm = { spriteNum, playerNum, playerDist, 0, NULL, NULL, g_player[playerNum].ps, NULL };
auto & returnVar = aGameVars[g_returnVarID].global; typedef struct
int const backupReturnVar = returnVar; {
int const backupEvent = g_currentEvent; vmstate_t vm;
intptr_t returnVar;
int currentEvent;
intptr_t const *insptr;
} eventbackup_t;
returnVar = returnValue; auto &returnVar = aGameVars[g_returnVarID].global;
eventbackup_t const backup = { vm, returnVar, eventNum, insptr };
g_currentEvent = eventNum; g_currentEvent = eventNum;
auto const backupinsptr = insptr; double const t = timerGetHiTicks();
const vmstate_t vm_backup = vm;
insptr = apScript + apScriptEvents[eventNum];
vm = tempvm; vm = tempvm;
returnVar = returnValue;
insptr = apScript + apScriptEvents[eventNum];
// check tempvm instead of vm... this way, we are not actually loading if (EDUKE32_PREDICT_FALSE((unsigned)spriteNum >= MAXSPRITES))
// FROM vm anywhere until VM_Execute() is called
if (EDUKE32_PREDICT_FALSE((unsigned) tempvm.spriteNum >= MAXSPRITES))
VM_DummySprite(); VM_DummySprite();
else
{
vm.pSprite = &sprite[spriteNum];
vm.pActor = &actor[spriteNum];
vm.pData = &actor[spriteNum].t_data[0];
}
if ((unsigned)playerNum >= (unsigned)g_mostConcurrentPlayers) if (EDUKE32_PREDICT_FALSE((unsigned)playerNum >= (unsigned)g_mostConcurrentPlayers))
vm.pPlayer = g_player[0].ps; vm.pPlayer = g_player[0].ps;
VM_Execute(1); VM_Execute(1);
@ -202,11 +196,12 @@ static FORCE_INLINE int32_t VM_EventCommon__(int const &eventNum, int const &spr
// this needs to happen after VM_DeleteSprite() because VM_DeleteSprite() // this needs to happen after VM_DeleteSprite() because VM_DeleteSprite()
// can trigger additional events // can trigger additional events
vm = vm_backup;
insptr = backupinsptr;
g_currentEvent = backupEvent;
returnValue = returnVar; returnValue = returnVar;
returnVar = backupReturnVar;
vm = backup.vm;
returnVar = backup.returnVar;
g_currentEvent = backup.currentEvent;
insptr = backup.insptr;
g_eventTotalMs[eventNum] += timerGetHiTicks()-t; g_eventTotalMs[eventNum] += timerGetHiTicks()-t;
g_eventCalls[eventNum]++; g_eventCalls[eventNum]++;
@ -1271,23 +1266,24 @@ void Screen_Play(void)
#if !defined LUNATIC #if !defined LUNATIC
GAMEEXEC_STATIC void VM_Execute(native_t loop) GAMEEXEC_STATIC void VM_Execute(native_t loop)
{ {
native_t tw = *insptr; native_t tw;
DukePlayer_t *const pPlayer = vm.pPlayer; auto const pPlayer = vm.pPlayer;
// jump directly into the loop, skipping branches during the first iteration do
goto next_instruction;
while (loop && (vm.flags & (VM_RETURN|VM_KILL|VM_NOEXECUTE)) == 0)
{ {
tw = *insptr;
next_instruction: next_instruction:
tw = *insptr;
g_errorLineNum = tw >> 12; g_errorLineNum = tw >> 12;
g_tw = tw &= VM_INSTMASK; g_tw = tw &= VM_INSTMASK;
if (tw == CON_LEFTBRACE) if (tw == CON_ELSE)
{ {
tw = *(++insptr), loop++; insptr = (intptr_t *)insptr[1];
goto next_instruction;
}
else if (tw == CON_LEFTBRACE)
{
insptr++, loop++;
goto next_instruction; goto next_instruction;
} }
else if (tw == CON_RIGHTBRACE) else if (tw == CON_RIGHTBRACE)
@ -1295,22 +1291,17 @@ next_instruction:
insptr++, loop--; insptr++, loop--;
continue; continue;
} }
else if (tw == CON_ELSE) else switch (tw)
{ {
insptr = (intptr_t *)insptr[1]; case CON_STATE:
tw = *insptr;
goto next_instruction;
}
else if (tw == CON_STATE)
{ {
auto tempscrptr = &insptr[2]; auto tempscrptr = &insptr[2];
insptr = (intptr_t *)insptr[1]; insptr = (intptr_t *)insptr[1];
VM_Execute(1); VM_Execute(1);
insptr = tempscrptr; insptr = tempscrptr;
continue;
} }
else switch (tw) continue;
{
case CON_SETVAR: case CON_SETVAR:
insptr++; insptr++;
if ((aGameVars[*insptr].flags & (GAMEVAR_USER_MASK | GAMEVAR_PTR_MASK)) == 0) if ((aGameVars[*insptr].flags & (GAMEVAR_USER_MASK | GAMEVAR_PTR_MASK)) == 0)
@ -2687,18 +2678,6 @@ badindex:
vm.pSprite->yrepeat = (uint8_t)*insptr++; vm.pSprite->yrepeat = (uint8_t)*insptr++;
continue; continue;
case CON_SOUNDONCE:
if (EDUKE32_PREDICT_FALSE((unsigned)*(++insptr) >= MAXSOUNDS))
{
CON_ERRPRINTF("invalid sound %d\n", (int32_t)*insptr++);
continue;
}
if (!S_CheckSoundPlaying(vm.spriteNum, *insptr++))
A_PlaySound(insptr[-1], vm.spriteNum);
continue;
case CON_IFACTORSOUND: case CON_IFACTORSOUND:
insptr++; insptr++;
{ {
@ -2726,17 +2705,6 @@ badindex:
// VM_DoConditional(SoundOwner[*insptr][0].ow == vm.spriteNum); // VM_DoConditional(SoundOwner[*insptr][0].ow == vm.spriteNum);
continue; continue;
case CON_STOPSOUND:
if (EDUKE32_PREDICT_FALSE((unsigned)*(++insptr) >= MAXSOUNDS))
{
CON_ERRPRINTF("invalid sound %d\n", (int32_t)*insptr);
continue;
}
if (S_CheckSoundPlaying(vm.spriteNum, *insptr))
S_StopSound((int16_t)*insptr);
insptr++;
continue;
case CON_STOPACTORSOUND: case CON_STOPACTORSOUND:
insptr++; insptr++;
{ {
@ -2790,30 +2758,6 @@ badindex:
continue; continue;
} }
case CON_GLOBALSOUND:
if (EDUKE32_PREDICT_FALSE((unsigned)*(++insptr) >= MAXSOUNDS))
{
CON_ERRPRINTF("invalid sound %d\n", (int32_t)*insptr);
continue;
}
if (vm.playerNum == screenpeek || (g_gametypeFlags[ud.coop] & GAMETYPE_COOPSOUND)
#ifdef SPLITSCREEN_MOD_HACKS
|| (g_fakeMultiMode == 2)
#endif
)
A_PlaySound(*insptr, g_player[screenpeek].ps->i);
insptr++;
continue;
case CON_SOUND:
if (EDUKE32_PREDICT_FALSE((unsigned)*(++insptr) >= MAXSOUNDS))
{
CON_ERRPRINTF("invalid sound %d\n", (int32_t)*insptr);
continue;
}
A_PlaySound(*insptr++, vm.spriteNum);
continue;
case CON_TIP: case CON_TIP:
insptr++; insptr++;
pPlayer->tipincs = GAMETICSPERSEC; pPlayer->tipincs = GAMETICSPERSEC;
@ -2919,14 +2863,6 @@ badindex:
vm.flags |= VM_KILL; vm.flags |= VM_KILL;
return; return;
case CON_ADDWEAPON:
insptr++;
{
int const weaponNum = *insptr++;
VM_AddWeapon(pPlayer, weaponNum, *insptr++);
continue;
}
case CON_DEBUG: case CON_DEBUG:
insptr++; insptr++;
buildprint(*insptr++, "\n"); buildprint(*insptr++, "\n");
@ -3006,7 +2942,7 @@ badindex:
vm.pSprite->ang = krand() & 2047; vm.pSprite->ang = krand() & 2047;
continue; continue;
case CON_ADDWEAPONVAR: case CON_ADDWEAPON:
insptr++; insptr++;
{ {
int const weaponNum = Gv_GetVarX(*insptr++); int const weaponNum = Gv_GetVarX(*insptr++);
@ -3694,9 +3630,9 @@ badindex:
case CON_TIME: insptr += 2; continue; case CON_TIME: insptr += 2; continue;
case CON_ESPAWNVAR: case CON_ESPAWN:
case CON_EQSPAWNVAR: case CON_EQSPAWN:
case CON_QSPAWNVAR: case CON_QSPAWN:
insptr++; insptr++;
{ {
int const tileNum = Gv_GetVarX(*insptr++); int const tileNum = Gv_GetVarX(*insptr++);
@ -3711,12 +3647,12 @@ badindex:
switch (tw) switch (tw)
{ {
case CON_EQSPAWNVAR: case CON_EQSPAWN:
if (spriteNum != -1) if (spriteNum != -1)
A_AddToDeleteQueue(spriteNum); A_AddToDeleteQueue(spriteNum);
fallthrough__; fallthrough__;
case CON_ESPAWNVAR: aGameVars[g_returnVarID].global = spriteNum; break; case CON_ESPAWN: aGameVars[g_returnVarID].global = spriteNum; break;
case CON_QSPAWNVAR: case CON_QSPAWN:
if (spriteNum != -1) if (spriteNum != -1)
A_AddToDeleteQueue(spriteNum); A_AddToDeleteQueue(spriteNum);
break; break;
@ -3724,8 +3660,8 @@ badindex:
continue; continue;
} }
case CON_SHOOTVAR: case CON_SHOOT:
case CON_ESHOOTVAR: case CON_ESHOOT:
insptr++; insptr++;
{ {
int j = Gv_GetVarX(*insptr++); int j = Gv_GetVarX(*insptr++);
@ -3738,14 +3674,14 @@ badindex:
j = A_Shoot(vm.spriteNum, j); j = A_Shoot(vm.spriteNum, j);
if (tw == CON_ESHOOTVAR) if (tw == CON_ESHOOT)
aGameVars[g_returnVarID].global = j; aGameVars[g_returnVarID].global = j;
continue; continue;
} }
case CON_EZSHOOTVAR: case CON_EZSHOOT:
case CON_ZSHOOTVAR: case CON_ZSHOOT:
insptr++; insptr++;
{ {
int const zvel = (int16_t)Gv_GetVarX(*insptr++); int const zvel = (int16_t)Gv_GetVarX(*insptr++);
@ -3759,7 +3695,7 @@ badindex:
j = A_ShootWithZvel(vm.spriteNum, j, zvel); j = A_ShootWithZvel(vm.spriteNum, j, zvel);
if (tw == CON_EZSHOOTVAR) if (tw == CON_EZSHOOT)
aGameVars[g_returnVarID].global = j; aGameVars[g_returnVarID].global = j;
continue; continue;
@ -3770,10 +3706,10 @@ badindex:
Menu_Change(Gv_GetVarX(*insptr++)); Menu_Change(Gv_GetVarX(*insptr++));
continue; continue;
case CON_SOUNDVAR: case CON_SOUND:
case CON_STOPSOUNDVAR: case CON_STOPSOUND:
case CON_SOUNDONCEVAR: case CON_SOUNDONCE:
case CON_GLOBALSOUNDVAR: case CON_GLOBALSOUND:
case CON_SCREENSOUND: case CON_SCREENSOUND:
insptr++; insptr++;
{ {
@ -3787,15 +3723,15 @@ badindex:
switch (tw) switch (tw)
{ {
case CON_SOUNDONCEVAR: case CON_SOUNDONCE:
if (!S_CheckSoundPlaying(vm.spriteNum, soundNum)) if (!S_CheckSoundPlaying(vm.spriteNum, soundNum))
{ {
fallthrough__; fallthrough__;
case CON_SOUNDVAR: A_PlaySound((int16_t)soundNum, vm.spriteNum); case CON_SOUND: A_PlaySound((int16_t)soundNum, vm.spriteNum);
} }
continue; continue;
case CON_GLOBALSOUNDVAR: A_PlaySound((int16_t)soundNum, g_player[screenpeek].ps->i); continue; case CON_GLOBALSOUND: A_PlaySound((int16_t)soundNum, g_player[screenpeek].ps->i); continue;
case CON_STOPSOUNDVAR: case CON_STOPSOUND:
if (S_CheckSoundPlaying(vm.spriteNum, soundNum)) if (S_CheckSoundPlaying(vm.spriteNum, soundNum))
S_StopSound((int16_t)soundNum); S_StopSound((int16_t)soundNum);
continue; continue;
@ -4059,11 +3995,6 @@ badindex:
continue; continue;
} }
case CON_ANGOFF:
insptr++;
spriteext[vm.spriteNum].angoff = *insptr++;
continue;
case CON_GETZRANGE: case CON_GETZRANGE:
insptr++; insptr++;
{ {
@ -4563,7 +4494,7 @@ badindex:
insptr++; insptr++;
continue; continue;
case CON_HITRADIUSVAR: case CON_HITRADIUS:
insptr++; insptr++;
{ {
int32_t params[5]; int32_t params[5];
@ -4572,11 +4503,6 @@ badindex:
} }
continue; continue;
case CON_HITRADIUS:
A_RadiusDamage(vm.spriteNum, insptr[1], insptr[2], insptr[3], insptr[4], insptr[5]);
insptr += 6;
continue;
case CON_IFP: case CON_IFP:
{ {
int const moveFlags = *(++insptr); int const moveFlags = *(++insptr);
@ -4830,14 +4756,6 @@ badindex:
continue; continue;
} }
case CON_ADDLOG:
{
insptr++;
initprintf(OSDTEXT_GREEN "CONLOG: L=%d\n", g_errorLineNum);
continue;
}
case CON_ADDLOGVAR: case CON_ADDLOGVAR:
insptr++; insptr++;
{ {
@ -4943,10 +4861,10 @@ badindex:
continue; continue;
} }
case CON_FINDNEARACTORVAR: case CON_FINDNEARACTOR:
case CON_FINDNEARSPRITEVAR: case CON_FINDNEARSPRITE:
case CON_FINDNEARACTOR3DVAR: case CON_FINDNEARACTOR3D:
case CON_FINDNEARSPRITE3DVAR: case CON_FINDNEARSPRITE3D:
insptr++; insptr++;
{ {
// syntax findnearactorvar <type> <maxdistvar> <getvar> // syntax findnearactorvar <type> <maxdistvar> <getvar>
@ -4962,10 +4880,10 @@ badindex:
int findStatnum = STAT_ACTOR; int findStatnum = STAT_ACTOR;
int spriteNum; int spriteNum;
if (tw == CON_FINDNEARSPRITEVAR || tw == CON_FINDNEARSPRITE3DVAR) if (tw == CON_FINDNEARSPRITE || tw == CON_FINDNEARSPRITE3D)
findStatnum = MAXSTATUS - 1; findStatnum = MAXSTATUS - 1;
if (tw == CON_FINDNEARACTOR3DVAR || tw == CON_FINDNEARSPRITE3DVAR) if (tw == CON_FINDNEARACTOR3D || tw == CON_FINDNEARSPRITE3D)
{ {
do do
{ {
@ -4982,7 +4900,7 @@ badindex:
} }
spriteNum = nextspritestat[spriteNum]; spriteNum = nextspritestat[spriteNum];
} }
if (spriteNum == MAXSPRITES || tw == CON_FINDNEARACTOR3DVAR) if (spriteNum == MAXSPRITES || tw == CON_FINDNEARACTOR3D)
break; break;
} while (findStatnum--); } while (findStatnum--);
Gv_SetVarX(returnVar, foundSprite); Gv_SetVarX(returnVar, foundSprite);
@ -5005,15 +4923,15 @@ badindex:
spriteNum = nextspritestat[spriteNum]; spriteNum = nextspritestat[spriteNum];
} }
if (spriteNum == MAXSPRITES || tw == CON_FINDNEARACTORVAR) if (spriteNum == MAXSPRITES || tw == CON_FINDNEARACTOR)
break; break;
} while (findStatnum--); } while (findStatnum--);
Gv_SetVarX(returnVar, foundSprite); Gv_SetVarX(returnVar, foundSprite);
continue; continue;
} }
case CON_FINDNEARACTORZVAR: case CON_FINDNEARACTORZ:
case CON_FINDNEARSPRITEZVAR: case CON_FINDNEARSPRITEZ:
insptr++; insptr++;
{ {
// syntax findnearactorvar <type> <maxdistvar> <getvar> // syntax findnearactorvar <type> <maxdistvar> <getvar>
@ -5031,7 +4949,7 @@ badindex:
do do
{ {
int spriteNum = headspritestat[tw == CON_FINDNEARACTORZVAR ? STAT_ACTOR : findStatnum]; // all sprites int spriteNum = headspritestat[tw == CON_FINDNEARACTORZ ? STAT_ACTOR : findStatnum]; // all sprites
if (spriteNum == -1) if (spriteNum == -1)
continue; continue;
@ -5052,7 +4970,7 @@ badindex:
spriteNum = nextspritestat[spriteNum]; spriteNum = nextspritestat[spriteNum];
} while (spriteNum >= 0); } while (spriteNum >= 0);
if (tw == CON_FINDNEARACTORZVAR || spriteNum == MAXSPRITES) if (tw == CON_FINDNEARACTORZ || spriteNum == MAXSPRITES)
break; break;
} while (findStatnum--); } while (findStatnum--);
Gv_SetVarX(returnVar, foundSprite); Gv_SetVarX(returnVar, foundSprite);
@ -5163,7 +5081,7 @@ badindex:
Gv_SetVarX(*insptr++, getangle(vm.pActor->lastv.x - vm.pSprite->x, vm.pActor->lastv.y - vm.pSprite->y)); Gv_SetVarX(*insptr++, getangle(vm.pActor->lastv.x - vm.pSprite->x, vm.pActor->lastv.y - vm.pSprite->y));
continue; continue;
case CON_ANGOFFVAR: case CON_ANGOFF:
insptr++; insptr++;
spriteext[vm.spriteNum].angoff = Gv_GetVarX(*insptr++); spriteext[vm.spriteNum].angoff = Gv_GetVarX(*insptr++);
continue; continue;
@ -5725,11 +5643,6 @@ badindex:
continue; continue;
case CON_STARTTRACK: case CON_STARTTRACK:
insptr++;
G_StartTrackSlotWrap(ud.volume_number, *(insptr++));
continue;
case CON_STARTTRACKVAR:
insptr++; insptr++;
G_StartTrackSlotWrap(ud.volume_number, Gv_GetVarX(*(insptr++))); G_StartTrackSlotWrap(ud.volume_number, Gv_GetVarX(*(insptr++)));
continue; continue;
@ -5994,7 +5907,7 @@ badindex:
"Thank you!"); "Thank you!");
break; break;
} }
} } while (loop && (vm.flags & (VM_RETURN|VM_KILL|VM_NOEXECUTE)) == 0);
} }
// NORECURSE // NORECURSE
@ -6065,7 +5978,8 @@ void VM_UpdateAnim(int spriteNum, int32_t *pData)
// NORECURSE // NORECURSE
void A_Execute(int spriteNum, int playerNum, int playerDist) void A_Execute(int spriteNum, int playerNum, int playerDist)
{ {
vmstate_t tempvm // for some reason this is faster than using the C++ syntax; e.g vm = vmstate_t{ ... }
vmstate_t const tempvm
= { spriteNum, playerNum, playerDist, 0, &sprite[spriteNum], &actor[spriteNum].t_data[0], g_player[playerNum].ps, &actor[spriteNum] }; = { spriteNum, playerNum, playerDist, 0, &sprite[spriteNum], &actor[spriteNum].t_data[0], g_player[playerNum].ps, &actor[spriteNum] };
vm = tempvm; vm = tempvm;
@ -6095,34 +6009,24 @@ void A_Execute(int spriteNum, int playerNum, int playerDist)
VM_UpdateAnim(vm.spriteNum, vm.pData); VM_UpdateAnim(vm.spriteNum, vm.pData);
double t = timerGetHiTicks();
#ifdef LUNATIC #ifdef LUNATIC
int const picnum = vm.pSprite->picnum; int const picnum = vm.pSprite->picnum;
if (L_IsInitialized(&g_ElState) && El_HaveActor(picnum)) if (L_IsInitialized(&g_ElState) && El_HaveActor(picnum))
{
double t = timerGetHiTicks();
killit = (El_CallActor(&g_ElState, picnum, spriteNum, playerNum, playerDist)==1); killit = (El_CallActor(&g_ElState, picnum, spriteNum, playerNum, playerDist)==1);
t = timerGetHiTicks()-t;
g_actorTotalMs[picnum] += t;
g_actorMinMs[picnum] = min(g_actorMinMs[picnum], t);
g_actorMaxMs[picnum] = max(g_actorMaxMs[picnum], t);
g_actorCalls[picnum]++;
}
#else #else
double t = timerGetHiTicks();
int const picnum = vm.pSprite->picnum; int const picnum = vm.pSprite->picnum;
insptr = 4 + (g_tile[vm.pSprite->picnum].execPtr); insptr = 4 + (g_tile[vm.pSprite->picnum].execPtr);
VM_Execute(1); VM_Execute(1);
insptr = NULL; insptr = NULL;
#endif
t = timerGetHiTicks()-t; t = timerGetHiTicks()-t;
g_actorTotalMs[picnum] += t; g_actorTotalMs[picnum] += t;
g_actorMinMs[picnum] = min(g_actorMinMs[picnum], t); g_actorMinMs[picnum] = min(g_actorMinMs[picnum], t);
g_actorMaxMs[picnum] = max(g_actorMaxMs[picnum], t); g_actorMaxMs[picnum] = max(g_actorMaxMs[picnum], t);
g_actorCalls[picnum]++; g_actorCalls[picnum]++;
#endif
#ifdef LUNATIC #ifdef LUNATIC
if (killit) if (killit)