From 42e4dac71774318e2ef1b4353e2aededc904efc5 Mon Sep 17 00:00:00 2001 From: Dario Date: Tue, 22 Apr 2025 20:17:03 -0300 Subject: [PATCH] Add embedded mod (using mm_recomp_draw_distance as an example). --- CMakeLists.txt | 21 +++++++++++++++++++++ lib/N64ModernRuntime | 2 +- mods/.gitignore | 1 + src/main/main.cpp | 4 ++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 mods/.gitignore diff --git a/CMakeLists.txt b/CMakeLists.txt index 2dd58fa..2081a31 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -399,6 +399,27 @@ endif() build_vertex_shader(Zelda64Recompiled "shaders/InterfaceVS.hlsl" "shaders/InterfaceVS.hlsl") build_pixel_shader(Zelda64Recompiled "shaders/InterfacePS.hlsl" "shaders/InterfacePS.hlsl") +# Embed all .nrm files in the "mods" directory +file(GLOB NRM_FILES "${CMAKE_SOURCE_DIR}/mods/*.nrm") + +set(GENERATED_NRM_SOURCES "") + +foreach(NRM_FILE ${NRM_FILES}) + get_filename_component(NRM_NAME ${NRM_FILE} NAME_WE) + set(OUT_C "${CMAKE_CURRENT_BINARY_DIR}/mods/${NRM_NAME}.c") + set(OUT_H "${CMAKE_CURRENT_BINARY_DIR}/mods/${NRM_NAME}.h") + + add_custom_command( + OUTPUT ${OUT_C} ${OUT_H} + COMMAND file_to_c ${NRM_FILE} ${NRM_NAME} ${OUT_C} ${OUT_H} + DEPENDS ${NRM_FILE} + ) + + list(APPEND GENERATED_NRM_SOURCES ${OUT_C}) +endforeach() + +target_sources(Zelda64Recompiled PRIVATE ${GENERATED_NRM_SOURCES}) + target_sources(Zelda64Recompiled PRIVATE ${SOURCES}) set_property(TARGET Zelda64Recompiled PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") diff --git a/lib/N64ModernRuntime b/lib/N64ModernRuntime index 4b57f50..ec192e6 160000 --- a/lib/N64ModernRuntime +++ b/lib/N64ModernRuntime @@ -1 +1 @@ -Subproject commit 4b57f50722c0e7d9189f79a7cc525d51ba98c52a +Subproject commit ec192e67335e27428f24e925ad41857304c69926 diff --git a/mods/.gitignore b/mods/.gitignore new file mode 100644 index 0000000..26381b9 --- /dev/null +++ b/mods/.gitignore @@ -0,0 +1 @@ +*.nrm \ No newline at end of file diff --git a/src/main/main.cpp b/src/main/main.cpp index ae6a590..b7e9f32 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -38,6 +38,8 @@ #include "../../patches/sound.h" #include "../../patches/misc_funcs.h" +#include "mods/mm_recomp_draw_distance.h" + #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -617,6 +619,8 @@ int main(int argc, char** argv) { recomp::register_game(game); } + recomp::mods::register_embedded_mod("mm_recomp_draw_distance", { (const uint8_t*)(mm_recomp_draw_distance), std::size(mm_recomp_draw_distance)}); + REGISTER_FUNC(recomp_get_window_resolution); REGISTER_FUNC(recomp_get_target_aspect_ratio); REGISTER_FUNC(recomp_get_target_framerate);