diff --git a/librecomp/include/librecomp/game.hpp b/librecomp/include/librecomp/game.hpp index 298f009..5b8f88e 100644 --- a/librecomp/include/librecomp/game.hpp +++ b/librecomp/include/librecomp/game.hpp @@ -41,6 +41,14 @@ 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); + + /** + * The following arguments contain mandatory callbacks that need to be registered (i.e., can't be `nullptr`): + * - `rsp_callbacks` + * - `renderer_callbacks` + * + * It must be called only once and it must be called before `ultramodern::preinit`. + */ void start( ultramodern::renderer::WindowHandle window_handle, const recomp::rsp::callbacks_t& rsp_callbacks, @@ -51,6 +59,7 @@ namespace recomp { 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/ultramodern/CMakeLists.txt b/ultramodern/CMakeLists.txt index 2cf9ed4..81d183f 100644 --- a/ultramodern/CMakeLists.txt +++ b/ultramodern/CMakeLists.txt @@ -5,10 +5,6 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_EXTENSIONS OFF) -# Warnings -# TODO: uncoment this when we fix the warnings -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") - add_library(ultramodern STATIC "${CMAKE_CURRENT_SOURCE_DIR}/src/audio.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/error_handling.cpp" diff --git a/ultramodern/include/ultramodern/ultramodern.hpp b/ultramodern/include/ultramodern/ultramodern.hpp index 1f7be4b..8dbccdc 100644 --- a/ultramodern/include/ultramodern/ultramodern.hpp +++ b/ultramodern/include/ultramodern/ultramodern.hpp @@ -131,6 +131,10 @@ void set_audio_callbacks(const audio_callbacks_t& callbacks); /** * Register all the callbacks used by `ultramodern`, most of them being optional. * + * The following arguments contain mandatory callbacks that need to be registered (i.e., can't be `nullptr`): + * - `rsp_callbacks` + * - `renderer_callbacks` + * * It must be called only once and it must be called before `ultramodern::preinit`. */ void set_callbacks( diff --git a/ultramodern/src/events.cpp b/ultramodern/src/events.cpp index a6c93df..7d5bf68 100644 --- a/ultramodern/src/events.cpp +++ b/ultramodern/src/events.cpp @@ -230,13 +230,13 @@ uint32_t ultramodern::get_target_framerate(uint32_t original) { auto& config = ultramodern::renderer::get_graphics_config(); switch (config.rr_option) { - default: - case ultramodern::renderer::RefreshRate::Original: - return original; - case ultramodern::renderer::RefreshRate::Manual: - return config.rr_manual_value; - case ultramodern::renderer::RefreshRate::Display: - return display_refresh_rate.load(); + case ultramodern::renderer::RefreshRate::Original: + default: + return original; + case ultramodern::renderer::RefreshRate::Manual: + return config.rr_manual_value; + case ultramodern::renderer::RefreshRate::Display: + return display_refresh_rate.load(); } }