diff --git a/librecomp/include/librecomp/game.hpp b/librecomp/include/librecomp/game.hpp index 5bcfaca..84c5302 100644 --- a/librecomp/include/librecomp/game.hpp +++ b/librecomp/include/librecomp/game.hpp @@ -41,7 +41,16 @@ namespace recomp { void set_rom_contents(std::vector&& new_rom); void do_rom_read(uint8_t* rdram, gpr ram_address, uint32_t physical_addr, size_t num_bytes); void do_rom_pio(uint8_t* rdram, gpr ram_address, uint32_t physical_addr); - void start(ultramodern::WindowHandle window_handle, const recomp::rsp::callbacks_t& rsp_callbacks, const ultramodern::audio_callbacks_t& audio_callbacks, const ultramodern::input::callbacks_t& input_callbacks, const ultramodern::gfx_callbacks_t& gfx_callbacks, const ultramodern::events::callbacks_t& thread_callbacks, const ultramodern::error_handling::callbacks_t& error_handling_callbacks_); + void start( + ultramodern::WindowHandle window_handle, + const recomp::rsp::callbacks_t& rsp_callbacks, + const ultramodern::renderer::callbacks_t& renderer_callbacks, + const ultramodern::audio_callbacks_t& audio_callbacks, + const ultramodern::input::callbacks_t& input_callbacks, + const ultramodern::gfx_callbacks_t& gfx_callbacks, + const ultramodern::events::callbacks_t& events_callbacks, + const ultramodern::error_handling::callbacks_t& error_handling_callbacks_ + ); void start_game(const std::u8string& game_id); std::u8string current_game_id(); } diff --git a/librecomp/src/eep.cpp b/librecomp/src/eep.cpp index 2485ec8..ee73929 100644 --- a/librecomp/src/eep.cpp +++ b/librecomp/src/eep.cpp @@ -1,5 +1,6 @@ -#include "recomp.h" -#include +#include "librecomp/recomp.h" + +#include "ultramodern/ultra64.h" void save_write(RDRAM_ARG PTR(void) rdram_address, uint32_t offset, uint32_t count); void save_read(RDRAM_ARG PTR(void) rdram_address, uint32_t offset, uint32_t count); diff --git a/librecomp/src/recomp.cpp b/librecomp/src/recomp.cpp index df52937..2202a96 100644 --- a/librecomp/src/recomp.cpp +++ b/librecomp/src/recomp.cpp @@ -390,7 +390,16 @@ void ultramodern::quit() { current_game.reset(); } -void recomp::start(ultramodern::WindowHandle window_handle, const recomp::rsp::callbacks_t& rsp_callbacks, const ultramodern::audio_callbacks_t& audio_callbacks, const ultramodern::input::callbacks_t& input_callbacks, const ultramodern::gfx_callbacks_t& gfx_callbacks_, const ultramodern::events::callbacks_t& thread_callbacks_, const ultramodern::error_handling::callbacks_t& error_handling_callbacks_) { +void recomp::start( + ultramodern::WindowHandle window_handle, + const recomp::rsp::callbacks_t& rsp_callbacks, + const ultramodern::renderer::callbacks_t& renderer_callbacks, + const ultramodern::audio_callbacks_t& audio_callbacks, + const ultramodern::input::callbacks_t& input_callbacks, + const ultramodern::gfx_callbacks_t& gfx_callbacks_, + const ultramodern::events::callbacks_t& events_callbacks, + const ultramodern::error_handling::callbacks_t& error_handling_callbacks_ +) { recomp::check_all_stored_roms(); recomp::rsp::set_callbacks(rsp_callbacks); @@ -400,7 +409,7 @@ void recomp::start(ultramodern::WindowHandle window_handle, const recomp::rsp::c .run_task = recomp::rsp::run_task, }; - ultramodern::set_callbacks(ultramodern_rsp_callbacks, audio_callbacks, input_callbacks, gfx_callbacks_, thread_callbacks_, error_handling_callbacks_); + ultramodern::set_callbacks(ultramodern_rsp_callbacks, renderer_callbacks, audio_callbacks, input_callbacks, gfx_callbacks_, events_callbacks, error_handling_callbacks_); ultramodern::gfx_callbacks_t gfx_callbacks = gfx_callbacks_; diff --git a/ultramodern/include/ultramodern/ultramodern.hpp b/ultramodern/include/ultramodern/ultramodern.hpp index 3649cd6..cb0a8d2 100644 --- a/ultramodern/include/ultramodern/ultramodern.hpp +++ b/ultramodern/include/ultramodern/ultramodern.hpp @@ -29,6 +29,7 @@ #include "ultramodern/events.hpp" #include "ultramodern/input.hpp" #include "ultramodern/rsp.hpp" +#include "ultramodern/renderer_wrapper.hpp" struct UltraThreadContext { std::thread host_thread; @@ -168,7 +169,15 @@ void set_audio_callbacks(const audio_callbacks_t& callbacks); * * It must be called only once and it must be called before `ultramodern::preinit`. */ -void set_callbacks(const rsp::callbacks_t& rsp_callbacks, const audio_callbacks_t& audio_callbacks, const input::callbacks_t& input_callbacks, const gfx_callbacks_t& gfx_callbacks, const events::callbacks_t& events_callbacks, const error_handling::callbacks_t& error_handling_callbacks); +void set_callbacks( + const rsp::callbacks_t& rsp_callbacks, + const renderer::callbacks_t& renderer_callbacks, + const audio_callbacks_t& audio_callbacks, + const input::callbacks_t& input_callbacks, + const gfx_callbacks_t& gfx_callbacks, + const events::callbacks_t& events_callbacks, + const error_handling::callbacks_t& error_handling_callbacks +); } // namespace ultramodern #define MIN(a, b) ((a) < (b) ? (a) : (b)) diff --git a/ultramodern/src/ultrainit.cpp b/ultramodern/src/ultrainit.cpp index 05fb479..8181141 100644 --- a/ultramodern/src/ultrainit.cpp +++ b/ultramodern/src/ultrainit.cpp @@ -3,6 +3,7 @@ void ultramodern::set_callbacks( const rsp::callbacks_t& rsp_callbacks, + const renderer::callbacks_t& renderer_callbacks, const audio_callbacks_t& audio_callbacks, const input::callbacks_t& input_callbacks, const gfx_callbacks_t& gfx_callbacks, @@ -15,6 +16,7 @@ void ultramodern::set_callbacks( (void)gfx_callbacks; // nothing yet ultramodern::events::set_callbacks(thread_callbacks); ultramodern::error_handling::set_callbacks(error_handling_callbacks); + ultramodern::renderer::set_callbacks(renderer_callbacks); } void ultramodern::preinit(RDRAM_ARG ultramodern::WindowHandle window_handle) {