summaryrefslogtreecommitdiff
path: root/src/port/Engine.cpp
diff options
context:
space:
mode:
authorcoco875 <59367621+coco875@users.noreply.github.com>2025-07-01 23:42:14 +0000
committerGitHub <noreply@github.com>2025-07-01 17:42:14 -0600
commit7937896598f3df46eb78c158bde787bc4f12ad7f (patch)
tree876548daaec2f8a5bb284374d834abcf9aad15b9 /src/port/Engine.cpp
parentb57afa83b42bb14e526043be4ca9f6e322788edb (diff)
make some texture more flexible and editable + port documentation from the decomp + fix some bug (#309)
* support a more flexible background * remove useless function * rename of some font * experimental png * migrate to the new initdata * fix skybox and adjust minimap * format in audio * simplify player render * simplify shell render and support custom texture of shell * clean redshell texture * format and multiple fix * some update of name * allow change icon of character * more rename * continue rename * more documentation and simplification * change lus and continue rename * continue rename * few fix for asan * fix ghost * Update menu_items.c * fix mac error * some test of tweak for texture * some tweak * some button constant * finish fix ghost * Update menu_items.c * Update render_objects.c * Update menu_items.c * Update libultraship * Update libultraship * Delete valgrind.report * Update libultraship * callgrind benchmark * Update valgrind_callgrind.sh * fix animation * some rename * remove useless submodule * Update libultraship * fix assets * fix mistake * fix more mistake * Update menu_items.c * sync more rename with the decom + fix review * fix a mistake * fix more mistake * re add the limit of fps * fix some hd texture and minimap * fix a name * Update menu_items.c * fix a regression * fix some segment 5 texture (not all) * Update camera.c * improve performance of custom sprite * fix flatten bug and add documentation on player vertex * Update render_player.c * fix data menu * fix trophy for 50 and 150 * Update memory.c * Update code_80057C60.c * fix ghost * fix boo tlut * fix a mistake in yaml * fix yaml * Update common_data.yml * add comment for segment 3 * allow even more change in texture * Update common_data.yml * Update update.inc.c * Update camera.c * Update some_data.c * wip changes * Update other_textures.yml * More changes * Update update_objects.c * Fix compile * Update memory.c * Update memory.c --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
Diffstat (limited to 'src/port/Engine.cpp')
-rw-r--r--src/port/Engine.cpp30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp
index 5ca0b22f6..c93131bc8 100644
--- a/src/port/Engine.cpp
+++ b/src/port/Engine.cpp
@@ -48,6 +48,7 @@ float gInterpolationStep = 0.0f;
#include <BlobFactory.h>
#include <VertexFactory.h>
#include <LightFactory.h>
+// #include <PngFactory.h>
#include "audio/internal.h"
#include "audio/GameAudio.h"
}
@@ -61,6 +62,19 @@ Fast::Interpreter* GetInterpreter() {
GameEngine* GameEngine::Instance;
+bool CreateDirectoryRecursive(std::string const& dirName, std::error_code& err) {
+ err.clear();
+ if (!std::filesystem::create_directories(dirName, err)) {
+ if (std::filesystem::exists(dirName)) {
+ // The folder already exists:
+ err.clear();
+ return true;
+ }
+ return false;
+ }
+ return true;
+}
+
GameEngine::GameEngine() {
const std::string main_path = Ship::Context::GetPathRelativeToAppDirectory("mk64.o2r");
@@ -95,7 +109,6 @@ GameEngine::GameEngine() {
if (std::filesystem::exists(assets_path)) {
archiveFiles.push_back(assets_path);
}
-
if (const std::string patches_path = Ship::Context::GetPathRelativeToAppDirectory("mods");
!patches_path.empty() && std::filesystem::exists(patches_path)) {
if (std::filesystem::is_directory(patches_path)) {
@@ -477,8 +490,8 @@ void GameEngine::HandleAudioThread() {
int samples_left = AudioPlayerBuffered();
u32 num_audio_samples = samples_left < AudioPlayerGetDesiredBuffered() ? SAMPLES_HIGH : SAMPLES_LOW;
- s16 audio_buffer[SAMPLES_PER_FRAME];
- for (int i = 0; i < NUM_AUDIO_CHANNELS; i++) {
+ s16 audio_buffer[SAMPLES_PER_FRAME] = { 0 };
+ for (size_t i = 0; i < NUM_AUDIO_CHANNELS; i++) {
create_next_audio_buffer(audio_buffer + i * (num_audio_samples * 2), num_audio_samples);
}
@@ -685,6 +698,17 @@ extern "C" bool GameEngine_OTRSigCheck(const char* data) {
return strncmp(data, sOtrSignature, strlen(sOtrSignature)) == 0;
}
+extern "C" int32_t GameEngine_ResourceGetTexTypeByName(const char* name) {
+ const auto res = std::static_pointer_cast<Fast::Texture>(ResourceLoad(name));
+
+ if (res != nullptr) {
+ return (int16_t) res->Type;
+ }
+
+ SPDLOG_ERROR("Given texture path is a non-existent resource");
+ return -1;
+}
+
// struct TimedEntry {
// uint64_t duration;
// TimerAction action;