minecraft-pi-reborn/mods/src/version/version.cpp

40 lines
1.2 KiB
C++
Raw Normal View History

2021-06-28 20:00:52 +00:00
#include <libreborn/libreborn.h>
2021-09-12 03:18:12 +00:00
#include <symbols/minecraft.h>
2021-06-28 20:00:52 +00:00
2022-06-25 21:30:08 +00:00
#include <mods/version/version.h>
#include <mods/init/init.h>
2021-06-28 20:00:52 +00:00
// Get New Version
char *version_get() {
static char *version = NULL;
// Load
if (version == NULL) {
2022-06-10 01:31:40 +00:00
safe_asprintf(&version, "%s / Reborn v" MCPI_VERSION, *minecraft_pi_version);
2021-06-28 20:00:52 +00:00
}
// Return
return version;
}
// Free
__attribute__((destructor)) static void _free_version() {
free(version_get());
}
// Injection For Touch GUI Version
static std::string Common_getGameVersionString_injection(__attribute__((unused)) std::string const& version_suffix) {
// Set Version
return version_get();
}
// Init
void init_version() {
// Touch GUI
overwrite((void *) Common_getGameVersionString, (void *) Common_getGameVersionString_injection);
// Normal GUI
patch_address((void *) minecraft_pi_version, version_get());
2021-12-01 02:25:04 +00:00
unsigned char normal_gui_version_length_patch[4] = {(unsigned char) strlen(version_get()), 0x20, 0xa0, 0xe3}; // "mov r2, #VERSION_LENGTH"
patch((void *) 0x4b11c, normal_gui_version_length_patch);
2021-11-14 04:29:48 +00:00
// Log
INFO("Starting Minecraft: Pi Edition (%s)", version_get());
2021-06-28 20:00:52 +00:00
}