Add Rumble support

This commit is contained in:
CrashOveride95
2020-12-08 19:28:12 -05:00
parent f9e6070f29
commit 7627c8511d
39 changed files with 167 additions and 161 deletions

View File

@@ -1,6 +1,7 @@
#include <ultra64.h>
#include "buffers.h"
#include "config.h"
ALIGNED8 u8 gDecompressionHeap[0xD000];
#if defined(VERSION_EU)
@@ -15,7 +16,7 @@ ALIGNED8 u8 gIdleThreadStack[0x800];
ALIGNED8 u8 gThread3Stack[0x2000];
ALIGNED8 u8 gThread4Stack[0x2000];
ALIGNED8 u8 gThread5Stack[0x2000];
#ifdef VERSION_SH
#if ENABLE_RUMBLE
ALIGNED8 u8 gThread6Stack[0x2000];
#endif
// 0x400 bytes

View File

@@ -5,6 +5,7 @@
#include "game/save_file.h"
#include "game/game_init.h"
#include "config.h"
extern u8 gDecompressionHeap[];
@@ -18,7 +19,7 @@ extern u8 gIdleThreadStack[];
extern u8 gThread3Stack[];
extern u8 gThread4Stack[];
extern u8 gThread5Stack[];
#ifdef VERSION_SH
#if ENABLE_RUMBLE
extern u8 gThread6Stack[];
#endif

View File

@@ -31,7 +31,7 @@ void cap_switch_act_2(void) {
cur_obj_shake_screen(SHAKE_POS_SMALL);
spawn_mist_particles();
spawn_triangle_break_particles(60, 139, 0.3f, o->oBehParams2ndByte);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
}

View File

@@ -79,7 +79,7 @@ void controllable_platform_hit_wall(s8 sp1B) {
D_80331694 = 5;
cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(50, 80);
#endif
}

View File

@@ -78,7 +78,7 @@ void exclamation_box_act_2(void) {
o->oGravity = -8.0f;
o->oFloorHeight = o->oPosY;
o->oAction = 3;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
}

View File

@@ -7,7 +7,7 @@ void bhv_1up_interact(void) {
play_sound(SOUND_GENERAL_COLLECT_1UP, gGlobalSoundSource);
gMarioState->numLives++;
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
}

View File

@@ -32,7 +32,7 @@ void bhv_purple_switch_loop(void) {
cur_obj_play_sound_2(SOUND_GENERAL2_PURPLE_SWITCH);
o->oAction = PURPLE_SWITCH_TICKING;
cur_obj_shake_screen(SHAKE_POS_SMALL);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
}

View File

@@ -22,7 +22,7 @@ void bhv_star_door_loop(void) {
case 1:
if (o->oTimer == 0 && (s16)(o->oMoveAngleYaw) >= 0) {
cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_OPEN);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(35, 30);
#endif
}
@@ -39,7 +39,7 @@ void bhv_star_door_loop(void) {
case 3:
if (o->oTimer == 0 && (s16)(o->oMoveAngleYaw) >= 0) {
cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_CLOSE);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(35, 30);
#endif
}

View File

@@ -136,7 +136,7 @@ void bhv_treasure_chest_ship_loop(void) {
gEnvironmentRegions[6] = -335;
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers_2(2);
#endif
}

View File

@@ -40,7 +40,7 @@ void water_level_pillar_undrained(void) {
(s32) approach_f32_symmetric(gEnvironmentLevels[2], -2450.0f, 5.0f);
gEnvironmentLevels[0] =
(s32) approach_f32_symmetric(gEnvironmentLevels[0], -2450.0f, 5.0f);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers_2(2);
#endif
} else

View File

@@ -49,7 +49,7 @@ void bhv_water_level_diamond_loop(void) {
cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN); // same as above
}
o->oAngleVelYaw = 0x800;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers_2(2);
#endif
}

View File

@@ -495,7 +495,7 @@ void read_controller_inputs(void) {
if (gControllerBits) {
osRecvMesg(&gSIEventMesgQueue, &D_80339BEC, OS_MESG_BLOCK);
osContGetReadData(&gControllerPads[0]);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
release_rumble_pak_control();
#endif
}
@@ -564,7 +564,7 @@ void init_controllers(void) {
// into any port in order to play the game. this was probably
// so if any of the ports didn't work, you can have controllers
// plugged into any of them and it will work.
#ifdef VERSION_SH
#if ENABLE_RUMBLE
gControllers[cont].port = port;
#endif
gControllers[cont].statusData = &gControllerStatuses[port];
@@ -599,11 +599,11 @@ void thread5_game_loop(UNUSED void *arg) {
struct LevelCommand *addr;
setup_game_memory();
#ifdef VERSION_SH
#if ENABLE_RUMBLE
init_rumble_pak_scheduler_queue();
#endif
init_controllers();
#ifdef VERSION_SH
#if ENABLE_RUMBLE
create_thread_6();
#endif
save_file_load_all();
@@ -628,7 +628,7 @@ void thread5_game_loop(UNUSED void *arg) {
// if any controllers are plugged in, start read the data for when
// read_controller_inputs is called later.
if (gControllerBits) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
block_until_rumble_pak_free();
#endif
osContStartReadData(&gSIEventMesgQueue);

View File

@@ -2770,7 +2770,7 @@ void print_hud_course_complete_coins(s16 x, s16 y) {
if (gCourseCompleteCoins == 50 || gCourseCompleteCoins == 100 || gCourseCompleteCoins == 150) {
play_sound(SOUND_GENERAL_COLLECT_1UP, gGlobalSoundSource);
gMarioState[0].numLives++;
gMarioState->numLives++;
}
}

View File

@@ -699,7 +699,7 @@ u32 take_damage_from_interact_object(struct MarioState *m) {
m->hurtCounter += 4 * damage;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
set_camera_shake_from_hit(shake);
@@ -750,7 +750,7 @@ u32 interact_coin(struct MarioState *m, UNUSED u32 interactType, struct Object *
&& m->numCoins >= 100) {
bhv_spawn_star_no_level_exit(6);
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (o->oDamageOrCoinValue >= 2) {
queue_rumble_data(5, 80);
}
@@ -773,7 +773,7 @@ u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct O
if (m->health >= 0x100) {
mario_stop_riding_and_holding(m);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
@@ -876,7 +876,7 @@ u32 interact_warp(struct MarioState *m, UNUSED u32 interactType, struct Object *
m->interactObj = o;
m->usedObj = o;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (o->collisionData == segmented_to_virtual(warp_pipe_seg3_collision_03009AC8)) {
play_sound(SOUND_MENU_ENTER_PIPE, m->marioObj->header.gfx.cameraToObject);
queue_rumble_data(15, 80);
@@ -1123,7 +1123,7 @@ u32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Obj
marioObj->oMarioWhirlpoolPosY = m->pos[1] - o->oPosY;
play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(30, 60);
#endif
return set_mario_action(m, ACT_CAUGHT_IN_WHIRLPOOL, 0);
@@ -1159,7 +1159,7 @@ u32 interact_flame(struct MarioState *m, UNUSED u32 interactType, struct Object
if (!sInvulnerable && !(m->flags & MARIO_METAL_CAP) && !(m->flags & MARIO_VANISH_CAP)
&& !(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
o->oInteractStatus = INT_STATUS_INTERACTED;
@@ -1238,7 +1238,7 @@ u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object
m->interactObj = o;
if (interaction & INT_ATTACK_NOT_FROM_BELOW) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
push_mario_out_of_object(m, o, 5.0f);
@@ -1263,7 +1263,7 @@ u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object
push_mario_out_of_object(m, o, 5.0f);
drop_and_set_mario_action(m, bully_knock_back_mario(m), 0);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
return TRUE;
@@ -1282,7 +1282,7 @@ u32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object
take_damage_from_interact_object(m);
play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(70, 60);
#endif
@@ -1331,7 +1331,7 @@ u32 interact_hit_from_below(struct MarioState *m, UNUSED u32 interactType, struc
}
if (interaction & INT_ANY_ATTACK) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
attack_object(o, interaction);
@@ -1373,7 +1373,7 @@ u32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Ob
}
if (interaction & INT_ATTACK_NOT_FROM_BELOW) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
attack_object(o, interaction);
@@ -1495,7 +1495,7 @@ u32 check_object_grab_mario(struct MarioState *m, UNUSED u32 interactType, struc
update_mario_sound_and_camera(m);
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
return set_mario_action(m, ACT_GRABBED, 0);
@@ -1546,7 +1546,7 @@ u32 interact_pole(struct MarioState *m, UNUSED u32 interactType, struct Object *
marioObj->oMarioPoleYawVel = (s32)(m->forwardVel * 0x100 + 0x1000);
#endif
reset_mario_pitch(m);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
return set_mario_action(m, ACT_GRAB_POLE_FAST, 0);
@@ -1568,7 +1568,7 @@ u32 interact_hoot(struct MarioState *m, UNUSED u32 interactType, struct Object *
m->interactObj = o;
m->usedObj = o;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
update_mario_sound_and_camera(m);

View File

@@ -689,7 +689,7 @@ void initiate_painting_warp(void) {
play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);
fadeout_music(398);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(80, 70);
func_sh_8024C89C(1);
#endif
@@ -1004,7 +1004,7 @@ s32 play_mode_normal(void) {
set_play_mode(PLAY_MODE_CHANGE_AREA);
} else if (pressed_pause()) {
lower_background_noise(1);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
cancel_rumble();
#endif
gCameraMovementFlags |= CAM_MOVE_PAUSE_SCREEN;
@@ -1217,7 +1217,7 @@ s32 init_level(void) {
set_background_music(gCurrentArea->musicParam, gCurrentArea->musicParam2, 0);
}
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (gCurrDemoInput == NULL) {
cancel_rumble();
}

View File

@@ -254,7 +254,7 @@ void handle_vblank(void) {
start_sptask(M_GFXTASK);
}
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
rumble_thread_update_vi();
#endif

View File

@@ -1,6 +1,8 @@
#ifndef MAIN_H
#define MAIN_H
#include <config.h>
struct RumbleData {
u8 unk00;
u8 unk01;
@@ -24,7 +26,7 @@ extern OSThread gIdleThread;
extern OSThread gMainThread;
extern OSThread gGameLoopThread;
extern OSThread gSoundThread;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
extern OSThread gRumblePakThread;
extern OSPfs gRumblePakPfs;
@@ -33,7 +35,7 @@ extern OSPfs gRumblePakPfs;
extern OSMesgQueue gPIMesgQueue;
extern OSMesgQueue gIntrMesgQueue;
extern OSMesgQueue gSPTaskMesgQueue;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
extern OSMesgQueue gRumblePakSchedulerMesgQueue;
extern OSMesgQueue gRumbleThreadVIMesgQueue;
#endif
@@ -46,7 +48,7 @@ extern OSIoMesg gDmaIoMesg;
extern OSMesg D_80339BEC;
extern OSMesgQueue gDmaMesgQueue;
extern OSMesgQueue gSIEventMesgQueue;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
extern OSMesg gRumblePakSchedulerMesgBuf[1];
extern OSMesg gRumbleThreadVIMesgBuf[1];

View File

@@ -1495,8 +1495,8 @@ void update_mario_health(struct MarioState *m) {
// Play a noise to alert the player when Mario is close to drowning.
if (((m->action & ACT_GROUP_MASK) == ACT_GROUP_SUBMERGED) && (m->health < 0x300)) {
play_sound(SOUND_MOVING_ALMOST_DROWNING, gGlobalSoundSource);
#ifdef VERSION_SH
if (!gRumblePakTimer) {
#if ENABLE_RUMBLE
if (gRumblePakTimer == 0) {
gRumblePakTimer = 36;
if (is_rumble_finished_and_queue_empty()) {
queue_rumble_data(3, 30);
@@ -1677,7 +1677,7 @@ static void debug_update_mario_cap(u16 button, s32 flags, u16 capTimer, u16 capM
}
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
void func_sh_8025574C(void) {
if (gMarioState->particleFlags & PARTICLE_HORIZONTAL_STAR) {
queue_rumble_data(5, 80);
@@ -1770,7 +1770,7 @@ s32 execute_mario_action(UNUSED struct Object *o) {
play_infinite_stairs_music();
gMarioState->marioObj->oInteractStatus = 0;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
func_sh_8025574C();
#endif

View File

@@ -80,7 +80,7 @@ s32 check_fall_damage(struct MarioState *m, u32 hardFallAction) {
if (m->vel[1] < -55.0f) {
if (fallHeight > 3000.0f) {
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 16 : 24;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
set_camera_shake_from_hit(SHAKE_FALL_DAMAGE);
@@ -89,7 +89,7 @@ s32 check_fall_damage(struct MarioState *m, u32 hardFallAction) {
} else if (fallHeight > damageHeight && !mario_floor_is_slippery(m)) {
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 8 : 12;
m->squishTimer = 30;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
set_camera_shake_from_hit(SHAKE_FALL_DAMAGE);
@@ -133,7 +133,7 @@ s32 check_fall_damage_or_get_stuck(struct MarioState *m, u32 hardFallAction) {
#endif
m->particleFlags |= PARTICLE_MIST_CIRCLE;
drop_and_set_mario_action(m, ACT_FEET_STUCK_IN_GROUND, 0);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
return TRUE;
@@ -385,7 +385,7 @@ u32 common_air_action_step(struct MarioState *m, u32 landAction, s32 animation,
set_mario_animation(m, animation);
if (m->forwardVel > 16.0f) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 40);
#endif
mario_bonk_reflection(m, FALSE);
@@ -493,7 +493,7 @@ s32 act_triple_jump(struct MarioState *m) {
#endif
common_air_action_step(m, ACT_TRIPLE_JUMP_LAND, MARIO_ANIM_TRIPLE_JUMP, 0);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (m->action == ACT_TRIPLE_JUMP_LAND) {
queue_rumble_data(5, 40);
}
@@ -509,7 +509,7 @@ s32 act_backflip(struct MarioState *m) {
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAH_WAH_HOO);
common_air_action_step(m, ACT_BACKFLIP_LAND, MARIO_ANIM_BACKFLIP, 0);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (m->action == ACT_BACKFLIP_LAND) {
queue_rumble_data(5, 40);
}
@@ -641,7 +641,7 @@ s32 act_long_jump(struct MarioState *m) {
}
common_air_action_step(m, ACT_LONG_JUMP_LAND, animation, AIR_STEP_CHECK_LEDGE_GRAB);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (m->action == ACT_LONG_JUMP_LAND) {
queue_rumble_data(5, 40);
}
@@ -712,7 +712,7 @@ s32 act_twirling(struct MarioState *m) {
}
m->marioObj->header.gfx.angle[1] += m->twirlYaw;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers();
#endif
return FALSE;
@@ -749,7 +749,7 @@ s32 act_dive(struct MarioState *m) {
case AIR_STEP_LANDED:
if (should_get_stuck_in_ground(m) && m->faceAngle[0] == -0x2AAA) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
#ifdef VERSION_JP
@@ -947,7 +947,7 @@ s32 act_ground_pound(struct MarioState *m) {
stepResult = perform_air_step(m, 0);
if (stepResult == AIR_STEP_LANDED) {
if (should_get_stuck_in_ground(m)) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
#ifdef VERSION_JP
@@ -998,7 +998,7 @@ s32 act_burning_jump(struct MarioState *m) {
if (m->health < 0x100) {
m->health = 0xFF;
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers();
#endif
return FALSE;
@@ -1020,7 +1020,7 @@ s32 act_burning_fall(struct MarioState *m) {
if (m->health < 0x100) {
m->health = 0xFF;
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers();
#endif
return FALSE;
@@ -1071,7 +1071,7 @@ s32 act_crazy_box_bounce(struct MarioState *m) {
m->heldObj = NULL;
set_mario_action(m, ACT_STOMACH_SLIDE, 0);
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
m->particleFlags |= PARTICLE_MIST_CIRCLE;
@@ -1103,7 +1103,7 @@ u32 common_air_knockback_step(struct MarioState *m, u32 landAction, u32 hardFall
break;
case AIR_STEP_LANDED:
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (m->action != ACT_SOFT_BONK) {
queue_rumble_data(5, 40);
}
@@ -1505,7 +1505,7 @@ s32 act_hold_butt_slide_air(struct MarioState *m) {
}
s32 act_lava_boost(struct MarioState *m) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
play_sound_if_no_flag(m, SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);
queue_rumble_data(5, 80);
@@ -1529,7 +1529,7 @@ s32 act_lava_boost(struct MarioState *m) {
}
m->vel[1] = 84.0f;
play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
} else {
@@ -1567,7 +1567,7 @@ s32 act_lava_boost(struct MarioState *m) {
}
m->marioBodyState->eyeState = MARIO_EYES_DEAD;
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers();
#endif
return FALSE;
@@ -1679,7 +1679,7 @@ s32 act_shot_from_cannon(struct MarioState *m) {
set_mario_action(m, ACT_DIVE_SLIDE, 0);
m->faceAngle[0] = 0;
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 80);
#endif
break;
@@ -1713,7 +1713,7 @@ s32 act_shot_from_cannon(struct MarioState *m) {
if (m->vel[1] > 0.0f) {
m->particleFlags |= PARTICLE_DUST;
}
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers();
#endif
return FALSE;
@@ -1778,7 +1778,7 @@ s32 act_flying(struct MarioState *m) {
m->faceAngle[0] = 0;
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 60);
#endif
break;
@@ -1833,7 +1833,7 @@ s32 act_flying(struct MarioState *m) {
play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16),
m->marioObj->header.gfx.cameraToObject);
#endif
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(50, 40);
#endif
}
@@ -1849,7 +1849,7 @@ s32 act_riding_hoot(struct MarioState *m) {
m->usedObj->oHootMarioReleaseTime = gGlobalTimer;
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(4, 40);
#endif
return set_mario_action(m, ACT_FREEFALL, 0);
@@ -1907,7 +1907,7 @@ s32 act_flying_triple_jump(struct MarioState *m) {
if (is_anim_past_end(m)) {
set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(8, 80);
#endif
m->actionState = 1;
@@ -1970,7 +1970,7 @@ s32 act_vertical_wind(struct MarioState *m) {
set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING_FLIP);
if (m->marioObj->header.gfx.animInfo.animFrame == 1) {
play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(8, 80);
#endif
}

View File

@@ -171,7 +171,7 @@ s32 act_holding_pole(struct MarioState *m) {
}
}
play_climbing_sounds(m, 2);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers();
#endif
set_sound_moving_speed(SOUND_BANK_MOVING, marioObj->oMarioPoleYawVel / 0x100 * 2);
@@ -385,7 +385,7 @@ void update_hang_stationary(struct MarioState *m) {
}
s32 act_start_hanging(struct MarioState *m) {
#ifdef VERSION_SH
#if ENABLE_RUMBLE
if (m->actionTimer++ == 0) {
queue_rumble_data(5, 80);
}
@@ -470,7 +470,7 @@ s32 act_hang_moving(struct MarioState *m) {
if (m->marioObj->header.gfx.animInfo.animFrame == 12) {
play_sound(SOUND_ACTION_HANGING_STEP, m->marioObj->header.gfx.cameraToObject);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(1, 30);
#endif
}
@@ -662,7 +662,7 @@ s32 act_grabbed(struct MarioState *m) {
m->faceAngle[1] = m->usedObj->oMoveAngleYaw;
vec3f_copy(m->pos, m->marioObj->header.gfx.pos);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(5, 60);
#endif
@@ -744,14 +744,14 @@ s32 act_in_cannon(struct MarioState *m) {
m->marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;
set_mario_action(m, ACT_SHOT_FROM_CANNON, 0);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
queue_rumble_data(60, 70);
#endif
m->usedObj->oAction = 2;
return FALSE;
} else if (m->faceAngle[0] != startFacePitch || m->faceAngle[1] != startFaceYaw) {
play_sound(SOUND_MOVING_AIM_CANNON, m->marioObj->header.gfx.cameraToObject);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers_2(0);
#endif
}
@@ -838,7 +838,7 @@ s32 act_tornado_twirling(struct MarioState *m) {
vec3f_copy(m->marioObj->header.gfx.pos, m->pos);
vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1] + m->twirlYaw, 0);
#ifdef VERSION_SH
#if ENABLE_RUMBLE
reset_rumble_timers();
#endif

Some files were not shown because too many files have changed in this diff Show More