33 Commits

Author SHA1 Message Date
Dario db4ec43d3a Switch deprecated mod. 2026-01-29 19:57:38 -03:00
Dario 10979f921e Update RecompFrontend for deprecated mod support. 2026-01-29 19:57:38 -03:00
Dario 65c377642a Add modern runtime with deprecated mods support. 2026-01-29 19:57:38 -03:00
Dario 432e4a12a6 Add always high poly model as deprecated mod. 2026-01-29 19:57:38 -03:00
Dario 80963dd419 Revert high-poly Banjo patch. Bring it back when heap allocation is expanded. 2026-01-29 19:57:05 -03:00
Dario 1a0d1053e9 Update RT64 to fix Vulkan Device Address being incorrectly used when unsupported. 2026-01-28 22:54:48 -03:00
Reonu 4982590054 Fixed typo in readme. 2026-01-28 22:07:36 +00:00
Reonu 8475fda0f1 Updated readme with thunderstore link and new FAQ entries (#217)
* Add new FAQ entries to readme

Updated FAQ

* Update README

* Update readme

* Add thunderstore link

* Update README.md

* Update README.md
2026-01-28 18:40:59 -03:00
Dario 91d1e2d272 Add missing extern for high poly Banjo patch. 2026-01-28 18:24:19 -03:00
Darío d124299373 Update RecompFrontend for axis accumulation changes. (#208)
* Update RecompFrontend for axis accumulation changes.

* Update RecompFrontend commit.
2026-01-28 18:14:12 -03:00
Darío 6b387ed9d2 Merge pull request #200 from BanjoRecomp/octagon-input
Update modern runtime to include N64 Octagon input mapping.
2026-01-28 18:03:20 -03:00
Darío 0159329eb1 Merge pull request #207 from BanjoRecomp/shine-scale-fix
Scale Jiggy shine back to zero on launcher animation on animation end.
2026-01-28 17:54:03 -03:00
Darío 661f848a8e Merge pull request #206 from BanjoRecomp/rt64-api-fallbacks
Update RT64 for new API creation fallbacks.
2026-01-28 17:51:42 -03:00
Darío e143c61609 Merge pull request #181 from TSRStormed/patch-1
Added patch for force high poly banjo
2026-01-28 17:47:16 -03:00
Darío 2cc5391511 Merge pull request #209 from BanjoRecomp/no-audio-device
Show error message when no audio device is available.
2026-01-28 17:42:50 -03:00
Dario c82a7b78d0 Update RT64 with AMD fallback. 2026-01-28 17:34:51 -03:00
Dario 066e40d158 Show error message when no audio device is available. 2026-01-28 00:28:41 -03:00
Dario a218f16f25 Update RT64 for new API creation fallbacks. 2026-01-27 22:43:23 -03:00
Dario 5ef2c7e338 Scale Jiggy shine back to zero on launcher animation on animation end. 2026-01-27 22:28:14 -03:00
Dario f8ac690670 Update modern runtime to include N64 Octagon input mapping. 2026-01-26 23:48:14 -03:00
TSRStormed 2fc6e70cb5 Update lod_patches.c
Added default:
2026-01-25 19:48:53 -07:00
TSRStormed 9a0b944f35 Update lod_patches.c 2026-01-25 19:29:36 -07:00
TSRStormed 025215049a Update lod_patches.c
Add force high poly player bk
2026-01-25 18:49:59 -07:00
Darío 045b738297 Merge pull request #173 from BanjoRecomp/ui-callbacks
Run UI callbacks per frame.
2026-01-25 21:21:05 -03:00
Dario 269d9bec93 Newline. 2026-01-25 20:48:59 -03:00
Dario 7cff85fa22 Run UI callbacks per frame. 2026-01-25 20:30:51 -03:00
Dario 7242b70ba5 Uncomment ARM64 workflow. 2026-01-25 19:03:18 -03:00
Dario c17aa22028 Update RT64 to force residency sets off in Metal. 2026-01-24 19:16:53 -03:00
Dario e659ecb7ea Update RecompFrontend to fix Mac menu issue. 2026-01-24 18:09:05 -03:00
Dario 5702422244 Set execute bit for ld64 2026-01-24 17:26:51 -03:00
Mr-Wiseguy d67eb10cff Update frontend for sse2neon include path 2026-01-24 15:10:05 -05:00
Mr-Wiseguy 9d2d5b1473 Add sse2neon include path 2026-01-24 14:58:26 -05:00
Dario af730a3d4f Remove scss folder from CI. 2026-01-24 16:51:45 -03:00
12 changed files with 54 additions and 19 deletions
Regular → Executable
View File
-3
View File
@@ -96,7 +96,6 @@ jobs:
- name: Prepare Archive - name: Prepare Archive
run: | run: |
mv cmake-build/BanjoRecompiled BanjoRecompiled mv cmake-build/BanjoRecompiled BanjoRecompiled
rm -rf assets/scss
tar -czf BanjoRecompiled.tar.gz BanjoRecompiled assets/ recompcontrollerdb.txt tar -czf BanjoRecompiled.tar.gz BanjoRecompiled assets/ recompcontrollerdb.txt
- name: Archive BanjoRecomp - name: Archive BanjoRecomp
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -180,7 +179,6 @@ jobs:
- name: Prepare Archive - name: Prepare Archive
run: | run: |
mv cmake-build/BanjoRecompiled BanjoRecompiled mv cmake-build/BanjoRecompiled BanjoRecompiled
rm -rf assets/scss
tar -czf BanjoRecompiled.tar.gz BanjoRecompiled assets/ recompcontrollerdb.txt tar -czf BanjoRecompiled.tar.gz BanjoRecompiled assets/ recompcontrollerdb.txt
- name: Archive BanjoRecomp - name: Archive BanjoRecomp
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -320,7 +318,6 @@ jobs:
Move-Item -Path "cmake-build/dxil.dll" -Destination "dxil.dll" Move-Item -Path "cmake-build/dxil.dll" -Destination "dxil.dll"
Move-Item -Path "cmake-build/SDL2.dll" -Destination "SDL2.dll" Move-Item -Path "cmake-build/SDL2.dll" -Destination "SDL2.dll"
Move-Item -Path "cmake-build/BanjoRecompiled.pdb" -Destination "BanjoRecompiled.pdb" Move-Item -Path "cmake-build/BanjoRecompiled.pdb" -Destination "BanjoRecompiled.pdb"
Remove-Item -Path "assets/scss" -Recurse -Force
- name: Archive BanjoRecomp - name: Archive BanjoRecomp
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
+1
View File
@@ -159,6 +159,7 @@ set (SOURCES
target_include_directories(BanjoRecompiled PRIVATE target_include_directories(BanjoRecompiled PRIVATE
${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/N64Recomp/include ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/N64Recomp/include
${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/thirdparty/sse2neon
${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib
${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/hlslpp/include ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/hlslpp/include
${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/dxc/inc ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/dxc/inc
+7 -5
View File
@@ -66,11 +66,7 @@ Any aspect ratio is supported, with all effects modded to work correctly in wide
#### Mod Support #### Mod Support
Install community made mods and texture packs! Mods can change any part of the game, including adding completely new features and content. You can install mods by simply dragging the mod files onto the game window before starting the game or by clicking the **Install Mods** button in the mod menu. Mods can be toggled in the mod menu, and some mods can be configured there as well. Install community made mods and texture packs! Mods can change any part of the game, including adding completely new features and content. You can install mods by simply dragging the mod files onto the game window before starting the game or by clicking the **Install Mods** button in the mod menu. Mods can be toggled in the mod menu, and some mods can be configured there as well.
A Thunderstore mod hosting page is currently being set up for this project. In the meantime, you can find the mods showcased in the release trailer here: Many mods are available on the project's Thunderstore page: https://thunderstore.io/c/banjo-recompiled/. The Thunderstore mod manager/r2modman is not required or supported, so simply download the mods directly from the website.
* [BK Jiggies of Time](https://github.com/Mr-Wiseguy/JiggiesOfTimeRecomp/releases/latest)
* [BK Nostalgia 64](https://github.com/Mr-Wiseguy/Nostalgia64Recomp/releases/latest)
* [BK Reloaded Texture Pack](https://evilgames.eu/texture-packs/bk-reloaded.htm)
If you're interested in making mods for this project, check out [the mod template](https://github.com/BanjoRecomp/BKRecompModTemplate) and [the modding documentation](https://hackmd.io/fMDiGEJ9TBSjomuZZOgzNg). If you're interested in making texture packs, check out [the RT64 documentation](https://github.com/rt64/rt64/blob/main/TEXTURE-PACKS.md). You can also join the [N64: Recompiled Modding Discord server](https://discord.gg/Z8Nbm455D4). If you're interested in making mods for this project, check out [the mod template](https://github.com/BanjoRecomp/BKRecompModTemplate) and [the modding documentation](https://hackmd.io/fMDiGEJ9TBSjomuZZOgzNg). If you're interested in making texture packs, check out [the RT64 documentation](https://github.com/rt64/rt64/blob/main/TEXTURE-PACKS.md). You can also join the [N64: Recompiled Modding Discord server](https://discord.gg/Z8Nbm455D4).
@@ -117,6 +113,12 @@ Instead, you can change the game by installing mods. See the [mod support](#mod-
#### Can you run this project as a portable application? #### Can you run this project as a portable application?
Yes, if you place a file named `portable.txt` in the same folder as the executable then this project will run in portable mode. In portable mode, the save files, config files, and mods are placed in the same folder as the executable. Yes, if you place a file named `portable.txt` in the same folder as the executable then this project will run in portable mode. In portable mode, the save files, config files, and mods are placed in the same folder as the executable.
#### Were the duplicate Mumbo token IDs in the original game fixed?
Yes. The incorrect Mumbo tokens now use previously unused token IDs. This won't affect mods that replace levels.
#### Does note saving have the same issue as the XBLA version where it collects notes during Bottles' puzzles and prevents you from getting 100% completion?
No. Care has been taken to ensure that notes are not saved during demos.
## Known Issues ## Known Issues
* Overlays such as MSI Afterburner and other software such as Wallpaper Engine can cause performance issues with this project that prevent the game from rendering correctly. Disabling such software is recommended. * Overlays such as MSI Afterburner and other software such as Wallpaper Engine can cause performance issues with this project that prevent the game from rendering correctly. Disabling such software is recommended.
+1
View File
@@ -1,5 +1,6 @@
#include "patches.h" #include "patches.h"
#include "core1/mlmtx.h" #include "core1/mlmtx.h"
#include "functions.h"
typedef struct { typedef struct {
s32 cmd_0; s32 cmd_0;
+17
View File
@@ -0,0 +1,17 @@
#include "functions.h"
#include "patches.h"
#include "ui_funcs.h"
extern s32 D_802823AC;
extern f32 D_80282420;
extern f32 D_80282424;
// @recomp Patched to run a callback per frame in a function that always gets called by mainLoop().
RECOMP_PATCH void baMotor_80250C08(void) {
// @recomp Patched to run UI callbacks.
recomp_run_ui_callbacks();
if (D_802823AC != 0) {
D_80282424 = MIN(D_80282420, D_80282424 + time_getDelta());
}
}
+1
View File
@@ -51,3 +51,4 @@ recomp_get_cutscene_aspect_ratio = 0x8F0000B8;
recomp_get_flying_and_swimming_inverted_axes = 0x8F0000BC; recomp_get_flying_and_swimming_inverted_axes = 0x8F0000BC;
recomp_get_first_person_inverted_axes = 0x8F0000C0; recomp_get_first_person_inverted_axes = 0x8F0000C0;
recomp_get_analog_cam_sensitivity = 0x8F0000C4; recomp_get_analog_cam_sensitivity = 0x8F0000C4;
recomp_run_ui_callbacks = 0x8F0000C8;
+3 -1
View File
@@ -249,7 +249,9 @@ void banjo::launcher_animation_setup(recompui::LauncherMenu *menu) {
launcher_context.jiggy_shine_svg.scale_keyframes = { launcher_context.jiggy_shine_svg.scale_keyframes = {
{ 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f },
{ jiggy_shine_start, 0.0f, 0.0f }, { jiggy_shine_start, 0.0f, 0.0f },
{ jiggy_shine_start + 0.01f, 1.0f, 1.0f }, { jiggy_shine_start, 1.0f, 1.0f },
{ jiggy_shine_start + jiggy_shine_length, 1.0f, 1.0f },
{ jiggy_shine_start + jiggy_shine_length, 0.0f, 0.0f },
}; };
launcher_context.jiggy_shine_svg.position_animation.interpolation_method = InterpolationMethod::Smootherstep; launcher_context.jiggy_shine_svg.position_animation.interpolation_method = InterpolationMethod::Smootherstep;
+20 -6
View File
@@ -326,7 +326,7 @@ void set_frequency(uint32_t freq) {
update_audio_converter(); update_audio_converter();
} }
void reset_audio(uint32_t output_freq) { bool reset_audio(uint32_t output_freq) {
SDL_AudioSpec spec_desired{ SDL_AudioSpec spec_desired{
.freq = (int)output_freq, .freq = (int)output_freq,
.format = AUDIO_F32, .format = AUDIO_F32,
@@ -339,15 +339,19 @@ void reset_audio(uint32_t output_freq) {
.userdata = nullptr .userdata = nullptr
}; };
audio_device = SDL_OpenAudioDevice(nullptr, false, &spec_desired, nullptr, 0); audio_device = SDL_OpenAudioDevice(nullptr, false, &spec_desired, nullptr, 0);
if (audio_device == 0) { if (audio_device == 0) {
exit_error("SDL error opening audio device: %s\n", SDL_GetError()); std::string audio_error = std::string("No audio device could be found. Please make sure an audio device is available.\nError opening audio device: ") + std::string(SDL_GetError());
recompui::message_box(audio_error.c_str());
return false;
} }
SDL_PauseAudioDevice(audio_device, 0); SDL_PauseAudioDevice(audio_device, 0);
output_sample_rate = output_freq; output_sample_rate = output_freq;
update_audio_converter(); update_audio_converter();
return true;
} }
extern RspUcodeFunc n_aspMain; extern RspUcodeFunc n_aspMain;
@@ -684,9 +688,16 @@ int main(int argc, char** argv) {
// Initialize native file dialogs. // Initialize native file dialogs.
NFD_Init(); NFD_Init();
// Initialize program settings.
recompui::programconfig::set_program_name(banjo::program_name);
recompui::programconfig::set_program_id(banjo::program_id);
// Initialize SDL audio and set the output frequency. // Initialize SDL audio and set the output frequency.
SDL_InitSubSystem(SDL_INIT_AUDIO); SDL_InitSubSystem(SDL_INIT_AUDIO);
reset_audio(48000); if (!reset_audio(48000)) {
// It is not possible to initialize without an audio device.
return EXIT_FAILURE;
}
// Source controller mappings file // Source controller mappings file
std::u8string controller_db_path = (recompui::file::get_program_path() / "recompcontrollerdb.txt").u8string(); std::u8string controller_db_path = (recompui::file::get_program_path() / "recompcontrollerdb.txt").u8string();
@@ -694,10 +705,11 @@ int main(int argc, char** argv) {
fprintf(stderr, "Failed to load controller mappings: %s\n", SDL_GetError()); fprintf(stderr, "Failed to load controller mappings: %s\n", SDL_GetError());
} }
recompui::programconfig::set_program_name(banjo::program_name); // Register fonts.
recompui::programconfig::set_program_id(banjo::program_id);
recompui::register_primary_font("InterVariable.ttf", "Inter Variable"); recompui::register_primary_font("InterVariable.ttf", "Inter Variable");
recompui::register_extra_font("Suplexmentary Comic NC.ttf"); recompui::register_extra_font("Suplexmentary Comic NC.ttf");
// Register configuration path.
recomp::register_config_path(recompui::file::get_app_folder_path()); recomp::register_config_path(recompui::file::get_app_folder_path());
// Register supported games and patches // Register supported games and patches
@@ -705,6 +717,8 @@ int main(int argc, char** argv) {
recomp::register_game(game); recomp::register_game(game);
} }
recomp::mods::register_deprecated_mod("bk_recomp_mod_fov_slider", recomp::mods::DeprecationStatus::BrokenVersion, recomp::Version(1, 1, 0));
REGISTER_FUNC(recomp_get_window_resolution); REGISTER_FUNC(recomp_get_window_resolution);
REGISTER_FUNC(recomp_get_target_aspect_ratio); REGISTER_FUNC(recomp_get_target_aspect_ratio);
REGISTER_FUNC(recomp_get_target_framerate); REGISTER_FUNC(recomp_get_target_framerate);