Merge branch 'master' into snapify-hitlag

This commit is contained in:
Sally Coolatta 2021-11-28 01:23:53 -05:00
commit e1ee0977af
17 changed files with 362 additions and 51 deletions

View file

@ -390,7 +390,7 @@ typedef struct player_s
fixed_t offroad; // In Super Mario Kart, going offroad has lee-way of about 1 second before you start losing speed
UINT8 waterskip; // Water skipping counter
UINT16 tiregrease; // Reduced friction timer after hitting a horizontal spring
UINT16 tiregrease; // Reduced friction timer after hitting a spring
UINT16 springstars; // Spawn stars around a player when they hit a spring
UINT16 springcolor; // Color of spring stars
UINT8 dashpadcooldown; // Separate the vanilla SA-style dash pads from using flashing
@ -465,6 +465,7 @@ typedef struct player_s
UINT8 emeralds;
UINT8 bumpers;
INT16 karmadelay;
tic_t overtimekarma; // time to live in overtime comeback
INT16 spheres;
SINT8 glanceDir; // Direction the player is trying to look backwards in

View file

@ -2683,6 +2683,10 @@ void readsound(MYFILE *f, INT32 num)
{
S_sfx[num].pitch = value;
}
else if (fastcmp(word, "VOLUME"))
{
S_sfx[num].volume = value;
}
else if (fastcmp(word, "CAPTION") || fastcmp(word, "DESCRIPTION"))
{
deh_strlcpy(S_sfx[num].caption, word2,

View file

@ -2281,6 +2281,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
p->growshrinktimer = growshrinktimer;
p->bumpers = bumper;
p->karmadelay = comebacktime;
p->overtimekarma = 0;
p->eggmanblame = -1;
p->lastdraft = -1;
p->karthud[khud_fault] = khudfault;

View file

@ -8686,7 +8686,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
20*FRACUNIT, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY, // flags
MF_SPECIAL|MF_NOGRAVITY, // flags
S_BALLOONPOP1 // raisestate
},

View file

@ -179,7 +179,7 @@ mobj_t *K_SpawnChaosEmerald(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT
P_Thrust(emerald,
FixedAngle(P_RandomFixed() * 180) + angle,
32 * mapobjectscale);
24 * mapobjectscale);
emerald->momz = flip * 24 * mapobjectscale;
if (emerald->eflags & MFE_UNDERWATER)
@ -288,12 +288,6 @@ void K_RunPaperItemSpawners(void)
if (overtime == true)
{
if (battleovertime.radius < 512*mapobjectscale)
{
// Barrier has closed in too much
return;
}
// Double frequency of items
interval /= 2;
}
@ -557,10 +551,12 @@ void K_RunBattleOvertime(void)
}
else if (battleovertime.radius > 0)
{
if (battleovertime.radius > 2*mapobjectscale)
const fixed_t minradius = 768 * mapobjectscale;
if (battleovertime.radius > minradius)
battleovertime.radius -= 2*mapobjectscale;
else
battleovertime.radius = 0;
battleovertime.radius = minradius;
}
if (battleovertime.radius > 0)

View file

@ -2460,7 +2460,8 @@ static void K_drawKartBumpersOrKarma(void)
else
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|V_SLIDEIN|splitflags, kp_bumpersticker, colormap);
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|V_SLIDEIN|splitflags, va("%d/%d", stplyr->bumpers, maxbumper));
// TODO BETTER HUD
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|V_SLIDEIN|splitflags, va("%d/%d %d", stplyr->bumpers, maxbumper, stplyr->overtimekarma / TICRATE));
}
}
}

View file

@ -6882,6 +6882,14 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_KartPlayerHUDUpdate(player);
if (battleovertime.enabled && !(player->pflags & PF_ELIMINATED) && player->bumpers <= 0 && player->karmadelay <= 0)
{
if (player->overtimekarma)
player->overtimekarma--;
else
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_TIMEOVER);
}
if ((battleovertime.enabled >= 10*TICRATE) && !(player->pflags & PF_ELIMINATED))
{
fixed_t distanceToBarrier = 0;
@ -6975,13 +6983,6 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
// Handle invincibility sfx
K_UpdateInvincibilitySounds(player); // Also thanks, VAda!
// Plays the music after the starting countdown.
if (P_IsLocalPlayer(player) && leveltime == (starttime + (TICRATE/2)))
{
S_ChangeMusic(mapmusname, mapmusflags, true);
S_ShowMusicCredit();
}
}
void K_KartPlayerAfterThink(player_t *player)
@ -8334,7 +8335,7 @@ void K_AdjustPlayerFriction(player_t *player)
return;
}
// Reduce friction after hitting a horizontal spring
// Reduce friction after hitting a spring
if (player->tiregrease)
{
player->mo->friction += ((FRACUNIT - prevfriction) / greasetics) * player->tiregrease;

View file

@ -41,6 +41,7 @@ enum sfxinfo_read {
sfxinfor_singular,
sfxinfor_priority,
sfxinfor_flags, // "pitch"
sfxinfor_volume,
sfxinfor_caption,
sfxinfor_skinsound
};
@ -49,6 +50,7 @@ const char *const sfxinfo_ropt[] = {
"singular",
"priority",
"flags",
"volume",
"caption",
"skinsound",
NULL};
@ -57,12 +59,14 @@ enum sfxinfo_write {
sfxinfow_singular = 0,
sfxinfow_priority,
sfxinfow_flags, // "pitch"
sfxinfow_volume,
sfxinfow_caption
};
const char *const sfxinfo_wopt[] = {
"singular",
"priority",
"flags",
"volume",
"caption",
NULL};
@ -1328,6 +1332,9 @@ static int lib_setSfxInfo(lua_State *L)
case sfxinfow_flags:
info->pitch = (INT32)luaL_checkinteger(L, 3);
break;
case sfxinfow_volume:
info->volume = (INT32)luaL_checkinteger(L, 3);
break;
case sfxinfow_caption:
strlcpy(info->caption, luaL_checkstring(L, 3), sizeof(info->caption));
break;
@ -1368,6 +1375,9 @@ static int sfxinfo_get(lua_State *L)
case sfxinfor_flags:
lua_pushinteger(L, sfx->pitch);
return 1;
case sfxinfor_volume:
lua_pushinteger(L, sfx->volume);
return 1;
case sfxinfor_caption:
lua_pushstring(L, sfx->caption);
return 1;
@ -1408,6 +1418,9 @@ static int sfxinfo_set(lua_State *L)
case sfxinfow_flags:
sfx->pitch = luaL_checkinteger(L, 1);
break;
case sfxinfow_volume:
sfx->volume = luaL_checkinteger(L, 1);
break;
case sfxinfow_caption:
strlcpy(sfx->caption, luaL_checkstring(L, 1), sizeof(sfx->caption));
break;

View file

@ -278,19 +278,27 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
P_KillMobj(special, toucher, toucher, DMG_NORMAL);
break;
case MT_ITEMCAPSULE:
if (special->threshold != KITEM_SUPERRING
&& special->threshold != KITEM_SPB
&& !P_CanPickupItem(player, 1))
return;
if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0)
return;
if (special->scale < special->extravalue1) // don't break it while it's respawning
return;
if (special->threshold == KITEM_SPB && K_IsSPBInGame()) // don't spawn a second SPB
return;
switch (special->threshold)
{
case KITEM_SPB:
if (K_IsSPBInGame()) // don't spawn a second SPB
return;
break;
case KITEM_SUPERRING:
if (player->pflags & PF_RINGLOCK) // no cheaty rings
return;
break;
default:
if (!P_CanPickupItem(player, 1))
return;
break;
}
S_StartSound(toucher, special->info->deathsound);
P_KillMobj(special, toucher, toucher, DMG_NORMAL);
@ -1973,6 +1981,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
// Destroy any remainder bumpers from the player for karma comeback damage
K_DestroyBumpers(player, player->bumpers);
}
else
{
source->player->overtimekarma += 5*TICRATE;
}
if (damagetype & DMG_STEAL)
{

View file

@ -345,28 +345,6 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
}
}
if (object->player)
{
// Less friction when hitting horizontal springs
if (!vertispeed)
{
if (!object->player->tiregrease)
{
UINT8 i;
for (i = 0; i < 2; i++)
{
mobj_t *grease;
grease = P_SpawnMobj(object->x, object->y, object->z, MT_TIREGREASE);
P_SetTarget(&grease->target, object);
grease->angle = K_MomentumAngle(object);
grease->extravalue1 = i;
}
}
object->player->tiregrease = greasetics; //FixedMul(greasetics << FRACBITS, finalSpeed/72) >> FRACBITS
}
}
// Horizontal speed is used as a minimum thrust, not a direct replacement
finalSpeed = max(objectSpeed, finalSpeed);
@ -389,6 +367,22 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
object->player->springstars = max(vertispeed, horizspeed) / FRACUNIT / 2;
object->player->springcolor = starcolor;
// Less friction when hitting springs
if (!object->player->tiregrease)
{
UINT8 i;
for (i = 0; i < 2; i++)
{
mobj_t *grease;
grease = P_SpawnMobj(object->x, object->y, object->z, MT_TIREGREASE);
P_SetTarget(&grease->target, object);
grease->angle = K_MomentumAngle(object);
grease->extravalue1 = i;
}
object->player->tiregrease = greasetics; //FixedMul(greasetics << FRACBITS, finalSpeed/72) >> FRACBITS
}
}
return true;

View file

@ -6889,6 +6889,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
z);
mobj->angle = ang;
if (!P_IsObjectOnGround(mobj->target))
mobj->renderflags |= RF_DONTDRAW;
if (leveltime & 1)
mobj->renderflags |= RF_DONTDRAW;

View file

@ -314,6 +314,7 @@ static void P_NetArchivePlayers(void)
WRITEUINT8(save_p, players[i].emeralds);
WRITEUINT8(save_p, players[i].bumpers);
WRITEINT16(save_p, players[i].karmadelay);
WRITEUINT32(save_p, players[i].overtimekarma);
WRITEINT16(save_p, players[i].spheres);
WRITESINT8(save_p, players[i].glanceDir);
@ -331,6 +332,7 @@ static void P_NetArchivePlayers(void)
WRITEFIXED(save_p, players[i].respawn.pointz);
WRITEUINT8(save_p, players[i].respawn.flip);
WRITEUINT32(save_p, players[i].respawn.timer);
WRITEUINT32(save_p, players[i].respawn.airtimer);
WRITEUINT32(save_p, players[i].respawn.distanceleft);
WRITEUINT32(save_p, players[i].respawn.dropdash);
@ -567,6 +569,7 @@ static void P_NetUnArchivePlayers(void)
players[i].emeralds = READUINT8(save_p);
players[i].bumpers = READUINT8(save_p);
players[i].karmadelay = READINT16(save_p);
players[i].overtimekarma = READUINT32(save_p);
players[i].spheres = READINT16(save_p);
players[i].glanceDir = READSINT8(save_p);
@ -584,6 +587,7 @@ static void P_NetUnArchivePlayers(void)
players[i].respawn.pointz = READFIXED(save_p);
players[i].respawn.flip = (boolean)READUINT8(save_p);
players[i].respawn.timer = READUINT32(save_p);
players[i].respawn.airtimer = READUINT32(save_p);
players[i].respawn.distanceleft = READUINT32(save_p);
players[i].respawn.dropdash = READUINT32(save_p);

View file

@ -608,6 +608,13 @@ void P_Ticker(boolean run)
if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo))
P_PlayerAfterThink(&players[i]);
// Plays the music after the starting countdown.
if (leveltime == (starttime + (TICRATE/2)))
{
S_ChangeMusic(mapmusname, mapmusflags, true);
S_ShowMusicCredit();
}
ps_lua_thinkframe_time = I_GetPreciseTime();
LUAh_ThinkFrame();
ps_lua_thinkframe_time = I_GetPreciseTime() - ps_lua_thinkframe_time;

View file

@ -693,7 +693,7 @@ void S_StartSoundAtVolume(const void *origin_p, sfxenum_t sfx_id, INT32 volume)
channels[cnum].sfxinfo = sfx;
channels[cnum].origin = origin;
channels[cnum].volume = initial_volume;
channels[cnum].handle = I_StartSound(sfx_id, volume, sep, pitch, priority, cnum);
channels[cnum].handle = I_StartSound(sfx_id, S_GetSoundVolume(sfx, volume), sep, pitch, priority, cnum);
}
}
@ -899,7 +899,7 @@ void S_UpdateSounds(void)
}
if (audible)
I_UpdateSoundParams(c->handle, volume, sep, pitch);
I_UpdateSoundParams(c->handle, S_GetSoundVolume(c->sfxinfo, volume), sep, pitch);
else
S_StopChannel(cnum);
}
@ -1011,6 +1011,14 @@ fixed_t S_CalculateSoundDistance(fixed_t sx1, fixed_t sy1, fixed_t sz1, fixed_t
return FixedDiv(approx_dist, mapobjectscale); // approx_dist
}
INT32 S_GetSoundVolume(sfxinfo_t *sfx, INT32 volume)
{
if (sfx->volume > 0)
return (volume * sfx->volume) / 100;
return volume;
}
//
// Changes volume, stereo-separation, and pitch variables
// from the norm of a sound effect to be played.

View file

@ -295,6 +295,8 @@ void S_UpdateClosedCaptions(void);
FUNCMATH fixed_t S_CalculateSoundDistance(fixed_t px1, fixed_t py1, fixed_t pz1, fixed_t px2, fixed_t py2, fixed_t pz2);
INT32 S_GetSoundVolume(sfxinfo_t *sfx, INT32 volume);
void S_SetSfxVolume(INT32 volume);
void S_SetMusicVolume(INT32 digvolume);
#define S_SetDigMusicVolume S_SetMusicVolume

View file

@ -908,6 +908,138 @@ sfxinfo_t S_sfx[NUMSFX] =
{"mbv96", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"mbv97", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
// SegaSonic Arcade sounds
{"ssa001", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa002", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa003", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa004", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa005", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa006", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa007", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa008", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa009", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa010", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa011", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa012", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa013", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa014", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa015", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa016", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa017", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa018", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa019", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa020", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa021", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa022", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa023", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa024", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa025", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa026", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa027", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa028", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa029", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa030", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa031", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa032", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa033", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa034", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa035", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa036", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa037", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa038", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa039", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa040", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa041", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa042", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa043", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa044", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa045", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa046", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa047", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa048", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa049", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa050", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa051", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa052", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa053", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa054", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa055", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa056", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa057", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa058", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa059", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa060", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa061", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa062", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa063", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa064", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa065", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa066", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa067", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa068", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa069", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa070", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa071", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa072", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa073", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa074", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa075", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa076", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa077", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa078", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa079", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa080", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa081", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa082", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa083", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa084", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa085", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa086", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa087", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa088", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa089", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa090", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa091", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa092", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa093", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa094", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa095", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa096", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa097", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa098", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa099", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa100", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa101", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa102", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa103", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa104", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa105", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa106", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa107", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa108", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa109", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa110", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa111", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa112", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa113", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa114", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa115", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa116", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa117", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa118", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa119", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa120", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa121", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa122", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa123", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa124", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa125", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa126", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa127", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa128", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa129", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
{"ssa130", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
// SRB2kart
{"slip", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Spinout
{"screec", false, 48, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Tight turning screech

View file

@ -972,6 +972,138 @@ typedef enum
sfx_mbv96,
sfx_mbv97,
// SegaSonic Arcade sounds
sfx_ssa001,
sfx_ssa002,
sfx_ssa003,
sfx_ssa004,
sfx_ssa005,
sfx_ssa006,
sfx_ssa007,
sfx_ssa008,
sfx_ssa009,
sfx_ssa010,
sfx_ssa011,
sfx_ssa012,
sfx_ssa013,
sfx_ssa014,
sfx_ssa015,
sfx_ssa016,
sfx_ssa017,
sfx_ssa018,
sfx_ssa019,
sfx_ssa020,
sfx_ssa021,
sfx_ssa022,
sfx_ssa023,
sfx_ssa024,
sfx_ssa025,
sfx_ssa026,
sfx_ssa027,
sfx_ssa028,
sfx_ssa029,
sfx_ssa030,
sfx_ssa031,
sfx_ssa032,
sfx_ssa033,
sfx_ssa034,
sfx_ssa035,
sfx_ssa036,
sfx_ssa037,
sfx_ssa038,
sfx_ssa039,
sfx_ssa040,
sfx_ssa041,
sfx_ssa042,
sfx_ssa043,
sfx_ssa044,
sfx_ssa045,
sfx_ssa046,
sfx_ssa047,
sfx_ssa048,
sfx_ssa049,
sfx_ssa050,
sfx_ssa051,
sfx_ssa052,
sfx_ssa053,
sfx_ssa054,
sfx_ssa055,
sfx_ssa056,
sfx_ssa057,
sfx_ssa058,
sfx_ssa059,
sfx_ssa060,
sfx_ssa061,
sfx_ssa062,
sfx_ssa063,
sfx_ssa064,
sfx_ssa065,
sfx_ssa066,
sfx_ssa067,
sfx_ssa068,
sfx_ssa069,
sfx_ssa070,
sfx_ssa071,
sfx_ssa072,
sfx_ssa073,
sfx_ssa074,
sfx_ssa075,
sfx_ssa076,
sfx_ssa077,
sfx_ssa078,
sfx_ssa079,
sfx_ssa080,
sfx_ssa081,
sfx_ssa082,
sfx_ssa083,
sfx_ssa084,
sfx_ssa085,
sfx_ssa086,
sfx_ssa087,
sfx_ssa088,
sfx_ssa089,
sfx_ssa090,
sfx_ssa091,
sfx_ssa092,
sfx_ssa093,
sfx_ssa094,
sfx_ssa095,
sfx_ssa096,
sfx_ssa097,
sfx_ssa098,
sfx_ssa099,
sfx_ssa100,
sfx_ssa101,
sfx_ssa102,
sfx_ssa103,
sfx_ssa104,
sfx_ssa105,
sfx_ssa106,
sfx_ssa107,
sfx_ssa108,
sfx_ssa109,
sfx_ssa110,
sfx_ssa111,
sfx_ssa112,
sfx_ssa113,
sfx_ssa114,
sfx_ssa115,
sfx_ssa116,
sfx_ssa117,
sfx_ssa118,
sfx_ssa119,
sfx_ssa120,
sfx_ssa121,
sfx_ssa122,
sfx_ssa123,
sfx_ssa124,
sfx_ssa125,
sfx_ssa126,
sfx_ssa127,
sfx_ssa128,
sfx_ssa129,
sfx_ssa130,
// SRB2kart
sfx_slip,
sfx_screec,