diff --git a/librecomp/include/librecomp/game.hpp b/librecomp/include/librecomp/game.hpp index 4c2b304..fe74e38 100644 --- a/librecomp/include/librecomp/game.hpp +++ b/librecomp/include/librecomp/game.hpp @@ -4,9 +4,10 @@ #include #include +#include "ultramodern/ultramodern.hpp" + #include "recomp.h" #include "rsp.hpp" -#include namespace recomp { struct GameEntry { diff --git a/librecomp/include/librecomp/save.hpp b/librecomp/include/librecomp/save.hpp new file mode 100644 index 0000000..e03f62f --- /dev/null +++ b/librecomp/include/librecomp/save.hpp @@ -0,0 +1,13 @@ +#ifndef __LIBRECOMP_SAVE_HPP__ +#define __LIBRECOMP_SAVE_HPP__ + +#include + +namespace recomp { + namespace save { + void init(uint8_t *rdram); + void join_thread(); + } +} + +#endif diff --git a/librecomp/src/pi.cpp b/librecomp/src/pi.cpp index 855211c..d527832 100644 --- a/librecomp/src/pi.cpp +++ b/librecomp/src/pi.cpp @@ -7,8 +7,11 @@ #include "recomp.h" #include "game.hpp" #include "files.hpp" -#include -#include + +#include "ultramodern/ultra64.h" +#include "ultramodern/ultramodern.hpp" + +#include "librecomp/save.hpp" static std::vector rom; @@ -153,7 +156,7 @@ void save_write_ptr(const void* in, uint32_t offset, uint32_t count) { std::lock_guard lock { save_context.save_buffer_mutex }; memcpy(&save_context.save_buffer[offset], in, count); } - + save_context.write_sempahore.signal(); } @@ -184,7 +187,7 @@ void save_clear(uint32_t start, uint32_t size, char value) { save_context.write_sempahore.signal(); } -void ultramodern::init_saving(RDRAM_ARG1) { +void recomp::save::init(uint8_t *rdram) { std::filesystem::path save_file_path = get_save_file_path(); // Ensure the save file directory exists. @@ -203,7 +206,7 @@ void ultramodern::init_saving(RDRAM_ARG1) { save_context.saving_thread = std::thread{saving_thread_func, PASS_RDRAM}; } -void ultramodern::join_saving_thread() { +void recomp::save::join_thread() { if (save_context.saving_thread.joinable()) { save_context.saving_thread.join(); } diff --git a/librecomp/src/recomp.cpp b/librecomp/src/recomp.cpp index 75f8a05..9616b81 100644 --- a/librecomp/src/recomp.cpp +++ b/librecomp/src/recomp.cpp @@ -18,6 +18,8 @@ #include "ultramodern/ultramodern.hpp" #include "ultramodern/error_handling.hpp" +#include "librecomp/save.hpp" + #ifdef _MSC_VER inline uint32_t byteswap(uint32_t val) { return _byteswap_ulong(val); @@ -434,7 +436,7 @@ void recomp::start( ultramodern::error_handling::message_box("Error opening stored ROM! Please restart this program."); } - ultramodern::init_saving(rdram); + recomp::save::init(rdram); auto find_it = game_roms.find(current_game.value()); const recomp::GameEntry& game_entry = find_it->second; @@ -469,5 +471,5 @@ void recomp::start( game_thread.join(); ultramodern::join_event_threads(); ultramodern::join_thread_cleaner_thread(); - ultramodern::join_saving_thread(); + recomp::save::join_thread(); } diff --git a/ultramodern/include/ultramodern/ultramodern.hpp b/ultramodern/include/ultramodern/ultramodern.hpp index b144eaa..be2372c 100644 --- a/ultramodern/include/ultramodern/ultramodern.hpp +++ b/ultramodern/include/ultramodern/ultramodern.hpp @@ -36,7 +36,6 @@ constexpr uint32_t save_size = 1024 * 1024 / 8; // Maximum save size, 1Mbit for // Initialization. void preinit(RDRAM_ARG renderer::WindowHandle window_handle); -void init_saving(RDRAM_ARG1); void init_events(RDRAM_ARG renderer::WindowHandle window_handle); void init_timers(RDRAM_ARG1); void init_thread_cleanup(); @@ -124,7 +123,6 @@ bool is_game_started(); void quit(); void join_event_threads(); void join_thread_cleaner_thread(); -void join_saving_thread(); void set_audio_callbacks(const audio_callbacks_t& callbacks);