mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-13 04:39:36 +00:00
ZAPD Update (#1605)
* git subrepo pull --force tools/ZAPD subrepo: subdir: "tools/ZAPD" merged: "2b6f459b9" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "2b6f459b9" git-subrepo: version: "0.4.6" origin: "???" commit: "???" * Update ZAPD Co-authored-by: Yanis42 <35189056+Yanis42@users.noreply.github.com> --------- Co-authored-by: Yanis42 <35189056+Yanis42@users.noreply.github.com>
This commit is contained in:
parent
dcab429bf2
commit
c1a499c3ae
7 changed files with 270 additions and 61 deletions
|
@ -6,7 +6,7 @@
|
|||
[subrepo]
|
||||
remote = https://github.com/zeldaret/ZAPD.git
|
||||
branch = master
|
||||
commit = 094e797349c86d0baef4a624962f4287aefdfef2
|
||||
parent = 503f6d86d5fca5bd234640ef9de597d413cb91f5
|
||||
commit = 2b6f459b9523603168b6869cf03057a0d68d5f89
|
||||
parent = 2ab90bc51788c6baac0a94c3acb256be5f39ca12
|
||||
method = merge
|
||||
cmdver = 0.4.6
|
||||
|
|
|
@ -214,6 +214,15 @@ void GameConfig::ConfigFunc_EnumData(const tinyxml2::XMLElement& element)
|
|||
else if (enumKey == "naviQuestHintType")
|
||||
enumData.naviQuestHintType[itemIndex] = itemID;
|
||||
|
||||
else if (enumKey == "ocarinaSongActionId")
|
||||
enumData.ocarinaSongActionId[itemIndex] = itemID;
|
||||
|
||||
else if (enumKey == "seqId")
|
||||
enumData.seqId[itemIndex] = itemID;
|
||||
|
||||
else if (enumKey == "playerCueId")
|
||||
enumData.playerCueId[itemIndex] = itemID;
|
||||
|
||||
// MM
|
||||
else if (enumKey == "modifySeqType")
|
||||
enumData.modifySeqType[itemIndex] = itemID;
|
||||
|
|
|
@ -31,10 +31,13 @@ public:
|
|||
std::map<uint16_t, std::string> fadeOutSeqPlayer;
|
||||
std::map<uint16_t, std::string> transitionType;
|
||||
std::map<uint16_t, std::string> naviQuestHintType;
|
||||
std::map<uint16_t, std::string> ocarinaSongActionId;
|
||||
std::map<uint16_t, std::string> seqId;
|
||||
|
||||
// OoT
|
||||
std::map<uint16_t, std::string> textType;
|
||||
std::map<uint16_t, std::string> destination;
|
||||
std::map<uint16_t, std::string> playerCueId;
|
||||
|
||||
// MM
|
||||
std::map<uint16_t, std::string> modifySeqType;
|
||||
|
|
|
@ -14,13 +14,13 @@ const std::unordered_map<CutsceneMM_CommandType, CsCommandListDescriptor> csComm
|
|||
{CutsceneMM_CommandType::CS_CMD_TRANSITION, {"CS_TRANSITION", "(%s, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_MOTION_BLUR, {"CS_MOTION_BLUR", "(%s, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_GIVE_TATL, {"CS_GIVE_TATL", "(%s, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_START_SEQ, {"CS_START_SEQ", "(0x%04X, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_START_SEQ, {"CS_START_SEQ", "(%s, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_SFX_REVERB_INDEX_2,
|
||||
{"CS_SFX_REVERB_INDEX_2", "(0x%04X, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_SFX_REVERB_INDEX_1,
|
||||
{"CS_SFX_REVERB_INDEX_1", "(0x%04X, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_MODIFY_SEQ, {"CS_MODIFY_SEQ", "(%s, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_STOP_SEQ, {"CS_STOP_SEQ", "(0x%04X, %i, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_STOP_SEQ, {"CS_STOP_SEQ", "(%s, %i, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_START_AMBIENCE, {"CS_START_AMBIENCE", "(0x%04X, %i, %i)"}},
|
||||
{CutsceneMM_CommandType::CS_CMD_FADE_OUT_AMBIENCE,
|
||||
{"CS_FADE_OUT_AMBIENCE", "(0x%04X, %i, %i)"}},
|
||||
|
@ -41,6 +41,7 @@ std::string CutsceneMMSubCommandEntry_GenericCmd::GetBodySourceCode() const
|
|||
const auto& element = csCommandsDescMM.find(commandId);
|
||||
std::string entryFmt = "CS_UNK_DATA(0x%02X, %i, %i, %i)";
|
||||
std::string type = "";
|
||||
bool isIndexInSeqId = enumData->seqId.find(base - 1) != enumData->seqId.end();
|
||||
|
||||
if (element != csCommandsDescMM.end())
|
||||
{
|
||||
|
@ -72,6 +73,11 @@ std::string CutsceneMMSubCommandEntry_GenericCmd::GetBodySourceCode() const
|
|||
enumData->chooseCreditsSceneType.find(base) != enumData->chooseCreditsSceneType.end())
|
||||
type = enumData->chooseCreditsSceneType[base];
|
||||
|
||||
else if ((commandId == CutsceneMM_CommandType::CS_CMD_START_SEQ ||
|
||||
commandId == CutsceneMM_CommandType::CS_CMD_STOP_SEQ) &&
|
||||
isIndexInSeqId)
|
||||
type = enumData->seqId[base - 1];
|
||||
|
||||
else if (commandId == CutsceneMM_CommandType::CS_CMD_GIVE_TATL)
|
||||
type = base ? "true" : "false";
|
||||
|
||||
|
@ -339,16 +345,18 @@ CutsceneMMSubCommandEntry_Text::CutsceneMMSubCommandEntry_Text(const std::vector
|
|||
|
||||
std::string CutsceneMMSubCommandEntry_Text::GetBodySourceCode() const
|
||||
{
|
||||
EnumData* enumData = &Globals::Instance->cfg.enumData;
|
||||
|
||||
if (type == 0xFFFF)
|
||||
{
|
||||
return StringHelper::Sprintf("CS_TEXT_NONE(%i, %i)", startFrame, endFrame);
|
||||
}
|
||||
|
||||
if (type == 2)
|
||||
if (type == 2 &&
|
||||
enumData->ocarinaSongActionId.find(base) != enumData->ocarinaSongActionId.end())
|
||||
{
|
||||
// TODO: set the enum name when it will be documented
|
||||
// (https://github.com/Decompollaborate/mm/blob/3e1c568c084671c17836ced904714ea49d989621/include/z64ocarina.h#L35-L118)
|
||||
return StringHelper::Sprintf("CS_TEXT_OCARINA_ACTION(%i, %i, %i, 0x%X)", base, startFrame,
|
||||
return StringHelper::Sprintf("CS_TEXT_OCARINA_ACTION(%s, %i, %i, 0x%X)",
|
||||
enumData->ocarinaSongActionId[base].c_str(), startFrame,
|
||||
endFrame, textId1);
|
||||
}
|
||||
|
||||
|
@ -425,23 +433,24 @@ CutsceneMMSubCommandEntry_ActorCue::CutsceneMMSubCommandEntry_ActorCue(
|
|||
|
||||
std::string CutsceneMMSubCommandEntry_ActorCue::GetBodySourceCode() const
|
||||
{
|
||||
std::string result;
|
||||
EnumData* enumData = &Globals::Instance->cfg.enumData;
|
||||
|
||||
if (static_cast<CutsceneMM_CommandType>(commandID) == CutsceneMM_CommandType::CS_CMD_PLAYER_CUE)
|
||||
{
|
||||
result = "CS_PLAYER_CUE";
|
||||
return StringHelper::Sprintf("CS_PLAYER_CUE(%s, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, "
|
||||
"%i, %i, %i, %i, %.8ef, %.8ef, %.8ef)",
|
||||
enumData->playerCueId[base].c_str(), startFrame, endFrame,
|
||||
rotX, rotY, rotZ, startPosX, startPosY, startPosZ, endPosX,
|
||||
endPosY, endPosZ, normalX, normalY, normalZ);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = "CS_ACTOR_CUE";
|
||||
return StringHelper::Sprintf("CS_ACTOR_CUE(%i, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, "
|
||||
"%i, %i, %i, %i, %.8ef, %.8ef, %.8ef)",
|
||||
base, startFrame, endFrame, rotX, rotY, rotZ, startPosX,
|
||||
startPosY, startPosZ, endPosX, endPosY, endPosZ, normalX,
|
||||
normalY, normalZ);
|
||||
}
|
||||
|
||||
result +=
|
||||
StringHelper::Sprintf("(%i, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, "
|
||||
"%i, %i, %i, %i, %.8ef, %.8ef, %.8ef)",
|
||||
base, startFrame, endFrame, rotX, rotY, rotZ, startPosX, startPosY,
|
||||
startPosZ, endPosX, endPosY, endPosZ, normalX, normalY, normalZ);
|
||||
return result;
|
||||
}
|
||||
|
||||
size_t CutsceneMMSubCommandEntry_ActorCue::GetRawSize() const
|
||||
|
|
|
@ -15,9 +15,9 @@ const std::unordered_map<CutsceneOoT_CommandType, CsCommandListDescriptor> csCom
|
|||
{CutsceneOoT_CommandType::CS_CMD_LIGHT_SETTING,
|
||||
{"CS_LIGHT_SETTING", "(0x%02X, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i)"}},
|
||||
{CutsceneOoT_CommandType::CS_CMD_START_SEQ,
|
||||
{"CS_START_SEQ", "(%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i)"}},
|
||||
{"CS_START_SEQ", "(%s, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i)"}},
|
||||
{CutsceneOoT_CommandType::CS_CMD_STOP_SEQ,
|
||||
{"CS_STOP_SEQ", "(%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i)"}},
|
||||
{"CS_STOP_SEQ", "(%s, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i)"}},
|
||||
{CutsceneOoT_CommandType::CS_CMD_FADE_OUT_SEQ,
|
||||
{"CS_FADE_OUT_SEQ", "(%s, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i)"}},
|
||||
};
|
||||
|
@ -51,6 +51,7 @@ std::string CutsceneOoTSubCommandEntry_GenericCmd::GetBodySourceCode() const
|
|||
bool isIndexInMisc = enumData->miscType.find(base) != enumData->miscType.end();
|
||||
bool isIndexInFade =
|
||||
enumData->fadeOutSeqPlayer.find(base) != enumData->fadeOutSeqPlayer.end();
|
||||
bool isIndexInSeqId = enumData->seqId.find(base - 1) != enumData->seqId.end();
|
||||
std::string entryFmt = element->second.cmdMacro;
|
||||
std::string firstArg;
|
||||
entryFmt += element->second.args;
|
||||
|
@ -59,14 +60,15 @@ std::string CutsceneOoTSubCommandEntry_GenericCmd::GetBodySourceCode() const
|
|||
firstArg = enumData->miscType[base];
|
||||
else if (commandId == CutsceneOoT_CommandType::CS_CMD_FADE_OUT_SEQ && isIndexInFade)
|
||||
firstArg = enumData->fadeOutSeqPlayer[base];
|
||||
else if (commandId == CutsceneOoT_CommandType::CS_CMD_START_SEQ && isIndexInSeqId)
|
||||
firstArg = enumData->seqId[base - 1];
|
||||
else if (commandId == CutsceneOoT_CommandType::CS_CMD_STOP_SEQ && isIndexInSeqId)
|
||||
firstArg = enumData->seqId[base - 1];
|
||||
else
|
||||
{
|
||||
bool baseOne = (commandId == CutsceneOoT_CommandType::CS_CMD_LIGHT_SETTING ||
|
||||
commandId == CutsceneOoT_CommandType::CS_CMD_START_SEQ ||
|
||||
commandId == CutsceneOoT_CommandType::CS_CMD_STOP_SEQ);
|
||||
return StringHelper::Sprintf(entryFmt.c_str(), baseOne ? base - 1 : base, startFrame,
|
||||
endFrame, pad, unused1, unused2, unused3, unused4, unused5,
|
||||
unused6, unused7, unused8, unused9, unused10);
|
||||
return StringHelper::Sprintf(entryFmt.c_str(), base - 1, startFrame, endFrame, pad,
|
||||
unused1, unused2, unused3, unused4, unused5, unused6,
|
||||
unused7, unused8, unused9, unused10);
|
||||
}
|
||||
return StringHelper::Sprintf(entryFmt.c_str(), firstArg.c_str(), startFrame, endFrame, pad,
|
||||
unused1, unused2, unused3, unused4, unused5, unused6, unused7,
|
||||
|
@ -270,9 +272,11 @@ std::string CutsceneOoTSubCommandEntry_Text::GetBodySourceCode() const
|
|||
{
|
||||
return StringHelper::Sprintf("CS_TEXT_NONE(%i, %i)", startFrame, endFrame);
|
||||
}
|
||||
if (type == 2)
|
||||
if (type == 2 &&
|
||||
enumData->ocarinaSongActionId.find(base) != enumData->ocarinaSongActionId.end())
|
||||
{
|
||||
return StringHelper::Sprintf("CS_TEXT_OCARINA_ACTION(%i, %i, %i, 0x%X)", base, startFrame,
|
||||
return StringHelper::Sprintf("CS_TEXT_OCARINA_ACTION(%s, %i, %i, 0x%X)",
|
||||
enumData->ocarinaSongActionId[base].c_str(), startFrame,
|
||||
endFrame, textId1);
|
||||
}
|
||||
|
||||
|
@ -333,24 +337,25 @@ CutsceneOoTSubCommandEntry_ActorCue::CutsceneOoTSubCommandEntry_ActorCue(
|
|||
|
||||
std::string CutsceneOoTSubCommandEntry_ActorCue::GetBodySourceCode() const
|
||||
{
|
||||
std::string result;
|
||||
EnumData* enumData = &Globals::Instance->cfg.enumData;
|
||||
|
||||
if (static_cast<CutsceneOoT_CommandType>(commandID) ==
|
||||
CutsceneOoT_CommandType::CS_CMD_PLAYER_CUE)
|
||||
{
|
||||
result = "CS_PLAYER_CUE";
|
||||
return StringHelper::Sprintf("CS_PLAYER_CUE(%s, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, "
|
||||
"%i, %i, %i, %i, %.8ef, %.8ef, %.8ef)",
|
||||
enumData->playerCueId[base].c_str(), startFrame, endFrame,
|
||||
rotX, rotY, rotZ, startPosX, startPosY, startPosZ, endPosX,
|
||||
endPosY, endPosZ, normalX, normalY, normalZ);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = "CS_ACTOR_CUE";
|
||||
return StringHelper::Sprintf("CS_ACTOR_CUE(%i, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, "
|
||||
"%i, %i, %i, %i, %.8ef, %.8ef, %.8ef)",
|
||||
base, startFrame, endFrame, rotX, rotY, rotZ, startPosX,
|
||||
startPosY, startPosZ, endPosX, endPosY, endPosZ, normalX,
|
||||
normalY, normalZ);
|
||||
}
|
||||
|
||||
result +=
|
||||
StringHelper::Sprintf("(%i, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, "
|
||||
"%i, %i, %i, %i, %.8ef, %.8ef, %.8ef)",
|
||||
base, startFrame, endFrame, rotX, rotY, rotZ, startPosX, startPosY,
|
||||
startPosZ, endPosX, endPosY, endPosZ, normalX, normalY, normalZ);
|
||||
return result;
|
||||
}
|
||||
|
||||
size_t CutsceneOoTSubCommandEntry_ActorCue::GetRawSize() const
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
|
||||
enum class ZLimbSkinType
|
||||
{
|
||||
SkinType_Null, // SkinLimb segment = NULL
|
||||
SkinType_Animated = 4, // SkinLimb segment = SkinAnimatedLimbData*
|
||||
SkinType_Normal = 11, // SkinLimb segment = Gfx*
|
||||
SkinType_Null, // SkinLimb segment = NULL
|
||||
SkinType_Animated = 4, // SkinLimb segment = SkinAnimatedLimbData*
|
||||
SkinType_Normal = 11, // SkinLimb segment = Gfx*
|
||||
};
|
||||
|
||||
class SkinVertex : public ZResource
|
||||
|
@ -75,11 +75,11 @@ public:
|
|||
size_t GetRawDataSize() const override;
|
||||
|
||||
protected:
|
||||
uint16_t vtxCount; // Number of vertices in this modif entry
|
||||
uint16_t transformCount; // Length of limbTransformations
|
||||
uint16_t unk_4; // 0 or 1, used as an index for limbTransformations
|
||||
segptr_t skinVertices; // SkinVertex*
|
||||
segptr_t limbTransformations; // SkinTransformation*
|
||||
uint16_t vtxCount; // Number of vertices in this modif entry
|
||||
uint16_t transformCount; // Length of limbTransformations
|
||||
uint16_t unk_4; // 0 or 1, used as an index for limbTransformations
|
||||
segptr_t skinVertices; // SkinVertex*
|
||||
segptr_t limbTransformations; // SkinTransformation*
|
||||
|
||||
std::vector<SkinVertex> skinVertices_arr;
|
||||
std::vector<SkinTransformation> limbTransformations_arr;
|
||||
|
@ -102,9 +102,9 @@ public:
|
|||
|
||||
protected:
|
||||
uint16_t totalVtxCount;
|
||||
uint16_t limbModifCount; // Length of limbModifications
|
||||
segptr_t limbModifications; // SkinLimbModif*
|
||||
segptr_t dlist; // Gfx*
|
||||
uint16_t limbModifCount; // Length of limbModifications
|
||||
segptr_t limbModifications; // SkinLimbModif*
|
||||
segptr_t dlist; // Gfx*
|
||||
|
||||
std::vector<SkinLimbModif> limbModifications_arr;
|
||||
// ZDisplayList* unk_8_dlist = nullptr;
|
||||
|
|
|
@ -1,5 +1,25 @@
|
|||
<Root>
|
||||
<!--
|
||||
Description:
|
||||
This file hosts various enum data from decomp.
|
||||
|
||||
Format:
|
||||
- <Enum>: a list of <Item> with an unique identifier (key), the decomp ID and the index
|
||||
Parameters:
|
||||
* Games: list of OoT versions that shares this data
|
||||
* Key: identifier, the name is the same as the enum from decomp
|
||||
- <Item>: description of an element of an <Enum>
|
||||
Parameters:
|
||||
* Key: identifier that should never be changed
|
||||
* ID: the actual enum name from decomp, this may change hence the need of the Key parameter
|
||||
* Index: the location of the item in the enum (should match decomp)
|
||||
|
||||
Notes:
|
||||
- Player Cue Ids got their own enum but not regular Actor Cues.
|
||||
This is because Actor Cues are among cutscene commands (``csCmd``)
|
||||
-->
|
||||
<Enum Games="OoTMqDbg" Key="cmd" ID="CutsceneCmd">
|
||||
<!-- https://github.com/zeldaret/oot/blob/7235af2249843fb68740111b70089bad827a4730/include/z64cutscene.h#L35-L165 -->
|
||||
<Item Key="cam_eye_spline" ID="CS_CMD_CAM_EYE_SPLINE" Index="1"/>
|
||||
<Item Key="cam_at_spline" ID="CS_CMD_CAM_AT_SPLINE" Index="2"/>
|
||||
<Item Key="misc" ID="CS_CMD_MISC" Index="3"/>
|
||||
|
@ -131,6 +151,7 @@
|
|||
<Item Key="end" ID="CS_CMD_END" Index="65535"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="miscType" ID="CutsceneMiscType">
|
||||
<!-- https://github.com/zeldaret/oot/blob/823e47a0f8e9fb9fab89bc61b57f45488ff6debe/include/z64cutscene.h#L167-L204 -->
|
||||
<Item Key="unimplemented_0" ID="CS_MISC_UNIMPLEMENTED_0" Index="0"/>
|
||||
<Item Key="rain" ID="CS_MISC_RAIN" Index="1"/>
|
||||
<Item Key="lightning" ID="CS_MISC_LIGHTNING" Index="2"/>
|
||||
|
@ -169,6 +190,7 @@
|
|||
<Item Key="long_scarecrow_song" ID="CS_MISC_LONG_SCARECROW_SONG" Index="35"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="textType" ID="CutsceneTextType">
|
||||
<!-- https://github.com/zeldaret/oot/blob/823e47a0f8e9fb9fab89bc61b57f45488ff6debe/include/z64cutscene.h#L206-L212 -->
|
||||
<Item Key="normal" ID="CS_TEXT_NORMAL" Index="0"/>
|
||||
<Item Key="choice" ID="CS_TEXT_CHOICE" Index="1"/>
|
||||
<Item Key="ocarina_action" ID="CS_TEXT_OCARINA_ACTION" Index="2"/>
|
||||
|
@ -176,10 +198,12 @@
|
|||
<Item Key="zora_sapphire" ID="CS_TEXT_ZORA_SAPPHIRE" Index="4"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="fadeOutSeqPlayer" ID="CutsceneFadeOutSeqPlayer">
|
||||
<!-- https://github.com/zeldaret/oot/blob/7235af2249843fb68740111b70089bad827a4730/include/z64cutscene.h#L214-L217 -->
|
||||
<Item Key="fade_out_fanfare" ID="CS_FADE_OUT_FANFARE" Index="3"/>
|
||||
<Item Key="fade_out_bgm_main" ID="CS_FADE_OUT_BGM_MAIN" Index="4"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="transitionType" ID="CutsceneTransitionType">
|
||||
<!-- https://github.com/zeldaret/oot/blob/823e47a0f8e9fb9fab89bc61b57f45488ff6debe/include/z64cutscene.h#L219-233 -->
|
||||
<Item Key="gray_fill_in" ID="CS_TRANS_GRAY_FILL_IN" Index="1"/>
|
||||
<Item Key="blue_fill_in" ID="CS_TRANS_BLUE_FILL_IN" Index="2"/>
|
||||
<Item Key="red_fill_out" ID="CS_TRANS_RED_FILL_OUT" Index="3"/>
|
||||
|
@ -195,6 +219,7 @@
|
|||
<Item Key="black_fill_in_from_half" ID="CS_TRANS_BLACK_FILL_IN_FROM_HALF" Index="13"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="destination" ID="CutsceneDestination">
|
||||
<!-- https://github.com/zeldaret/oot/blob/823e47a0f8e9fb9fab89bc61b57f45488ff6debe/include/z64cutscene.h#L235-356 -->
|
||||
<Item Key="unimplemented_0" ID="CS_DEST_UNIMPLEMENTED_0" Index="0"/>
|
||||
<Item Key="cutscene_map_ganon_horse" ID="CS_DEST_CUTSCENE_MAP_GANON_HORSE" Index="1"/>
|
||||
<Item Key="cutscene_map_three_goddesses" ID="CS_DEST_CUTSCENE_MAP_THREE_GODDESSES" Index="2"/>
|
||||
|
@ -317,11 +342,13 @@
|
|||
<Item Key="zeldas_courtyard_receive_letter" ID="CS_DEST_ZELDAS_COURTYARD_RECEIVE_LETTER" Index="119"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="naviQuestHintType" ID="NaviQuestHintFileId">
|
||||
<!-- https://github.com/zeldaret/oot/blob/107c0288cc46e378c67dc4ae2e39cfd2e5fcbc25/include/z64scene.h#L463-L467 -->
|
||||
<Item Key="hints_none" ID="NAVI_QUEST_HINTS_NONE" Index="0"/>
|
||||
<Item Key="hints_overworld" ID="NAVI_QUEST_HINTS_OVERWORLD" Index="1"/>
|
||||
<Item Key="hints_dungeon" ID="NAVI_QUEST_HINTS_DUNGEON" Index="2"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="playerCueId" ID="PlayerCueId">
|
||||
<!-- https://github.com/zeldaret/oot/blob/b3486b57ef41a284a366eb40ca07bf82bf4750d6/include/z64player.h#L462-L542 -->
|
||||
<Item Key="cueid_none" ID="PLAYER_CUEID_NONE" Index="0"/>
|
||||
<Item Key="cueid_1" ID="PLAYER_CUEID_1" Index="1"/>
|
||||
<Item Key="cueid_2" ID="PLAYER_CUEID_2" Index="2"/>
|
||||
|
@ -401,16 +428,172 @@
|
|||
<Item Key="cueid_76" ID="PLAYER_CUEID_76" Index="76"/>
|
||||
<Item Key="cueid_77" ID="PLAYER_CUEID_77" Index="77"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="ocarinaSongActionId" ID="OcarinaSongActionId">
|
||||
<!-- https://github.com/zeldaret/oot/blob/b3486b57ef41a284a366eb40ca07bf82bf4750d6/include/z64ocarina.h#L25-L76 -->
|
||||
<Item Key="unk_0" ID="OCARINA_ACTION_UNK_0" Index="0"/>
|
||||
<Item Key="free_play" ID="OCARINA_ACTION_FREE_PLAY" Index="1"/>
|
||||
<Item Key="teach_minuet" ID="OCARINA_ACTION_TEACH_MINUET" Index="2"/>
|
||||
<Item Key="teach_bolero" ID="OCARINA_ACTION_TEACH_BOLERO" Index="3"/>
|
||||
<Item Key="teach_serenade" ID="OCARINA_ACTION_TEACH_SERENADE" Index="4"/>
|
||||
<Item Key="teach_requiem" ID="OCARINA_ACTION_TEACH_REQUIEM" Index="5"/>
|
||||
<Item Key="teach_nocturne" ID="OCARINA_ACTION_TEACH_NOCTURNE" Index="6"/>
|
||||
<Item Key="teach_prelude" ID="OCARINA_ACTION_TEACH_PRELUDE" Index="7"/>
|
||||
<Item Key="teach_saria" ID="OCARINA_ACTION_TEACH_SARIA" Index="8"/>
|
||||
<Item Key="teach_epona" ID="OCARINA_ACTION_TEACH_EPONA" Index="9"/>
|
||||
<Item Key="teach_lullaby" ID="OCARINA_ACTION_TEACH_LULLABY" Index="10"/>
|
||||
<Item Key="teach_suns" ID="OCARINA_ACTION_TEACH_SUNS" Index="11"/>
|
||||
<Item Key="teach_time" ID="OCARINA_ACTION_TEACH_TIME" Index="12"/>
|
||||
<Item Key="teach_storms" ID="OCARINA_ACTION_TEACH_STORMS" Index="13"/>
|
||||
<Item Key="unk_e" ID="OCARINA_ACTION_UNK_E" Index="14"/>
|
||||
<Item Key="playback_minuet" ID="OCARINA_ACTION_PLAYBACK_MINUET" Index="15"/>
|
||||
<Item Key="playback_bolero" ID="OCARINA_ACTION_PLAYBACK_BOLERO" Index="16"/>
|
||||
<Item Key="playback_serenade" ID="OCARINA_ACTION_PLAYBACK_SERENADE" Index="17"/>
|
||||
<Item Key="playback_requiem" ID="OCARINA_ACTION_PLAYBACK_REQUIEM" Index="18"/>
|
||||
<Item Key="playback_nocturne" ID="OCARINA_ACTION_PLAYBACK_NOCTURNE" Index="19"/>
|
||||
<Item Key="playback_prelude" ID="OCARINA_ACTION_PLAYBACK_PRELUDE" Index="20"/>
|
||||
<Item Key="playback_saria" ID="OCARINA_ACTION_PLAYBACK_SARIA" Index="21"/>
|
||||
<Item Key="playback_epona" ID="OCARINA_ACTION_PLAYBACK_EPONA" Index="22"/>
|
||||
<Item Key="playback_lullaby" ID="OCARINA_ACTION_PLAYBACK_LULLABY" Index="23"/>
|
||||
<Item Key="playback_suns" ID="OCARINA_ACTION_PLAYBACK_SUNS" Index="24"/>
|
||||
<Item Key="playback_time" ID="OCARINA_ACTION_PLAYBACK_TIME" Index="25"/>
|
||||
<Item Key="playback_storms" ID="OCARINA_ACTION_PLAYBACK_STORMS" Index="26"/>
|
||||
<Item Key="unk_1b" ID="OCARINA_ACTION_UNK_1B" Index="27"/>
|
||||
<Item Key="check_minuet" ID="OCARINA_ACTION_CHECK_MINUET" Index="28"/>
|
||||
<Item Key="check_bolero" ID="OCARINA_ACTION_CHECK_BOLERO" Index="29"/>
|
||||
<Item Key="check_serenade" ID="OCARINA_ACTION_CHECK_SERENADE" Index="30"/>
|
||||
<Item Key="check_requiem" ID="OCARINA_ACTION_CHECK_REQUIEM" Index="31"/>
|
||||
<Item Key="check_nocturne" ID="OCARINA_ACTION_CHECK_NOCTURNE" Index="32"/>
|
||||
<Item Key="check_prelude" ID="OCARINA_ACTION_CHECK_PRELUDE" Index="33"/>
|
||||
<Item Key="check_saria" ID="OCARINA_ACTION_CHECK_SARIA" Index="34"/>
|
||||
<Item Key="check_epona" ID="OCARINA_ACTION_CHECK_EPONA" Index="35"/>
|
||||
<Item Key="check_lullaby" ID="OCARINA_ACTION_CHECK_LULLABY" Index="36"/>
|
||||
<Item Key="check_suns" ID="OCARINA_ACTION_CHECK_SUNS" Index="37"/>
|
||||
<Item Key="check_time" ID="OCARINA_ACTION_CHECK_TIME" Index="38"/>
|
||||
<Item Key="check_storms" ID="OCARINA_ACTION_CHECK_STORMS" Index="39"/>
|
||||
<Item Key="check_scarecrow_spawn" ID="OCARINA_ACTION_CHECK_SCARECROW_SPAWN" Index="40"/>
|
||||
<Item Key="free_play_done" ID="OCARINA_ACTION_FREE_PLAY_DONE" Index="41"/>
|
||||
<Item Key="scarecrow_long_recording" ID="OCARINA_ACTION_SCARECROW_LONG_RECORDING" Index="42"/>
|
||||
<Item Key="scarecrow_long_playback" ID="OCARINA_ACTION_SCARECROW_LONG_PLAYBACK" Index="43"/>
|
||||
<Item Key="scarecrow_spawn_recording" ID="OCARINA_ACTION_SCARECROW_SPAWN_RECORDING" Index="44"/>
|
||||
<Item Key="scarecrow_spawn_playback" ID="OCARINA_ACTION_SCARECROW_SPAWN_PLAYBACK" Index="45"/>
|
||||
<Item Key="memory_game" ID="OCARINA_ACTION_MEMORY_GAME" Index="46"/>
|
||||
<Item Key="frogs" ID="OCARINA_ACTION_FROGS" Index="47"/>
|
||||
<Item Key="check_nowarp" ID="OCARINA_ACTION_CHECK_NOWARP" Index="48"/>
|
||||
<Item Key="check_nowarp_done" ID="OCARINA_ACTION_CHECK_NOWARP_DONE" Index="49"/>
|
||||
</Enum>
|
||||
<Enum Games="OoTMqDbg" Key="seqId" ID="SeqId">
|
||||
<!-- https://github.com/zeldaret/oot/blob/9f09505d34619883748a7dab05071883281c14fd/include/sequence.h#L4-L118 -->
|
||||
<Item Key="general_sfx" ID="NA_BGM_GENERAL_SFX" Name="General Sound Effects" Index="0"/>
|
||||
<Item Key="nature_ambience" ID="NA_BGM_NATURE_AMBIENCE" Name="Nature Ambiance" Index="1"/>
|
||||
<Item Key="field_logic" ID="NA_BGM_FIELD_LOGIC" Name="Hyrule Field" Index="2"/>
|
||||
<Item Key="field_init" ID="NA_BGM_FIELD_INIT" Name="Hyrule Field (Initial Segment From Loading Area)" Index="3"/>
|
||||
<Item Key="field_default_1" ID="NA_BGM_FIELD_DEFAULT_1" Name="Hyrule Field (Moving Segment 1)" Index="4"/>
|
||||
<Item Key="field_default_2" ID="NA_BGM_FIELD_DEFAULT_2" Name="Hyrule Field (Moving Segment 2)" Index="5"/>
|
||||
<Item Key="field_default_3" ID="NA_BGM_FIELD_DEFAULT_3" Name="Hyrule Field (Moving Segment 3)" Index="6"/>
|
||||
<Item Key="field_default_4" ID="NA_BGM_FIELD_DEFAULT_4" Name="Hyrule Field (Moving Segment 4)" Index="7"/>
|
||||
<Item Key="field_default_5" ID="NA_BGM_FIELD_DEFAULT_5" Name="Hyrule Field (Moving Segment 5)" Index="8"/>
|
||||
<Item Key="field_default_6" ID="NA_BGM_FIELD_DEFAULT_6" Name="Hyrule Field (Moving Segment 6)" Index="9"/>
|
||||
<Item Key="field_default_7" ID="NA_BGM_FIELD_DEFAULT_7" Name="Hyrule Field (Moving Segment 7)" Index="10"/>
|
||||
<Item Key="field_default_8" ID="NA_BGM_FIELD_DEFAULT_8" Name="Hyrule Field (Moving Segment 8)" Index="11"/>
|
||||
<Item Key="field_default_9" ID="NA_BGM_FIELD_DEFAULT_9" Name="Hyrule Field (Moving Segment 9)" Index="12"/>
|
||||
<Item Key="field_default_a" ID="NA_BGM_FIELD_DEFAULT_A" Name="Hyrule Field (Moving Segment 10)" Index="13"/>
|
||||
<Item Key="field_default_b" ID="NA_BGM_FIELD_DEFAULT_B" Name="Hyrule Field (Moving Segment 11)" Index="14"/>
|
||||
<Item Key="field_enemy_init" ID="NA_BGM_FIELD_ENEMY_INIT" Name="Hyrule Field (Enemy Approaches)" Index="15"/>
|
||||
<Item Key="field_enemy_1" ID="NA_BGM_FIELD_ENEMY_1" Name="Hyrule Field (Enemy Near Segment 1)" Index="16"/>
|
||||
<Item Key="field_enemy_2" ID="NA_BGM_FIELD_ENEMY_2" Name="Hyrule Field (Enemy Near Segment 2)" Index="17"/>
|
||||
<Item Key="field_enemy_3" ID="NA_BGM_FIELD_ENEMY_3" Name="Hyrule Field (Enemy Near Segment 3)" Index="18"/>
|
||||
<Item Key="field_enemy_4" ID="NA_BGM_FIELD_ENEMY_4" Name="Hyrule Field (Enemy Near Segment 4)" Index="19"/>
|
||||
<Item Key="field_still_1" ID="NA_BGM_FIELD_STILL_1" Name="Hyrule Field (Standing Still Segment 1)" Index="20"/>
|
||||
<Item Key="field_still_2" ID="NA_BGM_FIELD_STILL_2" Name="Hyrule Field (Standing Still Segment 2)" Index="21"/>
|
||||
<Item Key="field_still_3" ID="NA_BGM_FIELD_STILL_3" Name="Hyrule Field (Standing Still Segment 3)" Index="22"/>
|
||||
<Item Key="field_still_4" ID="NA_BGM_FIELD_STILL_4" Name="Hyrule Field (Standing Still Segment 4)" Index="23"/>
|
||||
<Item Key="dungeon" ID="NA_BGM_DUNGEON" Name="Dodongo's Cavern" Index="24"/>
|
||||
<Item Key="kakariko_adult" ID="NA_BGM_KAKARIKO_ADULT" Name="Kakariko Village (Adult)" Index="25"/>
|
||||
<Item Key="enemy" ID="NA_BGM_ENEMY" Name="Enemy Battle" Index="26"/>
|
||||
<Item Key="boss" ID="NA_BGM_BOSS" Name="Boss Battle 00" Index="27"/>
|
||||
<Item Key="inside_deku_tree" ID="NA_BGM_INSIDE_DEKU_TREE" Name="Inside the Deku Tree" Index="28"/>
|
||||
<Item Key="market" ID="NA_BGM_MARKET" Name="Market" Index="29"/>
|
||||
<Item Key="title" ID="NA_BGM_TITLE" Name="Title Theme" Index="30"/>
|
||||
<Item Key="link_house" ID="NA_BGM_LINK_HOUSE" Name="Link's House" Index="31"/>
|
||||
<Item Key="game_over" ID="NA_BGM_GAME_OVER" Name="Game Over" Index="32"/>
|
||||
<Item Key="boss_clear" ID="NA_BGM_BOSS_CLEAR" Name="Boss Clear" Index="33"/>
|
||||
<Item Key="item_get" ID="NA_BGM_ITEM_GET" Name="Item Get" Index="34"/>
|
||||
<Item Key="opening_ganon" ID="NA_BGM_OPENING_GANON" Name="Opening Ganon" Index="35"/>
|
||||
<Item Key="heart_get" ID="NA_BGM_HEART_GET" Name="Heart Get" Index="36"/>
|
||||
<Item Key="oca_light" ID="NA_BGM_OCA_LIGHT" Name="Prelude Of Light" Index="37"/>
|
||||
<Item Key="jabu_jabu" ID="NA_BGM_JABU_JABU" Name="Inside Jabu-Jabu's Belly" Index="38"/>
|
||||
<Item Key="kakariko_kid" ID="NA_BGM_KAKARIKO_KID" Name="Kakariko Village (Child)" Index="39"/>
|
||||
<Item Key="great_fairy" ID="NA_BGM_GREAT_FAIRY" Name="Great Fairy's Fountain" Index="40"/>
|
||||
<Item Key="zelda_theme" ID="NA_BGM_ZELDA_THEME" Name="Zelda's Theme" Index="41"/>
|
||||
<Item Key="fire_temple" ID="NA_BGM_FIRE_TEMPLE" Name="Fire Temple" Index="42"/>
|
||||
<Item Key="open_tre_box" ID="NA_BGM_OPEN_TRE_BOX" Name="Open Treasure Chest" Index="43"/>
|
||||
<Item Key="forest_temple" ID="NA_BGM_FOREST_TEMPLE" Name="Forest Temple" Index="44"/>
|
||||
<Item Key="courtyard" ID="NA_BGM_COURTYARD" Name="Hyrule Castle Courtyard" Index="45"/>
|
||||
<Item Key="ganon_tower" ID="NA_BGM_GANON_TOWER" Name="Ganondorf's Theme" Index="46"/>
|
||||
<Item Key="lonlon" ID="NA_BGM_LONLON" Name="Lon Lon Ranch" Index="47"/>
|
||||
<Item Key="goron_city" ID="NA_BGM_GORON_CITY" Name="Goron City" Index="48"/>
|
||||
<Item Key="field_morning" ID="NA_BGM_FIELD_MORNING" Name="Hyrule Field Morning Theme" Index="49"/>
|
||||
<Item Key="spiritual_stone" ID="NA_BGM_SPIRITUAL_STONE" Name="Spiritual Stone Get" Index="50"/>
|
||||
<Item Key="oca_bolero" ID="NA_BGM_OCA_BOLERO" Name="Bolero of Fire" Index="51"/>
|
||||
<Item Key="oca_minuet" ID="NA_BGM_OCA_MINUET" Name="Minuet of Woods" Index="52"/>
|
||||
<Item Key="oca_serenade" ID="NA_BGM_OCA_SERENADE" Name="Serenade of Water" Index="53"/>
|
||||
<Item Key="oca_requiem" ID="NA_BGM_OCA_REQUIEM" Name="Requiem of Spirit" Index="54"/>
|
||||
<Item Key="oca_nocturne" ID="NA_BGM_OCA_NOCTURNE" Name="Nocturne of Shadow" Index="55"/>
|
||||
<Item Key="mini_boss" ID="NA_BGM_MINI_BOSS" Name="Mini-Boss Battle" Index="56"/>
|
||||
<Item Key="small_item_get" ID="NA_BGM_SMALL_ITEM_GET" Name="Obtain Small Item" Index="57"/>
|
||||
<Item Key="temple_of_time" ID="NA_BGM_TEMPLE_OF_TIME" Name="Temple of Time" Index="58"/>
|
||||
<Item Key="event_clear" ID="NA_BGM_EVENT_CLEAR" Name="Escape from Lon Lon Ranch" Index="59"/>
|
||||
<Item Key="kokiri" ID="NA_BGM_KOKIRI" Name="Kokiri Forest" Index="60"/>
|
||||
<Item Key="oca_fairy_get" ID="NA_BGM_OCA_FAIRY_GET" Name="Obtain Fairy Ocarina" Index="61"/>
|
||||
<Item Key="saria_theme" ID="NA_BGM_SARIA_THEME" Name="Lost Woods" Index="62"/>
|
||||
<Item Key="spirit_temple" ID="NA_BGM_SPIRIT_TEMPLE" Name="Spirit Temple" Index="63"/>
|
||||
<Item Key="horse" ID="NA_BGM_HORSE" Name="Horse Race" Index="64"/>
|
||||
<Item Key="horse_goal" ID="NA_BGM_HORSE_GOAL" Name="Horse Race Goal" Index="65"/>
|
||||
<Item Key="ingo" ID="NA_BGM_INGO" Name="Ingo's Theme" Index="66"/>
|
||||
<Item Key="medallion_get" ID="NA_BGM_MEDALLION_GET" Name="Obtain Medallion" Index="67"/>
|
||||
<Item Key="oca_saria" ID="NA_BGM_OCA_SARIA" Name="Ocarina Saria's Song" Index="68"/>
|
||||
<Item Key="oca_epona" ID="NA_BGM_OCA_EPONA" Name="Ocarina Epona's Song" Index="69"/>
|
||||
<Item Key="oca_zelda" ID="NA_BGM_OCA_ZELDA" Name="Ocarina Zelda's Lullaby" Index="70"/>
|
||||
<Item Key="oca_suns" ID="NA_BGM_OCA_SUNS" Name="Sun's Song" Index="71"/>
|
||||
<Item Key="oca_time" ID="NA_BGM_OCA_TIME" Name="Song of Time" Index="72"/>
|
||||
<Item Key="oca_storm" ID="NA_BGM_OCA_STORM" Name="Song of Storms" Index="73"/>
|
||||
<Item Key="navi_opening" ID="NA_BGM_NAVI_OPENING" Name="Fairy Flying" Index="74"/>
|
||||
<Item Key="deku_tree_cs" ID="NA_BGM_DEKU_TREE_CS" Name="Deku Tree" Index="75"/>
|
||||
<Item Key="windmill" ID="NA_BGM_WINDMILL" Name="Windmill Hut" Index="76"/>
|
||||
<Item Key="hyrule_cs" ID="NA_BGM_HYRULE_CS" Name="Legend of Hyrule" Index="77"/>
|
||||
<Item Key="mini_game" ID="NA_BGM_MINI_GAME" Name="Shooting Gallery" Index="78"/>
|
||||
<Item Key="sheik" ID="NA_BGM_SHEIK" Name="Sheik's Theme" Index="79"/>
|
||||
<Item Key="zora_domain" ID="NA_BGM_ZORA_DOMAIN" Name="Zora's Domain" Index="80"/>
|
||||
<Item Key="appear" ID="NA_BGM_APPEAR" Name="Enter Zelda" Index="81"/>
|
||||
<Item Key="adult_link" ID="NA_BGM_ADULT_LINK" Name="Goodbye to Zelda" Index="82"/>
|
||||
<Item Key="master_sword" ID="NA_BGM_MASTER_SWORD" Name="Master Sword" Index="83"/>
|
||||
<Item Key="intro_ganon" ID="NA_BGM_INTRO_GANON" Name="Ganon Intro" Index="84"/>
|
||||
<Item Key="shop" ID="NA_BGM_SHOP" Name="Shop" Index="85"/>
|
||||
<Item Key="chamber_of_sages" ID="NA_BGM_CHAMBER_OF_SAGES" Name="Chamber of the Sages" Index="86"/>
|
||||
<Item Key="file_select" ID="NA_BGM_FILE_SELECT" Name="File Select" Index="87"/>
|
||||
<Item Key="ice_cavern" ID="NA_BGM_ICE_CAVERN" Name="Ice Cavern" Index="88"/>
|
||||
<Item Key="door_of_time" ID="NA_BGM_DOOR_OF_TIME" Name="Open Door of Temple of Time" Index="89"/>
|
||||
<Item Key="owl" ID="NA_BGM_OWL" Name="Kaepora Gaebora's Theme" Index="90"/>
|
||||
<Item Key="shadow_temple" ID="NA_BGM_SHADOW_TEMPLE" Name="Shadow Temple" Index="91"/>
|
||||
<Item Key="water_temple" ID="NA_BGM_WATER_TEMPLE" Name="Water Temple" Index="92"/>
|
||||
<Item Key="bridge_to_ganons" ID="NA_BGM_BRIDGE_TO_GANONS" Name="Ganon's Castle Bridge" Index="93"/>
|
||||
<Item Key="ocarina_of_time" ID="NA_BGM_OCARINA_OF_TIME" Name="Ocarina of Time" Index="94"/>
|
||||
<Item Key="gerudo_valley" ID="NA_BGM_GERUDO_VALLEY" Name="Gerudo Valley" Index="95"/>
|
||||
<Item Key="potion_shop" ID="NA_BGM_POTION_SHOP" Name="Potion Shop" Index="96"/>
|
||||
<Item Key="kotake_koume" ID="NA_BGM_KOTAKE_KOUME" Name="Kotake and Koume's Theme" Index="97"/>
|
||||
<Item Key="escape" ID="NA_BGM_ESCAPE" Name="Escape from Ganon's Castle" Index="98"/>
|
||||
<Item Key="underground" ID="NA_BGM_UNDERGROUND" Name="Ganon's Castle Under Ground" Index="99"/>
|
||||
<Item Key="ganondorf_boss" ID="NA_BGM_GANONDORF_BOSS" Name="Ganondorf Battle" Index="100"/>
|
||||
<Item Key="ganon_boss" ID="NA_BGM_GANON_BOSS" Name="Ganon Battle" Index="101"/>
|
||||
<Item Key="end_demo" ID="NA_BGM_END_DEMO" Name="Seal of Six Sages" Index="102"/>
|
||||
<Item Key="staff_1" ID="NA_BGM_STAFF_1" Name="End Credits I" Index="103"/>
|
||||
<Item Key="staff_2" ID="NA_BGM_STAFF_2" Name="End Credits II" Index="104"/>
|
||||
<Item Key="staff_3" ID="NA_BGM_STAFF_3" Name="End Credits III" Index="105"/>
|
||||
<Item Key="staff_4" ID="NA_BGM_STAFF_4" Name="End Credits IV" Index="106"/>
|
||||
<Item Key="fire_boss" ID="NA_BGM_FIRE_BOSS" Name="King Dodongo and Volvagia Boss Battle" Index="107"/>
|
||||
<Item Key="timed_mini_game" ID="NA_BGM_TIMED_MINI_GAME" Name="Mini-Game" Index="108"/>
|
||||
<Item Key="cutscene_effects" ID="NA_BGM_CUTSCENE_EFFECTS" Name="Various Cutscene Sounds" Index="109"/>
|
||||
<Item Key="no_music" ID="NA_BGM_NO_MUSIC" Name="No Music" Index="127"/>
|
||||
<Item Key="nature_sfx_rain" ID="NA_BGM_NATURE_SFX_RAIN" Name="Nature Ambiance: Rain" Index="128"/>
|
||||
</Enum>
|
||||
</Root>
|
||||
|
||||
<!-- Format Documentation
|
||||
- <Enum>: a list of <Item> with a unique identifier (key), the decomp ID and the index
|
||||
Parameters:
|
||||
* Games: list of OoT versions that share this data
|
||||
* Key: identifier, the name is the same as the enum from decomp
|
||||
- <Item>: description of an element of an <Enum>
|
||||
Parameters:
|
||||
* Key: identifier that should never be changed
|
||||
* ID: the actual enum name from decomp, this may change hence the need of the Key parameter
|
||||
* Index: the location of the item in the enum (should match decomp)
|
||||
-->
|
||||
|
|
Loading…
Reference in a new issue