From 5332ba27466d6bd17da9790625055d0743642660 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Wed, 16 Aug 2023 13:28:39 -0600 Subject: [PATCH] Cleaned Game.cpp --- .gitignore | 2 +- src/audio/heap.c | 2 +- src/game/game_init.c | 2 -- src/game/main.h | 2 -- src/game/sound_init.c | 4 --- src/port/{Globals.cpp => Engine.cpp} | 15 +++++----- src/port/{Globals.h => Engine.h} | 15 ++++++---- src/port/Game.cpp | 43 ++++++---------------------- src/port/Variables.cpp | 24 ++++++++++++++++ 9 files changed, 50 insertions(+), 59 deletions(-) rename src/port/{Globals.cpp => Engine.cpp} (69%) rename src/port/{Globals.h => Engine.h} (51%) create mode 100644 src/port/Variables.cpp diff --git a/.gitignore b/.gitignore index 2c8b7276..09578e51 100644 --- a/.gitignore +++ b/.gitignore @@ -54,7 +54,7 @@ build/* build-cmake/* cmake-build-*/* .idea/* -sm64.json +ghostship.cfg.json imgui.ini .DS_Store logs/ diff --git a/src/audio/heap.c b/src/audio/heap.c index b0df9885..2efd90e9 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -7,7 +7,7 @@ #include "synthesis.h" #include "seqplayer.h" #include "effects.h" -#include "port/Globals.h" +#include "port/Engine.h" #define ALIGN16(val) (((val) + 0xF) & ~0xF) diff --git a/src/game/game_init.c b/src/game/game_init.c index c4229022..f4bf0a5d 100644 --- a/src/game/game_init.c +++ b/src/game/game_init.c @@ -650,8 +650,6 @@ void thread5_game_loop() { #endif save_file_load_all(); - set_vblank_handler(2, &gGameVblankHandler, &gGameVblankQueue, OS_MESG_32(1)); - // Point address to the entry point into the level script data. addr = segmented_to_virtual(level_script_entry); diff --git a/src/game/main.h b/src/game/main.h index 5d0b300b..6028cbdb 100644 --- a/src/game/main.h +++ b/src/game/main.h @@ -68,8 +68,6 @@ extern s8 D_8032C650; extern s8 gShowProfiler; extern s8 gShowDebugText; -void set_vblank_handler(s32 index, struct VblankHandler *handler, OSMesgQueue *queue, OSMesg msg); -void dispatch_audio_sptask(struct SPTask *spTask); void exec_display_list(struct SPTask *spTask); #endif // MAIN_H diff --git a/src/game/sound_init.c b/src/game/sound_init.c index d83bcaf1..bc623c96 100644 --- a/src/game/sound_init.c +++ b/src/game/sound_init.c @@ -340,7 +340,6 @@ void thread4_sound(UNUSED void *arg) { vec3f_copy(unused80339DC0, gVec3fZero); osCreateMesgQueue(&sSoundMesgQueue, sSoundMesgBuf, ARRAY_COUNT(sSoundMesgBuf)); - set_vblank_handler(1, &sSoundVblankHandler, &sSoundMesgQueue, OS_MESG_32(512)); while (TRUE) { OSMesg msg; @@ -350,9 +349,6 @@ void thread4_sound(UNUSED void *arg) { struct SPTask *spTask; profiler_log_thread4_time(); spTask = create_next_audio_frame_task(); - if (spTask != NULL) { - dispatch_audio_sptask(spTask); - } profiler_log_thread4_time(); } } diff --git a/src/port/Globals.cpp b/src/port/Engine.cpp similarity index 69% rename from src/port/Globals.cpp rename to src/port/Engine.cpp index df3cd8d5..d8c37bca 100644 --- a/src/port/Globals.cpp +++ b/src/port/Engine.cpp @@ -1,4 +1,4 @@ -#include "Globals.h" +#include "Engine.h" #include "ImguiUI.h" #include @@ -8,29 +8,28 @@ GameEngine* GameEngine::Instance; GameEngine::GameEngine(){ - std::cout << "GameEngine::GameEngine" << std::endl; std::string main = LUS::Context::GetPathRelativeToAppBundle("soh.otr"); this->context = LUS::Context::CreateInstance("Ghostship", "sm64", "ghostship.cfg.json", {main}, {}, 3); this->context->GetWindow()->SetTargetFps(30); this->context->GetWindow()->SetMaximumFrameLatency(1); } -void GameEngine_Create(void){ +void GameEngine::Create(void){ GameEngine::Instance = new GameEngine(); GameUI::SetupGuiElements(); } -void GameEngine_StartFrame(void){ - GameEngine::Instance->context->GetWindow()->StartFrame(); +void GameEngine::StartFrame(void){ + this->context->GetWindow()->StartFrame(); } -void GameEngine_RunCommands(Gfx* Commands) { +void GameEngine::RunCommands(Gfx* Commands) { gfx_run(Commands, {}); gfx_end_frame(); } -void GameEngine_ProcessFrame(void (*run_one_game_iter)(void)) { - GameEngine::Instance->context->GetWindow()->MainLoop(run_one_game_iter); +void GameEngine::ProcessFrame(void (*run_one_game_iter)(void)) { + this->context->GetWindow()->MainLoop(run_one_game_iter); } extern "C" uint32_t GameEngine_GetSampleRate(void) { diff --git a/src/port/Globals.h b/src/port/Engine.h similarity index 51% rename from src/port/Globals.h rename to src/port/Engine.h index 9804b244..232d822e 100644 --- a/src/port/Globals.h +++ b/src/port/Engine.h @@ -4,6 +4,11 @@ #include #include +#define SAMPLES_HIGH 752 +#define SAMPLES_LOW 720 +#define AUDIO_FRAMES_PER_UPDATE 2 +#define NUM_AUDIO_CHANNELS 2 + class GameEngine { public: static GameEngine* Instance; @@ -12,13 +17,11 @@ class GameEngine { GameEngine(); ~GameEngine(); - void run(); + static void Create(void); + void StartFrame(void); + void RunCommands(Gfx* Commands); + void ProcessFrame(void (*run_one_game_iter)(void)); }; - -void GameEngine_Create(void); -void GameEngine_StartFrame(void); -void GameEngine_RunCommands(Gfx* Commands); -void GameEngine_ProcessFrame(void (*run_one_game_iter)(void)); #else uint32_t GameEngine_GetSampleRate(void); #endif \ No newline at end of file diff --git a/src/port/Game.cpp b/src/port/Game.cpp index 16bf06b6..01aae080 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -2,38 +2,14 @@ #include "sm64.h" #include -#include "Globals.h" - -#define SAMPLES_HIGH 752 -#define SAMPLES_LOW 720 -#define AUDIO_FRAMES_PER_UPDATE 2 -#define NUM_AUDIO_CHANNELS 2 +#include "Engine.h" extern "C" { -#include "game/main.h" -#include "game/game_init.h" #include "audio/external.h" -#include "segments.h" -s8 D_8032C650 = 0; -s8 gResetTimer = 0; -u32 gNumVblanks = 0; -s8 gNmiResetBarsTimer = 0; -u64 osClockRate = 62500000; - -s8 sAudioEnabled = TRUE; -s8 gShowProfiler = FALSE; -s8 gShowDebugText = FALSE; -s8 gDebugLevelSelect = TRUE; - -OSIoMesg gDmaIoMesg; -OSMesg gMainReceivedMesg; -OSMesgQueue gDmaMesgQueue; -OSMesgQueue gSIEventMesgQueue; +#include "game/game_init.h" } -extern "C" { -void set_vblank_handler(s32 index, VblankHandler *handler, OSMesgQueue *queue, OSMesg msg) {} -void dispatch_audio_sptask(SPTask *spTask) {} +bool sAudioEnabled = true; void alloc_pool(void) { static u64 pool[1024 * 1024 * 4]; @@ -41,16 +17,13 @@ void alloc_pool(void) { gEffectsMemoryPool = mem_pool_init(0x4000, MEMORY_POOL_LEFT); } +extern "C" void exec_display_list(SPTask *spTask) { - if(gDisplayListHead == nullptr){ - return; - } - GameEngine_RunCommands((Gfx*) spTask->task.t.data_ptr); -} + GameEngine::Instance->RunCommands((Gfx*) spTask->task.t.data_ptr); } void push_frame(void) { - GameEngine_StartFrame(); + GameEngine::Instance->StartFrame(); thread5_iteration(); if(sAudioEnabled) { @@ -67,11 +40,11 @@ void push_frame(void) { } int main(){ - GameEngine_Create(); + GameEngine::Create(); alloc_pool(); audio_init(); sound_init(); thread5_game_loop(NULL); - GameEngine_ProcessFrame(push_frame); + GameEngine::Instance->ProcessFrame(push_frame); } \ No newline at end of file diff --git a/src/port/Variables.cpp b/src/port/Variables.cpp new file mode 100644 index 00000000..98bc69f3 --- /dev/null +++ b/src/port/Variables.cpp @@ -0,0 +1,24 @@ +#include + +#include "sm64.h" +#include + +extern "C" { +#include "game/main.h" +#include "game/game_init.h" +#include "segments.h" +s8 D_8032C650 = 0; +s8 gResetTimer = 0; +u32 gNumVblanks = 0; +s8 gNmiResetBarsTimer = 0; +u64 osClockRate = 62500000; + +s8 gShowProfiler = FALSE; +s8 gShowDebugText = FALSE; +s8 gDebugLevelSelect = TRUE; + +OSIoMesg gDmaIoMesg; +OSMesg gMainReceivedMesg; +OSMesgQueue gDmaMesgQueue; +OSMesgQueue gSIEventMesgQueue; +} \ No newline at end of file