mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
JAIZelSound OK
This commit is contained in:
+1
-1
@@ -797,7 +797,7 @@ config.libs = [
|
||||
Object(Matching, "JAZelAudio/JAIZelParam.cpp"),
|
||||
Object(NonMatching, "JAZelAudio/JAIZelCharVoiceTable.cpp"),
|
||||
Object(Matching, "JAZelAudio/JAIZelScene.cpp"),
|
||||
Object(NonMatching, "JAZelAudio/JAIZelSound.cpp"),
|
||||
Object(Matching, "JAZelAudio/JAIZelSound.cpp"),
|
||||
],
|
||||
),
|
||||
DolphinLib(
|
||||
|
||||
@@ -195,6 +195,8 @@ public:
|
||||
static const char* spot_dir_name[];
|
||||
static isle_area_s mIsleArea[];
|
||||
|
||||
static const int MAX_CONCURRENT_SE_NUM = 24;
|
||||
|
||||
/* 0x0020 */ u8 field_0x0020;
|
||||
/* 0x0021 */ u8 field_0x0021;
|
||||
/* 0x0022 */ u8 field_0x0022[0x0024 - 0x0022];
|
||||
@@ -278,9 +280,9 @@ public:
|
||||
/* 0x00CE */ u8 field_0x00ce;
|
||||
/* 0x00CF */ u8 field_0x00CF[0x00D0 - 0x00CF];
|
||||
/* 0x00D0 */ int field_0x00d0;
|
||||
/* 0x00D4 */ JAISound* field_0x00d4[24];
|
||||
/* 0x0134 */ u32 field_0x0134[24];
|
||||
/* 0x0194 */ u32 field_0x0194[24];
|
||||
/* 0x00D4 */ JAISound* mpSeSound[MAX_CONCURRENT_SE_NUM];
|
||||
/* 0x0134 */ u32 mpSeNum[MAX_CONCURRENT_SE_NUM];
|
||||
/* 0x0194 */ u32 field_0x0194[MAX_CONCURRENT_SE_NUM];
|
||||
/* 0x01F4 */ int field_0x01f4;
|
||||
/* 0x01F8 */ u8 field_0x01f8;
|
||||
/* 0x01F9 */ u8 field_0x01f9;
|
||||
|
||||
@@ -8,10 +8,10 @@ public:
|
||||
JAIZelSound();
|
||||
~JAIZelSound() {}
|
||||
|
||||
f32 setDistanceVolumeCommon(f32, u8);
|
||||
void setSeDistanceVolume(u8);
|
||||
void setSeDistancePan(u8);
|
||||
void setSeDistanceDolby(u8);
|
||||
virtual f32 setDistanceVolumeCommon(f32, u8);
|
||||
virtual void setSeDistanceVolume(u8);
|
||||
virtual void setSeDistancePan(u8);
|
||||
virtual void setSeDistanceDolby(u8);
|
||||
};
|
||||
|
||||
#endif /* JAIZELSOUND_H */
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JAIGlobalParameter {
|
||||
inline void getPointerDistanceMax() {}
|
||||
inline void getPointerMaxVolumeDistance() {}
|
||||
inline void getPointerMinDistanceVolume() {}
|
||||
inline void getPointerSeDolbyBehindDistanceMax() {}
|
||||
inline void getPointerSeDolbyCenterValue() {}
|
||||
inline void getPointerSeDolbyFrontDistanceMax() {}
|
||||
|
||||
void setParamInitDataPointer(void*);
|
||||
void setParamInterfaceHeapSize(u32);
|
||||
void setParamSoundSceneMax(u32);
|
||||
|
||||
@@ -12,6 +12,14 @@ namespace JAInter {
|
||||
|
||||
class JAISound {
|
||||
public:
|
||||
struct PositionInfo_t {
|
||||
/* 0x00 */ f32 field_0x0;
|
||||
/* 0x04 */ u8 field_0x4[0x8 - 0x4];
|
||||
/* 0x08 */ f32 field_0x8;
|
||||
/* 0x0C */ u8 field_0xc[0x18 - 0xc];
|
||||
/* 0x10 */ f32 field_0x18;
|
||||
};
|
||||
|
||||
JAISound();
|
||||
virtual f32 setPositionDopplarCommon(u32);
|
||||
virtual f32 setDistanceVolumeCommon(f32, u8);
|
||||
@@ -83,7 +91,7 @@ public:
|
||||
void getNextSound() {}
|
||||
void getPlayGameFrameCounter() {}
|
||||
void getPlayer() {}
|
||||
void getPositionInfo() {}
|
||||
PositionInfo_t* getPositionInfo() { return mPositionInfo; }
|
||||
void getPrevSound() {}
|
||||
void getPriority() {}
|
||||
void getStatus() {}
|
||||
@@ -112,14 +120,6 @@ public:
|
||||
void setVolumeU7(u8, u32, u8) {}
|
||||
void setWait(u8) {}
|
||||
|
||||
struct PositionInfo_t {
|
||||
f32 field_0x0;
|
||||
u8 field_0x4[0x8 - 0x4];
|
||||
f32 field_0x8;
|
||||
u8 field_0xc[0x18 - 0xc];
|
||||
f32 field_0x18;
|
||||
};
|
||||
|
||||
/* 0x04 */ u8 field_0x4;
|
||||
/* 0x05 */ u8 field_0x5;
|
||||
/* 0x06 */ u8 field_0x6;
|
||||
@@ -130,11 +130,11 @@ public:
|
||||
/* 0x0c */ u32 mSoundID;
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x14 */ u32 field_0x14;
|
||||
/* 0x18 */ int field_0x18;
|
||||
/* 0x18 */ u32 field_0x18;
|
||||
/* 0x1c */ int field_0x1c;
|
||||
/* 0x20 */ PositionInfo_t* mPositionInfo;
|
||||
/* 0x24 */ void* field_0x24;
|
||||
/* 0x28 */ int field_0x28;
|
||||
/* 0x28 */ u32 field_0x28;
|
||||
/* 0x2C */ int field_0x2c;
|
||||
/* 0x30 */ JAISound* field_0x30;
|
||||
/* 0x34 */ JAISound* field_0x34;
|
||||
|
||||
@@ -185,11 +185,11 @@ void JAIZelBasic::gframeProcess() {
|
||||
/* 802A30A4-802A31C0 .text resetProcess__11JAIZelBasicFv */
|
||||
void JAIZelBasic::resetProcess() {
|
||||
OSReport("[JAIZelBasic::resetProcess]\n");
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (field_0x00d4[i]) {
|
||||
field_0x00d4[i]->stop(1);
|
||||
field_0x00d4[i] = NULL;
|
||||
field_0x0134[i] = 0;
|
||||
for (int i = 0; i < MAX_CONCURRENT_SE_NUM; i++) {
|
||||
if (mpSeSound[i]) {
|
||||
mpSeSound[i]->stop(1);
|
||||
mpSeSound[i] = NULL;
|
||||
mpSeNum[i] = 0;
|
||||
field_0x0194[i] = 0;
|
||||
}
|
||||
}
|
||||
@@ -648,9 +648,9 @@ void JAIZelBasic::initSe() {
|
||||
mAudioCamera->field_0x4 = NULL;
|
||||
mAudioCamera->field_0x8 = NULL;
|
||||
field_0x01f4 = 0;
|
||||
for (int i = 0; i < 24; i++) {
|
||||
field_0x00d4[i] = NULL;
|
||||
field_0x0134[i] = 0;
|
||||
for (int i = 0; i < MAX_CONCURRENT_SE_NUM; i++) {
|
||||
mpSeSound[i] = NULL;
|
||||
mpSeNum[i] = 0;
|
||||
field_0x0194[i] = 0;
|
||||
}
|
||||
for (int i = 0; i < 4; i++) {
|
||||
@@ -702,11 +702,11 @@ void JAIZelBasic::seStop(u32 i_seNum, s32 param_2) {
|
||||
if (i_seNum == JA_SE_LK_RUN_SLIP) {
|
||||
param_2 = 8;
|
||||
}
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (field_0x0134[i] == i_seNum && field_0x00d4[i]) {
|
||||
field_0x00d4[i]->stop(param_2);
|
||||
field_0x00d4[i] = NULL;
|
||||
field_0x0134[i] = 0;
|
||||
for (int i = 0; i < MAX_CONCURRENT_SE_NUM; i++) {
|
||||
if (mpSeNum[i] == i_seNum && mpSeSound[i]) {
|
||||
mpSeSound[i]->stop(param_2);
|
||||
mpSeSound[i] = NULL;
|
||||
mpSeNum[i] = 0;
|
||||
field_0x0194[i] = 0;
|
||||
}
|
||||
}
|
||||
@@ -714,8 +714,8 @@ void JAIZelBasic::seStop(u32 i_seNum, s32 param_2) {
|
||||
|
||||
/* 802A85F4-802A8634 .text checkSePlaying__11JAIZelBasicFUl */
|
||||
BOOL JAIZelBasic::checkSePlaying(u32 param_1) {
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (field_0x0134[i] == param_1 && field_0x00d4[i]) {
|
||||
for (int i = 0; i < MAX_CONCURRENT_SE_NUM; i++) {
|
||||
if (mpSeNum[i] == param_1 && mpSeSound[i]) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1139,9 +1139,9 @@ BOOL JAIZelBasic::getMapInfoGround(u32) {
|
||||
}
|
||||
|
||||
/* 802AA390-802AACE8 .text setScene__11JAIZelBasicFllll */
|
||||
void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
OSReport("[JAIZelBasic::setScene] num = %d, start = %d, layer = %d (%d)\n", param_1, roomNo, layerNo, param_3);
|
||||
if (param_1 >= 0x79) {
|
||||
void JAIZelBasic::setScene(s32 sceneNum, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
OSReport("[JAIZelBasic::setScene] num = %d, start = %d, layer = %d (%d)\n", sceneNum, roomNo, layerNo, param_3);
|
||||
if (sceneNum >= 0x79) {
|
||||
OSReport("[JAIZelBasic::setScene] too large scene number\n");
|
||||
return;
|
||||
}
|
||||
@@ -1152,7 +1152,7 @@ void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
field_0x00bd = field_0x00cd = bgmNum = 0;
|
||||
u32 var1;
|
||||
u32 var2;
|
||||
if (param_1 == 0x12) {
|
||||
if (sceneNum == 0x12) {
|
||||
if (roomNo > 0) {
|
||||
mIslandRoomNo = roomNo;
|
||||
} else {
|
||||
@@ -1206,11 +1206,11 @@ void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
var2 = m_isle_info[mIslandRoomNo].field_0x3;
|
||||
} else {
|
||||
mIslandRoomNo = 0;
|
||||
if (param_1 == 16 && checkEventBit(0x280) == 0) {
|
||||
if (sceneNum == 16 && checkEventBit(0x280) == 0) {
|
||||
bgmNum = JA_BGM_FIND_TETRA;
|
||||
} else if (param_1 == 19 && checkEventBit(0x801) == 0) {
|
||||
} else if (sceneNum == 19 && checkEventBit(0x801) == 0) {
|
||||
bgmNum = 0;
|
||||
} else if (param_1 == 2 && field_0x0021 != 0) {
|
||||
} else if (sceneNum == 2 && field_0x0021 != 0) {
|
||||
if (dComIfGs_isStageBossDemoSaveBit(dSv_save_c::STAGE_DRC)) {
|
||||
field_0x00cd = 1;
|
||||
}
|
||||
@@ -1219,10 +1219,10 @@ void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
field_0x0204 = 1;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 7 && field_0x0021 != 0) {
|
||||
} else if (sceneNum == 7 && field_0x0021 != 0) {
|
||||
if (dComIfGs_isStageBossDemoSaveBit(dSv_save_c::STAGE_FW)) {
|
||||
field_0x00cd = 1;
|
||||
}
|
||||
@@ -1230,10 +1230,10 @@ void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
bgmNum = m_scene_info[3].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 37 && field_0x0021 != 0) {
|
||||
} else if (sceneNum == 37 && field_0x0021 != 0) {
|
||||
if (dComIfGs_isStageBossDemoSaveBit(dSv_save_c::STAGE_TOTG)) {
|
||||
field_0x00cd = 1;
|
||||
}
|
||||
@@ -1241,10 +1241,10 @@ void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
bgmNum = m_scene_info[10].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 24 && field_0x0021 != 0) {
|
||||
} else if (sceneNum == 24 && field_0x0021 != 0) {
|
||||
if (dComIfGs_isStageBossDemoSaveBit(dSv_save_c::STAGE_WT)) {
|
||||
field_0x00cd = 1;
|
||||
}
|
||||
@@ -1253,10 +1253,10 @@ void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
} else if (dComIfGs_isStageBossEnemySaveBit(dSv_save_c::STAGE_WT)) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 45 && field_0x0021 != 0) {
|
||||
} else if (sceneNum == 45 && field_0x0021 != 0) {
|
||||
if (dComIfGs_isStageBossDemoSaveBit(dSv_save_c::STAGE_ET)) {
|
||||
field_0x00cd = 1;
|
||||
}
|
||||
@@ -1265,93 +1265,93 @@ void JAIZelBasic::setScene(s32 param_1, s32 roomNo, s32 param_3, s32 layerNo) {
|
||||
} else if (dComIfGs_isStageBossEnemySaveBit(dSv_save_c::STAGE_ET)) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 54) {
|
||||
} else if (sceneNum == 54) {
|
||||
if (checkEventBit(0x2d04) == 0) {
|
||||
bgmNum = JA_BGM_HYRULE_OFF;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 53) {
|
||||
} else if (sceneNum == 53) {
|
||||
if (layerNo == 8 || layerNo == 9 || layerNo == 10 || layerNo == 11) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 54) {
|
||||
} else if (sceneNum == 54) {
|
||||
if (layerNo == 8 || layerNo == 9 || layerNo == 10 || layerNo == 11) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 89) {
|
||||
} else if (sceneNum == 89) {
|
||||
if (layerNo == 8 || layerNo == 9 || layerNo == 10 || layerNo == 11) {
|
||||
bgmNum = 0;
|
||||
} else if (checkEventBit(0x2d04) == 0) {
|
||||
bgmNum = JA_BGM_HYRULE_OFF;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 39) {
|
||||
} else if (sceneNum == 39) {
|
||||
if (layerNo == 8 || layerNo == 9 || layerNo == 10 || layerNo == 11) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 41) {
|
||||
} else if (sceneNum == 41) {
|
||||
if (layerNo == 8 || layerNo == 9 || layerNo == 10 || layerNo == 11) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 22) {
|
||||
} else if (sceneNum == 22) {
|
||||
if (layerNo == 8 || layerNo == 9 || layerNo == 10 || layerNo == 11) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 44) {
|
||||
} else if (sceneNum == 44) {
|
||||
if (layerNo == 8 || layerNo == 9 || layerNo == 10 || layerNo == 11) {
|
||||
bgmNum = 0;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 11) {
|
||||
} else if (sceneNum == 11) {
|
||||
if (layerNo == 9 && field_0x0043 == 0) {
|
||||
bgmNum = 0;
|
||||
} else if (field_0x0043 && checkEventBit(0x2a20) == 0) {
|
||||
bgmNum = JA_BGM_BAACHAN;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else if (param_1 == 32) {
|
||||
} else if (sceneNum == 32) {
|
||||
if (checkEventBit(0x2110) == 0 && checkEventBit(dSv_evtBit_c::ENDLESS_NIGHT) == 1) {
|
||||
bgmNum = JA_BGM_PIRATE_DEMO5;
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
} else {
|
||||
bgmNum = m_scene_info[param_1].bgmNum;
|
||||
bgmNum = m_scene_info[sceneNum].bgmNum;
|
||||
bgmNum = expandSceneBgmNum(bgmNum);
|
||||
}
|
||||
var1 = m_scene_info[param_1].field_0x2;
|
||||
var2 = m_scene_info[param_1].field_0x3;
|
||||
var1 = m_scene_info[sceneNum].field_0x2;
|
||||
var2 = m_scene_info[sceneNum].field_0x3;
|
||||
}
|
||||
sceneChange(bgmNum, var1, var2, param_3);
|
||||
field_0x022d = 0;
|
||||
field_0x0220 = param_1;
|
||||
field_0x0220 = sceneNum;
|
||||
field_0x022c = 1;
|
||||
field_0x0239 = layerNo;
|
||||
}
|
||||
@@ -1393,13 +1393,13 @@ BOOL JAIZelBasic::checkLinkOnBoardSea() {
|
||||
/* 802AAD94-802AAE80 .text setSceneName__11JAIZelBasicFPcll */
|
||||
void JAIZelBasic::setSceneName(char* param_1, s32 roomNo, s32 param_3) {
|
||||
OSReport("[JAIZelBasic::setSceneName] spot = %s, room = %d\n", param_1, roomNo);
|
||||
int id = spotNameToId(param_1);
|
||||
if (id == 0x75) {
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (field_0x00d4[i]) {
|
||||
field_0x00d4[i]->stop(1);
|
||||
field_0x00d4[i] = NULL;
|
||||
field_0x0134[i] = 0;
|
||||
s32 sceneNum = spotNameToId(param_1);
|
||||
if (sceneNum == 0x75) {
|
||||
for (int i = 0; i < MAX_CONCURRENT_SE_NUM; i++) {
|
||||
if (mpSeSound[i]) {
|
||||
mpSeSound[i]->stop(1);
|
||||
mpSeSound[i] = NULL;
|
||||
mpSeNum[i] = 0;
|
||||
field_0x0194[i] = 0;
|
||||
}
|
||||
}
|
||||
@@ -1411,7 +1411,7 @@ void JAIZelBasic::setSceneName(char* param_1, s32 roomNo, s32 param_3) {
|
||||
} else {
|
||||
field_0x0066 = 0;
|
||||
}
|
||||
setScene(id, roomNo, 0, param_3);
|
||||
setScene(sceneNum, roomNo, 0, param_3);
|
||||
}
|
||||
|
||||
/* 802AAE80-802AAF04 .text spotNameToId__11JAIZelBasicFPc */
|
||||
|
||||
@@ -4,26 +4,111 @@
|
||||
//
|
||||
|
||||
#include "JAZelAudio/JAIZelSound.h"
|
||||
#include "JSystem/JAudio/JAIGlobalParameter.h"
|
||||
|
||||
/* 802AEF64-802AEFA0 .text __ct__11JAIZelSoundFv */
|
||||
JAIZelSound::JAIZelSound() {}
|
||||
|
||||
/* 802AEFA0-802AF19C .text setDistanceVolumeCommon__11JAIZelSoundFfUc */
|
||||
f32 JAIZelSound::setDistanceVolumeCommon(f32, u8) {
|
||||
/* Nonmatching */
|
||||
f32 JAIZelSound::setDistanceVolumeCommon(f32 f30, u8 r31) {
|
||||
f32 f31;
|
||||
if (field_0x8 != 4) {
|
||||
f31 = getPositionInfo()[field_0x8].field_0x18;
|
||||
} else {
|
||||
f31 = getPositionInfo()[0].field_0x18;
|
||||
for (u8 i = 1; i < JAIGlobalParameter::getParamAudioCameraMax(); i++) {
|
||||
if (getPositionInfo()[i].field_0x18 < f31) {
|
||||
f31 = getPositionInfo()[i].field_0x18;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (f31 < JAIGlobalParameter::getParamMaxVolumeDistance()) {
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
f31 -= JAIGlobalParameter::getParamMaxVolumeDistance();
|
||||
f30 -= JAIGlobalParameter::getParamMaxVolumeDistance();
|
||||
|
||||
if (r31 > 7) {
|
||||
f30 *= (1 << (r31 - 4));
|
||||
} else if (r31 > 3) {
|
||||
f30 /= (1 << ((r31 & 3) + 1));
|
||||
} else if (r31 != 0) {
|
||||
f30 *= (1 << (r31 & 3));
|
||||
}
|
||||
if (f31 < f30) {
|
||||
if (r31 > 3 && r31 <= 7) {
|
||||
return 1.0f - (f31 / f30);
|
||||
}
|
||||
return (
|
||||
JAIGlobalParameter::getParamMinDistanceVolume() +
|
||||
(1.0f - (f31 / f30)) *
|
||||
(1.0f - JAIGlobalParameter::getParamMinDistanceVolume())
|
||||
);
|
||||
}
|
||||
|
||||
if (r31 > 3 && r31 <= 7) {
|
||||
return 0.0f;
|
||||
}
|
||||
return JAIGlobalParameter::getParamMinDistanceVolume();
|
||||
}
|
||||
|
||||
/* 802AF19C-802AF2A0 .text setSeDistanceVolume__11JAIZelSoundFUc */
|
||||
void JAIZelSound::setSeDistanceVolume(u8) {
|
||||
/* Nonmatching */
|
||||
void JAIZelSound::setSeDistanceVolume(u8 r30) {
|
||||
if ((getSwBit() & 0x00400000) && field_0x18 > 1) {
|
||||
return;
|
||||
}
|
||||
f32 f31;
|
||||
if ((getSwBit() & 0x00000002) == 0) {
|
||||
u8 r31;
|
||||
if ((getSwBit() & 0x00300000)) {
|
||||
r31 = ((getSwBit() >> 20) & 3) + 7;
|
||||
} else {
|
||||
r31 = ((getSwBit() >> 16) & 7);
|
||||
}
|
||||
f31 = setDistanceVolumeCommon(JAIGlobalParameter::getParamDistanceMax(), r31);
|
||||
if ((getSwBit() & 0x01000000) && f31 <= 0.3333f) {
|
||||
f31 = 0.3333f;
|
||||
}
|
||||
} else {
|
||||
f31 = 1.0f;
|
||||
}
|
||||
setSeInterVolume(4, f31, r30, 0);
|
||||
}
|
||||
|
||||
/* 802AF2A0-802AF314 .text setSeDistancePan__11JAIZelSoundFUc */
|
||||
void JAIZelSound::setSeDistancePan(u8) {
|
||||
/* Nonmatching */
|
||||
void JAIZelSound::setSeDistancePan(u8 r31) {
|
||||
if ((getSwBit() & 0x00800000) && field_0x18 > 1) {
|
||||
return;
|
||||
}
|
||||
setSeInterPan(4, setDistancePanCommon(), r31, 0);
|
||||
}
|
||||
|
||||
/* 802AF314-802AF458 .text setSeDistanceDolby__11JAIZelSoundFUc */
|
||||
void JAIZelSound::setSeDistanceDolby(u8) {
|
||||
/* Nonmatching */
|
||||
void JAIZelSound::setSeDistanceDolby(u8 r30) {
|
||||
if ((getSwBit() & 0x00800000) && field_0x18 > 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
PositionInfo_t* posInf = &getPositionInfo()[0];
|
||||
f32 f0;
|
||||
if (field_0x28 == 0 || posInf->field_0x8 < JAIGlobalParameter::getParamSeDolbyFrontDistanceMax()) {
|
||||
f0 = 0.0f;
|
||||
} else if (posInf->field_0x8 < 0.0f) {
|
||||
f0 = (
|
||||
JAIGlobalParameter::getParamSeDolbyCenterValue() *
|
||||
(JAIGlobalParameter::getParamSeDolbyFrontDistanceMax() - posInf->field_0x8)
|
||||
) / JAIGlobalParameter::getParamSeDolbyFrontDistanceMax();
|
||||
} else if (posInf->field_0x8 < JAIGlobalParameter::getParamSeDolbyBehindDistanceMax()) {
|
||||
f0 = JAIGlobalParameter::getParamSeDolbyCenterValue() + (
|
||||
(127.0f - JAIGlobalParameter::getParamSeDolbyCenterValue()) *
|
||||
(posInf->field_0x8 / JAIGlobalParameter::getParamSeDolbyBehindDistanceMax())
|
||||
);
|
||||
} else {
|
||||
f0 = 127.0f;
|
||||
}
|
||||
|
||||
u8 r0 = f0;
|
||||
setSeInterDolby(4, r0 / 127.0f, r30, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user