mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-28 19:25:27 +00:00
Minor en_changer and en_bom_bowl_man documentation update (#2272)
* minor en_changer documentation update * rename EnChanger->chestOpened to selectedChest, formatting * update asm comment on EnChanger_OpenChests * use EnExItemType enum instead of EXITEM_COUNTER define
This commit is contained in:
parent
eee7ba9bd5
commit
b275588728
4 changed files with 22 additions and 19 deletions
|
@ -417,7 +417,7 @@ void EnBomBowlMan_ChooseShowPrize(EnBomBowlMan* this, PlayState* play) {
|
||||||
this->exItem = (EnExItem*)Actor_SpawnAsChild(
|
this->exItem = (EnExItem*)Actor_SpawnAsChild(
|
||||||
&play->actorCtx, &this->actor, play, ACTOR_EN_EX_ITEM, sPrizePosOffset[this->prizeIndex].x + 148.0f,
|
&play->actorCtx, &this->actor, play, ACTOR_EN_EX_ITEM, sPrizePosOffset[this->prizeIndex].x + 148.0f,
|
||||||
sPrizePosOffset[this->prizeIndex].y + 40.0f, sPrizePosOffset[this->prizeIndex].z + 300.0f, 0,
|
sPrizePosOffset[this->prizeIndex].y + 40.0f, sPrizePosOffset[this->prizeIndex].z + 300.0f, 0,
|
||||||
sPrizeRot[this->prizeIndex], 0, this->prizeIndex + EXITEM_COUNTER);
|
sPrizeRot[this->prizeIndex], 0, this->prizeIndex + EXITEM_BOMB_BAG_COUNTER);
|
||||||
|
|
||||||
if (!this->startedPlaying) {
|
if (!this->startedPlaying) {
|
||||||
this->bowlPit = (EnBomBowlPit*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play,
|
this->bowlPit = (EnBomBowlPit*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play,
|
||||||
|
|
|
@ -204,7 +204,7 @@ void EnChanger_Wait(EnChanger* this, PlayState* play) {
|
||||||
Flags_SetTreasure(play, this->rightChestNum & 0x1F);
|
Flags_SetTreasure(play, this->rightChestNum & 0x1F);
|
||||||
this->actionFunc = EnChanger_OpenChests;
|
this->actionFunc = EnChanger_OpenChests;
|
||||||
} else if (this->rightChest->unk_1F4 != 0) {
|
} else if (this->rightChest->unk_1F4 != 0) {
|
||||||
this->chestOpened = CHEST_RIGHT;
|
this->selectedChest = CHEST_RIGHT;
|
||||||
this->timer = 80;
|
this->timer = 80;
|
||||||
Flags_SetTreasure(play, this->leftChestNum & 0x1F);
|
Flags_SetTreasure(play, this->leftChestNum & 0x1F);
|
||||||
this->actionFunc = EnChanger_OpenChests;
|
this->actionFunc = EnChanger_OpenChests;
|
||||||
|
@ -216,8 +216,8 @@ void EnChanger_OpenChests(EnChanger* this, PlayState* play) {
|
||||||
f32 zPos;
|
f32 zPos;
|
||||||
f32 yPos;
|
f32 yPos;
|
||||||
f32 xPos;
|
f32 xPos;
|
||||||
s16 temp_s0;
|
s16 selectedChest;
|
||||||
s16 temp_s0_2;
|
s16 unopenedChestItemType;
|
||||||
EnBox* left;
|
EnBox* left;
|
||||||
EnBox* right;
|
EnBox* right;
|
||||||
|
|
||||||
|
@ -225,22 +225,26 @@ void EnChanger_OpenChests(EnChanger* this, PlayState* play) {
|
||||||
right = this->rightChest;
|
right = this->rightChest;
|
||||||
|
|
||||||
if (this->timer == 0) {
|
if (this->timer == 0) {
|
||||||
temp_s0_2 = temp_s0 = this->chestOpened; // Required to use the right registers
|
// `unopenedChestItemType` being set here is required for matching, but doesn't do anything useful
|
||||||
|
unopenedChestItemType = selectedChest = this->selectedChest;
|
||||||
|
|
||||||
switch (temp_s0_2) {
|
switch (selectedChest) {
|
||||||
case CHEST_LEFT:
|
case CHEST_LEFT:
|
||||||
xPos = right->dyna.actor.world.pos.x;
|
xPos = right->dyna.actor.world.pos.x;
|
||||||
yPos = right->dyna.actor.world.pos.y;
|
yPos = right->dyna.actor.world.pos.y;
|
||||||
zPos = right->dyna.actor.world.pos.z;
|
zPos = right->dyna.actor.world.pos.z;
|
||||||
|
|
||||||
if (this->rightChestGetItemId == GI_DOOR_KEY) {
|
if (this->rightChestGetItemId == GI_DOOR_KEY) {
|
||||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0, 0xF);
|
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0,
|
||||||
|
EXITEM_SMALL_KEY_CHEST);
|
||||||
Flags_SetSwitch(play, 0x32);
|
Flags_SetSwitch(play, 0x32);
|
||||||
} else {
|
} else {
|
||||||
temp_s0_2 = (s16)(this->rightChestGetItemId - GI_RUPEE_GREEN_LOSE) + EXITEM_CHEST;
|
unopenedChestItemType =
|
||||||
|
(s16)(this->rightChestGetItemId - GI_RUPEE_GREEN_LOSE) + EXITEM_GREEN_RUPEE_CHEST;
|
||||||
// "Open right treasure (chest)"
|
// "Open right treasure (chest)"
|
||||||
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 右宝開く ☆☆☆☆☆ %d\n" VT_RST, temp_s0_2);
|
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 右宝開く ☆☆☆☆☆ %d\n" VT_RST, unopenedChestItemType);
|
||||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0, temp_s0_2);
|
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0,
|
||||||
|
unopenedChestItemType);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CHEST_RIGHT:
|
case CHEST_RIGHT:
|
||||||
|
@ -249,13 +253,16 @@ void EnChanger_OpenChests(EnChanger* this, PlayState* play) {
|
||||||
zPos = left->dyna.actor.world.pos.z;
|
zPos = left->dyna.actor.world.pos.z;
|
||||||
|
|
||||||
if (this->leftChestGetItemId == GI_DOOR_KEY) {
|
if (this->leftChestGetItemId == GI_DOOR_KEY) {
|
||||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0, 0xF);
|
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0,
|
||||||
|
EXITEM_SMALL_KEY_CHEST);
|
||||||
Flags_SetSwitch(play, 0x32);
|
Flags_SetSwitch(play, 0x32);
|
||||||
} else {
|
} else {
|
||||||
temp_s0_2 = (s16)(this->leftChestGetItemId - 0x72) + 0xA;
|
unopenedChestItemType =
|
||||||
|
(s16)(this->leftChestGetItemId - GI_RUPEE_GREEN_LOSE) + EXITEM_GREEN_RUPEE_CHEST;
|
||||||
// "Open left treasure (chest)"
|
// "Open left treasure (chest)"
|
||||||
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 左宝開く ☆☆☆☆☆ %d\n" VT_RST, temp_s0_2);
|
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 左宝開く ☆☆☆☆☆ %d\n" VT_RST, unopenedChestItemType);
|
||||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0, temp_s0_2);
|
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0,
|
||||||
|
unopenedChestItemType);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ typedef struct EnChanger {
|
||||||
/* 0x015E */ s16 rightChestNum;
|
/* 0x015E */ s16 rightChestNum;
|
||||||
/* 0x0160 */ s16 leftChestGetItemId;
|
/* 0x0160 */ s16 leftChestGetItemId;
|
||||||
/* 0x0162 */ s16 rightChestGetItemId;
|
/* 0x0162 */ s16 rightChestGetItemId;
|
||||||
/* 0x0164 */ s16 chestOpened;
|
/* 0x0164 */ s16 selectedChest;
|
||||||
/* 0x0166 */ s16 timer;
|
/* 0x0166 */ s16 timer;
|
||||||
/* 0x0168 */ s16 roomChestsOpened;
|
/* 0x0168 */ s16 roomChestsOpened;
|
||||||
} EnChanger; // size = 0x016C
|
} EnChanger; // size = 0x016C
|
||||||
|
|
|
@ -52,8 +52,4 @@ typedef enum EnExItemType {
|
||||||
/* 19 */ EXITEM_BULLET_BAG
|
/* 19 */ EXITEM_BULLET_BAG
|
||||||
} EnExItemType;
|
} EnExItemType;
|
||||||
|
|
||||||
#define EXITEM_COUNTER 5
|
|
||||||
#define EXITEM_CHEST 10
|
|
||||||
#define EXITEM_MAGIC 16
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue