//! Named memory locations.

use num_enum::{IntoPrimitive, TryFromPrimitive};
use std::fmt::Debug;

/// Known memory locations.
///
/// Used by [`Position`](super::position::Position) to give a proper name to known memory locations
/// rather than a generic one.
#[derive(Clone, Copy, Debug, Eq, IntoPrimitive, Ord, PartialEq, PartialOrd, TryFromPrimitive)]
#[repr(u32)]
pub enum Label {
    JapaneseAttentionAdventurers1 = 0x0815a8,
    JapaneseAttentionAdventurers2 = 0x0815d9,
    JapanesePromptYesNo = 0x08187e,
    OtherGenie = 0x15714a,
    // FIXME What is it?
    OtherUnknown01 = 0x157150,
    OtherLeopard = 0x157159,
    OtherWitch = 0x157161,
    OtherDesertTurtle = 0x157167,
    OtherHornedOwl = 0x157175,
    OtherSwallow = 0x157180,
    OtherIncantRedSpell = 0x157188,
    OtherIncantBlueSpell = 0x1571de,
    OtherIncantWhiteSpell = 0x157206,
    OtherIncantBlackSpell = 0x15722e,
    OtherBookshelf = 0x15725c,
    OtherBamBabaBam1 = 0x15729a,
    OtherBamBabaBam2 = 0x1572a9,
    OtherBamBabaBam3 = 0x1572bd,
    OtherBamBabaBam4 = 0x1572d8,
    OtherStrengthPlus1 = 0x1572f0,
    OtherStrengthPlus2 = 0x1572fc,
    OtherStrengthPlus4 = 0x157308,
    OtherStrengthPlus8 = 0x157314,
    OtherDefensePlus0 = 0x157320,
    OtherDefensePlus1 = 0x15732b,
    OtherDefensePlus2 = 0x157336,
    OtherDefensePlus3 = 0x157341,
    OtherEndurancePlus3 = 0x15734c,
    OtherEndurancePlus5 = 0x157359,
    OtherEndurancePlus7 = 0x157366,
    OtherEndurancePlus10 = 0x157373,
    OtherEndurancePlus15 = 0x157381,
    OtherSellGoldBar = 0x15738f,
    OtherMagicalHit = 0x1573e5,
    EstafanCowMunch = 0x158279,
    AshaPrays = 0x15828a,
    PepelogooHasGrown = 0x1582ad,
    ItemObtained = 0x1582d4,
    ItemFound = 0x1582e4,
    RapadagnaCastleEntranceGuard = 0x158316,
    RapadagnaCastleAccolade = 0x1584c4,
    RapadagnaCastleAccoladeSwear = 0x1585e5,
    EstafanVillageTitleCard = 0x1586b7,
    AshaCanPressSwitches = 0x1586c6,
    IcePyramid2TitleCard = 0x15878c,
    IcePyramid3TitleCard = 0x158795,
    AttentionAdventurers1 = 0x1588b3,
    AttentionAdventurers2 = 0x1588eb,
    GiantRock = 0x158926,
    CanTurnWithShieldOut = 0x15897c,
    DoorLocked = 0x1589dc,
    PromptBuyQuit = 0x158a72,
    PromptYesNo1 = 0x158cdb,
    Sphinx = 0x1590b3,
    SphinxDone = 0x15928e,
    Sphinx3 = 0x1593d0,
    SphinxStartQuizz = 0x15946e,
    SphinxRiddle01 = 0x159591,
    SphinxRiddle02 = 0x1595b4,
    SphinxRiddle03 = 0x1595d0,
    SphinxRiddle04 = 0x1595f5,
    SphinxRiddle05 = 0x159631,
    SphinxRiddle06 = 0x159649,
    SphinxRiddle07 = 0x159670,
    SphinxRiddle08 = 0x159690,
    SphinxRiddle09 = 0x1596ba,
    SphinxRiddle10 = 0x1596df,
    SphinxRiddle11 = 0x159708,
    SphinxRiddle12 = 0x15972f,
    SphinxRiddle13 = 0x15975c,
    SphinxRiddle14 = 0x159781,
    SphinxRiddle15 = 0x1597ad,
    SphinxRiddle16 = 0x1597ca,
    SphinxRiddle17 = 0x1597f3,
    SphinxRiddle18 = 0x159818,
    SphinxRiddle19 = 0x15983c,
    SphinxRiddle20 = 0x159866,
    AttentionAdventurers3 = 0x15989a,
    AttentionAdventurers4 = 0x1598d4,
    RapadagnaCityTitleCard = 0x159d60,
    HanderaVolcanoTitleCard = 0x159d6c,
    StreamSanctuaryTitleCard = 0x159d73,
    IcePyramid1TitleCard = 0x159d7a,
    SkyCastleTitleCard = 0x159d83,
    PromptYesNo2 = 0x159d8a,
    EarthGateUnlocked = 0x159dab,
    MoonGateUnlocked = 0x159dc5,
    SunGateUnlocked = 0x159de6,
    WindGateUnlocked = 0x159e06,
    EarthGateLocked = 0x159e27,
    MoonGateLocked = 0x159e47,
    SunGateLocked = 0x159e66,
    WindGateLocked = 0x159e84,
    GateLockedAgain = 0x159ea3,
    FoundBigHeart = 0x159ebe,
    FoundHealingMedecine = 0x159eed,
    EstafanAshaFatherCallsAsha = 0x159f1b,
    TowerOfSilenceTitleCard = 0x159ff3,
    UndergroundFortTitleCard = 0x159ffa,
    HeardVoices1 = 0x15a61d,
    HeardVoices2 = 0x15a62d,
    HeardVoices3 = 0x15a63d,
    HeardVoices4 = 0x15a653,
    EstafanAshaMother1 = 0x15a72b,
    EstafanAshaMother2 = 0x15a875,
    ItemAshaSword = 0x15b66d,
    ItemKhanSword = 0x15b673,
    ItemShahSword = 0x15b679,
    ItemCyrusSword = 0x15b67f,
    ItemCaliphSword = 0x15b685,
    ItemIshtarSword = 0x15b68b,
    ItemSwordOfBabel = 0x15b691,
    ItemLegendarySword = 0x15b697,
    ItemPlainShield = 0x15b69d,
    ItemFlameShield = 0x15b6a3,
    ItemThunderShield = 0x15b6a9,
    ItemIceShield = 0x15b6af,
    ItemSteelShield = 0x15b6b5,
    ItemRainbowShield = 0x15b6bb,
    ItemMagicShield = 0x15b6c1,
    ItemLegendShield = 0x15b6c7,
    ItemTravelerArmor = 0x15b6cd,
    ItemWarriorArmor = 0x15b6d3,
    ItemKnightArmor = 0x15b6d9,
    ItemHeroArmor = 0x15b6df,
    ItemLegendaryArmor = 0x15b6e5,
    ItemDebugArmor = 0x15b6fb,
    SavedWindSpirit = 0x15bdd4,
    SavedMoonSpirit = 0x15bfa3,
    SavedSunSpirit = 0x15c10d,
    SavedEarthSpirit = 0x15c2a3,
    SaveSpiritEnd = 0x15c386,
    MagicMerchant = 0x1603c9,
}
