From c213e157519ce4e6c4db5bd7d83fb64c48ecc5e6 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Sun, 12 Nov 2023 05:19:09 -0500 Subject: [PATCH] get it to build for linux and add tts logging --- .../accessible-actors/AccessibleActorList.cpp | 4 ++-- .../accessible-actors/AccessibleAudioEngine.cpp | 10 +++++----- .../accessible-actors/AccessibleAudioEngine.h | 1 + .../accessible-actors/accessibility_cues.cpp | 1 + .../speechsynthesizer/SpeechLogger.cpp | 16 ++++++++++++++++ .../speechsynthesizer/SpeechLogger.h | 17 +++++++++++++++++ .../speechsynthesizer/SpeechSynthesizer.h | 2 ++ soh/soh/OTRGlobals.cpp | 3 +++ 8 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 soh/soh/Enhancements/speechsynthesizer/SpeechLogger.cpp create mode 100644 soh/soh/Enhancements/speechsynthesizer/SpeechLogger.h diff --git a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp index 72c61f3fa..be79eb9b4 100644 --- a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp +++ b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp @@ -8,7 +8,7 @@ #include #include #include -#include "overlays\actors\ovl_Boss_Goma\z_boss_goma.h" +#include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h" //Declarations specific to chests. #include "overlays/actors/ovl_En_Box/z_en_box.h" extern "C" { @@ -22,7 +22,7 @@ extern "C" { void EnKarebaba_DeadItemDrop(EnKarebaba*, PlayState*); } //Declarations specific to Torches -#include "overlays\actors\ovl_Obj_Syokudai\z_obj_syokudai.h" +#include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h" //User data for the general helper VA. typedef struct { diff --git a/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.cpp b/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.cpp index 919992b66..9b55fe6f7 100644 --- a/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.cpp +++ b/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.cpp @@ -39,7 +39,7 @@ typedef float f32; typedef int8_t s8; typedef uint8_t u8; //Processing for our custom audio positioning. -static float lerp(float x, float y, float z) { +static float lerp_aae(float x, float y, float z) { return (1.0 - z) * x + z * y; } @@ -48,9 +48,9 @@ static float lerp(float x, float y, float z) { return 0; float leftover = ma_volume_db_to_linear(AAE_MAX_DB_REDUCTION); float normDist = fabs(extras->distToPlayer) / extras->maxDistance; - float db = lerp(0, AAE_MAX_DB_REDUCTION, normDist); + float db = lerp_aae(0, AAE_MAX_DB_REDUCTION, normDist); float gain = ma_volume_db_to_linear(db); - gain -= lerp(0, leftover, normDist); + gain -= lerp_aae(0, leftover, normDist); return gain; } //Borrow the pan calculation from the game itself. Todo: this is technical debt, so copy/ revise it or something at some point. @@ -148,7 +148,7 @@ void AccessibleAudioEngine::doPrepare(SoundAction& action) //This should not loop more than twice. uint32_t nextChunk = nFrames; ma_pcm_rb_acquire_write(&preparedOutput, &nextChunk, (void**)&chunk);//Might reduce nextChunk if there isn't enough buffer space available to accommodate the request. - uint64_t framesRead = 0; + ma_uint64 framesRead = 0; ma_engine_read_pcm_frames(&engine, chunk, nextChunk, &framesRead); //Even if we get fewer frames than expected, we should still submit a full buffer of silence. if (framesRead < nextChunk) @@ -357,7 +357,7 @@ void AccessibleAudioEngine::postHighPrioritySoundAction(SoundAction& action) { return; slot->extras.cutoff = action.cutoff; ma_lpf_config config = - ma_lpf_config_init(ma_format_f32, AAE_CHANNELS, AAE_SAMPLE_RATE, lerp(0.0, AAE_SAMPLE_RATE / 2, action.cutoff), AAE_LPF_ORDER); + ma_lpf_config_init(ma_format_f32, AAE_CHANNELS, AAE_SAMPLE_RATE, lerp_aae(0.0, AAE_SAMPLE_RATE / 2, action.cutoff), AAE_LPF_ORDER); ma_lpf_reinit(&config, &slot->extras.filter); } diff --git a/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.h b/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.h index c2bccabf3..d069a1cef 100644 --- a/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.h +++ b/soh/soh/Enhancements/accessible-actors/AccessibleAudioEngine.h @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include diff --git a/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp b/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp index bfd95fcb8..7054f8397 100644 --- a/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp +++ b/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp @@ -2,6 +2,7 @@ #include "z64.h" #include "macros.h" #include "functions.h" +#include extern "C" { s32 func_80839768(PlayState* play, Player* p, Vec3f* arg2, CollisionPoly** arg3, s32* arg4, Vec3f* arg5); void func_8083E298(CollisionPoly* arg0, Vec3f* arg1, s16* arg2); diff --git a/soh/soh/Enhancements/speechsynthesizer/SpeechLogger.cpp b/soh/soh/Enhancements/speechsynthesizer/SpeechLogger.cpp new file mode 100644 index 000000000..a47a61d62 --- /dev/null +++ b/soh/soh/Enhancements/speechsynthesizer/SpeechLogger.cpp @@ -0,0 +1,16 @@ +#include "SpeechLogger.h" +#include + +SpeechLogger::SpeechLogger() { +} + +void SpeechLogger::Speak(const char* text, const char* language) { + lusprintf(__FILE__, __LINE__, 2, "Spoken Text (%s): %s", language, text); +} + +bool SpeechLogger::DoInit() { + return true; +} + +void SpeechLogger::DoUninitialize() { +} diff --git a/soh/soh/Enhancements/speechsynthesizer/SpeechLogger.h b/soh/soh/Enhancements/speechsynthesizer/SpeechLogger.h new file mode 100644 index 000000000..3be27945f --- /dev/null +++ b/soh/soh/Enhancements/speechsynthesizer/SpeechLogger.h @@ -0,0 +1,17 @@ +#ifndef SOHSpeechLogger_h +#define SOHSpeechLogger_h + +#include "SpeechSynthesizer.h" + +class SpeechLogger : public SpeechSynthesizer { + public: + SpeechLogger(); + + void Speak(const char* text, const char* language); + + protected: + bool DoInit(void); + void DoUninitialize(void); +}; + +#endif diff --git a/soh/soh/Enhancements/speechsynthesizer/SpeechSynthesizer.h b/soh/soh/Enhancements/speechsynthesizer/SpeechSynthesizer.h index b08aab05c..29d209b5f 100644 --- a/soh/soh/Enhancements/speechsynthesizer/SpeechSynthesizer.h +++ b/soh/soh/Enhancements/speechsynthesizer/SpeechSynthesizer.h @@ -36,3 +36,5 @@ class SpeechSynthesizer { #elif defined(__APPLE__) #include "DarwinSpeechSynthesizer.h" #endif + +#include "SpeechLogger.h" diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index bf99e74cd..1b9ec11c3 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1042,6 +1042,9 @@ extern "C" void InitOTR() { #elif defined(_WIN32) SpeechSynthesizer::Instance = new SAPISpeechSynthesizer(); SpeechSynthesizer::Instance->Init(); +#else + SpeechSynthesizer::Instance = new SpeechLogger(); + SpeechSynthesizer::Instance->Init(); #endif clearMtx = (uintptr_t)&gMtxClear;