feat(sound): add SI2::Init

This commit is contained in:
fallenoak 2025-11-21 12:48:58 -06:00
parent 55b88129a1
commit 8afebda147
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
6 changed files with 446 additions and 1 deletions

View File

@ -14,6 +14,7 @@
#include "gx/Texture.hpp"
#include "model/Model2.hpp"
#include "net/Poll.hpp"
#include "sound/Interface.hpp"
#include "ui/FrameScript.hpp"
#include "ui/FrameXML.hpp"
#include "world/World.hpp"
@ -496,9 +497,9 @@ void WowClientInit() {
// LoadingScreenInitialize();
FrameScript_Initialize(0);
SI2::Init(0);
// TODO
// SI2::Init(0);
// sub_6F66B0();
FrameXML_RegisterDefault();

View File

@ -0,0 +1,63 @@
#include "sound/CVarHandlers.hpp"
#include "console/CVar.hpp"
#include "util/Unimplemented.hpp"
bool EnableMicrophoneHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool EnableReverbHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool EnableVoiceChatHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool InboundChatVolumeHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool OutboundChatVolumeHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool OutputDriverHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool PushToTalkButtonHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool SelfMuteHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool VoiceActivationSensitivityHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool VoiceChatInputDriverHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool VoiceChatModeHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}
bool VoiceChatOutputDriverHandler(CVar* var, const char* oldValue, const char* value, void* arg) {
// TODO
WHOA_UNIMPLEMENTED(true);
}

View File

@ -0,0 +1,30 @@
#ifndef SOUND_C_VAR_HANDLERS_HPP
#define SOUND_C_VAR_HANDLERS_HPP
class CVar;
bool EnableMicrophoneHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool EnableReverbHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool EnableVoiceChatHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool InboundChatVolumeHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool OutboundChatVolumeHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool OutputDriverHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool PushToTalkButtonHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool SelfMuteHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool VoiceActivationSensitivityHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool VoiceChatInputDriverHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool VoiceChatModeHandler(CVar* var, const char* oldValue, const char* value, void* arg);
bool VoiceChatOutputDriverHandler(CVar* var, const char* oldValue, const char* value, void* arg);
#endif

6
src/sound/Interface.hpp Normal file
View File

@ -0,0 +1,6 @@
#ifndef SOUND_INTERFACE_HPP
#define SOUND_INTERFACE_HPP
#include "sound/SI2.hpp"
#endif

View File

@ -1,6 +1,349 @@
#include "sound/SI2.hpp"
#include "console/CVar.hpp"
#include "sound/CVarHandlers.hpp"
#include "ui/FrameScript.hpp"
int32_t SI2::Init(int32_t a1) {
// TODO
// if (CmdLineGetBool(26)) {
// SI2::RegisterCVars();
//
// // TODO
// // sub_4D1600();
//
// return 17;
// }
if (!a1) {
// TODO
// sub_4CB160();
// sub_4CF990();
// sub_4CECB0();
// sub_4D0B70();
// sub_4D04E0();
SI2::RegisterCVars();
}
// TODO
return 0;
}
void SI2::RegisterCVars() {
CVar::Register(
"StartTalkingDelay",
"",
0x0,
"0.0",
nullptr,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"StartTalkingTime",
"",
0x0,
"1.0",
nullptr,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"StopTalkingDelay",
"",
0x0,
"0.0",
nullptr,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"StopTalkingTime",
"",
0x0,
"2.0",
nullptr,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"OutboundChatVolume",
"The software amplification factor (0.0 - 2.0)",
0x0,
"1.0",
&OutboundChatVolumeHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"InboundChatVolume",
"The volume of all other chat you hear (0.0 - 1.0)",
0x0,
"1.0",
&InboundChatVolumeHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"VoiceChatMode",
"Push to talk(0) or voice activation(1)",
0x0,
"0",
&VoiceChatModeHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"VoiceActivationSensitivity",
"Sensitivity of the microphone (0.0 - 1.0)",
0x0,
"0.4",
&VoiceActivationSensitivityHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"EnableMicrophone",
"Enables the microphone so you can speak.",
0x0,
"1",
&EnableMicrophoneHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"EnableVoiceChat",
"Enables the voice chat feature.",
0x0,
"0",
&EnableVoiceChatHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"VoiceChatSelfMute",
"Turn off your ability to talk.",
0x0,
"0",
&SelfMuteHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"PushToTalkButton",
"String representation of the Push-To-Talk button.",
0x0,
"`",
&PushToTalkButtonHandler,
DEFAULT,
false,
nullptr,
false
);
CVar::Register(
"Sound_OutputQuality",
"sound quality, default 1 (medium)",
0x0,
"1",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_NumChannels",
"number of sound channels",
0x0,
"32",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_EnableReverb",
"",
0x0,
"0",
&EnableReverbHandler,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_EnableSoftwareHRTF",
"",
0x0,
"0",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_VoiceChatInputDriverIndex",
"",
0x0,
"0",
&VoiceChatInputDriverHandler,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_VoiceChatInputDriverName",
"",
0,
"Primary Sound Capture Driver",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_VoiceChatOutputDriverIndex",
"",
0x0,
"0",
&VoiceChatOutputDriverHandler,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_VoiceChatOutputDriverName",
"",
0x0,
"Primary Sound Driver",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_OutputDriverIndex",
"",
0x0,
"0",
&OutputDriverHandler,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_OutputDriverName",
"",
0x0,
"Primary Sound Driver",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_DSPBufferSize",
"sound buffer size, default 0",
0x0,
"0",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_EnableHardware",
"Enables Hardware",
0x0,
"0",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_EnableMode2",
"test",
0x0,
"0",
nullptr,
SOUND,
false,
nullptr,
false
);
CVar::Register(
"Sound_EnableMixMode2",
"test",
0x0,
"0",
nullptr,
SOUND,
false,
nullptr,
false
);
}
void SI2::RegisterScriptFunctions() {
for (int32_t i = 0; i < NUM_SCRIPT_FUNCTIONS_SI2; ++i) {
FrameScript_RegisterFunction(

View File

@ -11,6 +11,8 @@ class SI2 {
static FrameScript_Method s_ScriptFunctions[NUM_SCRIPT_FUNCTIONS_SI2];
// Static functions
static int32_t Init(int32_t a1);
static void RegisterCVars();
static void RegisterScriptFunctions();
};