diff --git a/src/b_bot.c b/src/b_bot.c
index af57d65ecf6e3c24e725ed38b9533b9ab6509763..407a96c8b32b925e448226fb7351c4a27e34e4b6 100644
--- a/src/b_bot.c
+++ b/src/b_bot.c
@@ -624,7 +624,7 @@ void B_HandleFlightIndicator(player_t *player)
 	}
 
 	// if the mobj isn't a flight indicator, let's not mess with it
-	if (tails->hnext->type != MT_OVERLAY || (tails->hnext->state != states+S_FLIGHTINDICATOR))
+	if (tails->hnext->type != MT_OVERLAY || (tails->hnext->state->num != S_FLIGHTINDICATOR))
 		return;
 
 	// if it shouldn't exist, remove it
diff --git a/src/deh_lua.c b/src/deh_lua.c
index 1dcf0f13c3889508705c26f7bbd6bb62b941b78b..ee02746c20968ed154f74d01b6937853a78913bc 100644
--- a/src/deh_lua.c
+++ b/src/deh_lua.c
@@ -83,18 +83,9 @@ static inline int lib_freeslot(lua_State *L)
 		}
 		else if (fastcmp(type, "S"))
 		{
-			statenum_t i;
-			for (i = 0; i < NUMSTATEFREESLOTS; i++)
-				if (!FREE_STATES[i]) {
-					CONS_Printf("State S_%s allocated.\n",word);
-					FREE_STATES[i] = Z_Malloc(strlen(word)+1, PU_STATIC, NULL);
-					strcpy(FREE_STATES[i],word);
-					lua_pushinteger(L, S_FIRSTFREESLOT + i);
-					r++;
-					break;
-				}
-			if (i == NUMSTATEFREESLOTS)
-				CONS_Alert(CONS_WARNING, "Ran out of free State slots!\n");
+			CONS_Printf("State S_%s allocated.\n",word);
+			lua_pushinteger(L, P_AllocateState(Z_StrDup(va("S_%s", word))));
+			r++;
 		}
 		else if (fastcmp(type, "MT"))
 		{
@@ -406,25 +397,21 @@ static int ScanConstants(lua_State *L, boolean mathlib, const char *word)
 		return 0;
 	}
 	else if (fastncmp("S_",word,2)) {
-		p = word+2;
-		for (i = 0; i < NUMSTATEFREESLOTS; i++) {
-			if (!FREE_STATES[i])
-				break;
-			if (fastcmp(p, FREE_STATES[i])) {
-				CacheAndPushConstant(L, word, S_FIRSTFREESLOT+i);
-				return 1;
-			}
-		}
-		for (i = 0; i < S_FIRSTFREESLOT; i++)
-			if (fastcmp(p, STATE_LIST[i]+2)) {
+		for (i = 0; (UINT32)i < numstates; i++)
+		{
+			if (fastcmp(word, states[i]->name))
+			{
 				CacheAndPushConstant(L, word, i);
 				return 1;
 			}
+		}
 		return luaL_error(L, "state '%s' does not exist.\n", word);
 	}
 	else if (fastncmp("MT_",word,3)) {
-		for (i = 0; (size_t)i < nummobjinfo; i++) {
-			if (fastcmp(word, mobjinfo[i]->name)) {
+		for (i = 0; (UINT32)i < nummobjinfo; i++)
+		{
+			if (fastcmp(word, mobjinfo[i]->name))
+			{
 				CacheAndPushConstant(L, word, i);
 				return 1;
 			}
diff --git a/src/deh_soc.c b/src/deh_soc.c
index 9c07a38f1df4194599fa2e7f9468e9832a178f48..c62082f29fe0cfcef103269fad5f2127dd2c6a86 100644
--- a/src/deh_soc.c
+++ b/src/deh_soc.c
@@ -459,12 +459,8 @@ void readfreeslots(MYFILE *f)
 			}
 			else if (fastcmp(type, "S"))
 			{
-				for (i = 0; i < NUMSTATEFREESLOTS; i++)
-					if (!FREE_STATES[i]) {
-						FREE_STATES[i] = Z_Malloc(strlen(word)+1, PU_STATIC, NULL);
-						strcpy(FREE_STATES[i],word);
-						break;
-					}
+				CONS_Printf("State S_%s allocated.\n",word);
+				P_AllocateState(Z_StrDup(va("S_%s", word)));
 			}
 			else if (fastcmp(type, "MT"))
 			{
@@ -2760,27 +2756,27 @@ void readframe(MYFILE *f, INT32 num)
 
 			if (fastcmp(word1, "SPRITENUMBER") || fastcmp(word1, "SPRITENAME"))
 			{
-				states[num].sprite = get_sprite(word2);
+				states[num]->sprite = get_sprite(word2);
 			}
 			else if (fastcmp(word1, "SPRITESUBNUMBER") || fastcmp(word1, "SPRITEFRAME"))
 			{
-				states[num].frame = (INT32)get_number(word2); // So the FF_ flags get calculated
+				states[num]->frame = (INT32)get_number(word2); // So the FF_ flags get calculated
 			}
 			else if (fastcmp(word1, "DURATION"))
 			{
-				states[num].tics = (INT32)get_number(word2); // So TICRATE can be used
+				states[num]->tics = (INT32)get_number(word2); // So TICRATE can be used
 			}
 			else if (fastcmp(word1, "NEXT"))
 			{
-				states[num].nextstate = get_state(word2);
+				states[num]->nextstate = get_state(word2);
 			}
 			else if (fastcmp(word1, "VAR1"))
 			{
-				states[num].var1 = (INT32)get_number(word2);
+				states[num]->var1 = (INT32)get_number(word2);
 			}
 			else if (fastcmp(word1, "VAR2"))
 			{
-				states[num].var2 = (INT32)get_number(word2);
+				states[num]->var2 = (INT32)get_number(word2);
 			}
 			else if (fastcmp(word1, "ACTION"))
 			{
@@ -2803,20 +2799,20 @@ void readframe(MYFILE *f, INT32 num)
 
 				for (z = 0; actionpointers[z].name; z++)
 				{
-					if (actionpointers[z].action.acv == states[num].action.acv)
+					if (actionpointers[z].action.acv == states[num]->action.acv)
 						break;
 				}
 
 				z = 0;
-				found = LUA_SetLuaAction(&states[num], actiontocompare);
+				found = LUA_SetLuaAction(states[num], actiontocompare);
 				if (!found)
 					while (actionpointers[z].name)
 					{
 						if (fastcmp(actiontocompare, actionpointers[z].name))
 						{
-							states[num].action = actionpointers[z].action;
-							states[num].action.acv = actionpointers[z].action.acv; // assign
-							states[num].action.acp1 = actionpointers[z].action.acp1;
+							states[num]->action = actionpointers[z].action;
+							states[num]->action.acv = actionpointers[z].action.acv; // assign
+							states[num]->action.acp1 = actionpointers[z].action.acp1;
 							found = true;
 							break;
 						}
@@ -4113,11 +4109,12 @@ void readwipes(MYFILE *f)
 
 mobjtype_t get_mobjtype(const char *word)
 { // Returns the value of MT_ enumerations
-	mobjtype_t i;
+	UINT32 i;
 	if (*word >= '0' && *word <= '9')
 		return atoi(word);
 	I_Assert(fastncmp("MT_",word,3));
-	for (i = 0; i < nummobjinfo; i++) {
+	for (i = 0; i < nummobjinfo; i++)
+	{
 		if (fastcmp(word, mobjinfo[i]->name))
 			return i;
 	}
@@ -4127,20 +4124,14 @@ mobjtype_t get_mobjtype(const char *word)
 
 statenum_t get_state(const char *word)
 { // Returns the value of S_ enumerations
-	statenum_t i;
+	UINT32 i;
 	if (*word >= '0' && *word <= '9')
 		return atoi(word);
-	if (fastncmp("S_",word,2))
-		word += 2; // take off the S_
-	for (i = 0; i < NUMSTATEFREESLOTS; i++) {
-		if (!FREE_STATES[i])
-			break;
-		if (fastcmp(word, FREE_STATES[i]))
-			return S_FIRSTFREESLOT+i;
-	}
-	for (i = 0; i < S_FIRSTFREESLOT; i++)
-		if (fastcmp(word, STATE_LIST[i]+2))
+	for (i = 0; i < numstates; i++)
+	{
+		if (fastcmp(word, states[i]->name))
 			return i;
+	}
 	deh_warning("Couldn't find state named 'S_%s'",word);
 	return S_NULL;
 }
diff --git a/src/deh_tables.c b/src/deh_tables.c
index 82523caffbf233916853db3a27afceb6b7200857..de24c1b3ab7a5433d8e888ad6c521c9bc32a3164 100644
--- a/src/deh_tables.c
+++ b/src/deh_tables.c
@@ -28,7 +28,6 @@
 
 #include "deh_tables.h"
 
-char *FREE_STATES[NUMSTATEFREESLOTS];
 char *FREE_SKINCOLORS[NUMCOLORFREESLOTS];
 bitarray_t used_spr[BIT_ARRAY_SIZE(NUMSPRITEFREESLOTS)]; // Sprite freeslots in use
 
@@ -346,3990 +345,6 @@ actionpointer_t actionpointers[] =
 	{{NULL},                   NULL},
 };
 
-////////////////////////////////////////////////////////////////////////////////
-// CRAZY LIST OF STATE NAMES AND ALL FROM HERE DOWN
-// TODO: Make this all a seperate file or something, like part of info.c??
-// TODO: Read the list from a text lump in a WAD as necessary instead
-// or something, don't just keep it all in memory like this.
-// TODO: Make the lists public so we can start using actual mobj
-// and state names in warning and error messages! :D
-
-// RegEx to generate this from info.h: ^\tS_([^,]+), --> \t"S_\1",
-// I am leaving the prefixes solely for clarity to programmers,
-// because sadly no one remembers this place while searching for full state names.
-const char *const STATE_LIST[] = { // array length left dynamic for sanity testing later.
-	"S_NULL",
-	"S_UNKNOWN",
-	"S_INVISIBLE", // state for invisible sprite
-
-	"S_SPAWNSTATE",
-	"S_SEESTATE",
-	"S_MELEESTATE",
-	"S_MISSILESTATE",
-	"S_DEATHSTATE",
-	"S_XDEATHSTATE",
-	"S_RAISESTATE",
-
-	// Thok
-	"S_THOK",
-
-	// Player
-	"S_PLAY_STND",
-	"S_PLAY_WAIT",
-	"S_PLAY_WALK",
-	"S_PLAY_SKID",
-	"S_PLAY_RUN",
-	"S_PLAY_DASH",
-	"S_PLAY_PAIN",
-	"S_PLAY_STUN",
-	"S_PLAY_DEAD",
-	"S_PLAY_DRWN",
-	"S_PLAY_ROLL",
-	"S_PLAY_GASP",
-	"S_PLAY_JUMP",
-	"S_PLAY_SPRING",
-	"S_PLAY_FALL",
-	"S_PLAY_EDGE",
-	"S_PLAY_RIDE",
-
-	// CA2_SPINDASH
-	"S_PLAY_SPINDASH",
-
-	// CA_FLY/SWIM
-	"S_PLAY_FLY",
-	"S_PLAY_SWIM",
-	"S_PLAY_FLY_TIRED",
-
-	// CA_GLIDEANDCLIMB
-	"S_PLAY_GLIDE",
-	"S_PLAY_GLIDE_LANDING",
-	"S_PLAY_CLING",
-	"S_PLAY_CLIMB",
-
-	// CA_FLOAT/CA_SLOWFALL
-	"S_PLAY_FLOAT",
-	"S_PLAY_FLOAT_RUN",
-
-	// CA_BOUNCE
-	"S_PLAY_BOUNCE",
-	"S_PLAY_BOUNCE_LANDING",
-
-	// CA2_GUNSLINGER
-	"S_PLAY_FIRE",
-	"S_PLAY_FIRE_FINISH",
-
-	// CA_TWINSPIN
-	"S_PLAY_TWINSPIN",
-
-	// CA2_MELEE
-	"S_PLAY_MELEE",
-	"S_PLAY_MELEE_FINISH",
-	"S_PLAY_MELEE_LANDING",
-
-	// SF_SUPER
-	"S_PLAY_SUPER_TRANS1",
-	"S_PLAY_SUPER_TRANS2",
-	"S_PLAY_SUPER_TRANS3",
-	"S_PLAY_SUPER_TRANS4",
-	"S_PLAY_SUPER_TRANS5",
-	"S_PLAY_SUPER_TRANS6",
-
-	// technically the player goes here but it's an infinite tic state
-	"S_OBJPLACE_DUMMY",
-
-	// 1-Up Box Sprites overlay (uses player sprite)
-	"S_PLAY_BOX1",
-	"S_PLAY_BOX2",
-	"S_PLAY_ICON1",
-	"S_PLAY_ICON2",
-	"S_PLAY_ICON3",
-
-	// Level end sign overlay (uses player sprite)
-	"S_PLAY_SIGN",
-
-	// NiGHTS character (uses player sprite)
-	"S_PLAY_NIGHTS_TRANS1",
-	"S_PLAY_NIGHTS_TRANS2",
-	"S_PLAY_NIGHTS_TRANS3",
-	"S_PLAY_NIGHTS_TRANS4",
-	"S_PLAY_NIGHTS_TRANS5",
-	"S_PLAY_NIGHTS_TRANS6",
-	"S_PLAY_NIGHTS_STAND",
-	"S_PLAY_NIGHTS_FLOAT",
-	"S_PLAY_NIGHTS_FLY",
-	"S_PLAY_NIGHTS_DRILL",
-	"S_PLAY_NIGHTS_STUN",
-	"S_PLAY_NIGHTS_PULL",
-	"S_PLAY_NIGHTS_ATTACK",
-
-	// c:
-	"S_TAILSOVERLAY_STAND",
-	"S_TAILSOVERLAY_0DEGREES",
-	"S_TAILSOVERLAY_PLUS30DEGREES",
-	"S_TAILSOVERLAY_PLUS60DEGREES",
-	"S_TAILSOVERLAY_MINUS30DEGREES",
-	"S_TAILSOVERLAY_MINUS60DEGREES",
-	"S_TAILSOVERLAY_RUN",
-	"S_TAILSOVERLAY_FLY",
-	"S_TAILSOVERLAY_TIRE",
-	"S_TAILSOVERLAY_PAIN",
-	"S_TAILSOVERLAY_GASP",
-	"S_TAILSOVERLAY_EDGE",
-	"S_TAILSOVERLAY_DASH",
-
-	// [:
-	"S_JETFUMEFLASH",
-
-	// Blue Crawla
-	"S_POSS_STND",
-	"S_POSS_RUN1",
-	"S_POSS_RUN2",
-	"S_POSS_RUN3",
-	"S_POSS_RUN4",
-	"S_POSS_RUN5",
-	"S_POSS_RUN6",
-
-	// Red Crawla
-	"S_SPOS_STND",
-	"S_SPOS_RUN1",
-	"S_SPOS_RUN2",
-	"S_SPOS_RUN3",
-	"S_SPOS_RUN4",
-	"S_SPOS_RUN5",
-	"S_SPOS_RUN6",
-
-	// Greenflower Fish
-	"S_FISH1",
-	"S_FISH2",
-	"S_FISH3",
-	"S_FISH4",
-
-	// Buzz (Gold)
-	"S_BUZZLOOK1",
-	"S_BUZZLOOK2",
-	"S_BUZZFLY1",
-	"S_BUZZFLY2",
-
-	// Buzz (Red)
-	"S_RBUZZLOOK1",
-	"S_RBUZZLOOK2",
-	"S_RBUZZFLY1",
-	"S_RBUZZFLY2",
-
-	// Jetty-Syn Bomber
-	"S_JETBLOOK1",
-	"S_JETBLOOK2",
-	"S_JETBZOOM1",
-	"S_JETBZOOM2",
-
-	// Jetty-Syn Gunner
-	"S_JETGLOOK1",
-	"S_JETGLOOK2",
-	"S_JETGZOOM1",
-	"S_JETGZOOM2",
-	"S_JETGSHOOT1",
-	"S_JETGSHOOT2",
-
-	// Crawla Commander
-	"S_CCOMMAND1",
-	"S_CCOMMAND2",
-	"S_CCOMMAND3",
-	"S_CCOMMAND4",
-
-	// Deton
-	"S_DETON1",
-	"S_DETON2",
-	"S_DETON3",
-	"S_DETON4",
-	"S_DETON5",
-	"S_DETON6",
-	"S_DETON7",
-	"S_DETON8",
-	"S_DETON9",
-	"S_DETON10",
-	"S_DETON11",
-	"S_DETON12",
-	"S_DETON13",
-	"S_DETON14",
-	"S_DETON15",
-
-	// Skim Mine Dropper
-	"S_SKIM1",
-	"S_SKIM2",
-	"S_SKIM3",
-	"S_SKIM4",
-
-	// THZ Turret
-	"S_TURRET",
-	"S_TURRETFIRE",
-	"S_TURRETSHOCK1",
-	"S_TURRETSHOCK2",
-	"S_TURRETSHOCK3",
-	"S_TURRETSHOCK4",
-	"S_TURRETSHOCK5",
-	"S_TURRETSHOCK6",
-	"S_TURRETSHOCK7",
-	"S_TURRETSHOCK8",
-	"S_TURRETSHOCK9",
-
-	// Popup Turret
-	"S_TURRETLOOK",
-	"S_TURRETSEE",
-	"S_TURRETPOPUP1",
-	"S_TURRETPOPUP2",
-	"S_TURRETPOPUP3",
-	"S_TURRETPOPUP4",
-	"S_TURRETPOPUP5",
-	"S_TURRETPOPUP6",
-	"S_TURRETPOPUP7",
-	"S_TURRETPOPUP8",
-	"S_TURRETSHOOT",
-	"S_TURRETPOPDOWN1",
-	"S_TURRETPOPDOWN2",
-	"S_TURRETPOPDOWN3",
-	"S_TURRETPOPDOWN4",
-	"S_TURRETPOPDOWN5",
-	"S_TURRETPOPDOWN6",
-	"S_TURRETPOPDOWN7",
-	"S_TURRETPOPDOWN8",
-
-	// Spincushion
-	"S_SPINCUSHION_LOOK",
-	"S_SPINCUSHION_CHASE1",
-	"S_SPINCUSHION_CHASE2",
-	"S_SPINCUSHION_CHASE3",
-	"S_SPINCUSHION_CHASE4",
-	"S_SPINCUSHION_AIM1",
-	"S_SPINCUSHION_AIM2",
-	"S_SPINCUSHION_AIM3",
-	"S_SPINCUSHION_AIM4",
-	"S_SPINCUSHION_AIM5",
-	"S_SPINCUSHION_SPIN1",
-	"S_SPINCUSHION_SPIN2",
-	"S_SPINCUSHION_SPIN3",
-	"S_SPINCUSHION_SPIN4",
-	"S_SPINCUSHION_STOP1",
-	"S_SPINCUSHION_STOP2",
-	"S_SPINCUSHION_STOP3",
-	"S_SPINCUSHION_STOP4",
-
-	// Crushstacean
-	"S_CRUSHSTACEAN_ROAM1",
-	"S_CRUSHSTACEAN_ROAM2",
-	"S_CRUSHSTACEAN_ROAM3",
-	"S_CRUSHSTACEAN_ROAM4",
-	"S_CRUSHSTACEAN_ROAMPAUSE",
-	"S_CRUSHSTACEAN_PUNCH1",
-	"S_CRUSHSTACEAN_PUNCH2",
-	"S_CRUSHCLAW_AIM",
-	"S_CRUSHCLAW_OUT",
-	"S_CRUSHCLAW_STAY",
-	"S_CRUSHCLAW_IN",
-	"S_CRUSHCLAW_WAIT",
-	"S_CRUSHCHAIN",
-
-	// Banpyura
-	"S_BANPYURA_ROAM1",
-	"S_BANPYURA_ROAM2",
-	"S_BANPYURA_ROAM3",
-	"S_BANPYURA_ROAM4",
-	"S_BANPYURA_ROAMPAUSE",
-	"S_CDIAG1",
-	"S_CDIAG2",
-	"S_CDIAG3",
-	"S_CDIAG4",
-	"S_CDIAG5",
-	"S_CDIAG6",
-	"S_CDIAG7",
-	"S_CDIAG8",
-
-	// Jet Jaw
-	"S_JETJAW_ROAM1",
-	"S_JETJAW_ROAM2",
-	"S_JETJAW_ROAM3",
-	"S_JETJAW_ROAM4",
-	"S_JETJAW_ROAM5",
-	"S_JETJAW_ROAM6",
-	"S_JETJAW_ROAM7",
-	"S_JETJAW_ROAM8",
-	"S_JETJAW_CHOMP1",
-	"S_JETJAW_CHOMP2",
-	"S_JETJAW_CHOMP3",
-	"S_JETJAW_CHOMP4",
-	"S_JETJAW_CHOMP5",
-	"S_JETJAW_CHOMP6",
-	"S_JETJAW_CHOMP7",
-	"S_JETJAW_CHOMP8",
-	"S_JETJAW_CHOMP9",
-	"S_JETJAW_CHOMP10",
-	"S_JETJAW_CHOMP11",
-	"S_JETJAW_CHOMP12",
-	"S_JETJAW_CHOMP13",
-	"S_JETJAW_CHOMP14",
-	"S_JETJAW_CHOMP15",
-	"S_JETJAW_CHOMP16",
-	"S_JETJAW_SOUND",
-
-	// Snailer
-	"S_SNAILER1",
-	"S_SNAILER_FLICKY",
-
-	// Vulture
-	"S_VULTURE_STND",
-	"S_VULTURE_DRIFT",
-	"S_VULTURE_ZOOM1",
-	"S_VULTURE_ZOOM2",
-	"S_VULTURE_STUNNED",
-
-	// Pointy
-	"S_POINTY1",
-	"S_POINTYBALL1",
-
-	// Robo-Hood
-	"S_ROBOHOOD_LOOK",
-	"S_ROBOHOOD_STAND",
-	"S_ROBOHOOD_FIRE1",
-	"S_ROBOHOOD_FIRE2",
-	"S_ROBOHOOD_JUMP1",
-	"S_ROBOHOOD_JUMP2",
-	"S_ROBOHOOD_JUMP3",
-
-	// Castlebot Facestabber
-	"S_FACESTABBER_STND1",
-	"S_FACESTABBER_STND2",
-	"S_FACESTABBER_STND3",
-	"S_FACESTABBER_STND4",
-	"S_FACESTABBER_STND5",
-	"S_FACESTABBER_STND6",
-	"S_FACESTABBER_CHARGE1",
-	"S_FACESTABBER_CHARGE2",
-	"S_FACESTABBER_CHARGE3",
-	"S_FACESTABBER_CHARGE4",
-	"S_FACESTABBER_PAIN",
-	"S_FACESTABBER_DIE1",
-	"S_FACESTABBER_DIE2",
-	"S_FACESTABBER_DIE3",
-	"S_FACESTABBERSPEAR",
-
-	// Egg Guard
-	"S_EGGGUARD_STND",
-	"S_EGGGUARD_WALK1",
-	"S_EGGGUARD_WALK2",
-	"S_EGGGUARD_WALK3",
-	"S_EGGGUARD_WALK4",
-	"S_EGGGUARD_MAD1",
-	"S_EGGGUARD_MAD2",
-	"S_EGGGUARD_MAD3",
-	"S_EGGGUARD_RUN1",
-	"S_EGGGUARD_RUN2",
-	"S_EGGGUARD_RUN3",
-	"S_EGGGUARD_RUN4",
-
-	// Egg Shield for Egg Guard
-	"S_EGGSHIELD",
-	"S_EGGSHIELDBREAK",
-
-	// Green Snapper
-	"S_SNAPPER_SPAWN",
-	"S_SNAPPER_SPAWN2",
-	"S_GSNAPPER_STND",
-	"S_GSNAPPER1",
-	"S_GSNAPPER2",
-	"S_GSNAPPER3",
-	"S_GSNAPPER4",
-	"S_SNAPPER_XPLD",
-	"S_SNAPPER_LEG",
-	"S_SNAPPER_LEGRAISE",
-	"S_SNAPPER_HEAD",
-
-	// Minus
-	"S_MINUS_INIT",
-	"S_MINUS_STND",
-	"S_MINUS_DIGGING1",
-	"S_MINUS_DIGGING2",
-	"S_MINUS_DIGGING3",
-	"S_MINUS_DIGGING4",
-	"S_MINUS_BURST0",
-	"S_MINUS_BURST1",
-	"S_MINUS_BURST2",
-	"S_MINUS_BURST3",
-	"S_MINUS_BURST4",
-	"S_MINUS_BURST5",
-	"S_MINUS_POPUP",
-	"S_MINUS_AERIAL1",
-	"S_MINUS_AERIAL2",
-	"S_MINUS_AERIAL3",
-	"S_MINUS_AERIAL4",
-
-	// Minus dirt
-	"S_MINUSDIRT1",
-	"S_MINUSDIRT2",
-	"S_MINUSDIRT3",
-	"S_MINUSDIRT4",
-	"S_MINUSDIRT5",
-	"S_MINUSDIRT6",
-	"S_MINUSDIRT7",
-
-	// Spring Shell
-	"S_SSHELL_STND",
-	"S_SSHELL_RUN1",
-	"S_SSHELL_RUN2",
-	"S_SSHELL_RUN3",
-	"S_SSHELL_RUN4",
-	"S_SSHELL_SPRING1",
-	"S_SSHELL_SPRING2",
-	"S_SSHELL_SPRING3",
-	"S_SSHELL_SPRING4",
-
-	// Spring Shell (yellow)
-	"S_YSHELL_STND",
-	"S_YSHELL_RUN1",
-	"S_YSHELL_RUN2",
-	"S_YSHELL_RUN3",
-	"S_YSHELL_RUN4",
-	"S_YSHELL_SPRING1",
-	"S_YSHELL_SPRING2",
-	"S_YSHELL_SPRING3",
-	"S_YSHELL_SPRING4",
-
-	// Unidus
-	"S_UNIDUS_STND",
-	"S_UNIDUS_RUN",
-	"S_UNIDUS_BALL",
-
-	// Canarivore
-	"S_CANARIVORE_LOOK",
-	"S_CANARIVORE_AWAKEN1",
-	"S_CANARIVORE_AWAKEN2",
-	"S_CANARIVORE_AWAKEN3",
-	"S_CANARIVORE_GAS1",
-	"S_CANARIVORE_GAS2",
-	"S_CANARIVORE_GAS3",
-	"S_CANARIVORE_GAS4",
-	"S_CANARIVORE_GAS5",
-	"S_CANARIVORE_GASREPEAT",
-	"S_CANARIVORE_CLOSE1",
-	"S_CANARIVORE_CLOSE2",
-	"S_CANARIVOREGAS_1",
-	"S_CANARIVOREGAS_2",
-	"S_CANARIVOREGAS_3",
-	"S_CANARIVOREGAS_4",
-	"S_CANARIVOREGAS_5",
-	"S_CANARIVOREGAS_6",
-	"S_CANARIVOREGAS_7",
-	"S_CANARIVOREGAS_8",
-
-	// Pyre Fly
-	"S_PYREFLY_FLY",
-	"S_PYREFLY_BURN",
-	"S_PYREFIRE1",
-	"S_PYREFIRE2",
-
-	// Pterabyte
-	"S_PTERABYTESPAWNER",
-	"S_PTERABYTEWAYPOINT",
-	"S_PTERABYTE_FLY1",
-	"S_PTERABYTE_FLY2",
-	"S_PTERABYTE_FLY3",
-	"S_PTERABYTE_FLY4",
-	"S_PTERABYTE_SWOOPDOWN",
-	"S_PTERABYTE_SWOOPUP",
-
-	// Dragonbomber
-	"S_DRAGONBOMBER",
-	"S_DRAGONWING1",
-	"S_DRAGONWING2",
-	"S_DRAGONWING3",
-	"S_DRAGONWING4",
-	"S_DRAGONTAIL_LOADED",
-	"S_DRAGONTAIL_EMPTY",
-	"S_DRAGONTAIL_EMPTYLOOP",
-	"S_DRAGONTAIL_RELOAD",
-	"S_DRAGONMINE",
-	"S_DRAGONMINE_LAND1",
-	"S_DRAGONMINE_LAND2",
-	"S_DRAGONMINE_SLOWFLASH1",
-	"S_DRAGONMINE_SLOWFLASH2",
-	"S_DRAGONMINE_SLOWLOOP",
-	"S_DRAGONMINE_FASTFLASH1",
-	"S_DRAGONMINE_FASTFLASH2",
-	"S_DRAGONMINE_FASTLOOP",
-
-	// Boss Explosion
-	"S_BOSSEXPLODE",
-
-	// S3&K Boss Explosion
-	"S_SONIC3KBOSSEXPLOSION1",
-	"S_SONIC3KBOSSEXPLOSION2",
-	"S_SONIC3KBOSSEXPLOSION3",
-	"S_SONIC3KBOSSEXPLOSION4",
-	"S_SONIC3KBOSSEXPLOSION5",
-	"S_SONIC3KBOSSEXPLOSION6",
-
-	"S_JETFUME1",
-
-	// Boss 1
-	"S_EGGMOBILE_STND",
-	"S_EGGMOBILE_ROFL",
-	"S_EGGMOBILE_LATK1",
-	"S_EGGMOBILE_LATK2",
-	"S_EGGMOBILE_LATK3",
-	"S_EGGMOBILE_LATK4",
-	"S_EGGMOBILE_LATK5",
-	"S_EGGMOBILE_LATK6",
-	"S_EGGMOBILE_LATK7",
-	"S_EGGMOBILE_LATK8",
-	"S_EGGMOBILE_LATK9",
-	"S_EGGMOBILE_RATK1",
-	"S_EGGMOBILE_RATK2",
-	"S_EGGMOBILE_RATK3",
-	"S_EGGMOBILE_RATK4",
-	"S_EGGMOBILE_RATK5",
-	"S_EGGMOBILE_RATK6",
-	"S_EGGMOBILE_RATK7",
-	"S_EGGMOBILE_RATK8",
-	"S_EGGMOBILE_RATK9",
-	"S_EGGMOBILE_PANIC1",
-	"S_EGGMOBILE_PANIC2",
-	"S_EGGMOBILE_PANIC3",
-	"S_EGGMOBILE_PANIC4",
-	"S_EGGMOBILE_PANIC5",
-	"S_EGGMOBILE_PANIC6",
-	"S_EGGMOBILE_PANIC7",
-	"S_EGGMOBILE_PANIC8",
-	"S_EGGMOBILE_PANIC9",
-	"S_EGGMOBILE_PANIC10",
-	"S_EGGMOBILE_PANIC11",
-	"S_EGGMOBILE_PANIC12",
-	"S_EGGMOBILE_PANIC13",
-	"S_EGGMOBILE_PANIC14",
-	"S_EGGMOBILE_PANIC15",
-	"S_EGGMOBILE_PAIN",
-	"S_EGGMOBILE_PAIN2",
-	"S_EGGMOBILE_DIE1",
-	"S_EGGMOBILE_DIE2",
-	"S_EGGMOBILE_DIE3",
-	"S_EGGMOBILE_DIE4",
-	"S_EGGMOBILE_FLEE1",
-	"S_EGGMOBILE_FLEE2",
-	"S_EGGMOBILE_BALL",
-	"S_EGGMOBILE_TARGET",
-
-	"S_BOSSEGLZ1",
-	"S_BOSSEGLZ2",
-
-	// Boss 2
-	"S_EGGMOBILE2_STND",
-	"S_EGGMOBILE2_POGO1",
-	"S_EGGMOBILE2_POGO2",
-	"S_EGGMOBILE2_POGO3",
-	"S_EGGMOBILE2_POGO4",
-	"S_EGGMOBILE2_POGO5",
-	"S_EGGMOBILE2_POGO6",
-	"S_EGGMOBILE2_POGO7",
-	"S_EGGMOBILE2_PAIN",
-	"S_EGGMOBILE2_PAIN2",
-	"S_EGGMOBILE2_DIE1",
-	"S_EGGMOBILE2_DIE2",
-	"S_EGGMOBILE2_DIE3",
-	"S_EGGMOBILE2_DIE4",
-	"S_EGGMOBILE2_FLEE1",
-	"S_EGGMOBILE2_FLEE2",
-
-	"S_BOSSTANK1",
-	"S_BOSSTANK2",
-	"S_BOSSSPIGOT",
-
-	// Boss 2 Goop
-	"S_GOOP1",
-	"S_GOOP2",
-	"S_GOOP3",
-	"S_GOOPTRAIL",
-
-	// Boss 3
-	"S_EGGMOBILE3_STND",
-	"S_EGGMOBILE3_SHOCK",
-	"S_EGGMOBILE3_ATK1",
-	"S_EGGMOBILE3_ATK2",
-	"S_EGGMOBILE3_ATK3A",
-	"S_EGGMOBILE3_ATK3B",
-	"S_EGGMOBILE3_ATK3C",
-	"S_EGGMOBILE3_ATK3D",
-	"S_EGGMOBILE3_ATK4",
-	"S_EGGMOBILE3_ATK5",
-	"S_EGGMOBILE3_ROFL",
-	"S_EGGMOBILE3_PAIN",
-	"S_EGGMOBILE3_PAIN2",
-	"S_EGGMOBILE3_DIE1",
-	"S_EGGMOBILE3_DIE2",
-	"S_EGGMOBILE3_DIE3",
-	"S_EGGMOBILE3_DIE4",
-	"S_EGGMOBILE3_FLEE1",
-	"S_EGGMOBILE3_FLEE2",
-
-	// Boss 3 Pinch
-	"S_FAKEMOBILE_INIT",
-	"S_FAKEMOBILE",
-	"S_FAKEMOBILE_ATK1",
-	"S_FAKEMOBILE_ATK2",
-	"S_FAKEMOBILE_ATK3A",
-	"S_FAKEMOBILE_ATK3B",
-	"S_FAKEMOBILE_ATK3C",
-	"S_FAKEMOBILE_ATK3D",
-	"S_FAKEMOBILE_DIE1",
-	"S_FAKEMOBILE_DIE2",
-
-	"S_BOSSSEBH1",
-	"S_BOSSSEBH2",
-
-	// Boss 3 Shockwave
-	"S_SHOCKWAVE1",
-	"S_SHOCKWAVE2",
-
-	// Boss 4
-	"S_EGGMOBILE4_STND",
-	"S_EGGMOBILE4_LATK1",
-	"S_EGGMOBILE4_LATK2",
-	"S_EGGMOBILE4_LATK3",
-	"S_EGGMOBILE4_LATK4",
-	"S_EGGMOBILE4_LATK5",
-	"S_EGGMOBILE4_LATK6",
-	"S_EGGMOBILE4_RATK1",
-	"S_EGGMOBILE4_RATK2",
-	"S_EGGMOBILE4_RATK3",
-	"S_EGGMOBILE4_RATK4",
-	"S_EGGMOBILE4_RATK5",
-	"S_EGGMOBILE4_RATK6",
-	"S_EGGMOBILE4_RAISE1",
-	"S_EGGMOBILE4_RAISE2",
-	"S_EGGMOBILE4_PAIN1",
-	"S_EGGMOBILE4_PAIN2",
-	"S_EGGMOBILE4_DIE1",
-	"S_EGGMOBILE4_DIE2",
-	"S_EGGMOBILE4_DIE3",
-	"S_EGGMOBILE4_DIE4",
-	"S_EGGMOBILE4_FLEE1",
-	"S_EGGMOBILE4_FLEE2",
-	"S_EGGMOBILE4_MACE",
-	"S_EGGMOBILE4_MACE_DIE1",
-	"S_EGGMOBILE4_MACE_DIE2",
-	"S_EGGMOBILE4_MACE_DIE3",
-
-	// Boss 4 jet flame
-	"S_JETFLAME",
-
-	// Boss 4 Spectator Eggrobo
-	"S_EGGROBO1_STND",
-	"S_EGGROBO1_BSLAP1",
-	"S_EGGROBO1_BSLAP2",
-	"S_EGGROBO1_PISSED",
-
-	// Boss 4 Spectator Eggrobo jet flame
-	"S_EGGROBOJET",
-
-	// Boss 5
-	"S_FANG_SETUP",
-	"S_FANG_INTRO0",
-	"S_FANG_INTRO1",
-	"S_FANG_INTRO2",
-	"S_FANG_INTRO3",
-	"S_FANG_INTRO4",
-	"S_FANG_INTRO5",
-	"S_FANG_INTRO6",
-	"S_FANG_INTRO7",
-	"S_FANG_INTRO8",
-	"S_FANG_INTRO9",
-	"S_FANG_INTRO10",
-	"S_FANG_INTRO11",
-	"S_FANG_INTRO12",
-	"S_FANG_CLONE1",
-	"S_FANG_CLONE2",
-	"S_FANG_CLONE3",
-	"S_FANG_CLONE4",
-	"S_FANG_IDLE0",
-	"S_FANG_IDLE1",
-	"S_FANG_IDLE2",
-	"S_FANG_IDLE3",
-	"S_FANG_IDLE4",
-	"S_FANG_IDLE5",
-	"S_FANG_IDLE6",
-	"S_FANG_IDLE7",
-	"S_FANG_IDLE8",
-	"S_FANG_PAIN1",
-	"S_FANG_PAIN2",
-	"S_FANG_PATHINGSTART1",
-	"S_FANG_PATHINGSTART2",
-	"S_FANG_PATHING",
-	"S_FANG_BOUNCE1",
-	"S_FANG_BOUNCE2",
-	"S_FANG_BOUNCE3",
-	"S_FANG_BOUNCE4",
-	"S_FANG_FALL1",
-	"S_FANG_FALL2",
-	"S_FANG_CHECKPATH1",
-	"S_FANG_CHECKPATH2",
-	"S_FANG_PATHINGCONT1",
-	"S_FANG_PATHINGCONT2",
-	"S_FANG_PATHINGCONT3",
-	"S_FANG_SKID1",
-	"S_FANG_SKID2",
-	"S_FANG_SKID3",
-	"S_FANG_CHOOSEATTACK",
-	"S_FANG_FIRESTART1",
-	"S_FANG_FIRESTART2",
-	"S_FANG_FIRE1",
-	"S_FANG_FIRE2",
-	"S_FANG_FIRE3",
-	"S_FANG_FIRE4",
-	"S_FANG_FIREREPEAT",
-	"S_FANG_LOBSHOT0",
-	"S_FANG_LOBSHOT1",
-	"S_FANG_LOBSHOT2",
-	"S_FANG_WAIT1",
-	"S_FANG_WAIT2",
-	"S_FANG_WALLHIT",
-	"S_FANG_PINCHPATHINGSTART1",
-	"S_FANG_PINCHPATHINGSTART2",
-	"S_FANG_PINCHPATHING",
-	"S_FANG_PINCHBOUNCE0",
-	"S_FANG_PINCHBOUNCE1",
-	"S_FANG_PINCHBOUNCE2",
-	"S_FANG_PINCHBOUNCE3",
-	"S_FANG_PINCHBOUNCE4",
-	"S_FANG_PINCHFALL0",
-	"S_FANG_PINCHFALL1",
-	"S_FANG_PINCHFALL2",
-	"S_FANG_PINCHSKID1",
-	"S_FANG_PINCHSKID2",
-	"S_FANG_PINCHLOBSHOT0",
-	"S_FANG_PINCHLOBSHOT1",
-	"S_FANG_PINCHLOBSHOT2",
-	"S_FANG_PINCHLOBSHOT3",
-	"S_FANG_PINCHLOBSHOT4",
-	"S_FANG_DIE1",
-	"S_FANG_DIE2",
-	"S_FANG_DIE3",
-	"S_FANG_DIE4",
-	"S_FANG_DIE5",
-	"S_FANG_DIE6",
-	"S_FANG_DIE7",
-	"S_FANG_DIE8",
-	"S_FANG_FLEEPATHING1",
-	"S_FANG_FLEEPATHING2",
-	"S_FANG_FLEEBOUNCE1",
-	"S_FANG_FLEEBOUNCE2",
-	"S_FANG_KO",
-
-	"S_BROKENROBOTRANDOM",
-	"S_BROKENROBOTA",
-	"S_BROKENROBOTB",
-	"S_BROKENROBOTC",
-	"S_BROKENROBOTD",
-	"S_BROKENROBOTE",
-	"S_BROKENROBOTF",
-
-	"S_ALART1",
-	"S_ALART2",
-
-	"S_VWREF",
-	"S_VWREB",
-
-	"S_PROJECTORLIGHT1",
-	"S_PROJECTORLIGHT2",
-	"S_PROJECTORLIGHT3",
-	"S_PROJECTORLIGHT4",
-	"S_PROJECTORLIGHT5",
-
-	"S_FBOMB1",
-	"S_FBOMB2",
-	"S_FBOMB_EXPL1",
-	"S_FBOMB_EXPL2",
-	"S_FBOMB_EXPL3",
-	"S_FBOMB_EXPL4",
-	"S_FBOMB_EXPL5",
-	"S_FBOMB_EXPL6",
-	"S_TNTDUST_1",
-	"S_TNTDUST_2",
-	"S_TNTDUST_3",
-	"S_TNTDUST_4",
-	"S_TNTDUST_5",
-	"S_TNTDUST_6",
-	"S_TNTDUST_7",
-	"S_TNTDUST_8",
-	"S_FSGNA",
-	"S_FSGNB",
-	"S_FSGNC",
-	"S_FSGND",
-
-	// Black Eggman (Boss 7)
-	"S_BLACKEGG_STND",
-	"S_BLACKEGG_STND2",
-	"S_BLACKEGG_WALK1",
-	"S_BLACKEGG_WALK2",
-	"S_BLACKEGG_WALK3",
-	"S_BLACKEGG_WALK4",
-	"S_BLACKEGG_WALK5",
-	"S_BLACKEGG_WALK6",
-	"S_BLACKEGG_SHOOT1",
-	"S_BLACKEGG_SHOOT2",
-	"S_BLACKEGG_PAIN1",
-	"S_BLACKEGG_PAIN2",
-	"S_BLACKEGG_PAIN3",
-	"S_BLACKEGG_PAIN4",
-	"S_BLACKEGG_PAIN5",
-	"S_BLACKEGG_PAIN6",
-	"S_BLACKEGG_PAIN7",
-	"S_BLACKEGG_PAIN8",
-	"S_BLACKEGG_PAIN9",
-	"S_BLACKEGG_PAIN10",
-	"S_BLACKEGG_PAIN11",
-	"S_BLACKEGG_PAIN12",
-	"S_BLACKEGG_PAIN13",
-	"S_BLACKEGG_PAIN14",
-	"S_BLACKEGG_PAIN15",
-	"S_BLACKEGG_PAIN16",
-	"S_BLACKEGG_PAIN17",
-	"S_BLACKEGG_PAIN18",
-	"S_BLACKEGG_PAIN19",
-	"S_BLACKEGG_PAIN20",
-	"S_BLACKEGG_PAIN21",
-	"S_BLACKEGG_PAIN22",
-	"S_BLACKEGG_PAIN23",
-	"S_BLACKEGG_PAIN24",
-	"S_BLACKEGG_PAIN25",
-	"S_BLACKEGG_PAIN26",
-	"S_BLACKEGG_PAIN27",
-	"S_BLACKEGG_PAIN28",
-	"S_BLACKEGG_PAIN29",
-	"S_BLACKEGG_PAIN30",
-	"S_BLACKEGG_PAIN31",
-	"S_BLACKEGG_PAIN32",
-	"S_BLACKEGG_PAIN33",
-	"S_BLACKEGG_PAIN34",
-	"S_BLACKEGG_PAIN35",
-	"S_BLACKEGG_HITFACE1",
-	"S_BLACKEGG_HITFACE2",
-	"S_BLACKEGG_HITFACE3",
-	"S_BLACKEGG_HITFACE4",
-	"S_BLACKEGG_DIE1",
-	"S_BLACKEGG_DIE2",
-	"S_BLACKEGG_DIE3",
-	"S_BLACKEGG_DIE4",
-	"S_BLACKEGG_DIE5",
-	"S_BLACKEGG_MISSILE1",
-	"S_BLACKEGG_MISSILE2",
-	"S_BLACKEGG_MISSILE3",
-	"S_BLACKEGG_GOOP",
-	"S_BLACKEGG_JUMP1",
-	"S_BLACKEGG_JUMP2",
-	"S_BLACKEGG_DESTROYPLAT1",
-	"S_BLACKEGG_DESTROYPLAT2",
-	"S_BLACKEGG_DESTROYPLAT3",
-
-	"S_BLACKEGG_HELPER", // Collision helper
-
-	"S_BLACKEGG_GOOP1",
-	"S_BLACKEGG_GOOP2",
-	"S_BLACKEGG_GOOP3",
-	"S_BLACKEGG_GOOP4",
-	"S_BLACKEGG_GOOP5",
-	"S_BLACKEGG_GOOP6",
-	"S_BLACKEGG_GOOP7",
-
-	"S_BLACKEGG_MISSILE",
-
-	// New Very-Last-Minute 2.1 Brak Eggman (Cy-Brak-demon)
-	"S_CYBRAKDEMON_IDLE",
-	"S_CYBRAKDEMON_WALK1",
-	"S_CYBRAKDEMON_WALK2",
-	"S_CYBRAKDEMON_WALK3",
-	"S_CYBRAKDEMON_WALK4",
-	"S_CYBRAKDEMON_WALK5",
-	"S_CYBRAKDEMON_WALK6",
-	"S_CYBRAKDEMON_CHOOSE_ATTACK1",
-	"S_CYBRAKDEMON_MISSILE_ATTACK1", // Aim
-	"S_CYBRAKDEMON_MISSILE_ATTACK2", // Fire
-	"S_CYBRAKDEMON_MISSILE_ATTACK3", // Aim
-	"S_CYBRAKDEMON_MISSILE_ATTACK4", // Fire
-	"S_CYBRAKDEMON_MISSILE_ATTACK5", // Aim
-	"S_CYBRAKDEMON_MISSILE_ATTACK6", // Fire
-	"S_CYBRAKDEMON_FLAME_ATTACK1", // Reset
-	"S_CYBRAKDEMON_FLAME_ATTACK2", // Aim
-	"S_CYBRAKDEMON_FLAME_ATTACK3", // Fire
-	"S_CYBRAKDEMON_FLAME_ATTACK4", // Loop
-	"S_CYBRAKDEMON_CHOOSE_ATTACK2",
-	"S_CYBRAKDEMON_VILE_ATTACK1",
-	"S_CYBRAKDEMON_VILE_ATTACK2",
-	"S_CYBRAKDEMON_VILE_ATTACK3",
-	"S_CYBRAKDEMON_VILE_ATTACK4",
-	"S_CYBRAKDEMON_VILE_ATTACK5",
-	"S_CYBRAKDEMON_VILE_ATTACK6",
-	"S_CYBRAKDEMON_NAPALM_ATTACK1",
-	"S_CYBRAKDEMON_NAPALM_ATTACK2",
-	"S_CYBRAKDEMON_NAPALM_ATTACK3",
-	"S_CYBRAKDEMON_FINISH_ATTACK1", // If just attacked, remove MF2_FRET w/out going back to spawnstate
-	"S_CYBRAKDEMON_FINISH_ATTACK2", // Force a delay between attacks so you don't get bombarded with them back-to-back
-	"S_CYBRAKDEMON_PAIN1",
-	"S_CYBRAKDEMON_PAIN2",
-	"S_CYBRAKDEMON_PAIN3",
-	"S_CYBRAKDEMON_DIE1",
-	"S_CYBRAKDEMON_DIE2",
-	"S_CYBRAKDEMON_DIE3",
-	"S_CYBRAKDEMON_DIE4",
-	"S_CYBRAKDEMON_DIE5",
-	"S_CYBRAKDEMON_DIE6",
-	"S_CYBRAKDEMON_DIE7",
-	"S_CYBRAKDEMON_DIE8",
-	"S_CYBRAKDEMON_DEINVINCIBLERIZE",
-	"S_CYBRAKDEMON_INVINCIBLERIZE",
-
-	"S_CYBRAKDEMONMISSILE",
-	"S_CYBRAKDEMONMISSILE_EXPLODE1",
-	"S_CYBRAKDEMONMISSILE_EXPLODE2",
-	"S_CYBRAKDEMONMISSILE_EXPLODE3",
-
-	"S_CYBRAKDEMONFLAMESHOT_FLY1",
-	"S_CYBRAKDEMONFLAMESHOT_FLY2",
-	"S_CYBRAKDEMONFLAMESHOT_FLY3",
-	"S_CYBRAKDEMONFLAMESHOT_DIE",
-
-	"S_CYBRAKDEMONFLAMEREST",
-
-	"S_CYBRAKDEMONELECTRICBARRIER_INIT1",
-	"S_CYBRAKDEMONELECTRICBARRIER_INIT2",
-	"S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND",
-	"S_CYBRAKDEMONELECTRICBARRIER1",
-	"S_CYBRAKDEMONELECTRICBARRIER2",
-	"S_CYBRAKDEMONELECTRICBARRIER3",
-	"S_CYBRAKDEMONELECTRICBARRIER4",
-	"S_CYBRAKDEMONELECTRICBARRIER5",
-	"S_CYBRAKDEMONELECTRICBARRIER6",
-	"S_CYBRAKDEMONELECTRICBARRIER7",
-	"S_CYBRAKDEMONELECTRICBARRIER8",
-	"S_CYBRAKDEMONELECTRICBARRIER9",
-	"S_CYBRAKDEMONELECTRICBARRIER10",
-	"S_CYBRAKDEMONELECTRICBARRIER11",
-	"S_CYBRAKDEMONELECTRICBARRIER12",
-	"S_CYBRAKDEMONELECTRICBARRIER13",
-	"S_CYBRAKDEMONELECTRICBARRIER14",
-	"S_CYBRAKDEMONELECTRICBARRIER15",
-	"S_CYBRAKDEMONELECTRICBARRIER16",
-	"S_CYBRAKDEMONELECTRICBARRIER17",
-	"S_CYBRAKDEMONELECTRICBARRIER18",
-	"S_CYBRAKDEMONELECTRICBARRIER19",
-	"S_CYBRAKDEMONELECTRICBARRIER20",
-	"S_CYBRAKDEMONELECTRICBARRIER21",
-	"S_CYBRAKDEMONELECTRICBARRIER22",
-	"S_CYBRAKDEMONELECTRICBARRIER23",
-	"S_CYBRAKDEMONELECTRICBARRIER24",
-	"S_CYBRAKDEMONELECTRICBARRIER_DIE1",
-	"S_CYBRAKDEMONELECTRICBARRIER_DIE2",
-	"S_CYBRAKDEMONELECTRICBARRIER_DIE3",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL",
-	"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP",
-	"S_CYBRAKDEMONELECTRICBARRIER_REVIVE1",
-	"S_CYBRAKDEMONELECTRICBARRIER_REVIVE2",
-	"S_CYBRAKDEMONELECTRICBARRIER_REVIVE3",
-
-	"S_CYBRAKDEMONTARGETRETICULE1",
-	"S_CYBRAKDEMONTARGETRETICULE2",
-	"S_CYBRAKDEMONTARGETRETICULE3",
-	"S_CYBRAKDEMONTARGETRETICULE4",
-	"S_CYBRAKDEMONTARGETRETICULE5",
-	"S_CYBRAKDEMONTARGETRETICULE6",
-	"S_CYBRAKDEMONTARGETRETICULE7",
-	"S_CYBRAKDEMONTARGETRETICULE8",
-	"S_CYBRAKDEMONTARGETRETICULE9",
-	"S_CYBRAKDEMONTARGETRETICULE10",
-	"S_CYBRAKDEMONTARGETRETICULE11",
-	"S_CYBRAKDEMONTARGETRETICULE12",
-	"S_CYBRAKDEMONTARGETRETICULE13",
-	"S_CYBRAKDEMONTARGETRETICULE14",
-
-	"S_CYBRAKDEMONTARGETDOT",
-
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1",
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2",
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3",
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4",
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1", // Explode
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2", // Outer ring
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3", // Center
-	"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4", // Sound
-
-	"S_CYBRAKDEMONNAPALMBOMBSMALL",
-	"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1", // Explode
-	"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2", // Outer ring
-	"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3", // Inner ring
-	"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4", // Center
-	"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5", // Sound
-
-	"S_CYBRAKDEMONNAPALMFLAME_FLY1",
-	"S_CYBRAKDEMONNAPALMFLAME_FLY2",
-	"S_CYBRAKDEMONNAPALMFLAME_FLY3",
-	"S_CYBRAKDEMONNAPALMFLAME_FLY4",
-	"S_CYBRAKDEMONNAPALMFLAME_FLY5",
-	"S_CYBRAKDEMONNAPALMFLAME_FLY6",
-	"S_CYBRAKDEMONNAPALMFLAME_DIE",
-
-	"S_CYBRAKDEMONVILEEXPLOSION1",
-	"S_CYBRAKDEMONVILEEXPLOSION2",
-	"S_CYBRAKDEMONVILEEXPLOSION3",
-
-	// Metal Sonic (Race)
-	"S_METALSONIC_RACE",
-	// Metal Sonic (Battle)
-	"S_METALSONIC_FLOAT",
-	"S_METALSONIC_VECTOR",
-	"S_METALSONIC_STUN",
-	"S_METALSONIC_RAISE",
-	"S_METALSONIC_GATHER",
-	"S_METALSONIC_DASH",
-	"S_METALSONIC_BOUNCE",
-	"S_METALSONIC_BADBOUNCE",
-	"S_METALSONIC_SHOOT",
-	"S_METALSONIC_PAIN",
-	"S_METALSONIC_DEATH1",
-	"S_METALSONIC_DEATH2",
-	"S_METALSONIC_DEATH3",
-	"S_METALSONIC_DEATH4",
-	"S_METALSONIC_FLEE1",
-	"S_METALSONIC_FLEE2",
-
-	"S_MSSHIELD_F1",
-	"S_MSSHIELD_F2",
-
-	// Ring
-	"S_RING",
-
-	// Blue Sphere for special stages
-	"S_BLUESPHERE",
-	"S_BLUESPHEREBONUS",
-	"S_BLUESPHERESPARK",
-
-	// Bomb Sphere
-	"S_BOMBSPHERE1",
-	"S_BOMBSPHERE2",
-	"S_BOMBSPHERE3",
-	"S_BOMBSPHERE4",
-
-	// NiGHTS Chip
-	"S_NIGHTSCHIP",
-	"S_NIGHTSCHIPBONUS",
-
-	// NiGHTS Star
-	"S_NIGHTSSTAR",
-	"S_NIGHTSSTARXMAS",
-
-	// Gravity Wells for special stages
-	"S_GRAVWELLGREEN",
-	"S_GRAVWELLRED",
-
-	// Individual Team Rings
-	"S_TEAMRING",
-
-	// Special Stage Token
-	"S_TOKEN",
-
-	// CTF Flags
-	"S_REDFLAG",
-	"S_BLUEFLAG",
-
-	// Emblem
-	"S_EMBLEM1",
-	"S_EMBLEM2",
-	"S_EMBLEM3",
-	"S_EMBLEM4",
-	"S_EMBLEM5",
-	"S_EMBLEM6",
-	"S_EMBLEM7",
-	"S_EMBLEM8",
-	"S_EMBLEM9",
-	"S_EMBLEM10",
-	"S_EMBLEM11",
-	"S_EMBLEM12",
-	"S_EMBLEM13",
-	"S_EMBLEM14",
-	"S_EMBLEM15",
-	"S_EMBLEM16",
-	"S_EMBLEM17",
-	"S_EMBLEM18",
-	"S_EMBLEM19",
-	"S_EMBLEM20",
-	"S_EMBLEM21",
-	"S_EMBLEM22",
-	"S_EMBLEM23",
-	"S_EMBLEM24",
-	"S_EMBLEM25",
-	"S_EMBLEM26",
-
-	// Chaos Emeralds
-	"S_CEMG1",
-	"S_CEMG2",
-	"S_CEMG3",
-	"S_CEMG4",
-	"S_CEMG5",
-	"S_CEMG6",
-	"S_CEMG7",
-
-	// Emerald hunt shards
-	"S_SHRD1",
-	"S_SHRD2",
-	"S_SHRD3",
-
-	// Bubble Source
-	"S_BUBBLES1",
-	"S_BUBBLES2",
-	"S_BUBBLES3",
-	"S_BUBBLES4",
-
-	// Level End Sign
-	"S_SIGN",
-	"S_SIGNSPIN1",
-	"S_SIGNSPIN2",
-	"S_SIGNSPIN3",
-	"S_SIGNSPIN4",
-	"S_SIGNSPIN5",
-	"S_SIGNSPIN6",
-	"S_SIGNPLAYER",
-	"S_SIGNSLOW",
-	"S_SIGNSTOP",
-	"S_SIGNBOARD",
-	"S_EGGMANSIGN",
-	"S_CLEARSIGN",
-
-	// Spike Ball
-	"S_SPIKEBALL1",
-	"S_SPIKEBALL2",
-	"S_SPIKEBALL3",
-	"S_SPIKEBALL4",
-	"S_SPIKEBALL5",
-	"S_SPIKEBALL6",
-	"S_SPIKEBALL7",
-	"S_SPIKEBALL8",
-
-	// Elemental Shield's Spawn
-	"S_SPINFIRE1",
-	"S_SPINFIRE2",
-	"S_SPINFIRE3",
-	"S_SPINFIRE4",
-	"S_SPINFIRE5",
-	"S_SPINFIRE6",
-
-	"S_TEAM_SPINFIRE1",
-	"S_TEAM_SPINFIRE2",
-	"S_TEAM_SPINFIRE3",
-	"S_TEAM_SPINFIRE4",
-	"S_TEAM_SPINFIRE5",
-	"S_TEAM_SPINFIRE6",
-
-	// Spikes
-	"S_SPIKE1",
-	"S_SPIKE2",
-	"S_SPIKE3",
-	"S_SPIKE4",
-	"S_SPIKE5",
-	"S_SPIKE6",
-	"S_SPIKED1",
-	"S_SPIKED2",
-
-	// Wall spikes
-	"S_WALLSPIKE1",
-	"S_WALLSPIKE2",
-	"S_WALLSPIKE3",
-	"S_WALLSPIKE4",
-	"S_WALLSPIKE5",
-	"S_WALLSPIKE6",
-	"S_WALLSPIKEBASE",
-	"S_WALLSPIKED1",
-	"S_WALLSPIKED2",
-
-	// Starpost
-	"S_STARPOST_IDLE",
-	"S_STARPOST_FLASH",
-	"S_STARPOST_STARTSPIN",
-	"S_STARPOST_SPIN",
-	"S_STARPOST_ENDSPIN",
-
-	// Big floating mine
-	"S_BIGMINE_IDLE",
-	"S_BIGMINE_ALERT1",
-	"S_BIGMINE_ALERT2",
-	"S_BIGMINE_ALERT3",
-	"S_BIGMINE_SET1",
-	"S_BIGMINE_SET2",
-	"S_BIGMINE_SET3",
-	"S_BIGMINE_BLAST1",
-	"S_BIGMINE_BLAST2",
-	"S_BIGMINE_BLAST3",
-	"S_BIGMINE_BLAST4",
-	"S_BIGMINE_BLAST5",
-
-	// Cannon Launcher
-	"S_CANNONLAUNCHER1",
-	"S_CANNONLAUNCHER2",
-	"S_CANNONLAUNCHER3",
-
-	// Monitor Miscellany
-	"S_BOXSPARKLE1",
-	"S_BOXSPARKLE2",
-	"S_BOXSPARKLE3",
-	"S_BOXSPARKLE4",
-
-	"S_BOX_FLICKER",
-	"S_BOX_POP1",
-	"S_BOX_POP2",
-
-	"S_GOLDBOX_FLICKER",
-	"S_GOLDBOX_OFF1",
-	"S_GOLDBOX_OFF2",
-	"S_GOLDBOX_OFF3",
-	"S_GOLDBOX_OFF4",
-	"S_GOLDBOX_OFF5",
-	"S_GOLDBOX_OFF6",
-	"S_GOLDBOX_OFF7",
-
-	// Monitor States (one per box)
-	"S_MYSTERY_BOX",
-	"S_RING_BOX",
-	"S_PITY_BOX",
-	"S_ATTRACT_BOX",
-	"S_FORCE_BOX",
-	"S_ARMAGEDDON_BOX",
-	"S_WHIRLWIND_BOX",
-	"S_ELEMENTAL_BOX",
-	"S_SNEAKERS_BOX",
-	"S_INVULN_BOX",
-	"S_1UP_BOX",
-	"S_EGGMAN_BOX",
-	"S_MIXUP_BOX",
-	"S_GRAVITY_BOX",
-	"S_RECYCLER_BOX",
-	"S_SCORE1K_BOX",
-	"S_SCORE10K_BOX",
-	"S_FLAMEAURA_BOX",
-	"S_BUBBLEWRAP_BOX",
-	"S_THUNDERCOIN_BOX",
-
-	// Gold Repeat Monitor States (one per box)
-	"S_PITY_GOLDBOX",
-	"S_ATTRACT_GOLDBOX",
-	"S_FORCE_GOLDBOX",
-	"S_ARMAGEDDON_GOLDBOX",
-	"S_WHIRLWIND_GOLDBOX",
-	"S_ELEMENTAL_GOLDBOX",
-	"S_SNEAKERS_GOLDBOX",
-	"S_INVULN_GOLDBOX",
-	"S_EGGMAN_GOLDBOX",
-	"S_GRAVITY_GOLDBOX",
-	"S_FLAMEAURA_GOLDBOX",
-	"S_BUBBLEWRAP_GOLDBOX",
-	"S_THUNDERCOIN_GOLDBOX",
-
-	// Team Ring Boxes (these are special)
-	"S_RING_REDBOX1",
-	"S_RING_REDBOX2",
-	"S_REDBOX_POP1",
-	"S_REDBOX_POP2",
-
-	"S_RING_BLUEBOX1",
-	"S_RING_BLUEBOX2",
-	"S_BLUEBOX_POP1",
-	"S_BLUEBOX_POP2",
-
-	// Box Icons -- 2 states each, animation and action
-	"S_RING_ICON1",
-	"S_RING_ICON2",
-
-	"S_PITY_ICON1",
-	"S_PITY_ICON2",
-
-	"S_ATTRACT_ICON1",
-	"S_ATTRACT_ICON2",
-
-	"S_FORCE_ICON1",
-	"S_FORCE_ICON2",
-
-	"S_ARMAGEDDON_ICON1",
-	"S_ARMAGEDDON_ICON2",
-
-	"S_WHIRLWIND_ICON1",
-	"S_WHIRLWIND_ICON2",
-
-	"S_ELEMENTAL_ICON1",
-	"S_ELEMENTAL_ICON2",
-
-	"S_SNEAKERS_ICON1",
-	"S_SNEAKERS_ICON2",
-
-	"S_INVULN_ICON1",
-	"S_INVULN_ICON2",
-
-	"S_1UP_ICON1",
-	"S_1UP_ICON2",
-
-	"S_EGGMAN_ICON1",
-	"S_EGGMAN_ICON2",
-
-	"S_MIXUP_ICON1",
-	"S_MIXUP_ICON2",
-
-	"S_GRAVITY_ICON1",
-	"S_GRAVITY_ICON2",
-
-	"S_RECYCLER_ICON1",
-	"S_RECYCLER_ICON2",
-
-	"S_SCORE1K_ICON1",
-	"S_SCORE1K_ICON2",
-
-	"S_SCORE10K_ICON1",
-	"S_SCORE10K_ICON2",
-
-	"S_FLAMEAURA_ICON1",
-	"S_FLAMEAURA_ICON2",
-
-	"S_BUBBLEWRAP_ICON1",
-	"S_BUBBLEWRAP_ICON2",
-
-	"S_THUNDERCOIN_ICON1",
-	"S_THUNDERCOIN_ICON2",
-
-	// ---
-
-	"S_ROCKET",
-
-	"S_LASER",
-	"S_LASER2",
-	"S_LASERFLASH",
-
-	"S_LASERFLAME1",
-	"S_LASERFLAME2",
-	"S_LASERFLAME3",
-	"S_LASERFLAME4",
-	"S_LASERFLAME5",
-
-	"S_TORPEDO",
-
-	"S_ENERGYBALL1",
-	"S_ENERGYBALL2",
-
-	// Skim Mine, also used by Jetty-Syn bomber
-	"S_MINE1",
-	"S_MINE_BOOM1",
-	"S_MINE_BOOM2",
-	"S_MINE_BOOM3",
-	"S_MINE_BOOM4",
-
-	// Jetty-Syn Bullet
-	"S_JETBULLET1",
-	"S_JETBULLET2",
-
-	"S_TURRETLASER",
-	"S_TURRETLASEREXPLODE1",
-	"S_TURRETLASEREXPLODE2",
-
-	// Cannonball
-	"S_CANNONBALL1",
-
-	// Arrow
-	"S_ARROW",
-	"S_ARROWBONK",
-
-	// Glaregoyle Demon fire
-	"S_DEMONFIRE",
-
-	// The letter
-	"S_LETTER",
-
-	// Tutorial Scenery
-	"S_TUTORIALLEAF1",
-	"S_TUTORIALLEAF2",
-	"S_TUTORIALLEAF3",
-	"S_TUTORIALLEAF4",
-	"S_TUTORIALLEAF5",
-	"S_TUTORIALLEAF6",
-	"S_TUTORIALLEAF7",
-	"S_TUTORIALLEAF8",
-	"S_TUTORIALLEAF9",
-	"S_TUTORIALLEAF10",
-	"S_TUTORIALLEAF11",
-	"S_TUTORIALLEAF12",
-	"S_TUTORIALLEAF13",
-	"S_TUTORIALLEAF14",
-	"S_TUTORIALLEAF15",
-	"S_TUTORIALLEAF16",
-	"S_TUTORIALFLOWER1",
-	"S_TUTORIALFLOWER2",
-	"S_TUTORIALFLOWER3",
-	"S_TUTORIALFLOWER4",
-	"S_TUTORIALFLOWER5",
-	"S_TUTORIALFLOWER6",
-	"S_TUTORIALFLOWER7",
-	"S_TUTORIALFLOWER8",
-	"S_TUTORIALFLOWER9",
-	"S_TUTORIALFLOWER10",
-	"S_TUTORIALFLOWER11",
-	"S_TUTORIALFLOWER12",
-	"S_TUTORIALFLOWER13",
-	"S_TUTORIALFLOWER14",
-	"S_TUTORIALFLOWER15",
-	"S_TUTORIALFLOWER16",
-	"S_TUTORIALFLOWERF1",
-	"S_TUTORIALFLOWERF2",
-	"S_TUTORIALFLOWERF3",
-	"S_TUTORIALFLOWERF4",
-	"S_TUTORIALFLOWERF5",
-	"S_TUTORIALFLOWERF6",
-	"S_TUTORIALFLOWERF7",
-	"S_TUTORIALFLOWERF8",
-	"S_TUTORIALFLOWERF9",
-	"S_TUTORIALFLOWERF10",
-	"S_TUTORIALFLOWERF11",
-	"S_TUTORIALFLOWERF12",
-	"S_TUTORIALFLOWERF13",
-	"S_TUTORIALFLOWERF14",
-	"S_TUTORIALFLOWERF15",
-	"S_TUTORIALFLOWERF16",
-
-	// GFZ flowers
-	"S_GFZFLOWERA",
-	"S_GFZFLOWERB",
-	"S_GFZFLOWERC",
-
-	"S_BLUEBERRYBUSH",
-	"S_BERRYBUSH",
-	"S_BUSH",
-
-	// Trees (both GFZ and misc)
-	"S_GFZTREE",
-	"S_GFZBERRYTREE",
-	"S_GFZCHERRYTREE",
-	"S_CHECKERTREE",
-	"S_CHECKERSUNSETTREE",
-	"S_FHZTREE", // Frozen Hillside
-	"S_FHZPINKTREE",
-	"S_POLYGONTREE",
-	"S_BUSHTREE",
-	"S_BUSHREDTREE",
-	"S_SPRINGTREE",
-
-	// THZ flowers
-	"S_THZFLOWERA", // THZ1 Steam flower
-	"S_THZFLOWERB", // THZ1 Spin flower (red)
-	"S_THZFLOWERC", // THZ1 Spin flower (yellow)
-
-	// THZ Steam Whistle tree/bush
-	"S_THZTREE",
-	"S_THZTREEBRANCH1",
-	"S_THZTREEBRANCH2",
-	"S_THZTREEBRANCH3",
-	"S_THZTREEBRANCH4",
-	"S_THZTREEBRANCH5",
-	"S_THZTREEBRANCH6",
-	"S_THZTREEBRANCH7",
-	"S_THZTREEBRANCH8",
-	"S_THZTREEBRANCH9",
-	"S_THZTREEBRANCH10",
-	"S_THZTREEBRANCH11",
-	"S_THZTREEBRANCH12",
-	"S_THZTREEBRANCH13",
-
-	// THZ Alarm
-	"S_ALARM1",
-
-	// Deep Sea Gargoyle
-	"S_GARGOYLE",
-	"S_BIGGARGOYLE",
-
-	// DSZ Seaweed
-	"S_SEAWEED1",
-	"S_SEAWEED2",
-	"S_SEAWEED3",
-	"S_SEAWEED4",
-	"S_SEAWEED5",
-	"S_SEAWEED6",
-
-	// Dripping Water
-	"S_DRIPA1",
-	"S_DRIPA2",
-	"S_DRIPA3",
-	"S_DRIPA4",
-	"S_DRIPB1",
-	"S_DRIPC1",
-	"S_DRIPC2",
-
-	// Coral
-	"S_CORAL1",
-	"S_CORAL2",
-	"S_CORAL3",
-	"S_CORAL4",
-	"S_CORAL5",
-
-	// Blue Crystal
-	"S_BLUECRYSTAL1",
-
-	// Kelp,
-	"S_KELP",
-
-	// Animated algae
-	"S_ANIMALGAETOP1",
-	"S_ANIMALGAETOP2",
-	"S_ANIMALGAESEG",
-
-	// DSZ Stalagmites
-	"S_DSZSTALAGMITE",
-	"S_DSZ2STALAGMITE",
-
-	// DSZ Light beam
-	"S_LIGHTBEAM1",
-	"S_LIGHTBEAM2",
-	"S_LIGHTBEAM3",
-	"S_LIGHTBEAM4",
-	"S_LIGHTBEAM5",
-	"S_LIGHTBEAM6",
-	"S_LIGHTBEAM7",
-	"S_LIGHTBEAM8",
-	"S_LIGHTBEAM9",
-	"S_LIGHTBEAM10",
-	"S_LIGHTBEAM11",
-	"S_LIGHTBEAM12",
-
-	// CEZ Chain
-	"S_CEZCHAIN",
-
-	// Flame
-	"S_FLAME",
-	"S_FLAMEPARTICLE",
-	"S_FLAMEREST",
-
-	// Eggman Statue
-	"S_EGGSTATUE1",
-
-	// CEZ hidden sling
-	"S_SLING1",
-	"S_SLING2",
-
-	// CEZ maces and chains
-	"S_SMALLMACECHAIN",
-	"S_BIGMACECHAIN",
-	"S_SMALLMACE",
-	"S_BIGMACE",
-	"S_SMALLGRABCHAIN",
-	"S_BIGGRABCHAIN",
-
-	// Blue spring on a ball
-	"S_BLUESPRINGBALL",
-	"S_BLUESPRINGBALL2",
-	"S_BLUESPRINGBALL3",
-	"S_BLUESPRINGBALL4",
-	"S_BLUESPRINGBALL5",
-
-	// Yellow spring on a ball
-	"S_YELLOWSPRINGBALL",
-	"S_YELLOWSPRINGBALL2",
-	"S_YELLOWSPRINGBALL3",
-	"S_YELLOWSPRINGBALL4",
-	"S_YELLOWSPRINGBALL5",
-
-	// Red spring on a ball
-	"S_REDSPRINGBALL",
-	"S_REDSPRINGBALL2",
-	"S_REDSPRINGBALL3",
-	"S_REDSPRINGBALL4",
-	"S_REDSPRINGBALL5",
-
-	// Small Firebar
-	"S_SMALLFIREBAR1",
-	"S_SMALLFIREBAR2",
-	"S_SMALLFIREBAR3",
-	"S_SMALLFIREBAR4",
-	"S_SMALLFIREBAR5",
-	"S_SMALLFIREBAR6",
-	"S_SMALLFIREBAR7",
-	"S_SMALLFIREBAR8",
-	"S_SMALLFIREBAR9",
-	"S_SMALLFIREBAR10",
-	"S_SMALLFIREBAR11",
-	"S_SMALLFIREBAR12",
-	"S_SMALLFIREBAR13",
-	"S_SMALLFIREBAR14",
-	"S_SMALLFIREBAR15",
-	"S_SMALLFIREBAR16",
-
-	// Big Firebar
-	"S_BIGFIREBAR1",
-	"S_BIGFIREBAR2",
-	"S_BIGFIREBAR3",
-	"S_BIGFIREBAR4",
-	"S_BIGFIREBAR5",
-	"S_BIGFIREBAR6",
-	"S_BIGFIREBAR7",
-	"S_BIGFIREBAR8",
-	"S_BIGFIREBAR9",
-	"S_BIGFIREBAR10",
-	"S_BIGFIREBAR11",
-	"S_BIGFIREBAR12",
-	"S_BIGFIREBAR13",
-	"S_BIGFIREBAR14",
-	"S_BIGFIREBAR15",
-	"S_BIGFIREBAR16",
-
-	"S_CEZFLOWER",
-	"S_CEZPOLE",
-	"S_CEZBANNER1",
-	"S_CEZBANNER2",
-	"S_PINETREE",
-	"S_CEZBUSH1",
-	"S_CEZBUSH2",
-	"S_CANDLE",
-	"S_CANDLEPRICKET",
-	"S_FLAMEHOLDER",
-	"S_FIRETORCH",
-	"S_WAVINGFLAG",
-	"S_WAVINGFLAGSEG1",
-	"S_WAVINGFLAGSEG2",
-	"S_CRAWLASTATUE",
-	"S_FACESTABBERSTATUE",
-	"S_SUSPICIOUSFACESTABBERSTATUE_WAIT",
-	"S_SUSPICIOUSFACESTABBERSTATUE_BURST1",
-	"S_SUSPICIOUSFACESTABBERSTATUE_BURST2",
-	"S_BRAMBLES",
-
-	// Big Tumbleweed
-	"S_BIGTUMBLEWEED",
-	"S_BIGTUMBLEWEED_ROLL1",
-	"S_BIGTUMBLEWEED_ROLL2",
-	"S_BIGTUMBLEWEED_ROLL3",
-	"S_BIGTUMBLEWEED_ROLL4",
-	"S_BIGTUMBLEWEED_ROLL5",
-	"S_BIGTUMBLEWEED_ROLL6",
-	"S_BIGTUMBLEWEED_ROLL7",
-	"S_BIGTUMBLEWEED_ROLL8",
-
-	// Little Tumbleweed
-	"S_LITTLETUMBLEWEED",
-	"S_LITTLETUMBLEWEED_ROLL1",
-	"S_LITTLETUMBLEWEED_ROLL2",
-	"S_LITTLETUMBLEWEED_ROLL3",
-	"S_LITTLETUMBLEWEED_ROLL4",
-	"S_LITTLETUMBLEWEED_ROLL5",
-	"S_LITTLETUMBLEWEED_ROLL6",
-	"S_LITTLETUMBLEWEED_ROLL7",
-	"S_LITTLETUMBLEWEED_ROLL8",
-
-	// Cacti
-	"S_CACTI1",
-	"S_CACTI2",
-	"S_CACTI3",
-	"S_CACTI4",
-	"S_CACTI5",
-	"S_CACTI6",
-	"S_CACTI7",
-	"S_CACTI8",
-	"S_CACTI9",
-	"S_CACTI10",
-	"S_CACTI11",
-	"S_CACTITINYSEG",
-	"S_CACTISMALLSEG",
-
-	// Warning signs
-	"S_ARIDSIGN_CAUTION",
-	"S_ARIDSIGN_CACTI",
-	"S_ARIDSIGN_SHARPTURN",
-
-	// Oil lamp
-	"S_OILLAMP",
-	"S_OILLAMPFLARE",
-
-	// TNT barrel
-	"S_TNTBARREL_STND1",
-	"S_TNTBARREL_EXPL1",
-	"S_TNTBARREL_EXPL2",
-	"S_TNTBARREL_EXPL3",
-	"S_TNTBARREL_EXPL4",
-	"S_TNTBARREL_EXPL5",
-	"S_TNTBARREL_EXPL6",
-	"S_TNTBARREL_EXPL7",
-	"S_TNTBARREL_FLYING",
-
-	// TNT proximity shell
-	"S_PROXIMITY_TNT",
-	"S_PROXIMITY_TNT_TRIGGER1",
-	"S_PROXIMITY_TNT_TRIGGER2",
-	"S_PROXIMITY_TNT_TRIGGER3",
-	"S_PROXIMITY_TNT_TRIGGER4",
-	"S_PROXIMITY_TNT_TRIGGER5",
-	"S_PROXIMITY_TNT_TRIGGER6",
-	"S_PROXIMITY_TNT_TRIGGER7",
-	"S_PROXIMITY_TNT_TRIGGER8",
-	"S_PROXIMITY_TNT_TRIGGER9",
-	"S_PROXIMITY_TNT_TRIGGER10",
-	"S_PROXIMITY_TNT_TRIGGER11",
-	"S_PROXIMITY_TNT_TRIGGER12",
-	"S_PROXIMITY_TNT_TRIGGER13",
-	"S_PROXIMITY_TNT_TRIGGER14",
-	"S_PROXIMITY_TNT_TRIGGER15",
-	"S_PROXIMITY_TNT_TRIGGER16",
-	"S_PROXIMITY_TNT_TRIGGER17",
-	"S_PROXIMITY_TNT_TRIGGER18",
-	"S_PROXIMITY_TNT_TRIGGER19",
-	"S_PROXIMITY_TNT_TRIGGER20",
-	"S_PROXIMITY_TNT_TRIGGER21",
-	"S_PROXIMITY_TNT_TRIGGER22",
-	"S_PROXIMITY_TNT_TRIGGER23",
-
-	// Dust devil
-	"S_DUSTDEVIL",
-	"S_DUSTLAYER1",
-	"S_DUSTLAYER2",
-	"S_DUSTLAYER3",
-	"S_DUSTLAYER4",
-	"S_DUSTLAYER5",
-	"S_ARIDDUST1",
-	"S_ARIDDUST2",
-	"S_ARIDDUST3",
-
-	// Minecart
-	"S_MINECART_IDLE",
-	"S_MINECART_DTH1",
-	"S_MINECARTEND",
-	"S_MINECARTSEG_FRONT",
-	"S_MINECARTSEG_BACK",
-	"S_MINECARTSEG_LEFT",
-	"S_MINECARTSEG_RIGHT",
-	"S_MINECARTSIDEMARK1",
-	"S_MINECARTSIDEMARK2",
-	"S_MINECARTSPARK",
-
-	// Saloon door
-	"S_SALOONDOOR",
-	"S_SALOONDOORCENTER",
-
-	// Train cameo
-	"S_TRAINCAMEOSPAWNER_1",
-	"S_TRAINCAMEOSPAWNER_2",
-	"S_TRAINCAMEOSPAWNER_3",
-	"S_TRAINCAMEOSPAWNER_4",
-	"S_TRAINCAMEOSPAWNER_5",
-	"S_TRAINPUFFMAKER",
-
-	// Train
-	"S_TRAINDUST",
-	"S_TRAINSTEAM",
-
-	// Flame jet
-	"S_FLAMEJETSTND",
-	"S_FLAMEJETSTART",
-	"S_FLAMEJETSTOP",
-	"S_FLAMEJETFLAME1",
-	"S_FLAMEJETFLAME2",
-	"S_FLAMEJETFLAME3",
-	"S_FLAMEJETFLAME4",
-	"S_FLAMEJETFLAME5",
-	"S_FLAMEJETFLAME6",
-	"S_FLAMEJETFLAME7",
-	"S_FLAMEJETFLAME8",
-	"S_FLAMEJETFLAME9",
-
-	// Spinning flame jets
-	"S_FJSPINAXISA1", // Counter-clockwise
-	"S_FJSPINAXISA2",
-	"S_FJSPINAXISB1", // Clockwise
-	"S_FJSPINAXISB2",
-
-	// Blade's flame
-	"S_FLAMEJETFLAMEB1",
-	"S_FLAMEJETFLAMEB2",
-	"S_FLAMEJETFLAMEB3",
-
-	// Lavafall
-	"S_LAVAFALL_DORMANT",
-	"S_LAVAFALL_TELL",
-	"S_LAVAFALL_SHOOT",
-	"S_LAVAFALL_LAVA1",
-	"S_LAVAFALL_LAVA2",
-	"S_LAVAFALL_LAVA3",
-	"S_LAVAFALLROCK",
-
-	// Rollout Rock
-	"S_ROLLOUTSPAWN",
-	"S_ROLLOUTROCK",
-
-	// RVZ scenery
-	"S_BIGFERNLEAF",
-	"S_BIGFERN1",
-	"S_BIGFERN2",
-	"S_JUNGLEPALM",
-	"S_TORCHFLOWER",
-	"S_WALLVINE_LONG",
-	"S_WALLVINE_SHORT",
-
-	// Glaregoyles
-	"S_GLAREGOYLE",
-	"S_GLAREGOYLE_CHARGE",
-	"S_GLAREGOYLE_BLINK",
-	"S_GLAREGOYLE_HOLD",
-	"S_GLAREGOYLE_FIRE",
-	"S_GLAREGOYLE_LOOP",
-	"S_GLAREGOYLE_COOLDOWN",
-	"S_GLAREGOYLEUP",
-	"S_GLAREGOYLEUP_CHARGE",
-	"S_GLAREGOYLEUP_BLINK",
-	"S_GLAREGOYLEUP_HOLD",
-	"S_GLAREGOYLEUP_FIRE",
-	"S_GLAREGOYLEUP_LOOP",
-	"S_GLAREGOYLEUP_COOLDOWN",
-	"S_GLAREGOYLEDOWN",
-	"S_GLAREGOYLEDOWN_CHARGE",
-	"S_GLAREGOYLEDOWN_BLINK",
-	"S_GLAREGOYLEDOWN_HOLD",
-	"S_GLAREGOYLEDOWN_FIRE",
-	"S_GLAREGOYLEDOWN_LOOP",
-	"S_GLAREGOYLEDOWN_COOLDOWN",
-	"S_GLAREGOYLELONG",
-	"S_GLAREGOYLELONG_CHARGE",
-	"S_GLAREGOYLELONG_BLINK",
-	"S_GLAREGOYLELONG_HOLD",
-	"S_GLAREGOYLELONG_FIRE",
-	"S_GLAREGOYLELONG_LOOP",
-	"S_GLAREGOYLELONG_COOLDOWN",
-
-	// ATZ's Red Crystal/Target
-	"S_TARGET_IDLE",
-	"S_TARGET_HIT1",
-	"S_TARGET_HIT2",
-	"S_TARGET_RESPAWN",
-	"S_TARGET_ALLDONE",
-
-	// ATZ's green flame
-	"S_GREENFLAME",
-
-	// ATZ Blue Gargoyle
-	"S_BLUEGARGOYLE",
-
-	// Stalagmites
-	"S_STG0",
-	"S_STG1",
-	"S_STG2",
-	"S_STG3",
-	"S_STG4",
-	"S_STG5",
-	"S_STG6",
-	"S_STG7",
-	"S_STG8",
-	"S_STG9",
-
-	// Xmas-specific stuff
-	"S_XMASPOLE",
-	"S_CANDYCANE",
-	"S_SNOWMAN",    // normal
-	"S_SNOWMANHAT", // with hat + scarf
-	"S_LAMPPOST1",  // normal
-	"S_LAMPPOST2",  // with snow
-	"S_HANGSTAR",
-	"S_MISTLETOE",
-	// Xmas GFZ bushes
-	"S_XMASBLUEBERRYBUSH",
-	"S_XMASBERRYBUSH",
-	"S_XMASBUSH",
-	// FHZ
-	"S_FHZICE1",
-	"S_FHZICE2",
-	"S_ROSY_IDLE1",
-	"S_ROSY_IDLE2",
-	"S_ROSY_IDLE3",
-	"S_ROSY_IDLE4",
-	"S_ROSY_JUMP",
-	"S_ROSY_WALK",
-	"S_ROSY_HUG",
-	"S_ROSY_PAIN",
-	"S_ROSY_STND",
-	"S_ROSY_UNHAPPY",
-
-	// Halloween Scenery
-	// Pumpkins
-	"S_JACKO1",
-	"S_JACKO1OVERLAY_1",
-	"S_JACKO1OVERLAY_2",
-	"S_JACKO1OVERLAY_3",
-	"S_JACKO1OVERLAY_4",
-	"S_JACKO2",
-	"S_JACKO2OVERLAY_1",
-	"S_JACKO2OVERLAY_2",
-	"S_JACKO2OVERLAY_3",
-	"S_JACKO2OVERLAY_4",
-	"S_JACKO3",
-	"S_JACKO3OVERLAY_1",
-	"S_JACKO3OVERLAY_2",
-	"S_JACKO3OVERLAY_3",
-	"S_JACKO3OVERLAY_4",
-	// Dr Seuss Trees
-	"S_HHZTREE_TOP",
-	"S_HHZTREE_TRUNK",
-	"S_HHZTREE_LEAF",
-	// Mushroom
-	"S_HHZSHROOM_1",
-	"S_HHZSHROOM_2",
-	"S_HHZSHROOM_3",
-	"S_HHZSHROOM_4",
-	"S_HHZSHROOM_5",
-	"S_HHZSHROOM_6",
-	"S_HHZSHROOM_7",
-	"S_HHZSHROOM_8",
-	"S_HHZSHROOM_9",
-	"S_HHZSHROOM_10",
-	"S_HHZSHROOM_11",
-	"S_HHZSHROOM_12",
-	"S_HHZSHROOM_13",
-	"S_HHZSHROOM_14",
-	"S_HHZSHROOM_15",
-	"S_HHZSHROOM_16",
-	// Misc
-	"S_HHZGRASS",
-	"S_HHZTENT1",
-	"S_HHZTENT2",
-	"S_HHZSTALAGMITE_TALL",
-	"S_HHZSTALAGMITE_SHORT",
-
-	// Botanic Serenity's loads of scenery states
-	"S_BSZTALLFLOWER_RED",
-	"S_BSZTALLFLOWER_PURPLE",
-	"S_BSZTALLFLOWER_BLUE",
-	"S_BSZTALLFLOWER_CYAN",
-	"S_BSZTALLFLOWER_YELLOW",
-	"S_BSZTALLFLOWER_ORANGE",
-	"S_BSZFLOWER_RED",
-	"S_BSZFLOWER_PURPLE",
-	"S_BSZFLOWER_BLUE",
-	"S_BSZFLOWER_CYAN",
-	"S_BSZFLOWER_YELLOW",
-	"S_BSZFLOWER_ORANGE",
-	"S_BSZSHORTFLOWER_RED",
-	"S_BSZSHORTFLOWER_PURPLE",
-	"S_BSZSHORTFLOWER_BLUE",
-	"S_BSZSHORTFLOWER_CYAN",
-	"S_BSZSHORTFLOWER_YELLOW",
-	"S_BSZSHORTFLOWER_ORANGE",
-	"S_BSZTULIP_RED",
-	"S_BSZTULIP_PURPLE",
-	"S_BSZTULIP_BLUE",
-	"S_BSZTULIP_CYAN",
-	"S_BSZTULIP_YELLOW",
-	"S_BSZTULIP_ORANGE",
-	"S_BSZCLUSTER_RED",
-	"S_BSZCLUSTER_PURPLE",
-	"S_BSZCLUSTER_BLUE",
-	"S_BSZCLUSTER_CYAN",
-	"S_BSZCLUSTER_YELLOW",
-	"S_BSZCLUSTER_ORANGE",
-	"S_BSZBUSH_RED",
-	"S_BSZBUSH_PURPLE",
-	"S_BSZBUSH_BLUE",
-	"S_BSZBUSH_CYAN",
-	"S_BSZBUSH_YELLOW",
-	"S_BSZBUSH_ORANGE",
-	"S_BSZVINE_RED",
-	"S_BSZVINE_PURPLE",
-	"S_BSZVINE_BLUE",
-	"S_BSZVINE_CYAN",
-	"S_BSZVINE_YELLOW",
-	"S_BSZVINE_ORANGE",
-	"S_BSZSHRUB",
-	"S_BSZCLOVER",
-	"S_BIG_PALMTREE_TRUNK",
-	"S_BIG_PALMTREE_TOP",
-	"S_PALMTREE_TRUNK",
-	"S_PALMTREE_TOP",
-
-	"S_DBALL1",
-	"S_DBALL2",
-	"S_DBALL3",
-	"S_DBALL4",
-	"S_DBALL5",
-	"S_DBALL6",
-	"S_EGGSTATUE2",
-
-	// Shield Orb
-	"S_ARMA1",
-	"S_ARMA2",
-	"S_ARMA3",
-	"S_ARMA4",
-	"S_ARMA5",
-	"S_ARMA6",
-	"S_ARMA7",
-	"S_ARMA8",
-	"S_ARMA9",
-	"S_ARMA10",
-	"S_ARMA11",
-	"S_ARMA12",
-	"S_ARMA13",
-	"S_ARMA14",
-	"S_ARMA15",
-	"S_ARMA16",
-
-	"S_ARMF1",
-	"S_ARMF2",
-	"S_ARMF3",
-	"S_ARMF4",
-	"S_ARMF5",
-	"S_ARMF6",
-	"S_ARMF7",
-	"S_ARMF8",
-	"S_ARMF9",
-	"S_ARMF10",
-	"S_ARMF11",
-	"S_ARMF12",
-	"S_ARMF13",
-	"S_ARMF14",
-	"S_ARMF15",
-	"S_ARMF16",
-	"S_ARMF17",
-	"S_ARMF18",
-	"S_ARMF19",
-	"S_ARMF20",
-	"S_ARMF21",
-	"S_ARMF22",
-	"S_ARMF23",
-	"S_ARMF24",
-	"S_ARMF25",
-	"S_ARMF26",
-	"S_ARMF27",
-	"S_ARMF28",
-	"S_ARMF29",
-	"S_ARMF30",
-	"S_ARMF31",
-	"S_ARMF32",
-
-	"S_ARMB1",
-	"S_ARMB2",
-	"S_ARMB3",
-	"S_ARMB4",
-	"S_ARMB5",
-	"S_ARMB6",
-	"S_ARMB7",
-	"S_ARMB8",
-	"S_ARMB9",
-	"S_ARMB10",
-	"S_ARMB11",
-	"S_ARMB12",
-	"S_ARMB13",
-	"S_ARMB14",
-	"S_ARMB15",
-	"S_ARMB16",
-	"S_ARMB17",
-	"S_ARMB18",
-	"S_ARMB19",
-	"S_ARMB20",
-	"S_ARMB21",
-	"S_ARMB22",
-	"S_ARMB23",
-	"S_ARMB24",
-	"S_ARMB25",
-	"S_ARMB26",
-	"S_ARMB27",
-	"S_ARMB28",
-	"S_ARMB29",
-	"S_ARMB30",
-	"S_ARMB31",
-	"S_ARMB32",
-
-	"S_WIND1",
-	"S_WIND2",
-	"S_WIND3",
-	"S_WIND4",
-	"S_WIND5",
-	"S_WIND6",
-	"S_WIND7",
-	"S_WIND8",
-
-	"S_MAGN1",
-	"S_MAGN2",
-	"S_MAGN3",
-	"S_MAGN4",
-	"S_MAGN5",
-	"S_MAGN6",
-	"S_MAGN7",
-	"S_MAGN8",
-	"S_MAGN9",
-	"S_MAGN10",
-	"S_MAGN11",
-	"S_MAGN12",
-	"S_MAGN13",
-
-	"S_FORC1",
-	"S_FORC2",
-	"S_FORC3",
-	"S_FORC4",
-	"S_FORC5",
-	"S_FORC6",
-	"S_FORC7",
-	"S_FORC8",
-	"S_FORC9",
-	"S_FORC10",
-
-	"S_FORC11",
-	"S_FORC12",
-	"S_FORC13",
-	"S_FORC14",
-	"S_FORC15",
-	"S_FORC16",
-	"S_FORC17",
-	"S_FORC18",
-	"S_FORC19",
-	"S_FORC20",
-
-	"S_FORC21",
-
-	"S_ELEM1",
-	"S_ELEM2",
-	"S_ELEM3",
-	"S_ELEM4",
-	"S_ELEM5",
-	"S_ELEM6",
-	"S_ELEM7",
-	"S_ELEM8",
-	"S_ELEM9",
-	"S_ELEM10",
-	"S_ELEM11",
-	"S_ELEM12",
-
-	"S_ELEM13",
-	"S_ELEM14",
-
-	"S_ELEMF1",
-	"S_ELEMF2",
-	"S_ELEMF3",
-	"S_ELEMF4",
-	"S_ELEMF5",
-	"S_ELEMF6",
-	"S_ELEMF7",
-	"S_ELEMF8",
-	"S_ELEMF9",
-	"S_ELEMF10",
-
-	"S_PITY1",
-	"S_PITY2",
-	"S_PITY3",
-	"S_PITY4",
-	"S_PITY5",
-	"S_PITY6",
-	"S_PITY7",
-	"S_PITY8",
-	"S_PITY9",
-	"S_PITY10",
-	"S_PITY11",
-	"S_PITY12",
-
-	"S_FIRS1",
-	"S_FIRS2",
-	"S_FIRS3",
-	"S_FIRS4",
-	"S_FIRS5",
-	"S_FIRS6",
-	"S_FIRS7",
-	"S_FIRS8",
-	"S_FIRS9",
-
-	"S_FIRS10",
-	"S_FIRS11",
-
-	"S_FIRSB1",
-	"S_FIRSB2",
-	"S_FIRSB3",
-	"S_FIRSB4",
-	"S_FIRSB5",
-	"S_FIRSB6",
-	"S_FIRSB7",
-	"S_FIRSB8",
-	"S_FIRSB9",
-
-	"S_FIRSB10",
-
-	"S_BUBS1",
-	"S_BUBS2",
-	"S_BUBS3",
-	"S_BUBS4",
-	"S_BUBS5",
-	"S_BUBS6",
-	"S_BUBS7",
-	"S_BUBS8",
-	"S_BUBS9",
-
-	"S_BUBS10",
-	"S_BUBS11",
-
-	"S_BUBSB1",
-	"S_BUBSB2",
-	"S_BUBSB3",
-	"S_BUBSB4",
-
-	"S_BUBSB5",
-	"S_BUBSB6",
-
-	"S_ZAPS1",
-	"S_ZAPS2",
-	"S_ZAPS3",
-	"S_ZAPS4",
-	"S_ZAPS5",
-	"S_ZAPS6",
-	"S_ZAPS7",
-	"S_ZAPS8",
-	"S_ZAPS9",
-	"S_ZAPS10",
-	"S_ZAPS11",
-	"S_ZAPS12",
-	"S_ZAPS13", // blank frame
-	"S_ZAPS14",
-	"S_ZAPS15",
-	"S_ZAPS16",
-
-	"S_ZAPSB1", // blank frame
-	"S_ZAPSB2",
-	"S_ZAPSB3",
-	"S_ZAPSB4",
-	"S_ZAPSB5",
-	"S_ZAPSB6",
-	"S_ZAPSB7",
-	"S_ZAPSB8",
-	"S_ZAPSB9",
-	"S_ZAPSB10",
-	"S_ZAPSB11", // blank frame
-
-	//Thunder spark
-	"S_THUNDERCOIN_SPARK",
-
-	// Invincibility Sparkles
-	"S_IVSP",
-
-	// Super Sonic Spark
-	"S_SSPK1",
-	"S_SSPK2",
-	"S_SSPK3",
-	"S_SSPK4",
-	"S_SSPK5",
-
-	// Flicky-sized bubble
-	"S_FLICKY_BUBBLE",
-
-	// Bluebird
-	"S_FLICKY_01_OUT",
-	"S_FLICKY_01_FLAP1",
-	"S_FLICKY_01_FLAP2",
-	"S_FLICKY_01_FLAP3",
-	"S_FLICKY_01_STAND",
-	"S_FLICKY_01_CENTER",
-
-	// Rabbit
-	"S_FLICKY_02_OUT",
-	"S_FLICKY_02_AIM",
-	"S_FLICKY_02_HOP",
-	"S_FLICKY_02_UP",
-	"S_FLICKY_02_DOWN",
-	"S_FLICKY_02_STAND",
-	"S_FLICKY_02_CENTER",
-
-	// Chicken
-	"S_FLICKY_03_OUT",
-	"S_FLICKY_03_AIM",
-	"S_FLICKY_03_HOP",
-	"S_FLICKY_03_UP",
-	"S_FLICKY_03_FLAP1",
-	"S_FLICKY_03_FLAP2",
-	"S_FLICKY_03_STAND",
-	"S_FLICKY_03_CENTER",
-
-	// Seal
-	"S_FLICKY_04_OUT",
-	"S_FLICKY_04_AIM",
-	"S_FLICKY_04_HOP",
-	"S_FLICKY_04_UP",
-	"S_FLICKY_04_DOWN",
-	"S_FLICKY_04_SWIM1",
-	"S_FLICKY_04_SWIM2",
-	"S_FLICKY_04_SWIM3",
-	"S_FLICKY_04_SWIM4",
-	"S_FLICKY_04_STAND",
-	"S_FLICKY_04_CENTER",
-
-	// Pig
-	"S_FLICKY_05_OUT",
-	"S_FLICKY_05_AIM",
-	"S_FLICKY_05_HOP",
-	"S_FLICKY_05_UP",
-	"S_FLICKY_05_DOWN",
-	"S_FLICKY_05_STAND",
-	"S_FLICKY_05_CENTER",
-
-	// Chipmunk
-	"S_FLICKY_06_OUT",
-	"S_FLICKY_06_AIM",
-	"S_FLICKY_06_HOP",
-	"S_FLICKY_06_UP",
-	"S_FLICKY_06_DOWN",
-	"S_FLICKY_06_STAND",
-	"S_FLICKY_06_CENTER",
-
-	// Penguin
-	"S_FLICKY_07_OUT",
-	"S_FLICKY_07_AIML",
-	"S_FLICKY_07_HOPL",
-	"S_FLICKY_07_UPL",
-	"S_FLICKY_07_DOWNL",
-	"S_FLICKY_07_AIMR",
-	"S_FLICKY_07_HOPR",
-	"S_FLICKY_07_UPR",
-	"S_FLICKY_07_DOWNR",
-	"S_FLICKY_07_SWIM1",
-	"S_FLICKY_07_SWIM2",
-	"S_FLICKY_07_SWIM3",
-	"S_FLICKY_07_STAND",
-	"S_FLICKY_07_CENTER",
-
-	// Fish
-	"S_FLICKY_08_OUT",
-	"S_FLICKY_08_AIM",
-	"S_FLICKY_08_HOP",
-	"S_FLICKY_08_FLAP1",
-	"S_FLICKY_08_FLAP2",
-	"S_FLICKY_08_FLAP3",
-	"S_FLICKY_08_FLAP4",
-	"S_FLICKY_08_SWIM1",
-	"S_FLICKY_08_SWIM2",
-	"S_FLICKY_08_SWIM3",
-	"S_FLICKY_08_SWIM4",
-	"S_FLICKY_08_STAND",
-	"S_FLICKY_08_CENTER",
-
-	// Ram
-	"S_FLICKY_09_OUT",
-	"S_FLICKY_09_AIM",
-	"S_FLICKY_09_HOP",
-	"S_FLICKY_09_UP",
-	"S_FLICKY_09_DOWN",
-	"S_FLICKY_09_STAND",
-	"S_FLICKY_09_CENTER",
-
-	// Puffin
-	"S_FLICKY_10_OUT",
-	"S_FLICKY_10_FLAP1",
-	"S_FLICKY_10_FLAP2",
-	"S_FLICKY_10_STAND",
-	"S_FLICKY_10_CENTER",
-
-	// Cow
-	"S_FLICKY_11_OUT",
-	"S_FLICKY_11_AIM",
-	"S_FLICKY_11_RUN1",
-	"S_FLICKY_11_RUN2",
-	"S_FLICKY_11_RUN3",
-	"S_FLICKY_11_STAND",
-	"S_FLICKY_11_CENTER",
-
-	// Rat
-	"S_FLICKY_12_OUT",
-	"S_FLICKY_12_AIM",
-	"S_FLICKY_12_RUN1",
-	"S_FLICKY_12_RUN2",
-	"S_FLICKY_12_RUN3",
-	"S_FLICKY_12_STAND",
-	"S_FLICKY_12_CENTER",
-
-	// Bear
-	"S_FLICKY_13_OUT",
-	"S_FLICKY_13_AIM",
-	"S_FLICKY_13_HOP",
-	"S_FLICKY_13_UP",
-	"S_FLICKY_13_DOWN",
-	"S_FLICKY_13_STAND",
-	"S_FLICKY_13_CENTER",
-
-	// Dove
-	"S_FLICKY_14_OUT",
-	"S_FLICKY_14_FLAP1",
-	"S_FLICKY_14_FLAP2",
-	"S_FLICKY_14_FLAP3",
-	"S_FLICKY_14_STAND",
-	"S_FLICKY_14_CENTER",
-
-	// Cat
-	"S_FLICKY_15_OUT",
-	"S_FLICKY_15_AIM",
-	"S_FLICKY_15_HOP",
-	"S_FLICKY_15_UP",
-	"S_FLICKY_15_DOWN",
-	"S_FLICKY_15_STAND",
-	"S_FLICKY_15_CENTER",
-
-	// Canary
-	"S_FLICKY_16_OUT",
-	"S_FLICKY_16_FLAP1",
-	"S_FLICKY_16_FLAP2",
-	"S_FLICKY_16_FLAP3",
-	"S_FLICKY_16_STAND",
-	"S_FLICKY_16_CENTER",
-
-	// Spider
-	"S_SECRETFLICKY_01_OUT",
-	"S_SECRETFLICKY_01_AIM",
-	"S_SECRETFLICKY_01_HOP",
-	"S_SECRETFLICKY_01_UP",
-	"S_SECRETFLICKY_01_DOWN",
-	"S_SECRETFLICKY_01_STAND",
-	"S_SECRETFLICKY_01_CENTER",
-
-	// Bat
-	"S_SECRETFLICKY_02_OUT",
-	"S_SECRETFLICKY_02_FLAP1",
-	"S_SECRETFLICKY_02_FLAP2",
-	"S_SECRETFLICKY_02_FLAP3",
-	"S_SECRETFLICKY_02_STAND",
-	"S_SECRETFLICKY_02_CENTER",
-
-	// Fan
-	"S_FAN",
-	"S_FAN2",
-	"S_FAN3",
-	"S_FAN4",
-	"S_FAN5",
-
-	// Steam Riser
-	"S_STEAM1",
-	"S_STEAM2",
-	"S_STEAM3",
-	"S_STEAM4",
-	"S_STEAM5",
-	"S_STEAM6",
-	"S_STEAM7",
-	"S_STEAM8",
-
-	// Bumpers
-	"S_BUMPER",
-	"S_BUMPERHIT",
-
-	// Balloons
-	"S_BALLOON",
-	"S_BALLOONPOP1",
-	"S_BALLOONPOP2",
-	"S_BALLOONPOP3",
-	"S_BALLOONPOP4",
-	"S_BALLOONPOP5",
-	"S_BALLOONPOP6",
-
-	// Yellow Spring
-	"S_YELLOWSPRING",
-	"S_YELLOWSPRING2",
-	"S_YELLOWSPRING3",
-	"S_YELLOWSPRING4",
-	"S_YELLOWSPRING5",
-
-	// Red Spring
-	"S_REDSPRING",
-	"S_REDSPRING2",
-	"S_REDSPRING3",
-	"S_REDSPRING4",
-	"S_REDSPRING5",
-
-	// Blue Spring
-	"S_BLUESPRING",
-	"S_BLUESPRING2",
-	"S_BLUESPRING3",
-	"S_BLUESPRING4",
-	"S_BLUESPRING5",
-
-	// Yellow Diagonal Spring
-	"S_YDIAG1",
-	"S_YDIAG2",
-	"S_YDIAG3",
-	"S_YDIAG4",
-	"S_YDIAG5",
-	"S_YDIAG6",
-	"S_YDIAG7",
-	"S_YDIAG8",
-
-	// Red Diagonal Spring
-	"S_RDIAG1",
-	"S_RDIAG2",
-	"S_RDIAG3",
-	"S_RDIAG4",
-	"S_RDIAG5",
-	"S_RDIAG6",
-	"S_RDIAG7",
-	"S_RDIAG8",
-
-	// Blue Diagonal Spring
-	"S_BDIAG1",
-	"S_BDIAG2",
-	"S_BDIAG3",
-	"S_BDIAG4",
-	"S_BDIAG5",
-	"S_BDIAG6",
-	"S_BDIAG7",
-	"S_BDIAG8",
-
-	// Yellow Side Spring
-	"S_YHORIZ1",
-	"S_YHORIZ2",
-	"S_YHORIZ3",
-	"S_YHORIZ4",
-	"S_YHORIZ5",
-	"S_YHORIZ6",
-	"S_YHORIZ7",
-	"S_YHORIZ8",
-
-	// Red Side Spring
-	"S_RHORIZ1",
-	"S_RHORIZ2",
-	"S_RHORIZ3",
-	"S_RHORIZ4",
-	"S_RHORIZ5",
-	"S_RHORIZ6",
-	"S_RHORIZ7",
-	"S_RHORIZ8",
-
-	// Blue Side Spring
-	"S_BHORIZ1",
-	"S_BHORIZ2",
-	"S_BHORIZ3",
-	"S_BHORIZ4",
-	"S_BHORIZ5",
-	"S_BHORIZ6",
-	"S_BHORIZ7",
-	"S_BHORIZ8",
-
-	// Booster
-	"S_BOOSTERSOUND",
-	"S_YELLOWBOOSTERROLLER",
-	"S_YELLOWBOOSTERSEG_LEFT",
-	"S_YELLOWBOOSTERSEG_RIGHT",
-	"S_YELLOWBOOSTERSEG_FACE",
-	"S_REDBOOSTERROLLER",
-	"S_REDBOOSTERSEG_LEFT",
-	"S_REDBOOSTERSEG_RIGHT",
-	"S_REDBOOSTERSEG_FACE",
-
-	// Rain
-	"S_RAIN1",
-	"S_RAINRETURN",
-
-	// Snowflake
-	"S_SNOW1",
-	"S_SNOW2",
-	"S_SNOW3",
-
-	// Water Splish
-	"S_SPLISH1",
-	"S_SPLISH2",
-	"S_SPLISH3",
-	"S_SPLISH4",
-	"S_SPLISH5",
-	"S_SPLISH6",
-	"S_SPLISH7",
-	"S_SPLISH8",
-	"S_SPLISH9",
-
-	// Lava Splish
-	"S_LAVASPLISH",
-
-	// added water splash
-	"S_SPLASH1",
-	"S_SPLASH2",
-	"S_SPLASH3",
-
-	// lava/slime damage burn smoke
-	"S_SMOKE1",
-	"S_SMOKE2",
-	"S_SMOKE3",
-	"S_SMOKE4",
-	"S_SMOKE5",
-
-	// Bubbles
-	"S_SMALLBUBBLE",
-	"S_MEDIUMBUBBLE",
-	"S_LARGEBUBBLE1",
-	"S_LARGEBUBBLE2",
-	"S_EXTRALARGEBUBBLE", // breathable
-
-	"S_POP1", // Extra Large bubble goes POP!
-
-	"S_WATERZAP",
-
-	// Spindash dust
-	"S_SPINDUST1",
-	"S_SPINDUST2",
-	"S_SPINDUST3",
-	"S_SPINDUST4",
-	"S_SPINDUST_BUBBLE1",
-	"S_SPINDUST_BUBBLE2",
-	"S_SPINDUST_BUBBLE3",
-	"S_SPINDUST_BUBBLE4",
-	"S_SPINDUST_FIRE1",
-	"S_SPINDUST_FIRE2",
-	"S_SPINDUST_FIRE3",
-	"S_SPINDUST_FIRE4",
-
-	"S_FOG1",
-	"S_FOG2",
-	"S_FOG3",
-	"S_FOG4",
-	"S_FOG5",
-	"S_FOG6",
-	"S_FOG7",
-	"S_FOG8",
-	"S_FOG9",
-	"S_FOG10",
-	"S_FOG11",
-	"S_FOG12",
-	"S_FOG13",
-	"S_FOG14",
-
-	"S_SEED",
-
-	"S_PARTICLE",
-
-	// Score Logos
-	"S_SCRA", // 100
-	"S_SCRB", // 200
-	"S_SCRC", // 500
-	"S_SCRD", // 1000
-	"S_SCRE", // 10000
-	"S_SCRF", // 400 (mario)
-	"S_SCRG", // 800 (mario)
-	"S_SCRH", // 2000 (mario)
-	"S_SCRI", // 4000 (mario)
-	"S_SCRJ", // 8000 (mario)
-	"S_SCRK", // 1UP (mario)
-	"S_SCRL", // 10
-
-	// Drowning Timer Numbers
-	"S_ZERO1",
-	"S_ONE1",
-	"S_TWO1",
-	"S_THREE1",
-	"S_FOUR1",
-	"S_FIVE1",
-
-	"S_ZERO2",
-	"S_ONE2",
-	"S_TWO2",
-	"S_THREE2",
-	"S_FOUR2",
-	"S_FIVE2",
-
-	"S_FLIGHTINDICATOR",
-
-	"S_LOCKON1",
-	"S_LOCKON2",
-	"S_LOCKON3",
-	"S_LOCKON4",
-	"S_LOCKONINF1",
-	"S_LOCKONINF2",
-	"S_LOCKONINF3",
-	"S_LOCKONINF4",
-
-	// Tag Sign
-	"S_TTAG",
-
-	// Got Flag Sign
-	"S_GOTFLAG",
-
-	// Finish flag
-	"S_FINISHFLAG",
-
-	"S_CORK",
-	"S_LHRT",
-
-	// Red Ring
-	"S_RRNG1",
-	"S_RRNG2",
-	"S_RRNG3",
-	"S_RRNG4",
-	"S_RRNG5",
-	"S_RRNG6",
-	"S_RRNG7",
-
-	// Weapon Ring Ammo
-	"S_BOUNCERINGAMMO",
-	"S_RAILRINGAMMO",
-	"S_INFINITYRINGAMMO",
-	"S_AUTOMATICRINGAMMO",
-	"S_EXPLOSIONRINGAMMO",
-	"S_SCATTERRINGAMMO",
-	"S_GRENADERINGAMMO",
-
-	// Weapon pickup
-	"S_BOUNCEPICKUP",
-	"S_BOUNCEPICKUPFADE1",
-	"S_BOUNCEPICKUPFADE2",
-	"S_BOUNCEPICKUPFADE3",
-	"S_BOUNCEPICKUPFADE4",
-	"S_BOUNCEPICKUPFADE5",
-	"S_BOUNCEPICKUPFADE6",
-	"S_BOUNCEPICKUPFADE7",
-	"S_BOUNCEPICKUPFADE8",
-
-	"S_RAILPICKUP",
-	"S_RAILPICKUPFADE1",
-	"S_RAILPICKUPFADE2",
-	"S_RAILPICKUPFADE3",
-	"S_RAILPICKUPFADE4",
-	"S_RAILPICKUPFADE5",
-	"S_RAILPICKUPFADE6",
-	"S_RAILPICKUPFADE7",
-	"S_RAILPICKUPFADE8",
-
-	"S_AUTOPICKUP",
-	"S_AUTOPICKUPFADE1",
-	"S_AUTOPICKUPFADE2",
-	"S_AUTOPICKUPFADE3",
-	"S_AUTOPICKUPFADE4",
-	"S_AUTOPICKUPFADE5",
-	"S_AUTOPICKUPFADE6",
-	"S_AUTOPICKUPFADE7",
-	"S_AUTOPICKUPFADE8",
-
-	"S_EXPLODEPICKUP",
-	"S_EXPLODEPICKUPFADE1",
-	"S_EXPLODEPICKUPFADE2",
-	"S_EXPLODEPICKUPFADE3",
-	"S_EXPLODEPICKUPFADE4",
-	"S_EXPLODEPICKUPFADE5",
-	"S_EXPLODEPICKUPFADE6",
-	"S_EXPLODEPICKUPFADE7",
-	"S_EXPLODEPICKUPFADE8",
-
-	"S_SCATTERPICKUP",
-	"S_SCATTERPICKUPFADE1",
-	"S_SCATTERPICKUPFADE2",
-	"S_SCATTERPICKUPFADE3",
-	"S_SCATTERPICKUPFADE4",
-	"S_SCATTERPICKUPFADE5",
-	"S_SCATTERPICKUPFADE6",
-	"S_SCATTERPICKUPFADE7",
-	"S_SCATTERPICKUPFADE8",
-
-	"S_GRENADEPICKUP",
-	"S_GRENADEPICKUPFADE1",
-	"S_GRENADEPICKUPFADE2",
-	"S_GRENADEPICKUPFADE3",
-	"S_GRENADEPICKUPFADE4",
-	"S_GRENADEPICKUPFADE5",
-	"S_GRENADEPICKUPFADE6",
-	"S_GRENADEPICKUPFADE7",
-	"S_GRENADEPICKUPFADE8",
-
-	// Thrown Weapon Rings
-	"S_THROWNBOUNCE1",
-	"S_THROWNBOUNCE2",
-	"S_THROWNBOUNCE3",
-	"S_THROWNBOUNCE4",
-	"S_THROWNBOUNCE5",
-	"S_THROWNBOUNCE6",
-	"S_THROWNBOUNCE7",
-	"S_THROWNINFINITY1",
-	"S_THROWNINFINITY2",
-	"S_THROWNINFINITY3",
-	"S_THROWNINFINITY4",
-	"S_THROWNINFINITY5",
-	"S_THROWNINFINITY6",
-	"S_THROWNINFINITY7",
-	"S_THROWNAUTOMATIC1",
-	"S_THROWNAUTOMATIC2",
-	"S_THROWNAUTOMATIC3",
-	"S_THROWNAUTOMATIC4",
-	"S_THROWNAUTOMATIC5",
-	"S_THROWNAUTOMATIC6",
-	"S_THROWNAUTOMATIC7",
-	"S_THROWNEXPLOSION1",
-	"S_THROWNEXPLOSION2",
-	"S_THROWNEXPLOSION3",
-	"S_THROWNEXPLOSION4",
-	"S_THROWNEXPLOSION5",
-	"S_THROWNEXPLOSION6",
-	"S_THROWNEXPLOSION7",
-	"S_THROWNGRENADE1",
-	"S_THROWNGRENADE2",
-	"S_THROWNGRENADE3",
-	"S_THROWNGRENADE4",
-	"S_THROWNGRENADE5",
-	"S_THROWNGRENADE6",
-	"S_THROWNGRENADE7",
-	"S_THROWNGRENADE8",
-	"S_THROWNGRENADE9",
-	"S_THROWNGRENADE10",
-	"S_THROWNGRENADE11",
-	"S_THROWNGRENADE12",
-	"S_THROWNGRENADE13",
-	"S_THROWNGRENADE14",
-	"S_THROWNGRENADE15",
-	"S_THROWNGRENADE16",
-	"S_THROWNGRENADE17",
-	"S_THROWNGRENADE18",
-	"S_THROWNSCATTER",
-
-	"S_RINGEXPLODE",
-
-	"S_COIN1",
-	"S_COIN2",
-	"S_COIN3",
-	"S_COINSPARKLE1",
-	"S_COINSPARKLE2",
-	"S_COINSPARKLE3",
-	"S_COINSPARKLE4",
-	"S_GOOMBA1",
-	"S_GOOMBA1B",
-	"S_GOOMBA2",
-	"S_GOOMBA3",
-	"S_GOOMBA4",
-	"S_GOOMBA5",
-	"S_GOOMBA6",
-	"S_GOOMBA7",
-	"S_GOOMBA8",
-	"S_GOOMBA9",
-	"S_GOOMBA_DEAD",
-	"S_BLUEGOOMBA1",
-	"S_BLUEGOOMBA1B",
-	"S_BLUEGOOMBA2",
-	"S_BLUEGOOMBA3",
-	"S_BLUEGOOMBA4",
-	"S_BLUEGOOMBA5",
-	"S_BLUEGOOMBA6",
-	"S_BLUEGOOMBA7",
-	"S_BLUEGOOMBA8",
-	"S_BLUEGOOMBA9",
-	"S_BLUEGOOMBA_DEAD",
-
-	// Mario-specific stuff
-	"S_FIREFLOWER1",
-	"S_FIREFLOWER2",
-	"S_FIREFLOWER3",
-	"S_FIREFLOWER4",
-	"S_FIREBALL",
-	"S_FIREBALLTRAIL1",
-	"S_FIREBALLTRAIL2",
-	"S_SHELL",
-	"S_PUMA_START1",
-	"S_PUMA_START2",
-	"S_PUMA_UP1",
-	"S_PUMA_UP2",
-	"S_PUMA_UP3",
-	"S_PUMA_DOWN1",
-	"S_PUMA_DOWN2",
-	"S_PUMA_DOWN3",
-	"S_PUMATRAIL1",
-	"S_PUMATRAIL2",
-	"S_PUMATRAIL3",
-	"S_PUMATRAIL4",
-	"S_HAMMER",
-	"S_KOOPA1",
-	"S_KOOPA2",
-	"S_KOOPAFLAME1",
-	"S_KOOPAFLAME2",
-	"S_KOOPAFLAME3",
-	"S_AXE1",
-	"S_AXE2",
-	"S_AXE3",
-	"S_MARIOBUSH1",
-	"S_MARIOBUSH2",
-	"S_TOAD",
-
-	// Nights-specific stuff
-	"S_NIGHTSDRONE_MAN1",
-	"S_NIGHTSDRONE_MAN2",
-	"S_NIGHTSDRONE_SPARKLING1",
-	"S_NIGHTSDRONE_SPARKLING2",
-	"S_NIGHTSDRONE_SPARKLING3",
-	"S_NIGHTSDRONE_SPARKLING4",
-	"S_NIGHTSDRONE_SPARKLING5",
-	"S_NIGHTSDRONE_SPARKLING6",
-	"S_NIGHTSDRONE_SPARKLING7",
-	"S_NIGHTSDRONE_SPARKLING8",
-	"S_NIGHTSDRONE_SPARKLING9",
-	"S_NIGHTSDRONE_SPARKLING10",
-	"S_NIGHTSDRONE_SPARKLING11",
-	"S_NIGHTSDRONE_SPARKLING12",
-	"S_NIGHTSDRONE_SPARKLING13",
-	"S_NIGHTSDRONE_SPARKLING14",
-	"S_NIGHTSDRONE_SPARKLING15",
-	"S_NIGHTSDRONE_SPARKLING16",
-	"S_NIGHTSDRONE_GOAL1",
-	"S_NIGHTSDRONE_GOAL2",
-	"S_NIGHTSDRONE_GOAL3",
-	"S_NIGHTSDRONE_GOAL4",
-
-	"S_NIGHTSPARKLE1",
-	"S_NIGHTSPARKLE2",
-	"S_NIGHTSPARKLE3",
-	"S_NIGHTSPARKLE4",
-	"S_NIGHTSPARKLESUPER1",
-	"S_NIGHTSPARKLESUPER2",
-	"S_NIGHTSPARKLESUPER3",
-	"S_NIGHTSPARKLESUPER4",
-	"S_NIGHTSLOOPHELPER",
-
-	// NiGHTS bumper
-	"S_NIGHTSBUMPER1",
-	"S_NIGHTSBUMPER2",
-	"S_NIGHTSBUMPER3",
-	"S_NIGHTSBUMPER4",
-	"S_NIGHTSBUMPER5",
-	"S_NIGHTSBUMPER6",
-	"S_NIGHTSBUMPER7",
-	"S_NIGHTSBUMPER8",
-	"S_NIGHTSBUMPER9",
-	"S_NIGHTSBUMPER10",
-	"S_NIGHTSBUMPER11",
-	"S_NIGHTSBUMPER12",
-
-	"S_HOOP",
-	"S_HOOP_XMASA",
-	"S_HOOP_XMASB",
-
-	"S_NIGHTSCORE10",
-	"S_NIGHTSCORE20",
-	"S_NIGHTSCORE30",
-	"S_NIGHTSCORE40",
-	"S_NIGHTSCORE50",
-	"S_NIGHTSCORE60",
-	"S_NIGHTSCORE70",
-	"S_NIGHTSCORE80",
-	"S_NIGHTSCORE90",
-	"S_NIGHTSCORE100",
-	"S_NIGHTSCORE10_2",
-	"S_NIGHTSCORE20_2",
-	"S_NIGHTSCORE30_2",
-	"S_NIGHTSCORE40_2",
-	"S_NIGHTSCORE50_2",
-	"S_NIGHTSCORE60_2",
-	"S_NIGHTSCORE70_2",
-	"S_NIGHTSCORE80_2",
-	"S_NIGHTSCORE90_2",
-	"S_NIGHTSCORE100_2",
-
-	// NiGHTS Paraloop Powerups
-	"S_NIGHTSSUPERLOOP",
-	"S_NIGHTSDRILLREFILL",
-	"S_NIGHTSHELPER",
-	"S_NIGHTSEXTRATIME",
-	"S_NIGHTSLINKFREEZE",
-	"S_EGGCAPSULE",
-
-	// Orbiting Chaos Emeralds
-	"S_ORBITEM1",
-	"S_ORBITEM2",
-	"S_ORBITEM3",
-	"S_ORBITEM4",
-	"S_ORBITEM5",
-	"S_ORBITEM6",
-	"S_ORBITEM7",
-	"S_ORBITEM8",
-	"S_ORBIDYA1",
-	"S_ORBIDYA2",
-	"S_ORBIDYA3",
-	"S_ORBIDYA4",
-	"S_ORBIDYA5",
-
-	// "Flicky" helper
-	"S_NIGHTOPIANHELPER1",
-	"S_NIGHTOPIANHELPER2",
-	"S_NIGHTOPIANHELPER3",
-	"S_NIGHTOPIANHELPER4",
-	"S_NIGHTOPIANHELPER5",
-	"S_NIGHTOPIANHELPER6",
-	"S_NIGHTOPIANHELPER7",
-	"S_NIGHTOPIANHELPER8",
-	"S_NIGHTOPIANHELPER9",
-
-	// Nightopian
-	"S_PIAN_LOOK1",
-	"S_PIAN_LOOK2",
-	"S_PIAN_LOOK3",
-	"S_PIAN_FLY1",
-	"S_PIAN_FLY2",
-	"S_PIAN_FLY3",
-	"S_PIAN_SING",
-
-	// Shleep
-	"S_SHLEEP1",
-	"S_SHLEEP2",
-	"S_SHLEEP3",
-	"S_SHLEEP4",
-	"S_SHLEEPBOUNCE1",
-	"S_SHLEEPBOUNCE2",
-	"S_SHLEEPBOUNCE3",
-
-	// Secret badniks and hazards, shhhh
-	"S_PENGUINATOR_LOOK",
-	"S_PENGUINATOR_WADDLE1",
-	"S_PENGUINATOR_WADDLE2",
-	"S_PENGUINATOR_WADDLE3",
-	"S_PENGUINATOR_WADDLE4",
-	"S_PENGUINATOR_SLIDE1",
-	"S_PENGUINATOR_SLIDE2",
-	"S_PENGUINATOR_SLIDE3",
-	"S_PENGUINATOR_SLIDE4",
-	"S_PENGUINATOR_SLIDE5",
-
-	"S_POPHAT_LOOK",
-	"S_POPHAT_SHOOT1",
-	"S_POPHAT_SHOOT2",
-	"S_POPHAT_SHOOT3",
-	"S_POPHAT_SHOOT4",
-	"S_POPSHOT",
-	"S_POPSHOT_TRAIL",
-
-	"S_HIVEELEMENTAL_LOOK",
-	"S_HIVEELEMENTAL_PREPARE1",
-	"S_HIVEELEMENTAL_PREPARE2",
-	"S_HIVEELEMENTAL_SHOOT1",
-	"S_HIVEELEMENTAL_SHOOT2",
-	"S_HIVEELEMENTAL_DORMANT",
-	"S_HIVEELEMENTAL_PAIN",
-	"S_HIVEELEMENTAL_DIE1",
-	"S_HIVEELEMENTAL_DIE2",
-	"S_HIVEELEMENTAL_DIE3",
-
-	"S_BUMBLEBORE_SPAWN",
-	"S_BUMBLEBORE_LOOK1",
-	"S_BUMBLEBORE_LOOK2",
-	"S_BUMBLEBORE_FLY1",
-	"S_BUMBLEBORE_FLY2",
-	"S_BUMBLEBORE_RAISE",
-	"S_BUMBLEBORE_FALL1",
-	"S_BUMBLEBORE_FALL2",
-	"S_BUMBLEBORE_STUCK1",
-	"S_BUMBLEBORE_STUCK2",
-	"S_BUMBLEBORE_DIE",
-
-	"S_BUGGLEIDLE",
-	"S_BUGGLEFLY",
-
-	"S_SMASHSPIKE_FLOAT",
-	"S_SMASHSPIKE_EASE1",
-	"S_SMASHSPIKE_EASE2",
-	"S_SMASHSPIKE_FALL",
-	"S_SMASHSPIKE_STOMP1",
-	"S_SMASHSPIKE_STOMP2",
-	"S_SMASHSPIKE_RISE1",
-	"S_SMASHSPIKE_RISE2",
-
-	"S_CACO_LOOK",
-	"S_CACO_WAKE1",
-	"S_CACO_WAKE2",
-	"S_CACO_WAKE3",
-	"S_CACO_WAKE4",
-	"S_CACO_ROAR",
-	"S_CACO_CHASE",
-	"S_CACO_CHASE_REPEAT",
-	"S_CACO_RANDOM",
-	"S_CACO_PREPARE_SOUND",
-	"S_CACO_PREPARE1",
-	"S_CACO_PREPARE2",
-	"S_CACO_PREPARE3",
-	"S_CACO_SHOOT_SOUND",
-	"S_CACO_SHOOT1",
-	"S_CACO_SHOOT2",
-	"S_CACO_CLOSE",
-	"S_CACO_DIE_FLAGS",
-	"S_CACO_DIE_GIB1",
-	"S_CACO_DIE_GIB2",
-	"S_CACO_DIE_SCREAM",
-	"S_CACO_DIE_SHATTER",
-	"S_CACO_DIE_FALL",
-	"S_CACOSHARD_RANDOMIZE",
-	"S_CACOSHARD1_1",
-	"S_CACOSHARD1_2",
-	"S_CACOSHARD2_1",
-	"S_CACOSHARD2_2",
-	"S_CACOFIRE1",
-	"S_CACOFIRE2",
-	"S_CACOFIRE3",
-	"S_CACOFIRE_EXPLODE1",
-	"S_CACOFIRE_EXPLODE2",
-	"S_CACOFIRE_EXPLODE3",
-	"S_CACOFIRE_EXPLODE4",
-
-	"S_SPINBOBERT_MOVE_FLIPUP",
-	"S_SPINBOBERT_MOVE_UP",
-	"S_SPINBOBERT_MOVE_FLIPDOWN",
-	"S_SPINBOBERT_MOVE_DOWN",
-	"S_SPINBOBERT_FIRE_MOVE",
-	"S_SPINBOBERT_FIRE_GHOST",
-	"S_SPINBOBERT_FIRE_TRAIL1",
-	"S_SPINBOBERT_FIRE_TRAIL2",
-	"S_SPINBOBERT_FIRE_TRAIL3",
-
-	"S_HANGSTER_LOOK",
-	"S_HANGSTER_SWOOP1",
-	"S_HANGSTER_SWOOP2",
-	"S_HANGSTER_ARC1",
-	"S_HANGSTER_ARC2",
-	"S_HANGSTER_ARC3",
-	"S_HANGSTER_FLY1",
-	"S_HANGSTER_FLY2",
-	"S_HANGSTER_FLY3",
-	"S_HANGSTER_FLY4",
-	"S_HANGSTER_FLYREPEAT",
-	"S_HANGSTER_ARCUP1",
-	"S_HANGSTER_ARCUP2",
-	"S_HANGSTER_ARCUP3",
-	"S_HANGSTER_RETURN1",
-	"S_HANGSTER_RETURN2",
-	"S_HANGSTER_RETURN3",
-
-	"S_CRUMBLE1",
-	"S_CRUMBLE2",
-
-	// Spark
-	"S_SPRK1",
-	"S_SPRK2",
-	"S_SPRK3",
-
-	// Robot Explosion
-	"S_XPLD_FLICKY",
-	"S_XPLD1",
-	"S_XPLD2",
-	"S_XPLD3",
-	"S_XPLD4",
-	"S_XPLD5",
-	"S_XPLD6",
-	"S_XPLD_EGGTRAP",
-
-	// Underwater Explosion
-	"S_WPLD1",
-	"S_WPLD2",
-	"S_WPLD3",
-	"S_WPLD4",
-	"S_WPLD5",
-	"S_WPLD6",
-
-	"S_DUST1",
-	"S_DUST2",
-	"S_DUST3",
-	"S_DUST4",
-
-	"S_ROCKSPAWN",
-
-	"S_ROCKCRUMBLEA",
-	"S_ROCKCRUMBLEB",
-	"S_ROCKCRUMBLEC",
-	"S_ROCKCRUMBLED",
-	"S_ROCKCRUMBLEE",
-	"S_ROCKCRUMBLEF",
-	"S_ROCKCRUMBLEG",
-	"S_ROCKCRUMBLEH",
-	"S_ROCKCRUMBLEI",
-	"S_ROCKCRUMBLEJ",
-	"S_ROCKCRUMBLEK",
-	"S_ROCKCRUMBLEL",
-	"S_ROCKCRUMBLEM",
-	"S_ROCKCRUMBLEN",
-	"S_ROCKCRUMBLEO",
-	"S_ROCKCRUMBLEP",
-
-	// Level debris
-	"S_GFZDEBRIS",
-	"S_BRICKDEBRIS",
-	"S_WOODDEBRIS",
-	"S_REDBRICKDEBRIS",
-	"S_BLUEBRICKDEBRIS",
-	"S_YELLOWBRICKDEBRIS",
-
-	"S_NAMECHECK",
-};
-
-// RegEx to generate this from info.h: ^\tMT_([^,]+), --> \t"MT_\1",
-// I am leaving the prefixes solely for clarity to programmers,
-// because sadly no one remembers this place while searching for full state names.
-const char *const MOBJTYPE_LIST[] = {  // array length left dynamic for sanity testing later.
-	"MT_NULL",
-	"MT_UNKNOWN",
-
-	"MT_THOK", // Thok! mobj
-	"MT_PLAYER",
-	"MT_TAILSOVERLAY", // c:
-	"MT_METALJETFUME",
-
-	// Enemies
-	"MT_BLUECRAWLA", // Crawla (Blue)
-	"MT_REDCRAWLA", // Crawla (Red)
-	"MT_GFZFISH", // SDURF
-	"MT_GOLDBUZZ", // Buzz (Gold)
-	"MT_REDBUZZ", // Buzz (Red)
-	"MT_JETTBOMBER", // Jetty-Syn Bomber
-	"MT_JETTGUNNER", // Jetty-Syn Gunner
-	"MT_CRAWLACOMMANDER", // Crawla Commander
-	"MT_DETON", // Deton
-	"MT_SKIM", // Skim mine dropper
-	"MT_TURRET", // Industrial Turret
-	"MT_POPUPTURRET", // Pop-Up Turret
-	"MT_SPINCUSHION", // Spincushion
-	"MT_CRUSHSTACEAN", // Crushstacean
-	"MT_CRUSHCLAW", // Big meaty claw
-	"MT_CRUSHCHAIN", // Chain
-	"MT_BANPYURA", // Banpyura
-	"MT_BANPSPRING", // Banpyura spring
-	"MT_JETJAW", // Jet Jaw
-	"MT_SNAILER", // Snailer
-	"MT_VULTURE", // BASH
-	"MT_POINTY", // Pointy
-	"MT_POINTYBALL", // Pointy Ball
-	"MT_ROBOHOOD", // Robo-Hood
-	"MT_FACESTABBER", // Castlebot Facestabber
-	"MT_FACESTABBERSPEAR", // Castlebot Facestabber spear aura
-	"MT_EGGGUARD", // Egg Guard
-	"MT_EGGSHIELD", // Egg Guard's shield
-	"MT_GSNAPPER", // Green Snapper
-	"MT_SNAPPER_LEG", // Green Snapper leg
-	"MT_SNAPPER_HEAD", // Green Snapper head
-	"MT_MINUS", // Minus
-	"MT_MINUSDIRT", // Minus dirt
-	"MT_SPRINGSHELL", // Spring Shell
-	"MT_YELLOWSHELL", // Spring Shell (yellow)
-	"MT_UNIDUS", // Unidus
-	"MT_UNIBALL", // Unidus Ball
-	"MT_CANARIVORE", // Canarivore
-	"MT_CANARIVORE_GAS", // Canarivore gas
-	"MT_PYREFLY", // Pyre Fly
-	"MT_PYREFLY_FIRE", // Pyre Fly fire
-	"MT_PTERABYTESPAWNER", // Pterabyte spawner
-	"MT_PTERABYTEWAYPOINT", // Pterabyte waypoint
-	"MT_PTERABYTE", // Pterabyte
-	"MT_DRAGONBOMBER", // Dragonbomber
-	"MT_DRAGONWING", // Dragonbomber wing
-	"MT_DRAGONTAIL", // Dragonbomber tail segment
-	"MT_DRAGONMINE", // Dragonbomber mine
-
-	// Generic Boss Items
-	"MT_BOSSEXPLODE",
-	"MT_SONIC3KBOSSEXPLODE",
-	"MT_BOSSFLYPOINT",
-	"MT_EGGTRAP",
-	"MT_BOSS3WAYPOINT",
-	"MT_BOSS9GATHERPOINT",
-	"MT_BOSSJUNK",
-
-	// Boss 1
-	"MT_EGGMOBILE",
-	"MT_JETFUME1",
-	"MT_EGGMOBILE_BALL",
-	"MT_EGGMOBILE_TARGET",
-	"MT_EGGMOBILE_FIRE",
-
-	// Boss 2
-	"MT_EGGMOBILE2",
-	"MT_EGGMOBILE2_POGO",
-	"MT_GOOP",
-	"MT_GOOPTRAIL",
-
-	// Boss 3
-	"MT_EGGMOBILE3",
-	"MT_FAKEMOBILE",
-	"MT_SHOCKWAVE",
-
-	// Boss 4
-	"MT_EGGMOBILE4",
-	"MT_EGGMOBILE4_MACE",
-	"MT_JETFLAME",
-	"MT_EGGROBO1",
-	"MT_EGGROBO1JET",
-
-	// Boss 5
-	"MT_FANG",
-	"MT_BROKENROBOT",
-	"MT_VWREF",
-	"MT_VWREB",
-	"MT_PROJECTORLIGHT",
-	"MT_FBOMB",
-	"MT_TNTDUST", // also used by barrel
-	"MT_FSGNA",
-	"MT_FSGNB",
-	"MT_FANGWAYPOINT",
-
-	// Black Eggman (Boss 7)
-	"MT_BLACKEGGMAN",
-	"MT_BLACKEGGMAN_HELPER",
-	"MT_BLACKEGGMAN_GOOPFIRE",
-	"MT_BLACKEGGMAN_MISSILE",
-
-	// New Very-Last-Minute 2.1 Brak Eggman (Cy-Brak-demon)
-	"MT_CYBRAKDEMON",
-	"MT_CYBRAKDEMON_ELECTRIC_BARRIER",
-	"MT_CYBRAKDEMON_MISSILE",
-	"MT_CYBRAKDEMON_FLAMESHOT",
-	"MT_CYBRAKDEMON_FLAMEREST",
-	"MT_CYBRAKDEMON_TARGET_RETICULE",
-	"MT_CYBRAKDEMON_TARGET_DOT",
-	"MT_CYBRAKDEMON_NAPALM_BOMB_LARGE",
-	"MT_CYBRAKDEMON_NAPALM_BOMB_SMALL",
-	"MT_CYBRAKDEMON_NAPALM_FLAMES",
-	"MT_CYBRAKDEMON_VILE_EXPLOSION",
-
-	// Metal Sonic (Boss 9)
-	"MT_METALSONIC_RACE",
-	"MT_METALSONIC_BATTLE",
-	"MT_MSSHIELD_FRONT",
-	"MT_MSGATHER",
-
-	// Collectible Items
-	"MT_RING",
-	"MT_FLINGRING", // Lost ring
-	"MT_BLUESPHERE",  // Blue sphere for special stages
-	"MT_FLINGBLUESPHERE", // Lost blue sphere
-	"MT_BOMBSPHERE",
-	"MT_REDTEAMRING",  //Rings collectable by red team.
-	"MT_BLUETEAMRING", //Rings collectable by blue team.
-	"MT_TOKEN", // Special Stage token for special stage
-	"MT_REDFLAG", // Red CTF Flag
-	"MT_BLUEFLAG", // Blue CTF Flag
-	"MT_EMBLEM",
-	"MT_EMERALD1",
-	"MT_EMERALD2",
-	"MT_EMERALD3",
-	"MT_EMERALD4",
-	"MT_EMERALD5",
-	"MT_EMERALD6",
-	"MT_EMERALD7",
-	"MT_EMERHUNT", // Emerald Hunt
-	"MT_EMERALDSPAWN", // Emerald spawner w/ delay
-	"MT_FLINGEMERALD", // Lost emerald
-
-	// Springs and others
-	"MT_FAN",
-	"MT_STEAM",
-	"MT_BUMPER",
-	"MT_BALLOON",
-
-	"MT_YELLOWSPRING",
-	"MT_REDSPRING",
-	"MT_BLUESPRING",
-	"MT_YELLOWDIAG",
-	"MT_REDDIAG",
-	"MT_BLUEDIAG",
-	"MT_YELLOWHORIZ",
-	"MT_REDHORIZ",
-	"MT_BLUEHORIZ",
-
-	"MT_BOOSTERSEG",
-	"MT_BOOSTERROLLER",
-	"MT_YELLOWBOOSTER",
-	"MT_REDBOOSTER",
-
-	// Interactive Objects
-	"MT_BUBBLES", // Bubble source
-	"MT_SIGN", // Level end sign
-	"MT_SPIKEBALL", // Spike Ball
-	"MT_SPINFIRE",
-	"MT_SPIKE",
-	"MT_WALLSPIKE",
-	"MT_WALLSPIKEBASE",
-	"MT_STARPOST",
-	"MT_BIGMINE",
-	"MT_BLASTEXECUTOR",
-	"MT_CANNONLAUNCHER",
-
-	// Monitor miscellany
-	"MT_BOXSPARKLE",
-
-	// Monitor boxes -- regular
-	"MT_RING_BOX",
-	"MT_PITY_BOX",
-	"MT_ATTRACT_BOX",
-	"MT_FORCE_BOX",
-	"MT_ARMAGEDDON_BOX",
-	"MT_WHIRLWIND_BOX",
-	"MT_ELEMENTAL_BOX",
-	"MT_SNEAKERS_BOX",
-	"MT_INVULN_BOX",
-	"MT_1UP_BOX",
-	"MT_EGGMAN_BOX",
-	"MT_MIXUP_BOX",
-	"MT_MYSTERY_BOX",
-	"MT_GRAVITY_BOX",
-	"MT_RECYCLER_BOX",
-	"MT_SCORE1K_BOX",
-	"MT_SCORE10K_BOX",
-	"MT_FLAMEAURA_BOX",
-	"MT_BUBBLEWRAP_BOX",
-	"MT_THUNDERCOIN_BOX",
-
-	// Monitor boxes -- repeating (big) boxes
-	"MT_PITY_GOLDBOX",
-	"MT_ATTRACT_GOLDBOX",
-	"MT_FORCE_GOLDBOX",
-	"MT_ARMAGEDDON_GOLDBOX",
-	"MT_WHIRLWIND_GOLDBOX",
-	"MT_ELEMENTAL_GOLDBOX",
-	"MT_SNEAKERS_GOLDBOX",
-	"MT_INVULN_GOLDBOX",
-	"MT_EGGMAN_GOLDBOX",
-	"MT_GRAVITY_GOLDBOX",
-	"MT_FLAMEAURA_GOLDBOX",
-	"MT_BUBBLEWRAP_GOLDBOX",
-	"MT_THUNDERCOIN_GOLDBOX",
-
-	// Monitor boxes -- special
-	"MT_RING_REDBOX",
-	"MT_RING_BLUEBOX",
-
-	// Monitor icons
-	"MT_RING_ICON",
-	"MT_PITY_ICON",
-	"MT_ATTRACT_ICON",
-	"MT_FORCE_ICON",
-	"MT_ARMAGEDDON_ICON",
-	"MT_WHIRLWIND_ICON",
-	"MT_ELEMENTAL_ICON",
-	"MT_SNEAKERS_ICON",
-	"MT_INVULN_ICON",
-	"MT_1UP_ICON",
-	"MT_EGGMAN_ICON",
-	"MT_MIXUP_ICON",
-	"MT_GRAVITY_ICON",
-	"MT_RECYCLER_ICON",
-	"MT_SCORE1K_ICON",
-	"MT_SCORE10K_ICON",
-	"MT_FLAMEAURA_ICON",
-	"MT_BUBBLEWRAP_ICON",
-	"MT_THUNDERCOIN_ICON",
-
-	// Projectiles
-	"MT_ROCKET",
-	"MT_LASER",
-	"MT_TORPEDO",
-	"MT_TORPEDO2", // silent
-	"MT_ENERGYBALL",
-	"MT_MINE", // Skim/Jetty-Syn mine
-	"MT_JETTBULLET", // Jetty-Syn Bullet
-	"MT_TURRETLASER",
-	"MT_CANNONBALL", // Cannonball
-	"MT_CANNONBALLDECOR", // Decorative/still cannonball
-	"MT_ARROW", // Arrow
-	"MT_DEMONFIRE", // Glaregoyle fire
-
-	// The letter
-	"MT_LETTER",
-
-	// Tutorial Scenery
-	"MT_TUTORIALPLANT",
-	"MT_TUTORIALLEAF",
-	"MT_TUTORIALFLOWER",
-	"MT_TUTORIALFLOWERF",
-
-	// Greenflower Scenery
-	"MT_GFZFLOWER1",
-	"MT_GFZFLOWER2",
-	"MT_GFZFLOWER3",
-
-	"MT_BLUEBERRYBUSH",
-	"MT_BERRYBUSH",
-	"MT_BUSH",
-
-	// Trees (both GFZ and misc)
-	"MT_GFZTREE",
-	"MT_GFZBERRYTREE",
-	"MT_GFZCHERRYTREE",
-	"MT_CHECKERTREE",
-	"MT_CHECKERSUNSETTREE",
-	"MT_FHZTREE", // Frozen Hillside
-	"MT_FHZPINKTREE",
-	"MT_POLYGONTREE",
-	"MT_BUSHTREE",
-	"MT_BUSHREDTREE",
-	"MT_SPRINGTREE",
-
-	// Techno Hill Scenery
-	"MT_THZFLOWER1",
-	"MT_THZFLOWER2",
-	"MT_THZFLOWER3",
-	"MT_THZTREE", // Steam whistle tree/bush
-	"MT_THZTREEBRANCH", // branch of said tree
-	"MT_ALARM",
-
-	// Deep Sea Scenery
-	"MT_GARGOYLE", // Deep Sea Gargoyle
-	"MT_BIGGARGOYLE", // Deep Sea Gargoyle (Big)
-	"MT_SEAWEED", // DSZ Seaweed
-	"MT_WATERDRIP", // Dripping Water source
-	"MT_WATERDROP", // Water drop from dripping water
-	"MT_CORAL1", // Coral
-	"MT_CORAL2",
-	"MT_CORAL3",
-	"MT_CORAL4",
-	"MT_CORAL5",
-	"MT_BLUECRYSTAL", // Blue Crystal
-	"MT_KELP", // Kelp
-	"MT_ANIMALGAETOP", // Animated algae top
-	"MT_ANIMALGAESEG", // Animated algae segment
-	"MT_DSZSTALAGMITE", // Deep Sea 1 Stalagmite
-	"MT_DSZ2STALAGMITE", // Deep Sea 2 Stalagmite
-	"MT_LIGHTBEAM", // DSZ Light beam
-
-	// Castle Eggman Scenery
-	"MT_CHAIN", // CEZ Chain
-	"MT_FLAME", // Flame (has corona)
-	"MT_FLAMEPARTICLE",
-	"MT_EGGSTATUE", // Eggman Statue
-	"MT_MACEPOINT", // Mace rotation point
-	"MT_CHAINMACEPOINT", // Combination of chains and maces point
-	"MT_SPRINGBALLPOINT", // Spring ball point
-	"MT_CHAINPOINT", // Mace chain
-	"MT_HIDDEN_SLING", // Spin mace chain (activatable)
-	"MT_FIREBARPOINT", // Firebar
-	"MT_CUSTOMMACEPOINT", // Custom mace
-	"MT_SMALLMACECHAIN", // Small Mace Chain
-	"MT_BIGMACECHAIN", // Big Mace Chain
-	"MT_SMALLMACE", // Small Mace
-	"MT_BIGMACE", // Big Mace
-	"MT_SMALLGRABCHAIN", // Small Grab Chain
-	"MT_BIGGRABCHAIN", // Big Grab Chain
-	"MT_BLUESPRINGBALL", // Blue spring on a ball
-	"MT_YELLOWSPRINGBALL", // Yellow spring on a ball
-	"MT_REDSPRINGBALL", // Red spring on a ball
-	"MT_SMALLFIREBAR", // Small Firebar
-	"MT_BIGFIREBAR", // Big Firebar
-	"MT_CEZFLOWER", // Flower
-	"MT_CEZPOLE1", // Pole (with red banner)
-	"MT_CEZPOLE2", // Pole (with blue banner)
-	"MT_CEZBANNER1", // Banner (red)
-	"MT_CEZBANNER2", // Banner (blue)
-	"MT_PINETREE", // Pine Tree
-	"MT_CEZBUSH1", // Bush 1
-	"MT_CEZBUSH2", // Bush 2
-	"MT_CANDLE", // Candle
-	"MT_CANDLEPRICKET", // Candle pricket
-	"MT_FLAMEHOLDER", // Flame holder
-	"MT_FIRETORCH", // Fire torch
-	"MT_WAVINGFLAG1", // Waving flag (red)
-	"MT_WAVINGFLAG2", // Waving flag (blue)
-	"MT_WAVINGFLAGSEG1", // Waving flag segment (red)
-	"MT_WAVINGFLAGSEG2", // Waving flag segment (blue)
-	"MT_CRAWLASTATUE", // Crawla statue
-	"MT_FACESTABBERSTATUE", // Facestabber statue
-	"MT_SUSPICIOUSFACESTABBERSTATUE", // :eggthinking:
-	"MT_BRAMBLES", // Brambles
-
-	// Arid Canyon Scenery
-	"MT_BIGTUMBLEWEED",
-	"MT_LITTLETUMBLEWEED",
-	"MT_CACTI1", // Tiny Red Flower Cactus
-	"MT_CACTI2", // Small Red Flower Cactus
-	"MT_CACTI3", // Tiny Blue Flower Cactus
-	"MT_CACTI4", // Small Blue Flower Cactus
-	"MT_CACTI5", // Prickly Pear
-	"MT_CACTI6", // Barrel Cactus
-	"MT_CACTI7", // Tall Barrel Cactus
-	"MT_CACTI8", // Armed Cactus
-	"MT_CACTI9", // Ball Cactus
-	"MT_CACTI10", // Tiny Cactus
-	"MT_CACTI11", // Small Cactus
-	"MT_CACTITINYSEG", // Tiny Cactus Segment
-	"MT_CACTISMALLSEG", // Small Cactus Segment
-	"MT_ARIDSIGN_CAUTION", // Caution Sign
-	"MT_ARIDSIGN_CACTI", // Cacti Sign
-	"MT_ARIDSIGN_SHARPTURN", // Sharp Turn Sign
-	"MT_OILLAMP",
-	"MT_TNTBARREL",
-	"MT_PROXIMITYTNT",
-	"MT_DUSTDEVIL",
-	"MT_DUSTLAYER",
-	"MT_ARIDDUST",
-	"MT_MINECART",
-	"MT_MINECARTSEG",
-	"MT_MINECARTSPAWNER",
-	"MT_MINECARTEND",
-	"MT_MINECARTENDSOLID",
-	"MT_MINECARTSIDEMARK",
-	"MT_MINECARTSPARK",
-	"MT_SALOONDOOR",
-	"MT_SALOONDOORCENTER",
-	"MT_TRAINCAMEOSPAWNER",
-	"MT_TRAINSEG",
-	"MT_TRAINDUSTSPAWNER",
-	"MT_TRAINSTEAMSPAWNER",
-	"MT_MINECARTSWITCHPOINT",
-
-	// Red Volcano Scenery
-	"MT_FLAMEJET",
-	"MT_VERTICALFLAMEJET",
-	"MT_FLAMEJETFLAME",
-
-	"MT_FJSPINAXISA", // Counter-clockwise
-	"MT_FJSPINAXISB", // Clockwise
-
-	"MT_FLAMEJETFLAMEB", // Blade's flame
-
-	"MT_LAVAFALL",
-	"MT_LAVAFALL_LAVA",
-	"MT_LAVAFALLROCK",
-
-	"MT_ROLLOUTSPAWN",
-	"MT_ROLLOUTROCK",
-
-	"MT_BIGFERNLEAF",
-	"MT_BIGFERN",
-	"MT_JUNGLEPALM",
-	"MT_TORCHFLOWER",
-	"MT_WALLVINE_LONG",
-	"MT_WALLVINE_SHORT",
-
-	// Dark City Scenery
-
-	// Egg Rock Scenery
-
-	// Azure Temple Scenery
-	"MT_GLAREGOYLE",
-	"MT_GLAREGOYLEUP",
-	"MT_GLAREGOYLEDOWN",
-	"MT_GLAREGOYLELONG",
-	"MT_TARGET", // AKA Red Crystal
-	"MT_GREENFLAME",
-	"MT_BLUEGARGOYLE",
-
-	// Stalagmites
-	"MT_STALAGMITE0",
-	"MT_STALAGMITE1",
-	"MT_STALAGMITE2",
-	"MT_STALAGMITE3",
-	"MT_STALAGMITE4",
-	"MT_STALAGMITE5",
-	"MT_STALAGMITE6",
-	"MT_STALAGMITE7",
-	"MT_STALAGMITE8",
-	"MT_STALAGMITE9",
-
-	// Christmas Scenery
-	"MT_XMASPOLE",
-	"MT_CANDYCANE",
-	"MT_SNOWMAN",    // normal
-	"MT_SNOWMANHAT", // with hat + scarf
-	"MT_LAMPPOST1",  // normal
-	"MT_LAMPPOST2",  // with snow
-	"MT_HANGSTAR",
-	"MT_MISTLETOE",
-	// Xmas GFZ bushes
-	"MT_XMASBLUEBERRYBUSH",
-	"MT_XMASBERRYBUSH",
-	"MT_XMASBUSH",
-	// FHZ
-	"MT_FHZICE1",
-	"MT_FHZICE2",
-	"MT_ROSY",
-	"MT_CDLHRT",
-
-	// Halloween Scenery
-	// Pumpkins
-	"MT_JACKO1",
-	"MT_JACKO2",
-	"MT_JACKO3",
-	// Dr Seuss Trees
-	"MT_HHZTREE_TOP",
-	"MT_HHZTREE_PART",
-	// Misc
-	"MT_HHZSHROOM",
-	"MT_HHZGRASS",
-	"MT_HHZTENTACLE1",
-	"MT_HHZTENTACLE2",
-	"MT_HHZSTALAGMITE_TALL",
-	"MT_HHZSTALAGMITE_SHORT",
-
-	// Botanic Serenity scenery
-	"MT_BSZTALLFLOWER_RED",
-	"MT_BSZTALLFLOWER_PURPLE",
-	"MT_BSZTALLFLOWER_BLUE",
-	"MT_BSZTALLFLOWER_CYAN",
-	"MT_BSZTALLFLOWER_YELLOW",
-	"MT_BSZTALLFLOWER_ORANGE",
-	"MT_BSZFLOWER_RED",
-	"MT_BSZFLOWER_PURPLE",
-	"MT_BSZFLOWER_BLUE",
-	"MT_BSZFLOWER_CYAN",
-	"MT_BSZFLOWER_YELLOW",
-	"MT_BSZFLOWER_ORANGE",
-	"MT_BSZSHORTFLOWER_RED",
-	"MT_BSZSHORTFLOWER_PURPLE",
-	"MT_BSZSHORTFLOWER_BLUE",
-	"MT_BSZSHORTFLOWER_CYAN",
-	"MT_BSZSHORTFLOWER_YELLOW",
-	"MT_BSZSHORTFLOWER_ORANGE",
-	"MT_BSZTULIP_RED",
-	"MT_BSZTULIP_PURPLE",
-	"MT_BSZTULIP_BLUE",
-	"MT_BSZTULIP_CYAN",
-	"MT_BSZTULIP_YELLOW",
-	"MT_BSZTULIP_ORANGE",
-	"MT_BSZCLUSTER_RED",
-	"MT_BSZCLUSTER_PURPLE",
-	"MT_BSZCLUSTER_BLUE",
-	"MT_BSZCLUSTER_CYAN",
-	"MT_BSZCLUSTER_YELLOW",
-	"MT_BSZCLUSTER_ORANGE",
-	"MT_BSZBUSH_RED",
-	"MT_BSZBUSH_PURPLE",
-	"MT_BSZBUSH_BLUE",
-	"MT_BSZBUSH_CYAN",
-	"MT_BSZBUSH_YELLOW",
-	"MT_BSZBUSH_ORANGE",
-	"MT_BSZVINE_RED",
-	"MT_BSZVINE_PURPLE",
-	"MT_BSZVINE_BLUE",
-	"MT_BSZVINE_CYAN",
-	"MT_BSZVINE_YELLOW",
-	"MT_BSZVINE_ORANGE",
-	"MT_BSZSHRUB",
-	"MT_BSZCLOVER",
-	"MT_BIG_PALMTREE_TRUNK",
-	"MT_BIG_PALMTREE_TOP",
-	"MT_PALMTREE_TRUNK",
-	"MT_PALMTREE_TOP",
-
-	// Misc scenery
-	"MT_DBALL",
-	"MT_EGGSTATUE2",
-
-	// Powerup Indicators
-	"MT_ELEMENTAL_ORB", // Elemental shield mobj
-	"MT_ATTRACT_ORB", // Attract shield mobj
-	"MT_FORCE_ORB", // Force shield mobj
-	"MT_ARMAGEDDON_ORB", // Armageddon shield mobj
-	"MT_WHIRLWIND_ORB", // Whirlwind shield mobj
-	"MT_PITY_ORB", // Pity shield mobj
-	"MT_FLAMEAURA_ORB", // Flame shield mobj
-	"MT_BUBBLEWRAP_ORB", // Bubble shield mobj
-	"MT_THUNDERCOIN_ORB", // Thunder shield mobj
-	"MT_THUNDERCOIN_SPARK", // Thunder spark
-	"MT_IVSP", // Invincibility sparkles
-	"MT_SUPERSPARK", // Super Sonic Spark
-
-	// Flickies
-	"MT_FLICKY_01", // Bluebird
-	"MT_FLICKY_01_CENTER",
-	"MT_FLICKY_02", // Rabbit
-	"MT_FLICKY_02_CENTER",
-	"MT_FLICKY_03", // Chicken
-	"MT_FLICKY_03_CENTER",
-	"MT_FLICKY_04", // Seal
-	"MT_FLICKY_04_CENTER",
-	"MT_FLICKY_05", // Pig
-	"MT_FLICKY_05_CENTER",
-	"MT_FLICKY_06", // Chipmunk
-	"MT_FLICKY_06_CENTER",
-	"MT_FLICKY_07", // Penguin
-	"MT_FLICKY_07_CENTER",
-	"MT_FLICKY_08", // Fish
-	"MT_FLICKY_08_CENTER",
-	"MT_FLICKY_09", // Ram
-	"MT_FLICKY_09_CENTER",
-	"MT_FLICKY_10", // Puffin
-	"MT_FLICKY_10_CENTER",
-	"MT_FLICKY_11", // Cow
-	"MT_FLICKY_11_CENTER",
-	"MT_FLICKY_12", // Rat
-	"MT_FLICKY_12_CENTER",
-	"MT_FLICKY_13", // Bear
-	"MT_FLICKY_13_CENTER",
-	"MT_FLICKY_14", // Dove
-	"MT_FLICKY_14_CENTER",
-	"MT_FLICKY_15", // Cat
-	"MT_FLICKY_15_CENTER",
-	"MT_FLICKY_16", // Canary
-	"MT_FLICKY_16_CENTER",
-	"MT_SECRETFLICKY_01", // Spider
-	"MT_SECRETFLICKY_01_CENTER",
-	"MT_SECRETFLICKY_02", // Bat
-	"MT_SECRETFLICKY_02_CENTER",
-	"MT_SEED",
-
-	// Environmental Effects
-	"MT_RAIN", // Rain
-	"MT_SNOWFLAKE", // Snowflake
-	"MT_SPLISH", // Water splish!
-	"MT_LAVASPLISH", // Lava splish!
-	"MT_SMOKE",
-	"MT_SMALLBUBBLE", // small bubble
-	"MT_MEDIUMBUBBLE", // medium bubble
-	"MT_EXTRALARGEBUBBLE", // extra large bubble
-	"MT_WATERZAP",
-	"MT_SPINDUST", // Spindash dust
-	"MT_TFOG",
-	"MT_PARTICLE",
-	"MT_PARTICLEGEN", // For fans, etc.
-
-	// Game Indicators
-	"MT_SCORE", // score logo
-	"MT_DROWNNUMBERS", // Drowning Timer
-	"MT_GOTEMERALD", // Chaos Emerald (intangible)
-	"MT_LOCKON", // Target
-	"MT_LOCKONINF", // In-level Target
-	"MT_TAG", // Tag Sign
-	"MT_GOTFLAG", // Got Flag sign
-	"MT_FINISHFLAG", // Finish flag
-
-	// Ambient Sounds
-	"MT_AMBIENT",
-
-	"MT_CORK",
-	"MT_LHRT",
-
-	// Ring Weapons
-	"MT_REDRING",
-	"MT_BOUNCERING",
-	"MT_RAILRING",
-	"MT_INFINITYRING",
-	"MT_AUTOMATICRING",
-	"MT_EXPLOSIONRING",
-	"MT_SCATTERRING",
-	"MT_GRENADERING",
-
-	"MT_BOUNCEPICKUP",
-	"MT_RAILPICKUP",
-	"MT_AUTOPICKUP",
-	"MT_EXPLODEPICKUP",
-	"MT_SCATTERPICKUP",
-	"MT_GRENADEPICKUP",
-
-	"MT_THROWNBOUNCE",
-	"MT_THROWNINFINITY",
-	"MT_THROWNAUTOMATIC",
-	"MT_THROWNSCATTER",
-	"MT_THROWNEXPLOSION",
-	"MT_THROWNGRENADE",
-
-	// Mario-specific stuff
-	"MT_COIN",
-	"MT_FLINGCOIN",
-	"MT_GOOMBA",
-	"MT_BLUEGOOMBA",
-	"MT_FIREFLOWER",
-	"MT_FIREBALL",
-	"MT_FIREBALLTRAIL",
-	"MT_SHELL",
-	"MT_PUMA",
-	"MT_PUMATRAIL",
-	"MT_HAMMER",
-	"MT_KOOPA",
-	"MT_KOOPAFLAME",
-	"MT_AXE",
-	"MT_MARIOBUSH1",
-	"MT_MARIOBUSH2",
-	"MT_TOAD",
-
-	// NiGHTS Stuff
-	"MT_AXIS",
-	"MT_AXISTRANSFER",
-	"MT_AXISTRANSFERLINE",
-	"MT_NIGHTSDRONE",
-	"MT_NIGHTSDRONE_MAN",
-	"MT_NIGHTSDRONE_SPARKLING",
-	"MT_NIGHTSDRONE_GOAL",
-	"MT_NIGHTSPARKLE",
-	"MT_NIGHTSLOOPHELPER",
-	"MT_NIGHTSBUMPER", // NiGHTS Bumper
-	"MT_HOOP",
-	"MT_HOOPCOLLIDE", // Collision detection for NiGHTS hoops
-	"MT_HOOPCENTER", // Center of a hoop
-	"MT_NIGHTSCORE",
-	"MT_NIGHTSCHIP", // NiGHTS Chip
-	"MT_FLINGNIGHTSCHIP", // Lost NiGHTS Chip
-	"MT_NIGHTSSTAR", // NiGHTS Star
-	"MT_FLINGNIGHTSSTAR", // Lost NiGHTS Star
-	"MT_NIGHTSSUPERLOOP",
-	"MT_NIGHTSDRILLREFILL",
-	"MT_NIGHTSHELPER",
-	"MT_NIGHTSEXTRATIME",
-	"MT_NIGHTSLINKFREEZE",
-	"MT_EGGCAPSULE",
-	"MT_IDEYAANCHOR",
-	"MT_NIGHTOPIANHELPER", // the actual helper object that orbits you
-	"MT_PIAN", // decorative singing friend
-	"MT_SHLEEP", // almost-decorative sleeping enemy
-
-	// Secret badniks and hazards, shhhh
-	"MT_PENGUINATOR",
-	"MT_POPHAT",
-	"MT_POPSHOT",
-	"MT_POPSHOT_TRAIL",
-
-	"MT_HIVEELEMENTAL",
-	"MT_BUMBLEBORE",
-
-	"MT_BUGGLE",
-
-	"MT_SMASHINGSPIKEBALL",
-	"MT_CACOLANTERN",
-	"MT_CACOSHARD",
-	"MT_CACOFIRE",
-	"MT_SPINBOBERT",
-	"MT_SPINBOBERT_FIRE1",
-	"MT_SPINBOBERT_FIRE2",
-	"MT_HANGSTER",
-
-	// Utility Objects
-	"MT_TELEPORTMAN",
-	"MT_ALTVIEWMAN",
-	"MT_CRUMBLEOBJ", // Sound generator for crumbling platform
-	"MT_TUBEWAYPOINT",
-	"MT_PUSH",
-	"MT_GHOST",
-	"MT_OVERLAY",
-	"MT_ANGLEMAN",
-	"MT_POLYANCHOR",
-	"MT_POLYSPAWN",
-
-	// Portal objects
-	"MT_SKYBOX",
-
-	// Debris
-	"MT_SPARK", //spark
-	"MT_EXPLODE", // Robot Explosion
-	"MT_UWEXPLODE", // Underwater Explosion
-	"MT_DUST",
-	"MT_ROCKSPAWNER",
-	"MT_FALLINGROCK",
-	"MT_ROCKCRUMBLE1",
-	"MT_ROCKCRUMBLE2",
-	"MT_ROCKCRUMBLE3",
-	"MT_ROCKCRUMBLE4",
-	"MT_ROCKCRUMBLE5",
-	"MT_ROCKCRUMBLE6",
-	"MT_ROCKCRUMBLE7",
-	"MT_ROCKCRUMBLE8",
-	"MT_ROCKCRUMBLE9",
-	"MT_ROCKCRUMBLE10",
-	"MT_ROCKCRUMBLE11",
-	"MT_ROCKCRUMBLE12",
-	"MT_ROCKCRUMBLE13",
-	"MT_ROCKCRUMBLE14",
-	"MT_ROCKCRUMBLE15",
-	"MT_ROCKCRUMBLE16",
-
-	// Level debris
-	"MT_GFZDEBRIS",
-	"MT_BRICKDEBRIS",
-	"MT_WOODDEBRIS",
-	"MT_REDBRICKDEBRIS",
-	"MT_BLUEBRICKDEBRIS",
-	"MT_YELLOWBRICKDEBRIS",
-
-	"MT_NAMECHECK",
-	"MT_RAY",
-};
-
 const char *const MOBJFLAG_LIST[] = {
 	"SPECIAL",
 	"SOLID",
@@ -5811,13 +1826,9 @@ struct int_const_s const INT_CONST[] = {
 void DEH_TableCheck(void)
 {
 #if defined(_DEBUG) || defined(PARANOIA)
-	const size_t dehstates = sizeof(STATE_LIST)/sizeof(const char*);
 	const size_t dehpowers = sizeof(POWERS_LIST)/sizeof(const char*);
 	const size_t dehcolors = sizeof(COLOR_ENUMS)/sizeof(const char*);
 
-	if (dehstates != S_FIRSTFREESLOT)
-		I_Error("You forgot to update the Dehacked states list, you dolt!\n(%d states defined, versus %s in the Dehacked list)\n", S_FIRSTFREESLOT, sizeu1(dehstates));
-
 	if (dehpowers != NUMPOWERS)
 		I_Error("You forgot to update the Dehacked powers list, you dolt!\n(%d powers defined, versus %s in the Dehacked list)\n", NUMPOWERS, sizeu1(dehpowers));
 
diff --git a/src/deh_tables.h b/src/deh_tables.h
index 61592e47ef9e991e66cfbb86bd66d767129cb709..4b4bc6ecdb90b3d7a49f79cc4305fe579789d7dd 100644
--- a/src/deh_tables.h
+++ b/src/deh_tables.h
@@ -20,12 +20,10 @@
 
 // Free slot names
 // The crazy word-reading stuff uses these.
-extern char *FREE_STATES[NUMSTATEFREESLOTS];
 extern char *FREE_SKINCOLORS[NUMCOLORFREESLOTS];
 extern bitarray_t used_spr[BIT_ARRAY_SIZE(NUMSPRITEFREESLOTS)]; // Sprite freeslots in use
 
 #define initfreeslots() {\
-	memset(FREE_STATES, 0, sizeof(FREE_STATES));\
 	memset(FREE_SKINCOLORS, 0, sizeof(FREE_SKINCOLORS));\
 	memset(used_spr, 0, sizeof(used_spr));\
 	memset(actionsoverridden, LUA_REFNIL, sizeof(actionsoverridden));\
@@ -55,8 +53,6 @@ struct int_const_s {
 extern const char NIGHTSGRADE_LIST[];
 extern struct flickytypes_s FLICKYTYPES[];
 extern actionpointer_t actionpointers[]; // Array mapping action names to action functions.
-extern const char *const STATE_LIST[];
-extern const char *const MOBJTYPE_LIST[];
 extern const char *const MOBJFLAG_LIST[];
 extern const char *const MOBJFLAG2_LIST[]; // \tMF2_(\S+).*// (.+) --> \t"\1", // \2
 extern const char *const MOBJEFLAG_LIST[];
diff --git a/src/dehacked.c b/src/dehacked.c
index 253c3c6861e1eb5327aa518b05522e71b32f9cdd..881bcee439cdaa2914a8c79671b37f34f86051f1 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -305,7 +305,7 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile)
 						readthing(f, i);
 					else
 					{
-						deh_warning("Thing %d out of range (1 - %zu)", i, nummobjinfo-1);
+						deh_warning("Thing %d out of range (1 - %d)", i, nummobjinfo-1);
 						ignorelines(f);
 					}
 				}
@@ -441,11 +441,11 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile)
 				{
 					if (i == 0 && word2[0] != '0') // If word2 isn't a number
 						i = get_state(word2); // find a state by name
-					if (i < NUMSTATES && i >= 0)
+					if ((UINT32)i < numstates && i >= 0)
 						readframe(f, i);
 					else
 					{
-						deh_warning("Frame %d out of range (0 - %d)", i, NUMSTATES-1);
+						deh_warning("Frame %d out of range (0 - %d)", i, numstates-1);
 						ignorelines(f);
 					}
 				}
diff --git a/src/f_finale.c b/src/f_finale.c
index 9ff50147e0bb36ae17d3c23672b82d6528f54871..99d5082c20700180018606e04269206dbf6eb2d1 100644
--- a/src/f_finale.c
+++ b/src/f_finale.c
@@ -4578,9 +4578,9 @@ void F_TextPromptDrawer(void)
 		players[j].powers[pw_nocontrol] = 1;\
 		if (players[j].mo)\
 		{\
-			if (players[j].mo->state == states+S_PLAY_STND && players[j].mo->tics != -1)\
+			if (players[j].mo->state->num == S_PLAY_STND && players[j].mo->tics != -1)\
 				players[j].mo->tics++;\
-			else if (players[j].mo->state == states+S_PLAY_WAIT)\
+			else if (players[j].mo->state->num == S_PLAY_WAIT)\
 				P_SetMobjState(players[j].mo, S_PLAY_STND);\
 		}\
 	}
diff --git a/src/g_demo.c b/src/g_demo.c
index b60aadacc569657869fad932104149b4506dab58..21865c3c51368020f9c17cecd231550986e4a183 100644
--- a/src/g_demo.c
+++ b/src/g_demo.c
@@ -810,8 +810,8 @@ void G_GhostTicker(void)
 						mobj = P_SpawnMobjFromMobj(g->mo, 0, 0, -FixedDiv(FixedMul(g->mo->info->height, g->mo->scale) - g->mo->height,3*FRACUNIT), MT_THOK);
 						if (!P_MobjWasRemoved(mobj))
 						{
-							mobj->sprite = states[mobjinfo[type]->spawnstate].sprite;
-							mobj->frame = (states[mobjinfo[type]->spawnstate].frame & FF_FRAMEMASK) | tr_trans60<<FF_TRANSSHIFT;
+							mobj->sprite = states[mobjinfo[type]->spawnstate]->sprite;
+							mobj->frame = (states[mobjinfo[type]->spawnstate]->frame & FF_FRAMEMASK) | tr_trans60<<FF_TRANSSHIFT;
 							mobj->color = g->mo->color;
 							mobj->skin = g->mo->skin;
 							P_SetScale(mobj, g->mo->scale, true);
@@ -1116,8 +1116,8 @@ void G_ReadMetalTic(mobj_t *metal)
 					mobj = P_SpawnMobjFromMobj(metal, 0, 0, -FixedDiv(FixedMul(metal->info->height, metal->scale) - metal->height,3*FRACUNIT), MT_THOK);
 					if (!P_MobjWasRemoved(mobj))
 					{
-						mobj->sprite = states[mobjinfo[type]->spawnstate].sprite;
-						mobj->frame = states[mobjinfo[type]->spawnstate].frame;
+						mobj->sprite = states[mobjinfo[type]->spawnstate]->sprite;
+						mobj->frame = states[mobjinfo[type]->spawnstate]->frame;
 						mobj->angle = metal->angle;
 						mobj->color = metal->color;
 						mobj->skin = metal->skin;
@@ -2607,7 +2607,7 @@ void G_AddGhost(char *defdemoname)
 		}
 	gh->oldmo.color = gh->mo->color;
 
-	gh->mo->state = &states[S_PLAY_STND];
+	gh->mo->state = states[S_PLAY_STND];
 	gh->mo->sprite = gh->mo->state->sprite;
 	gh->mo->sprite2 = P_GetStateSprite2(gh->mo->state);
 	gh->mo->frame = (gh->mo->state->frame & ~FF_FRAMEMASK) | P_GetSprite2StateFrame(gh->mo->state);
diff --git a/src/hardware/hw_light.c b/src/hardware/hw_light.c
index e7769edbd8da2dbaa38debfabae9a34f25d121ee..8dac9bb4218293a5f55bcb97e436ec05b89112d6 100644
--- a/src/hardware/hw_light.c
+++ b/src/hardware/hw_light.c
@@ -980,8 +980,8 @@ void HWR_DoCoronasLighting(FOutVector *outVerts, gl_vissprite_t *spr)
 
 	//CONS_Debug(DBG_RENDER, "sprite (type): %d (%s)\n", spr->type, sprnames[spr->type]);
 	p_lspr = t_lspr[spr->mobj->sprite];
-	if ((spr->mobj->state>=&states[S_EXPLODE1] && spr->mobj->state<=&states[S_EXPLODE3])
-	 || (spr->mobj->state>=&states[S_FATSHOTX1] && spr->mobj->state<=&states[S_FATSHOTX3]))
+	if ((spr->mobj->state->num>=S_EXPLODE1 && spr->mobj->state->num<=S_EXPLODE3)
+	 || (spr->mobj->state->num>=S_FATSHOTX1 && spr->mobj->state->num<=S_FATSHOTX3))
 	{
 		p_lspr = &lspr[ROCKETEXP_L];
 	}
diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index f533082f76e6db8af21e90c6dcf4f98949f7f532..518797ca5c3ae34f4b83200f3dcdf85400d719fe 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -4381,8 +4381,8 @@ static void HWR_ProjectSprite(mobj_t *thing)
 	{
 		CONS_Alert(CONS_ERROR, M_GetText("HWR_ProjectSprite: invalid sprite frame %s/%s for %s\n"),
 			sizeu1(rot), sizeu2(sprdef->numframes), sprnames[thing->sprite]);
-		thing->sprite = states[S_UNKNOWN].sprite;
-		thing->frame = states[S_UNKNOWN].frame;
+		thing->sprite = states[S_UNKNOWN]->sprite;
+		thing->frame = states[S_UNKNOWN]->frame;
 		sprdef = &sprites[thing->sprite];
 #ifdef ROTSPRITE
 		sprinfo = &spriteinfo[thing->sprite];
diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c
index 0bb8de851bd2ad1b1891b92322943df83d349539..456bbc173cfad66699b072bb71d48a9641177e86 100644
--- a/src/hardware/hw_md2.c
+++ b/src/hardware/hw_md2.c
@@ -1053,7 +1053,7 @@ static void HWR_GetBlendedTexture(patch_t *patch, patch_t *blendpatch, INT32 ski
 static boolean HWR_AllowModel(mobj_t *mobj)
 {
 	// Signpost overlay. Not needed.
-	if (mobj->sprite2 == SPR2_SIGN || mobj->state-states == S_PLAY_SIGN)
+	if (mobj->sprite2 == SPR2_SIGN || mobj->state->num == S_PLAY_SIGN)
 		return false;
 
 	// Otherwise, render the model.
@@ -1470,7 +1470,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
 
 			if (spr2frames)
 			{
-				UINT16 next_spr2 = P_GetStateSprite2(&states[spr->mobj->state->nextstate]);
+				UINT16 next_spr2 = P_GetStateSprite2(states[spr->mobj->state->nextstate]);
 
 				// Add or remove SPR2F_SUPER based on certain conditions
 				next_spr2 = P_ApplySuperFlagToSprite2(next_spr2, spr->mobj);
@@ -1478,7 +1478,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
 				if (HWR_CanInterpolateSprite2(spr2frames)
 					&& (spr->mobj->frame & FF_ANIMATE
 					|| (spr->mobj->state->nextstate != S_NULL
-					&& states[spr->mobj->state->nextstate].sprite == SPR_PLAY
+					&& states[spr->mobj->state->nextstate]->sprite == SPR_PLAY
 					&& ((P_GetSkinSprite2(spr->mobj->skin, next_spr2, spr->mobj->player) == spr->mobj->sprite2)))))
 				{
 					nextFrame = (spr->mobj->frame & FF_FRAMEMASK) + 1;
@@ -1506,9 +1506,9 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
 				}
 				else
 				{
-					if (spr->mobj->state->nextstate != S_NULL && states[spr->mobj->state->nextstate].sprite != SPR_NULL
-					&& !(spr->mobj->player && (spr->mobj->state->nextstate == S_PLAY_WAIT) && spr->mobj->state == &states[S_PLAY_STND]))
-						nextFrame = (states[spr->mobj->state->nextstate].frame & FF_FRAMEMASK) % mod;
+					if (spr->mobj->state->nextstate != S_NULL && states[spr->mobj->state->nextstate]->sprite != SPR_NULL
+					&& !(spr->mobj->player && (spr->mobj->state->nextstate == S_PLAY_WAIT) && spr->mobj->state == states[S_PLAY_STND]))
+						nextFrame = (states[spr->mobj->state->nextstate]->frame & FF_FRAMEMASK) % mod;
 				}
 			}
 		}
diff --git a/src/hu_stuff.c b/src/hu_stuff.c
index 4e2f3d492974c0027c3b343a075018dc29682d33..91a37cb975485cda199e71cf1e56b0f44fa5277e 100644
--- a/src/hu_stuff.c
+++ b/src/hu_stuff.c
@@ -1800,7 +1800,7 @@ void HU_Drawer(void)
 //                   IN-LEVEL MULTIPLAYER RANKINGS
 //======================================================================
 
-#define supercheckdef (!(players[tab[i].num].charflags & SF_NOSUPERSPRITES) && ((players[tab[i].num].powers[pw_super] && players[tab[i].num].mo && (players[tab[i].num].mo->state < &states[S_PLAY_SUPER_TRANS1] || players[tab[i].num].mo->state >= &states[S_PLAY_SUPER_TRANS6])) || (players[tab[i].num].powers[pw_carry] == CR_NIGHTSMODE && skins[players[tab[i].num].skin]->flags & SF_SUPER)))
+#define supercheckdef (!(players[tab[i].num].charflags & SF_NOSUPERSPRITES) && ((players[tab[i].num].powers[pw_super] && players[tab[i].num].mo && (players[tab[i].num].mo->state->num < S_PLAY_SUPER_TRANS1 || players[tab[i].num].mo->state->num >= S_PLAY_SUPER_TRANS6)) || (players[tab[i].num].powers[pw_carry] == CR_NIGHTSMODE && skins[players[tab[i].num].skin]->flags & SF_SUPER)))
 #define greycheckdef (players[tab[i].num].spectator || players[tab[i].num].playerstate == PST_DEAD || (G_IsSpecialStage(gamemap) && players[tab[i].num].exiting))
 
 //
diff --git a/src/info.c b/src/info.c
index 95b7c94858790ef67633ed087a6cfc16872120d8..a7739820180003d875520e35fa87242781b12c8b 100644
--- a/src/info.c
+++ b/src/info.c
@@ -683,7 +683,7 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = {
 };
 
 // Doesn't work with g++, needs actionf_p1 (don't modify this comment)
-state_t states[NUMSTATES] =
+static const state_t startstates[] =
 {
 	// frame is masked through FF_FRAMEMASK
 	// FF_ANIMATE makes simple state animations (var1 #frames, var2 tic delay)
@@ -692,3312 +692,3315 @@ state_t states[NUMSTATES] =
 	// (or tr_trans10<<FF_TRANSSHIFT if you want to make it hard on yourself)
 
 	// Keep this comment directly above S_NULL.
-	{SPR_NULL, 0,  1, {NULL}, 0, 0, S_NULL, 0}, // S_NULL
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_UNKNOWN
-	{SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_INVISIBLE
-
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 0, 0, S_NULL, 0}, // S_SPAWNSTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 1, 0, S_NULL, 0}, // S_SEESTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 2, 0, S_NULL, 0}, // S_MELEESTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 3, 0, S_NULL, 0}, // S_MISSILESTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 4, 0, S_NULL, 0}, // S_DEATHSTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 5, 0, S_NULL, 0}, // S_XDEATHSTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 6, 0, S_NULL, 0}, // S_RAISESTATE
+	{"S_NULL", 0, SPR_NULL, 0,  1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_UNKNOWN", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_INVISIBLE", 0, SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_SPAWNSTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 0, 0, S_NULL, 0},
+	{"S_SEESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 1, 0, S_NULL, 0},
+	{"S_MELEESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 2, 0, S_NULL, 0},
+	{"S_MISSILESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 3, 0, S_NULL, 0},
+	{"S_DEATHSTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 4, 0, S_NULL, 0},
+	{"S_XDEATHSTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 5, 0, S_NULL, 0},
+	{"S_RAISESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 6, 0, S_NULL, 0},
 
 	// Thok
-	{SPR_THOK, FF_TRANS50, 8, {NULL}, 0, 0, S_NULL, 0}, // S_THOK
+	{"S_THOK", 0, SPR_THOK, FF_TRANS50, 8, {NULL}, 0, 0, S_NULL, 0},
 
 	// Player
-	{SPR_PLAY, SPR2_STND|FF_ANIMATE,    105, {NULL}, 0,  7, S_PLAY_WAIT, 0}, // S_PLAY_STND
-	{SPR_PLAY, SPR2_WAIT|FF_ANIMATE,     -1, {NULL}, 0, 16, S_NULL, 0},      // S_PLAY_WAIT
-	{SPR_PLAY, SPR2_WALK,                 4, {NULL}, 0,  0, S_PLAY_WALK, 0}, // S_PLAY_WALK
-	{SPR_PLAY, SPR2_SKID,                 1, {NULL}, 0,  0, S_PLAY_WALK, 0}, // S_PLAY_SKID
-	{SPR_PLAY, SPR2_RUN ,                 2, {NULL}, 0,  0, S_PLAY_RUN, 0},  // S_PLAY_RUN
-	{SPR_PLAY, SPR2_DASH,                 2, {NULL}, 0,  0, S_PLAY_DASH, 0}, // S_PLAY_DASH
-	{SPR_PLAY, SPR2_PAIN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL, 0}, // S_PLAY_PAIN
-	{SPR_PLAY, SPR2_STUN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL, 0}, // S_PLAY_STUN
-	{SPR_PLAY, SPR2_DEAD|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL, 0},      // S_PLAY_DEAD
-	{SPR_PLAY, SPR2_DRWN|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL, 0},      // S_PLAY_DRWN
-	{SPR_PLAY, SPR2_ROLL,                 1, {NULL}, 0,  0, S_PLAY_ROLL, 0}, // S_PLAY_ROLL
-	{SPR_PLAY, SPR2_GASP|FF_ANIMATE,     14, {NULL}, 0,  4, S_PLAY_WALK, 0}, // S_PLAY_GASP
-	{SPR_PLAY, SPR2_JUMP,                 1, {NULL}, 0,  0, S_PLAY_JUMP, 0}, // S_PLAY_JUMP
-	{SPR_PLAY, SPR2_SPNG,                 2, {NULL}, 0,  0, S_PLAY_SPRING, 0}, // S_PLAY_SPRING
-	{SPR_PLAY, SPR2_FALL,                 2, {NULL}, 0,  0, S_PLAY_FALL, 0}, // S_PLAY_FALL
-	{SPR_PLAY, SPR2_EDGE,                12, {NULL}, 0,  0, S_PLAY_EDGE, 0}, // S_PLAY_EDGE
-	{SPR_PLAY, SPR2_RIDE,                 4, {NULL}, 0,  0, S_PLAY_RIDE, 0}, // S_PLAY_RIDE
+	{"S_PLAY_STND", 0, SPR_PLAY, SPR2_STND|FF_ANIMATE,    105, {NULL}, 0,  7, S_PLAY_WAIT, 0},
+	{"S_PLAY_WAIT", 0, SPR_PLAY, SPR2_WAIT|FF_ANIMATE,     -1, {NULL}, 0, 16, S_NULL, 0},
+	{"S_PLAY_WALK", 0, SPR_PLAY, SPR2_WALK,                 4, {NULL}, 0,  0, S_PLAY_WALK, 0},
+	{"S_PLAY_SKID", 0, SPR_PLAY, SPR2_SKID,                 1, {NULL}, 0,  0, S_PLAY_WALK, 0},
+	{"S_PLAY_RUN", 0, SPR_PLAY, SPR2_RUN ,                 2, {NULL}, 0,  0, S_PLAY_RUN, 0},
+	{"S_PLAY_DASH", 0, SPR_PLAY, SPR2_DASH,                 2, {NULL}, 0,  0, S_PLAY_DASH, 0},
+	{"S_PLAY_PAIN", 0, SPR_PLAY, SPR2_PAIN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL, 0},
+	{"S_PLAY_STUN", 0, SPR_PLAY, SPR2_STUN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL, 0},
+	{"S_PLAY_DEAD", 0, SPR_PLAY, SPR2_DEAD|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL, 0},
+	{"S_PLAY_DRWN", 0, SPR_PLAY, SPR2_DRWN|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL, 0},
+	{"S_PLAY_ROLL", 0, SPR_PLAY, SPR2_ROLL,                 1, {NULL}, 0,  0, S_PLAY_ROLL, 0},
+	{"S_PLAY_GASP", 0, SPR_PLAY, SPR2_GASP|FF_ANIMATE,     14, {NULL}, 0,  4, S_PLAY_WALK, 0},
+	{"S_PLAY_JUMP", 0, SPR_PLAY, SPR2_JUMP,                 1, {NULL}, 0,  0, S_PLAY_JUMP, 0},
+	{"S_PLAY_SPRING", 0, SPR_PLAY, SPR2_SPNG,                 2, {NULL}, 0,  0, S_PLAY_SPRING, 0},
+	{"S_PLAY_FALL", 0, SPR_PLAY, SPR2_FALL,                 2, {NULL}, 0,  0, S_PLAY_FALL, 0},
+	{"S_PLAY_EDGE", 0, SPR_PLAY, SPR2_EDGE,                12, {NULL}, 0,  0, S_PLAY_EDGE, 0},
+	{"S_PLAY_RIDE", 0, SPR_PLAY, SPR2_RIDE,                 4, {NULL}, 0,  0, S_PLAY_RIDE, 0},
 
 	// CA2_SPINDASH
-	{SPR_PLAY, SPR2_SPIN,                 2, {NULL}, 0,  0, S_PLAY_SPINDASH, 0}, // S_PLAY_SPINDASH
+	{"S_PLAY_SPINDASH", 0, SPR_PLAY, SPR2_SPIN,                 2, {NULL}, 0,  0, S_PLAY_SPINDASH, 0},
 
 	// CA_FLY/CA_SWIM
-	{SPR_PLAY, SPR2_FLY ,                 2, {NULL}, 0,  0, S_PLAY_FLY, 0},  // S_PLAY_FLY
-	{SPR_PLAY, SPR2_SWIM,                 4, {NULL}, 0,  0, S_PLAY_SWIM, 0}, // S_PLAY_SWIM
-	{SPR_PLAY, SPR2_TIRE,                12, {NULL}, 0,  0, S_PLAY_FLY_TIRED, 0}, // S_PLAY_FLY_TIRED
+	{"S_PLAY_FLY", 0, SPR_PLAY, SPR2_FLY ,                 2, {NULL}, 0,  0, S_PLAY_FLY, 0},
+	{"S_PLAY_SWIM", 0, SPR_PLAY, SPR2_SWIM,                 4, {NULL}, 0,  0, S_PLAY_SWIM, 0},
+	{"S_PLAY_FLY_TIRED", 0, SPR_PLAY, SPR2_TIRE,                12, {NULL}, 0,  0, S_PLAY_FLY_TIRED, 0},
 
 	// CA_GLIDEANDCLIMB
-	{SPR_PLAY, SPR2_GLID,                 2, {NULL}, 0,  0, S_PLAY_GLIDE, 0}, // S_PLAY_GLIDE
-	{SPR_PLAY, SPR2_LAND,                 7, {NULL}, 0,  0, S_PLAY_STND, 0},  // S_PLAY_GLIDE_LANDING
-	{SPR_PLAY, SPR2_CLNG|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL, 0},       // S_PLAY_CLING
-	{SPR_PLAY, SPR2_CLMB,                 5, {NULL}, 0,  0, S_PLAY_CLIMB, 0}, // S_PLAY_CLIMB
+	{"S_PLAY_GLIDE", 0, SPR_PLAY, SPR2_GLID,                 2, {NULL}, 0,  0, S_PLAY_GLIDE, 0},
+	{"S_PLAY_GLIDE_LANDING", 0, SPR_PLAY, SPR2_LAND,                 7, {NULL}, 0,  0, S_PLAY_STND, 0},
+	{"S_PLAY_CLING", 0, SPR_PLAY, SPR2_CLNG|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL, 0},
+	{"S_PLAY_CLIMB", 0, SPR_PLAY, SPR2_CLMB,                 5, {NULL}, 0,  0, S_PLAY_CLIMB, 0},
 
 	// CA_FLOAT/CA_SLOWFALL
-	{SPR_PLAY, SPR2_FLT ,                 7, {NULL}, 0,  0, S_PLAY_FLOAT, 0}, // S_PLAY_FLOAT
-	{SPR_PLAY, SPR2_FRUN,                 7, {NULL}, 0,  0, S_PLAY_FLOAT_RUN, 0},  // S_PLAY_FLOAT_RUN
+	{"S_PLAY_FLOAT", 0, SPR_PLAY, SPR2_FLT ,                 7, {NULL}, 0,  0, S_PLAY_FLOAT, 0},
+	{"S_PLAY_FLOAT_RUN", 0, SPR_PLAY, SPR2_FRUN,                 7, {NULL}, 0,  0, S_PLAY_FLOAT_RUN, 0},
 
 	// CA_BOUNCE
-	{SPR_PLAY, SPR2_BNCE|FF_ANIMATE,     -1, {NULL},             0,  0, S_NULL, 0},                // S_PLAY_BOUNCE
-	{SPR_PLAY, SPR2_LAND|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_BOUNCE,  0, S_PLAY_BOUNCE_LANDING, 0}, // S_PLAY_BOUNCE_LANDING
+	{"S_PLAY_BOUNCE", 0, SPR_PLAY, SPR2_BNCE|FF_ANIMATE,     -1, {NULL},             0,  0, S_NULL, 0},
+	{"S_PLAY_BOUNCE_LANDING", 0, SPR_PLAY, SPR2_LAND|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_BOUNCE,  0, S_PLAY_BOUNCE_LANDING, 0},
 
 	// CA2_GUNSLINGER
-	{SPR_PLAY, SPR2_FIRE|FF_SPR2ENDSTATE,  2, {NULL}, S_PLAY_FIRE_FINISH, 0, S_PLAY_FIRE, 0},   // S_PLAY_FIRE
-	{SPR_PLAY, SPR2_FIRE,                 15, {NULL},        S_PLAY_STND, 0, S_PLAY_STND, 0},   // S_PLAY_FIRE_FINISH
+	{"S_PLAY_FIRE", 0, SPR_PLAY, SPR2_FIRE|FF_SPR2ENDSTATE,  2, {NULL}, S_PLAY_FIRE_FINISH, 0, S_PLAY_FIRE, 0},
+	{"S_PLAY_FIRE_FINISH", 0, SPR_PLAY, SPR2_FIRE,                 15, {NULL},        S_PLAY_STND, 0, S_PLAY_STND, 0},
 
 	// CA_TWINSPIN
-	{SPR_PLAY, SPR2_TWIN|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_JUMP, 0, S_PLAY_TWINSPIN, 0}, // S_PLAY_TWINSPIN
+	{"S_PLAY_TWINSPIN", 0, SPR_PLAY, SPR2_TWIN|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_JUMP, 0, S_PLAY_TWINSPIN, 0},
 
 	// CA2_MELEE
-	{SPR_PLAY, SPR2_MLEE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_MELEE_FINISH, 0, S_PLAY_MELEE, 0}, // S_PLAY_MELEE
-	{SPR_PLAY, SPR2_MLEE,                70, {NULL},                   0, 0, S_PLAY_FALL, 0},  // S_PLAY_MELEE_FINISH
-	{SPR_PLAY, SPR2_MLEL,                35, {NULL},                   0, 0, S_PLAY_WALK, 0},  // S_PLAY_MELEE_LANDING
+	{"S_PLAY_MELEE", 0, SPR_PLAY, SPR2_MLEE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_MELEE_FINISH, 0, S_PLAY_MELEE, 0},
+	{"S_PLAY_MELEE_FINISH", 0, SPR_PLAY, SPR2_MLEE,                70, {NULL},                   0, 0, S_PLAY_FALL, 0},
+	{"S_PLAY_MELEE_LANDING", 0, SPR_PLAY, SPR2_MLEL,                35, {NULL},                   0, 0, S_PLAY_WALK, 0},
 
 	// SF_SUPER
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_SUPER_TRANS2, 0}, // S_PLAY_SUPER_TRANS1
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER,                3, {NULL},          0, 0, S_PLAY_SUPER_TRANS3, 0}, // S_PLAY_SUPER_TRANS2
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS4, 0}, // S_PLAY_SUPER_TRANS3
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS5, 0}, // S_PLAY_SUPER_TRANS4
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS6, 0}, // S_PLAY_SUPER_TRANS5
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 19, {A_FadeOverlay}, 0, 0, S_PLAY_FALL, 0},         // S_PLAY_SUPER_TRANS6
+	{"S_PLAY_SUPER_TRANS1", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_SUPER_TRANS2, 0},
+	{"S_PLAY_SUPER_TRANS2", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER,                3, {NULL},          0, 0, S_PLAY_SUPER_TRANS3, 0},
+	{"S_PLAY_SUPER_TRANS3", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS4, 0},
+	{"S_PLAY_SUPER_TRANS4", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS5, 0},
+	{"S_PLAY_SUPER_TRANS5", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS6, 0},
+	{"S_PLAY_SUPER_TRANS6", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 19, {A_FadeOverlay}, 0, 0, S_PLAY_FALL, 0},
 
-	{SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY, 0}, //S_OBJPLACE_DUMMY
+	{"S_OBJPLACE_DUMMY", 0, SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY, 0},
 
 	// 1-Up box sprites (uses player sprite)
-	{SPR_PLAY, SPR2_LIFE,  2, {NULL}, 0, 18, S_PLAY_BOX2, 0},  // S_PLAY_BOX1
-	{SPR_NULL,         0,  1, {NULL}, 0, 18, S_PLAY_BOX1, 0},  // S_PLAY_BOX2
-	{SPR_PLAY, SPR2_LIFE,  4, {NULL}, 0,  4, S_PLAY_ICON2, 0}, // S_PLAY_ICON1
-	{SPR_NULL,         0, 12, {NULL}, 0,  4, S_PLAY_ICON3, 0}, // S_PLAY_ICON2
-	{SPR_PLAY, SPR2_LIFE, 20, {NULL}, 0,  4, S_NULL, 0},       // S_PLAY_ICON3
+	{"S_PLAY_BOX1", 0, SPR_PLAY, SPR2_LIFE,  2, {NULL}, 0, 18, S_PLAY_BOX2, 0},
+	{"S_PLAY_BOX2", 0, SPR_NULL,         0,  1, {NULL}, 0, 18, S_PLAY_BOX1, 0},
+	{"S_PLAY_ICON1", 0, SPR_PLAY, SPR2_LIFE,  4, {NULL}, 0,  4, S_PLAY_ICON2, 0},
+	{"S_PLAY_ICON2", 0, SPR_NULL,         0, 12, {NULL}, 0,  4, S_PLAY_ICON3, 0},
+	{"S_PLAY_ICON3", 0, SPR_PLAY, SPR2_LIFE, 20, {NULL}, 0,  4, S_NULL, 0},
 
 	// Level end sign (uses player sprite)
-	{SPR_PLAY, SPR2_SIGN|FF_PAPERSPRITE, 2, {NULL}, 0, 29, S_PLAY_SIGN, 0},         // S_PLAY_SIGN
+	{"S_PLAY_SIGN", 0, SPR_PLAY, SPR2_SIGN|FF_PAPERSPRITE, 2, {NULL}, 0, 29, S_PLAY_SIGN, 0},
 
 	// NiGHTS Player, transforming
-	{SPR_PLAY, SPR2_TRNS|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_NIGHTS_TRANS2, 0}, // S_PLAY_NIGHTS_TRANS1
-	{SPR_PLAY, SPR2_TRNS,                3, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS3, 0}, // S_PLAY_NIGHTS_TRANS2
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS4, 0}, // S_PLAY_NIGHTS_TRANS3
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS5, 0}, // S_PLAY_NIGHTS_TRANS4
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS6, 0}, // S_PLAY_NIGHTS_TRANS5
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 21, {A_FadeOverlay}, 2, 0, S_PLAY_NIGHTS_FLOAT, 0},  // S_PLAY_NIGHTS_TRANS5
+	{"S_PLAY_NIGHTS_TRANS1", 0, SPR_PLAY, SPR2_TRNS|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_NIGHTS_TRANS2, 0},
+	{"S_PLAY_NIGHTS_TRANS2", 0, SPR_PLAY, SPR2_TRNS,                3, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS3, 0},
+	{"S_PLAY_NIGHTS_TRANS3", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS4, 0},
+	{"S_PLAY_NIGHTS_TRANS4", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS5, 0},
+	{"S_PLAY_NIGHTS_TRANS5", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS6, 0},
+	{"S_PLAY_NIGHTS_TRANS5", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 21, {A_FadeOverlay}, 2, 0, S_PLAY_NIGHTS_FLOAT, 0},
 
 	// NiGHTS Player
-	{SPR_PLAY, SPR2_NSTD, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_STAND, 0},  // S_PLAY_NIGHTS_STAND
-	{SPR_PLAY, SPR2_NFLT, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_FLOAT, 0},  // S_PLAY_NIGHTS_FLOAT
-	{SPR_PLAY, SPR2_NFLY, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_FLY, 0},    // S_PLAY_NIGHTS_FLY
-	{SPR_PLAY, SPR2_NDRL, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_DRILL, 0},  // S_PLAY_NIGHTS_DRILL
-	{SPR_PLAY, SPR2_NSTN, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_STUN, 0},   // S_PLAY_NIGHTS_STUN
-	{SPR_PLAY, SPR2_NPUL, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_PULL, 0},   // S_PLAY_NIGHTS_PULL
-	{SPR_PLAY, SPR2_NATK, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_ATTACK, 0}, // S_PLAY_NIGHTS_ATTACK
+	{"S_PLAY_NIGHTS_STAND", 0, SPR_PLAY, SPR2_NSTD, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_STAND, 0},
+	{"S_PLAY_NIGHTS_FLOAT", 0, SPR_PLAY, SPR2_NFLT, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_FLOAT, 0},
+	{"S_PLAY_NIGHTS_FLY", 0, SPR_PLAY, SPR2_NFLY, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_FLY, 0},
+	{"S_PLAY_NIGHTS_DRILL", 0, SPR_PLAY, SPR2_NDRL, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_DRILL, 0},
+	{"S_PLAY_NIGHTS_STUN", 0, SPR_PLAY, SPR2_NSTN, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_STUN, 0},
+	{"S_PLAY_NIGHTS_PULL", 0, SPR_PLAY, SPR2_NPUL, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_PULL, 0},
+	{"S_PLAY_NIGHTS_ATTACK", 0, SPR_PLAY, SPR2_NATK, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_ATTACK, 0},
 
 	// c:
-	{SPR_PLAY, SPR2_TAL0|FF_SPR2MIDSTART,  5, {NULL}, 0, 0, S_TAILSOVERLAY_STAND, 0}, // S_TAILSOVERLAY_STAND
-	{SPR_PLAY, SPR2_TAL1|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_0DEGREES, 0}, // S_TAILSOVERLAY_0DEGREES
-	{SPR_PLAY, SPR2_TAL2|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS30DEGREES, 0}, // S_TAILSOVERLAY_PLUS30DEGREES
-	{SPR_PLAY, SPR2_TAL3|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS60DEGREES, 0}, // S_TAILSOVERLAY_PLUS60DEGREES
-	{SPR_PLAY, SPR2_TAL4|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS30DEGREES, 0}, // S_TAILSOVERLAY_MINUS30DEGREES
-	{SPR_PLAY, SPR2_TAL5|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS60DEGREES, 0}, // S_TAILSOVERLAY_MINUS60DEGREES
-	{SPR_PLAY, SPR2_TAL6|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_RUN, 0}, // S_TAILSOVERLAY_RUN
-	{SPR_PLAY, SPR2_TAL7|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_FLY, 0}, // S_TAILSOVERLAY_FLY
-	{SPR_PLAY, SPR2_TAL8|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_TIRE, 0}, // S_TAILSOVERLAY_TIRE
-	{SPR_PLAY, SPR2_TAL9|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PAIN, 0}, // S_TAILSOVERLAY_PAIN
-	{SPR_PLAY, SPR2_TALA|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_GASP, 0}, // S_TAILSOVERLAY_GASP
-	{SPR_PLAY, SPR2_TALB                , 35, {NULL}, 0, 0, S_TAILSOVERLAY_EDGE, 0}, // S_TAILSOVERLAY_EDGE
-	{SPR_PLAY, SPR2_TALC|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_DASH, 0}, // S_TAILSOVERLAY_DASH
+	{"S_TAILSOVERLAY_STAND", 0, SPR_PLAY, SPR2_TAL0|FF_SPR2MIDSTART,  5, {NULL}, 0, 0, S_TAILSOVERLAY_STAND, 0},
+	{"S_TAILSOVERLAY_0DEGREES", 0, SPR_PLAY, SPR2_TAL1|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_0DEGREES, 0},
+	{"S_TAILSOVERLAY_PLUS30DEGREES", 0, SPR_PLAY, SPR2_TAL2|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS30DEGREES, 0},
+	{"S_TAILSOVERLAY_PLUS60DEGREES", 0, SPR_PLAY, SPR2_TAL3|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS60DEGREES, 0},
+	{"S_TAILSOVERLAY_MINUS30DEGREES", 0, SPR_PLAY, SPR2_TAL4|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS30DEGREES, 0},
+	{"S_TAILSOVERLAY_MINUS60DEGREES", 0, SPR_PLAY, SPR2_TAL5|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS60DEGREES, 0},
+	{"S_TAILSOVERLAY_RUN", 0, SPR_PLAY, SPR2_TAL6|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_RUN, 0},
+	{"S_TAILSOVERLAY_FLY", 0, SPR_PLAY, SPR2_TAL7|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_FLY, 0},
+	{"S_TAILSOVERLAY_TIRE", 0, SPR_PLAY, SPR2_TAL8|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_TIRE, 0},
+	{"S_TAILSOVERLAY_PAIN", 0, SPR_PLAY, SPR2_TAL9|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PAIN, 0},
+	{"S_TAILSOVERLAY_GASP", 0, SPR_PLAY, SPR2_TALA|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_GASP, 0},
+	{"S_TAILSOVERLAY_EDGE", 0, SPR_PLAY, SPR2_TALB                , 35, {NULL}, 0, 0, S_TAILSOVERLAY_EDGE, 0},
+	{"S_TAILSOVERLAY_DASH", 0, SPR_PLAY, SPR2_TALC|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_DASH, 0},
 
 	// [:
-	{SPR_JETF, 3|FF_ANIMATE|FF_FULLBRIGHT, 2, {NULL}, 1, 1, S_JETFUME1, 0}, // S_JETFUMEFLASH
+	{"S_JETFUMEFLASH", 0, SPR_JETF, 3|FF_ANIMATE|FF_FULLBRIGHT, 2, {NULL}, 1, 1, S_JETFUME1, 0},
 
 	// Blue Crawla
-	{SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND, 0},   // S_POSS_STND
-	{SPR_POSS, 0, 3, {A_Chase}, 0, 0, S_POSS_RUN2, 0},   // S_POSS_RUN1
-	{SPR_POSS, 1, 3, {A_Chase}, 0, 0, S_POSS_RUN3, 0},   // S_POSS_RUN2
-	{SPR_POSS, 2, 3, {A_Chase}, 0, 0, S_POSS_RUN4, 0},   // S_POSS_RUN3
-	{SPR_POSS, 3, 3, {A_Chase}, 0, 0, S_POSS_RUN5, 0},   // S_POSS_RUN4
-	{SPR_POSS, 4, 3, {A_Chase}, 0, 0, S_POSS_RUN6, 0},   // S_POSS_RUN5
-	{SPR_POSS, 5, 3, {A_Chase}, 0, 0, S_POSS_RUN1, 0},   // S_POSS_RUN6
+	{"S_POSS_STND", 0, SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND, 0},
+	{"S_POSS_RUN1", 0, SPR_POSS, 0, 3, {A_Chase}, 0, 0, S_POSS_RUN2, 0},
+	{"S_POSS_RUN2", 0, SPR_POSS, 1, 3, {A_Chase}, 0, 0, S_POSS_RUN3, 0},
+	{"S_POSS_RUN3", 0, SPR_POSS, 2, 3, {A_Chase}, 0, 0, S_POSS_RUN4, 0},
+	{"S_POSS_RUN4", 0, SPR_POSS, 3, 3, {A_Chase}, 0, 0, S_POSS_RUN5, 0},
+	{"S_POSS_RUN5", 0, SPR_POSS, 4, 3, {A_Chase}, 0, 0, S_POSS_RUN6, 0},
+	{"S_POSS_RUN6", 0, SPR_POSS, 5, 3, {A_Chase}, 0, 0, S_POSS_RUN1, 0},
 
 	// Red Crawla
-	{SPR_SPOS, 0, 5, {A_Look}, 0, 0, S_SPOS_STND, 0},   // S_SPOS_STND
-	{SPR_SPOS, 0, 1, {A_Chase}, 0, 0, S_SPOS_RUN2, 0},   // S_SPOS_RUN1
-	{SPR_SPOS, 1, 1, {A_Chase}, 0, 0, S_SPOS_RUN3, 0},   // S_SPOS_RUN2
-	{SPR_SPOS, 2, 1, {A_Chase}, 0, 0, S_SPOS_RUN4, 0},   // S_SPOS_RUN3
-	{SPR_SPOS, 3, 1, {A_Chase}, 0, 0, S_SPOS_RUN5, 0},   // S_SPOS_RUN4
-	{SPR_SPOS, 4, 1, {A_Chase}, 0, 0, S_SPOS_RUN6, 0},   // S_SPOS_RUN5
-	{SPR_SPOS, 5, 1, {A_Chase}, 0, 0, S_SPOS_RUN1, 0},   // S_SPOS_RUN6
+	{"S_SPOS_STND", 0, SPR_SPOS, 0, 5, {A_Look}, 0, 0, S_SPOS_STND, 0},
+	{"S_SPOS_RUN1", 0, SPR_SPOS, 0, 1, {A_Chase}, 0, 0, S_SPOS_RUN2, 0},
+	{"S_SPOS_RUN2", 0, SPR_SPOS, 1, 1, {A_Chase}, 0, 0, S_SPOS_RUN3, 0},
+	{"S_SPOS_RUN3", 0, SPR_SPOS, 2, 1, {A_Chase}, 0, 0, S_SPOS_RUN4, 0},
+	{"S_SPOS_RUN4", 0, SPR_SPOS, 3, 1, {A_Chase}, 0, 0, S_SPOS_RUN5, 0},
+	{"S_SPOS_RUN5", 0, SPR_SPOS, 4, 1, {A_Chase}, 0, 0, S_SPOS_RUN6, 0},
+	{"S_SPOS_RUN6", 0, SPR_SPOS, 5, 1, {A_Chase}, 0, 0, S_SPOS_RUN1, 0},
 
 	// Greenflower Fish
-	{SPR_FISH, 1, 1, {NULL}, 0, 0, S_FISH2, 0},         // S_FISH1
-	{SPR_FISH, 1, 1, {A_FishJump}, 0, 0, S_FISH1, 0},   // S_FISH2
-	{SPR_FISH, 0, 1, {NULL}, 0, 0, S_FISH4, 0},         // S_FISH3
-	{SPR_FISH, 0, 1, {A_FishJump}, 0, 0, S_FISH3, 0},   // S_FISH4
+	{"S_FISH1", 0, SPR_FISH, 1, 1, {NULL}, 0, 0, S_FISH2, 0},
+	{"S_FISH2", 0, SPR_FISH, 1, 1, {A_FishJump}, 0, 0, S_FISH1, 0},
+	{"S_FISH3", 0, SPR_FISH, 0, 1, {NULL}, 0, 0, S_FISH4, 0},
+	{"S_FISH4", 0, SPR_FISH, 0, 1, {A_FishJump}, 0, 0, S_FISH3, 0},
 
 	// Gold Buzz
-	{SPR_BUZZ, 0, 2, {A_Look}, 0, 0, S_BUZZLOOK2, 0},   // S_BUZZLOOK1
-	{SPR_BUZZ, 1, 2, {A_Look}, 0, 0, S_BUZZLOOK1, 0},   // S_BUZZLOOK2
-	{SPR_BUZZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_BUZZFLY2, 0}, // S_BUZZFLY1
-	{SPR_BUZZ, 1, 2, {A_BuzzFly}, 0, 0, S_BUZZFLY1, 0}, // S_BUZZFLY2
+	{"S_BUZZLOOK1", 0, SPR_BUZZ, 0, 2, {A_Look}, 0, 0, S_BUZZLOOK2, 0},
+	{"S_BUZZLOOK2", 0, SPR_BUZZ, 1, 2, {A_Look}, 0, 0, S_BUZZLOOK1, 0},
+	{"S_BUZZFLY1", 0, SPR_BUZZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_BUZZFLY2, 0},
+	{"S_BUZZFLY2", 0, SPR_BUZZ, 1, 2, {A_BuzzFly}, 0, 0, S_BUZZFLY1, 0},
 
 	// Red Buzz
-	{SPR_RBUZ, 0, 2, {A_Look}, 0, 0, S_RBUZZLOOK2, 0},   // S_RBUZZLOOK1
-	{SPR_RBUZ, 1, 2, {A_Look}, 0, 0, S_RBUZZLOOK1, 0},   // S_RBUZZLOOK2
-	{SPR_RBUZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_RBUZZFLY2, 0}, // S_RBUZZFLY1
-	{SPR_RBUZ, 1, 2, {A_BuzzFly}, 0, 0, S_RBUZZFLY1, 0}, // S_RBUZZFLY2
+	{"S_RBUZZLOOK1", 0, SPR_RBUZ, 0, 2, {A_Look}, 0, 0, S_RBUZZLOOK2, 0},
+	{"S_RBUZZLOOK2", 0, SPR_RBUZ, 1, 2, {A_Look}, 0, 0, S_RBUZZLOOK1, 0},
+	{"S_RBUZZFLY1", 0, SPR_RBUZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_RBUZZFLY2, 0},
+	{"S_RBUZZFLY2", 0, SPR_RBUZ, 1, 2, {A_BuzzFly}, 0, 0, S_RBUZZFLY1, 0},
 
 	// Jetty-Syn Bomber
-	{SPR_JETB, 0, 4, {A_Look}, 0, 0, S_JETBLOOK2, 0},      // S_JETBLOOK1
-	{SPR_JETB, 1, 4, {A_Look}, 0, 0, S_JETBLOOK1, 0},      // S_JETBLOOK2
-	{SPR_JETB, 0, 1, {A_JetbThink}, 0, 0, S_JETBZOOM2, 0}, // S_JETBZOOM1
-	{SPR_JETB, 1, 1, {A_JetbThink}, 0, 0, S_JETBZOOM1, 0}, // S_JETBZOOM2
+	{"S_JETBLOOK1", 0, SPR_JETB, 0, 4, {A_Look}, 0, 0, S_JETBLOOK2, 0},
+	{"S_JETBLOOK2", 0, SPR_JETB, 1, 4, {A_Look}, 0, 0, S_JETBLOOK1, 0},
+	{"S_JETBZOOM1", 0, SPR_JETB, 0, 1, {A_JetbThink}, 0, 0, S_JETBZOOM2, 0},
+	{"S_JETBZOOM2", 0, SPR_JETB, 1, 1, {A_JetbThink}, 0, 0, S_JETBZOOM1, 0},
 
 	// Jetty-Syn Gunner
-	{SPR_JETG, 0, 4, {A_Look}, 0, 0, S_JETGLOOK2, 0},       // S_JETGLOOK1
-	{SPR_JETG, 1, 4, {A_Look}, 0, 0, S_JETGLOOK1, 0},       // S_JETGLOOK2
-	{SPR_JETG, 0, 1, {A_JetgThink}, 0, 0, S_JETGZOOM2, 0},  // S_JETGZOOM1
-	{SPR_JETG, 1, 1, {A_JetgThink}, 0, 0, S_JETGZOOM1, 0},  // S_JETGZOOM2
-	{SPR_JETG, 2, 1, {A_JetgShoot}, 0, 0, S_JETGSHOOT2, 0}, // S_JETGSHOOT1
-	{SPR_JETG, 3, 1, {NULL}, 0, 0, S_JETGZOOM1, 0},         // S_JETGSHOOT2
+	{"S_JETGLOOK1", 0, SPR_JETG, 0, 4, {A_Look}, 0, 0, S_JETGLOOK2, 0},
+	{"S_JETGLOOK2", 0, SPR_JETG, 1, 4, {A_Look}, 0, 0, S_JETGLOOK1, 0},
+	{"S_JETGZOOM1", 0, SPR_JETG, 0, 1, {A_JetgThink}, 0, 0, S_JETGZOOM2, 0},
+	{"S_JETGZOOM2", 0, SPR_JETG, 1, 1, {A_JetgThink}, 0, 0, S_JETGZOOM1, 0},
+	{"S_JETGSHOOT1", 0, SPR_JETG, 2, 1, {A_JetgShoot}, 0, 0, S_JETGSHOOT2, 0},
+	{"S_JETGSHOOT2", 0, SPR_JETG, 3, 1, {NULL}, 0, 0, S_JETGZOOM1, 0},
 
 	// Crawla Commander
-	{SPR_CCOM, 0, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND2, 0}, // S_CCOMMAND1
-	{SPR_CCOM, 1, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND1, 0}, // S_CCOMMAND2
-	{SPR_CCOM, 2, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND4, 0}, // S_CCOMMAND3
-	{SPR_CCOM, 3, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND3, 0}, // S_CCOMMAND4
+	{"S_CCOMMAND1", 0, SPR_CCOM, 0, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND2, 0},
+	{"S_CCOMMAND2", 0, SPR_CCOM, 1, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND1, 0},
+	{"S_CCOMMAND3", 0, SPR_CCOM, 2, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND4, 0},
+	{"S_CCOMMAND4", 0, SPR_CCOM, 3, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND3, 0},
 
 	// Deton
-	{SPR_DETN, 0, 35, {A_Look}, 0, 0, S_DETON1, 0},       // S_DETON1
-	{SPR_DETN, 0,  1, {A_DetonChase}, 0, 0, S_DETON3, 0},  // S_DETON2
-	{SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON4, 0},  // S_DETON3
-	{SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON5, 0},  // S_DETON4
-	{SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON6, 0},  // S_DETON5
-	{SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON7, 0},  // S_DETON6
-	{SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON8, 0},  // S_DETON7
-	{SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON9, 0},  // S_DETON8
-	{SPR_DETN, 7,  1, {A_DetonChase}, 0, 0, S_DETON10, 0}, // S_DETON9
-	{SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON11, 0}, // S_DETON10
-	{SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON12, 0}, // S_DETON11
-	{SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON13, 0}, // S_DETON12
-	{SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON14, 0}, // S_DETON13
-	{SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON15, 0}, // S_DETON14
-	{SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON2, 0},  // S_DETON15
+	{"S_DETON1", 0, SPR_DETN, 0, 35, {A_Look}, 0, 0, S_DETON1, 0},
+	{"S_DETON2", 0, SPR_DETN, 0,  1, {A_DetonChase}, 0, 0, S_DETON3, 0},
+	{"S_DETON3", 0, SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON4, 0},
+	{"S_DETON4", 0, SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON5, 0},
+	{"S_DETON5", 0, SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON6, 0},
+	{"S_DETON6", 0, SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON7, 0},
+	{"S_DETON7", 0, SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON8, 0},
+	{"S_DETON8", 0, SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON9, 0},
+	{"S_DETON9", 0, SPR_DETN, 7,  1, {A_DetonChase}, 0, 0, S_DETON10, 0},
+	{"S_DETON10", 0, SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON11, 0},
+	{"S_DETON11", 0, SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON12, 0},
+	{"S_DETON12", 0, SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON13, 0},
+	{"S_DETON13", 0, SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON14, 0},
+	{"S_DETON14", 0, SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON15, 0},
+	{"S_DETON15", 0, SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON2, 0},
 
 	// Skim Mine Dropper
-	{SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM2, 0},    // S_SKIM1
-	{SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM1, 0},    // S_SKIM2
-	{SPR_SKIM, 0, 14,        {NULL}, 0, 0, S_SKIM4, 0},    // S_SKIM3
-	{SPR_SKIM, 0, 14,  {A_DropMine}, 0, 0, S_SKIM1, 0},    // S_SKIM4
+	{"S_SKIM1", 0, SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM2, 0},
+	{"S_SKIM2", 0, SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM1, 0},
+	{"S_SKIM3", 0, SPR_SKIM, 0, 14,        {NULL}, 0, 0, S_SKIM4, 0},
+	{"S_SKIM4", 0, SPR_SKIM, 0, 14,  {A_DropMine}, 0, 0, S_SKIM1, 0},
 
 	// THZ Turret
-	{SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretStop}, 0, 0, S_TURRETFIRE, 0},   // S_TURRET
-	{SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretFire}, 0, 0, S_TURRET, 0},       // S_TURRETFIRE
-	{SPR_TRET, FF_FULLBRIGHT|1, 7, {A_Pain}, 0, 0, S_TURRETSHOCK2, 0},       // S_TURRETSHOCK1
-	{SPR_TRET, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_TURRETSHOCK3, 0},         // S_TURRETSHOCK2
-	{SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK4, 0},         // S_TURRETSHOCK3
-	{SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK5, 0},         // S_TURRETSHOCK4
-	{SPR_TRET, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_TURRETSHOCK6, 0},         // S_TURRETSHOCK5
-	{SPR_TRET, FF_FULLBRIGHT|2, 7, {A_Pain}, 0, 0, S_TURRETSHOCK7, 0},       // S_TURRETSHOCK6
-	{SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK8, 0},         // S_TURRETSHOCK7
-	{SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK9, 0},         // S_TURRETSHOCK8
-	{SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecuteFromArg}, 0, 0, S_XPLD1, 0}, // S_TURRETSHOCK9
-
-	{SPR_TURR, 0, 1, {A_Look}, 1, 0, S_TURRETPOPDOWN8, 0},          // S_TURRETLOOK
-	{SPR_TURR, 0, 0, {A_FaceTarget}, 0, 0, S_TURRETPOPUP1, 0},  // S_TURRETSEE
-	{SPR_TURR, 1, 2, {A_Pain}, 0, 0, S_TURRETPOPUP2, 0},  // S_TURRETPOPUP1
-	{SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPUP3, 0},  // S_TURRETPOPUP2
-	{SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPUP4, 0},  // S_TURRETPOPUP3
-	{SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPUP5, 0},  // S_TURRETPOPUP4
-	{SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPUP6, 0},  // S_TURRETPOPUP5
-	{SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPUP7, 0},  // S_TURRETPOPUP6
-	{SPR_TURR, 7, 2, {NULL}, 0, 0, S_TURRETPOPUP8, 0},  // S_TURRETPOPUP7
-	{SPR_TURR, 8, 14,{NULL}, 0, 0, S_TURRETSHOOT, 0},   // S_TURRETPOPUP8
-	{SPR_TURR, 8, 14,{A_JetgShoot}, 0, 0, S_TURRETPOPDOWN1, 0}, // S_TURRETSHOOT
-	{SPR_TURR, 7, 2, {A_Pain}, 0, 0, S_TURRETPOPDOWN2, 0},        // S_TURRETPOPDOWN1
-	{SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPDOWN3, 0},        // S_TURRETPOPDOWN2
-	{SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPDOWN4, 0},        // S_TURRETPOPDOWN3
-	{SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPDOWN5, 0},        // S_TURRETPOPDOWN4
-	{SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPDOWN6, 0},        // S_TURRETPOPDOWN5
-	{SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPDOWN7, 0},        // S_TURRETPOPDOWN6
-	{SPR_TURR, 1, 2, {NULL}, 0, 0, S_TURRETPOPDOWN8, 0},        // S_TURRETPOPDOWN7
-	{SPR_TURR, 0, 69,{A_SetTics}, 0, 1, S_TURRETLOOK, 0},       // S_TURRETPOPDOWN8
+	{"S_TURRET", 0, SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretStop}, 0, 0, S_TURRETFIRE, 0},
+	{"S_TURRETFIRE", 0, SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretFire}, 0, 0, S_TURRET, 0},
+	{"S_TURRETSHOCK1", 0, SPR_TRET, FF_FULLBRIGHT|1, 7, {A_Pain}, 0, 0, S_TURRETSHOCK2, 0},
+	{"S_TURRETSHOCK2", 0, SPR_TRET, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_TURRETSHOCK3, 0},
+	{"S_TURRETSHOCK3", 0, SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK4, 0},
+	{"S_TURRETSHOCK4", 0, SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK5, 0},
+	{"S_TURRETSHOCK5", 0, SPR_TRET, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_TURRETSHOCK6, 0},
+	{"S_TURRETSHOCK6", 0, SPR_TRET, FF_FULLBRIGHT|2, 7, {A_Pain}, 0, 0, S_TURRETSHOCK7, 0},
+	{"S_TURRETSHOCK7", 0, SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK8, 0},
+	{"S_TURRETSHOCK8", 0, SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK9, 0},
+	{"S_TURRETSHOCK9", 0, SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecuteFromArg}, 0, 0, S_XPLD1, 0},
+
+	{"S_TURRETLOOK", 0, SPR_TURR, 0, 1, {A_Look}, 1, 0, S_TURRETPOPDOWN8, 0},
+	{"S_TURRETSEE", 0, SPR_TURR, 0, 0, {A_FaceTarget}, 0, 0, S_TURRETPOPUP1, 0},
+	{"S_TURRETPOPUP1", 0, SPR_TURR, 1, 2, {A_Pain}, 0, 0, S_TURRETPOPUP2, 0},
+	{"S_TURRETPOPUP2", 0, SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPUP3, 0},
+	{"S_TURRETPOPUP3", 0, SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPUP4, 0},
+	{"S_TURRETPOPUP4", 0, SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPUP5, 0},
+	{"S_TURRETPOPUP5", 0, SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPUP6, 0},
+	{"S_TURRETPOPUP6", 0, SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPUP7, 0},
+	{"S_TURRETPOPUP7", 0, SPR_TURR, 7, 2, {NULL}, 0, 0, S_TURRETPOPUP8, 0},
+	{"S_TURRETPOPUP8", 0, SPR_TURR, 8, 14,{NULL}, 0, 0, S_TURRETSHOOT, 0},
+	{"S_TURRETSHOOT", 0, SPR_TURR, 8, 14,{A_JetgShoot}, 0, 0, S_TURRETPOPDOWN1, 0},
+	{"S_TURRETPOPDOWN1", 0, SPR_TURR, 7, 2, {A_Pain}, 0, 0, S_TURRETPOPDOWN2, 0},
+	{"S_TURRETPOPDOWN2", 0, SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPDOWN3, 0},
+	{"S_TURRETPOPDOWN3", 0, SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPDOWN4, 0},
+	{"S_TURRETPOPDOWN4", 0, SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPDOWN5, 0},
+	{"S_TURRETPOPDOWN5", 0, SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPDOWN6, 0},
+	{"S_TURRETPOPDOWN6", 0, SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPDOWN7, 0},
+	{"S_TURRETPOPDOWN7", 0, SPR_TURR, 1, 2, {NULL}, 0, 0, S_TURRETPOPDOWN8, 0},
+	{"S_TURRETPOPDOWN8", 0, SPR_TURR, 0, 69,{A_SetTics}, 0, 1, S_TURRETLOOK, 0},
 
 	// Spincushion
-	{SPR_SHRP, 0,  2, {A_Look},                 0, 0, S_SPINCUSHION_LOOK, 0},   // S_SPINCUSHION_LOOK
-	{SPR_SHRP, 1,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE2, 0}, // S_SPINCUSHION_CHASE1
-	{SPR_SHRP, 2,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE3, 0}, // S_SPINCUSHION_CHASE2
-	{SPR_SHRP, 3,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE4, 0}, // S_SPINCUSHION_CHASE3
-	{SPR_SHRP, 0,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE1, 0}, // S_SPINCUSHION_CHASE4
-	{SPR_SHRP, 0,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM2, 0},   // S_SPINCUSHION_AIM1
-	{SPR_SHRP, 4,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM3, 0},   // S_SPINCUSHION_AIM2
-	{SPR_SHRP, 5,  2, {A_SetObjectFlags}, MF_PAIN, 2, S_SPINCUSHION_AIM4, 0},   // S_SPINCUSHION_AIM3
-	{SPR_SHRP, 6, 16, {A_MultiShotDist}, (MT_DUST<<16)|6, -32, S_SPINCUSHION_AIM5, 0}, // S_SPINCUSHION_AIM4
-	{SPR_SHRP, 6,  0, {A_PlaySound},   sfx_shrpgo, 1, S_SPINCUSHION_SPIN1, 0},  // S_SPINCUSHION_AIM5
-	{SPR_SHRP, 6,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN2, 0},  // S_SPINCUSHION_SPIN1
-	{SPR_SHRP, 8,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN3, 0},  // S_SPINCUSHION_SPIN2
-	{SPR_SHRP, 7,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN4, 0},  // S_SPINCUSHION_SPIN3
-	{SPR_SHRP, 8,  1, {A_SharpSpin},  MT_SPINDUST, 0, S_SPINCUSHION_SPIN1, 0},  // S_SPINCUSHION_SPIN4
-	{SPR_SHRP, 6,  1, {A_PlaySound},    sfx_s3k69, 1, S_SPINCUSHION_STOP2, 0},  // S_SPINCUSHION_STOP1
-	{SPR_SHRP, 6,  4, {A_SharpDecel},           0, 0, S_SPINCUSHION_STOP2, 0},  // S_SPINCUSHION_STOP2
-	{SPR_SHRP, 5,  4, {A_FaceTarget},           0, 0, S_SPINCUSHION_STOP4, 0},  // S_SPINCUSHION_STOP3
-	{SPR_SHRP, 4,  4, {A_SetObjectFlags}, MF_PAIN, 1, S_SPINCUSHION_LOOK, 0},   // S_SPINCUSHION_STOP4
+	{"S_SPINCUSHION_LOOK", 0, SPR_SHRP, 0,  2, {A_Look},                 0, 0, S_SPINCUSHION_LOOK, 0},
+	{"S_SPINCUSHION_CHASE1", 0, SPR_SHRP, 1,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE2, 0},
+	{"S_SPINCUSHION_CHASE2", 0, SPR_SHRP, 2,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE3, 0},
+	{"S_SPINCUSHION_CHASE3", 0, SPR_SHRP, 3,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE4, 0},
+	{"S_SPINCUSHION_CHASE4", 0, SPR_SHRP, 0,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE1, 0},
+	{"S_SPINCUSHION_AIM1", 0, SPR_SHRP, 0,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM2, 0},
+	{"S_SPINCUSHION_AIM2", 0, SPR_SHRP, 4,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM3, 0},
+	{"S_SPINCUSHION_AIM3", 0, SPR_SHRP, 5,  2, {A_SetObjectFlags}, MF_PAIN, 2, S_SPINCUSHION_AIM4, 0},
+	{"S_SPINCUSHION_AIM4", 0, SPR_SHRP, 6, 16, {A_MultiShotDist}, (MT_DUST<<16)|6, -32, S_SPINCUSHION_AIM5, 0},
+	{"S_SPINCUSHION_AIM5", 0, SPR_SHRP, 6,  0, {A_PlaySound},   sfx_shrpgo, 1, S_SPINCUSHION_SPIN1, 0},
+	{"S_SPINCUSHION_SPIN1", 0, SPR_SHRP, 6,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN2, 0},
+	{"S_SPINCUSHION_SPIN2", 0, SPR_SHRP, 8,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN3, 0},
+	{"S_SPINCUSHION_SPIN3", 0, SPR_SHRP, 7,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN4, 0},
+	{"S_SPINCUSHION_SPIN4", 0, SPR_SHRP, 8,  1, {A_SharpSpin},  MT_SPINDUST, 0, S_SPINCUSHION_SPIN1, 0},
+	{"S_SPINCUSHION_STOP1", 0, SPR_SHRP, 6,  1, {A_PlaySound},    sfx_s3k69, 1, S_SPINCUSHION_STOP2, 0},
+	{"S_SPINCUSHION_STOP2", 0, SPR_SHRP, 6,  4, {A_SharpDecel},           0, 0, S_SPINCUSHION_STOP2, 0},
+	{"S_SPINCUSHION_STOP3", 0, SPR_SHRP, 5,  4, {A_FaceTarget},           0, 0, S_SPINCUSHION_STOP4, 0},
+	{"S_SPINCUSHION_STOP4", 0, SPR_SHRP, 4,  4, {A_SetObjectFlags}, MF_PAIN, 1, S_SPINCUSHION_LOOK, 0},
 
 	// Crushstacean
-	{SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM2, 0},     // S_CRUSHSTACEAN_ROAM1
-	{SPR_CRAB, 1,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM3, 0},     // S_CRUSHSTACEAN_ROAM2
-	{SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM4, 0},     // S_CRUSHSTACEAN_ROAM3
-	{SPR_CRAB, 2,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM1, 0},     // S_CRUSHSTACEAN_ROAM4
-	{SPR_CRAB, 0, 40, {NULL},                0,                        0, S_CRUSHSTACEAN_ROAM1, 0},     // S_CRUSHSTACEAN_ROAMPAUSE
-	{SPR_CRAB, 0, 10, {NULL},                0,                        0, S_CRUSHSTACEAN_PUNCH2, 0},    // S_CRUSHSTACEAN_PUNCH1
-	{SPR_CRAB, 0, -1, {A_CrushstaceanPunch}, 0,                        0, S_CRUSHSTACEAN_ROAMPAUSE, 0}, // S_CRUSHSTACEAN_PUNCH2
-	{SPR_CRAB, 3,  1, {A_CrushclawAim},   40,               20, S_CRUSHCLAW_AIM, 0}, // S_CRUSHCLAW_AIM
-	{SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 0, S_CRUSHCLAW_STAY, S_CRUSHCLAW_OUT, 0}, // S_CRUSHCLAW_OUT
-	{SPR_CRAB, 3, 10, {NULL},              0,                0, S_CRUSHCLAW_IN, 0},  // S_CRUSHCLAW_STAY
-	{SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 1, S_CRUSHCLAW_WAIT, S_CRUSHCLAW_IN, 0},  // S_CRUSHCLAW_IN
-	{SPR_CRAB, 3, 37, {NULL},              0,                0, S_CRUSHCLAW_AIM, 0}, // S_CRUSHCLAW_WAIT
-	{SPR_CRAB, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CRUSHCHAIN
+	{"S_CRUSHSTACEAN_ROAM1", 0, SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM2, 0},
+	{"S_CRUSHSTACEAN_ROAM2", 0, SPR_CRAB, 1,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM3, 0},
+	{"S_CRUSHSTACEAN_ROAM3", 0, SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM4, 0},
+	{"S_CRUSHSTACEAN_ROAM4", 0, SPR_CRAB, 2,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM1, 0},
+	{"S_CRUSHSTACEAN_ROAMPAUSE", 0, SPR_CRAB, 0, 40, {NULL},                0,                        0, S_CRUSHSTACEAN_ROAM1, 0},
+	{"S_CRUSHSTACEAN_PUNCH1", 0, SPR_CRAB, 0, 10, {NULL},                0,                        0, S_CRUSHSTACEAN_PUNCH2, 0},
+	{"S_CRUSHSTACEAN_PUNCH2", 0, SPR_CRAB, 0, -1, {A_CrushstaceanPunch}, 0,                        0, S_CRUSHSTACEAN_ROAMPAUSE, 0},
+	{"S_CRUSHCLAW_AIM", 0, SPR_CRAB, 3,  1, {A_CrushclawAim},   40,               20, S_CRUSHCLAW_AIM, 0},
+	{"S_CRUSHCLAW_OUT", 0, SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 0, S_CRUSHCLAW_STAY, S_CRUSHCLAW_OUT, 0},
+	{"S_CRUSHCLAW_STAY", 0, SPR_CRAB, 3, 10, {NULL},              0,                0, S_CRUSHCLAW_IN, 0},
+	{"S_CRUSHCLAW_IN", 0, SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 1, S_CRUSHCLAW_WAIT, S_CRUSHCLAW_IN, 0},
+	{"S_CRUSHCLAW_WAIT", 0, SPR_CRAB, 3, 37, {NULL},              0,                0, S_CRUSHCLAW_AIM, 0},
+	{"S_CRUSHCHAIN", 0, SPR_CRAB, 4, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Banpyura
-	{SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM2, 0}, // S_BANPYURA_ROAM1
-	{SPR_CR2B, 1,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM3, 0}, // S_BANPYURA_ROAM2
-	{SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM4, 0}, // S_BANPYURA_ROAM3
-	{SPR_CR2B, 2,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM1, 0}, // S_BANPYURA_ROAM4
-	{SPR_CR2B, 0, 40, {NULL},                0,                    0, S_BANPYURA_ROAM1, 0}, // S_BANPYURA_ROAMPAUSE
-
-	{SPR_CSPR, 0, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0}, // S_CDIAG1
-	{SPR_CSPR, 1, 1, {A_Pain},          0,  0, S_CDIAG3, 0}, // S_CDIAG2
-	{SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG4, 0}, // S_CDIAG3
-	{SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG5, 0}, // S_CDIAG4
-	{SPR_CSPR, 4, 1, {A_CrushclawAim}, 50, 20, S_CDIAG6, 0}, // S_CDIAG5
-	{SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG7, 0}, // S_CDIAG6
-	{SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG8, 0}, // S_CDIAG7
-	{SPR_CSPR, 1, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0}, // S_CDIAG8
+	{"S_BANPYURA_ROAM1", 0, SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM2, 0},
+	{"S_BANPYURA_ROAM2", 0, SPR_CR2B, 1,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM3, 0},
+	{"S_BANPYURA_ROAM3", 0, SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM4, 0},
+	{"S_BANPYURA_ROAM4", 0, SPR_CR2B, 2,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM1, 0},
+	{"S_BANPYURA_ROAMPAUSE", 0, SPR_CR2B, 0, 40, {NULL},                0,                    0, S_BANPYURA_ROAM1, 0},
+
+	{"S_CDIAG1", 0, SPR_CSPR, 0, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0},
+	{"S_CDIAG2", 0, SPR_CSPR, 1, 1, {A_Pain},          0,  0, S_CDIAG3, 0},
+	{"S_CDIAG3", 0, SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG4, 0},
+	{"S_CDIAG4", 0, SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG5, 0},
+	{"S_CDIAG5", 0, SPR_CSPR, 4, 1, {A_CrushclawAim}, 50, 20, S_CDIAG6, 0},
+	{"S_CDIAG6", 0, SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG7, 0},
+	{"S_CDIAG7", 0, SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG8, 0},
+	{"S_CDIAG8", 0, SPR_CSPR, 1, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0},
 
 	// Jet Jaw
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM2, 0}, // S_JETJAW_ROAM1
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM3, 0}, // S_JETJAW_ROAM2
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM4, 0}, // S_JETJAW_ROAM3
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM5, 0}, // S_JETJAW_ROAM4
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM6, 0}, // S_JETJAW_ROAM5
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM7, 0}, // S_JETJAW_ROAM6
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM8, 0}, // S_JETJAW_ROAM7
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM1, 0}, // S_JETJAW_ROAM8
-	{SPR_JJAW, 0, 1, {A_DualAction}, S_JETJAW_CHOMP16, S_JETJAW_SOUND,  S_JETJAW_CHOMP2, 0}, // S_JETJAW_CHOMP1
-	{SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP3, 0}, // S_JETJAW_CHOMP2
-	{SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP4, 0}, // S_JETJAW_CHOMP3
-	{SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP5, 0}, // S_JETJAW_CHOMP4
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP6, 0}, // S_JETJAW_CHOMP5
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP7, 0}, // S_JETJAW_CHOMP6
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP8, 0}, // S_JETJAW_CHOMP7
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP9, 0}, // S_JETJAW_CHOMP8
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP10, 0}, // S_JETJAW_CHOMP9
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP11, 0}, // S_JETJAW_CHOMP10
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP12, 0}, // S_JETJAW_CHOMP11
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP13, 0}, // S_JETJAW_CHOMP12
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP14, 0}, // S_JETJAW_CHOMP13
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP15, 0}, // S_JETJAW_CHOMP14
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP16, 0}, // S_JETJAW_CHOMP15
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP1, 0}, // S_JETJAW_CHOMP16
-	{SPR_JJAW, 0, 1, {A_PlayAttackSound},          0,               0,   S_JETJAW_SOUND, 0}, // S_JETJAW_SOUND
+	{"S_JETJAW_ROAM1", 0, SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM2, 0},
+	{"S_JETJAW_ROAM2", 0, SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM3, 0},
+	{"S_JETJAW_ROAM3", 0, SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM4, 0},
+	{"S_JETJAW_ROAM4", 0, SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM5, 0},
+	{"S_JETJAW_ROAM5", 0, SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM6, 0},
+	{"S_JETJAW_ROAM6", 0, SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM7, 0},
+	{"S_JETJAW_ROAM7", 0, SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM8, 0},
+	{"S_JETJAW_ROAM8", 0, SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM1, 0},
+	{"S_JETJAW_CHOMP1", 0, SPR_JJAW, 0, 1, {A_DualAction}, S_JETJAW_CHOMP16, S_JETJAW_SOUND,  S_JETJAW_CHOMP2, 0},
+	{"S_JETJAW_CHOMP2", 0, SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP3, 0},
+	{"S_JETJAW_CHOMP3", 0, SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP4, 0},
+	{"S_JETJAW_CHOMP4", 0, SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP5, 0},
+	{"S_JETJAW_CHOMP5", 0, SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP6, 0},
+	{"S_JETJAW_CHOMP6", 0, SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP7, 0},
+	{"S_JETJAW_CHOMP7", 0, SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP8, 0},
+	{"S_JETJAW_CHOMP8", 0, SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP9, 0},
+	{"S_JETJAW_CHOMP9", 0, SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP10, 0},
+	{"S_JETJAW_CHOMP10", 0, SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP11, 0},
+	{"S_JETJAW_CHOMP11", 0, SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP12, 0},
+	{"S_JETJAW_CHOMP12", 0, SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP13, 0},
+	{"S_JETJAW_CHOMP13", 0, SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP14, 0},
+	{"S_JETJAW_CHOMP14", 0, SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP15, 0},
+	{"S_JETJAW_CHOMP15", 0, SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP16, 0},
+	{"S_JETJAW_CHOMP16", 0, SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP1, 0},
+	{"S_JETJAW_SOUND", 0, SPR_JJAW, 0, 1, {A_PlayAttackSound},          0,               0,   S_JETJAW_SOUND, 0},
 
 	// Snailer
-	{SPR_SNLR, 0, 1, {A_SnailerThink}, 0, 0, S_SNAILER1, 0}, // S_SNAILER1
-	{SPR_BOM1, 0, 0, {A_FlickySpawn}, 1<<17, 0, S_XPLD1, 0}, // S_SNAILER_FLICKY
+	{"S_SNAILER1", 0, SPR_SNLR, 0, 1, {A_SnailerThink}, 0, 0, S_SNAILER1, 0},
+	{"S_SNAILER_FLICKY", 0, SPR_BOM1, 0, 0, {A_FlickySpawn}, 1<<17, 0, S_XPLD1, 0},
 
 	// Vulture
-	{SPR_VLTR, 4, 35,        {A_Look},         1, 0, S_VULTURE_STND, 0},  // S_VULTURE_STND
-	{SPR_VLTR, 4, 3,         {A_VultureHover}, 0, 0, S_VULTURE_DRIFT, 0}, // S_VULTURE_DRIFT
-	{SPR_VLTR, 0, 6,         {A_VultureBlast}, 0, 0, S_VULTURE_ZOOM2, 0}, // S_VULTURE_ZOOM1
-	{SPR_VLTR, 0, 3,         {A_VultureFly},   0, 0, S_VULTURE_ZOOM2, 0}, // S_VULTURE_ZOOM2
-	{SPR_VLTR, 0, 3*TICRATE, {NULL},           0, 0, S_VULTURE_DRIFT, 0}, // S_VULTURE_STUNNED
+	{"S_VULTURE_STND", 0, SPR_VLTR, 4, 35,        {A_Look},         1, 0, S_VULTURE_STND, 0},
+	{"S_VULTURE_DRIFT", 0, SPR_VLTR, 4, 3,         {A_VultureHover}, 0, 0, S_VULTURE_DRIFT, 0},
+	{"S_VULTURE_ZOOM1", 0, SPR_VLTR, 0, 6,         {A_VultureBlast}, 0, 0, S_VULTURE_ZOOM2, 0},
+	{"S_VULTURE_ZOOM2", 0, SPR_VLTR, 0, 3,         {A_VultureFly},   0, 0, S_VULTURE_ZOOM2, 0},
+	{"S_VULTURE_STUNNED", 0, SPR_VLTR, 0, 3*TICRATE, {NULL},           0, 0, S_VULTURE_DRIFT, 0},
 
 	// Pointy
-	{SPR_PNTY, 0,  1, {A_PointyThink}, 0, 0, S_POINTY1, 0}, // S_POINTY1
+	{"S_POINTY1", 0, SPR_PNTY, 0,  1, {A_PointyThink}, 0, 0, S_POINTY1, 0},
 
 	// Pointy Ball
-	{SPR_PNTY, 1,  1, {A_CheckBuddy}, 0, 0, S_POINTYBALL1, 0}, // S_POINTYBALL1
+	{"S_POINTYBALL1", 0, SPR_PNTY, 1,  1, {A_CheckBuddy}, 0, 0, S_POINTYBALL1, 0},
 
 	// Robo-Hood
-	{SPR_ARCH, 0,       4,            {A_Look}, 2048<<FRACBITS,   0, S_ROBOHOOD_LOOK, 0},  // S_ROBOHOOD_LOOK
-	{SPR_ARCH, 0,       1,       {A_HoodThink},              0,   0, S_ROBOHOOD_STAND, 0}, // S_ROBOHOOD_STAND
-	{SPR_ARCH, 2, TICRATE, {A_PlayActiveSound},              0,   0, S_ROBOHOOD_FIRE2, 0}, // S_ROBOHOOD_FIRE1
-	{SPR_ARCH, 2,      20,        {A_HoodFire},       MT_ARROW,   0, S_ROBOHOOD_STAND, 0}, // S_ROBOHOOD_FIRE2
-	{SPR_ARCH, 1,       1,      {A_FaceTarget},              0,   0, S_ROBOHOOD_JUMP2, 0}, // S_ROBOHOOD_JUMP1
-	{SPR_ARCH, 1,       1,        {A_BunnyHop},              4, -10, S_ROBOHOOD_JUMP3, 0}, // S_ROBOHOOD_JUMP2
-	{SPR_ARCH, 1,       1,        {A_HoodFall},              0,   0, S_ROBOHOOD_JUMP3, 0}, // S_ROBOHOOD_JUMP3
+	{"S_ROBOHOOD_LOOK", 0, SPR_ARCH, 0,       4,            {A_Look}, 2048<<FRACBITS,   0, S_ROBOHOOD_LOOK, 0},
+	{"S_ROBOHOOD_STAND", 0, SPR_ARCH, 0,       1,       {A_HoodThink},              0,   0, S_ROBOHOOD_STAND, 0},
+	{"S_ROBOHOOD_FIRE1", 0, SPR_ARCH, 2, TICRATE, {A_PlayActiveSound},              0,   0, S_ROBOHOOD_FIRE2, 0},
+	{"S_ROBOHOOD_FIRE2", 0, SPR_ARCH, 2,      20,        {A_HoodFire},       MT_ARROW,   0, S_ROBOHOOD_STAND, 0},
+	{"S_ROBOHOOD_JUMP1", 0, SPR_ARCH, 1,       1,      {A_FaceTarget},              0,   0, S_ROBOHOOD_JUMP2, 0},
+	{"S_ROBOHOOD_JUMP2", 0, SPR_ARCH, 1,       1,        {A_BunnyHop},              4, -10, S_ROBOHOOD_JUMP3, 0},
+	{"S_ROBOHOOD_JUMP3", 0, SPR_ARCH, 1,       1,        {A_HoodFall},              0,   0, S_ROBOHOOD_JUMP3, 0},
 
 	// Castlebot Facestabber
-	{SPR_CBFS, 0,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND2, 0},   // S_FACESTABBER_STND1
-	{SPR_CBFS, 1,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND3, 0},   // S_FACESTABBER_STND2
-	{SPR_CBFS, 2,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND4, 0},   // S_FACESTABBER_STND3
-	{SPR_CBFS, 3,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND5, 0},   // S_FACESTABBER_STND4
-	{SPR_CBFS, 4,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND6, 0},   // S_FACESTABBER_STND5
-	{SPR_CBFS, 5,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND1, 0},   // S_FACESTABBER_STND6
-	{SPR_CBFS, 0,  1,  {A_FaceStabRev},                  20, S_FACESTABBER_CHARGE2, S_FACESTABBER_CHARGE1, 0}, // S_FACESTABBER_CHARGE1
-	{SPR_CBFS, 0,  0,   {A_FaceTarget},                   0,                     0, S_FACESTABBER_CHARGE3, 0}, // S_FACESTABBER_CHARGE2
-	{SPR_CBFS, 7,  1, {A_FaceStabHurl},                   6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3, 0}, // S_FACESTABBER_CHARGE3
-	{SPR_CBFS, 7,  1, {A_FaceStabMiss}, 0,   S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4, 0}, // S_FACESTABBER_CHARGE4
-	{SPR_CBFS, 0, 35,         {A_Pain}, 0,                     0, S_FACESTABBER_STND1, 0}, // S_FACESTABBER_PAIN
-	{SPR_CBFS, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE2, 0},  // S_FACESTABBER_DIE1
-	{SPR_NULL, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE3, 0},  // S_FACESTABBER_DIE2
-	{SPR_NULL, 0,  0,       {A_Repeat}, 7, S_FACESTABBER_DIE1,    S_XPLD_FLICKY, 0},       // S_FACESTABBER_DIE3
-
-	{SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FACESTABBERSPEAR
+	{"S_FACESTABBER_STND1", 0, SPR_CBFS, 0,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND2, 0},
+	{"S_FACESTABBER_STND2", 0, SPR_CBFS, 1,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND3, 0},
+	{"S_FACESTABBER_STND3", 0, SPR_CBFS, 2,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND4, 0},
+	{"S_FACESTABBER_STND4", 0, SPR_CBFS, 3,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND5, 0},
+	{"S_FACESTABBER_STND5", 0, SPR_CBFS, 4,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND6, 0},
+	{"S_FACESTABBER_STND6", 0, SPR_CBFS, 5,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND1, 0},
+	{"S_FACESTABBER_CHARGE1", 0, SPR_CBFS, 0,  1,  {A_FaceStabRev},                  20, S_FACESTABBER_CHARGE2, S_FACESTABBER_CHARGE1, 0},
+	{"S_FACESTABBER_CHARGE2", 0, SPR_CBFS, 0,  0,   {A_FaceTarget},                   0,                     0, S_FACESTABBER_CHARGE3, 0},
+	{"S_FACESTABBER_CHARGE3", 0, SPR_CBFS, 7,  1, {A_FaceStabHurl},                   6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3, 0},
+	{"S_FACESTABBER_CHARGE4", 0, SPR_CBFS, 7,  1, {A_FaceStabMiss}, 0,   S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4, 0},
+	{"S_FACESTABBER_PAIN", 0, SPR_CBFS, 0, 35,         {A_Pain}, 0,                     0, S_FACESTABBER_STND1, 0},
+	{"S_FACESTABBER_DIE1", 0, SPR_CBFS, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE2, 0},
+	{"S_FACESTABBER_DIE2", 0, SPR_NULL, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE3, 0},
+	{"S_FACESTABBER_DIE3", 0, SPR_NULL, 0,  0,       {A_Repeat}, 7, S_FACESTABBER_DIE1,    S_XPLD_FLICKY, 0},
+
+	{"S_FACESTABBERSPEAR", 0, SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Egg Guard
-	{SPR_SPSH,  0,  1,       {A_Look}, 0, 0, S_EGGGUARD_STND, 0},  // S_EGGGUARD_STND
-	{SPR_SPSH,  1,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2, 0}, // S_EGGGUARD_WALK1
-	{SPR_SPSH,  2,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK3, 0}, // S_EGGGUARD_WALK2
-	{SPR_SPSH,  3,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK4, 0}, // S_EGGGUARD_WALK3
-	{SPR_SPSH,  4,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK1, 0}, // S_EGGGUARD_WALK4
-	{SPR_SPSH,  5,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD2, 0},  // S_EGGGUARD_MAD1
-	{SPR_SPSH,  6,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD3, 0},  // S_EGGGUARD_MAD2
-	{SPR_SPSH,  7, 15,         {NULL}, 0, 0, S_EGGGUARD_RUN1, 0},  // S_EGGGUARD_MAD3
-	{SPR_SPSH,  8,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN2, 0},  // S_EGGGUARD_RUN1
-	{SPR_SPSH,  9,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN3, 0},  // S_EGGGUARD_RUN2
-	{SPR_SPSH, 10,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4, 0},  // S_EGGGUARD_RUN3
-	{SPR_SPSH, 11,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1, 0},  // S_EGGGUARD_RUN4
-
-	{SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD, 0},  // S_EGGSHIELD
-	{SPR_ESHI, 0, TICRATE/2, {NULL}, 0, 0, S_NULL, 0}, // S_EGGSHIELDBREAK
+	{"S_EGGGUARD_STND", 0, SPR_SPSH,  0,  1,       {A_Look}, 0, 0, S_EGGGUARD_STND, 0},
+	{"S_EGGGUARD_WALK1", 0, SPR_SPSH,  1,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2, 0},
+	{"S_EGGGUARD_WALK2", 0, SPR_SPSH,  2,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK3, 0},
+	{"S_EGGGUARD_WALK3", 0, SPR_SPSH,  3,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK4, 0},
+	{"S_EGGGUARD_WALK4", 0, SPR_SPSH,  4,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK1, 0},
+	{"S_EGGGUARD_MAD1", 0, SPR_SPSH,  5,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD2, 0},
+	{"S_EGGGUARD_MAD2", 0, SPR_SPSH,  6,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD3, 0},
+	{"S_EGGGUARD_MAD3", 0, SPR_SPSH,  7, 15,         {NULL}, 0, 0, S_EGGGUARD_RUN1, 0},
+	{"S_EGGGUARD_RUN1", 0, SPR_SPSH,  8,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN2, 0},
+	{"S_EGGGUARD_RUN2", 0, SPR_SPSH,  9,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN3, 0},
+	{"S_EGGGUARD_RUN3", 0, SPR_SPSH, 10,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4, 0},
+	{"S_EGGGUARD_RUN4", 0, SPR_SPSH, 11,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1, 0},
+
+	{"S_EGGSHIELD", 0, SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD, 0},
+	{"S_EGGSHIELDBREAK", 0, SPR_ESHI, 0, TICRATE/2, {NULL}, 0, 0, S_NULL, 0},
 
 	// Green Snapper
-	{SPR_GSNP, 0, TICRATE, {NULL},             0,              0,               S_SNAPPER_SPAWN2, 0}, // S_SNAPPER_SPAWN
-	{SPR_GSNP, 0, 2,       {A_SnapperSpawn},   MT_SNAPPER_LEG, MT_SNAPPER_HEAD, S_GSNAPPER_STND, 0},  // S_SNAPPER_SPAWN2
-	{SPR_GSNP, 0, 1,       {A_SnapperThinker}, 0,              0,               S_GSNAPPER_STND, 0},  // S_GSNAPPER_STND
-	{SPR_GSNP, 0, 2,       {A_Chase},          0,              0,               S_GSNAPPER2, 0},      // S_GSNAPPER1
-	{SPR_GSNP, 1, 2,       {A_Chase},          0,              0,               S_GSNAPPER3, 0},      // S_GSNAPPER2
-	{SPR_GSNP, 2, 2,       {A_Chase},          0,              0,               S_GSNAPPER4, 0},      // S_GSNAPPER3
-	{SPR_GSNP, 3, 2,       {A_Chase},          0,              0,               S_GSNAPPER1, 0},      // S_GSNAPPER4
-	{SPR_GSNP, 0, 0,       {A_KillSegments},   0,              0,               S_XPLD_FLICKY, 0},    // S_SNAPPER_XPLD
-	{SPR_GSNL, 0, -1,      {NULL},             0,              0,               S_NULL, 0},           // S_SNAPPER_LEG
-	{SPR_GSNL, 1, -1,      {NULL},             0,              0,               S_NULL, 0},           // S_SNAPPER_LEGRAISE
-	{SPR_GSNH, 0, -1,      {NULL},             0,              0,               S_NULL, 0},           // S_SNAPPER_HEAD
+	{"S_SNAPPER_SPAWN", 0, SPR_GSNP, 0, TICRATE, {NULL},             0,              0,               S_SNAPPER_SPAWN2, 0},
+	{"S_SNAPPER_SPAWN2", 0, SPR_GSNP, 0, 2,       {A_SnapperSpawn},   MT_SNAPPER_LEG, MT_SNAPPER_HEAD, S_GSNAPPER_STND, 0},
+	{"S_GSNAPPER_STND", 0, SPR_GSNP, 0, 1,       {A_SnapperThinker}, 0,              0,               S_GSNAPPER_STND, 0},
+	{"S_GSNAPPER1", 0, SPR_GSNP, 0, 2,       {A_Chase},          0,              0,               S_GSNAPPER2, 0},
+	{"S_GSNAPPER2", 0, SPR_GSNP, 1, 2,       {A_Chase},          0,              0,               S_GSNAPPER3, 0},
+	{"S_GSNAPPER3", 0, SPR_GSNP, 2, 2,       {A_Chase},          0,              0,               S_GSNAPPER4, 0},
+	{"S_GSNAPPER4", 0, SPR_GSNP, 3, 2,       {A_Chase},          0,              0,               S_GSNAPPER1, 0},
+	{"S_SNAPPER_XPLD", 0, SPR_GSNP, 0, 0,       {A_KillSegments},   0,              0,               S_XPLD_FLICKY, 0},
+	{"S_SNAPPER_LEG", 0, SPR_GSNL, 0, -1,      {NULL},             0,              0,               S_NULL, 0},
+	{"S_SNAPPER_LEGRAISE", 0, SPR_GSNL, 1, -1,      {NULL},             0,              0,               S_NULL, 0},
+	{"S_SNAPPER_HEAD", 0, SPR_GSNH, 0, -1,      {NULL},             0,              0,               S_NULL, 0},
 
 	// Minus
-	{SPR_MNUD, 0,            1,  {NULL},           0, 0, S_MINUS_STND, 0},     // S_MINUS_INIT (required for objectplace to work)
-	{SPR_NULL, 0,            10, {A_Look},         0, 0, S_MINUS_STND, 0},     // S_MINUS_STND
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 1, 0, S_MINUS_DIGGING2, 0}, // S_MINUS_DIGGING1
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING3, 0}, // S_MINUS_DIGGING2
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING4, 0}, // S_MINUS_DIGGING3
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING1, 0}, // S_MINUS_DIGGING4
-	{SPR_NULL, 0,            25, {NULL},           0, 0, S_MINUS_POPUP, 0},    // S_MINUS_BURST0
-	{SPR_MNUD, FF_ANIMATE,   5,  {NULL},           1, 2, S_MINUS_BURST2, 0},   // S_MINUS_BURST1
-	{SPR_MNUD, 1|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST3, 0},   // S_MINUS_BURST2
-	{SPR_MNUD, 2|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST4, 0},   // S_MINUS_BURST3
-	{SPR_MNUD, 3|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST5, 0},   // S_MINUS_BURST4
-	{SPR_MNUD, 4|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUSDIRT2, 0},     // S_MINUS_BURST5
-	{SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1, 0}, // S_MINUS_POPUP
-	{SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2, 0},   // S_MINUS_AERIAL1
-	{SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3, 0},   // S_MINUS_AERIAL2
-	{SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4, 0},   // S_MINUS_AERIAL3
-	{SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1, 0},   // S_MINUS_AERIAL4
-
-	{SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2, 0}, // S_MINUSDIRT1
-	{SPR_MNUD, 5,          8, {NULL}, 3, 5, S_MINUSDIRT3, 0}, // S_MINUSDIRT2
-	{SPR_MNUD, 4,          8, {NULL}, 3, 5, S_MINUSDIRT4, 0}, // S_MINUSDIRT3
-	{SPR_MNUD, 3,          8, {NULL}, 3, 5, S_MINUSDIRT5, 0}, // S_MINUSDIRT4
-	{SPR_MNUD, 2,          8, {NULL}, 3, 5, S_MINUSDIRT6, 0}, // S_MINUSDIRT5
-	{SPR_MNUD, 1,          8, {NULL}, 3, 5, S_MINUSDIRT7, 0}, // S_MINUSDIRT6
-	{SPR_MNUD, 0,          8, {NULL}, 3, 5, S_NULL, 0},       // S_MINUSDIRT7
+	{"S_MINUS_INIT", 0, SPR_MNUD, 0,            1,  {NULL},           0, 0, S_MINUS_STND, 0}, // (required for objectplace to work)
+	{"S_MINUS_STND", 0, SPR_NULL, 0,            10, {A_Look},         0, 0, S_MINUS_STND, 0},
+	{"S_MINUS_DIGGING1", 0, SPR_NULL, 0,            1,  {A_MinusDigging}, 1, 0, S_MINUS_DIGGING2, 0},
+	{"S_MINUS_DIGGING2", 0, SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING3, 0},
+	{"S_MINUS_DIGGING3", 0, SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING4, 0},
+	{"S_MINUS_DIGGING4", 0, SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING1, 0},
+	{"S_MINUS_BURST0", 0, SPR_NULL, 0,            25, {NULL},           0, 0, S_MINUS_POPUP, 0},
+	{"S_MINUS_BURST1", 0, SPR_MNUD, FF_ANIMATE,   5,  {NULL},           1, 2, S_MINUS_BURST2, 0},
+	{"S_MINUS_BURST2", 0, SPR_MNUD, 1|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST3, 0},
+	{"S_MINUS_BURST3", 0, SPR_MNUD, 2|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST4, 0},
+	{"S_MINUS_BURST4", 0, SPR_MNUD, 3|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST5, 0},
+	{"S_MINUS_BURST5", 0, SPR_MNUD, 4|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUSDIRT2, 0},
+	{"S_MINUS_POPUP", 0, SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1, 0},
+	{"S_MINUS_AERIAL1", 0, SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2, 0},
+	{"S_MINUS_AERIAL2", 0, SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3, 0},
+	{"S_MINUS_AERIAL3", 0, SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4, 0},
+	{"S_MINUS_AERIAL4", 0, SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1, 0},
+
+	{"S_MINUSDIRT1", 0, SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2, 0},
+	{"S_MINUSDIRT2", 0, SPR_MNUD, 5,          8, {NULL}, 3, 5, S_MINUSDIRT3, 0},
+	{"S_MINUSDIRT3", 0, SPR_MNUD, 4,          8, {NULL}, 3, 5, S_MINUSDIRT4, 0},
+	{"S_MINUSDIRT4", 0, SPR_MNUD, 3,          8, {NULL}, 3, 5, S_MINUSDIRT5, 0},
+	{"S_MINUSDIRT5", 0, SPR_MNUD, 2,          8, {NULL}, 3, 5, S_MINUSDIRT6, 0},
+	{"S_MINUSDIRT6", 0, SPR_MNUD, 1,          8, {NULL}, 3, 5, S_MINUSDIRT7, 0},
+	{"S_MINUSDIRT7", 0, SPR_MNUD, 0,          8, {NULL}, 3, 5, S_NULL, 0},
 
 	// Spring Shell
-	{SPR_SSHL,  0,  4, {A_Look},  0, 0, S_SSHELL_STND, 0},    // S_SSHELL_STND
-	{SPR_SSHL,  0,  4, {A_Chase}, 0, 0, S_SSHELL_RUN2, 0},    // S_SSHELL_RUN1
-	{SPR_SSHL,  1,  4, {A_Chase}, 0, 0, S_SSHELL_RUN3, 0},    // S_SSHELL_RUN2
-	{SPR_SSHL,  2,  4, {A_Chase}, 0, 0, S_SSHELL_RUN4, 0},    // S_SSHELL_RUN3
-	{SPR_SSHL,  3,  4, {A_Chase}, 0, 0, S_SSHELL_RUN1, 0},    // S_SSHELL_RUN4
-	{SPR_SSHL,  7,  4, {A_Pain},  0, 0, S_SSHELL_SPRING2, 0}, // S_SSHELL_SPRING1
-	{SPR_SSHL,  6,  1, {NULL},    0, 0, S_SSHELL_SPRING3, 0}, // S_SSHELL_SPRING2
-	{SPR_SSHL,  5,  1, {NULL},    0, 0, S_SSHELL_SPRING4, 0}, // S_SSHELL_SPRING3
-	{SPR_SSHL,  4,  1, {NULL},    0, 0, S_SSHELL_RUN1, 0},    // S_SSHELL_SPRING4
+	{"S_SSHELL_STND", 0, SPR_SSHL,  0,  4, {A_Look},  0, 0, S_SSHELL_STND, 0},
+	{"S_SSHELL_RUN1", 0, SPR_SSHL,  0,  4, {A_Chase}, 0, 0, S_SSHELL_RUN2, 0},
+	{"S_SSHELL_RUN2", 0, SPR_SSHL,  1,  4, {A_Chase}, 0, 0, S_SSHELL_RUN3, 0},
+	{"S_SSHELL_RUN3", 0, SPR_SSHL,  2,  4, {A_Chase}, 0, 0, S_SSHELL_RUN4, 0},
+	{"S_SSHELL_RUN4", 0, SPR_SSHL,  3,  4, {A_Chase}, 0, 0, S_SSHELL_RUN1, 0},
+	{"S_SSHELL_SPRING1", 0, SPR_SSHL,  7,  4, {A_Pain},  0, 0, S_SSHELL_SPRING2, 0},
+	{"S_SSHELL_SPRING2", 0, SPR_SSHL,  6,  1, {NULL},    0, 0, S_SSHELL_SPRING3, 0},
+	{"S_SSHELL_SPRING3", 0, SPR_SSHL,  5,  1, {NULL},    0, 0, S_SSHELL_SPRING4, 0},
+	{"S_SSHELL_SPRING4", 0, SPR_SSHL,  4,  1, {NULL},    0, 0, S_SSHELL_RUN1, 0},
 
 	// Spring Shell (yellow)
-	{SPR_SSHL,  8,  4, {A_Look},  0, 0, S_YSHELL_STND, 0},    // S_YSHELL_STND
-	{SPR_SSHL,  8,  4, {A_Chase}, 0, 0, S_YSHELL_RUN2, 0},    // S_YSHELL_RUN1
-	{SPR_SSHL,  9,  4, {A_Chase}, 0, 0, S_YSHELL_RUN3, 0},    // S_YSHELL_RUN2
-	{SPR_SSHL, 10,  4, {A_Chase}, 0, 0, S_YSHELL_RUN4, 0},    // S_YSHELL_RUN3
-	{SPR_SSHL, 11,  4, {A_Chase}, 0, 0, S_YSHELL_RUN1, 0},    // S_YSHELL_RUN4
-	{SPR_SSHL, 15,  4, {A_Pain},  0, 0, S_YSHELL_SPRING2, 0}, // S_YSHELL_SPRING1
-	{SPR_SSHL, 14,  1, {NULL},    0, 0, S_YSHELL_SPRING3, 0}, // S_YSHELL_SPRING2
-	{SPR_SSHL, 13,  1, {NULL},    0, 0, S_YSHELL_SPRING4, 0}, // S_YSHELL_SPRING3
-	{SPR_SSHL, 12,  1, {NULL},    0, 0, S_YSHELL_RUN1, 0},    // S_YSHELL_SPRING4
+	{"S_YSHELL_STND", 0, SPR_SSHL,  8,  4, {A_Look},  0, 0, S_YSHELL_STND, 0},
+	{"S_YSHELL_RUN1", 0, SPR_SSHL,  8,  4, {A_Chase}, 0, 0, S_YSHELL_RUN2, 0},
+	{"S_YSHELL_RUN2", 0, SPR_SSHL,  9,  4, {A_Chase}, 0, 0, S_YSHELL_RUN3, 0},
+	{"S_YSHELL_RUN3", 0, SPR_SSHL, 10,  4, {A_Chase}, 0, 0, S_YSHELL_RUN4, 0},
+	{"S_YSHELL_RUN4", 0, SPR_SSHL, 11,  4, {A_Chase}, 0, 0, S_YSHELL_RUN1, 0},
+	{"S_YSHELL_SPRING1", 0, SPR_SSHL, 15,  4, {A_Pain},  0, 0, S_YSHELL_SPRING2, 0},
+	{"S_YSHELL_SPRING2", 0, SPR_SSHL, 14,  1, {NULL},    0, 0, S_YSHELL_SPRING3, 0},
+	{"S_YSHELL_SPRING3", 0, SPR_SSHL, 13,  1, {NULL},    0, 0, S_YSHELL_SPRING4, 0},
+	{"S_YSHELL_SPRING4", 0, SPR_SSHL, 12,  1, {NULL},    0, 0, S_YSHELL_RUN1, 0},
 
 	// Unidus
-	{SPR_UNID, 0, 4, {A_Look},       0, 0, S_UNIDUS_STND, 0}, // S_UNIDUS_STND
-	{SPR_UNID, 0, 1, {A_Chase},      0, 0, S_UNIDUS_RUN , 0}, // S_UNIDUS_RUN
-	{SPR_UNID, 1, 1, {A_UnidusBall}, 1, 0, S_UNIDUS_BALL, 0}, // S_UNIDUS_BALL
+	{"S_UNIDUS_STND", 0, SPR_UNID, 0, 4, {A_Look},       0, 0, S_UNIDUS_STND, 0},
+	{"S_UNIDUS_RUN", 0, SPR_UNID, 0, 1, {A_Chase},      0, 0, S_UNIDUS_RUN , 0},
+	{"S_UNIDUS_BALL", 0, SPR_UNID, 1, 1, {A_UnidusBall}, 1, 0, S_UNIDUS_BALL, 0},
 
 	// Canarivore
-	{SPR_CANA, 0, 5,  {A_Look},          1200*FRACUNIT+1,   1,                 S_CANARIVORE_LOOK, 0},      // S_CANARIVORE_LOOK
-	{SPR_CANA, 0, 3,  {A_PlaySound},     sfx_s3k76,         1,                 S_CANARIVORE_AWAKEN2, 0},   // S_CANARIVORE_AWAKEN1
-	{SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_AWAKEN3, 0},   // S_CANARIVORE_AWAKEN2
-	{SPR_CANA, 2, 8,  {NULL},            0,                 0,                 S_CANARIVORE_GAS1, 0},      // S_CANARIVORE_AWAKEN3
-	{SPR_CANA, 2, 15, {A_PlaySound},     sfx_s3k93,         1,                 S_CANARIVORE_GAS2, 0},      // S_CANARIVORE_GAS1
-	{SPR_CANA, 1, 4,  {NULL},            0,                 0,                 S_CANARIVORE_GAS3, 0},      // S_CANARIVORE_GAS2
-	{SPR_CANA, 2, 0,  {A_PlaySound},     sfx_s3k97,         1,                 S_CANARIVORE_GAS4, 0},      // S_CANARIVORE_GAS3
-	{SPR_CANA, 2, 5,  {A_CanarivoreGas}, MT_CANARIVORE_GAS, 0,                 S_CANARIVORE_GAS5, 0},      // S_CANARIVORE_GAS4
-	{SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_GASREPEAT, 0}, // S_CANARIVORE_GAS5
-	{SPR_CANA, 2, 0,  {A_Repeat},        6,                 S_CANARIVORE_GAS4, S_CANARIVORE_CLOSE1, 0},    // S_CANARIVORE_GASREPEAT
-	{SPR_CANA, 1, 8,  {NULL},            0,                 0,                 S_CANARIVORE_CLOSE2, 0},     // S_CANARIVORE_CLOSE1
-	{SPR_CANA, 0, 90, {NULL},            sfx_s3k5d,         1,                 S_CANARIVORE_LOOK, 0},      // S_CANARIVORE_CLOSE2
-
-	{SPR_CANG, 0|FF_TRANS90, 2,         {NULL},            0, 0,       S_CANARIVOREGAS_2, 0}, // S_CANARIVOREGAS_1
-	{SPR_CANG, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_CANARIVOREGAS_3, 0}, // S_CANARIVOREGAS_2
-	{SPR_CANG, 0|FF_TRANS40, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_4, 0}, // S_CANARIVOREGAS_3
-	{SPR_CANG, 0|FF_TRANS50, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_5, 0}, // S_CANARIVOREGAS_4
-	{SPR_CANG, 0|FF_TRANS60, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_6, 0}, // S_CANARIVOREGAS_5
-	{SPR_CANG, 0|FF_TRANS70, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_7, 0}, // S_CANARIVOREGAS_6
-	{SPR_CANG, 0|FF_TRANS80, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_8, 0}, // S_CANARIVOREGAS_7
-	{SPR_CANG, 0|FF_TRANS90, 10,        {NULL},            0, 0,       S_NULL, 0},            // S_CANARIVOREGAS_8
+	{"S_CANARIVORE_LOOK", 0, SPR_CANA, 0, 5,  {A_Look},          1200*FRACUNIT+1,   1,                 S_CANARIVORE_LOOK, 0},
+	{"S_CANARIVORE_AWAKEN1", 0, SPR_CANA, 0, 3,  {A_PlaySound},     sfx_s3k76,         1,                 S_CANARIVORE_AWAKEN2, 0},
+	{"S_CANARIVORE_AWAKEN2", 0, SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_AWAKEN3, 0},
+	{"S_CANARIVORE_AWAKEN3", 0, SPR_CANA, 2, 8,  {NULL},            0,                 0,                 S_CANARIVORE_GAS1, 0},
+	{"S_CANARIVORE_GAS1", 0, SPR_CANA, 2, 15, {A_PlaySound},     sfx_s3k93,         1,                 S_CANARIVORE_GAS2, 0},
+	{"S_CANARIVORE_GAS2", 0, SPR_CANA, 1, 4,  {NULL},            0,                 0,                 S_CANARIVORE_GAS3, 0},
+	{"S_CANARIVORE_GAS3", 0, SPR_CANA, 2, 0,  {A_PlaySound},     sfx_s3k97,         1,                 S_CANARIVORE_GAS4, 0},
+	{"S_CANARIVORE_GAS4", 0, SPR_CANA, 2, 5,  {A_CanarivoreGas}, MT_CANARIVORE_GAS, 0,                 S_CANARIVORE_GAS5, 0},
+	{"S_CANARIVORE_GAS5", 0, SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_GASREPEAT, 0},
+	{"S_CANARIVORE_GASREPEAT", 0, SPR_CANA, 2, 0,  {A_Repeat},        6,                 S_CANARIVORE_GAS4, S_CANARIVORE_CLOSE1, 0},
+	{"S_CANARIVORE_CLOSE1", 0, SPR_CANA, 1, 8,  {NULL},            0,                 0,                 S_CANARIVORE_CLOSE2, 0},
+	{"S_CANARIVORE_CLOSE2", 0, SPR_CANA, 0, 90, {NULL},            sfx_s3k5d,         1,                 S_CANARIVORE_LOOK, 0},
+
+	{"S_CANARIVOREGAS_1", 0, SPR_CANG, 0|FF_TRANS90, 2,         {NULL},            0, 0,       S_CANARIVOREGAS_2, 0},
+	{"S_CANARIVOREGAS_2", 0, SPR_CANG, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_CANARIVOREGAS_3, 0},
+	{"S_CANARIVOREGAS_3", 0, SPR_CANG, 0|FF_TRANS40, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_4, 0},
+	{"S_CANARIVOREGAS_4", 0, SPR_CANG, 0|FF_TRANS50, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_5, 0},
+	{"S_CANARIVOREGAS_5", 0, SPR_CANG, 0|FF_TRANS60, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_6, 0},
+	{"S_CANARIVOREGAS_6", 0, SPR_CANG, 0|FF_TRANS70, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_7, 0},
+	{"S_CANARIVOREGAS_7", 0, SPR_CANG, 0|FF_TRANS80, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_8, 0},
+	{"S_CANARIVOREGAS_8", 0, SPR_CANG, 0|FF_TRANS90, 10,        {NULL},            0, 0,       S_NULL, 0},
 
 	// Pyre Fly
-	{SPR_PYRE, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL, 0}, // S_PYREFLY_FLY
-	{SPR_PYRE, 4|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 3, 2, S_NULL, 0}, // S_PYREFLY_BURN
-	{SPR_FLAM, FF_FULLBRIGHT, 10, {NULL}, 0, 0, S_PYREFIRE2, 0}, // S_PYREFIRE1
-	{SPR_FLAM, 1|FF_FULLBRIGHT, 10, {A_FireShrink}, 0, 16, S_NULL, 0}, // S_PYREFIRE2
+	{"S_PYREFLY_FLY", 0, SPR_PYRE, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL, 0},
+	{"S_PYREFLY_BURN", 0, SPR_PYRE, 4|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 3, 2, S_NULL, 0},
+	{"S_PYREFIRE1", 0, SPR_FLAM, FF_FULLBRIGHT, 10, {NULL}, 0, 0, S_PYREFIRE2, 0},
+	{"S_PYREFIRE2", 0, SPR_FLAM, 1|FF_FULLBRIGHT, 10, {A_FireShrink}, 0, 16, S_NULL, 0},
 
 	// Pterabyte
-	{SPR_NULL, 0, -1, {A_SpawnPterabytes}, 0, 0, S_PTERABYTESPAWNER, 0},    // S_PTERABYTESPAWNER
-	{SPR_NULL, 0,  1, {A_PterabyteHover},  0, 0, S_PTERABYTEWAYPOINT, 0},   // S_PTERABYTEWAYPOINT
-	{SPR_PTER, 0,  6, {NULL},              0, 0, S_PTERABYTE_FLY2, 0},      // S_PTERABYTE_FLY1
-	{SPR_PTER, 1,  2, {NULL},              0, 0, S_PTERABYTE_FLY3, 0},      // S_PTERABYTE_FLY2
-	{SPR_PTER, 2,  6, {NULL},              0, 0, S_PTERABYTE_FLY4, 0},      // S_PTERABYTE_FLY3
-	{SPR_PTER, 3,  2, {NULL},              0, 0, S_PTERABYTE_FLY1, 0},      // S_PTERABYTE_FLY4
-	{SPR_PTER, 4,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPDOWN, 0}, // S_PTERABYTE_SWOOPDOWN
-	{SPR_PTER, 0,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPUP, 0},   // S_PTERABYTE_SWOOPUP
+	{"S_PTERABYTESPAWNER", 0, SPR_NULL, 0, -1, {A_SpawnPterabytes}, 0, 0, S_PTERABYTESPAWNER, 0},
+	{"S_PTERABYTEWAYPOINT", 0, SPR_NULL, 0,  1, {A_PterabyteHover},  0, 0, S_PTERABYTEWAYPOINT, 0},
+	{"S_PTERABYTE_FLY1", 0, SPR_PTER, 0,  6, {NULL},              0, 0, S_PTERABYTE_FLY2, 0},
+	{"S_PTERABYTE_FLY2", 0, SPR_PTER, 1,  2, {NULL},              0, 0, S_PTERABYTE_FLY3, 0},
+	{"S_PTERABYTE_FLY3", 0, SPR_PTER, 2,  6, {NULL},              0, 0, S_PTERABYTE_FLY4, 0},
+	{"S_PTERABYTE_FLY4", 0, SPR_PTER, 3,  2, {NULL},              0, 0, S_PTERABYTE_FLY1, 0},
+	{"S_PTERABYTE_SWOOPDOWN", 0, SPR_PTER, 4,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPDOWN, 0},
+	{"S_PTERABYTE_SWOOPUP", 0, SPR_PTER, 0,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPUP, 0},
 
 	// Dragonbomber
-	{SPR_DRAB,                0, -1, {A_DragonbomberSpawn}, 6, 0, S_NULL, 0},                          // S_DRAGONBOMBER
-	{SPR_DRAB, FF_PAPERSPRITE|7,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING2, 0},                   // S_DRAGONWING1
-	{SPR_DRAB, FF_PAPERSPRITE|8,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING3, 0},                   // S_DRAGONWING2
-	{SPR_DRAB, FF_PAPERSPRITE|9,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING4, 0},                   // S_DRAGONWING3
-	{SPR_DRAB, FF_PAPERSPRITE|10, 1,        {A_DragonWing}, 0, 0, S_DRAGONWING1, 0},                   // S_DRAGONWING4
-	{SPR_DRAB,                1,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_LOADED, 0},             // S_DRAGONTAIL_LOADED
-	{SPR_DRAB,                2,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_EMPTYLOOP, 0},          // S_DRAGONTAIL_EMPTY
-	{SPR_DRAB,                2,  0,            {A_Repeat}, 3*TICRATE, S_DRAGONTAIL_EMPTY, S_DRAGONTAIL_RELOAD, 0}, // S_DRAGONTAIL_EMPTYLOOP
-	{SPR_DRAB,                1,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONTAIL_LOADED, 0},             // S_DRAGONTAIL_RELOAD
-	{SPR_DRAB,                3,  1,        {A_MinusCheck}, S_DRAGONMINE_LAND1, 0, S_DRAGONMINE, 0},   // S_DRAGONMINE
-	{SPR_DRAB,                4,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONMINE_LAND2, 0},              // S_DRAGONMINE_LAND1
-	{SPR_DRAB,                4,  2,            {A_Thrust}, 0, 1, S_DRAGONMINE_SLOWFLASH1, 0},         // S_DRAGONMINE_LAND2
-	{SPR_DRAB,                5, 11,                {NULL}, 0, 0, S_DRAGONMINE_SLOWFLASH2, 0},         // S_DRAGONMINE_SLOWFLASH1
-	{SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_SLOWLOOP, 0},           // S_DRAGONMINE_SLOWFLASH2
-	{SPR_DRAB,                5,  0,            {A_Repeat}, 4, S_DRAGONMINE_SLOWFLASH1, S_DRAGONMINE_FASTFLASH1, 0}, // S_DRAGONMINE_SLOWLOOP
-	{SPR_DRAB,                5,  3,                {NULL}, 0, 0, S_DRAGONMINE_FASTFLASH2, 0},         // S_DRAGONMINE_FASTFLASH1
-	{SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_FASTLOOP, 0},           // S_DRAGONMINE_FASTFLASH2
-	{SPR_DRAB,                5,  0,            {A_Repeat}, 5, S_DRAGONMINE_FASTFLASH1, S_DEATHSTATE, 0}, // S_DRAGONMINE_FASTLOOP
+	{"S_DRAGONBOMBER", 0, SPR_DRAB,                0, -1, {A_DragonbomberSpawn}, 6, 0, S_NULL, 0},
+	{"S_DRAGONWING1", 0, SPR_DRAB, FF_PAPERSPRITE|7,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING2, 0},
+	{"S_DRAGONWING2", 0, SPR_DRAB, FF_PAPERSPRITE|8,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING3, 0},
+	{"S_DRAGONWING3", 0, SPR_DRAB, FF_PAPERSPRITE|9,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING4, 0},
+	{"S_DRAGONWING4", 0, SPR_DRAB, FF_PAPERSPRITE|10, 1,        {A_DragonWing}, 0, 0, S_DRAGONWING1, 0},
+	{"S_DRAGONTAIL_LOADED", 0, SPR_DRAB,                1,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_LOADED, 0},
+	{"S_DRAGONTAIL_EMPTY", 0, SPR_DRAB,                2,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_EMPTYLOOP, 0},
+	{"S_DRAGONTAIL_EMPTYLOOP", 0, SPR_DRAB,                2,  0,            {A_Repeat}, 3*TICRATE, S_DRAGONTAIL_EMPTY, S_DRAGONTAIL_RELOAD, 0},
+	{"S_DRAGONTAIL_RELOAD", 0, SPR_DRAB,                1,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONTAIL_LOADED, 0},
+	{"S_DRAGONMINE", 0, SPR_DRAB,                3,  1,        {A_MinusCheck}, S_DRAGONMINE_LAND1, 0, S_DRAGONMINE, 0},
+	{"S_DRAGONMINE_LAND1", 0, SPR_DRAB,                4,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONMINE_LAND2, 0},
+	{"S_DRAGONMINE_LAND2", 0, SPR_DRAB,                4,  2,            {A_Thrust}, 0, 1, S_DRAGONMINE_SLOWFLASH1, 0},
+	{"S_DRAGONMINE_SLOWFLASH1", 0, SPR_DRAB,                5, 11,                {NULL}, 0, 0, S_DRAGONMINE_SLOWFLASH2, 0},
+	{"S_DRAGONMINE_SLOWFLASH2", 0, SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_SLOWLOOP, 0},
+	{"S_DRAGONMINE_SLOWLOOP", 0, SPR_DRAB,                5,  0,            {A_Repeat}, 4, S_DRAGONMINE_SLOWFLASH1, S_DRAGONMINE_FASTFLASH1, 0},
+	{"S_DRAGONMINE_FASTFLASH1", 0, SPR_DRAB,                5,  3,                {NULL}, 0, 0, S_DRAGONMINE_FASTFLASH2, 0},
+	{"S_DRAGONMINE_FASTFLASH2", 0, SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_FASTLOOP, 0},
+	{"S_DRAGONMINE_FASTLOOP", 0, SPR_DRAB,                5,  0,            {A_Repeat}, 5, S_DRAGONMINE_FASTFLASH1, S_DEATHSTATE, 0},
 
 	// Boss Explosion
-	{SPR_BOM2, FF_FULLBRIGHT|FF_ANIMATE, (5*7), {NULL}, 6, 5, S_NULL, 0}, // S_BOSSEXPLODE
+	{"S_BOSSEXPLODE", 0, SPR_BOM2, FF_FULLBRIGHT|FF_ANIMATE, (5*7), {NULL}, 6, 5, S_NULL, 0},
 
 	// S3&K Boss Explosion
-	{SPR_BOM3, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION2, 0}, // S_SONIC3KBOSSEXPLOSION1
-	{SPR_BOM3, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION3, 0}, // S_SONIC3KBOSSEXPLOSION2
-	{SPR_BOM3, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION4, 0}, // S_SONIC3KBOSSEXPLOSION3
-	{SPR_BOM3, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION5, 0}, // S_SONIC3KBOSSEXPLOSION4
-	{SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6, 0}, // S_SONIC3KBOSSEXPLOSION5
-	{SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL, 0}, // S_SONIC3KBOSSEXPLOSION6
+	{"S_SONIC3KBOSSEXPLOSION1", 0, SPR_BOM3, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION2, 0},
+	{"S_SONIC3KBOSSEXPLOSION2", 0, SPR_BOM3, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION3, 0},
+	{"S_SONIC3KBOSSEXPLOSION3", 0, SPR_BOM3, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION4, 0},
+	{"S_SONIC3KBOSSEXPLOSION4", 0, SPR_BOM3, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION5, 0},
+	{"S_SONIC3KBOSSEXPLOSION5", 0, SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6, 0},
+	{"S_SONIC3KBOSSEXPLOSION6", 0, SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_JETF, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 2, 1, S_NULL, 0}, // S_JETFUME1
+	{"S_JETFUME1", 0, SPR_JETF, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 2, 1, S_NULL, 0},
 
 	// Boss 1
-	{SPR_EGGM,  0,   1, {A_Boss1Chase},            0, 0, S_EGGMOBILE_STND, 0},   // S_EGGMOBILE_STND
-	{SPR_EGGM, FF_ANIMATE|17, 35, {A_FaceTarget},  1, 2, S_EGGMOBILE_STND, 0},   // S_EGGMOBILE_ROFL
-	{SPR_EGGM,  1,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK2, 0},  // S_EGGMOBILE_LATK1
-	{SPR_EGGM,  2,  15, {NULL},                    0, 0, S_EGGMOBILE_LATK3, 0},  // S_EGGMOBILE_LATK2
-	{SPR_EGGM,  3,   2, {NULL},                    0, 0, S_EGGMOBILE_LATK4, 0},  // S_EGGMOBILE_LATK3
-	{SPR_EGGM,  4,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK5, 0},  // S_EGGMOBILE_LATK4
-	{SPR_EGGM,  6,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_LATK6, 0},  // S_EGGMOBILE_LATK5
-	{SPR_EGGM,  5,   1, {A_Boss1Laser},     MT_LASER, 0, S_EGGMOBILE_LATK7, 0},  // S_EGGMOBILE_LATK6
-	{SPR_EGGM,  6,   1, {A_Boss1Laser},     MT_LASER, (1<<16), S_EGGMOBILE_LATK8, 0},  // S_EGGMOBILE_LATK7
-	{SPR_EGGM,  5,   0, {A_Repeat}, 45, S_EGGMOBILE_LATK6, S_EGGMOBILE_LATK9, 0},  // S_EGGMOBILE_LATK8
-	{SPR_EGGM,  8,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL, 0}, // S_EGGMOBILE_LATK9
-	{SPR_EGGM,  9,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK2, 0},  // S_EGGMOBILE_RATK1
-	{SPR_EGGM, 10,  15, {NULL},                    0, 0, S_EGGMOBILE_RATK3, 0},  // S_EGGMOBILE_RATK2
-	{SPR_EGGM, 11,   2, {NULL},                    0, 0, S_EGGMOBILE_RATK4, 0},  // S_EGGMOBILE_RATK3
-	{SPR_EGGM, 12,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK5, 0},  // S_EGGMOBILE_RATK4
-	{SPR_EGGM, 14,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_RATK6, 0},  // S_EGGMOBILE_RATK5
-	{SPR_EGGM, 13,   1, {A_Boss1Laser},     MT_LASER, 1, S_EGGMOBILE_RATK7, 0},  // S_EGGMOBILE_RATK6
-	{SPR_EGGM, 14,   1, {A_Boss1Laser},     MT_LASER, 1|(1<<16), S_EGGMOBILE_RATK8, 0},  // S_EGGMOBILE_RATK7
-	{SPR_EGGM, 13,   0, {A_Repeat}, 45, S_EGGMOBILE_RATK6, S_EGGMOBILE_RATK9, 0},  // S_EGGMOBILE_RATK8
-	{SPR_EGGM, 16,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL, 0}, // S_EGGMOBILE_RATK9
-	{SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC2, 0},  // S_EGGMOBILE_PANIC1
-	{SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC3, 0},  // S_EGGMOBILE_PANIC2
-	{SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC4, 0},  // S_EGGMOBILE_PANIC3
-	{SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC5, 0},  // S_EGGMOBILE_PANIC4
-	{SPR_EGGM,  6,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC3, S_EGGMOBILE_PANIC6, 0},  // S_EGGMOBILE_PANIC5
-	{SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC7, 0},  // S_EGGMOBILE_PANIC6
-	{SPR_EGGM, FF_ANIMATE|9, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC8, 0},  // S_EGGMOBILE_PANIC7
-	{SPR_EGGM, 15,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC9, 0},  // S_EGGMOBILE_PANIC8
-	{SPR_EGGM, 14,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC10, 0},  // S_EGGMOBILE_PANIC9
-	{SPR_EGGM, 14,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC8, S_EGGMOBILE_PANIC11, 0}, // S_EGGMOBILE_PANIC10
-	{SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC12, 0}, // S_EGGMOBILE_PANIC11
-	{SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC13, 0}, // S_EGGMOBILE_PANIC12
-	{SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC14, 0}, // S_EGGMOBILE_PANIC13
-	{SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC15, 0}, // S_EGGMOBILE_PANIC14
-	{SPR_EGGM,  6,  0, {A_Repeat}, 45,    S_EGGMOBILE_PANIC13, S_EGGMOBILE_ROFL, 0}, // S_EGGMOBILE_PANIC15
-	{SPR_EGGM, 19,  24, {A_Pain},                  0, 0, S_EGGMOBILE_PAIN2, 0},  // S_EGGMOBILE_PAIN
-	{SPR_EGGM, 19,  16, {A_SkullAttack},           3, 1, S_EGGMOBILE_STND, 0},   // S_EGGMOBILE_PAIN2
-	{SPR_EGGM, 20,  2, {A_Fall},                  17, 0, S_EGGMOBILE_DIE2, 0},   // S_EGGMOBILE_DIE1
-	{SPR_EGGM, 20,  2, {A_BossScream},             0, 0, S_EGGMOBILE_DIE3, 0},   // S_EGGMOBILE_DIE2
-	{SPR_EGGM, 20,  0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4, 0},   // S_EGGMOBILE_DIE3
-	{SPR_EGGM, 20,  -1, {A_BossDeath},             0, 0, S_NULL, 0},             // S_EGGMOBILE_DIE4
-	{SPR_EGGM, 21,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE2, 0},  // S_EGGMOBILE_FLEE1
-	{SPR_EGGM, 22,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE1, 0},  // S_EGGMOBILE_FLEE2
-	{SPR_UNID,  1,  1, {A_UnidusBall},             2, 0, S_EGGMOBILE_BALL, 0},   // S_EGGMOBILE_BALL
-	{SPR_NULL,  0,  1, {A_FocusTarget},            0, 0, S_EGGMOBILE_TARGET, 0}, // S_EGGMOBILE_TARGET
-
-	{SPR_EGLZ, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSEGLZ1
-	{SPR_EGLZ, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSEGLZ2
+	{"S_EGGMOBILE_STND", 0, SPR_EGGM,  0,   1, {A_Boss1Chase},            0, 0, S_EGGMOBILE_STND, 0},
+	{"S_EGGMOBILE_ROFL", 0, SPR_EGGM, FF_ANIMATE|17, 35, {A_FaceTarget},  1, 2, S_EGGMOBILE_STND, 0},
+	{"S_EGGMOBILE_LATK1", 0, SPR_EGGM,  1,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK2, 0},
+	{"S_EGGMOBILE_LATK2", 0, SPR_EGGM,  2,  15, {NULL},                    0, 0, S_EGGMOBILE_LATK3, 0},
+	{"S_EGGMOBILE_LATK3", 0, SPR_EGGM,  3,   2, {NULL},                    0, 0, S_EGGMOBILE_LATK4, 0},
+	{"S_EGGMOBILE_LATK4", 0, SPR_EGGM,  4,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK5, 0},
+	{"S_EGGMOBILE_LATK5", 0, SPR_EGGM,  6,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_LATK6, 0},
+	{"S_EGGMOBILE_LATK6", 0, SPR_EGGM,  5,   1, {A_Boss1Laser},     MT_LASER, 0, S_EGGMOBILE_LATK7, 0},
+	{"S_EGGMOBILE_LATK7", 0, SPR_EGGM,  6,   1, {A_Boss1Laser},     MT_LASER, (1<<16), S_EGGMOBILE_LATK8, 0},
+	{"S_EGGMOBILE_LATK8", 0, SPR_EGGM,  5,   0, {A_Repeat}, 45, S_EGGMOBILE_LATK6, S_EGGMOBILE_LATK9, 0},
+	{"S_EGGMOBILE_LATK9", 0, SPR_EGGM,  8,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL, 0},
+	{"S_EGGMOBILE_RATK1", 0, SPR_EGGM,  9,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK2, 0},
+	{"S_EGGMOBILE_RATK2", 0, SPR_EGGM, 10,  15, {NULL},                    0, 0, S_EGGMOBILE_RATK3, 0},
+	{"S_EGGMOBILE_RATK3", 0, SPR_EGGM, 11,   2, {NULL},                    0, 0, S_EGGMOBILE_RATK4, 0},
+	{"S_EGGMOBILE_RATK4", 0, SPR_EGGM, 12,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK5, 0},
+	{"S_EGGMOBILE_RATK5", 0, SPR_EGGM, 14,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_RATK6, 0},
+	{"S_EGGMOBILE_RATK6", 0, SPR_EGGM, 13,   1, {A_Boss1Laser},     MT_LASER, 1, S_EGGMOBILE_RATK7, 0},
+	{"S_EGGMOBILE_RATK7", 0, SPR_EGGM, 14,   1, {A_Boss1Laser},     MT_LASER, 1|(1<<16), S_EGGMOBILE_RATK8, 0},
+	{"S_EGGMOBILE_RATK8", 0, SPR_EGGM, 13,   0, {A_Repeat}, 45, S_EGGMOBILE_RATK6, S_EGGMOBILE_RATK9, 0},
+	{"S_EGGMOBILE_RATK9", 0, SPR_EGGM, 16,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL, 0},
+	{"S_EGGMOBILE_PANIC1", 0, SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC2, 0},
+	{"S_EGGMOBILE_PANIC2", 0, SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC3, 0},
+	{"S_EGGMOBILE_PANIC3", 0, SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC4, 0},
+	{"S_EGGMOBILE_PANIC4", 0, SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC5, 0},
+	{"S_EGGMOBILE_PANIC5", 0, SPR_EGGM,  6,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC3, S_EGGMOBILE_PANIC6, 0},
+	{"S_EGGMOBILE_PANIC6", 0, SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC7, 0},
+	{"S_EGGMOBILE_PANIC7", 0, SPR_EGGM, FF_ANIMATE|9, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC8, 0},
+	{"S_EGGMOBILE_PANIC8", 0, SPR_EGGM, 15,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC9, 0},
+	{"S_EGGMOBILE_PANIC9", 0, SPR_EGGM, 14,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC10, 0},
+	{"S_EGGMOBILE_PANIC10", 0, SPR_EGGM, 14,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC8, S_EGGMOBILE_PANIC11, 0},
+	{"S_EGGMOBILE_PANIC11", 0, SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC12, 0},
+	{"S_EGGMOBILE_PANIC12", 0, SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC13, 0},
+	{"S_EGGMOBILE_PANIC13", 0, SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC14, 0},
+	{"S_EGGMOBILE_PANIC14", 0, SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC15, 0},
+	{"S_EGGMOBILE_PANIC15", 0, SPR_EGGM,  6,  0, {A_Repeat}, 45,    S_EGGMOBILE_PANIC13, S_EGGMOBILE_ROFL, 0},
+	{"S_EGGMOBILE_PAIN", 0, SPR_EGGM, 19,  24, {A_Pain},                  0, 0, S_EGGMOBILE_PAIN2, 0},
+	{"S_EGGMOBILE_PAIN2", 0, SPR_EGGM, 19,  16, {A_SkullAttack},           3, 1, S_EGGMOBILE_STND, 0},
+	{"S_EGGMOBILE_DIE1", 0, SPR_EGGM, 20,  2, {A_Fall},                  17, 0, S_EGGMOBILE_DIE2, 0},
+	{"S_EGGMOBILE_DIE2", 0, SPR_EGGM, 20,  2, {A_BossScream},             0, 0, S_EGGMOBILE_DIE3, 0},
+	{"S_EGGMOBILE_DIE3", 0, SPR_EGGM, 20,  0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4, 0},
+	{"S_EGGMOBILE_DIE4", 0, SPR_EGGM, 20,  -1, {A_BossDeath},             0, 0, S_NULL, 0},
+	{"S_EGGMOBILE_FLEE1", 0, SPR_EGGM, 21,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE2, 0},
+	{"S_EGGMOBILE_FLEE2", 0, SPR_EGGM, 22,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE1, 0},
+	{"S_EGGMOBILE_BALL", 0, SPR_UNID,  1,  1, {A_UnidusBall},             2, 0, S_EGGMOBILE_BALL, 0},
+	{"S_EGGMOBILE_TARGET", 0, SPR_NULL,  0,  1, {A_FocusTarget},            0, 0, S_EGGMOBILE_TARGET, 0},
+
+	{"S_BOSSEGLZ1", 0, SPR_EGLZ, 0, 35, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BOSSEGLZ2", 0, SPR_EGLZ, 1, 35, {NULL}, 0, 0, S_NULL, 0},
 
 	// Boss 2
-	{SPR_EGGN, 0, -1,              {NULL},           0,          0, S_NULL, 0},             // S_EGGMOBILE2_STND
-	{SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO2, 0}, // S_EGGMOBILE2_POGO1
-	{SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  9*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO3, 0}, // S_EGGMOBILE2_POGO2
-	{SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4, 0}, // S_EGGMOBILE2_POGO3
-	{SPR_EGGN, 2, -1,              {NULL},           0,          0, S_NULL, 0},             // S_EGGMOBILE2_POGO4
-	{SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO6, 0}, // S_EGGMOBILE2_POGO5
-	{SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  7*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO7, 0}, // S_EGGMOBILE2_POGO6
-	{SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4, 0}, // S_EGGMOBILE2_POGO7
-	{SPR_EGGN, 3, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_STND, 0},  // S_EGGMOBILE2_PAIN
-	{SPR_EGGN, 4, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_POGO4, 0}, // S_EGGMOBILE2_PAIN2
-	{SPR_EGGN, 5, 2,             {A_Fall},           0,          0, S_EGGMOBILE2_DIE2, 0},  // S_EGGMOBILE2_DIE1
-	{SPR_EGGN, 5, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_DIE3, 0},  // S_EGGMOBILE2_DIE2
-	{SPR_EGGN, 5, 0,       {A_Repeat}, 17, S_EGGMOBILE2_DIE2, S_EGGMOBILE2_DIE4, 0},  // S_EGGMOBILE2_DIE3
-	{SPR_EGGN, 5, -1,       {A_BossDeath},           0,          0, S_NULL, 0},             // S_EGGMOBILE2_DIE4
-	{SPR_EGGN, 6, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE2, 0}, // S_EGGMOBILE2_FLEE1
-	{SPR_EGGN, 7, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE1, 0}, // S_EGGMOBILE2_FLEE2
-
-	{SPR_TANK, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSTANK1
-	{SPR_TANK, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSTANK2
-	{SPR_TANK, 2, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSSPIGOT
+	{"S_EGGMOBILE2_STND", 0, SPR_EGGN, 0, -1,              {NULL},           0,          0, S_NULL, 0},
+	{"S_EGGMOBILE2_POGO1", 0, SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO2, 0},
+	{"S_EGGMOBILE2_POGO2", 0, SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  9*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO3, 0},
+	{"S_EGGMOBILE2_POGO3", 0, SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4, 0},
+	{"S_EGGMOBILE2_POGO4", 0, SPR_EGGN, 2, -1,              {NULL},           0,          0, S_NULL, 0},
+	{"S_EGGMOBILE2_POGO5", 0, SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO6, 0},
+	{"S_EGGMOBILE2_POGO6", 0, SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  7*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO7, 0},
+	{"S_EGGMOBILE2_POGO7", 0, SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4, 0},
+	{"S_EGGMOBILE2_PAIN", 0, SPR_EGGN, 3, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_STND, 0},
+	{"S_EGGMOBILE2_PAIN2", 0, SPR_EGGN, 4, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_POGO4, 0},
+	{"S_EGGMOBILE2_DIE1", 0, SPR_EGGN, 5, 2,             {A_Fall},           0,          0, S_EGGMOBILE2_DIE2, 0},
+	{"S_EGGMOBILE2_DIE2", 0, SPR_EGGN, 5, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_DIE3, 0},
+	{"S_EGGMOBILE2_DIE3", 0, SPR_EGGN, 5, 0,       {A_Repeat}, 17, S_EGGMOBILE2_DIE2, S_EGGMOBILE2_DIE4, 0},
+	{"S_EGGMOBILE2_DIE4", 0, SPR_EGGN, 5, -1,       {A_BossDeath},           0,          0, S_NULL, 0},
+	{"S_EGGMOBILE2_FLEE1", 0, SPR_EGGN, 6, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE2, 0},
+	{"S_EGGMOBILE2_FLEE2", 0, SPR_EGGN, 7, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE1, 0},
+
+	{"S_BOSSTANK1", 0, SPR_TANK, 0, 35, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BOSSTANK2", 0, SPR_TANK, 1, 35, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BOSSSPIGOT", 0, SPR_TANK, 2, 35, {NULL}, 0, 0, S_NULL, 0},
 
 	// Boss 2 Goop
-	{SPR_GOOP,            0,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2, 0}, // S_GOOP1
-	{SPR_GOOP,            1,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP1, 0}, // S_GOOP2
-	{SPR_GOOP,            2, -1,                  {NULL}, 0,            0, S_NULL, 0},  // S_GOOP3
-	{SPR_GOOP, FF_ANIMATE|3, 11,                  {NULL}, 2,            6, S_NULL, 0},  // S_GOOPTRAIL
+	{"S_GOOP1", 0, SPR_GOOP,            0,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2, 0},
+	{"S_GOOP2", 0, SPR_GOOP,            1,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP1, 0},
+	{"S_GOOP3", 0, SPR_GOOP,            2, -1,                  {NULL}, 0,            0, S_NULL, 0},
+	{"S_GOOPTRAIL", 0, SPR_GOOP, FF_ANIMATE|3, 11,                  {NULL}, 2,            6, S_NULL, 0},
 
 	// Boss 3
-	{SPR_EGGO,  0,   1, {NULL},                    0, 0, S_EGGMOBILE3_STND, 0},    // S_EGGMOBILE3_STND
-	{SPR_EGGO,   FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0},  // S_EGGMOBILE3_SHOCK
-	{SPR_EGGO, 6|FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0}, // S_EGGMOBILE3_ATK1
-	{SPR_EGGO,  2,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK3A, 0},   // S_EGGMOBILE3_ATK2
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B, 0},   // S_EGGMOBILE3_ATK3A
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C, 0},   // S_EGGMOBILE3_ATK3B
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D, 0},   // S_EGGMOBILE3_ATK3C
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4, 0},    // S_EGGMOBILE3_ATK3D
-	{SPR_EGGO,  4,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK5, 0},    // S_EGGMOBILE3_ATK4
-	{SPR_EGGO,  5,   2, {NULL},                    0, 0, S_EGGMOBILE3_ROFL, 0},  // S_EGGMOBILE3_ATK5
-	{SPR_EGGO,  6|FF_ANIMATE, 60, {NULL}, 1, 2, S_EGGMOBILE3_STND, 0},  // S_EGGMOBILE3_ROFL
-	{SPR_EGGO,  8,   1, {A_Boss3TakeDamage},       0, 0, S_EGGMOBILE3_PAIN2, 0},   // S_EGGMOBILE3_PAIN
-	{SPR_EGGO,  8,  23, {A_Pain},                  0, 0, S_EGGMOBILE3_STND, 0},    // S_EGGMOBILE3_PAIN2
-	{SPR_EGGO,  9,   2, {A_Fall},                  0, 0, S_EGGMOBILE3_DIE2, 0},    // S_EGGMOBILE3_DIE1
-	{SPR_EGGO,  9,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_DIE3, 0},    // S_EGGMOBILE3_DIE2
-	{SPR_EGGO,  9,   0, {A_Repeat}, 17, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE4, 0},  // S_EGGMOBILE3_DIE3
-	{SPR_EGGO,  9,  -1, {A_BossDeath},             0, 0, S_NULL, 0},               // S_EGGMOBILE3_DIE4
-	{SPR_EGGO, 10,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE2, 0},   // S_EGGMOBILE3_FLEE1
-	{SPR_EGGO, 11,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE1, 0},   // S_EGGMOBILE3_FLEE2
+	{"S_EGGMOBILE3_STND", 0, SPR_EGGO,  0,   1, {NULL},                    0, 0, S_EGGMOBILE3_STND, 0},
+	{"S_EGGMOBILE3_SHOCK", 0, SPR_EGGO,   FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0},
+	{"S_EGGMOBILE3_ATK1", 0, SPR_EGGO, 6|FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0},
+	{"S_EGGMOBILE3_ATK2", 0, SPR_EGGO,  2,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK3A, 0},
+	{"S_EGGMOBILE3_ATK3A", 0, SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B, 0},
+	{"S_EGGMOBILE3_ATK3B", 0, SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C, 0},
+	{"S_EGGMOBILE3_ATK3C", 0, SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D, 0},
+	{"S_EGGMOBILE3_ATK3D", 0, SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4, 0},
+	{"S_EGGMOBILE3_ATK4", 0, SPR_EGGO,  4,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK5, 0},
+	{"S_EGGMOBILE3_ATK5", 0, SPR_EGGO,  5,   2, {NULL},                    0, 0, S_EGGMOBILE3_ROFL, 0},
+	{"S_EGGMOBILE3_ROFL", 0, SPR_EGGO,  6|FF_ANIMATE, 60, {NULL}, 1, 2, S_EGGMOBILE3_STND, 0},
+	{"S_EGGMOBILE3_PAIN", 0, SPR_EGGO,  8,   1, {A_Boss3TakeDamage},       0, 0, S_EGGMOBILE3_PAIN2, 0},
+	{"S_EGGMOBILE3_PAIN2", 0, SPR_EGGO,  8,  23, {A_Pain},                  0, 0, S_EGGMOBILE3_STND, 0},
+	{"S_EGGMOBILE3_DIE1", 0, SPR_EGGO,  9,   2, {A_Fall},                  0, 0, S_EGGMOBILE3_DIE2, 0},
+	{"S_EGGMOBILE3_DIE2", 0, SPR_EGGO,  9,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_DIE3, 0},
+	{"S_EGGMOBILE3_DIE3", 0, SPR_EGGO,  9,   0, {A_Repeat}, 17, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE4, 0},
+	{"S_EGGMOBILE3_DIE4", 0, SPR_EGGO,  9,  -1, {A_BossDeath},             0, 0, S_NULL, 0},
+	{"S_EGGMOBILE3_FLEE1", 0, SPR_EGGO, 10,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE2, 0},
+	{"S_EGGMOBILE3_FLEE2", 0, SPR_EGGO, 11,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE1, 0},
 
 	// Boss 3 Pinch
-	{SPR_FAKE, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE, 0},       // S_FAKEMOBILE_INIT
-	{SPR_FAKE, 0,  1, {A_Boss3Path},              0, 0, S_FAKEMOBILE, 0},       // S_FAKEMOBILE
-	{SPR_FAKE, 0, 22, {NULL},                     0, 0, S_FAKEMOBILE_ATK2, 0},  // S_FAKEMOBILE_ATK1
-	{SPR_FAKE, 0,  2, {NULL},                     0, 0, S_FAKEMOBILE_ATK3A, 0}, // S_FAKEMOBILE_ATK2
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 2, S_FAKEMOBILE_ATK3B, 0}, // S_FAKEMOBILE_ATK3A
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C, 0}, // S_FAKEMOBILE_ATK3B
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D, 0}, // S_FAKEMOBILE_ATK3C
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE, 0},       // S_FAKEMOBILE_ATK3D
-	{SPR_FAKE, 1,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE2, 0},  // S_FAKEMOBILE_DIE1
-	{SPR_NULL, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE1, 0},  // S_FAKEMOBILE_DIE2
-
-	{SPR_SEBH, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSSEBH1
-	{SPR_SEBH, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSSEBH2
+	{"S_FAKEMOBILE_INIT", 0, SPR_FAKE, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE, 0},
+	{"S_FAKEMOBILE", 0, SPR_FAKE, 0,  1, {A_Boss3Path},              0, 0, S_FAKEMOBILE, 0},
+	{"S_FAKEMOBILE_ATK1", 0, SPR_FAKE, 0, 22, {NULL},                     0, 0, S_FAKEMOBILE_ATK2, 0},
+	{"S_FAKEMOBILE_ATK2", 0, SPR_FAKE, 0,  2, {NULL},                     0, 0, S_FAKEMOBILE_ATK3A, 0},
+	{"S_FAKEMOBILE_ATK3A", 0, SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 2, S_FAKEMOBILE_ATK3B, 0},
+	{"S_FAKEMOBILE_ATK3B", 0, SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C, 0},
+	{"S_FAKEMOBILE_ATK3C", 0, SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D, 0},
+	{"S_FAKEMOBILE_ATK3D", 0, SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE, 0},
+	{"S_FAKEMOBILE_DIE1", 0, SPR_FAKE, 1,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE2, 0},
+	{"S_FAKEMOBILE_DIE2", 0, SPR_NULL, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE1, 0},
+
+	{"S_BOSSSEBH1", 0, SPR_SEBH, 0, 35, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BOSSSEBH2", 0, SPR_SEBH, 1, 35, {NULL}, 0, 0, S_NULL, 0},
 
 	// Boss 3 Shockwave
 
-	{SPR_SHCK,   FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE2, 0}, // S_SHOCKWAVE1
-	{SPR_SHCK, 3|FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE1, 0}, // S_SHOCKWAVE2
+	{"S_SHOCKWAVE1", 0, SPR_SHCK,   FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE2, 0},
+	{"S_SHOCKWAVE2", 0, SPR_SHCK, 3|FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE1, 0},
 
 	// Boss 4
-	{SPR_EGGP, 0, -1, {NULL},           0,          0, S_NULL, 0},              // S_EGGMOBILE4_STND
-	{SPR_EGGP, 1,  3, {NULL},           0,          0, S_EGGMOBILE4_LATK2, 0},  // S_EGGMOBILE4_LATK1
-	{SPR_EGGP, 2, 15, {NULL},           0,          0, S_EGGMOBILE4_LATK3, 0},  // S_EGGMOBILE4_LATK2
-	{SPR_EGGP, 3,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK4, 0},  // S_EGGMOBILE4_LATK3
-	{SPR_EGGP, 4,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK5, 0},  // S_EGGMOBILE4_LATK4
-	{SPR_EGGP, 5, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6, 0},  // S_EGGMOBILE4_LATK5
-	{SPR_EGGP, 6,  2, {NULL},           0,          0, S_EGGMOBILE4_STND, 0},   // S_EGGMOBILE4_LATK6
-	{SPR_EGGP, 7,  3, {NULL},           0,          0, S_EGGMOBILE4_RATK2, 0},  // S_EGGMOBILE4_RATK1
-	{SPR_EGGP, 8, 15, {NULL},           0,          0, S_EGGMOBILE4_RATK3, 0},  // S_EGGMOBILE4_RATK2
-	{SPR_EGGP, 9,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK4, 0},  // S_EGGMOBILE4_RATK3
-	{SPR_EGGP,10,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK5, 0},  // S_EGGMOBILE4_RATK4
-	{SPR_EGGP,11,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6, 0},  // S_EGGMOBILE4_RATK5
-	{SPR_EGGP,12,  2, {NULL},           0,          0, S_EGGMOBILE4_STND, 0},   // S_EGGMOBILE4_RATK6
-	{SPR_EGGP,13, 20, {A_Boss4Raise},   sfx_doord1, 0, S_EGGMOBILE4_RAISE2, 0}, // S_EGGMOBILE4_RAISE1
-	{SPR_EGGP,15|FF_ANIMATE, -1, {NULL},        1,        10, S_NULL, 0},             // S_EGGMOBILE4_RAISE2
-	{SPR_EGGP,13,  0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2, 0}, // S_EGGMOBILE4_PAIN1
-	{SPR_EGGP,13, 24, {A_Pain},                 0,         0, S_EGGMOBILE4_STND, 0},  // S_EGGMOBILE4_PAIN2
-	{SPR_EGGP,14,  2, {A_Fall},         0,          0, S_EGGMOBILE4_DIE2, 0},   // S_EGGMOBILE4_DIE1
-	{SPR_EGGP,14,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_DIE3, 0},   // S_EGGMOBILE4_DIE2
-	{SPR_EGGP,14,  0, {A_Repeat},   17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4, 0},   // S_EGGMOBILE4_DIE3
-	{SPR_EGGP,14, -1, {A_BossDeath},    0,          0, S_NULL, 0},              // S_EGGMOBILE4_DIE4
-	{SPR_EGGP,15,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE2, 0},  // S_EGGMOBILE4_FLEE1
-	{SPR_EGGP,16,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE1, 0},  // S_EGGMOBILE4_FLEE2
-	{SPR_BMCE, 0, -1, {NULL},           0,          0, S_NULL, 0},              // S_EGGMOBILE4_MACE
-	{SPR_BMCE, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE2, 0},  // S_EGGMOBILE4_MACE_DIE1
-	{SPR_NULL, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE3, 0},  // S_EGGMOBILE4_MACE_DIE2
-	{SPR_NULL, 0,  0, {A_Repeat},       7, S_EGGMOBILE4_MACE_DIE1, S_SONIC3KBOSSEXPLOSION1, 0}, // S_EGGMOBILE4_MACE_DIE3
+	{"S_EGGMOBILE4_STND", 0, SPR_EGGP, 0, -1, {NULL},           0,          0, S_NULL, 0},
+	{"S_EGGMOBILE4_LATK1", 0, SPR_EGGP, 1,  3, {NULL},           0,          0, S_EGGMOBILE4_LATK2, 0},
+	{"S_EGGMOBILE4_LATK2", 0, SPR_EGGP, 2, 15, {NULL},           0,          0, S_EGGMOBILE4_LATK3, 0},
+	{"S_EGGMOBILE4_LATK3", 0, SPR_EGGP, 3,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK4, 0},
+	{"S_EGGMOBILE4_LATK4", 0, SPR_EGGP, 4,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK5, 0},
+	{"S_EGGMOBILE4_LATK5", 0, SPR_EGGP, 5, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6, 0},
+	{"S_EGGMOBILE4_LATK6", 0, SPR_EGGP, 6,  2, {NULL},           0,          0, S_EGGMOBILE4_STND, 0},
+	{"S_EGGMOBILE4_RATK1", 0, SPR_EGGP, 7,  3, {NULL},           0,          0, S_EGGMOBILE4_RATK2, 0},
+	{"S_EGGMOBILE4_RATK2", 0, SPR_EGGP, 8, 15, {NULL},           0,          0, S_EGGMOBILE4_RATK3, 0},
+	{"S_EGGMOBILE4_RATK3", 0, SPR_EGGP, 9,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK4, 0},
+	{"S_EGGMOBILE4_RATK4", 0, SPR_EGGP,10,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK5, 0},
+	{"S_EGGMOBILE4_RATK5", 0, SPR_EGGP,11,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6, 0},
+	{"S_EGGMOBILE4_RATK6", 0, SPR_EGGP,12,  2, {NULL},           0,          0, S_EGGMOBILE4_STND, 0},
+	{"S_EGGMOBILE4_RAISE1", 0, SPR_EGGP,13, 20, {A_Boss4Raise},   sfx_doord1, 0, S_EGGMOBILE4_RAISE2, 0},
+	{"S_EGGMOBILE4_RAISE2", 0, SPR_EGGP,15|FF_ANIMATE, -1, {NULL},        1,        10, S_NULL, 0},
+	{"S_EGGMOBILE4_PAIN1", 0, SPR_EGGP,13,  0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2, 0},
+	{"S_EGGMOBILE4_PAIN2", 0, SPR_EGGP,13, 24, {A_Pain},                 0,         0, S_EGGMOBILE4_STND, 0},
+	{"S_EGGMOBILE4_DIE1", 0, SPR_EGGP,14,  2, {A_Fall},         0,          0, S_EGGMOBILE4_DIE2, 0},
+	{"S_EGGMOBILE4_DIE2", 0, SPR_EGGP,14,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_DIE3, 0},
+	{"S_EGGMOBILE4_DIE3", 0, SPR_EGGP,14,  0, {A_Repeat},   17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4, 0},
+	{"S_EGGMOBILE4_DIE4", 0, SPR_EGGP,14, -1, {A_BossDeath},    0,          0, S_NULL, 0},
+	{"S_EGGMOBILE4_FLEE1", 0, SPR_EGGP,15,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE2, 0},
+	{"S_EGGMOBILE4_FLEE2", 0, SPR_EGGP,16,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE1, 0},
+	{"S_EGGMOBILE4_MACE", 0, SPR_BMCE, 0, -1, {NULL},           0,          0, S_NULL, 0},
+	{"S_EGGMOBILE4_MACE_DIE1", 0, SPR_BMCE, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE2, 0},
+	{"S_EGGMOBILE4_MACE_DIE2", 0, SPR_NULL, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE3, 0},
+	{"S_EGGMOBILE4_MACE_DIE3", 0, SPR_NULL, 0,  0, {A_Repeat},       7, S_EGGMOBILE4_MACE_DIE1, S_SONIC3KBOSSEXPLOSION1, 0},
 
 	// Boss 4 jet flame
-	{SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL, 0}, // S_JETFLAME
+	{"S_JETFLAME", 0, SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL, 0},
 
 	// Boss 4 Spectator Eggrobo
-	{SPR_EGR1,            0, -1, {NULL}, 0, 0, S_NULL, 0},            // S_EGGROBO1_STND
-	{SPR_EGR1,            5,  2, {NULL}, 0, 0, S_EGGROBO1_BSLAP2, 0}, // S_EGGROBO1_BSLAP1
-	{SPR_EGR1, FF_ANIMATE|6, 35, {NULL}, 1, 2, S_EGGROBO1_STND, 0},   // S_EGGROBO1_BSLAP2
-	{SPR_EGR1, FF_ANIMATE|3, -1, {NULL}, 1, 2, S_NULL, 0},            // S_EGGROBO1_PISSED
+	{"S_EGGROBO1_STND", 0, SPR_EGR1,            0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EGGROBO1_BSLAP1", 0, SPR_EGR1,            5,  2, {NULL}, 0, 0, S_EGGROBO1_BSLAP2, 0},
+	{"S_EGGROBO1_BSLAP2", 0, SPR_EGR1, FF_ANIMATE|6, 35, {NULL}, 1, 2, S_EGGROBO1_STND, 0},
+	{"S_EGGROBO1_PISSED", 0, SPR_EGR1, FF_ANIMATE|3, -1, {NULL}, 1, 2, S_NULL, 0},
 
 	// Boss 4 Spectator Eggrobo jet flame
-	{SPR_EFIR, FF_FULLBRIGHT|2,          -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGROBOJET
+	{"S_EGGROBOJET", 0, SPR_EFIR, FF_FULLBRIGHT|2,          -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Boss 5
-	{SPR_NULL, 0, 2, {A_CheckFlags2}, MF2_AMBUSH, S_FANG_IDLE0, S_FANG_INTRO0, 0}, // S_FANG_SETUP
-
-	{SPR_NULL, 0, 2, {NULL}, 0, 0, S_FANG_INTRO1, 0}, // S_FANG_INTRO0
-	{SPR_NULL, 0, 2, {A_Boss5MakeJunk}, -S_FANG_CLONE1, 0, S_FANG_INTRO2, 0}, // S_FANG_INTRO1
-	{SPR_NULL, 0, 0, {A_Repeat}, 25, S_FANG_INTRO1, S_FANG_INTRO3, 0}, // S_FANG_INTRO2
-	{SPR_NULL, 0, 0, {A_Boss5MakeJunk}, 0, 1, S_FANG_INTRO4, 0}, // S_FANG_INTRO3
-	{SPR_FANG, 30, 1, {A_ZThrust}, 9, (1<<16)|1, S_FANG_INTRO5, 0}, // S_FANG_INTRO4
-	{SPR_FANG, 27, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO6, 0}, // S_FANG_INTRO5
-	{SPR_FANG, 28, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO7, 0}, // S_FANG_INTRO6
-	{SPR_FANG, 29, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO8, 0}, // S_FANG_INTRO7
-	{SPR_FANG, 30, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO5, 0}, // S_FANG_INTRO8
-	{SPR_FANG, 23|FF_ANIMATE, 50, {NULL}, 1, 4, S_FANG_INTRO10, 0}, // S_FANG_INTRO9
-	{SPR_FANG, 25, 5, {NULL}, 0, 0, S_FANG_INTRO11, 0}, // S_FANG_INTRO10
-	{SPR_FANG, 26, 2, {A_Boss5MakeJunk}, S_BROKENROBOTD, 2, S_FANG_INTRO12, 0}, // S_FANG_INTRO11
-	{SPR_FANG, 31|FF_ANIMATE, 50, {NULL}, 3, 4, S_FANG_IDLE1, 0}, // S_FANG_INTRO12
-
-	{SPR_FANG, 11, 2, {A_Boss5MakeJunk}, 0, -1, S_FANG_CLONE2, 0}, // S_FANG_CLONE1
-	{SPR_FANG, 11, 0, {A_Repeat}, 49, S_FANG_CLONE1, S_FANG_CLONE3, 0}, // S_FANG_INTRO2
-	{SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FANG_CLONE4, 0}, // S_FANG_CLONE3
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_IDLE0, 0, S_FANG_CLONE4, 0}, // S_FANG_CLONE4
-
-	{SPR_FANG, 0,  0, {A_SetObjectFlags}, MF_NOCLIPTHING, 1, S_FANG_IDLE1, 0}, // S_FANG_IDLE0
-	{SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE2, 0}, // S_FANG_IDLE1
-	{SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE3, 0}, // S_FANG_IDLE2
-	{SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE4, 0}, // S_FANG_IDLE3
-	{SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE5, 0}, // S_FANG_IDLE4
-	{SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE6, 0}, // S_FANG_IDLE5
-	{SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE7, 0}, // S_FANG_IDLE6
-	{SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE8, 0}, // S_FANG_IDLE7
-	{SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE1, 0}, // S_FANG_IDLE8
-
-	{SPR_FANG, 14, 0, {A_DoNPCPain}, FRACUNIT, 0, S_FANG_PAIN2, 0}, // S_FANG_PAIN1
-	{SPR_FANG, 14, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART1, S_FANG_PINCHPATHINGSTART1, S_FANG_PAIN2, 0}, // S_FANG_PAIN2
-
-	{SPR_FANG,  8, 0, {A_Boss5ExtraRepeat}, 5, 4, S_FANG_PATHINGSTART2, 0}, // S_FANG_PATHINGSTART1
-	{SPR_FANG,  8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHING, 0}, // S_FANG_PATHINGSTART2
-	{SPR_FANG,  8, 0, {A_Boss5FindWaypoint}, 0, 0, S_FANG_BOUNCE1, 0}, // S_FANG_PATHING
-
-	{SPR_FANG,  8, 2, {A_Thrust}, 0, 1, S_FANG_BOUNCE2, 0}, // S_FANG_BOUNCE1
-	{SPR_FANG,  9, 2, {NULL}, 0, 0, S_FANG_BOUNCE3, 0}, // S_FANG_BOUNCE2
-	{SPR_FANG, 10, 1, {A_Boss5Jump}, 0, 0, S_FANG_BOUNCE4, 0}, // S_FANG_BOUNCE3
-	{SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_CHECKPATH1, S_FANG_FALL1, S_FANG_BOUNCE4, 0}, // S_FANG_BOUNCE4
-
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL2, 0}, // S_FANG_FALL1
-	{SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL1, 0}, // S_FANG_FALL2
-
-	{SPR_FANG,  8, 0, {A_Boss5Calm}, 0, 0, S_FANG_CHECKPATH2, 0}, // S_FANG_CHECKPATH1
-	{SPR_FANG,  8, 0, {A_Repeat}, 0, S_FANG_PATHINGCONT1, S_FANG_SKID1, 0}, // S_FANG_CHECKPATH2
-
-	{SPR_FANG,  9, 0, {A_Boss5PinchShot}, MT_FBOMB, -16, S_FANG_PATHINGCONT2, 0}, // S_FANG_PATHINGCONT1
-	{SPR_FANG,  9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHINGCONT3, 0}, // S_FANG_PATHINGCONT2
-	{SPR_FANG,  9, 2, {A_Thrust}, 0, 1, S_FANG_PATHING, 0}, // S_FANG_PATHINGCONT3
-
-	{SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_SKID2, 0}, // S_FANG_SKID1
-	{SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_SKID3, 0, S_FANG_SKID2, 0}, // S_FANG_SKID2
-	{SPR_FANG,  4, 10, {NULL}, 0, 0, S_FANG_CHOOSEATTACK, 0}, // S_FANG_SKID3
-
-	{SPR_FANG,  0, 0, {A_RandomState}, S_FANG_LOBSHOT0, S_FANG_FIRESTART1, S_NULL, 0}, // S_FANG_CHOOSEATTACK
-
-	{SPR_FANG,  5,  0, {A_PrepareRepeat}, 3, 0, S_FANG_FIRESTART2, 0}, // S_FANG_FIRESTART1 // Reset loop
-	{SPR_FANG,  5, 18, {A_LookForBetter}, 1, 0, S_FANG_FIRE1, 0}, // S_FANG_FIRESTART2
-	{SPR_FANG,  5,  5, {A_FireShot}, MT_CORK, -16, S_FANG_FIRE2, 0}, // S_FANG_FIRE1 // Start of loop
-	{SPR_FANG,  6,  5, {NULL}, 0, 0, S_FANG_FIRE3, 0}, // S_FANG_FIRE2
-	{SPR_FANG,  7,  5, {NULL}, 0, 0, S_FANG_FIRE4, 0}, // S_FANG_FIRE3
-	{SPR_FANG,  5,  5, {NULL}, 2, 0, S_FANG_FIREREPEAT, 0}, // S_FANG_FIRE4
-	{SPR_FANG,  5,  0, {A_Repeat}, 3, S_FANG_FIRE1, S_FANG_WAIT1, 0}, // S_FANG_FIREREPEAT // End of loop
-
-	{SPR_FANG, 18, 16, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT1, 0}, // S_FANG_LOBSHOT0
-	{SPR_FANG, 19,  2, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT2, 0}, // S_FANG_LOBSHOT1
-	{SPR_FANG, 20, 18, {A_BrakLobShot}, MT_FBOMB, 32+(1<<16), S_FANG_WAIT1, 0}, // S_FANG_LOBSHOT2
-
-	{SPR_FANG, FF_ANIMATE|15, 70, {NULL}, 1, 5, S_FANG_WAIT2, 0}, // S_FANG_WAIT1
-	{SPR_FANG,             0, 35, {A_Look}, 1, 0, S_FANG_IDLE1, 0}, // S_FANG_WAIT2
-
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART2, S_FANG_PINCHPATHINGSTART1, S_FANG_WALLHIT, 0}, // S_FANG_WALLHIT
-
-	{SPR_FANG,  8,  0, {A_PrepareRepeat}, 1, 0, S_FANG_PINCHPATHINGSTART2, 0}, // S_FANG_PINCHPATHINGSTART1
-	{SPR_FANG,  8,  0, {A_PlayActiveSound}, 0, 0, S_FANG_PINCHPATHING, 0}, // S_FANG_PINCHPATHINGSTART2
-	{SPR_FANG,  8,  0, {A_Boss5FindWaypoint}, 1, 0, S_FANG_PINCHBOUNCE0, 0}, // S_FANG_PINCHPATHING
-	{SPR_FANG,  8,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 2, S_FANG_PINCHBOUNCE1, 0}, // S_FANG_PINCHBOUNCE0
-	{SPR_FANG,  8,  2, {A_Thrust}, 0, 1, S_FANG_PINCHBOUNCE2, 0}, // S_FANG_PINCHBOUNCE1
-	{SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_PINCHBOUNCE3, 0}, // S_FANG_PINCHBOUNCE2
-	{SPR_FANG, 10,  2, {A_Boss5Jump}, 0, 0, S_FANG_PINCHBOUNCE4, 0}, // S_FANG_PINCHBOUNCE3
-	{SPR_FANG, 10,  1, {A_Boss5CheckFalling}, S_FANG_PINCHSKID1, S_FANG_PINCHFALL0, S_FANG_PINCHBOUNCE4, 0}, // S_FANG_PINCHBOUNCE4
-	{SPR_FANG, 12,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 1, S_FANG_PINCHFALL1, 0}, // S_FANG_PINCHFALL0
-	{SPR_FANG, 12,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL2, 0}, // S_FANG_PINCHFALL1
-	{SPR_FANG, 13,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL1, 0}, // S_FANG_PINCHFALL2
-	{SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_PINCHSKID2, 0}, // S_FANG_PINCHSKID1
-	{SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_PINCHLOBSHOT0, 0, S_FANG_PINCHSKID2, 0}, // S_FANG_PINCHSKID2
-	{SPR_FANG, 18, 16, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT1, 0}, // S_FANG_PINCHLOBSHOT0
-	{SPR_FANG, 19,  2, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT2, 0}, // S_FANG_PINCHLOBSHOT1
-	{SPR_FANG, 20, 30, {A_Boss5MakeItRain}, MT_FBOMB, -16, S_FANG_PINCHLOBSHOT3, 0}, // S_FANG_PINCHLOBSHOT2
-	{SPR_FANG, 20, 18, {A_LinedefExecuteFromArg}, 4, 0, S_FANG_PINCHLOBSHOT4, 0}, // S_FANG_PINCHLOBSHOT3
-	{SPR_FANG,  0,  0, {A_Boss5Calm}, 0, 0, S_FANG_PATHINGSTART1, 0}, // S_FANG_PINCHLOBSHOT4
-
-	{SPR_FANG, 21, 0, {A_DoNPCPain},                    0, 0, S_FANG_DIE2, 0}, // S_FANG_DIE1
-	{SPR_FANG, 21, 1, {A_Boss5CheckOnGround}, S_FANG_DIE3, 0, S_FANG_DIE2, 0}, // S_FANG_DIE2
-
-	{SPR_FANG, 22,  0, {A_Scream}, 0, 0, S_FANG_DIE4, 0}, // S_FANG_DIE3
-	{SPR_FANG, 22, -1, {A_SetFuse}, 70, 0, S_FANG_DIE5, 0}, // S_FANG_DIE4
-
-	{SPR_FANG, 11, 0, {A_PlaySound}, sfx_jump, 0, S_FANG_DIE6, 0}, // S_FANG_DIE5
-	{SPR_FANG, 11, 1, {A_ZThrust}, 6, (1<<16)|1, S_FANG_DIE7, 0}, // S_FANG_DIE6
-	{SPR_FANG, 11, 1, {A_Boss5CheckFalling}, S_FANG_FLEEPATHING1, S_FANG_DIE8, S_FANG_DIE7, 0}, // S_FANG_DIE7
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_FLEEPATHING1, 0, S_FANG_DIE8, 0}, // S_FANG_DIE8
-
-	{SPR_FANG,  9,  0, {A_PlayActiveSound}, 0, 0, S_FANG_FLEEPATHING2, 0}, // S_FANG_FLEEPATHING1
-	{SPR_FANG,  8,  2, {A_Boss5FindWaypoint}, 2, 0, S_FANG_FLEEBOUNCE1, 0}, // S_FANG_FLEEPATHING2
-	{SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_FLEEBOUNCE2, 0}, // S_FANG_FLEEBOUNCE1
-	{SPR_FANG, 10, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, // S_FANG_FLEEBOUNCE2
-
-	{SPR_FANG, 17, 7*TICRATE, {NULL}, 0, 0, S_NULL, 0}, // S_FANG_KO
-
-	{SPR_NULL, 0, -1, {A_RandomStateRange}, S_BROKENROBOTA, S_BROKENROBOTF, S_NULL, 0}, // S_BROKENROBOTRANDOM
-	{SPR_BRKN,    FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTA
-	{SPR_BRKN,  4|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTB
-	{SPR_BRKN,  8|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTC
-	{SPR_BRKN, 12|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTD
-	{SPR_BRKN, 16|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTE
-	{SPR_BRKN, 20|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTF
-
-	{SPR_WHAT,   FF_ANIMATE|FF_FULLBRIGHT,  4, {NULL}, 1, 2, S_ALART2, 0}, // S_ALART1
-	{SPR_WHAT, 2|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0},   // S_ALART2
-
-	{SPR_VWRE,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_VWREF
-	{SPR_VWRE, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_VWREB
-
-	{SPR_PROJ,   FF_TRANS20|FF_FULLBRIGHT,  4, {NULL}, 0, 0, S_PROJECTORLIGHT2, 0}, // S_PROJECTORLIGHT1
-	{SPR_PROJ, 1|FF_TRANS40|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT3, 0}, // S_PROJECTORLIGHT2
-	{SPR_PROJ, 2|FF_TRANS20|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT4, 0}, // S_PROJECTORLIGHT3
-	{SPR_PROJ, 3|FF_TRANS40|FF_FULLBRIGHT,  2, {A_Repeat}, 39, S_PROJECTORLIGHT2, S_PROJECTORLIGHT5, 0}, // S_PROJECTORLIGHT4
-	{SPR_PROJ, 4|FF_TRANS60|FF_FULLBRIGHT,  2, {NULL}, 0, 0, S_NULL, 0}, // S_PROJECTORLIGHT5
-
-	{SPR_FBOM, 0, 1, {A_GhostMe}, 0, 0, S_FBOMB2, 0}, // S_FBOMB1
-	{SPR_FBOM, 1, 1, {A_GhostMe}, 0, 0, S_FBOMB1, 0}, // S_FBOMB2
-	{SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_FBOMB_EXPL2, 0}, // S_FBOMB_EXPL1
-	{SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_Boss5BombExplode}, MT_TNTDUST, 0, S_FBOMB_EXPL3, 0}, // S_FBOMB_EXPL2
-	{SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FBOMB_EXPL4, 0}, // S_FBOMB_EXPL3
-	{SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL5, 0}, // S_FBOMB_EXPL4
-	{SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL6, 0}, // S_FBOMB_EXPL5
-	{SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0}, // S_FBOMB_EXPL6
-	{SPR_BARD, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_TNTDUST_2, 0}, // S_TNTDUST_1
-	{SPR_BARD, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_TNTDUST_3, 0}, // S_TNTDUST_2
-	{SPR_BARD, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_TNTDUST_4, 0}, // S_TNTDUST_3
-	{SPR_BARD, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_TNTDUST_5, 0}, // S_TNTDUST_4
-	{SPR_BARD, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_TNTDUST_6, 0}, // S_TNTDUST_5
-	{SPR_BARD, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_TNTDUST_7, 0}, // S_TNTDUST_6
-	{SPR_BARD, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_TNTDUST_8, 0}, // S_TNTDUST_7
-	{SPR_BARD, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL, 0}, // S_TNTDUST_8
-	{SPR_FSGN, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGNA
-	{SPR_FSGN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGNB
-	{SPR_FSGN, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGNC
-	{SPR_FSGN, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGND
+	{"S_FANG_SETUP", 0, SPR_NULL, 0, 2, {A_CheckFlags2}, MF2_AMBUSH, S_FANG_IDLE0, S_FANG_INTRO0, 0},
+
+	{"S_FANG_INTRO0", 0, SPR_NULL, 0, 2, {NULL}, 0, 0, S_FANG_INTRO1, 0},
+	{"S_FANG_INTRO1", 0, SPR_NULL, 0, 2, {A_Boss5MakeJunk}, -S_FANG_CLONE1, 0, S_FANG_INTRO2, 0},
+	{"S_FANG_INTRO2", 0, SPR_NULL, 0, 0, {A_Repeat}, 25, S_FANG_INTRO1, S_FANG_INTRO3, 0},
+	{"S_FANG_INTRO3", 0, SPR_NULL, 0, 0, {A_Boss5MakeJunk}, 0, 1, S_FANG_INTRO4, 0},
+	{"S_FANG_INTRO4", 0, SPR_FANG, 30, 1, {A_ZThrust}, 9, (1<<16)|1, S_FANG_INTRO5, 0},
+	{"S_FANG_INTRO5", 0, SPR_FANG, 27, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO6, 0},
+	{"S_FANG_INTRO6", 0, SPR_FANG, 28, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO7, 0},
+	{"S_FANG_INTRO7", 0, SPR_FANG, 29, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO8, 0},
+	{"S_FANG_INTRO8", 0, SPR_FANG, 30, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO5, 0},
+	{"S_FANG_INTRO9", 0, SPR_FANG, 23|FF_ANIMATE, 50, {NULL}, 1, 4, S_FANG_INTRO10, 0},
+	{"S_FANG_INTRO10", 0, SPR_FANG, 25, 5, {NULL}, 0, 0, S_FANG_INTRO11, 0},
+	{"S_FANG_INTRO11", 0, SPR_FANG, 26, 2, {A_Boss5MakeJunk}, S_BROKENROBOTD, 2, S_FANG_INTRO12, 0},
+	{"S_FANG_INTRO12", 0, SPR_FANG, 31|FF_ANIMATE, 50, {NULL}, 3, 4, S_FANG_IDLE1, 0},
+
+	{"S_FANG_CLONE1", 0, SPR_FANG, 11, 2, {A_Boss5MakeJunk}, 0, -1, S_FANG_CLONE2, 0},
+	{"S_FANG_INTRO2", 0, SPR_FANG, 11, 0, {A_Repeat}, 49, S_FANG_CLONE1, S_FANG_CLONE3, 0},
+	{"S_FANG_CLONE3", 0, SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FANG_CLONE4, 0},
+	{"S_FANG_CLONE4", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_IDLE0, 0, S_FANG_CLONE4, 0},
+
+	{"S_FANG_IDLE0", 0, SPR_FANG, 0,  0, {A_SetObjectFlags}, MF_NOCLIPTHING, 1, S_FANG_IDLE1, 0},
+	{"S_FANG_IDLE1", 0, SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE2, 0},
+	{"S_FANG_IDLE2", 0, SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE3, 0},
+	{"S_FANG_IDLE3", 0, SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE4, 0},
+	{"S_FANG_IDLE4", 0, SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE5, 0},
+	{"S_FANG_IDLE5", 0, SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE6, 0},
+	{"S_FANG_IDLE6", 0, SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE7, 0},
+	{"S_FANG_IDLE7", 0, SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE8, 0},
+	{"S_FANG_IDLE8", 0, SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE1, 0},
+
+	{"S_FANG_PAIN1", 0, SPR_FANG, 14, 0, {A_DoNPCPain}, FRACUNIT, 0, S_FANG_PAIN2, 0},
+	{"S_FANG_PAIN2", 0, SPR_FANG, 14, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART1, S_FANG_PINCHPATHINGSTART1, S_FANG_PAIN2, 0},
+
+	{"S_FANG_PATHINGSTART1", 0, SPR_FANG,  8, 0, {A_Boss5ExtraRepeat}, 5, 4, S_FANG_PATHINGSTART2, 0},
+	{"S_FANG_PATHINGSTART2", 0, SPR_FANG,  8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHING, 0},
+	{"S_FANG_PATHING", 0, SPR_FANG,  8, 0, {A_Boss5FindWaypoint}, 0, 0, S_FANG_BOUNCE1, 0},
+
+	{"S_FANG_BOUNCE1", 0, SPR_FANG,  8, 2, {A_Thrust}, 0, 1, S_FANG_BOUNCE2, 0},
+	{"S_FANG_BOUNCE2", 0, SPR_FANG,  9, 2, {NULL}, 0, 0, S_FANG_BOUNCE3, 0},
+	{"S_FANG_BOUNCE3", 0, SPR_FANG, 10, 1, {A_Boss5Jump}, 0, 0, S_FANG_BOUNCE4, 0},
+	{"S_FANG_BOUNCE4", 0, SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_CHECKPATH1, S_FANG_FALL1, S_FANG_BOUNCE4, 0},
+
+	{"S_FANG_FALL1", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL2, 0},
+	{"S_FANG_FALL2", 0, SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL1, 0},
+
+	{"S_FANG_CHECKPATH1", 0, SPR_FANG,  8, 0, {A_Boss5Calm}, 0, 0, S_FANG_CHECKPATH2, 0},
+	{"S_FANG_CHECKPATH2", 0, SPR_FANG,  8, 0, {A_Repeat}, 0, S_FANG_PATHINGCONT1, S_FANG_SKID1, 0},
+
+	{"S_FANG_PATHINGCONT1", 0, SPR_FANG,  9, 0, {A_Boss5PinchShot}, MT_FBOMB, -16, S_FANG_PATHINGCONT2, 0},
+	{"S_FANG_PATHINGCONT2", 0, SPR_FANG,  9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHINGCONT3, 0},
+	{"S_FANG_PATHINGCONT3", 0, SPR_FANG,  9, 2, {A_Thrust}, 0, 1, S_FANG_PATHING, 0},
+
+	{"S_FANG_SKID1", 0, SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_SKID2, 0},
+	{"S_FANG_SKID2", 0, SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_SKID3, 0, S_FANG_SKID2, 0},
+	{"S_FANG_SKID3", 0, SPR_FANG,  4, 10, {NULL}, 0, 0, S_FANG_CHOOSEATTACK, 0},
+
+	{"S_FANG_CHOOSEATTACK", 0, SPR_FANG,  0, 0, {A_RandomState}, S_FANG_LOBSHOT0, S_FANG_FIRESTART1, S_NULL, 0},
+
+	{"S_FANG_FIRESTART1", 0, SPR_FANG,  5,  0, {A_PrepareRepeat}, 3, 0, S_FANG_FIRESTART2, 0},  // Reset loop
+	{"S_FANG_FIRESTART2", 0, SPR_FANG,  5, 18, {A_LookForBetter}, 1, 0, S_FANG_FIRE1, 0},
+	{"S_FANG_FIRE1", 0, SPR_FANG,  5,  5, {A_FireShot}, MT_CORK, -16, S_FANG_FIRE2, 0},  // Start of loop
+	{"S_FANG_FIRE2", 0, SPR_FANG,  6,  5, {NULL}, 0, 0, S_FANG_FIRE3, 0},
+	{"S_FANG_FIRE3", 0, SPR_FANG,  7,  5, {NULL}, 0, 0, S_FANG_FIRE4, 0},
+	{"S_FANG_FIRE4", 0, SPR_FANG,  5,  5, {NULL}, 2, 0, S_FANG_FIREREPEAT, 0},
+	{"S_FANG_FIREREPEAT", 0, SPR_FANG,  5,  0, {A_Repeat}, 3, S_FANG_FIRE1, S_FANG_WAIT1, 0},  // End of loop
+
+	{"S_FANG_LOBSHOT0", 0, SPR_FANG, 18, 16, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT1, 0},
+	{"S_FANG_LOBSHOT1", 0, SPR_FANG, 19,  2, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT2, 0},
+	{"S_FANG_LOBSHOT2", 0, SPR_FANG, 20, 18, {A_BrakLobShot}, MT_FBOMB, 32+(1<<16), S_FANG_WAIT1, 0},
+
+	{"S_FANG_WAIT1", 0, SPR_FANG, FF_ANIMATE|15, 70, {NULL}, 1, 5, S_FANG_WAIT2, 0},
+	{"S_FANG_WAIT2", 0, SPR_FANG,             0, 35, {A_Look}, 1, 0, S_FANG_IDLE1, 0},
+
+	{"S_FANG_WALLHIT", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART2, S_FANG_PINCHPATHINGSTART1, S_FANG_WALLHIT, 0},
+
+	{"S_FANG_PINCHPATHINGSTART1", 0, SPR_FANG,  8,  0, {A_PrepareRepeat}, 1, 0, S_FANG_PINCHPATHINGSTART2, 0},
+	{"S_FANG_PINCHPATHINGSTART2", 0, SPR_FANG,  8,  0, {A_PlayActiveSound}, 0, 0, S_FANG_PINCHPATHING, 0},
+	{"S_FANG_PINCHPATHING", 0, SPR_FANG,  8,  0, {A_Boss5FindWaypoint}, 1, 0, S_FANG_PINCHBOUNCE0, 0},
+	{"S_FANG_PINCHBOUNCE0", 0, SPR_FANG,  8,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 2, S_FANG_PINCHBOUNCE1, 0},
+	{"S_FANG_PINCHBOUNCE1", 0, SPR_FANG,  8,  2, {A_Thrust}, 0, 1, S_FANG_PINCHBOUNCE2, 0},
+	{"S_FANG_PINCHBOUNCE2", 0, SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_PINCHBOUNCE3, 0},
+	{"S_FANG_PINCHBOUNCE3", 0, SPR_FANG, 10,  2, {A_Boss5Jump}, 0, 0, S_FANG_PINCHBOUNCE4, 0},
+	{"S_FANG_PINCHBOUNCE4", 0, SPR_FANG, 10,  1, {A_Boss5CheckFalling}, S_FANG_PINCHSKID1, S_FANG_PINCHFALL0, S_FANG_PINCHBOUNCE4, 0},
+	{"S_FANG_PINCHFALL0", 0, SPR_FANG, 12,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 1, S_FANG_PINCHFALL1, 0},
+	{"S_FANG_PINCHFALL1", 0, SPR_FANG, 12,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL2, 0},
+	{"S_FANG_PINCHFALL2", 0, SPR_FANG, 13,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL1, 0},
+	{"S_FANG_PINCHSKID1", 0, SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_PINCHSKID2, 0},
+	{"S_FANG_PINCHSKID2", 0, SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_PINCHLOBSHOT0, 0, S_FANG_PINCHSKID2, 0},
+	{"S_FANG_PINCHLOBSHOT0", 0, SPR_FANG, 18, 16, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT1, 0},
+	{"S_FANG_PINCHLOBSHOT1", 0, SPR_FANG, 19,  2, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT2, 0},
+	{"S_FANG_PINCHLOBSHOT2", 0, SPR_FANG, 20, 30, {A_Boss5MakeItRain}, MT_FBOMB, -16, S_FANG_PINCHLOBSHOT3, 0},
+	{"S_FANG_PINCHLOBSHOT3", 0, SPR_FANG, 20, 18, {A_LinedefExecuteFromArg}, 4, 0, S_FANG_PINCHLOBSHOT4, 0},
+	{"S_FANG_PINCHLOBSHOT4", 0, SPR_FANG,  0,  0, {A_Boss5Calm}, 0, 0, S_FANG_PATHINGSTART1, 0},
+
+	{"S_FANG_DIE1", 0, SPR_FANG, 21, 0, {A_DoNPCPain},                    0, 0, S_FANG_DIE2, 0},
+	{"S_FANG_DIE2", 0, SPR_FANG, 21, 1, {A_Boss5CheckOnGround}, S_FANG_DIE3, 0, S_FANG_DIE2, 0},
+
+	{"S_FANG_DIE3", 0, SPR_FANG, 22,  0, {A_Scream}, 0, 0, S_FANG_DIE4, 0},
+	{"S_FANG_DIE4", 0, SPR_FANG, 22, -1, {A_SetFuse}, 70, 0, S_FANG_DIE5, 0},
+
+	{"S_FANG_DIE5", 0, SPR_FANG, 11, 0, {A_PlaySound}, sfx_jump, 0, S_FANG_DIE6, 0},
+	{"S_FANG_DIE6", 0, SPR_FANG, 11, 1, {A_ZThrust}, 6, (1<<16)|1, S_FANG_DIE7, 0},
+	{"S_FANG_DIE7", 0, SPR_FANG, 11, 1, {A_Boss5CheckFalling}, S_FANG_FLEEPATHING1, S_FANG_DIE8, S_FANG_DIE7, 0},
+	{"S_FANG_DIE8", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_FLEEPATHING1, 0, S_FANG_DIE8, 0},
+
+	{"S_FANG_FLEEPATHING1", 0, SPR_FANG,  9,  0, {A_PlayActiveSound}, 0, 0, S_FANG_FLEEPATHING2, 0},
+	{"S_FANG_FLEEPATHING2", 0, SPR_FANG,  8,  2, {A_Boss5FindWaypoint}, 2, 0, S_FANG_FLEEBOUNCE1, 0},
+	{"S_FANG_FLEEBOUNCE1", 0, SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_FLEEBOUNCE2, 0},
+	{"S_FANG_FLEEBOUNCE2", 0, SPR_FANG, 10, -1, {A_BossDeath}, 0, 0, S_NULL, 0},
+
+	{"S_FANG_KO", 0, SPR_FANG, 17, 7*TICRATE, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_BROKENROBOTRANDOM", 0, SPR_NULL, 0, -1, {A_RandomStateRange}, S_BROKENROBOTA, S_BROKENROBOTF, S_NULL, 0},
+	{"S_BROKENROBOTA", 0, SPR_BRKN,    FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0},
+	{"S_BROKENROBOTB", 0, SPR_BRKN,  4|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0},
+	{"S_BROKENROBOTC", 0, SPR_BRKN,  8|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0},
+	{"S_BROKENROBOTD", 0, SPR_BRKN, 12|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0},
+	{"S_BROKENROBOTE", 0, SPR_BRKN, 16|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0},
+	{"S_BROKENROBOTF", 0, SPR_BRKN, 20|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0},
+
+	{"S_ALART1", 0, SPR_WHAT,   FF_ANIMATE|FF_FULLBRIGHT,  4, {NULL}, 1, 2, S_ALART2, 0},
+	{"S_ALART2", 0, SPR_WHAT, 2|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0},
+
+	{"S_VWREF", 0, SPR_VWRE,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_VWREB", 0, SPR_VWRE, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_PROJECTORLIGHT1", 0, SPR_PROJ,   FF_TRANS20|FF_FULLBRIGHT,  4, {NULL}, 0, 0, S_PROJECTORLIGHT2, 0},
+	{"S_PROJECTORLIGHT2", 0, SPR_PROJ, 1|FF_TRANS40|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT3, 0},
+	{"S_PROJECTORLIGHT3", 0, SPR_PROJ, 2|FF_TRANS20|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT4, 0},
+	{"S_PROJECTORLIGHT4", 0, SPR_PROJ, 3|FF_TRANS40|FF_FULLBRIGHT,  2, {A_Repeat}, 39, S_PROJECTORLIGHT2, S_PROJECTORLIGHT5, 0},
+	{"S_PROJECTORLIGHT5", 0, SPR_PROJ, 4|FF_TRANS60|FF_FULLBRIGHT,  2, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_FBOMB1", 0, SPR_FBOM, 0, 1, {A_GhostMe}, 0, 0, S_FBOMB2, 0},
+	{"S_FBOMB2", 0, SPR_FBOM, 1, 1, {A_GhostMe}, 0, 0, S_FBOMB1, 0},
+	{"S_FBOMB_EXPL1", 0, SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_FBOMB_EXPL2, 0},
+	{"S_FBOMB_EXPL2", 0, SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_Boss5BombExplode}, MT_TNTDUST, 0, S_FBOMB_EXPL3, 0},
+	{"S_FBOMB_EXPL3", 0, SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FBOMB_EXPL4, 0},
+	{"S_FBOMB_EXPL4", 0, SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL5, 0},
+	{"S_FBOMB_EXPL5", 0, SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL6, 0},
+	{"S_FBOMB_EXPL6", 0, SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0},
+	{"S_TNTDUST_1", 0, SPR_BARD, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_TNTDUST_2, 0},
+	{"S_TNTDUST_2", 0, SPR_BARD, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_TNTDUST_3, 0},
+	{"S_TNTDUST_3", 0, SPR_BARD, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_TNTDUST_4, 0},
+	{"S_TNTDUST_4", 0, SPR_BARD, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_TNTDUST_5, 0},
+	{"S_TNTDUST_5", 0, SPR_BARD, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_TNTDUST_6, 0},
+	{"S_TNTDUST_6", 0, SPR_BARD, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_TNTDUST_7, 0},
+	{"S_TNTDUST_7", 0, SPR_BARD, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_TNTDUST_8, 0},
+	{"S_TNTDUST_8", 0, SPR_BARD, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FSGNA", 0, SPR_FSGN, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FSGNB", 0, SPR_FSGN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FSGNC", 0, SPR_FSGN, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FSGND", 0, SPR_FSGN, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Black Eggman (Boss 7)
-	{SPR_BRAK, 0, 1, {A_SetReactionTime}, 0, 0, S_BLACKEGG_STND2, 0}, // S_BLACKEGG_STND
-	{SPR_BRAK, 0, 7, {A_Look}, 1, 0, S_BLACKEGG_STND2, 0}, // S_BLACKEGG_STND2
-	{SPR_BRAK, 1, 7, {NULL}, 0, 0, S_BLACKEGG_WALK2, 0}, // S_BLACKEGG_WALK1
-	{SPR_BRAK, 2, 7, {NULL}, 0, 0, S_BLACKEGG_WALK3, 0}, // S_BLACKEGG_WALK2
-	{SPR_BRAK, 3, 7, {A_PlaySound}, sfx_bestep, 0, S_BLACKEGG_WALK4, 0}, // S_BLACKEGG_WALK3
-	{SPR_BRAK, 4, 7, {NULL}, 0, 0, S_BLACKEGG_WALK5, 0}, // S_BLACKEGG_WALK4
-	{SPR_BRAK, 5, 7, {NULL}, 0, 0, S_BLACKEGG_WALK6, 0}, // S_BLACKEGG_WALK5
-	{SPR_BRAK, 6, 7, {A_PlaySound}, sfx_bestp2, 0, S_BLACKEGG_WALK1, 0}, // S_BLACKEGG_WALK6
-	{SPR_BRAK, 7, 3, {NULL}, 0, 0, S_BLACKEGG_SHOOT2, 0}, // S_BLACKEGG_SHOOT1
-	{SPR_BRAK, 24, 1, {A_PlaySound}, sfx_befire, 0, S_BLACKEGG_SHOOT1, 0}, // S_BLACKEGG_SHOOT2
-
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN2, 0}, // S_BLACKEGG_PAIN1
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN3, 0}, // S_BLACKEGG_PAIN2
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN4, 0}, // S_BLACKEGG_PAIN3
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN5, 0}, // S_BLACKEGG_PAIN4
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN6, 0}, // S_BLACKEGG_PAIN5
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN7, 0}, // S_BLACKEGG_PAIN6
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN8, 0}, // S_BLACKEGG_PAIN7
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN9, 0}, // S_BLACKEGG_PAIN8
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN10, 0}, // S_BLACKEGG_PAIN9
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN11, 0}, // S_BLACKEGG_PAIN10
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN12, 0}, // S_BLACKEGG_PAIN11
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN13, 0}, // S_BLACKEGG_PAIN12
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN14, 0}, // S_BLACKEGG_PAIN13
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN15, 0}, // S_BLACKEGG_PAIN14
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN16, 0}, // S_BLACKEGG_PAIN15
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN17, 0}, // S_BLACKEGG_PAIN16
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN18, 0}, // S_BLACKEGG_PAIN17
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN19, 0}, // S_BLACKEGG_PAIN18
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN20, 0}, // S_BLACKEGG_PAIN19
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN21, 0}, // S_BLACKEGG_PAIN20
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN22, 0}, // S_BLACKEGG_PAIN21
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN23, 0}, // S_BLACKEGG_PAIN22
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN24, 0}, // S_BLACKEGG_PAIN23
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN25, 0}, // S_BLACKEGG_PAIN24
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN26, 0}, // S_BLACKEGG_PAIN25
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN27, 0}, // S_BLACKEGG_PAIN26
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN28, 0}, // S_BLACKEGG_PAIN27
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN29, 0}, // S_BLACKEGG_PAIN28
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN30, 0}, // S_BLACKEGG_PAIN29
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN31, 0}, // S_BLACKEGG_PAIN30
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN32, 0}, // S_BLACKEGG_PAIN31
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN33, 0}, // S_BLACKEGG_PAIN32
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN34, 0}, // S_BLACKEGG_PAIN33
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN35, 0}, // S_BLACKEGG_PAIN34
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0}, // S_BLACKEGG_PAIN35
-
-	{SPR_BRAK, 9, 20, {NULL}, 0, 0, S_BLACKEGG_HITFACE2, 0}, // S_BLACKEGG_HITFACE1
-	{SPR_BRAK, 10, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE3, 0}, // S_BLACKEGG_HITFACE2
-	{SPR_BRAK, 11, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE4, 0}, // S_BLACKEGG_HITFACE3
-	{SPR_BRAK, 12,14, {NULL}, 0, 0, S_BLACKEGG_PAIN1, 0}, // S_BLACKEGG_HITFACE4
-
-	{SPR_BRAK, 13, 14, {NULL}, 0, 0, S_BLACKEGG_DIE2, 0}, // S_BLACKEGG_DIE1
-	{SPR_BRAK, 14, 7, {NULL}, 0, 0, S_BLACKEGG_DIE3, 0}, // S_BLACKEGG_DIE2
-	{SPR_BRAK, 15, 5, {NULL}, 0, 0, S_BLACKEGG_DIE4, 0}, // S_BLACKEGG_DIE3
-	{SPR_BRAK, 16, 3, {A_PlaySound}, sfx_bgxpld, 0, S_BLACKEGG_DIE5, 0}, // S_BLACKEGG_DIE4
-	{SPR_BRAK, 17, -1, {NULL}, 0, 0, S_BLACKEGG_DIE5, 0}, // S_BLACKEGG_DIE5
-
-	{SPR_BRAK, 18, 14, {NULL}, 0, 0, S_BLACKEGG_MISSILE2, 0}, // S_BLACKEGG_MISSILE1
-	{SPR_BRAK, 19, 5, {NULL}, 0, 0, S_BLACKEGG_MISSILE3, 0}, // S_BLACKEGG_MISSILE2
-	{SPR_BRAK, 20, 35, {A_Boss7FireMissiles}, MT_BLACKEGGMAN_MISSILE, sfx_beshot, S_BLACKEGG_JUMP1, 0}, // S_BLACKEGG_MISSILE3
-
-	{SPR_BRAK, 21, -1, {NULL}, 0, 0, S_BLACKEGG_STND, 0}, // S_BLACKEGG_GOOP
-
-	{SPR_BRAK, 22, 14, {A_PlaySound}, sfx_belnch, 0, S_BLACKEGG_JUMP2, 0}, // S_BLACKEGG_JUMP1
-	{SPR_BRAK, 23, -1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0}, // S_BLACKEGG_JUMP2
-
-	{SPR_BRAK, 21, 3*TICRATE, {NULL}, 0, 0, S_BLACKEGG_DESTROYPLAT2, 0}, // S_BLACKEGG_DESTROYPLAT1
-	{SPR_BRAK, 21, 1, {A_PlaySound}, sfx_s3k54, 0, S_BLACKEGG_DESTROYPLAT3, 0}, // S_BLACKEGG_DESTROYPLAT2
-	{SPR_BRAK, 21, 14, {A_LinedefExecuteFromArg}, 5, 0, S_BLACKEGG_STND, 0}, // S_BLACKEGG_DESTROYPLAT3
-
-	{SPR_NULL, 0, 1, {A_CapeChase}, (160 - 20) << 16, 0, S_BLACKEGG_HELPER, 0}, // S_BLACKEGG_HELPER
-
-	{SPR_BGOO, FF_TRANS50  , 2, {NULL}, 0, 0, S_BLACKEGG_GOOP2, 0}, // S_BLACKEGG_GOOP1
-	{SPR_BGOO, FF_TRANS50|1, 2, {NULL}, 0, 0, S_BLACKEGG_GOOP1, 0}, // S_BLACKEGG_GOOP2
-	{SPR_BGOO, FF_TRANS50|2, 6*TICRATE, {A_GoopSplat}, 0, 0, S_BLACKEGG_GOOP4, 0}, // S_BLACKEGG_GOOP3
-	{SPR_BGOO, FF_TRANS60|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP5, 0}, // S_BLACKEGG_GOOP4
-	{SPR_BGOO, FF_TRANS70|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP6, 0}, // S_BLACKEGG_GOOP5
-	{SPR_BGOO, FF_TRANS80|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP7, 0}, // S_BLACKEGG_GOOP6
-	{SPR_BGOO, FF_TRANS90|2, 4, {NULL}, 0, 0, S_NULL, 0}, // S_BLACKEGG_GOOP7
-
-	{SPR_BMSL, 0, 1, {NULL}, 0, 0, S_BLACKEGG_MISSILE, 0}, // S_BLACKEGG_MISSILE
+	{"S_BLACKEGG_STND", 0, SPR_BRAK, 0, 1, {A_SetReactionTime}, 0, 0, S_BLACKEGG_STND2, 0},
+	{"S_BLACKEGG_STND2", 0, SPR_BRAK, 0, 7, {A_Look}, 1, 0, S_BLACKEGG_STND2, 0},
+	{"S_BLACKEGG_WALK1", 0, SPR_BRAK, 1, 7, {NULL}, 0, 0, S_BLACKEGG_WALK2, 0},
+	{"S_BLACKEGG_WALK2", 0, SPR_BRAK, 2, 7, {NULL}, 0, 0, S_BLACKEGG_WALK3, 0},
+	{"S_BLACKEGG_WALK3", 0, SPR_BRAK, 3, 7, {A_PlaySound}, sfx_bestep, 0, S_BLACKEGG_WALK4, 0},
+	{"S_BLACKEGG_WALK4", 0, SPR_BRAK, 4, 7, {NULL}, 0, 0, S_BLACKEGG_WALK5, 0},
+	{"S_BLACKEGG_WALK5", 0, SPR_BRAK, 5, 7, {NULL}, 0, 0, S_BLACKEGG_WALK6, 0},
+	{"S_BLACKEGG_WALK6", 0, SPR_BRAK, 6, 7, {A_PlaySound}, sfx_bestp2, 0, S_BLACKEGG_WALK1, 0},
+	{"S_BLACKEGG_SHOOT1", 0, SPR_BRAK, 7, 3, {NULL}, 0, 0, S_BLACKEGG_SHOOT2, 0},
+	{"S_BLACKEGG_SHOOT2", 0, SPR_BRAK, 24, 1, {A_PlaySound}, sfx_befire, 0, S_BLACKEGG_SHOOT1, 0},
+
+	{"S_BLACKEGG_PAIN1", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN2, 0},
+	{"S_BLACKEGG_PAIN2", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN3, 0},
+	{"S_BLACKEGG_PAIN3", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN4, 0},
+	{"S_BLACKEGG_PAIN4", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN5, 0},
+	{"S_BLACKEGG_PAIN5", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN6, 0},
+	{"S_BLACKEGG_PAIN6", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN7, 0},
+	{"S_BLACKEGG_PAIN7", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN8, 0},
+	{"S_BLACKEGG_PAIN8", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN9, 0},
+	{"S_BLACKEGG_PAIN9", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN10, 0},
+	{"S_BLACKEGG_PAIN10", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN11, 0},
+	{"S_BLACKEGG_PAIN11", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN12, 0},
+	{"S_BLACKEGG_PAIN12", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN13, 0},
+	{"S_BLACKEGG_PAIN13", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN14, 0},
+	{"S_BLACKEGG_PAIN14", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN15, 0},
+	{"S_BLACKEGG_PAIN15", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN16, 0},
+	{"S_BLACKEGG_PAIN16", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN17, 0},
+	{"S_BLACKEGG_PAIN17", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN18, 0},
+	{"S_BLACKEGG_PAIN18", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN19, 0},
+	{"S_BLACKEGG_PAIN19", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN20, 0},
+	{"S_BLACKEGG_PAIN20", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN21, 0},
+	{"S_BLACKEGG_PAIN21", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN22, 0},
+	{"S_BLACKEGG_PAIN22", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN23, 0},
+	{"S_BLACKEGG_PAIN23", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN24, 0},
+	{"S_BLACKEGG_PAIN24", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN25, 0},
+	{"S_BLACKEGG_PAIN25", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN26, 0},
+	{"S_BLACKEGG_PAIN26", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN27, 0},
+	{"S_BLACKEGG_PAIN27", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN28, 0},
+	{"S_BLACKEGG_PAIN28", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN29, 0},
+	{"S_BLACKEGG_PAIN29", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN30, 0},
+	{"S_BLACKEGG_PAIN30", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN31, 0},
+	{"S_BLACKEGG_PAIN31", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN32, 0},
+	{"S_BLACKEGG_PAIN32", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN33, 0},
+	{"S_BLACKEGG_PAIN33", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN34, 0},
+	{"S_BLACKEGG_PAIN34", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN35, 0},
+	{"S_BLACKEGG_PAIN35", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0},
+
+	{"S_BLACKEGG_HITFACE1", 0, SPR_BRAK, 9, 20, {NULL}, 0, 0, S_BLACKEGG_HITFACE2, 0},
+	{"S_BLACKEGG_HITFACE2", 0, SPR_BRAK, 10, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE3, 0},
+	{"S_BLACKEGG_HITFACE3", 0, SPR_BRAK, 11, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE4, 0},
+	{"S_BLACKEGG_HITFACE4", 0, SPR_BRAK, 12,14, {NULL}, 0, 0, S_BLACKEGG_PAIN1, 0},
+
+	{"S_BLACKEGG_DIE1", 0, SPR_BRAK, 13, 14, {NULL}, 0, 0, S_BLACKEGG_DIE2, 0},
+	{"S_BLACKEGG_DIE2", 0, SPR_BRAK, 14, 7, {NULL}, 0, 0, S_BLACKEGG_DIE3, 0},
+	{"S_BLACKEGG_DIE3", 0, SPR_BRAK, 15, 5, {NULL}, 0, 0, S_BLACKEGG_DIE4, 0},
+	{"S_BLACKEGG_DIE4", 0, SPR_BRAK, 16, 3, {A_PlaySound}, sfx_bgxpld, 0, S_BLACKEGG_DIE5, 0},
+	{"S_BLACKEGG_DIE5", 0, SPR_BRAK, 17, -1, {NULL}, 0, 0, S_BLACKEGG_DIE5, 0},
+
+	{"S_BLACKEGG_MISSILE1", 0, SPR_BRAK, 18, 14, {NULL}, 0, 0, S_BLACKEGG_MISSILE2, 0},
+	{"S_BLACKEGG_MISSILE2", 0, SPR_BRAK, 19, 5, {NULL}, 0, 0, S_BLACKEGG_MISSILE3, 0},
+	{"S_BLACKEGG_MISSILE3", 0, SPR_BRAK, 20, 35, {A_Boss7FireMissiles}, MT_BLACKEGGMAN_MISSILE, sfx_beshot, S_BLACKEGG_JUMP1, 0},
+
+	{"S_BLACKEGG_GOOP", 0, SPR_BRAK, 21, -1, {NULL}, 0, 0, S_BLACKEGG_STND, 0},
+
+	{"S_BLACKEGG_JUMP1", 0, SPR_BRAK, 22, 14, {A_PlaySound}, sfx_belnch, 0, S_BLACKEGG_JUMP2, 0},
+	{"S_BLACKEGG_JUMP2", 0, SPR_BRAK, 23, -1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0},
+
+	{"S_BLACKEGG_DESTROYPLAT1", 0, SPR_BRAK, 21, 3*TICRATE, {NULL}, 0, 0, S_BLACKEGG_DESTROYPLAT2, 0},
+	{"S_BLACKEGG_DESTROYPLAT2", 0, SPR_BRAK, 21, 1, {A_PlaySound}, sfx_s3k54, 0, S_BLACKEGG_DESTROYPLAT3, 0},
+	{"S_BLACKEGG_DESTROYPLAT3", 0, SPR_BRAK, 21, 14, {A_LinedefExecuteFromArg}, 5, 0, S_BLACKEGG_STND, 0},
+
+	{"S_BLACKEGG_HELPER", 0, SPR_NULL, 0, 1, {A_CapeChase}, (160 - 20) << 16, 0, S_BLACKEGG_HELPER, 0},
+
+	{"S_BLACKEGG_GOOP1", 0, SPR_BGOO, FF_TRANS50  , 2, {NULL}, 0, 0, S_BLACKEGG_GOOP2, 0},
+	{"S_BLACKEGG_GOOP2", 0, SPR_BGOO, FF_TRANS50|1, 2, {NULL}, 0, 0, S_BLACKEGG_GOOP1, 0},
+	{"S_BLACKEGG_GOOP3", 0, SPR_BGOO, FF_TRANS50|2, 6*TICRATE, {A_GoopSplat}, 0, 0, S_BLACKEGG_GOOP4, 0},
+	{"S_BLACKEGG_GOOP4", 0, SPR_BGOO, FF_TRANS60|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP5, 0},
+	{"S_BLACKEGG_GOOP5", 0, SPR_BGOO, FF_TRANS70|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP6, 0},
+	{"S_BLACKEGG_GOOP6", 0, SPR_BGOO, FF_TRANS80|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP7, 0},
+	{"S_BLACKEGG_GOOP7", 0, SPR_BGOO, FF_TRANS90|2, 4, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_BLACKEGG_MISSILE", 0, SPR_BMSL, 0, 1, {NULL}, 0, 0, S_BLACKEGG_MISSILE, 0},
 
 	// New Very-Last-Minute 2.1 Brak Eggman (Cy-Brak-demon)
-	{SPR_BRAK, 0, 10, {A_Look}, 0, 0, S_CYBRAKDEMON_IDLE, 0}, // S_CYBRAKDEMON_IDLE
-	{SPR_BRAK, 1, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK2, 0}, // S_CYBRAKDEMON_WALK1
-	{SPR_BRAK, 2, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK3, 0}, // S_CYBRAKDEMON_WALK2
-	{SPR_BRAK, 3, 8, {A_BrakChase}, 3, sfx_bestep, S_CYBRAKDEMON_WALK4, 0}, // S_CYBRAKDEMON_WALK3
-	{SPR_BRAK, 4, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK5, 0}, // S_CYBRAKDEMON_WALK4
-	{SPR_BRAK, 5, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK6, 0}, // S_CYBRAKDEMON_WALK5
-	{SPR_BRAK, 6, 8, {A_BrakChase}, 3, sfx_bestp2, S_CYBRAKDEMON_WALK1, 0}, // S_CYBRAKDEMON_WALK6
-	{SPR_BRAK, 7, 6, {A_RandomState}, S_CYBRAKDEMON_MISSILE_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0}, // S_CYBRAKDEMON_CHOOSE_ATTACK1
-	{SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK2, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK1 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK3, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK2 // Fire
-	{SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK4, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK3 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK5, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK4 // Fire
-	{SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK6, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK5 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK6 // Fire
-	{SPR_BRAK, 7, 1, {A_Repeat}, 1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK2, 0}, // S_CYBRAKDEMON_FLAME_ATTACK1 // Reset
-	{SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FLAME_ATTACK3, 0}, // S_CYBRAKDEMON_FLAME_ATTACK2 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 2, {A_BrakFireShot}, MT_CYBRAKDEMON_FLAMESHOT, 128, S_CYBRAKDEMON_FLAME_ATTACK4, 0}, // S_CYBRAKDEMON_FLAME_ATTACK3 // Fire
-	{SPR_BRAK, 7, 1, {A_Repeat}, 30, S_CYBRAKDEMON_FLAME_ATTACK3, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_FLAME_ATTACK4 // Loop
-	{SPR_BRAK, 0, 6, {A_RandomState}, S_CYBRAKDEMON_VILE_ATTACK1, S_CYBRAKDEMON_NAPALM_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0}, // S_CYBRAKDEMON_CHOOSE_ATTACK2
-	{SPR_BRAK, 20, 0, {A_LinedefExecuteFromArg}, 5, 0, S_CYBRAKDEMON_VILE_ATTACK2, 0}, // S_CYBRAKDEMON_VILE_ATTACK1
-	{SPR_BRAK, 20, 24, {A_VileTarget}, MT_CYBRAKDEMON_TARGET_RETICULE, 1, S_CYBRAKDEMON_VILE_ATTACK3, 0}, // S_CYBRAKDEMON_VILE_ATTACK2
-	{SPR_BRAK, 19, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK4, 0}, // S_CYBRAKDEMON_VILE_ATTACK3
-	{SPR_BRAK, 18, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK5, 0}, // S_CYBRAKDEMON_VILE_ATTACK4
-	{SPR_BRAK, 8, 32, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK6, 0}, // S_CYBRAKDEMON_VILE_ATTACK5
-	{SPR_BRAK, 20 + FF_FULLBRIGHT, 28, {A_VileAttack}, sfx_brakrx, MT_CYBRAKDEMON_VILE_EXPLOSION + (1<<16), S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_VILE_ATTACK6
-	{SPR_BRAK, 0, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_NAPALM_ATTACK2, 0}, // S_CYBRAKDEMON_NAPALM_ATTACK1
-	{SPR_BRAK, 21 + FF_FULLBRIGHT, 8, {A_BrakLobShot}, MT_CYBRAKDEMON_NAPALM_BOMB_LARGE, 96, S_CYBRAKDEMON_NAPALM_ATTACK3, 0}, // S_CYBRAKDEMON_NAPALM_ATTACK2
-	{SPR_BRAK, 0, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_NAPALM_ATTACK3
-	{SPR_BRAK, 0, 0, {A_SetObjectFlags2}, MF2_FRET, 1, S_CYBRAKDEMON_FINISH_ATTACK2, 0}, // S_CYBRAKDEMON_FINISH_ATTACK1 // If just attacked, remove MF2_FRET w/out going back to spawnstate
-	{SPR_BRAK, 0, 0, {A_SetReactionTime}, 0, 0, S_CYBRAKDEMON_WALK1, 0}, // S_CYBRAKDEMON_FINISH_ATTACK2 // If just attacked, remove MF2_FRET w/out going back to spawnstate
-	{SPR_BRAK, 18, 24, {A_Pain}, 0, 0, S_CYBRAKDEMON_PAIN2, 0}, // S_CYBRAKDEMON_PAIN1
-	{SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0}, // S_CYBRAKDEMON_PAIN2
-	{SPR_BRAK, 18, 0, {A_LinedefExecuteFromArg}, 4, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0}, // S_CYBRAKDEMON_PAIN3
-	{SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2, 0}, // S_CYBRAKDEMON_DIE1
-	{SPR_BRAK, 18, 2, {A_BossScream}, 2, 0, S_CYBRAKDEMON_DIE3, 0}, // S_CYBRAKDEMON_DIE2
-	{SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4, 0}, // S_CYBRAKDEMON_DIE3
-	{SPR_BRAK, 13, 34, {A_BossDeath}, 0, 0, S_CYBRAKDEMON_DIE5, 0}, // S_CYBRAKDEMON_DIE4
-	{SPR_BRAK, 14, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6, 0}, // S_CYBRAKDEMON_DIE5
-	{SPR_BRAK, 15, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7, 0}, // S_CYBRAKDEMON_DIE6
-	{SPR_BRAK, 16, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE8, 0}, // S_CYBRAKDEMON_DIE7
-	{SPR_BRAK, 17, 34, {NULL}, sfx_befall, 0, S_CYBRAKDEMON_DIE8, 0}, // S_CYBRAKDEMON_DIE8
-	{SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 2, S_CYBRAKDEMON_IDLE, 0}, // S_CYBRAKDEMON_DEINVINCIBLERIZE
-	{SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 1, S_CYBRAKDEMON_IDLE, 0}, // S_CYBRAKDEMON_INVINCIBLERIZE
-
-	{SPR_RCKT, 0 + FF_FULLBRIGHT, 1, {A_SetObjectFlags2}, MF2_RAILRING, 2, S_CYBRAKDEMONMISSILE, 0}, // S_CYBRAKDEMONMISSILE
-	{SPR_RCKT, 1 + FF_FULLBRIGHT, 8, {A_Explode}, 0, 0, S_CYBRAKDEMONMISSILE_EXPLODE2, 0}, // S_CYBRAKDEMONMISSILE_EXPLODE1 //TODO: set missile mobj's "damage" to an appropriate radius
-	{SPR_RCKT, 2 + FF_FULLBRIGHT, 6, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (6<<16), 32 + (16<<16), S_CYBRAKDEMONMISSILE_EXPLODE3, 0}, // S_CYBRAKDEMONMISSILE_EXPLODE2
-	{SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL, 0}, // S_CYBRAKDEMONMISSILE_EXPLODE3
-
-	{SPR_FLME, FF_FULLBRIGHT  , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2, 0}, // S_CYBRAKDEMONFLAMESHOT_FLY1
-	{SPR_FLME, FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0}, // S_CYBRAKDEMONFLAMESHOT_FLY2
-	{SPR_FLME, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0}, // S_CYBRAKDEMONFLAMESHOT_FLY3
-	{SPR_FLME, FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0}, // S_CYBRAKDEMONFLAMESHOT_DIE
-
-	{SPR_FLAM, FF_FULLBRIGHT, 1, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST, 0}, // S_CYBRAKDEMONFLAMEREST
-
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2, 0}, // S_CYBRAKDEMONELECTRICBARRIER_INIT1
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0}, // S_CYBRAKDEMONELECTRICBARRIER_INIT2
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER1, 0}, // S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER2, 0}, // S_CYBRAKDEMONELECTRICBARRIER1
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER3, 0}, // S_CYBRAKDEMONELECTRICBARRIER2
-	{SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER4, 0}, // S_CYBRAKDEMONELECTRICBARRIER3
-	{SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER5, 0}, // S_CYBRAKDEMONELECTRICBARRIER4
-	{SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER6, 0}, // S_CYBRAKDEMONELECTRICBARRIER5
-	{SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER7, 0}, // S_CYBRAKDEMONELECTRICBARRIER6
-	{SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER8, 0}, // S_CYBRAKDEMONELECTRICBARRIER7
-	{SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER9, 0}, // S_CYBRAKDEMONELECTRICBARRIER8
-	{SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER10, 0}, // S_CYBRAKDEMONELECTRICBARRIER9
-	{SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER11, 0}, // S_CYBRAKDEMONELECTRICBARRIER10
-	{SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER12, 0}, // S_CYBRAKDEMONELECTRICBARRIER11
-	{SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER13, 0}, // S_CYBRAKDEMONELECTRICBARRIER12
-	{SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER14, 0}, // S_CYBRAKDEMONELECTRICBARRIER13
-	{SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER15, 0}, // S_CYBRAKDEMONELECTRICBARRIER14
-	{SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER16, 0}, // S_CYBRAKDEMONELECTRICBARRIER15
-	{SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER17, 0}, // S_CYBRAKDEMONELECTRICBARRIER16
-	{SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER18, 0}, // S_CYBRAKDEMONELECTRICBARRIER17
-	{SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER19, 0}, // S_CYBRAKDEMONELECTRICBARRIER18
-	{SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER20, 0}, // S_CYBRAKDEMONELECTRICBARRIER19
-	{SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER21, 0}, // S_CYBRAKDEMONELECTRICBARRIER20
-	{SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER22, 0}, // S_CYBRAKDEMONELECTRICBARRIER21
-	{SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER23, 0}, // S_CYBRAKDEMONELECTRICBARRIER22
-	{SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER24, 0}, // S_CYBRAKDEMONELECTRICBARRIER23
-	{SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0}, // S_CYBRAKDEMONELECTRICBARRIER24
-	{SPR_NULL, 0, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_DEINVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_DIE2, 0}, // S_CYBRAKDEMONELECTRICBARRIER_DIE1
-	{SPR_NULL, 0, 0, {A_SetObjectFlags}, MF_PUSHABLE|MF_FIRE|MF_PAIN, 1, S_CYBRAKDEMONELECTRICBARRIER_DIE3, 0}, // S_CYBRAKDEMONELECTRICBARRIER_DIE2
-	{SPR_NULL, 0, 20*TICRATE, {A_Scream}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, 0}, // S_CYBRAKDEMONELECTRICBARRIER_DIE3
-	{SPR_NULL, 0, 0, {A_CheckRandom}, 10, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK,
-	{SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS,
-	{SPR_NULL, 0, 0, {A_RandomStateRange}, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE,
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1,
-	{SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2,
-	{SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3,
-	{SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4,
-	{SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5,
-	{SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6,
-	{SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7,
-	{SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8,
-	{SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9,
-	{SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10,
-	{SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11,
-	{SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12,
-	{SPR_NULL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL,
-	{SPR_NULL, 0, 0, {A_Repeat}, 5*TICRATE, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK, S_CYBRAKDEMONELECTRICBARRIER_REVIVE1, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP,
-	{SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE2, 0}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE1
-	{SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE3, 0}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE2
-	{SPR_NULL, 0, TICRATE, {A_PlaySound}, sfx_s3k79, 0, S_NULL, 0}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE3
-
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, sfx_s3k9d, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE2, 0}, // S_CYBRAKDEMONTARGETRETICULE1
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE3, 0}, // S_CYBRAKDEMONTARGETRETICULE2
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|1, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE4, 0}, // S_CYBRAKDEMONTARGETRETICULE3
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE5, 0}, // S_CYBRAKDEMONTARGETRETICULE4
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|2, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE6, 0}, // S_CYBRAKDEMONTARGETRETICULE5
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE7, 0}, // S_CYBRAKDEMONTARGETRETICULE6
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|3, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE8, 0}, // S_CYBRAKDEMONTARGETRETICULE7
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE9, 0}, // S_CYBRAKDEMONTARGETRETICULE8
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|4, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE10, 0}, // S_CYBRAKDEMONTARGETRETICULE9
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE11, 0}, // S_CYBRAKDEMONTARGETRETICULE10
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|5, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE12, 0}, // S_CYBRAKDEMONTARGETRETICULE11
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE13, 0}, // S_CYBRAKDEMONTARGETRETICULE12
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE14, 0}, // S_CYBRAKDEMONTARGETRETICULE13
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_Repeat}, 6, S_CYBRAKDEMONTARGETRETICULE2, S_NULL, 0}, // S_CYBRAKDEMONTARGETRETICULE14
-
-	{SPR_HOOP, FF_TRANS50|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_CYBRAKDEMONTARGETDOT
-
-	{SPR_NPLM, 0, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1,
-	{SPR_NPLM, 1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2,
-	{SPR_NPLM, 2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3,
-	{SPR_NPLM, 3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4,
-	{SPR_NPLM, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1, // Explode
-	{SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (6<<16), 256 + (48<<16), S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, // Outer ring
-	{SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (1<<16), 32<<16, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, // Center
-	{SPR_NULL, 0, 81, {A_Scream}, 0, 0, S_NULL, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, // Sound
-
-	{SPR_MNPL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL,
-	{SPR_MNPL, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1, // Explode
-	{SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (12<<16), 128 + (40<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, // Outer ring
-	{SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (8<<16), 64 + (32<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, // Inner ring
-	{SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (1<<16), 24<<16, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, // Center
-	{SPR_NULL, 0, 24, {A_Scream}, 0, 0, S_NULL, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, // Sound
-
-	{SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY2, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY1,
-	{SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY3, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY2,
-	{SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY4, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY3,
-	{SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY5, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY4,
-	{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY6, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY5,
-	{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY1, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY6,
-	{SPR_SFLM, FF_FULLBRIGHT,   0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0}, //S_CYBRAKDEMONNAPALMFLAME_DIE,
-
-	{SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2, 0}, //S_CYBRAKDEMONVILEEXPLOSION1,
-	{SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3, 0}, //S_CYBRAKDEMONVILEEXPLOSION2,
-	{SPR_NULL, 0, 1, {A_BossScream}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION1, 0}, //S_CYBRAKDEMONVILEEXPLOSION3,
+	{"S_CYBRAKDEMON_IDLE", 0, SPR_BRAK, 0, 10, {A_Look}, 0, 0, S_CYBRAKDEMON_IDLE, 0},
+	{"S_CYBRAKDEMON_WALK1", 0, SPR_BRAK, 1, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK2, 0},
+	{"S_CYBRAKDEMON_WALK2", 0, SPR_BRAK, 2, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK3, 0},
+	{"S_CYBRAKDEMON_WALK3", 0, SPR_BRAK, 3, 8, {A_BrakChase}, 3, sfx_bestep, S_CYBRAKDEMON_WALK4, 0},
+	{"S_CYBRAKDEMON_WALK4", 0, SPR_BRAK, 4, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK5, 0},
+	{"S_CYBRAKDEMON_WALK5", 0, SPR_BRAK, 5, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK6, 0},
+	{"S_CYBRAKDEMON_WALK6", 0, SPR_BRAK, 6, 8, {A_BrakChase}, 3, sfx_bestp2, S_CYBRAKDEMON_WALK1, 0},
+	{"S_CYBRAKDEMON_CHOOSE_ATTACK1", 0, SPR_BRAK, 7, 6, {A_RandomState}, S_CYBRAKDEMON_MISSILE_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0},
+	{"S_CYBRAKDEMON_MISSILE_ATTACK1", 0, SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK2, 0},  // Aim
+	{"S_CYBRAKDEMON_MISSILE_ATTACK2", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK3, 0},  // Fire
+	{"S_CYBRAKDEMON_MISSILE_ATTACK3", 0, SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK4, 0},  // Aim
+	{"S_CYBRAKDEMON_MISSILE_ATTACK4", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK5, 0},  // Fire
+	{"S_CYBRAKDEMON_MISSILE_ATTACK5", 0, SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK6, 0},  // Aim
+	{"S_CYBRAKDEMON_MISSILE_ATTACK6", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_FINISH_ATTACK1, 0},  // Fire
+	{"S_CYBRAKDEMON_FLAME_ATTACK1", 0, SPR_BRAK, 7, 1, {A_Repeat}, 1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK2, 0},  // Reset
+	{"S_CYBRAKDEMON_FLAME_ATTACK2", 0, SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FLAME_ATTACK3, 0},  // Aim
+	{"S_CYBRAKDEMON_FLAME_ATTACK3", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 2, {A_BrakFireShot}, MT_CYBRAKDEMON_FLAMESHOT, 128, S_CYBRAKDEMON_FLAME_ATTACK4, 0},  // Fire
+	{"S_CYBRAKDEMON_FLAME_ATTACK4", 0, SPR_BRAK, 7, 1, {A_Repeat}, 30, S_CYBRAKDEMON_FLAME_ATTACK3, S_CYBRAKDEMON_FINISH_ATTACK1, 0},  // Loop
+	{"S_CYBRAKDEMON_CHOOSE_ATTACK2", 0, SPR_BRAK, 0, 6, {A_RandomState}, S_CYBRAKDEMON_VILE_ATTACK1, S_CYBRAKDEMON_NAPALM_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0},
+	{"S_CYBRAKDEMON_VILE_ATTACK1", 0, SPR_BRAK, 20, 0, {A_LinedefExecuteFromArg}, 5, 0, S_CYBRAKDEMON_VILE_ATTACK2, 0},
+	{"S_CYBRAKDEMON_VILE_ATTACK2", 0, SPR_BRAK, 20, 24, {A_VileTarget}, MT_CYBRAKDEMON_TARGET_RETICULE, 1, S_CYBRAKDEMON_VILE_ATTACK3, 0},
+	{"S_CYBRAKDEMON_VILE_ATTACK3", 0, SPR_BRAK, 19, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK4, 0},
+	{"S_CYBRAKDEMON_VILE_ATTACK4", 0, SPR_BRAK, 18, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK5, 0},
+	{"S_CYBRAKDEMON_VILE_ATTACK5", 0, SPR_BRAK, 8, 32, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK6, 0},
+	{"S_CYBRAKDEMON_VILE_ATTACK6", 0, SPR_BRAK, 20 + FF_FULLBRIGHT, 28, {A_VileAttack}, sfx_brakrx, MT_CYBRAKDEMON_VILE_EXPLOSION + (1<<16), S_CYBRAKDEMON_FINISH_ATTACK1, 0},
+	{"S_CYBRAKDEMON_NAPALM_ATTACK1", 0, SPR_BRAK, 0, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_NAPALM_ATTACK2, 0},
+	{"S_CYBRAKDEMON_NAPALM_ATTACK2", 0, SPR_BRAK, 21 + FF_FULLBRIGHT, 8, {A_BrakLobShot}, MT_CYBRAKDEMON_NAPALM_BOMB_LARGE, 96, S_CYBRAKDEMON_NAPALM_ATTACK3, 0},
+	{"S_CYBRAKDEMON_NAPALM_ATTACK3", 0, SPR_BRAK, 0, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FINISH_ATTACK1, 0},
+	{"S_CYBRAKDEMON_FINISH_ATTACK1", 0, SPR_BRAK, 0, 0, {A_SetObjectFlags2}, MF2_FRET, 1, S_CYBRAKDEMON_FINISH_ATTACK2, 0},  // If just attacked, remove MF2_FRET w/out going back to spawnstate
+	{"S_CYBRAKDEMON_FINISH_ATTACK2", 0, SPR_BRAK, 0, 0, {A_SetReactionTime}, 0, 0, S_CYBRAKDEMON_WALK1, 0},  // If just attacked, remove MF2_FRET w/out going back to spawnstate
+	{"S_CYBRAKDEMON_PAIN1", 0, SPR_BRAK, 18, 24, {A_Pain}, 0, 0, S_CYBRAKDEMON_PAIN2, 0},
+	{"S_CYBRAKDEMON_PAIN2", 0, SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0},
+	{"S_CYBRAKDEMON_PAIN3", 0, SPR_BRAK, 18, 0, {A_LinedefExecuteFromArg}, 4, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0},
+	{"S_CYBRAKDEMON_DIE1", 0, SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2, 0},
+	{"S_CYBRAKDEMON_DIE2", 0, SPR_BRAK, 18, 2, {A_BossScream}, 2, 0, S_CYBRAKDEMON_DIE3, 0},
+	{"S_CYBRAKDEMON_DIE3", 0, SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4, 0},
+	{"S_CYBRAKDEMON_DIE4", 0, SPR_BRAK, 13, 34, {A_BossDeath}, 0, 0, S_CYBRAKDEMON_DIE5, 0},
+	{"S_CYBRAKDEMON_DIE5", 0, SPR_BRAK, 14, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6, 0},
+	{"S_CYBRAKDEMON_DIE6", 0, SPR_BRAK, 15, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7, 0},
+	{"S_CYBRAKDEMON_DIE7", 0, SPR_BRAK, 16, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE8, 0},
+	{"S_CYBRAKDEMON_DIE8", 0, SPR_BRAK, 17, 34, {NULL}, sfx_befall, 0, S_CYBRAKDEMON_DIE8, 0},
+	{"S_CYBRAKDEMON_DEINVINCIBLERIZE", 0, SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 2, S_CYBRAKDEMON_IDLE, 0},
+	{"S_CYBRAKDEMON_INVINCIBLERIZE", 0, SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 1, S_CYBRAKDEMON_IDLE, 0},
+
+	{"S_CYBRAKDEMONMISSILE", 0, SPR_RCKT, 0 + FF_FULLBRIGHT, 1, {A_SetObjectFlags2}, MF2_RAILRING, 2, S_CYBRAKDEMONMISSILE, 0},
+	{"S_CYBRAKDEMONMISSILE_EXPLODE1", 0, SPR_RCKT, 1 + FF_FULLBRIGHT, 8, {A_Explode}, 0, 0, S_CYBRAKDEMONMISSILE_EXPLODE2, 0},  //TODO: set missile mobj's "damage" to an appropriate radius
+	{"S_CYBRAKDEMONMISSILE_EXPLODE2", 0, SPR_RCKT, 2 + FF_FULLBRIGHT, 6, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (6<<16), 32 + (16<<16), S_CYBRAKDEMONMISSILE_EXPLODE3, 0},
+	{"S_CYBRAKDEMONMISSILE_EXPLODE3", 0, SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_CYBRAKDEMONFLAMESHOT_FLY1", 0, SPR_FLME, FF_FULLBRIGHT  , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2, 0},
+	{"S_CYBRAKDEMONFLAMESHOT_FLY2", 0, SPR_FLME, FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0},
+	{"S_CYBRAKDEMONFLAMESHOT_FLY3", 0, SPR_FLME, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0},
+	{"S_CYBRAKDEMONFLAMESHOT_DIE", 0, SPR_FLME, FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0},
+
+	{"S_CYBRAKDEMONFLAMEREST", 0, SPR_FLAM, FF_FULLBRIGHT, 1, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST, 0},
+
+	{"S_CYBRAKDEMONELECTRICBARRIER_INIT1", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_INIT2", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER1, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER1", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER2, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER2", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER3, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER3", 0, SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER4, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER4", 0, SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER5, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER5", 0, SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER6, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER6", 0, SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER7, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER7", 0, SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER8, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER8", 0, SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER9, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER9", 0, SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER10, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER10", 0, SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER11, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER11", 0, SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER12, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER12", 0, SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER13, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER13", 0, SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER14, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER14", 0, SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER15, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER15", 0, SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER16, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER16", 0, SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER17, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER17", 0, SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER18, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER18", 0, SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER19, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER19", 0, SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER20, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER20", 0, SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER21, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER21", 0, SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER22, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER22", 0, SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER23, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER23", 0, SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER24, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER24", 0, SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_DIE1", 0, SPR_NULL, 0, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_DEINVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_DIE2, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_DIE2", 0, SPR_NULL, 0, 0, {A_SetObjectFlags}, MF_PUSHABLE|MF_FIRE|MF_PAIN, 1, S_CYBRAKDEMONELECTRICBARRIER_DIE3, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_DIE3", 0, SPR_NULL, 0, 20*TICRATE, {A_Scream}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK", 0, SPR_NULL, 0, 0, {A_CheckRandom}, 10, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS", 0, SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE", 0, SPR_NULL, 0, 0, {A_RandomStateRange}, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2", 0, SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3", 0, SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4", 0, SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5", 0, SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6", 0, SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7", 0, SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8", 0, SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9", 0, SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10", 0, SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11", 0, SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12", 0, SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP", 0, SPR_NULL, 0, 0, {A_Repeat}, 5*TICRATE, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK, S_CYBRAKDEMONELECTRICBARRIER_REVIVE1, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_REVIVE1", 0, SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE2, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_REVIVE2", 0, SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE3, 0},
+	{"S_CYBRAKDEMONELECTRICBARRIER_REVIVE3", 0, SPR_NULL, 0, TICRATE, {A_PlaySound}, sfx_s3k79, 0, S_NULL, 0},
+
+	{"S_CYBRAKDEMONTARGETRETICULE1", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, sfx_s3k9d, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE2, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE2", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE3, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE3", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|1, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE4, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE4", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE5, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE5", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|2, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE6, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE6", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE7, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE7", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|3, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE8, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE8", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE9, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE9", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|4, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE10, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE10", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE11, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE11", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|5, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE12, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE12", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE13, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE13", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE14, 0},
+	{"S_CYBRAKDEMONTARGETRETICULE14", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_Repeat}, 6, S_CYBRAKDEMONTARGETRETICULE2, S_NULL, 0},
+
+	{"S_CYBRAKDEMONTARGETDOT", 0, SPR_HOOP, FF_TRANS50|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1", 0, SPR_NPLM, 0, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2, 0},
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2", 0, SPR_NPLM, 1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3, 0},
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3", 0, SPR_NPLM, 2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4, 0},
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4", 0, SPR_NPLM, 3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1, 0},
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1", 0, SPR_NPLM, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, 0}, // Explode
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2", 0, SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (6<<16), 256 + (48<<16), S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, 0}, // Outer ring
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3", 0, SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (1<<16), 32<<16, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, 0}, // Center
+	{"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4", 0, SPR_NULL, 0, 81, {A_Scream}, 0, 0, S_NULL, 0}, // Sound
+
+	{"S_CYBRAKDEMONNAPALMBOMBSMALL", 0, SPR_MNPL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL, 0},
+	{"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1", 0, SPR_MNPL, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, 0}, // Explode
+	{"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2", 0, SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (12<<16), 128 + (40<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, 0}, // Outer ring
+	{"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3", 0, SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (8<<16), 64 + (32<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, 0}, // Inner ring
+	{"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4", 0, SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (1<<16), 24<<16, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, 0}, // Center
+	{"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5", 0, SPR_NULL, 0, 24, {A_Scream}, 0, 0, S_NULL, 0}, // Sound
+
+	{"S_CYBRAKDEMONNAPALMFLAME_FLY1", 0, SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY2, 0},
+	{"S_CYBRAKDEMONNAPALMFLAME_FLY2", 0, SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY3, 0},
+	{"S_CYBRAKDEMONNAPALMFLAME_FLY3", 0, SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY4, 0},
+	{"S_CYBRAKDEMONNAPALMFLAME_FLY4", 0, SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY5, 0},
+	{"S_CYBRAKDEMONNAPALMFLAME_FLY5", 0, SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY6, 0},
+	{"S_CYBRAKDEMONNAPALMFLAME_FLY6", 0, SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY1, 0},
+	{"S_CYBRAKDEMONNAPALMFLAME_DIE", 0, SPR_SFLM, FF_FULLBRIGHT,   0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0},
+
+	{"S_CYBRAKDEMONVILEEXPLOSION1", 0, SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2, 0},
+	{"S_CYBRAKDEMONVILEEXPLOSION2", 0, SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3, 0},
+	{"S_CYBRAKDEMONVILEEXPLOSION3", 0, SPR_NULL, 0, 1, {A_BossScream}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION1, 0},
 
 	// Metal Sonic
-	{SPR_PLAY, SPR2_STND, -1, {NULL}, 0, 0, S_METALSONIC_RACE, 0}, // S_METALSONIC_RACE
-
-	{SPR_METL,  4, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0},             // S_METALSONIC_FLOAT
-	{SPR_METL, 16|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_METALSONIC_STUN, 0}, // S_METALSONIC_VECTOR
-	{SPR_METL, 15, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_STUN
-	{SPR_METL, 17, 20, {NULL},         0, 0, S_METALSONIC_GATHER, 0},// S_METALSONIC_RAISE
-	{SPR_METL, 18, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0},             // S_METALSONIC_GATHER
-	{SPR_METL,  6|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_BOUNCE, 0},// S_METALSONIC_DASH
-	{SPR_METL, 18|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_FLOAT, 0},             // S_METALSONIC_BOUNCE
-	{SPR_METL, 14, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0},             // S_METALSONIC_BADBOUNCE
-	{SPR_METL, 17, -1, {NULL},         0, 0, S_METALSONIC_GATHER, 0},// S_METALSONIC_SHOOT
-	{SPR_METL, 15, 40, {A_Pain},       0, 0, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_PAIN
-	{SPR_METL, 17,  2, {A_Fall},       0, 0, S_METALSONIC_DEATH2, 0},// S_METALSONIC_DEATH1
-	{SPR_METL, 17,  4, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3, 0},// S_METALSONIC_DEATH2
-	{SPR_METL, 17,  0, {A_Repeat}, 17, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4, 0}, // S_METALSONIC_DEATH3
-	{SPR_METL, 17, -1, {A_BossDeath},  0, 0, S_NULL, 0},             // S_METALSONIC_DEATH4
-	{SPR_METL, 15,  1, {A_BossScream},         0, 0, S_METALSONIC_FLEE2, 0}, // S_METALSONIC_FLEE1
-	{SPR_METL, 15,  7, {NULL},                 0, 0, S_METALSONIC_FLEE1, 0}, // S_METALSONIC_FLEE2
-
-	{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|FF_ANIMATE, -1, {NULL}, 11, 1, S_NULL, 0},  // S_MSSHIELD_F1
-	{SPR_MSCF, FF_FULLBRIGHT|FF_ANIMATE|12, -1, {NULL}, 8, 2, S_NULL, 0},  // S_MSSHIELD_F2
+	{"S_METALSONIC_RACE", 0, SPR_PLAY, SPR2_STND, -1, {NULL}, 0, 0, S_METALSONIC_RACE, 0},
+
+	{"S_METALSONIC_FLOAT", 0, SPR_METL,  4, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0},
+	{"S_METALSONIC_VECTOR", 0, SPR_METL, 16|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_METALSONIC_STUN, 0},
+	{"S_METALSONIC_STUN", 0, SPR_METL, 15, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0},
+	{"S_METALSONIC_RAISE", 0, SPR_METL, 17, 20, {NULL},         0, 0, S_METALSONIC_GATHER, 0},
+	{"S_METALSONIC_GATHER", 0, SPR_METL, 18, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0},
+	{"S_METALSONIC_DASH", 0, SPR_METL,  6|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_BOUNCE, 0},
+	{"S_METALSONIC_BOUNCE", 0, SPR_METL, 18|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_FLOAT, 0},
+	{"S_METALSONIC_BADBOUNCE", 0, SPR_METL, 14, -1, {NULL},         0, 0, S_METALSONIC_FLOAT, 0},
+	{"S_METALSONIC_SHOOT", 0, SPR_METL, 17, -1, {NULL},         0, 0, S_METALSONIC_GATHER, 0},
+	{"S_METALSONIC_PAIN", 0, SPR_METL, 15, 40, {A_Pain},       0, 0, S_METALSONIC_FLOAT, 0},
+	{"S_METALSONIC_DEATH1", 0, SPR_METL, 17,  2, {A_Fall},       0, 0, S_METALSONIC_DEATH2, 0},
+	{"S_METALSONIC_DEATH2", 0, SPR_METL, 17,  4, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3, 0},
+	{"S_METALSONIC_DEATH3", 0, SPR_METL, 17,  0, {A_Repeat}, 17, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4, 0},
+	{"S_METALSONIC_DEATH4", 0, SPR_METL, 17, -1, {A_BossDeath},  0, 0, S_NULL, 0},
+	{"S_METALSONIC_FLEE1", 0, SPR_METL, 15,  1, {A_BossScream},         0, 0, S_METALSONIC_FLEE2, 0},
+	{"S_METALSONIC_FLEE2", 0, SPR_METL, 15,  7, {NULL},                 0, 0, S_METALSONIC_FLEE1, 0},
+
+	{"S_MSSHIELD_F1", 0, SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|FF_ANIMATE, -1, {NULL}, 11, 1, S_NULL, 0},
+	{"S_MSSHIELD_F2", 0, SPR_MSCF, FF_FULLBRIGHT|FF_ANIMATE|12, -1, {NULL}, 8, 2, S_NULL, 0},
 
 	// Ring
-	{SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING, 0}, // S_RING
+	{"S_RING", 0, SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING, 0},
 
 	// Blue Sphere for special stages
-	{SPR_SPHR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUESPHERE
-	{SPR_SPHR, FF_FULLBRIGHT
+	{"S_BLUESPHERE", 0, SPR_SPHR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BLUESPHEREBONUS", 0, SPR_SPHR, FF_FULLBRIGHT
 #ifdef MANIASPHERES
 							|FF_ANIMATE|FF_RANDOMANIM
 #endif
-													, -1, {NULL}, 1, 4, S_NULL, 0}, // S_BLUESPHEREBONUS
-	{SPR_SPHR, 0, 20, {NULL}, 0, 0, S_NULL, 0}, // S_BLUESPHERESPARK
+							, -1, {NULL}, 1, 4, S_NULL, 0},
+	{"S_BLUESPHERESPARK", 0, SPR_SPHR, 0, 20, {NULL}, 0, 0, S_NULL, 0},
 
 	// Bomb Sphere
-	{SPR_SPHR, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_BOMBSPHERE2, 0}, // S_BOMBSPHERE1
-	{SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE3, 0}, // S_BOMBSPHERE2
-	{SPR_SPHR, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_BOMBSPHERE4, 0}, // S_BOMBSPHERE3
-	{SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE1, 0}, // S_BOMBSPHERE4
+	{"S_BOMBSPHERE1", 0, SPR_SPHR, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_BOMBSPHERE2, 0},
+	{"S_BOMBSPHERE2", 0, SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE3, 0},
+	{"S_BOMBSPHERE3", 0, SPR_SPHR, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_BOMBSPHERE4, 0},
+	{"S_BOMBSPHERE4", 0, SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE1, 0},
 
 	// NiGHTS Chip
-	{SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE,    -1, {NULL}, 15, 2, S_NULL, 0}, // S_NIGHTSCHIP
-	{SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE|16, -1, {NULL}, 15, 2, S_NULL, 0}, // S_NIGHTSCHIPBONUS
+	{"S_NIGHTSCHIP", 0, SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE,    -1, {NULL}, 15, 2, S_NULL, 0},
+	{"S_NIGHTSCHIPBONUS", 0, SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE|16, -1, {NULL}, 15, 2, S_NULL, 0},
 
 	// NiGHTS Star
-	{SPR_NSTR, FF_ANIMATE, -1, {NULL}, 14, 2, S_NULL, 0}, // S_NIGHTSSTAR
-	{SPR_NSTR, 15, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSSTARXMAS
+	{"S_NIGHTSSTAR", 0, SPR_NSTR, FF_ANIMATE, -1, {NULL}, 14, 2, S_NULL, 0},
+	{"S_NIGHTSSTARXMAS", 0, SPR_NSTR, 15, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Gravity Well sprites for Egg Rock's Special Stage
-	{SPR_GWLG, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_GRAVWELLGREEN
-	{SPR_GWLR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_GRAVWELLRED
+	{"S_GRAVWELLGREEN", 0, SPR_GWLG, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0},
+	{"S_GRAVWELLRED", 0, SPR_GWLR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0},
 
 	// Individual Team Rings (now with shield attracting action! =P)
-	{SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING, 0},  // S_TEAMRING
+	{"S_TEAMRING", 0, SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING, 0},
 
 	// Special Stage Token
-	{SPR_TOKE, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 19, 1, S_TOKEN, 0}, // S_TOKEN
+	{"S_TOKEN", 0, SPR_TOKE, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 19, 1, S_TOKEN, 0},
 
 	// CTF Flags
-	{SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_REDFLAG
-	{SPR_BFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUEFLAG
+	{"S_REDFLAG", 0, SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BLUEFLAG", 0, SPR_BFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Emblem
-	{SPR_EMBM,  0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM1
-	{SPR_EMBM,  1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM2
-	{SPR_EMBM,  2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM3
-	{SPR_EMBM,  3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM4
-	{SPR_EMBM,  4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM5
-	{SPR_EMBM,  5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM6
-	{SPR_EMBM,  6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM7
-	{SPR_EMBM,  7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM8
-	{SPR_EMBM,  8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM9
-	{SPR_EMBM,  9, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM10
-	{SPR_EMBM, 10, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM11
-	{SPR_EMBM, 11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM12
-	{SPR_EMBM, 12, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM13
-	{SPR_EMBM, 13, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM14
-	{SPR_EMBM, 14, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM15
-	{SPR_EMBM, 15, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM16
-	{SPR_EMBM, 16, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM17
-	{SPR_EMBM, 17, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM18
-	{SPR_EMBM, 18, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM19
-	{SPR_EMBM, 19, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM20
-	{SPR_EMBM, 20, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM21
-	{SPR_EMBM, 21, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM22
-	{SPR_EMBM, 22, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM23
-	{SPR_EMBM, 23, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM24
-	{SPR_EMBM, 24, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM25
-	{SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM26
+	{"S_EMBLEM1", 0, SPR_EMBM,  0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM2", 0, SPR_EMBM,  1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM3", 0, SPR_EMBM,  2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM4", 0, SPR_EMBM,  3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM5", 0, SPR_EMBM,  4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM6", 0, SPR_EMBM,  5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM7", 0, SPR_EMBM,  6, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM8", 0, SPR_EMBM,  7, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM9", 0, SPR_EMBM,  8, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM10", 0, SPR_EMBM,  9, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM11", 0, SPR_EMBM, 10, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM12", 0, SPR_EMBM, 11, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM13", 0, SPR_EMBM, 12, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM14", 0, SPR_EMBM, 13, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM15", 0, SPR_EMBM, 14, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM16", 0, SPR_EMBM, 15, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM17", 0, SPR_EMBM, 16, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM18", 0, SPR_EMBM, 17, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM19", 0, SPR_EMBM, 18, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM20", 0, SPR_EMBM, 19, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM21", 0, SPR_EMBM, 20, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM22", 0, SPR_EMBM, 21, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM23", 0, SPR_EMBM, 22, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM24", 0, SPR_EMBM, 23, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM25", 0, SPR_EMBM, 24, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_EMBLEM26", 0, SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Chaos Emeralds
-	{SPR_CEMG, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG1
-	{SPR_CEMG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG2
-	{SPR_CEMG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG3
-	{SPR_CEMG, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG4
-	{SPR_CEMG, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG5
-	{SPR_CEMG, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG6
-	{SPR_CEMG, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG7
+	{"S_CEMG1", 0, SPR_CEMG, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEMG2", 0, SPR_CEMG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEMG3", 0, SPR_CEMG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEMG4", 0, SPR_CEMG, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEMG5", 0, SPR_CEMG, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEMG6", 0, SPR_CEMG, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEMG7", 0, SPR_CEMG, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Emerald hunt shards
-	{SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHRD1
-	{SPR_SHRD, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHRD2
-	{SPR_SHRD, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHRD3
+	{"S_SHRD1", 0, SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SHRD2", 0, SPR_SHRD, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SHRD3", 0, SPR_SHRD, 2, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Bubble Source
-	{SPR_BBLS, 0, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES2, 0}, // S_BUBBLES1
-	{SPR_BBLS, 1, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES3, 0}, // S_BUBBLES2
-	{SPR_BBLS, 2, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES4, 0}, // S_BUBBLES3
-	{SPR_BBLS, 3, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES1, 0}, // S_BUBBLES4
+	{"S_BUBBLES1", 0, SPR_BBLS, 0, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES2, 0},
+	{"S_BUBBLES2", 0, SPR_BBLS, 1, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES3, 0},
+	{"S_BUBBLES3", 0, SPR_BBLS, 2, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES4, 0},
+	{"S_BUBBLES4", 0, SPR_BBLS, 3, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES1, 0},
 
 	// Level End Sign
-	{SPR_SIGN,                 0, -1, {A_SignPlayer}, -3, 0, S_NULL, 0},                // S_SIGN
-	{SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN2, 0},           // S_SIGNSPIN1
-	{SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN1, S_SIGNSPIN3, 0}, // S_SIGNSPIN2
-	{SPR_SIGN,                 0,  0, {A_SignPlayer}, -2, 0, S_SIGNSPIN4, 0},           // S_SIGNSPIN3
-	{SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN5, 0},           // S_SIGNSPIN4
-	{SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN4, S_SIGNSPIN6, 0}, // S_SIGNSPIN5
-	{SPR_SIGN,                 0,  0, {A_SignPlayer}, -3, 0, S_SIGNSPIN1, 0},           // S_SIGNSPIN6
-	{SPR_SIGN,                 0,  1, {A_SignPlayer}, -1, 0, S_SIGNSLOW, 0},            // S_SIGNPLAYER
-	{SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSLOW, 0},            // S_SIGNSLOW
-	{SPR_SIGN,                 0, -1,         {NULL},  0, 0, S_NULL, 0},                // S_SIGNSTOP
-	{SPR_SIGN, FF_PAPERSPRITE| 2, -1,         {NULL},  0, 0, S_NULL, 0},                // S_SIGNBOARD
-	{SPR_SIGN, FF_PAPERSPRITE| 1, -1,         {NULL},  0, 29, S_NULL, 0},               // S_EGGMANSIGN
-	{SPR_SIGN, FF_PAPERSPRITE|18, -1,         {NULL},  0, 29, S_NULL, 0},               // S_CLEARSIGN
+	{"S_SIGN", 0, SPR_SIGN,                 0, -1, {A_SignPlayer}, -3, 0, S_NULL, 0},
+	{"S_SIGNSPIN1", 0, SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN2, 0},
+	{"S_SIGNSPIN2", 0, SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN1, S_SIGNSPIN3, 0},
+	{"S_SIGNSPIN3", 0, SPR_SIGN,                 0,  0, {A_SignPlayer}, -2, 0, S_SIGNSPIN4, 0},
+	{"S_SIGNSPIN4", 0, SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN5, 0},
+	{"S_SIGNSPIN5", 0, SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN4, S_SIGNSPIN6, 0},
+	{"S_SIGNSPIN6", 0, SPR_SIGN,                 0,  0, {A_SignPlayer}, -3, 0, S_SIGNSPIN1, 0},
+	{"S_SIGNPLAYER", 0, SPR_SIGN,                 0,  1, {A_SignPlayer}, -1, 0, S_SIGNSLOW, 0},
+	{"S_SIGNSLOW", 0, SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSLOW, 0},
+	{"S_SIGNSTOP", 0, SPR_SIGN,                 0, -1,         {NULL},  0, 0, S_NULL, 0},
+	{"S_SIGNBOARD", 0, SPR_SIGN, FF_PAPERSPRITE| 2, -1,         {NULL},  0, 0, S_NULL, 0},
+	{"S_EGGMANSIGN", 0, SPR_SIGN, FF_PAPERSPRITE| 1, -1,         {NULL},  0, 29, S_NULL, 0},
+	{"S_CLEARSIGN", 0, SPR_SIGN, FF_PAPERSPRITE|18, -1,         {NULL},  0, 29, S_NULL, 0},
 
 	// Spike Ball
-	{SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2, 0}, // S_SPIKEBALL1
-	{SPR_SPIK, 1, 1, {NULL}, 0, 0, S_SPIKEBALL3, 0}, // S_SPIKEBALL2
-	{SPR_SPIK, 2, 1, {NULL}, 0, 0, S_SPIKEBALL4, 0}, // S_SPIKEBALL3
-	{SPR_SPIK, 3, 1, {NULL}, 0, 0, S_SPIKEBALL5, 0}, // S_SPIKEBALL4
-	{SPR_SPIK, 4, 1, {NULL}, 0, 0, S_SPIKEBALL6, 0}, // S_SPIKEBALL5
-	{SPR_SPIK, 5, 1, {NULL}, 0, 0, S_SPIKEBALL7, 0}, // S_SPIKEBALL6
-	{SPR_SPIK, 6, 1, {NULL}, 0, 0, S_SPIKEBALL8, 0}, // S_SPIKEBALL7
-	{SPR_SPIK, 7, 1, {NULL}, 0, 0, S_SPIKEBALL1, 0}, // S_SPIKEBALL8
+	{"S_SPIKEBALL1", 0, SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2, 0},
+	{"S_SPIKEBALL2", 0, SPR_SPIK, 1, 1, {NULL}, 0, 0, S_SPIKEBALL3, 0},
+	{"S_SPIKEBALL3", 0, SPR_SPIK, 2, 1, {NULL}, 0, 0, S_SPIKEBALL4, 0},
+	{"S_SPIKEBALL4", 0, SPR_SPIK, 3, 1, {NULL}, 0, 0, S_SPIKEBALL5, 0},
+	{"S_SPIKEBALL5", 0, SPR_SPIK, 4, 1, {NULL}, 0, 0, S_SPIKEBALL6, 0},
+	{"S_SPIKEBALL6", 0, SPR_SPIK, 5, 1, {NULL}, 0, 0, S_SPIKEBALL7, 0},
+	{"S_SPIKEBALL7", 0, SPR_SPIK, 6, 1, {NULL}, 0, 0, S_SPIKEBALL8, 0},
+	{"S_SPIKEBALL8", 0, SPR_SPIK, 7, 1, {NULL}, 0, 0, S_SPIKEBALL1, 0},
 
 	// Elemental Shield's Spawn
-	{SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_SPINFIRE2, 0}, // S_SPINFIRE1
-	{SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_SPINFIRE3, 0}, // S_SPINFIRE2
-	{SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SPINFIRE4, 0}, // S_SPINFIRE3
-	{SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SPINFIRE5, 0}, // S_SPINFIRE4
-	{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6, 0}, // S_SPINFIRE5
-	{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1, 0}, // S_SPINFIRE6
-
-	{SPR_TFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_TEAM_SPINFIRE2, 0}, // S_TEAM_SPINFIRE1
-	{SPR_TFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE3, 0}, // S_TEAM_SPINFIRE2
-	{SPR_TFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE4, 0}, // S_TEAM_SPINFIRE3
-	{SPR_TFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE5, 0}, // S_TEAM_SPINFIRE4
-	{SPR_TFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE6, 0}, // S_TEAM_SPINFIRE5
-	{SPR_TFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE1, 0}, // S_TEAM_SPINFIRE6
+	{"S_SPINFIRE1", 0, SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_SPINFIRE2, 0},
+	{"S_SPINFIRE2", 0, SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_SPINFIRE3, 0},
+	{"S_SPINFIRE3", 0, SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SPINFIRE4, 0},
+	{"S_SPINFIRE4", 0, SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SPINFIRE5, 0},
+	{"S_SPINFIRE5", 0, SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6, 0},
+	{"S_SPINFIRE6", 0, SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1, 0},
+
+	{"S_TEAM_SPINFIRE1", 0, SPR_TFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_TEAM_SPINFIRE2, 0},
+	{"S_TEAM_SPINFIRE2", 0, SPR_TFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE3, 0},
+	{"S_TEAM_SPINFIRE3", 0, SPR_TFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE4, 0},
+	{"S_TEAM_SPINFIRE4", 0, SPR_TFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE5, 0},
+	{"S_TEAM_SPINFIRE5", 0, SPR_TFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE6, 0},
+	{"S_TEAM_SPINFIRE6", 0, SPR_TFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE1, 0},
 
 	// Floor Spike
-	{SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2, 0}, // S_SPIKE1 -- Fully extended
-	{SPR_USPK, 1, 2, {A_Pain},         0, 0, S_SPIKE3, 0}, // S_SPIKE2
-	{SPR_USPK, 2, 2, {NULL},           0, 0, S_SPIKE4, 0}, // S_SPIKE3
-	{SPR_USPK, 3,-1, {A_SpikeRetract}, 0, 0, S_SPIKE5, 0}, // S_SPIKE4 -- Fully retracted
-	{SPR_USPK, 2, 2, {A_Pain},         0, 0, S_SPIKE6, 0}, // S_SPIKE5
-	{SPR_USPK, 1, 2, {NULL},           0, 0, S_SPIKE1, 0}, // S_SPIKE6
-	{SPR_USPK, 4,-1, {NULL}, 0, 0, S_NULL, 0}, // S_SPIKED1 -- Busted spike particles
-	{SPR_USPK, 5,-1, {NULL}, 0, 0, S_NULL, 0}, // S_SPIKED2
+	{"S_SPIKE1", 0, SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2, 0},  // -- Fully extended
+	{"S_SPIKE2", 0, SPR_USPK, 1, 2, {A_Pain},         0, 0, S_SPIKE3, 0},
+	{"S_SPIKE3", 0, SPR_USPK, 2, 2, {NULL},           0, 0, S_SPIKE4, 0},
+	{"S_SPIKE4", 0, SPR_USPK, 3,-1, {A_SpikeRetract}, 0, 0, S_SPIKE5, 0},  // -- Fully retracted
+	{"S_SPIKE5", 0, SPR_USPK, 2, 2, {A_Pain},         0, 0, S_SPIKE6, 0},
+	{"S_SPIKE6", 0, SPR_USPK, 1, 2, {NULL},           0, 0, S_SPIKE1, 0},
+	{"S_SPIKED1", 0, SPR_USPK, 4,-1, {NULL}, 0, 0, S_NULL, 0},  // -- Busted spike particles
+	{"S_SPIKED2", 0, SPR_USPK, 5,-1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Wall Spike
-	{SPR_WSPK, 0|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 1, 0, S_WALLSPIKE2, 0}, // S_WALLSPIKE1 -- Fully extended
-	{SPR_WSPK, 1|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE3, 0}, // S_WALLSPIKE2
-	{SPR_WSPK, 2|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE4, 0}, // S_WALLSPIKE3
-	{SPR_WSPK, 3|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 0, 0, S_WALLSPIKE5, 0}, // S_WALLSPIKE4 -- Fully retracted
-	{SPR_WSPK, 2|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE6, 0}, // S_WALLSPIKE5
-	{SPR_WSPK, 1|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE1, 0}, // S_WALLSPIKE6
-	{SPR_WSPB, 0|FF_PAPERSPRITE,-1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLSPIKEBASE -- Base
-	{SPR_WSPK, 4,-1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLSPIKED1 -- Busted spike particles
-	{SPR_WSPK, 5,-1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLSPIKED2
+	{"S_WALLSPIKE1", 0, SPR_WSPK, 0|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 1, 0, S_WALLSPIKE2, 0},  // -- Fully extended
+	{"S_WALLSPIKE2", 0, SPR_WSPK, 1|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE3, 0},
+	{"S_WALLSPIKE3", 0, SPR_WSPK, 2|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE4, 0},
+	{"S_WALLSPIKE4", 0, SPR_WSPK, 3|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 0, 0, S_WALLSPIKE5, 0},  // -- Fully retracted
+	{"S_WALLSPIKE5", 0, SPR_WSPK, 2|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE6, 0},
+	{"S_WALLSPIKE6", 0, SPR_WSPK, 1|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE1, 0},
+	{"S_WALLSPIKEBASE", 0, SPR_WSPB, 0|FF_PAPERSPRITE,-1, {NULL}, 0, 0, S_NULL, 0},  // -- Base
+	{"S_WALLSPIKED1", 0, SPR_WSPK, 4,-1, {NULL}, 0, 0, S_NULL, 0},  // -- Busted spike particles
+	{"S_WALLSPIKED2", 0, SPR_WSPK, 5,-1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Starpost
-	{SPR_STPT, 0            , -1, {NULL},  0, 0, S_NULL, 0},           // S_STARPOST_IDLE
-	{SPR_STPT, FF_ANIMATE|17, -1, {NULL},  5, 1, S_NULL, 0},           // S_STARPOST_FLASH
-	{SPR_STPT, FF_ANIMATE|13,  2, {NULL},  1, 1, S_STARPOST_SPIN, 0},  // S_STARPOST_STARTSPIN
-	{SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN, 0}, // S_STARPOST_SPIN
-	{SPR_STPT, FF_ANIMATE|15,  2, {NULL},  1, 1, S_STARPOST_FLASH, 0}, // S_STARPOST_ENDSPIN
+	{"S_STARPOST_IDLE", 0, SPR_STPT, 0            , -1, {NULL},  0, 0, S_NULL, 0},
+	{"S_STARPOST_FLASH", 0, SPR_STPT, FF_ANIMATE|17, -1, {NULL},  5, 1, S_NULL, 0},
+	{"S_STARPOST_STARTSPIN", 0, SPR_STPT, FF_ANIMATE|13,  2, {NULL},  1, 1, S_STARPOST_SPIN, 0},
+	{"S_STARPOST_SPIN", 0, SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN, 0},
+	{"S_STARPOST_ENDSPIN", 0, SPR_STPT, FF_ANIMATE|15,  2, {NULL},  1, 1, S_STARPOST_FLASH, 0},
 
 	// Big floating mine
-	{SPR_BMNE, 0,  2, {A_Look},      ((224<<FRACBITS)|1), 0, S_BIGMINE_IDLE, 0},   // S_BIGMINE_IDLE
-	{SPR_BMNE, 1,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT2, 0}, // S_BIGMINE_ALERT1
-	{SPR_BMNE, 2,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT3, 0}, // S_BIGMINE_ALERT2
-	{SPR_BMNE, 0,  1, {A_Look},      ((224<<FRACBITS)|1), 1, S_BIGMINE_IDLE, 0},   // S_BIGMINE_ALERT3
-	{SPR_BMNE, 3, 25, {A_Pain},           0,            0, S_BIGMINE_SET2, 0},   // S_BIGMINE_SET1
-	{SPR_BMNE, 3, 10, {A_SetObjectFlags}, MF_SHOOTABLE, 1, S_BIGMINE_SET3, 0},   // S_BIGMINE_SET1
-	{SPR_BMNE, 3,  1, {A_MineExplode},    0,            0, S_BIGMINE_BLAST1, 0}, // S_BIGMINE_SET3
-	{SPR_BMNB,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST2, 0}, // S_BIGMINE_BLAST1
-	{SPR_BMNB, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST3, 0}, // S_BIGMINE_BLAST2
-	{SPR_BMNB, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST4, 0}, // S_BIGMINE_BLAST3
-	{SPR_BMNB, 3|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST5, 0}, // S_BIGMINE_BLAST4
-	{SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BIGMINE_BLAST5
+	{"S_BIGMINE_IDLE", 0, SPR_BMNE, 0,  2, {A_Look},      ((224<<FRACBITS)|1), 0, S_BIGMINE_IDLE, 0},
+	{"S_BIGMINE_ALERT1", 0, SPR_BMNE, 1,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT2, 0},
+	{"S_BIGMINE_ALERT2", 0, SPR_BMNE, 2,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT3, 0},
+	{"S_BIGMINE_ALERT3", 0, SPR_BMNE, 0,  1, {A_Look},      ((224<<FRACBITS)|1), 1, S_BIGMINE_IDLE, 0},
+	{"S_BIGMINE_SET1", 0, SPR_BMNE, 3, 25, {A_Pain},           0,            0, S_BIGMINE_SET2, 0},
+	{"S_BIGMINE_SET1", 0, SPR_BMNE, 3, 10, {A_SetObjectFlags}, MF_SHOOTABLE, 1, S_BIGMINE_SET3, 0},
+	{"S_BIGMINE_SET3", 0, SPR_BMNE, 3,  1, {A_MineExplode},    0,            0, S_BIGMINE_BLAST1, 0},
+	{"S_BIGMINE_BLAST1", 0, SPR_BMNB,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST2, 0},
+	{"S_BIGMINE_BLAST2", 0, SPR_BMNB, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST3, 0},
+	{"S_BIGMINE_BLAST3", 0, SPR_BMNB, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST4, 0},
+	{"S_BIGMINE_BLAST4", 0, SPR_BMNB, 3|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST5, 0},
+	{"S_BIGMINE_BLAST5", 0, SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0},
 
 	// Cannon launcher
-	{SPR_NULL, 0, 1,    {A_FindTarget},     MT_PLAYER,         0, S_CANNONLAUNCHER2, 0}, // S_CANNONLAUNCHER1
-	{SPR_NULL, 0, 1,       {A_LobShot}, MT_CANNONBALL, 4*TICRATE, S_CANNONLAUNCHER3, 0}, // S_CANNONLAUNCHER2
-	{SPR_NULL, 0, 2, {A_SetRandomTics},     TICRATE/2, 3*TICRATE, S_CANNONLAUNCHER1, 0}, // S_CANNONLAUNCHER3
+	{"S_CANNONLAUNCHER1", 0, SPR_NULL, 0, 1,    {A_FindTarget},     MT_PLAYER,         0, S_CANNONLAUNCHER2, 0},
+	{"S_CANNONLAUNCHER2", 0, SPR_NULL, 0, 1,       {A_LobShot}, MT_CANNONBALL, 4*TICRATE, S_CANNONLAUNCHER3, 0},
+	{"S_CANNONLAUNCHER3", 0, SPR_NULL, 0, 2, {A_SetRandomTics},     TICRATE/2, 3*TICRATE, S_CANNONLAUNCHER1, 0},
 
 	// Monitor Miscellany
-	{SPR_NSPK, 0, 16, {NULL}, 0, 0, S_BOXSPARKLE2, 0}, // S_BOXSPARKLE1
-	{SPR_NSPK, 1, 12, {NULL}, 0, 0, S_BOXSPARKLE3, 0}, // S_BOXSPARKLE2
-	{SPR_NSPK, 2,  8, {NULL}, 0, 0, S_BOXSPARKLE4, 0}, // S_BOXSPARKLE3
-	{SPR_NSPK, 3,  4, {NULL}, 0, 0, S_NULL, 0},        // S_BOXSPARKLE4
-
-	{SPR_MSTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE, 0},  // S_BOX_FLICKER
-	{SPR_MSTV, 0,  4, {A_MonitorPop}, 0, 0, S_BOX_POP2, 0}, // S_BOX_POP1
-	{SPR_MSTV, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BOX_POP2
-
-	{SPR_XLTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE, 0},  // S_GOLDBOX_FLICKER
-	{SPR_XLTV, 1, 89, {A_GoldMonitorPop}, 0, 0, S_GOLDBOX_OFF2, 0}, // S_GOLDBOX_OFF1
-	{SPR_XLTV, 2,  4, {A_PlayAttackSound}, 0, 0, S_GOLDBOX_OFF3, 0}, // S_GOLDBOX_OFF2
-	{SPR_XLTV, 3,  4, {NULL}, 0, 0, S_GOLDBOX_OFF4, 0}, // S_GOLDBOX_OFF3
-	{SPR_XLTV, 4,  4, {NULL}, 0, 0, S_GOLDBOX_OFF5, 0}, // S_GOLDBOX_OFF4
-	{SPR_XLTV, 5,  2, {NULL}, 0, 0, S_GOLDBOX_OFF6, 0}, // S_GOLDBOX_OFF5
-	{SPR_XLTV, 6,  2, {NULL}, 0, 0, S_GOLDBOX_OFF7, 0}, // S_GOLDBOX_OFF6
-	{SPR_XLTV, 6,  0, {A_GoldMonitorRestore}, 0, 0, S_SPAWNSTATE, 0}, // S_GOLDBOX_OFF7
+	{"S_BOXSPARKLE1", 0, SPR_NSPK, 0, 16, {NULL}, 0, 0, S_BOXSPARKLE2, 0},
+	{"S_BOXSPARKLE2", 0, SPR_NSPK, 1, 12, {NULL}, 0, 0, S_BOXSPARKLE3, 0},
+	{"S_BOXSPARKLE3", 0, SPR_NSPK, 2,  8, {NULL}, 0, 0, S_BOXSPARKLE4, 0},
+	{"S_BOXSPARKLE4", 0, SPR_NSPK, 3,  4, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_BOX_FLICKER", 0, SPR_MSTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE, 0},
+	{"S_BOX_POP1", 0, SPR_MSTV, 0,  4, {A_MonitorPop}, 0, 0, S_BOX_POP2, 0},
+	{"S_BOX_POP2", 0, SPR_MSTV, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_GOLDBOX_FLICKER", 0, SPR_XLTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE, 0},
+	{"S_GOLDBOX_OFF1", 0, SPR_XLTV, 1, 89, {A_GoldMonitorPop}, 0, 0, S_GOLDBOX_OFF2, 0},
+	{"S_GOLDBOX_OFF2", 0, SPR_XLTV, 2,  4, {A_PlayAttackSound}, 0, 0, S_GOLDBOX_OFF3, 0},
+	{"S_GOLDBOX_OFF3", 0, SPR_XLTV, 3,  4, {NULL}, 0, 0, S_GOLDBOX_OFF4, 0},
+	{"S_GOLDBOX_OFF4", 0, SPR_XLTV, 4,  4, {NULL}, 0, 0, S_GOLDBOX_OFF5, 0},
+	{"S_GOLDBOX_OFF5", 0, SPR_XLTV, 5,  2, {NULL}, 0, 0, S_GOLDBOX_OFF6, 0},
+	{"S_GOLDBOX_OFF6", 0, SPR_XLTV, 6,  2, {NULL}, 0, 0, S_GOLDBOX_OFF7, 0},
+	{"S_GOLDBOX_OFF7", 0, SPR_XLTV, 6,  0, {A_GoldMonitorRestore}, 0, 0, S_SPAWNSTATE, 0},
 
 	// Monitor States (one per box)
-	{SPR_TVMY, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_MYSTERY_BOX
-	{SPR_TVRI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_RING_BOX
-	{SPR_TVPI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_PITY_BOX
-	{SPR_TVAT, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_ATTRACT_BOX
-	{SPR_TVFO, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_FORCE_BOX
-	{SPR_TVAR, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_ARMAGEDDON_BOX
-	{SPR_TVWW, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_WHIRLWIND_BOX
-	{SPR_TVEL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_ELEMENTAL_BOX
-	{SPR_TVSS, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_SNEAKERS_BOX
-	{SPR_TVIV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_INVULN_BOX
-	{SPR_TV1U, 0, 2, {A_1upThinker}, 0, 0, S_BOX_FLICKER, 0}, // S_1UP_BOX
-	{SPR_TVEG, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_EGGMAN_BOX
-	{SPR_TVMX, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_MIXUP_BOX
-	{SPR_TVGV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_GRAVITY_BOX
-	{SPR_TVRC, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_RECYCLER_BOX
-	{SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_SCORE1K_BOX
-	{SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_SCORE10K_BOX
-	{SPR_TVFL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_FLAMEAURA_BOX
-	{SPR_TVBB, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_BUBBLEWRAP_BOX
-	{SPR_TVZP, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_THUNDERCOIN_BOX
+	{"S_MYSTERY_BOX", 0, SPR_TVMY, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_RING_BOX", 0, SPR_TVRI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_PITY_BOX", 0, SPR_TVPI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_ATTRACT_BOX", 0, SPR_TVAT, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_FORCE_BOX", 0, SPR_TVFO, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_ARMAGEDDON_BOX", 0, SPR_TVAR, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_WHIRLWIND_BOX", 0, SPR_TVWW, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_ELEMENTAL_BOX", 0, SPR_TVEL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_SNEAKERS_BOX", 0, SPR_TVSS, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_INVULN_BOX", 0, SPR_TVIV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_1UP_BOX", 0, SPR_TV1U, 0, 2, {A_1upThinker}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_EGGMAN_BOX", 0, SPR_TVEG, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_MIXUP_BOX", 0, SPR_TVMX, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_GRAVITY_BOX", 0, SPR_TVGV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_RECYCLER_BOX", 0, SPR_TVRC, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_SCORE1K_BOX", 0, SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_SCORE10K_BOX", 0, SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_FLAMEAURA_BOX", 0, SPR_TVFL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_BUBBLEWRAP_BOX", 0, SPR_TVBB, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
+	{"S_THUNDERCOIN_BOX", 0, SPR_TVZP, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0},
 
 	// Gold Repeat Monitor States (one per box)
-	{SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_PITY_GOLDBOX
-	{SPR_TVAT, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_ATTRACT_GOLDBOX
-	{SPR_TVFO, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_FORCE_GOLDBOX
-	{SPR_TVAR, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_ARMAGEDDON_GOLDBOX
-	{SPR_TVWW, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_WHIRLWIND_GOLDBOX
-	{SPR_TVEL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_ELEMENTAL_GOLDBOX
-	{SPR_TVSS, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_SNEAKERS_GOLDBOX
-	{SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_INVULN_GOLDBOX
-	{SPR_TVEG, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_EGGMAN_GOLDBOX
-	{SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_GRAVITY_GOLDBOX
-	{SPR_TVFL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_FLAMEAURA_GOLDBOX
-	{SPR_TVBB, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_BUBBLEWRAP_GOLDBOX
-	{SPR_TVZP, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_THUNDERCOIN_GOLDBOX
+	{"S_PITY_GOLDBOX", 0, SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_ATTRACT_GOLDBOX", 0, SPR_TVAT, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_FORCE_GOLDBOX", 0, SPR_TVFO, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_ARMAGEDDON_GOLDBOX", 0, SPR_TVAR, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_WHIRLWIND_GOLDBOX", 0, SPR_TVWW, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_ELEMENTAL_GOLDBOX", 0, SPR_TVEL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_SNEAKERS_GOLDBOX", 0, SPR_TVSS, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_INVULN_GOLDBOX", 0, SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_EGGMAN_GOLDBOX", 0, SPR_TVEG, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_GRAVITY_GOLDBOX", 0, SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_FLAMEAURA_GOLDBOX", 0, SPR_TVFL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_BUBBLEWRAP_GOLDBOX", 0, SPR_TVBB, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
+	{"S_THUNDERCOIN_GOLDBOX", 0, SPR_TVZP, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0},
 
 	// Team Ring Boxes (these are special)
-	{SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2, 0}, // S_RING_REDBOX1
-	{SPR_TRRI, 1, 1, {NULL}, 0, 0, S_RING_REDBOX1, 0}, // S_RING_REDBOX2
-	{SPR_TRRI, 1, 4, {A_MonitorPop}, 0, 0, S_REDBOX_POP2, 0},  // S_REDBOX_POP1
-	{SPR_TRRI, 2, -1, {NULL}, 0, 0, S_NULL, 0},        // S_REDBOX_POP2
+	{"S_RING_REDBOX1", 0, SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2, 0},
+	{"S_RING_REDBOX2", 0, SPR_TRRI, 1, 1, {NULL}, 0, 0, S_RING_REDBOX1, 0},
+	{"S_REDBOX_POP1", 0, SPR_TRRI, 1, 4, {A_MonitorPop}, 0, 0, S_REDBOX_POP2, 0},
+	{"S_REDBOX_POP2", 0, SPR_TRRI, 2, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_TBRI, 0, 2, {NULL}, 0, 0, S_RING_BLUEBOX2, 0}, // S_RING_BLUEBOX1
-	{SPR_TBRI, 1, 1, {NULL}, 0, 0, S_RING_BLUEBOX1, 0}, // S_RING_BLUEBOX2
-	{SPR_TBRI, 1, 4, {A_MonitorPop}, 0, 0, S_BLUEBOX_POP2, 0},  // S_BLUEBOX_POP1
-	{SPR_TBRI, 2, -1, {NULL}, 0, 0, S_NULL, 0},         // S_BLUEBOX_POP2
+	{"S_RING_BLUEBOX1", 0, SPR_TBRI, 0, 2, {NULL}, 0, 0, S_RING_BLUEBOX2, 0},
+	{"S_RING_BLUEBOX2", 0, SPR_TBRI, 1, 1, {NULL}, 0, 0, S_RING_BLUEBOX1, 0},
+	{"S_BLUEBOX_POP1", 0, SPR_TBRI, 1, 4, {A_MonitorPop}, 0, 0, S_BLUEBOX_POP2, 0},
+	{"S_BLUEBOX_POP2", 0, SPR_TBRI, 2, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Box Icons -- 2 states each, animation and action
-	{SPR_TVRI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RING_ICON2, 0}, // S_RING_ICON1
-	{SPR_TVRI, 2, 18, {A_RingBox}, 0, 0, S_NULL, 0}, // S_RING_ICON2
+	{"S_RING_ICON1", 0, SPR_TVRI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RING_ICON2, 0},
+	{"S_RING_ICON2", 0, SPR_TVRI, 2, 18, {A_RingBox}, 0, 0, S_NULL, 0},
 
-	{SPR_TVPI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_PITY_ICON2, 0}, // S_PITY_ICON1
-	{SPR_TVPI, 2, 18, {A_GiveShield}, SH_PITY, 0, S_NULL, 0},  // S_PITY_ICON2
+	{"S_PITY_ICON1", 0, SPR_TVPI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_PITY_ICON2, 0},
+	{"S_PITY_ICON2", 0, SPR_TVPI, 2, 18, {A_GiveShield}, SH_PITY, 0, S_NULL, 0},
 
-	{SPR_TVAT, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ATTRACT_ICON2, 0}, // S_ATTRACT_ICON1
-	{SPR_TVAT, 2, 18, {A_GiveShield}, SH_ATTRACT, 0, S_NULL, 0}, // S_ATTRACT_ICON2
+	{"S_ATTRACT_ICON1", 0, SPR_TVAT, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ATTRACT_ICON2, 0},
+	{"S_ATTRACT_ICON2", 0, SPR_TVAT, 2, 18, {A_GiveShield}, SH_ATTRACT, 0, S_NULL, 0},
 
-	{SPR_TVFO, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FORCE_ICON2, 0}, // S_FORCE_ICON1
-	{SPR_TVFO, 2, 18, {A_GiveShield}, SH_FORCE|1, 0, S_NULL, 0}, // S_FORCE_ICON2
+	{"S_FORCE_ICON1", 0, SPR_TVFO, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FORCE_ICON2, 0},
+	{"S_FORCE_ICON2", 0, SPR_TVFO, 2, 18, {A_GiveShield}, SH_FORCE|1, 0, S_NULL, 0},
 
-	{SPR_TVAR, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ARMAGEDDON_ICON2, 0}, // S_ARMAGEDDON_ICON1
-	{SPR_TVAR, 2, 18, {A_GiveShield}, SH_ARMAGEDDON, 0, S_NULL, 0}, // S_ARMAGEDDON_ICON2
+	{"S_ARMAGEDDON_ICON1", 0, SPR_TVAR, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ARMAGEDDON_ICON2, 0},
+	{"S_ARMAGEDDON_ICON2", 0, SPR_TVAR, 2, 18, {A_GiveShield}, SH_ARMAGEDDON, 0, S_NULL, 0},
 
-	{SPR_TVWW, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_WHIRLWIND_ICON2, 0}, // S_WHIRLWIND_ICON1
-	{SPR_TVWW, 2, 18, {A_GiveShield}, SH_WHIRLWIND, 0, S_NULL, 0}, // S_WHIRLWIND_ICON2
+	{"S_WHIRLWIND_ICON1", 0, SPR_TVWW, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_WHIRLWIND_ICON2, 0},
+	{"S_WHIRLWIND_ICON2", 0, SPR_TVWW, 2, 18, {A_GiveShield}, SH_WHIRLWIND, 0, S_NULL, 0},
 
-	{SPR_TVEL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ELEMENTAL_ICON2, 0}, // S_ELEMENTAL_ICON1
-	{SPR_TVEL, 2, 18, {A_GiveShield}, SH_ELEMENTAL, 0, S_NULL, 0}, // S_ELEMENTAL_ICON2
+	{"S_ELEMENTAL_ICON1", 0, SPR_TVEL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ELEMENTAL_ICON2, 0},
+	{"S_ELEMENTAL_ICON2", 0, SPR_TVEL, 2, 18, {A_GiveShield}, SH_ELEMENTAL, 0, S_NULL, 0},
 
-	{SPR_TVSS, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SNEAKERS_ICON2, 0}, // S_SNEAKERS_ICON1
-	{SPR_TVSS, 2, 18, {A_SuperSneakers}, 0, 0, S_NULL, 0}, // S_SNEAKERS_ICON2
+	{"S_SNEAKERS_ICON1", 0, SPR_TVSS, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SNEAKERS_ICON2, 0},
+	{"S_SNEAKERS_ICON2", 0, SPR_TVSS, 2, 18, {A_SuperSneakers}, 0, 0, S_NULL, 0},
 
-	{SPR_TVIV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_INVULN_ICON2, 0}, // S_INVULN_ICON1
-	{SPR_TVIV, 2, 18, {A_Invincibility}, 0, 0, S_NULL, 0}, // S_INVULN_ICON2
+	{"S_INVULN_ICON1", 0, SPR_TVIV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_INVULN_ICON2, 0},
+	{"S_INVULN_ICON2", 0, SPR_TVIV, 2, 18, {A_Invincibility}, 0, 0, S_NULL, 0},
 
-	{SPR_TV1U, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_1UP_ICON2, 0}, // S_1UP_ICON1
-	{SPR_TV1U, 2, 18, {A_ExtraLife},  0, 0, S_NULL, 0},  // S_1UP_ICON2
+	{"S_1UP_ICON1", 0, SPR_TV1U, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_1UP_ICON2, 0},
+	{"S_1UP_ICON2", 0, SPR_TV1U, 2, 18, {A_ExtraLife},  0, 0, S_NULL, 0},
 
-	{SPR_TVEG, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_EGGMAN_ICON2, 0}, // S_EGGMAN_ICON1
-	{SPR_TVEG, 2, 18, {A_EggmanBox}, 0, 0, S_NULL, 0}, // S_EGGMAN_ICON2
+	{"S_EGGMAN_ICON1", 0, SPR_TVEG, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_EGGMAN_ICON2, 0},
+	{"S_EGGMAN_ICON2", 0, SPR_TVEG, 2, 18, {A_EggmanBox}, 0, 0, S_NULL, 0},
 
-	{SPR_TVMX, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_MIXUP_ICON2, 0}, // S_MIXUP_ICON1
-	{SPR_TVMX, 2, 18, {A_MixUp}, 0, 0, S_NULL, 0}, // S_MIXUP_ICON2
+	{"S_MIXUP_ICON1", 0, SPR_TVMX, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_MIXUP_ICON2, 0},
+	{"S_MIXUP_ICON2", 0, SPR_TVMX, 2, 18, {A_MixUp}, 0, 0, S_NULL, 0},
 
-	{SPR_TVGV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_GRAVITY_ICON2, 0}, // S_GRAVITY_ICON1
-	{SPR_TVGV, 2, 18, {A_GravityBox}, 0, 0, S_NULL, 0}, // S_GRAVITY_ICON2
+	{"S_GRAVITY_ICON1", 0, SPR_TVGV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_GRAVITY_ICON2, 0},
+	{"S_GRAVITY_ICON2", 0, SPR_TVGV, 2, 18, {A_GravityBox}, 0, 0, S_NULL, 0},
 
-	{SPR_TVRC, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RECYCLER_ICON2, 0}, // S_RECYCLER_ICON1
-	{SPR_TVRC, 2, 18, {A_RecyclePowers}, 0, 0, S_NULL, 0}, // S_RECYCLER_ICON2
+	{"S_RECYCLER_ICON1", 0, SPR_TVRC, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RECYCLER_ICON2, 0},
+	{"S_RECYCLER_ICON2", 0, SPR_TVRC, 2, 18, {A_RecyclePowers}, 0, 0, S_NULL, 0},
 
-	{SPR_TV1K, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE1K_ICON2, 0}, // S_SCORE1K_ICON1
-	{SPR_TV1K, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0}, // S_SCORE1K_ICON2
+	{"S_SCORE1K_ICON1", 0, SPR_TV1K, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE1K_ICON2, 0},
+	{"S_SCORE1K_ICON2", 0, SPR_TV1K, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0},
 
-	{SPR_TVTK, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE10K_ICON2, 0}, // S_SCORE10K_ICON1
-	{SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0}, // S_SCORE10K_ICON2
+	{"S_SCORE10K_ICON1", 0, SPR_TVTK, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE10K_ICON2, 0},
+	{"S_SCORE10K_ICON2", 0, SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0},
 
-	{SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2, 0}, // S_FLAMEAURA_ICON1
-	{SPR_TVFL, 2, 18, {A_GiveShield}, SH_FLAMEAURA, 0, S_NULL, 0}, // S_FLAMEAURA_ICON2
+	{"S_FLAMEAURA_ICON1", 0, SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2, 0},
+	{"S_FLAMEAURA_ICON2", 0, SPR_TVFL, 2, 18, {A_GiveShield}, SH_FLAMEAURA, 0, S_NULL, 0},
 
-	{SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2, 0}, // S_BUBBLEWRAP_ICON1
-	{SPR_TVBB, 2, 18, {A_GiveShield}, SH_BUBBLEWRAP, 0, S_NULL, 0}, // S_BUBBLEWRAP_ICON2
+	{"S_BUBBLEWRAP_ICON1", 0, SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2, 0},
+	{"S_BUBBLEWRAP_ICON2", 0, SPR_TVBB, 2, 18, {A_GiveShield}, SH_BUBBLEWRAP, 0, S_NULL, 0},
 
-	{SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2, 0}, // S_THUNDERCOIN_ICON1
-	{SPR_TVZP, 2, 18, {A_GiveShield}, SH_THUNDERCOIN, 0, S_NULL, 0}, // S_THUNDERCOIN_ICON2
+	{"S_THUNDERCOIN_ICON1", 0, SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2, 0},
+	{"S_THUNDERCOIN_ICON2", 0, SPR_TVZP, 2, 18, {A_GiveShield}, SH_THUNDERCOIN, 0, S_NULL, 0},
 
 	// ---
 
-	{SPR_MISL, FF_FULLBRIGHT, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_ROCKET, 0}, // S_ROCKET
+	{"S_ROCKET", 0, SPR_MISL, FF_FULLBRIGHT, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_ROCKET, 0},
 
-	{SPR_LASR, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LASER
-	{SPR_LASR, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LASER2
-	{SPR_LASR, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LASERFLASH
+	{"S_LASER", 0, SPR_LASR, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LASER2", 0, SPR_LASR, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LASERFLASH", 0, SPR_LASR, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_LASF,                           FF_FULLBRIGHT|0,       2,           {NULL}, 0, 0, S_LASERFLAME2, 0}, // S_LASERFLAME1
-	{SPR_LASF,                           FF_FULLBRIGHT|1,       1, {A_ChangeHeight}, 156*FRACUNIT, 3, S_LASERFLAME3, 0}, // S_LASERFLAME2
-	{SPR_LASF,                           FF_FULLBRIGHT|2,       0, {A_ChangeHeight}, 32*FRACUNIT, 3, S_LASERFLAME4, 0}, // S_LASERFLAME3
-	{SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|2,       4,           {NULL}, 1, 2, S_LASERFLAME5, 0}, // S_LASERFLAME4
-	{SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|4,      28,           {NULL}, 2, 2, S_NULL, 0}, // S_LASERFLAME5
+	{"S_LASERFLAME1", 0, SPR_LASF,                           FF_FULLBRIGHT|0,       2,           {NULL}, 0, 0, S_LASERFLAME2, 0},
+	{"S_LASERFLAME2", 0, SPR_LASF,                           FF_FULLBRIGHT|1,       1, {A_ChangeHeight}, 156*FRACUNIT, 3, S_LASERFLAME3, 0},
+	{"S_LASERFLAME3", 0, SPR_LASF,                           FF_FULLBRIGHT|2,       0, {A_ChangeHeight}, 32*FRACUNIT, 3, S_LASERFLAME4, 0},
+	{"S_LASERFLAME4", 0, SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|2,       4,           {NULL}, 1, 2, S_LASERFLAME5, 0},
+	{"S_LASERFLAME5", 0, SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|4,      28,           {NULL}, 2, 2, S_NULL, 0},
 
-	{SPR_TORP, 0, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_TORPEDO, 0}, // S_TORPEDO
+	{"S_TORPEDO", 0, SPR_TORP, 0, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_TORPEDO, 0},
 
-	{SPR_ENRG, FF_FULLBRIGHT|FF_TRANS30, 1, {NULL}, 0, 0, S_ENERGYBALL2, 0}, // S_ENERGYBALL1
-	{SPR_NULL, 0, 1, {NULL}, 0, 0, S_ENERGYBALL1, 0}, // S_ENERGYBALL2
+	{"S_ENERGYBALL1", 0, SPR_ENRG, FF_FULLBRIGHT|FF_TRANS30, 1, {NULL}, 0, 0, S_ENERGYBALL2, 0},
+	{"S_ENERGYBALL2", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_ENERGYBALL1, 0},
 
 	// Skim Mine (also dropped by Jetty-Syn bomber)
-	{SPR_MINE, 0, -1, {NULL}, 0, 0, S_NULL, 0},           // S_MINE1
-	{SPR_MINE, 1, 1, {A_Fall}, 0, 0, S_MINE_BOOM2, 0},    // S_MINE_BOOM1
-	{SPR_MINE, 2, 3, {A_Scream}, 0, 0, S_MINE_BOOM3, 0},  // S_MINE_BOOM2
-	{SPR_MINE, 3, 3, {A_Explode}, 0, 0, S_MINE_BOOM4, 0}, // S_MINE_BOOM3
-	{SPR_MINE, 4, 3, {NULL}, 0, 0, S_NULL, 0},            // S_MINE_BOOM4
+	{"S_MINE1", 0, SPR_MINE, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_MINE_BOOM1", 0, SPR_MINE, 1, 1, {A_Fall}, 0, 0, S_MINE_BOOM2, 0},
+	{"S_MINE_BOOM2", 0, SPR_MINE, 2, 3, {A_Scream}, 0, 0, S_MINE_BOOM3, 0},
+	{"S_MINE_BOOM3", 0, SPR_MINE, 3, 3, {A_Explode}, 0, 0, S_MINE_BOOM4, 0},
+	{"S_MINE_BOOM4", 0, SPR_MINE, 4, 3, {NULL}, 0, 0, S_NULL, 0},
 
 	// Jetty-Syn Bullet
-	{SPR_JBUL, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_JETBULLET2, 0}, // S_JETBULLET1
-	{SPR_JBUL, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_JETBULLET1, 0}, // S_JETBULLET2
+	{"S_JETBULLET1", 0, SPR_JBUL, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_JETBULLET2, 0},
+	{"S_JETBULLET2", 0, SPR_JBUL, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_JETBULLET1, 0},
 
-	{SPR_TRLS, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_TURRETLASER, 0},          // S_TURRETLASER
-	{SPR_TRLS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TURRETLASEREXPLODE2, 0},  // S_TURRETLASEREXPLODE1
-	{SPR_TRLS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0},                 // S_TURRETLASEREXPLODE2
+	{"S_TURRETLASER", 0, SPR_TRLS, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_TURRETLASER, 0},
+	{"S_TURRETLASEREXPLODE1", 0, SPR_TRLS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TURRETLASEREXPLODE2, 0},
+	{"S_TURRETLASEREXPLODE2", 0, SPR_TRLS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CBLL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANNONBALL1
+	{"S_CANNONBALL1", 0, SPR_CBLL, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_AROW, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARROW
-	{SPR_AROW, FF_ANIMATE, TICRATE, {A_ArrowBonks}, 7, 2, S_NULL, 0}, // S_ARROWBONK
+	{"S_ARROW", 0, SPR_AROW, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ARROWBONK", 0, SPR_AROW, FF_ANIMATE, TICRATE, {A_ArrowBonks}, 7, 2, S_NULL, 0},
 
-	{SPR_CFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 5, 2, S_NULL, 0}, // S_DEMONFIRE
+	{"S_DEMONFIRE", 0, SPR_CFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 5, 2, S_NULL, 0},
 
-	{SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LETTER
+	{"S_LETTER", 0, SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Tutorial scenery
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF2, 0}, // S_TUTORIALLEAF1
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF3, 0}, // S_TUTORIALLEAF2
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF4, 0}, // S_TUTORIALLEAF3
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF5, 0}, // S_TUTORIALLEAF4
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF6, 0}, // S_TUTORIALLEAF5
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF7, 0}, // S_TUTORIALLEAF6
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF8, 0}, // S_TUTORIALLEAF7
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF9, 0}, // S_TUTORIALLEAF8
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF10, 0}, // S_TUTORIALLEAF9
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF11, 0}, // S_TUTORIALLEAF10
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF12, 0}, // S_TUTORIALLEAF11
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF13, 0}, // S_TUTORIALLEAF12
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF14, 0}, // S_TUTORIALLEAF13
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF15, 0}, // S_TUTORIALLEAF14
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF16, 0}, // S_TUTORIALLEAF15
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF1, 0}, // S_TUTORIALLEAF16
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER2, 0}, // S_TUTORIALFLOWER1
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER3, 0}, // S_TUTORIALFLOWER2
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER4, 0}, // S_TUTORIALFLOWER3
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER5, 0}, // S_TUTORIALFLOWER4
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER6, 0}, // S_TUTORIALFLOWER5
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER7, 0}, // S_TUTORIALFLOWER6
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER8, 0}, // S_TUTORIALFLOWER7
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER9, 0}, // S_TUTORIALFLOWER8
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER10, 0}, // S_TUTORIALFLOWER9
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER11, 0}, // S_TUTORIALFLOWER10
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER12, 0}, // S_TUTORIALFLOWER11
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER13, 0}, // S_TUTORIALFLOWER12
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER14, 0}, // S_TUTORIALFLOWER13
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER15, 0}, // S_TUTORIALFLOWER14
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER16, 0}, // S_TUTORIALFLOWER15
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER1, 0}, // S_TUTORIALFLOWER16
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF2, 0}, // S_TUTORIALFLOWERF1
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF3, 0}, // S_TUTORIALFLOWERF2
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF4, 0}, // S_TUTORIALFLOWERF3
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF5, 0}, // S_TUTORIALFLOWERF4
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF6, 0}, // S_TUTORIALFLOWERF5
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF7, 0}, // S_TUTORIALFLOWERF6
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF8, 0}, // S_TUTORIALFLOWERF7
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF9, 0}, // S_TUTORIALFLOWERF8
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF10, 0}, // S_TUTORIALFLOWERF9
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF11, 0}, // S_TUTORIALFLOWERF10
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF12, 0}, // S_TUTORIALFLOWERF11
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF13, 0}, // S_TUTORIALFLOWERF12
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF14, 0}, // S_TUTORIALFLOWERF13
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF15, 0}, // S_TUTORIALFLOWERF14
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF16, 0}, // S_TUTORIALFLOWERF15
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF1, 0}, // S_TUTORIALFLOWERF16
+	{"S_TUTORIALLEAF1", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF2, 0},
+	{"S_TUTORIALLEAF2", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF3, 0},
+	{"S_TUTORIALLEAF3", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF4, 0},
+	{"S_TUTORIALLEAF4", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF5, 0},
+	{"S_TUTORIALLEAF5", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF6, 0},
+	{"S_TUTORIALLEAF6", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF7, 0},
+	{"S_TUTORIALLEAF7", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF8, 0},
+	{"S_TUTORIALLEAF8", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF9, 0},
+	{"S_TUTORIALLEAF9", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF10, 0},
+	{"S_TUTORIALLEAF10", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF11, 0},
+	{"S_TUTORIALLEAF11", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF12, 0},
+	{"S_TUTORIALLEAF12", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF13, 0},
+	{"S_TUTORIALLEAF13", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF14, 0},
+	{"S_TUTORIALLEAF14", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF15, 0},
+	{"S_TUTORIALLEAF15", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF16, 0},
+	{"S_TUTORIALLEAF16", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF1, 0},
+	{"S_TUTORIALFLOWER1", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER2, 0},
+	{"S_TUTORIALFLOWER2", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER3, 0},
+	{"S_TUTORIALFLOWER3", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER4, 0},
+	{"S_TUTORIALFLOWER4", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER5, 0},
+	{"S_TUTORIALFLOWER5", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER6, 0},
+	{"S_TUTORIALFLOWER6", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER7, 0},
+	{"S_TUTORIALFLOWER7", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER8, 0},
+	{"S_TUTORIALFLOWER8", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER9, 0},
+	{"S_TUTORIALFLOWER9", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER10, 0},
+	{"S_TUTORIALFLOWER10", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER11, 0},
+	{"S_TUTORIALFLOWER11", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER12, 0},
+	{"S_TUTORIALFLOWER12", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER13, 0},
+	{"S_TUTORIALFLOWER13", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER14, 0},
+	{"S_TUTORIALFLOWER14", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER15, 0},
+	{"S_TUTORIALFLOWER15", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER16, 0},
+	{"S_TUTORIALFLOWER16", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER1, 0},
+	{"S_TUTORIALFLOWERF1", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF2, 0},
+	{"S_TUTORIALFLOWERF2", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF3, 0},
+	{"S_TUTORIALFLOWERF3", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF4, 0},
+	{"S_TUTORIALFLOWERF4", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF5, 0},
+	{"S_TUTORIALFLOWERF5", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF6, 0},
+	{"S_TUTORIALFLOWERF6", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF7, 0},
+	{"S_TUTORIALFLOWERF7", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF8, 0},
+	{"S_TUTORIALFLOWERF8", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF9, 0},
+	{"S_TUTORIALFLOWERF9", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF10, 0},
+	{"S_TUTORIALFLOWERF10", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF11, 0},
+	{"S_TUTORIALFLOWERF11", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF12, 0},
+	{"S_TUTORIALFLOWERF12", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF13, 0},
+	{"S_TUTORIALFLOWERF13", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF14, 0},
+	{"S_TUTORIALFLOWERF14", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF15, 0},
+	{"S_TUTORIALFLOWERF15", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF16, 0},
+	{"S_TUTORIALFLOWERF16", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF1, 0},
 
 	// GFZ flowers
-	{SPR_FWR1, FF_ANIMATE, -1, {NULL},  7, 3, S_NULL, 0}, // S_GFZFLOWERA
-	{SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL, 0}, // S_GFZFLOWERB
-	{SPR_FWR3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_GFZFLOWERC
+	{"S_GFZFLOWERA", 0, SPR_FWR1, FF_ANIMATE, -1, {NULL},  7, 3, S_NULL, 0},
+	{"S_GFZFLOWERB", 0, SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL, 0},
+	{"S_GFZFLOWERC", 0, SPR_FWR3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0},
 
-	{SPR_BUS3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUEBERRYBUSH
-	{SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BERRYBUSH
-	{SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUSH
+	{"S_BLUEBERRYBUSH", 0, SPR_BUS3, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BERRYBUSH", 0, SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BUSH", 0, SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Trees
-	{SPR_TRE1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GFZTREE
-	{SPR_TRE1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GFZBERRYTREE
-	{SPR_TRE1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GFZCHERRYTREE
-	{SPR_TRE2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CHECKERTREE
-	{SPR_TRE2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CHECKERSUNSETTREE
-	{SPR_TRE3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZTREE
-	{SPR_TRE3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZPINKTREE
-	{SPR_TRE4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_POLYGONTREE
-	{SPR_TRE5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUSHTREE
-	{SPR_TRE5, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUSHREDTREE
-	{SPR_TRE6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SPRINGTREE
+	{"S_GFZTREE", 0, SPR_TRE1, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_GFZBERRYTREE", 0, SPR_TRE1, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_GFZCHERRYTREE", 0, SPR_TRE1, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CHECKERTREE", 0, SPR_TRE2, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CHECKERSUNSETTREE", 0, SPR_TRE2, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FHZTREE", 0, SPR_TRE3, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FHZPINKTREE", 0, SPR_TRE3, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_POLYGONTREE", 0, SPR_TRE4, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BUSHTREE", 0, SPR_TRE5, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BUSHREDTREE", 0, SPR_TRE5, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SPRINGTREE", 0, SPR_TRE6, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// THZ flowers
-	{SPR_THZP, FF_ANIMATE, -1, {NULL},  7, 4, S_NULL, 0}, // S_THZFLOWERA
-	{SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0}, // S_THZFLOWERB
-	{SPR_FWR6, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0}, // S_THZFLOWERC
+	{"S_THZFLOWERA", 0, SPR_THZP, FF_ANIMATE, -1, {NULL},  7, 4, S_NULL, 0},
+	{"S_THZFLOWERB", 0, SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0},
+	{"S_THZFLOWERC", 0, SPR_FWR6, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0},
 
 	// THZ Steam Whistle tree/bush
-	{SPR_THZT, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_THZTREE
-	{SPR_THZT,  1|FF_PAPERSPRITE, 40, {NULL}, 0, 0, S_THZTREEBRANCH2, 0}, // S_THZTREEBRANCH1
-	{SPR_THZT,  2|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH3, 0}, // S_THZTREEBRANCH2
-	{SPR_THZT,  3|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH4, 0}, // S_THZTREEBRANCH3
-	{SPR_THZT,  4|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH5, 0}, // S_THZTREEBRANCH4
-	{SPR_THZT,  5|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH6, 0}, // S_THZTREEBRANCH5
-	{SPR_THZT,  6|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH7, 0}, // S_THZTREEBRANCH6
-	{SPR_THZT,  7|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH8, 0}, // S_THZTREEBRANCH7
-	{SPR_THZT,  8|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH9, 0}, // S_THZTREEBRANCH8
-	{SPR_THZT,  9|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH10, 0}, // S_THZTREEBRANCH9
-	{SPR_THZT, 10|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH11, 0}, // S_THZTREEBRANCH10
-	{SPR_THZT, 11|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH12, 0}, // S_THZTREEBRANCH11
-	{SPR_THZT, 12|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH13, 0}, // S_THZTREEBRANCH12
-	{SPR_THZT, 13|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH1, 0}, // S_THZTREEBRANCH13
+	{"S_THZTREE", 0, SPR_THZT, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_THZTREEBRANCH1", 0, SPR_THZT,  1|FF_PAPERSPRITE, 40, {NULL}, 0, 0, S_THZTREEBRANCH2, 0},
+	{"S_THZTREEBRANCH2", 0, SPR_THZT,  2|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH3, 0},
+	{"S_THZTREEBRANCH3", 0, SPR_THZT,  3|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH4, 0},
+	{"S_THZTREEBRANCH4", 0, SPR_THZT,  4|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH5, 0},
+	{"S_THZTREEBRANCH5", 0, SPR_THZT,  5|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH6, 0},
+	{"S_THZTREEBRANCH6", 0, SPR_THZT,  6|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH7, 0},
+	{"S_THZTREEBRANCH7", 0, SPR_THZT,  7|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH8, 0},
+	{"S_THZTREEBRANCH8", 0, SPR_THZT,  8|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH9, 0},
+	{"S_THZTREEBRANCH9", 0, SPR_THZT,  9|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH10, 0},
+	{"S_THZTREEBRANCH10", 0, SPR_THZT, 10|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH11, 0},
+	{"S_THZTREEBRANCH11", 0, SPR_THZT, 11|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH12, 0},
+	{"S_THZTREEBRANCH12", 0, SPR_THZT, 12|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH13, 0},
+	{"S_THZTREEBRANCH13", 0, SPR_THZT, 13|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH1, 0},
 
 	// THZ Alarm
-	{SPR_ALRM, FF_FULLBRIGHT, 35, {A_Scream}, 0, 0, S_ALARM1, 0}, // S_ALARM1
+	{"S_ALARM1", 0, SPR_ALRM, FF_FULLBRIGHT, 35, {A_Scream}, 0, 0, S_ALARM1, 0},
 
 	// Deep Sea Gargoyle
-	{SPR_GARG, 0, -1, {NULL}, 0, 0, S_NULL, 0},  // S_GARGOYLE
-	{SPR_GARG, 1, -1, {NULL}, 0, 0, S_NULL, 0},  // S_BIGGARGOYLE
+	{"S_GARGOYLE", 0, SPR_GARG, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIGGARGOYLE", 0, SPR_GARG, 1, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// DSZ Seaweed
-	{SPR_SEWE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 26, 3, S_SEAWEED1, 0}, // S_SEAWEED1
-	{SPR_SEWE, 1, 5, {NULL}, 0, 0, S_SEAWEED3, 0}, // S_SEAWEED2
-	{SPR_SEWE, 2, 5, {NULL}, 0, 0, S_SEAWEED4, 0}, // S_SEAWEED3
-	{SPR_SEWE, 3, 5, {NULL}, 0, 0, S_SEAWEED5, 0}, // S_SEAWEED4
-	{SPR_SEWE, 4, 5, {NULL}, 0, 0, S_SEAWEED6, 0}, // S_SEAWEED5
-	{SPR_SEWE, 5, 5, {NULL}, 0, 0, S_SEAWEED1, 0}, // S_SEAWEED6
+	{"S_SEAWEED1", 0, SPR_SEWE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 26, 3, S_SEAWEED1, 0},
+	{"S_SEAWEED2", 0, SPR_SEWE, 1, 5, {NULL}, 0, 0, S_SEAWEED3, 0},
+	{"S_SEAWEED3", 0, SPR_SEWE, 2, 5, {NULL}, 0, 0, S_SEAWEED4, 0},
+	{"S_SEAWEED4", 0, SPR_SEWE, 3, 5, {NULL}, 0, 0, S_SEAWEED5, 0},
+	{"S_SEAWEED5", 0, SPR_SEWE, 4, 5, {NULL}, 0, 0, S_SEAWEED6, 0},
+	{"S_SEAWEED6", 0, SPR_SEWE, 5, 5, {NULL}, 0, 0, S_SEAWEED1, 0},
 
 	// Dripping water
-	{SPR_NULL, FF_TRANS30  , 3*TICRATE, {NULL},                  0, 0, S_DRIPA2, 0}, // S_DRIPA1
-	{SPR_DRIP, FF_TRANS30  ,         2, {NULL},                  0, 0, S_DRIPA3, 0}, // S_DRIPA2
-	{SPR_DRIP, FF_TRANS30|1,         2, {NULL},                  0, 0, S_DRIPA4, 0}, // S_DRIPA3
-	{SPR_DRIP, FF_TRANS30|2,         2, {A_SpawnObjectRelative}, 0, MT_WATERDROP, S_DRIPA1, 0}, // S_DRIPA4
-	{SPR_DRIP, FF_TRANS30|3,        -1, {NULL},                  0, 0, S_DRIPB1, 0}, // S_DRIPB1
-	{SPR_DRIP, FF_TRANS30|4,         1, {NULL},                  0, 0, S_DRIPC2, 0}, // S_DRIPC1
-	{SPR_DRIP, FF_TRANS30|5,         1, {NULL},                  0, 0,   S_NULL, 0}, // S_DRIPC2
+	{"S_DRIPA1", 0, SPR_NULL, FF_TRANS30  , 3*TICRATE, {NULL},                  0, 0, S_DRIPA2, 0},
+	{"S_DRIPA2", 0, SPR_DRIP, FF_TRANS30  ,         2, {NULL},                  0, 0, S_DRIPA3, 0},
+	{"S_DRIPA3", 0, SPR_DRIP, FF_TRANS30|1,         2, {NULL},                  0, 0, S_DRIPA4, 0},
+	{"S_DRIPA4", 0, SPR_DRIP, FF_TRANS30|2,         2, {A_SpawnObjectRelative}, 0, MT_WATERDROP, S_DRIPA1, 0},
+	{"S_DRIPB1", 0, SPR_DRIP, FF_TRANS30|3,        -1, {NULL},                  0, 0, S_DRIPB1, 0},
+	{"S_DRIPC1", 0, SPR_DRIP, FF_TRANS30|4,         1, {NULL},                  0, 0, S_DRIPC2, 0},
+	{"S_DRIPC2", 0, SPR_DRIP, FF_TRANS30|5,         1, {NULL},                  0, 0,   S_NULL, 0},
 
 	// Coral
-	{SPR_CORL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL1
-	{SPR_CORL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL2
-	{SPR_CORL, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL3
-	{SPR_CORL, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL4
-	{SPR_CORL, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL5
+	{"S_CORAL1", 0, SPR_CORL, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CORAL2", 0, SPR_CORL, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CORAL3", 0, SPR_CORL, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CORAL4", 0, SPR_CORL, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CORAL5", 0, SPR_CORL, 4, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Blue Crystal
-	{SPR_BCRY, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUECRYSTAL1
+	{"S_BLUECRYSTAL1", 0, SPR_BCRY, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Kelp
-	{SPR_KELP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_KELP
+	{"S_KELP", 0, SPR_KELP, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Animated algae
-	{SPR_ALGA, 0, 1, {A_ConnectToGround}, MT_ANIMALGAESEG, 0, S_ANIMALGAETOP2, 0}, // S_ANIMALGAETOP1
-	{SPR_ALGA, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0},          // S_ANIMALGAETOP2
-	{SPR_ALGB, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0},          // S_ANIMALGAESEG
+	{"S_ANIMALGAETOP1", 0, SPR_ALGA, 0, 1, {A_ConnectToGround}, MT_ANIMALGAESEG, 0, S_ANIMALGAETOP2, 0},
+	{"S_ANIMALGAETOP2", 0, SPR_ALGA, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0},
+	{"S_ANIMALGAESEG", 0, SPR_ALGB, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0},
 
 	// DSZ Stalagmites
-	{SPR_DSTG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_DSZSTALAGMITE
-	{SPR_DSTG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_DSZ2STALAGMITE
+	{"S_DSZSTALAGMITE", 0, SPR_DSTG, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_DSZ2STALAGMITE", 0, SPR_DSTG, 1, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// DSZ Light beam
-	{SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {A_LightBeamReset}, 0, 0, S_LIGHTBEAM2, 0}, // S_LIGHTBEAM1
-	{SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM3, 0},  // S_LIGHTBEAM2
-	{SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM4, 0},  // S_LIGHTBEAM3
-	{SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM5, 0},  // S_LIGHTBEAM4
-	{SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM6, 0},  // S_LIGHTBEAM5
-	{SPR_LIBE, 0|FF_TRANS30|FF_FULLBRIGHT|FF_PAPERSPRITE, 9, {NULL}, 0, 0, S_LIGHTBEAM7, 0},  // S_LIGHTBEAM6
-	{SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM8, 0},  // S_LIGHTBEAM7
-	{SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM9, 0},  // S_LIGHTBEAM8
-	{SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM10, 0}, // S_LIGHTBEAM9
-	{SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM11, 0}, // S_LIGHTBEAM10
-	{SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM12, 0}, // S_LIGHTBEAM11
-	{SPR_NULL, 0, 2, {A_SetRandomTics}, 4, 35, S_LIGHTBEAM1, 0}, // S_LIGHTBEAM12
+	{"S_LIGHTBEAM1", 0, SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {A_LightBeamReset}, 0, 0, S_LIGHTBEAM2, 0},
+	{"S_LIGHTBEAM2", 0, SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM3, 0},
+	{"S_LIGHTBEAM3", 0, SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM4, 0},
+	{"S_LIGHTBEAM4", 0, SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM5, 0},
+	{"S_LIGHTBEAM5", 0, SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM6, 0},
+	{"S_LIGHTBEAM6", 0, SPR_LIBE, 0|FF_TRANS30|FF_FULLBRIGHT|FF_PAPERSPRITE, 9, {NULL}, 0, 0, S_LIGHTBEAM7, 0},
+	{"S_LIGHTBEAM7", 0, SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM8, 0},
+	{"S_LIGHTBEAM8", 0, SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM9, 0},
+	{"S_LIGHTBEAM9", 0, SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM10, 0},
+	{"S_LIGHTBEAM10", 0, SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM11, 0},
+	{"S_LIGHTBEAM11", 0, SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM12, 0},
+	{"S_LIGHTBEAM12", 0, SPR_NULL, 0, 2, {A_SetRandomTics}, 4, 35, S_LIGHTBEAM1, 0},
 
 	// CEZ Chain
-	{SPR_CHAN, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZCHAIN
+	{"S_CEZCHAIN", 0, SPR_CHAN, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Flame
-	{SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,       3*8, {A_FlameParticle}, 7, 3, S_FLAME, 0}, // S_FLAME
-	{SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|8, TICRATE,            {NULL}, 3, 3, S_NULL, 0},  // S_FLAMEPARTICLE
-	{SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,        -1,            {NULL}, 7, 3, S_NULL, 0},  // S_FLAMEREST
+	{"S_FLAME", 0, SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,       3*8, {A_FlameParticle}, 7, 3, S_FLAME, 0},
+	{"S_FLAMEPARTICLE", 0, SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|8, TICRATE,            {NULL}, 3, 3, S_NULL, 0},
+	{"S_FLAMEREST", 0, SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,        -1,            {NULL}, 7, 3, S_NULL, 0},
 
 	// Eggman statue
-	{SPR_ESTA, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGSTATUE1
+	{"S_EGGSTATUE1", 0, SPR_ESTA, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Hidden sling appears
-	{SPR_NULL, 0, -1, {NULL},          0, 0, S_SLING2, 0}, // S_SLING1
-	{SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL, 0},   // S_SLING2
+	{"S_SLING1", 0, SPR_NULL, 0, -1, {NULL},          0, 0, S_SLING2, 0},
+	{"S_SLING2", 0, SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL, 0},
 
 	// CEZ maces and chains
-	{SPR_SMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SMALLMACECHAIN
-	{SPR_BMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGMACECHAIN
-	{SPR_SMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SMALLMACE
-	{SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGMACE
-	{SPR_SMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SMALLGRABCHAIN
-	{SPR_BMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGGRABCHAIN
+	{"S_SMALLMACECHAIN", 0, SPR_SMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIGMACECHAIN", 0, SPR_BMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SMALLMACE", 0, SPR_SMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIGMACE", 0, SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SMALLGRABCHAIN", 0, SPR_SMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIGGRABCHAIN", 0, SPR_BMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Blue spring on a ball
-	{SPR_BSPB, 0, -1, {NULL},   0, 0, S_NULL, 0},            // S_BLUESPRINGBALL
-	{SPR_BSPB, 4,  4, {A_Pain}, 0, 0, S_BLUESPRINGBALL3, 0}, // S_BLUESPRINGBALL2
-	{SPR_BSPB, 3,  1, {NULL},   0, 0, S_BLUESPRINGBALL4, 0}, // S_BLUESPRINGBALL3
-	{SPR_BSPB, 2,  1, {NULL},   0, 0, S_BLUESPRINGBALL5, 0}, // S_BLUESPRINGBALL4
-	{SPR_BSPB, 1,  1, {NULL},   0, 0, S_BLUESPRINGBALL, 0},  // S_BLUESPRINGBALL5
+	{"S_BLUESPRINGBALL", 0, SPR_BSPB, 0, -1, {NULL},   0, 0, S_NULL, 0},
+	{"S_BLUESPRINGBALL2", 0, SPR_BSPB, 4,  4, {A_Pain}, 0, 0, S_BLUESPRINGBALL3, 0},
+	{"S_BLUESPRINGBALL3", 0, SPR_BSPB, 3,  1, {NULL},   0, 0, S_BLUESPRINGBALL4, 0},
+	{"S_BLUESPRINGBALL4", 0, SPR_BSPB, 2,  1, {NULL},   0, 0, S_BLUESPRINGBALL5, 0},
+	{"S_BLUESPRINGBALL5", 0, SPR_BSPB, 1,  1, {NULL},   0, 0, S_BLUESPRINGBALL, 0},
 
 	// Yellow spring on a ball
-	{SPR_YSPB, 0, -1, {NULL},   0, 0, S_NULL, 0},              // S_YELLOWSPRINGBALL
-	{SPR_YSPB, 4,  4, {A_Pain}, 0, 0, S_YELLOWSPRINGBALL3, 0}, // S_YELLOWSPRINGBALL2
-	{SPR_YSPB, 3,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL4, 0}, // S_YELLOWSPRINGBALL3
-	{SPR_YSPB, 2,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL5, 0}, // S_YELLOWSPRINGBALL4
-	{SPR_YSPB, 1,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL, 0},  // S_YELLOWSPRINGBALL5
+	{"S_YELLOWSPRINGBALL", 0, SPR_YSPB, 0, -1, {NULL},   0, 0, S_NULL, 0},
+	{"S_YELLOWSPRINGBALL2", 0, SPR_YSPB, 4,  4, {A_Pain}, 0, 0, S_YELLOWSPRINGBALL3, 0},
+	{"S_YELLOWSPRINGBALL3", 0, SPR_YSPB, 3,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL4, 0},
+	{"S_YELLOWSPRINGBALL4", 0, SPR_YSPB, 2,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL5, 0},
+	{"S_YELLOWSPRINGBALL5", 0, SPR_YSPB, 1,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL, 0},
 
 	// Red spring on a ball
-	{SPR_RSPB, 0, -1, {NULL},   0, 0, S_NULL, 0},           // S_REDSPRINGBALL
-	{SPR_RSPB, 4,  4, {A_Pain}, 0, 0, S_REDSPRINGBALL3, 0}, // S_REDSPRINGBALL2
-	{SPR_RSPB, 3,  1, {NULL},   0, 0, S_REDSPRINGBALL4, 0}, // S_REDSPRINGBALL3
-	{SPR_RSPB, 2,  1, {NULL},   0, 0, S_REDSPRINGBALL5, 0}, // S_REDSPRINGBALL4
-	{SPR_RSPB, 1,  1, {NULL},   0, 0, S_REDSPRINGBALL, 0},  // S_REDSPRINGBALL5
+	{"S_REDSPRINGBALL", 0, SPR_RSPB, 0, -1, {NULL},   0, 0, S_NULL, 0},
+	{"S_REDSPRINGBALL2", 0, SPR_RSPB, 4,  4, {A_Pain}, 0, 0, S_REDSPRINGBALL3, 0},
+	{"S_REDSPRINGBALL3", 0, SPR_RSPB, 3,  1, {NULL},   0, 0, S_REDSPRINGBALL4, 0},
+	{"S_REDSPRINGBALL4", 0, SPR_RSPB, 2,  1, {NULL},   0, 0, S_REDSPRINGBALL5, 0},
+	{"S_REDSPRINGBALL5", 0, SPR_RSPB, 1,  1, {NULL},   0, 0, S_REDSPRINGBALL, 0},
 
 	// Small Firebar
-	{SPR_SFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_SMALLFIREBAR2, 0},  // S_SMALLFIREBAR1
-	{SPR_SFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_SMALLFIREBAR3, 0},  // S_SMALLFIREBAR2
-	{SPR_SFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR4, 0},  // S_SMALLFIREBAR3
-	{SPR_SFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_SMALLFIREBAR5, 0},  // S_SMALLFIREBAR4
-	{SPR_SFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_SMALLFIREBAR6, 0},  // S_SMALLFIREBAR5
-	{SPR_SFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_SMALLFIREBAR7, 0},  // S_SMALLFIREBAR6
-	{SPR_SFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR8, 0},  // S_SMALLFIREBAR7
-	{SPR_SFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_SMALLFIREBAR9, 0},  // S_SMALLFIREBAR8
-	{SPR_SFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_SMALLFIREBAR10, 0}, // S_SMALLFIREBAR9
-	{SPR_SFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_SMALLFIREBAR11, 0}, // S_SMALLFIREBAR10
-	{SPR_SFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR12, 0}, // S_SMALLFIREBAR11
-	{SPR_SFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_SMALLFIREBAR13, 0}, // S_SMALLFIREBAR12
-	{SPR_SFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_SMALLFIREBAR14, 0}, // S_SMALLFIREBAR13
-	{SPR_SFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_SMALLFIREBAR15, 0}, // S_SMALLFIREBAR14
-	{SPR_SFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR16, 0}, // S_SMALLFIREBAR15
-	{SPR_SFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_SMALLFIREBAR1, 0},  // S_SMALLFIREBAR16
+	{"S_SMALLFIREBAR1", 0, SPR_SFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_SMALLFIREBAR2, 0},
+	{"S_SMALLFIREBAR2", 0, SPR_SFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_SMALLFIREBAR3, 0},
+	{"S_SMALLFIREBAR3", 0, SPR_SFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR4, 0},
+	{"S_SMALLFIREBAR4", 0, SPR_SFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_SMALLFIREBAR5, 0},
+	{"S_SMALLFIREBAR5", 0, SPR_SFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_SMALLFIREBAR6, 0},
+	{"S_SMALLFIREBAR6", 0, SPR_SFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_SMALLFIREBAR7, 0},
+	{"S_SMALLFIREBAR7", 0, SPR_SFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR8, 0},
+	{"S_SMALLFIREBAR8", 0, SPR_SFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_SMALLFIREBAR9, 0},
+	{"S_SMALLFIREBAR9", 0, SPR_SFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_SMALLFIREBAR10, 0},
+	{"S_SMALLFIREBAR10", 0, SPR_SFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_SMALLFIREBAR11, 0},
+	{"S_SMALLFIREBAR11", 0, SPR_SFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR12, 0},
+	{"S_SMALLFIREBAR12", 0, SPR_SFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_SMALLFIREBAR13, 0},
+	{"S_SMALLFIREBAR13", 0, SPR_SFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_SMALLFIREBAR14, 0},
+	{"S_SMALLFIREBAR14", 0, SPR_SFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_SMALLFIREBAR15, 0},
+	{"S_SMALLFIREBAR15", 0, SPR_SFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR16, 0},
+	{"S_SMALLFIREBAR16", 0, SPR_SFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_SMALLFIREBAR1, 0},
 
 	// Big Firebar
-	{SPR_BFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_BIGFIREBAR2, 0},  // S_BIGFIREBAR1
-	{SPR_BFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_BIGFIREBAR3, 0},  // S_BIGFIREBAR2
-	{SPR_BFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR4, 0},  // S_BIGFIREBAR3
-	{SPR_BFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_BIGFIREBAR5, 0},  // S_BIGFIREBAR4
-	{SPR_BFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_BIGFIREBAR6, 0},  // S_BIGFIREBAR5
-	{SPR_BFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_BIGFIREBAR7, 0},  // S_BIGFIREBAR6
-	{SPR_BFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR8, 0},  // S_BIGFIREBAR7
-	{SPR_BFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_BIGFIREBAR9, 0},  // S_BIGFIREBAR8
-	{SPR_BFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_BIGFIREBAR10, 0}, // S_BIGFIREBAR9
-	{SPR_BFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_BIGFIREBAR11, 0}, // S_BIGFIREBAR10
-	{SPR_BFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR12, 0}, // S_BIGFIREBAR11
-	{SPR_BFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_BIGFIREBAR13, 0}, // S_BIGFIREBAR12
-	{SPR_BFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_BIGFIREBAR14, 0}, // S_BIGFIREBAR13
-	{SPR_BFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_BIGFIREBAR15, 0}, // S_BIGFIREBAR14
-	{SPR_BFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR16, 0}, // S_BIGFIREBAR15
-	{SPR_BFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_BIGFIREBAR1, 0},  // S_BIGFIREBAR16
+	{"S_BIGFIREBAR1", 0, SPR_BFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_BIGFIREBAR2, 0},
+	{"S_BIGFIREBAR2", 0, SPR_BFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_BIGFIREBAR3, 0},
+	{"S_BIGFIREBAR3", 0, SPR_BFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR4, 0},
+	{"S_BIGFIREBAR4", 0, SPR_BFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_BIGFIREBAR5, 0},
+	{"S_BIGFIREBAR5", 0, SPR_BFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_BIGFIREBAR6, 0},
+	{"S_BIGFIREBAR6", 0, SPR_BFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_BIGFIREBAR7, 0},
+	{"S_BIGFIREBAR7", 0, SPR_BFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR8, 0},
+	{"S_BIGFIREBAR8", 0, SPR_BFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_BIGFIREBAR9, 0},
+	{"S_BIGFIREBAR9", 0, SPR_BFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_BIGFIREBAR10, 0},
+	{"S_BIGFIREBAR10", 0, SPR_BFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_BIGFIREBAR11, 0},
+	{"S_BIGFIREBAR11", 0, SPR_BFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR12, 0},
+	{"S_BIGFIREBAR12", 0, SPR_BFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_BIGFIREBAR13, 0},
+	{"S_BIGFIREBAR13", 0, SPR_BFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_BIGFIREBAR14, 0},
+	{"S_BIGFIREBAR14", 0, SPR_BFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_BIGFIREBAR15, 0},
+	{"S_BIGFIREBAR15", 0, SPR_BFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR16, 0},
+	{"S_BIGFIREBAR16", 0, SPR_BFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_BIGFIREBAR1, 0},
 
-	{SPR_FWR4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZFLOWER
-	{SPR_BANR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZPOLE
+	{"S_CEZFLOWER", 0, SPR_FWR4, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEZPOLE", 0, SPR_BANR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_BANR, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBANNER1
-	{SPR_BANR, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBANNER2
+	{"S_CEZBANNER1", 0, SPR_BANR, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEZBANNER2", 0, SPR_BANR, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_PINE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_PINETREE
-	{SPR_CEZB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBUSH1
-	{SPR_CEZB, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBUSH2
+	{"S_PINETREE", 0, SPR_PINE, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEZBUSH1", 0, SPR_CEZB, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CEZBUSH2", 0, SPR_CEZB, 1, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CNDL, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANDLE
-	{SPR_CNDL, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANDLEPRICKET
+	{"S_CANDLE", 0, SPR_CNDL, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CANDLEPRICKET", 0, SPR_CNDL, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_FLMH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FLAMEHOLDER
+	{"S_FLAMEHOLDER", 0, SPR_FLMH, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CTRC, FF_FULLBRIGHT|FF_ANIMATE, 8*3, {A_FlameParticle}, 3, 3, S_FIRETORCH, 0}, // S_FIRETORCH
+	{"S_FIRETORCH", 0, SPR_CTRC, FF_FULLBRIGHT|FF_ANIMATE, 8*3, {A_FlameParticle}, 3, 3, S_FIRETORCH, 0},
 
-	{SPR_CFLG,                0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WAVINGFLAG
-	{SPR_CFLG, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WAVINGFLAGSEG1
-	{SPR_CFLG, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WAVINGFLAGSEG2
+	{"S_WAVINGFLAG", 0, SPR_CFLG,                0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_WAVINGFLAGSEG1", 0, SPR_CFLG, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_WAVINGFLAGSEG2", 0, SPR_CFLG, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CRAWLASTATUE
+	{"S_CRAWLASTATUE", 0, SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CBBS, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FACESTABBERSTATUE
+	{"S_FACESTABBERSTATUE", 0, SPR_CBBS, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CBBS, 0, 5, {A_Look}, 768*FRACUNIT, 0, S_SUSPICIOUSFACESTABBERSTATUE_WAIT, 0},   // S_SUSPICIOUSFACESTABBERSTATUE_WAIT
-	{SPR_CBBS, FF_ANIMATE, 23, {NULL},    6, 1, S_SUSPICIOUSFACESTABBERSTATUE_BURST2, 0}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST1
-	{SPR_NULL, 0, 40, {A_StatueBurst}, MT_FACESTABBER, S_FACESTABBER_CHARGE2, S_NULL, 0}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST2
+	{"S_SUSPICIOUSFACESTABBERSTATUE_WAIT", 0, SPR_CBBS, 0, 5, {A_Look}, 768*FRACUNIT, 0, S_SUSPICIOUSFACESTABBERSTATUE_WAIT, 0},
+	{"S_SUSPICIOUSFACESTABBERSTATUE_BURST1", 0, SPR_CBBS, FF_ANIMATE, 23, {NULL},    6, 1, S_SUSPICIOUSFACESTABBERSTATUE_BURST2, 0},
+	{"S_SUSPICIOUSFACESTABBERSTATUE_BURST2", 0, SPR_NULL, 0, 40, {A_StatueBurst}, MT_FACESTABBER, S_FACESTABBER_CHARGE2, S_NULL, 0},
 
-	{SPR_CABR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BRAMBLES
+	{"S_BRAMBLES", 0, SPR_CABR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Big Tumbleweed
-	{SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL, 0},                // S_BIGTUMBLEWEED
-	{SPR_BTBL, 0,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2, 0}, // S_BIGTUMBLEWEED_ROLL1
-	{SPR_BTBL, 1,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL3, 0}, // S_BIGTUMBLEWEED_ROLL2
-	{SPR_BTBL, 2,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL4, 0}, // S_BIGTUMBLEWEED_ROLL3
-	{SPR_BTBL, 3,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL5, 0}, // S_BIGTUMBLEWEED_ROLL4
-	{SPR_BTBL, 4,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL6, 0}, // S_BIGTUMBLEWEED_ROLL5
-	{SPR_BTBL, 5,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL7, 0}, // S_BIGTUMBLEWEED_ROLL6
-	{SPR_BTBL, 6,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL8, 0}, // S_BIGTUMBLEWEED_ROLL7
-	{SPR_BTBL, 7,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL1, 0}, // S_BIGTUMBLEWEED_ROLL8
+	{"S_BIGTUMBLEWEED", 0, SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIGTUMBLEWEED_ROLL1", 0, SPR_BTBL, 0,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2, 0},
+	{"S_BIGTUMBLEWEED_ROLL2", 0, SPR_BTBL, 1,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL3, 0},
+	{"S_BIGTUMBLEWEED_ROLL3", 0, SPR_BTBL, 2,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL4, 0},
+	{"S_BIGTUMBLEWEED_ROLL4", 0, SPR_BTBL, 3,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL5, 0},
+	{"S_BIGTUMBLEWEED_ROLL5", 0, SPR_BTBL, 4,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL6, 0},
+	{"S_BIGTUMBLEWEED_ROLL6", 0, SPR_BTBL, 5,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL7, 0},
+	{"S_BIGTUMBLEWEED_ROLL7", 0, SPR_BTBL, 6,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL8, 0},
+	{"S_BIGTUMBLEWEED_ROLL8", 0, SPR_BTBL, 7,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL1, 0},
 
 	// Little Tumbleweed
-	{SPR_STBL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LITTLETUMBLEWEED
-	{SPR_STBL, 0, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL2, 0}, // S_LITTLETUMBLEWEED_ROLL1
-	{SPR_STBL, 1, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL3, 0}, // S_LITTLETUMBLEWEED_ROLL2
-	{SPR_STBL, 2, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL4, 0}, // S_LITTLETUMBLEWEED_ROLL3
-	{SPR_STBL, 3, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL5, 0}, // S_LITTLETUMBLEWEED_ROLL4
-	{SPR_STBL, 4, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL6, 0}, // S_LITTLETUMBLEWEED_ROLL5
-	{SPR_STBL, 5, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL7, 0}, // S_LITTLETUMBLEWEED_ROLL6
-	{SPR_STBL, 6, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL8, 0}, // S_LITTLETUMBLEWEED_ROLL7
-	{SPR_STBL, 7, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL1, 0}, // S_LITTLETUMBLEWEED_ROLL8
+	{"S_LITTLETUMBLEWEED", 0, SPR_STBL, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LITTLETUMBLEWEED_ROLL1", 0, SPR_STBL, 0, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL2, 0},
+	{"S_LITTLETUMBLEWEED_ROLL2", 0, SPR_STBL, 1, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL3, 0},
+	{"S_LITTLETUMBLEWEED_ROLL3", 0, SPR_STBL, 2, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL4, 0},
+	{"S_LITTLETUMBLEWEED_ROLL4", 0, SPR_STBL, 3, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL5, 0},
+	{"S_LITTLETUMBLEWEED_ROLL5", 0, SPR_STBL, 4, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL6, 0},
+	{"S_LITTLETUMBLEWEED_ROLL6", 0, SPR_STBL, 5, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL7, 0},
+	{"S_LITTLETUMBLEWEED_ROLL7", 0, SPR_STBL, 6, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL8, 0},
+	{"S_LITTLETUMBLEWEED_ROLL8", 0, SPR_STBL, 7, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL1, 0},
 
 	// Cacti
-	{SPR_CACT, 0, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, // S_CACTI1
-	{SPR_CACT, 1, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, // S_CACTI2
-	{SPR_CACT, 2, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, // S_CACTI3
-	{SPR_CACT, 3, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, // S_CACTI4
-	{SPR_CACT, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI5
-	{SPR_CACT, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI6
-	{SPR_CACT, 6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI7
-	{SPR_CACT, 7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI8
-	{SPR_CACT, 8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI9
-	{SPR_CACT, 9, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, // S_CACTI10
-	{SPR_CACT, 10, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, // S_CACTI11
-	{SPR_CACT, 11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTITINYSEG
-	{SPR_CACT, 12, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTISMALLSEG
+	{"S_CACTI1", 0, SPR_CACT, 0, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0},
+	{"S_CACTI2", 0, SPR_CACT, 1, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0},
+	{"S_CACTI3", 0, SPR_CACT, 2, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0},
+	{"S_CACTI4", 0, SPR_CACT, 3, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0},
+	{"S_CACTI5", 0, SPR_CACT, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CACTI6", 0, SPR_CACT, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CACTI7", 0, SPR_CACT, 6, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CACTI8", 0, SPR_CACT, 7, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CACTI9", 0, SPR_CACT, 8, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CACTI10", 0, SPR_CACT, 9, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0},
+	{"S_CACTI11", 0, SPR_CACT, 10, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0},
+	{"S_CACTITINYSEG", 0, SPR_CACT, 11, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CACTISMALLSEG", 0, SPR_CACT, 12, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Warning Signs
-	{SPR_WWSG, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARIDSIGN_CAUTION
-	{SPR_WWS2, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARIDSIGN_CACTI
-	{SPR_WWS3, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARIDSIGN_SHARPTURN
+	{"S_ARIDSIGN_CAUTION", 0, SPR_WWSG, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ARIDSIGN_CACTI", 0, SPR_WWS2, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ARIDSIGN_SHARPTURN", 0, SPR_WWS3, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Oil lamp
-	{SPR_OILL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_OILLAMP
-	{SPR_OILF, FF_TRANS90|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_OILLAMPFLARE
+	{"S_OILLAMP", 0, SPR_OILL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_OILLAMPFLARE", 0, SPR_OILF, FF_TRANS90|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// TNT barrel
-	{SPR_BARR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TNTBARREL_STND1
-	{SPR_BARX, 0, 0, {A_RollAngle}, 0, 1, S_TNTBARREL_EXPL2, 0}, // S_TNTBARREL_EXPL1
-	{SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_TNTBARREL_EXPL3, 0}, // S_TNTBARREL_EXPL2
-	{SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_TNTExplode}, MT_TNTDUST, 0, S_TNTBARREL_EXPL4, 0}, // S_TNTBARREL_EXPL3
-	{SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TNTBARREL_EXPL5, 0}, // S_TNTBARREL_EXPL4
-	{SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL6, 0}, // S_TNTBARREL_EXPL5
-	{SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL7, 0}, // S_TNTBARREL_EXPL6
-	{SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_TNTBARREL_EXPL7
+	{"S_TNTBARREL_STND1", 0, SPR_BARR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_TNTBARREL_EXPL1", 0, SPR_BARX, 0, 0, {A_RollAngle}, 0, 1, S_TNTBARREL_EXPL2, 0},
+	{"S_TNTBARREL_EXPL2", 0, SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_TNTBARREL_EXPL3, 0},
+	{"S_TNTBARREL_EXPL3", 0, SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_TNTExplode}, MT_TNTDUST, 0, S_TNTBARREL_EXPL4, 0},
+	{"S_TNTBARREL_EXPL4", 0, SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TNTBARREL_EXPL5, 0},
+	{"S_TNTBARREL_EXPL5", 0, SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL6, 0},
+	{"S_TNTBARREL_EXPL6", 0, SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL7, 0},
+	{"S_TNTBARREL_EXPL7", 0, SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0},
 #ifndef ROTSPRITE
-	{SPR_BARR, 1|FF_ANIMATE, -1, {NULL}, 7, 2, S_NULL, 0}, // S_TNTBARREL_FLYING
+	{"S_TNTBARREL_FLYING", 0, SPR_BARR, 1|FF_ANIMATE, -1, {NULL}, 7, 2, S_NULL, 0},
 #else
-	{SPR_BARR, 1, 1, {A_RollAngle}, 14, 0, S_TNTBARREL_FLYING, 0}, // S_TNTBARREL_FLYING
+	{"S_TNTBARREL_FLYING", 0, SPR_BARR, 1, 1, {A_RollAngle}, 14, 0, S_TNTBARREL_FLYING, 0},
 #endif
 
 	// TNT proximity shell
-	{SPR_REMT, 0, 10, {A_Look}, 33554433, 0, S_PROXIMITY_TNT, 0}, // S_PROXIMITY_TNT
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER2, 0}, // S_PROXIMITY_TNT_TRIGGER1
-	{SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER3, 0}, // S_PROXIMITY_TNT_TRIGGER2
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER4, 0}, // S_PROXIMITY_TNT_TRIGGER3
-	{SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER5, 0}, // S_PROXIMITY_TNT_TRIGGER4
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER6, 0}, // S_PROXIMITY_TNT_TRIGGER5
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER7, 0}, // S_PROXIMITY_TNT_TRIGGER6
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER8, 0}, // S_PROXIMITY_TNT_TRIGGER7
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER9, 0}, // S_PROXIMITY_TNT_TRIGGER8
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER10, 0}, // S_PROXIMITY_TNT_TRIGGER9
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER11, 0}, // S_PROXIMITY_TNT_TRIGGER10
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER12, 0}, // S_PROXIMITY_TNT_TRIGGER11
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER13, 0}, // S_PROXIMITY_TNT_TRIGGER12
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER14, 0}, // S_PROXIMITY_TNT_TRIGGER13
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER15, 0}, // S_PROXIMITY_TNT_TRIGGER14
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER16, 0}, // S_PROXIMITY_TNT_TRIGGER15
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER17, 0}, // S_PROXIMITY_TNT_TRIGGER16
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER18, 0}, // S_PROXIMITY_TNT_TRIGGER17
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER19, 0}, // S_PROXIMITY_TNT_TRIGGER18
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER20, 0}, // S_PROXIMITY_TNT_TRIGGER19
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER21, 0}, // S_PROXIMITY_TNT_TRIGGER20
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER22, 0}, // S_PROXIMITY_TNT_TRIGGER21
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER23, 0}, // S_PROXIMITY_TNT_TRIGGER22
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_TNTBARREL_EXPL1, 0}, // S_PROXIMITY_TNT_TRIGGER23
+	{"S_PROXIMITY_TNT", 0, SPR_REMT, 0, 10, {A_Look}, 33554433, 0, S_PROXIMITY_TNT, 0},
+	{"S_PROXIMITY_TNT_TRIGGER1", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER2, 0},
+	{"S_PROXIMITY_TNT_TRIGGER2", 0, SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER3, 0},
+	{"S_PROXIMITY_TNT_TRIGGER3", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER4, 0},
+	{"S_PROXIMITY_TNT_TRIGGER4", 0, SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER5, 0},
+	{"S_PROXIMITY_TNT_TRIGGER5", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER6, 0},
+	{"S_PROXIMITY_TNT_TRIGGER6", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER7, 0},
+	{"S_PROXIMITY_TNT_TRIGGER7", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER8, 0},
+	{"S_PROXIMITY_TNT_TRIGGER8", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER9, 0},
+	{"S_PROXIMITY_TNT_TRIGGER9", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER10, 0},
+	{"S_PROXIMITY_TNT_TRIGGER10", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER11, 0},
+	{"S_PROXIMITY_TNT_TRIGGER11", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER12, 0},
+	{"S_PROXIMITY_TNT_TRIGGER12", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER13, 0},
+	{"S_PROXIMITY_TNT_TRIGGER13", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER14, 0},
+	{"S_PROXIMITY_TNT_TRIGGER14", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER15, 0},
+	{"S_PROXIMITY_TNT_TRIGGER15", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER16, 0},
+	{"S_PROXIMITY_TNT_TRIGGER16", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER17, 0},
+	{"S_PROXIMITY_TNT_TRIGGER17", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER18, 0},
+	{"S_PROXIMITY_TNT_TRIGGER18", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER19, 0},
+	{"S_PROXIMITY_TNT_TRIGGER19", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER20, 0},
+	{"S_PROXIMITY_TNT_TRIGGER20", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER21, 0},
+	{"S_PROXIMITY_TNT_TRIGGER21", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER22, 0},
+	{"S_PROXIMITY_TNT_TRIGGER22", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER23, 0},
+	{"S_PROXIMITY_TNT_TRIGGER23", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_TNTBARREL_EXPL1, 0},
 
 	// Dust devil
-	{SPR_NULL, 0, 1, {A_DustDevilThink}, 0, 0, S_DUSTDEVIL, 0}, //S_DUSTDEVIL
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 2 * TICRATE, {NULL}, 0, 0, S_DUSTLAYER2, 0}, // S_DUSTLAYER1
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 5, {NULL}, 0, 0, S_DUSTLAYER3, 0}, // S_DUSTLAYER2
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER4, 0}, // S_DUSTLAYER3
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER5, 0}, // S_DUSTLAYER4
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS90, 5, {NULL}, 0, 0, S_NULL, 0}, // S_DUSTLAYER5
-	{SPR_ADST, 0|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, // S_ARIDDUST1
-	{SPR_ADST, 3|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, // S_ARIDDUST2
-	{SPR_ADST, 6|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, // S_ARIDDUST3
+	{"S_DUSTDEVIL", 0, SPR_NULL, 0, 1, {A_DustDevilThink}, 0, 0, S_DUSTDEVIL, 0},
+	{"S_DUSTLAYER1", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 2 * TICRATE, {NULL}, 0, 0, S_DUSTLAYER2, 0},
+	{"S_DUSTLAYER2", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 5, {NULL}, 0, 0, S_DUSTLAYER3, 0},
+	{"S_DUSTLAYER3", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER4, 0},
+	{"S_DUSTLAYER4", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER5, 0},
+	{"S_DUSTLAYER5", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS90, 5, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ARIDDUST1", 0, SPR_ADST, 0|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0},
+	{"S_ARIDDUST2", 0, SPR_ADST, 3|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0},
+	{"S_ARIDDUST3", 0, SPR_ADST, 6|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0},
 
 	// Minecart
-	{SPR_NULL, 0,                            1, {NULL},                 0, 0, S_MINECART_IDLE, 0},   // S_MINECART_IDLE
-	{SPR_NULL, 0,                            0, {A_KillSegments},       0, 0, S_TNTBARREL_EXPL4, 0}, // S_MINECART_DTH1
-	{SPR_MCRT, 8|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL, 0},            // S_MINECARTEND
-	{SPR_MCRT, 0|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL, 0},            // S_MINECARTSEG_FRONT
-	{SPR_MCRT, 1|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL, 0},            // S_MINECARTSEG_BACK
-	{SPR_MCRT, 2|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL, 0},            // S_MINECARTSEG_LEFT
-	{SPR_MCRT, 5|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL, 0},            // S_MINECARTSEG_RIGHT
-	{SPR_LCKN, 2|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL, 0},            // S_MINECARTSIDEMARK1
-	{SPR_LCKN, 0|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL, 0},            // S_MINECARTSIDEMARK2
-	{SPR_MCSP, FF_FULLBRIGHT,                1, {A_MinecartSparkThink}, 0, 0, S_MINECARTSPARK, 0},   // S_MINECARTSPARK
+	{"S_MINECART_IDLE", 0, SPR_NULL, 0,                            1, {NULL},                 0, 0, S_MINECART_IDLE, 0},
+	{"S_MINECART_DTH1", 0, SPR_NULL, 0,                            0, {A_KillSegments},       0, 0, S_TNTBARREL_EXPL4, 0},
+	{"S_MINECARTEND", 0, SPR_MCRT, 8|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL, 0},
+	{"S_MINECARTSEG_FRONT", 0, SPR_MCRT, 0|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL, 0},
+	{"S_MINECARTSEG_BACK", 0, SPR_MCRT, 1|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL, 0},
+	{"S_MINECARTSEG_LEFT", 0, SPR_MCRT, 2|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL, 0},
+	{"S_MINECARTSEG_RIGHT", 0, SPR_MCRT, 5|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL, 0},
+	{"S_MINECARTSIDEMARK1", 0, SPR_LCKN, 2|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL, 0},
+	{"S_MINECARTSIDEMARK2", 0, SPR_LCKN, 0|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL, 0},
+	{"S_MINECARTSPARK", 0, SPR_MCSP, FF_FULLBRIGHT,                1, {A_MinecartSparkThink}, 0, 0, S_MINECARTSPARK, 0},
 
 	// Saloon door
-	{SPR_SALD, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SALOONDOOR
-	{SPR_NULL, 0, -1, {A_SaloonDoorSpawn}, MT_SALOONDOOR, 48, S_NULL, 0}, // S_SALOONDOORCENTER
+	{"S_SALOONDOOR", 0, SPR_SALD, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SALOONDOORCENTER", 0, SPR_NULL, 0, -1, {A_SaloonDoorSpawn}, MT_SALOONDOOR, 48, S_NULL, 0},
 
 	// Train cameo
-	{SPR_NULL, 0, -1, {NULL}, 0, 0, S_TRAINCAMEOSPAWNER_2, 0}, // S_TRAINCAMEOSPAWNER_1
-	{SPR_NULL, 0, 14, {A_TrainCameo}, 20, 18, S_TRAINCAMEOSPAWNER_3, 0}, // S_TRAINCAMEOSPAWNER_2
-	{SPR_NULL, 0, 1, {A_Repeat}, 1, 0, S_TRAINCAMEOSPAWNER_4, 0}, // S_TRAINCAMEOSPAWNER_3
-	{SPR_NULL, 0, 18, {A_TrainCameo2}, 20, 44, S_TRAINCAMEOSPAWNER_5, 0}, // S_TRAINCAMEOSPAWNER_4
-	{SPR_NULL, 0, 1, {A_Repeat}, 5, S_TRAINCAMEOSPAWNER_4, S_NULL, 0}, // S_TRAINCAMEOSPAWNER_5
-	{SPR_NULL, 0, 2, {A_SmokeTrailer}, MT_SMOKE, 0, S_TRAINPUFFMAKER, 0}, // S_TRAINPUFFMAKER
+	{"S_TRAINCAMEOSPAWNER_1", 0, SPR_NULL, 0, -1, {NULL}, 0, 0, S_TRAINCAMEOSPAWNER_2, 0},
+	{"S_TRAINCAMEOSPAWNER_2", 0, SPR_NULL, 0, 14, {A_TrainCameo}, 20, 18, S_TRAINCAMEOSPAWNER_3, 0},
+	{"S_TRAINCAMEOSPAWNER_3", 0, SPR_NULL, 0, 1, {A_Repeat}, 1, 0, S_TRAINCAMEOSPAWNER_4, 0},
+	{"S_TRAINCAMEOSPAWNER_4", 0, SPR_NULL, 0, 18, {A_TrainCameo2}, 20, 44, S_TRAINCAMEOSPAWNER_5, 0},
+	{"S_TRAINCAMEOSPAWNER_5", 0, SPR_NULL, 0, 1, {A_Repeat}, 5, S_TRAINCAMEOSPAWNER_4, S_NULL, 0},
+	{"S_TRAINPUFFMAKER", 0, SPR_NULL, 0, 2, {A_SmokeTrailer}, MT_SMOKE, 0, S_TRAINPUFFMAKER, 0},
 
-	{SPR_ADST, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TRAINDUST
-	{SPR_STEA, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TRAINSTEAM
+	{"S_TRAINDUST", 0, SPR_ADST, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_TRAINSTEAM", 0, SPR_STEA, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Flame jet
-	{SPR_NULL, 0, 2*TICRATE, {NULL},             0, 0, S_FLAMEJETSTART, 0}, // S_FLAMEJETSTND
-	{SPR_NULL, 0, 3*TICRATE, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTOP, 0}, // S_FLAMEJETSTART
-	{SPR_NULL, 0,         1, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTND, 0}, // S_FLAMEJETSTOP
-	{SPR_FLME, FF_FULLBRIGHT  ,  4, {NULL}, 0, 0, S_FLAMEJETFLAME2, 0}, // S_FLAMEJETFLAME1
-	{SPR_FLME, FF_FULLBRIGHT|1,  5, {NULL}, 0, 0, S_FLAMEJETFLAME3, 0}, // S_FLAMEJETFLAME2
-	{SPR_FLME, FF_FULLBRIGHT|2, 11, {NULL}, 0, 0,           S_NULL, 0}, // S_FLAMEJETFLAME3
-	{SPR_FLME, FF_FULLBRIGHT|3,  4, {NULL}, 0, 0, S_FLAMEJETFLAME5, 0}, // S_FLAMEJETFLAME4
-	{SPR_FLME, FF_FULLBRIGHT|4,  5, {NULL}, 0, 0, S_FLAMEJETFLAME6, 0}, // S_FLAMEJETFLAME5
-	{SPR_FLME, FF_FULLBRIGHT|5, 11, {NULL}, 0, 0,           S_NULL, 0}, // S_FLAMEJETFLAME6
-	{SPR_FLME, FF_FULLBRIGHT|6,  4, {NULL}, 0, 0, S_FLAMEJETFLAME8, 0}, // S_FLAMEJETFLAME7
-	{SPR_FLME, FF_FULLBRIGHT|7,  5, {NULL}, 0, 0, S_FLAMEJETFLAME9, 0}, // S_FLAMEJETFLAME8
-	{SPR_FLME, FF_FULLBRIGHT|8, 11, {NULL}, 0, 0,           S_NULL, 0}, // S_FLAMEJETFLAME9
+	{"S_FLAMEJETSTND", 0, SPR_NULL, 0, 2*TICRATE, {NULL},             0, 0, S_FLAMEJETSTART, 0},
+	{"S_FLAMEJETSTART", 0, SPR_NULL, 0, 3*TICRATE, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTOP, 0},
+	{"S_FLAMEJETSTOP", 0, SPR_NULL, 0,         1, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTND, 0},
+	{"S_FLAMEJETFLAME1", 0, SPR_FLME, FF_FULLBRIGHT  ,  4, {NULL}, 0, 0, S_FLAMEJETFLAME2, 0},
+	{"S_FLAMEJETFLAME2", 0, SPR_FLME, FF_FULLBRIGHT|1,  5, {NULL}, 0, 0, S_FLAMEJETFLAME3, 0},
+	{"S_FLAMEJETFLAME3", 0, SPR_FLME, FF_FULLBRIGHT|2, 11, {NULL}, 0, 0,           S_NULL, 0},
+	{"S_FLAMEJETFLAME4", 0, SPR_FLME, FF_FULLBRIGHT|3,  4, {NULL}, 0, 0, S_FLAMEJETFLAME5, 0},
+	{"S_FLAMEJETFLAME5", 0, SPR_FLME, FF_FULLBRIGHT|4,  5, {NULL}, 0, 0, S_FLAMEJETFLAME6, 0},
+	{"S_FLAMEJETFLAME6", 0, SPR_FLME, FF_FULLBRIGHT|5, 11, {NULL}, 0, 0,           S_NULL, 0},
+	{"S_FLAMEJETFLAME7", 0, SPR_FLME, FF_FULLBRIGHT|6,  4, {NULL}, 0, 0, S_FLAMEJETFLAME8, 0},
+	{"S_FLAMEJETFLAME8", 0, SPR_FLME, FF_FULLBRIGHT|7,  5, {NULL}, 0, 0, S_FLAMEJETFLAME9, 0},
+	{"S_FLAMEJETFLAME9", 0, SPR_FLME, FF_FULLBRIGHT|8, 11, {NULL}, 0, 0,           S_NULL, 0},
 
 	// Spinning flame jets
 	// A: Counter-clockwise
-	{SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISA2, 0}, // S_FJSPINAXISA1
-	{SPR_NULL, 0, 2, {A_ChangeAngleRelative},                 6,         6, S_FJSPINAXISA1, 0}, // S_FJSPINAXISA2
+	{"S_FJSPINAXISA1", 0, SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISA2, 0},
+	{"S_FJSPINAXISA2", 0, SPR_NULL, 0, 2, {A_ChangeAngleRelative},                 6,         6, S_FJSPINAXISA1, 0},
 
 	// B: Clockwise
-	{SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISB2, 0}, // S_FJSPINAXISB1
-	{SPR_NULL, 0, 2, {A_ChangeAngleRelative},                -6,        -6, S_FJSPINAXISB1, 0}, // S_FJSPINAXISB2
+	{"S_FJSPINAXISB1", 0, SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISB2, 0},
+	{"S_FJSPINAXISB2", 0, SPR_NULL, 0, 2, {A_ChangeAngleRelative},                -6,        -6, S_FJSPINAXISB1, 0},
 
 	// Blade's flame
-	{SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 5, S_FLAMEJETFLAMEB2, 0}, // S_FLAMEJETFLAMEB1
-	{SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 7, S_FLAMEJETFLAMEB3, 0}, // S_FLAMEJETFLAMEB2
-	{SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40|FF_ANIMATE, (12*7), {NULL}, 7, 12, S_NULL, 0},  // S_FLAMEJETFLAMEB3
+	{"S_FLAMEJETFLAMEB1", 0, SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 5, S_FLAMEJETFLAMEB2, 0},
+	{"S_FLAMEJETFLAMEB2", 0, SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 7, S_FLAMEJETFLAMEB3, 0},
+	{"S_FLAMEJETFLAMEB3", 0, SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40|FF_ANIMATE, (12*7), {NULL}, 7, 12, S_NULL, 0},
 
 	// Lavafall
-	{SPR_LFAL, 5, 1, {NULL}, 0, 0, S_LAVAFALL_DORMANT, 0}, // S_LAVAFALL_DORMANT
-	{SPR_LFAL, 6|FF_ANIMATE, 4, {A_LavafallRocks}, 1, 2, S_LAVAFALL_TELL, 0}, // S_LAVAFALL_TELL
-	{SPR_LFAL, 9|FF_FULLBRIGHT|FF_ANIMATE, 2, {A_LavafallLava}, 1, 1, S_LAVAFALL_SHOOT, 0}, // S_LAVAFALL_SHOOT
-	{SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA2, 0}, // S_LAVAFALL_LAVA1
-	{SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA1, 0}, // S_LAVAFALL_LAVA2
-	{SPR_LFAL, 2|FF_FULLBRIGHT|FF_ANIMATE, 9, {NULL}, 2, 3, S_NULL, 0}, // S_LAVAFALL_LAVA3
-	{SPR_LFAL, 11|FF_ANIMATE|FF_RANDOMANIM, 12, {NULL}, 3, 3, S_LAVAFALLROCK, 0}, // S_LAVAFALLROCK
+	{"S_LAVAFALL_DORMANT", 0, SPR_LFAL, 5, 1, {NULL}, 0, 0, S_LAVAFALL_DORMANT, 0},
+	{"S_LAVAFALL_TELL", 0, SPR_LFAL, 6|FF_ANIMATE, 4, {A_LavafallRocks}, 1, 2, S_LAVAFALL_TELL, 0},
+	{"S_LAVAFALL_SHOOT", 0, SPR_LFAL, 9|FF_FULLBRIGHT|FF_ANIMATE, 2, {A_LavafallLava}, 1, 1, S_LAVAFALL_SHOOT, 0},
+	{"S_LAVAFALL_LAVA1", 0, SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA2, 0},
+	{"S_LAVAFALL_LAVA2", 0, SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA1, 0},
+	{"S_LAVAFALL_LAVA3", 0, SPR_LFAL, 2|FF_FULLBRIGHT|FF_ANIMATE, 9, {NULL}, 2, 3, S_NULL, 0},
+	{"S_LAVAFALLROCK", 0, SPR_LFAL, 11|FF_ANIMATE|FF_RANDOMANIM, 12, {NULL}, 3, 3, S_LAVAFALLROCK, 0},
 
 	// Rollout Rock
-	{SPR_NULL, 0, 1, {A_RolloutSpawn}, 256*FRACUNIT, MT_ROLLOUTROCK, S_ROLLOUTSPAWN, 0}, // S_ROLLOUTSPAWN
-	{SPR_PUMI, 0, 1, {A_RolloutRock},    63*FRACUNIT/64,  7*FRACUNIT/10,  S_ROLLOUTROCK, 0}, // S_ROLLOUTROCK
+	{"S_ROLLOUTSPAWN", 0, SPR_NULL, 0, 1, {A_RolloutSpawn}, 256*FRACUNIT, MT_ROLLOUTROCK, S_ROLLOUTSPAWN, 0},
+	{"S_ROLLOUTROCK", 0, SPR_PUMI, 0, 1, {A_RolloutRock},    63*FRACUNIT/64,  7*FRACUNIT/10,  S_ROLLOUTROCK, 0},
 
 	// RVZ scenery
-	{SPR_JPLA, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGFERNLEAF
-	{SPR_JPLA, 1, 1, {NULL}, 0, 0, S_BIGFERN2, 0}, // S_BIGFERN1
-	{SPR_JPLA, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGFERN2
-	{SPR_JPLA, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JUNGLEPALM
-	{SPR_TFLO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_TORCHFLOWER, 0}, // S_TORCHFLOWER
-	{SPR_WVIN, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLVINE_LONG
-	{SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLVINE_SHORT
+	{"S_BIGFERNLEAF", 0, SPR_JPLA, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIGFERN1", 0, SPR_JPLA, 1, 1, {NULL}, 0, 0, S_BIGFERN2, 0},
+	{"S_BIGFERN2", 0, SPR_JPLA, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_JUNGLEPALM", 0, SPR_JPLA, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_TORCHFLOWER", 0, SPR_TFLO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_TORCHFLOWER, 0},
+	{"S_WALLVINE_LONG", 0, SPR_WVIN, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_WALLVINE_SHORT", 0, SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Glaregoyles
-	{SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLE_CHARGE, 0},  // S_GLAREGOYLE
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLE_BLINK, 0},  // S_GLAREGOYLE_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLE_HOLD, 0}, // S_GLAREGOYLE_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLE_FIRE, 0},  // S_GLAREGOYLE_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP, 0},  // S_GLAREGOYLE_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN, 0}, // S_GLAREGOYLE_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLE, 0}, // S_GLAREGOYLE_COOLDOWN
-
-	{SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEUP_CHARGE, 0},  // S_GLAREGOYLEUP
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEUP_BLINK, 0},  // S_GLAREGOYLEUP_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEUP_HOLD, 0}, // S_GLAREGOYLEUP_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEUP_FIRE, 0},  // S_GLAREGOYLEUP_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_LOOP, 0},  // S_GLAREGOYLEUP_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEUP_FIRE, S_GLAREGOYLEUP_COOLDOWN, 0}, // S_GLAREGOYLEUP_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEUP, 0}, // S_GLAREGOYLEUP_COOLDOWN
-
-	{SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEDOWN_CHARGE, 0},  // S_GLAREGOYLEDOWN
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEDOWN_BLINK, 0},  // S_GLAREGOYLEDOWN_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEDOWN_HOLD, 0}, // S_GLAREGOYLEDOWN_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEDOWN_FIRE, 0},  // S_GLAREGOYLEDOWN_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_LOOP, 0},  // S_GLAREGOYLEDOWN_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEDOWN_FIRE, S_GLAREGOYLEDOWN_COOLDOWN, 0}, // S_GLAREGOYLEDOWN_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEDOWN, 0}, // S_GLAREGOYLEDOWN_COOLDOWN
-
-	{SPR_BGAR,            0, 90, {NULL},       0, 0, S_GLAREGOYLELONG_CHARGE, 0},  // S_GLAREGOYLELONG
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLELONG_BLINK, 0},  // S_GLAREGOYLELONG_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLELONG_HOLD, 0}, // S_GLAREGOYLELONG_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLELONG_FIRE, 0},  // S_GLAREGOYLELONG_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_LOOP, 0},  // S_GLAREGOYLELONG_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   5, S_GLAREGOYLELONG_FIRE, S_GLAREGOYLELONG_COOLDOWN, 0}, // S_GLAREGOYLELONG_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLELONG, 0}, // S_GLAREGOYLELONG_COOLDOWN
+	{"S_GLAREGOYLE", 0, SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLE_CHARGE, 0},
+	{"S_GLAREGOYLE_CHARGE", 0, SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLE_BLINK, 0},
+	{"S_GLAREGOYLE_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLE_HOLD, 0},
+	{"S_GLAREGOYLE_HOLD", 0, SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLE_FIRE, 0},
+	{"S_GLAREGOYLE_FIRE", 0, SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP, 0},
+	{"S_GLAREGOYLE_LOOP", 0, SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN, 0},
+	{"S_GLAREGOYLE_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLE, 0},
+
+	{"S_GLAREGOYLEUP", 0, SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEUP_CHARGE, 0},
+	{"S_GLAREGOYLEUP_CHARGE", 0, SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEUP_BLINK, 0},
+	{"S_GLAREGOYLEUP_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEUP_HOLD, 0},
+	{"S_GLAREGOYLEUP_HOLD", 0, SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEUP_FIRE, 0},
+	{"S_GLAREGOYLEUP_FIRE", 0, SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_LOOP, 0},
+	{"S_GLAREGOYLEUP_LOOP", 0, SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEUP_FIRE, S_GLAREGOYLEUP_COOLDOWN, 0},
+	{"S_GLAREGOYLEUP_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEUP, 0},
+
+	{"S_GLAREGOYLEDOWN", 0, SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEDOWN_CHARGE, 0},
+	{"S_GLAREGOYLEDOWN_CHARGE", 0, SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEDOWN_BLINK, 0},
+	{"S_GLAREGOYLEDOWN_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEDOWN_HOLD, 0},
+	{"S_GLAREGOYLEDOWN_HOLD", 0, SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEDOWN_FIRE, 0},
+	{"S_GLAREGOYLEDOWN_FIRE", 0, SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_LOOP, 0},
+	{"S_GLAREGOYLEDOWN_LOOP", 0, SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEDOWN_FIRE, S_GLAREGOYLEDOWN_COOLDOWN, 0},
+	{"S_GLAREGOYLEDOWN_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEDOWN, 0},
+
+	{"S_GLAREGOYLELONG", 0, SPR_BGAR,            0, 90, {NULL},       0, 0, S_GLAREGOYLELONG_CHARGE, 0},
+	{"S_GLAREGOYLELONG_CHARGE", 0, SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLELONG_BLINK, 0},
+	{"S_GLAREGOYLELONG_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLELONG_HOLD, 0},
+	{"S_GLAREGOYLELONG_HOLD", 0, SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLELONG_FIRE, 0},
+	{"S_GLAREGOYLELONG_FIRE", 0, SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_LOOP, 0},
+	{"S_GLAREGOYLELONG_LOOP", 0, SPR_BGAR,            1,  0, {A_Repeat},   5, S_GLAREGOYLELONG_FIRE, S_GLAREGOYLELONG_COOLDOWN, 0},
+	{"S_GLAREGOYLELONG_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLELONG, 0},
 
 	// Target/Red Crystal
-	{SPR_RCRY,               0, -1, {NULL},                  0, 0, S_TARGET_IDLE, 0},  // S_TARGET_IDLE
-	{SPR_RCRY, FF_FULLBRIGHT|1,  0, {A_PlaySound},           sfx_ding, 1, S_TARGET_HIT2, 0},  // S_TARGET_HIT1
-	{SPR_RCRY, FF_FULLBRIGHT|1, 45, {A_SetObjectFlags},      MF_PUSHABLE, 2, S_TARGET_RESPAWN, 0},  // S_TARGET_HIT2
-	{SPR_RCRY,               1,  0, {A_SpawnObjectRelative}, 0, MT_TARGET, S_NULL, 0},  // S_TARGET_RESPAWN
-	{SPR_RCRY, FF_FULLBRIGHT|1, -1, {A_SetObjectFlags},      MF_PUSHABLE, 1, S_TARGET_ALLDONE, 0},  // S_TARGET_ALLDONE
+	{"S_TARGET_IDLE", 0, SPR_RCRY,               0, -1, {NULL},                  0, 0, S_TARGET_IDLE, 0},
+	{"S_TARGET_HIT1", 0, SPR_RCRY, FF_FULLBRIGHT|1,  0, {A_PlaySound},           sfx_ding, 1, S_TARGET_HIT2, 0},
+	{"S_TARGET_HIT2", 0, SPR_RCRY, FF_FULLBRIGHT|1, 45, {A_SetObjectFlags},      MF_PUSHABLE, 2, S_TARGET_RESPAWN, 0},
+	{"S_TARGET_RESPAWN", 0, SPR_RCRY,               1,  0, {A_SpawnObjectRelative}, 0, MT_TARGET, S_NULL, 0},
+	{"S_TARGET_ALLDONE", 0, SPR_RCRY, FF_FULLBRIGHT|1, -1, {A_SetObjectFlags},      MF_PUSHABLE, 1, S_TARGET_ALLDONE, 0},
 
 	// Green flame
-	{SPR_CFLM, FF_FULLBRIGHT|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 3, S_GREENFLAME, 0}, // S_GREENFLAME
+	{"S_GREENFLAME", 0, SPR_CFLM, FF_FULLBRIGHT|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 3, S_GREENFLAME, 0},
 
 	// ATZ Blue Gargoyle
-	{SPR_BGAR, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUEGARGOYLE
+	{"S_BLUEGARGOYLE", 0, SPR_BGAR, 3, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Stalagmites
-	{SPR_STLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG0
-	{SPR_STLG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG1
-	{SPR_STLG, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG2
-	{SPR_STLG, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG3
-	{SPR_STLG, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG4
-	{SPR_STLG, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG5
-	{SPR_STLG, 6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG6
-	{SPR_STLG, 7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG7
-	{SPR_STLG, 8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG8
-	{SPR_STLG, 9, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG9
+	{"S_STG0", 0, SPR_STLG, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG1", 0, SPR_STLG, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG2", 0, SPR_STLG, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG3", 0, SPR_STLG, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG4", 0, SPR_STLG, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG5", 0, SPR_STLG, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG6", 0, SPR_STLG, 6, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG7", 0, SPR_STLG, 7, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG8", 0, SPR_STLG, 8, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_STG9", 0, SPR_STLG, 9, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Xmas-specific stuff
-	{SPR_XMS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASPOLE
-	{SPR_XMS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANDYCANE
-	{SPR_XMS3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOWMAN
-	{SPR_XMS3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOWMANHAT
-	{SPR_XMS4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LAMPPOST1
-	{SPR_XMS4, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LAMPPOST2
-	{SPR_XMS5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HANGSTAR
-	{SPR_XMS6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MISTLETOE
+	{"S_XMASPOLE", 0, SPR_XMS1, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_CANDYCANE", 0, SPR_XMS2, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SNOWMAN", 0, SPR_XMS3, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SNOWMANHAT", 0, SPR_XMS3, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LAMPPOST1", 0, SPR_XMS4, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LAMPPOST2", 0, SPR_XMS4, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HANGSTAR", 0, SPR_XMS5, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_MISTLETOE", 0, SPR_XMS6, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 	// Xmas GFZ bushes
-	{SPR_BUS3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASBLUEBERRYBUSH
-	{SPR_BUS1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASBERRYBUSH
-	{SPR_BUS2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASBUSH
+	{"S_XMASBLUEBERRYBUSH", 0, SPR_BUS3, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_XMASBERRYBUSH", 0, SPR_BUS1, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_XMASBUSH", 0, SPR_BUS2, 1, -1, {NULL}, 0, 0, S_NULL, 0},
 	// FHZ
-	{SPR_FHZI, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZICE1
-	{SPR_FHZI, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZICE2
-	{SPR_ROSY, 16, 8, {NULL}, 0, 0, S_ROSY_IDLE2, 0}, // S_ROSY_IDLE1
-	{SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE3, 0}, // S_ROSY_IDLE2
-	{SPR_ROSY, 18, 8, {NULL}, 0, 0, S_ROSY_IDLE4, 0}, // S_ROSY_IDLE3
-	{SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE1, 0}, // S_ROSY_IDLE4
-	{SPR_ROSY, 14, -1, {NULL}, 1, 0, S_NULL, 0}, // S_ROSY_JUMP
-	{SPR_ROSY,  5, -1, {NULL}, 7, 0, S_NULL, 0}, // S_ROSY_WALK
-	{SPR_ROSY, 19, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ROSY_HUG
-	{SPR_ROSY, 13, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ROSY_PAIN
-	{SPR_ROSY,  1|FF_ANIMATE, -1, {NULL}, 3, 16, S_NULL, 0}, // S_ROSY_STND
-	{SPR_ROSY, 20|FF_ANIMATE, TICRATE, {NULL}, 3, 4, S_ROSY_WALK, 0}, // S_ROSY_UNHAPPY
+	{"S_FHZICE1", 0, SPR_FHZI, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FHZICE2", 0, SPR_FHZI, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ROSY_IDLE1", 0, SPR_ROSY, 16, 8, {NULL}, 0, 0, S_ROSY_IDLE2, 0},
+	{"S_ROSY_IDLE2", 0, SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE3, 0},
+	{"S_ROSY_IDLE3", 0, SPR_ROSY, 18, 8, {NULL}, 0, 0, S_ROSY_IDLE4, 0},
+	{"S_ROSY_IDLE4", 0, SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE1, 0},
+	{"S_ROSY_JUMP", 0, SPR_ROSY, 14, -1, {NULL}, 1, 0, S_NULL, 0},
+	{"S_ROSY_WALK", 0, SPR_ROSY,  5, -1, {NULL}, 7, 0, S_NULL, 0},
+	{"S_ROSY_HUG", 0, SPR_ROSY, 19, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ROSY_PAIN", 0, SPR_ROSY, 13, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ROSY_STND", 0, SPR_ROSY,  1|FF_ANIMATE, -1, {NULL}, 3, 16, S_NULL, 0},
+	{"S_ROSY_UNHAPPY", 0, SPR_ROSY, 20|FF_ANIMATE, TICRATE, {NULL}, 3, 4, S_ROSY_WALK, 0},
 
 	// Halloween Scenery
 	// Pumpkins
-	{SPR_PUMK,  0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JACKO1
-	{SPR_PUMK,  3|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_2, 0}, // S_JACKO1OVERLAY_1
-	{SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_3, 0}, // S_JACKO1OVERLAY_2
-	{SPR_PUMK,  5|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_4, 0}, // S_JACKO1OVERLAY_3
-	{SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_1, 0}, // S_JACKO1OVERLAY_4
-	{SPR_PUMK,  1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JACKO2
-	{SPR_PUMK,  6|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_2, 0}, // S_JACKO2OVERLAY_1
-	{SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_3, 0}, // S_JACKO2OVERLAY_2
-	{SPR_PUMK,  8|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_4, 0}, // S_JACKO2OVERLAY_3
-	{SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_1, 0}, // S_JACKO2OVERLAY_4
-	{SPR_PUMK,  2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JACKO3
-	{SPR_PUMK,  9|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_2, 0}, // S_JACKO3OVERLAY_1
-	{SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_3, 0}, // S_JACKO3OVERLAY_2
-	{SPR_PUMK, 11|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_4, 0}, // S_JACKO3OVERLAY_3
-	{SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_1, 0}, // S_JACKO3OVERLAY_4
+	{"S_JACKO1", 0, SPR_PUMK,  0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_JACKO1OVERLAY_1", 0, SPR_PUMK,  3|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_2, 0},
+	{"S_JACKO1OVERLAY_2", 0, SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_3, 0},
+	{"S_JACKO1OVERLAY_3", 0, SPR_PUMK,  5|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_4, 0},
+	{"S_JACKO1OVERLAY_4", 0, SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_1, 0},
+	{"S_JACKO2", 0, SPR_PUMK,  1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_JACKO2OVERLAY_1", 0, SPR_PUMK,  6|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_2, 0},
+	{"S_JACKO2OVERLAY_2", 0, SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_3, 0},
+	{"S_JACKO2OVERLAY_3", 0, SPR_PUMK,  8|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_4, 0},
+	{"S_JACKO2OVERLAY_4", 0, SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_1, 0},
+	{"S_JACKO3", 0, SPR_PUMK,  2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_JACKO3OVERLAY_1", 0, SPR_PUMK,  9|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_2, 0},
+	{"S_JACKO3OVERLAY_2", 0, SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_3, 0},
+	{"S_JACKO3OVERLAY_3", 0, SPR_PUMK, 11|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_4, 0},
+	{"S_JACKO3OVERLAY_4", 0, SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_1, 0},
 	// Dr Seuss Trees
-	{SPR_HHPL, 2, -1, {A_ConnectToGround}, MT_HHZTREE_PART, 0, S_NULL, 0}, // S_HHZTREE_TOP,
-	{SPR_HHPL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTREE_TRUNK,
-	{SPR_HHPL, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTREE_LEAF,
+	{"S_HHZTREE_TOP", 0, SPR_HHPL, 2, -1, {A_ConnectToGround}, MT_HHZTREE_PART, 0, S_NULL, 0},
+	{"S_HHZTREE_TRUNK", 0, SPR_HHPL, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HHZTREE_LEAF", 0, SPR_HHPL, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0},
 	// Mushroom
-	{SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_2, 0},  // S_HHZSHROOM_1,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_3, 0},  // S_HHZSHROOM_2,
-	{SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_4, 0},  // S_HHZSHROOM_3,
-	{SPR_SHRM, 1,  1, {NULL}, 0, 0, S_HHZSHROOM_5, 0},  // S_HHZSHROOM_4,
-	{SPR_SHRM, 0,  1, {NULL}, 0, 0, S_HHZSHROOM_6, 0},  // S_HHZSHROOM_5,
-	{SPR_SHRM, 1,  4, {NULL}, 0, 0, S_HHZSHROOM_7, 0},  // S_HHZSHROOM_6,
-	{SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_8, 0},  // S_HHZSHROOM_7,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_9, 0},  // S_HHZSHROOM_8,
-	{SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_10, 0}, // S_HHZSHROOM_9,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_11, 0}, // S_HHZSHROOM_10,
-	{SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_12, 0}, // S_HHZSHROOM_11,
-	{SPR_SHRM, 6,  1, {NULL}, 0, 0, S_HHZSHROOM_13, 0}, // S_HHZSHROOM_12,
-	{SPR_SHRM, 7,  1, {NULL}, 0, 0, S_HHZSHROOM_14, 0}, // S_HHZSHROOM_13,
-	{SPR_SHRM, 6,  4, {NULL}, 0, 0, S_HHZSHROOM_15, 0}, // S_HHZSHROOM_14,
-	{SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_16, 0}, // S_HHZSHROOM_15,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_1, 0},  // S_HHZSHROOM_16,
+	{"S_HHZSHROOM_1", 0, SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_2, 0},
+	{"S_HHZSHROOM_2", 0, SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_3, 0},
+	{"S_HHZSHROOM_3", 0, SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_4, 0},
+	{"S_HHZSHROOM_4", 0, SPR_SHRM, 1,  1, {NULL}, 0, 0, S_HHZSHROOM_5, 0},
+	{"S_HHZSHROOM_5", 0, SPR_SHRM, 0,  1, {NULL}, 0, 0, S_HHZSHROOM_6, 0},
+	{"S_HHZSHROOM_6", 0, SPR_SHRM, 1,  4, {NULL}, 0, 0, S_HHZSHROOM_7, 0},
+	{"S_HHZSHROOM_7", 0, SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_8, 0},
+	{"S_HHZSHROOM_8", 0, SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_9, 0},
+	{"S_HHZSHROOM_9", 0, SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_10, 0},
+	{"S_HHZSHROOM_10", 0, SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_11, 0},
+	{"S_HHZSHROOM_11", 0, SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_12, 0},
+	{"S_HHZSHROOM_12", 0, SPR_SHRM, 6,  1, {NULL}, 0, 0, S_HHZSHROOM_13, 0},
+	{"S_HHZSHROOM_13", 0, SPR_SHRM, 7,  1, {NULL}, 0, 0, S_HHZSHROOM_14, 0},
+	{"S_HHZSHROOM_14", 0, SPR_SHRM, 6,  4, {NULL}, 0, 0, S_HHZSHROOM_15, 0},
+	{"S_HHZSHROOM_15", 0, SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_16, 0},
+	{"S_HHZSHROOM_16", 0, SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_1, 0},
 	// Misc
-	{SPR_HHZM, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZGRASS,
-	{SPR_HHZM, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTENT1,
-	{SPR_HHZM, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTENT2,
-	{SPR_HHZM, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZSTALAGMITE_TALL,
-	{SPR_HHZM, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZSTALAGMITE_SHORT,
+	{"S_HHZGRASS", 0, SPR_HHZM, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HHZTENT1", 0, SPR_HHZM, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HHZTENT2", 0, SPR_HHZM, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HHZSTALAGMITE_TALL", 0, SPR_HHZM, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HHZSTALAGMITE_SHORT", 0, SPR_HHZM, 5, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Loads of Botanic Serenity bullshit
-	{SPR_BSZ1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_RED
-	{SPR_BSZ1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_PURPLE
-	{SPR_BSZ1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_BLUE
-	{SPR_BSZ1, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_CYAN
-	{SPR_BSZ1, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_YELLOW
-	{SPR_BSZ1, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_ORANGE
-	{SPR_BSZ2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_RED
-	{SPR_BSZ2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_PURPLE
-	{SPR_BSZ2, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_BLUE
-	{SPR_BSZ2, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_CYAN
-	{SPR_BSZ2, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_YELLOW
-	{SPR_BSZ2, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_ORANGE
-	{SPR_BSZ3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_RED
-	{SPR_BSZ3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_PURPLE
-	{SPR_BSZ3, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_BLUE
-	{SPR_BSZ3, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_CYAN
-	{SPR_BSZ3, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_YELLOW
-	{SPR_BSZ3, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_ORANGE
-	{SPR_BST1, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_RED
-	{SPR_BST2, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_PURPLE
-	{SPR_BST3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_BLUE
-	{SPR_BST4, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_CYAN
-	{SPR_BST5, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_YELLOW
-	{SPR_BST6, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_ORANGE
-	{SPR_BSZ5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_RED
-	{SPR_BSZ5, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_PURPLE
-	{SPR_BSZ5, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_BLUE
-	{SPR_BSZ5, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_CYAN
-	{SPR_BSZ5, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_YELLOW
-	{SPR_BSZ5, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_ORANGE
-	{SPR_BSZ6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_RED
-	{SPR_BSZ6, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_PURPLE
-	{SPR_BSZ6, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_BLUE
-	{SPR_BSZ6, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_CYAN
-	{SPR_BSZ6, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_YELLOW
-	{SPR_BSZ6, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_ORANGE
-	{SPR_BSZ7, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_RED
-	{SPR_BSZ7, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_PURPLE
-	{SPR_BSZ7, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_BLUE
-	{SPR_BSZ7, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_CYAN
-	{SPR_BSZ7, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_YELLOW
-	{SPR_BSZ7, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_ORANGE
-	{SPR_BSZ8, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHRUB
-	{SPR_BSZ8, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLOVER
-	{SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIG_PALMTREE_TRUNK
-	{SPR_BSZ8, 3, -1, {A_ConnectToGround}, MT_BIG_PALMTREE_TRUNK, 0, S_NULL, 0}, // S_BIG_PALMTREE_TOP
-	{SPR_BSZ8, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_PALMTREE_TRUNK
-	{SPR_BSZ8, 5, -1, {A_ConnectToGround},     MT_PALMTREE_TRUNK, 0, S_NULL, 0}, // S_PALMTREE_TOP
+	{"S_BSZTALLFLOWER_RED", 0, SPR_BSZ1, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZTALLFLOWER_PURPLE", 0, SPR_BSZ1, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZTALLFLOWER_BLUE", 0, SPR_BSZ1, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZTALLFLOWER_CYAN", 0, SPR_BSZ1, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZTALLFLOWER_YELLOW", 0, SPR_BSZ1, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZTALLFLOWER_ORANGE", 0, SPR_BSZ1, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZFLOWER_RED", 0, SPR_BSZ2, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZFLOWER_PURPLE", 0, SPR_BSZ2, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZFLOWER_BLUE", 0, SPR_BSZ2, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZFLOWER_CYAN", 0, SPR_BSZ2, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZFLOWER_YELLOW", 0, SPR_BSZ2, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZFLOWER_ORANGE", 0, SPR_BSZ2, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZSHORTFLOWER_RED", 0, SPR_BSZ3, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZSHORTFLOWER_PURPLE", 0, SPR_BSZ3, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZSHORTFLOWER_BLUE", 0, SPR_BSZ3, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZSHORTFLOWER_CYAN", 0, SPR_BSZ3, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZSHORTFLOWER_YELLOW", 0, SPR_BSZ3, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZSHORTFLOWER_ORANGE", 0, SPR_BSZ3, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZTULIP_RED", 0, SPR_BST1, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0},
+	{"S_BSZTULIP_PURPLE", 0, SPR_BST2, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0},
+	{"S_BSZTULIP_BLUE", 0, SPR_BST3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0},
+	{"S_BSZTULIP_CYAN", 0, SPR_BST4, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0},
+	{"S_BSZTULIP_YELLOW", 0, SPR_BST5, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0},
+	{"S_BSZTULIP_ORANGE", 0, SPR_BST6, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0},
+	{"S_BSZCLUSTER_RED", 0, SPR_BSZ5, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZCLUSTER_PURPLE", 0, SPR_BSZ5, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZCLUSTER_BLUE", 0, SPR_BSZ5, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZCLUSTER_CYAN", 0, SPR_BSZ5, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZCLUSTER_YELLOW", 0, SPR_BSZ5, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZCLUSTER_ORANGE", 0, SPR_BSZ5, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZBUSH_RED", 0, SPR_BSZ6, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZBUSH_PURPLE", 0, SPR_BSZ6, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZBUSH_BLUE", 0, SPR_BSZ6, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZBUSH_CYAN", 0, SPR_BSZ6, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZBUSH_YELLOW", 0, SPR_BSZ6, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZBUSH_ORANGE", 0, SPR_BSZ6, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZVINE_RED", 0, SPR_BSZ7, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZVINE_PURPLE", 0, SPR_BSZ7, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZVINE_BLUE", 0, SPR_BSZ7, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZVINE_CYAN", 0, SPR_BSZ7, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZVINE_YELLOW", 0, SPR_BSZ7, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZVINE_ORANGE", 0, SPR_BSZ7, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZSHRUB", 0, SPR_BSZ8, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BSZCLOVER", 0, SPR_BSZ8, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIG_PALMTREE_TRUNK", 0, SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BIG_PALMTREE_TOP", 0, SPR_BSZ8, 3, -1, {A_ConnectToGround}, MT_BIG_PALMTREE_TRUNK, 0, S_NULL, 0},
+	{"S_PALMTREE_TRUNK", 0, SPR_BSZ8, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_PALMTREE_TOP", 0, SPR_BSZ8, 5, -1, {A_ConnectToGround},     MT_PALMTREE_TRUNK, 0, S_NULL, 0},
 
 	// Disco ball
-	{SPR_DBAL, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_DBALL2, 0}, // S_DBALL1
-	{SPR_DBAL, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_DBALL3, 0}, // S_DBALL2
-	{SPR_DBAL, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_DBALL4, 0}, // S_DBALL3
-	{SPR_DBAL, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_DBALL5, 0}, // S_DBALL4
-	{SPR_DBAL, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_DBALL6, 0}, // S_DBALL5
-	{SPR_DBAL, FF_FULLBRIGHT|5, 5, {NULL}, 0, 0, S_DBALL1, 0}, // S_DBALL6
+	{"S_DBALL1", 0, SPR_DBAL, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_DBALL2, 0},
+	{"S_DBALL2", 0, SPR_DBAL, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_DBALL3, 0},
+	{"S_DBALL3", 0, SPR_DBAL, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_DBALL4, 0},
+	{"S_DBALL4", 0, SPR_DBAL, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_DBALL5, 0},
+	{"S_DBALL5", 0, SPR_DBAL, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_DBALL6, 0},
+	{"S_DBALL6", 0, SPR_DBAL, FF_FULLBRIGHT|5, 5, {NULL}, 0, 0, S_DBALL1, 0},
 
-	{SPR_ESTA, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGSTATUE2
+	{"S_EGGSTATUE2", 0, SPR_ESTA, 1, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Shield Orb
-	{SPR_ARMA, FF_TRANS40   , 2, {NULL}, 0, 0, S_ARMA2 , 0}, // S_ARMA1
-	{SPR_ARMA, FF_TRANS40| 1, 2, {NULL}, 0, 0, S_ARMA3 , 0}, // S_ARMA2
-	{SPR_ARMA, FF_TRANS40| 2, 2, {NULL}, 0, 0, S_ARMA4 , 0}, // S_ARMA3
-	{SPR_ARMA, FF_TRANS40| 3, 2, {NULL}, 0, 0, S_ARMA5 , 0}, // S_ARMA4
-	{SPR_ARMA, FF_TRANS40| 4, 2, {NULL}, 0, 0, S_ARMA6 , 0}, // S_ARMA5
-	{SPR_ARMA, FF_TRANS40| 5, 2, {NULL}, 0, 0, S_ARMA7 , 0}, // S_ARMA6
-	{SPR_ARMA, FF_TRANS40| 6, 2, {NULL}, 0, 0, S_ARMA8 , 0}, // S_ARMA7
-	{SPR_ARMA, FF_TRANS40| 7, 2, {NULL}, 0, 0, S_ARMA9 , 0}, // S_ARMA8
-	{SPR_ARMA, FF_TRANS40| 8, 2, {NULL}, 0, 0, S_ARMA10, 0}, // S_ARMA9
-	{SPR_ARMA, FF_TRANS40| 9, 2, {NULL}, 0, 0, S_ARMA11, 0}, // S_ARMA10
-	{SPR_ARMA, FF_TRANS40|10, 2, {NULL}, 0, 0, S_ARMA12, 0}, // S_ARMA11
-	{SPR_ARMA, FF_TRANS40|11, 2, {NULL}, 0, 0, S_ARMA13, 0}, // S_ARMA12
-	{SPR_ARMA, FF_TRANS40|12, 2, {NULL}, 0, 0, S_ARMA14, 0}, // S_ARMA13
-	{SPR_ARMA, FF_TRANS40|13, 2, {NULL}, 0, 0, S_ARMA15, 0}, // S_ARMA14
-	{SPR_ARMA, FF_TRANS40|14, 2, {NULL}, 0, 0, S_ARMA16, 0}, // S_ARMA15
-	{SPR_ARMA, FF_TRANS40|15, 2, {NULL}, 0, 0, S_ARMA1 , 0}, // S_ARMA16
-
-	{SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF2 , 0}, // S_ARMF1
-	{SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF3 , 0}, // S_ARMF2
-	{SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF4 , 0}, // S_ARMF3
-	{SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF5 , 0}, // S_ARMF4
-	{SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF6 , 0}, // S_ARMF5
-	{SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF7 , 0}, // S_ARMF6
-	{SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF8 , 0}, // S_ARMF7
-	{SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF9 , 0}, // S_ARMF8
-	{SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF10, 0}, // S_ARMF9
-	{SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF11, 0}, // S_ARMF10
-	{SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF12, 0}, // S_ARMF11
-	{SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF13, 0}, // S_ARMF12
-	{SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF14, 0}, // S_ARMF13
-	{SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF15, 0}, // S_ARMF14
-	{SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF16, 0}, // S_ARMF15
-	{SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF17, 0}, // S_ARMF16
-	{SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF18, 0}, // S_ARMF17
-	{SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF19, 0}, // S_ARMF18
-	{SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF20, 0}, // S_ARMF19
-	{SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF21, 0}, // S_ARMF20
-	{SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF22, 0}, // S_ARMF21
-	{SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF23, 0}, // S_ARMF22
-	{SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF24, 0}, // S_ARMF23
-	{SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF25, 0}, // S_ARMF24
-	{SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF26, 0}, // S_ARMF25
-	{SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF27, 0}, // S_ARMF26
-	{SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF28, 0}, // S_ARMF27
-	{SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF29, 0}, // S_ARMF28
-	{SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF30, 0}, // S_ARMF29
-	{SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF31, 0}, // S_ARMF30
-	{SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF32, 0}, // S_ARMF31
-	{SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF1 , 0}, // S_ARMF32
-
-	{SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB2 , 0}, // S_ARMB1
-	{SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB3 , 0}, // S_ARMB2
-	{SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB4 , 0}, // S_ARMB3
-	{SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB5 , 0}, // S_ARMB4
-	{SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB6 , 0}, // S_ARMB5
-	{SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB7 , 0}, // S_ARMB6
-	{SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB8 , 0}, // S_ARMB7
-	{SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB9 , 0}, // S_ARMB8
-	{SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB10, 0}, // S_ARMB9
-	{SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB11, 0}, // S_ARMB10
-	{SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB12, 0}, // S_ARMB11
-	{SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB13, 0}, // S_ARMB12
-	{SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB14, 0}, // S_ARMB13
-	{SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB15, 0}, // S_ARMB14
-	{SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB16, 0}, // S_ARMB15
-	{SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB17, 0}, // S_ARMB16
-	{SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB18, 0}, // S_ARMB17
-	{SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB19, 0}, // S_ARMB18
-	{SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB20, 0}, // S_ARMB19
-	{SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB21, 0}, // S_ARMB20
-	{SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB22, 0}, // S_ARMB21
-	{SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB23, 0}, // S_ARMB22
-	{SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB24, 0}, // S_ARMB23
-	{SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB25, 0}, // S_ARMB24
-	{SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB26, 0}, // S_ARMB25
-	{SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB27, 0}, // S_ARMB26
-	{SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB28, 0}, // S_ARMB27
-	{SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB29, 0}, // S_ARMB28
-	{SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB30, 0}, // S_ARMB29
-	{SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB31, 0}, // S_ARMB30
-	{SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB32, 0}, // S_ARMB31
-	{SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB1 , 0}, // S_ARMB32
-
-	{SPR_WIND, FF_TRANS70  , 2, {NULL}, 0, 0, S_WIND2, 0}, // S_WIND1
-	{SPR_WIND, FF_TRANS70|1, 2, {NULL}, 0, 0, S_WIND3, 0}, // S_WIND2
-	{SPR_WIND, FF_TRANS70|2, 2, {NULL}, 0, 0, S_WIND4, 0}, // S_WIND3
-	{SPR_WIND, FF_TRANS70|3, 2, {NULL}, 0, 0, S_WIND5, 0}, // S_WIND4
-	{SPR_WIND, FF_TRANS70|4, 2, {NULL}, 0, 0, S_WIND6, 0}, // S_WIND5
-	{SPR_WIND, FF_TRANS70|5, 2, {NULL}, 0, 0, S_WIND7, 0}, // S_WIND6
-	{SPR_WIND, FF_TRANS70|6, 2, {NULL}, 0, 0, S_WIND8, 0}, // S_WIND7
-	{SPR_WIND, FF_TRANS70|7, 2, {NULL}, 0, 0, S_WIND1, 0}, // S_WIND8
-
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40   , 2, {NULL}, 0, 0, S_MAGN2 , 0}, // S_MAGN1
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 1, 2, {NULL}, 0, 0, S_MAGN3 , 0}, // S_MAGN2
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 2, 2, {NULL}, 0, 0, S_MAGN4 , 0}, // S_MAGN3
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 3, 2, {NULL}, 0, 0, S_MAGN5 , 0}, // S_MAGN4
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 4, 2, {NULL}, 0, 0, S_MAGN6 , 0}, // S_MAGN5
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 5, 2, {NULL}, 0, 0, S_MAGN7 , 0}, // S_MAGN6
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 6, 2, {NULL}, 0, 0, S_MAGN8 , 0}, // S_MAGN7
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 7, 2, {NULL}, 0, 0, S_MAGN9 , 0}, // S_MAGN8
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 8, 2, {NULL}, 0, 0, S_MAGN10, 0}, // S_MAGN9
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_MAGN11, 0}, // S_MAGN10
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_MAGN12, 0}, // S_MAGN11
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_MAGN1 , 0}, // S_MAGN12
-
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS10|12, 2, {NULL}, 0, 0, S_MAGN1 , 0}, // S_MAGN13
-
-	{SPR_FORC, FF_TRANS50  , 3, {NULL}, 0, 0, S_FORC2 , 0}, // S_FORC1
-	{SPR_FORC, FF_TRANS50|1, 3, {NULL}, 0, 0, S_FORC3 , 0}, // S_FORC2
-	{SPR_FORC, FF_TRANS50|2, 3, {NULL}, 0, 0, S_FORC4 , 0}, // S_FORC3
-	{SPR_FORC, FF_TRANS50|3, 3, {NULL}, 0, 0, S_FORC5 , 0}, // S_FORC4
-	{SPR_FORC, FF_TRANS50|4, 3, {NULL}, 0, 0, S_FORC6 , 0}, // S_FORC5
-	{SPR_FORC, FF_TRANS50|5, 3, {NULL}, 0, 0, S_FORC7 , 0}, // S_FORC6
-	{SPR_FORC, FF_TRANS50|6, 3, {NULL}, 0, 0, S_FORC8 , 0}, // S_FORC7
-	{SPR_FORC, FF_TRANS50|7, 3, {NULL}, 0, 0, S_FORC9 , 0}, // S_FORC8
-	{SPR_FORC, FF_TRANS50|8, 3, {NULL}, 0, 0, S_FORC10, 0}, // S_FORC9
-	{SPR_FORC, FF_TRANS50|9, 3, {NULL}, 0, 0, S_FORC1 , 0}, // S_FORC10
-
-	{SPR_FORC, FF_TRANS50|10, 3, {NULL}, 0, 0, S_FORC12, 0}, // S_FORC11
-	{SPR_FORC, FF_TRANS50|11, 3, {NULL}, 0, 0, S_FORC13, 0}, // S_FORC12
-	{SPR_FORC, FF_TRANS50|12, 3, {NULL}, 0, 0, S_FORC14, 0}, // S_FORC13
-	{SPR_FORC, FF_TRANS50|13, 3, {NULL}, 0, 0, S_FORC15, 0}, // S_FORC14
-	{SPR_FORC, FF_TRANS50|14, 3, {NULL}, 0, 0, S_FORC16, 0}, // S_FORC15
-	{SPR_FORC, FF_TRANS50|15, 3, {NULL}, 0, 0, S_FORC17, 0}, // S_FORC16
-	{SPR_FORC, FF_TRANS50|16, 3, {NULL}, 0, 0, S_FORC18, 0}, // S_FORC17
-	{SPR_FORC, FF_TRANS50|17, 3, {NULL}, 0, 0, S_FORC19, 0}, // S_FORC18
-	{SPR_FORC, FF_TRANS50|18, 3, {NULL}, 0, 0, S_FORC20, 0}, // S_FORC19
-	{SPR_FORC, FF_TRANS50|19, 3, {NULL}, 0, 0, S_FORC11, 0}, // S_FORC20
-
-	{SPR_FORC, FF_TRANS50|20, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FORC21
-
-	{SPR_ELEM, FF_TRANS50   , 4, {NULL}, 0, 0, S_ELEM2 , 0}, // S_ELEM1
-	{SPR_ELEM, FF_TRANS50| 1, 4, {NULL}, 0, 0, S_ELEM3 , 0}, // S_ELEM2
-	{SPR_ELEM, FF_TRANS50| 2, 4, {NULL}, 0, 0, S_ELEM4 , 0}, // S_ELEM3
-	{SPR_ELEM, FF_TRANS50| 3, 4, {NULL}, 0, 0, S_ELEM5 , 0}, // S_ELEM4
-	{SPR_ELEM, FF_TRANS50| 4, 4, {NULL}, 0, 0, S_ELEM6 , 0}, // S_ELEM5
-	{SPR_ELEM, FF_TRANS50| 5, 4, {NULL}, 0, 0, S_ELEM7 , 0}, // S_ELEM6
-	{SPR_ELEM, FF_TRANS50| 6, 4, {NULL}, 0, 0, S_ELEM8 , 0}, // S_ELEM7
-	{SPR_ELEM, FF_TRANS50| 7, 4, {NULL}, 0, 0, S_ELEM9 , 0}, // S_ELEM8
-	{SPR_ELEM, FF_TRANS50| 8, 4, {NULL}, 0, 0, S_ELEM10, 0}, // S_ELEM9
-	{SPR_ELEM, FF_TRANS50| 9, 4, {NULL}, 0, 0, S_ELEM11, 0}, // S_ELEM10
-	{SPR_ELEM, FF_TRANS50|10, 4, {NULL}, 0, 0, S_ELEM12, 0}, // S_ELEM11
-	{SPR_ELEM, FF_TRANS50|11, 4, {NULL}, 0, 0, S_ELEM1 , 0}, // S_ELEM12
-
-	{SPR_NULL,             0, 1, {NULL}, 0, 0, S_ELEM14, 0}, // S_ELEM13
-	{SPR_ELEM, FF_TRANS50|11, 1, {NULL}, 0, 0, S_ELEM1 , 0}, // S_ELEM14
-
-	{SPR_ELEM, FF_FULLBRIGHT|12, 3, {NULL}, 0, 0, S_ELEMF2 , 0}, // S_ELEMF1
-	{SPR_ELEM, FF_FULLBRIGHT|13, 3, {NULL}, 0, 0, S_ELEMF3 , 0}, // S_ELEMF2
-	{SPR_ELEM, FF_FULLBRIGHT|14, 3, {NULL}, 0, 0, S_ELEMF4 , 0}, // S_ELEMF3
-	{SPR_ELEM, FF_FULLBRIGHT|15, 3, {NULL}, 0, 0, S_ELEMF5 , 0}, // S_ELEMF4
-	{SPR_ELEM, FF_FULLBRIGHT|16, 3, {NULL}, 0, 0, S_ELEMF6 , 0}, // S_ELEMF5
-	{SPR_ELEM, FF_FULLBRIGHT|17, 3, {NULL}, 0, 0, S_ELEMF7 , 0}, // S_ELEMF6
-	{SPR_ELEM, FF_FULLBRIGHT|18, 3, {NULL}, 0, 0, S_ELEMF8 , 0}, // S_ELEMF7
-	{SPR_ELEM, FF_FULLBRIGHT|19, 3, {NULL}, 0, 0, S_ELEMF1 , 0}, // S_ELEMF8
-
-	{SPR_ELEM, FF_FULLBRIGHT|20, 1, {NULL}, 0, 0, S_ELEMF10, 0}, // S_ELEMF9
-	{SPR_NULL, 0,                1, {NULL}, 0, 0, S_ELEMF1 , 0}, // S_ELEMF10
-
-	{SPR_PITY, FF_TRANS30   , 2, {NULL}, 0, 0, S_PITY2, 0},  // S_PITY1
-	{SPR_PITY, FF_TRANS30| 1, 2, {NULL}, 0, 0, S_PITY3, 0},  // S_PITY2
-	{SPR_PITY, FF_TRANS30| 2, 2, {NULL}, 0, 0, S_PITY4, 0},  // S_PITY3
-	{SPR_PITY, FF_TRANS30| 3, 2, {NULL}, 0, 0, S_PITY5, 0},  // S_PITY4
-	{SPR_PITY, FF_TRANS30| 4, 2, {NULL}, 0, 0, S_PITY6, 0},  // S_PITY5
-	{SPR_PITY, FF_TRANS30| 5, 2, {NULL}, 0, 0, S_PITY7, 0},  // S_PITY6
-	{SPR_PITY, FF_TRANS30| 6, 2, {NULL}, 0, 0, S_PITY8, 0},  // S_PITY7
-	{SPR_PITY, FF_TRANS30| 7, 2, {NULL}, 0, 0, S_PITY9, 0},  // S_PITY8
-	{SPR_PITY, FF_TRANS30| 8, 2, {NULL}, 0, 0, S_PITY10, 0}, // S_PITY9
-	{SPR_PITY, FF_TRANS30| 9, 2, {NULL}, 0, 0, S_PITY11, 0}, // S_PITY10
-	{SPR_PITY, FF_TRANS30|10, 2, {NULL}, 0, 0, S_PITY12, 0}, // S_PITY11
-	{SPR_PITY, FF_TRANS30|11, 2, {NULL}, 0, 0, S_PITY1, 0},  // S_PITY12
-
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40  , 2, {NULL}, 0, 0, S_FIRS2, 0}, // S_FIRS1
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|1, 2, {NULL}, 0, 0, S_FIRS3, 0}, // S_FIRS2
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|2, 2, {NULL}, 0, 0, S_FIRS4, 0}, // S_FIRS3
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|3, 2, {NULL}, 0, 0, S_FIRS5, 0}, // S_FIRS4
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|4, 2, {NULL}, 0, 0, S_FIRS6, 0}, // S_FIRS5
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|5, 2, {NULL}, 0, 0, S_FIRS7, 0}, // S_FIRS6
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|6, 2, {NULL}, 0, 0, S_FIRS8, 0}, // S_FIRS7
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|7, 2, {NULL}, 0, 0, S_FIRS9, 0}, // S_FIRS8
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|8, 2, {NULL}, 0, 0, S_FIRS1, 0}, // S_FIRS9
-
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|18, 1, {NULL}, 0, 0, S_FIRS11, 0}, // S_FIRS10
-	{SPR_NULL, 0,                           1, {NULL}, 0, 0, S_FIRS1 , 0}, // S_FIRS11
-
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_FIRSB2, 0}, // S_FIRSB1
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_FIRSB3, 0}, // S_FIRSB2
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_FIRSB4, 0}, // S_FIRSB3
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|12, 2, {NULL}, 0, 0, S_FIRSB5, 0}, // S_FIRSB4
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|13, 2, {NULL}, 0, 0, S_FIRSB6, 0}, // S_FIRSB5
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|14, 2, {NULL}, 0, 0, S_FIRSB7, 0}, // S_FIRSB6
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|15, 2, {NULL}, 0, 0, S_FIRSB8, 0}, // S_FIRSB7
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|16, 2, {NULL}, 0, 0, S_FIRSB9, 0}, // S_FIRSB8
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|17, 2, {NULL}, 0, 0, S_FIRSB1, 0}, // S_FIRSB9
-
-	{SPR_NULL, 0,                           2, {NULL}, 0, 0, S_FIRSB1 , 0}, // S_FIRSB10
-
-	{SPR_BUBS, FF_TRANS30  , 3, {NULL}, 0, 0, S_BUBS2, 0}, // S_BUBS1
-	{SPR_BUBS, FF_TRANS30|1, 3, {NULL}, 0, 0, S_BUBS3, 0}, // S_BUBS2
-	{SPR_BUBS, FF_TRANS30|2, 3, {NULL}, 0, 0, S_BUBS4, 0}, // S_BUBS3
-	{SPR_BUBS, FF_TRANS30|3, 3, {NULL}, 0, 0, S_BUBS5, 0}, // S_BUBS4
-	{SPR_BUBS, FF_TRANS30|4, 3, {NULL}, 0, 0, S_BUBS6, 0}, // S_BUBS5
-	{SPR_BUBS, FF_TRANS30|5, 3, {NULL}, 0, 0, S_BUBS7, 0}, // S_BUBS6
-	{SPR_BUBS, FF_TRANS30|6, 3, {NULL}, 0, 0, S_BUBS8, 0}, // S_BUBS7
-	{SPR_BUBS, FF_TRANS30|7, 3, {NULL}, 0, 0, S_BUBS9, 0}, // S_BUBS8
-	{SPR_BUBS, FF_TRANS30|8, 3, {NULL}, 0, 0, S_BUBS1, 0}, // S_BUBS9
-
-	{SPR_NULL, 0,   3, {NULL}, 0, 0, S_BUBS1, 0}, // S_BUBS10
-	{SPR_NULL, 0, 4*3, {NULL}, 0, 0, S_BUBS1, 0}, // S_BUBS11
-
-	{SPR_BUBS, FF_TRANS30| 9, 3, {NULL}, 0, 0, S_BUBSB2, 0}, // S_BUBSB1
-	{SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB3, 0}, // S_BUBSB2
-	{SPR_BUBS, FF_TRANS30|11, 3, {NULL}, 0, 0, S_BUBSB4, 0}, // S_BUBSB3
-	{SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB1, 0}, // S_BUBSB4
-
-	{SPR_BUBS, FF_TRANS30|12, 3, {NULL}, 0, 0, S_BUBSB3, 0}, // S_BUBSB5
-	{SPR_BUBS, FF_TRANS30|13, 3, {NULL}, 0, 0, S_BUBSB5, 0}, // S_BUBSB6
-
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,   2, {NULL}, 0, 0, S_ZAPS2 , 0}, // S_ZAPS1
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,   2, {NULL}, 0, 0, S_ZAPS3 , 0}, // S_ZAPS2
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,   2, {NULL}, 0, 0, S_ZAPS4 , 0}, // S_ZAPS3
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,   2, {NULL}, 0, 0, S_ZAPS5 , 0}, // S_ZAPS4
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,   2, {NULL}, 0, 0, S_ZAPS6 , 0}, // S_ZAPS5
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,   2, {NULL}, 0, 0, S_ZAPS7 , 0}, // S_ZAPS6
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,   2, {NULL}, 0, 0, S_ZAPS8 , 0}, // S_ZAPS7
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,   2, {NULL}, 0, 0, S_ZAPS9 , 0}, // S_ZAPS8
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,   2, {NULL}, 0, 0, S_ZAPS10, 0}, // S_ZAPS9
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS11, 0}, // S_ZAPS10
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS12, 0}, // S_ZAPS11
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS13, 0}, // S_ZAPS12
-	{SPR_NULL,                           0, 9*2, {NULL}, 0, 0, S_ZAPS14, 0}, // S_ZAPS13
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS15, 0}, // S_ZAPS14
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS16, 0}, // S_ZAPS15
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS1 , 0}, // S_ZAPS16
-
-	{SPR_NULL,                           0, 12*2, {NULL}, 0, 0, S_ZAPSB2 , 0}, // S_ZAPSB1
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,    2, {NULL}, 0, 0, S_ZAPSB3 , 0}, // S_ZAPSB2
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,    2, {NULL}, 0, 0, S_ZAPSB4 , 0}, // S_ZAPSB3
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,    2, {NULL}, 0, 0, S_ZAPSB5 , 0}, // S_ZAPSB4
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,    2, {NULL}, 0, 0, S_ZAPSB6 , 0}, // S_ZAPSB5
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,    2, {NULL}, 0, 0, S_ZAPSB7 , 0}, // S_ZAPSB6
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,    2, {NULL}, 0, 0, S_ZAPSB8 , 0}, // S_ZAPSB7
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,    2, {NULL}, 0, 0, S_ZAPSB9 , 0}, // S_ZAPSB8
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,    2, {NULL}, 0, 0, S_ZAPSB10, 0}, // S_ZAPSB9
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,    2, {NULL}, 0, 0, S_ZAPSB11, 0}, // S_ZAPSB10
-	{SPR_NULL,                           0, 15*2, {NULL}, 0, 0, S_ZAPSB2 , 0}, // S_ZAPSB11
+	{"S_ARMA1", 0, SPR_ARMA, FF_TRANS40   , 2, {NULL}, 0, 0, S_ARMA2 , 0},
+	{"S_ARMA2", 0, SPR_ARMA, FF_TRANS40| 1, 2, {NULL}, 0, 0, S_ARMA3 , 0},
+	{"S_ARMA3", 0, SPR_ARMA, FF_TRANS40| 2, 2, {NULL}, 0, 0, S_ARMA4 , 0},
+	{"S_ARMA4", 0, SPR_ARMA, FF_TRANS40| 3, 2, {NULL}, 0, 0, S_ARMA5 , 0},
+	{"S_ARMA5", 0, SPR_ARMA, FF_TRANS40| 4, 2, {NULL}, 0, 0, S_ARMA6 , 0},
+	{"S_ARMA6", 0, SPR_ARMA, FF_TRANS40| 5, 2, {NULL}, 0, 0, S_ARMA7 , 0},
+	{"S_ARMA7", 0, SPR_ARMA, FF_TRANS40| 6, 2, {NULL}, 0, 0, S_ARMA8 , 0},
+	{"S_ARMA8", 0, SPR_ARMA, FF_TRANS40| 7, 2, {NULL}, 0, 0, S_ARMA9 , 0},
+	{"S_ARMA9", 0, SPR_ARMA, FF_TRANS40| 8, 2, {NULL}, 0, 0, S_ARMA10, 0},
+	{"S_ARMA10", 0, SPR_ARMA, FF_TRANS40| 9, 2, {NULL}, 0, 0, S_ARMA11, 0},
+	{"S_ARMA11", 0, SPR_ARMA, FF_TRANS40|10, 2, {NULL}, 0, 0, S_ARMA12, 0},
+	{"S_ARMA12", 0, SPR_ARMA, FF_TRANS40|11, 2, {NULL}, 0, 0, S_ARMA13, 0},
+	{"S_ARMA13", 0, SPR_ARMA, FF_TRANS40|12, 2, {NULL}, 0, 0, S_ARMA14, 0},
+	{"S_ARMA14", 0, SPR_ARMA, FF_TRANS40|13, 2, {NULL}, 0, 0, S_ARMA15, 0},
+	{"S_ARMA15", 0, SPR_ARMA, FF_TRANS40|14, 2, {NULL}, 0, 0, S_ARMA16, 0},
+	{"S_ARMA16", 0, SPR_ARMA, FF_TRANS40|15, 2, {NULL}, 0, 0, S_ARMA1 , 0},
+
+	{"S_ARMF1", 0, SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF2 , 0},
+	{"S_ARMF2", 0, SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF3 , 0},
+	{"S_ARMF3", 0, SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF4 , 0},
+	{"S_ARMF4", 0, SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF5 , 0},
+	{"S_ARMF5", 0, SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF6 , 0},
+	{"S_ARMF6", 0, SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF7 , 0},
+	{"S_ARMF7", 0, SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF8 , 0},
+	{"S_ARMF8", 0, SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF9 , 0},
+	{"S_ARMF9", 0, SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF10, 0},
+	{"S_ARMF10", 0, SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF11, 0},
+	{"S_ARMF11", 0, SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF12, 0},
+	{"S_ARMF12", 0, SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF13, 0},
+	{"S_ARMF13", 0, SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF14, 0},
+	{"S_ARMF14", 0, SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF15, 0},
+	{"S_ARMF15", 0, SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF16, 0},
+	{"S_ARMF16", 0, SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF17, 0},
+	{"S_ARMF17", 0, SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF18, 0},
+	{"S_ARMF18", 0, SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF19, 0},
+	{"S_ARMF19", 0, SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF20, 0},
+	{"S_ARMF20", 0, SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF21, 0},
+	{"S_ARMF21", 0, SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF22, 0},
+	{"S_ARMF22", 0, SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF23, 0},
+	{"S_ARMF23", 0, SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF24, 0},
+	{"S_ARMF24", 0, SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF25, 0},
+	{"S_ARMF25", 0, SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF26, 0},
+	{"S_ARMF26", 0, SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF27, 0},
+	{"S_ARMF27", 0, SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF28, 0},
+	{"S_ARMF28", 0, SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF29, 0},
+	{"S_ARMF29", 0, SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF30, 0},
+	{"S_ARMF30", 0, SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF31, 0},
+	{"S_ARMF31", 0, SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF32, 0},
+	{"S_ARMF32", 0, SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF1 , 0},
+
+	{"S_ARMB1", 0, SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB2 , 0},
+	{"S_ARMB2", 0, SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB3 , 0},
+	{"S_ARMB3", 0, SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB4 , 0},
+	{"S_ARMB4", 0, SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB5 , 0},
+	{"S_ARMB5", 0, SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB6 , 0},
+	{"S_ARMB6", 0, SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB7 , 0},
+	{"S_ARMB7", 0, SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB8 , 0},
+	{"S_ARMB8", 0, SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB9 , 0},
+	{"S_ARMB9", 0, SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB10, 0},
+	{"S_ARMB10", 0, SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB11, 0},
+	{"S_ARMB11", 0, SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB12, 0},
+	{"S_ARMB12", 0, SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB13, 0},
+	{"S_ARMB13", 0, SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB14, 0},
+	{"S_ARMB14", 0, SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB15, 0},
+	{"S_ARMB15", 0, SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB16, 0},
+	{"S_ARMB16", 0, SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB17, 0},
+	{"S_ARMB17", 0, SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB18, 0},
+	{"S_ARMB18", 0, SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB19, 0},
+	{"S_ARMB19", 0, SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB20, 0},
+	{"S_ARMB20", 0, SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB21, 0},
+	{"S_ARMB21", 0, SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB22, 0},
+	{"S_ARMB22", 0, SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB23, 0},
+	{"S_ARMB23", 0, SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB24, 0},
+	{"S_ARMB24", 0, SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB25, 0},
+	{"S_ARMB25", 0, SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB26, 0},
+	{"S_ARMB26", 0, SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB27, 0},
+	{"S_ARMB27", 0, SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB28, 0},
+	{"S_ARMB28", 0, SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB29, 0},
+	{"S_ARMB29", 0, SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB30, 0},
+	{"S_ARMB30", 0, SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB31, 0},
+	{"S_ARMB31", 0, SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB32, 0},
+	{"S_ARMB32", 0, SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB1 , 0},
+
+	{"S_WIND1", 0, SPR_WIND, FF_TRANS70  , 2, {NULL}, 0, 0, S_WIND2, 0},
+	{"S_WIND2", 0, SPR_WIND, FF_TRANS70|1, 2, {NULL}, 0, 0, S_WIND3, 0},
+	{"S_WIND3", 0, SPR_WIND, FF_TRANS70|2, 2, {NULL}, 0, 0, S_WIND4, 0},
+	{"S_WIND4", 0, SPR_WIND, FF_TRANS70|3, 2, {NULL}, 0, 0, S_WIND5, 0},
+	{"S_WIND5", 0, SPR_WIND, FF_TRANS70|4, 2, {NULL}, 0, 0, S_WIND6, 0},
+	{"S_WIND6", 0, SPR_WIND, FF_TRANS70|5, 2, {NULL}, 0, 0, S_WIND7, 0},
+	{"S_WIND7", 0, SPR_WIND, FF_TRANS70|6, 2, {NULL}, 0, 0, S_WIND8, 0},
+	{"S_WIND8", 0, SPR_WIND, FF_TRANS70|7, 2, {NULL}, 0, 0, S_WIND1, 0},
+
+	{"S_MAGN1", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40   , 2, {NULL}, 0, 0, S_MAGN2 , 0},
+	{"S_MAGN2", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 1, 2, {NULL}, 0, 0, S_MAGN3 , 0},
+	{"S_MAGN3", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 2, 2, {NULL}, 0, 0, S_MAGN4 , 0},
+	{"S_MAGN4", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 3, 2, {NULL}, 0, 0, S_MAGN5 , 0},
+	{"S_MAGN5", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 4, 2, {NULL}, 0, 0, S_MAGN6 , 0},
+	{"S_MAGN6", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 5, 2, {NULL}, 0, 0, S_MAGN7 , 0},
+	{"S_MAGN7", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 6, 2, {NULL}, 0, 0, S_MAGN8 , 0},
+	{"S_MAGN8", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 7, 2, {NULL}, 0, 0, S_MAGN9 , 0},
+	{"S_MAGN9", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 8, 2, {NULL}, 0, 0, S_MAGN10, 0},
+	{"S_MAGN10", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_MAGN11, 0},
+	{"S_MAGN11", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_MAGN12, 0},
+	{"S_MAGN12", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_MAGN1 , 0},
+
+	{"S_MAGN13", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS10|12, 2, {NULL}, 0, 0, S_MAGN1 , 0},
+
+	{"S_FORC1", 0, SPR_FORC, FF_TRANS50  , 3, {NULL}, 0, 0, S_FORC2 , 0},
+	{"S_FORC2", 0, SPR_FORC, FF_TRANS50|1, 3, {NULL}, 0, 0, S_FORC3 , 0},
+	{"S_FORC3", 0, SPR_FORC, FF_TRANS50|2, 3, {NULL}, 0, 0, S_FORC4 , 0},
+	{"S_FORC4", 0, SPR_FORC, FF_TRANS50|3, 3, {NULL}, 0, 0, S_FORC5 , 0},
+	{"S_FORC5", 0, SPR_FORC, FF_TRANS50|4, 3, {NULL}, 0, 0, S_FORC6 , 0},
+	{"S_FORC6", 0, SPR_FORC, FF_TRANS50|5, 3, {NULL}, 0, 0, S_FORC7 , 0},
+	{"S_FORC7", 0, SPR_FORC, FF_TRANS50|6, 3, {NULL}, 0, 0, S_FORC8 , 0},
+	{"S_FORC8", 0, SPR_FORC, FF_TRANS50|7, 3, {NULL}, 0, 0, S_FORC9 , 0},
+	{"S_FORC9", 0, SPR_FORC, FF_TRANS50|8, 3, {NULL}, 0, 0, S_FORC10, 0},
+	{"S_FORC10", 0, SPR_FORC, FF_TRANS50|9, 3, {NULL}, 0, 0, S_FORC1 , 0},
+
+	{"S_FORC11", 0, SPR_FORC, FF_TRANS50|10, 3, {NULL}, 0, 0, S_FORC12, 0},
+	{"S_FORC12", 0, SPR_FORC, FF_TRANS50|11, 3, {NULL}, 0, 0, S_FORC13, 0},
+	{"S_FORC13", 0, SPR_FORC, FF_TRANS50|12, 3, {NULL}, 0, 0, S_FORC14, 0},
+	{"S_FORC14", 0, SPR_FORC, FF_TRANS50|13, 3, {NULL}, 0, 0, S_FORC15, 0},
+	{"S_FORC15", 0, SPR_FORC, FF_TRANS50|14, 3, {NULL}, 0, 0, S_FORC16, 0},
+	{"S_FORC16", 0, SPR_FORC, FF_TRANS50|15, 3, {NULL}, 0, 0, S_FORC17, 0},
+	{"S_FORC17", 0, SPR_FORC, FF_TRANS50|16, 3, {NULL}, 0, 0, S_FORC18, 0},
+	{"S_FORC18", 0, SPR_FORC, FF_TRANS50|17, 3, {NULL}, 0, 0, S_FORC19, 0},
+	{"S_FORC19", 0, SPR_FORC, FF_TRANS50|18, 3, {NULL}, 0, 0, S_FORC20, 0},
+	{"S_FORC20", 0, SPR_FORC, FF_TRANS50|19, 3, {NULL}, 0, 0, S_FORC11, 0},
+
+	{"S_FORC21", 0, SPR_FORC, FF_TRANS50|20, -1, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_ELEM1", 0, SPR_ELEM, FF_TRANS50   , 4, {NULL}, 0, 0, S_ELEM2 , 0},
+	{"S_ELEM2", 0, SPR_ELEM, FF_TRANS50| 1, 4, {NULL}, 0, 0, S_ELEM3 , 0},
+	{"S_ELEM3", 0, SPR_ELEM, FF_TRANS50| 2, 4, {NULL}, 0, 0, S_ELEM4 , 0},
+	{"S_ELEM4", 0, SPR_ELEM, FF_TRANS50| 3, 4, {NULL}, 0, 0, S_ELEM5 , 0},
+	{"S_ELEM5", 0, SPR_ELEM, FF_TRANS50| 4, 4, {NULL}, 0, 0, S_ELEM6 , 0},
+	{"S_ELEM6", 0, SPR_ELEM, FF_TRANS50| 5, 4, {NULL}, 0, 0, S_ELEM7 , 0},
+	{"S_ELEM7", 0, SPR_ELEM, FF_TRANS50| 6, 4, {NULL}, 0, 0, S_ELEM8 , 0},
+	{"S_ELEM8", 0, SPR_ELEM, FF_TRANS50| 7, 4, {NULL}, 0, 0, S_ELEM9 , 0},
+	{"S_ELEM9", 0, SPR_ELEM, FF_TRANS50| 8, 4, {NULL}, 0, 0, S_ELEM10, 0},
+	{"S_ELEM10", 0, SPR_ELEM, FF_TRANS50| 9, 4, {NULL}, 0, 0, S_ELEM11, 0},
+	{"S_ELEM11", 0, SPR_ELEM, FF_TRANS50|10, 4, {NULL}, 0, 0, S_ELEM12, 0},
+	{"S_ELEM12", 0, SPR_ELEM, FF_TRANS50|11, 4, {NULL}, 0, 0, S_ELEM1 , 0},
+
+	{"S_ELEM13", 0, SPR_NULL,             0, 1, {NULL}, 0, 0, S_ELEM14, 0},
+	{"S_ELEM14", 0, SPR_ELEM, FF_TRANS50|11, 1, {NULL}, 0, 0, S_ELEM1 , 0},
+
+	{"S_ELEMF1", 0, SPR_ELEM, FF_FULLBRIGHT|12, 3, {NULL}, 0, 0, S_ELEMF2 , 0},
+	{"S_ELEMF2", 0, SPR_ELEM, FF_FULLBRIGHT|13, 3, {NULL}, 0, 0, S_ELEMF3 , 0},
+	{"S_ELEMF3", 0, SPR_ELEM, FF_FULLBRIGHT|14, 3, {NULL}, 0, 0, S_ELEMF4 , 0},
+	{"S_ELEMF4", 0, SPR_ELEM, FF_FULLBRIGHT|15, 3, {NULL}, 0, 0, S_ELEMF5 , 0},
+	{"S_ELEMF5", 0, SPR_ELEM, FF_FULLBRIGHT|16, 3, {NULL}, 0, 0, S_ELEMF6 , 0},
+	{"S_ELEMF6", 0, SPR_ELEM, FF_FULLBRIGHT|17, 3, {NULL}, 0, 0, S_ELEMF7 , 0},
+	{"S_ELEMF7", 0, SPR_ELEM, FF_FULLBRIGHT|18, 3, {NULL}, 0, 0, S_ELEMF8 , 0},
+	{"S_ELEMF8", 0, SPR_ELEM, FF_FULLBRIGHT|19, 3, {NULL}, 0, 0, S_ELEMF1 , 0},
+
+	{"S_ELEMF9", 0, SPR_ELEM, FF_FULLBRIGHT|20, 1, {NULL}, 0, 0, S_ELEMF10, 0},
+	{"S_ELEMF10", 0, SPR_NULL, 0,                1, {NULL}, 0, 0, S_ELEMF1 , 0},
+
+	{"S_PITY1", 0, SPR_PITY, FF_TRANS30   , 2, {NULL}, 0, 0, S_PITY2, 0},
+	{"S_PITY2", 0, SPR_PITY, FF_TRANS30| 1, 2, {NULL}, 0, 0, S_PITY3, 0},
+	{"S_PITY3", 0, SPR_PITY, FF_TRANS30| 2, 2, {NULL}, 0, 0, S_PITY4, 0},
+	{"S_PITY4", 0, SPR_PITY, FF_TRANS30| 3, 2, {NULL}, 0, 0, S_PITY5, 0},
+	{"S_PITY5", 0, SPR_PITY, FF_TRANS30| 4, 2, {NULL}, 0, 0, S_PITY6, 0},
+	{"S_PITY6", 0, SPR_PITY, FF_TRANS30| 5, 2, {NULL}, 0, 0, S_PITY7, 0},
+	{"S_PITY7", 0, SPR_PITY, FF_TRANS30| 6, 2, {NULL}, 0, 0, S_PITY8, 0},
+	{"S_PITY8", 0, SPR_PITY, FF_TRANS30| 7, 2, {NULL}, 0, 0, S_PITY9, 0},
+	{"S_PITY9", 0, SPR_PITY, FF_TRANS30| 8, 2, {NULL}, 0, 0, S_PITY10, 0},
+	{"S_PITY10", 0, SPR_PITY, FF_TRANS30| 9, 2, {NULL}, 0, 0, S_PITY11, 0},
+	{"S_PITY11", 0, SPR_PITY, FF_TRANS30|10, 2, {NULL}, 0, 0, S_PITY12, 0},
+	{"S_PITY12", 0, SPR_PITY, FF_TRANS30|11, 2, {NULL}, 0, 0, S_PITY1, 0},
+
+	{"S_FIRS1", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40  , 2, {NULL}, 0, 0, S_FIRS2, 0},
+	{"S_FIRS2", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|1, 2, {NULL}, 0, 0, S_FIRS3, 0},
+	{"S_FIRS3", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|2, 2, {NULL}, 0, 0, S_FIRS4, 0},
+	{"S_FIRS4", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|3, 2, {NULL}, 0, 0, S_FIRS5, 0},
+	{"S_FIRS5", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|4, 2, {NULL}, 0, 0, S_FIRS6, 0},
+	{"S_FIRS6", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|5, 2, {NULL}, 0, 0, S_FIRS7, 0},
+	{"S_FIRS7", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|6, 2, {NULL}, 0, 0, S_FIRS8, 0},
+	{"S_FIRS8", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|7, 2, {NULL}, 0, 0, S_FIRS9, 0},
+	{"S_FIRS9", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|8, 2, {NULL}, 0, 0, S_FIRS1, 0},
+
+	{"S_FIRS10", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|18, 1, {NULL}, 0, 0, S_FIRS11, 0},
+	{"S_FIRS11", 0, SPR_NULL, 0,                           1, {NULL}, 0, 0, S_FIRS1 , 0},
+
+	{"S_FIRSB1", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_FIRSB2, 0},
+	{"S_FIRSB2", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_FIRSB3, 0},
+	{"S_FIRSB3", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_FIRSB4, 0},
+	{"S_FIRSB4", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|12, 2, {NULL}, 0, 0, S_FIRSB5, 0},
+	{"S_FIRSB5", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|13, 2, {NULL}, 0, 0, S_FIRSB6, 0},
+	{"S_FIRSB6", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|14, 2, {NULL}, 0, 0, S_FIRSB7, 0},
+	{"S_FIRSB7", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|15, 2, {NULL}, 0, 0, S_FIRSB8, 0},
+	{"S_FIRSB8", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|16, 2, {NULL}, 0, 0, S_FIRSB9, 0},
+	{"S_FIRSB9", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|17, 2, {NULL}, 0, 0, S_FIRSB1, 0},
+
+	{"S_FIRSB10", 0, SPR_NULL, 0,                           2, {NULL}, 0, 0, S_FIRSB1 , 0},
+
+	{"S_BUBS1", 0, SPR_BUBS, FF_TRANS30  , 3, {NULL}, 0, 0, S_BUBS2, 0},
+	{"S_BUBS2", 0, SPR_BUBS, FF_TRANS30|1, 3, {NULL}, 0, 0, S_BUBS3, 0},
+	{"S_BUBS3", 0, SPR_BUBS, FF_TRANS30|2, 3, {NULL}, 0, 0, S_BUBS4, 0},
+	{"S_BUBS4", 0, SPR_BUBS, FF_TRANS30|3, 3, {NULL}, 0, 0, S_BUBS5, 0},
+	{"S_BUBS5", 0, SPR_BUBS, FF_TRANS30|4, 3, {NULL}, 0, 0, S_BUBS6, 0},
+	{"S_BUBS6", 0, SPR_BUBS, FF_TRANS30|5, 3, {NULL}, 0, 0, S_BUBS7, 0},
+	{"S_BUBS7", 0, SPR_BUBS, FF_TRANS30|6, 3, {NULL}, 0, 0, S_BUBS8, 0},
+	{"S_BUBS8", 0, SPR_BUBS, FF_TRANS30|7, 3, {NULL}, 0, 0, S_BUBS9, 0},
+	{"S_BUBS9", 0, SPR_BUBS, FF_TRANS30|8, 3, {NULL}, 0, 0, S_BUBS1, 0},
+
+	{"S_BUBS10", 0, SPR_NULL, 0,   3, {NULL}, 0, 0, S_BUBS1, 0},
+	{"S_BUBS11", 0, SPR_NULL, 0, 4*3, {NULL}, 0, 0, S_BUBS1, 0},
+
+	{"S_BUBSB1", 0, SPR_BUBS, FF_TRANS30| 9, 3, {NULL}, 0, 0, S_BUBSB2, 0},
+	{"S_BUBSB2", 0, SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB3, 0},
+	{"S_BUBSB3", 0, SPR_BUBS, FF_TRANS30|11, 3, {NULL}, 0, 0, S_BUBSB4, 0},
+	{"S_BUBSB4", 0, SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB1, 0},
+
+	{"S_BUBSB5", 0, SPR_BUBS, FF_TRANS30|12, 3, {NULL}, 0, 0, S_BUBSB3, 0},
+	{"S_BUBSB6", 0, SPR_BUBS, FF_TRANS30|13, 3, {NULL}, 0, 0, S_BUBSB5, 0},
+
+	{"S_ZAPS1", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,   2, {NULL}, 0, 0, S_ZAPS2 , 0},
+	{"S_ZAPS2", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,   2, {NULL}, 0, 0, S_ZAPS3 , 0},
+	{"S_ZAPS3", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,   2, {NULL}, 0, 0, S_ZAPS4 , 0},
+	{"S_ZAPS4", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,   2, {NULL}, 0, 0, S_ZAPS5 , 0},
+	{"S_ZAPS5", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,   2, {NULL}, 0, 0, S_ZAPS6 , 0},
+	{"S_ZAPS6", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,   2, {NULL}, 0, 0, S_ZAPS7 , 0},
+	{"S_ZAPS7", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,   2, {NULL}, 0, 0, S_ZAPS8 , 0},
+	{"S_ZAPS8", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,   2, {NULL}, 0, 0, S_ZAPS9 , 0},
+	{"S_ZAPS9", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,   2, {NULL}, 0, 0, S_ZAPS10, 0},
+	{"S_ZAPS10", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS11, 0},
+	{"S_ZAPS11", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS12, 0},
+	{"S_ZAPS12", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS13, 0},
+	{"S_ZAPS13", 0, SPR_NULL,                           0, 9*2, {NULL}, 0, 0, S_ZAPS14, 0},
+	{"S_ZAPS14", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS15, 0},
+	{"S_ZAPS15", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS16, 0},
+	{"S_ZAPS16", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS1 , 0},
+
+	{"S_ZAPSB1", 0, SPR_NULL,                           0, 12*2, {NULL}, 0, 0, S_ZAPSB2 , 0},
+	{"S_ZAPSB2", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,    2, {NULL}, 0, 0, S_ZAPSB3 , 0},
+	{"S_ZAPSB3", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,    2, {NULL}, 0, 0, S_ZAPSB4 , 0},
+	{"S_ZAPSB4", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,    2, {NULL}, 0, 0, S_ZAPSB5 , 0},
+	{"S_ZAPSB5", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,    2, {NULL}, 0, 0, S_ZAPSB6 , 0},
+	{"S_ZAPSB6", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,    2, {NULL}, 0, 0, S_ZAPSB7 , 0},
+	{"S_ZAPSB7", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,    2, {NULL}, 0, 0, S_ZAPSB8 , 0},
+	{"S_ZAPSB8", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,    2, {NULL}, 0, 0, S_ZAPSB9 , 0},
+	{"S_ZAPSB9", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,    2, {NULL}, 0, 0, S_ZAPSB10, 0},
+	{"S_ZAPSB10", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,    2, {NULL}, 0, 0, S_ZAPSB11, 0},
+	{"S_ZAPSB11", 0, SPR_NULL,                           0, 15*2, {NULL}, 0, 0, S_ZAPSB2 , 0},
 
 	// Thunder spark
-	{SPR_SSPK, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0},   // S_THUNDERCOIN_SPARK
+	{"S_THUNDERCOIN_SPARK", 0, SPR_SSPK, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0},
 
 	// Invincibility Sparkles
-	{SPR_IVSP, FF_ANIMATE|FF_FULLBRIGHT, 32, {NULL}, 31, 1, S_NULL, 0},   // S_IVSP
+	{"S_IVSP", 0, SPR_IVSP, FF_ANIMATE|FF_FULLBRIGHT, 32, {NULL}, 31, 1, S_NULL, 0},
 
 	// Super Sonic Spark
-	{SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK2, 0}, // S_SSPK1
-	{SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK3, 0}, // S_SSPK2
-	{SPR_SSPK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK4, 0}, // S_SSPK3
-	{SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK5, 0}, // S_SSPK4
-	{SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},  // S_SSPK5
+	{"S_SSPK1", 0, SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK2, 0},
+	{"S_SSPK2", 0, SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK3, 0},
+	{"S_SSPK3", 0, SPR_SSPK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK4, 0},
+	{"S_SSPK4", 0, SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK5, 0},
+	{"S_SSPK5", 0, SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
 
 	// Flicky-sized bubble
-	{SPR_FBUB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FLICKY_BUBBLE
+	{"S_FLICKY_BUBBLE", 0, SPR_FBUB, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Bluebird
-	{SPR_FL01, 0, 2, {A_FlickyCheck}, S_FLICKY_01_FLAP1, S_FLICKY_01_FLAP1, S_FLICKY_01_OUT, 0},   // S_FLICKY_01_OUT
-	{SPR_FL01, 1, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP2, 0}, // S_FLICKY_01_FLAP1
-	{SPR_FL01, 2, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP3, 0}, // S_FLICKY_01_FLAP2
-	{SPR_FL01, 3, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP1, 0}, // S_FLICKY_01_FLAP3
-	{SPR_FL01, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0},                                         // S_FLICKY_01_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_01, 384*FRACUNIT, S_FLICKY_01_CENTER, 0},        // S_FLICKY_01_CENTER
+	{"S_FLICKY_01_OUT", 0, SPR_FL01, 0, 2, {A_FlickyCheck}, S_FLICKY_01_FLAP1, S_FLICKY_01_FLAP1, S_FLICKY_01_OUT, 0},
+	{"S_FLICKY_01_FLAP1", 0, SPR_FL01, 1, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP2, 0},
+	{"S_FLICKY_01_FLAP2", 0, SPR_FL01, 2, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP3, 0},
+	{"S_FLICKY_01_FLAP3", 0, SPR_FL01, 3, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP1, 0},
+	{"S_FLICKY_01_STAND", 0, SPR_FL01, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0},
+	{"S_FLICKY_01_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_01, 384*FRACUNIT, S_FLICKY_01_CENTER, 0},
 
 	// Rabbit
-	{SPR_FL02, 0, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_OUT, 0},  // S_FLICKY_02_OUT
-	{SPR_FL02, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_02_HOP, 0},  // S_FLICKY_02_AIM
-	{SPR_FL02, 1, 1, {A_FlickyHop},        6*FRACUNIT,       4*FRACUNIT, S_FLICKY_02_UP, 0},   // S_FLICKY_02_HOP
-	{SPR_FL02, 2, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, S_FLICKY_02_DOWN, S_FLICKY_02_UP, 0},   // S_FLICKY_02_UP
-	{SPR_FL02, 3, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_DOWN, 0}, // S_FLICKY_02_DOWN
-	{SPR_FL02, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_02_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_02, 384*FRACUNIT, S_FLICKY_02_CENTER, 0},        // S_FLICKY_02_CENTER
+	{"S_FLICKY_02_OUT", 0, SPR_FL02, 0, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_OUT, 0},
+	{"S_FLICKY_02_AIM", 0, SPR_FL02, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_02_HOP, 0},
+	{"S_FLICKY_02_HOP", 0, SPR_FL02, 1, 1, {A_FlickyHop},        6*FRACUNIT,       4*FRACUNIT, S_FLICKY_02_UP, 0},
+	{"S_FLICKY_02_UP", 0, SPR_FL02, 2, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, S_FLICKY_02_DOWN, S_FLICKY_02_UP, 0},
+	{"S_FLICKY_02_DOWN", 0, SPR_FL02, 3, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_DOWN, 0},
+	{"S_FLICKY_02_STAND", 0, SPR_FL02, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_02_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_02, 384*FRACUNIT, S_FLICKY_02_CENTER, 0},
 
 	// Chicken
-	{SPR_FL03, 0, 2, {A_FlickyCheck},   S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT, 0},   // S_FLICKY_03_OUT
-	{SPR_FL03, 1, 1, {A_FlickyAim},            ANGLE_45,       32*FRACUNIT, S_FLICKY_03_HOP, 0},   // S_FLICKY_03_AIM
-	{SPR_FL03, 1, 1, {A_FlickyHop},          7*FRACUNIT,        2*FRACUNIT, S_FLICKY_03_UP, 0},    // S_FLICKY_03_HOP
-	{SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP, 0},    // S_FLICKY_03_UP
-	{SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP2, 0}, // S_FLICKY_03_FLAP1
-	{SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP1, 0}, // S_FLICKY_03_FLAP2
-	{SPR_FL03, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_03_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_03, 384*FRACUNIT, S_FLICKY_03_CENTER, 0},        // S_FLICKY_03_CENTER
+	{"S_FLICKY_03_OUT", 0, SPR_FL03, 0, 2, {A_FlickyCheck},   S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT, 0},
+	{"S_FLICKY_03_AIM", 0, SPR_FL03, 1, 1, {A_FlickyAim},            ANGLE_45,       32*FRACUNIT, S_FLICKY_03_HOP, 0},
+	{"S_FLICKY_03_HOP", 0, SPR_FL03, 1, 1, {A_FlickyHop},          7*FRACUNIT,        2*FRACUNIT, S_FLICKY_03_UP, 0},
+	{"S_FLICKY_03_UP", 0, SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP, 0},
+	{"S_FLICKY_03_FLAP1", 0, SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP2, 0},
+	{"S_FLICKY_03_FLAP2", 0, SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP1, 0},
+	{"S_FLICKY_03_STAND", 0, SPR_FL03, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_03_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_03, 384*FRACUNIT, S_FLICKY_03_CENTER, 0},
 
 	// Seal
-	{SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_OUT, 0},   // S_FLICKY_04_OUT
-	{SPR_FL04, 1, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_04_HOP, 0},   // S_FLICKY_04_AIM
-	{SPR_FL04, 1, 1, {A_FlickyHop},        3*FRACUNIT,        2*FRACUNIT, S_FLICKY_04_UP, 0},    // S_FLICKY_04_HOP
-	{SPR_FL04, 2, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,  S_FLICKY_04_DOWN, S_FLICKY_04_UP, 0},    // S_FLICKY_04_UP
-	{SPR_FL04, 3, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_DOWN, 0},  // S_FLICKY_04_DOWN
-	{SPR_FL04, 3, 4, {A_FlickyFly},        2*FRACUNIT,       48*FRACUNIT, S_FLICKY_04_SWIM2, 0}, // S_FLICKY_04_SWIM1
-	{SPR_FL04, 4, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM3, 0}, // S_FLICKY_04_SWIM2
-	{SPR_FL04, 3, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM4, 0}, // S_FLICKY_04_SWIM3
-	{SPR_FL04, 5, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM1, 0}, // S_FLICKY_04_SWIM4
-	{SPR_FL04, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_04_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_04, 384*FRACUNIT, S_FLICKY_04_CENTER, 0},        // S_FLICKY_04_CENTER
+	{"S_FLICKY_04_OUT", 0, SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_OUT, 0},
+	{"S_FLICKY_04_AIM", 0, SPR_FL04, 1, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_04_HOP, 0},
+	{"S_FLICKY_04_HOP", 0, SPR_FL04, 1, 1, {A_FlickyHop},        3*FRACUNIT,        2*FRACUNIT, S_FLICKY_04_UP, 0},
+	{"S_FLICKY_04_UP", 0, SPR_FL04, 2, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,  S_FLICKY_04_DOWN, S_FLICKY_04_UP, 0},
+	{"S_FLICKY_04_DOWN", 0, SPR_FL04, 3, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_DOWN, 0},
+	{"S_FLICKY_04_SWIM1", 0, SPR_FL04, 3, 4, {A_FlickyFly},        2*FRACUNIT,       48*FRACUNIT, S_FLICKY_04_SWIM2, 0},
+	{"S_FLICKY_04_SWIM2", 0, SPR_FL04, 4, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM3, 0},
+	{"S_FLICKY_04_SWIM3", 0, SPR_FL04, 3, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM4, 0},
+	{"S_FLICKY_04_SWIM4", 0, SPR_FL04, 5, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM1, 0},
+	{"S_FLICKY_04_STAND", 0, SPR_FL04, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_04_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_04, 384*FRACUNIT, S_FLICKY_04_CENTER, 0},
 
 	// Pig
-	{SPR_FL05, 0, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_OUT, 0},  // S_FLICKY_05_OUT
-	{SPR_FL05, 1, 1, {A_FlickyAim},             ANG20,      32*FRACUNIT, S_FLICKY_05_HOP, 0},  // S_FLICKY_05_AIM
-	{SPR_FL05, 1, 1, {A_FlickyHop},        4*FRACUNIT,       3*FRACUNIT, S_FLICKY_05_UP, 0},   // S_FLICKY_05_HOP
-	{SPR_FL05, 2, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, S_FLICKY_05_DOWN, S_FLICKY_05_UP, 0},   // S_FLICKY_05_UP
-	{SPR_FL05, 3, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_DOWN, 0}, // S_FLICKY_05_DOWN
-	{SPR_FL05, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_05_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_05, 384*FRACUNIT, S_FLICKY_05_CENTER, 0},        // S_FLICKY_05_CENTER
+	{"S_FLICKY_05_OUT", 0, SPR_FL05, 0, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_OUT, 0},
+	{"S_FLICKY_05_AIM", 0, SPR_FL05, 1, 1, {A_FlickyAim},             ANG20,      32*FRACUNIT, S_FLICKY_05_HOP, 0},
+	{"S_FLICKY_05_HOP", 0, SPR_FL05, 1, 1, {A_FlickyHop},        4*FRACUNIT,       3*FRACUNIT, S_FLICKY_05_UP, 0},
+	{"S_FLICKY_05_UP", 0, SPR_FL05, 2, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, S_FLICKY_05_DOWN, S_FLICKY_05_UP, 0},
+	{"S_FLICKY_05_DOWN", 0, SPR_FL05, 3, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_DOWN, 0},
+	{"S_FLICKY_05_STAND", 0, SPR_FL05, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_05_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_05, 384*FRACUNIT, S_FLICKY_05_CENTER, 0},
 
 	// Chipmunk
-	{SPR_FL06, 0, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_OUT, 0},  // S_FLICKY_06_OUT
-	{SPR_FL06, 1, 1, {A_FlickyAim},          ANGLE_90,      32*FRACUNIT, S_FLICKY_06_HOP, 0},  // S_FLICKY_06_AIM
-	{SPR_FL06, 1, 1, {A_FlickyHop},        5*FRACUNIT,       6*FRACUNIT, S_FLICKY_06_UP, 0},   // S_FLICKY_06_HOP
-	{SPR_FL06, 2, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, S_FLICKY_06_DOWN, S_FLICKY_06_UP, 0},   // S_FLICKY_06_UP
-	{SPR_FL06, 3, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_DOWN, 0}, // S_FLICKY_06_DOWN
-	{SPR_FL06, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_06_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_06, 384*FRACUNIT, S_FLICKY_06_CENTER, 0},        // S_FLICKY_06_CENTER
+	{"S_FLICKY_06_OUT", 0, SPR_FL06, 0, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_OUT, 0},
+	{"S_FLICKY_06_AIM", 0, SPR_FL06, 1, 1, {A_FlickyAim},          ANGLE_90,      32*FRACUNIT, S_FLICKY_06_HOP, 0},
+	{"S_FLICKY_06_HOP", 0, SPR_FL06, 1, 1, {A_FlickyHop},        5*FRACUNIT,       6*FRACUNIT, S_FLICKY_06_UP, 0},
+	{"S_FLICKY_06_UP", 0, SPR_FL06, 2, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, S_FLICKY_06_DOWN, S_FLICKY_06_UP, 0},
+	{"S_FLICKY_06_DOWN", 0, SPR_FL06, 3, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_DOWN, 0},
+	{"S_FLICKY_06_STAND", 0, SPR_FL06, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_06_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_06, 384*FRACUNIT, S_FLICKY_06_CENTER, 0},
 
 	// Penguin
-	{SPR_FL07, 0, 2, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_OUT, 0},   // S_FLICKY_07_OUT
-	{SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPL, 0},  // S_FLICKY_07_AIML
-	{SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPL, 0},   // S_FLICKY_07_HOPL
-	{SPR_FL07, 2, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, S_FLICKY_07_DOWNL, S_FLICKY_07_UPL, 0},   // S_FLICKY_07_UPL
-	{SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR,                 0, S_FLICKY_07_DOWNL, 0}, // S_FLICKY_07_DOWNL
-	{SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPR, 0},  // S_FLICKY_07_AIMR
-	{SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPR, 0},   // S_FLICKY_07_HOPR
-	{SPR_FL07, 3, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, S_FLICKY_07_DOWNR, S_FLICKY_07_UPR, 0},   // S_FLICKY_07_UPR
-	{SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_DOWNR, 0}, // S_FLICKY_07_DOWNR
-	{SPR_FL07, 4, 4, {A_FlickyFly},         3*FRACUNIT,       72*FRACUNIT, S_FLICKY_07_SWIM2, 0}, // S_FLICKY_07_SWIM1
-	{SPR_FL07, 5, 4, {A_FlickyCoast},         FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0}, // S_FLICKY_07_SWIM2
-	{SPR_FL07, 6, 4, {A_FlickyCoast},       2*FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0}, // S_FLICKY_07_SWIM3
-	{SPR_FL07, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_07_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_07, 384*FRACUNIT, S_FLICKY_07_CENTER, 0},        // S_FLICKY_07_CENTER
+	{"S_FLICKY_07_OUT", 0, SPR_FL07, 0, 2, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_OUT, 0},
+	{"S_FLICKY_07_AIML", 0, SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPL, 0},
+	{"S_FLICKY_07_HOPL", 0, SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPL, 0},
+	{"S_FLICKY_07_UPL", 0, SPR_FL07, 2, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, S_FLICKY_07_DOWNL, S_FLICKY_07_UPL, 0},
+	{"S_FLICKY_07_DOWNL", 0, SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR,                 0, S_FLICKY_07_DOWNL, 0},
+	{"S_FLICKY_07_AIMR", 0, SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPR, 0},
+	{"S_FLICKY_07_HOPR", 0, SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPR, 0},
+	{"S_FLICKY_07_UPR", 0, SPR_FL07, 3, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, S_FLICKY_07_DOWNR, S_FLICKY_07_UPR, 0},
+	{"S_FLICKY_07_DOWNR", 0, SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_DOWNR, 0},
+	{"S_FLICKY_07_SWIM1", 0, SPR_FL07, 4, 4, {A_FlickyFly},         3*FRACUNIT,       72*FRACUNIT, S_FLICKY_07_SWIM2, 0},
+	{"S_FLICKY_07_SWIM2", 0, SPR_FL07, 5, 4, {A_FlickyCoast},         FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0},
+	{"S_FLICKY_07_SWIM3", 0, SPR_FL07, 6, 4, {A_FlickyCoast},       2*FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0},
+	{"S_FLICKY_07_STAND", 0, SPR_FL07, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_07_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_07, 384*FRACUNIT, S_FLICKY_07_CENTER, 0},
 
 	// Fish
-	{SPR_FL08, 0, 2, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_OUT, 0},   // S_FLICKY_08_OUT
-	{SPR_FL08, 2, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_08_HOP, 0},   // S_FLICKY_08_AIM
-	{SPR_FL08, 2, 1, {A_FlickyFlounder},   2*FRACUNIT,        1*FRACUNIT, S_FLICKY_08_FLAP1, 0}, // S_FLICKY_08_HOP
-	{SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP2, 0}, // S_FLICKY_08_FLAP1
-	{SPR_FL08, 1, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP3, 0}, // S_FLICKY_08_FLAP2
-	{SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP4, 0}, // S_FLICKY_08_FLAP3
-	{SPR_FL08, 2, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP1, 0}, // S_FLICKY_08_FLAP4
-	{SPR_FL08, 0, 4, {A_FlickyFly},        3*FRACUNIT,       64*FRACUNIT, S_FLICKY_08_SWIM2, 0}, // S_FLICKY_08_SWIM1
-	{SPR_FL08, 1, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM3, 0}, // S_FLICKY_08_SWIM2
-	{SPR_FL08, 0, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0}, // S_FLICKY_08_SWIM3
-	{SPR_FL08, 2, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0}, // S_FLICKY_08_SWIM4
-	{SPR_FL08, FF_ANIMATE, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_08_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_08, 384*FRACUNIT, S_FLICKY_08_CENTER, 0},        // S_FLICKY_08_CENTER
+	{"S_FLICKY_08_OUT", 0, SPR_FL08, 0, 2, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_OUT, 0},
+	{"S_FLICKY_08_AIM", 0, SPR_FL08, 2, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_08_HOP, 0},
+	{"S_FLICKY_08_HOP", 0, SPR_FL08, 2, 1, {A_FlickyFlounder},   2*FRACUNIT,        1*FRACUNIT, S_FLICKY_08_FLAP1, 0},
+	{"S_FLICKY_08_FLAP1", 0, SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP2, 0},
+	{"S_FLICKY_08_FLAP2", 0, SPR_FL08, 1, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP3, 0},
+	{"S_FLICKY_08_FLAP3", 0, SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP4, 0},
+	{"S_FLICKY_08_FLAP4", 0, SPR_FL08, 2, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP1, 0},
+	{"S_FLICKY_08_SWIM1", 0, SPR_FL08, 0, 4, {A_FlickyFly},        3*FRACUNIT,       64*FRACUNIT, S_FLICKY_08_SWIM2, 0},
+	{"S_FLICKY_08_SWIM2", 0, SPR_FL08, 1, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM3, 0},
+	{"S_FLICKY_08_SWIM3", 0, SPR_FL08, 0, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0},
+	{"S_FLICKY_08_SWIM4", 0, SPR_FL08, 2, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0},
+	{"S_FLICKY_08_STAND", 0, SPR_FL08, FF_ANIMATE, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_08_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_08, 384*FRACUNIT, S_FLICKY_08_CENTER, 0},
 
 	// Ram
-	{SPR_FL09, 0, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_OUT, 0},  // S_FLICKY_09_OUT
-	{SPR_FL09, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_09_HOP, 0},  // S_FLICKY_09_AIM
-	{SPR_FL09, 1, 1, {A_FlickyHop},        7*FRACUNIT,       2*FRACUNIT, S_FLICKY_09_UP, 0},   // S_FLICKY_09_HOP
-	{SPR_FL09, 2, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, S_FLICKY_09_DOWN, S_FLICKY_09_UP, 0},   // S_FLICKY_09_UP
-	{SPR_FL09, 3, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_DOWN, 0}, // S_FLICKY_09_DOWN
-	{SPR_FL09, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_09_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_09, 384*FRACUNIT, S_FLICKY_09_CENTER, 0},        // S_FLICKY_09_CENTER
+	{"S_FLICKY_09_OUT", 0, SPR_FL09, 0, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_OUT, 0},
+	{"S_FLICKY_09_AIM", 0, SPR_FL09, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_09_HOP, 0},
+	{"S_FLICKY_09_HOP", 0, SPR_FL09, 1, 1, {A_FlickyHop},        7*FRACUNIT,       2*FRACUNIT, S_FLICKY_09_UP, 0},
+	{"S_FLICKY_09_UP", 0, SPR_FL09, 2, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, S_FLICKY_09_DOWN, S_FLICKY_09_UP, 0},
+	{"S_FLICKY_09_DOWN", 0, SPR_FL09, 3, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_DOWN, 0},
+	{"S_FLICKY_09_STAND", 0, SPR_FL09, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_09_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_09, 384*FRACUNIT, S_FLICKY_09_CENTER, 0},
 
 	// Puffin
-	{SPR_FL10, 0, 2, {A_FlickyCheck}, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP1, S_FLICKY_10_OUT, 0},   // S_FLICKY_10_OUT
-	{SPR_FL10, 1, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP2, 0}, // S_FLICKY_10_FLAP1
-	{SPR_FL10, 2, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP1, 0}, // S_FLICKY_10_FLAP2
-	{SPR_FL10, FF_ANIMATE|1, -1, {NULL}, 1, 3, S_NULL, 0}, // S_FLICKY_10_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_10, 384*FRACUNIT, S_FLICKY_10_CENTER, 0},        // S_FLICKY_10_CENTER
+	{"S_FLICKY_10_OUT", 0, SPR_FL10, 0, 2, {A_FlickyCheck}, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP1, S_FLICKY_10_OUT, 0},
+	{"S_FLICKY_10_FLAP1", 0, SPR_FL10, 1, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP2, 0},
+	{"S_FLICKY_10_FLAP2", 0, SPR_FL10, 2, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP1, 0},
+	{"S_FLICKY_10_STAND", 0, SPR_FL10, FF_ANIMATE|1, -1, {NULL}, 1, 3, S_NULL, 0},
+	{"S_FLICKY_10_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_10, 384*FRACUNIT, S_FLICKY_10_CENTER, 0},
 
 	// Cow
-	{SPR_FL11, 0, 2, {A_FlickyCheck}, S_FLICKY_11_AIM,           0, S_FLICKY_11_OUT, 0},  // S_FLICKY_11_OUT
-	{SPR_FL11, 1, 1, {A_FlickyAim},          ANGLE_90, 64*FRACUNIT, S_FLICKY_11_RUN1, 0}, // S_FLICKY_11_AIM
-	{SPR_FL11, 1, 3, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN2, 0}, // S_FLICKY_11_RUN1
-	{SPR_FL11, 2, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN3, 0}, // S_FLICKY_11_RUN2
-	{SPR_FL11, 3, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_AIM, 0},  // S_FLICKY_11_RUN3
-	{SPR_FL11, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_11_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_11, 384*FRACUNIT, S_FLICKY_11_CENTER, 0},        // S_FLICKY_11_CENTER
+	{"S_FLICKY_11_OUT", 0, SPR_FL11, 0, 2, {A_FlickyCheck}, S_FLICKY_11_AIM,           0, S_FLICKY_11_OUT, 0},
+	{"S_FLICKY_11_AIM", 0, SPR_FL11, 1, 1, {A_FlickyAim},          ANGLE_90, 64*FRACUNIT, S_FLICKY_11_RUN1, 0},
+	{"S_FLICKY_11_RUN1", 0, SPR_FL11, 1, 3, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN2, 0},
+	{"S_FLICKY_11_RUN2", 0, SPR_FL11, 2, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN3, 0},
+	{"S_FLICKY_11_RUN3", 0, SPR_FL11, 3, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_AIM, 0},
+	{"S_FLICKY_11_STAND", 0, SPR_FL11, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_11_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_11, 384*FRACUNIT, S_FLICKY_11_CENTER, 0},
 
 	// Rat
-	{SPR_FL12, 0, 2, {A_FlickyCheck}, S_FLICKY_12_AIM,           0, S_FLICKY_12_OUT, 0},  // S_FLICKY_12_OUT
-	{SPR_FL12, 1, 1, {A_FlickyAim},          ANGLE_90, 32*FRACUNIT, S_FLICKY_12_RUN1, 0}, // S_FLICKY_12_AIM
-	{SPR_FL12, 1, 2, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN2, 0}, // S_FLICKY_12_RUN1
-	{SPR_FL12, 2, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN3, 0}, // S_FLICKY_12_RUN2
-	{SPR_FL12, 3, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_AIM, 0},  // S_FLICKY_12_RUN3
-	{SPR_FL12, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_12_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_12, 384*FRACUNIT, S_FLICKY_12_CENTER, 0},        // S_FLICKY_12_CENTER
+	{"S_FLICKY_12_OUT", 0, SPR_FL12, 0, 2, {A_FlickyCheck}, S_FLICKY_12_AIM,           0, S_FLICKY_12_OUT, 0},
+	{"S_FLICKY_12_AIM", 0, SPR_FL12, 1, 1, {A_FlickyAim},          ANGLE_90, 32*FRACUNIT, S_FLICKY_12_RUN1, 0},
+	{"S_FLICKY_12_RUN1", 0, SPR_FL12, 1, 2, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN2, 0},
+	{"S_FLICKY_12_RUN2", 0, SPR_FL12, 2, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN3, 0},
+	{"S_FLICKY_12_RUN3", 0, SPR_FL12, 3, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_AIM, 0},
+	{"S_FLICKY_12_STAND", 0, SPR_FL12, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_12_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_12, 384*FRACUNIT, S_FLICKY_12_CENTER, 0},
 
 	// Bear
-	{SPR_FL13, 0, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_OUT, 0},  // S_FLICKY_13_OUT
-	{SPR_FL13, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_13_HOP, 0},  // S_FLICKY_13_AIM
-	{SPR_FL13, 1, 1, {A_FlickyHop},        5*FRACUNIT,       3*FRACUNIT, S_FLICKY_13_UP, 0},   // S_FLICKY_13_HOP
-	{SPR_FL13, 2, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, S_FLICKY_13_DOWN, S_FLICKY_13_UP, 0},   // S_FLICKY_13_UP
-	{SPR_FL13, 3, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_DOWN, 0}, // S_FLICKY_13_DOWN
-	{SPR_FL13, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_13_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_13, 384*FRACUNIT, S_FLICKY_13_CENTER, 0},        // S_FLICKY_13_CENTER
+	{"S_FLICKY_13_OUT", 0, SPR_FL13, 0, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_OUT, 0},
+	{"S_FLICKY_13_AIM", 0, SPR_FL13, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_13_HOP, 0},
+	{"S_FLICKY_13_HOP", 0, SPR_FL13, 1, 1, {A_FlickyHop},        5*FRACUNIT,       3*FRACUNIT, S_FLICKY_13_UP, 0},
+	{"S_FLICKY_13_UP", 0, SPR_FL13, 2, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, S_FLICKY_13_DOWN, S_FLICKY_13_UP, 0},
+	{"S_FLICKY_13_DOWN", 0, SPR_FL13, 3, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_DOWN, 0},
+	{"S_FLICKY_13_STAND", 0, SPR_FL13, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_13_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_13, 384*FRACUNIT, S_FLICKY_13_CENTER, 0},
 
 	// Dove
-	{SPR_FL14, 0, 2, {A_FlickyCheck}, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP1, S_FLICKY_14_OUT, 0},   // S_FLICKY_14_OUT
-	{SPR_FL14, 1, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP2, 0}, // S_FLICKY_14_FLAP1
-	{SPR_FL14, 2, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP3, 0}, // S_FLICKY_14_FLAP2
-	{SPR_FL14, 3, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP1, 0}, // S_FLICKY_14_FLAP3
-	{SPR_FL14, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, // S_FLICKY_14_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_14, 384*FRACUNIT, S_FLICKY_14_CENTER, 0},        // S_FLICKY_14_CENTER
+	{"S_FLICKY_14_OUT", 0, SPR_FL14, 0, 2, {A_FlickyCheck}, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP1, S_FLICKY_14_OUT, 0},
+	{"S_FLICKY_14_FLAP1", 0, SPR_FL14, 1, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP2, 0},
+	{"S_FLICKY_14_FLAP2", 0, SPR_FL14, 2, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP3, 0},
+	{"S_FLICKY_14_FLAP3", 0, SPR_FL14, 3, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP1, 0},
+	{"S_FLICKY_14_STAND", 0, SPR_FL14, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0},
+	{"S_FLICKY_14_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_14, 384*FRACUNIT, S_FLICKY_14_CENTER, 0},
 
 	// Cat
-	{SPR_FL15, 0, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_OUT, 0},  // S_FLICKY_15_OUT
-	{SPR_FL15, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_15_HOP, 0},  // S_FLICKY_15_AIM
-	{SPR_FL15, 1, 1, {A_FlickyFlounder},   2*FRACUNIT,       6*FRACUNIT, S_FLICKY_15_UP, 0},   // S_FLICKY_15_HOP
-	{SPR_FL15, 2, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, S_FLICKY_15_DOWN, S_FLICKY_15_UP, 0},   // S_FLICKY_15_UP
-	{SPR_FL15, 3, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_DOWN, 0}, // S_FLICKY_15_DOWN
-	{SPR_FL15, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_15_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_15, 384*FRACUNIT, S_FLICKY_15_CENTER, 0},        // S_FLICKY_15_CENTER
+	{"S_FLICKY_15_OUT", 0, SPR_FL15, 0, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_OUT, 0},
+	{"S_FLICKY_15_AIM", 0, SPR_FL15, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_15_HOP, 0},
+	{"S_FLICKY_15_HOP", 0, SPR_FL15, 1, 1, {A_FlickyFlounder},   2*FRACUNIT,       6*FRACUNIT, S_FLICKY_15_UP, 0},
+	{"S_FLICKY_15_UP", 0, SPR_FL15, 2, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, S_FLICKY_15_DOWN, S_FLICKY_15_UP, 0},
+	{"S_FLICKY_15_DOWN", 0, SPR_FL15, 3, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_DOWN, 0},
+	{"S_FLICKY_15_STAND", 0, SPR_FL15, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_FLICKY_15_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_15, 384*FRACUNIT, S_FLICKY_15_CENTER, 0},
 
 	// Canary
-	{SPR_FL16, 0, 2, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_OUT, 0},   // S_FLICKY_16_OUT
-	{SPR_FL16, 1, 3, {A_FlickyFly},                4*FRACUNIT, 8*FRACUNIT, S_FLICKY_16_FLAP2, 0}, // S_FLICKY_16_FLAP1
-	{SPR_FL16, 2, 3, {A_SetObjectFlags},         MF_NOGRAVITY,          1, S_FLICKY_16_FLAP3, 0}, // S_FLICKY_16_FLAP2
-	{SPR_FL16, 3, 3, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_FLAP3, 0}, // S_FLICKY_16_FLAP3
-	{SPR_FL16, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, // S_FLICKY_16_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_16, 384*FRACUNIT, S_FLICKY_16_CENTER, 0},        // S_FLICKY_16_CENTER
+	{"S_FLICKY_16_OUT", 0, SPR_FL16, 0, 2, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_OUT, 0},
+	{"S_FLICKY_16_FLAP1", 0, SPR_FL16, 1, 3, {A_FlickyFly},                4*FRACUNIT, 8*FRACUNIT, S_FLICKY_16_FLAP2, 0},
+	{"S_FLICKY_16_FLAP2", 0, SPR_FL16, 2, 3, {A_SetObjectFlags},         MF_NOGRAVITY,          1, S_FLICKY_16_FLAP3, 0},
+	{"S_FLICKY_16_FLAP3", 0, SPR_FL16, 3, 3, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_FLAP3, 0},
+	{"S_FLICKY_16_STAND", 0, SPR_FL16, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0},
+	{"S_FLICKY_16_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_16, 384*FRACUNIT, S_FLICKY_16_CENTER, 0},
 
 	// Spider
-	{SPR_FS01, 0, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_OUT, 0},  // S_SECRETFLICKY_01_OUT
-	{SPR_FS01, 1, 1, {A_FlickyAim},                   ANG30,            32*FRACUNIT, S_SECRETFLICKY_01_HOP, 0},  // S_SECRETFLICKY_01_AIM
-	{SPR_FS01, 1, 1, {A_FlickyFlounder},         2*FRACUNIT,             6*FRACUNIT, S_SECRETFLICKY_01_UP, 0},   // S_SECRETFLICKY_01_HOP
-	{SPR_FS01, 2, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, S_SECRETFLICKY_01_DOWN, S_SECRETFLICKY_01_UP, 0},   // S_SECRETFLICKY_01_UP
-	{SPR_FS01, 3, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_DOWN, 0}, // S_SECRETFLICKY_01_DOWN
-	{SPR_FS01, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_SECRETFLICKY_01_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_01, 384*FRACUNIT, S_SECRETFLICKY_01_CENTER, 0},        // S_SECRETFLICKY_01_CENTER
+	{"S_SECRETFLICKY_01_OUT", 0, SPR_FS01, 0, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_OUT, 0},
+	{"S_SECRETFLICKY_01_AIM", 0, SPR_FS01, 1, 1, {A_FlickyAim},                   ANG30,            32*FRACUNIT, S_SECRETFLICKY_01_HOP, 0},
+	{"S_SECRETFLICKY_01_HOP", 0, SPR_FS01, 1, 1, {A_FlickyFlounder},         2*FRACUNIT,             6*FRACUNIT, S_SECRETFLICKY_01_UP, 0},
+	{"S_SECRETFLICKY_01_UP", 0, SPR_FS01, 2, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, S_SECRETFLICKY_01_DOWN, S_SECRETFLICKY_01_UP, 0},
+	{"S_SECRETFLICKY_01_DOWN", 0, SPR_FS01, 3, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_DOWN, 0},
+	{"S_SECRETFLICKY_01_STAND", 0, SPR_FS01, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0},
+	{"S_SECRETFLICKY_01_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_01, 384*FRACUNIT, S_SECRETFLICKY_01_CENTER, 0},
 
 	// Bat
-	{SPR_FS02, 0, 2, {A_FlickyHeightCheck}, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_OUT, 0},   // S_SECRETFLICKY_02_OUT
-	{SPR_FS02, 1, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP2, 0}, // S_SECRETFLICKY_02_FLAP1
-	{SPR_FS02, 2, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP3, 0}, // S_SECRETFLICKY_02_FLAP2
-	{SPR_FS02, 3, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP1, 0}, // S_SECRETFLICKY_02_FLAP3
-	{SPR_FS02, FF_ANIMATE|1, -1, {NULL}, 2, 2, S_NULL, 0}, // S_SECRETFLICKY_02_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_02, 384*FRACUNIT, S_SECRETFLICKY_02_CENTER, 0},        // S_SECRETFLICKY_02_CENTER
+	{"S_SECRETFLICKY_02_OUT", 0, SPR_FS02, 0, 2, {A_FlickyHeightCheck}, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_OUT, 0},
+	{"S_SECRETFLICKY_02_FLAP1", 0, SPR_FS02, 1, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP2, 0},
+	{"S_SECRETFLICKY_02_FLAP2", 0, SPR_FS02, 2, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP3, 0},
+	{"S_SECRETFLICKY_02_FLAP3", 0, SPR_FS02, 3, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP1, 0},
+	{"S_SECRETFLICKY_02_STAND", 0, SPR_FS02, FF_ANIMATE|1, -1, {NULL}, 2, 2, S_NULL, 0},
+	{"S_SECRETFLICKY_02_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_02, 384*FRACUNIT, S_SECRETFLICKY_02_CENTER, 0},
 
 	// Fan
-	{SPR_FANS, 0, 1, {A_FanBubbleSpawn}, 2048, 0, S_FAN2, 0}, // S_FAN
-	{SPR_FANS, 1, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN3, 0}, // S_FAN2
-	{SPR_FANS, 2, 1, {A_FanBubbleSpawn},  512, 0, S_FAN4, 0}, // S_FAN3
-	{SPR_FANS, 3, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN5, 0}, // S_FAN4
-	{SPR_FANS, 4, 1, {A_FanBubbleSpawn},  512, 0, S_FAN, 0},  // S_FAN5
+	{"S_FAN", 0, SPR_FANS, 0, 1, {A_FanBubbleSpawn}, 2048, 0, S_FAN2, 0},
+	{"S_FAN2", 0, SPR_FANS, 1, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN3, 0},
+	{"S_FAN3", 0, SPR_FANS, 2, 1, {A_FanBubbleSpawn},  512, 0, S_FAN4, 0},
+	{"S_FAN4", 0, SPR_FANS, 3, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN5, 0},
+	{"S_FAN5", 0, SPR_FANS, 4, 1, {A_FanBubbleSpawn},  512, 0, S_FAN, 0},
 
 	// Steam Riser
-	{SPR_STEM, 0, 2, {A_SetSolidSteam}, 0, 0, S_STEAM2, 0},   // S_STEAM1
-	{SPR_STEM, 1, 2, {A_UnsetSolidSteam}, 0, 0, S_STEAM3, 0}, // S_STEAM2
-	{SPR_STEM, 2, 2, {NULL}, 0, 0, S_STEAM4, 0},              // S_STEAM3
-	{SPR_STEM, 3, 2, {NULL}, 0, 0, S_STEAM5, 0},              // S_STEAM4
-	{SPR_STEM, 4, 2, {NULL}, 0, 0, S_STEAM6, 0},              // S_STEAM5
-	{SPR_STEM, 5, 2, {NULL}, 0, 0, S_STEAM7, 0},              // S_STEAM6
-	{SPR_STEM, 6, 2, {NULL}, 0, 0, S_STEAM8, 0},              // S_STEAM7
-	{SPR_NULL, 0, 18, {NULL}, 0, 0, S_STEAM1, 0},             // S_STEAM8
+	{"S_STEAM1", 0, SPR_STEM, 0, 2, {A_SetSolidSteam}, 0, 0, S_STEAM2, 0},
+	{"S_STEAM2", 0, SPR_STEM, 1, 2, {A_UnsetSolidSteam}, 0, 0, S_STEAM3, 0},
+	{"S_STEAM3", 0, SPR_STEM, 2, 2, {NULL}, 0, 0, S_STEAM4, 0},
+	{"S_STEAM4", 0, SPR_STEM, 3, 2, {NULL}, 0, 0, S_STEAM5, 0},
+	{"S_STEAM5", 0, SPR_STEM, 4, 2, {NULL}, 0, 0, S_STEAM6, 0},
+	{"S_STEAM6", 0, SPR_STEM, 5, 2, {NULL}, 0, 0, S_STEAM7, 0},
+	{"S_STEAM7", 0, SPR_STEM, 6, 2, {NULL}, 0, 0, S_STEAM8, 0},
+	{"S_STEAM8", 0, SPR_NULL, 0, 18, {NULL}, 0, 0, S_STEAM1, 0},
 
 	// Bumpers
-	{SPR_BUMP, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL},   3, 4, S_NULL, 0},   // S_BUMPER
-	{SPR_BUMP, FF_ANIMATE|4,             12, {A_Pain}, 1, 3, S_BUMPER, 0}, //S_BUMPERHIT
+	{"S_BUMPER", 0, SPR_BUMP, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL},   3, 4, S_NULL, 0},
+	{"S_BUMPERHIT", 0, SPR_BUMP, FF_ANIMATE|4,             12, {A_Pain}, 1, 3, S_BUMPER, 0},
 
 	// Balloons
-	{SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_NULL, 0}, // S_BALLOON
-	{SPR_BLON, 3, 0, {A_RemoteDamage},   0, 1, S_BALLOONPOP2, 0}, // S_BALLOONPOP1
-	{SPR_BLON, 3, 1, {A_Pain},           0, 0, S_BALLOONPOP3, 0}, // S_BALLOONPOP2
-	{SPR_BLON, 4, 1, {NULL},             0, 0, S_BALLOONPOP4, 0}, // S_BALLOONPOP3
-	{SPR_NULL, 0, TICRATE, {A_CheckFlags2}, MF2_AMBUSH, S_BALLOONPOP5, S_NULL, 0}, // S_BALLOONPOP4
-	{SPR_NULL, 0, 15*TICRATE, {NULL},    0, 0, S_BALLOONPOP6, 0}, // S_BALLOONPOP5
-	{SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_NULL, 0},        // S_BALLOONPOP6
+	{"S_BALLOON", 0, SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_NULL, 0},
+	{"S_BALLOONPOP1", 0, SPR_BLON, 3, 0, {A_RemoteDamage},   0, 1, S_BALLOONPOP2, 0},
+	{"S_BALLOONPOP2", 0, SPR_BLON, 3, 1, {A_Pain},           0, 0, S_BALLOONPOP3, 0},
+	{"S_BALLOONPOP3", 0, SPR_BLON, 4, 1, {NULL},             0, 0, S_BALLOONPOP4, 0},
+	{"S_BALLOONPOP4", 0, SPR_NULL, 0, TICRATE, {A_CheckFlags2}, MF2_AMBUSH, S_BALLOONPOP5, S_NULL, 0},
+	{"S_BALLOONPOP5", 0, SPR_NULL, 0, 15*TICRATE, {NULL},    0, 0, S_BALLOONPOP6, 0},
+	{"S_BALLOONPOP6", 0, SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_NULL, 0},
 
 	// Yellow Spring
-	{SPR_SPRY, 0, -1, {NULL}, 0, 0, S_NULL, 0},           // S_YELLOWSPRING
-	{SPR_SPRY, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRING3, 0}, // S_YELLOWSPRING2
-	{SPR_SPRY, 3, 1, {NULL}, 0, 0, S_YELLOWSPRING4, 0},   // S_YELLOWSPRING3
-	{SPR_SPRY, 2, 1, {NULL}, 0, 0, S_YELLOWSPRING5, 0},   // S_YELLOWSPRING4
-	{SPR_SPRY, 1, 1, {NULL}, 0, 0, S_YELLOWSPRING, 0},    // S_YELLOWSPRING5
+	{"S_YELLOWSPRING", 0, SPR_SPRY, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_YELLOWSPRING2", 0, SPR_SPRY, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRING3, 0},
+	{"S_YELLOWSPRING3", 0, SPR_SPRY, 3, 1, {NULL}, 0, 0, S_YELLOWSPRING4, 0},
+	{"S_YELLOWSPRING4", 0, SPR_SPRY, 2, 1, {NULL}, 0, 0, S_YELLOWSPRING5, 0},
+	{"S_YELLOWSPRING5", 0, SPR_SPRY, 1, 1, {NULL}, 0, 0, S_YELLOWSPRING, 0},
 
 	// Red Spring
-	{SPR_SPRR, 0, -1, {NULL}, 0, 0, S_NULL, 0},        // S_REDSPRING
-	{SPR_SPRR, 4, 4, {A_Pain}, 0, 0, S_REDSPRING3, 0}, // S_REDSPRING2
-	{SPR_SPRR, 3, 1, {NULL}, 0, 0, S_REDSPRING4, 0},   // S_REDSPRING3
-	{SPR_SPRR, 2, 1, {NULL}, 0, 0, S_REDSPRING5, 0},   // S_REDSPRING4
-	{SPR_SPRR, 1, 1, {NULL}, 0, 0, S_REDSPRING, 0},    // S_REDSPRING5
+	{"S_REDSPRING", 0, SPR_SPRR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_REDSPRING2", 0, SPR_SPRR, 4, 4, {A_Pain}, 0, 0, S_REDSPRING3, 0},
+	{"S_REDSPRING3", 0, SPR_SPRR, 3, 1, {NULL}, 0, 0, S_REDSPRING4, 0},
+	{"S_REDSPRING4", 0, SPR_SPRR, 2, 1, {NULL}, 0, 0, S_REDSPRING5, 0},
+	{"S_REDSPRING5", 0, SPR_SPRR, 1, 1, {NULL}, 0, 0, S_REDSPRING, 0},
 
 	// Blue Spring
-	{SPR_SPRB, 0, -1, {NULL}, 0, 0, S_NULL, 0},         // S_BLUESPRING
-	{SPR_SPRB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRING3, 0}, // S_BLUESPRING2
-	{SPR_SPRB, 3, 1, {NULL}, 0, 0, S_BLUESPRING4, 0},   // S_BLUESPRING3
-	{SPR_SPRB, 2, 1, {NULL}, 0, 0, S_BLUESPRING5, 0},   // S_BLUESPRING4
-	{SPR_SPRB, 1, 1, {NULL}, 0, 0, S_BLUESPRING, 0},    // S_BLUESPRING5
+	{"S_BLUESPRING", 0, SPR_SPRB, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BLUESPRING2", 0, SPR_SPRB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRING3, 0},
+	{"S_BLUESPRING3", 0, SPR_SPRB, 3, 1, {NULL}, 0, 0, S_BLUESPRING4, 0},
+	{"S_BLUESPRING4", 0, SPR_SPRB, 2, 1, {NULL}, 0, 0, S_BLUESPRING5, 0},
+	{"S_BLUESPRING5", 0, SPR_SPRB, 1, 1, {NULL}, 0, 0, S_BLUESPRING, 0},
 
 	// Yellow Diagonal Spring
-	{SPR_YSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_YDIAG1
-	{SPR_YSPR, 1, 1, {A_Pain}, 0, 0, S_YDIAG3, 0}, // S_YDIAG2
-	{SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG4, 0},   // S_YDIAG3
-	{SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG5, 0},   // S_YDIAG4
-	{SPR_YSPR, 4, 1, {NULL}, 0, 0, S_YDIAG6, 0},   // S_YDIAG5
-	{SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG7, 0},   // S_YDIAG6
-	{SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG8, 0},   // S_YDIAG7
-	{SPR_YSPR, 1, 1, {NULL}, 0, 0, S_YDIAG1, 0},   // S_YDIAG8
+	{"S_YDIAG1", 0, SPR_YSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_YDIAG2", 0, SPR_YSPR, 1, 1, {A_Pain}, 0, 0, S_YDIAG3, 0},
+	{"S_YDIAG3", 0, SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG4, 0},
+	{"S_YDIAG4", 0, SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG5, 0},
+	{"S_YDIAG5", 0, SPR_YSPR, 4, 1, {NULL}, 0, 0, S_YDIAG6, 0},
+	{"S_YDIAG6", 0, SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG7, 0},
+	{"S_YDIAG7", 0, SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG8, 0},
+	{"S_YDIAG8", 0, SPR_YSPR, 1, 1, {NULL}, 0, 0, S_YDIAG1, 0},
 
 	// Red Diagonal Spring
-	{SPR_RSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_RDIAG1
-	{SPR_RSPR, 1, 1, {A_Pain}, 0, 0, S_RDIAG3, 0}, // S_RDIAG2
-	{SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG4, 0},   // S_RDIAG3
-	{SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG5, 0},   // S_RDIAG4
-	{SPR_RSPR, 4, 1, {NULL}, 0, 0, S_RDIAG6, 0},   // S_RDIAG5
-	{SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG7, 0},   // S_RDIAG6
-	{SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG8, 0},   // S_RDIAG7
-	{SPR_RSPR, 1, 1, {NULL}, 0, 0, S_RDIAG1, 0},   // S_RDIAG8
+	{"S_RDIAG1", 0, SPR_RSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_RDIAG2", 0, SPR_RSPR, 1, 1, {A_Pain}, 0, 0, S_RDIAG3, 0},
+	{"S_RDIAG3", 0, SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG4, 0},
+	{"S_RDIAG4", 0, SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG5, 0},
+	{"S_RDIAG5", 0, SPR_RSPR, 4, 1, {NULL}, 0, 0, S_RDIAG6, 0},
+	{"S_RDIAG6", 0, SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG7, 0},
+	{"S_RDIAG7", 0, SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG8, 0},
+	{"S_RDIAG8", 0, SPR_RSPR, 1, 1, {NULL}, 0, 0, S_RDIAG1, 0},
 
 	// Blue Diagonal Spring
-	{SPR_BSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_BDIAG1
-	{SPR_BSPR, 1, 1, {A_Pain}, 0, 0, S_BDIAG3, 0}, // S_BDIAG2
-	{SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG4, 0},   // S_BDIAG3
-	{SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG5, 0},   // S_BDIAG4
-	{SPR_BSPR, 4, 1, {NULL}, 0, 0, S_BDIAG6, 0},   // S_BDIAG5
-	{SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG7, 0},   // S_BDIAG6
-	{SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG8, 0},   // S_BDIAG7
-	{SPR_BSPR, 1, 1, {NULL}, 0, 0, S_BDIAG1, 0},   // S_BDIAG8
+	{"S_BDIAG1", 0, SPR_BSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BDIAG2", 0, SPR_BSPR, 1, 1, {A_Pain}, 0, 0, S_BDIAG3, 0},
+	{"S_BDIAG3", 0, SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG4, 0},
+	{"S_BDIAG4", 0, SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG5, 0},
+	{"S_BDIAG5", 0, SPR_BSPR, 4, 1, {NULL}, 0, 0, S_BDIAG6, 0},
+	{"S_BDIAG6", 0, SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG7, 0},
+	{"S_BDIAG7", 0, SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG8, 0},
+	{"S_BDIAG8", 0, SPR_BSPR, 1, 1, {NULL}, 0, 0, S_BDIAG1, 0},
 
 	// Yellow Side Spring
-	{SPR_SSWY, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_YHORIZ1
-	{SPR_SSWY, 1, 1, {A_Pain}, 0, 0, S_YHORIZ3, 0}, // S_YHORIZ2
-	{SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ4, 0},   // S_YHORIZ3
-	{SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ5, 0},   // S_YHORIZ4
-	{SPR_SSWY, 4, 1, {NULL}, 0, 0, S_YHORIZ6, 0},   // S_YHORIZ5
-	{SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ7, 0},   // S_YHORIZ6
-	{SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ8, 0},   // S_YHORIZ7
-	{SPR_SSWY, 1, 1, {NULL}, 0, 0, S_YHORIZ1, 0},   // S_YHORIZ8
+	{"S_YHORIZ1", 0, SPR_SSWY, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_YHORIZ2", 0, SPR_SSWY, 1, 1, {A_Pain}, 0, 0, S_YHORIZ3, 0},
+	{"S_YHORIZ3", 0, SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ4, 0},
+	{"S_YHORIZ4", 0, SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ5, 0},
+	{"S_YHORIZ5", 0, SPR_SSWY, 4, 1, {NULL}, 0, 0, S_YHORIZ6, 0},
+	{"S_YHORIZ6", 0, SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ7, 0},
+	{"S_YHORIZ7", 0, SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ8, 0},
+	{"S_YHORIZ8", 0, SPR_SSWY, 1, 1, {NULL}, 0, 0, S_YHORIZ1, 0},
 
 	// Red Side Spring
-	{SPR_SSWR, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_RHORIZ1
-	{SPR_SSWR, 1, 1, {A_Pain}, 0, 0, S_RHORIZ3, 0}, // S_RHORIZ2
-	{SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ4, 0},   // S_RHORIZ3
-	{SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ5, 0},   // S_RHORIZ4
-	{SPR_SSWR, 4, 1, {NULL}, 0, 0, S_RHORIZ6, 0},   // S_RHORIZ5
-	{SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ7, 0},   // S_RHORIZ6
-	{SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ8, 0},   // S_RHORIZ7
-	{SPR_SSWR, 1, 1, {NULL}, 0, 0, S_RHORIZ1, 0},   // S_RHORIZ8
+	{"S_RHORIZ1", 0, SPR_SSWR, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_RHORIZ2", 0, SPR_SSWR, 1, 1, {A_Pain}, 0, 0, S_RHORIZ3, 0},
+	{"S_RHORIZ3", 0, SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ4, 0},
+	{"S_RHORIZ4", 0, SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ5, 0},
+	{"S_RHORIZ5", 0, SPR_SSWR, 4, 1, {NULL}, 0, 0, S_RHORIZ6, 0},
+	{"S_RHORIZ6", 0, SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ7, 0},
+	{"S_RHORIZ7", 0, SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ8, 0},
+	{"S_RHORIZ8", 0, SPR_SSWR, 1, 1, {NULL}, 0, 0, S_RHORIZ1, 0},
 
 	// Blue Side Spring
-	{SPR_SSWB, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_BHORIZ1
-	{SPR_SSWB, 1, 1, {A_Pain}, 0, 0, S_BHORIZ3, 0}, // S_BHORIZ2
-	{SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ4, 0},   // S_BHORIZ3
-	{SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ5, 0},   // S_BHORIZ4
-	{SPR_SSWB, 4, 1, {NULL}, 0, 0, S_BHORIZ6, 0},   // S_BHORIZ5
-	{SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ7, 0},   // S_BHORIZ6
-	{SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ8, 0},   // S_BHORIZ7
-	{SPR_SSWB, 1, 1, {NULL}, 0, 0, S_BHORIZ1, 0},   // S_BHORIZ8
+	{"S_BHORIZ1", 0, SPR_SSWB, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BHORIZ2", 0, SPR_SSWB, 1, 1, {A_Pain}, 0, 0, S_BHORIZ3, 0},
+	{"S_BHORIZ3", 0, SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ4, 0},
+	{"S_BHORIZ4", 0, SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ5, 0},
+	{"S_BHORIZ5", 0, SPR_SSWB, 4, 1, {NULL}, 0, 0, S_BHORIZ6, 0},
+	{"S_BHORIZ6", 0, SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ7, 0},
+	{"S_BHORIZ7", 0, SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ8, 0},
+	{"S_BHORIZ8", 0, SPR_SSWB, 1, 1, {NULL}, 0, 0, S_BHORIZ1, 0},
 
 	// Boosters
-	{SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE, 0}, // S_BOOSTERSOUND
-	{SPR_BSTY,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_YELLOWBOOSTERROLLER
-	{SPR_BSTY, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_YELLOWBOOSTERSEG_LEFT
-	{SPR_BSTY, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_YELLOWBOOSTERSEG_RIGHT
-	{SPR_BSTY, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL, 0}, // S_YELLOWBOOSTERSEG_FACE
-	{SPR_BSTR,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_REDBOOSTERROLLER
-	{SPR_BSTR, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_REDBOOSTERSEG_LEFT
-	{SPR_BSTR, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_REDBOOSTERSEG_RIGHT
-	{SPR_BSTR, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL, 0}, // S_REDBOOSTERSEG_FACE
+	{"S_BOOSTERSOUND", 0, SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE, 0},
+	{"S_YELLOWBOOSTERROLLER", 0, SPR_BSTY,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0},
+	{"S_YELLOWBOOSTERSEG_LEFT", 0, SPR_BSTY, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0},
+	{"S_YELLOWBOOSTERSEG_RIGHT", 0, SPR_BSTY, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0},
+	{"S_YELLOWBOOSTERSEG_FACE", 0, SPR_BSTY, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_REDBOOSTERROLLER", 0, SPR_BSTR,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0},
+	{"S_REDBOOSTERSEG_LEFT", 0, SPR_BSTR, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0},
+	{"S_REDBOOSTERSEG_RIGHT", 0, SPR_BSTR, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0},
+	{"S_REDBOOSTERSEG_FACE", 0, SPR_BSTR, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Rain
-	{SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, // S_RAIN1
-	{SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_RAIN1, 0}, // S_RAINRETURN
+	{"S_RAIN1", 0, SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_RAINRETURN", 0, SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_RAIN1, 0},
 
 	// Snowflake
-	{SPR_SNO1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOW1
-	{SPR_SNO1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOW2
-	{SPR_SNO1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOW3
+	{"S_SNOW1", 0, SPR_SNO1, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SNOW2", 0, SPR_SNO1, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SNOW3", 0, SPR_SNO1, 2, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Water Splish
-	{SPR_SPLH, FF_TRANS50  , 2, {NULL}, 0, 0, S_SPLISH2, 0}, // S_SPLISH1
-	{SPR_SPLH, FF_TRANS50|1, 2, {NULL}, 0, 0, S_SPLISH3, 0}, // S_SPLISH2
-	{SPR_SPLH, FF_TRANS50|2, 2, {NULL}, 0, 0, S_SPLISH4, 0}, // S_SPLISH3
-	{SPR_SPLH, FF_TRANS50|3, 2, {NULL}, 0, 0, S_SPLISH5, 0}, // S_SPLISH4
-	{SPR_SPLH, FF_TRANS50|4, 2, {NULL}, 0, 0, S_SPLISH6, 0}, // S_SPLISH5
-	{SPR_SPLH, FF_TRANS50|5, 2, {NULL}, 0, 0, S_SPLISH7, 0}, // S_SPLISH6
-	{SPR_SPLH, FF_TRANS50|6, 2, {NULL}, 0, 0, S_SPLISH8, 0}, // S_SPLISH7
-	{SPR_SPLH, FF_TRANS50|7, 2, {NULL}, 0, 0, S_SPLISH9, 0}, // S_SPLISH8
-	{SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL, 0},    // S_SPLISH9
+	{"S_SPLISH1", 0, SPR_SPLH, FF_TRANS50  , 2, {NULL}, 0, 0, S_SPLISH2, 0},
+	{"S_SPLISH2", 0, SPR_SPLH, FF_TRANS50|1, 2, {NULL}, 0, 0, S_SPLISH3, 0},
+	{"S_SPLISH3", 0, SPR_SPLH, FF_TRANS50|2, 2, {NULL}, 0, 0, S_SPLISH4, 0},
+	{"S_SPLISH4", 0, SPR_SPLH, FF_TRANS50|3, 2, {NULL}, 0, 0, S_SPLISH5, 0},
+	{"S_SPLISH5", 0, SPR_SPLH, FF_TRANS50|4, 2, {NULL}, 0, 0, S_SPLISH6, 0},
+	{"S_SPLISH6", 0, SPR_SPLH, FF_TRANS50|5, 2, {NULL}, 0, 0, S_SPLISH7, 0},
+	{"S_SPLISH7", 0, SPR_SPLH, FF_TRANS50|6, 2, {NULL}, 0, 0, S_SPLISH8, 0},
+	{"S_SPLISH8", 0, SPR_SPLH, FF_TRANS50|7, 2, {NULL}, 0, 0, S_SPLISH9, 0},
+	{"S_SPLISH9", 0, SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL, 0},
 
 	// Lava splish
-	{SPR_LSPL, FF_ANIMATE, 16, {NULL}, 7, 2, S_NULL, 0}, // S_LAVASPLISH
+	{"S_LAVASPLISH", 0, SPR_LSPL, FF_ANIMATE, 16, {NULL}, 7, 2, S_NULL, 0},
 
 	// Water Splash
-	{SPR_SPLA, FF_TRANS50  , 3, {NULL}, 0, 0, S_SPLASH2, 0},    // S_SPLASH1
-	{SPR_SPLA, FF_TRANS70|1, 3, {NULL}, 0, 0, S_SPLASH3, 0},    // S_SPLASH2
-	{SPR_SPLA, FF_TRANS90|2, 3, {NULL}, 0, 0, S_RAINRETURN, 0}, // S_SPLASH3
+	{"S_SPLASH1", 0, SPR_SPLA, FF_TRANS50  , 3, {NULL}, 0, 0, S_SPLASH2, 0},
+	{"S_SPLASH2", 0, SPR_SPLA, FF_TRANS70|1, 3, {NULL}, 0, 0, S_SPLASH3, 0},
+	{"S_SPLASH3", 0, SPR_SPLA, FF_TRANS90|2, 3, {NULL}, 0, 0, S_RAINRETURN, 0},
 
 	// Smoke
-	{SPR_SMOK, FF_TRANS50  , 4, {NULL}, 0, 0, S_SMOKE2, 0}, // S_SMOKE1
-	{SPR_SMOK, FF_TRANS50|1, 5, {NULL}, 0, 0, S_SMOKE3, 0}, // S_SMOKE2
-	{SPR_SMOK, FF_TRANS50|2, 6, {NULL}, 0, 0, S_SMOKE4, 0}, // S_SMOKE3
-	{SPR_SMOK, FF_TRANS50|3, 7, {NULL}, 0, 0, S_SMOKE5, 0}, // S_SMOKE4
-	{SPR_SMOK, FF_TRANS50|4, 8, {NULL}, 0, 0, S_NULL, 0},   // S_SMOKE5
+	{"S_SMOKE1", 0, SPR_SMOK, FF_TRANS50  , 4, {NULL}, 0, 0, S_SMOKE2, 0},
+	{"S_SMOKE2", 0, SPR_SMOK, FF_TRANS50|1, 5, {NULL}, 0, 0, S_SMOKE3, 0},
+	{"S_SMOKE3", 0, SPR_SMOK, FF_TRANS50|2, 6, {NULL}, 0, 0, S_SMOKE4, 0},
+	{"S_SMOKE4", 0, SPR_SMOK, FF_TRANS50|3, 7, {NULL}, 0, 0, S_SMOKE5, 0},
+	{"S_SMOKE5", 0, SPR_SMOK, FF_TRANS50|4, 8, {NULL}, 0, 0, S_NULL, 0},
 
 	// Bubbles
-	{SPR_BUBL, FF_TRANS50,   1, {A_BubbleRise}, 0, 1024, S_SMALLBUBBLE, 0},  // S_SMALLBUBBLE
-	{SPR_BUBL, FF_TRANS50|1, 1, {A_BubbleRise}, 0, 1024, S_MEDIUMBUBBLE, 0}, // S_MEDIUMBUBBLE
+	{"S_SMALLBUBBLE", 0, SPR_BUBL, FF_TRANS50,   1, {A_BubbleRise}, 0, 1024, S_SMALLBUBBLE, 0},
+	{"S_MEDIUMBUBBLE", 0, SPR_BUBL, FF_TRANS50|1, 1, {A_BubbleRise}, 0, 1024, S_MEDIUMBUBBLE, 0},
 
 	// Extra Large Bubble (breathable)
-	{SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|2,   8, {A_BubbleRise}, 0, 1024, S_LARGEBUBBLE2, 0}, // S_LARGEBUBBLE1
-	{SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|3,   8, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0}, // S_LARGEBUBBLE2
-	{SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|4,  16, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0}, // S_EXTRALARGEBUBBLE
+	{"S_LARGEBUBBLE1", 0, SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|2,   8, {A_BubbleRise}, 0, 1024, S_LARGEBUBBLE2, 0},
+	{"S_LARGEBUBBLE2", 0, SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|3,   8, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0},
+	{"S_EXTRALARGEBUBBLE", 0, SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|4,  16, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0},
 
 	// Extra Large Bubble goes POP!
-	{SPR_BUBL, 5, 16, {NULL}, 0, 0, S_NULL, 0}, // S_POP1
+	{"S_POP1", 0, SPR_BUBL, 5, 16, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_WZAP, FF_TRANS10|FF_ANIMATE|FF_RANDOMANIM, 4, {NULL}, 3, 2, S_NULL, 0},  // S_WATERZAP
+	{"S_WATERZAP", 0, SPR_WZAP, FF_TRANS10|FF_ANIMATE|FF_RANDOMANIM, 4, {NULL}, 3, 2, S_NULL, 0},
 
 	// Spindash dust
-	{SPR_DUST,                          0, 7, {NULL}, 0, 0, S_SPINDUST2, 0}, // S_SPINDUST1
-	{SPR_DUST,                          1, 6, {NULL}, 0, 0, S_SPINDUST3, 0}, // S_SPINDUST2
-	{SPR_DUST,               FF_TRANS30|2, 4, {NULL}, 0, 0, S_SPINDUST4, 0}, // S_SPINDUST3
-	{SPR_DUST,               FF_TRANS60|3, 3, {NULL}, 0, 0, S_NULL, 0}, // S_SPINDUST4
-	{SPR_BUBL,                          0, 7, {NULL}, 0, 0, S_SPINDUST_BUBBLE2, 0}, // S_SPINDUST_BUBBLE1
-	{SPR_BUBL,                          0, 6, {NULL}, 0, 0, S_SPINDUST_BUBBLE3, 0}, // S_SPINDUST_BUBBLE2
-	{SPR_BUBL,               FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_BUBBLE4, 0}, // S_SPINDUST_BUBBLE3
-	{SPR_BUBL,               FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0}, // S_SPINDUST_BUBBLE4
-	{SPR_FPRT,            FF_FULLBRIGHT|0, 7, {NULL}, 0, 0, S_SPINDUST_FIRE2, 0}, // S_SPINDUST_FIRE1
-	{SPR_FPRT,            FF_FULLBRIGHT|0, 6, {NULL}, 0, 0, S_SPINDUST_FIRE3, 0}, // S_SPINDUST_FIRE2
-	{SPR_FPRT, FF_FULLBRIGHT|FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_FIRE4, 0}, // S_SPINDUST_FIRE3
-	{SPR_FPRT, FF_FULLBRIGHT|FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0}, // S_SPINDUST_FIRE4
-
-
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50,    2, {NULL}, 0, 0, S_FOG2, 0},  // S_FOG1
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|1,  2, {NULL}, 0, 0, S_FOG3, 0},  // S_FOG2
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|2,  2, {NULL}, 0, 0, S_FOG4, 0},  // S_FOG3
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|3,  2, {NULL}, 0, 0, S_FOG5, 0},  // S_FOG4
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|4,  2, {NULL}, 0, 0, S_FOG6, 0},  // S_FOG5
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|5,  2, {NULL}, 0, 0, S_FOG7, 0},  // S_FOG6
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|6,  2, {NULL}, 0, 0, S_FOG8, 0},  // S_FOG7
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|7,  2, {NULL}, 0, 0, S_FOG9, 0},  // S_FOG8
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|8,  2, {NULL}, 0, 0, S_FOG10, 0}, // S_FOG9
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|9,  2, {NULL}, 0, 0, S_FOG11, 0}, // S_FOG10
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|10, 2, {NULL}, 0, 0, S_FOG12, 0}, // S_FOG11
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|11, 2, {NULL}, 0, 0, S_FOG13, 0}, // S_FOG12
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|12, 2, {NULL}, 0, 0, S_FOG14, 0}, // S_FOG13
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL, 0},  // S_FOG14
+	{"S_SPINDUST1", 0, SPR_DUST,                          0, 7, {NULL}, 0, 0, S_SPINDUST2, 0},
+	{"S_SPINDUST2", 0, SPR_DUST,                          1, 6, {NULL}, 0, 0, S_SPINDUST3, 0},
+	{"S_SPINDUST3", 0, SPR_DUST,               FF_TRANS30|2, 4, {NULL}, 0, 0, S_SPINDUST4, 0},
+	{"S_SPINDUST4", 0, SPR_DUST,               FF_TRANS60|3, 3, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SPINDUST_BUBBLE1", 0, SPR_BUBL,                          0, 7, {NULL}, 0, 0, S_SPINDUST_BUBBLE2, 0},
+	{"S_SPINDUST_BUBBLE2", 0, SPR_BUBL,                          0, 6, {NULL}, 0, 0, S_SPINDUST_BUBBLE3, 0},
+	{"S_SPINDUST_BUBBLE3", 0, SPR_BUBL,               FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_BUBBLE4, 0},
+	{"S_SPINDUST_BUBBLE4", 0, SPR_BUBL,               FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0},
+	{"S_SPINDUST_FIRE1", 0, SPR_FPRT,            FF_FULLBRIGHT|0, 7, {NULL}, 0, 0, S_SPINDUST_FIRE2, 0},
+	{"S_SPINDUST_FIRE2", 0, SPR_FPRT,            FF_FULLBRIGHT|0, 6, {NULL}, 0, 0, S_SPINDUST_FIRE3, 0},
+	{"S_SPINDUST_FIRE3", 0, SPR_FPRT, FF_FULLBRIGHT|FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_FIRE4, 0},
+	{"S_SPINDUST_FIRE4", 0, SPR_FPRT, FF_FULLBRIGHT|FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0},
+
+
+	{"S_FOG1", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50,    2, {NULL}, 0, 0, S_FOG2, 0},
+	{"S_FOG2", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|1,  2, {NULL}, 0, 0, S_FOG3, 0},
+	{"S_FOG3", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|2,  2, {NULL}, 0, 0, S_FOG4, 0},
+	{"S_FOG4", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|3,  2, {NULL}, 0, 0, S_FOG5, 0},
+	{"S_FOG5", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|4,  2, {NULL}, 0, 0, S_FOG6, 0},
+	{"S_FOG6", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|5,  2, {NULL}, 0, 0, S_FOG7, 0},
+	{"S_FOG7", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|6,  2, {NULL}, 0, 0, S_FOG8, 0},
+	{"S_FOG8", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|7,  2, {NULL}, 0, 0, S_FOG9, 0},
+	{"S_FOG9", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|8,  2, {NULL}, 0, 0, S_FOG10, 0},
+	{"S_FOG10", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|9,  2, {NULL}, 0, 0, S_FOG11, 0},
+	{"S_FOG11", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|10, 2, {NULL}, 0, 0, S_FOG12, 0},
+	{"S_FOG12", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|11, 2, {NULL}, 0, 0, S_FOG13, 0},
+	{"S_FOG13", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|12, 2, {NULL}, 0, 0, S_FOG14, 0},
+	{"S_FOG14", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL, 0},
 
 	// Flower Seed
-	{SPR_SEED, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 2, 2, S_NULL, 0}, // S_SEED
+	{"S_SEED", 0, SPR_SEED, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 2, 2, S_NULL, 0},
 
 	// Particle sprite
-	{SPR_PRTL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0}, // S_PARTICLE
-
-	{SPR_SCOR, 0, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRA  - 100
-	{SPR_SCOR, 1, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRB  - 200
-	{SPR_SCOR, 2, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRC  - 500
-	{SPR_SCOR, 3, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRD  - 1000
-	{SPR_SCOR, 4, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRE  - 10000
-	{SPR_SCOR, 5, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRF  - 400 (mario mode)
-	{SPR_SCOR, 6, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRG  - 800 (mario mode)
-	{SPR_SCOR, 7, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRH  - 2000 (mario mode)
-	{SPR_SCOR, 8, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRI  - 4000 (mario mode)
-	{SPR_SCOR, 9, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRJ  - 8000 (mario mode)
-	{SPR_SCOR, 10, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRK - 1UP (mario mode)
-	{SPR_SCOR, 11, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRL - 10
+	{"S_PARTICLE", 0, SPR_PRTL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_SCRA", 0, SPR_SCOR, 0, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 100
+	{"S_SCRB", 0, SPR_SCOR, 1, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 200
+	{"S_SCRC", 0, SPR_SCOR, 2, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 500
+	{"S_SCRD", 0, SPR_SCOR, 3, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 1000
+	{"S_SCRE", 0, SPR_SCOR, 4, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 10000
+	{"S_SCRF", 0, SPR_SCOR, 5, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 400 (mario mode)
+	{"S_SCRG", 0, SPR_SCOR, 6, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 800 (mario mode)
+	{"S_SCRH", 0, SPR_SCOR, 7, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 2000 (mario mode)
+	{"S_SCRI", 0, SPR_SCOR, 8, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 4000 (mario mode)
+	{"S_SCRJ", 0, SPR_SCOR, 9, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},   // - 8000 (mario mode)
+	{"S_SCRK", 0, SPR_SCOR, 10, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},  // - 1UP (mario mode)
+	{"S_SCRL", 0, SPR_SCOR, 11, 32, {A_ScoreRise}, 0, 0, S_NULL, 0},  // - 10
 
 	// Drowning Timer Numbers
-	{SPR_DRWN, 0, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ZERO1
-	{SPR_DRWN, 1, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ONE1
-	{SPR_DRWN, 2, 40, {NULL}, 0, 0, S_NULL, 0}, // S_TWO1
-	{SPR_DRWN, 3, 40, {NULL}, 0, 0, S_NULL, 0}, // S_THREE1
-	{SPR_DRWN, 4, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FOUR1
-	{SPR_DRWN, 5, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FIVE1
-
-	{SPR_DRWN,  6, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ZERO2
-	{SPR_DRWN,  7, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ONE2
-	{SPR_DRWN,  8, 40, {NULL}, 0, 0, S_NULL, 0}, // S_TWO2
-	{SPR_DRWN,  9, 40, {NULL}, 0, 0, S_NULL, 0}, // S_THREE2
-	{SPR_DRWN, 10, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FOUR2
-	{SPR_DRWN, 11, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FIVE2
+	{"S_ZERO1", 0, SPR_DRWN, 0, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ONE1", 0, SPR_DRWN, 1, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_TWO1", 0, SPR_DRWN, 2, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_THREE1", 0, SPR_DRWN, 3, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FOUR1", 0, SPR_DRWN, 4, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FIVE1", 0, SPR_DRWN, 5, 40, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_ZERO2", 0, SPR_DRWN,  6, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_ONE2", 0, SPR_DRWN,  7, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_TWO2", 0, SPR_DRWN,  8, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_THREE2", 0, SPR_DRWN,  9, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FOUR2", 0, SPR_DRWN, 10, 40, {NULL}, 0, 0, S_NULL, 0},
+	{"S_FIVE2", 0, SPR_DRWN, 11, 40, {NULL}, 0, 0, S_NULL, 0},
 
 	// Flight indicator
-	{SPR_FLII, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 4, S_NULL, 0}, // S_FLIGHTINDICATOR
+	{"S_FLIGHTINDICATOR", 0, SPR_FLII, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 4, S_NULL, 0},
 
-	{SPR_LCKN,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON1
-	{SPR_LCKN, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON2
-	{SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON3
-	{SPR_LCKN, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON4
+	{"S_LOCKON1", 0, SPR_LCKN,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LOCKON2", 0, SPR_LCKN, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LOCKON3", 0, SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LOCKON4", 0, SPR_LCKN, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_LCKN,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF1
-	{SPR_LCKN, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF2
-	{SPR_LCKN, 2|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF3
-	{SPR_LCKN, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF4
+	{"S_LOCKONINF1", 0, SPR_LCKN,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LOCKONINF2", 0, SPR_LCKN, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LOCKONINF3", 0, SPR_LCKN, 2|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LOCKONINF4", 0, SPR_LCKN, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_TTAG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0}, // S_TTAG
+	{"S_TTAG", 0, SPR_TTAG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0},
 
 	// CTF Sign
-	{SPR_GFLG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0}, // S_GOTFLAG
+	{"S_GOTFLAG", 0, SPR_GFLG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Finish flag
-	{SPR_FNSF,    FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FINISHFLAG
+	{"S_FINISHFLAG", 0, SPR_FNSF,    FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CORK,             0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORK
-	{SPR_LHRT, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LHRT
+	{"S_CORK", 0, SPR_CORK,             0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_LHRT", 0, SPR_LHRT, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Red Rings (thrown)
-	{SPR_RRNG, FF_FULLBRIGHT,   1, {A_ThrownRing}, 0, 0, S_RRNG2, 0}, // S_RRNG1
-	{SPR_RRNG, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_RRNG3, 0}, // S_RRNG2
-	{SPR_RRNG, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_RRNG4, 0}, // S_RRNG3
-	{SPR_RRNG, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_RRNG5, 0}, // S_RRNG4
-	{SPR_RRNG, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_RRNG6, 0}, // S_RRNG5
-	{SPR_RRNG, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_RRNG7, 0}, // S_RRNG6
-	{SPR_RRNG, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_RRNG1, 0}, // S_RRNG7
+	{"S_RRNG1", 0, SPR_RRNG, FF_FULLBRIGHT,   1, {A_ThrownRing}, 0, 0, S_RRNG2, 0},
+	{"S_RRNG2", 0, SPR_RRNG, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_RRNG3, 0},
+	{"S_RRNG3", 0, SPR_RRNG, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_RRNG4, 0},
+	{"S_RRNG4", 0, SPR_RRNG, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_RRNG5, 0},
+	{"S_RRNG5", 0, SPR_RRNG, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_RRNG6, 0},
+	{"S_RRNG6", 0, SPR_RRNG, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_RRNG7, 0},
+	{"S_RRNG7", 0, SPR_RRNG, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_RRNG1, 0},
 
 	// Weapon Ring Ammo
-	{SPR_RNGB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_BOUNCERINGAMMO, 0},    // S_BOUNCERINGAMMO
-	{SPR_RNGR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_RAILRINGAMMO, 0},      // S_RAILRINGAMMO
-	{SPR_RNGI, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_INFINITYRINGAMMO, 0},  // S_INFINITYRINGAMMO
-	{SPR_RNGA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_AUTOMATICRINGAMMO, 0}, // S_AUTOMATICRINGAMMO
-	{SPR_RNGE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_EXPLOSIONRINGAMMO, 0}, // S_EXPLOSIONRINGAMMO
-	{SPR_RNGS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_SCATTERRINGAMMO, 0},   // S_SCATTERRINGAMMO
-	{SPR_RNGG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_GRENADERINGAMMO, 0},   // S_GRENADERINGAMMO
+	{"S_BOUNCERINGAMMO", 0, SPR_RNGB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_BOUNCERINGAMMO, 0},
+	{"S_RAILRINGAMMO", 0, SPR_RNGR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_RAILRINGAMMO, 0},
+	{"S_INFINITYRINGAMMO", 0, SPR_RNGI, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_INFINITYRINGAMMO, 0},
+	{"S_AUTOMATICRINGAMMO", 0, SPR_RNGA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_AUTOMATICRINGAMMO, 0},
+	{"S_EXPLOSIONRINGAMMO", 0, SPR_RNGE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_EXPLOSIONRINGAMMO, 0},
+	{"S_SCATTERRINGAMMO", 0, SPR_RNGS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_SCATTERRINGAMMO, 0},
+	{"S_GRENADERINGAMMO", 0, SPR_RNGG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_GRENADERINGAMMO, 0},
 
 	// Bounce Ring Pickup
-	{SPR_PIKB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_BOUNCEPICKUP, 0},  // S_BOUNCEPICKUP
+	{"S_BOUNCEPICKUP", 0, SPR_PIKB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_BOUNCEPICKUP, 0},
 
-	{SPR_PIKB,  0, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE2, 0}, // S_BOUNCEPICKUPFADE1
-	{SPR_PIKB,  2, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE3, 0}, // S_BOUNCEPICKUPFADE2
-	{SPR_PIKB,  4, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE4, 0}, // S_BOUNCEPICKUPFADE3
-	{SPR_PIKB,  6, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE5, 0}, // S_BOUNCEPICKUPFADE4
-	{SPR_PIKB,  8, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE6, 0}, // S_BOUNCEPICKUPFADE5
-	{SPR_PIKB, 10, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE7, 0}, // S_BOUNCEPICKUPFADE6
-	{SPR_PIKB, 12, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE8, 0}, // S_BOUNCEPICKUPFADE7
-	{SPR_PIKB, 14, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE1, 0}, // S_BOUNCEPICKUPFADE8
+	{"S_BOUNCEPICKUPFADE1", 0, SPR_PIKB,  0, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE2, 0},
+	{"S_BOUNCEPICKUPFADE2", 0, SPR_PIKB,  2, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE3, 0},
+	{"S_BOUNCEPICKUPFADE3", 0, SPR_PIKB,  4, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE4, 0},
+	{"S_BOUNCEPICKUPFADE4", 0, SPR_PIKB,  6, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE5, 0},
+	{"S_BOUNCEPICKUPFADE5", 0, SPR_PIKB,  8, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE6, 0},
+	{"S_BOUNCEPICKUPFADE6", 0, SPR_PIKB, 10, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE7, 0},
+	{"S_BOUNCEPICKUPFADE7", 0, SPR_PIKB, 12, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE8, 0},
+	{"S_BOUNCEPICKUPFADE8", 0, SPR_PIKB, 14, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE1, 0},
 
 	// Rail Ring Pickup
-	{SPR_PIKR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_RAILPICKUP, 0},  // S_RAILPICKUP
+	{"S_RAILPICKUP", 0, SPR_PIKR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_RAILPICKUP, 0},
 
-	{SPR_PIKR,  0, 1, {NULL}, 0, 0, S_RAILPICKUPFADE2, 0}, // S_RAILPICKUPFADE1
-	{SPR_PIKR,  2, 1, {NULL}, 0, 0, S_RAILPICKUPFADE3, 0}, // S_RAILPICKUPFADE2
-	{SPR_PIKR,  4, 1, {NULL}, 0, 0, S_RAILPICKUPFADE4, 0}, // S_RAILPICKUPFADE3
-	{SPR_PIKR,  6, 1, {NULL}, 0, 0, S_RAILPICKUPFADE5, 0}, // S_RAILPICKUPFADE4
-	{SPR_PIKR,  8, 1, {NULL}, 0, 0, S_RAILPICKUPFADE6, 0}, // S_RAILPICKUPFADE5
-	{SPR_PIKR, 10, 1, {NULL}, 0, 0, S_RAILPICKUPFADE7, 0}, // S_RAILPICKUPFADE6
-	{SPR_PIKR, 12, 1, {NULL}, 0, 0, S_RAILPICKUPFADE8, 0}, // S_RAILPICKUPFADE7
-	{SPR_PIKR, 14, 1, {NULL}, 0, 0, S_RAILPICKUPFADE1, 0}, // S_RAILPICKUPFADE8
+	{"S_RAILPICKUPFADE1", 0, SPR_PIKR,  0, 1, {NULL}, 0, 0, S_RAILPICKUPFADE2, 0},
+	{"S_RAILPICKUPFADE2", 0, SPR_PIKR,  2, 1, {NULL}, 0, 0, S_RAILPICKUPFADE3, 0},
+	{"S_RAILPICKUPFADE3", 0, SPR_PIKR,  4, 1, {NULL}, 0, 0, S_RAILPICKUPFADE4, 0},
+	{"S_RAILPICKUPFADE4", 0, SPR_PIKR,  6, 1, {NULL}, 0, 0, S_RAILPICKUPFADE5, 0},
+	{"S_RAILPICKUPFADE5", 0, SPR_PIKR,  8, 1, {NULL}, 0, 0, S_RAILPICKUPFADE6, 0},
+	{"S_RAILPICKUPFADE6", 0, SPR_PIKR, 10, 1, {NULL}, 0, 0, S_RAILPICKUPFADE7, 0},
+	{"S_RAILPICKUPFADE7", 0, SPR_PIKR, 12, 1, {NULL}, 0, 0, S_RAILPICKUPFADE8, 0},
+	{"S_RAILPICKUPFADE8", 0, SPR_PIKR, 14, 1, {NULL}, 0, 0, S_RAILPICKUPFADE1, 0},
 
 	// Auto Ring Pickup
-	{SPR_PIKA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_AUTOPICKUP, 0},  // S_AUTOPICKUP
+	{"S_AUTOPICKUP", 0, SPR_PIKA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_AUTOPICKUP, 0},
 
-	{SPR_PIKA,  0, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE2, 0}, // S_AUTOPICKUPFADE1
-	{SPR_PIKA,  2, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE3, 0}, // S_AUTOPICKUPFADE2
-	{SPR_PIKA,  4, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE4, 0}, // S_AUTOPICKUPFADE3
-	{SPR_PIKA,  6, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE5, 0}, // S_AUTOPICKUPFADE4
-	{SPR_PIKA,  8, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE6, 0}, // S_AUTOPICKUPFADE5
-	{SPR_PIKA, 10, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE7, 0}, // S_AUTOPICKUPFADE6
-	{SPR_PIKA, 12, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE8, 0}, // S_AUTOPICKUPFADE7
-	{SPR_PIKA, 14, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE1, 0}, // S_AUTOPICKUPFADE8
+	{"S_AUTOPICKUPFADE1", 0, SPR_PIKA,  0, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE2, 0},
+	{"S_AUTOPICKUPFADE2", 0, SPR_PIKA,  2, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE3, 0},
+	{"S_AUTOPICKUPFADE3", 0, SPR_PIKA,  4, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE4, 0},
+	{"S_AUTOPICKUPFADE4", 0, SPR_PIKA,  6, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE5, 0},
+	{"S_AUTOPICKUPFADE5", 0, SPR_PIKA,  8, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE6, 0},
+	{"S_AUTOPICKUPFADE6", 0, SPR_PIKA, 10, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE7, 0},
+	{"S_AUTOPICKUPFADE7", 0, SPR_PIKA, 12, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE8, 0},
+	{"S_AUTOPICKUPFADE8", 0, SPR_PIKA, 14, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE1, 0},
 
 	// Explode Ring Pickup
-	{SPR_PIKE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_EXPLODEPICKUP, 0},  // S_EXPLODEPICKUP
+	{"S_EXPLODEPICKUP", 0, SPR_PIKE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_EXPLODEPICKUP, 0},
 
-	{SPR_PIKE,  0, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE2, 0}, // S_EXPLODEPICKUPFADE1
-	{SPR_PIKE,  2, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE3, 0}, // S_EXPLODEPICKUPFADE2
-	{SPR_PIKE,  4, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE4, 0}, // S_EXPLODEPICKUPFADE3
-	{SPR_PIKE,  6, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE5, 0}, // S_EXPLODEPICKUPFADE4
-	{SPR_PIKE,  8, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE6, 0}, // S_EXPLODEPICKUPFADE5
-	{SPR_PIKE, 10, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE7, 0}, // S_EXPLODEPICKUPFADE6
-	{SPR_PIKE, 12, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE8, 0}, // S_EXPLODEPICKUPFADE7
-	{SPR_PIKE, 14, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE1, 0}, // S_EXPLODEPICKUPFADE8
+	{"S_EXPLODEPICKUPFADE1", 0, SPR_PIKE,  0, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE2, 0},
+	{"S_EXPLODEPICKUPFADE2", 0, SPR_PIKE,  2, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE3, 0},
+	{"S_EXPLODEPICKUPFADE3", 0, SPR_PIKE,  4, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE4, 0},
+	{"S_EXPLODEPICKUPFADE4", 0, SPR_PIKE,  6, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE5, 0},
+	{"S_EXPLODEPICKUPFADE5", 0, SPR_PIKE,  8, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE6, 0},
+	{"S_EXPLODEPICKUPFADE6", 0, SPR_PIKE, 10, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE7, 0},
+	{"S_EXPLODEPICKUPFADE7", 0, SPR_PIKE, 12, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE8, 0},
+	{"S_EXPLODEPICKUPFADE8", 0, SPR_PIKE, 14, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE1, 0},
 
 	// Scatter Ring Pickup
-	{SPR_PIKS,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_SCATTERPICKUP, 0},  // S_SCATTERPICKUP
+	{"S_SCATTERPICKUP", 0, SPR_PIKS,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_SCATTERPICKUP, 0},
 
-	{SPR_PIKS,  0, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE2, 0}, // S_SCATTERPICKUPFADE1
-	{SPR_PIKS,  2, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE3, 0}, // S_SCATTERPICKUPFADE2
-	{SPR_PIKS,  4, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE4, 0}, // S_SCATTERPICKUPFADE3
-	{SPR_PIKS,  6, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE5, 0}, // S_SCATTERPICKUPFADE4
-	{SPR_PIKS,  8, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE6, 0}, // S_SCATTERPICKUPFADE5
-	{SPR_PIKS, 10, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE7, 0}, // S_SCATTERPICKUPFADE6
-	{SPR_PIKS, 12, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE8, 0}, // S_SCATTERPICKUPFADE7
-	{SPR_PIKS, 14, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE1, 0}, // S_SCATTERPICKUPFADE8
+	{"S_SCATTERPICKUPFADE1", 0, SPR_PIKS,  0, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE2, 0},
+	{"S_SCATTERPICKUPFADE2", 0, SPR_PIKS,  2, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE3, 0},
+	{"S_SCATTERPICKUPFADE3", 0, SPR_PIKS,  4, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE4, 0},
+	{"S_SCATTERPICKUPFADE4", 0, SPR_PIKS,  6, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE5, 0},
+	{"S_SCATTERPICKUPFADE5", 0, SPR_PIKS,  8, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE6, 0},
+	{"S_SCATTERPICKUPFADE6", 0, SPR_PIKS, 10, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE7, 0},
+	{"S_SCATTERPICKUPFADE7", 0, SPR_PIKS, 12, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE8, 0},
+	{"S_SCATTERPICKUPFADE8", 0, SPR_PIKS, 14, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE1, 0},
 
 	// Grenade Ring Pickup
-	{SPR_PIKG,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_GRENADEPICKUP, 0},  // S_GRENADEPICKUP
+	{"S_GRENADEPICKUP", 0, SPR_PIKG,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_GRENADEPICKUP, 0},
 
-	{SPR_PIKG,  0, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE2, 0}, // S_GRENADEPICKUPFADE1
-	{SPR_PIKG,  2, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE3, 0}, // S_GRENADEPICKUPFADE2
-	{SPR_PIKG,  4, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE4, 0}, // S_GRENADEPICKUPFADE3
-	{SPR_PIKG,  6, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE5, 0}, // S_GRENADEPICKUPFADE4
-	{SPR_PIKG,  8, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE6, 0}, // S_GRENADEPICKUPFADE5
-	{SPR_PIKG, 10, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE7, 0}, // S_GRENADEPICKUPFADE6
-	{SPR_PIKG, 12, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE8, 0}, // S_GRENADEPICKUPFADE7
-	{SPR_PIKG, 14, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE1, 0}, // S_GRENADEPICKUPFADE8
+	{"S_GRENADEPICKUPFADE1", 0, SPR_PIKG,  0, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE2, 0},
+	{"S_GRENADEPICKUPFADE2", 0, SPR_PIKG,  2, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE3, 0},
+	{"S_GRENADEPICKUPFADE3", 0, SPR_PIKG,  4, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE4, 0},
+	{"S_GRENADEPICKUPFADE4", 0, SPR_PIKG,  6, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE5, 0},
+	{"S_GRENADEPICKUPFADE5", 0, SPR_PIKG,  8, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE6, 0},
+	{"S_GRENADEPICKUPFADE6", 0, SPR_PIKG, 10, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE7, 0},
+	{"S_GRENADEPICKUPFADE7", 0, SPR_PIKG, 12, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE8, 0},
+	{"S_GRENADEPICKUPFADE8", 0, SPR_PIKG, 14, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE1, 0},
 
 	// Thrown Weapon Rings
-	{SPR_RNGB, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE2, 0}, // S_THROWNBOUNCE1
-	{SPR_RNGB, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE3, 0}, // S_THROWNBOUNCE2
-	{SPR_RNGB, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE4, 0}, // S_THROWNBOUNCE3
-	{SPR_RNGB, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE5, 0}, // S_THROWNBOUNCE4
-	{SPR_RNGB, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE6, 0}, // S_THROWNBOUNCE5
-	{SPR_RNGB, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE7, 0}, // S_THROWNBOUNCE6
-	{SPR_RNGB, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE1, 0}, // S_THROWNBOUNCE7
-
-	{SPR_RNGI, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY2, 0}, // S_THROWNINFINITY1
-	{SPR_RNGI, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY3, 0}, // S_THROWNINFINITY2
-	{SPR_RNGI, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY4, 0}, // S_THROWNINFINITY3
-	{SPR_RNGI, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY5, 0}, // S_THROWNINFINITY4
-	{SPR_RNGI, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY6, 0}, // S_THROWNINFINITY5
-	{SPR_RNGI, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY7, 0}, // S_THROWNINFINITY6
-	{SPR_RNGI, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY1, 0}, // S_THROWNINFINITY7
-
-	{SPR_TAUT, FF_FULLBRIGHT  , 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC2, 0}, // S_THROWNAUTOMATIC1
-	{SPR_TAUT, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC3, 0}, // S_THROWNAUTOMATIC2
-	{SPR_TAUT, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC4, 0}, // S_THROWNAUTOMATIC3
-	{SPR_TAUT, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC5, 0}, // S_THROWNAUTOMATIC4
-	{SPR_TAUT, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC6, 0}, // S_THROWNAUTOMATIC5
-	{SPR_TAUT, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC7, 0}, // S_THROWNAUTOMATIC6
-	{SPR_TAUT, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC1, 0}, // S_THROWNAUTOMATIC7
-
-	{SPR_RNGE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION2, 0}, // S_THROWNEXPLOSION1
-	{SPR_RNGE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION3, 0}, // S_THROWNEXPLOSION2
-	{SPR_RNGE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION4, 0}, // S_THROWNEXPLOSION3
-	{SPR_RNGE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION5, 0}, // S_THROWNEXPLOSION4
-	{SPR_RNGE, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION6, 0}, // S_THROWNEXPLOSION5
-	{SPR_RNGE, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION7, 0}, // S_THROWNEXPLOSION6
-	{SPR_RNGE, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION1, 0}, // S_THROWNEXPLOSION7
-
-	{SPR_TGRE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE2, 0},  // S_THROWNGRENADE1
-	{SPR_TGRE, FF_FULLBRIGHT| 1, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE3, 0},  // S_THROWNGRENADE2
-	{SPR_TGRE, FF_FULLBRIGHT| 2, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE4, 0},  // S_THROWNGRENADE3
-	{SPR_TGRE, FF_FULLBRIGHT| 3, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE5, 0},  // S_THROWNGRENADE4
-	{SPR_TGRE, FF_FULLBRIGHT| 4, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE6, 0},  // S_THROWNGRENADE5
-	{SPR_TGRE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE7, 0},  // S_THROWNGRENADE6
-	{SPR_TGRE, FF_FULLBRIGHT| 6, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE8, 0},  // S_THROWNGRENADE7
-	{SPR_TGRE, FF_FULLBRIGHT| 7, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE9, 0},  // S_THROWNGRENADE8
-	{SPR_TGRE, FF_FULLBRIGHT| 8, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE10, 0}, // S_THROWNGRENADE9
-	{SPR_TGRE, FF_FULLBRIGHT| 9, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE11, 0}, // S_THROWNGRENADE10
-	{SPR_TGRE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE12, 0}, // S_THROWNGRENADE11
-	{SPR_TGRE, FF_FULLBRIGHT|11, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE13, 0}, // S_THROWNGRENADE12
-	{SPR_TGRE, FF_FULLBRIGHT|12, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE14, 0}, // S_THROWNGRENADE13
-	{SPR_TGRE, FF_FULLBRIGHT|13, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE15, 0}, // S_THROWNGRENADE14
-	{SPR_TGRE, FF_FULLBRIGHT|14, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE16, 0}, // S_THROWNGRENADE15
-	{SPR_TGRE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE17, 0}, // S_THROWNGRENADE16
-	{SPR_TGRE, FF_FULLBRIGHT|16, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE18, 0}, // S_THROWNGRENADE17
-	{SPR_TGRE, FF_FULLBRIGHT|17, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE1, 0},  // S_THROWNGRENADE18
-
-	{SPR_TSCR, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_THROWNSCATTER, 0}, // S_THROWNSCATTER
-
-	{SPR_NULL, 0, 1, {A_RingExplode}, 0, 0, S_XPLD1, 0}, // S_RINGEXPLODE
+	{"S_THROWNBOUNCE1", 0, SPR_RNGB, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE2, 0},
+	{"S_THROWNBOUNCE2", 0, SPR_RNGB, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE3, 0},
+	{"S_THROWNBOUNCE3", 0, SPR_RNGB, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE4, 0},
+	{"S_THROWNBOUNCE4", 0, SPR_RNGB, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE5, 0},
+	{"S_THROWNBOUNCE5", 0, SPR_RNGB, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE6, 0},
+	{"S_THROWNBOUNCE6", 0, SPR_RNGB, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE7, 0},
+	{"S_THROWNBOUNCE7", 0, SPR_RNGB, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE1, 0},
+
+	{"S_THROWNINFINITY1", 0, SPR_RNGI, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY2, 0},
+	{"S_THROWNINFINITY2", 0, SPR_RNGI, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY3, 0},
+	{"S_THROWNINFINITY3", 0, SPR_RNGI, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY4, 0},
+	{"S_THROWNINFINITY4", 0, SPR_RNGI, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY5, 0},
+	{"S_THROWNINFINITY5", 0, SPR_RNGI, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY6, 0},
+	{"S_THROWNINFINITY6", 0, SPR_RNGI, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY7, 0},
+	{"S_THROWNINFINITY7", 0, SPR_RNGI, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY1, 0},
+
+	{"S_THROWNAUTOMATIC1", 0, SPR_TAUT, FF_FULLBRIGHT  , 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC2, 0},
+	{"S_THROWNAUTOMATIC2", 0, SPR_TAUT, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC3, 0},
+	{"S_THROWNAUTOMATIC3", 0, SPR_TAUT, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC4, 0},
+	{"S_THROWNAUTOMATIC4", 0, SPR_TAUT, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC5, 0},
+	{"S_THROWNAUTOMATIC5", 0, SPR_TAUT, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC6, 0},
+	{"S_THROWNAUTOMATIC6", 0, SPR_TAUT, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC7, 0},
+	{"S_THROWNAUTOMATIC7", 0, SPR_TAUT, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC1, 0},
+
+	{"S_THROWNEXPLOSION1", 0, SPR_RNGE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION2, 0},
+	{"S_THROWNEXPLOSION2", 0, SPR_RNGE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION3, 0},
+	{"S_THROWNEXPLOSION3", 0, SPR_RNGE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION4, 0},
+	{"S_THROWNEXPLOSION4", 0, SPR_RNGE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION5, 0},
+	{"S_THROWNEXPLOSION5", 0, SPR_RNGE, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION6, 0},
+	{"S_THROWNEXPLOSION6", 0, SPR_RNGE, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION7, 0},
+	{"S_THROWNEXPLOSION7", 0, SPR_RNGE, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION1, 0},
+
+	{"S_THROWNGRENADE1", 0, SPR_TGRE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE2, 0},
+	{"S_THROWNGRENADE2", 0, SPR_TGRE, FF_FULLBRIGHT| 1, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE3, 0},
+	{"S_THROWNGRENADE3", 0, SPR_TGRE, FF_FULLBRIGHT| 2, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE4, 0},
+	{"S_THROWNGRENADE4", 0, SPR_TGRE, FF_FULLBRIGHT| 3, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE5, 0},
+	{"S_THROWNGRENADE5", 0, SPR_TGRE, FF_FULLBRIGHT| 4, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE6, 0},
+	{"S_THROWNGRENADE6", 0, SPR_TGRE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE7, 0},
+	{"S_THROWNGRENADE7", 0, SPR_TGRE, FF_FULLBRIGHT| 6, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE8, 0},
+	{"S_THROWNGRENADE8", 0, SPR_TGRE, FF_FULLBRIGHT| 7, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE9, 0},
+	{"S_THROWNGRENADE9", 0, SPR_TGRE, FF_FULLBRIGHT| 8, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE10, 0},
+	{"S_THROWNGRENADE10", 0, SPR_TGRE, FF_FULLBRIGHT| 9, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE11, 0},
+	{"S_THROWNGRENADE11", 0, SPR_TGRE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE12, 0},
+	{"S_THROWNGRENADE12", 0, SPR_TGRE, FF_FULLBRIGHT|11, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE13, 0},
+	{"S_THROWNGRENADE13", 0, SPR_TGRE, FF_FULLBRIGHT|12, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE14, 0},
+	{"S_THROWNGRENADE14", 0, SPR_TGRE, FF_FULLBRIGHT|13, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE15, 0},
+	{"S_THROWNGRENADE15", 0, SPR_TGRE, FF_FULLBRIGHT|14, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE16, 0},
+	{"S_THROWNGRENADE16", 0, SPR_TGRE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE17, 0},
+	{"S_THROWNGRENADE17", 0, SPR_TGRE, FF_FULLBRIGHT|16, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE18, 0},
+	{"S_THROWNGRENADE18", 0, SPR_TGRE, FF_FULLBRIGHT|17, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE1, 0},
+
+	{"S_THROWNSCATTER", 0, SPR_TSCR, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_THROWNSCATTER, 0},
+
+	{"S_RINGEXPLODE", 0, SPR_NULL, 0, 1, {A_RingExplode}, 0, 0, S_XPLD1, 0},
 
 	// Coin
-	{SPR_COIN, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COIN2, 0}, // S_COIN1
-	{SPR_COIN, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COIN3, 0}, // S_COIN2
-	{SPR_COIN, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COIN1, 0}, // S_COIN3
+	{"S_COIN1", 0, SPR_COIN, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COIN2, 0},
+	{"S_COIN2", 0, SPR_COIN, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COIN3, 0},
+	{"S_COIN3", 0, SPR_COIN, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COIN1, 0},
 
 	// Coin Sparkle
-	{SPR_CPRK, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COINSPARKLE2, 0}, // S_COINSPARKLE1
-	{SPR_CPRK, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COINSPARKLE3, 0}, // S_COINSPARKLE2
-	{SPR_CPRK, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COINSPARKLE4, 0}, // S_COINSPARKLE3
-	{SPR_CPRK, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL, 0},         // S_COINSPARKLE4
+	{"S_COINSPARKLE1", 0, SPR_CPRK, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COINSPARKLE2, 0},
+	{"S_COINSPARKLE2", 0, SPR_CPRK, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COINSPARKLE3, 0},
+	{"S_COINSPARKLE3", 0, SPR_CPRK, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COINSPARKLE4, 0},
+	{"S_COINSPARKLE4", 0, SPR_CPRK, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL, 0},
 
 	// Goomba
-	{SPR_GOOM, 0, 6, {A_Look}, 0, 0, S_GOOMBA1B, 0}, // S_GOOMBA1
-	{SPR_GOOM, 1, 6, {A_Look}, 0, 0, S_GOOMBA1, 0},  // S_GOOMBA1B
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA3, 0}, // S_GOOMBA2
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA4, 0}, // S_GOOMBA3
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA5, 0}, // S_GOOMBA4
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA6, 0}, // S_GOOMBA5
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA7, 0}, // S_GOOMBA6
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA8, 0}, // S_GOOMBA7
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA9, 0}, // S_GOOMBA8
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA2, 0}, // S_GOOMBA9
-	{SPR_GOOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0},  // S_GOOMBA_DEAD
+	{"S_GOOMBA1", 0, SPR_GOOM, 0, 6, {A_Look}, 0, 0, S_GOOMBA1B, 0},
+	{"S_GOOMBA1B", 0, SPR_GOOM, 1, 6, {A_Look}, 0, 0, S_GOOMBA1, 0},
+	{"S_GOOMBA2", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA3, 0},
+	{"S_GOOMBA3", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA4, 0},
+	{"S_GOOMBA4", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA5, 0},
+	{"S_GOOMBA5", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA6, 0},
+	{"S_GOOMBA6", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA7, 0},
+	{"S_GOOMBA7", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA8, 0},
+	{"S_GOOMBA8", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA9, 0},
+	{"S_GOOMBA9", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA2, 0},
+	{"S_GOOMBA_DEAD", 0, SPR_GOOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0},
 
 	// Blue Goomba
-	{SPR_BGOM, 0, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1B, 0}, // S_BLUEGOOMBA1
-	{SPR_BGOM, 1, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1, 0},  // S_BLUEGOOMBA1B
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA3, 0}, // S_BLUEGOOMBA2
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA4, 0}, // S_BLUEGOOMBA3
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA5, 0}, // S_BLUEGOOMBA4
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA6, 0}, // S_BLUEGOOMBA5
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA7, 0}, // S_BLUEGOOMBA6
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA8, 0}, // S_BLUEGOOMBA7
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA9, 0}, // S_BLUEGOOMBA8
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA2, 0}, // S_BLUEGOOMBA9
-	{SPR_BGOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0},      // S_BLUEGOOMBA_DEAD
+	{"S_BLUEGOOMBA1", 0, SPR_BGOM, 0, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1B, 0},
+	{"S_BLUEGOOMBA1B", 0, SPR_BGOM, 1, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1, 0},
+	{"S_BLUEGOOMBA2", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA3, 0},
+	{"S_BLUEGOOMBA3", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA4, 0},
+	{"S_BLUEGOOMBA4", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA5, 0},
+	{"S_BLUEGOOMBA5", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA6, 0},
+	{"S_BLUEGOOMBA6", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA7, 0},
+	{"S_BLUEGOOMBA7", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA8, 0},
+	{"S_BLUEGOOMBA8", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA9, 0},
+	{"S_BLUEGOOMBA9", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA2, 0},
+	{"S_BLUEGOOMBA_DEAD", 0, SPR_BGOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0},
 
 	// Fire Flower
-	{SPR_FFWR, 0, 3, {NULL}, 0, 0, S_FIREFLOWER2, 0}, // S_FIREFLOWER1
-	{SPR_FFWR, 1, 3, {NULL}, 0, 0, S_FIREFLOWER3, 0}, // S_FIREFLOWER2
-	{SPR_FFWR, 2, 3, {NULL}, 0, 0, S_FIREFLOWER4, 0}, // S_FIREFLOWER3
-	{SPR_FFWR, 3, 3, {NULL}, 0, 0, S_FIREFLOWER1, 0}, // S_FIREFLOWER4
+	{"S_FIREFLOWER1", 0, SPR_FFWR, 0, 3, {NULL}, 0, 0, S_FIREFLOWER2, 0},
+	{"S_FIREFLOWER2", 0, SPR_FFWR, 1, 3, {NULL}, 0, 0, S_FIREFLOWER3, 0},
+	{"S_FIREFLOWER3", 0, SPR_FFWR, 2, 3, {NULL}, 0, 0, S_FIREFLOWER4, 0},
+	{"S_FIREFLOWER4", 0, SPR_FFWR, 3, 3, {NULL}, 0, 0, S_FIREFLOWER1, 0},
 
 	// Thrown Mario Fireball
-	{SPR_FBLL, FF_FULLBRIGHT,   1, {A_SpawnObjectRelative}, 0, MT_FIREBALLTRAIL, S_FIREBALL, 0},   // S_FIREBALL
-	{SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 1, {A_SetScale}, FRACUNIT*3/4, 0, S_FIREBALLTRAIL2, 0}, // S_FIREBALLTRAIL1
-	{SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 8, {A_SetScale}, FRACUNIT/6, 1, S_NULL, 0},             // S_FIREBALLTRAIL2
+	{"S_FIREBALL", 0, SPR_FBLL, FF_FULLBRIGHT,   1, {A_SpawnObjectRelative}, 0, MT_FIREBALLTRAIL, S_FIREBALL, 0},
+	{"S_FIREBALLTRAIL1", 0, SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 1, {A_SetScale}, FRACUNIT*3/4, 0, S_FIREBALLTRAIL2, 0},
+	{"S_FIREBALLTRAIL2", 0, SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 8, {A_SetScale}, FRACUNIT/6, 1, S_NULL, 0},
 
 	// Turtle Shell
-	{SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHELL
+	{"S_SHELL", 0, SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Puma (Mario fireball)
-	{SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_START2, 0},   // S_PUMA_START1
-	{SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_PlaySound}, sfx_s3k70, 1 + (1<<16), S_PUMA_UP1, 0},   // S_PUMA_START2
-	{SPR_PUMA, FF_FULLBRIGHT  , 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP2, 0},   // S_PUMA_UP1
-	{SPR_PUMA, FF_FULLBRIGHT|1, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP3, 0},   // S_PUMA_UP2
-	{SPR_PUMA, FF_FULLBRIGHT|2, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP1, 0},   // S_PUMA_UP3
-	{SPR_PUMA, FF_FULLBRIGHT|3, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN2, 0}, // S_PUMA_DOWN1
-	{SPR_PUMA, FF_FULLBRIGHT|4, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN3, 0}, // S_PUMA_DOWN2
-	{SPR_PUMA, FF_FULLBRIGHT|5, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN1, 0}, // S_PUMA_DOWN3
-
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS20|6, 4,       {NULL},        0, 0, S_PUMATRAIL2, 0},   // S_PUMATRAIL1
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS40|6, 5, {A_SetScale}, FRACUNIT, 1, S_PUMATRAIL3, 0},   // S_PUMATRAIL2
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS50|7, 4,       {NULL},        0, 0, S_PUMATRAIL4, 0},   // S_PUMATRAIL3
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS60|8, 3,       {NULL},        0, 0, S_NULL, 0},         // S_PUMATRAIL4
+	{"S_PUMA_START1", 0, SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_START2, 0},
+	{"S_PUMA_START2", 0, SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_PlaySound}, sfx_s3k70, 1 + (1<<16), S_PUMA_UP1, 0},
+	{"S_PUMA_UP1", 0, SPR_PUMA, FF_FULLBRIGHT  , 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP2, 0},
+	{"S_PUMA_UP2", 0, SPR_PUMA, FF_FULLBRIGHT|1, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP3, 0},
+	{"S_PUMA_UP3", 0, SPR_PUMA, FF_FULLBRIGHT|2, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP1, 0},
+	{"S_PUMA_DOWN1", 0, SPR_PUMA, FF_FULLBRIGHT|3, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN2, 0},
+	{"S_PUMA_DOWN2", 0, SPR_PUMA, FF_FULLBRIGHT|4, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN3, 0},
+	{"S_PUMA_DOWN3", 0, SPR_PUMA, FF_FULLBRIGHT|5, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN1, 0},
+
+	{"S_PUMATRAIL1", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS20|6, 4,       {NULL},        0, 0, S_PUMATRAIL2, 0},
+	{"S_PUMATRAIL2", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS40|6, 5, {A_SetScale}, FRACUNIT, 1, S_PUMATRAIL3, 0},
+	{"S_PUMATRAIL3", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS50|7, 4,       {NULL},        0, 0, S_PUMATRAIL4, 0},
+	{"S_PUMATRAIL4", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS60|8, 3,       {NULL},        0, 0, S_NULL, 0},
 
 	// Hammer
-	{SPR_HAMM, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL, 0}, // S_HAMMER
+	{"S_HAMMER", 0, SPR_HAMM, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL, 0},
 
 	// Koopa
-	{SPR_KOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0},   // S_KOOPA1
-	{SPR_KOOP, 1, 24, {NULL}, 0, 0, S_KOOPA1, 0}, // S_KOOPA2
+	{"S_KOOPA1", 0, SPR_KOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_KOOPA2", 0, SPR_KOOP, 1, 24, {NULL}, 0, 0, S_KOOPA1, 0},
 
-	{SPR_BFLM, 0, 3,{NULL}, 0, 0, S_KOOPAFLAME2, 0}, // S_KOOPAFLAME1
-	{SPR_BFLM, 1, 3,{NULL}, 0, 0, S_KOOPAFLAME3, 0}, // S_KOOPAFLAME2
-	{SPR_BFLM, 2, 3,{NULL}, 0, 0, S_KOOPAFLAME1, 0}, // S_KOOPAFLAME3
+	{"S_KOOPAFLAME1", 0, SPR_BFLM, 0, 3,{NULL}, 0, 0, S_KOOPAFLAME2, 0},
+	{"S_KOOPAFLAME2", 0, SPR_BFLM, 1, 3,{NULL}, 0, 0, S_KOOPAFLAME3, 0},
+	{"S_KOOPAFLAME3", 0, SPR_BFLM, 2, 3,{NULL}, 0, 0, S_KOOPAFLAME1, 0},
 
 	// Axe
-	{SPR_MAXE, 0, 3, {NULL}, 0, 0, S_AXE2, 0}, // S_AXE1
-	{SPR_MAXE, 1, 3, {NULL}, 0, 0, S_AXE3, 0}, // S_AXE2
-	{SPR_MAXE, 2, 3, {NULL}, 0, 0, S_AXE1, 0}, // S_AXE3
+	{"S_AXE1", 0, SPR_MAXE, 0, 3, {NULL}, 0, 0, S_AXE2, 0},
+	{"S_AXE2", 0, SPR_MAXE, 1, 3, {NULL}, 0, 0, S_AXE3, 0},
+	{"S_AXE3", 0, SPR_MAXE, 2, 3, {NULL}, 0, 0, S_AXE1, 0},
 
-	{SPR_MUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MARIOBUSH1
-	{SPR_MUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MARIOBUSH2
-	{SPR_TOAD, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TOAD
+	{"S_MARIOBUSH1", 0, SPR_MUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_MARIOBUSH2", 0, SPR_MUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_TOAD", 0, SPR_TOAD, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Nights Drone
-	{SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN2, 0}, // S_NIGHTSDRONE_MAN1
-	{SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN1, 0}, // S_NIGHTSDRONE_MAN2
+	{"S_NIGHTSDRONE_MAN1", 0, SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN2, 0},
+	{"S_NIGHTSDRONE_MAN2", 0, SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN1, 0},
 
 	// Sparkling point (RETURN TO THE GOAL, etc)
-	{SPR_IVSP, 0, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING2, 0},   // S_NIGHTSDRONE_SPARKLING1
-	{SPR_IVSP, 2, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING3, 0},   // S_NIGHTSDRONE_SPARKLING2
-	{SPR_IVSP, 4, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING4, 0},   // S_NIGHTSDRONE_SPARKLING3
-	{SPR_IVSP, 6, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING5, 0},   // S_NIGHTSDRONE_SPARKLING4
-	{SPR_IVSP, 8, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING6, 0},  // S_NIGHTSDRONE_SPARKLING5
-	{SPR_IVSP, 10, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING7, 0}, // S_NIGHTSDRONE_SPARKLING6
-	{SPR_IVSP, 12, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING8, 0}, // S_NIGHTSDRONE_SPARKLING7
-	{SPR_IVSP, 14, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING9, 0}, // S_NIGHTSDRONE_SPARKLING8
-	{SPR_IVSP, 16, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING10, 0}, // S_NIGHTSDRONE_SPARKLING9
-	{SPR_IVSP, 18, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING11, 0}, // S_NIGHTSDRONE_SPARKLING10
-	{SPR_IVSP, 20, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING12, 0}, // S_NIGHTSDRONE_SPARKLING11
-	{SPR_IVSP, 22, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING13, 0}, // S_NIGHTSDRONE_SPARKLING12
-	{SPR_IVSP, 24, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING14, 0}, // S_NIGHTSDRONE_SPARKLING13
-	{SPR_IVSP, 26, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING15, 0}, // S_NIGHTSDRONE_SPARKLING14
-	{SPR_IVSP, 28, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING16, 0}, // S_NIGHTSDRONE_SPARKLING15
-	{SPR_IVSP, 30, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING1, 0}, // S_NIGHTSDRONE_SPARKLING16
+	{"S_NIGHTSDRONE_SPARKLING1", 0, SPR_IVSP, 0, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING2, 0},
+	{"S_NIGHTSDRONE_SPARKLING2", 0, SPR_IVSP, 2, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING3, 0},
+	{"S_NIGHTSDRONE_SPARKLING3", 0, SPR_IVSP, 4, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING4, 0},
+	{"S_NIGHTSDRONE_SPARKLING4", 0, SPR_IVSP, 6, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING5, 0},
+	{"S_NIGHTSDRONE_SPARKLING5", 0, SPR_IVSP, 8, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING6, 0},
+	{"S_NIGHTSDRONE_SPARKLING6", 0, SPR_IVSP, 10, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING7, 0},
+	{"S_NIGHTSDRONE_SPARKLING7", 0, SPR_IVSP, 12, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING8, 0},
+	{"S_NIGHTSDRONE_SPARKLING8", 0, SPR_IVSP, 14, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING9, 0},
+	{"S_NIGHTSDRONE_SPARKLING9", 0, SPR_IVSP, 16, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING10, 0},
+	{"S_NIGHTSDRONE_SPARKLING10", 0, SPR_IVSP, 18, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING11, 0},
+	{"S_NIGHTSDRONE_SPARKLING11", 0, SPR_IVSP, 20, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING12, 0},
+	{"S_NIGHTSDRONE_SPARKLING12", 0, SPR_IVSP, 22, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING13, 0},
+	{"S_NIGHTSDRONE_SPARKLING13", 0, SPR_IVSP, 24, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING14, 0},
+	{"S_NIGHTSDRONE_SPARKLING14", 0, SPR_IVSP, 26, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING15, 0},
+	{"S_NIGHTSDRONE_SPARKLING15", 0, SPR_IVSP, 28, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING16, 0},
+	{"S_NIGHTSDRONE_SPARKLING16", 0, SPR_IVSP, 30, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING1, 0},
 
 	// NiGHTS GOAL banner (inside the sparkles!)
-	{SPR_GOAL, 0, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL2, 0}, // S_NIGHTSDRONE_GOAL1
-	{SPR_GOAL, 1, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL3, 0}, // S_NIGHTSDRONE_GOAL2
-	{SPR_GOAL, 2, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL4, 0}, // S_NIGHTSDRONE_GOAL3
-	{SPR_GOAL, 3, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL1, 0}, // S_NIGHTSDRONE_GOAL4
+	{"S_NIGHTSDRONE_GOAL1", 0, SPR_GOAL, 0, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL2, 0},
+	{"S_NIGHTSDRONE_GOAL2", 0, SPR_GOAL, 1, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL3, 0},
+	{"S_NIGHTSDRONE_GOAL3", 0, SPR_GOAL, 2, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL4, 0},
+	{"S_NIGHTSDRONE_GOAL4", 0, SPR_GOAL, 3, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL1, 0},
 
 	// Nights Sparkle
-	{SPR_NSPK, FF_FULLBRIGHT, 140, {NULL}, 0, 0, S_NIGHTSPARKLE2, 0},   // S_NIGHTSPARKLE1
-	{SPR_NSPK, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_NIGHTSPARKLE3, 0},   // S_NIGHTSPARKLE2
-	{SPR_NSPK, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_NIGHTSPARKLE4, 0},   // S_NIGHTSPARKLE3
-	{SPR_NSPK, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_NULL, 0},            // S_NIGHTSPARKLE4
+	{"S_NIGHTSPARKLE1", 0, SPR_NSPK, FF_FULLBRIGHT, 140, {NULL}, 0, 0, S_NIGHTSPARKLE2, 0},
+	{"S_NIGHTSPARKLE2", 0, SPR_NSPK, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_NIGHTSPARKLE3, 0},
+	{"S_NIGHTSPARKLE3", 0, SPR_NSPK, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_NIGHTSPARKLE4, 0},
+	{"S_NIGHTSPARKLE4", 0, SPR_NSPK, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_NULL, 0},
 
 	// Red Sparkle
-	{SPR_NSPK, FF_FULLBRIGHT|4, 140, {NULL}, 0, 0, S_NIGHTSPARKLESUPER2, 0}, // S_NIGHTSPARKLESUPER1
-	{SPR_NSPK, FF_FULLBRIGHT|5, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER3, 0},   // S_NIGHTSPARKLESUPER2
-	{SPR_NSPK, FF_FULLBRIGHT|6, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER4, 0},   // S_NIGHTSPARKLESUPER3
-	{SPR_NSPK, FF_FULLBRIGHT|7, 7, {NULL}, 0, 0, S_NULL, 0},                 // S_NIGHTSPARKLESUPER4
+	{"S_NIGHTSPARKLESUPER1", 0, SPR_NSPK, FF_FULLBRIGHT|4, 140, {NULL}, 0, 0, S_NIGHTSPARKLESUPER2, 0},
+	{"S_NIGHTSPARKLESUPER2", 0, SPR_NSPK, FF_FULLBRIGHT|5, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER3, 0},
+	{"S_NIGHTSPARKLESUPER3", 0, SPR_NSPK, FF_FULLBRIGHT|6, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER4, 0},
+	{"S_NIGHTSPARKLESUPER4", 0, SPR_NSPK, FF_FULLBRIGHT|7, 7, {NULL}, 0, 0, S_NULL, 0},
 
 	// Paraloop helper -- THIS IS WHAT DETERMINES THE TIMER NOW
-	{SPR_NULL, 0, 160, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSLOOPHELPER
+	{"S_NIGHTSLOOPHELPER", 0, SPR_NULL, 0, 160, {NULL}, 0, 0, S_NULL, 0},
 
 	// NiGHTS bumper
-	{SPR_NBMP, 0, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER1
-	{SPR_NBMP, 1, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER2
-	{SPR_NBMP, 2, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER3
-	{SPR_NBMP, 3, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER4
-	{SPR_NBMP, 4, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER5
-	{SPR_NBMP, 5, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER6
-	{SPR_NBMP, 6, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER7
-	{SPR_NBMP, 7, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER8
-	{SPR_NBMP, 8, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER9
-	{SPR_NBMP, 9, -1, {NULL}, 0, 0, S_NULL, 0},  // S_NIGHTSBUMPER10
-	{SPR_NBMP, 10, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER11
-	{SPR_NBMP, 11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER12
-
-	{SPR_HOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HOOP
-	{SPR_HOOP, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HOOP_XMASA
-	{SPR_HOOP, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HOOP_XMASB
-
-	{SPR_NSCR, FF_FULLBRIGHT,    -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE10
-	{SPR_NSCR, FF_FULLBRIGHT|1,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE20
-	{SPR_NSCR, FF_FULLBRIGHT|2,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE30
-	{SPR_NSCR, FF_FULLBRIGHT|3,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE40
-	{SPR_NSCR, FF_FULLBRIGHT|4,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE50
-	{SPR_NSCR, FF_FULLBRIGHT|5,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE60
-	{SPR_NSCR, FF_FULLBRIGHT|6,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE70
-	{SPR_NSCR, FF_FULLBRIGHT|7,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE80
-	{SPR_NSCR, FF_FULLBRIGHT|8,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE90
-	{SPR_NSCR, FF_FULLBRIGHT|9,  -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE100
-	{SPR_NSCR, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE10_2
-	{SPR_NSCR, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE20_2
-	{SPR_NSCR, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE30_2
-	{SPR_NSCR, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE40_2
-	{SPR_NSCR, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE50_2
-	{SPR_NSCR, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE60_2
-	{SPR_NSCR, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE70_2
-	{SPR_NSCR, FF_FULLBRIGHT|17, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE80_2
-	{SPR_NSCR, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE90_2
-	{SPR_NSCR, FF_FULLBRIGHT|19, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE100_2
+	{"S_NIGHTSBUMPER1", 0, SPR_NBMP, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER2", 0, SPR_NBMP, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER3", 0, SPR_NBMP, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER4", 0, SPR_NBMP, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER5", 0, SPR_NBMP, 4, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER6", 0, SPR_NBMP, 5, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER7", 0, SPR_NBMP, 6, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER8", 0, SPR_NBMP, 7, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER9", 0, SPR_NBMP, 8, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER10", 0, SPR_NBMP, 9, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER11", 0, SPR_NBMP, 10, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSBUMPER12", 0, SPR_NBMP, 11, -1, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_HOOP", 0, SPR_HOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HOOP_XMASA", 0, SPR_HOOP, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_HOOP_XMASB", 0, SPR_HOOP, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_NIGHTSCORE10", 0, SPR_NSCR, FF_FULLBRIGHT,    -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE20", 0, SPR_NSCR, FF_FULLBRIGHT|1,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE30", 0, SPR_NSCR, FF_FULLBRIGHT|2,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE40", 0, SPR_NSCR, FF_FULLBRIGHT|3,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE50", 0, SPR_NSCR, FF_FULLBRIGHT|4,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE60", 0, SPR_NSCR, FF_FULLBRIGHT|5,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE70", 0, SPR_NSCR, FF_FULLBRIGHT|6,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE80", 0, SPR_NSCR, FF_FULLBRIGHT|7,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE90", 0, SPR_NSCR, FF_FULLBRIGHT|8,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE100", 0, SPR_NSCR, FF_FULLBRIGHT|9,  -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE10_2", 0, SPR_NSCR, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE20_2", 0, SPR_NSCR, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE30_2", 0, SPR_NSCR, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE40_2", 0, SPR_NSCR, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE50_2", 0, SPR_NSCR, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE60_2", 0, SPR_NSCR, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE70_2", 0, SPR_NSCR, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE80_2", 0, SPR_NSCR, FF_FULLBRIGHT|17, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE90_2", 0, SPR_NSCR, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSCORE100_2", 0, SPR_NSCR, FF_FULLBRIGHT|19, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// NiGHTS Paraloop Powerups
-	{SPR_NPRU, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSSUPERLOOP
-	{SPR_NPRU, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSDRILLREFILL
-	{SPR_NPRU, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSHELPER
-	{SPR_NPRU, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSEXTRATIME
-	{SPR_NPRU, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSLINKFREEZE
+	{"S_NIGHTSSUPERLOOP", 0, SPR_NPRU, 0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSDRILLREFILL", 0, SPR_NPRU, 1, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSHELPER", 0, SPR_NPRU, 2, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSEXTRATIME", 0, SPR_NPRU, 3, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_NIGHTSLINKFREEZE", 0, SPR_NPRU, 4, -1, {NULL}, 0, 0, S_NULL, 0},
 
-	{SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGCAPSULE
+	{"S_EGGCAPSULE", 0, SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL, 0},
 
 	// Orbiting Chaos Emeralds/Ideya for NiGHTS
-	{SPR_CEMG, FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1, 0}, // S_ORBITEM1
-	{SPR_CEMG, FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2, 0}, // S_ORBITEM2
-	{SPR_CEMG, FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3, 0}, // S_ORBITEM3
-	{SPR_CEMG, FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4, 0}, // S_ORBITEM4
-	{SPR_CEMG, FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5, 0}, // S_ORBITEM5
-	{SPR_CEMG, FF_FULLBRIGHT|5, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6, 0}, // S_ORBITEM6
-	{SPR_CEMG, FF_FULLBRIGHT|6, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7, 0}, // S_ORBITEM7
-	{SPR_CEMG, FF_FULLBRIGHT|7, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8, 0}, // S_ORBITEM8
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1, 0}, // S_ORBIDYA1
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2, 0}, // S_ORBIDYA2
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3, 0}, // S_ORBIDYA3
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA4, 0}, // S_ORBIDYA4
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA5, 0}, // S_ORBIDYA5
+	{"S_ORBITEM1", 0, SPR_CEMG, FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1, 0},
+	{"S_ORBITEM2", 0, SPR_CEMG, FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2, 0},
+	{"S_ORBITEM3", 0, SPR_CEMG, FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3, 0},
+	{"S_ORBITEM4", 0, SPR_CEMG, FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4, 0},
+	{"S_ORBITEM5", 0, SPR_CEMG, FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5, 0},
+	{"S_ORBITEM6", 0, SPR_CEMG, FF_FULLBRIGHT|5, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6, 0},
+	{"S_ORBITEM7", 0, SPR_CEMG, FF_FULLBRIGHT|6, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7, 0},
+	{"S_ORBITEM8", 0, SPR_CEMG, FF_FULLBRIGHT|7, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8, 0},
+	{"S_ORBIDYA1", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1, 0},
+	{"S_ORBIDYA2", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2, 0},
+	{"S_ORBIDYA3", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3, 0},
+	{"S_ORBIDYA4", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA4, 0},
+	{"S_ORBIDYA5", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA5, 0},
 
 	// Flicky helper for NiGHTS
-	{SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER2, 0}, // S_NIGHTOPIANHELPER1
-	{SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER3, 0}, // S_NIGHTOPIANHELPER2
-	{SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER4, 0}, // S_NIGHTOPIANHELPER3
-	{SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER5, 0}, // S_NIGHTOPIANHELPER4
-	{SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER6, 0}, // S_NIGHTOPIANHELPER5
-	{SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER7, 0}, // S_NIGHTOPIANHELPER6
-	{SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER8, 0}, // S_NIGHTOPIANHELPER7
-	{SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER9, 0}, // S_NIGHTOPIANHELPER8
-	{SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER1, 0}, // S_NIGHTOPIANHELPER9
+	{"S_NIGHTOPIANHELPER1", 0, SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER2, 0},
+	{"S_NIGHTOPIANHELPER2", 0, SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER3, 0},
+	{"S_NIGHTOPIANHELPER3", 0, SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER4, 0},
+	{"S_NIGHTOPIANHELPER4", 0, SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER5, 0},
+	{"S_NIGHTOPIANHELPER5", 0, SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER6, 0},
+	{"S_NIGHTOPIANHELPER6", 0, SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER7, 0},
+	{"S_NIGHTOPIANHELPER7", 0, SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER8, 0},
+	{"S_NIGHTOPIANHELPER8", 0, SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER9, 0},
+	{"S_NIGHTOPIANHELPER9", 0, SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER1, 0},
 
 	// Nightopian
-	{SPR_NTPN, 0, 2, {A_Look}, 1, 1, S_PIAN_LOOK2, 0}, // S_PIAN_LOOK1
-	{SPR_NTPN, 1, 2, {A_Look}, 1, 1, S_PIAN_LOOK3, 0}, // S_PIAN_LOOK2
-	{SPR_NTPN, 2, 2, {A_Look}, 1, 1, S_PIAN_LOOK1, 0}, // S_PIAN_LOOK3
-	{SPR_NTPN, 0, 2, {A_JetgThink}, 0, 0, S_PIAN_FLY2, 0}, // S_PIAN_FLY1
-	{SPR_NTPN, 1, 2, {NULL}, 0, 0, S_PIAN_FLY3, 0}, // S_PIAN_FLY2
-	{SPR_NTPN, 2, 2, {NULL}, 0, 0, S_PIAN_FLY1, 0}, // S_PIAN_FLY3
-	{SPR_NTPN, 3|FF_ANIMATE, 24, {NULL}, 2, 2, S_PIAN_FLY1, 0}, // S_PIAN_SING
+	{"S_PIAN_LOOK1", 0, SPR_NTPN, 0, 2, {A_Look}, 1, 1, S_PIAN_LOOK2, 0},
+	{"S_PIAN_LOOK2", 0, SPR_NTPN, 1, 2, {A_Look}, 1, 1, S_PIAN_LOOK3, 0},
+	{"S_PIAN_LOOK3", 0, SPR_NTPN, 2, 2, {A_Look}, 1, 1, S_PIAN_LOOK1, 0},
+	{"S_PIAN_FLY1", 0, SPR_NTPN, 0, 2, {A_JetgThink}, 0, 0, S_PIAN_FLY2, 0},
+	{"S_PIAN_FLY2", 0, SPR_NTPN, 1, 2, {NULL}, 0, 0, S_PIAN_FLY3, 0},
+	{"S_PIAN_FLY3", 0, SPR_NTPN, 2, 2, {NULL}, 0, 0, S_PIAN_FLY1, 0},
+	{"S_PIAN_SING", 0, SPR_NTPN, 3|FF_ANIMATE, 24, {NULL}, 2, 2, S_PIAN_FLY1, 0},
 
 	// Shleep
-	{SPR_SHLP, 0, 15, {NULL}, 0, 0, S_SHLEEP2, 0}, // S_SHLEEP1
-	{SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP3, 0}, // S_SHLEEP2
-	{SPR_SHLP, 2, 15, {NULL}, 0, 0, S_SHLEEP4, 0}, // S_SHLEEP3
-	{SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP1, 0}, // S_SHLEEP4
-	{SPR_SHLP, 3, 1, {A_Scream},  0, 0, S_SHLEEPBOUNCE2, 0}, // S_SHLEEPBOUNCE1
-	{SPR_SHLP, 3, 1, {A_ZThrust}, 9, 0, S_SHLEEPBOUNCE3, 0}, // S_SHLEEPBOUNCE2
-	{SPR_SHLP, 3, 400, {A_SetObjectFlags}, MF_SLIDEME|MF_ENEMY|MF_BOUNCE|MF_NOCLIP|MF_NOCLIPHEIGHT, 0, S_NULL, 0}, // S_SHLEEPBOUNCE3
+	{"S_SHLEEP1", 0, SPR_SHLP, 0, 15, {NULL}, 0, 0, S_SHLEEP2, 0},
+	{"S_SHLEEP2", 0, SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP3, 0},
+	{"S_SHLEEP3", 0, SPR_SHLP, 2, 15, {NULL}, 0, 0, S_SHLEEP4, 0},
+	{"S_SHLEEP4", 0, SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP1, 0},
+	{"S_SHLEEPBOUNCE1", 0, SPR_SHLP, 3, 1, {A_Scream},  0, 0, S_SHLEEPBOUNCE2, 0},
+	{"S_SHLEEPBOUNCE2", 0, SPR_SHLP, 3, 1, {A_ZThrust}, 9, 0, S_SHLEEPBOUNCE3, 0},
+	{"S_SHLEEPBOUNCE3", 0, SPR_SHLP, 3, 400, {A_SetObjectFlags}, MF_SLIDEME|MF_ENEMY|MF_BOUNCE|MF_NOCLIP|MF_NOCLIPHEIGHT, 0, S_NULL, 0},
 
 	// Secret badniks and hazards, shhhh
-	{SPR_PENG, 0, 2, {A_Look},  0, 0, S_PENGUINATOR_LOOK, 0},    // S_PENGUINATOR_LOOK
-	{SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE2, 0}, // S_PENGUINATOR_WADDLE1
-	{SPR_PENG, 1, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE3, 0}, // S_PENGUINATOR_WADDLE2
-	{SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE4, 0}, // S_PENGUINATOR_WADDLE3
-	{SPR_PENG, 2, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE1, 0}, // S_PENGUINATOR_WADDLE4
-	{SPR_PENG, 0,  0, {A_FaceTarget},      0,  0, S_PENGUINATOR_SLIDE2, 0}, // S_PENGUINATOR_SLIDE1
-	{SPR_PENG, 3,  5, {A_BunnyHop},        4, 10, S_PENGUINATOR_SLIDE3, 0}, // S_PENGUINATOR_SLIDE2
-	{SPR_PENG, 4, 90, {A_PlayAttackSound}, 0,  0, S_PENGUINATOR_SLIDE4, 0}, // S_PENGUINATOR_SLIDE3
-	{SPR_PENG, 3,  5, {A_Thrust},          0,  1, S_PENGUINATOR_SLIDE5, 0}, // S_PENGUINATOR_SLIDE4
-	{SPR_PENG, 0,  5, {A_FaceTarget},      0,  0, S_PENGUINATOR_LOOK, 0},   // S_PENGUINATOR_SLIDE5
-
-	{SPR_POPH, 0,  2, {A_Look},  (2048<<16)|1,           0, S_POPHAT_LOOK, 0},   // S_POPHAT_LOOK
-	{SPR_POPH, 1,  0, {A_MultiShotDist}, (MT_SPINDUST<<16)|4, 24, S_POPHAT_SHOOT2, 0}, // S_POPHAT_SHOOT1
-	{SPR_POPH, 1,  2, {A_LobShot}, MT_POPSHOT, (70<<16)|60, S_POPHAT_SHOOT3, 0}, // S_POPHAT_SHOOT2
-	{SPR_POPH, 2,  1, {NULL},               0,           0, S_POPHAT_SHOOT4, 0}, // S_POPHAT_SHOOT3
-	{SPR_POPH, 0, 57, {NULL},               0,           0, S_POPHAT_LOOK, 0},   // S_POPHAT_SHOOT4
-	{SPR_POPH, 3,  3, {A_SpawnObjectRelative}, 0, MT_POPSHOT_TRAIL, S_POPSHOT, 0},   // S_POPSHOT
-	{SPR_NULL, 0,  2, {NULL},                  0, 0,                S_SPINDUST1, 0}, // S_POPSHOT_TRAIL
-
-	{SPR_HIVE, 0,  5, {A_Look}, 1, 1, S_HIVEELEMENTAL_LOOK, 0}, // S_HIVEELEMENTAL_LOOK
-	{SPR_HIVE, 0, 14, {A_PlaySound}, sfx_s3k76, 1, S_HIVEELEMENTAL_PREPARE2, 0}, // S_HIVEELEMENTAL_PREPARE1
-	{SPR_HIVE, 0,  6, {A_PlaySound}, sfx_s3k8c, 1, S_HIVEELEMENTAL_SHOOT1, 0}, // S_HIVEELEMENTAL_PREPARE2
-	{SPR_HIVE, 1,  4, {A_WhoCaresIfYourSonIsABee}, (MT_BUMBLEBORE<<16)|4, (1<<16)|32, S_HIVEELEMENTAL_SHOOT2, 0}, // S_HIVEELEMENTAL_SHOOT1
-	{SPR_HIVE, 2,  2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT, 0}, // S_HIVEELEMENTAL_SHOOT2
-	{SPR_HIVE, 0,  5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT, 0}, // S_HIVEELEMENTAL_DORMANT
-	{SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK, 0}, // S_HIVEELEMENTAL_PAIN
-	{SPR_HIVE, 3,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE2, 0}, // S_HIVEELEMENTAL_DIE1
-	{SPR_NULL, 0,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE3, 0}, // S_HIVEELEMENTAL_DIE2
-	{SPR_NULL, 0,  0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY, 0}, // S_HIVEELEMENTAL_DIE3
-
-	{SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1, 0}, // S_BUMBLEBORE_SPAWN
-	{SPR_BUMB, 0,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK2, 0}, // S_BUMBLEBORE_LOOK1
-	{SPR_BUMB, 1,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK1, 0}, // S_BUMBLEBORE_LOOK2
-	{SPR_BUMB, 0,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY2, 0}, // S_BUMBLEBORE_FLY1
-	{SPR_BUMB, 1,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY1, 0}, // S_BUMBLEBORE_FLY2
-	{SPR_BUMB, 2|FF_FULLBRIGHT,  12, {A_ZThrust},  4, (1<<16)|1, S_BUMBLEBORE_FALL1, 0},  // S_BUMBLEBORE_RAISE
-	{SPR_BUMB, 2|FF_FULLBRIGHT,   0, {A_ZThrust}, -8, (1<<16)|1, S_BUMBLEBORE_FALL2, 0},  // S_BUMBLEBORE_FALL1
-	{SPR_BUMB, 2|FF_FULLBRIGHT, 300, {NULL},       0,         0, S_BUMBLEBORE_DIE, 0},    // S_BUMBLEBORE_FALL2
-	{SPR_BUMB, 4, 3, {A_MultiShotDist}, (MT_DUST<<16)|6, -40, S_BUMBLEBORE_STUCK2, 0},    // S_BUMBLEBORE_STUCK1
-	{SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE, 0}, // S_BUMBLEBORE_STUCK2
-	{SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1, 0}, // S_BUMBLEBORE_DIE
-
-	{SPR_BBUZ,          0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUGGLEIDLE
-	{SPR_BBUZ, FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL, 0}, // S_BUGGLEFLY
-
-	{SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1, 0}, // S_SMASHSPIKE_FLOAT
-	{SPR_FMCE, 0,  4, {A_ZThrust},  4, (1<<16)|1, S_SMASHSPIKE_EASE2, 0}, // S_SMASHSPIKE_EASE1
-	{SPR_FMCE, 0,  4, {A_ZThrust},  0, (1<<16)|1, S_SMASHSPIKE_FALL, 0},  // S_SMASHSPIKE_EASE2
-	{SPR_FMCE, 0,  2, {A_ZThrust}, -6,         1, S_SMASHSPIKE_FALL, 0},  // S_SMASHSPIKE_FALL
-	{SPR_FMCE, 1,  2, {A_MultiShotDist}, (MT_DUST<<16)|10, -48, S_SMASHSPIKE_STOMP2, 0}, // S_SMASHSPIKE_STOMP1
-	{SPR_FMCE, 2, 14, {NULL}, 0, 0, S_SMASHSPIKE_RISE1, 0}, // S_SMASHSPIKE_STOMP2
-	{SPR_FMCE, 1,  2, {NULL}, 0, 0, S_SMASHSPIKE_RISE2, 0}, // S_SMASHSPIKE_RISE1
-	{SPR_FMCE, 0,  2, {A_ZThrust}, 6, (1<<16)|1, S_SMASHSPIKE_RISE2, 0}, // S_SMASHSPIKE_RISE2
-
-	{SPR_CACO, 0,  5, {A_Look}, (1100<<16)|1, 0, S_CACO_LOOK, 0}, // S_CACO_LOOK
-	{SPR_CACO, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|7, -48, S_CACO_WAKE2, 0}, // S_CACO_WAKE1
-	{SPR_CACO, 1, 10, {A_ZThrust}, 4, (1<<16)|1, S_CACO_WAKE3, 0}, // S_CACO_WAKE2
-	{SPR_CACO, 2,  8, {A_ZThrust}, 2, (1<<16)|1, S_CACO_WAKE4, 0}, // S_CACO_WAKE3
-	{SPR_CACO, 2,  4, {A_ZThrust}, 0, (1<<16)|1, S_CACO_ROAR, 0},  // S_CACO_WAKE4
-	{SPR_CACO, 2, 10, {A_PlayActiveSound}, 0, 0, S_CACO_CHASE, 0}, // S_CACO_ROAR
-	{SPR_CACO, 2,  5, {A_JetChase}, 0, 0, S_CACO_CHASE_REPEAT, 0}, // S_CACO_CHASE
-	{SPR_CACO, 2,  0, {A_Repeat}, 5, S_CACO_CHASE, S_CACO_RANDOM, 0}, // S_CACO_CHASE_REPEAT
-	{SPR_CACO, 2,  0, {A_RandomState}, S_CACO_PREPARE_SOUND, S_CACO_CHASE, S_CACO_RANDOM, 0}, // S_CACO_RANDOM
-	{SPR_CACO, 2,  8, {A_PlaySound}, sfx_s3k95, 1, S_CACO_PREPARE1, 0},  // S_CACO_PREPARE_SOUND
-	{SPR_CACO, 3,               8, {NULL}, 0, 0, S_CACO_PREPARE2, 0},    // S_CACO_PREPARE1
-	{SPR_CACO, 4|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_PREPARE3, 0},    // S_CACO_PREPARE2
-	{SPR_CACO, 5|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_SHOOT_SOUND, 0}, // S_CACO_PREPARE3
-	{SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_PlaySound}, sfx_s3k4e, 1, S_CACO_SHOOT1, 0}, // S_CACO_SHOOT_SOUND
-	{SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_CACOFIRE_EXPLODE1, S_CACO_SHOOT2, 0}, // S_CACO_SHOOT1
-	{SPR_CACO, 4|FF_FULLBRIGHT, 6, {A_FireShot}, MT_CACOFIRE, -24, S_CACO_CLOSE, 0}, // S_CACO_SHOOT2
-	{SPR_CACO, 3,              15, {NULL}, 0, 0, S_CACO_CHASE, 0}, // S_CACO_CLOSE
-	{SPR_CACO, 10, 0, {A_SetObjectFlags}, MF_NOBLOCKMAP, 0, S_CACO_DIE_GIB1, 0}, // S_CACO_DIE_FLAGS
-	{SPR_CACO, 10, 0, {A_NapalmScatter}, (7<<16)|MT_CACOSHARD, (30<<16)|20, S_CACO_DIE_GIB2, 0}, // S_CACO_DIE_GIB1
-	{SPR_CACO, 10, 0, {A_NapalmScatter}, (10<<16)|MT_CACOSHARD, (24<<16)|32, S_CACO_DIE_SCREAM, 0}, // S_CACO_DIE_GIB2
-	{SPR_CACO, 10, 0, {A_Scream}, 0, 0, S_CACO_DIE_SHATTER, 0}, // S_CACO_DIE_SCREAM
-	{SPR_CACO, 10, 0, {A_PlaySound}, sfx_pumpkn, 1, S_CACO_DIE_FALL, 0}, // S_CACO_DIE_SHATTER
-	{SPR_CACO, 10, 250, {A_FlickySpawn}, (1<<16), 0, S_NULL, 0}, // S_CACO_DIE_FALL
-
-	{SPR_CACO, 6, 0, {A_RandomState}, S_CACOSHARD1_1, S_CACOSHARD2_1, S_NULL, 0}, // S_CACOSHARD_RANDOMIZE
-	{SPR_CACO, 6, 3, {NULL}, 0, 0, S_CACOSHARD1_2, 0}, // S_CACOSHARD1_1
-	{SPR_CACO, 7, 3, {NULL}, 0, 0, S_CACOSHARD1_1, 0}, // S_CACOSHARD1_2
-	{SPR_CACO, 8, 3, {NULL}, 0, 0, S_CACOSHARD2_2, 0}, // S_CACOSHARD2_1
-	{SPR_CACO, 9, 3, {NULL}, 0, 0, S_CACOSHARD2_1, 0}, // S_CACOSHARD2_2
-	{SPR_BAL2,   FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE2, 0}, // S_CACOFIRE1
-	{SPR_BAL2, 1|FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE3, 0}, // S_CACOFIRE2
-	{SPR_BAL2,   FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CACOFIRE1, 0}, // S_CACOFIRE3
-	{SPR_BAL2, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE2, 0}, // S_CACOFIRE_EXPLODE1
-	{SPR_BAL2, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE3, 0}, // S_CACOFIRE_EXPLODE2
-	{SPR_BAL2, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE4, 0}, // S_CACOFIRE_EXPLODE3
-	{SPR_BAL2, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},      // S_CACOFIRE_EXPLODE4
-
-	{SPR_SBOB, 1, 10, {A_ZThrust}, -2, (1<<16)|1, S_SPINBOBERT_MOVE_UP, 0},       // S_SPINBOBERT_MOVE_FLIPUP
-	{SPR_SBOB, 0, 45, {A_ZThrust},  4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPDOWN, 0}, // S_SPINBOBERT_MOVE_UP
-	{SPR_SBOB, 1, 10, {A_ZThrust},  2, (1<<16)|1, S_SPINBOBERT_MOVE_DOWN, 0},     // S_SPINBOBERT_MOVE_FLIPDOWN
-	{SPR_SBOB, 2, 45, {A_ZThrust}, -4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPUP, 0},   // S_SPINBOBERT_MOVE_DOWN
-	{SPR_SBSK, FF_FULLBRIGHT, 1, {A_RotateSpikeBall},       0,                        0, S_SPINBOBERT_FIRE_GHOST, 0}, // S_SPINBOBERT_FIRE_MOVE
-	{SPR_SBSK, FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_SPINBOBERT_FIRE_TRAIL1, S_SPINBOBERT_FIRE_MOVE, 0},  // S_SPINBOBERT_FIRE_GHOST
-	{SPR_SBFL, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL2, 0}, // S_SPINBOBERT_FIRE_TRAIL1
-	{SPR_SBFL, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL3, 0}, // S_SPINBOBERT_FIRE_TRAIL2
-	{SPR_SBFL,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},                   // S_SPINBOBERT_FIRE_TRAIL3
-
-	{SPR_HBAT, 0,  5, {A_Look}, (900<<16)|1, 0, S_HANGSTER_LOOK, 0}, // S_HANGSTER_LOOK
-	{SPR_HBAT, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|10, -34, S_HANGSTER_SWOOP2, 0}, // S_HANGSTER_SWOOP1
-	{SPR_HBAT, 1,  2, {A_ZThrust}, -8, (1<<16)|1, S_HANGSTER_SWOOP2, 0}, // S_HANGSTER_SWOOP2
-	{SPR_HBAT, 1,  6, {A_ZThrust}, -5, (1<<16), S_HANGSTER_ARC2, 0}, // S_HANGSTER_ARC1
-	{SPR_HBAT, 1,  5, {A_ZThrust}, -2, (1<<16), S_HANGSTER_ARC3, 0}, // S_HANGSTER_ARC2
-	{SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_FLY1, 0}, // S_HANGSTER_ARC3
-	{SPR_HBAT, 1,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY2, 0}, // S_HANGSTER_FLY1
-	{SPR_HBAT, 2,  1, {A_PlaySound}, sfx_s3k52, 1, S_HANGSTER_FLY3, 0}, // S_HANGSTER_FLY2
-	{SPR_HBAT, 3,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY4, 0}, // S_HANGSTER_FLY3
-	{SPR_HBAT, 2,  1, {A_Thrust}, 6, 1, S_HANGSTER_FLYREPEAT, 0}, // S_HANGSTER_FLY4
-	{SPR_HBAT, 2,  0, {A_Repeat}, 12, S_HANGSTER_FLY1, S_HANGSTER_ARCUP1, 0}, // S_HANGSTER_FLYREPEAT
-	{SPR_HBAT, 1,  5, {A_ZThrust},  2, (1<<16), S_HANGSTER_ARCUP2, 0}, // S_HANGSTER_ARCUP1
-	{SPR_HBAT, 1,  6, {A_ZThrust},  5, (1<<16), S_HANGSTER_ARCUP3, 0}, // S_HANGSTER_ARCUP2
-	{SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_RETURN1, 0}, // S_HANGSTER_ARCUP3
-	{SPR_HBAT, 1,  1, {A_ZThrust},  8, (1<<16), S_HANGSTER_RETURN2, 0}, // S_HANGSTER_RETURN1
-	{SPR_HBAT, 3,  1, {NULL}, 0, 0, S_HANGSTER_RETURN1, 0}, // S_HANGSTER_RETURN2
-	{SPR_HBAT, 0, 15, {NULL}, 0, 0, S_HANGSTER_LOOK, 0}, // S_HANGSTER_RETURN3
-
-	{SPR_NULL, 0,  35, {NULL}, 0, 0, S_CRUMBLE2, 0}, // S_CRUMBLE1
-	{SPR_NULL, 0, 105, {A_Scream}, 0, 0, S_NULL, 0}, // S_CRUMBLE2
+	{"S_PENGUINATOR_LOOK", 0, SPR_PENG, 0, 2, {A_Look},  0, 0, S_PENGUINATOR_LOOK, 0},
+	{"S_PENGUINATOR_WADDLE1", 0, SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE2, 0},
+	{"S_PENGUINATOR_WADDLE2", 0, SPR_PENG, 1, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE3, 0},
+	{"S_PENGUINATOR_WADDLE3", 0, SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE4, 0},
+	{"S_PENGUINATOR_WADDLE4", 0, SPR_PENG, 2, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE1, 0},
+	{"S_PENGUINATOR_SLIDE1", 0, SPR_PENG, 0,  0, {A_FaceTarget},      0,  0, S_PENGUINATOR_SLIDE2, 0},
+	{"S_PENGUINATOR_SLIDE2", 0, SPR_PENG, 3,  5, {A_BunnyHop},        4, 10, S_PENGUINATOR_SLIDE3, 0},
+	{"S_PENGUINATOR_SLIDE3", 0, SPR_PENG, 4, 90, {A_PlayAttackSound}, 0,  0, S_PENGUINATOR_SLIDE4, 0},
+	{"S_PENGUINATOR_SLIDE4", 0, SPR_PENG, 3,  5, {A_Thrust},          0,  1, S_PENGUINATOR_SLIDE5, 0},
+	{"S_PENGUINATOR_SLIDE5", 0, SPR_PENG, 0,  5, {A_FaceTarget},      0,  0, S_PENGUINATOR_LOOK, 0},
+
+	{"S_POPHAT_LOOK", 0, SPR_POPH, 0,  2, {A_Look},  (2048<<16)|1,           0, S_POPHAT_LOOK, 0},
+	{"S_POPHAT_SHOOT1", 0, SPR_POPH, 1,  0, {A_MultiShotDist}, (MT_SPINDUST<<16)|4, 24, S_POPHAT_SHOOT2, 0},
+	{"S_POPHAT_SHOOT2", 0, SPR_POPH, 1,  2, {A_LobShot}, MT_POPSHOT, (70<<16)|60, S_POPHAT_SHOOT3, 0},
+	{"S_POPHAT_SHOOT3", 0, SPR_POPH, 2,  1, {NULL},               0,           0, S_POPHAT_SHOOT4, 0},
+	{"S_POPHAT_SHOOT4", 0, SPR_POPH, 0, 57, {NULL},               0,           0, S_POPHAT_LOOK, 0},
+	{"S_POPSHOT", 0, SPR_POPH, 3,  3, {A_SpawnObjectRelative}, 0, MT_POPSHOT_TRAIL, S_POPSHOT, 0},
+	{"S_POPSHOT_TRAIL", 0, SPR_NULL, 0,  2, {NULL},                  0, 0,                S_SPINDUST1, 0},
+
+	{"S_HIVEELEMENTAL_LOOK", 0, SPR_HIVE, 0,  5, {A_Look}, 1, 1, S_HIVEELEMENTAL_LOOK, 0},
+	{"S_HIVEELEMENTAL_PREPARE1", 0, SPR_HIVE, 0, 14, {A_PlaySound}, sfx_s3k76, 1, S_HIVEELEMENTAL_PREPARE2, 0},
+	{"S_HIVEELEMENTAL_PREPARE2", 0, SPR_HIVE, 0,  6, {A_PlaySound}, sfx_s3k8c, 1, S_HIVEELEMENTAL_SHOOT1, 0},
+	{"S_HIVEELEMENTAL_SHOOT1", 0, SPR_HIVE, 1,  4, {A_WhoCaresIfYourSonIsABee}, (MT_BUMBLEBORE<<16)|4, (1<<16)|32, S_HIVEELEMENTAL_SHOOT2, 0},
+	{"S_HIVEELEMENTAL_SHOOT2", 0, SPR_HIVE, 2,  2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT, 0},
+	{"S_HIVEELEMENTAL_DORMANT", 0, SPR_HIVE, 0,  5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT, 0},
+	{"S_HIVEELEMENTAL_PAIN", 0, SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK, 0},
+	{"S_HIVEELEMENTAL_DIE1", 0, SPR_HIVE, 3,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE2, 0},
+	{"S_HIVEELEMENTAL_DIE2", 0, SPR_NULL, 0,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE3, 0},
+	{"S_HIVEELEMENTAL_DIE3", 0, SPR_NULL, 0,  0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY, 0},
+
+	{"S_BUMBLEBORE_SPAWN", 0, SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1, 0},
+	{"S_BUMBLEBORE_LOOK1", 0, SPR_BUMB, 0,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK2, 0},
+	{"S_BUMBLEBORE_LOOK2", 0, SPR_BUMB, 1,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK1, 0},
+	{"S_BUMBLEBORE_FLY1", 0, SPR_BUMB, 0,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY2, 0},
+	{"S_BUMBLEBORE_FLY2", 0, SPR_BUMB, 1,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY1, 0},
+	{"S_BUMBLEBORE_RAISE", 0, SPR_BUMB, 2|FF_FULLBRIGHT,  12, {A_ZThrust},  4, (1<<16)|1, S_BUMBLEBORE_FALL1, 0},
+	{"S_BUMBLEBORE_FALL1", 0, SPR_BUMB, 2|FF_FULLBRIGHT,   0, {A_ZThrust}, -8, (1<<16)|1, S_BUMBLEBORE_FALL2, 0},
+	{"S_BUMBLEBORE_FALL2", 0, SPR_BUMB, 2|FF_FULLBRIGHT, 300, {NULL},       0,         0, S_BUMBLEBORE_DIE, 0},
+	{"S_BUMBLEBORE_STUCK1", 0, SPR_BUMB, 4, 3, {A_MultiShotDist}, (MT_DUST<<16)|6, -40, S_BUMBLEBORE_STUCK2, 0},
+	{"S_BUMBLEBORE_STUCK2", 0, SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE, 0},
+	{"S_BUMBLEBORE_DIE", 0, SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1, 0},
+
+	{"S_BUGGLEIDLE", 0, SPR_BBUZ,          0, -1, {NULL}, 0, 0, S_NULL, 0},
+	{"S_BUGGLEFLY", 0, SPR_BBUZ, FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL, 0},
+
+	{"S_SMASHSPIKE_FLOAT", 0, SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1, 0},
+	{"S_SMASHSPIKE_EASE1", 0, SPR_FMCE, 0,  4, {A_ZThrust},  4, (1<<16)|1, S_SMASHSPIKE_EASE2, 0},
+	{"S_SMASHSPIKE_EASE2", 0, SPR_FMCE, 0,  4, {A_ZThrust},  0, (1<<16)|1, S_SMASHSPIKE_FALL, 0},
+	{"S_SMASHSPIKE_FALL", 0, SPR_FMCE, 0,  2, {A_ZThrust}, -6,         1, S_SMASHSPIKE_FALL, 0},
+	{"S_SMASHSPIKE_STOMP1", 0, SPR_FMCE, 1,  2, {A_MultiShotDist}, (MT_DUST<<16)|10, -48, S_SMASHSPIKE_STOMP2, 0},
+	{"S_SMASHSPIKE_STOMP2", 0, SPR_FMCE, 2, 14, {NULL}, 0, 0, S_SMASHSPIKE_RISE1, 0},
+	{"S_SMASHSPIKE_RISE1", 0, SPR_FMCE, 1,  2, {NULL}, 0, 0, S_SMASHSPIKE_RISE2, 0},
+	{"S_SMASHSPIKE_RISE2", 0, SPR_FMCE, 0,  2, {A_ZThrust}, 6, (1<<16)|1, S_SMASHSPIKE_RISE2, 0},
+
+	{"S_CACO_LOOK", 0, SPR_CACO, 0,  5, {A_Look}, (1100<<16)|1, 0, S_CACO_LOOK, 0},
+	{"S_CACO_WAKE1", 0, SPR_CACO, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|7, -48, S_CACO_WAKE2, 0},
+	{"S_CACO_WAKE2", 0, SPR_CACO, 1, 10, {A_ZThrust}, 4, (1<<16)|1, S_CACO_WAKE3, 0},
+	{"S_CACO_WAKE3", 0, SPR_CACO, 2,  8, {A_ZThrust}, 2, (1<<16)|1, S_CACO_WAKE4, 0},
+	{"S_CACO_WAKE4", 0, SPR_CACO, 2,  4, {A_ZThrust}, 0, (1<<16)|1, S_CACO_ROAR, 0},
+	{"S_CACO_ROAR", 0, SPR_CACO, 2, 10, {A_PlayActiveSound}, 0, 0, S_CACO_CHASE, 0},
+	{"S_CACO_CHASE", 0, SPR_CACO, 2,  5, {A_JetChase}, 0, 0, S_CACO_CHASE_REPEAT, 0},
+	{"S_CACO_CHASE_REPEAT", 0, SPR_CACO, 2,  0, {A_Repeat}, 5, S_CACO_CHASE, S_CACO_RANDOM, 0},
+	{"S_CACO_RANDOM", 0, SPR_CACO, 2,  0, {A_RandomState}, S_CACO_PREPARE_SOUND, S_CACO_CHASE, S_CACO_RANDOM, 0},
+	{"S_CACO_PREPARE_SOUND", 0, SPR_CACO, 2,  8, {A_PlaySound}, sfx_s3k95, 1, S_CACO_PREPARE1, 0},
+	{"S_CACO_PREPARE1", 0, SPR_CACO, 3,               8, {NULL}, 0, 0, S_CACO_PREPARE2, 0},
+	{"S_CACO_PREPARE2", 0, SPR_CACO, 4|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_PREPARE3, 0},
+	{"S_CACO_PREPARE3", 0, SPR_CACO, 5|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_SHOOT_SOUND, 0},
+	{"S_CACO_SHOOT_SOUND", 0, SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_PlaySound}, sfx_s3k4e, 1, S_CACO_SHOOT1, 0},
+	{"S_CACO_SHOOT1", 0, SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_CACOFIRE_EXPLODE1, S_CACO_SHOOT2, 0},
+	{"S_CACO_SHOOT2", 0, SPR_CACO, 4|FF_FULLBRIGHT, 6, {A_FireShot}, MT_CACOFIRE, -24, S_CACO_CLOSE, 0},
+	{"S_CACO_CLOSE", 0, SPR_CACO, 3,              15, {NULL}, 0, 0, S_CACO_CHASE, 0},
+	{"S_CACO_DIE_FLAGS", 0, SPR_CACO, 10, 0, {A_SetObjectFlags}, MF_NOBLOCKMAP, 0, S_CACO_DIE_GIB1, 0},
+	{"S_CACO_DIE_GIB1", 0, SPR_CACO, 10, 0, {A_NapalmScatter}, (7<<16)|MT_CACOSHARD, (30<<16)|20, S_CACO_DIE_GIB2, 0},
+	{"S_CACO_DIE_GIB2", 0, SPR_CACO, 10, 0, {A_NapalmScatter}, (10<<16)|MT_CACOSHARD, (24<<16)|32, S_CACO_DIE_SCREAM, 0},
+	{"S_CACO_DIE_SCREAM", 0, SPR_CACO, 10, 0, {A_Scream}, 0, 0, S_CACO_DIE_SHATTER, 0},
+	{"S_CACO_DIE_SHATTER", 0, SPR_CACO, 10, 0, {A_PlaySound}, sfx_pumpkn, 1, S_CACO_DIE_FALL, 0},
+	{"S_CACO_DIE_FALL", 0, SPR_CACO, 10, 250, {A_FlickySpawn}, (1<<16), 0, S_NULL, 0},
+
+	{"S_CACOSHARD_RANDOMIZE", 0, SPR_CACO, 6, 0, {A_RandomState}, S_CACOSHARD1_1, S_CACOSHARD2_1, S_NULL, 0},
+	{"S_CACOSHARD1_1", 0, SPR_CACO, 6, 3, {NULL}, 0, 0, S_CACOSHARD1_2, 0},
+	{"S_CACOSHARD1_2", 0, SPR_CACO, 7, 3, {NULL}, 0, 0, S_CACOSHARD1_1, 0},
+	{"S_CACOSHARD2_1", 0, SPR_CACO, 8, 3, {NULL}, 0, 0, S_CACOSHARD2_2, 0},
+	{"S_CACOSHARD2_2", 0, SPR_CACO, 9, 3, {NULL}, 0, 0, S_CACOSHARD2_1, 0},
+	{"S_CACOFIRE1", 0, SPR_BAL2,   FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE2, 0},
+	{"S_CACOFIRE2", 0, SPR_BAL2, 1|FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE3, 0},
+	{"S_CACOFIRE3", 0, SPR_BAL2,   FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CACOFIRE1, 0},
+	{"S_CACOFIRE_EXPLODE1", 0, SPR_BAL2, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE2, 0},
+	{"S_CACOFIRE_EXPLODE2", 0, SPR_BAL2, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE3, 0},
+	{"S_CACOFIRE_EXPLODE3", 0, SPR_BAL2, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE4, 0},
+	{"S_CACOFIRE_EXPLODE4", 0, SPR_BAL2, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_SPINBOBERT_MOVE_FLIPUP", 0, SPR_SBOB, 1, 10, {A_ZThrust}, -2, (1<<16)|1, S_SPINBOBERT_MOVE_UP, 0},
+	{"S_SPINBOBERT_MOVE_UP", 0, SPR_SBOB, 0, 45, {A_ZThrust},  4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPDOWN, 0},
+	{"S_SPINBOBERT_MOVE_FLIPDOWN", 0, SPR_SBOB, 1, 10, {A_ZThrust},  2, (1<<16)|1, S_SPINBOBERT_MOVE_DOWN, 0},
+	{"S_SPINBOBERT_MOVE_DOWN", 0, SPR_SBOB, 2, 45, {A_ZThrust}, -4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPUP, 0},
+	{"S_SPINBOBERT_FIRE_MOVE", 0, SPR_SBSK, FF_FULLBRIGHT, 1, {A_RotateSpikeBall},       0,                        0, S_SPINBOBERT_FIRE_GHOST, 0},
+	{"S_SPINBOBERT_FIRE_GHOST", 0, SPR_SBSK, FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_SPINBOBERT_FIRE_TRAIL1, S_SPINBOBERT_FIRE_MOVE, 0},
+	{"S_SPINBOBERT_FIRE_TRAIL1", 0, SPR_SBFL, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL2, 0},
+	{"S_SPINBOBERT_FIRE_TRAIL2", 0, SPR_SBFL, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL3, 0},
+	{"S_SPINBOBERT_FIRE_TRAIL3", 0, SPR_SBFL,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_HANGSTER_LOOK", 0, SPR_HBAT, 0,  5, {A_Look}, (900<<16)|1, 0, S_HANGSTER_LOOK, 0},
+	{"S_HANGSTER_SWOOP1", 0, SPR_HBAT, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|10, -34, S_HANGSTER_SWOOP2, 0},
+	{"S_HANGSTER_SWOOP2", 0, SPR_HBAT, 1,  2, {A_ZThrust}, -8, (1<<16)|1, S_HANGSTER_SWOOP2, 0},
+	{"S_HANGSTER_ARC1", 0, SPR_HBAT, 1,  6, {A_ZThrust}, -5, (1<<16), S_HANGSTER_ARC2, 0},
+	{"S_HANGSTER_ARC2", 0, SPR_HBAT, 1,  5, {A_ZThrust}, -2, (1<<16), S_HANGSTER_ARC3, 0},
+	{"S_HANGSTER_ARC3", 0, SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_FLY1, 0},
+	{"S_HANGSTER_FLY1", 0, SPR_HBAT, 1,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY2, 0},
+	{"S_HANGSTER_FLY2", 0, SPR_HBAT, 2,  1, {A_PlaySound}, sfx_s3k52, 1, S_HANGSTER_FLY3, 0},
+	{"S_HANGSTER_FLY3", 0, SPR_HBAT, 3,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY4, 0},
+	{"S_HANGSTER_FLY4", 0, SPR_HBAT, 2,  1, {A_Thrust}, 6, 1, S_HANGSTER_FLYREPEAT, 0},
+	{"S_HANGSTER_FLYREPEAT", 0, SPR_HBAT, 2,  0, {A_Repeat}, 12, S_HANGSTER_FLY1, S_HANGSTER_ARCUP1, 0},
+	{"S_HANGSTER_ARCUP1", 0, SPR_HBAT, 1,  5, {A_ZThrust},  2, (1<<16), S_HANGSTER_ARCUP2, 0},
+	{"S_HANGSTER_ARCUP2", 0, SPR_HBAT, 1,  6, {A_ZThrust},  5, (1<<16), S_HANGSTER_ARCUP3, 0},
+	{"S_HANGSTER_ARCUP3", 0, SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_RETURN1, 0},
+	{"S_HANGSTER_RETURN1", 0, SPR_HBAT, 1,  1, {A_ZThrust},  8, (1<<16), S_HANGSTER_RETURN2, 0},
+	{"S_HANGSTER_RETURN2", 0, SPR_HBAT, 3,  1, {NULL}, 0, 0, S_HANGSTER_RETURN1, 0},
+	{"S_HANGSTER_RETURN3", 0, SPR_HBAT, 0, 15, {NULL}, 0, 0, S_HANGSTER_LOOK, 0},
+
+	{"S_CRUMBLE1", 0, SPR_NULL, 0,  35, {NULL}, 0, 0, S_CRUMBLE2, 0},
+	{"S_CRUMBLE2", 0, SPR_NULL, 0, 105, {A_Scream}, 0, 0, S_NULL, 0},
 
 	// Spark
-	{SPR_NULL, 0, 1, {A_ModuloToState}, 2, S_SPRK2, S_SPRK3, 0},  // S_SPRK1
-	{SPR_SPRK, FF_TRANS20|FF_ANIMATE|0, 18, {NULL}, 8, 2, S_NULL, 0},  // S_SPRK2
-	{SPR_SPRK, FF_TRANS20|FF_ANIMATE|9, 18, {NULL}, 8, 2, S_NULL, 0},  // S_SPRK3
+	{"S_SPRK1", 0, SPR_NULL, 0, 1, {A_ModuloToState}, 2, S_SPRK2, S_SPRK3, 0},
+	{"S_SPRK2", 0, SPR_SPRK, FF_TRANS20|FF_ANIMATE|0, 18, {NULL}, 8, 2, S_NULL, 0},
+	{"S_SPRK3", 0, SPR_SPRK, FF_TRANS20|FF_ANIMATE|9, 18, {NULL}, 8, 2, S_NULL, 0},
 
 	// Robot Explosion
-	{SPR_BOM1, 0, 0, {A_FlickySpawn},  0, 0, S_XPLD1, 0}, // S_XPLD_FLICKY
-	{SPR_BOM1, 0, 2, {A_ShadowScream}, 0, 0, S_XPLD2, 0}, // S_XPLD1
-	{SPR_BOM1, 1, 2, {NULL},           0, 0, S_XPLD3, 0}, // S_XPLD2
-	{SPR_BOM1, 2, 3, {NULL},           0, 0, S_XPLD4, 0}, // S_XPLD3
-	{SPR_BOM1, 3, 3, {NULL},           0, 0, S_XPLD5, 0}, // S_XPLD4
-	{SPR_BOM1, 4, 4, {NULL},           0, 0, S_XPLD6, 0}, // S_XPLD5
-	{SPR_BOM1, 5, 4, {NULL},           0, 0, S_NULL, 0},  // S_XPLD6
+	{"S_XPLD_FLICKY", 0, SPR_BOM1, 0, 0, {A_FlickySpawn},  0, 0, S_XPLD1, 0},
+	{"S_XPLD1", 0, SPR_BOM1, 0, 2, {A_ShadowScream}, 0, 0, S_XPLD2, 0},
+	{"S_XPLD2", 0, SPR_BOM1, 1, 2, {NULL},           0, 0, S_XPLD3, 0},
+	{"S_XPLD3", 0, SPR_BOM1, 2, 3, {NULL},           0, 0, S_XPLD4, 0},
+	{"S_XPLD4", 0, SPR_BOM1, 3, 3, {NULL},           0, 0, S_XPLD5, 0},
+	{"S_XPLD5", 0, SPR_BOM1, 4, 4, {NULL},           0, 0, S_XPLD6, 0},
+	{"S_XPLD6", 0, SPR_BOM1, 5, 4, {NULL},           0, 0, S_NULL, 0},
 
-	{SPR_BOM1, FF_ANIMATE,   21, {NULL},          5, 4, S_INVISIBLE, 0}, // S_XPLD_EGGTRAP
+	{"S_XPLD_EGGTRAP", 0, SPR_BOM1, FF_ANIMATE,   21, {NULL},          5, 4, S_INVISIBLE, 0},
 
 	// Underwater Explosion
-	{SPR_BOM4, 0, 3, {A_ShadowScream}, 0, 0, S_WPLD2, 0}, // S_WPLD1
-	{SPR_BOM4, 1, 3, {NULL},           0, 0, S_WPLD3, 0}, // S_WPLD2
-	{SPR_BOM4, 2, 3, {NULL},           0, 0, S_WPLD4, 0}, // S_WPLD3
-	{SPR_BOM4, 3, 3, {NULL},           0, 0, S_WPLD5, 0}, // S_WPLD4
-	{SPR_BOM4, 4, 3, {NULL},           0, 0, S_WPLD6, 0}, // S_WPLD5
-	{SPR_BOM4, 5, 3, {NULL},           0, 0, S_NULL, 0},  // S_WPLD6
-
-	{SPR_DUST,   FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2, 0}, // S_DUST1
-	{SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3, 0}, // S_DUST2
-	{SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4, 0}, // S_DUST3
-	{SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL, 0},  // S_DUST4
-
-	{SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN, 0}, // S_ROCKSPAWN
-
-	{SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEA
-	{SPR_ROIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEB
-	{SPR_ROIC, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEC
-	{SPR_ROID, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLED
-	{SPR_ROIE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEE
-	{SPR_ROIF, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEF
-	{SPR_ROIG, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEG
-	{SPR_ROIH, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEH
-	{SPR_ROII, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEI
-	{SPR_ROIJ, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEJ
-	{SPR_ROIK, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEK
-	{SPR_ROIL, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEL
-	{SPR_ROIM, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEM
-	{SPR_ROIN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEN
-	{SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEO
-	{SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEP
-
-	{SPR_GFZD, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_GFZDEBRIS
-	{SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0}, // S_BRICKDEBRIS
-	{SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0}, // S_WOODDEBRIS
-	{SPR_BRIR, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_REDBRICKDEBRIS
-	{SPR_BRIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_BLUEBRICKDEBRIS
-	{SPR_BRIY, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_YELLOWBRICKDEBRIS
-
-	{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL, 0}, // S_NAMECHECK
+	{"S_WPLD1", 0, SPR_BOM4, 0, 3, {A_ShadowScream}, 0, 0, S_WPLD2, 0},
+	{"S_WPLD2", 0, SPR_BOM4, 1, 3, {NULL},           0, 0, S_WPLD3, 0},
+	{"S_WPLD3", 0, SPR_BOM4, 2, 3, {NULL},           0, 0, S_WPLD4, 0},
+	{"S_WPLD4", 0, SPR_BOM4, 3, 3, {NULL},           0, 0, S_WPLD5, 0},
+	{"S_WPLD5", 0, SPR_BOM4, 4, 3, {NULL},           0, 0, S_WPLD6, 0},
+	{"S_WPLD6", 0, SPR_BOM4, 5, 3, {NULL},           0, 0, S_NULL, 0},
+
+	{"S_DUST1", 0, SPR_DUST,   FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2, 0},
+	{"S_DUST2", 0, SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3, 0},
+	{"S_DUST3", 0, SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4, 0},
+	{"S_DUST4", 0, SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL, 0},
+
+	{"S_ROCKSPAWN", 0, SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN, 0},
+
+	{"S_ROCKCRUMBLEA", 0, SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEB", 0, SPR_ROIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEC", 0, SPR_ROIC, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLED", 0, SPR_ROID, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEE", 0, SPR_ROIE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEF", 0, SPR_ROIF, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEG", 0, SPR_ROIG, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEH", 0, SPR_ROIH, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEI", 0, SPR_ROII, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEJ", 0, SPR_ROIJ, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEK", 0, SPR_ROIK, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEL", 0, SPR_ROIL, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEM", 0, SPR_ROIM, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEN", 0, SPR_ROIN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEO", 0, SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+	{"S_ROCKCRUMBLEP", 0, SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0},
+
+	{"S_GFZDEBRIS", 0, SPR_GFZD, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0},
+	{"S_BRICKDEBRIS", 0, SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0},
+	{"S_WOODDEBRIS", 0, SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0},
+	{"S_REDBRICKDEBRIS", 0, SPR_BRIR, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0},
+	{"S_BLUEBRICKDEBRIS", 0, SPR_BRIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0},
+	{"S_YELLOWBRICKDEBRIS", 0, SPR_BRIY, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0},
+
+	{"S_NAMECHECK", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL, 0},
 };
 
-static mobjinfo_t startmobjinfo[] =
+state_t **states;
+UINT32 numstates;
+
+static const mobjinfo_t startmobjinfo[] =
 {
 	{
 		"MT_NULL",
@@ -22259,7 +22262,7 @@ static mobjinfo_t startmobjinfo[] =
 };
 
 mobjinfo_t **mobjinfo;
-size_t nummobjinfo;
+UINT32 nummobjinfo;
 
 skincolor_t skincolors[MAXSKINCOLORS] = {
 	{"None", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_NONE
@@ -22444,7 +22447,7 @@ skincolor_t skincolors[MAXSKINCOLORS] = {
   */
 void P_PatchInfoTables(void)
 {
-	INT32 i;
+	UINT32 i;
 	char *tempname;
 
 #if NUMSPRITEFREESLOTS > 9999 //tempname numbering actually starts at SPR_FIRSTFREESLOT, so the limit is actually 9999 + SPR_FIRSTFREESLOT-1, but the preprocessor doesn't understand enums, so its left at 9999 for safety
@@ -22464,8 +22467,6 @@ void P_PatchInfoTables(void)
 		t_lspr[i] = &lspr[NOLIGHT];
 #endif
 	}
-	sprnames[i][0] = '\0'; // i == NUMSPRITES
-	memset(&states[S_FIRSTFREESLOT], 0, sizeof (state_t) * NUMSTATEFREESLOTS);
 	memset(&skincolors[SKINCOLOR_FIRSTFREESLOT], 0, sizeof (skincolor_t) * NUMCOLORFREESLOTS);
 	for (i = SKINCOLOR_FIRSTFREESLOT; i <= SKINCOLOR_LASTFREESLOT; i++) {
 		skincolors[i].accessible = false;
@@ -22475,9 +22476,8 @@ void P_PatchInfoTables(void)
 
 #ifdef ALLOW_RESETDATA
 static char *sprnamesbackup;
-static state_t *statesbackup;
 static skincolor_t *skincolorsbackup;
-static size_t sprnamesbackupsize, statesbackupsize, skincolorsbackupsize;
+static size_t sprnamesbackupsize, skincolorsbackupsize;
 #endif
 
 UINT32 P_AllocateMobjinfo(const char *name)
@@ -22490,9 +22490,19 @@ UINT32 P_AllocateMobjinfo(const char *name)
 	return nummobjinfo-1;
 }
 
+UINT32 P_AllocateState(const char *name)
+{
+	states = Z_Realloc(states, sizeof(*states) * ++numstates, PU_STATIC, NULL);
+	states[numstates-1] = Z_Malloc(sizeof(state_t), PU_STATIC, NULL);
+	memset(states[numstates-1], 0, sizeof(state_t));
+	states[numstates-1]->num = numstates-1;
+	states[numstates-1]->name = name;
+	return numstates-1;
+}
+
 UINT32 P_GetMobjinfoIndex(mobjinfo_t *info)
 {
-	size_t i;
+	UINT32 i;
 	for (i = 0; i < nummobjinfo; i++)
 	{
 		if (mobjinfo[i] == info)
@@ -22503,7 +22513,7 @@ UINT32 P_GetMobjinfoIndex(mobjinfo_t *info)
 
 void P_InitializeTables(void)
 {
-	size_t i;
+	UINT32 i;
 	nummobjinfo = sizeof(startmobjinfo) / sizeof(startmobjinfo[0]);
 	mobjinfo = Z_Malloc(sizeof(*mobjinfo) * nummobjinfo, PU_STATIC, NULL);
 	for (i = 0; i < nummobjinfo; i++)
@@ -22511,6 +22521,15 @@ void P_InitializeTables(void)
 		mobjinfo[i] = Z_Malloc(sizeof(mobjinfo_t), PU_STATIC, NULL);
 		memcpy(mobjinfo[i], &startmobjinfo[i], sizeof(mobjinfo_t));
 	}
+
+	numstates = sizeof(startstates) / sizeof(startstates[0]);
+	states = Z_Malloc(sizeof(*states) * numstates, PU_STATIC, NULL);
+	for (i = 0; i < numstates; i++)
+	{
+		states[i] = Z_Malloc(sizeof(state_t), PU_STATIC, NULL);
+		memcpy(states[i], &startstates[i], sizeof(state_t));
+		states[i]->num = i;
+	}
 }
 
 void P_BackupTables(void)
@@ -22518,7 +22537,6 @@ void P_BackupTables(void)
 #ifdef ALLOW_RESETDATA
 	// Allocate buffers in size equal to that of the uncompressed data to begin with
 	sprnamesbackup = Z_Malloc(sizeof(sprnames), PU_STATIC, NULL);
-	statesbackup = Z_Malloc(sizeof(states), PU_STATIC, NULL);
 	skincolorsbackup = Z_Malloc(sizeof(skincolors), PU_STATIC, NULL);
 
 	// Sprite names
@@ -22528,13 +22546,6 @@ void P_BackupTables(void)
 	else
 		M_Memcpy(sprnamesbackup, sprnames, sizeof(sprnames));
 
-	// States
-	statesbackupsize = lzf_compress(states, sizeof(states), statesbackup, sizeof(states));
-	if (statesbackupsize > 0)
-		statesbackup = Z_Realloc(statesbackup, statesbackupsize, PU_STATIC, NULL);
-	else
-		M_Memcpy(statesbackup, states, sizeof(states));
-
 	//Skincolor info
 	skincolorsbackupsize = lzf_compress(skincolors, sizeof(skincolors), skincolorsbackup, sizeof(skincolors));
 	if (skincolorsbackupsize > 0)
@@ -22550,6 +22561,7 @@ void P_ResetData(INT32 flags)
 	(void)flags;
 	CONS_Alert(CONS_NOTICE, M_GetText("P_ResetData(): not supported in this build.\n"));
 #else
+	UINT32 i;
 	if (flags & 1)
 	{
 		if (sprnamesbackupsize > 0)
@@ -22560,15 +22572,15 @@ void P_ResetData(INT32 flags)
 
 	if (flags & 2)
 	{
-		if (statesbackupsize > 0)
-			lzf_decompress(statesbackup, statesbackupsize, states, sizeof(states));
-		else
-			M_Memcpy(states, statesbackup, sizeof(statesbackup));
+		for (i = 0; i < sizeof(startstates) / sizeof(startstates[0]); i++)
+		{
+			memcpy(states[i], &startstates[i], sizeof(state_t));
+			states[i]->num = i;
+		}
 	}
 
 	if (flags & 4)
 	{
-		size_t i;
 		for (i = 0; i < sizeof(startmobjinfo) / sizeof(startmobjinfo[0]); i++)
 		{
 			memcpy(mobjinfo[i], &startmobjinfo[i], sizeof(mobjinfo_t));
diff --git a/src/info.h b/src/info.h
index 63f48eb8d79106ebe5648b27bc852cad433c6519..0bf4d32541aa1a9e49493092fe336bf32e8537a1 100644
--- a/src/info.h
+++ b/src/info.h
@@ -574,7 +574,6 @@ extern int actionsoverridden[NUMACTIONS][MAX_ACTION_RECURSION];
 // ratio of states to sprites to mobj types is roughly 6 : 1 : 1
 #define NUMMOBJFREESLOTS 1024
 #define NUMSPRITEFREESLOTS NUMMOBJFREESLOTS
-#define NUMSTATEFREESLOTS (NUMMOBJFREESLOTS*8)
 #define MAXSPRITENAME 64
 
 // Hey, moron! If you change this table, don't forget about sprnames in info.c and the sprite lights in hw_light.c!
@@ -4365,14 +4364,12 @@ typedef enum state
 	S_YELLOWBRICKDEBRIS, // for CEZ3
 
 	S_NAMECHECK,
-
-	S_FIRSTFREESLOT,
-	S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1,
-	NUMSTATES
 } statenum_t;
 
 typedef struct
 {
+	const char *name;
+	UINT32 num;
 	spritenum_t sprite;
 	UINT32 frame; // we use the upper 16 bits for translucency and other shade effects
 	INT32 tics;
@@ -4383,7 +4380,9 @@ typedef struct
 	UINT16 sprite2;
 } state_t;
 
-extern state_t states[NUMSTATES];
+extern state_t **states;
+extern UINT32 numstates;
+
 extern char sprnames[NUMSPRITES + 1][MAXSPRITENAME + 1];
 extern char spr2names[NUMPLAYERSPRITES][MAXSPRITENAME + 1];
 extern playersprite_t spr2defaults[NUMPLAYERSPRITES];
@@ -5195,9 +5194,10 @@ typedef struct
 } mobjinfo_t;
 
 extern mobjinfo_t **mobjinfo;
-extern size_t nummobjinfo;
+extern UINT32 nummobjinfo;
 
 UINT32 P_AllocateMobjinfo(const char *name);
+UINT32 P_AllocateState(const char *name);
 UINT32 P_GetMobjinfoIndex(mobjinfo_t *info);
 void P_InitializeTables(void);
 
diff --git a/src/lua_baselib.c b/src/lua_baselib.c
index ae6722c64ccbf33550297bcde600f1f1eb2e33be..5fefddb3e35d26109fa829f2475ad8d1d978864a 100644
--- a/src/lua_baselib.c
+++ b/src/lua_baselib.c
@@ -45,7 +45,7 @@ else if (hook_cmd_running)\
 return luaL_error(L, "CMD building code should not call this function!");
 
 #define NOSPAWNNULL if (type >= nummobjinfo)\
-return luaL_error(L, "mobj type %d out of range (0 - %zu)", type, nummobjinfo-1);\
+return luaL_error(L, "mobj type %d out of range (0 - %u)", type, nummobjinfo-1);\
 else if (type == MT_NULL)\
 {\
 	if (!nospawnnull_seen) {\
@@ -699,8 +699,8 @@ static int lib_pSpawnLockOn(lua_State *L)
 		return LUA_ErrInvalid(L, "mobj_t");
 	if (!player)
 		return LUA_ErrInvalid(L, "player_t");
-	if (state >= NUMSTATES)
-		return luaL_error(L, "state %d out of range (0 - %d)", state, NUMSTATES-1);
+	if (state >= numstates)
+		return luaL_error(L, "state %d out of range (0 - %d)", state, numstates-1);
 	if (P_IsLocalPlayer(player)) // Only display it on your own view. Don't display it for spectators
 	{
 		mobj_t *visual = P_SpawnMobj(lockon->x, lockon->y, lockon->z, MT_LOCKON); // positioning, flip handled in P_SceneryThinker
@@ -893,8 +893,8 @@ static int lib_pSpawnParaloop(lua_State *L)
 	NOHUD
 	INLEVEL
 	NOSPAWNNULL
-	if (nstate >= NUMSTATES)
-		return luaL_error(L, "state %d out of range (0 - %d)", nstate, NUMSTATES-1);
+	if (nstate >= numstates)
+		return luaL_error(L, "state %d out of range (0 - %d)", nstate, numstates-1);
 	P_SpawnParaloop(x, y, z, radius, number, type, nstate, rotangle, spawncenter);
 	P_SetTarget(&tmthing, ptmthing);
 	return 0;
@@ -2480,8 +2480,8 @@ static int lib_pSetMobjStateNF(lua_State *L)
 	INLEVEL
 	if (!mobj)
 		return LUA_ErrInvalid(L, "mobj_t");
-	if (state >= NUMSTATES)
-		return luaL_error(L, "state %d out of range (0 - %d)", state, NUMSTATES-1);
+	if (state >= numstates)
+		return luaL_error(L, "state %d out of range (0 - %d)", state, numstates-1);
 	if (mobj->player && state == S_NULL)
 		return luaL_error(L, "Attempt to remove player mobj with S_NULL.");
 	lua_pushboolean(L, P_SetMobjStateNF(mobj, state));
@@ -3107,31 +3107,31 @@ static int lib_rSkinUsable(lua_State *L)
 
 static int lib_pGetStateSprite2(lua_State *L)
 {
-	int statenum = luaL_checkinteger(L, 1);
-	if (statenum < 0 || statenum >= NUMSTATES)
-		return luaL_error(L, "state %d out of range (0 - %d)", statenum, NUMSTATES-1);
+	UINT32 statenum = luaL_checkinteger(L, 1);
+	if (statenum >= numstates)
+		return luaL_error(L, "state %d out of range (0 - %d)", statenum, numstates-1);
 
-	lua_pushinteger(L, P_GetStateSprite2(&states[statenum]));
+	lua_pushinteger(L, P_GetStateSprite2(states[statenum]));
 	return 1;
 }
 
 static int lib_pGetSprite2StateFrame(lua_State *L)
 {
-	int statenum = luaL_checkinteger(L, 1);
-	if (statenum < 0 || statenum >= NUMSTATES)
-		return luaL_error(L, "state %d out of range (0 - %d)", statenum, NUMSTATES-1);
+	UINT32 statenum = luaL_checkinteger(L, 1);
+	if (statenum >= numstates)
+		return luaL_error(L, "state %d out of range (0 - %d)", statenum, numstates-1);
 
-	lua_pushinteger(L, P_GetSprite2StateFrame(&states[statenum]));
+	lua_pushinteger(L, P_GetSprite2StateFrame(states[statenum]));
 	return 1;
 }
 
 static int lib_pIsStateSprite2Super(lua_State *L)
 {
-	int statenum = luaL_checkinteger(L, 1);
-	if (statenum < 0 || statenum >= NUMSTATES)
-		return luaL_error(L, "state %d out of range (0 - %d)", statenum, NUMSTATES-1);
+	UINT32 statenum = luaL_checkinteger(L, 1);
+	if (statenum >= numstates)
+		return luaL_error(L, "state %d out of range (0 - %d)", statenum, numstates-1);
 
-	lua_pushboolean(L, P_IsStateSprite2Super(&states[statenum]));
+	lua_pushboolean(L, P_IsStateSprite2Super(states[statenum]));
 	return 1;
 }
 
diff --git a/src/lua_infolib.c b/src/lua_infolib.c
index a687dad197adc979ba12f296d7ceab786baab581..ea9af1ee35e5152b0b89e1451d02b15a3a83d567 100644
--- a/src/lua_infolib.c
+++ b/src/lua_infolib.c
@@ -666,9 +666,9 @@ static int lib_getState(lua_State *L)
 	lua_remove(L, 1);
 
 	i = luaL_checkinteger(L, 1);
-	if (i >= NUMSTATES)
-		return luaL_error(L, "states[] index %d out of range (0 - %d)", i, NUMSTATES-1);
-	LUA_PushUserdata(L, &states[i], META_STATE);
+	if (i >= numstates)
+		return luaL_error(L, "states[] index %d out of range (0 - %u)", i, numstates-1);
+	LUA_PushUserdata(L, states[i], META_STATE);
 	return 1;
 }
 
@@ -676,12 +676,14 @@ static int lib_getState(lua_State *L)
 static int lib_setState(lua_State *L)
 {
 	state_t *state;
+	UINT32 num;
+	const char *name;
 	lua_remove(L, 1); // don't care about states[] userdata.
 	{
 		UINT32 i = luaL_checkinteger(L, 1);
-		if (i >= NUMSTATES)
-			return luaL_error(L, "states[] index %d out of range (0 - %d)", i, NUMSTATES-1);
-		state = &states[i]; // get the state to assign to.
+		if (i >= numstates)
+			return luaL_error(L, "states[] index %d out of range (0 - %u)", i, numstates-1);
+		state = states[i]; // get the state to assign to.
 	}
 	luaL_checktype(L, 2, LUA_TTABLE); // check that we've been passed a table.
 	lua_remove(L, 1); // pop state num, don't need it any more.
@@ -693,7 +695,11 @@ static int lib_setState(lua_State *L)
 		return luaL_error(L, "Do not alter states in CMD building code!");
 
 	// clear the state to start with, in case of missing table elements
+	num = state->num;
+	name = state->name;
 	memset(state,0,sizeof(state_t));
+	state->num = num;
+	state->name = name;
 	state->tics = -1;
 
 	lua_pushnil(L);
@@ -754,7 +760,7 @@ static int lib_setState(lua_State *L)
 			state->var2 = (INT32)luaL_checkinteger(L, 3);
 		} else if (i == 7 || (str && fastcmp(str, "nextstate"))) {
 			value = luaL_checkinteger(L, 3);
-			if (value < S_NULL || value >= NUMSTATES)
+			if (value < S_NULL || (UINT32)value >= numstates)
 				return luaL_error(L, "nextstate number %d is invalid.", value);
 			state->nextstate = (statenum_t)value;
 		}
@@ -763,10 +769,10 @@ static int lib_setState(lua_State *L)
 	return 0;
 }
 
-// #states -> NUMSTATES
+// #states -> numstates
 static int lib_statelen(lua_State *L)
 {
-	lua_pushinteger(L, NUMSTATES);
+	lua_pushinteger(L, numstates);
 	return 1;
 }
 
@@ -775,7 +781,7 @@ boolean LUA_SetLuaAction(void *stv, const char *action)
 	state_t *st = (state_t *)stv;
 
 	I_Assert(st != NULL);
-	//I_Assert(st >= states && st < states+NUMSTATES); // if you REALLY want to be paranoid...
+	//I_Assert(st >= states && st < states+numstates); // if you REALLY want to be paranoid...
 	I_Assert(action != NULL);
 
 	if (!gL) // Lua isn't loaded,
@@ -998,7 +1004,7 @@ static int state_set(lua_State *L)
 		st->var2 = (INT32)luaL_checknumber(L, 3);
 	else if (fastcmp(field,"nextstate")) {
 		value = luaL_checkinteger(L, 3);
-		if (value < S_NULL || value >= NUMSTATES)
+		if (value < S_NULL || (UINT32)value >= numstates)
 			return luaL_error(L, "nextstate number %d is invalid.", value);
 		st->nextstate = (statenum_t)value;
 	} else
@@ -1011,7 +1017,7 @@ static int state_set(lua_State *L)
 static int state_num(lua_State *L)
 {
 	state_t *state = *((state_t **)luaL_checkudata(L, 1, META_STATE));
-	lua_pushinteger(L, state-states);
+	lua_pushinteger(L, state->num);
 	return 1;
 }
 
@@ -1027,7 +1033,7 @@ static int lib_getMobjInfo(lua_State *L)
 
 	i = luaL_checkinteger(L, 1);
 	if (i >= nummobjinfo)
-		return luaL_error(L, "mobjinfo[] index %d out of range (0 - %zu)", i, nummobjinfo-1);
+		return luaL_error(L, "mobjinfo[] index %d out of range (0 - %d)", i, nummobjinfo-1);
 	LUA_PushUserdata(L, mobjinfo[i], META_MOBJINFO);
 	return 1;
 }
@@ -1041,7 +1047,7 @@ static int lib_setMobjInfo(lua_State *L)
 	{
 		UINT32 i = luaL_checkinteger(L, 1);
 		if (i >= nummobjinfo)
-			return luaL_error(L, "mobjinfo[] index %d out of range (0 - %zu)", i, nummobjinfo-1);
+			return luaL_error(L, "mobjinfo[] index %d out of range (0 - %d)", i, nummobjinfo-1);
 		info = mobjinfo[i]; // get the mobjinfo to assign to.
 	}
 	luaL_checktype(L, 2, LUA_TTABLE); // check that we've been passed a table.
@@ -1074,14 +1080,14 @@ static int lib_setMobjInfo(lua_State *L)
 			info->doomednum = (INT32)luaL_checkinteger(L, 3);
 		else if (i == 2 || (str && fastcmp(str,"spawnstate"))) {
 			value = luaL_checkinteger(L, 3);
-			if (value < S_NULL || value >= NUMSTATES)
+			if (value < S_NULL || (UINT32)value >= numstates)
 				return luaL_error(L, "spawnstate number %d is invalid.", value);
 			info->spawnstate = (statenum_t)value;
 		} else if (i == 3 || (str && fastcmp(str,"spawnhealth")))
 			info->spawnhealth = (INT32)luaL_checkinteger(L, 3);
 		else if (i == 4 || (str && fastcmp(str,"seestate"))) {
 			value = luaL_checkinteger(L, 3);
-			if (value < S_NULL || value >= NUMSTATES)
+			if (value < S_NULL || (UINT32)value >= numstates)
 				return luaL_error(L, "seestate number %d is invalid.", value);
 			info->seestate = (statenum_t)value;
 		} else if (i == 5 || (str && fastcmp(str,"seesound"))) {
diff --git a/src/lua_mobjlib.c b/src/lua_mobjlib.c
index f3d28f4669c4c99818441f24a2b9aab4026d3044..3a768dac802f0b2785484a1866eddadde489528d 100644
--- a/src/lua_mobjlib.c
+++ b/src/lua_mobjlib.c
@@ -319,7 +319,7 @@ static int mobj_get(lua_State *L)
 		lua_pushinteger(L, mo->tics);
 		break;
 	case mobj_state: // state number, not struct
-		lua_pushinteger(L, mo->state-states);
+		lua_pushinteger(L, mo->state->num);
 		break;
 	case mobj_flags:
 		lua_pushinteger(L, mo->flags);
@@ -759,7 +759,7 @@ static int mobj_set(lua_State *L)
 	{
 		mobjtype_t newtype = luaL_checkinteger(L, 3);
 		if (newtype >= nummobjinfo)
-			return luaL_error(L, "mobj.type %d out of range (0 - %zu).", newtype, nummobjinfo-1);
+			return luaL_error(L, "mobj.type %d out of range (0 - %u).", newtype, nummobjinfo-1);
 		mo->type = newtype;
 		mo->info = mobjinfo[newtype];
 		P_SetScale(mo, mo->scale, false);
diff --git a/src/lua_script.c b/src/lua_script.c
index a3702ebedc332e5d853d14f3d334c132cd231562..4b2cfffca092cb4c4d97614eb3c1526c624ae50a 100644
--- a/src/lua_script.c
+++ b/src/lua_script.c
@@ -1216,7 +1216,7 @@ static UINT8 ArchiveValue(int TABLESINDEX, int myindex)
 		{
 			state_t *state = *((state_t **)lua_touserdata(gL, myindex));
 			WRITEUINT8(save_p, ARCH_STATE);
-			WRITEUINT16(save_p, state - states);
+			WRITEUINT32(save_p, state->num);
 			break;
 		}
 		case ARCH_MOBJ:
@@ -1594,7 +1594,7 @@ static UINT8 UnArchiveValue(int TABLESINDEX)
 		LUA_PushUserdata(gL, mobjinfo[READUINT32(save_p)], META_MOBJINFO);
 		break;
 	case ARCH_STATE:
-		LUA_PushUserdata(gL, &states[READUINT16(save_p)], META_STATE);
+		LUA_PushUserdata(gL, states[READUINT32(save_p)], META_STATE);
 		break;
 	case ARCH_MOBJ:
 		LUA_PushUserdata(gL, P_FindNewPosition(READUINT32(save_p)), META_MOBJ);
diff --git a/src/m_cheat.c b/src/m_cheat.c
index f6d160f4eb8eab841b6ed5caed49a98d82809771..12a6f4888c6f7320430e992276d0d00c4eb66394 100644
--- a/src/m_cheat.c
+++ b/src/m_cheat.c
@@ -999,22 +999,22 @@ static void OP_CycleThings(INT32 amt)
 		(mobjinfo[op_currentthing]->doomednum == -1
 			|| op_currentthing == MT_NIGHTSDRONE
 			|| mobjinfo[op_currentthing]->flags & (MF_AMBIENT|MF_NOSECTOR)
-			|| (states[mobjinfo[op_currentthing]->spawnstate].sprite == SPR_NULL
-			 && states[mobjinfo[op_currentthing]->seestate].sprite == SPR_NULL)
+			|| (states[mobjinfo[op_currentthing]->spawnstate]->sprite == SPR_NULL
+			 && states[mobjinfo[op_currentthing]->seestate]->sprite == SPR_NULL)
 		);
 		amt -= add;
 	}
 
 	// HACK, minus has SPR_NULL sprite
-	if (states[mobjinfo[op_currentthing]->spawnstate].sprite == SPR_NULL)
+	if (states[mobjinfo[op_currentthing]->spawnstate]->sprite == SPR_NULL)
 	{
-		states[S_OBJPLACE_DUMMY].sprite = states[mobjinfo[op_currentthing]->seestate].sprite;
-		states[S_OBJPLACE_DUMMY].frame = states[mobjinfo[op_currentthing]->seestate].frame;
+		states[S_OBJPLACE_DUMMY]->sprite = states[mobjinfo[op_currentthing]->seestate]->sprite;
+		states[S_OBJPLACE_DUMMY]->frame = states[mobjinfo[op_currentthing]->seestate]->frame;
 	}
 	else
 	{
-		states[S_OBJPLACE_DUMMY].sprite = states[mobjinfo[op_currentthing]->spawnstate].sprite;
-		states[S_OBJPLACE_DUMMY].frame = states[mobjinfo[op_currentthing]->spawnstate].frame;
+		states[S_OBJPLACE_DUMMY]->sprite = states[mobjinfo[op_currentthing]->spawnstate]->sprite;
+		states[S_OBJPLACE_DUMMY]->frame = states[mobjinfo[op_currentthing]->spawnstate]->frame;
 	}
 	if (players[0].mo->eflags & MFE_VERTICALFLIP) // correct z when flipped
 		players[0].mo->z += players[0].mo->height - FixedMul(mobjinfo[op_currentthing]->height, players[0].mo->scale);
@@ -1522,7 +1522,7 @@ void Command_ObjectPlace_f(void)
 				P_RestoreMusic(&players[0]);
 			}
 			else
-				op_oldstate = (statenum_t)(players[0].mo->state-states);
+				op_oldstate = (statenum_t)(players[0].mo->state->num);
 		}
 
 		if (thingarg < COM_Argc())
@@ -1557,7 +1557,7 @@ void Command_ObjectPlace_f(void)
 			return;
 
 		// If still in dummy state, get out of it.
-		if (players[0].mo->state == &states[S_OBJPLACE_DUMMY])
+		if (players[0].mo->state == states[S_OBJPLACE_DUMMY])
 			P_SetMobjState(players[0].mo, op_oldstate);
 
 		// Reset everything back to how it was before we entered objectplace.
diff --git a/src/m_menu.c b/src/m_menu.c
index 57543842db88e63836d8987336c39c3ae61b9f57..5928787e38c9818725963b9089e7d47ce7a065c7 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -12094,7 +12094,7 @@ static void M_SetPlayerSetupFollowItem(void)
 	{
 		case MT_TAILSOVERLAY:
 		{
-			const state_t *state = &states[S_TAILSOVERLAY_MINUS30DEGREES];
+			const state_t *state = states[S_TAILSOVERLAY_MINUS30DEGREES];
 			const UINT8 sprite2 = P_GetSkinSprite2(skins[setupm_fakeskin], state->frame & FF_FRAMEMASK, NULL);
 
 			if (state->sprite != SPR_PLAY)
@@ -12118,7 +12118,7 @@ static void M_SetPlayerSetupFollowItem(void)
 		}
 		case MT_METALJETFUME:
 		{
-			const state_t *state = &states[S_JETFUME1];
+			const state_t *state = states[S_JETFUME1];
 
 			if (!(state->frame & FF_ANIMATE))
 				break;
diff --git a/src/netcode/d_clisrv.c b/src/netcode/d_clisrv.c
index 2bf9d2dde7cb60266687282748142af5e676c917..d574e7a1dcd28006af57bc3fd2e0c57373096554 100644
--- a/src/netcode/d_clisrv.c
+++ b/src/netcode/d_clisrv.c
@@ -458,7 +458,7 @@ static void Got_KickCmd(UINT8 **p, INT32 playernum)
 						if (!players[i].mo->state)
 							CONS_Printf("State: S_NULL\n");
 						else
-							CONS_Printf("State: %d\n", (statenum_t)(players[i].mo->state-states));
+							CONS_Printf("State: %d\n", (statenum_t)(players[i].mo->state->num));
 					}
 					else
 						CONS_Printf("Mobj: NULL\n");
@@ -1815,7 +1815,7 @@ INT16 Consistancy(void)
 					ret += mo->target->flags;
 					ret -= mo->target->flags2;
 					ret += mo->target->eflags;
-					ret -= mo->target->state - states;
+					ret -= mo->target->state->num;
 					ret += mo->target->tics;
 					ret -= mo->target->sprite;
 					ret += mo->target->frame;
@@ -1835,14 +1835,14 @@ INT16 Consistancy(void)
 					ret += mo->tracer->flags;
 					ret -= mo->tracer->flags2;
 					ret += mo->tracer->eflags;
-					ret -= mo->tracer->state - states;
+					ret -= mo->tracer->state->num;
 					ret += mo->tracer->tics;
 					ret -= mo->tracer->sprite;
 					ret += mo->tracer->frame;
 				}
 				else
 					ret ^= 0xAAAA;
-				ret -= mo->state - states;
+				ret -= mo->state->num;
 				ret += mo->tics;
 				ret -= mo->sprite;
 				ret += mo->frame;
diff --git a/src/p_enemy.c b/src/p_enemy.c
index 199de4bc15789cb84aa30b88b561b14d95341a36..29348a0f4c9c3d2597a6d671669ab054254343d6 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -2148,7 +2148,7 @@ void A_CrushclawAim(mobj_t *actor)
 		crab->y + P_ReturnThrustY(actor, actor->angle, locvar1*crab->scale),
 		crab->z + locvar2*crab->scale);
 
-	if (!crab->target || !crab->info->missilestate || (statenum_t)(crab->state-states) == crab->info->missilestate)
+	if (!crab->target || !crab->info->missilestate || (statenum_t)(crab->state->num) == crab->info->missilestate)
 		return;
 
 	if (((ang + ANG1) < ANG2) || P_AproxDistance(crab->x - crab->target->x, crab->y - crab->target->y) < 333*crab->scale)
@@ -2379,7 +2379,7 @@ static void P_VultureHoverParticle(mobj_t *actor)
 			dust = P_SpawnMobj(px, py, pz, MT_ARIDDUST);
 			if (!P_MobjWasRemoved(dust))
 			{
-				P_SetMobjState(dust, (statenum_t)(dust->state - states + P_RandomRange(0, 2)));
+				P_SetMobjState(dust, (statenum_t)(dust->state->num + P_RandomRange(0, 2)));
 				P_Thrust(dust, angle, FixedDiv(12*FRACUNIT, max(FRACUNIT, fdist/2)));
 				dust->momx += actor->momx;
 				dust->momy += actor->momy;
@@ -5017,7 +5017,7 @@ void A_FishJump(mobj_t *actor)
 	}
 
 	if (actor->momz < 0
-		&& (actor->state < &states[actor->info->meleestate] || actor->state > &states[actor->info->xdeathstate]))
+		&& (actor->state->num < actor->info->meleestate || actor->state->num > actor->info->xdeathstate))
 		P_SetMobjStateNF(actor, actor->info->meleestate);
 }
 
@@ -5261,7 +5261,7 @@ void A_SignSpin(mobj_t *actor)
 				P_SetMobjState(actor, actor->info->deathstate);
 				return;
 			}
-			if ((statenum_t)(actor->state-states) != actor->info->painstate)
+			if ((statenum_t)(actor->state->num) != actor->info->painstate)
 				P_SetMobjState(actor, actor->info->painstate);
 			actor->movedir = min((mapangle - actor->angle) >> 2, actor->movedir);
 		}
@@ -5337,7 +5337,7 @@ void A_SignPlayer(mobj_t *actor)
 	skin_t *skin = NULL;
 	mobj_t *ov;
 	UINT16 facecolor, signcolor = 0;
-	UINT32 signframe = states[actor->info->raisestate].frame;
+	UINT32 signframe = states[actor->info->raisestate]->frame;
 
 	facecolor = signcolor = (UINT16)locvar2;
 
@@ -5423,14 +5423,14 @@ void A_SignPlayer(mobj_t *actor)
 			{
 				ov->color = facecolor;
 				ov->skin = skin;
-				if ((statenum_t)(ov->state-states) != actor->info->seestate)
+				if ((statenum_t)(ov->state->num) != actor->info->seestate)
 					P_SetMobjState(ov, actor->info->seestate); // S_PLAY_SIGN
 			}
 			else // CLEAR! sign
 			{
 				ov->color = SKINCOLOR_NONE;
 				ov->skin = NULL; // needs to be NULL in the case of SF_HIRES characters
-				if ((statenum_t)(ov->state-states) != actor->info->missilestate)
+				if ((statenum_t)(ov->state->num) != actor->info->missilestate)
 					P_SetMobjState(ov, actor->info->missilestate); // S_CLEARSIGN
 			}
 		}
@@ -5438,7 +5438,7 @@ void A_SignPlayer(mobj_t *actor)
 		{
 			ov->color = SKINCOLOR_NONE;
 			ov->skin = NULL;
-			if ((statenum_t)(ov->state-states) != actor->info->meleestate)
+			if ((statenum_t)(ov->state->num) != actor->info->meleestate)
 				P_SetMobjState(ov, actor->info->meleestate); // S_EGGMANSIGN
 			if (!signcolor)
 				signcolor = SKINCOLOR_CARBON;
@@ -5954,7 +5954,7 @@ void A_ChickenCheck(mobj_t *actor)
 	|| (actor->eflags & MFE_VERTICALFLIP && actor->z + actor->height >= actor->ceilingz))
 	{
 		if (!(actor->momx || actor->momy || actor->momz)
-			&& actor->state > &states[actor->info->seestate])
+			&& actor->state > states[actor->info->seestate])
 		{
 			A_Chase(actor);
 			P_SetMobjState(actor, actor->info->seestate);
@@ -6378,7 +6378,7 @@ void A_UnidusBall(mobj_t *actor)
 	else if (locvar1 == 2)
 	{
 		boolean skull = (actor->target->flags2 & MF2_SKULLFLY) == MF2_SKULLFLY;
-		if (actor->target->state == &states[actor->target->info->painstate])
+		if (actor->target->state == states[actor->target->info->painstate])
 		{
 			P_KillMobj(actor, NULL, NULL, 0);
 			return;
@@ -6596,7 +6596,7 @@ void A_CrawlaCommanderThink(mobj_t *actor)
 		if (P_LookForPlayers(actor, true, false, 0))
 			return; // got a new target
 
-		if (actor->state != &states[actor->info->spawnstate])
+		if (actor->state != states[actor->info->spawnstate])
 			P_SetMobjState(actor, actor->info->spawnstate);
 		return;
 	}
@@ -7496,7 +7496,7 @@ void A_Boss2Pogo(mobj_t *actor)
 
 	if (actor->z <= actor->floorz + FixedMul(8*FRACUNIT, actor->scale) && actor->momz <= 0)
 	{
-		if (actor->state != &states[actor->info->raisestate])
+		if (actor->state != states[actor->info->raisestate])
 			P_SetMobjState(actor, actor->info->raisestate);
 		// Pogo Mode
 	}
@@ -8402,7 +8402,7 @@ void A_Boss3Path(mobj_t *actor)
 		if (P_MobjWasRemoved(actor))
 			return;
 
-		if (actor->tracer->state == &states[actor->tracer->info->missilestate])
+		if (actor->tracer->state == states[actor->tracer->info->missilestate])
 			P_SetMobjState(actor, actor->info->missilestate);
 		return;
 	}
@@ -9724,19 +9724,19 @@ void A_DualAction(mobj_t *actor)
 
 	CONS_Debug(DBG_GAMELOGIC, "A_DualAction called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2);
 
-	var1 = states[locvar1].var1;
-	var2 = states[locvar1].var2;
-	astate = &states[locvar1];
+	var1 = states[locvar1]->var1;
+	var2 = states[locvar1]->var2;
+	astate = states[locvar1];
 
 	CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling First Action (state %d)...\n", locvar1);
-	states[locvar1].action.acp1(actor);
+	states[locvar1]->action.acp1(actor);
 
-	var1 = states[locvar2].var1;
-	var2 = states[locvar2].var2;
-	astate = &states[locvar2];
+	var1 = states[locvar2]->var1;
+	var2 = states[locvar2]->var2;
+	astate = states[locvar2];
 
 	CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling Second Action (state %d)...\n", locvar2);
-	states[locvar2].action.acp1(actor);
+	states[locvar2]->action.acp1(actor);
 }
 
 // Function: A_RemoteAction
@@ -9813,13 +9813,13 @@ void A_RemoteAction(mobj_t *actor)
 	if (actor->target)
 	{
 		// Steal the var1 and var2 from "locvar2"
-		var1 = states[locvar2].var1;
-		var2 = states[locvar2].var2;
-		astate = &states[locvar2];
+		var1 = states[locvar2]->var1;
+		var2 = states[locvar2]->var2;
+		astate = states[locvar2];
 
 		CONS_Debug(DBG_GAMELOGIC, "A_RemoteAction: Calling action on %p\n"
 				"var1 is %d\nvar2 is %d\n", actor->target, var1, var2);
-		states[locvar2].action.acp1(actor->target);
+		states[locvar2]->action.acp1(actor->target);
 	}
 
 	P_SetTarget(&actor->target, originaltarget); // Restore the original target.
@@ -10959,13 +10959,13 @@ void A_CusValAction(mobj_t *actor)
 
 	if (locvar2 == 5)
 	{
-		var1 = states[locvar1].var1;
+		var1 = states[locvar1]->var1;
 		var2 = (INT32)actor->cvmem;
 	}
 	else if (locvar2 == 4)
 	{
 		var1 = (INT32)actor->cvmem;
-		var2 = states[locvar1].var2;
+		var2 = states[locvar1]->var2;
 	}
 	else if (locvar2 == 3)
 	{
@@ -10979,17 +10979,17 @@ void A_CusValAction(mobj_t *actor)
 	}
 	else if (locvar2 == 1)
 	{
-		var1 = states[locvar1].var1;
+		var1 = states[locvar1]->var1;
 		var2 = (INT32)actor->cusval;
 	}
 	else
 	{
 		var1 = (INT32)actor->cusval;
-		var2 = states[locvar1].var2;
+		var2 = states[locvar1]->var2;
 	}
 
-	astate = &states[locvar1];
-	states[locvar1].action.acp1(actor);
+	astate = states[locvar1];
+	states[locvar1]->action.acp1(actor);
 }
 
 // Function: A_ForceStop
@@ -11098,31 +11098,31 @@ void A_InfoState(mobj_t *actor)
 	switch (locvar1)
 	{
 	case 0:
-		if (actor->state != &states[actor->info->spawnstate])
+		if (actor->state != states[actor->info->spawnstate])
 			P_SetMobjState(actor, actor->info->spawnstate);
 		break;
 	case 1:
-		if (actor->state != &states[actor->info->seestate])
+		if (actor->state != states[actor->info->seestate])
 			P_SetMobjState(actor, actor->info->seestate);
 		break;
 	case 2:
-		if (actor->state != &states[actor->info->meleestate])
+		if (actor->state != states[actor->info->meleestate])
 			P_SetMobjState(actor, actor->info->meleestate);
 		break;
 	case 3:
-		if (actor->state != &states[actor->info->missilestate])
+		if (actor->state != states[actor->info->missilestate])
 			P_SetMobjState(actor, actor->info->missilestate);
 		break;
 	case 4:
-		if (actor->state != &states[actor->info->deathstate])
+		if (actor->state != states[actor->info->deathstate])
 			P_SetMobjState(actor, actor->info->deathstate);
 		break;
 	case 5:
-		if (actor->state != &states[actor->info->xdeathstate])
+		if (actor->state != states[actor->info->xdeathstate])
 			P_SetMobjState(actor, actor->info->xdeathstate);
 		break;
 	case 6:
-		if (actor->state != &states[actor->info->raisestate])
+		if (actor->state != states[actor->info->raisestate])
 			P_SetMobjState(actor, actor->info->raisestate);
 		break;
 	default:
@@ -13729,7 +13729,7 @@ void A_Boss5MakeJunk(mobj_t *actor)
 		if (!P_MobjWasRemoved(broked))
 		{
 			S_StartSound(broked, sfx_alart);
-			broked->fuse = states[S_FANG_INTRO12].tics+10;
+			broked->fuse = states[S_FANG_INTRO12]->tics+10;
 			P_SetMobjState(broked, S_ALART1);
 		}
 	}
@@ -14025,7 +14025,7 @@ static boolean PIT_TNTExplode(mobj_t *nearby)
 
 	if (barrel->type == nearby->type) // nearby is also a barrel
 	{
-		if (nearby->state == &states[nearby->info->spawnstate])
+		if (nearby->state == states[nearby->info->spawnstate])
 		{
 			if (barrel->info->attacksound)
 				S_StartSound(nearby, barrel->info->attacksound);
diff --git a/src/p_inter.c b/src/p_inter.c
index fc137f7d70978c61a5591bd87582c810b3fe6ea7..30a02120539672740164c63939d829d501903dfe 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -412,13 +412,13 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 	{
 		if (special->type == MT_STEAM)
 		{
-			if (player && player->mo->state == &states[player->mo->info->painstate]) // can't use gas jets when player is in pain!
+			if (player && player->mo->state == states[player->mo->info->painstate]) // can't use gas jets when player is in pain!
 				return;
 
 			fixed_t speed = special->info->mass; // gas jets use this for the vertical thrust
 			SINT8 flipval = P_MobjFlip(special); // virtually everything here centers around the thruster's gravity, not the object's!
 
-			if (special->state != &states[S_STEAM1]) // Only when it bursts
+			if (special->state != states[S_STEAM1]) // Only when it bursts
 				return;
 
 			toucher->eflags |= MFE_SPRUNG;
@@ -497,17 +497,17 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 				&& !(player->charability == CA_TWINSPIN && player->panim == PA_ABILITY)
 				&& !(player->charability2 == CA2_MELEE && player->panim == PA_ABILITY2))
 				{
-					if ((special->state == &states[S_FANG_BOUNCE3]
-					  || special->state == &states[S_FANG_BOUNCE4]
-					  || special->state == &states[S_FANG_PINCHBOUNCE3]
-					  || special->state == &states[S_FANG_PINCHBOUNCE4])
+					if ((special->state == states[S_FANG_BOUNCE3]
+					  || special->state == states[S_FANG_BOUNCE4]
+					  || special->state == states[S_FANG_PINCHBOUNCE3]
+					  || special->state == states[S_FANG_PINCHBOUNCE4])
 					&& P_MobjFlip(special)*((special->z + special->height/2) - (toucher->z + toucher->height/2)) > (toucher->height/2))
 					{
 						P_DamageMobj(toucher, special, special, 1, 0);
 						P_SetTarget(&special->tracer, toucher);
 
-						if (special->state == &states[S_FANG_PINCHBOUNCE3]
-						 || special->state == &states[S_FANG_PINCHBOUNCE4])
+						if (special->state == states[S_FANG_PINCHBOUNCE3]
+						 || special->state == states[S_FANG_PINCHBOUNCE4])
 							P_SetMobjState(special, S_FANG_PINCHPATHINGSTART2);
 						else
 						{
@@ -632,8 +632,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 			if (special->type == MT_BLUESPHERE || special->type == MT_FLINGBLUESPHERE)
 			{
 				special->destscale = ((player->powers[pw_carry] == CR_NIGHTSMODE) ? 4 : 2)*special->scale;
-				if (states[special->info->deathstate].tics > 0)
-					special->scalespeed = FixedDiv(FixedDiv(special->destscale, special->scale), states[special->info->deathstate].tics<<FRACBITS);
+				if (states[special->info->deathstate]->tics > 0)
+					special->scalespeed = FixedDiv(FixedDiv(special->destscale, special->scale), states[special->info->deathstate]->tics<<FRACBITS);
 				else
 					special->scalespeed = 4*FRACUNIT/5;
 			}
@@ -1620,7 +1620,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 
 				P_ResetPlayer(player);
 
-				if (special->target && special->target->state == &states[S_BLACKEGG_SHOOT1])
+				if (special->target && special->target->state == states[S_BLACKEGG_SHOOT1])
 				{
 					if (special->target->health <= 2 && P_RandomChance(FRACUNIT/2))
 						P_SetMobjState(special->target, special->target->info->missilestate);
@@ -1671,7 +1671,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 			return;
 
 		case MT_EGGROBO1:
-			if (special->state == &states[special->info->deathstate])
+			if (special->state == states[special->info->deathstate])
 				return;
 			if (P_PlayerInPain(player))
 				return;
@@ -1795,7 +1795,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 				return;
 			if (mariomode)
 				return;
-			if (special->state-states != S_EXTRALARGEBUBBLE)
+			if (special->state->num != S_EXTRALARGEBUBBLE)
 				return; // Don't grab the bubble during its spawn animation
 			else if (toucher->eflags & MFE_VERTICALFLIP)
 			{
@@ -1819,7 +1819,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 
 			if (!player->climbing)
 			{
-				if (player->bot && player->bot != BOT_MPAI && toucher->state-states != S_PLAY_GASP)
+				if (player->bot && player->bot != BOT_MPAI && toucher->state->num != S_PLAY_GASP)
 					S_StartSound(toucher, special->info->deathsound); // Force it to play a sound for bots
 				P_SetMobjState(toucher, S_PLAY_GASP);
 				P_ResetPlayer(player);
@@ -1833,7 +1833,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 				break;
 
 		case MT_WATERDROP:
-			if (special->state == &states[special->info->spawnstate])
+			if (special->state == states[special->info->spawnstate])
 			{
 				special->z = toucher->z+toucher->height-FixedMul(8*FRACUNIT, special->scale);
 				special->momz = 0;
diff --git a/src/p_map.c b/src/p_map.c
index 09ae7db2ff11fb5d650c0d540806143ab1a4205b..a0a0fe59cd2c1d56156f38182cf3284a08578637 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -480,7 +480,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
 	final = true;
 
 springstate:
-	if ((statenum_t)(spring->state-states) < spring->info->raisestate)
+	if ((statenum_t)(spring->state->num) < spring->info->raisestate)
 	{
 		P_SetMobjState(spring, spring->info->raisestate);
 		if (object->player && spring->reactiontime && !(spring->info->flags & MF_ENEMY))
@@ -509,7 +509,7 @@ static void P_DoFan(mobj_t *fan, mobj_t *object)
 	fixed_t speed = fan->info->mass; // fans use this for the vertical thrust
 	SINT8 flipval = P_MobjFlip(fan); // virtually everything here centers around the thruster's gravity, not the object's!
 
-	if (p && object->state == &states[object->info->painstate]) // can't use fans when player is in pain!
+	if (p && object->state == states[object->info->painstate]) // can't use fans when player is in pain!
 		return;
 
 	// is object's top below thruster's position? if not, calculate distance between their bottoms
@@ -849,7 +849,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing)
 	if (thing->type == MT_METALSONIC_BATTLE
 	&& (tmthing->flags & MF_MISSILE)
 	&& tmthing->target != thing
-	&& thing->state == &states[thing->info->spawnstate])
+	&& thing->state == states[thing->info->spawnstate])
 	{
 		blockdist = thing->radius + tmthing->radius;
 
@@ -1113,7 +1113,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing)
 		{
 			if (!tmthing->momx && !tmthing->momy)
 				return CHECKTHING_IGNORE;
-			if ((statenum_t)(thing->state-states) >= thing->info->meleestate)
+			if ((statenum_t)(thing->state->num) >= thing->info->meleestate)
 				return CHECKTHING_IGNORE;
 			if (thing->z > tmthing->z + tmthing->height)
 				return CHECKTHING_NOCOLLIDE; // overhead
@@ -1136,7 +1136,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing)
 		{
 			if (tmthing->extravalue1 <= 0)
 				return CHECKTHING_IGNORE;
-			if ((statenum_t)(thing->state-states) >= thing->info->meleestate)
+			if ((statenum_t)(thing->state->num) >= thing->info->meleestate)
 				return CHECKTHING_IGNORE;
 			if (thing->z > tmthing->z + tmthing->height)
 				return CHECKTHING_NOCOLLIDE; // overhead
@@ -1287,7 +1287,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing)
 		    && thing->type == MT_BLACKEGGMAN && tmthing->target != thing)
 		{
 			// Not if Brak's already in pain
-			if (!(thing->state >= &states[S_BLACKEGG_PAIN1] && thing->state <= &states[S_BLACKEGG_PAIN35]))
+			if (!(thing->state->num >= S_BLACKEGG_PAIN1 && thing->state->num <= S_BLACKEGG_PAIN35))
 				P_SetMobjState(thing, thing->info->painstate);
 			return CHECKTHING_DONE;
 		}
@@ -3040,7 +3040,7 @@ static boolean P_ThingHeightClip(mobj_t *thing)
 	if (tmfloorz > oldfloorz+thing->height)
 		return true;
 
-	bouncing = thing->player && thing->state-states == S_PLAY_BOUNCE_LANDING && P_IsObjectOnGround(thing);
+	bouncing = thing->player && thing->state->num == S_PLAY_BOUNCE_LANDING && P_IsObjectOnGround(thing);
 
 	if ((onfloor || bouncing) && !(thing->flags & MF_NOGRAVITY) && floormoved)
 	{
diff --git a/src/p_mobj.c b/src/p_mobj.c
index e6c3c94e9afdee7093604ee811a8162b6c47e0a1..b3cda85213434e1cb73413c084034cff64ae7151 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -59,11 +59,11 @@ void P_RunCachedActions(void)
 
 	for (ac = actioncachehead.next; ac != &actioncachehead; ac = next)
 	{
-		var1 = states[ac->statenum].var1;
-		var2 = states[ac->statenum].var2;
-		astate = &states[ac->statenum];
+		var1 = states[ac->statenum]->var1;
+		var2 = states[ac->statenum]->var2;
+		astate = states[ac->statenum];
 		if (ac->mobj && !P_MobjWasRemoved(ac->mobj)) // just in case...
-			states[ac->statenum].action.acp1(ac->mobj);
+			states[ac->statenum]->action.acp1(ac->mobj);
 		next = ac->next;
 		Z_Free(ac);
 	}
@@ -207,11 +207,25 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 	player_t *player = mobj->player;
 
 	// remember states seen, to detect cycles:
-	static statenum_t seenstate_tab[NUMSTATES]; // fast transition table
-	statenum_t *seenstate = seenstate_tab; // pointer to table
+	static statenum_t *seenstate_tab; // fast transition table
+	static UINT32 numseenstate_tab;
+	statenum_t *seenstate; // pointer to table
 	static INT32 recursion; // detects recursion
 	statenum_t i; // initial state
-	statenum_t tempstate[NUMSTATES]; // for use with recursion
+	static statenum_t *tempstate; // for use with recursion
+
+	if (tempstate == NULL || seenstate_tab == NULL || numseenstate_tab != numstates)
+	{
+		Z_Free(seenstate_tab);
+		Z_Malloc(sizeof(*seenstate_tab) * numstates, PU_CACHE_UNLOCKED, &seenstate_tab);
+		memset(seenstate_tab, 0, sizeof(*seenstate_tab) * numstates);
+
+		Z_Free(tempstate);
+		Z_Malloc(sizeof(*tempstate) * numstates, PU_CACHE_UNLOCKED, &tempstate);
+		numseenstate_tab = numstates;
+	}
+
+	seenstate = seenstate_tab;
 
 #ifdef PARANOIA
 	if (player == NULL)
@@ -239,15 +253,15 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 	{
 		if (state == S_PLAY_JUMP)
 		{
-			if (player->mo->state-states == S_PLAY_WALK)
+			if (player->mo->state->num == S_PLAY_WALK)
 				return P_SetPlayerMobjState(mobj, S_PLAY_FLOAT);
 			return true;
 		}
-		else if (player->mo->state-states == S_PLAY_FLOAT && state == S_PLAY_STND)
+		else if (player->mo->state->num == S_PLAY_FLOAT && state == S_PLAY_STND)
 			return true;
 	}
 	// You were in pain state after taking a hit, and you're moving out of pain state now?
-	else if (mobj->state == &states[mobj->info->painstate] && player->powers[pw_flashing] == flashingtics && state != mobj->info->painstate)
+	else if (mobj->state == states[mobj->info->painstate] && player->powers[pw_flashing] == flashingtics && state != mobj->info->painstate)
 	{
 		// Start flashing, since you've landed.
 		player->powers[pw_flashing] = flashingtics-1;
@@ -323,7 +337,7 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 	}
 
 	if (recursion++) // if recursion detected,
-		memset(seenstate = tempstate, 0, sizeof tempstate); // clear state table
+		memset(seenstate = tempstate, 0, sizeof(*tempstate) * numstates); // clear state table
 
 	i = state;
 
@@ -336,7 +350,7 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 			return false;
 		}
 
-		st = &states[state];
+		st = states[state];
 		mobj->state = st;
 		mobj->tics = st->tics;
 
@@ -456,7 +470,7 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 			{
 				if (st->frame & FF_SPR2ENDSTATE) // no frame advancement
 				{
-					if (st->var1 == mobj->state-states)
+					if ((UINT32)st->var1 == mobj->state->num)
 						frame--;
 					else
 					{
@@ -515,23 +529,36 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 	return true;
 }
 
-
 boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
 {
 	state_t *st;
 
 	// remember states seen, to detect cycles:
-	static statenum_t seenstate_tab[NUMSTATES]; // fast transition table
-	statenum_t *seenstate = seenstate_tab; // pointer to table
+	static statenum_t *seenstate_tab; // fast transition table
+	static UINT32 numseenstate_tab;
+	statenum_t *seenstate; // pointer to table
 	static INT32 recursion; // detects recursion
 	statenum_t i = state; // initial state
-	statenum_t tempstate[NUMSTATES]; // for use with recursion
+	static statenum_t *tempstate; // for use with recursion
+
+	if (tempstate == NULL || seenstate_tab == NULL || numseenstate_tab != numstates)
+	{
+		Z_Free(seenstate_tab);
+		Z_Malloc(sizeof(*seenstate_tab) * numstates, PU_CACHE_UNLOCKED, &seenstate_tab);
+		memset(seenstate_tab, 0, sizeof(*seenstate_tab) * numstates);
+
+		Z_Free(tempstate);
+		Z_Malloc(sizeof(*tempstate) * numstates, PU_CACHE_UNLOCKED, &tempstate);
+		numseenstate_tab = numstates;
+	}
+
+	seenstate = seenstate_tab;
 
 	if (mobj->player != NULL)
 		return P_SetPlayerMobjState(mobj, state);
 
 	if (recursion++) // if recursion detected,
-		memset(seenstate = tempstate, 0, sizeof tempstate); // clear state table
+		memset(seenstate = tempstate, 0, sizeof(*tempstate) * numstates); // clear state table
 
 	do
 	{
@@ -541,7 +568,7 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
 			return false;
 		}
 
-		st = &states[state];
+		st = states[state];
 		mobj->state = st;
 		mobj->tics = st->tics;
 
@@ -600,7 +627,7 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
 			{
 				if (st->frame & FF_SPR2ENDSTATE) // no frame advancement
 				{
-					if (st->var1 == mobj->state-states)
+					if ((UINT32)st->var1 == mobj->state->num)
 						frame--;
 					else
 					{
@@ -671,7 +698,7 @@ boolean P_SetMobjStateNF(mobj_t *mobj, statenum_t state)
 		P_RemoveMobj(mobj);
 		return false;
 	}
-	st = &states[state];
+	st = states[state];
 	mobj->state = st;
 	mobj->tics = st->tics;
 	mobj->sprite = st->sprite;
@@ -690,7 +717,7 @@ static boolean P_SetPrecipMobjState(precipmobj_t *mobj, statenum_t state)
 		P_RemovePrecipMobj(mobj);
 		return false;
 	}
-	st = &states[state];
+	st = states[state];
 	mobj->state = st;
 	mobj->tics = st->tics;
 	mobj->sprite = st->sprite;
@@ -3731,7 +3758,7 @@ static void P_PlayerMobjThinker(mobj_t *mobj)
 	// momentum movement
 	mobj->eflags &= ~MFE_JUSTSTEPPEDDOWN;
 
-	if (mobj->state-states == S_PLAY_BOUNCE_LANDING)
+	if (mobj->state->num == S_PLAY_BOUNCE_LANDING)
 		goto animonly; // no need for checkposition - doesn't move at ALL
 
 	// Zoom tube
@@ -3883,7 +3910,7 @@ void P_RainThinker(precipmobj_t *mobj)
 {
 	P_CycleStateAnimation((mobj_t *)mobj);
 
-	if (mobj->state != &states[S_RAIN1])
+	if (mobj->state->num != states[S_RAIN1]->num)
 	{
 		// cycle through states,
 		// calling action functions at transitions
@@ -3896,7 +3923,7 @@ void P_RainThinker(precipmobj_t *mobj)
 		if (!P_SetPrecipMobjState(mobj, mobj->state->nextstate))
 			return;
 
-		if (mobj->state != &states[S_RAINRETURN])
+		if (mobj->state->num != states[S_RAINRETURN]->num)
 			return;
 
 		mobj->z = mobj->ceilingz;
@@ -4098,8 +4125,8 @@ static void P_GenericBossThinker(mobj_t *mobj)
 
 	// Don't call A_ functions here, let the SOC do the AI!
 
-	if (mobj->state == &states[mobj->info->meleestate]
-		|| (mobj->state == &states[mobj->info->missilestate]
+	if (mobj->state == states[mobj->info->meleestate]
+		|| (mobj->state == states[mobj->info->missilestate]
 		&& mobj->health > mobj->info->damage))
 	{
 		mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y);
@@ -4144,11 +4171,11 @@ static void P_Boss1Thinker(mobj_t *mobj)
 		if (dist > 0 && P_MobjFlip(mobj)*mobj->momz > 0)
 			mobj->momz = FixedMul(mobj->momz, FRACUNIT - (dist>>12));
 	}
-	else if (mobj->state != &states[mobj->info->spawnstate] && mobj->health > 0 && mobj->flags & MF_FLOAT)
+	else if (mobj->state != states[mobj->info->spawnstate] && mobj->health > 0 && mobj->flags & MF_FLOAT)
 		mobj->momz = FixedMul(mobj->momz,7*FRACUNIT/8);
 
-	if (mobj->state == &states[mobj->info->meleestate]
-		|| (mobj->state == &states[mobj->info->missilestate]
+	if (mobj->state == states[mobj->info->meleestate]
+		|| (mobj->state == states[mobj->info->missilestate]
 		&& mobj->health > mobj->info->damage))
 	{
 		mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y);
@@ -4183,9 +4210,9 @@ static void P_Boss2Thinker(mobj_t *mobj)
 		return;
 	}
 
-	if (mobj->state == &states[mobj->info->spawnstate] && mobj->health > mobj->info->damage)
+	if (mobj->state == states[mobj->info->spawnstate] && mobj->health > mobj->info->damage)
 		A_Boss2Chase(mobj);
-	else if (mobj->health > 0 && mobj->state != &states[mobj->info->painstate] && mobj->state != &states[mobjinfo[mobj->info->missilestate]->raisestate])
+	else if (mobj->health > 0 && mobj->state != states[mobj->info->painstate] && mobj->state != states[mobjinfo[mobj->info->missilestate]->raisestate])
 	{
 		mobj->flags &= ~MF_NOGRAVITY;
 		A_Boss2Pogo(mobj);
@@ -4205,7 +4232,7 @@ static void P_Boss2Thinker(mobj_t *mobj)
 //
 static void P_Boss3Thinker(mobj_t *mobj)
 {
-	if (mobj->state == &states[mobj->info->spawnstate])
+	if (mobj->state == states[mobj->info->spawnstate])
 		mobj->flags2 &= ~MF2_FRET;
 
 	if (mobj->flags2 & MF2_FRET)
@@ -4218,7 +4245,7 @@ static void P_Boss3Thinker(mobj_t *mobj)
 		mobj->movecount = 0;
 		mobj->reactiontime = 0;
 
-		if (mobj->state < &states[mobj->info->xdeathstate])
+		if (mobj->state < states[mobj->info->xdeathstate])
 			return;
 
 		if (mobj->threshold == -1)
@@ -4245,7 +4272,7 @@ static void P_Boss3Thinker(mobj_t *mobj)
 		if (mobj->threshold >= curpath)
 			mobj->threshold++;
 
-		if (mobj->state != &states[mobj->info->spawnstate])
+		if (mobj->state != states[mobj->info->spawnstate])
 			P_SetMobjState(mobj, mobj->info->spawnstate);
 
 		mobj->reactiontime--;
@@ -4332,7 +4359,7 @@ static void P_Boss3Thinker(mobj_t *mobj)
 	else if (mobj->movecount) // Firing mode
 	{
 		// Check if the attack animation is running. If not, play it.
-		if (mobj->state < &states[mobj->info->missilestate] || mobj->state > &states[mobj->info->raisestate])
+		if (mobj->state < states[mobj->info->missilestate] || mobj->state > states[mobj->info->raisestate])
 		{
 			// look for a new target
 			P_BossTargetPlayer(mobj, true);
@@ -4362,7 +4389,7 @@ static void P_Boss3Thinker(mobj_t *mobj)
 
 		P_SetTarget(&mobj->target, NULL);
 
-		if (mobj->state != &states[mobj->info->spawnstate] && mobj->health > 0
+		if (mobj->state != states[mobj->info->spawnstate] && mobj->health > 0
 			&& !(mobj->flags2 & MF2_FRET))
 			P_SetMobjState(mobj, mobj->info->spawnstate);
 
@@ -4633,7 +4660,7 @@ static void P_Boss4Thinker(mobj_t *mobj)
 {
 	fixed_t movespeed = 0;
 
-	if ((statenum_t)(mobj->state-states) == mobj->info->spawnstate)
+	if ((statenum_t)(mobj->state->num) == mobj->info->spawnstate)
 	{
 		if (mobj->flags2 & MF2_FRET && (mobj->health > mobj->info->damage))
 			mobj->flags2 &= ~MF2_FRET;
@@ -4897,7 +4924,7 @@ static void P_Boss4Thinker(mobj_t *mobj)
 	}
 
 	// Leave if animating.
-	if ((statenum_t)(mobj->state-states) != mobj->info->spawnstate)
+	if ((statenum_t)(mobj->state->num) != mobj->info->spawnstate)
 		return;
 
 	// Map allows us to get killed despite cage being down?
@@ -4943,7 +4970,7 @@ static void P_Boss5Thinker(mobj_t *mobj)
 			}
 			return;
 		}
-		if (mobj->state == &states[mobj->info->xdeathstate])
+		if (mobj->state == states[mobj->info->xdeathstate])
 			mobj->momz -= (2*FRACUNIT)/3;
 		else if (mobj->tracer && P_AproxDistance(mobj->tracer->x - mobj->x, mobj->tracer->y - mobj->y) < 2*mobj->radius)
 			mobj->flags &= ~MF_NOCLIP;
@@ -4951,16 +4978,16 @@ static void P_Boss5Thinker(mobj_t *mobj)
 	else
 	{
 		if (mobj->flags2 & MF2_FRET && (leveltime & 1)
-		&& mobj->state != &states[S_FANG_PAIN1] && mobj->state != &states[S_FANG_PAIN2])
+		&& mobj->state->num != states[S_FANG_PAIN1]->num && mobj->state->num != states[S_FANG_PAIN2]->num)
 			mobj->flags2 |= MF2_DONTDRAW;
 		else
 			mobj->flags2 &= ~MF2_DONTDRAW;
 	}
 
-	if (mobj->state == &states[S_FANG_BOUNCE3]
-	||  mobj->state == &states[S_FANG_BOUNCE4]
-	||  mobj->state == &states[S_FANG_PINCHBOUNCE3]
-	||  mobj->state == &states[S_FANG_PINCHBOUNCE4])
+	if (mobj->state->num == states[S_FANG_BOUNCE3]->num
+	||  mobj->state->num == states[S_FANG_BOUNCE4]->num
+	||  mobj->state->num == states[S_FANG_PINCHBOUNCE3]->num
+	||  mobj->state->num == states[S_FANG_PINCHBOUNCE4]->num)
 	{
 		if (P_MobjFlip(mobj)*mobj->momz > 0
 		&& abs(mobj->momx) < FRACUNIT/2 && abs(mobj->momy) < FRACUNIT/2
@@ -5004,19 +5031,19 @@ static void P_Boss7Thinker(mobj_t *mobj)
 		}
 	}
 
-	if (mobj->state == &states[S_BLACKEGG_STND] && mobj->tics == mobj->state->tics)
+	if (mobj->state->num == states[S_BLACKEGG_STND]->num && mobj->tics == mobj->state->tics)
 	{
 		mobj->reactiontime += P_RandomByte();
 
 		if (mobj->health <= mobj->info->damage)
 			mobj->reactiontime /= 4;
 	}
-	else if (mobj->state == &states[S_BLACKEGG_DIE4] && mobj->tics == mobj->state->tics)
+	else if (mobj->state->num == states[S_BLACKEGG_DIE4]->num && mobj->tics == mobj->state->tics)
 		A_BossDeath(mobj);
-	else if (mobj->state >= &states[S_BLACKEGG_WALK1]
-		&& mobj->state <= &states[S_BLACKEGG_WALK6])
+	else if (mobj->state->num >= states[S_BLACKEGG_WALK1]->num
+		&& mobj->state->num <= states[S_BLACKEGG_WALK6]->num)
 		A_Boss7Chase(mobj);
-	else if (mobj->state == &states[S_BLACKEGG_PAIN1] && mobj->tics == mobj->state->tics)
+	else if (mobj->state->num == states[S_BLACKEGG_PAIN1]->num && mobj->tics == mobj->state->tics)
 	{
 		if (mobj->health > 0)
 			mobj->health--;
@@ -5041,7 +5068,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 			}
 		}
 	}
-	else if (mobj->state == &states[S_BLACKEGG_PAIN35] && mobj->tics == 1)
+	else if (mobj->state->num == states[S_BLACKEGG_PAIN35]->num && mobj->tics == 1)
 	{
 		if (mobj->health == mobj->info->damage)
 		{
@@ -5052,7 +5079,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 				P_LinedefExecute(mobj->spawnpoint->args[4], mobj, NULL);
 		}
 	}
-	else if (mobj->state == &states[S_BLACKEGG_HITFACE4] && mobj->tics == mobj->state->tics)
+	else if (mobj->state->num == states[S_BLACKEGG_HITFACE4]->num && mobj->tics == mobj->state->tics)
 	{
 		// This is where Black Eggman hits his face.
 		// If a player is on top of him, the player gets hurt.
@@ -5089,7 +5116,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 			}
 		}
 	}
-	else if (mobj->state == &states[S_BLACKEGG_GOOP])
+	else if (mobj->state->num == states[S_BLACKEGG_GOOP]->num)
 	{
 		// Lob cannon balls
 		if (mobj->movecount-- <= 0 || !mobj->target)
@@ -5108,7 +5135,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 			S_StartSound(0, sfx_begoop);
 		}
 	}
-	else if (mobj->state == &states[S_BLACKEGG_SHOOT2])
+	else if (mobj->state->num == states[S_BLACKEGG_SHOOT2]->num)
 	{
 		// Chaingun goop
 		mobj_t *missile;
@@ -5131,7 +5158,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 		if (leveltime & 1)
 			S_StartSound(0, sfx_beshot);
 	}
-	else if (mobj->state == &states[S_BLACKEGG_JUMP1] && mobj->tics == 1)
+	else if (mobj->state->num == states[S_BLACKEGG_JUMP1]->num && mobj->tics == 1)
 	{
 		mobj_t *hitspot = NULL, *mo2;
 		angle_t an;
@@ -5254,7 +5281,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 
 //		mobj->momz = 10*FRACUNIT;
 	}
-	else if (mobj->state == &states[S_BLACKEGG_JUMP2] && mobj->z <= mobj->floorz)
+	else if (mobj->state->num == states[S_BLACKEGG_JUMP2]->num && mobj->z <= mobj->floorz)
 	{
 		// BANG! onto the ground
 		INT32 i,j;
@@ -5313,7 +5340,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 
 		P_SetMobjState(mobj, mobj->info->spawnstate);
 	}
-	else if (mobj->state == &states[mobj->info->deathstate] && mobj->tics == mobj->state->tics)
+	else if (mobj->state == states[mobj->info->deathstate] && mobj->tics == mobj->state->tics)
 		S_StartSound(0, sfx_bedie1 + (P_RandomFixed() & 1));
 
 }
@@ -5333,7 +5360,7 @@ static void P_Boss7Thinker(mobj_t *mobj)
 // because I am a totally competent programmer who can do shit right.
 static void P_Boss9Thinker(mobj_t *mobj)
 {
-	if ((statenum_t)(mobj->state-states) == mobj->info->spawnstate)
+	if ((statenum_t)(mobj->state->num) == mobj->info->spawnstate)
 		mobj->flags2 &= ~MF2_FRET;
 
 	if (!mobj->tracer)
@@ -5372,7 +5399,7 @@ static void P_Boss9Thinker(mobj_t *mobj)
 	if (mobj->health <= 0)
 		return;
 
-	if ((statenum_t)(mobj->state-states) == mobj->info->meleestate)
+	if ((statenum_t)(mobj->state->num) == mobj->info->meleestate)
 	{
 		P_InstaThrust(mobj, mobj->angle, -4*FRACUNIT);
 		P_TryMove(mobj, mobj->x+mobj->momx, mobj->y+mobj->momy, true);
@@ -5711,7 +5738,7 @@ static void P_Boss9Thinker(mobj_t *mobj)
 			// Pinball attack!
 			if (mobj->movecount == 3 && (mobj->movedir == 0 || mobj->movedir == 2))
 			{
-				if ((statenum_t)(mobj->state-states) != mobj->info->seestate)
+				if ((statenum_t)(mobj->state->num) != mobj->info->seestate)
 					P_SetMobjState(mobj, mobj->info->seestate);
 				if (mobj->movedir == 0) // mobj health == 1
 					P_InstaThrust(mobj, mobj->angle, 38*FRACUNIT);
@@ -5829,7 +5856,7 @@ static void P_Boss9Thinker(mobj_t *mobj)
 				else
 					P_Thrust(mobj, R_PointToAngle2(0, 0, mobj->momx, mobj->momy), -6*FRACUNIT/8);
 			}
-			if (mobj->state == states+mobj->info->raisestate)
+			if (mobj->state->num == mobj->info->raisestate)
 				return;
 		}
 
@@ -5981,7 +6008,7 @@ static void P_Boss9Thinker(mobj_t *mobj)
 		}
 
 		// Idle AI
-		if (mobj->state == &states[mobj->info->spawnstate])
+		if (mobj->state == states[mobj->info->spawnstate])
 		{
 			fixed_t dist;
 
@@ -7292,7 +7319,7 @@ static void P_RosySceneryThink(mobj_t *mobj)
 	UINT8 i;
 	fixed_t pdist = 1700*mobj->scale, work, actualwork;
 	player_t *player = NULL;
-	statenum_t stat = (mobj->state - states);
+	statenum_t stat = (mobj->state->num);
 	for (i = 0; i < MAXPLAYERS; i++)
 	{
 		if (!playeringame[i])
@@ -7606,7 +7633,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
 			&& mobj->target->player
 			&& (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_ELEMENTAL */
 			&& mobj->target->player->pflags & PF_SHIELDABILITY
-			&& ((statenum_t)(mobj->tracer->state - states) < mobj->info->raisestate
+			&& ((statenum_t)(mobj->tracer->state->num) < mobj->info->raisestate
 				|| (mobj->tracer->state->nextstate < mobj->info->raisestate && mobj->tracer->tics == 1)))
 		{
 			P_SetMobjState(mobj, mobj->info->painstate);
@@ -7641,14 +7668,14 @@ static void P_MobjSceneryThink(mobj_t *mobj)
 	case MT_FLAMEAURA_ORB:
 		if (!(mobj->flags2 & MF2_SHIELD))
 			return;
-		if ((statenum_t)(mobj->state - states) < mobj->info->painstate)
+		if ((statenum_t)(mobj->state->num) < mobj->info->painstate)
 			mobj->angle = mobj->target->angle; // implicitly okay because of P_AddShield
 		if (mobj->tracer
 			/* && mobj->target -- the following is implicit by P_AddShield
 			&& mobj->target->player
 			&& (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_FLAMEAURA */
 			&& mobj->target->player->pflags & PF_SHIELDABILITY
-			&& ((statenum_t)(mobj->tracer->state - states) < mobj->info->raisestate
+			&& ((statenum_t)(mobj->tracer->state->num) < mobj->info->raisestate
 				|| (mobj->tracer->state->nextstate < mobj->info->raisestate && mobj->tracer->tics == 1)))
 		{
 			P_SetMobjState(mobj, mobj->info->painstate);
@@ -7667,7 +7694,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
 			)
 		{
 			if (mobj->target->player->pflags & PF_SHIELDABILITY
-				&& ((statenum_t)(mobj->state - states) < mobj->info->painstate
+				&& ((statenum_t)(mobj->state->num) < mobj->info->painstate
 					|| (mobj->state->nextstate < mobj->info->painstate && mobj->tics == 1)))
 			{
 				P_SetMobjState(mobj, mobj->info->painstate);
@@ -7676,7 +7703,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
 				mobj->tracer->tics++;
 			}
 			else if (mobj->target->eflags & MFE_JUSTHITFLOOR
-				&& (statenum_t)(mobj->state - states) == mobj->info->painstate)
+				&& (statenum_t)(mobj->state->num) == mobj->info->painstate)
 			{
 				P_SetMobjState(mobj, mobj->info->painstate + 1);
 				mobj->tics++;
@@ -7835,7 +7862,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
 	case MT_BROKENROBOT:
 		if (((!(mobj->eflags & MFE_VERTICALFLIP) && mobj->z <= P_FloorzAtPos(mobj->x, mobj->y, mobj->z, mobj->height))
 			|| (mobj->eflags & MFE_VERTICALFLIP && mobj->z + mobj->height >= P_CeilingzAtPos(mobj->x, mobj->y, mobj->z, mobj->height)))
-			&& mobj->state != &states[mobj->info->deathstate])
+			&& mobj->state != states[mobj->info->deathstate])
 		{
 			P_SetMobjState(mobj, mobj->info->deathstate);
 			return;
@@ -8100,7 +8127,7 @@ static boolean P_MobjBossThink(mobj_t *mobj)
 		if (mobj->momz && mobj->z + mobj->momz <= mobj->floorz)
 		{
 			S_StartSound(mobj, sfx_befall);
-			if (mobj->state != states + S_CYBRAKDEMON_DIE8)
+			if (mobj->state->num != S_CYBRAKDEMON_DIE8)
 				P_SetMobjState(mobj, S_CYBRAKDEMON_DIE8);
 		}
 	}
@@ -8353,7 +8380,7 @@ static void P_ArrowThink(mobj_t *mobj)
 
 static void P_BumbleboreThink(mobj_t *mobj)
 {
-	statenum_t st = mobj->state - states;
+	statenum_t st = mobj->state->num;
 	if (st == S_BUMBLEBORE_FLY1 || st == S_BUMBLEBORE_FLY2)
 	{
 		if (!mobj->target)
@@ -8396,7 +8423,7 @@ static void P_BumbleboreThink(mobj_t *mobj)
 
 static boolean P_HangsterThink(mobj_t *mobj)
 {
-	statenum_t st = mobj->state - states;
+	statenum_t st = mobj->state->num;
 	//ghost image trail when flying down
 	if (st == S_HANGSTER_SWOOP1 || st == S_HANGSTER_SWOOP2)
 	{
@@ -8503,7 +8530,7 @@ static boolean P_JetFume1Think(mobj_t *mobj)
 		mobj->x = jetx;
 		mobj->y = jety;
 		mobj->destscale = mobj->target->scale;
-		if (!(dashmod && mobj->target->state == states + S_METALSONIC_BOUNCE))
+		if (!(dashmod && mobj->target->state->num == S_METALSONIC_BOUNCE))
 		{
 			mobj->destscale = (mobj->destscale + FixedDiv(R_PointToDist2(0, 0, mobj->target->momx, mobj->target->momy), 36*mobj->target->scale))/3;
 		}
@@ -8545,7 +8572,7 @@ static boolean P_EggRobo1Think(mobj_t *mobj)
 		mobj->flags2 |= MF2_STRONGBOX;
 	}
 
-	if (mobj->state == &states[mobj->info->deathstate]) // todo: make map actually set health to 0 for these
+	if (mobj->state == states[mobj->info->deathstate]) // todo: make map actually set health to 0 for these
 	{
 		if (mobj->movecount)
 		{
@@ -8583,11 +8610,11 @@ static boolean P_EggRobo1Think(mobj_t *mobj)
 		}
 
 		mobj->z = mobj->threshold + FixedMul(FINESINE(((leveltime + mobj->movecount)*ANG2 >> (ANGLETOFINESHIFT - 2)) & FINEMASK), 8*mobj->scale);
-		if (mobj->state != &states[mobj->info->meleestate])
+		if (mobj->state != states[mobj->info->meleestate])
 		{
 			boolean didmove = false;
 
-			if (mobj->state == &states[mobj->info->spawnstate])
+			if (mobj->state == states[mobj->info->spawnstate])
 			{
 				UINT8 i;
 				fixed_t dist = INT32_MAX;
@@ -8805,7 +8832,7 @@ static void P_NiGHTSDroneThink(mobj_t *mobj)
 
 	// now toggle states!
 	// GOAL mode?
-	if (sparkle->state >= &states[S_NIGHTSDRONE_SPARKLING1] && sparkle->state <= &states[S_NIGHTSDRONE_SPARKLING16])
+	if (sparkle->state->num >= states[S_NIGHTSDRONE_SPARKLING1]->num && sparkle->state->num <= states[S_NIGHTSDRONE_SPARKLING16]->num)
 	{
 		INT32 i;
 		boolean bonustime = false;
@@ -8820,9 +8847,9 @@ static void P_NiGHTSDroneThink(mobj_t *mobj)
 		if (!bonustime)
 		{
 			CONS_Debug(DBG_NIGHTSBASIC, "Removing goal post\n");
-			if (goalpost && goalpost->state != &states[S_INVISIBLE])
+			if (goalpost && goalpost->state->num != states[S_INVISIBLE]->num)
 				P_SetMobjState(goalpost, S_INVISIBLE);
-			if (sparkle && sparkle->state != &states[S_INVISIBLE])
+			if (sparkle && sparkle->state->num != states[S_INVISIBLE]->num)
 				P_SetMobjState(sparkle, S_INVISIBLE);
 		}
 	}
@@ -8876,9 +8903,9 @@ static void P_NiGHTSDroneThink(mobj_t *mobj)
 			CONS_Debug(DBG_NIGHTSBASIC, "Adding goal post\n");
 			if (!(droneman->flags2 & MF2_DONTDRAW))
 				droneman->flags2 |= MF2_DONTDRAW;
-			if (goalpost->state == &states[S_INVISIBLE])
+			if (goalpost->state->num == states[S_INVISIBLE]->num)
 				P_SetMobjState(goalpost, mobjinfo[goalpost->type]->meleestate);
-			if (sparkle->state == &states[S_INVISIBLE])
+			if (sparkle->state->num == states[S_INVISIBLE]->num)
 				P_SetMobjState(sparkle, mobjinfo[sparkle->type]->meleestate);
 		}
 		else if (!G_IsSpecialStage(gamemap))
@@ -8893,11 +8920,11 @@ static void P_NiGHTSDroneThink(mobj_t *mobj)
 			if (bonustime)
 			{
 				// show droneman if at least one player is non-nights
-				if (goalpost->state != &states[S_INVISIBLE])
+				if (goalpost->state->num != states[S_INVISIBLE]->num)
 					P_SetMobjState(goalpost, S_INVISIBLE);
-				if (sparkle->state != &states[S_INVISIBLE])
+				if (sparkle->state->num != states[S_INVISIBLE]->num)
 					P_SetMobjState(sparkle, S_INVISIBLE);
-				if (droneman->state != &states[mobjinfo[droneman->type]->meleestate])
+				if (droneman->state != states[mobjinfo[droneman->type]->meleestate])
 					P_SetMobjState(droneman, mobjinfo[droneman->type]->meleestate);
 				if (droneman->flags2 & MF2_DONTDRAW)
 					droneman->flags2 &= ~MF2_DONTDRAW;
@@ -9128,12 +9155,12 @@ static void P_PterabyteThink(mobj_t *mobj)
 		if (mobj->reactiontime)
 			return;
 
-		if (mobj->state - states == S_PTERABYTE_SWOOPDOWN)
+		if (mobj->state->num == S_PTERABYTE_SWOOPDOWN)
 		{
 			P_SetMobjState(mobj, S_PTERABYTE_SWOOPUP);
 			mobj->reactiontime = mobj->movecount;
 		}
-		else if (mobj->state - states == S_PTERABYTE_SWOOPUP)
+		else if (mobj->state->num == S_PTERABYTE_SWOOPUP)
 		{
 			P_SetMobjState(mobj, S_PTERABYTE_FLY1);
 			mobj->extravalue1++;
@@ -9166,7 +9193,7 @@ static void P_DragonbomberThink(mobj_t *mobj)
 		if (mobj->threshold == 0) // if the timer hits 0, look for a mine to drop!
 		{
 			mobj_t *segment = mobj;
-			while (segment->tracer != NULL && !P_MobjWasRemoved(segment->tracer) && segment->tracer->state == &states[segment->tracer->info->spawnstate])
+			while (segment->tracer != NULL && !P_MobjWasRemoved(segment->tracer) && segment->tracer->state == states[segment->tracer->info->spawnstate])
 				segment = segment->tracer;
 			if (segment != mobj) // found an unactivated segment?
 			{
@@ -9206,7 +9233,7 @@ static void P_DragonbomberThink(mobj_t *mobj)
 	}
 	else // Can we find a player to chase?
 	{
-		if (mobj->tracer == NULL || mobj->tracer->state != &states[mobj->tracer->info->spawnstate]
+		if (mobj->tracer == NULL || mobj->tracer->state != states[mobj->tracer->info->spawnstate]
 			|| !P_LookForPlayers(mobj, true, false, 2000*mobj->scale)) // if not, circle around the spawnpoint
 		{
 			if (!mobj->spawnpoint) // unless we don't have one, in which case uhhh just circle around wherever we currently are I guess??
@@ -9422,7 +9449,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
 				if (leveltime % mobj->info->painchance == 0)
 					S_StartSound(mobj, mobj->info->activesound);
 
-				if ((statenum_t)(mobj->state - states) != mobj->info->seestate)
+				if ((statenum_t)(mobj->state->num) != mobj->info->seestate)
 					P_SetMobjState(mobj, mobj->info->seestate);
 			}
 			else
@@ -9432,7 +9459,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
 				mobj->momx >>= 1;
 				mobj->momy >>= 1;
 				mobj->momz >>= 1;
-				if ((statenum_t)(mobj->state - states) != mobj->info->spawnstate)
+				if ((statenum_t)(mobj->state->num) != mobj->info->spawnstate)
 					P_SetMobjState(mobj, mobj->info->spawnstate);
 			}
 		}
@@ -9493,11 +9520,11 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
 	}
 	break;
 	case MT_SPINCUSHION:
-		if (mobj->target && mobj->state - states >= S_SPINCUSHION_AIM1 && mobj->state - states <= S_SPINCUSHION_AIM5)
+		if (mobj->target && mobj->state->num >= S_SPINCUSHION_AIM1 && mobj->state->num <= S_SPINCUSHION_AIM5)
 			mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y);
 		break;
 	case MT_CRUSHCLAW:
-		if (mobj->state - states == S_CRUSHCLAW_STAY && mobj->target)
+		if (mobj->state->num == S_CRUSHCLAW_STAY && mobj->target)
 		{
 			mobj_t *chain = mobj->target->target;
 			SINT8 sign = ((mobj->tics & 1) ? mobj->tics : -(SINT8)(mobj->tics));
@@ -9511,12 +9538,12 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
 		break;
 	case MT_SMASHINGSPIKEBALL:
 		mobj->momx = mobj->momy = 0;
-		if (mobj->state - states == S_SMASHSPIKE_FALL && P_IsObjectOnGround(mobj))
+		if (mobj->state->num == S_SMASHSPIKE_FALL && P_IsObjectOnGround(mobj))
 		{
 			P_SetMobjState(mobj, S_SMASHSPIKE_STOMP1);
 			S_StartSound(mobj, sfx_spsmsh);
 		}
-		else if (mobj->state - states == S_SMASHSPIKE_RISE2 && P_MobjFlip(mobj)*(mobj->z - mobj->movecount) >= 0)
+		else if (mobj->state->num == S_SMASHSPIKE_RISE2 && P_MobjFlip(mobj)*(mobj->z - mobj->movecount) >= 0)
 		{
 			mobj->momz = 0;
 			P_SetMobjState(mobj, S_SMASHSPIKE_FLOAT);
@@ -9555,8 +9582,8 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
 	case MT_EGGMOBILE2_POGO:
 		if (!mobj->target
 			|| !mobj->target->health
-			|| mobj->target->state == &states[mobj->target->info->spawnstate]
-			|| mobj->target->state == &states[mobj->target->info->raisestate])
+			|| mobj->target->state == states[mobj->target->info->spawnstate]
+			|| mobj->target->state == states[mobj->target->info->raisestate])
 		{
 			P_RemoveMobj(mobj);
 			return false;
@@ -9736,7 +9763,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
 		mobj->momx = FixedMul(mobj->momx, (3*FRACUNIT)/4); // originally 50000
 		mobj->momy = FixedMul(mobj->momy, (3*FRACUNIT)/4); // same
 		//mobj->momz = mobj->momz+P_MobjFlip(mobj)/3; // no meaningful change in value to be frank
-		if (mobj->state >= &states[S_SPINDUST_BUBBLE1] && mobj->state <= &states[S_SPINDUST_BUBBLE4]) // bubble dust!
+		if (mobj->state->num >= states[S_SPINDUST_BUBBLE1]->num && mobj->state->num <= states[S_SPINDUST_BUBBLE4]->num) // bubble dust!
 		{
 			P_MobjCheckWater(mobj);
 			if (mobj->watertop != mobj->subsector->sector->floorheight - 1000*FRACUNIT
@@ -10083,13 +10110,13 @@ static boolean P_FuseThink(mobj_t *mobj)
 		P_RemoveMobj(mobj);
 		return false;
 	case MT_LAVAFALL:
-		if (mobj->state - states == S_LAVAFALL_DORMANT)
+		if (mobj->state->num == S_LAVAFALL_DORMANT)
 		{
 			mobj->fuse = 30;
 			P_SetMobjState(mobj, S_LAVAFALL_TELL);
 			S_StartSound(mobj, mobj->info->seesound);
 		}
-		else if (mobj->state - states == S_LAVAFALL_TELL)
+		else if (mobj->state->num == S_LAVAFALL_TELL)
 		{
 			mobj->fuse = 40;
 			P_SetMobjState(mobj, S_LAVAFALL_SHOOT);
@@ -10663,7 +10690,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type, ...)
 
 	// do not set the state with P_SetMobjState,
 	// because action routines can not be called yet
-	st = &states[info->spawnstate];
+	st = states[info->spawnstate];
 
 	mobj->state = st;
 	mobj->tics = st->tics;
@@ -11101,7 +11128,7 @@ static precipmobj_t *P_SpawnPrecipMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype
 
 	// do not set the state with P_SetMobjState,
 	// because action routines can not be called yet
-	st = &states[mobjinfo[type]->spawnstate];
+	st = states[mobjinfo[type]->spawnstate];
 
 	mobj->state = st;
 	mobj->tics = st->tics;
diff --git a/src/p_saveg.c b/src/p_saveg.c
index 5d9b3ec9020c1df0a309792dafc17c182b53790f..906fc17b964f8b49b3ebd4f8dc6ba767620f4eec 100644
--- a/src/p_saveg.c
+++ b/src/p_saveg.c
@@ -1878,7 +1878,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
 		diff |= MD_HEALTH;
 	if (mobj->reactiontime != mobj->info->reactiontime)
 		diff |= MD_RTIME;
-	if ((statenum_t)(mobj->state-states) != mobj->info->spawnstate)
+	if ((statenum_t)(mobj->state->num) != mobj->info->spawnstate)
 		diff |= MD_STATE;
 	if (mobj->tics != mobj->state->tics)
 		diff |= MD_TICS;
@@ -2062,7 +2062,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
 	if (diff & MD_RTIME)
 		WRITEINT32(save_p, mobj->reactiontime);
 	if (diff & MD_STATE)
-		WRITEUINT16(save_p, mobj->state-states);
+		WRITEUINT32(save_p, mobj->state->num);
 	if (diff & MD_TICS)
 		WRITEINT32(save_p, mobj->tics);
 	if (diff & MD_SPRITE) {
@@ -3088,9 +3088,9 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
 		mobj->reactiontime = mobj->info->reactiontime;
 
 	if (diff & MD_STATE)
-		mobj->state = &states[READUINT16(save_p)];
+		mobj->state = states[READUINT32(save_p)];
 	else
-		mobj->state = &states[mobj->info->spawnstate];
+		mobj->state = states[mobj->info->spawnstate];
 	if (diff & MD_TICS)
 		mobj->tics = READINT32(save_p);
 	else
diff --git a/src/p_spec.c b/src/p_spec.c
index 67c33f203101fb99c257311fa0807f0657125e7d..28f9859ab1c44d77400fda0ee64f59f85f8d19c6 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -2056,7 +2056,7 @@ void P_SwitchWeather(INT32 weathernum)
 			if (weathernum == PRECIP_RAIN || weathernum == PRECIP_STORM || weathernum == PRECIP_STORM_NOSTRIKES) // Snow To Rain
 			{
 				precipmobj->flags = mobjinfo[MT_RAIN]->flags;
-				st = &states[mobjinfo[MT_RAIN]->spawnstate];
+				st = states[mobjinfo[MT_RAIN]->spawnstate];
 				precipmobj->state = st;
 				precipmobj->tics = st->tics;
 				precipmobj->sprite = st->sprite;
@@ -2082,7 +2082,7 @@ void P_SwitchWeather(INT32 weathernum)
 				else
 					z = 0;
 
-				st = &states[mobjinfo[MT_SNOWFLAKE]->spawnstate+z];
+				st = states[mobjinfo[MT_SNOWFLAKE]->spawnstate+z];
 				precipmobj->state = st;
 				precipmobj->tics = st->tics;
 				precipmobj->sprite = st->sprite;
@@ -2644,7 +2644,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 			if (mo && !mo->player)
 			{
 				statenum_t state = line->stringargs[0] ? get_number(line->stringargs[0]) : S_NULL;
-				if (state >= 0 && state < NUMSTATES)
+				if (state >= 0 && state < numstates)
 					P_SetMobjState(mo, state);
 			}
 			break;
@@ -2906,7 +2906,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 		case 442: // Calls P_SetMobjState on mobjs of a given type in the tagged sectors
 		{
 			const mobjtype_t type = line->stringargs[0] ? get_number(line->stringargs[0]) : MT_NULL;
-			statenum_t state = NUMSTATES;
+			statenum_t state = numstates;
 			mobj_t *thing;
 
 			if (type < 0 || type >= nummobjinfo)
@@ -2916,7 +2916,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 			{
 				state = line->stringargs[1] ? get_number(line->stringargs[1]) : S_NULL;
 
-				if (state < 0 || state >= NUMSTATES)
+				if (state < 0 || state >= numstates)
 					break;
 			}
 
@@ -3837,7 +3837,7 @@ void P_SetupSignExit(player_t *player)
 			&& !((gametyperules & GTR_FRIENDLY) && (netgame || multiplayer) && cv_exitmove.value))
 				P_SetTarget(&player->mo->target, thing);
 
-		if (thing->state != &states[thing->info->spawnstate])
+		if (thing->state != states[thing->info->spawnstate])
 			continue;
 
 		P_SetTarget(&thing->target, player->mo);
@@ -3868,7 +3868,7 @@ void P_SetupSignExit(player_t *player)
 			&& !((gametyperules & GTR_FRIENDLY) && (netgame || multiplayer) && cv_exitmove.value))
 				P_SetTarget(&player->mo->target, thing);
 
-		if (thing->state != &states[thing->info->spawnstate])
+		if (thing->state != states[thing->info->spawnstate])
 			continue;
 
 		P_SetTarget(&thing->target, player->mo);
@@ -4677,7 +4677,7 @@ static void P_ProcessZoomTube(player_t *player, mtag_t sectag, boolean end)
 	player->pflags &= ~(PF_JUMPED|PF_NOJUMPDAMAGE|PF_GLIDING|PF_BOUNCING|PF_SLIDING|PF_CANCARRY);
 	player->climbing = 0;
 
-	if (player->mo->state-states != S_PLAY_ROLL)
+	if (player->mo->state->num != S_PLAY_ROLL)
 	{
 		P_SetMobjState(player->mo, S_PLAY_ROLL);
 		S_StartSound(player->mo, sfx_spin);
@@ -4758,7 +4758,7 @@ static void P_ProcessRopeHang(player_t *player, mtag_t sectag)
 	if (player->cmd.buttons & BT_SPIN)
 		return;
 
-	if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate])
+	if (!(player->pflags & PF_SLIDING) && player->mo->state == states[player->mo->info->painstate])
 		return;
 
 	if (player->exiting)
@@ -8805,7 +8805,7 @@ void T_Pusher(pusher_t *p)
 		if (thing->player && thing->player->powers[pw_carry] == CR_ROPEHANG)
 			continue;
 
-		if (thing->player && (thing->state == &states[thing->info->painstate]) && (thing->player->powers[pw_flashing] > (flashingtics/4)*3 && thing->player->powers[pw_flashing] <= flashingtics))
+		if (thing->player && (thing->state == states[thing->info->painstate]) && (thing->player->powers[pw_flashing] > (flashingtics/4)*3 && thing->player->powers[pw_flashing] <= flashingtics))
 			continue;
 
 		inFOF = touching = moved = false;
diff --git a/src/p_tick.c b/src/p_tick.c
index 652b107055b8db11f7d25700c53781bbe301b0c1..88245675e983c7f43d792eaaa4c063b83889dac5 100644
--- a/src/p_tick.c
+++ b/src/p_tick.c
@@ -154,7 +154,7 @@ void Command_CountMobjs_f(void)
 			i = atoi(COM_Argv(j));
 			if (i >= nummobjinfo)
 			{
-				CONS_Printf(M_GetText("Object number %d out of range (max %zu).\n"), i, nummobjinfo-1);
+				CONS_Printf(M_GetText("Object number %d out of range (max %u).\n"), i, nummobjinfo-1);
 				continue;
 			}
 
diff --git a/src/p_user.c b/src/p_user.c
index 445e1246f86374521b2d17cf777a48aabc1b8b6c..503453b6227b8f21564d303c014e62204efee51c 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -977,10 +977,10 @@ pflags_t P_GetJumpFlags(player_t *player)
 boolean P_PlayerInPain(player_t *player)
 {
 	// no silly, sliding isn't pain
-	if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate] && player->powers[pw_flashing])
+	if (!(player->pflags & PF_SLIDING) && player->mo->state == states[player->mo->info->painstate] && player->powers[pw_flashing])
 		return true;
 
-	if (player->mo->state == &states[S_PLAY_STUN])
+	if (player->mo->state == states[S_PLAY_STUN])
 		return true;
 
 	return false;
@@ -1408,7 +1408,7 @@ void P_DoSuperDetransformation(player_t *player)
 		player->powers[pw_flashing] = flashingtics-1;
 
 	if (player->mo->sprite2 & SPR2F_SUPER)
-		P_SetMobjState(player->mo, player->mo->state-states);
+		P_SetMobjState(player->mo, player->mo->state->num);
 
 	// Inform the netgame that the champion has fallen in the heat of battle.
 	if (!G_CoopGametype())
@@ -2380,7 +2380,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
 
 		if (player->pflags & PF_BOUNCING)
 		{
-			if (dorollstuff && player->mo->state-states != S_PLAY_BOUNCE_LANDING)
+			if (dorollstuff && player->mo->state->num != S_PLAY_BOUNCE_LANDING)
 			{
 				P_MobjCheckWater(player->mo);
 				player->mo->momz *= -1;
@@ -2417,9 +2417,9 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
 					player->pflags &= ~PF_GLIDING;
 			}
 			else if (player->charability == CA_GLIDEANDCLIMB && player->pflags & PF_THOKKED && !(player->pflags & (PF_JUMPED|PF_SHIELDABILITY))
-			&& (player->mo->floorz != player->mo->watertop) && player->mo->state-states == S_PLAY_FALL)
+			&& (player->mo->floorz != player->mo->watertop) && player->mo->state->num == S_PLAY_FALL)
 			{
-				if (player->mo->state-states != S_PLAY_GLIDE_LANDING)
+				if (player->mo->state->num != S_PLAY_GLIDE_LANDING)
 				{
 					P_ResetPlayer(player);
 					P_SetMobjState(player->mo, S_PLAY_GLIDE_LANDING);
@@ -2440,7 +2440,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
 			else if (player->charability2 == CA2_MELEE
 				&& ((player->panim == PA_ABILITY2) || (player->charability == CA_TWINSPIN && player->panim == PA_ABILITY && player->cmd.buttons & (BT_JUMP|BT_SPIN))))
 			{
-				if (player->mo->state-states != S_PLAY_MELEE_LANDING)
+				if (player->mo->state->num != S_PLAY_MELEE_LANDING)
 				{
 					mobjtype_t type = player->revitem;
 					P_SetMobjState(player->mo, S_PLAY_MELEE_LANDING);
@@ -2488,7 +2488,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
 					}
 				}
 			}
-			else if (player->charability == CA_GLIDEANDCLIMB && (player->mo->state-states == S_PLAY_GLIDE_LANDING))
+			else if (player->charability == CA_GLIDEANDCLIMB && (player->mo->state->num == S_PLAY_GLIDE_LANDING))
 				;
 			else if (player->charability2 == CA2_GUNSLINGER && player->panim == PA_ABILITY2)
 				;
@@ -2511,10 +2511,10 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
 					if (player->charflags & SF_DASHMODE && player->dashmode >= DASHMODE_THRESHOLD && player->panim != PA_DASH)
 						P_SetMobjState(player->mo, S_PLAY_DASH);
 					else if (player->speed >= runspd
-					&& (player->panim != PA_RUN || player->mo->state-states == S_PLAY_FLOAT_RUN))
+					&& (player->panim != PA_RUN || player->mo->state->num == S_PLAY_FLOAT_RUN))
 						P_SetMobjState(player->mo, S_PLAY_RUN);
 					else if ((player->rmomx || player->rmomy)
-					&& (player->panim != PA_WALK || player->mo->state-states == S_PLAY_FLOAT))
+					&& (player->panim != PA_WALK || player->mo->state->num == S_PLAY_FLOAT))
 						P_SetMobjState(player->mo, S_PLAY_WALK);
 					else if (!player->rmomx && !player->rmomy && player->panim != PA_IDLE)
 						P_SetMobjState(player->mo, S_PLAY_STND);
@@ -2524,10 +2524,10 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
 					if (player->charflags & SF_DASHMODE && player->dashmode >= DASHMODE_THRESHOLD && player->panim != PA_DASH)
 						P_SetMobjState(player->mo, S_PLAY_DASH);
 					else if (player->speed >= runspd
-					&& (player->panim != PA_RUN || player->mo->state-states == S_PLAY_FLOAT_RUN))
+					&& (player->panim != PA_RUN || player->mo->state->num == S_PLAY_FLOAT_RUN))
 						P_SetMobjState(player->mo, S_PLAY_RUN);
 					else if ((player->mo->momx || player->mo->momy)
-					&& (player->panim != PA_WALK || player->mo->state-states == S_PLAY_FLOAT))
+					&& (player->panim != PA_WALK || player->mo->state->num == S_PLAY_FLOAT))
 						P_SetMobjState(player->mo, S_PLAY_WALK);
 					else if (!player->mo->momx && !player->mo->momy && player->panim != PA_IDLE)
 						P_SetMobjState(player->mo, S_PLAY_STND);
@@ -3701,9 +3701,9 @@ static void P_DoClimbing(player_t *player)
 			climb = false;
 
 		if (player->climbing && climb && (player->mo->momx || player->mo->momy || player->mo->momz)
-			&& player->mo->state-states != S_PLAY_CLIMB)
+			&& player->mo->state->num != S_PLAY_CLIMB)
 			P_SetMobjState(player->mo, S_PLAY_CLIMB);
-		else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state-states != S_PLAY_CLING)
+		else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state->num != S_PLAY_CLING)
 			P_SetMobjState(player->mo, S_PLAY_CLING);
 
 		if (!floorclimb)
@@ -3736,9 +3736,9 @@ static void P_DoClimbing(player_t *player)
 		climb = false;
 
 	if (player->climbing && climb && (player->mo->momx || player->mo->momy || player->mo->momz)
-		&& player->mo->state-states != S_PLAY_CLIMB)
+		&& player->mo->state->num != S_PLAY_CLIMB)
 		P_SetMobjState(player->mo, S_PLAY_CLIMB);
-	else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state-states != S_PLAY_CLING)
+	else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state->num != S_PLAY_CLING)
 		P_SetMobjState(player->mo, S_PLAY_CLING);
 
 	if (cmd->buttons & BT_SPIN && !(player->pflags & PF_JUMPSTASIS))
@@ -4379,8 +4379,8 @@ static void P_DoSuperStuff(player_t *player)
 {
 	mobj_t *spark;
 	ticcmd_t *cmd = &player->cmd;
-	if (player->mo->state >= &states[S_PLAY_SUPER_TRANS1]
-	&& player->mo->state < &states[S_PLAY_SUPER_TRANS6])
+	if (player->mo->state->num >= S_PLAY_SUPER_TRANS1
+	&& player->mo->state->num < S_PLAY_SUPER_TRANS6)
 		return; // don't do anything right now, we're in the middle of transforming!
 
 	if (player->powers[pw_carry] == CR_NIGHTSMODE)
@@ -4401,7 +4401,7 @@ static void P_DoSuperStuff(player_t *player)
 
 		G_GhostAddColor(GHC_SUPER);
 
-		if (player->mo->state == &states[S_PLAY_SUPER_TRANS6]) // stop here for now
+		if (player->mo->state == states[S_PLAY_SUPER_TRANS6]) // stop here for now
 			return;
 
 		// Deplete one ring every second while super
@@ -4686,7 +4686,7 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd)
 {
 	boolean canstand = true; // can we stand on the ground? (mostly relevant for slopes)
 	if (player->pflags & PF_STASIS
-		&& (player->pflags & PF_JUMPSTASIS || player->mo->state-states != S_PLAY_GLIDE_LANDING))
+		&& (player->pflags & PF_JUMPSTASIS || player->mo->state->num != S_PLAY_GLIDE_LANDING))
 		return;
 
 	if (cmd->buttons & BT_SPIN)
@@ -4706,7 +4706,7 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd)
 		{
 			case CA2_SPINDASH: // Spinning and Spindashing
 				 // Start revving
-				if ((cmd->buttons & BT_SPIN) && (player->speed < FixedMul(5<<FRACBITS, player->mo->scale) || player->mo->state - states == S_PLAY_GLIDE_LANDING)
+				if ((cmd->buttons & BT_SPIN) && (player->speed < FixedMul(5<<FRACBITS, player->mo->scale) || player->mo->state->num == S_PLAY_GLIDE_LANDING)
 					&& !player->mo->momz && onground && !(player->pflags & (PF_SPINDOWN|PF_SPINNING))
 						&& canstand)
 				{
@@ -4996,7 +4996,7 @@ void P_DoBubbleBounce(player_t *player)
 //
 void P_DoAbilityBounce(player_t *player, boolean changemomz)
 {
-	if (player->mo->state-states == S_PLAY_BOUNCE_LANDING)
+	if (player->mo->state->num == S_PLAY_BOUNCE_LANDING)
 		return;
 
 	if (changemomz)
@@ -6072,7 +6072,7 @@ static void P_3dMovement(player_t *player)
 	// When sliding, don't allow forward/back
 	if (player->pflags & PF_SLIDING)
 		cmd->forwardmove = 0;
-	else if (onground && player->mo->state == states+S_PLAY_PAIN)
+	else if (onground && player->mo->state->num == S_PLAY_PAIN)
 		P_SetMobjState(player->mo, S_PLAY_WALK);
 
 	player->aiming = cmd->aiming<<FRACBITS;
@@ -6125,7 +6125,7 @@ static void P_3dMovement(player_t *player)
 	{
 		if (player->pflags & PF_BOUNCING)
 		{
-			if (player->mo->state-states == S_PLAY_BOUNCE_LANDING)
+			if (player->mo->state->num == S_PLAY_BOUNCE_LANDING)
 			{
 				thrustfactor = player->thrustfactor*8;
 				acceleration = player->accelstart/8 + (FixedDiv(player->speed, player->mo->scale)>>FRACBITS) * player->acceleration/8;
@@ -6878,10 +6878,10 @@ static void P_DoNiGHTSCapsule(player_t *player)
 	{
 		if (player->mo->momx || player->mo->momy || player->mo->momz)
 		{
-			if (player->mo->state != &states[S_PLAY_NIGHTS_PULL])
+			if (player->mo->state != states[S_PLAY_NIGHTS_PULL])
 				P_SetMobjState(player->mo, S_PLAY_NIGHTS_PULL);
 		}
-		else if (player->mo->state != &states[S_PLAY_NIGHTS_ATTACK])
+		else if (player->mo->state != states[S_PLAY_NIGHTS_ATTACK])
 		{
 			S_StartSound(player->mo, sfx_spin);
 			P_SetMobjState(player->mo, S_PLAY_NIGHTS_ATTACK);
@@ -6897,7 +6897,7 @@ static void P_DoNiGHTSCapsule(player_t *player)
 
 	if (!(player->charflags & SF_NONIGHTSROTATION))
 	{
-		if ((player->mo->state == &states[S_PLAY_NIGHTS_PULL])
+		if ((player->mo->state == states[S_PLAY_NIGHTS_PULL])
 		&& (player->mo->sprite2 == SPR2_NPUL))
 			player->mo->spriteroll -= ANG30;
 		else
@@ -7213,14 +7213,14 @@ static void P_NiGHTSMovement(player_t *player)
 			&& (players[i].capsule && players[i].capsule->reactiontime))
 				capsule = true;
 		if (!capsule
-		&& !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1]
-			&& player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6])
+		&& !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1
+			&& player->mo->state->num <= S_PLAY_NIGHTS_TRANS6)
 		&& !player->exiting)
 			player->nightstime--;
 	}
 	else if (!(gametyperules & GTR_RACE)
-	&& !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1]
-			&& player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6])
+	&& !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1
+			&& player->mo->state->num <= S_PLAY_NIGHTS_TRANS6)
 	&& !(player->capsule && player->capsule->reactiontime)
 	&& !player->exiting)
 		player->nightstime--;
@@ -7360,8 +7360,8 @@ static void P_NiGHTSMovement(player_t *player)
 		return;
 	}
 
-	if (player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1]
-		&& player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6])
+	if (player->mo->state->num >= S_PLAY_NIGHTS_TRANS1
+		&& player->mo->state->num <= S_PLAY_NIGHTS_TRANS6)
 	{
 		player->mo->momx = player->mo->momy = player->mo->momz = 0;
 		player->mo->spriteroll = 0;
@@ -7380,14 +7380,14 @@ static void P_NiGHTSMovement(player_t *player)
 #if 0//def ROTSPRITE
 		if (!(player->charflags & SF_NONIGHTSROTATION) && player->mo->momz)
 		{
-			if (player->mo->state != &states[S_PLAY_NIGHTS_DRILL])
+			if (player->mo->state != states[S_PLAY_NIGHTS_DRILL])
 				P_SetMobjState(player->mo, S_PLAY_NIGHTS_DRILL);
 			player->mo->spriteroll = ANGLE_90;
 		}
 		else
 #endif
 		{
-			if (player->mo->state != &states[S_PLAY_NIGHTS_FLOAT])
+			if (player->mo->state != states[S_PLAY_NIGHTS_FLOAT])
 				P_SetMobjState(player->mo, S_PLAY_NIGHTS_FLOAT);
 			player->drawangle += ANGLE_22h;
 		}
@@ -7719,7 +7719,7 @@ static void P_NiGHTSMovement(player_t *player)
 		}
 	}
 
-	if (player->mo->state != &states[flystate])
+	if (player->mo->state != states[flystate])
 		P_SetMobjState(player->mo, flystate);
 
 	if (player->charflags & SF_NONIGHTSROTATION)
@@ -8019,7 +8019,7 @@ static void P_SkidStuff(player_t *player)
 			// Spawn a particle every 3 tics.
 			if (!(player->skidtime % 3))
 			{
-				if (player->mo->state-states == S_PLAY_GLIDE_LANDING)
+				if (player->mo->state->num == S_PLAY_GLIDE_LANDING)
 					P_SpawnSkidDust(player, player->mo->radius, true);
 				else
 					P_SpawnSkidDust(player, 0, false);
@@ -8039,7 +8039,7 @@ static void P_SkidStuff(player_t *player)
 			// If your push angle is more than this close to a full 180 degrees, trigger a skid.
 			if (dang > ANGLE_157h)
 			{
-				if (player->mo->state-states != S_PLAY_SKID)
+				if (player->mo->state->num != S_PLAY_SKID)
 					P_SetMobjState(player->mo, S_PLAY_SKID);
 				player->mo->tics = player->skidtime = (player->mo->movefactor == FRACUNIT) ? TICRATE/2 : (FixedDiv(35<<(FRACBITS-1), FixedSqrt(player->mo->movefactor)))>>FRACBITS;
 				S_StartSound(player->mo, sfx_skid);
@@ -8064,7 +8064,7 @@ void P_MovePlayer(player_t *player)
 
 	fixed_t runspd;
 
-	if (player->mo->state >= &states[S_PLAY_SUPER_TRANS1] && player->mo->state <= &states[S_PLAY_SUPER_TRANS6])
+	if (player->mo->state->num >= S_PLAY_SUPER_TRANS1 && player->mo->state->num <= S_PLAY_SUPER_TRANS6)
 	{
 		player->mo->momx = player->mo->momy = player->mo->momz = 0;
 		return;
@@ -8085,7 +8085,7 @@ void P_MovePlayer(player_t *player)
 	if ((player->powers[pw_carry] == CR_BRAKGOOP)
 	|| (player->pflags & PF_GLIDING && player->skidtime)
 	|| (player->charability2 == CA2_GUNSLINGER && player->panim == PA_ABILITY2)
-	|| (player->charability2 == CA2_MELEE && player->mo->state-states == S_PLAY_MELEE_LANDING))
+	|| (player->charability2 == CA2_MELEE && player->mo->state->num == S_PLAY_MELEE_LANDING))
 		player->pflags |= PF_FULLSTASIS;
 	else if (player->powers[pw_nocontrol])
 	{
@@ -8094,7 +8094,7 @@ void P_MovePlayer(player_t *player)
 			player->pflags |= PF_JUMPSTASIS;
 	}
 
-	if (player->charability == CA_GLIDEANDCLIMB && player->mo->state-states == S_PLAY_GLIDE_LANDING)
+	if (player->charability == CA_GLIDEANDCLIMB && player->mo->state->num == S_PLAY_GLIDE_LANDING)
 	{
 		player->pflags |= PF_STASIS;
 	}
@@ -8312,9 +8312,9 @@ void P_MovePlayer(player_t *player)
 	// Correct floating when ending up on the ground.
 	if (onground)
 	{
-		if (player->mo->state-states == S_PLAY_FLOAT)
+		if (player->mo->state->num == S_PLAY_FLOAT)
 			P_SetMobjState(player->mo, S_PLAY_WALK);
-		else if (player->mo->state-states == S_PLAY_FLOAT_RUN)
+		else if (player->mo->state->num == S_PLAY_FLOAT_RUN)
 			P_SetMobjState(player->mo, S_PLAY_RUN);
 	}
 
@@ -8380,7 +8380,7 @@ void P_MovePlayer(player_t *player)
 		fixed_t glidespeed = player->actionspd;
 		fixed_t momx = mo->momx - player->cmomx, momy = mo->momy - player->cmomy;
 		angle_t angle, moveangle = R_PointToAngle2(0, 0, momx, momy);
-		boolean swimming = mo->state - states == S_PLAY_SWIM;
+		boolean swimming = mo->state->num == S_PLAY_SWIM;
 		boolean in2d = mo->flags2 & MF2_TWOD || twodlevel;
 
 		if (player->powers[pw_super] || player->powers[pw_sneakers])
@@ -8527,7 +8527,7 @@ void P_MovePlayer(player_t *player)
 			}
 		}
 	}
-	else if (player->mo->state-states == S_PLAY_BOUNCE)
+	else if (player->mo->state->num == S_PLAY_BOUNCE)
 		P_SetMobjState(player->mo, S_PLAY_FALL);
 
 	// If you're running fast enough, you can create splashes as you run in shallow water.
@@ -8571,7 +8571,7 @@ void P_MovePlayer(player_t *player)
 	if (!(player->charability == CA_FLY || player->charability == CA_SWIM)) // why are you flying when you cannot fly?!
 	{
 		if (player->powers[pw_tailsfly]
-		|| player->mo->state-states == S_PLAY_FLY_TIRED)
+		|| player->mo->state->num == S_PLAY_FLY_TIRED)
 		{
 			if (onground)
 				P_SetMobjState(player->mo, S_PLAY_WALK);
@@ -8639,11 +8639,11 @@ void P_MovePlayer(player_t *player)
 		else
 		{
 			// Tails-gets-tired Stuff
-			if (player->panim == PA_ABILITY && player->mo->state-states != S_PLAY_FLY_TIRED)
+			if (player->panim == PA_ABILITY && player->mo->state->num != S_PLAY_FLY_TIRED)
 				P_SetMobjState(player->mo, S_PLAY_FLY_TIRED);
 
 			if (player->charability == CA_FLY && (leveltime % 10 == 0)
-				&& player->mo->state-states == S_PLAY_FLY_TIRED
+				&& player->mo->state->num == S_PLAY_FLY_TIRED
 				&& !(player->mo->eflags & MFE_UNDERWATER)
 				&& !player->spectator)
 				S_StartSound(player->mo, sfx_pudpud);
@@ -8741,7 +8741,7 @@ void P_MovePlayer(player_t *player)
 		}
 		// Otherwise, face the direction you're travelling.
 		else if (player->panim == PA_WALK || player->panim == PA_RUN || player->panim == PA_DASH || player->panim == PA_ROLL || player->panim == PA_JUMP
-		|| (player->panim == PA_ABILITY && player->mo->state-states == S_PLAY_GLIDE))
+		|| (player->panim == PA_ABILITY && player->mo->state->num == S_PLAY_GLIDE))
 			player->mo->angle = R_PointToAngle2(0, 0, player->rmomx, player->rmomy);
 
 		// Update the local angle control.
@@ -9015,7 +9015,7 @@ static void P_DoRopeHang(player_t *player)
 		return;
 	}
 
-	if (player->mo->state-states != S_PLAY_RIDE)
+	if (player->mo->state->num != S_PLAY_RIDE)
 		P_SetMobjState(player->mo, S_PLAY_RIDE);
 
 	// If not allowed to move, we're done here.
@@ -9953,8 +9953,8 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 		&& !(twodlevel || (mo->flags2 & MF2_TWOD)))
 			sign = mo->target;
 		else if ((player->powers[pw_carry] == CR_NIGHTSMODE)
-		&& !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1]
-		&& player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6]))
+		&& !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1
+		&& player->mo->state->num <= S_PLAY_NIGHTS_TRANS6))
 		{
 			P_CalcChasePostImg(player, thiscam);
 			return true;
@@ -11271,7 +11271,7 @@ static void P_MinecartThink(player_t *player)
 		}
 	}
 
-	if (player->mo->state-states != S_PLAY_STND)
+	if (player->mo->state->num != S_PLAY_STND)
 	{
 		P_SetMobjState(player->mo, S_PLAY_STND);
 		player->mo->tics = -1;
@@ -11349,12 +11349,12 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails)
 	}
 	else if (player->panim == PA_PAIN)
 		backwards /= 16;
-	else if (player->mo->state-states == S_PLAY_GASP)
+	else if (player->mo->state->num == S_PLAY_GASP)
 	{
 		backwards /= 16;
 		zoffs += 12*FRACUNIT;
 	}
-	else if (player->mo->state-states == S_PLAY_EDGE)
+	else if (player->mo->state->num == S_PLAY_EDGE)
 	{
 		backwards /= 16;
 		zoffs = 3*FRACUNIT;
@@ -11383,13 +11383,13 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails)
 	}
 	else if (player->panim == PA_SPRING || player->panim == PA_JUMP)
 		chosenstate = S_TAILSOVERLAY_MINUS60DEGREES;
-	else if (player->panim == PA_FALL || player->mo->state-states == S_PLAY_RIDE)
+	else if (player->panim == PA_FALL || player->mo->state->num == S_PLAY_RIDE)
 		chosenstate = S_TAILSOVERLAY_PLUS60DEGREES;
 	else if (player->panim == PA_PAIN)
 		chosenstate = S_TAILSOVERLAY_PAIN;
-	else if (player->mo->state-states == S_PLAY_GASP)
+	else if (player->mo->state->num == S_PLAY_GASP)
 		chosenstate = S_TAILSOVERLAY_GASP;
-	else if (player->mo->state-states == S_PLAY_EDGE)
+	else if (player->mo->state->num == S_PLAY_EDGE)
 		chosenstate = S_TAILSOVERLAY_EDGE;
 	else if (player->panim == PA_DASH)
 		chosenstate = S_TAILSOVERLAY_DASH;
@@ -11397,7 +11397,7 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails)
 		chosenstate = S_TAILSOVERLAY_RUN;
 	else if (player->panim == PA_WALK)
 	{
-		if (!smilesonground || player->mo->state-states == S_PLAY_SKID)
+		if (!smilesonground || player->mo->state->num == S_PLAY_SKID)
 			chosenstate = S_TAILSOVERLAY_PLUS30DEGREES;
 		else if (player->speed >= FixedMul(player->runspeed/2, player->mo->scale))
 			chosenstate = S_TAILSOVERLAY_0DEGREES;
@@ -11425,10 +11425,10 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails)
 	}
 	else
 	{
-		if (tails->state != &states[chosenstate])
+		if (tails->state != states[chosenstate])
 		{
-			if (states[chosenstate].sprite == SPR_PLAY)
-				tails->sprite2 = P_GetSkinSprite2(((skin_t *)tails->skin), P_GetStateSprite2(&states[chosenstate]), player);
+			if (states[chosenstate]->sprite == SPR_PLAY)
+				tails->sprite2 = P_GetSkinSprite2(((skin_t *)tails->skin), P_GetStateSprite2(states[chosenstate]), player);
 			P_SetMobjState(tails, chosenstate);
 		}
 	}
@@ -11439,7 +11439,7 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails)
 #endif
 
 	// animation...
-	if (player->panim == PA_SPRING || player->panim == PA_FALL || player->mo->state-states == S_PLAY_RIDE)
+	if (player->panim == PA_SPRING || player->panim == PA_FALL || player->mo->state->num == S_PLAY_RIDE)
 	{
 		if (FixedDiv(abs(player->mo->momz), player->mo->scale) < 20<<FRACBITS)
 			ticnum = 2;
@@ -11448,7 +11448,7 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails)
 	}
 	else if (player->panim == PA_PAIN)
 		ticnum = 2;
-	else if (player->mo->state-states == S_PLAY_GASP)
+	else if (player->mo->state->num == S_PLAY_GASP)
 		tails->tics = -1;
 	else if (player->mo->sprite2 == SPR2_TIRE)
 		ticnum = (doswim ? 2 : 4);
@@ -11522,7 +11522,7 @@ void P_DoMetalJetFume(player_t *player, mobj_t *fume)
 	panim_t panim = player->panim;
 	tic_t dashmode = min(player->dashmode, DASHMODE_MAX);
 	boolean underwater = mo->eflags & MFE_UNDERWATER;
-	statenum_t stat = fume->state-states;
+	statenum_t stat = fume->state->num;
 	boolean resetinterp = false;
 
 	if (panim != PA_WALK && panim != PA_RUN && panim != PA_DASH) // turn invisible when not in a coherent movement state
@@ -12211,7 +12211,7 @@ void P_PlayerThink(player_t *player)
 				diff = InvAngle(diff);
 			if (diff > ANG10/2)
 			{
-				statenum_t stat = player->mo->state-states;
+				statenum_t stat = player->mo->state->num;
 				if (stat == S_PLAY_WAIT)
 					P_SetMobjState(player->mo, S_PLAY_STND);
 				else if (stat == S_PLAY_STND && player->mo->tics != -1)
@@ -12239,7 +12239,7 @@ void P_PlayerThink(player_t *player)
 				// fake skidding! see P_SkidStuff for reference on conditionals
 				else if (!player->skidtime && !(player->mo->eflags & MFE_GOOWATER) && !(player->pflags & (PF_JUMPED|PF_SPINNING|PF_SLIDING)) && !(player->charflags & SF_NOSKID) && P_AproxDistance(player->mo->momx, player->mo->momy) >= FixedMul(player->runspeed, player->mo->scale)) // modified from player->runspeed/2 'cuz the skid was just TOO frequent ngl
 				{
-					if (player->mo->state-states != S_PLAY_SKID)
+					if (player->mo->state->num != S_PLAY_SKID)
 						P_SetMobjState(player->mo, S_PLAY_SKID);
 					player->mo->tics = player->skidtime = (player->mo->movefactor == FRACUNIT) ? TICRATE/2 : (FixedDiv(35<<(FRACBITS-1), FixedSqrt(player->mo->movefactor)))>>FRACBITS;
 
@@ -12417,15 +12417,15 @@ void P_PlayerThink(player_t *player)
 
 	//pw_super acts as a timer now
 	if (player->powers[pw_super]
-	&& (player->mo->state < &states[S_PLAY_SUPER_TRANS1]
-	|| player->mo->state > &states[S_PLAY_SUPER_TRANS6]))
+	&& (player->mo->state->num < S_PLAY_SUPER_TRANS1
+	|| player->mo->state->num > S_PLAY_SUPER_TRANS6))
 		player->powers[pw_super]++;
 
 	if (player->powers[pw_carry] == CR_BRAKGOOP)
 	{
 		if (!player->powers[pw_flashing])
 		{
-			if (player->mo->state != &states[S_PLAY_STND])
+			if (player->mo->state != states[S_PLAY_STND])
 				P_SetMobjState(player->mo, S_PLAY_STND);
 			else
 				player->mo->tics = 2;
@@ -12850,7 +12850,7 @@ void P_PlayerAfterThink(player_t *player)
 
 				if (player->powers[pw_carry] == CR_PLAYER)
 				{
-					if (player->mo->state-states != S_PLAY_RIDE)
+					if (player->mo->state->num != S_PLAY_RIDE)
 						P_SetMobjState(player->mo, S_PLAY_RIDE);
 					if (tails->player && (tails->skin && ((skin_t *)(tails->skin))->sprites[SPR2_SWIM].numframes) && (tails->eflags & MFE_UNDERWATER))
 						tails->player->powers[pw_tailsfly] = 0;
@@ -12875,7 +12875,7 @@ void P_PlayerAfterThink(player_t *player)
 					player->mo->z = item->z - FixedDiv(player->mo->height, 3*FRACUNIT/2);
 				player->mo->momx = player->mo->momy = player->mo->momz = 0;
 				P_SetThingPosition(player->mo);
-				if (player->mo->state-states != S_PLAY_RIDE)
+				if (player->mo->state->num != S_PLAY_RIDE)
 					P_SetMobjState(player->mo, S_PLAY_RIDE);
 
 				// Controllable missile
@@ -13073,7 +13073,7 @@ void P_PlayerAfterThink(player_t *player)
 				ptera->waterbottom >>= 1;
 				ptera->cvmem >>= 1;
 
-				if (player->mo->state-states != S_PLAY_FALL)
+				if (player->mo->state->num != S_PLAY_FALL)
 					P_SetMobjState(player->mo, S_PLAY_FALL);
 				break;
 
@@ -13201,8 +13201,8 @@ boolean P_PlayerFullbright(player_t *player)
 	return (player->powers[pw_super]
 		|| ((player->powers[pw_carry] == CR_NIGHTSMODE && (player->charflags & (SF_SUPER|SF_NONIGHTSSUPER)) == SF_SUPER) // Super colours? Super bright!
 		&& (player->exiting
-			|| !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1]
-			&& player->mo->state < &states[S_PLAY_NIGHTS_TRANS6])))); // Note the < instead of <=
+			|| !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1
+			&& player->mo->state->num < S_PLAY_NIGHTS_TRANS6)))); // Note the < instead of <=
 }
 
 #define JUMPCURLED(player) ((player->pflags & PF_JUMPED)\
@@ -13219,9 +13219,9 @@ boolean P_PlayerCanEnterSpinGaps(player_t *player)
 		return false;
 
 	return ((player->pflags & (PF_SPINNING|PF_SLIDING|PF_GLIDING)) // players who are spinning, sliding, or gliding
-		|| (player->charability == CA_GLIDEANDCLIMB && player->mo->state-states == S_PLAY_GLIDE_LANDING) // players who are landing from a glide
+		|| (player->charability == CA_GLIDEANDCLIMB && player->mo->state->num == S_PLAY_GLIDE_LANDING) // players who are landing from a glide
 		|| ((player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE)
-			&& player->dashmode >= DASHMODE_THRESHOLD && player->mo->state-states == S_PLAY_DASH) // machine players in dashmode
+			&& player->dashmode >= DASHMODE_THRESHOLD && player->mo->state->num == S_PLAY_DASH) // machine players in dashmode
 		|| JUMPCURLED(player)); // players who are jumpcurled, but only if they would normally jump that way
 }
 
@@ -13229,13 +13229,13 @@ boolean P_PlayerCanEnterSpinGaps(player_t *player)
 boolean P_PlayerShouldUseSpinHeight(player_t *player)
 {
 	return ((player->pflags & (PF_SPINNING|PF_SLIDING|PF_GLIDING))
-		|| (player->mo->state == &states[player->mo->info->painstate])
+		|| (player->mo->state == states[player->mo->info->painstate])
 		|| (player->panim == PA_ROLL)
-		|| ((player->powers[pw_tailsfly] || (player->charability == CA_FLY && player->mo->state-states == S_PLAY_FLY_TIRED))
+		|| ((player->powers[pw_tailsfly] || (player->charability == CA_FLY && player->mo->state->num == S_PLAY_FLY_TIRED))
 			&& !(player->charflags & SF_NOJUMPSPIN))
-		|| (player->charability == CA_GLIDEANDCLIMB && player->mo->state-states == S_PLAY_GLIDE_LANDING)
+		|| (player->charability == CA_GLIDEANDCLIMB && player->mo->state->num == S_PLAY_GLIDE_LANDING)
 		|| ((player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE)
-			&& player->dashmode >= DASHMODE_THRESHOLD && player->mo->state-states == S_PLAY_DASH)
+			&& player->dashmode >= DASHMODE_THRESHOLD && player->mo->state->num == S_PLAY_DASH)
 		|| JUMPCURLED(player));
 }
 
diff --git a/src/r_skins.c b/src/r_skins.c
index d5531b72fe1b5629d31a389652fdd06a3ebfd43b..c09ff3417f9061f7ed96b70b6083d7c47bb3f219 100644
--- a/src/r_skins.c
+++ b/src/r_skins.c
@@ -481,7 +481,7 @@ static void SetSkin(player_t *player, INT32 skinnum)
 		P_SetScale(player->mo, player->mo->scale, false);
 		player->mo->radius = radius;
 
-		P_SetMobjState(player->mo, player->mo->state-states); // Prevent visual errors when switching between skins with differing number of frames
+		P_SetMobjState(player->mo, player->mo->state->num); // Prevent visual errors when switching between skins with differing number of frames
 	}
 }
 
diff --git a/src/r_things.c b/src/r_things.c
index c46d8162460e6ac4df025457910f1eae92634628..8f70dfd9942f6c0d3ce2a949f98433a268f9eb77 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -1814,8 +1814,8 @@ static void R_ProjectSprite(mobj_t *thing)
 		if (frame >= sprdef->numframes)
 		{
 			CONS_Alert(CONS_ERROR, M_GetText("R_ProjectSprite: invalid skins[\"%s\"].sprites[SPR2_%s] %sframe %s\n"), ((skin_t *)thing->skin)->name, spr2names[thing->sprite2 & SPR2F_MASK], (thing->sprite2 & SPR2F_SUPER) ? "super ": "", sizeu5(frame));
-			thing->sprite = states[S_UNKNOWN].sprite;
-			thing->frame = states[S_UNKNOWN].frame;
+			thing->sprite = states[S_UNKNOWN]->sprite;
+			thing->frame = states[S_UNKNOWN]->frame;
 			sprdef = &sprites[thing->sprite];
 #ifdef ROTSPRITE
 			sprinfo = &spriteinfo[thing->sprite];
@@ -1836,11 +1836,11 @@ static void R_ProjectSprite(mobj_t *thing)
 				sizeu1(frame), sizeu2(sprdef->numframes), sprnames[thing->sprite]);
 			if (thing->sprite == thing->state->sprite && thing->frame == thing->state->frame)
 			{
-				thing->state->sprite = states[S_UNKNOWN].sprite;
-				thing->state->frame = states[S_UNKNOWN].frame;
+				thing->state->sprite = states[S_UNKNOWN]->sprite;
+				thing->state->frame = states[S_UNKNOWN]->frame;
 			}
-			thing->sprite = states[S_UNKNOWN].sprite;
-			thing->frame = states[S_UNKNOWN].frame;
+			thing->sprite = states[S_UNKNOWN]->sprite;
+			thing->frame = states[S_UNKNOWN]->frame;
 			sprdef = &sprites[thing->sprite];
 			sprinfo = &spriteinfo[thing->sprite];
 			frame = thing->frame&FF_FRAMEMASK;
diff --git a/src/st_stuff.c b/src/st_stuff.c
index 7df6f8848dd80c2cb0eb5839fd0389b7c86a3b8b..11e65c909a96860af3b53da9a76ee9ddfbd2dbd8 100644
--- a/src/st_stuff.c
+++ b/src/st_stuff.c
@@ -1939,7 +1939,7 @@ static void ST_drawNiGHTSHUD(void)
 	ST_DrawTopLeftOverlayPatch(16, 8, nbracket);
 	if (G_IsSpecialStage(gamemap))
 		ST_DrawTopLeftOverlayPatch(24, 16, (
-			(stplyr->bonustime && (leveltime & 4) && (states[S_BLUESPHEREBONUS].frame & FF_ANIMATE)) ? nssbon : nsshud));
+			(stplyr->bonustime && (leveltime & 4) && (states[S_BLUESPHEREBONUS]->frame & FF_ANIMATE)) ? nssbon : nsshud));
 	else
 		ST_DrawTopLeftOverlayPatch(24, 16, *(((stplyr->bonustime) ? nbon : nhud)+((leveltime/2)%12)));