third item, missing visuals

This commit is contained in:
MelonSpeedruns
2026-05-14 10:14:35 -04:00
parent a913f1699f
commit 318ad2a00f
12 changed files with 84 additions and 54 deletions
+1 -1
View File
@@ -4059,7 +4059,7 @@ public:
/* 0x02180 */ daAlink_matAnm_c* field_0x2180[2];
/* 0x02188 */ dEyeHL_c mEyeHL1;
/* 0x0219C */ dEyeHL_c mEyeHL2;
/* 0x021B0 */ daPy_anmHeap_c mItemHeap[2];
/* 0x021B0 */ daPy_anmHeap_c mItemHeap[3];
/* 0x021D8 */ daPy_anmHeap_c mAnmHeap9;
/* 0x021EC */ daAlinkHIO_c* mpHIO;
/* 0x021F0 */ daAlink_blur_c m_swordBlur;
+1
View File
@@ -47,6 +47,7 @@ enum dEvt_type_e {
/* 0x5 */ dEvt_type_ITEM_e,
/* 0x6 */ dEvt_type_SHOWITEM_X_e,
/* 0x7 */ dEvt_type_SHOWITEM_Y_e,
/* 0x8 */ dEvt_type_SHOWITEM_Z_e,
/* 0xA */ dEvt_type_CATCH_e = 10,
/* 0xB */ dEvt_type_TREASURE_e,
};
+1 -1
View File
@@ -172,7 +172,7 @@ private:
/* 0x6A9 */ u8 field_0x6a9; // unused
/* 0x6AA */ u8 mXButtonSlot;
/* 0x6AB */ u8 mYButtonSlot;
/* 0x6AC */ u8 field_0x6ac;
/* 0x6AC */ u8 mZButtonSlot;
/* 0x6AD */ u8 field_0x6ad;
/* 0x6AE */ u8 mItemsTotal; // Contains the amount of items which are actually obtained and in
// the item wheel
+1 -1
View File
@@ -160,7 +160,7 @@ private:
/* 0x078 */ J2DScreen* mpScreen;
/* 0x07C */ J2DScreen* mpKanteraScreen;
/* 0x080 */ J2DScreen* mpPikariScreen;
/* 0x084 */ J2DPicture* mpItemNumTex[2][3];
/* 0x084 */ J2DPicture* mpItemNumTex[3][3];
/* 0x09C */ CPaneMgr* field_0x9c[3];
/* 0x0A8 */ int field_0xa8;
/* 0x0AC */ dKantera_icon_c* mpKanteraMeter[2];
+2 -1
View File
@@ -12,7 +12,7 @@
static const int DEFAULT_SELECT_ITEM_INDEX = 0;
static const int MAX_SELECT_ITEM = 4;
static const int SELECT_ITEM_NUM = 2;
static const int SELECT_ITEM_NUM = 3;
static const int MAX_EQUIPMENT = 6;
static const int MAX_EVENTS = 256;
static const int MAX_ITEM_SLOTS = 24;
@@ -123,6 +123,7 @@ enum {
/* 0x3 */ SELECT_ITEM_B,
/* 0x0 */ SELECT_ITEM_X = SELECT_ITEM_LEFT,
/* 0x1 */ SELECT_ITEM_Y = SELECT_ITEM_RIGHT,
/* 0x2 */ SELECT_ITEM_Z = SELECT_ITEM_DOWN,
};
enum {
+20 -20
View File
@@ -4552,7 +4552,7 @@ void daAlink_c::playerInit() {
PLAYER_CREATE_ANM_HEAP(mFaceBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daAlink_c::mFaceBtkHeap");
PLAYER_CREATE_ANM_HEAP(mFaceBckHeap, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mFaceBckHeap");
for (i = 0; i < 2; i++) {
for (i = 0; i < SELECT_ITEM_NUM; i++) {
mItemHeap[i].setBufferSize(0x13200);
PLAYER_CREATE_ANM_HEAP_F(mItemHeap[i], daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mItemHeap[%d]", i);
}
@@ -9494,7 +9494,7 @@ void daAlink_c::setStickData() {
if (mDoCPd_c::getTrigY(PAD_1)) {
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Y;
}
if (mDoCPd_c::getTrigZ(PAD_1)) {
if (mDoCPd_c::getTrigZ(PAD_1) && !mDoCPd_c::getHoldR(PAD_1)) {
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Z;
}
if (mDoCPd_c::getTrigL(PAD_1)) {
@@ -11297,8 +11297,8 @@ BOOL daAlink_c::checkUpperItemActionFly() {
void daAlink_c::checkItemButtonChange() {
if (mProcID != PROC_CANOE_PADDLE_PUT && mEquipItem != dItemNo_NONE_e && !checkEquipAnime()) {
u8 temp_r0;
for (u8 i = 0; i < 2; i++) {
temp_r0 = (i + 1) % 2;
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
temp_r0 = (i + 1) % SELECT_ITEM_NUM;
if (mEquipItem == dComIfGp_getSelectItem(i) &&
(mEquipItem != dComIfGp_getSelectItem(temp_r0) || mSelectItemId != temp_r0))
{
@@ -11468,8 +11468,8 @@ int daAlink_c::orderTalk(int i_checkZTalk) {
}
if (!checkWolf() && checkRequestTalkActor(mAttList2, field_0x27f8)) {
for (int i = 0; i < 2; i++) {
// check if pressed X or Y and if item on button is a trade item
for (int i = 0; i < 3; i++) {
// check if pressed X or Y or Z and if item on button is a trade item
if (checkTradeItem(dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
fopAcM_orderTalkItemBtnEvent(itemTalkType[i], this, field_0x27f8, 0, 0);
return 1;
@@ -12107,7 +12107,7 @@ void daAlink_c::allUnequip(BOOL param_0) {
if (checkNoResetFlg2(FLG2_UNK_1) && param_0 && !checkCanoeRide() &&
mEquipItem != dItemNo_KANTERA_e)
{
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
mSelectItemId = i;
}
@@ -12159,7 +12159,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
itemEquip(0x105);
} else {
u8 i;
for (i = 0; i < 2; i++) {
for (i = 0; i < SELECT_ITEM_NUM; i++) {
int proc_type = checkNewItemChange(i);
if (proc_type != 0 && itemTriggerCheck(1 << i)) {
BOOL var_r27 = changeItemTriggerKeepProc(i, proc_type);
@@ -12180,7 +12180,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
} else if (mEquipItem == dItemNo_NONE_e && mThrowBoomerangAcKeep.getActor() == NULL &&
!checkCanoeRide() && checkNoUpperAnime() && checkNoResetFlg2(FLG2_UNK_1))
{
for (i = 0; i < 2; i++) {
for (i = 0; i < SELECT_ITEM_NUM; i++) {
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
mSelectItemId = i;
}
@@ -12192,7 +12192,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
mEquipItem != 0x102 && (!checkCanoeRide() || !checkFisingRodLure()))
{
if (!checkEventRun() || strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER") != 0) {
if (strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER2") != 0 && checkItemSetButton(mEquipItem) == 2) {
if (strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER2") != 0 && checkItemSetButton(mEquipItem) == 3) {
allUnequip(1);
}
}
@@ -14386,7 +14386,7 @@ BOOL daAlink_c::checkGroupItem(int i_itemNo, int i_selItem) const {
}
int daAlink_c::checkSetItemTrigger(int i_itemNo) {
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
if (i_itemNo != dItemNo_HVY_BOOTS_e) {
mSelectItemId = i;
@@ -14399,13 +14399,13 @@ int daAlink_c::checkSetItemTrigger(int i_itemNo) {
}
int daAlink_c::checkItemSetButton(int i_itemNo) {
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i))) {
return i;
}
}
return 2;
return 3;
}
bool daAlink_c::checkField() {
@@ -14605,7 +14605,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
return ITEM_PROC_BOTTLE_DRINK;
}
if (checkOilBottleItem(sel_item) && checkItemSetButton(dItemNo_KANTERA_e) != 2) {
if (checkOilBottleItem(sel_item) && checkItemSetButton(dItemNo_KANTERA_e) != 3) {
return ITEM_PROC_KANDELAAR_POUR;
}
} else if (sel_item == dItemNo_HVY_BOOTS_e) {
@@ -14650,7 +14650,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
return ITEM_PROC_SPINNER_READY;
} else if (checkDungeonWarpItem(sel_item)) {
return ITEM_PROC_DUNGEON_WARP_READY;
} else if (checkItemSetButton(0x108) != 2 &&
} else if (checkItemSetButton(0x108) != 3 &&
(sel_item == dItemNo_WORM_e || sel_item == dItemNo_BEE_CHILD_e))
{
int itemNo = dComIfGp_getSelectItem(checkItemSetButton(0x108));
@@ -14674,7 +14674,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
return ITEM_PROC_NOT_USE_ITEM;
} else if (sel_item == dItemNo_HORSE_FLUTE_e) {
return ITEM_PROC_GRASS_WHISTLE;
} else if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 2) {
} else if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 3) {
return ITEM_PROC_KANDELAAR_POUR;
} else if (sel_item == dItemNo_HAWK_EYE_e) {
if (acceptSubjectModeChange()) {
@@ -17826,7 +17826,7 @@ int daAlink_c::execute() {
if (checkNoResetFlg2(FLG2_UNK_1) != FALSE &&
mEquipItem != dItemNo_KANTERA_e &&
checkItemSetButton(dItemNo_KANTERA_e) == 2) {
checkItemSetButton(dItemNo_KANTERA_e) == 3) {
offKandelaarModel();
}
@@ -18215,7 +18215,7 @@ int daAlink_c::execute() {
if (checkEquipHeavyBoots()) {
int itemButton = checkItemSetButton(dItemNo_HVY_BOOTS_e);
if (itemButton == 2 || checkNotHeavyBootsStage()) {
if (itemButton == 3 || checkNotHeavyBootsStage()) {
if (!dComIfGp_checkPlayerStatus1(0, 0x10000) || !checkHookshotRoofLv7Boss()) {
setHeavyBoots(0);
}
@@ -18737,7 +18737,7 @@ int daAlink_c::execute() {
if (!checkWolf()) {
u8 tmp;
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
tmp = (i + 1) % 2;
if (dComIfGp_getSelectItem(i) == dItemNo_EMPTY_BOTTLE_e && (mUseButtonFlags & (1 << i)) &&
dComIfGp_getSelectItem(tmp) == dItemNo_EMPTY_BOTTLE_e)
@@ -18747,7 +18747,7 @@ int daAlink_c::execute() {
}
}
for (int i = 0; i < 2; i++) {
for (int i = 0; i < SELECT_ITEM_NUM; i++) {
if (!(mUseButtonFlags & (1 << i)) && !(field_0x2faf & (1 << i))) {
dMeter2Info_offUseButton(METER2_USEBUTTON_X << i);
}
+1 -1
View File
@@ -4121,7 +4121,7 @@ int daAlink_c::procDungeonWarpReadyInit() {
}
fpc_ProcID id;
if (checkItemSetButton(dItemNo_DUNGEON_EXIT_e) != 2) {
if (checkItemSetButton(dItemNo_DUNGEON_EXIT_e) != 3) {
id = fopAcM_create(fpcNm_OBJ_TKS_e, 0, &current.pos, fopAcM_GetRoomNo(this), &shape_angle,
NULL, -1);
} else {
+3 -13
View File
@@ -1952,18 +1952,7 @@ u8 dComIfGs_getMixItemIndex(int i_no) {
}
void dComIfGp_setSelectItem(int i_selItemIdx) {
if (i_selItemIdx == SELECT_ITEM_DOWN) {
if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
u8 selItem_slotNo = dComIfGs_getSelectItemIndex(i_selItemIdx);
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, selItem_slotNo);
if (selItem_slotNo == 0xFF) {
dComIfGs_setSelectItemIndex(i_selItemIdx, 0xFF);
}
} else {
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, dItemNo_NONE_e);
}
} else if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
u8 item = dComIfGs_getItem(dComIfGs_getSelectItemIndex(i_selItemIdx), false);
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, item);
@@ -1978,7 +1967,8 @@ void dComIfGp_setSelectItem(int i_selItemIdx) {
u8 dComIfGp_getSelectItem(int i_selItemIdx) {
u8 playItem = g_dComIfG_gameInfo.play.getSelectItem(i_selItemIdx);
if ((i_selItemIdx == SELECT_ITEM_X || i_selItemIdx == SELECT_ITEM_Y) &&
if ((i_selItemIdx == SELECT_ITEM_X || i_selItemIdx == SELECT_ITEM_Y ||
i_selItemIdx == SELECT_ITEM_Z) &&
dComIfGs_getMixItemIndex(i_selItemIdx) != 0xFF)
{
u8 saveItem = dComIfGs_getItem(dComIfGs_getMixItemIndex(i_selItemIdx), false);
+4
View File
@@ -287,6 +287,10 @@ int dEvt_control_c::talkXyCheck(dEvt_order_c* order) {
mTalkXyType = 2;
itemIndex = SELECT_ITEM_Y;
break;
case dEvt_type_SHOWITEM_Z_e:
mTalkXyType = 3;
itemIndex = SELECT_ITEM_Z;
break;
#if PLATFORM_WII || PLATFORM_SHIELD
case 8:
mTalkXyType = 3;
+3 -1
View File
@@ -446,7 +446,7 @@ void dMenu_ItemExplain_c::move_proc() {
if (field_0xe7 == 0) {
return;
}
if (!mDoCPd_c::getTrigX(PAD_1) && !mDoCPd_c::getTrigY(PAD_1)) {
if (!mDoCPd_c::getTrigX(PAD_1) && !mDoCPd_c::getTrigY(PAD_1) && !mDoCPd_c::getTrigZ(PAD_1)) {
return;
}
}
@@ -460,6 +460,8 @@ void dMenu_ItemExplain_c::move_proc() {
mEndButton = 3;
} else if (mDoCPd_c::getTrigY(PAD_1)) {
mEndButton = 4;
} else if (mDoCPd_c::getTrigZ(PAD_1)) {
mEndButton = 5;
}
mStatus = 5;
Z2GetAudioMgr()->seStart(Z2SE_SY_EXP_WIN_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+45 -15
View File
@@ -134,7 +134,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
field_0x6a9 = 0;
mXButtonSlot = 0xff;
mYButtonSlot = 0xff;
field_0x6ac = 0xff;
mZButtonSlot = 0xff;
field_0x6ad = 0xff;
field_0x670 = 0;
field_0x67e = 0;
@@ -244,8 +244,8 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
if (dComIfGs_getSelectItemIndex(1) == dComIfGs_getLineUpItem(i)) {
mYButtonSlot = i;
}
if (dComIfGs_getSelectItemIndex(2) == dComIfGs_getWolfAbility(i)) {
field_0x6ac = i;
if (dComIfGs_getSelectItemIndex(2) == dComIfGs_getLineUpItem(i)) {
mZButtonSlot = i;
}
}
mRingRadiusH = g_ringHIO.mRingRadiusH;
@@ -259,7 +259,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
}
}
field_0x6be[i] = 0;
if (i == 2) {
if (i == MAX_SELECT_ITEM) {
setSelectItem(i, 0);
} else {
setSelectItem(i, 0x43);
@@ -977,8 +977,8 @@ void dMenu_Ring_c::setItem() {
} else {
uVar2 = dItemNo_NONE_e;
}
if (field_0x6ac != dItemNo_NONE_e) {
uVar3 = mItemSlots[field_0x6ac];
if (mZButtonSlot != dItemNo_NONE_e) {
uVar3 = mItemSlots[mZButtonSlot];
} else {
uVar3 = dItemNo_NONE_e;
}
@@ -1058,6 +1058,9 @@ void dMenu_Ring_c::setItem() {
mixItemIndex1 = dItemNo_NONE_e;
}
}
} else if (field_0x6b3 == 2) {
mZButtonSlot = mCurrentSlot;
uVar3 = mItemSlots[mZButtonSlot];
}
field_0x6b4[0] = uVar1;
field_0x6b4[1] = uVar2;
@@ -1073,7 +1076,7 @@ void dMenu_Ring_c::setItem() {
void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
for (int i = 0; i < 4; i++) {
if (i == 2) {
if (i == 4) {
setSelectItem(i, field_0x6b4[i]);
} else if (i == field_0x6cd) {
setSelectItem(i, getItem(field_0x6cb, 0));
@@ -1089,9 +1092,9 @@ void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
field_0x518[1] = mItemSlotPosX[mYButtonSlot];
field_0x528[1] = mItemSlotPosY[mYButtonSlot];
}
if (field_0x6ac != dItemNo_NONE_e) {
field_0x518[2] = mItemSlotPosX[field_0x6ac];
field_0x528[2] = mItemSlotPosY[field_0x6ac];
if (mZButtonSlot != dItemNo_NONE_e) {
field_0x518[2] = mItemSlotPosX[mZButtonSlot];
field_0x528[2] = mItemSlotPosY[mZButtonSlot];
}
if (field_0x6ad != dItemNo_NONE_e) {
field_0x518[3] = mItemSlotPosX[field_0x6ad];
@@ -1117,9 +1120,21 @@ void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
field_0x674[1] = 1;
#if TARGET_PC
mSelectItemSlideElapsed[1] = 0.0f;
#endif
}
} else if (field_0x6b3 == 2) {
field_0x538[0] = g_ringHIO.mUnselectItemScale;
field_0x538[1] = g_ringHIO.mSelectItemScale;
if (field_0x6b4[2] != dComIfGs_getSelectItemIndex(2) ||
field_0x6b8[2] != dComIfGs_getMixItemIndex(2))
{
field_0x674[2] = 1;
#if TARGET_PC
mSelectItemSlideElapsed[2] = 0.0f;
#endif
}
}
if (field_0x674[0] == 1) {
if (i_useVibrationM) {
dMeter2Info_set2DVibrationM();
@@ -1160,7 +1175,7 @@ void dMenu_Ring_c::setScale() {
}
setNameString(itemId);
setItemScale(i, g_ringHIO.mUnselectItemScale);
for (int j = 0; j < 2; j++) {
for (int j = 0; j < SELECT_ITEM_NUM; j++) {
if (j == field_0x6cf) {
setButtonScale(j, g_ringHIO.mSelectButtonScale);
} else {
@@ -1180,7 +1195,7 @@ void dMenu_Ring_c::setScale() {
} else {
setItemScale(i, g_ringHIO.mUnselectItemScale);
}
for (int j = 0; j < 2; j++) {
for (int j = 0; j < SELECT_ITEM_NUM; j++) {
setButtonScale(j, g_ringHIO.mUnselectButtonScale);
}
}
@@ -1214,6 +1229,7 @@ void dMenu_Ring_c::setNameString(u32 i_stringID) {
void dMenu_Ring_c::setActiveCursor() {
u8 item = dComIfGs_getItem(mItemSlots[mCurrentSlot], false);
if (mStatus == STATUS_WAIT && mOldStatus != STATUS_EXPLAIN_FORCE && mOldStatus != STATUS_EXPLAIN && mpItemExplain->getStatus() == 0) {
if (mDoCPd_c::getTrigR(PAD_1) && !mPlayerIsWolf && item != dItemNo_NONE_e) {
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
@@ -1244,7 +1260,21 @@ void dMenu_Ring_c::setActiveCursor() {
(this->*stick_init[mStatus])();
}
}
} else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1)) {
} else if (mDoCPd_c::getTrigZ(PAD_1) && !mPlayerIsWolf && item != dItemNo_NONE_e) {
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
setSelectItemForce(i);
}
field_0x6b3 = 2;
if (!checkCombineBomb(field_0x6b3)) {
setItem();
if (mpItemExplain->getStatus() == 0) {
setStatus(STATUS_WAIT);
(this->*stick_init[mStatus])();
}
}
} else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1) ||
mDoCPd_c::getTrigZ(PAD_1))
{
// If the player is a wolf or somehow manages to access an item slot with no item, error
Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
@@ -1660,7 +1690,7 @@ void dMenu_Ring_c::drawSelectItem() {
}
void dMenu_Ring_c::setSelectItemForce(int i_idx) {
if (i_idx == 2) {
if (i_idx == SELECT_ITEM_NUM) {
if (field_0x674[i_idx] != 0) {
dComIfGs_setSelectItemIndex(i_idx, field_0x6b4[i_idx]);
field_0x674[i_idx] = 0;
@@ -1669,7 +1699,7 @@ void dMenu_Ring_c::setSelectItemForce(int i_idx) {
#endif
}
} else if (field_0x674[i_idx] != 0) {
for (int i = 0; i < 2; i++) {
for (int i = 0; i < SELECT_ITEM_NUM; i++) {
dComIfGs_setMixItemIndex(i, field_0x6b8[i]);
dComIfGs_setSelectItemIndex(i, field_0x6b4[i]);
}
+2
View File
@@ -1533,6 +1533,8 @@ void dMeter2Info_c::setMiniGameItem(u8 i_minigameFlag) {
if (mMiniGameItemSetFlag != 3) {
dComIfGs_setItem(SLOT_4, dItemNo_BOW_e);
dComIfGp_setItem(SLOT_4, dItemNo_BOW_e);
dComIfGs_setMixItemIndex(SELECT_ITEM_Z, 0xFF);
dComIfGs_setSelectItemIndex(SELECT_ITEM_Z, 0xFF);
dComIfGs_setMixItemIndex(SELECT_ITEM_Y, 0xFF);
dComIfGs_setSelectItemIndex(SELECT_ITEM_Y, 0xFF);
dComIfGs_setMixItemIndex(SELECT_ITEM_X, SLOT_4);