ref: c9c6843f7d74f3c448f623e58b5364cf73bd0eb9
dir: /features.h/
// This file declares extensions to the base game
#ifndef ZELDA3_FEATURES_H_
#define ZELDA3_FEATURES_H_
#include "types.h"
// Special RAM locations that are unused but I use for compat things.
enum {
kRam_APUI00 = 0x648,
kRam_CrystalRotateCounter = 0x649,
kRam_BugsFixed = 0x64a,
kRam_Features0 = 0x64c,
};
enum {
// Poly rendered uses correct speed
kBugFix_PolyRenderer = 1,
kBugFix_AncillaOverwrites = 1,
kBugFix_Latest = 1,
};
// Enum values for kRam_Features0
enum {
kFeatures0_ExtendScreen64 = 1,
kFeatures0_SwitchLR = 2,
kFeatures0_TurnWhileDashing = 4,
kFeatures0_MirrorToDarkworld = 8,
kFeatures0_CollectItemsWithSword = 16,
kFeatures0_BreakPotsWithSword = 32,
kFeatures0_DisableLowHealthBeep = 64,
kFeatures0_SkipIntroOnKeypress = 128,
kFeatures0_ShowMaxItemsInYellow = 256,
kFeatures0_MoreActiveBombs = 512,
// This is set for visual fixes that don't affect game behavior but will affect ram compare.
kFeatures0_WidescreenVisualFixes = 1024,
kFeatures0_CarryMoreRupees = 2048,
kFeatures0_MiscBugFixes = 4096,
kFeatures0_CancelBirdTravel = 8192,
kFeatures0_GameChangingBugFixes = 16384,
};
#define enhanced_features0 (*(uint32*)(g_ram+0x64c))
#define msu_curr_sample (*(uint32*)(g_ram+0x650))
#define msu_volume (*(uint8*)(g_ram+0x654))
#define msu_track (*(uint8*)(g_ram+0x655))
#define hud_inventory_order ((uint8*)(g_ram + 0x225)) // 4x6 bytes
#define hud_cur_item_x (*(uint8*)(g_ram+0x656))
#define hud_cur_item_l (*(uint8*)(g_ram+0x657))
#define hud_cur_item_r (*(uint8*)(g_ram+0x658))
extern uint32 g_wanted_zelda_features;
#endif // ZELDA3_FEATURES_H_