Refactor player sounds, added pitch scale for player sounds

This commit is contained in:
MysterD 2021-08-11 23:24:53 -07:00
parent 142d21426d
commit da31495564
14 changed files with 285 additions and 141 deletions

View file

@ -173,6 +173,7 @@ u8 audioString118__[] = "";
struct Sound {
s32 soundBits;
f32 *position;
f32 customFreqScale;
}; // size = 0x8
struct ChannelVolumeScaleFade {
@ -193,6 +194,7 @@ struct SoundCharacteristics {
u8 unk19; // ttl? sometimes set to 10
u8 prev;
u8 next;
f32 customFreqScale;
}; // size = 0x1C
struct SequenceQueueItem {
@ -496,7 +498,7 @@ struct ChannelVolumeScaleFade D_80360928[3][CHANNELS_MAX];
u8 sUsedChannelsForSoundBank[SOUND_BANK_COUNT];
u8 sCurrentSound[SOUND_BANK_COUNT][MAX_CHANNELS_PER_SOUND]; // index into gSoundBanks
// list item memory for D_803320A4 and D_803320B0
struct SoundCharacteristics gSoundBanks[SOUND_BANK_COUNT][40];
struct SoundCharacteristics gSoundBanks[SOUND_BANK_COUNT][40] = { 0 };
u8 D_80363808[SOUND_BANK_COUNT];
u8 D_80363812;
static u8 sCapVolumeTo40;
@ -784,10 +786,18 @@ void create_next_audio_buffer(s16 *samples, u32 num_samples) {
void play_sound(s32 soundBits, f32 *pos) {
sSoundRequests[sSoundRequestCount].soundBits = soundBits;
sSoundRequests[sSoundRequestCount].position = pos;
sSoundRequests[sSoundRequestCount].customFreqScale = 0;
sSoundRequestCount++;
}
void process_sound_request(u32 bits, f32 *pos) {
void play_sound_with_freq_scale(s32 soundBits, f32* pos, f32 freqScale) {
sSoundRequests[sSoundRequestCount].soundBits = soundBits;
sSoundRequests[sSoundRequestCount].position = pos;
sSoundRequests[sSoundRequestCount].customFreqScale = freqScale;
sSoundRequestCount++;
}
void process_sound_request(u32 bits, f32 *pos, f32 freqScale) {
u8 bankIndex;
u8 index;
u8 counter = 0;
@ -814,6 +824,7 @@ void process_sound_request(u32 bits, f32 *pos) {
gSoundBanks[bankIndex][index].soundStatus = bits & SOUNDARGS_MASK_STATUS;
}
gSoundBanks[bankIndex][index].unk19 = 10;
gSoundBanks[bankIndex][index].customFreqScale = freqScale;
}
index = 0;
} else {
@ -836,6 +847,7 @@ void process_sound_request(u32 bits, f32 *pos) {
gSoundBanks[bankIndex][index].soundBits = bits;
gSoundBanks[bankIndex][index].soundStatus = bits & SOUNDARGS_MASK_STATUS;
gSoundBanks[bankIndex][index].unk19 = 10;
gSoundBanks[bankIndex][index].customFreqScale = freqScale;
gSoundBanks[bankIndex][index].prev = D_803320A4[bankIndex];
gSoundBanks[bankIndex][D_803320A4[bankIndex]].next = D_803320B0[bankIndex];
D_803320A4[bankIndex] = D_803320B0[bankIndex];
@ -853,7 +865,7 @@ void process_all_sound_requests(void) {
while (sSoundRequestCount != sNumProcessedSoundRequests) {
sound = &sSoundRequests[sNumProcessedSoundRequests];
process_sound_request(sound->soundBits, sound->position);
process_sound_request(sound->soundBits, sound->position, sound->customFreqScale);
sNumProcessedSoundRequests++;
}
}
@ -1505,6 +1517,11 @@ void update_game_sound(void) {
}
}
}
// add custom pitch bend
if (gSoundBanks[bankIndex][index].customFreqScale != 0) {
gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale *= gSoundBanks[bankIndex][index].customFreqScale;
}
channelIndex++;
}

View file

@ -25,6 +25,7 @@ extern u8 gAudioSPTaskYieldBuffer[]; // ucode yield data ptr; only used in JP
struct SPTask *create_next_audio_frame_task(void);
void play_sound(s32 soundBits, f32 *pos);
void play_sound_with_freq_scale(s32 soundBits, f32* pos, f32 freqScale);
void audio_signal_game_loop_tick(void);
void sequence_player_fade_out(u8 player, u16 fadeTimer);
void fade_volume_scale(u8 player, u8 targetScale, u16 fadeTimer);

View file

@ -6,6 +6,7 @@
#include "audio_defines.h"
#include "luigi_audio_defines.h"
#include "pc/configfile.h"
#include "audio/external.h"
struct Character gCharacters[CT_MAX] = {
[CT_MARIO] = {
@ -15,6 +16,7 @@ struct Character gCharacters[CT_MAX] = {
.capModelId = MODEL_MARIOS_CAP,
.capKleptoAnimState = KLEPTO_ANIM_STATE_HOLDING_CAP,
.capUkikiAnimState = UKIKI_ANIM_STATE_HAT_ON,
.soundFreqScale = 1.0f,
// sounds
.soundYahWahHoo = SOUND_MARIO_YAH_WAH_HOO,
.soundHoohoo = SOUND_MARIO_HOOHOO,
@ -67,6 +69,7 @@ struct Character gCharacters[CT_MAX] = {
.capModelId = MODEL_LUIGIS_CAP,
.capKleptoAnimState = KLEPTO_ANIM_STATE_HOLDING_CAP_LUIGI,
.capUkikiAnimState = UKIKI_ANIM_STATE_HAT_ON_LUIGI,
.soundFreqScale = 1.0f,
// sounds
.soundYahWahHoo = SOUND_LUIGI_YAH_WAH_HOO,
.soundHoohoo = SOUND_LUIGI_HOOHOO,
@ -113,7 +116,79 @@ struct Character gCharacters[CT_MAX] = {
},
};
struct Character* get_character_sound(struct MarioState* m) {
if (m == NULL || m->character == NULL) { return &gCharacters[CT_MARIO]; }
return m->character;
struct Character* get_character(struct MarioState* m) {
return (m == NULL || m->character == NULL)
? &gCharacters[CT_MARIO]
: m->character;
}
static s32 get_character_sound(struct MarioState* m, enum CharacterSound characterSound) {
if (m == NULL || m->marioObj == NULL) { return 0; }
struct Character* character = ((m == NULL || m->character == NULL) ? &gCharacters[CT_MARIO] : m->character);
switch (characterSound) {
case CHAR_SOUND_YAH_WAH_HOO: return character->soundYahWahHoo;
case CHAR_SOUND_HOOHOO: return character->soundHoohoo;
case CHAR_SOUND_YAHOO: return character->soundYahoo;
case CHAR_SOUND_UH: return character->soundUh;
case CHAR_SOUND_HRMM: return character->soundHrmm;
case CHAR_SOUND_WAH2: return character->soundWah2;
case CHAR_SOUND_WHOA: return character->soundWhoa;
case CHAR_SOUND_EEUH: return character->soundEeuh;
case CHAR_SOUND_ATTACKED: return character->soundAttacked;
case CHAR_SOUND_OOOF: return character->soundOoof;
case CHAR_SOUND_OOOF2: return character->soundOoof2;
case CHAR_SOUND_HERE_WE_GO: return character->soundHereWeGo;
case CHAR_SOUND_YAWNING: return character->soundYawning;
case CHAR_SOUND_SNORING1: return character->soundSnoring1;
case CHAR_SOUND_SNORING2: return character->soundSnoring2;
case CHAR_SOUND_WAAAOOOW: return character->soundWaaaooow;
case CHAR_SOUND_HAHA: return character->soundHaha;
case CHAR_SOUND_HAHA_2: return character->soundHaha_2;
case CHAR_SOUND_UH2: return character->soundUh2;
case CHAR_SOUND_UH2_2: return character->soundUh2_2;
case CHAR_SOUND_ON_FIRE: return character->soundOnFire;
case CHAR_SOUND_DYING: return character->soundDying;
case CHAR_SOUND_PANTING_COLD: return character->soundPantingCold;
case CHAR_SOUND_PANTING: return character->soundPanting;
case CHAR_SOUND_COUGHING1: return character->soundCoughing1;
case CHAR_SOUND_COUGHING2: return character->soundCoughing2;
case CHAR_SOUND_COUGHING3: return character->soundCoughing3;
case CHAR_SOUND_PUNCH_YAH: return character->soundPunchYah;
case CHAR_SOUND_PUNCH_HOO: return character->soundPunchHoo;
case CHAR_SOUND_MAMA_MIA: return character->soundMamaMia;
case CHAR_SOUND_GROUND_POUND_WAH: return character->soundGroundPoundWah;
case CHAR_SOUND_DROWNING: return character->soundDrowning;
case CHAR_SOUND_PUNCH_WAH: return character->soundPunchWah;
case CHAR_SOUND_YAHOO_WAHA_YIPPEE: return character->soundYahooWahaYippee;
case CHAR_SOUND_DOH: return character->soundDoh;
case CHAR_SOUND_GAME_OVER: return character->soundGameOver;
case CHAR_SOUND_HELLO: return character->soundHello;
case CHAR_SOUND_PRESS_START_TO_PLAY: return character->soundPressStartToPlay;
case CHAR_SOUND_TWIRL_BOUNCE: return character->soundTwirlBounce;
case CHAR_SOUND_SNORING3: return character->soundSnoring3;
case CHAR_SOUND_SO_LONGA_BOWSER: return character->soundSoLongaBowser;
case CHAR_SOUND_IMA_TIRED: return character->soundImaTired;
default: return 0;
}
}
void play_character_sound(struct MarioState* m, enum CharacterSound characterSound) {
s32 sound = get_character_sound(m, characterSound);
if (sound == 0) { return; }
struct Character* character = get_character(m);
play_sound_with_freq_scale(sound, m->marioObj->header.gfx.cameraToObject, character->soundFreqScale);
}
void play_character_sound_offset(struct MarioState* m, enum CharacterSound characterSound, u8 offset) {
s32 sound = get_character_sound(m, characterSound);
if (sound == 0) { return; }
struct Character* character = get_character(m);
play_sound_with_freq_scale(sound, m->marioObj->header.gfx.cameraToObject, character->soundFreqScale);
}
void play_character_sound_if_no_flag(struct MarioState* m, enum CharacterSound characterSound, u32 flags) {
if ((m->flags & flags) == 0) {
play_character_sound(m, characterSound);
m->flags |= flags;
}
}

View file

@ -18,6 +18,7 @@ struct Character {
u32 capModelId;
s32 capKleptoAnimState;
s32 capUkikiAnimState;
f32 soundFreqScale;
// sounds
s32 soundYahWahHoo;
s32 soundHoohoo;
@ -62,8 +63,58 @@ struct Character {
s32 soundSoLongaBowser;
s32 soundImaTired;
};
enum CharacterSound {
CHAR_SOUND_YAH_WAH_HOO,
CHAR_SOUND_HOOHOO,
CHAR_SOUND_YAHOO,
CHAR_SOUND_UH,
CHAR_SOUND_HRMM,
CHAR_SOUND_WAH2,
CHAR_SOUND_WHOA,
CHAR_SOUND_EEUH,
CHAR_SOUND_ATTACKED,
CHAR_SOUND_OOOF,
CHAR_SOUND_OOOF2,
CHAR_SOUND_HERE_WE_GO,
CHAR_SOUND_YAWNING,
CHAR_SOUND_SNORING1,
CHAR_SOUND_SNORING2,
CHAR_SOUND_WAAAOOOW,
CHAR_SOUND_HAHA,
CHAR_SOUND_HAHA_2,
CHAR_SOUND_UH2,
CHAR_SOUND_UH2_2,
CHAR_SOUND_ON_FIRE,
CHAR_SOUND_DYING,
CHAR_SOUND_PANTING_COLD,
CHAR_SOUND_PANTING,
CHAR_SOUND_COUGHING1,
CHAR_SOUND_COUGHING2,
CHAR_SOUND_COUGHING3,
CHAR_SOUND_PUNCH_YAH,
CHAR_SOUND_PUNCH_HOO,
CHAR_SOUND_MAMA_MIA,
CHAR_SOUND_GROUND_POUND_WAH,
CHAR_SOUND_DROWNING,
CHAR_SOUND_PUNCH_WAH,
CHAR_SOUND_YAHOO_WAHA_YIPPEE,
CHAR_SOUND_DOH,
CHAR_SOUND_GAME_OVER,
CHAR_SOUND_HELLO,
CHAR_SOUND_PRESS_START_TO_PLAY,
CHAR_SOUND_TWIRL_BOUNCE,
CHAR_SOUND_SNORING3,
CHAR_SOUND_SO_LONGA_BOWSER,
CHAR_SOUND_IMA_TIRED,
CHAR_SOUND_MAX // MUST BE LAST
};
struct MarioState;
extern struct Character gCharacters[];
struct Character* get_character_sound(struct MarioState* m);
struct Character* get_character(struct MarioState* m);
void play_character_sound(struct MarioState* m, enum CharacterSound characterSound);
void play_character_sound_offset(struct MarioState* m, enum CharacterSound characterSound, u8 offset);
void play_character_sound_if_no_flag(struct MarioState* m, enum CharacterSound characterSound, u32 flags);
#endif // CHARACTERS_H

View file

@ -799,7 +799,7 @@ u32 take_damage_and_knock_back(struct MarioState *m, struct Object *o) {
}
if (o->oDamageOrCoinValue > 0) {
play_sound(get_character_sound(m)->soundAttacked, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ATTACKED);
}
update_mario_sound_and_camera(m);
@ -1388,7 +1388,7 @@ u32 interact_tornado(struct MarioState *m, UNUSED u32 interactType, struct Objec
marioObj->oMarioTornadoYawVel = 0x400;
marioObj->oMarioTornadoPosY = m->pos[1] - o->oPosY;
play_sound(get_character_sound(m)->soundWaaaooow, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_WAAAOOOW);
queue_rumble_data_mario(m, 30, 60);
return set_mario_action(m, ACT_TORNADO_TWIRLING, m->action == ACT_TWIRLING);
@ -1410,7 +1410,7 @@ u32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Obj
marioObj->oMarioWhirlpoolPosY = m->pos[1] - o->oPosY;
play_sound(get_character_sound(m)->soundWaaaooow, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_WAAAOOOW);
queue_rumble_data_mario(m, 30, 60);
return set_mario_action(m, ACT_CAUGHT_IN_WHIRLPOOL, 0);
@ -1433,7 +1433,7 @@ u32 interact_strong_wind(struct MarioState *m, UNUSED u32 interactType, struct O
m->forwardVel = -24.0f;
m->vel[1] = 12.0f;
play_sound(get_character_sound(m)->soundWaaaooow, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_WAAAOOOW);
update_mario_sound_and_camera(m);
return set_mario_action(m, ACT_GETTING_BLOWN, 0);
}
@ -1457,7 +1457,7 @@ u32 interact_flame(struct MarioState *m, UNUSED u32 interactType, struct Object
} else {
m->marioObj->oMarioBurnTimer = 0;
update_mario_sound_and_camera(m);
play_sound(get_character_sound(m)->soundOnFire, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ON_FIRE);
if ((m->action & ACT_FLAG_AIR) && m->vel[1] <= 0.0f) {
burningAction = ACT_BURNING_FALL;
@ -1480,7 +1480,7 @@ u32 interact_snufit_bullet(struct MarioState *m, UNUSED u32 interactType, struct
m->interactObj = o;
take_damage_from_interact_object(m);
play_sound(get_character_sound(m)->soundAttacked, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ATTACKED);
update_mario_sound_and_camera(m);
return drop_and_set_mario_action(m, determine_knockback_action(m, o->oDamageOrCoinValue),
@ -1541,7 +1541,7 @@ u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object
m->invincTimer = 2;
update_mario_sound_and_camera(m);
play_sound(get_character_sound(m)->soundEeuh, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_EEUH);
play_sound(SOUND_OBJ_BULLY_METAL, m->marioObj->header.gfx.cameraToObject);
push_mario_out_of_object(m, o, 5.0f);
@ -1563,7 +1563,7 @@ u32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object
m->interactObj = o;
take_damage_from_interact_object(m);
play_sound(get_character_sound(m)->soundAttacked, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ATTACKED);
queue_rumble_data_mario(m, 70, 60);
if (m->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {
@ -1623,7 +1623,7 @@ u32 interact_hit_from_below(struct MarioState *m, UNUSED u32 interactType, struc
bounce_off_object(m, o, 80.0f);
reset_mario_pitch(m);
#ifndef VERSION_JP
play_sound(get_character_sound(m)->soundTwirlBounce, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_TWIRL_BOUNCE);
#endif
return drop_and_set_mario_action(m, ACT_TWIRLING, 0);
} else {
@ -1658,7 +1658,7 @@ u32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Ob
bounce_off_object(m, o, 80.0f);
reset_mario_pitch(m);
#ifndef VERSION_JP
play_sound(get_character_sound(m)->soundTwirlBounce, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_TWIRL_BOUNCE);
#endif
return drop_and_set_mario_action(m, ACT_TWIRLING, 0);
} else {
@ -1776,7 +1776,7 @@ u32 check_object_grab_mario(struct MarioState *m, UNUSED u32 interactType, struc
m->usedObj = o;
update_mario_sound_and_camera(m);
play_sound(get_character_sound(m)->soundOoof, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF);
queue_rumble_data_mario(m, 5, 80);
return set_mario_action(m, ACT_GRABBED, 0);
}
@ -1906,7 +1906,7 @@ u32 interact_cap(struct MarioState *m, UNUSED u32 interactType, struct Object *o
}
play_sound(SOUND_MENU_STAR_SOUND, m->marioObj->header.gfx.cameraToObject);
play_sound(get_character_sound(m)->soundHereWeGo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HERE_WE_GO);
if (capMusic != 0) {
play_cap_music(capMusic);
@ -2122,7 +2122,7 @@ void check_death_barrier(struct MarioState *m) {
return;
}
if (level_trigger_warp(m, WARP_OP_WARP_FLOOR) == 20 && !(m->flags & MARIO_UNKNOWN_18)) {
play_sound(get_character_sound(m)->soundWaaaooow, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_WAAAOOOW);
}
}
}

View file

@ -266,12 +266,10 @@ void play_mario_jump_sound(struct MarioState *m) {
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
#ifndef VERSION_JP
if (m->action == ACT_TRIPLE_JUMP) {
play_sound((get_character_sound(m)->soundYahooWahaYippee) + ((gAudioRandom % 5) << 16),
m->marioObj->header.gfx.cameraToObject);
play_character_sound_offset(m, CHAR_SOUND_YAHOO_WAHA_YIPPEE, ((gAudioRandom % 5) << 16));
} else {
#endif
play_sound((get_character_sound(m)->soundYahWahHoo) + ((gAudioRandom % 3) << 16),
m->marioObj->header.gfx.cameraToObject);
play_character_sound_offset(m, CHAR_SOUND_YAH_WAH_HOO, ((gAudioRandom % 3) << 16));
#ifndef VERSION_JP
}
#endif
@ -306,6 +304,11 @@ void play_sound_and_spawn_particles(struct MarioState *m, u32 soundBits, u32 wav
}
}
if (soundBits == CHAR_SOUND_PUNCH_HOO) {
play_character_sound(m, CHAR_SOUND_PUNCH_HOO);
return;
}
if ((m->flags & MARIO_METAL_CAP) || soundBits == SOUND_ACTION_UNSTUCK_FROM_GROUND
|| soundBits == SOUND_MARIO_PUNCH_HOO || soundBits == SOUND_LUIGI_PUNCH_HOO) {
play_sound(soundBits, m->marioObj->header.gfx.cameraToObject);
@ -377,7 +380,7 @@ void play_mario_sound(struct MarioState *m, s32 actionSound, s32 marioSound) {
}
if (marioSound != -1) {
play_sound_if_no_flag(m, marioSound, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, marioSound, MARIO_MARIO_SOUND_PLAYED);
}
}
@ -1924,10 +1927,10 @@ s32 execute_mario_action(UNUSED struct Object *o) {
// HACK: mute snoring even when we skip the waking up action
if (gMarioState->isSnoring && gMarioState->action != ACT_SLEEPING) {
func_803205E8(get_character_sound(gMarioState)->soundSnoring1, gMarioState->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character_sound(gMarioState)->soundSnoring2, gMarioState->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character(gMarioState)->soundSnoring1, gMarioState->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character(gMarioState)->soundSnoring2, gMarioState->marioObj->header.gfx.cameraToObject);
#ifndef VERSION_JP
func_803205E8(get_character_sound(gMarioState)->soundSnoring3, gMarioState->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character(gMarioState)->soundSnoring3, gMarioState->marioObj->header.gfx.cameraToObject);
#endif
gMarioState->isSnoring = FALSE;
}

View file

@ -34,7 +34,7 @@ void play_far_fall_sound(struct MarioState *m) {
if (!(action & ACT_FLAG_INVULNERABLE) && action != ACT_TWIRLING && action != ACT_FLYING
&& !(m->flags & MARIO_UNKNOWN_18)) {
if (m->peakHeight - m->pos[1] > 1150.0f) {
play_sound(get_character_sound(m)->soundWaaaooow, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_WAAAOOOW);
m->flags |= MARIO_UNKNOWN_18;
}
}
@ -43,9 +43,9 @@ void play_far_fall_sound(struct MarioState *m) {
#ifndef VERSION_JP
void play_knockback_sound(struct MarioState *m) {
if (m->actionArg == 0 && (m->forwardVel <= -28.0f || m->forwardVel >= 28.0f)) {
play_sound_if_no_flag(m, get_character_sound(m)->soundDoh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DOH, MARIO_MARIO_SOUND_PLAYED);
} else {
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
}
}
#endif
@ -61,7 +61,7 @@ s32 lava_boost_on_wall(struct MarioState *m) {
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;
}
play_sound(get_character_sound(m)->soundOnFire, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ON_FIRE);
update_mario_sound_and_camera(m);
return drop_and_set_mario_action(m, ACT_LAVA_BOOST, 1);
}
@ -90,7 +90,7 @@ s32 check_fall_damage(struct MarioState *m, u32 hardFallAction) {
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 16 : 24;
queue_rumble_data_mario(m, 5, 80);
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); }
play_sound(get_character_sound(m)->soundAttacked, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ATTACKED);
return drop_and_set_mario_action(m, hardFallAction, 4);
} else if (fallHeight > damageHeight && !mario_floor_is_slippery(m)) {
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 8 : 12;
@ -98,7 +98,7 @@ s32 check_fall_damage(struct MarioState *m, u32 hardFallAction) {
queue_rumble_data_mario(m, 5, 80);
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); }
play_sound(get_character_sound(m)->soundAttacked, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ATTACKED);
}
}
}
@ -132,9 +132,9 @@ s32 should_get_stuck_in_ground(struct MarioState *m) {
s32 check_fall_damage_or_get_stuck(struct MarioState *m, u32 hardFallAction) {
if (should_get_stuck_in_ground(m)) {
#ifdef VERSION_JP
play_sound(get_character_sound(m)->soundOoof, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF);
#else
play_sound(get_character_sound(m)->soundOoof2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF2);
#endif
m->particleFlags |= PARTICLE_MIST_CIRCLE;
drop_and_set_mario_action(m, ACT_FEET_STUCK_IN_GROUND, 0);
@ -473,7 +473,7 @@ s32 act_double_jump(struct MarioState *m) {
return set_mario_action(m, ACT_GROUND_POUND, 0);
}
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, get_character_sound(m)->soundHoohoo);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, CHAR_SOUND_HOOHOO);
common_air_action_step(m, ACT_DOUBLE_JUMP_LAND, animation,
AIR_STEP_CHECK_LEDGE_GRAB | AIR_STEP_CHECK_HANG);
return FALSE;
@ -495,7 +495,7 @@ s32 act_triple_jump(struct MarioState *m) {
#ifndef VERSION_JP
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);
#else
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, get_character_sound(m)->soundYahoo);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, CHAR_SOUND_YAHOO);
#endif
common_air_action_step(m, ACT_TRIPLE_JUMP_LAND, MARIO_ANIM_TRIPLE_JUMP, 0);
@ -511,7 +511,7 @@ s32 act_backflip(struct MarioState *m) {
return set_mario_action(m, ACT_GROUND_POUND, 0);
}
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, get_character_sound(m)->soundYahWahHoo);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, CHAR_SOUND_YAH_WAH_HOO);
common_air_action_step(m, ACT_BACKFLIP_LAND, MARIO_ANIM_BACKFLIP, 0);
if (m->action == ACT_BACKFLIP_LAND) {
@ -636,10 +636,10 @@ s32 act_long_jump(struct MarioState *m) {
animation = MARIO_ANIM_SLOW_LONGJUMP;
}
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, get_character_sound(m)->soundYahoo);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, CHAR_SOUND_YAHOO);
if (m->floor->type == SURFACE_VERTICAL_WIND && m->actionState == 0) {
play_sound(get_character_sound(m)->soundHereWeGo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HERE_WE_GO);
m->actionState = 1;
}
@ -719,7 +719,7 @@ s32 act_twirling(struct MarioState *m) {
s32 act_dive(struct MarioState *m) {
if (m->actionArg == 0) {
play_mario_sound(m, SOUND_ACTION_THROW, get_character_sound(m)->soundHoohoo);
play_mario_sound(m, SOUND_ACTION_THROW, CHAR_SOUND_HOOHOO);
} else {
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);
}
@ -752,9 +752,9 @@ s32 act_dive(struct MarioState *m) {
if (should_get_stuck_in_ground(m) && m->faceAngle[0] == -0x2AAA) {
queue_rumble_data_mario(m, 5, 80);
#ifdef VERSION_JP
play_sound(get_character_sound(m)->soundOoof, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF);
#else
play_sound(get_character_sound(m)->soundOoof2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF2);
#endif
m->particleFlags |= PARTICLE_MIST_CIRCLE;
drop_and_set_mario_action(m, ACT_HEAD_STUCK_IN_GROUND, 0);
@ -793,7 +793,7 @@ s32 act_air_throw(struct MarioState *m) {
mario_throw_held_object(m);
}
play_sound_if_no_flag(m, get_character_sound(m)->soundWah2, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAH2, MARIO_MARIO_SOUND_PLAYED);
set_mario_animation(m, MARIO_ANIM_THROW_LIGHT_OBJECT);
update_air_without_turn(m);
@ -937,7 +937,7 @@ s32 act_ground_pound(struct MarioState *m) {
m->actionTimer++;
if (m->actionTimer >= m->marioObj->header.gfx.unk38.curAnim->unk08 + 4) {
play_sound(get_character_sound(m)->soundGroundPoundWah, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_GROUND_POUND_WAH);
m->actionState = 1;
}
} else {
@ -948,9 +948,9 @@ s32 act_ground_pound(struct MarioState *m) {
if (should_get_stuck_in_ground(m)) {
queue_rumble_data_mario(m, 5, 80);
#ifdef VERSION_JP
play_sound(get_character_sound(m)->soundOoof, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF);
#else
play_sound(get_character_sound(m)->soundOoof2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF2);
#endif
m->particleFlags |= PARTICLE_MIST_CIRCLE;
set_mario_action(m, ACT_BUTT_STUCK_IN_GROUND, 0);
@ -1162,7 +1162,7 @@ s32 act_backward_air_kb(struct MarioState *m) {
#ifndef VERSION_JP
play_knockback_sound(m);
#else
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
#endif
common_air_knockback_step(m, ACT_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, -16.0f);
return FALSE;
@ -1176,7 +1176,7 @@ s32 act_forward_air_kb(struct MarioState *m) {
#ifndef VERSION_JP
play_knockback_sound(m);
#else
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
#endif
common_air_knockback_step(m, ACT_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);
return FALSE;
@ -1186,7 +1186,7 @@ s32 act_hard_backward_air_kb(struct MarioState *m) {
#ifndef VERSION_JP
play_knockback_sound(m);
#else
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
#endif
common_air_knockback_step(m, ACT_HARD_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002,
-16.0f);
@ -1197,7 +1197,7 @@ s32 act_hard_forward_air_kb(struct MarioState *m) {
#ifndef VERSION_JP
play_knockback_sound(m);
#else
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
#endif
common_air_knockback_step(m, ACT_HARD_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);
return FALSE;
@ -1211,7 +1211,7 @@ s32 act_thrown_backward(struct MarioState *m) {
landAction = ACT_BACKWARD_GROUND_KB;
}
play_sound_if_no_flag(m, get_character_sound(m)->soundWaaaooow, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
common_air_knockback_step(m, landAction, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, m->forwardVel);
@ -1229,7 +1229,7 @@ s32 act_thrown_forward(struct MarioState *m) {
landAction = ACT_FORWARD_GROUND_KB;
}
play_sound_if_no_flag(m, get_character_sound(m)->soundWaaaooow, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
if (common_air_knockback_step(m, landAction, ACT_HARD_FORWARD_GROUND_KB, 0x002D, m->forwardVel)
== AIR_STEP_NONE) {
@ -1253,7 +1253,7 @@ s32 act_soft_bonk(struct MarioState *m) {
#ifndef VERSION_JP
play_knockback_sound(m);
#else
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
#endif
common_air_knockback_step(m, ACT_FREEFALL_LAND, ACT_HARD_BACKWARD_GROUND_KB, 0x0056, m->forwardVel);
@ -1283,7 +1283,7 @@ s32 act_getting_blown(struct MarioState *m) {
mario_set_forward_vel(m, m->forwardVel);
#ifdef VERSION_JP
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
#endif
set_mario_animation(m, MARIO_ANIM_BACKWARD_AIR_KB);
@ -1512,10 +1512,10 @@ s32 act_hold_butt_slide_air(struct MarioState *m) {
s32 act_lava_boost(struct MarioState *m) {
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
play_sound_if_no_flag(m, get_character_sound(m)->soundOnFire, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);
queue_rumble_data_mario(m, 5, 80);
}
play_sound_if_no_flag(m, get_character_sound(m)->soundOnFire, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);
if (!(m->input & INPUT_NONZERO_ANALOG)) {
m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f);
@ -1531,7 +1531,7 @@ s32 act_lava_boost(struct MarioState *m) {
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;
}
m->vel[1] = 84.0f;
play_sound(get_character_sound(m)->soundOnFire, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_ON_FIRE);
queue_rumble_data_mario(m, 5, 80);
} else {
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
@ -1581,7 +1581,7 @@ s32 act_lava_boost(struct MarioState *m) {
s32 act_slide_kick(struct MarioState *m) {
if (m->actionTimer == 0) {
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, get_character_sound(m)->soundHoohoo);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, CHAR_SOUND_HOOHOO);
set_mario_animation(m, MARIO_ANIM_SLIDE_KICK);
}
@ -1634,7 +1634,7 @@ s32 act_jump_kick(struct MarioState *m) {
s32 animFrame;
if (m->actionState == 0) {
play_sound_if_no_flag(m, get_character_sound(m)->soundPunchHoo, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_PUNCH_HOO, MARIO_ACTION_SOUND_PLAYED);
m->marioObj->header.gfx.unk38.animID = -1;
set_mario_animation(m, MARIO_ANIM_AIR_KICK);
m->actionState = 1;
@ -1675,7 +1675,7 @@ s32 act_shot_from_cannon(struct MarioState *m) {
mario_set_forward_vel(m, m->forwardVel);
play_sound_if_no_flag(m, get_character_sound(m)->soundYahoo, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_YAHOO, MARIO_MARIO_SOUND_PLAYED);
switch (perform_air_step(m, 0)) {
case AIR_STEP_NONE:
@ -1924,8 +1924,7 @@ s32 act_flying(struct MarioState *m) {
if (startPitch <= 0 && m->faceAngle[0] > 0 && m->forwardVel >= 48.0f) {
play_sound(SOUND_ACTION_FLYING_FAST, m->marioObj->header.gfx.cameraToObject);
#ifndef VERSION_JP
play_sound((get_character_sound(m)->soundYahooWahaYippee) + ((gAudioRandom % 5) << 16),
m->marioObj->header.gfx.cameraToObject);
play_character_sound_offset(m, CHAR_SOUND_YAHOO_WAHA_YIPPEE, ((gAudioRandom % 5) << 16));
#endif
queue_rumble_data_mario(m, 50, 40);
}
@ -1948,7 +1947,7 @@ s32 act_riding_hoot(struct MarioState *m) {
m->usedObj->oInteractStatus = 0;
m->usedObj->oHootMarioReleaseTime = gGlobalTimer;
play_sound_if_no_flag(m, get_character_sound(m)->soundUh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH, MARIO_MARIO_SOUND_PLAYED);
queue_rumble_data_mario(m, 4, 40);
return set_mario_action(m, ACT_FREEFALL, 0);
}
@ -2005,7 +2004,7 @@ s32 act_flying_triple_jump(struct MarioState *m) {
}
#endif
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, get_character_sound(m)->soundYahoo);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, CHAR_SOUND_YAHOO);
if (m->actionState == 0) {
set_mario_animation(m, MARIO_ANIM_TRIPLE_JUMP_FLY);
@ -2083,7 +2082,7 @@ s32 act_vertical_wind(struct MarioState *m) {
s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];
f32 intendedMag = m->intendedMag / 32.0f;
play_sound_if_no_flag(m, get_character_sound(m)->soundHereWeGo, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_HERE_WE_GO, MARIO_MARIO_SOUND_PLAYED);
if (m->actionState == 0) {
set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING_FLIP);
if (m->marioObj->header.gfx.unk38.animFrame == 1) {
@ -2124,7 +2123,7 @@ s32 act_special_triple_jump(struct MarioState *m) {
return set_mario_action(m, ACT_GROUND_POUND, 0);
}
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, get_character_sound(m)->soundYahoo);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, CHAR_SOUND_YAHOO);
update_air_without_turn(m);

View file

@ -236,7 +236,7 @@ s32 act_climbing_pole(struct MarioState *m) {
s32 act_grab_pole_slow(struct MarioState *m) {
if (m->usedObj == NULL) { m->usedObj = cur_obj_find_nearest_pole(); }
play_sound_if_no_flag(m, get_character_sound(m)->soundWhoa, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WHOA, MARIO_MARIO_SOUND_PLAYED);
if (set_pole_position(m, 0.0f) == POLE_NONE) {
set_mario_animation(m, MARIO_ANIM_GRAB_POLE_SHORT);
@ -253,7 +253,7 @@ s32 act_grab_pole_fast(struct MarioState *m) {
struct Object *marioObj = m->marioObj;
if (m->usedObj == NULL) { m->usedObj = cur_obj_find_nearest_pole(); }
play_sound_if_no_flag(m, get_character_sound(m)->soundWhoa, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WHOA, MARIO_MARIO_SOUND_PLAYED);
m->faceAngle[1] += marioObj->oMarioPoleYawVel;
marioObj->oMarioPoleYawVel = marioObj->oMarioPoleYawVel * 8 / 10;
@ -598,7 +598,7 @@ s32 act_ledge_grab(struct MarioState *m) {
}
if (m->actionArg == 0) {
play_sound_if_no_flag(m, get_character_sound(m)->soundWhoa, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WHOA, MARIO_MARIO_SOUND_PLAYED);
}
stop_and_set_height_to_floor(m);
@ -620,7 +620,7 @@ s32 act_ledge_climb_slow(struct MarioState *m) {
}
if (m->actionTimer == 10) {
play_sound_if_no_flag(m, get_character_sound(m)->soundEeuh, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_EEUH, MARIO_MARIO_SOUND_PLAYED);
}
update_ledge_climb(m, MARIO_ANIM_SLOW_LEDGE_GRAB, ACT_IDLE);
@ -638,7 +638,7 @@ s32 act_ledge_climb_down(struct MarioState *m) {
return let_go_of_ledge(m);
}
play_sound_if_no_flag(m, get_character_sound(m)->soundWhoa, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WHOA, MARIO_MARIO_SOUND_PLAYED);
update_ledge_climb(m, MARIO_ANIM_CLIMB_DOWN_LEDGE, ACT_LEDGE_GRAB);
m->actionArg = 1;
@ -651,7 +651,7 @@ s32 act_ledge_climb_fast(struct MarioState *m) {
return let_go_of_ledge(m);
}
play_sound_if_no_flag(m, get_character_sound(m)->soundUh2, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH2, MARIO_MARIO_SOUND_PLAYED);
update_ledge_climb(m, MARIO_ANIM_FAST_LEDGE_GRAB, ACT_IDLE);

View file

@ -675,7 +675,7 @@ void general_star_dance_handler(struct MarioState *m, s32 isInWater) {
break;
case 42:
play_sound(get_character_sound(m)->soundHereWeGo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HERE_WE_GO);
break;
case 80:
@ -770,7 +770,7 @@ s32 act_standing_death(struct MarioState *m) {
return set_mario_action(m, ACT_SUFFOCATION, 0);
}
play_sound_if_no_flag(m, get_character_sound(m)->soundDying, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DYING, MARIO_ACTION_SOUND_PLAYED);
common_death_handler(m, MARIO_ANIM_DYING_FALL_OVER, 80);
if (m->marioObj->header.gfx.unk38.animFrame == 77) {
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
@ -779,19 +779,19 @@ s32 act_standing_death(struct MarioState *m) {
}
s32 act_electrocution(struct MarioState *m) {
play_sound_if_no_flag(m, get_character_sound(m)->soundDying, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DYING, MARIO_ACTION_SOUND_PLAYED);
common_death_handler(m, MARIO_ANIM_ELECTROCUTION, 43);
return FALSE;
}
s32 act_suffocation(struct MarioState *m) {
play_sound_if_no_flag(m, get_character_sound(m)->soundDying, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DYING, MARIO_ACTION_SOUND_PLAYED);
common_death_handler(m, MARIO_ANIM_SUFFOCATING, 86);
return FALSE;
}
s32 act_death_on_back(struct MarioState *m) {
play_sound_if_no_flag(m, get_character_sound(m)->soundDying, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DYING, MARIO_ACTION_SOUND_PLAYED);
if (common_death_handler(m, MARIO_ANIM_DYING_ON_BACK, 54) == 40) {
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
}
@ -799,7 +799,7 @@ s32 act_death_on_back(struct MarioState *m) {
}
s32 act_death_on_stomach(struct MarioState *m) {
play_sound_if_no_flag(m, get_character_sound(m)->soundDying, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DYING, MARIO_ACTION_SOUND_PLAYED);
if (common_death_handler(m, MARIO_ANIM_DYING_ON_STOMACH, 37) == 37) {
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
}
@ -814,7 +814,7 @@ s32 act_quicksand_death(struct MarioState *m) {
}
if (m->actionState == 1) {
if (m->quicksandDepth >= 100.0f) {
play_sound_if_no_flag(m, get_character_sound(m)->soundWaaaooow, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
}
if ((m->quicksandDepth += 5.0f) >= 180.0f) {
//level_trigger_warp(m, WARP_OP_DEATH);
@ -828,7 +828,7 @@ s32 act_quicksand_death(struct MarioState *m) {
}
s32 act_eaten_by_bubba(struct MarioState *m) {
play_sound_if_no_flag(m, get_character_sound(m)->soundDying, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DYING, MARIO_ACTION_SOUND_PLAYED);
set_mario_animation(m, MARIO_ANIM_A_POSE);
//m->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;
if (m != &gMarioStates[0]) {
@ -1093,7 +1093,7 @@ s32 act_emerge_from_pipe(struct MarioState *m) {
marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;
play_sound_if_no_flag(m, get_character_sound(m)->soundYahoo, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_YAHOO, MARIO_MARIO_SOUND_PLAYED);
if (gCurrLevelNum == LEVEL_THI) {
if (gCurrAreaIndex == 2) {
@ -1280,9 +1280,9 @@ s32 act_death_exit(struct MarioState *m) {
if (15 < m->actionTimer++
&& launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, -32.0f)) {
#ifdef VERSION_JP
play_sound(get_character_sound(m)->soundOoof, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF);
#else
play_sound(get_character_sound(m)->soundOoof2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF2);
#endif
queue_rumble_data_mario(m, 5, 80);
//m->numLives--;
@ -1297,9 +1297,9 @@ s32 act_death_exit(struct MarioState *m) {
s32 act_unused_death_exit(struct MarioState *m) {
if (launch_mario_until_land(m, ACT_FREEFALL_LAND_STOP, MARIO_ANIM_GENERAL_FALL, 0.0f)) {
#ifdef VERSION_JP
play_sound(get_character_sound(m)->soundOoof, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF);
#else
play_sound(get_character_sound(m)->soundOoof2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF2);
#endif
//m->numLives--;
// restore 7.75 units of health
@ -1313,9 +1313,9 @@ s32 act_unused_death_exit(struct MarioState *m) {
s32 act_falling_death_exit(struct MarioState *m) {
if (launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, 0.0f)) {
#ifdef VERSION_JP
play_sound(get_character_sound(m)->soundOoof, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF);
#else
play_sound(get_character_sound(m)->soundOoof2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_OOOF2);
#endif
queue_rumble_data_mario(m, 5, 80);
//m->numLives--;
@ -1331,7 +1331,7 @@ s32 act_falling_death_exit(struct MarioState *m) {
s32 act_special_exit_airborne(struct MarioState *m) {
struct Object *marioObj = m->marioObj;
play_sound_if_no_flag(m, get_character_sound(m)->soundYahoo, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_YAHOO, MARIO_MARIO_SOUND_PLAYED);
if (m->actionTimer++ < 11) {
marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;
@ -1581,7 +1581,7 @@ s32 act_teleport_fade_in(struct MarioState *m) {
}
s32 act_shocked(struct MarioState *m) {
play_sound_if_no_flag(m, get_character_sound(m)->soundWaaaooow, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_SHOCK); }
@ -1643,7 +1643,7 @@ s32 act_squished(struct MarioState *m) {
if (!(m->flags & MARIO_METAL_CAP) && m->invincTimer == 0) {
// cap on: 3 units; cap off: 4.5 units
m->hurtCounter += m->flags & MARIO_CAP_ON_HEAD ? 12 : 18;
play_sound_if_no_flag(m, get_character_sound(m)->soundAttacked, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_ATTACKED, MARIO_MARIO_SOUND_PLAYED);
}
// Both of the 1.8's are really floats, but one of them has to
@ -1888,9 +1888,9 @@ static void intro_cutscene_jump_out_of_pipe(struct MarioState *m) {
#ifdef VERSION_EU
// For some reason these calls were swapped.
play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);
play_sound_if_no_flag(m, get_character_sound(m)->soundYahoo, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_YAHOO, MARIO_MARIO_SOUND_PLAYED);
#else
play_sound_if_no_flag(m, get_character_sound(m)->soundYahoo, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_YAHOO, MARIO_MARIO_SOUND_PLAYED);
#ifndef VERSION_JP
play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);
#endif
@ -1902,7 +1902,7 @@ static void intro_cutscene_jump_out_of_pipe(struct MarioState *m) {
sound_banks_enable(2, 0x0330);
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
#ifndef VERSION_JP
play_sound(get_character_sound(m)->soundHaha, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HAHA);
#endif
advance_cutscene_step(m);
}
@ -2050,16 +2050,15 @@ static s32 jumbo_star_cutscene_taking_off(struct MarioState *m) {
switch (animFrame) {
case 3:
play_sound((get_character_sound(m)->soundYahWahHoo) + (gAudioRandom % 3 << 16),
m->marioObj->header.gfx.cameraToObject);
play_character_sound_offset(m, CHAR_SOUND_YAH_WAH_HOO, (gAudioRandom % 3 << 16));
break;
case 28:
play_sound(get_character_sound(m)->soundHoohoo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HOOHOO);
break;
case 60:
play_sound(get_character_sound(m)->soundYahoo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_YAHOO);
break;
}
m->particleFlags |= PARTICLE_SPARKLES;

View file

@ -1387,7 +1387,7 @@ void common_slide_action(struct MarioState *m, u32 endAction, u32 airAction, s32
case GROUND_STEP_LEFT_GROUND:
set_mario_action(m, airAction, 0);
if (m->forwardVel < -50.0f || 50.0f < m->forwardVel) {
play_sound(get_character_sound(m)->soundHoohoo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HOOHOO);
}
break;
@ -1607,12 +1607,12 @@ s32 common_ground_knockback_action(struct MarioState *m, s32 animation, s32 arg2
}
if (arg4 > 0) {
play_sound_if_no_flag(m, get_character_sound(m)->soundAttacked, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_ATTACKED, MARIO_MARIO_SOUND_PLAYED);
} else {
#ifdef VERSION_JP
play_sound_if_no_flag(m, get_character_sound(m)->soundOoof, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_OOOF, MARIO_MARIO_SOUND_PLAYED);
#else
play_sound_if_no_flag(m, get_character_sound(m)->soundOoof2, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_OOOF2, MARIO_MARIO_SOUND_PLAYED);
#endif
}
@ -1663,7 +1663,7 @@ s32 act_hard_backward_ground_kb(struct MarioState *m) {
#ifndef VERSION_JP
if (val04 == 0x36 && m->prevAction == ACT_SPECIAL_DEATH_EXIT) {
play_sound(get_character_sound(m)->soundMamaMia, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_MAMA_MIA);
}
#endif
@ -1720,7 +1720,7 @@ s32 act_death_exit_land(struct MarioState *m) {
val04 = set_mario_animation(m, MARIO_ANIM_FALL_OVER_BACKWARDS);
if (val04 == 0x36) {
play_sound(get_character_sound(m)->soundMamaMia, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_MAMA_MIA);
}
if (val04 == 0x44) {
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
@ -1875,7 +1875,7 @@ s32 act_long_jump_land(struct MarioState *m) {
}
if (!(m->input & INPUT_NONZERO_ANALOG)) {
play_sound_if_no_flag(m, get_character_sound(m)->soundUh2_2, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_UH2_2, MARIO_MARIO_SOUND_PLAYED);
}
common_landing_action(m,
@ -1901,7 +1901,7 @@ s32 act_triple_jump_land(struct MarioState *m) {
}
if (!(m->input & INPUT_NONZERO_ANALOG)) {
play_sound_if_no_flag(m, get_character_sound(m)->soundHaha, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_HAHA, MARIO_MARIO_SOUND_PLAYED);
}
common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);
@ -1918,7 +1918,7 @@ s32 act_backflip_land(struct MarioState *m) {
}
if (!(m->input & INPUT_NONZERO_ANALOG)) {
play_sound_if_no_flag(m, get_character_sound(m)->soundHaha, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_HAHA, MARIO_MARIO_SOUND_PLAYED);
}
common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);

View file

@ -41,7 +41,7 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
switch (m->actionArg) {
case 0:
play_sound(get_character_sound(m)->soundPunchYah, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_PUNCH_YAH);
// Fall-through:
case 1:
set_mario_animation(m, MARIO_ANIM_FIRST_PUNCH);
@ -81,7 +81,7 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
break;
case 3:
play_sound(get_character_sound(m)->soundPunchYah, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_PUNCH_YAH);
// Fall-through:
case 4:
set_mario_animation(m, MARIO_ANIM_SECOND_PUNCH);
@ -116,7 +116,7 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
break;
case 6:
play_mario_action_sound(m, get_character_sound(m)->soundPunchHoo, 1);
play_mario_action_sound(m, CHAR_SOUND_PUNCH_HOO, 1);
animFrame = set_mario_animation(m, MARIO_ANIM_GROUND_KICK);
if (animFrame == 0) {
m->marioBodyState->punchState = (2 << 6) | 6;
@ -132,7 +132,7 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
break;
case 9:
play_mario_action_sound(m, get_character_sound(m)->soundPunchHoo, 1);
play_mario_action_sound(m, CHAR_SOUND_PUNCH_HOO, 1);
set_mario_animation(m, MARIO_ANIM_BREAKDANCE);
animFrame = m->marioObj->header.gfx.unk38.animFrame;
@ -192,7 +192,7 @@ s32 act_picking_up(struct MarioState *m) {
// slot (cloning via fake object).
mario_grab_used_object(m);
if (m->heldObj != NULL) {
play_sound_if_no_flag(m, get_character_sound(m)->soundHrmm, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_HRMM, MARIO_MARIO_SOUND_PLAYED);
m->actionState = 1;
} else {
set_mario_action(m, ACT_IDLE, 0);
@ -272,7 +272,7 @@ s32 act_throwing(struct MarioState *m) {
if (++m->actionTimer == 7) {
mario_throw_held_object(m);
play_sound_if_no_flag(m, get_character_sound(m)->soundWah2, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAH2, MARIO_MARIO_SOUND_PLAYED);
play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);
queue_rumble_data_mario(m, 3, 50);
}
@ -292,7 +292,7 @@ s32 act_heavy_throw(struct MarioState *m) {
if (++m->actionTimer == 13) {
mario_drop_held_object(m);
play_sound_if_no_flag(m, get_character_sound(m)->soundWah2, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAH2, MARIO_MARIO_SOUND_PLAYED);
play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);
queue_rumble_data_mario(m, 3, 50);
}
@ -329,7 +329,7 @@ s32 act_picking_up_bowser(struct MarioState *m) {
mario_grab_used_object(m);
if (m->heldObj != NULL) {
queue_rumble_data_mario(m, 5, 80);
play_sound(get_character_sound(m)->soundHrmm, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HRMM);
if (m->playerIndex == 0) {
network_send_object(m->heldObj);
} else {
@ -358,7 +358,7 @@ s32 act_holding_bowser(struct MarioState *m) {
mario_grab_used_object(m);
if (m->heldObj != NULL) {
queue_rumble_data_mario(m, 5, 80);
play_sound(get_character_sound(m)->soundHrmm, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HRMM);
} else {
set_mario_action(m, ACT_IDLE, 0);
return FALSE;
@ -371,12 +371,12 @@ s32 act_holding_bowser(struct MarioState *m) {
if (m->playerIndex == 0 && m->input & INPUT_B_PRESSED) {
#ifndef VERSION_JP
if (m->angleVel[1] <= -0xE00 || m->angleVel[1] >= 0xE00) {
play_sound(get_character_sound(m)->soundSoLongaBowser, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_SO_LONGA_BOWSER);
} else {
play_sound(get_character_sound(m)->soundHereWeGo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HERE_WE_GO);
}
#else
play_sound(get_character_sound(m)->soundHereWeGo, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HERE_WE_GO);
#endif
return set_mario_action(m, ACT_RELEASING_BOWSER, 0);
}

View file

@ -245,18 +245,18 @@ s32 act_start_sleeping(struct MarioState *m) {
#ifndef VERSION_JP
if (m->actionState == 2) {
if (sp24 == -1) {
play_sound(get_character_sound(m)->soundYawning, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_YAWNING);
}
}
if (m->actionState == 1) {
if (sp24 == -1) {
play_sound(get_character_sound(m)->soundImaTired, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_IMA_TIRED);
}
}
#else
if (m->actionState == 2) {
play_sound_if_no_flag(m, get_character_sound(m)->soundYawning, MARIO_MARIO_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_YAWNING, MARIO_MARIO_SOUND_PLAYED);
}
#endif
@ -291,12 +291,12 @@ s32 act_sleeping(struct MarioState *m) {
}
if (sp24 == 2) {
play_sound(get_character_sound(m)->soundSnoring1, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_SNORING1);
m->isSnoring = TRUE;
}
if (sp24 == 20) {
play_sound(get_character_sound(m)->soundSnoring2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_SNORING2);
m->isSnoring = TRUE;
}
@ -321,16 +321,16 @@ s32 act_sleeping(struct MarioState *m) {
case 2: {
sp24 = set_mario_animation(m, MARIO_ANIM_SLEEP_LYING);
#ifndef VERSION_JP
play_sound_if_no_flag(m, get_character_sound(m)->soundSnoring3, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_SNORING3, MARIO_MARIO_SOUND_PLAYED);
m->isSnoring = TRUE;
#else
if (sp24 == 2) {
play_sound(get_character_sound(m)->soundSnoring2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_SNORING2);
m->isSnoring = TRUE;
}
if (sp24 == 25) {
play_sound(get_character_sound(m)->soundSnoring1, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_SNORING1);
m->isSnoring = TRUE;
}
#endif
@ -342,10 +342,10 @@ s32 act_sleeping(struct MarioState *m) {
s32 act_waking_up(struct MarioState *m) {
if (!m->actionTimer) {
func_803205E8(get_character_sound(m)->soundSnoring1, m->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character_sound(m)->soundSnoring2, m->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character(m)->soundSnoring1, m->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character(m)->soundSnoring2, m->marioObj->header.gfx.cameraToObject);
#ifndef VERSION_JP
func_803205E8(get_character_sound(m)->soundSnoring3, m->marioObj->header.gfx.cameraToObject);
func_803205E8(get_character(m)->soundSnoring3, m->marioObj->header.gfx.cameraToObject);
#endif
if (m->playerIndex == 0) {
raise_background_noise(2);
@ -402,7 +402,7 @@ s32 act_shivering(struct MarioState *m) {
sp24 = set_mario_animation(m, MARIO_ANIM_SHIVERING_WARMING_HAND);
if (sp24 == 0x31) {
m->particleFlags |= PARTICLE_BREATH;
play_sound(get_character_sound(m)->soundPantingCold, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_PANTING_COLD);
}
if (sp24 == 7 || sp24 == 0x51) {
play_sound(SOUND_ACTION_CLAP_HANDS_COLD, m->marioObj->header.gfx.cameraToObject);
@ -440,15 +440,15 @@ s32 act_coughing(struct MarioState *m) {
stationary_ground_step(m);
sp1C = set_mario_animation(m, MARIO_ANIM_COUGHING);
if (sp1C == 0x19 || sp1C == 0x23) {
play_sound(get_character_sound(m)->soundCoughing3, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_COUGHING3);
}
if (sp1C == 0x32 || sp1C == 0x3A) {
play_sound(get_character_sound(m)->soundCoughing2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_COUGHING2);
}
if (sp1C == 0x47 || sp1C == 0x50) {
play_sound(get_character_sound(m)->soundCoughing1, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_COUGHING1);
}
return 0;
@ -595,8 +595,7 @@ s32 act_panting(struct MarioState *m) {
}
if (set_mario_animation(m, MARIO_ANIM_WALK_PANTING) == 1) {
play_sound(get_character_sound(m)->soundPanting + ((gAudioRandom % 3U) << 0x10),
m->marioObj->header.gfx.cameraToObject);
play_character_sound_offset(m, CHAR_SOUND_PANTING, ((gAudioRandom % 3U) << 0x10));
}
stationary_ground_step(m);

View file

@ -890,7 +890,7 @@ static s32 act_forward_water_kb(struct MarioState *m) {
}
static s32 act_water_shocked(struct MarioState *m) {
play_sound_if_no_flag(m, get_character_sound(m)->soundWaaaooow, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_SHOCK); }
@ -930,7 +930,7 @@ static s32 act_drowning(struct MarioState *m) {
break;
}
play_sound_if_no_flag(m, get_character_sound(m)->soundDrowning, MARIO_ACTION_SOUND_PLAYED);
play_character_sound_if_no_flag(m, CHAR_SOUND_DROWNING, MARIO_ACTION_SOUND_PLAYED);
stationary_slow_down(m);
perform_water_step(m);
@ -978,7 +978,7 @@ static s32 act_water_plunge(struct MarioState *m) {
if (m->actionState == 0) {
play_sound(SOUND_ACTION_UNKNOWN430, m->marioObj->header.gfx.cameraToObject);
if (m->peakHeight - m->pos[1] > 1150.0f) {
play_sound(get_character_sound(m)->soundHaha_2, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_HAHA_2);
}
m->particleFlags |= PARTICLE_WATER_SPLASH;

View file

@ -327,7 +327,7 @@ void network_receive_player(struct Packet* p) {
if ((m->action == ACT_PUNCHING || m->action == ACT_MOVE_PUNCHING)) {
// play first punching sound, otherwise it will be missed
if (m->action != oldData.action) {
play_sound(get_character_sound(m)->soundPunchYah, m->marioObj->header.gfx.cameraToObject);
play_character_sound(m, CHAR_SOUND_PUNCH_YAH);
}
// make the first punch large, otherwise it will be missed
if (m->actionArg == 2 && oldData.actionArg == 1) {