KV
A simple KV Store for N64Recomp projects
About this mod Author’s original text
KV
A simple KV Store for N64Recomp projects
Usage
Add the dependency in your mod.toml
dependencies = [
"ProxyBK_KV:0.0.5"
]
Add the header to your project
ifndef PROXYBK_KV_H
define PROXYBK_KV_H
include "modding.h"
include "PR/ultratypes.h"
// Global
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Get(const char key, void dest, u32 size));
RECOMP_IMPORT("ProxyBK_KV", u8 KV_Global_Get_U8(const char* key, u8 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", s8 KV_Global_Get_S8(const char* key, s8 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", u16 KV_Global_Get_U16(const char* key, u16 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", s16 KV_Global_Get_S16(const char* key, s16 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", u32 KV_Global_Get_U32(const char* key, u32 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", s32 KV_Global_Get_S32(const char* key, s32 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Set(const char key, void data, u32 size));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Set_U8(const char* key, u8 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Set_S8(const char* key, s8 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Set_U16(const char* key, u16 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Set_S16(const char* key, s16 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Set_U32(const char* key, u32 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Set_S32(const char* key, s32 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Has(const char* key));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Global_Remove(const char* key));
// Save Slot based
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Get(const char key, void dest, u32 size));
RECOMP_IMPORT("ProxyBK_KV", u8 KV_Slot_Get_U8(const char* key, u8 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", s8 KV_Slot_Get_S8(const char* key, s8 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", u16 KV_Slot_Get_U16(const char* key, u16 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", s16 KV_Slot_Get_S16(const char* key, s16 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", u32 KV_Slot_Get_U32(const char* key, u32 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", s32 KV_Slot_Get_S32(const char* key, s32 defaultValue));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Set(const char key, void data, u32 size));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Set_U8(const char* key, u8 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Set_S8(const char* key, s8 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Set_U16(const char* key, u16 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Set_S16(const char* key, s16 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Set_U32(const char* key, u32 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Set_S32(const char* key, s32 value));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Has(const char* key));
RECOMP_IMPORT("ProxyBK_KV", bool KV_Slot_Remove(const char* key));
endif // PROXYBK_KV_H
Start Getting/Setting values
u32 myValue = 4941;
KV_Slot_Set_U32("MyMod.MyValue", myValue);
u32 otherValue = KV_Slot_Get_U32("MyMod.MyValue", 1337);
assert(myValue == otherValue);
Getting complex values
struct MyStruct {
u32 a;
u32 b;
};
MyStruct myStruct = { 1, 2 };
KV_Slot_Set("MyMod.MyStruct", &myStruct, sizeof(MyStruct));
MyStruct otherStruct;
// Get returns truthy if the value was retrieved
if (KV_Slot_Get("MyMod.MyStruct", &otherStruct, sizeof(MyStruct))) {
assert(myStruct.a == otherStruct.a);
assert(myStruct.b == otherStruct.b);
}
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide.