Closed captioning!

* Provides a helpful description for the hearing impaired, whether permanent, temporary or situational.
* Consvar "closedcaptioning", with on/off values available.
* Only works if sounds are on. This is frustrating. I will see what I can do to allow it to work with sounds off in future, but for now it's dependent in order to properly accept or decline sounds.
* Thanks to MI for making that wiki page a lot more comprehensive a few days ago.

* Weapon ring is now a seperate sfx_wepfir instead of doubling up on sfx_thok.

* Also, made V_StringWidth work with V_NOSCALESTART.
This commit is contained in:
toasterbabe 2017-04-17 01:09:47 +01:00
parent 7c07978277
commit 3e29ee3f01
16 changed files with 632 additions and 448 deletions

View file

@ -727,6 +727,7 @@ void D_RegisterClientCommands(void)
// s_sound.c
CV_RegisterVar(&cv_soundvolume);
CV_RegisterVar(&cv_closedcaptioning);
CV_RegisterVar(&cv_digmusicvolume);
CV_RegisterVar(&cv_midimusicvolume);
CV_RegisterVar(&cv_numChannels);

View file

@ -2110,6 +2110,7 @@ static void readsound(MYFILE *f, INT32 num, const char *savesfxnames[])
{
char *s = Z_Malloc(MAXLINELEN, PU_STATIC, NULL);
char *word;
char *word2;
char *tmp;
INT32 value;
@ -2123,8 +2124,8 @@ static void readsound(MYFILE *f, INT32 num, const char *savesfxnames[])
tmp = strchr(s, '#');
if (tmp)
*tmp = '\0';
value = searchvalue(s);
if (s == tmp)
continue; // Skip comment lines, but don't break.
word = strtok(s, " ");
if (word)
@ -2132,6 +2133,15 @@ static void readsound(MYFILE *f, INT32 num, const char *savesfxnames[])
else
break;
word2 = strtok(NULL, " ");
if (word2)
value = atoi(word2);
else
{
deh_warning("No value for token %s", word);
continue;
}
/* if (fastcmp(word, "OFFSET"))
{
value -= 150360;
@ -2161,6 +2171,11 @@ static void readsound(MYFILE *f, INT32 num, const char *savesfxnames[])
DEH_WriteUndoline(word, va("%d", S_sfx[num].pitch), UNDO_NONE);
S_sfx[num].pitch = value;
}
else if (fastcmp(word, "CAPTION") || fastcmp(word, "DESCRIPTION"))
{
deh_strlcpy(S_sfx[num].caption, word2,
sizeof(S_sfx[num].caption), va("Sound effect %d: caption", num));
}
else
deh_warning("Sound %d : unknown word '%s'",num,word);
}

View file

@ -90,6 +90,10 @@ static unsigned long nombre = NEWTICRATE*10;
static void I_BlitScreenVesa1(void); //see later
void I_FinishUpdate (void)
{
// draw captions if enabled
if (cv_closedcaptioning.value)
SCR_ClosedCaptions();
// draw FPS if enabled
if (cv_ticrate.value)
SCR_DisplayTicRate();

View file

@ -12457,7 +12457,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_RRNG1, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_thok, // seesound
sfx_wepfir, // seesound
0, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
@ -12864,7 +12864,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_THROWNINFINITY1, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_thok, // seesound
sfx_wepfir, // seesound
0, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
@ -12891,7 +12891,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_THROWNAUTOMATIC1, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_thok, // seesound
sfx_wepfir, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
@ -12972,7 +12972,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_THROWNGRENADE1, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_thok, // seesound
sfx_wepfir, // seesound
8, // reactiontime
sfx_gbeep, // attacksound
S_NULL, // painstate
@ -13759,7 +13759,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_itemup, // painsound
sfx_s3k33, // painsound
S_RING, // meleestate
S_NULL, // missilestate
S_SPRK1, // deathstate

View file

@ -306,6 +306,7 @@ menu_t OP_MPControlsDef, OP_CameraControlsDef, OP_MiscControlsDef;
menu_t OP_P1ControlsDef, OP_P2ControlsDef, OP_MouseOptionsDef;
menu_t OP_Mouse2OptionsDef, OP_Joystick1Def, OP_Joystick2Def;
static void M_VideoModeMenu(INT32 choice);
static void M_SoundMenu(INT32 choice);
static void M_Setup1PControlsMenu(INT32 choice);
static void M_Setup2PControlsMenu(INT32 choice);
static void M_Setup1PJoystickMenu(INT32 choice);
@ -1013,16 +1014,16 @@ static menuitem_t MP_PlayerSetupMenu[] =
// Prefix: OP_
static menuitem_t OP_MainMenu[] =
{
{IT_SUBMENU | IT_STRING, NULL, "Player 1 Controls...", &OP_P1ControlsDef, 10},
{IT_SUBMENU | IT_STRING, NULL, "Player 2 Controls...", &OP_P2ControlsDef, 20},
{IT_STRING | IT_CVAR, NULL, "Controls per key", &cv_controlperkey, 30},
{IT_SUBMENU | IT_STRING, NULL, "Player 1 Controls...", &OP_P1ControlsDef, 10},
{IT_SUBMENU | IT_STRING, NULL, "Player 2 Controls...", &OP_P2ControlsDef, 20},
{IT_CVAR | IT_STRING, NULL, "Controls per key", &cv_controlperkey, 30},
{IT_SUBMENU | IT_STRING, NULL, "Video Options...", &OP_VideoOptionsDef, 50},
{IT_SUBMENU | IT_STRING, NULL, "Sound Options...", &OP_SoundOptionsDef, 60},
{IT_SUBMENU | IT_STRING, NULL, "Video Options...", &OP_VideoOptionsDef, 50},
{IT_CALL | IT_STRING, NULL, "Sound Options...", M_SoundMenu, 60},
{IT_CALL | IT_STRING, NULL, "Server Options...", M_ServerOptions, 80},
{IT_CALL | IT_STRING, NULL, "Server Options...", M_ServerOptions, 80},
{IT_SUBMENU | IT_STRING, NULL, "Data Options...", &OP_DataOptionsDef, 100},
{IT_SUBMENU | IT_STRING, NULL, "Data Options...", &OP_DataOptionsDef, 100},
};
static menuitem_t OP_P1ControlsMenu[] =
@ -1255,6 +1256,8 @@ static menuitem_t OP_SoundOptionsMenu[] =
{IT_STRING | IT_KEYHANDLER, NULL, "MIDI Music", M_ToggleMIDI, 70},
{IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "MIDI Music Volume", &cv_midimusicvolume, 80},
{IT_STRING | IT_CVAR, NULL, "Closed Captioning", &cv_closedcaptioning, 100},
};
static menuitem_t OP_DataOptionsMenu[] =
@ -7797,6 +7800,14 @@ static void M_ChangeControl(INT32 choice)
// SOUND
// =====
static void M_SoundMenu(INT32 choice)
{
(void)choice;
OP_SoundOptionsMenu[6].status = ((nosound || sound_disabled) ? IT_GRAYEDOUT : (IT_STRING | IT_CVAR));
M_SetupNextMenu(&OP_SoundOptionsDef);
}
void M_DrawSoundMenu(void)
{
const char* onstring = "ON";
@ -7852,6 +7863,7 @@ static void M_ToggleSFX(INT32 choice)
if (nosound) return;
S_Init(cv_soundvolume.value, cv_digmusicvolume.value, cv_midimusicvolume.value);
S_StartSound(NULL, sfx_strpst);
OP_SoundOptionsMenu[6].status = IT_STRING | IT_CVAR;
//M_StartMessage(M_GetText("SFX Enabled\n"), NULL, MM_NOTHING);
}
else
@ -7860,12 +7872,15 @@ static void M_ToggleSFX(INT32 choice)
{
sound_disabled = false;
S_StartSound(NULL, sfx_strpst);
OP_SoundOptionsMenu[6].status = IT_STRING | IT_CVAR;
//M_StartMessage(M_GetText("SFX Enabled\n"), NULL, MM_NOTHING);
}
else
{
sound_disabled = true;
S_StopSounds();
OP_SoundOptionsMenu[6].status = IT_GRAYEDOUT;
ResetCaptions();
//M_StartMessage(M_GetText("SFX Disabled\n"), NULL, MM_NOTHING);
}
}

View file

@ -79,6 +79,7 @@ static consvar_t precachesound = {"precachesound", "Off", CV_SAVE, CV_OnOff, NUL
// actual general (maximum) sound & music volume, saved into the config
consvar_t cv_soundvolume = {"soundvolume", "31", CV_SAVE, soundvolume_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_closedcaptioning = {"closedcaptioning", "Off", CV_SAVE|CV_CALL, CV_OnOff, ResetCaptions, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_digmusicvolume = {"digmusicvolume", "18", CV_SAVE, soundvolume_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_midimusicvolume = {"midimusicvolume", "18", CV_SAVE, soundvolume_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
// number of channels available
@ -124,23 +125,32 @@ static consvar_t surround = {"surround", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL
// percent attenuation from front to back
#define S_IFRACVOL 30
typedef struct
{
// sound information (if null, channel avail.)
sfxinfo_t *sfxinfo;
// origin of sound
const void *origin;
// handle of the sound being played
INT32 handle;
} channel_t;
// the set of channels available
static channel_t *channels = NULL;
static INT32 numofchannels = 0;
caption_t closedcaptions[8] = {
{NULL, NULL, 0},
{NULL, NULL, 0},
{NULL, NULL, 0},
{NULL, NULL, 0},
{NULL, NULL, 0},
{NULL, NULL, 0},
{NULL, NULL, 0},
{NULL, NULL, 0}
};
void ResetCaptions(void)
{
UINT8 i;
for (i = 0; i < 8; i++)
{
closedcaptions[i].c = NULL;
closedcaptions[i].s = NULL;
closedcaptions[i].t = 0;
}
}
//
// Internals.
//
@ -297,6 +307,8 @@ static void SetChannelsNum(void)
// Free all channels for use
for (i = 0; i < numofchannels; i++)
channels[i].sfxinfo = 0;
ResetCaptions();
}
@ -577,6 +589,37 @@ dontplay:
sep = (~sep) & 255;
#endif
// Handle closed caption input.
if (cv_closedcaptioning.value && sfx->caption[0] != '/')
{
UINT8 i, set = 7;
for (i = 0; i < set; i++)
{
if ((sfx == closedcaptions[i].s)
|| !(closedcaptions[i].c || closedcaptions[i].s) || (sfx->priority >= closedcaptions[i].s->priority))
{
set = i;
break;
}
}
if (sfx != closedcaptions[set].s)
{
for (i = 7; i > set; i--)
{
if (sfx == closedcaptions[i].s)
{
closedcaptions[i].c = NULL;
closedcaptions[i].s = NULL;
closedcaptions[i].t = 0;
}
}
}
closedcaptions[set].c = &channels[cnum];
closedcaptions[set].s = sfx;
closedcaptions[set].t = TICRATE+2;
}
// Assigns the handle to one of the channels in the
// mix/output buffer.
channels[cnum].handle = I_StartSound(sfx_id, volume, sep, pitch, priority);
@ -598,6 +641,7 @@ void S_StartSound(const void *origin, sfxenum_t sfx_id)
// sfx_id = sfx_mario8;
// break;
case sfx_thok:
case sfx_wepfir:
sfx_id = sfx_mario7;
break;
case sfx_pop:

View file

@ -22,8 +22,10 @@
// mask used to indicate sound origin is player item pickup
#define PICKUP_SOUND 0x8000
void ResetCaptions(void);
extern consvar_t stereoreverse;
extern consvar_t cv_soundvolume, cv_digmusicvolume, cv_midimusicvolume;
extern consvar_t cv_soundvolume, cv_closedcaptioning, cv_digmusicvolume, cv_midimusicvolume;
extern consvar_t cv_numChannels;
#ifdef SNDSERV
@ -64,6 +66,27 @@ typedef struct {
angle_t angle;
} listener_t;
typedef struct
{
// sound information (if null, channel avail.)
sfxinfo_t *sfxinfo;
// origin of sound
const void *origin;
// handle of the sound being played
INT32 handle;
} channel_t;
typedef struct {
channel_t *c;
sfxinfo_t *s;
UINT8 t;
} caption_t;
extern caption_t closedcaptions[8];
// register sound vars and commands at game startup
void S_RegisterSoundStuff(void);

View file

@ -28,6 +28,9 @@
#include "d_main.h"
#include "d_clisrv.h"
#include "f_finale.h"
#include "i_sound.h" // closed captions
#include "s_sound.h" // ditto
#include "g_game.h" // ditto
#if defined (USEASM) && !defined (NORUSEASM)//&& (!defined (_MSC_VER) || (_MSC_VER <= 1200))
@ -434,3 +437,58 @@ void SCR_DisplayTicRate(void)
lasttic = ontic;
}
void SCR_ClosedCaptions(void)
{
UINT8 i;
for (i = 0; i < 8; i++)
{
boolean cond = (closedcaptions[i].c && I_SoundIsPlaying(closedcaptions[i].c->handle));
if (closedcaptions[i].t <= TICRATE)
closedcaptions[i].t--;
if (cond || (closedcaptions[i].s && closedcaptions[i].t))
{
if (!cond)
closedcaptions[i].c = NULL;
}
if (!closedcaptions[i].t)
{
closedcaptions[i].c = NULL;
closedcaptions[i].s = NULL;
closedcaptions[i].t = 0;
}
}
for (i = 0; i < 8; i++)
{
if (closedcaptions[i].s)
{
INT32 flags = V_NOSCALESTART|V_ALLOWLOWERCASE;
INT32 y = vid.height-((i + 2)*10*vid.dupy);
char dir = ' ';
if (closedcaptions[i].t < 20)
flags |= (((20-closedcaptions[i].t)/2)*V_10TRANS);
else if (closedcaptions[i].t > TICRATE)
y -= (closedcaptions[i].t-- - TICRATE)*vid.dupy;
if (closedcaptions[i].c)
{
const mobj_t *o = (const mobj_t *)closedcaptions[i].c->origin;
if (o)
{
angle_t angle = R_PointToAngle(o->x, o->y) - localangle;
if (angle > ANGLE_45 && angle < ANGLE_135)
dir = '\x1C';
else if (angle > ANGLE_225 && angle < ANGLE_315)
dir = '\x1D';
else
dir = '\x1E';
}
}
V_DrawRightAlignedString(vid.width-(20*vid.dupx), y,
flags, va("%c %s", dir, (closedcaptions[i].s->caption[0] ? closedcaptions[i].s->caption : closedcaptions[i].s->name)));
}
}
}

View file

@ -180,5 +180,6 @@ FUNCMATH boolean SCR_IsAspectCorrect(INT32 width, INT32 height);
// move out to main code for consistency
void SCR_DisplayTicRate(void);
void SCR_ClosedCaptions(void);
#undef DNWH
#endif //__SCREEN_H__

View file

@ -928,6 +928,10 @@ void I_FinishUpdate(void)
if (I_SkipFrame())
return;
// draw captions if enabled
if (cv_closedcaptioning.value)
SCR_ClosedCaptions();
if (cv_ticrate.value)
SCR_DisplayTicRate();

View file

@ -1341,6 +1341,10 @@ void I_FinishUpdate(void)
if (I_SkipFrame())
return;
// draw captions if enabled
if (cv_closedcaptioning.value)
SCR_ClosedCaptions();
if (cv_ticrate.value)
SCR_DisplayTicRate();

View file

@ -32,448 +32,448 @@ sfxinfo_t S_sfx[NUMSFX] =
various flags. See soundflags_t.
*****/
// S_sfx[0] needs to be a dummy for odd reasons. (don't modify this comment)
// name, singularity, priority, pitch, volume, data, length, skinsound, usefulness, lumpnum
{"none" , false, 0, 0, -1, NULL, 0, -1, -1, LUMPERROR},
// name, singularity, priority, pitch, volume, data, length, skinsound, usefulness, lumpnum, caption
{"none" , false, 0, 0, -1, NULL, 0, -1, -1, LUMPERROR, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}, // maximum length
// Skin Sounds
{"altdi1", false, 192, 16, -1, NULL, 0, SKSPLDET1, -1, LUMPERROR},
{"altdi2", false, 192, 16, -1, NULL, 0, SKSPLDET2, -1, LUMPERROR},
{"altdi3", false, 192, 16, -1, NULL, 0, SKSPLDET3, -1, LUMPERROR},
{"altdi4", false, 192, 16, -1, NULL, 0, SKSPLDET4, -1, LUMPERROR},
{"altow1", false, 192, 16, -1, NULL, 0, SKSPLPAN1, -1, LUMPERROR},
{"altow2", false, 192, 16, -1, NULL, 0, SKSPLPAN2, -1, LUMPERROR},
{"altow3", false, 192, 16, -1, NULL, 0, SKSPLPAN3, -1, LUMPERROR},
{"altow4", false, 192, 16, -1, NULL, 0, SKSPLPAN4, -1, LUMPERROR},
{"victr1", false, 64, 16, -1, NULL, 0, SKSPLVCT1, -1, LUMPERROR},
{"victr2", false, 64, 16, -1, NULL, 0, SKSPLVCT2, -1, LUMPERROR},
{"victr3", false, 64, 16, -1, NULL, 0, SKSPLVCT3, -1, LUMPERROR},
{"victr4", false, 64, 16, -1, NULL, 0, SKSPLVCT4, -1, LUMPERROR},
{"gasp" , false, 64, 0, -1, NULL, 0, SKSGASP, -1, LUMPERROR},
{"jump" , false, 140, 0, -1, NULL, 0, SKSJUMP, -1, LUMPERROR},
{"pudpud", false, 64, 0, -1, NULL, 0, SKSPUDPUD, -1, LUMPERROR},
{"putput", false, 64, 0, -1, NULL, 0, SKSPUTPUT, -1, LUMPERROR}, // not as high a priority
{"spin" , false, 100, 0, -1, NULL, 0, SKSSPIN, -1, LUMPERROR},
{"spndsh", false, 64, 1, -1, NULL, 0, SKSSPNDSH, -1, LUMPERROR},
{"thok" , false, 96, 0, -1, NULL, 0, SKSTHOK, -1, LUMPERROR},
{"zoom" , false, 120, 1, -1, NULL, 0, SKSZOOM, -1, LUMPERROR},
{"skid", false, 64, 32, -1, NULL, 0, SKSSKID, -1, LUMPERROR},
{"altdi1", false, 192, 16, -1, NULL, 0, SKSPLDET1, -1, LUMPERROR, "Dying"},
{"altdi2", false, 192, 16, -1, NULL, 0, SKSPLDET2, -1, LUMPERROR, "Dying"},
{"altdi3", false, 192, 16, -1, NULL, 0, SKSPLDET3, -1, LUMPERROR, "Dying"},
{"altdi4", false, 192, 16, -1, NULL, 0, SKSPLDET4, -1, LUMPERROR, "Dying"},
{"altow1", false, 192, 16, -1, NULL, 0, SKSPLPAN1, -1, LUMPERROR, "Spilled rings"},
{"altow2", false, 192, 16, -1, NULL, 0, SKSPLPAN2, -1, LUMPERROR, "Spilled rings"},
{"altow3", false, 192, 16, -1, NULL, 0, SKSPLPAN3, -1, LUMPERROR, "Spilled rings"},
{"altow4", false, 192, 16, -1, NULL, 0, SKSPLPAN4, -1, LUMPERROR, "Spilled rings"},
{"victr1", false, 64, 16, -1, NULL, 0, SKSPLVCT1, -1, LUMPERROR, "/"},
{"victr2", false, 64, 16, -1, NULL, 0, SKSPLVCT2, -1, LUMPERROR, "/"},
{"victr3", false, 64, 16, -1, NULL, 0, SKSPLVCT3, -1, LUMPERROR, "/"},
{"victr4", false, 64, 16, -1, NULL, 0, SKSPLVCT4, -1, LUMPERROR, "/"},
{"gasp" , false, 64, 0, -1, NULL, 0, SKSGASP, -1, LUMPERROR, "Bubble gasp"},
{"jump" , false, 140, 0, -1, NULL, 0, SKSJUMP, -1, LUMPERROR, "Jump"},
{"pudpud", false, 64, 0, -1, NULL, 0, SKSPUDPUD, -1, LUMPERROR, "Tired flight"},
{"putput", false, 64, 0, -1, NULL, 0, SKSPUTPUT, -1, LUMPERROR, "Flight"}, // not as high a priority
{"spin" , false, 100, 0, -1, NULL, 0, SKSSPIN, -1, LUMPERROR, "Spin"},
{"spndsh", false, 64, 1, -1, NULL, 0, SKSSPNDSH, -1, LUMPERROR, "Spindash charge"},
{"thok" , false, 96, 0, -1, NULL, 0, SKSTHOK, -1, LUMPERROR, "Thok"},
{"zoom" , false, 120, 1, -1, NULL, 0, SKSZOOM, -1, LUMPERROR, "Spindash launch"},
{"skid", false, 64, 32, -1, NULL, 0, SKSSKID, -1, LUMPERROR, "Skid"},
// Ambience/background objects/etc
{"ambint", true, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"ambint", true, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Obnoxious disco music"},
{"alarm", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"buzz1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"buzz2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"buzz3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"buzz4", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"crumbl", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Platform Crumble Tails 03-16-2001
{"fire", false, 8, 32, -1, NULL, 0, -1, -1, LUMPERROR},
{"grind", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"laser", true, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"mswing", false, 16, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"pstart", false, 100, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"pstop", false, 100, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"steam1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Tails 06-19-2001
{"steam2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Tails 06-19-2001
{"wbreak", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"alarm", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Alarm"},
{"buzz1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Electric zap"},
{"buzz2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Electric zap"},
{"buzz3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Electric zap"},
{"buzz4", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Buzz"},
{"crumbl", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Crumbling"}, // Platform Crumble Tails 03-16-2001
{"fire", false, 8, 32, -1, NULL, 0, -1, -1, LUMPERROR, "Flamethrower"},
{"grind", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic grinding"},
{"laser", true, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Laser hum"},
{"mswing", false, 16, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Swinging mace"},
{"pstart", false, 100, 0, -1, NULL, 0, -1, -1, LUMPERROR, "/"},
{"pstop", false, 100, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Crusher stomp"},
{"steam1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Steam jet"}, // Tails 06-19-2001
{"steam2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Steam jet"}, // Tails 06-19-2001
{"wbreak", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wood breaking"},
{"rainin", true, 24, 4, -1, NULL, 0, -1, -1, LUMPERROR},
{"litng1", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"litng2", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"litng3", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"litng4", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"athun1", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"athun2", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"rainin", true, 24, 4, -1, NULL, 0, -1, -1, LUMPERROR, "Rain"},
{"litng1", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Lightning"},
{"litng2", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Lightning"},
{"litng3", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Lightning"},
{"litng4", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Lightning"},
{"athun1", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Thunder"},
{"athun2", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Thunder"},
{"amwtr1", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"amwtr2", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"amwtr3", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"amwtr4", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"amwtr5", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"amwtr6", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"amwtr7", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"amwtr8", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"bubbl1", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"bubbl2", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"bubbl3", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"bubbl4", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"bubbl5", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"floush", false, 16, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"splash", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"splish", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Splish Tails 12-08-2000
{"wdrip1", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdrip2", false, 8 , 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdrip3", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdrip4", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdrip5", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdrip6", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdrip7", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdrip8", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wslap", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Water Slap Tails 12-13-2000
{"amwtr1", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"amwtr2", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"amwtr3", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"amwtr4", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"amwtr5", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"amwtr6", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"amwtr7", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"amwtr8", false, 12, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running water"},
{"bubbl1", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Small bubble"},
{"bubbl2", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Small bubble"},
{"bubbl3", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Small bubble"},
{"bubbl4", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Small bubble"},
{"bubbl5", false, 11, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Small bubble"},
{"floush", false, 16, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Shallow water"},
{"splash", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water splash"},
{"splish", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water splash"}, // Splish Tails 12-08-2000
{"wdrip1", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wdrip2", false, 8 , 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wdrip3", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wdrip4", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wdrip5", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wdrip6", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wdrip7", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wdrip8", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dripping water"},
{"wslap", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water slap"}, // Water Slap Tails 12-13-2000
{"doora1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"doorb1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"doorc1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"doorc2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"doord1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"doord2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"eleva1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"eleva2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"eleva3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"elevb1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"elevb2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"elevb3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"doora1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sliding open"},
{"doorb1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sliding open"},
{"doorc1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wooden door opening"},
{"doorc2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Slamming shut"},
{"doord1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Creaking open"},
{"doord2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Slamming shut"},
{"eleva1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Starting elevator"},
{"eleva2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Moving elevator"},
{"eleva3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Stopping elevator"},
{"elevb1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Starting elevator"},
{"elevb2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Moving elevator"},
{"elevb3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Stopping elevator"},
{"ambin2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"lavbub", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"rocks1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"rocks2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"rocks3", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"rocks4", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"rumbam", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"rumble", false, 64, 24, -1, NULL, 0, -1, -1, LUMPERROR},
{"ambin2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Natural vibrations"},
{"lavbub", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Bubbling lava"},
{"rocks1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Falling rocks"},
{"rocks2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Falling rocks"},
{"rocks3", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Falling rocks"},
{"rocks4", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Falling rocks"},
{"rumbam", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Violent rumbling"},
{"rumble", false, 64, 24, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"},
// Game objects, etc
{"appear", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"bkpoof", false, 70, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"bnce1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Boing!
{"bnce2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Boing!
{"cannon", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"cgot" , true, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Got Emerald! Tails 09-02-2001
{"cybdth", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"deton", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"ding", false, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"dmpain", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"drown", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"fizzle", false, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"gbeep", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Grenade beep
{"gclose", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"ghit" , false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"gloop", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"gspray", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"gravch", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"itemup", true, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"jet", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"jshard", true, 167, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"lose" , false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"lvpass", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mindig", false, 8, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"mixup", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"monton", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"pogo" , false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"pop" , false, 78, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"rail1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"rail2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"rlaunc", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"shield", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // generic GET!
{"wirlsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Whirlwind GET!
{"forcsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Force GET!
{"elemsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Elemental GET!
{"armasg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Armaggeddon GET!
{"attrsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Attract GET!
{"shldls", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // You LOSE!
{"spdpad", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"spkdth", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"spring", false, 112, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"statu1", true, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"statu2", true, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"strpst", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Starpost Sound Tails 07-04-2002
{"supert", true, 127, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"telept", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"tink" , false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"token" , true, 224, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // SS token
{"trfire", true, 60, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"trpowr", true, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"turhit", false, 40, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"wdjump", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mswarp", false, 60, 16, -1, NULL, 0, -1, -1, LUMPERROR},
{"mspogo", false, 60, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"boingf", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"corkp", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"corkh", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"appear", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Appearing platform"},
{"bkpoof", false, 70, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Armageddon explosion"},
{"bnce1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bounce"}, // Boing!
{"bnce2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ricochet"}, // Boing!
{"cannon", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Powerful shot"},
{"cgot" , true, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got Chaos Emerald"}, // Got Emerald! Tails 09-02-2001
{"cybdth", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Explosion"},
{"deton", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous beeping"},
{"ding", false, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Ding"},
{"dmpain", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Machine damage"},
{"drown", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Drowning"},
{"fizzle", false, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Electric fizzle"},
{"gbeep", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous beeping"}, // Grenade beep
{"wepfir", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Weapon firing"}, // defaults to thok
{"ghit" , false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Goo splash"},
{"gloop", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water splash"},
{"gspray", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Goop sling"},
{"gravch", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Recycler"},
{"itemup", true, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sparkle"},
{"jet", false, 8, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flying jet"},
{"jshard", true, 167, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got shard"},
{"lose" , false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Failure"},
{"lvpass", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spinning signpost"},
{"mindig", false, 8, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Tunnelling"},
{"mixup", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Teleport"},
{"monton", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Golden Monitor activated"},
{"pogo" , false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical pogo"},
{"pop" , false, 78, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Pop"},
{"rail1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rail weapon fired"},
{"rail2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rail weapon crash"},
{"rlaunc", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Missile fired"},
{"shield", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Pity Shield"}, // generic GET!
{"wirlsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Whirlwind Shield"}, // Whirlwind GET!
{"forcsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Force Shield"}, // Force GET!
{"elemsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Elemental Shield"}, // Elemental GET!
{"armasg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Armageddon Shield"}, // Armaggeddon GET!
{"attrsg", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Attraction Shield"}, // Attract GET!
{"shldls", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Shield loss"}, // You LOSE!
{"spdpad", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Speedpad"},
{"spkdth", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spiked"},
{"spring", false, 112, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spring"},
{"statu1", true, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Pushing a statue"},
{"statu2", true, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Pushing a statue"},
{"strpst", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Starpost"}, // Starpost Sound Tails 07-04-2002
{"supert", true, 127, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Super transformation"},
{"telept", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dash"},
{"tink" , false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Tink"},
{"token" , true, 224, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got Token"}, // SS token
{"trfire", true, 60, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Laser fired"},
{"trpowr", true, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Charging"},
{"turhit", false, 40, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Laser hit"},
{"wdjump", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Whirlwind jump"},
{"mswarp", false, 60, 16, -1, NULL, 0, -1, -1, LUMPERROR, "Spinning out"},
{"mspogo", false, 60, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Crunch"},
{"boingf", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bouncing"},
{"corkp", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cork fired"},
{"corkh", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cork hit"},
// Menu, interface
{"chchng", false, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"dwnind", false, 212, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"emfind", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"flgcap", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"menu1", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"oneup", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"ptally", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Point tally is identical to menu for now
{"radio", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"wepchg", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Weapon switch is identical to menu for now
{"wtrdng", true, 212, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // make sure you can hear the DING DING! Tails 03-08-2000
{"zelda", false, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"chchng", false, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Score tally done"},
{"dwnind", false, 212, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Aquaphobia"},
{"emfind", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Radar beep"},
{"flgcap", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flag capture"},
{"menu1", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Menu beep"},
{"oneup", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Extra life"},
{"ptally", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Score tally"}, // Point tally is identical to menu for now
{"radio", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Chatter"},
{"wepchg", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Weapon change"}, // Weapon switch is identical to menu for now
{"wtrdng", true, 212, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Thinking about air"}, // make sure you can hear the DING DING! Tails 03-08-2000
{"zelda", false, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Discovery"},
// NiGHTS
{"ideya", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"xideya", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Xmas
{"nbmper", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"nxbump", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Xmas
{"ncitem", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"nxitem", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Xmas
{"ngdone", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"nxdone", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Xmas
{"drill1", false, 48, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"drill2", false, 48, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"ncspec", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Tails 12-15-2003
{"nghurt", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"ngskid", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"hoop1", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"hoop2", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"hoop3", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"hidden", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"prloop", false, 104, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"timeup", true, 256, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"ideya", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Finishing the stage"},
{"xideya", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Finishing the stage"}, // Xmas
{"nbmper", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bumper"},
{"nxbump", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bumper"}, // Xmas
{"ncitem", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got logo"},
{"nxitem", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got logo"}, // Xmas
{"ngdone", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bonus time start"},
{"nxdone", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bonus time start"}, // Xmas
{"drill1", false, 48, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Drill start"},
{"drill2", false, 48, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Drill"},
{"ncspec", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Power-up"}, // Tails 12-15-2003
{"nghurt", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Hurt"},
{"ngskid", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Force stop"},
{"hoop1", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Hoop"},
{"hoop2", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Hoop+"},
{"hoop3", false, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Hoop++"},
{"hidden", false, 204, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Power-up discovery"},
{"prloop", false, 104, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Paraloop"},
{"timeup", true, 256, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Countdown"},
// Mario
{"koopfr" , true, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario1", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario2", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario3", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario4", true, 78, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario5", false, 78, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario6", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario7", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario8", false, 48, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"mario9", true, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"marioa", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"thwomp", true, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR},
{"koopfr" , true, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Fire"},
{"mario1", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Hitting a ceiling"},
{"mario2", false, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Koopa shell"},
{"mario3", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Power-up"},
{"mario4", true, 78, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got coin"},
{"mario5", false, 78, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Goomba stomp"},
{"mario6", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Jump"},
{"mario7", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Fire"},
{"mario8", false, 48, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Hurt"},
{"mario9", true, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collecting power-up"},
{"marioa", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Extra life"},
{"thwomp", true, 127, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Thwomp stomp"},
// Black Eggman
{"bebomb", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bechrg", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"becrsh", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bedeen", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bedie1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bedie2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"beeyow", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"befall", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"befire", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"beflap", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"begoop", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"begrnd", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"behurt", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bejet1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"belnch", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"beoutb", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"beragh", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"beshot", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bestep", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bestp2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bewar1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bewar2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bewar3", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bewar4", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bexpld", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bgxpld", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"bebomb", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Bomb explosion"},
{"bechrg", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Charging"},
{"becrsh", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Crash"},
{"bedeen", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic crash"},
{"bedie1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman crying"},
{"bedie2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman crying"},
{"beeyow", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman crying"},
{"befall", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic slam"},
{"befire", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Firing goop"},
{"beflap", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical jump"},
{"begoop", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Powerful shot"},
{"begrnd", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic hit"},
{"behurt", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic crash"},
{"bejet1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Jetpack charge"},
{"belnch", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical jump"},
{"beoutb", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Empty chamber"},
{"beragh", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman screaming"},
{"beshot", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Firing missile"},
{"bestep", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical stomp"},
{"bestp2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical stomp"},
{"bewar1", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman laughing"},
{"bewar2", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman laughing"},
{"bewar3", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman laughing"},
{"bewar4", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Eggman laughing"},
{"bexpld", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Missile explosion"},
{"bgxpld", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Explosion"},
// Cybrakdemon
{"beelec", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"brakrl", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"brakrx", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
{"beelec", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Electricity"},
{"brakrl", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Rocket launch"},
{"brakrx", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Rocket explosion"},
// S3&K sounds
{"s3k33", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k34", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k35", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k36", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k37", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k38", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k39", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k3a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k3b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k3c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k3d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k3e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k3f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k40", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k41", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k42", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k43", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k44", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k45", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k46", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k47", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k48", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k49", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k4a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k4b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k4c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k4d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k4e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k4f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k50", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k51", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k52", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k53", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k54", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR}, // MetalSonic shot fire
{"s3k55", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k56", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k57", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k58", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k59", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k5a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k5b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k5c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k5d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k5e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k5f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k60", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k61", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k62", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k63", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k64", false, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k65", false, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Blue Spheres
{"s3k66", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k67", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k68", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k69", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k6a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k6b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k6c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k6d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k6e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k6f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k70", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k71", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k72", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k73", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k74", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k75", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k76", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k77", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k78", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k79", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k7a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k7b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k7c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k7d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k7e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k7f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k80", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k81", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k82", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k83", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k84", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k85", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k86", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k87", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k88", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k89", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k8a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k8b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k8c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k8d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k8e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k8f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k90", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k91", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k92", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k93", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k94", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k95", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k96", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k97", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k98", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k99", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k9a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k9b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k9c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k9d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k9e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k9f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka0", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka4", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka5", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka6", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka8", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3ka9", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kaa", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kab", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kac", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kad", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kae", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kaf", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb0", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb4", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb5", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb6", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb8", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kb9", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kba", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbb", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbcs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbcl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbds", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbdl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbes", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbel", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbfs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kbfl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc0s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc0l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc1s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc1l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc2s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc2l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc3s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc4s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc4l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc5s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc5l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc6s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc6l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc8s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc8l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc9s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kc9l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcas", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcal", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcbs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kccs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kccl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcds", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcdl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kces", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcel", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcfs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kcfl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd0s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd0l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd1s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd1l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd2s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd2l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd3s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd4s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd4l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd5s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd5l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd6s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd6l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd7s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd7l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd8s", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR}, // Sharp Spin (maybe use the long/L version?)
{"s3kd8l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd9s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kd9l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kdas", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kdal", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kdbs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3kdbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
{"s3k33", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sparkle"}, // stereo in original game, identical to latter
{"s3k34", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sparkle"}, // mono in original game, identical to previous
{"s3k35", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Hurt"},
{"s3k36", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Skid"},
{"s3k37", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spiked"},
{"s3k38", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bubble gasp"},
{"s3k39", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water splash"},
{"s3k3a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k3b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Drowning"},
{"s3k3c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spinning"},
{"s3k3d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Pop"},
{"s3k3e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Fire Shield"},
{"s3k3f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water Shield"},
{"s3k40", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Attraction zoom"},
{"s3k41", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Lightning shield"},
{"s3k42", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Twinspin"},
{"s3k43", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Fire burst"},
{"s3k44", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bounce"},
{"s3k45", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Lightning zap"},
{"s3k46", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Super transformation"},
{"s3k47", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising sand"},
{"s3k48", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic clink"},
{"s3k49", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling rock"},
{"s3k4a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Grab"},
{"s3k4b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water splash"},
{"s3k4c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Heavy landing"},
{"s3k4d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing bullet"},
{"s3k4e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bomb explosion"},
{"s3k4f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flamethrower"},
{"s3k50", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Siren"},
{"s3k51", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling bomb"},
{"s3k52", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spike"},
{"s3k53", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Charging"},
{"s3k54", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Firing"}, // MetalSonic shot fire
{"s3k55", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Moving on track"},
{"s3k56", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k57", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water"},
{"s3k58", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical movement"},
{"s3k59", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collapsing platform"},
{"s3k5a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Aiming"},
{"s3k5b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Menu beep"},
{"s3k5c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Electric spark"},
{"s3k5d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bouncing missile"},
{"s3k5e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing laser"},
{"s3k5f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Crusher stomp"},
{"s3k60", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flying away"},
{"s3k61", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Drilling"},
{"s3k62", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Jump"},
{"s3k63", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Starpost"},
{"s3k64", false, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Movement"},
{"s3k65", false, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got blue sphere"}, // Blue Spheres
{"s3k66", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Special stage clear"},
{"s3k67", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing missile"},
{"s3k68", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Super possibilities"},
{"s3k69", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Switch click"},
{"s3k6a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Special stage clear"},
{"s3k6b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k6c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bursting from the ground"},
{"s3k6d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k6e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical damage"},
{"s3k6f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"},
{"s3k70", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Seperation"},
{"s3k71", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k72", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Movement"},
{"s3k73", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Warp"},
{"s3k74", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Mechanical clink"},
{"s3k75", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising"},
{"s3k76", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Click"},
{"s3k77", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Balloon pop"},
{"s3k78", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Magnet"},
{"s3k79", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Electric charge"},
{"s3k7a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising from lava"},
{"s3k7b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bumper bounce"},
{"s3k7c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Magnet"},
{"s3k7d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k7e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Eating dirt"},
{"s3k7f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Freeze"},
{"s3k80", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ice spike burst"},
{"s3k81", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing large object"},
{"s3k82", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bursting from the ground"},
{"s3k83", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collapsing bridge"},
{"s3k84", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k85", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k86", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Alarm"},
{"s3k87", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bounce"},
{"s3k88", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic clink"},
{"s3k89", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sufficiently advanced tech."},
{"s3k8a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Boing"},
{"s3k8b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Chop"},
{"s3k8c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k8d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k8e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k8f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Opening"},
{"s3k90", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Closing"},
{"s3k91", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Closed"},
{"s3k92", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ghost"},
{"s3k93", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rebuilding"},
{"s3k94", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spike"},
{"s3k95", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising from lava"},
{"s3k96", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling"},
{"s3k97", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wind"},
{"s3k98", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling spike"},
{"s3k99", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bounce"},
{"s3k9a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3k9b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Crusher stomp"},
{"s3k9c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got Super Emerald"},
{"s3k9d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Targetting"},
{"s3k9e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic clink"},
{"s3k9f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Super transformation"},
{"s3ka0", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Launch"},
{"s3ka1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3ka2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Launch"},
{"s3ka3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Lift"},
{"s3ka4", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Robotic power up"},
{"s3ka5", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3ka6", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3ka7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Countdown beep"},
{"s3ka8", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Energy"},
{"s3ka9", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Aquaphobia"},
{"s3kaa", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bumper bounce"},
{"s3kab", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spindash charge"},
{"s3kac", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got Continue"},
{"s3kad", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "GO!"},
{"s3kae", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Pinball flipper"},
{"s3kaf", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "To Special Stage"},
{"s3kb0", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Score tally done"},
{"s3kb1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spring"},
{"s3kb2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Failure"},
{"s3kb3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Big ring warp"},
{"s3kb4", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Explosion"},
{"s3kb5", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kb6", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spindash launch"},
{"s3kb7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rolling tumbler"},
{"s3kb8", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling signpost"},
{"s3kb9", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spilled rings"},
{"s3kba", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flight"},
{"s3kbb", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Tired flight"},
{"s3kbcs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kbcl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // long version of previous
{"s3kbds", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flying fortress"},
{"s3kbdl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flying fortress"}, // ditto
{"s3kbes", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flying away"},
{"s3kbel", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flying away"}, // ditto
{"s3kbfs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Turbine"},
{"s3kbfl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Turbine"}, // ditto
{"s3kc0s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Turbine"},
{"s3kc0l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Turbine"}, // ditto
{"s3kc1s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Fan"},
{"s3kc1l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Fan"}, // ditto
{"s3kc2s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flamethrower"},
{"s3kc2l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flamethrower"}, // ditto
{"s3kc3s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Levitation"},
{"s3kc3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Levitation"}, // ditto
{"s3kc4s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing laser"},
{"s3kc4l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing laser"}, // ditto
{"s3kc5s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kc5l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
{"s3kc6s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Orbiting"},
{"s3kc6l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Orbiting"}, // ditto
{"s3kc7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Aiming"},
{"s3kc8s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sliding"},
{"s3kc8l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Sliding"}, // ditto
{"s3kc9s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Swinging"},
{"s3kc9l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Swinging"}, // ditto
{"s3kcas", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Energy"},
{"s3kcal", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Energy"}, // ditto
{"s3kcbs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kcbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
{"s3kccs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collapsing"},
{"s3kccl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collapsing"}, // ditto
{"s3kcds", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"},
{"s3kcdl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"}, // ditto
{"s3kces", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wind tunnel"},
{"s3kcel", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wind tunnel"}, // ditto
{"s3kcfs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kcfl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
{"s3kd0s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising"},
{"s3kd0l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising"}, // ditto
{"s3kd1s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kd1l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
{"s3kd2s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Turning"},
{"s3kd2l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Turning"}, // ditto
{"s3kd3s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kd3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
{"s3kd4s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Engine"},
{"s3kd4l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Engine"}, // ditto
{"s3kd5s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling lava"},
{"s3kd5l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling lava"}, // ditto
{"s3kd6s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"s3kd6l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
{"s3kd7s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Movement"},
{"s3kd7l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Movement"}, // ditto
{"s3kd8s", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Acceleration"}, // Sharp Spin (maybe use the long/L version?)
{"s3kd8l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Acceleration"}, // ditto
{"s3kd9s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Magnetism"},
{"s3kd9l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Magnetism"}, // ditto
{"s3kdas", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Click"},
{"s3kdal", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Click"}, // ditto
{"s3kdbs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running on water"},
{"s3kdbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Running on water"}, // ditto
// skin sounds free slots to add sounds at run time (Boris HACK!!!)
// initialized to NULL
@ -513,6 +513,7 @@ void S_InitRuntimeSounds (void)
S_sfx[i].skinsound = -1;
S_sfx[i].usefulness = -1;
S_sfx[i].lumpnum = LUMPERROR;
strlcpy(S_sfx[i].caption, "", 9);
}
}

View file

@ -84,6 +84,9 @@ struct sfxinfo_struct
// lump number of sfx
lumpnum_t lumpnum;
// closed caption info/wiki table bait
char caption[32];
};
// the complete set of sound effects
@ -210,7 +213,7 @@ typedef enum
sfx_drown,
sfx_fizzle,
sfx_gbeep,
sfx_gclose,
sfx_wepfir,
sfx_ghit,
sfx_gloop,
sfx_gspray,

View file

@ -1781,6 +1781,9 @@ INT32 V_StringWidth(const char *string, INT32 option)
w += (charwidth ? charwidth : SHORT(hu_font[c]->width));
}
if (option & V_NOSCALESTART)
w *= vid.dupx;
return w;
}

View file

@ -362,6 +362,10 @@ void I_FinishUpdate(void)
if (I_SkipFrame())
return;
// draw captions if enabled
if (cv_closedcaptioning.value)
SCR_ClosedCaptions();
// display a graph of ticrate
if (cv_ticrate.value)
SCR_DisplayTicRate();

View file

@ -194,6 +194,10 @@ void I_FinishUpdate(void)
if (rendermode == render_none)
return;
// draw captions if enabled
if (cv_closedcaptioning.value)
SCR_ClosedCaptions();
// display a graph of ticrate
if (cv_ticrate.value)
SCR_DisplayTicRate();