1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-01-14 12:17:08 +00:00

Document Surface Material (#1447)

* material

* cleanup

* iron boots

* climb

* more docs

* rename

* small fix

* comments

* adjust bug comment

* simplify comment
This commit is contained in:
engineer124 2022-11-26 18:11:06 -05:00 committed by GitHub
parent 92f081d7f3
commit c7a61aa670
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 263 additions and 231 deletions

View file

@ -602,8 +602,8 @@ s32 SurfaceType_CheckWallFlag2(CollisionContext* colCtx, CollisionPoly* poly, s3
u32 SurfaceType_GetFloorProperty(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_GetFloorProperty(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_IsSoft(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_IsSoft(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_GetSfxType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_GetMaterial(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u16 SurfaceType_GetSfxId(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u16 SurfaceType_GetSfxOffset(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_GetFloorEffect(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_GetFloorEffect(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_GetLightSetting(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_GetLightSetting(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_GetEcho(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_GetEcho(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);

View file

@ -58,6 +58,7 @@ typedef struct {
#define DEFINE_SFX(enum, _1, _2, _3, _4) enum, #define DEFINE_SFX(enum, _1, _2, _3, _4) enum,
typedef enum { typedef enum {
NA_SE_NONE, // Requesting a sfx with this id will play no sound
NA_SE_PL_BASE = 0x7FF, NA_SE_PL_BASE = 0x7FF,
#include "tables/sfx/playerbank_table.h" #include "tables/sfx/playerbank_table.h"
NA_SE_IT_BASE = 0x17FF, NA_SE_IT_BASE = 0x17FF,

View file

@ -162,22 +162,41 @@ typedef enum {
} FloorProperty; } FloorProperty;
typedef enum { typedef enum {
/* 0 */ SURFACE_SFX_TYPE_0, /* 0 */ SURFACE_SFX_OFFSET_DIRT,
/* 1 */ SURFACE_SFX_TYPE_1, /* 1 */ SURFACE_SFX_OFFSET_SAND,
/* 2 */ SURFACE_SFX_TYPE_2, /* 2 */ SURFACE_SFX_OFFSET_STONE,
/* 3 */ SURFACE_SFX_TYPE_3, /* 3 */ SURFACE_SFX_OFFSET_JABU,
/* 4 */ SURFACE_SFX_TYPE_4, /* 4 */ SURFACE_SFX_OFFSET_WATER_SHALLOW,
/* 5 */ SURFACE_SFX_TYPE_5, /* 5 */ SURFACE_SFX_OFFSET_WATER_DEEP,
/* 6 */ SURFACE_SFX_TYPE_6, /* 6 */ SURFACE_SFX_OFFSET_TALL_GRASS,
/* 7 */ SURFACE_SFX_TYPE_7, /* 7 */ SURFACE_SFX_OFFSET_LAVA, // MAGMA?
/* 8 */ SURFACE_SFX_TYPE_8, /* 8 */ SURFACE_SFX_OFFSET_GRASS,
/* 9 */ SURFACE_SFX_TYPE_9, /* 9 */ SURFACE_SFX_OFFSET_CARPET,
/* 10 */ SURFACE_SFX_TYPE_10, /* 10 */ SURFACE_SFX_OFFSET_WOOD,
/* 11 */ SURFACE_SFX_TYPE_11, /* 11 */ SURFACE_SFX_OFFSET_BRIDGE, // WOOD_PLANK?
/* 12 */ SURFACE_SFX_TYPE_12, /* 12 */ SURFACE_SFX_OFFSET_VINE,
/* 13 */ SURFACE_SFX_TYPE_13, /* 13 */ SURFACE_SFX_OFFSET_IRON_BOOTS,
/* 14 */ SURFACE_SFX_TYPE_MAX /* 14 */ SURFACE_SFX_OFFSET_UNUSED,
} SurfaceSfxType; /* 15 */ SURFACE_SFX_OFFSET_ICE
} SurfaceSfxOffset;
typedef enum {
/* 0 */ SURFACE_MATERIAL_DIRT,
/* 1 */ SURFACE_MATERIAL_SAND,
/* 2 */ SURFACE_MATERIAL_STONE,
/* 3 */ SURFACE_MATERIAL_JABU,
/* 4 */ SURFACE_MATERIAL_WATER_SHALLOW,
/* 5 */ SURFACE_MATERIAL_WATER_DEEP,
/* 6 */ SURFACE_MATERIAL_TALL_GRASS,
/* 7 */ SURFACE_MATERIAL_LAVA, // MAGMA?
/* 8 */ SURFACE_MATERIAL_GRASS,
/* 9 */ SURFACE_MATERIAL_BRIDGE, // WOOD_PLANK?
/* 10 */ SURFACE_MATERIAL_WOOD,
/* 11 */ SURFACE_MATERIAL_DIRT_SOFT,
/* 12 */ SURFACE_MATERIAL_ICE,
/* 13 */ SURFACE_MATERIAL_CARPET,
/* 14 */ SURFACE_MATERIAL_MAX
} SurfaceMaterial;
typedef enum { typedef enum {
/* 0 */ FLOOR_EFFECT_0, /* 0 */ FLOOR_EFFECT_0,

View file

@ -621,7 +621,7 @@ typedef struct Player {
/* 0x0898 */ s16 unk_898; /* 0x0898 */ s16 unk_898;
/* 0x089A */ s16 unk_89A; /* 0x089A */ s16 unk_89A;
/* 0x089C */ s16 unk_89C; /* 0x089C */ s16 unk_89C;
/* 0x089E */ u16 unk_89E; /* 0x089E */ u16 floorSfxOffset;
/* 0x08A0 */ u8 unk_8A0; /* 0x08A0 */ u8 unk_8A0;
/* 0x08A1 */ u8 unk_8A1; /* 0x08A1 */ u8 unk_8A1;
/* 0x08A2 */ s16 unk_8A2; /* 0x08A2 */ s16 unk_8A2;
@ -643,7 +643,7 @@ typedef struct Player {
/* 0x0A7B */ u8 unk_A7B; /* 0x0A7B */ u8 unk_A7B;
/* 0x0A7C */ f32 unk_A7C; /* 0x0A7C */ f32 unk_A7C;
/* 0x0A80 */ s16 unk_A80; /* 0x0A80 */ s16 unk_A80;
/* 0x0A82 */ u16 unk_A82; /* 0x0A82 */ u16 prevFloorSfxOffset;
/* 0x0A84 */ s16 unk_A84; /* 0x0A84 */ s16 unk_A84;
/* 0x0A86 */ s8 unk_A86; /* 0x0A86 */ s8 unk_A86;
/* 0x0A87 */ u8 unk_A87; /* 0x0A87 */ u8 unk_A87;

View file

@ -1701,20 +1701,20 @@ void Audio_PlayActorSfx2(Actor* actor, u16 sfxId) {
} }
void func_8002F850(PlayState* play, Actor* actor) { void func_8002F850(PlayState* play, Actor* actor) {
s32 sfxId; s32 surfaceSfxOffset;
if (actor->bgCheckFlags & BGCHECKFLAG_WATER) { if (actor->bgCheckFlags & BGCHECKFLAG_WATER) {
if (actor->yDistToWater < 20.0f) { if (actor->yDistToWater < 20.0f) {
sfxId = NA_SE_PL_WALK_WATER0 - SFX_FLAG; surfaceSfxOffset = SURFACE_SFX_OFFSET_WATER_SHALLOW;
} else { } else {
sfxId = NA_SE_PL_WALK_WATER1 - SFX_FLAG; surfaceSfxOffset = SURFACE_SFX_OFFSET_WATER_DEEP;
} }
} else { } else {
sfxId = SurfaceType_GetSfxId(&play->colCtx, actor->floorPoly, actor->floorBgId); surfaceSfxOffset = SurfaceType_GetSfxOffset(&play->colCtx, actor->floorPoly, actor->floorBgId);
} }
func_80078914(&actor->projectedPos, NA_SE_EV_BOMB_BOUND); func_80078914(&actor->projectedPos, NA_SE_EV_BOMB_BOUND);
func_80078914(&actor->projectedPos, sfxId + SFX_FLAG); func_80078914(&actor->projectedPos, NA_SE_PL_WALK_GROUND + surfaceSfxOffset);
} }
void func_8002F8F0(Actor* actor, u16 sfxId) { void func_8002F8F0(Actor* actor, u16 sfxId) {
@ -1740,15 +1740,18 @@ void func_8002F974(Actor* actor, u16 sfxId) {
actor->sfx = sfxId; actor->sfx = sfxId;
} }
void func_8002F994(Actor* actor, s32 arg1) { void func_8002F994(Actor* actor, s32 timer) {
actor->flags |= ACTOR_FLAG_28; actor->flags |= ACTOR_FLAG_28;
actor->flags &= ~(ACTOR_FLAG_19 | ACTOR_FLAG_20 | ACTOR_FLAG_21); actor->flags &= ~(ACTOR_FLAG_19 | ACTOR_FLAG_20 | ACTOR_FLAG_21);
if (arg1 < 40) {
actor->sfx = NA_SE_PL_WALK_DIRT - SFX_FLAG; // The sfx field is not used for an actual sound effect here.
} else if (arg1 < 100) { // Instead, it controls the tick speed of the timer sound effect.
actor->sfx = NA_SE_PL_WALK_CONCRETE - SFX_FLAG; if (timer < 40) {
actor->sfx = 3;
} else if (timer < 100) {
actor->sfx = 2;
} else { } else {
actor->sfx = NA_SE_PL_WALK_SAND - SFX_FLAG; actor->sfx = 1;
} }
} }

View file

@ -68,21 +68,21 @@ s32 D_80119D90[WALL_TYPE_MAX] = {
WALL_FLAG_6, // WALL_TYPE_7 WALL_FLAG_6, // WALL_TYPE_7
}; };
u16 D_80119E10[SURFACE_SFX_TYPE_MAX] = { u16 sSurfaceMaterialToSfxOffset[SURFACE_MATERIAL_MAX] = {
NA_SE_PL_WALK_GROUND - SFX_FLAG, // SURFACE_SFX_TYPE_0 SURFACE_SFX_OFFSET_DIRT, // SURFACE_MATERIAL_DIRT
NA_SE_PL_WALK_SAND - SFX_FLAG, // SURFACE_SFX_TYPE_1 SURFACE_SFX_OFFSET_SAND, // SURFACE_MATERIAL_SAND
NA_SE_PL_WALK_CONCRETE - SFX_FLAG, // SURFACE_SFX_TYPE_2 SURFACE_SFX_OFFSET_STONE, // SURFACE_MATERIAL_STONE
NA_SE_PL_WALK_DIRT - SFX_FLAG, // SURFACE_SFX_TYPE_3 SURFACE_SFX_OFFSET_JABU, // SURFACE_MATERIAL_JABU
NA_SE_PL_WALK_WATER0 - SFX_FLAG, // SURFACE_SFX_TYPE_4 SURFACE_SFX_OFFSET_WATER_SHALLOW, // SURFACE_MATERIAL_WATER_SHALLOW
NA_SE_PL_WALK_WATER1 - SFX_FLAG, // SURFACE_SFX_TYPE_5 SURFACE_SFX_OFFSET_WATER_DEEP, // SURFACE_MATERIAL_WATER_DEEP
NA_SE_PL_WALK_WATER2 - SFX_FLAG, // SURFACE_SFX_TYPE_6 SURFACE_SFX_OFFSET_TALL_GRASS, // SURFACE_MATERIAL_TALL_GRASS
NA_SE_PL_WALK_MAGMA - SFX_FLAG, // SURFACE_SFX_TYPE_7 SURFACE_SFX_OFFSET_LAVA, // SURFACE_MATERIAL_LAVA
NA_SE_PL_WALK_GRASS - SFX_FLAG, // SURFACE_SFX_TYPE_8 SURFACE_SFX_OFFSET_GRASS, // SURFACE_MATERIAL_GRASS
NA_SE_PL_WALK_GLASS - SFX_FLAG, // SURFACE_SFX_TYPE_9 SURFACE_SFX_OFFSET_BRIDGE, // SURFACE_MATERIAL_BRIDGE
NA_SE_PL_WALK_LADDER - SFX_FLAG, // SURFACE_SFX_TYPE_10 SURFACE_SFX_OFFSET_WOOD, // SURFACE_MATERIAL_WOOD
NA_SE_PL_WALK_GROUND - SFX_FLAG, // SURFACE_SFX_TYPE_11 SURFACE_SFX_OFFSET_DIRT, // SURFACE_MATERIAL_DIRT_SOFT
NA_SE_PL_WALK_ICE - SFX_FLAG, // SURFACE_SFX_TYPE_12 SURFACE_SFX_OFFSET_ICE, // SURFACE_MATERIAL_ICE
NA_SE_PL_WALK_IRON - SFX_FLAG, // SURFACE_SFX_TYPE_13 SURFACE_SFX_OFFSET_CARPET, // SURFACE_MATERIAL_CARPET
}; };
/** /**
@ -4111,17 +4111,17 @@ u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s3
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 31 & 1; return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 31 & 1;
} }
u32 SurfaceType_GetSfxType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) { u32 SurfaceType_GetMaterial(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
return SurfaceType_GetData(colCtx, poly, bgId, 1) & 0xF; return SurfaceType_GetData(colCtx, poly, bgId, 1) & 0xF;
} }
u16 SurfaceType_GetSfxId(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) { u16 SurfaceType_GetSfxOffset(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
s32 sfxType = SurfaceType_GetSfxType(colCtx, poly, bgId); s32 surfaceMaterial = SurfaceType_GetMaterial(colCtx, poly, bgId);
if (sfxType < 0 || sfxType >= ARRAY_COUNT(D_80119E10)) { if ((surfaceMaterial < 0) || (surfaceMaterial >= ARRAY_COUNT(sSurfaceMaterialToSfxOffset))) {
return NA_SE_PL_WALK_GROUND - SFX_FLAG; return SURFACE_SFX_OFFSET_DIRT;
} }
return D_80119E10[sfxType]; return sSurfaceMaterialToSfxOffset[surfaceMaterial];
} }
u32 SurfaceType_GetFloorEffect(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) { u32 SurfaceType_GetFloorEffect(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {

View file

@ -4501,7 +4501,7 @@ s32 Camera_Subj4(Camera* camera) {
if ((eyeLerp > rwData->eyeLerp) && !rwData->isSfxOff) { if ((eyeLerp > rwData->eyeLerp) && !rwData->isSfxOff) {
player = camera->player; player = camera->player;
rwData->isSfxOff = true; rwData->isSfxOff = true;
func_800F4010(&player->actor.projectedPos, NA_SE_PL_CRAWL + player->unk_89E, 4.0f); func_800F4010(&player->actor.projectedPos, NA_SE_PL_CRAWL + player->floorSfxOffset, 4.0f);
} else if (eyeLerp < rwData->eyeLerp) { } else if (eyeLerp < rwData->eyeLerp) {
rwData->isSfxOff = false; rwData->isSfxOff = false;
} }

View file

@ -1610,11 +1610,11 @@ s32 CollisionCheck_SwordHitAudio(Collider* at, ColliderInfo* acInfo) {
Audio_PlaySfxGeneral(NA_SE_IT_SWORD_STRIKE_HARD, &at->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale, Audio_PlaySfxGeneral(NA_SE_IT_SWORD_STRIKE_HARD, &at->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
} else if (acInfo->elemType == ELEMTYPE_UNK2) { } else if (acInfo->elemType == ELEMTYPE_UNK2) {
Audio_PlaySfxGeneral(NA_SE_PL_WALK_GROUND - SFX_FLAG, &at->actor->projectedPos, 4, Audio_PlaySfxGeneral(NA_SE_NONE, &at->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
} else if (acInfo->elemType == ELEMTYPE_UNK3) { } else if (acInfo->elemType == ELEMTYPE_UNK3) {
Audio_PlaySfxGeneral(NA_SE_PL_WALK_GROUND - SFX_FLAG, &at->actor->projectedPos, 4, Audio_PlaySfxGeneral(NA_SE_NONE, &at->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
} }
} }
return true; return true;

View file

@ -3172,8 +3172,7 @@ void Message_Update(PlayState* play) {
R_TEXTBOX_TEXHEIGHT = 512; R_TEXTBOX_TEXHEIGHT = 512;
} else { } else {
Message_GrowTextbox(msgCtx); Message_GrowTextbox(msgCtx);
// TODO: this may be NA_SE_PL_WALK_GROUND - SFX_FLAG, or not, investigate sfxId=0 Audio_PlaySfxIfNotInCutscene(NA_SE_NONE);
Audio_PlaySfxIfNotInCutscene(0);
msgCtx->stateTimer = 0; msgCtx->stateTimer = 0;
msgCtx->msgMode = MSGMODE_TEXT_BOX_GROWING; msgCtx->msgMode = MSGMODE_TEXT_BOX_GROWING;
} }

View file

@ -251,9 +251,9 @@ void func_8088B79C(BgHidanRock* this, PlayState* play) {
} }
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_BLOCK_BOUND); Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_BLOCK_BOUND);
Audio_PlayActorSfx2( Audio_PlayActorSfx2(&this->dyna.actor,
&this->dyna.actor, NA_SE_PL_WALK_GROUND + SurfaceType_GetSfxOffset(&play->colCtx, this->dyna.actor.floorPoly,
SurfaceType_GetSfxId(&play->colCtx, this->dyna.actor.floorPoly, this->dyna.actor.floorBgId) + SFX_FLAG); this->dyna.actor.floorBgId));
} }
this->unk_16C -= 0.5f; this->unk_16C -= 0.5f;

View file

@ -2465,7 +2465,7 @@ void BossGanon_HitByLightBall(BossGanon* this, PlayState* play) {
BossGanonEff_SpawnSparkle(play, &this->unk_1FC, &sp50, &sZeroVec, Rand_ZeroFloat(200.0f) + 500.0f, BossGanonEff_SpawnSparkle(play, &this->unk_1FC, &sp50, &sZeroVec, Rand_ZeroFloat(200.0f) + 500.0f,
0x14); 0x14);
} }
Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_WATER2); Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_TALL_GRASS);
} }
if (Animation_OnFrame(&this->skelAnime, this->fwork[GDF_FWORK_1])) { if (Animation_OnFrame(&this->skelAnime, this->fwork[GDF_FWORK_1])) {
@ -2647,7 +2647,7 @@ void BossGanon_Vulnerable(BossGanon* this, PlayState* play) {
0x14); 0x14);
} }
Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_WATER2); Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_TALL_GRASS);
this->timers[3] = 50; this->timers[3] = 50;
} }

View file

@ -1239,7 +1239,7 @@ void BossGanondrof_CollisionCheck(BossGanondrof* this, PlayState* play) {
} }
if (this->flyMode != GND_FLY_PAINTING) { if (this->flyMode != GND_FLY_PAINTING) {
if (acHit && (this->actionFunc != BossGanondrof_Stunned) && (hurtbox->toucher.dmgFlags & DMG_RANGED)) { if (acHit && (this->actionFunc != BossGanondrof_Stunned) && (hurtbox->toucher.dmgFlags & DMG_RANGED)) {
Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_GROUND - SFX_FLAG); Audio_PlayActorSfx2(&this->actor, NA_SE_NONE);
osSyncPrintf("hit != 0 \n"); osSyncPrintf("hit != 0 \n");
} else if (this->actionFunc != BossGanondrof_Charge) { } else if (this->actionFunc != BossGanondrof_Charge) {
if (this->returnCount == 0) { if (this->returnCount == 0) {
@ -1270,7 +1270,7 @@ void BossGanondrof_CollisionCheck(BossGanondrof* this, PlayState* play) {
horse->hitTimer = 20; horse->hitTimer = 20;
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_FANTOM_DAMAGE); Audio_PlayActorSfx2(&this->actor, NA_SE_EN_FANTOM_DAMAGE);
} else { } else {
Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_GROUND - SFX_FLAG); Audio_PlayActorSfx2(&this->actor, NA_SE_NONE);
} }
} else if (acHit && (hurtbox->toucher.dmgFlags & DMG_RANGED)) { } else if (acHit && (hurtbox->toucher.dmgFlags & DMG_RANGED)) {
this->work[GND_INVINC_TIMER] = 10; this->work[GND_INVINC_TIMER] = 10;

View file

@ -3040,53 +3040,56 @@ void BossMo_Unknown(void) {
// Appears to be a test function for sound effects. // Appears to be a test function for sound effects.
static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f }; static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
static u16 unkSfx[] = { static u16 unkSfx[] = {
NA_SE_PL_WALK_GROUND, // Walking
NA_SE_PL_WALK_GROUND, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_WALK_GROUND, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_WALK_SAND, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_WALK_CONCRETE, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_SAND,
NA_SE_PL_WALK_DIRT, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_STONE,
NA_SE_PL_WALK_WATER0, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_JABU,
NA_SE_PL_WALK_WATER1, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WATER_SHALLOW,
NA_SE_PL_WALK_WATER2, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WATER_DEEP,
NA_SE_PL_WALK_MAGMA, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_TALL_GRASS,
NA_SE_PL_WALK_GRASS, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_LAVA,
NA_SE_PL_WALK_GLASS, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_GRASS,
NA_SE_PL_WALK_LADDER, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_WALK_GLASS, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD,
NA_SE_PL_WALK_WALL, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_WALK_HEAVYBOOTS, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_VINE,
NA_SE_PL_WALK_ICE, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_IRON_BOOTS,
NA_SE_PL_JUMP, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_ICE,
NA_SE_PL_JUMP, // Jumping
NA_SE_PL_JUMP_SAND, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_JUMP_CONCRETE, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_JUMP_DIRT, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_SAND,
NA_SE_PL_JUMP_WATER0, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_STONE,
NA_SE_PL_JUMP_WATER1, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_JABU,
NA_SE_PL_JUMP_WATER2, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_WATER_SHALLOW,
NA_SE_PL_JUMP_MAGMA, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_WATER_DEEP,
NA_SE_PL_JUMP_GRASS, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_TALL_GRASS,
NA_SE_PL_JUMP_GLASS, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_LAVA,
NA_SE_PL_JUMP_LADDER, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_GRASS,
NA_SE_PL_JUMP_GLASS, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_JUMP_HEAVYBOOTS, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_WOOD,
NA_SE_PL_JUMP_ICE, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_LAND, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_IRON_BOOTS,
NA_SE_PL_LAND, NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_ICE,
NA_SE_PL_LAND_SAND, // Landing
NA_SE_PL_LAND_CONCRETE, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_LAND_DIRT, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_LAND_WATER0, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_SAND,
NA_SE_PL_LAND_WATER1, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_STONE,
NA_SE_PL_LAND_WATER2, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_JABU,
NA_SE_PL_LAND_MAGMA, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_WATER_SHALLOW,
NA_SE_PL_LAND_GRASS, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_WATER_DEEP,
NA_SE_PL_LAND_GLASS, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_TALL_GRASS,
NA_SE_PL_LAND_LADDER, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_LAVA,
NA_SE_PL_LAND_GLASS, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_GRASS,
NA_SE_PL_LAND_HEAVYBOOTS, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_LAND_ICE, NA_SE_PL_LAND + SURFACE_SFX_OFFSET_WOOD,
NA_SE_PL_LAND + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_LAND + SURFACE_SFX_OFFSET_IRON_BOOTS,
NA_SE_PL_LAND + SURFACE_SFX_OFFSET_ICE,
NA_SE_PL_SLIPDOWN, NA_SE_PL_SLIPDOWN,
NA_SE_PL_CLIMB_CLIFF, NA_SE_PL_CLIMB_CLIFF,
NA_SE_PL_CLIMB_CLIFF, NA_SE_PL_CLIMB_CLIFF,
@ -3114,37 +3117,39 @@ void BossMo_Unknown(void) {
NA_SE_PL_SKIP, NA_SE_PL_SKIP,
NA_SE_PL_BODY_HIT, NA_SE_PL_BODY_HIT,
NA_SE_PL_DAMAGE, NA_SE_PL_DAMAGE,
NA_SE_PL_SLIP, // Slipping
NA_SE_PL_SLIP, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_SLIP, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_SLIP_SAND, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_SLIP_CONCRETE, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_SAND,
NA_SE_PL_SLIP_DIRT, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_STONE,
NA_SE_PL_SLIP_WATER0, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_JABU,
NA_SE_PL_SLIP_WATER1, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_WATER_SHALLOW,
NA_SE_PL_SLIP_WATER2, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_WATER_DEEP,
NA_SE_PL_SLIP_MAGMA, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_TALL_GRASS,
NA_SE_PL_SLIP_GRASS, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_LAVA,
NA_SE_PL_SLIP_GLASS, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_GRASS,
NA_SE_PL_SLIP_LADDER, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_SLIP_GLASS, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_WOOD,
NA_SE_PL_SLIP_HEAVYBOOTS, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_SLIP_ICE, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_IRON_BOOTS,
NA_SE_PL_BOUND, NA_SE_PL_SLIP + SURFACE_SFX_OFFSET_ICE,
NA_SE_PL_BOUND, // Bound
NA_SE_PL_BOUND_SAND, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_BOUND_CONCRETE, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_DIRT,
NA_SE_PL_BOUND_DIRT, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_SAND,
NA_SE_PL_BOUND_WATER0, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_STONE,
NA_SE_PL_BOUND_WATER1, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_JABU,
NA_SE_PL_BOUND_WATER2, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_WATER_SHALLOW,
NA_SE_PL_BOUND_MAGMA, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_WATER_DEEP,
NA_SE_PL_BOUND_GRASS, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_TALL_GRASS,
NA_SE_PL_BOUND_WOOD, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_LAVA,
NA_SE_PL_BOUND_LADDER, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_GRASS,
NA_SE_PL_BOUND_WOOD, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_BOUND_HEAVYBOOTS, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_WOOD,
NA_SE_PL_BOUND_ICE, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_BRIDGE,
NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_IRON_BOOTS,
NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_ICE,
NA_SE_PL_FACE_UP, NA_SE_PL_FACE_UP,
NA_SE_PL_DIVE_BUBBLE, NA_SE_PL_DIVE_BUBBLE,
NA_SE_PL_MOVE_BUBBLE, NA_SE_PL_MOVE_BUBBLE,
@ -3175,8 +3180,8 @@ void BossMo_Unknown(void) {
NA_SE_IT_ARROW_STICK_CRE, NA_SE_IT_ARROW_STICK_CRE,
NA_SE_IT_ARROW_STICK_CRE, NA_SE_IT_ARROW_STICK_CRE,
NA_SE_IT_ARROW_STICK_OBJ, NA_SE_IT_ARROW_STICK_OBJ,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_IT_SWORD_SWING_HARD, NA_SE_IT_SWORD_SWING_HARD,
NA_SE_IT_WALL_HIT_HARD, NA_SE_IT_WALL_HIT_HARD,
NA_SE_IT_WALL_HIT_SOFT, NA_SE_IT_WALL_HIT_SOFT,
@ -3289,8 +3294,8 @@ void BossMo_Unknown(void) {
NA_SE_EV_TREE_CUT, NA_SE_EV_TREE_CUT,
NA_SE_EV_WATERDROP, NA_SE_EV_WATERDROP,
NA_SE_EV_TORCH, NA_SE_EV_TORCH,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_EN_DODO_J_WALK, NA_SE_EN_DODO_J_WALK,
NA_SE_EN_DODO_J_CRY, NA_SE_EN_DODO_J_CRY,
NA_SE_EN_DODO_J_FIRE - SFX_FLAG, NA_SE_EN_DODO_J_FIRE - SFX_FLAG,
@ -3441,13 +3446,13 @@ void BossMo_Unknown(void) {
NA_SE_EN_OCTAROCK_LAND, NA_SE_EN_OCTAROCK_LAND,
NA_SE_EN_OCTAROCK_SINK, NA_SE_EN_OCTAROCK_SINK,
NA_SE_EN_OCTAROCK_BUBLE, NA_SE_EN_OCTAROCK_BUBLE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_SY_WIN_OPEN, NA_SE_SY_WIN_OPEN,
NA_SE_SY_WIN_CLOSE, NA_SE_SY_WIN_CLOSE,
NA_SE_SY_CORRECT_CHIME, NA_SE_SY_CORRECT_CHIME,
@ -3463,7 +3468,7 @@ void BossMo_Unknown(void) {
NA_SE_SY_HP_RECOVER, NA_SE_SY_HP_RECOVER,
NA_SE_SY_ATTENTION_ON, NA_SE_SY_ATTENTION_ON,
NA_SE_SY_ATTENTION_ON, NA_SE_SY_ATTENTION_ON,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_SY_LOCK_ON, NA_SE_SY_LOCK_ON,
NA_SE_SY_LOCK_ON, NA_SE_SY_LOCK_ON,
NA_SE_SY_LOCK_OFF, NA_SE_SY_LOCK_OFF,
@ -3473,9 +3478,9 @@ void BossMo_Unknown(void) {
NA_SE_SY_ATTENTION_ON_OLD, NA_SE_SY_ATTENTION_ON_OLD,
NA_SE_SY_ATTENTION_URGENCY, NA_SE_SY_ATTENTION_URGENCY,
NA_SE_SY_MESSAGE_PASS, NA_SE_SY_MESSAGE_PASS,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_SY_PIECE_OF_HEART, NA_SE_SY_PIECE_OF_HEART,
NA_SE_SY_GET_ITEM, NA_SE_SY_GET_ITEM,
NA_SE_SY_WIN_SCROLL_LEFT, NA_SE_SY_WIN_SCROLL_LEFT,
@ -3488,7 +3493,7 @@ void BossMo_Unknown(void) {
NA_SE_SY_ATTENTION_ON, NA_SE_SY_ATTENTION_ON,
NA_SE_SY_ATTENTION_URGENCY, NA_SE_SY_ATTENTION_URGENCY,
NA_SE_OC_OCARINA, NA_SE_OC_OCARINA,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_LAND - SFX_FLAG, NA_SE_PL_LAND - SFX_FLAG,
NA_SE_VO_LI_SWORD_N, NA_SE_VO_LI_SWORD_N,
NA_SE_VO_LI_SWORD_N, NA_SE_VO_LI_SWORD_N,
@ -3566,12 +3571,12 @@ void BossMo_Unknown(void) {
NA_SE_EN_DEADHAND_BITE, NA_SE_EN_DEADHAND_BITE,
NA_SE_EN_DEADHAND_WALK, NA_SE_EN_DEADHAND_WALK,
NA_SE_EN_DEADHAND_GRIP, NA_SE_EN_DEADHAND_GRIP,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
NA_SE_PL_WALK_GROUND - SFX_FLAG, NA_SE_NONE,
}; };
if (BREG(32) != 0) { if (BREG(32) != 0) {

View file

@ -717,9 +717,9 @@ void func_8098652C(DemoIm* this, PlayState* play) {
void func_80986570(DemoIm* this, PlayState* play) { void func_80986570(DemoIm* this, PlayState* play) {
if (Animation_OnFrame(&this->skelAnime, 7.0f) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { if (Animation_OnFrame(&this->skelAnime, 7.0f) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) {
u32 sfxId = SFX_FLAG; u32 sfxId = NA_SE_PL_WALK_GROUND;
sfxId += SurfaceType_GetSfxId(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); sfxId += SurfaceType_GetSfxOffset(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
Audio_PlaySfxGeneral(sfxId, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, Audio_PlaySfxGeneral(sfxId, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
} }

View file

@ -241,7 +241,7 @@ void EnEncount1_SpawnStalchildOrWolfos(EnEncount1* this, PlayState* play) {
if ((this->curNumSpawn < this->maxCurSpawns) && (this->totalNumSpawn < this->maxTotalSpawns)) { if ((this->curNumSpawn < this->maxCurSpawns) && (this->totalNumSpawn < this->maxTotalSpawns)) {
while ((this->curNumSpawn < this->maxCurSpawns) && (this->totalNumSpawn < this->maxTotalSpawns)) { while ((this->curNumSpawn < this->maxCurSpawns) && (this->totalNumSpawn < this->maxTotalSpawns)) {
if (play->sceneId == SCENE_HYRULE_FIELD) { if (play->sceneId == SCENE_HYRULE_FIELD) {
if ((player->unk_89E == SURFACE_SFX_TYPE_0) || (player->actor.floorBgId != BGCHECK_SCENE) || if ((player->floorSfxOffset == SURFACE_SFX_OFFSET_DIRT) || (player->actor.floorBgId != BGCHECK_SCENE) ||
!(player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (player->stateFlags1 & PLAYER_STATE1_27)) { !(player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (player->stateFlags1 & PLAYER_STATE1_27)) {
this->fieldSpawnTimer = 60; this->fieldSpawnTimer = 60;

View file

@ -174,8 +174,8 @@ void EnJs_Update(Actor* thisx, PlayState* play) {
Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, UPDBGCHECKINFO_FLAG_2); Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, UPDBGCHECKINFO_FLAG_2);
if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) {
if (SurfaceType_GetSfxId(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId) == if (SurfaceType_GetSfxOffset(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId) ==
(NA_SE_PL_WALK_SAND - SFX_FLAG)) { SURFACE_SFX_OFFSET_SAND) {
Math_ApproachF(&this->actor.shape.yOffset, sREG(80) + -2000.0f, 1.0f, (sREG(81) / 10.0f) + 50.0f); Math_ApproachF(&this->actor.shape.yOffset, sREG(80) + -2000.0f, 1.0f, (sREG(81) / 10.0f) + 50.0f);
} }
} else { } else {

View file

@ -717,7 +717,7 @@ void EnNb_PlayLookRightSFX(EnNb* this) {
s32 pad[2]; s32 pad[2];
if ((this->skelAnime.mode == 2) && Animation_OnFrame(&this->skelAnime, 9.0f)) { if ((this->skelAnime.mode == 2) && Animation_OnFrame(&this->skelAnime, 9.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_CONCRETE); func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_STONE);
} }
} }
@ -725,7 +725,7 @@ void EnNb_PlayLookLeftSFX(EnNb* this) {
s32 pad[2]; s32 pad[2];
if (Animation_OnFrame(&this->skelAnime, 9.0f) || Animation_OnFrame(&this->skelAnime, 13.0f)) { if (Animation_OnFrame(&this->skelAnime, 9.0f) || Animation_OnFrame(&this->skelAnime, 13.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_CONCRETE); func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_STONE);
} }
} }

View file

@ -833,7 +833,7 @@ void func_80AEC650(EnRu1* this) {
if (this->unk_280 == 0) { if (this->unk_280 == 0) {
if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 7.0f)) { if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 7.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_DIRT); func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_JABU);
} }
} }
} }
@ -1899,7 +1899,7 @@ void func_80AEF40C(EnRu1* this) {
if (Animation_OnFrame(skelAnime, 2.0f) || Animation_OnFrame(skelAnime, 7.0f) || if (Animation_OnFrame(skelAnime, 2.0f) || Animation_OnFrame(skelAnime, 7.0f) ||
Animation_OnFrame(skelAnime, 12.0f) || Animation_OnFrame(skelAnime, 18.0f) || Animation_OnFrame(skelAnime, 12.0f) || Animation_OnFrame(skelAnime, 18.0f) ||
Animation_OnFrame(skelAnime, 25.0f) || Animation_OnFrame(skelAnime, 33.0f)) { Animation_OnFrame(skelAnime, 25.0f) || Animation_OnFrame(skelAnime, 33.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_DIRT); func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_JABU);
} }
} }

View file

@ -676,8 +676,8 @@ void func_80AF68E4(EnSa* this, PlayState* play) {
phi_v0 = this->unk_20C; phi_v0 = this->unk_20C;
} }
if (phi_v0 == 0) { if (phi_v0 == 0) {
Audio_PlaySfxGeneral(NA_SE_PL_WALK_GROUND, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, Audio_PlaySfxGeneral(NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_DIRT, &this->actor.projectedPos, 4,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
this->unk_20C = 8; this->unk_20C = 8;
} }
} }

View file

@ -431,7 +431,7 @@ void EnTa_RunWithAccelerationAndSfx(EnTa* this, PlayState* play) {
s32 framesMod12 = (s32)play->state.frames % 12; s32 framesMod12 = (s32)play->state.frames % 12;
if (framesMod12 == 0 || framesMod12 == 6) { if (framesMod12 == 0 || framesMod12 == 6) {
Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_GROUND); Audio_PlayActorSfx2(&this->actor, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_DIRT);
} }
if (this->actor.speedXZ < 6.0f) { if (this->actor.speedXZ < 6.0f) {
this->actor.speedXZ += 0.4f; this->actor.speedXZ += 0.4f;

View file

@ -371,8 +371,8 @@ void EnXc_SetWalkingSFX(EnXc* this, PlayState* play) {
if (Animation_OnFrame(&this->skelAnime, 11.0f) || Animation_OnFrame(&this->skelAnime, 23.0f)) { if (Animation_OnFrame(&this->skelAnime, 11.0f) || Animation_OnFrame(&this->skelAnime, 23.0f)) {
if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) {
sfxId = SFX_FLAG; sfxId = NA_SE_PL_WALK_GROUND;
sfxId += SurfaceType_GetSfxId(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); sfxId += SurfaceType_GetSfxOffset(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
func_80078914(&this->actor.projectedPos, sfxId); func_80078914(&this->actor.projectedPos, sfxId);
} }
} }
@ -385,8 +385,8 @@ void EnXc_SetNutThrowSFX(EnXc* this, PlayState* play) {
if (Animation_OnFrame(&this->skelAnime, 7.0f)) { if (Animation_OnFrame(&this->skelAnime, 7.0f)) {
if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) {
sfxId = SFX_FLAG; sfxId = NA_SE_PL_WALK_GROUND;
sfxId += SurfaceType_GetSfxId(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); sfxId += SurfaceType_GetSfxOffset(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
func_80078914(&this->actor.projectedPos, sfxId); func_80078914(&this->actor.projectedPos, sfxId);
} }
} }
@ -401,8 +401,8 @@ void EnXc_SetLandingSFX(EnXc* this, PlayState* play) {
if ((gSaveContext.sceneLayer != 4) || (sceneId != SCENE_DESERT_COLOSSUS)) { if ((gSaveContext.sceneLayer != 4) || (sceneId != SCENE_DESERT_COLOSSUS)) {
if (Animation_OnFrame(&this->skelAnime, 11.0f)) { if (Animation_OnFrame(&this->skelAnime, 11.0f)) {
sfxId = SFX_FLAG; sfxId = NA_SE_PL_WALK_GROUND;
sfxId += SurfaceType_GetSfxId(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); sfxId += SurfaceType_GetSfxOffset(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
func_80078914(&this->actor.projectedPos, sfxId); func_80078914(&this->actor.projectedPos, sfxId);
} }
} }
@ -429,7 +429,7 @@ void EnXc_SetColossusAppearSFX(EnXc* this, PlayState* play) {
s32 pad; s32 pad;
SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, &pos, &sXyzDist, wDest); SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, &pos, &sXyzDist, wDest);
func_80078914(&sXyzDist, NA_SE_PL_WALK_CONCRETE); func_80078914(&sXyzDist, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_STONE);
} }
} }
} }
@ -1746,14 +1746,14 @@ void EnXc_SetThrownAroundSFX(EnXc* this) {
SkelAnime* skelAnime = &this->skelAnime; SkelAnime* skelAnime = &this->skelAnime;
if (Animation_OnFrame(skelAnime, 9.0f)) { if (Animation_OnFrame(skelAnime, 9.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_BOUND_GRASS); func_80078914(&this->actor.projectedPos, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_GRASS);
func_80078914(&this->actor.projectedPos, NA_SE_VO_SK_CRASH); func_80078914(&this->actor.projectedPos, NA_SE_VO_SK_CRASH);
} else if (Animation_OnFrame(skelAnime, 26.0f)) { } else if (Animation_OnFrame(skelAnime, 26.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_BOUND_GRASS); func_80078914(&this->actor.projectedPos, NA_SE_PL_BOUND + SURFACE_SFX_OFFSET_GRASS);
} else if (Animation_OnFrame(skelAnime, 28.0f)) { } else if (Animation_OnFrame(skelAnime, 28.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GRASS); func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_GRASS);
} else if (Animation_OnFrame(skelAnime, 34.0f)) { } else if (Animation_OnFrame(skelAnime, 34.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GRASS); func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_GRASS);
} }
} }

View file

@ -589,7 +589,7 @@ void func_80B4FD90(EnZl2* this, PlayState* play) {
void func_80B4FDD4(EnZl2* this) { void func_80B4FDD4(EnZl2* this) {
if (Animation_OnFrame(&this->skelAnime, 14.0f)) { if (Animation_OnFrame(&this->skelAnime, 14.0f)) {
func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_CONCRETE); func_80078914(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_STONE);
} }
} }
@ -1436,8 +1436,8 @@ void func_80B51D24(EnZl2* this, PlayState* play) {
if (Animation_OnFrame(skelAnime, 6.0f) || Animation_OnFrame(skelAnime, 0.0f)) { if (Animation_OnFrame(skelAnime, 6.0f) || Animation_OnFrame(skelAnime, 0.0f)) {
if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) {
sfxId = SFX_FLAG; sfxId = NA_SE_PL_WALK_GROUND;
sfxId += SurfaceType_GetSfxId(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); sfxId += SurfaceType_GetSfxOffset(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
func_80078914(&this->actor.projectedPos, sfxId); func_80078914(&this->actor.projectedPos, sfxId);
} }
} }

View file

@ -1541,8 +1541,8 @@ void func_80B56E38(EnZl3* this, PlayState* play) {
if ((Animation_OnFrame(sp20, 6.0f) || Animation_OnFrame(sp20, 0.0f)) && if ((Animation_OnFrame(sp20, 6.0f) || Animation_OnFrame(sp20, 0.0f)) &&
(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) {
sfxId = 0x800; sfxId = NA_SE_PL_WALK_GROUND;
sfxId += SurfaceType_GetSfxId(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); sfxId += SurfaceType_GetSfxOffset(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
func_80078914(&this->actor.projectedPos, sfxId); func_80078914(&this->actor.projectedPos, sfxId);
} }
} }

View file

@ -2479,7 +2479,7 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) {
sLureRot.x = 0.0f; sLureRot.x = 0.0f;
if (CHECK_BTN_ALL(input->press.button, BTN_B)) { if (CHECK_BTN_ALL(input->press.button, BTN_B)) {
D_80B7E144 += 6.0f; D_80B7E144 += 6.0f;
func_80078914(&D_80B7AF94, NA_SE_PL_WALK_SAND); func_80078914(&D_80B7AF94, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_SAND);
} }
} else { } else {
if (D_80B7E144 > 150.0f) { if (D_80B7E144 > 150.0f) {

View file

@ -605,9 +605,10 @@ void ObjOshihiki_Fall(ObjOshihiki* this, PlayState* play) {
ObjOshihiki_SetupOnActor(this, play); ObjOshihiki_SetupOnActor(this, play);
} }
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_BLOCK_BOUND); Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_BLOCK_BOUND);
Audio_PlayActorSfx2(&this->dyna.actor, SurfaceType_GetSfxId(&play->colCtx, this->floorPolys[this->highestFloor], Audio_PlayActorSfx2(&this->dyna.actor,
this->floorBgIds[this->highestFloor]) + NA_SE_PL_WALK_GROUND + SurfaceType_GetSfxOffset(&play->colCtx,
SFX_FLAG); this->floorPolys[this->highestFloor],
this->floorBgIds[this->highestFloor]));
} }
} }

View file

@ -1732,7 +1732,7 @@ void func_808326F0(Player* this) {
} }
u16 func_8083275C(Player* this, u16 sfxId) { u16 func_8083275C(Player* this, u16 sfxId) {
return sfxId + this->unk_89E; return sfxId + this->floorSfxOffset;
} }
void func_80832770(Player* this, u16 sfxId) { void func_80832770(Player* this, u16 sfxId) {
@ -1740,7 +1740,7 @@ void func_80832770(Player* this, u16 sfxId) {
} }
u16 func_808327A4(Player* this, u16 sfxId) { u16 func_808327A4(Player* this, u16 sfxId) {
return sfxId + this->unk_89E + this->ageProperties->unk_94; return sfxId + this->floorSfxOffset + this->ageProperties->unk_94;
} }
void func_808327C4(Player* this, u16 sfxId) { void func_808327C4(Player* this, u16 sfxId) {
@ -1751,7 +1751,7 @@ void func_808327F8(Player* this, f32 arg1) {
s32 sfxId; s32 sfxId;
if (this->currentBoots == PLAYER_BOOTS_IRON) { if (this->currentBoots == PLAYER_BOOTS_IRON) {
sfxId = NA_SE_PL_WALK_HEAVYBOOTS; sfxId = NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_IRON_BOOTS;
} else { } else {
sfxId = func_808327A4(this, NA_SE_PL_WALK_GROUND); sfxId = func_808327A4(this, NA_SE_PL_WALK_GROUND);
} }
@ -1763,7 +1763,7 @@ void func_80832854(Player* this) {
s32 sfxId; s32 sfxId;
if (this->currentBoots == PLAYER_BOOTS_IRON) { if (this->currentBoots == PLAYER_BOOTS_IRON) {
sfxId = NA_SE_PL_JUMP_HEAVYBOOTS; sfxId = NA_SE_PL_JUMP + SURFACE_SFX_OFFSET_IRON_BOOTS;
} else { } else {
sfxId = func_808327A4(this, NA_SE_PL_JUMP); sfxId = func_808327A4(this, NA_SE_PL_JUMP);
} }
@ -1775,7 +1775,7 @@ void func_808328A0(Player* this) {
s32 sfxId; s32 sfxId;
if (this->currentBoots == PLAYER_BOOTS_IRON) { if (this->currentBoots == PLAYER_BOOTS_IRON) {
sfxId = NA_SE_PL_LAND_HEAVYBOOTS; sfxId = NA_SE_PL_LAND + SURFACE_SFX_OFFSET_IRON_BOOTS;
} else { } else {
sfxId = func_808327A4(this, NA_SE_PL_LAND); sfxId = func_808327A4(this, NA_SE_PL_LAND);
} }
@ -1815,7 +1815,8 @@ void func_80832924(Player* this, struct_80832924* entry) {
} else if (flags == 0x4000) { } else if (flags == 0x4000) {
func_808327F8(this, 0.0f); func_808327F8(this, 0.0f);
} else if (flags == 0x4800) { } else if (flags == 0x4800) {
func_800F4010(&this->actor.projectedPos, this->ageProperties->unk_94 + NA_SE_PL_WALK_LADDER, 0.0f); func_800F4010(&this->actor.projectedPos,
NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD + this->ageProperties->unk_94, 0.0f);
} }
} }
cont = (entry->field >= 0); cont = (entry->field >= 0);
@ -5058,7 +5059,7 @@ void func_8083AA10(Player* this, PlayState* play) {
func_80835C58(play, this, func_8084411C, 1); func_80835C58(play, this, func_8084411C, 1);
func_80832440(play, this); func_80832440(play, this);
this->unk_89E = this->unk_A82; this->floorSfxOffset = this->prevFloorSfxOffset;
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND_LEAVE) && !(this->stateFlags1 & PLAYER_STATE1_27) && if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND_LEAVE) && !(this->stateFlags1 & PLAYER_STATE1_27) &&
(D_80853604 != FLOOR_PROPERTY_6) && (D_80853604 != FLOOR_PROPERTY_9) && (D_80853600 > 20.0f) && (D_80853604 != FLOOR_PROPERTY_6) && (D_80853604 != FLOOR_PROPERTY_9) && (D_80853600 > 20.0f) &&
@ -7924,7 +7925,7 @@ static Vec3f D_808545C0 = { 0.0f, 0.0f, 0.0f };
s32 func_8084269C(PlayState* play, Player* this) { s32 func_8084269C(PlayState* play, Player* this) {
Vec3f sp2C; Vec3f sp2C;
if ((this->unk_89E == SURFACE_SFX_TYPE_0) || (this->unk_89E == SURFACE_SFX_TYPE_1)) { if ((this->floorSfxOffset == SURFACE_SFX_OFFSET_DIRT) || (this->floorSfxOffset == SURFACE_SFX_OFFSET_SAND)) {
func_8084260C(&this->actor.shape.feetPos[FOOT_LEFT], &sp2C, func_8084260C(&this->actor.shape.feetPos[FOOT_LEFT], &sp2C,
this->actor.floorHeight - this->actor.shape.feetPos[FOOT_LEFT].y, 7.0f, 5.0f); this->actor.floorHeight - this->actor.shape.feetPos[FOOT_LEFT].y, 7.0f, 5.0f);
func_800286CC(play, &sp2C, &D_808545B4, &D_808545C0, 50, 30); func_800286CC(play, &sp2C, &D_808545B4, &D_808545C0, 50, 30);
@ -8064,13 +8065,13 @@ void func_80842D20(PlayState* play, Player* this) {
s32 func_80842DF4(PlayState* play, Player* this) { s32 func_80842DF4(PlayState* play, Player* this) {
f32 phi_f2; f32 phi_f2;
CollisionPoly* sp78; CollisionPoly* groundPoly;
s32 sp74; s32 bgId;
Vec3f sp68; Vec3f sp68;
Vec3f sp5C; Vec3f sp5C;
Vec3f sp50; Vec3f sp50;
s32 temp1; s32 temp1;
s32 sp48; s32 surfaceMaterial;
if (this->meleeWeaponState > 0) { if (this->meleeWeaponState > 0) {
if (this->meleeWeaponAnimation < PLAYER_MWA_SPIN_ATTACK_1H) { if (this->meleeWeaponAnimation < PLAYER_MWA_SPIN_ATTACK_1H) {
@ -8088,11 +8089,11 @@ s32 func_80842DF4(PlayState* play, Player* this) {
sp68.y = this->meleeWeaponInfo[0].tip.y + (sp50.y * phi_f2); sp68.y = this->meleeWeaponInfo[0].tip.y + (sp50.y * phi_f2);
sp68.z = this->meleeWeaponInfo[0].tip.z + (sp50.z * phi_f2); sp68.z = this->meleeWeaponInfo[0].tip.z + (sp50.z * phi_f2);
if (BgCheck_EntityLineTest1(&play->colCtx, &sp68, &this->meleeWeaponInfo[0].tip, &sp5C, &sp78, true, if (BgCheck_EntityLineTest1(&play->colCtx, &sp68, &this->meleeWeaponInfo[0].tip, &sp5C, &groundPoly,
false, false, true, &sp74) && true, false, false, true, &bgId) &&
!SurfaceType_IsIgnoredByEntities(&play->colCtx, sp78, sp74) && !SurfaceType_IsIgnoredByEntities(&play->colCtx, groundPoly, bgId) &&
(SurfaceType_GetFloorType(&play->colCtx, sp78, sp74) != FLOOR_TYPE_6) && (SurfaceType_GetFloorType(&play->colCtx, groundPoly, bgId) != FLOOR_TYPE_6) &&
(func_8002F9EC(play, &this->actor, sp78, sp74, &sp5C) == 0)) { (func_8002F9EC(play, &this->actor, groundPoly, bgId, &sp5C) == 0)) {
if (this->heldItemAction == PLAYER_IA_HAMMER) { if (this->heldItemAction == PLAYER_IA_HAMMER) {
func_80832630(play); func_80832630(play);
@ -8102,13 +8103,13 @@ s32 func_80842DF4(PlayState* play, Player* this) {
} }
if (this->linearVelocity >= 0.0f) { if (this->linearVelocity >= 0.0f) {
sp48 = SurfaceType_GetSfxType(&play->colCtx, sp78, sp74); surfaceMaterial = SurfaceType_GetMaterial(&play->colCtx, groundPoly, bgId);
if (sp48 == SURFACE_SFX_TYPE_10) { if (surfaceMaterial == SURFACE_MATERIAL_WOOD) {
CollisionCheck_SpawnShieldParticlesWood(play, &sp5C, &this->actor.projectedPos); CollisionCheck_SpawnShieldParticlesWood(play, &sp5C, &this->actor.projectedPos);
} else { } else {
CollisionCheck_SpawnShieldParticles(play, &sp5C); CollisionCheck_SpawnShieldParticles(play, &sp5C);
if (sp48 == SURFACE_SFX_TYPE_11) { if (surfaceMaterial == SURFACE_MATERIAL_DIRT_SOFT) {
func_8002F7DC(&this->actor, NA_SE_IT_WALL_HIT_SOFT); func_8002F7DC(&this->actor, NA_SE_IT_WALL_HIT_SOFT);
} else { } else {
func_8002F7DC(&this->actor, NA_SE_IT_WALL_HIT_HARD); func_8002F7DC(&this->actor, NA_SE_IT_WALL_HIT_HARD);
@ -10008,20 +10009,19 @@ void func_80847BA0(PlayState* play, Player* this) {
if (floorPoly != NULL) { if (floorPoly != NULL) {
this->unk_A7A = SurfaceType_GetFloorProperty(&play->colCtx, floorPoly, this->actor.floorBgId); this->unk_A7A = SurfaceType_GetFloorProperty(&play->colCtx, floorPoly, this->actor.floorBgId);
this->unk_A82 = this->unk_89E; this->prevFloorSfxOffset = this->floorSfxOffset;
if (this->actor.bgCheckFlags & BGCHECKFLAG_WATER) { if (this->actor.bgCheckFlags & BGCHECKFLAG_WATER) {
if (this->actor.yDistToWater < 20.0f) { if (this->actor.yDistToWater < 20.0f) {
this->unk_89E = SURFACE_SFX_TYPE_4; this->floorSfxOffset = SURFACE_SFX_OFFSET_WATER_SHALLOW;
} else { } else {
this->unk_89E = SURFACE_SFX_TYPE_5; this->floorSfxOffset = SURFACE_SFX_OFFSET_WATER_DEEP;
} }
} else { } else {
if (this->stateFlags2 & PLAYER_STATE2_9) { if (this->stateFlags2 & PLAYER_STATE2_9) {
this->unk_89E = SURFACE_SFX_TYPE_1; this->floorSfxOffset = SURFACE_SFX_OFFSET_SAND;
} else { } else {
// unk_89E is a sfxType, but SurfaceType_GetSfxId returns a sfxId? this->floorSfxOffset = SurfaceType_GetSfxOffset(&play->colCtx, floorPoly, this->actor.floorBgId);
this->unk_89E = SurfaceType_GetSfxId(&play->colCtx, floorPoly, this->actor.floorBgId);
} }
} }
@ -11565,7 +11565,8 @@ void func_8084BDFC(Player* this, PlayState* play) {
} }
void func_8084BEE4(Player* this) { void func_8084BEE4(Player* this) {
func_8002F7DC(&this->actor, (this->unk_84F != 0) ? NA_SE_PL_WALK_WALL : NA_SE_PL_WALK_LADDER); func_8002F7DC(&this->actor, (this->unk_84F != 0) ? NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_VINE
: NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD);
} }
void func_8084BF1C(Player* this, PlayState* play) { void func_8084BF1C(Player* this, PlayState* play) {
@ -11715,16 +11716,16 @@ static f32 D_80854898[] = { 10.0f, 20.0f };
static f32 D_808548A0[] = { 40.0f, 50.0f }; static f32 D_808548A0[] = { 40.0f, 50.0f };
static struct_80832924 D_808548A8[] = { static struct_80832924 D_808548A8[] = {
{ NA_SE_PL_WALK_LADDER, 0x80A }, { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, 0x80A },
{ NA_SE_PL_WALK_LADDER, 0x814 }, { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, 0x814 },
{ NA_SE_PL_WALK_LADDER, -0x81E }, { NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_WOOD, -0x81E },
}; };
void func_8084C5F8(Player* this, PlayState* play) { void func_8084C5F8(Player* this, PlayState* play) {
s32 temp; s32 temp;
f32* sp38; f32* sp38;
CollisionPoly* groundPoly; CollisionPoly* groundPoly;
s32 sp30; s32 bgId;
Vec3f sp24; Vec3f sp24;
this->stateFlags2 |= PLAYER_STATE2_6; this->stateFlags2 |= PLAYER_STATE2_6;
@ -11753,8 +11754,11 @@ void func_8084C5F8(Player* this, PlayState* play) {
sp24.x = this->actor.world.pos.x; sp24.x = this->actor.world.pos.x;
sp24.y = this->actor.world.pos.y + 20.0f; sp24.y = this->actor.world.pos.y + 20.0f;
sp24.z = this->actor.world.pos.z; sp24.z = this->actor.world.pos.z;
if (BgCheck_EntityRaycastDown3(&play->colCtx, &groundPoly, &sp30, &sp24) != 0.0f) { if (BgCheck_EntityRaycastDown3(&play->colCtx, &groundPoly, &bgId, &sp24) != 0.0f) {
this->unk_89E = SurfaceType_GetSfxType(&play->colCtx, groundPoly, sp30); //! @bug should use `SurfaceType_GetSfxOffset` instead of `SurfaceType_GetMaterial`.
// Most material and sfxOffsets share identical enum values,
// so this will mostly result in the correct sfx played, but not in all cases, such as carpet and ice.
this->floorSfxOffset = SurfaceType_GetMaterial(&play->colCtx, groundPoly, bgId);
func_808328A0(this); func_808328A0(this);
} }
} }
@ -14307,7 +14311,7 @@ void func_80851FB0(PlayState* play, Player* this, CsCmdActorAction* arg2) {
} }
static struct_80832924 D_808551C8[] = { static struct_80832924 D_808551C8[] = {
{ NA_SE_PL_LAND_LADDER, 0x843 }, { NA_SE_PL_LAND + SURFACE_SFX_OFFSET_WOOD, 0x843 },
{ 0, 0x4854 }, { 0, 0x4854 },
{ 0, 0x485A }, { 0, 0x485A },
{ 0, -0x4860 }, { 0, -0x4860 },