7#include <yaml-cpp/yaml.h>
12inline bool IsRomhack(
const std::vector<uint8_t>& rom) {
13 return rom.size() > 0x1000000;
17bool TrySynthesizeRomConfig(YAML::Node& config,
const std::string& cartHash,
const std::filesystem::path& romPath,
18 const std::vector<uint8_t>& rom);
21void EmitAssetHashes(
const std::filesystem::path& romPath,
const std::filesystem::path& outputPath);
26size_t CountModifiedSlots(
const std::vector<uint8_t>& rom,
const std::filesystem::path& hashesYamlPath);
30const std::string& GetBaselineAssetHash(uint32_t assetId);
33enum class RomhackKind {
40RomhackKind ClassifyRomhack(
const std::vector<uint8_t>& rom);
43bool HasCustomCodeBlob(
const std::vector<uint8_t>& rom);
47constexpr uint32_t GAMECONFIG_MAGIC = 0x46434B42;
48constexpr uint16_t GAMECONFIG_VERSION = 1;
50enum class ConfigSectionType : uint16_t {
60 WARP_DESTINATIONS = 10,
63 CUSTOM_CODE_INFO = 13,
66enum class CustomCodeKind : uint16_t {
76bool GetCustomCodeBlobInfo(
const std::vector<uint8_t>& rom, CustomCodeKind& outKind,
char outSha1Hex[41]);
79enum class CodeConstantKey : uint16_t {
90 RED_FEATHERS_NORMAL_MAX,
91 GOLD_FEATHERS_NORMAL_MAX,
93 RED_FEATHERS_CHEATO_MAX,
94 GOLD_FEATHERS_CHEATO_MAX,
99 WARP_EXIT_BANJOS_HOUSE,
103 HIDE_COLLECTIBLES_LEVEL,
108std::vector<char> BuildGameConfigBlob(
const std::vector<uint8_t>& rom,
const std::string& romName);