Commit graph

37 commits

Author SHA1 Message Date
Garrett Smith
8eaa83204a pass gameid to init_saving() 2026-01-17 23:08:44 -08:00
Garrett Smith
496639b8c1 update code to reflect relocation 2026-01-17 22:51:05 -08:00
Garrett Smith
575c8f22a0
Add recomp::Configuration and ultramodern::MessageQueueControl + plumbing (#131)
Some checks are pending
validate / ubuntu (arm64, Debug) (push) Waiting to run
validate / ubuntu (arm64, Release) (push) Waiting to run
validate / ubuntu (x64, Debug) (push) Waiting to run
validate / ubuntu (x64, Release) (push) Waiting to run
validate / windows (x64, Debug) (push) Waiting to run
validate / windows (x64, Release) (push) Waiting to run
validate / macos (arm64, Debug) (push) Waiting to run
validate / macos (arm64, Release) (push) Waiting to run
validate / macos (x64, Debug) (push) Waiting to run
validate / macos (x64, Release) (push) Waiting to run
2026-01-15 20:23:39 -05:00
Wiseguy
d237c86427
Allow mods to include a ROM patch .bps file (#126)
Some checks failed
validate / ubuntu (arm64, Debug) (push) Has been cancelled
validate / ubuntu (arm64, Release) (push) Has been cancelled
validate / ubuntu (x64, Debug) (push) Has been cancelled
validate / ubuntu (x64, Release) (push) Has been cancelled
validate / windows (x64, Debug) (push) Has been cancelled
validate / windows (x64, Release) (push) Has been cancelled
validate / macos (arm64, Debug) (push) Has been cancelled
validate / macos (arm64, Release) (push) Has been cancelled
validate / macos (x64, Debug) (push) Has been cancelled
validate / macos (x64, Release) (push) Has been cancelled
* Implement BPS patcher for rom patch mods

* Integrate ROM patcher and add ROM patch content type
2025-11-29 22:52:50 -05:00
Wiseguy
bd1dde8774
Implement optional dependencies for mods and add recomp_get_mod_file_path export (#118) 2025-07-19 03:44:52 -04:00
Wiseguy
94b30d7061
Add exports to get the return value of functions from return hooks (#116)
Some checks failed
validate / ubuntu (arm64, Debug) (push) Has been cancelled
validate / ubuntu (arm64, Release) (push) Has been cancelled
validate / ubuntu (x64, Debug) (push) Has been cancelled
validate / ubuntu (x64, Release) (push) Has been cancelled
validate / windows (x64, Debug) (push) Has been cancelled
validate / windows (x64, Release) (push) Has been cancelled
validate / macos (arm64, Debug) (push) Has been cancelled
validate / macos (arm64, Release) (push) Has been cancelled
validate / macos (x64, Debug) (push) Has been cancelled
validate / macos (x64, Release) (push) Has been cancelled
2025-06-23 01:42:05 -04:00
Wiseguy
4ba1b54d22
Sort hooks and callbacks by mod order, with return hooks in reverse order (#115) 2025-06-23 01:37:59 -04:00
Darío
02d797aedc
Add support for embedded mods. (#108)
Some checks failed
validate / ubuntu (x64, Debug) (push) Has been cancelled
validate / ubuntu (x64, Release) (push) Has been cancelled
validate / ubuntu (arm64, Debug) (push) Has been cancelled
validate / ubuntu (arm64, Release) (push) Has been cancelled
validate / windows (x64, Debug) (push) Has been cancelled
validate / windows (x64, Release) (push) Has been cancelled
validate / macos (arm64, Debug) (push) Has been cancelled
validate / macos (arm64, Release) (push) Has been cancelled
validate / macos (x64, Debug) (push) Has been cancelled
validate / macos (x64, Release) (push) Has been cancelled
* Add support for embedded mods.

* Fix autogenerated mod manifests

---------

Co-authored-by: Mr-Wiseguy <mrwiseguyromhacking@gmail.com>
2025-04-22 23:53:43 -04:00
Wiseguy
1f2a5838ab
Added a mechanism to swap save files at runtime and a corresponding mod API export (#101)
Some checks are pending
validate / ubuntu (x64, Release) (push) Waiting to run
validate / ubuntu (arm64, Debug) (push) Waiting to run
validate / ubuntu (arm64, Release) (push) Waiting to run
validate / ubuntu (x64, Debug) (push) Waiting to run
validate / windows (x64, Debug) (push) Waiting to run
validate / windows (x64, Release) (push) Waiting to run
validate / macos (arm64, Debug) (push) Waiting to run
validate / macos (arm64, Release) (push) Waiting to run
validate / macos (x64, Debug) (push) Waiting to run
validate / macos (x64, Release) (push) Waiting to run
2025-04-08 02:21:06 -04:00
Wiseguy
cacb14fee5
Add mod API export to let a mod get its own version (#100) 2025-04-08 01:04:37 -04:00
Wiseguy
af075623dc
Add callback for mod reordering and functions to get mod file path and order index (#99)
Some checks failed
validate / windows (x64, Release) (push) Has been cancelled
validate / ubuntu (arm64, Debug) (push) Has been cancelled
validate / ubuntu (arm64, Release) (push) Has been cancelled
validate / ubuntu (x64, Debug) (push) Has been cancelled
validate / ubuntu (x64, Release) (push) Has been cancelled
validate / windows (x64, Debug) (push) Has been cancelled
validate / macos (arm64, Debug) (push) Has been cancelled
validate / macos (arm64, Release) (push) Has been cancelled
validate / macos (x64, Debug) (push) Has been cancelled
validate / macos (x64, Release) (push) Has been cancelled
2025-04-06 22:14:13 -04:00
Wiseguy
8506c1b588
Fix race condition where update_gfx could be called after renderer shutdown (#98) 2025-04-06 19:42:15 -04:00
Wiseguy
db1b1a1082
Expose functionality needed for runtime mod installation (#97)
Some checks are pending
validate / ubuntu (arm64, Release) (push) Waiting to run
validate / ubuntu (x64, Debug) (push) Waiting to run
validate / ubuntu (x64, Release) (push) Waiting to run
validate / ubuntu (arm64, Debug) (push) Waiting to run
validate / windows (x64, Debug) (push) Waiting to run
validate / windows (x64, Release) (push) Waiting to run
validate / macos (arm64, Debug) (push) Waiting to run
validate / macos (arm64, Release) (push) Waiting to run
validate / macos (x64, Debug) (push) Waiting to run
validate / macos (x64, Release) (push) Waiting to run
* DnD prototype.

* Remaining changes needed for runtime mod installation

* Change path unordered map to use strings as keys instead to fix MacOS compilation

---------

Co-authored-by: Dario <dariosamo@gmail.com>
2025-04-06 03:53:28 -04:00
Wiseguy
2ed84f46c5
Implement mod configuration, mod reordering, and extended exports (#95)
* init recomp config_store

* Use a custom hash class to enable hetereogenous lookup

* Added config registry/option files

* switch to using usings

* dropdown config type

* Added TextField option type

* parse/validate button config type

* wip callback registry

* Add auto enabled.

* Cleanup.

* Add support for config schema.

* Add float arg1 helpers

* Config storage for mods.

* Proper enum parsing.

* Persist mod order and enable.

* Enable new mods by default.

* Mods directory.

* Parse thumbnail when opening mods.

* Auto-enabled mods.

* Implement extended function exports that pass the caller mod's index as an extra argument

* Fix mod configs not saving and default value not getting parsed

* Implement API to allow mods to read their config values

* Fix config value parsing to allow integral values for double fields

* Change construction of ModConfigQueueSaveMod.

* Fix N64Recomp commit after rebase

---------

Co-authored-by: Dario <dariosamo@gmail.com>
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
2025-03-23 21:30:27 -04:00
Wiseguy
a2f201db84
Add on init callback to GameEntry, fix thread_queue_remove not actually removing the thread (#87) 2025-02-17 21:34:22 -05:00
Wiseguy
cdfe416809
Mod function hooking (#80)
* 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
2025-01-26 22:03:36 -05:00
Ethan Lafrenais
9721c8de3b
Add GameEntry.thread_create_callback (#78) 2025-01-12 23:43:53 -05:00
Wiseguy
d17a3f34cb
Integrate the live recompiler for mod loading (#76) 2025-01-02 21:25:20 -05:00
Wiseguy
576fed6cfc
Fix mods getting duplicated when scanning multiple times, fix incorrect mmap for rdram (#71) 2024-12-04 18:41:35 -05:00
Wiseguy
d5c81d0a6b
Fixed bitpattern pointer for osContInit and removed shader cache functionality (#69) 2024-11-08 21:09:16 -05:00
Wiseguy
ef6e84cb8a
Added save type selection and validation (#68) 2024-10-26 22:38:25 -04:00
Wiseguy
9ee0e7369a
Misc fixes and implement osStopThread (partial), osEepromWrite, and osEepromRead (#67)
* 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
2024-10-26 20:41:05 -04:00
Wiseguy
3e39c2ec34
Add modified o1Heap library and set up recomp heap (#66)
* Add modified o1Heap library and set up recomp heap

* Fix missing include on POSIX systems
2024-10-21 22:23:33 -04:00
Wiseguy
25e8bcc1e1
Added mechanism for recomps to declare custom mod content types and container formats (#64)
Also adds a way to specify whether a given content type can be toggled at runtime. The built-in mod code content type has this setting disabled.
2024-09-28 16:47:00 -04:00
Wiseguy
45e9f7a6cb
Runtime Mod Support PR 1 (Mod framework and mod loading) (#60)
* 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
2024-09-09 23:16:07 -04:00
Anghelo Carvajal
27282afa2b
Remove "permanent" and "temporary" threads tagging and add a way to name game threads (#45)
* 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
2024-06-18 13:02:18 -04:00
Anghelo Carvajal
4d756c8df2
Consolidate both patch register functions into a single function (#40)
* Consolidate both patch register functions into one

* register_patches
2024-06-10 09:52:27 -04:00
Anghelo Carvajal
b4dbddb555
Remove RT64 dependency (#35)
* `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)`
2024-06-10 09:43:38 -04:00
Anghelo Carvajal
2caf04e6da
Move controller implementations from librecomp to ultramodern (#38)
* 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
2024-06-06 13:45:33 -04:00
David Chavez
9f0dd2fcd9
Use hpp suffix for cpp headers (#33) 2024-06-03 20:31:52 +02:00
David Chavez
56cfbb2d31
Make ModernRuntime Integration Ready (#26)
Co-authored-by: angie <angheloalf95@gmail.com>
2024-06-01 08:36:29 +02:00
Anghelo Carvajal
e3e7024342
Remove librecomp usage from ultramodern (#23)
* 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
2024-05-30 22:56:45 -04:00
David Chavez
3ddeb07d85
Add CI workflows (#21) 2024-05-25 10:06:17 +02:00
dcvz
72bc656c5e Add overlays (#5) 2024-05-24 21:44:11 +02:00
David Chavez
32632ab2ff
Game Registration API (#1) 2024-05-22 04:03:39 +02:00
dcvz
b47b52f540 Add CMakeLists 2024-05-19 22:31:47 +02:00
Mr-Wiseguy
3504a4c71f Added ultramodern and librecomp from Zelda64Recomp, added rt64 submodule, added README 2024-05-19 15:04:28 -04:00