Add level model hotpatch for intro scene to fix gap in widescreen

Co-authored-by: Reonu <15913880+Reonu@users.noreply.github.com>
This commit is contained in:
Mr-Wiseguy
2025-12-13 20:14:03 -05:00
parent bb434b7757
commit b8e081d6e2
5 changed files with 145 additions and 21 deletions
+18
View File
@@ -14,6 +14,7 @@
#include "../patches/sound.h"
#include "ultramodern/ultramodern.hpp"
#include "ultramodern/config.hpp"
#include "../lib/N64ModernRuntime/thirdparty/xxHash/xxh3.h"
extern "C" void recomp_update_inputs(uint8_t* rdram, recomp_context* ctx) {
recomp::poll_inputs();
@@ -219,3 +220,20 @@ extern "C" void recomp_abort(uint8_t* rdram, recomp_context* ctx) {
assert(false);
ultramodern::error_handling::quick_exit(__FILE__, __LINE__, __FUNCTION__);
}
extern "C" void recomp_xxh3(uint8_t* rdram, recomp_context* ctx) {
PTR(void) data = _arg<0, PTR(void)>(rdram, ctx);
u32 size = _arg<1, u32>(rdram, ctx);
XXH3_state_t xxh3;
XXH3_64bits_reset(&xxh3);
// Hash 1 byte at a time to account for byteswapping.
for (size_t i = 0; i < size; i++) {
XXH3_64bits_update(&xxh3, TO_PTR(u8, data + i), 1);
}
uint64_t ret = XXH3_64bits_digest(&xxh3);
ctx->r2 = (int32_t)(ret >> 32);
ctx->r3 = (int32_t)(ret >> 0);
}