* Prevent mods from replacing functions patched by the base recomp unless they're marked as Force
* Implement function hooking for functions replaced by mods
* Add support for hooking non-relocated functions that aren't replaced by a mod
* Only create the regenerated code handle if any functions need to be regenerated
* Implement relocs for function regeneration in hooking
* Implement hooking of functions patched by the base recomp
* Fix base event index tracking when loading mods
* Update to N64Recomp main branch after merge
* Fix rdram allocation to only allow kseg0 accesses
* Implement osEepromWrite and osEepromRead, fix implicit casting error in save_write
* Partially implement osStopThread
* Fix audio allowing games to queue 0 samples
* Remove commented out line
* Added miniz and implemented mod manifest loading from zip
* Add more mod loading error enums
* Added ability to load mods from directories instead of zip files
* Added validation for mod contents and mod load error strings
* Add checks for required fields existing in manifest
* Renamed load_mod to open_mod and ModLoadError to ModOpenError
* Made rdram size an argument in recomp::start, reorganized some PI address constants
* Add N64Recomp as submodule and initial mod loading (temporarily using a DLL instead of Lua recompilation)
* Created ModContext and exposed functionality for searching mod folders, activating mods, and loading active mods
* Implemented per-game mod contexts
* Add duplicate mod detection
* Added function conflict detection, recovery from failed mod loading and message box with load errors
* Update N64Recomp for new modding infrastructure, begin adding support for offline compiled mods
* Reorganized mod loading, added mod dependency validation
* Reorganized mod code handle code
* Implement importing functions from other mods
* Implement mod events and callbacks
* Add support for creating events in patches
* Add support for exporting functions from native libraries in mods
* Removed per-game mod subdirectories and added the mod's corresponding game id to the manifest
* Added version parsing with version number as argument to recomp initialization and minimum recomp versions for mods
* Changed mod binary and mod symbol files to use fixed paths, removed them from the manifest
* Expose function for getting the details for currently opened mods
* Add dependencies and authors to manifest and update N64Recomp submodule
* Implement mod loading on posix systems
* Implement mip32 relocs for mod loading and add mod functions to function lookup table
* Add CPU architecture detection and gate current mod function hooking behind x86_64 define
* Fix build on compilers that don't properly support aggregate initialization
* Fix compilation on ARM64 and Apple
* Fix compilation on MacOS x86_64
* Update N64Recomp commit after merge
* Fix whitespace in game.hpp
* `osPiRawStartDma_recomp` and `osEPiRawStartDma`
* `osPfsNumFiles` and `osPfsRepairId`
* whoops, wrong name
* Fix missing new line on message box
* Use actual pointers in osPfsNumFiles_recomp
* System to specify thread types by the game
* Register threads callbacks
* Remove temporary and permanent threads
* Fix `pthread_setname_np` not liking names longer than 16 bytes
* Singular
* Rename events_callbacks arg
* Use `prctl` instead of `pthread_setname_np` for naming a thread
* Fix typo
* `RendererContext` abstract class
* Delete rt64_layer
* Implement renderer creation callback
* Make `GraphicsConfig` an abstract class
* Remove rt64
* Add renderer callback to `ultramodern::set_callbacks`
* Fix rebase
* Change setup_result's visibility to protected
* Declare abstract `is_equal` method instead of operators
* Various fixes
* Fix issues
* trigger_config_action
* Move GraphicsConfig back to ultramodern
* Change `update_config` to return if any changes were applied
* Rename renderer_wrapper to renderer_context
* Remove SDL2 and other libraries
* Allow registering get_graphics_api_name
* Move WindowHandle to renderer namespace
* Comments explaining which callbacks are required
* Fix CI
* Update readme
* `ULTRAMODERN_QUICK_EXIT` macro
* Remove --config from readme
* Add `add_compile_definitions(NOMINMAX)`
* Start moving some cont functions to ultramodern
* Implement osContStartQuery, osContSetCh
* Finish moving cont.cpp functions to ultramodern
* Add constexpr to _return
* Fix rumble not working
* Rename cont.cpp to input.cpp
* Test
* Start setting up user callbacks system
* Implement RSP callbacks
* move RSP callbacks (and related RSP stuff) to its own file
* Move destroy_ui to gfx_callbacks_t and change recomp::start to require rsp_callbacks_t
* error_handling.hpp
* Remove UserCallbacks in favor of threads_callbacks_t
* Add `ultramodern::set_callbacks` and some other cleanups
* Move most RSP stuff to librecomp
* Rename rsp_stuff.hpp to rsp.hpp
* Add rsp.cpp to librecomp cmake file
* review
* Remove `recomp::message_box`
* Fix missing rename