code_8013EC10 and code_80182CE0 (z_rumble and sys_rumble) (#763)

* First pass

* import bss

* cleanup warnings

* PadMgr_ControllerHasRumblePak

* z64rumble.h

* rename file to z_rumble.c

* format

* Update src/code/z_rumble.c

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* Update src/code/z_rumble.c

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* name a temp

* minor cleaning

* bss

* match code_80182CE0

* import data and cleanups

* Rename RumbleManager struct and sys_rumble file

* Rename functions from sys_rumble

* Rename parameter to distSq

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* more notes and a bit of cleaning

* Name Rumble_Add and Rumble_AddForced

* some extra notes

* Rename Rumble_Override and Rumble_Request

* document states

* minor renames

* actorfixer

* format

* very minor docs

* whoops

* remove redundant prevent_bss_reordering

* Update src/overlays/actors/ovl_Bg_Iknin_Susceil/z_bg_iknin_susceil.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_Bg_Iknin_Susceil/z_bg_iknin_susceil.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_Bg_Iknin_Susceil/z_bg_iknin_susceil.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* namefixer

* Update src/code/sys_rumble.c

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>

* fix

* Elliptic review

Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>

* minor cleanups

* Update include/z64rumble.h

Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>

* review

Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>

* Update src/code/sys_rumble.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/code/z_rumble.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* review

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>
Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>
This commit is contained in:
Anghelo Carvajal
2022-06-29 17:08:03 -04:00
committed by GitHub
parent 158d1b26b0
commit 45eed680d6
56 changed files with 509 additions and 204 deletions
-19
View File
@@ -1,19 +0,0 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013EC10.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013EC44.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013ECE0.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013ED9C.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013EDD0.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013EE04.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013EE24.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013EE38.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8013EC10/func_8013EE48.s")
-7
View File
@@ -1,7 +0,0 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80182CE0/func_80182CE0.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80182CE0/func_80183020.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80182CE0/func_80183058.s")
+3 -2
View File
@@ -1,5 +1,6 @@
#include "global.h"
#include "system_malloc.h"
#include "z64rumble.h"
s32 gFramerateDivisor = 1;
f32 gFramerateDivisorF = 1.0f;
@@ -216,7 +217,7 @@ void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* g
VisMono_Init(&sMonoColors);
func_80140898(&D_801F8048);
func_801773A0(&D_801F7FF0);
func_8013ED9C();
Rumble_Init();
osSendMesg(&gameState->gfxCtx->queue, NULL, OS_MESG_BLOCK);
}
@@ -231,7 +232,7 @@ void GameState_Destroy(GameState* gameState) {
gameState->destroy(gameState);
}
func_8013EDD0();
Rumble_Destroy();
func_801773C4(&D_801F7FF0);
func_80140D04(&D_801F8010);
func_801420F4(&D_801F8020);
+2 -2
View File
@@ -31,9 +31,9 @@
#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/func_8017544C.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/func_80175474.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/PadMgr_RumbleSet.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/func_801754C0.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/PadMgr_ControllerHasRumblePak.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/Padmgr_CalcStickEdges.s")
+160
View File
@@ -0,0 +1,160 @@
/*
* File: sys_rumble.c
* Description: Internal scheduler system for rumble requests
*/
#include "global.h"
#include "z64rumble.h"
// sRumbleWasEnabledOnLastTick/sWillDisableRumble? Probably name it after updateEnabled
u8 D_801D1E70 = true;
void RumbleManager_Update(RumbleManager* rumbleMgr) {
s32 strongestIndex = -1;
s32 i;
s32 temp;
// Turn rumbling off for all controllers
for (i = 0; i < ARRAY_COUNT(rumbleMgr->rumbleEnabled); i++) {
rumbleMgr->rumbleEnabled[i] = false;
}
if (!rumbleMgr->updateEnabled) {
// Rumbling update is disabled
if (D_801D1E70) {
for (i = 0; i < MAXCONTROLLERS; i++) {
func_8017544C(i, false);
}
}
D_801D1E70 = rumbleMgr->updateEnabled;
func_80175434();
return;
}
D_801D1E70 = rumbleMgr->updateEnabled;
// Start up the manager by wiping old requests
if (rumbleMgr->state == RUMBLEMANAGER_STATE_INITIAL) {
for (i = 0; i < MAXCONTROLLERS; i++) {
func_8017544C(i, false);
}
for (i = 0; i < RUMBLE_REQUEST_BUFFER_SIZE; i++) {
rumbleMgr->requestIntensities[i] = 0;
rumbleMgr->requestDecayTimers[i] = 0;
rumbleMgr->requestDecaySteps[i] = 0;
rumbleMgr->requestAccumulators[i] = 0;
}
rumbleMgr->rumblingDuration = 0;
rumbleMgr->downTime = 0;
rumbleMgr->overrideIntensity = 0;
rumbleMgr->overrideDecayTimer = 0;
rumbleMgr->overrideDecayStep = 0;
rumbleMgr->overrideAccumulator = 0;
rumbleMgr->state = RUMBLEMANAGER_STATE_RUNNING;
func_80175434();
}
if (rumbleMgr->state != RUMBLEMANAGER_STATE_WIPE) {
// Process arrays of rumble requests
for (i = 0; i < RUMBLE_REQUEST_BUFFER_SIZE; i++) {
if (rumbleMgr->requestIntensities[i] != 0) { // This entry has a non-empty rumble request
if (rumbleMgr->requestDecayTimers[i] > 0) {
rumbleMgr->requestDecayTimers[i]--;
} else {
temp = rumbleMgr->requestIntensities[i] - rumbleMgr->requestDecaySteps[i];
if (temp > 0) {
rumbleMgr->requestIntensities[i] = temp;
} else {
rumbleMgr->requestIntensities[i] = 0;
}
}
temp = rumbleMgr->requestAccumulators[i] + rumbleMgr->requestIntensities[i];
rumbleMgr->requestAccumulators[i] = temp; // overflows
if (strongestIndex == -1) {
strongestIndex = i;
rumbleMgr->rumbleEnabled[0] = (temp >= 0x100);
} else if (rumbleMgr->requestIntensities[strongestIndex] < rumbleMgr->requestIntensities[i]) {
strongestIndex = i;
rumbleMgr->rumbleEnabled[0] = (temp >= 0x100);
}
}
}
// Process Override request. Note it takes priority over the values set by the request arrays
if (rumbleMgr->overrideIntensity != 0) {
if (rumbleMgr->overrideDecayTimer > 0) {
rumbleMgr->overrideDecayTimer--;
} else {
temp = rumbleMgr->overrideIntensity - rumbleMgr->overrideDecayStep;
if (temp > 0) {
rumbleMgr->overrideIntensity = temp;
} else {
rumbleMgr->overrideIntensity = 0;
}
}
temp = rumbleMgr->overrideAccumulator + rumbleMgr->overrideIntensity;
rumbleMgr->overrideAccumulator = temp; // overflows
rumbleMgr->rumbleEnabled[0] = (temp >= 0x100);
}
if (rumbleMgr->overrideIntensity != 0) {
temp = rumbleMgr->overrideIntensity;
} else if (strongestIndex == -1) {
temp = 0;
} else {
temp = rumbleMgr->requestIntensities[strongestIndex];
}
// Keep track of how long this have been rumbling (almost) nonstop
if (temp == 0) {
rumbleMgr->downTime++;
if (rumbleMgr->downTime > 5) {
rumbleMgr->rumblingDuration = 0;
rumbleMgr->downTime = 5;
}
} else {
rumbleMgr->downTime = 0;
rumbleMgr->rumblingDuration++;
if (rumbleMgr->rumblingDuration > 2 * 60 * 60) { // 2 minutes
// Rumbling has lasted too long, clear system
rumbleMgr->state = RUMBLEMANAGER_STATE_WIPE;
}
}
} else { // RUMBLEMANAGER_STATE_WIPE
for (i = 0; i < RUMBLE_REQUEST_BUFFER_SIZE; i++) {
rumbleMgr->requestIntensities[i] = 0;
rumbleMgr->requestDecayTimers[i] = 0;
rumbleMgr->requestDecaySteps[i] = 0;
rumbleMgr->requestAccumulators[i] = 0;
}
rumbleMgr->rumblingDuration = 0;
rumbleMgr->downTime = 0;
rumbleMgr->overrideIntensity = 0;
rumbleMgr->overrideDecayTimer = 0;
rumbleMgr->overrideDecayStep = 0;
rumbleMgr->overrideAccumulator = 0;
func_80175434();
}
}
void RumbleManager_Init(RumbleManager* rumbleMgr) {
bzero(rumbleMgr, sizeof(RumbleManager));
rumbleMgr->state = RUMBLEMANAGER_STATE_INITIAL;
rumbleMgr->updateEnabled = true;
}
void RumbleManager_Destroy(RumbleManager* rumbleMgr) {
}
+4 -2
View File
@@ -5,6 +5,7 @@
#include "global.h"
#include "z64load.h"
#include "z64rumble.h"
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
#include "overlays/actors/ovl_En_Part/z_en_part.h"
#include "overlays/actors/ovl_En_Box/z_en_box.h"
@@ -3793,11 +3794,12 @@ void func_800BC7D8(PlayState* play, s16 y, s16 countdown, s16 speed) {
Quake_SetCountdown(idx, countdown);
}
// Actor_RequestRumble?
void func_800BC848(Actor* actor, PlayState* play, s16 y, s16 countdown) {
if (y >= 5) {
func_8013ECE0(actor->xyzDistToPlayerSq, 255, 20, 150);
Rumble_Request(actor->xyzDistToPlayerSq, 255, 20, 150);
} else {
func_8013ECE0(actor->xyzDistToPlayerSq, 180, 20, 100);
Rumble_Request(actor->xyzDistToPlayerSq, 180, 20, 100);
}
func_800BC770(play, y, countdown);
}
+3 -2
View File
@@ -1,4 +1,5 @@
#include "global.h"
#include "z64rumble.h"
#include "overlays/gamestates/ovl_daytelop/z_daytelop.h"
void Cutscene_DoNothing(PlayState* play, CutsceneContext* csCtx);
@@ -505,14 +506,14 @@ void Cutscene_Command_Rumble(PlayState* play, CutsceneContext* csCtx, CsCmdRumbl
switch (cmd->type) {
case 1:
if (csCtx->frames == cmd->startFrame) {
func_8013ECE0(0.0f, cmd->unk6, cmd->unk7, cmd->unk8);
Rumble_Request(0.0f, cmd->intensity, cmd->decayTimer, cmd->decayStep);
}
break;
case 2:
if ((csCtx->frames >= cmd->startFrame) && (cmd->endFrame >= csCtx->frames)) {
if ((csCtx->frames == cmd->startFrame) || (play->state.frames % 64 == 0)) {
func_8013ECE0(0.0f, cmd->unk6, cmd->unk7, cmd->unk8);
Rumble_Request(0.0f, cmd->intensity, cmd->decayTimer, cmd->decayStep);
}
}
break;
+4 -3
View File
@@ -1,4 +1,5 @@
#include "global.h"
#include "z64rumble.h"
void GameOver_Init(PlayState* play) {
play->gameOverCtx.state = GAMEOVER_INACTIVE;
@@ -62,7 +63,7 @@ void GameOver_Update(PlayState* play) {
gSaveContext.unk_3F24 = 0;
Kankyo_InitGameOverLights(play);
sGameOverTimer = 20;
func_8013ECE0(0.0f, 126, 124, 63);
Rumble_Request(0.0f, 126, 124, 63);
gameOverCtx->state = GAMEOVER_DEATH_WAIT_GROUND;
break;
case GAMEOVER_DEATH_FADE_OUT:
@@ -78,7 +79,7 @@ void GameOver_Update(PlayState* play) {
gSaveContext.save.playerForm = PLAYER_FORM_HUMAN;
gSaveContext.save.equippedMask = PLAYER_MASK_NONE;
}
func_8013EE24();
Rumble_StateReset();
}
break;
case GAMEOVER_REVIVE_START:
@@ -90,7 +91,7 @@ void GameOver_Update(PlayState* play) {
case GAMEOVER_REVIVE_RUMBLE:
sGameOverTimer = 50;
gameOverCtx->state++;
func_8013ECE0(0.0f, 126, 124, 63);
Rumble_Request(0.0f, 126, 124, 63);
break;
case GAMEOVER_REVIVE_WAIT_GROUND:
sGameOverTimer--;
+2 -1
View File
@@ -1,4 +1,5 @@
#include "global.h"
#include "z64rumble.h"
#include "overlays/gamestates/ovl_file_choose/z_file_choose.h"
s16 D_801BDB00[] = { PAUSE_1, PAUSE_2, PAUSE_3, PAUSE_0 };
@@ -9,7 +10,7 @@ void func_800F4A10(PlayState* play) {
PauseContext* pauseCtx = &play->pauseCtx;
s16 i;
func_8013EE24();
Rumble_StateReset();
pauseCtx->unk_206 = 0;
pauseCtx->unk_200 = 1;
-1
View File
@@ -1,7 +1,6 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "interface/parameter_static/parameter_static.h"
#include "prevent_bss_reordering.h"
s16 sHeartsPrimColors[3][3] = { { 255, 70, 50 }, { 255, 190, 0 }, { 100, 100, 255 } };
s16 sHeartsEnvColors[3][3] = { { 50, 40, 60 }, { 255, 0, 0 }, { 0, 0, 255 } };
+104
View File
@@ -0,0 +1,104 @@
/*
* File: z_rumble.c
* Description: Rumble request system
*
* Provides a simple interface to allow scheduling up to RUMBLE_REQUEST_BUFFER_SIZE rumble requests to the RumblePak.
* There's an additional Override type of rumble request for requests which should take priorities over any other
* scheduled request.
*/
#include "global.h"
#include "z64rumble.h"
RumbleManager gRumbleMgr;
void Rumble_Update(void* arg0) {
RumbleManager_Update(&gRumbleMgr);
PadMgr_RumbleSet(gRumbleMgr.rumbleEnabled);
}
// Used by some bosses (and fishing)
void Rumble_Override(f32 distSq, u8 sourceIntensity, u8 decayTimer, u8 decayStep) {
s32 intensity;
s32 distance;
if (SQ(1000.0f) < distSq) {
distance = 1000;
} else {
distance = sqrtf(distSq);
}
if ((distance < 1000) && (sourceIntensity != 0) && (decayStep != 0)) {
intensity = sourceIntensity - (distance * 255) / 1000;
if (intensity > 0) {
gRumbleMgr.overrideIntensity = intensity;
gRumbleMgr.overrideDecayTimer = decayTimer;
gRumbleMgr.overrideDecayStep = decayStep;
}
}
}
void Rumble_Request(f32 distSq, u8 sourceIntensity, u8 decayTimer, u8 decayStep) {
s32 intensity;
s32 distance;
s32 i;
if (SQ(1000.0f) < distSq) {
distance = 1000;
} else {
distance = sqrtf(distSq);
}
if ((distance < 1000) && (sourceIntensity != 0) && (decayStep != 0)) {
intensity = sourceIntensity - (distance * 255) / 1000;
for (i = 0; i < RUMBLE_REQUEST_BUFFER_SIZE; i++) {
if (gRumbleMgr.requestIntensities[i] == 0) {
if (intensity > 0) {
gRumbleMgr.requestIntensities[i] = intensity;
gRumbleMgr.requestDecayTimers[i] = decayTimer;
gRumbleMgr.requestDecaySteps[i] = decayStep;
}
break;
}
}
}
}
void Rumble_Init(void) {
RumbleManager_Init(&gRumbleMgr);
func_80174F24(Rumble_Update, NULL);
}
void Rumble_Destroy(void) {
func_80174F44(Rumble_Update, NULL);
RumbleManager_Destroy(&gRumbleMgr);
}
s32 Rumble_ControllerOneHasRumblePak(void) {
return PadMgr_ControllerHasRumblePak(0);
}
/**
* Wipes every old request for a fresh start, then proceeds to process them as normal
*/
void Rumble_StateReset(void) {
gRumbleMgr.state = RUMBLEMANAGER_STATE_INITIAL;
}
/**
* Changes the state of the manager to WIPE
*
* In this state, every request is deleted
*/
void Rumble_StateWipeRequests(void) {
gRumbleMgr.state = RUMBLEMANAGER_STATE_WIPE;
}
/**
* Request processing is paused if updateEnabled is set to false
*/
void Rumble_SetUpdateEnabled(s32 updateEnabled) {
gRumbleMgr.updateEnabled = !!updateEnabled;
}
@@ -5,6 +5,7 @@
*/
#include "z_bg_f40_switch.h"
#include "z64rumble.h"
#include "objects/object_f40_switch/object_f40_switch.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -144,7 +145,7 @@ void BgF40Switch_Press(BgF40Switch* this, PlayState* play) {
this->dyna.actor.scale.y -= 0.0495f;
if (this->dyna.actor.scale.y <= 0.0165f) {
Actor_PlaySfxAtPos(&this->dyna.actor, NA_SE_EV_IKANA_BLOCK_SWITCH);
func_8013ECE0(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
if (this->isInitiator) {
ActorCutscene_Stop(this->dyna.actor.cutscene);
this->isInitiator = false;
@@ -6,8 +6,8 @@
#include "prevent_bss_reordering.h"
#include "z_bg_hakugin_post.h"
#include "z64rumble.h"
#include "objects/object_hakugin_obj/object_hakugin_obj.h"
#include "prevent_bss_reordering.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20)
@@ -519,7 +519,7 @@ void func_80A9C058(BgHakuginPost* this, PlayState* play, BgHakuginPostUnkStruct*
sp44.x = this->dyna.actor.home.pos.x + unkStruct1->unk_14.x;
sp44.y = this->unk_16C + unkStruct1->unk_14.y;
sp44.z = this->dyna.actor.home.pos.z + unkStruct1->unk_14.z;
func_8013ECE0(Math3D_Vec3fDistSq(&sp44, &GET_PLAYER(play)->actor.world.pos), 255, 20, 150);
Rumble_Request(Math3D_Vec3fDistSq(&sp44, &GET_PLAYER(play)->actor.world.pos), 255, 20, 150);
quake = Quake_Add(GET_ACTIVE_CAM(play), 3);
Quake_SetSpeed(quake, 20000);
Quake_SetQuakeValues(quake, 7, 0, 0, 0);
@@ -540,9 +540,9 @@ void func_80A9C18C(BgHakuginPost* this, PlayState* play) {
Camera* activeCam = GET_ACTIVE_CAM(play);
s16 quake;
func_8013ECE0(Math3D_XZDistanceSquared(player->actor.world.pos.x, player->actor.world.pos.z,
this->dyna.actor.home.pos.x, this->dyna.actor.home.pos.z),
255, 20, 150);
Rumble_Request(Math3D_XZDistanceSquared(player->actor.world.pos.x, player->actor.world.pos.z,
this->dyna.actor.home.pos.x, this->dyna.actor.home.pos.z),
255, 20, 150);
quake = Quake_Add(activeCam, 3);
Quake_SetSpeed(quake, 17232);
Quake_SetQuakeValues(quake, 6, 0, 0, 0);
@@ -5,6 +5,7 @@
*/
#include "z_bg_hakugin_switch.h"
#include "z64rumble.h"
#include "objects/object_goronswitch/object_goronswitch.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -306,7 +307,7 @@ void func_80B15E78(BgHakuginSwitch* this, PlayState* play) {
if (Math_StepToF(&this->dyna.actor.world.pos.y, sp20->unk_4 + this->dyna.actor.home.pos.y, sp20->unk_C)) {
if (DynaPolyActor_IsInRidingMovingState(&this->dyna)) {
func_8013ECE0(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
}
func_80B15F3C(this, play);
} else if (!(sp20->unk_14 & 0x80)) {
@@ -446,7 +447,7 @@ void func_80B16400(BgHakuginSwitch* this, PlayState* play) {
if (Math_StepToF(&this->dyna.actor.world.pos.y,
(this->dyna.actor.home.pos.y + 2.0f) - (1800.0f * this->dyna.actor.scale.y), 10.0f)) {
if (DynaPolyActor_IsInRidingMovingState(&this->dyna)) {
func_8013ECE0(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
}
func_80B16494(this, play);
}
@@ -5,6 +5,7 @@
*/
#include "z_bg_iknin_susceil.h"
#include "z64rumble.h"
#include "objects/object_ikninside_obj/object_ikninside_obj.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20)
@@ -75,11 +76,11 @@ void func_80C0A86C(BgIkninSusceil* this, PlayState* play, s16 verticalMag, s16 c
Quake_SetQuakeValues(quake, verticalMag, 0, 0, 0);
Quake_SetCountdown(quake, countdown);
if (arg4 == 1) {
func_8013ECE0(10000.0f, 255, 20, 150);
Rumble_Request(SQ(100.0f), 255, 20, 150);
} else if (arg4 == 2) {
func_8013ECE0(10000.0f, 180, 20, 100);
Rumble_Request(SQ(100.0f), 180, 20, 100);
} else if (arg4 == 3) {
func_8013ECE0(10000.0f, 120, 20, 10);
Rumble_Request(SQ(100.0f), 120, 20, 10);
}
}
@@ -5,6 +5,7 @@
*/
#include "z_bg_open_shutter.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -5,6 +5,7 @@
*/
#include "z_boss_01.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_20)
+25 -22
View File
@@ -6,10 +6,10 @@
#include "prevent_bss_reordering.h"
#include "z_boss_02.h"
#include "z64rumble.h"
#include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h"
#include "overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#include "prevent_bss_reordering.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_20)
@@ -124,17 +124,17 @@ const ActorInit Boss_02_InitVars = {
(ActorFunc)Boss02_Draw,
};
static f32 D_809DF5B0 = 1.0f;
f32 D_809DF5B0 = 1.0f;
static s16 D_809DF5B4[] = {
s16 D_809DF5B4[] = {
0, 195, 190, 185, 180, 175, 170, 165, 160, 155, 150, 145, 140, 135, 130, 125, 120, 115, 110, 105, 100, 95, 90, 0,
};
static s16 D_809DF5E4[] = {
s16 D_809DF5E4[] = {
0, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112,
};
static ColliderJntSphElementInit sJntSphElementsInit1[22] = {
static ColliderJntSphElementInit sJntSphElementsInit1[] = {
{
{
ELEMTYPE_UNK3,
@@ -388,11 +388,11 @@ static ColliderJntSphInit sJntSphInit1 = {
OC2_TYPE_1,
COLSHAPE_JNTSPH,
},
22,
ARRAY_COUNT(sJntSphElementsInit1),
sJntSphElementsInit1,
};
static ColliderJntSphElementInit sJntSphElementsInit2[2] = {
static ColliderJntSphElementInit sJntSphElementsInit2[] = {
{
{
ELEMTYPE_UNK3,
@@ -426,7 +426,7 @@ static ColliderJntSphInit sJntSphInit2 = {
OC2_TYPE_1,
COLSHAPE_JNTSPH,
},
2,
ARRAY_COUNT(sJntSphElementsInit2),
sJntSphElementsInit2,
};
@@ -450,13 +450,13 @@ static ColliderCylinderInit sCylinderInit = {
{ 150, 200, 0, { 0, 0, 0 } },
};
static Vec3f D_809DF9C0[] = {
Vec3f D_809DF9C0[] = {
{ 0.0f, -200.0f, 1000.0f }, { 0.0f, 500.0f, 1000.0f }, { 0.0f, 1000.0f, 1000.0f },
{ 1000.0f, 500.0f, 1000.0f }, { 1000.0f, 1000.0f, -1000.0f }, { -1000.0f, 500.0f, -1000.0f },
{ -1000.0f, 500.0f, 1000.0f }, { -1000.0f, -1000.0f, -1000.0f }, { -1000.0f, -1000.0f, -1000.0f },
};
static Vec3f D_809DFA2C[] = {
Vec3f D_809DFA2C[] = {
{ 0.0f, -200.0f, -800.0f }, { 0.0f, 800.0f, -800.0f }, { 800.0f, 300.0f, -800.0f },
{ -800.0f, 800.0f, 0.0f }, { -800.0f, -1000.0f, 0.0f }, { -800.0f, -1000.0f, 0.0f },
{ -800.0f, -1000.0f, 0.0f }, { -800.0f, -1000.0f, 0.0f }, { -800.0f, -1000.0f, 0.0f },
@@ -652,8 +652,9 @@ void func_809DAAA8(Boss02* this, PlayState* play) {
this->actor.world.pos.y = -500.0f;
}
Color_RGBA8 D_809DFA98 = { 185, 140, 70, 255 };
void func_809DAB78(Boss02* this, PlayState* play) {
static Color_RGBA8 D_809DFA98 = { 185, 140, 70, 255 };
s32 pad;
Player* player = GET_PLAYER(play);
CollisionPoly* spDC;
@@ -1317,16 +1318,18 @@ void func_809DC78C(Actor* thisx, PlayState* play) {
func_809DD934(this, play);
}
Gfx* D_809DFA9C[] = {
gTwinmoldBodySegment1DL, gTwinmoldBodySegment2DL, gTwinmoldBodySegment3DL, gTwinmoldBodySegment4DL,
gTwinmoldBodySegment5DL, gTwinmoldBodySegment6DL, gTwinmoldBodySegment7DL, gTwinmoldBodySegment8DL,
gTwinmoldBodySegment9DL, gTwinmoldBodySegment10DL, gTwinmoldBodySegment11DL, gTwinmoldBodySegment12DL,
gTwinmoldBodySegment13DL, gTwinmoldBodySegment14DL, gTwinmoldBodySegment15DL, gTwinmoldBodySegment16DL,
gTwinmoldBodySegment17DL, gTwinmoldBodySegment18DL, gTwinmoldBodySegment19DL, gTwinmoldBodySegment20DL,
gTwinmoldBodySegment21DL, gTwinmoldBodyTailDL,
};
Vec3f D_809DFAF4 = { -10000.0f, -100000.0f, -100000.0f };
void Boss02_Draw(Actor* thisx, PlayState* play2) {
static Gfx* D_809DFA9C[] = {
gTwinmoldBodySegment1DL, gTwinmoldBodySegment2DL, gTwinmoldBodySegment3DL, gTwinmoldBodySegment4DL,
gTwinmoldBodySegment5DL, gTwinmoldBodySegment6DL, gTwinmoldBodySegment7DL, gTwinmoldBodySegment8DL,
gTwinmoldBodySegment9DL, gTwinmoldBodySegment10DL, gTwinmoldBodySegment11DL, gTwinmoldBodySegment12DL,
gTwinmoldBodySegment13DL, gTwinmoldBodySegment14DL, gTwinmoldBodySegment15DL, gTwinmoldBodySegment16DL,
gTwinmoldBodySegment17DL, gTwinmoldBodySegment18DL, gTwinmoldBodySegment19DL, gTwinmoldBodySegment20DL,
gTwinmoldBodySegment21DL, gTwinmoldBodyTailDL,
};
static Vec3f D_809DFAF4 = { -10000.0f, -100000.0f, -100000.0f };
PlayState* play = play2;
Boss02* this = THIS;
s32 i;
@@ -2071,7 +2074,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
this->unk_1D30.z = player->actor.world.pos.z;
if (this->unk_1D1C >= 30) {
if (this->unk_1D1C == 30) {
func_8013EC44(0.0f, 50, 200, 1);
Rumble_Override(0.0f, 50, 200, 1);
}
this->unk_0150 += 0x4000;
sp58 = (Math_SinS(this->unk_0150) * (BREG(19) + 5)) * 0.1f;
@@ -2095,7 +2098,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
}
if (this->unk_1D1C == 92) {
func_8013EC44(0.0f, 255, 30, 100);
Rumble_Override(0.0f, 255, 30, 100);
}
if (this->unk_1D1C == 100) {
@@ -5,6 +5,7 @@
*/
#include "z_boss_hakugin.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_20)
@@ -5,6 +5,7 @@
*/
#include "z_door_shutter.h"
#include "z64rumble.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#include "objects/object_bdoor/object_bdoor.h"
#include "objects/object_numa_obj/object_numa_obj.h"
@@ -611,7 +612,7 @@ void func_808A1B48(DoorShutter* this, PlayState* play) {
Quake_SetSpeed(quake, -32536);
Quake_SetQuakeValues(quake, 2, 0, 0, 0);
Quake_SetCountdown(quake, 10);
func_8013ECE0(this->actor.xyzDistToPlayerSq, 180, 20, 100);
Rumble_Request(this->actor.xyzDistToPlayerSq, 180, 20, 100);
func_808A1884(this, play);
}
}
@@ -5,6 +5,7 @@
*/
#include "z_en_bigpamet.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_400)
@@ -5,6 +5,7 @@
*/
#include "z_en_bigslime.h"
#include "z64rumble.h"
#include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h"
#include "objects/object_bigslime/object_bigslime.h"
#include "objects/gameplay_keep/gameplay_keep.h"
@@ -747,7 +748,7 @@ void EnBigslime_BreakIntoMinislime(EnBigslime* this, PlayState* play) {
Quake_SetSpeed(quake, 20000);
Quake_SetQuakeValues(quake, 15, 0, 0, 0);
Quake_SetCountdown(quake, 15);
func_8013ECE0(this->actor.xyzDistToPlayerSq, 180, 20, 100);
Rumble_Request(this->actor.xyzDistToPlayerSq, 180, 20, 100);
this->bigslimeCollider[0].base.atFlags &= ~AT_ON;
this->gekkoCollider.base.acFlags &= ~(AC_ON | AC_HIT);
+2 -1
View File
@@ -5,6 +5,7 @@
*/
#include "z_en_bom.h"
#include "z64rumble.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20)
@@ -338,7 +339,7 @@ void func_808715B8(EnBom* this, PlayState* play) {
if (this->collider2.elements->dim.modelSphere.radius == 0) {
this->actor.flags |= ACTOR_FLAG_20;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
}
this->collider2.elements->dim.worldSphere.radius = D_80872E8C[this->isPowderKeg];
@@ -5,6 +5,7 @@
*/
#include "z_en_bombf.h"
#include "z64rumble.h"
#include "objects/object_bombf/object_bombf.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_10)
@@ -261,7 +262,7 @@ void func_808AEF68(EnBombf* this, PlayState* play) {
void func_808AEFD4(EnBombf* this, PlayState* play) {
if (this->colliderJntSph.elements->dim.modelSphere.radius == 0) {
this->actor.flags |= ACTOR_FLAG_20;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
}
this->colliderJntSph.elements->dim.modelSphere.radius = 100;
@@ -5,6 +5,7 @@
*/
#include "z_en_bsb.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_2000000)
@@ -5,6 +5,7 @@
*/
#include "z_en_death.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_1000)
@@ -5,6 +5,7 @@
*/
#include "z_en_famos.h"
#include "z64rumble.h"
#include "overlays/actors/ovl_En_Bom/z_en_bom.h"
#include "objects/gameplay_keep/gameplay_keep.h"
@@ -549,7 +550,7 @@ void EnFamos_Attack(EnFamos* this, PlayState* play) {
this->collider2.base.atFlags |= AT_ON;
if (hitFloor) {
func_800DFD04(play->cameraPtrs[play->activeCamera], 2, 15, 10); // camera shake?
func_8013ECE0(this->actor.xyzDistToPlayerSq, 180, 20, 100);
Rumble_Request(this->actor.xyzDistToPlayerSq, 180, 20, 100);
EnFamos_SetupAttackDebris(this);
// spawn crator on floor
@@ -6,6 +6,7 @@
#include "prevent_bss_reordering.h"
#include "z_en_fishing.h"
#include "z64rumble.h"
#include "objects/object_fish/object_fish.h"
#include "overlays/actors/ovl_En_Kanban/z_en_kanban.h"
@@ -3440,7 +3441,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
}
D_80917272 = phi_v0;
D_809171F4 = phi_v0;
func_8013EC44(0.0f, 60, phi_v0 * 3, 10);
Rumble_Override(0.0f, 60, phi_v0 * 3, 10);
} else {
if (this->unk_1A4 > 70.0f) {
phi_v0 = Rand_ZeroFloat(5.0f) + 10.0f;
@@ -3453,7 +3454,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
}
D_80917272 = phi_v0;
D_809171F4 = phi_v0;
func_8013EC44(0.0f, 180, phi_v0 * 3, 10);
Rumble_Override(0.0f, 180, phi_v0 * 3, 10);
}
D_80917274 = 0;
@@ -3495,11 +3496,11 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
if (D_80917206 == 2) {
D_80917272 = 30;
D_809171F4 = 100;
func_8013EC44(0.0f, 60, 90, 10);
Rumble_Override(0.0f, 60, 90, 10);
} else {
D_80917272 = 30;
D_809171F4 = 40;
func_8013EC44(0.0f, 180, 90, 10);
Rumble_Override(0.0f, 180, 90, 10);
}
D_80917274 = 0;
@@ -3550,7 +3551,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
temp2 = 255.0f;
}
func_8013EC44(0.0f, temp2, 120, 5);
Rumble_Override(0.0f, temp2, 120, 5);
D_809171F4 = 40;
D_80911E28 = 10;
play_sound(NA_SE_IT_FISHING_HIT);
@@ -3584,7 +3585,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
spA4 *= 3.0f / 4.0f;
}
func_8013EC44(0.0f, spA4, Rand_ZeroFloat(5.0f) + 10.0f, 5);
Rumble_Override(0.0f, spA4, Rand_ZeroFloat(5.0f) + 10.0f, 5);
}
if (this->unk_172[1] > 30) {
@@ -3620,7 +3621,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
} else {
phi_a1 = 180;
}
func_8013EC44(0.0f, phi_a1, 90, 2);
Rumble_Override(0.0f, phi_a1, 90, 2);
this->unk_172[0] = 20;
this->unk_172[1] = 100;
this->unk_172[2] = 20;
@@ -3748,7 +3749,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
}
} else {
// Assignment of OoT's D_80B7E086 here removed in MM
func_8013EC44(0.0f, 1, 3, 1);
Rumble_Override(0.0f, 1, 3, 1);
Audio_QueueSeqCmd(0x100A00FF);
}
@@ -3771,7 +3772,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
this->unk_150 = 6;
this->unk_172[0] = 100;
player->unk_B28 = 3;
func_8013EC44(0.0f, 1, 3, 1);
Rumble_Override(0.0f, 1, 3, 1);
D_809171D8++;
Cutscene_Start(play, &play->csCtx);
D_8090CD4C = 100;
@@ -4714,7 +4715,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
case 0:
if (gSaveContext.save.playerData.rupees >= 20) {
func_801159EC(-20);
if (func_8013EE04() == 0) {
if (!Rumble_ControllerOneHasRumblePak()) {
this->actor.textId = 0x407C;
} else {
this->actor.textId = 0x407D;
@@ -5138,7 +5139,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) {
(fabsf(player->actor.world.pos.z - sSinkingLureLocationPos[sSinkingLureLocation - 1].z) < 25.0f)) {
sSinkingLureLocation = 0;
D_8090CD4C = 20;
func_8013EC44(0.0f, 150, 10, 10);
Rumble_Override(0.0f, 150, 10, 10);
play_sound(NA_SE_SY_TRE_BOX_APPEAR);
Audio_QueueSeqCmd(0x101400FF);
}
@@ -5293,7 +5294,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) {
sCameraAt.z = camera->at.z;
Message_StartTextbox(play, 0x409E, NULL);
D_8090CD4C = 11;
func_8013EC44(0.0f, 150, 10, 10);
Rumble_Override(0.0f, 150, 10, 10);
// fallthrough
case 11:
+21 -20
View File
@@ -5,6 +5,7 @@
*/
#include "z_en_horse.h"
#include "z64rumble.h"
#include "objects/object_horse_link_child/object_horse_link_child.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -1345,7 +1346,7 @@ void EnHorse_MountedTrot(EnHorse* this, PlayState* play) {
if (SkelAnime_Update(&this->skin.skelAnime)) {
func_8087C178(this);
func_8013ECE0(0.0f, 60, 8, 255);
Rumble_Request(0.0f, 60, 8, 255);
if (this->actor.speedXZ >= 6.0f) {
EnHorse_StartGallopingInterruptable(this);
} else if (this->actor.speedXZ < 3.0f) {
@@ -1413,7 +1414,7 @@ void EnHorse_MountedGallop(EnHorse* this, PlayState* play) {
if (SkelAnime_Update(&this->skin.skelAnime)) {
func_8087C1C0(this);
func_8013ECE0(0.0f, 120, 8, 255);
Rumble_Request(0.0f, 120, 8, 255);
if (EnHorse_PlayerCanMove(this, play) == true) {
if ((stickMag >= 10.0f) && (Math_CosS(stickAngle) <= -0.5f)) {
EnHorse_StartBraking(this, play);
@@ -1441,7 +1442,7 @@ void EnHorse_StartRearing(EnHorse* this) {
Audio_PlaySfxAtPos(&this->unk_218, NA_SE_EV_HORSE_NEIGH);
}
}
func_8013ECE0(0.0f, 180, 20, 100);
Rumble_Request(0.0f, 180, 20, 100);
this->stateFlags &= ~ENHORSE_STOPPING_NEIGH_SOUND;
}
EnHorse_StartMountedIdleResetAnim(this);
@@ -1456,7 +1457,7 @@ void EnHorse_StartRearing(EnHorse* this) {
}
}
func_8013ECE0(0.0f, 180, 20, 100);
Rumble_Request(0.0f, 180, 20, 100);
Animation_Change(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animationIdx], 1.0f, 0.0f,
Animation_GetLastFrame(sAnimationHeaders[this->type][this->animationIdx]), ANIMMODE_ONCE, -3.0f);
}
@@ -1474,7 +1475,7 @@ void EnHorse_MountedRearing(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_KID_HORSE_LAND2);
}
func_8013ECE0(0.0f, 180, 20, 100);
Rumble_Request(0.0f, 180, 20, 100);
}
}
@@ -1515,7 +1516,7 @@ void EnHorse_StartBraking(EnHorse* this, PlayState* play) {
Audio_PlaySfxAtPos(&this->unk_218, NA_SE_EV_HORSE_NEIGH);
}
}
func_8013ECE0(0.0f, 180, 20, 100);
Rumble_Request(0.0f, 180, 20, 100);
this->stateFlags &= ~ENHORSE_STOPPING_NEIGH_SOUND;
}
EnHorse_StartMountedIdleResetAnim(this);
@@ -1552,7 +1553,7 @@ void EnHorse_Stopping(EnHorse* this, PlayState* play) {
Audio_PlaySfxAtPos(&this->unk_218, NA_SE_EV_HORSE_NEIGH);
}
}
func_8013ECE0(0.0f, 180, 20, 100);
Rumble_Request(0.0f, 180, 20, 100);
this->stateFlags &= ~ENHORSE_STOPPING_NEIGH_SOUND;
} else {
EnHorse_StartMountedIdleResetAnim(this);
@@ -1684,7 +1685,7 @@ void EnHorse_StartLowJump(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_JUMP);
}
func_8013ECE0(0.0f, 170, 10, 10);
Rumble_Request(0.0f, 170, 10, 10);
}
void EnHorse_Stub1(EnHorse* this) {
@@ -1743,7 +1744,7 @@ void EnHorse_LowJump(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_LAND);
}
func_8013ECE0(0.0f, 255, 10, 80);
Rumble_Request(0.0f, 255, 10, 80);
this->stateFlags &= ~ENHORSE_JUMPING;
this->actor.gravity = -3.5f;
this->actor.world.pos.y = this->actor.floorHeight;
@@ -1782,7 +1783,7 @@ void EnHorse_StartHighJump(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_JUMP);
}
func_8013ECE0(0.0f, 170, 10, 10);
Rumble_Request(0.0f, 170, 10, 10);
}
void EnHorse_Stub2(EnHorse* this) {
@@ -1840,7 +1841,7 @@ void EnHorse_HighJump(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_LAND);
}
func_8013ECE0(0.0f, 255, 10, 80);
Rumble_Request(0.0f, 255, 10, 80);
this->stateFlags &= ~ENHORSE_JUMPING;
this->actor.gravity = -3.5f;
this->actor.world.pos.y = this->actor.floorHeight;
@@ -2262,7 +2263,7 @@ void func_80881290(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_JUMP);
}
func_8013ECE0(0.0f, 170, 10, 10);
Rumble_Request(0.0f, 170, 10, 10);
}
void func_80881398(EnHorse* this, PlayState* play) {
@@ -2302,7 +2303,7 @@ void func_80881398(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_LAND);
}
func_8013ECE0(0.0f, 255, 10, 80);
Rumble_Request(0.0f, 255, 10, 80);
this->stateFlags &= ~ENHORSE_JUMPING;
this->stateFlags &= ~ENHORSE_FLAG_30;
this->actor.gravity = -3.5f;
@@ -2484,7 +2485,7 @@ void EnHorse_CsMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorAction* act
if (SkelAnime_Update(&this->skin.skelAnime)) {
func_8087C1C0(this);
func_8013ECE0(0.0f, 120, 8, 255);
Rumble_Request(0.0f, 120, 8, 255);
Animation_PlayOnceSetSpeed(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animationIdx],
this->actor.speedXZ * 0.3f);
}
@@ -2519,7 +2520,7 @@ void EnHorse_CsPlayHighJumpAnim(EnHorse* this, PlayState* play) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_JUMP);
}
func_8013ECE0(0.0f, 170, 10, 10);
Rumble_Request(0.0f, 170, 10, 10);
}
void EnHorse_CsJumpInit(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
@@ -2569,7 +2570,7 @@ void EnHorse_CsJump(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_LAND);
}
func_8013ECE0(0.0f, 255, 10, 80);
Rumble_Request(0.0f, 255, 10, 80);
this->stateFlags &= ~ENHORSE_JUMPING;
this->actor.gravity = -3.5f;
this->actor.velocity.y = 0.0f;
@@ -2665,7 +2666,7 @@ void EnHorse_CsWarpMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorAction*
if (SkelAnime_Update(&this->skin.skelAnime)) {
func_8087C1C0(this);
func_8013ECE0(0.0f, 120, 8, 255);
Rumble_Request(0.0f, 120, 8, 255);
Animation_PlayOnceSetSpeed(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animationIdx],
this->actor.speedXZ * 0.3f);
}
@@ -2863,7 +2864,7 @@ void EnHorse_UpdateHbaAnim(EnHorse* this) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_RUN);
}
func_8013ECE0(0.0f, 60, 8, 255);
Rumble_Request(0.0f, 60, 8, 255);
} else if (this->animationIdx == ENHORSE_ANIM_GALLOP) {
animSpeed = this->actor.speedXZ * 0.2f;
if (this->type == HORSE_2) {
@@ -2871,7 +2872,7 @@ void EnHorse_UpdateHbaAnim(EnHorse* this) {
} else {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_HORSE_RUN);
}
func_8013ECE0(0.0f, 120, 8, 255);
Rumble_Request(0.0f, 120, 8, 255);
} else {
animSpeed = 1.0f;
}
@@ -3980,7 +3981,7 @@ void func_80886C00(EnHorse* this, PlayState* play) {
!(this->stateFlags & ENHORSE_BOOST) && !(this->stateFlags & ENHORSE_FLAG_8) &&
!(this->stateFlags & ENHORSE_FLAG_9)) {
if (this->numBoosts > 0) {
func_8013ECE0(0.0f, 180, 20, 100);
Rumble_Request(0.0f, 180, 20, 100);
this->stateFlags |= ENHORSE_BOOST;
this->stateFlags |= ENHORSE_FIRST_BOOST_REGEN;
this->stateFlags |= ENHORSE_FLAG_8;
+1
View File
@@ -5,6 +5,7 @@
*/
#include "z_en_ik.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_400)
+2 -1
View File
@@ -5,6 +5,7 @@
*/
#include "z_en_ishi.h"
#include "z64rumble.h"
#include "objects/gameplay_field_keep/gameplay_field_keep.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#include "objects/object_ishi/object_ishi.h"
@@ -598,7 +599,7 @@ void func_8095EBDC(EnIshi* this, PlayState* play) {
Quake_SetSpeed(quake, 0x4350);
Quake_SetQuakeValues(quake, 3, 0, 0, 0);
Quake_SetCountdown(quake, 7);
func_8013ECE0(this->actor.xyzDistToPlayerSq, 255, 20, 150);
Rumble_Request(this->actor.xyzDistToPlayerSq, 255, 20, 150);
}
Actor_MarkForDeath(&this->actor);
@@ -5,6 +5,7 @@
*/
#include "z_en_m_thunder.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -5,6 +5,7 @@
*/
#include "z_en_pametfrog.h"
#include "z64rumble.h"
#include "overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.h"
#include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h"
#include "objects/object_bigslime/object_bigslime.h"
@@ -1226,7 +1227,7 @@ void EnPametfrog_SetupSnapperSpawn(EnPametfrog* this, PlayState* play) {
Quake_SetSpeed(this->quake, 18000);
Quake_SetQuakeValues(this->quake, 2, 0, 0, 0);
Quake_SetCountdown(this->quake, 15);
func_8013ECE0(this->actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->actor.xyzDistToPlayerSq, 120, 20, 10);
this->timer = 40;
this->actionFunc = EnPametfrog_SnapperSpawn;
}
@@ -1236,7 +1237,7 @@ void EnPametfrog_SnapperSpawn(EnPametfrog* this, PlayState* play) {
EnPametfrog_ShakeCamera(this, play, (f32)(this->timer * 7.5f) + 200.0f,
((f32)(this->timer * 2) * (15.0f / 16.0f)) + -20.0f);
if (this->timer != 0) {
func_8013ECE0(this->actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->actor.xyzDistToPlayerSq, 120, 20, 10);
} else {
EnPametfrog_SetupTransitionGekkoSnapper(this, play);
}
@@ -1249,7 +1250,7 @@ void EnPametfrog_SetupTransitionGekkoSnapper(EnPametfrog* this, PlayState* play)
Quake_SetSpeed(this->quake, 20000);
Quake_SetQuakeValues(this->quake, 17, 0, 0, 0);
Quake_SetCountdown(this->quake, 12);
func_8013ECE0(this->actor.xyzDistToPlayerSq, 255, 20, 150);
Rumble_Request(this->actor.xyzDistToPlayerSq, 255, 20, 150);
this->actionFunc = EnPametfrog_TransitionGekkoSnapper;
}
@@ -5,6 +5,7 @@
*/
#include "z_en_railgibud.h"
#include "z64rumble.h"
#include "objects/object_rd/object_rd.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_400)
@@ -346,7 +347,7 @@ void EnRailgibud_AttemptPlayerFreeze(EnRailgibud* this, PlayState* play) {
if (ABS_ALT(yaw) < 0x2008) {
player->actor.freezeTimer = 60;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
func_80123E90(play, &this->actor);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_REDEAD_AIM);
EnRailgibud_SetupWalkToPlayer(this);
@@ -392,7 +393,7 @@ void EnRailgibud_WalkToPlayer(EnRailgibud* this, PlayState* play) {
if (this->playerStunWaitTimer == 0) {
player->actor.freezeTimer = 40;
this->playerStunWaitTimer = 60;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
func_80123E90(play, &this->actor);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_REDEAD_AIM);
} else {
@@ -451,7 +452,7 @@ void EnRailgibud_Grab(EnRailgibud* this, PlayState* play) {
damageSfxId = player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S;
play->damagePlayer(play, -8);
func_800B8E58(player, damageSfxId);
func_8013ECE0(this->actor.xzDistToPlayer, 240, 1, 12);
Rumble_Request(this->actor.xzDistToPlayer, 240, 1, 12);
this->grabDamageTimer = 0;
} else {
this->grabDamageTimer++;
+5 -4
View File
@@ -23,6 +23,7 @@
*/
#include "z_en_rd.h"
#include "z64rumble.h"
#include "objects/object_rd/object_rd.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_400)
@@ -660,7 +661,7 @@ void EnRd_WalkToPlayer(EnRd* this, PlayState* play) {
player->actor.freezeTimer = 40;
func_80123E90(play, &this->actor);
GET_PLAYER(play)->unk_A78 = &this->actor;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
}
this->playerStunWaitTimer = 60;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_REDEAD_AIM);
@@ -829,7 +830,7 @@ void EnRd_Grab(EnRd* this, PlayState* play) {
Animation_PlayLoop(&this->skelAnime, &gGibdoRedeadGrabAttackAnim);
this->grabState++;
play->damagePlayer(play, -8);
func_8013ECE0(this->actor.xzDistToPlayer, 255, 1, 12);
Rumble_Request(this->actor.xzDistToPlayer, 255, 1, 12);
this->grabDamageTimer = 20;
case EN_RD_GRAB_START:
@@ -877,7 +878,7 @@ void EnRd_Grab(EnRd* this, PlayState* play) {
this->grabDamageTimer--;
if (this->grabDamageTimer == 0) {
play->damagePlayer(play, -8);
func_8013ECE0(this->actor.xzDistToPlayer, 240, 1, 12);
Rumble_Request(this->actor.xzDistToPlayer, 240, 1, 12);
this->grabDamageTimer = 20;
func_800B8E58(player, player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S);
}
@@ -917,7 +918,7 @@ void EnRd_AttemptPlayerFreeze(EnRd* this, PlayState* play) {
if (ABS_ALT(yaw) < 0x2008) {
if (!(this->flags & EN_RD_FLAG_CANNOT_FREEZE_PLAYER)) {
player->actor.freezeTimer = 60;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
func_80123E90(play, &this->actor);
}
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_REDEAD_AIM);
+2 -1
View File
@@ -5,6 +5,7 @@
*/
#include "z_en_rr.h"
#include "z64rumble.h"
#include "objects/object_rr/object_rr.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_400)
@@ -628,7 +629,7 @@ void func_808FB088(EnRr* this, PlayState* play) {
void func_808FB1C0(EnRr* this, PlayState* play) {
Player* player = GET_PLAYER(play);
func_8013ECE0(this->actor.xyzDistToPlayerSq, 120, 2, 120);
Rumble_Request(this->actor.xyzDistToPlayerSq, 120, 2, 120);
if (!(this->unk_1E4 & 7)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_EYEGOLE_DEMO_EYE);
}
@@ -5,6 +5,7 @@
*/
#include "z_en_talk_gibud.h"
#include "z64rumble.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_400)
@@ -310,7 +311,7 @@ void EnTalkGibud_AttemptPlayerFreeze(EnTalkGibud* this, PlayState* play) {
if (ABS_ALT(yaw) < 0x2008) {
player->actor.freezeTimer = 60;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
func_80123E90(play, &this->actor);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_REDEAD_AIM);
EnTalkGibud_SetupWalkToPlayer(this);
@@ -355,7 +356,7 @@ void EnTalkGibud_WalkToPlayer(EnTalkGibud* this, PlayState* play) {
if (this->playerStunWaitTimer == 0) {
player->actor.freezeTimer = 40;
this->playerStunWaitTimer = 60;
func_8013ECE0(this->actor.xzDistToPlayer, 255, 20, 150);
Rumble_Request(this->actor.xzDistToPlayer, 255, 20, 150);
func_80123E90(play, &this->actor);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_REDEAD_AIM);
} else {
@@ -409,7 +410,7 @@ void EnTalkGibud_Grab(EnTalkGibud* this, PlayState* play) {
damageSfxId = player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S;
play->damagePlayer(play, -8);
func_800B8E58(player, damageSfxId);
func_8013ECE0(this->actor.xzDistToPlayer, 240, 1, 12);
Rumble_Request(this->actor.xzDistToPlayer, 240, 1, 12);
this->grabDamageTimer = 0;
} else {
this->grabDamageTimer++;
@@ -5,6 +5,7 @@
*/
#include "z_obj_hugebombiwa.h"
#include "z64rumble.h"
#include "objects/object_bombiwa/object_bombiwa.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -298,7 +299,7 @@ void func_80A54980(ObjHugebombiwa* this, PlayState* play, s32 arg2) {
Quake_SetSpeed(quake, 0x4E20);
Quake_SetQuakeValues(quake, arg2, 0, 0, 0);
Quake_SetCountdown(quake, 7);
func_8013ECE0(this->actor.xyzDistToPlayerSq, 255, 20, 150);
Rumble_Request(this->actor.xyzDistToPlayerSq, 255, 20, 150);
}
s32 func_80A54A0C(ObjHugebombiwa* this) {
@@ -5,6 +5,7 @@
*/
#include "z_obj_switch.h"
#include "z64rumble.h"
#include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -563,7 +564,7 @@ void ObjSwitch_FloorSwitchPushDown(ObjSwitch* this, PlayState* play) {
this->dyna.actor.scale.y -= 0.0495f;
if (this->dyna.actor.scale.y <= this->floorSwitchDownScale) {
ObjSwitch_PlayFootSwitchSfx(this);
func_8013ECE0(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
ObjSwitch_StopCutscene(this);
ObjSwitch_FloorSwitchDownInit(this);
}
@@ -864,7 +865,7 @@ void ObjSwitch_LargeFloorSwitchPushDown(ObjSwitch* this, PlayState* play) {
this->dyna.actor.scale.y -= 0.074250005f;
if (this->dyna.actor.scale.y <= 33.0f / 2000.0f) {
ObjSwitch_PlayFootSwitchSfx(this);
func_8013ECE0(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
ObjSwitch_StopCutscene(this);
ObjSwitch_LargeFloorSwitchDownInit(this);
}
@@ -5,6 +5,7 @@
*/
#include "z_obj_tokei_step.h"
#include "z64rumble.h"
#include "objects/object_tokei_step/object_tokei_step.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_400000)
@@ -66,7 +67,7 @@ void ObjTokeiStep_AddQuake(ObjTokeiStep* this, PlayState* play) {
Quake_SetSpeed(quake, 20000);
Quake_SetQuakeValues(quake, 1, 0, 0, 0);
Quake_SetCountdown(quake, 7);
func_8013ECE0(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
Rumble_Request(this->dyna.actor.xyzDistToPlayerSq, 120, 20, 10);
}
void ObjTokeiStep_SpawnDust(ObjTokeiStep* this, ObjTokeiStepPanel* panel, PlayState* play) {
@@ -5,6 +5,7 @@
*/
#include "global.h"
#include "z64rumble.h"
#define THIS ((Player*)thisx)
@@ -5,6 +5,7 @@
*/
#include "z_file_choose.h"
#include "z64rumble.h"
extern UNK_TYPE D_01002800;
extern UNK_TYPE D_01007980;
@@ -5,6 +5,7 @@
*/
#include "z_file_choose.h"
#include "z64rumble.h"
extern UNK_TYPE D_01002800;
extern UNK_TYPE D_01007980;
@@ -5,6 +5,7 @@
*/
#include "z_file_choose.h"
#include "z64rumble.h"
extern UNK_TYPE D_01002800;
extern UNK_TYPE D_01007980;