Commit graph

82 commits

Author SHA1 Message Date
Dario
f80c2886ab Auto-enabled mods. 2025-02-11 22:48:21 -05:00
Dario
3ac97d9269 Parse thumbnail when opening mods. 2025-02-11 22:48:21 -05:00
Dario
e436b41bb5 Mods directory. 2025-02-11 22:48:21 -05:00
Dario
c8fc47b1c7 Enable new mods by default. 2025-02-11 22:48:21 -05:00
Dario
19e751b2f2 Persist mod order and enable. 2025-02-11 22:48:21 -05:00
Dario
f428624b92 Proper enum parsing. 2025-02-11 22:48:21 -05:00
Dario
7045b43457 Config storage for mods. 2025-02-11 22:48:21 -05:00
Mr-Wiseguy
293e09f0ed Add float arg1 helpers 2025-02-11 22:48:20 -05:00
Dario
6bffbcfaf5 Add support for config schema. 2025-02-11 22:48:20 -05:00
Dario
88e96fa3cc Cleanup. 2025-02-11 22:48:20 -05:00
Dario
b9660c127e Add auto enabled. 2025-02-11 22:48:20 -05:00
thecozies
5b21f108cd wip callback registry 2025-02-11 22:48:20 -05:00
thecozies
4d376e5e0c parse/validate button config type 2025-02-11 22:48:20 -05:00
thecozies
33d3367761 Added TextField option type 2025-02-11 22:48:20 -05:00
thecozies
7bfd5f9bc8 dropdown config type 2025-02-11 22:48:20 -05:00
thecozies
e5a2ae6b96 switch to using usings 2025-02-11 22:48:20 -05:00
thecozies
57ec421d78 Added config registry/option files 2025-02-11 22:48:19 -05:00
thecozies
4e5c4bb5d5 Use a custom hash class to enable hetereogenous lookup 2025-02-11 22:48:19 -05:00
thecozies
a8f7f5e035 init recomp config_store 2025-02-11 22:48:19 -05:00
Wiseguy
0afeb089a5
Fix jump table handling in regenerated relocatable functions (#86) 2025-02-11 22:45:45 -05:00
Wiseguy
5360099ee2
Fix issues with hooking functions that were patched by the base recomp (#85) 2025-02-11 01:11:24 -05:00
Wiseguy
7319630e2e
Fix issue with regenerating patched functions with no base functions regenerated, add 1kB of padding between mods to mitigate OOB accesses in mods, update N64Recomp (#84) 2025-01-30 03:02:40 -05:00
Wiseguy
3474514013
Populate display_name for autogenerated manifests (#83) 2025-01-26 23:00:13 -05:00
Wiseguy
6eca1df47f
Edited mod error messages to reflect new manifest filename, updated N64Recomp commit (#82) 2025-01-26 22:51:39 -05:00
Wiseguy
5eada509c0
Rename manifest to mod.json, refactor config parsing, add display_name, description, short_description fields (#81) 2025-01-26 22:14:08 -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
7eb4bc3459
Runtime support for RSP overlays (#77) 2025-01-16 00:32:33 -05:00
Wiseguy
50029c70fd
Update sse2neon.h (#79) 2025-01-13 02:11: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
Darío
1361c48f59
Use SDL_Window as the WindowHandle in Linux and Android. (#73) 2024-12-23 21:23:24 -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
e3a8355a19
Fix eeprom probe and remove redundant eeprom size checks (#70) 2024-11-24 02:20:24 -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
9e9ae173ee
Fixed incorrect alignment during mod section loading (#65) 2024-10-12 01:10:59 -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
46797d6cad
Made DLL loading also search the DLL's path for dependency resolution (#63) 2024-09-27 00:50:07 -04:00
David Chavez
b80bb216b2
fix(macos): Add support for macos and ARM64 patching (#62) 2024-09-17 18:15:24 -04:00
Wiseguy
356b9f901e
Fix populating reference symbol pointers and add missing runtime function pointers in offline compiled mod loading (#61)
* Fixed reference symbol pointers not being populated in offline compiled mods

* Add populating missing runtime function pointers in offline compiled mods

* Update N64Recomp after merge
2024-09-12 19:00:02 -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
Wiseguy
0a53855333
Add RECOMP_FUNC definition to recomp.h for disabling IPO (#59) 2024-08-13 23:30:33 -04:00
Wiseguy
47feaaaa0d
Allow registering multiple patch sections (#57) 2024-07-28 21:19:46 -04:00
Anghelo Carvajal
c7ab41ec05
Fix saving never failing (#53) 2024-06-21 19:31:16 -04:00
David Chavez
ce68e96c17
Remove WIP section in README (#52) 2024-06-20 17:16:43 +02:00
David Chavez
e94dc4055b
Implement osViRepeatLine (#30)
* Implement osViRepeatLine

* Address feedback

* Include helpers header

* Address feedback
2024-06-18 17:00:26 -04:00
Anghelo Carvajal
93fab7ecc4
Provide missing pfs stub functions (#50)
* `osPiRawStartDma_recomp` and `osEPiRawStartDma`

* `osPfsNumFiles` and `osPfsRepairId`

* whoops, wrong name

* Fix missing new line on message box

* Use actual pointers in osPfsNumFiles_recomp
2024-06-18 13:07:08 -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