Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -1060,7 +1060,7 @@ def MatchingFor(*versions):
Object(Matching, "Inagaki/GameAudioHostIO.cpp"),
Object(NonMatching, "Inagaki/GameAudioMain.cpp"),
Object(Matching, "Inagaki/GameAudioMgr.cpp"),
Object(NonMatching, "Inagaki/GameAudioParam.cpp"),
Object(Matching, "Inagaki/GameAudioParam.cpp"),
Object(NonMatching, "Inagaki/KartSoundMgr.cpp"),
Object(Matching, "Inagaki/NpcCarSoundMgr.cpp"),
Object(Matching, "Inagaki/ObjectSoundMgr.cpp"),
Expand Down
48 changes: 46 additions & 2 deletions include/Inagaki/GameAudioAudience.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,54 @@ class CustomAudience : public JAUDopplerAudience<N> {
smCameraVolume[3] = 1.0f;
}

void initSlopesAndThresholds() { // fabricated
const f32& minVolume = setting_.minVolume;
const f32& refDistance = setting_._04;
const f32& nearDistance = setting_._08;

f32 fullVolume = 1.0f;
f32 volume2x = 2.0f;
f32 volume3x = 3.0f;
f32 volume4x = 4.0f;
f32 volumeHalf = 0.5f;
f32 volumeQuarter = 0.25f;
f32 volumeSixth = 0.16666667f;
f32 volumeEighth = 0.125f;

mVolumeSlope2x = (minVolume - fullVolume) / (( refDistance * volume2x) - nearDistance);
mVolumeSlope3x = (minVolume - fullVolume) / (( refDistance * volume3x) - nearDistance);
mVolumeSlope4x = (minVolume - fullVolume) / (( refDistance * volume4x) - nearDistance);
mVolumeSlopeHalf = (minVolume - fullVolume) / (( refDistance * volumeHalf) - nearDistance);
mVolumeSlopeQuarter = (minVolume - fullVolume) / (( refDistance * volumeQuarter) - nearDistance);
mVolumeSlopeSixth = (minVolume - fullVolume) / (( refDistance * volumeSixth) - nearDistance);
mVolumeSlopeEighth = (minVolume - fullVolume) / (( refDistance * volumeEighth) - nearDistance);

mDistanceThreshold2x = volume2x * refDistance;
mDistanceThreshold3x = volume3x * refDistance;
mDistanceThreshold4x = volume4x * refDistance;
mDistanceThresholdHalf = volumeHalf * refDistance;
mDistanceThresholdQuarter = volumeQuarter * refDistance;
mDistanceThresholdSixth = volumeSixth * refDistance;
mDistanceThresholdEighth = volumeEighth * refDistance;
}

static f32 smCameraVolume[N];

u8 _1a4[0x1dc - 0x1a4];
f32 mEchoRate[N];
f32 mVolumeSlope2x; // _1a4
f32 mVolumeSlope3x; // _1a8
f32 mVolumeSlope4x; // _1ac
f32 mVolumeSlopeHalf; // _1b0
f32 mVolumeSlopeQuarter; // _1b4
f32 mVolumeSlopeSixth; // _1b8
f32 mVolumeSlopeEighth; // _1bc
f32 mDistanceThreshold2x; // _1c0
f32 mDistanceThreshold3x; // _1c4
f32 mDistanceThreshold4x; // _1c8
f32 mDistanceThresholdHalf; // _1cc
f32 mDistanceThresholdQuarter; // 1d0
f32 mDistanceThresholdSixth; // 1d4
f32 mDistanceThresholdEighth; // 1d8
f32 mEchoRate[N]; // 1dc
}; // Size: 0x1ec(probably variable)

}
Expand Down
17 changes: 15 additions & 2 deletions include/Inagaki/GameAudioMain.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,19 +93,32 @@ class Main
// void setSeVolume(f32);
// void checkReset();

void setFxLine(u8 lineNum) { // fabricated
// FABRICATED {
void setFxLine(u8 lineNum) {
mConfig->set(lineNum);
}

void set_50(int val) { // fabricated
void set_50(int val) {
_50 = val;
}

JAISoundHandle *getSoundHandle6c() {
return &_6c;
}

CustomAudience<4> *getAudience() {
return mAudience;
}

CustomMgr *getCustomMgr() { return mMgr; }
// } FABRICATED

CameraMgr *getCamera() {
#line 157
JUT_ASSERT_MSG(mCamera, "GameAudioMain : カメラが初期化されていません。\n");
return mCamera;
}


static Main *getAudio() { return msBasic; };

Expand Down
25 changes: 25 additions & 0 deletions include/JSystem/JAudio/JASFakeMatch13.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#ifndef JAUDIO_JASFAKEMATCH10_H
#define JAUDIO_JASFAKEMATCH10_H

#ifdef MATCHING

#include "JSystem/JAudio/JASFakeMatch.h"

template <int N>
class JAUAudible;
class JAIStream;
class JAISeq;
class JAISe;
class JAISoundChild;

typedef JAUDopplerAudible<4> TDopplerAudible4;

JASMemPool<TDopplerAudible4> JASPoolAllocObject<TDopplerAudible4>::memPool_;
JASMemPool<JAIStream> JASPoolAllocObject<JAIStream>::memPool_;
JASMemPool<JAISoundChild> JASPoolAllocObject<JAISoundChild>::memPool_;
JASMemPool<JAISeq> JASPoolAllocObject<JAISeq>::memPool_;
JASMemPool<JAISe> JASPoolAllocObject<JAISe>::memPool_;

#endif

#endif
6 changes: 3 additions & 3 deletions include/JSystem/JAudio/JAUAudience.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,9 @@ class JAUAudience_withSetting : public JAIAudience {
void updateSetting();

struct {
f32 _04;
f32 _08;
f32 minVolume;
f32 _04; // 04 (referenceDistance)
f32 _08; // 08 (nearDistance)
Comment on lines +120 to +121

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI I did not rename those variables because another CPP file was being impacted and a LOT (+50) of unused symbols were preventing the build to pass.
I thought it was out of scope so I left it like so

f32 minVolume; // 0c
f32 _10;
f32 _14;
f32 _18;
Expand Down
6 changes: 6 additions & 0 deletions include/JSystem/JAudio/JAUSoundMgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ class JAUSoundMgr : public JAISoundStarter {
void calc();
void mixOut();

// FABRICATED {
JAISeMgr& getSeMgr() {
return mSeMgr;
}
// } FABRICATED

private:
JAISeMgr mSeMgr;
JAISeqMgr mSeqMgr;
Expand Down
113 changes: 108 additions & 5 deletions src/Inagaki/GameAudioParam.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
#include "Bando/EngineSound.h"
#include "Inagaki/GameAudioAudience.h"
#include "Inagaki/GameAudioCamera.h"
#include "Inagaki/GameAudioMain.h"
#include "Inagaki/GameAudioMgr.h"
#include "Inagaki/GameMapSoundMgr.h"
#include "Inagaki/GameSoundMgr.h"
#include "Inagaki/GameSoundTable.h"
#include "JSystem/JAudio/Interface/JAISeMgr.h"
#include "JSystem/JAudio/Interface/JAISound.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JAudio/JASFakeMatch13.h"

#include "dolphin/mtx.h"
#include "kartEnums.h"
#include "types.h"
Expand All @@ -32,19 +37,117 @@ ECourseID sRaceCourse;
f32 sChibiPitch[4] = { 1.0f, 1.7f, 2.3f, 4.5f };

void setPlayerMode(u8 playerMode) {
if (playerMode < 3) {
if (playerMode > 3) {
setKillSwAllObject(true);
sPlayerMode = 4;
return;
}
sPlayerMode = playerMode;
int activeSe = JAISeMgr::getInstance()->getNumActiveSe();
Main* main = Main::getAudio();
s32 activeSe = JAISeMgr::getInstance()->getNumActiveSe();

CameraMgr *cameraMgr = main->getCamera();
cameraMgr->setSceneMax(playerMode + 1);

JAISeCategoryArrangement arrangement;

JAISoundHandle& handle = *main->getSoundHandle6c();

if(!handle.isSoundAttached() || handle->getID().mId.mFullId - 0x1000000 != 0) {
if (sRaceMode != 3) {
Main::getAudio()->changeSection(1);
}
}

CameraMgr *cameraMgr = Main::getAudio()->getCamera();
cameraMgr->setSceneMax(playerMode - 1);
switch(playerMode)
{
case 0:
arrangement.mItems[0].mMaxActiveSe = 8;
arrangement.mItems[0].mMaxInactiveSe = 12;
arrangement.mItems[1].mMaxActiveSe = 8;
arrangement.mItems[1].mMaxInactiveSe = 12;
arrangement.mItems[2].mMaxActiveSe = 4;
arrangement.mItems[2].mMaxInactiveSe = 16;
arrangement.mItems[3].mMaxActiveSe = 4;
arrangement.mItems[3].mMaxInactiveSe = 16;
arrangement.mItems[4].mMaxActiveSe = 8;
arrangement.mItems[4].mMaxInactiveSe = 12;
Main::getAudio()->getCustomMgr()->getSeMgr().setCategoryArrangement(arrangement);
Main::getAudio()->setRaceSeVolume(1.f, 0);
break;
case 1:
arrangement.mItems[0].mMaxActiveSe = 6;
arrangement.mItems[0].mMaxInactiveSe = 6;
arrangement.mItems[1].mMaxActiveSe = 4;
arrangement.mItems[1].mMaxInactiveSe = 8;
arrangement.mItems[2].mMaxActiveSe = 4;
arrangement.mItems[2].mMaxInactiveSe = 8;
arrangement.mItems[3].mMaxActiveSe = 4;
arrangement.mItems[3].mMaxInactiveSe = 8;
arrangement.mItems[4].mMaxActiveSe = 4;
arrangement.mItems[4].mMaxInactiveSe = 8;
Main::getAudio()->getCustomMgr()->getSeMgr().setCategoryArrangement(arrangement);
Main::getAudio()->setRaceSeVolume(0.8f, 0);
break;
case 2:
arrangement.mItems[0].mMaxActiveSe = 4;
arrangement.mItems[0].mMaxInactiveSe = 8;
arrangement.mItems[1].mMaxActiveSe = 4;
arrangement.mItems[1].mMaxInactiveSe = 4;
arrangement.mItems[2].mMaxActiveSe = 4;
arrangement.mItems[2].mMaxInactiveSe = 4;
arrangement.mItems[3].mMaxActiveSe = 4;
arrangement.mItems[3].mMaxInactiveSe = 4;
arrangement.mItems[4].mMaxActiveSe = 4;
arrangement.mItems[4].mMaxInactiveSe = 8;
Main::getAudio()->getCustomMgr()->getSeMgr().setCategoryArrangement(arrangement);
Main::getAudio()->setRaceSeVolume(0.7f, 0);
break;
case 3:
arrangement.mItems[0].mMaxActiveSe = 5;
arrangement.mItems[0].mMaxInactiveSe = 8;
arrangement.mItems[1].mMaxActiveSe = 4;
arrangement.mItems[1].mMaxInactiveSe = 4;
arrangement.mItems[2].mMaxActiveSe = 4;
arrangement.mItems[2].mMaxInactiveSe = 4;
arrangement.mItems[3].mMaxActiveSe = 4;
arrangement.mItems[3].mMaxInactiveSe = 4;
arrangement.mItems[4].mMaxActiveSe = 5;
arrangement.mItems[4].mMaxInactiveSe = 8;
Main::getAudio()->getCustomMgr()->getSeMgr().setCategoryArrangement(arrangement);
Main::getAudio()->setRaceSeVolume(0.65f, 0);
break;
}
}

void setRaceMode(u8) {}
void setRaceMode(u8 raceMode) {
if(Main::getAudio()->getPlayingSequenceID() - 0x1000000 != 0)
{
Main::getAudio()->set_50(3);
}

sRaceMode = raceMode;
switch(raceMode) {
case 2:
Main::getAudio()->getAudience()[0].setting_._04 = 30000.f;
Main::getAudio()->getAudience()[0].setting_.minVolume = 0.15f;
break;

default:
Main::getAudio()->getAudience()[0].setting_._04 = 19000.f;
Main::getAudio()->getAudience()[0].setting_.minVolume = 0.f;
break;
}

Main::getAudio()->getAudience()[0].updateSetting();

f32 *cameraVolume = Main::getAudio()->getAudience()[0].smCameraVolume;
CustomAudience<4>* audience = Main::getAudio()->getAudience();

audience[0].initSlopesAndThresholds();

audience[0].updateVolume();
}

void setDemoMode(u8 demoMode) {
bool kill = !!demoMode;
Expand Down
Loading