Merge branch 'master' into tilemap-docs

This commit is contained in:
octorock
2023-12-28 14:59:23 +01:00
495 changed files with 14619 additions and 16191 deletions
+3 -3
View File
@@ -445,7 +445,7 @@ void AcroBandit_Type1Action4(Entity* this) {
}
}
if (this->direction & 0xf)
if (this->direction & (0x3 | DirectionEast | DIR_DIAGONAL))
this->spriteSettings.flipX = (this->direction >> 4 ^ 1);
ProcessMovement0(this);
@@ -486,7 +486,7 @@ void AcroBandit_Type1Action6(Entity* this) {
this->action = 7;
dir = fallDirections[this->field_0x74.HALF.LO * 5 + this->type2];
this->direction = dir;
if (dir >= 0x10) {
if (dir >= DirectionSouth) {
this->spriteSettings.flipX = 1;
} else {
this->spriteSettings.flipX = 0;
@@ -570,7 +570,7 @@ static void sub_080322E8(Entity* this) {
}
} else {
u8 tmp = this->direction;
if (tmp & 0xF) {
if (tmp & (0x3 | DirectionEast | DIR_DIAGONAL)) {
tmp >>= 4;
tmp ^= 1;
if (tmp != this->spriteSettings.flipX) {
+4 -3
View File
@@ -105,7 +105,8 @@ void sub_080218CC(Entity* this) {
if (this->subAction == 0) {
this->subAction = 1;
this->spriteSettings.draw = 1;
this->direction = ((sub_08049F84(this, 1) ^ 0x10) + gUnk_080CB5DC[Random() & 7]) & 0x1f;
this->direction = ((sub_08049F84(this, 1) ^ 0x10) + gUnk_080CB5DC[Random() & 7]) &
(0x3 | DIR_DIAGONAL | DirectionNorth | DirectionEast | DirectionSouth | DirectionWest);
this->speed = 0x100;
this->zVelocity = Q_16_16(1.125);
}
@@ -244,9 +245,9 @@ void sub_08021B64(Entity* this) {
this->zVelocity = Q_16_16(1.0);
((u8*)&this->field_0x86)[1] = 0;
if (gPlayerEntity.direction != 0xff) {
this->direction = 0x10 ^ gPlayerEntity.direction;
this->direction = DirectionSouth ^ gPlayerEntity.direction;
} else {
this->direction = (gPlayerEntity.animationState << 2) ^ 0x10;
this->direction = (gPlayerEntity.animationState << 2) ^ DirectionSouth;
}
InitializeAnimation(this, 5);
} else {
+4 -2
View File
@@ -10,18 +10,20 @@
#include "room.h"
#include "object.h"
#define DIR_NOT_MOVING_CHECK 0x80
void BladeTrap(Entity* this) {
if (this->action == 0) {
this->action = 1;
this->child = GetCurrentRoomProperty(this->type);
UpdateRailMovement(this, (u16**)&this->child, &this->field_0x74.HWORD);
}
if (!(this->direction & 0x80)) {
if (!(this->direction & DIR_NOT_MOVING_CHECK)) {
LinearMoveUpdate(this);
}
if (!(--this->field_0x74.HWORD)) {
if (!(this->direction & 0x80)) {
if (!(this->direction & DIR_NOT_MOVING_CHECK)) {
EnqueueSFX(SFX_METAL_CLINK);
}
UpdateRailMovement(this, (u16**)&this->child, &this->field_0x74.HWORD);
+10 -10
View File
@@ -62,7 +62,7 @@ void Bobomb_OnCollision(Entity* this) {
this->zVelocity = Q_16_16(1.5);
this->speed = 0;
this->field_0x80.HALF.HI = 1;
InitializeAnimation(this, this->direction >> 4 | 6);
InitializeAnimation(this, this->direction >> 4 | IdleWest);
break;
}
}
@@ -123,7 +123,7 @@ void sub_0802C83C(Entity* this) {
} else {
this->field_0x82.HALF.LO = 2;
this->timer = 120;
InitializeAnimation(this, (this->direction >> 4) | 6);
InitializeAnimation(this, (this->direction >> 4) | IdleWest);
COLLISION_OFF(this);
this->hitType = 0x6e;
}
@@ -147,7 +147,7 @@ void sub_0802C8D8(Entity* this) {
this->action = 1;
this->timer = 60;
this->subtimer = 0;
this->direction = (Random() & 0x18) | 4;
this->direction = (Random() & 0x18) | DIR_DIAGONAL;
this->carryFlags = 0;
this->gustJarFlags = 0x12;
this->field_0x82.HALF.LO = 0;
@@ -163,7 +163,7 @@ void sub_0802C91C(Entity* this) {
if (this->field_0x82.HALF.LO) {
if (this->collisions != COL_NONE) {
sub_0800417E(this, this->collisions);
InitializeAnimation(this, (this->direction >> 4) | 2);
InitializeAnimation(this, (this->direction >> 4) | IdleEast);
}
if (--this->timer == 0) {
sub_0802CBC4(this);
@@ -180,7 +180,7 @@ void sub_0802C91C(Entity* this) {
}
if (--this->timer == 0) {
this->timer = 60;
this->direction = (this->direction + 8) & 0x1c;
this->direction = (this->direction + 8) & (DirectionWest | DIR_DIAGONAL);
InitializeAnimation(this, this->direction >> 4);
}
}
@@ -196,7 +196,7 @@ void sub_0802C9D0(Entity* this) {
this->spritePriority.b1 = 0;
this->field_0x82.HALF.HI = 1;
sub_0802CC18(this);
InitializeAnimation(this, (this->direction >> 4) | 6);
InitializeAnimation(this, (this->direction >> 4) | IdleWest);
GetNextFrame(this);
}
@@ -210,7 +210,7 @@ void sub_0802CA10(Entity* this) {
}
} else {
this->field_0x82.HALF.HI = 2;
this->direction = (((gPlayerEntity.animationState) << 2) | 4) & 0x1c;
this->direction = (((gPlayerEntity.animationState) << 2) | IdleSouth) & (DIR_DIAGONAL | DirectionWest);
sub_0802CC18(this);
GetNextFrame(this);
}
@@ -234,8 +234,8 @@ void sub_0802CA94(Entity* this) {
this->speed = 0;
this->field_0x82.HALF.HI = 0;
this->field_0x80.HALF.HI = 0;
this->direction = ((gPlayerEntity.animationState << 2) | 4) & 0x1c;
InitializeAnimation(this, (this->direction >> 4) | 6);
this->direction = ((gPlayerEntity.animationState << 2) | IdleSouth) & (DirectionWest | DIR_DIAGONAL);
InitializeAnimation(this, (this->direction >> 4) | IdleWest);
}
void sub_0802CAF8(Entity* this) {
@@ -264,7 +264,7 @@ void sub_0802CB68(Entity* this) {
this->action = 1;
this->subAction = 0;
this->direction = Random() & 0x18;
this->direction |= 4;
this->direction |= IdleSouth;
COLLISION_ON(this);
if (this->field_0x82.HALF.LO) {
this->timer = 200;
+3 -3
View File
@@ -141,10 +141,10 @@ void sub_0802A9A8(Entity* this) {
this->field_0x82.HWORD = 1;
if (this->field_0x80.HALF.LO) {
this->x.HALF.HI = gRoomControls.scroll_x - 0x10;
this->direction = 8;
this->direction = DirectionEast;
} else {
this->x.HALF.HI = gRoomControls.scroll_x + 0x100;
this->direction = 0x18;
this->direction = DirectionWest;
}
this->y.HALF.HI = gRoomControls.scroll_y + 0x40;
this->timer = 128;
@@ -221,7 +221,7 @@ void sub_0802AAC0(Entity* this) {
#ifndef EU
this->field_0x78.HALF.LO = 0;
this->field_0x78.HALF.HI = 4;
this->direction = 0xff;
this->direction = DIR_NONE;
#endif
InitializeAnimation(this, 0);
}
+55 -55
View File
@@ -25,14 +25,14 @@ void sub_08029078(Entity*);
void sub_080290E0(Entity*, u32);
void sub_080290FC(Entity*);
bool32 sub_0802915C(Entity*);
bool32 sub_080291DC(Entity*);
bool32 BusinessScrub_CheckRefillFitsBag(Entity*);
void sub_0802922C(Entity*);
void sub_0802925C(Entity*);
extern const struct SalesOffering gUnk_080CC954[];
extern const u8 kinstoneTypes[];
extern void (*const BusinessScrub_Functions[])(Entity*);
extern void (*const gUnk_080CC9E0[])(Entity*);
extern void (*const BusinessScrub_Actions[])(Entity*);
extern const u8 gUnk_080CCA04[];
struct SalesOffering {
@@ -42,8 +42,8 @@ struct SalesOffering {
u16 field_0x4;
u16 field_0x6;
u8 offeredItem; /**< @see Item */
u8 field_0x9;
u16 field_0xa;
u8 item_subtype;
u16 local_flag;
};
void BusinessScrub(Entity* this) {
@@ -51,7 +51,7 @@ void BusinessScrub(Entity* this) {
}
void BusinessScrub_OnTick(Entity* this) {
gUnk_080CC9E0[this->action](this);
BusinessScrub_Actions[this->action](this);
}
void BusinessScrub_OnCollision(Entity* this) {
@@ -75,12 +75,12 @@ void BusinessScrub_OnGrabbed(Entity* this) {
/* ... */
}
void sub_08028994(Entity* this) {
void BusinessScrub_Action0(Entity* this) {
this->subtimer = 0;
this->field_0x78.HWORD = this->x.HALF.HI;
this->field_0x7a.HWORD = this->y.HALF.HI;
this->animationState = 0;
this->direction = 0x10;
this->direction = DirectionSouth;
sub_08028E9C(this);
if ((*(u8*)this->field_0x7c.WORD & 1) || CheckFlags(this->field_0x86.HWORD)) {
this->action = 4;
@@ -97,7 +97,7 @@ void sub_08028994(Entity* this) {
}
}
void sub_08028A48(Entity* this) {
void BusinessScrub_Action1(Entity* this) {
if (this->timer != 0) {
this->timer--;
} else if (sub_08028F98(this, 0)) {
@@ -107,7 +107,7 @@ void sub_08028A48(Entity* this) {
}
}
void sub_08028A74(Entity* this) {
void BusinessScrub_Action2(Entity* this) {
u32 unk;
GetNextFrame(this);
@@ -185,7 +185,7 @@ void sub_08028A74(Entity* this) {
}
}
void sub_08028BC4(Entity* this) {
void BusinessScrub_Action3(Entity* this) {
Entity* iVar1;
switch (this->subAction) {
@@ -227,7 +227,7 @@ void sub_08028BC4(Entity* this) {
extern void sub_0804AA1C(Entity*);
void sub_08028F0C(Entity*);
void sub_08028C84(Entity* this) {
void BusinessScrub_Action4(Entity* this) {
if (--this->timer == 0) {
this->timer = 48;
if (this->subtimer) {
@@ -244,21 +244,21 @@ void sub_08028C84(Entity* this) {
sub_08028F0C(this);
}
void sub_08028CE8(Entity* this) {
void BusinessScrub_Action5(Entity* this) {
struct SalesOffering* offer = (struct SalesOffering*)this->field_0x7c.WORD;
u32 subtype;
if ((gMessage.doTextBox & 0x7f) == 0 && sub_0802915C(this) && !sub_08056338()) {
if (offer->price <= gSave.stats.rupees) {
if (sub_080291DC(this)) {
if (BusinessScrub_CheckRefillFitsBag(this)) {
/* Bag full. */
MessageFromTarget(TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x04));
SetPlayerControl(0);
} else {
ModRupees(-offer->price);
switch (offer->field_0x0 >> 2) {
case 0:
subtype = offer->field_0x9;
case 0: // random kinstone
subtype = offer->item_subtype;
if (subtype == KINSTONE_RANDOM) {
subtype = kinstoneTypes[Random() & 7];
}
@@ -273,13 +273,13 @@ void sub_08028CE8(Entity* this) {
SetLocalFlag(KS_B06);
#endif
return;
case 1:
CreateItemEntity(offer->offeredItem, offer->field_0x9, 0);
case 1: // refill, bottle, specific kinstone
CreateItemEntity(offer->offeredItem, offer->item_subtype, 0);
this->timer = 4;
sub_0802922C(this);
return;
case 2:
CreateItemEntity(offer->offeredItem, offer->field_0x9, 0);
case 2: // grip ring
CreateItemEntity(offer->offeredItem, offer->item_subtype, 0);
this->timer = 8;
sub_0802922C(this);
return;
@@ -298,7 +298,7 @@ void sub_08028CE8(Entity* this) {
sub_080290E0(this, 0);
}
void sub_08028DE8(Entity* this) {
void BusinessScrub_Action6(Entity* this) {
if (gPlayerEntity.action == PLAYER_ITEMGET) {
if (this->field_0x80.HALF.HI == 0) {
SetPlayerControl(1);
@@ -316,15 +316,15 @@ void sub_08028DE8(Entity* this) {
}
}
void sub_08028E40(Entity* this) {
void BusinessScrub_Action7(Entity* this) {
if ((gMessage.doTextBox & 0x7f) == 0) {
struct SalesOffering* offer = (struct SalesOffering*)this->field_0x7c.WORD;
this->action = 4;
this->subAction = gMessage.doTextBox & 0x7f;
this->timer = 1;
if (CheckLocalFlag(offer->field_0xa) == 0) {
SetLocalFlag(offer->field_0xa);
if (!CheckLocalFlag(offer->local_flag)) {
SetLocalFlag(offer->local_flag);
}
SetPlayerControl(0);
}
@@ -332,7 +332,7 @@ void sub_08028E40(Entity* this) {
GetNextFrame(this);
}
void sub_08028E84(Entity* this) {
void BusinessScrub_Action8(Entity* this) {
if (UpdateFuseInteraction(this)) {
this->action = 4;
this->timer = 1;
@@ -344,7 +344,7 @@ bool32 sub_08029198(const struct SalesOffering*);
void sub_08028E9C(Entity* this) {
const struct SalesOffering* offer = &gUnk_080CC954[this->type];
if (sub_08029198(offer) && (offer->field_0x0 & 2)) {
offer = &gUnk_080CC954[offer->field_0xa];
offer = &gUnk_080CC954[offer->local_flag];
}
this->field_0x7c.WORD = (u32)offer;
this->field_0x80.HALF.LO = 0;
@@ -353,21 +353,21 @@ void sub_08028E9C(Entity* this) {
void sub_08028EDC(Entity* this) {
const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD;
if (sub_08029198(offer) && (offer->field_0x0 & 2)) {
offer = &gUnk_080CC954[offer->field_0xa];
offer = &gUnk_080CC954[offer->local_flag];
this->field_0x7c.WORD = (u32)offer;
}
}
void sub_08028F0C(Entity* this) {
if (this->interactType == 2) {
if (this->interactType == INTERACTION_FUSE) {
this->action = 8;
this->interactType = 0;
sub_0806F118(this);
} else if (this->interactType != 0) {
this->interactType = INTERACTION_NONE;
InitializeNPCFusion(this);
} else if (this->interactType != INTERACTION_NONE) {
u16 dialog;
const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD;
this->interactType = 0;
this->interactType = INTERACTION_NONE;
sub_0804AA1C(this);
this->direction = (GetAnimationState(this) << 3);
sub_080290E0(this, 3);
@@ -456,8 +456,8 @@ void sub_080290FC(Entity* this) {
if (this->timer != 0) {
this->timer--;
if ((this->timer < 16) && ((this->timer & 1) == 0)) {
s32 sVar3 = ((this->direction & 0x10) != 0) ? -1 : 1;
if ((this->direction & 8) != 0) {
s32 sVar3 = (this->direction & DirectionSouth) ? -1 : 1;
if (this->direction & DirectionEast) {
this->x.HALF.HI += ((this->timer & 8) != 0) ? -sVar3 : sVar3;
} else {
this->y.HALF.HI += ((this->timer & 8) != 0) ? sVar3 : -sVar3;
@@ -502,7 +502,7 @@ bool32 sub_08029198(const struct SalesOffering* offer) {
return 0;
}
} else {
tmp = CheckLocalFlag(offer->field_0xa);
tmp = CheckLocalFlag(offer->local_flag);
}
if (tmp == 0) {
@@ -512,7 +512,7 @@ bool32 sub_08029198(const struct SalesOffering* offer) {
return TRUE;
}
bool32 sub_080291DC(Entity* this) {
bool32 BusinessScrub_CheckRefillFitsBag(Entity* this) {
const struct SalesOffering* offer = (const struct SalesOffering*)this->field_0x7c.WORD;
switch (offer->offeredItem) {
@@ -540,7 +540,7 @@ void sub_0802922C(Entity* this) {
SetGlobalFlag(AKINDO_BOTTLE_SELL);
// It only matters here that ITEM_BOMBS10 is here and some item that is higher
// Not sure about the original code
case ITEM_ARROWS10:
case ITEM_ARROWS30:
case ITEM_BOMBS10:
default:
sub_080290E0(this, 3);
@@ -564,18 +564,18 @@ void sub_08029270(Entity* this) {
// clang-format off
const struct SalesOffering gUnk_080CC954[] = {
{0x06, 0x00, 0xffff, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0f), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x09, 0xff, 0x0001},
{0x04, 0x00, 0x001e, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0e), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x6f, 0xff, 0xffff},
{0x04, 0x00, 0x001e, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0b), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x6c, 0xff, 0xffff},
{0x08, 0x00, 0x0028, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0c), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), 0x44, 0xff, 0xffff},
{0x00, 0x00, 0x0064, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0xff, 0xffff},
{0x04, 0x00, 0x0014, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x10), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), 0x1c, 0xff, 0xffff},
{0x06, 0x00, 0xffff, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0f), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_BOW, 0xff, 0x0001},
{0x04, 0x00, 30, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0e), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_ARROWS30, 0xff, 0xffff},
{0x04, 0x00, 30, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0b), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_BOMBS10, 0xff, 0xffff},
{0x08, 0x00, 40, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0c), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), ITEM_GRIP_RING, 0xff, 0xffff},
{0x00, 0x00, 100, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0xff, 0xffff},
{0x04, 0x00, 20, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x10), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x11), ITEM_BOTTLE1, 0xff, 0xffff},
{0x0c, 0x00, 0xffff, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x12), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x13), 0xff, 0xff, 0x0046},
{0x04, 0x00, 0x0064, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x13), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0x75, 0xffff},
{0x04, 0x00, 100, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x13), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0x75, 0xffff},
#ifdef EU
{0x00, 0x00, 0x0064, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0xff, 0xffff},
{0x00, 0x00, 100, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0xff, 0xffff},
#else
{0x00, 0x00, 0x00C8, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), 0x5c, 0xff, 0xffff},
{0x00, 0x00, 200, TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x0d), TEXT_INDEX(TEXT_BUSINESS_SCRUB, 0x02), ITEM_KINSTONE, 0xff, 0xffff},
#endif
};
@@ -590,16 +590,16 @@ void (*const BusinessScrub_Functions[])(Entity*) = {
BusinessScrub_OnGrabbed,
};
void (*const gUnk_080CC9E0[])(Entity*) = {
sub_08028994,
sub_08028A48,
sub_08028A74,
sub_08028BC4,
sub_08028C84,
sub_08028CE8,
sub_08028DE8,
sub_08028E40,
sub_08028E84,
void (*const BusinessScrub_Actions[])(Entity*) = {
BusinessScrub_Action0,
BusinessScrub_Action1,
BusinessScrub_Action2,
BusinessScrub_Action3,
BusinessScrub_Action4,
BusinessScrub_Action5,
BusinessScrub_Action6,
BusinessScrub_Action7,
BusinessScrub_Action8,
};
const u8 gUnk_080CCA04[] = {
+3 -3
View File
@@ -66,7 +66,7 @@ void sub_08045C3C(BusinessScrubPrologueEntity* this) {
super->subtimer = 0;
this->unk_78 = super->x.HALF.HI;
this->unk_7a = super->y.HALF.HI;
super->animationState = 0;
super->animationState = IdleNorth;
super->direction = 0x10;
super->action = 5;
super->timer = 120;
@@ -75,7 +75,7 @@ void sub_08045C3C(BusinessScrubPrologueEntity* this) {
sub_08046030(this, 0);
sub_08095C48(super);
StartCutscene(super, script_BusinessScrubIntro);
sub_0807DD50(super);
InitScriptForNPC(super);
}
void sub_08045CA4(BusinessScrubPrologueEntity* this) {
@@ -200,7 +200,7 @@ void sub_08045E14(BusinessScrubPrologueEntity* this) {
}
void sub_08045EC8(BusinessScrubPrologueEntity* this) {
sub_0807DD94(super, 0);
ExecuteScriptAndHandleAnimation(super, NULL);
}
void sub_08045ED4(BusinessScrubPrologueEntity* this) {
+1 -1
View File
@@ -34,7 +34,7 @@ void sub_0802B540(Entity* this) {
this->timer--;
} else {
u32 direction = sub_0804A024(this, 1, 0xc);
if (direction != 0xff) {
if (direction != DIR_NONE) {
this->action = 2;
this->speed = 0x40;
this->direction = direction;
+1 -1
View File
@@ -554,7 +554,7 @@ void sub_080262A8(ChuchuBossEntity* this) {
super->timer = 1;
sub_080276F4(super, 6, 1);
if (super->type2 == 0) {
gPlayerState.animation = 0x104;
gPlayerState.animation = ANIM_WALK;
this->unk_84->unk_03 = 1;
} else {
this->unk_7c = 0;
+4 -3
View File
@@ -119,10 +119,11 @@ void sub_08022AA4(Entity* this) {
if (!sub_08049FA0(this) && (rand >> 8) & 3) {
this->direction = sub_08049EE4(this);
} else {
this->direction = (rand >> 0x10) & 0x1f;
this->direction =
(rand >> 0x10) & (0x3 | DIR_DIAGONAL | DirectionNorth | DirectionEast | DirectionSouth | DirectionWest);
}
if (this->direction & 0xf)
if (this->direction & (0x3 | DirectionEast | DIR_DIAGONAL))
this->spriteSettings.flipX = (this->direction >> 4) ^ 1;
}
@@ -144,7 +145,7 @@ void sub_08022B44(Entity* this) {
this->zVelocity = Q_16_16(0.75);
this->direction = GetFacingDirection(this, &gPlayerEntity);
if (this->direction & 0xf)
if (this->direction & (0x3 | DIR_DIAGONAL | DirectionEast))
this->spriteSettings.flipX = (this->direction >> 4) ^ 1;
EnqueueSFX(SFX_VO_CHEEP);
+8 -8
View File
@@ -37,9 +37,9 @@ typedef struct {
#define DUST_SPRITE_INDEX 0x1eb
#endif
void sub_08044134(DustEntity*);
void sub_0804414C(DustEntity*);
void sub_0804415C(DustEntity*);
void Dust_OnTick(DustEntity*);
void Dust_OnCollision(DustEntity*);
void Dust_OnGrabbed(DustEntity*);
void sub_080441E0(DustEntity*);
void sub_080442A0(DustEntity*);
void sub_080441CC(DustEntity*);
@@ -56,15 +56,15 @@ extern void* sub_080AD8F0(u32, u32);
extern const s8 gUnk_08126EE4[];
void (*const Dust_Functions[])(Entity*) = {
(EntityActionPtr)sub_08044134, (EntityActionPtr)sub_0804414C, GenericKnockback, GenericDeath, GenericConfused,
(EntityActionPtr)sub_0804415C,
(EntityActionPtr)Dust_OnTick, (EntityActionPtr)Dust_OnCollision, GenericKnockback, GenericDeath, GenericConfused,
(EntityActionPtr)Dust_OnGrabbed,
};
void Dust(Entity* this) {
Dust_Functions[GetNextFunction(this)](this);
}
void sub_08044134(DustEntity* this) {
void Dust_OnTick(DustEntity* this) {
static void (*const Dust_Actions[])(DustEntity*) = {
sub_080441E0,
sub_080442A0,
@@ -72,11 +72,11 @@ void sub_08044134(DustEntity* this) {
Dust_Actions[super->action](this);
}
void sub_0804414C(DustEntity* this) {
void Dust_OnCollision(DustEntity* this) {
EnemyFunctionHandlerAfterCollision(super, Dust_Functions);
}
void sub_0804415C(DustEntity* this) {
void Dust_OnGrabbed(DustEntity* this) {
static void (*const Dust_SubActions[])(DustEntity*) = {
sub_080441BC,
sub_080441C4,
+1 -1
View File
@@ -108,7 +108,7 @@ void Enemy4D_Init(Enemy4DEntity* this) {
super->child = projectile;
COLLISION_ON(super);
super->spriteSettings.draw = TRUE;
super->animationState = 2;
super->animationState = IdleEast;
this->unk_7b = 0;
this->unk_7c = 0;
this->unk_7e = 0x28;
+32 -33
View File
@@ -75,51 +75,49 @@ void Enemy50_OnTick(Enemy50Entity* this) {
Enemy50_Actions[super->action](this);
}
void sub_08040B9C(Enemy50Entity* this) {
void Enemy50_OnCollision(Enemy50Entity* this) {
if (super->action == 8 || super->action == 9) {
super->animationState = 0xff;
InitializeAnimation(super, (super->knockbackDirection >> 4 ^ 1) + 1);
sub_08041134(this);
sub_0803F6EC(this);
}
if (super->hitType == 0x25) {
if (super->hitType == 0x25 && super->contactFlags == 0x80) {
super->action = 8;
InitializeAnimation(super, 3);
} else {
if (super->contactFlags == 0x80) {
super->action = 8;
InitializeAnimation(super, 3);
goto _08040C9C;
this->unk_7c = 0x78;
sub_08041128(this);
}
} else if (super->contactFlags == 0x80) {
this->unk_7c = 0x78;
sub_08041128(this);
}
if (super->contactFlags == 0x9d) {
super->zVelocity = Q_16_16(1.5);
}
if (super->confusedTime != 0) {
super->animationState = super->knockbackDirection >> 4;
InitializeAnimation(super, super->animationState + 7);
Create0x68FX(super, FX_STARS);
}
if (super->health != this->unk_7a) {
if (super->type == 0) {
if (super->contactFlags == 0x9d) {
super->zVelocity = Q_16_16(1.5);
}
if (super->confusedTime != 0) {
super->animationState = super->knockbackDirection >> 4;
InitializeAnimation(super, super->animationState + 7);
} else {
if (super->iframes > 0) {
*((u8*)&super->iframes) |= 0x80;
}
super->flags |= 0x80;
super->health = 0xff;
super->action = 0xa;
super->timer = 60;
Create0x68FX(super, FX_STARS);
}
if (super->health != this->unk_7a) {
if (super->type == 0) {
super->animationState = super->knockbackDirection >> 4;
InitializeAnimation(super, super->animationState + 7);
} else {
if (super->iframes > 0) {
*((u8*)&super->iframes) |= 0x80;
}
super->flags |= 0x80;
super->health = 0xff;
super->action = 0xa;
super->timer = 60;
}
this->unk_7a = super->health;
}
this->unk_7a = super->health;
}
_08040C9C:
EnemyFunctionHandlerAfterCollision(super, Enemy50_Functions);
}
void sub_08040CAC(Enemy50Entity* this) {
void Enemy50_OnKnockback(Enemy50Entity* this) {
GetNextFrame(super);
GenericKnockback2(super);
if (super->type == 0) {
@@ -137,7 +135,7 @@ void sub_08040CAC(Enemy50Entity* this) {
}
}
void sub_08040D30(Enemy50Entity* this) {
void Enemy50_OnConfused(Enemy50Entity* this) {
if (super->animIndex != 7 && super->animIndex != 8) {
InitializeAnimation(super, super->animationState + 7);
}
@@ -153,7 +151,7 @@ void sub_08040D30(Enemy50Entity* this) {
}
}
void sub_08040D90(Enemy50Entity* this) {
void Enemy50_OnGrabbed(Enemy50Entity* this) {
if (sub_0806F520(super)) {
Enemy50_SubActions[super->subAction](this);
} else {
@@ -436,7 +434,8 @@ bool32 sub_08041300(Enemy50Entity* this) {
#endif
void (*const Enemy50_Functions[])(Enemy50Entity*) = {
Enemy50_OnTick, sub_08040B9C, sub_08040CAC, (void (*)(Enemy50Entity*))GenericDeath, sub_08040D30, sub_08040D90,
Enemy50_OnTick, Enemy50_OnCollision, Enemy50_OnKnockback, (void (*)(Enemy50Entity*))GenericDeath,
Enemy50_OnConfused, Enemy50_OnGrabbed,
};
void (*const Enemy50_Actions[])(Enemy50Entity*) = {
Enemy50_Init, Enemy50_Action1, Enemy50_Action2, Enemy50_Action3, Enemy50_Action4, Enemy50_Action5,
+4 -4
View File
@@ -146,7 +146,7 @@ void Eyegore_OnGrabbed(EyegoreEntity* this) {
void Eyegore_Init(EyegoreEntity* this) {
sub_0804A720(super);
super->action = 1;
super->animationState = 2;
super->animationState = IdleEast;
super->x.HALF.HI &= 0xfff0;
super->y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 0xc;
this->unk_6d |= 8;
@@ -198,7 +198,7 @@ void Eyegore_Action3(EyegoreEntity* this) {
GetNextFrame(super);
if ((super->frame & ANIM_DONE) != 0) {
super->flags |= ENT_COLLIDE;
super->animationState = 2;
super->animationState = IdleEast;
sub_08030E58(this);
InitializeAnimation(super, 2);
sub_08030FB4(this);
@@ -242,7 +242,7 @@ void Eyegore_Action5(EyegoreEntity* this) {
GetNextFrame(super);
switch (super->frame & 7) {
case 1:
if (super->animationState != 2) {
if (super->animationState != IdleEast) {
if (super->animationState >= 3) {
this->unk_7f = (super->animationState - 1) & 3;
} else {
@@ -266,7 +266,7 @@ void Eyegore_Action5(EyegoreEntity* this) {
if (sub_08049FDC(super, 1)) {
sub_08030E58(this);
} else {
if (super->animationState == 2) {
if (super->animationState == IdleEast) {
super->action = 6;
super->flags &= ~ENT_COLLIDE;
InitializeAnimation(super, 0xe);
+1 -1
View File
@@ -117,7 +117,7 @@ void sub_08045524(Entity* this) {
this->zVelocity = Q_16_16(1.75);
tmp = sub_0804A024(this, 1, 8);
if (tmp != 0xff && (Random() & 3) == 0) {
if (tmp != DIR_NONE && (Random() & 3) == 0) {
this->timer = Random() & 3;
this->direction = DirectionRound(tmp);
} else {
+1 -1
View File
@@ -1128,7 +1128,7 @@ void sub_0802E300(GleerokEntity* this) {
this->unk_79 &= ~0x80;
heap = this->unk_84;
dir = sub_0806F5A4(GetFacingDirection(super, &gPlayerEntity)) << 3;
dir = GetAnimationStateForDirection4(GetFacingDirection(super, &gPlayerEntity)) << 3;
index = 0;
ptr2 = &this->unk_80;
tmp = 0;
+2 -2
View File
@@ -164,8 +164,8 @@ void sub_08046930(GyorgMaleEntity* this) {
return;
super->subAction = 1;
super->timer = 1;
super->animationState = 0;
super->direction = 0;
super->animationState = IdleNorth;
super->direction = IdleNorth;
#ifdef EU
super->speed = 0x200;
#else
+2 -2
View File
@@ -215,9 +215,9 @@ void sub_0802BE80(Entity* this) {
}
void sub_0802BEBC(Entity* this) {
this->direction ^= 0x10;
this->direction ^= DirectionSouth;
ProcessMovement2(this);
this->direction ^= 0x10;
this->direction ^= DirectionSouth;
if (!sub_080044EC(this, Q_16_16(0.125))) {
sub_0802C1C0(this);
}
+2 -2
View File
@@ -89,7 +89,7 @@ void sub_0803CD6C(Entity* this) {
void sub_0803CDA8(Entity* this) {
UpdateAnimationSingleFrame(this);
if ((this->direction & 0x80) == 0) {
if (!(this->direction & DIR_NOT_MOVING_CHECK)) {
LinearMoveUpdate(this);
}
@@ -123,7 +123,7 @@ void sub_0803CE14(Entity* this) {
UpdateRailMovement(this, (u16**)&this->child, &this->field_0x74.HWORD);
direction = this->direction;
if (direction & 0x80) {
if (direction & DIR_NOT_MOVING_CHECK) {
return;
}
+2 -1
View File
@@ -71,7 +71,8 @@ void Leever_Idle(Entity* this) {
if (Leever_PlayerInRange(this, Random() & 0x1f)) {
this->action = 2;
this->spriteSettings.draw = TRUE;
this->direction = (GetFacingDirection(this, gUnk_020000B0) + gLeeverDrift[Random() & 1]) & 0x1f;
this->direction =
(GetFacingDirection(this, gUnk_020000B0) + gLeeverDrift[Random() & 1]) & (0x3 | DirectionNorthWest);
InitializeAnimation(this, LeeverAnimation_DigUp);
UpdateSpriteForCollisionLayer(this);
} else {
+8 -8
View File
@@ -369,16 +369,16 @@ void sub_08029EEC(Entity* this) {
void sub_08029F0C(Entity* this) {
switch (this->direction >> 3) {
case 0:
case 0: // UP
this->field_0x78.HWORD = this->y.HALF.HI - 0x10;
break;
case 1:
case 1: // RIGHT
this->field_0x78.HWORD = this->x.HALF.HI + 0x10;
break;
case 2:
case 2: // DOWN
this->field_0x78.HWORD = this->y.HALF.HI + 0x10;
break;
case 3:
case 3: // LEFT
this->field_0x78.HWORD = this->x.HALF.HI - 0x10;
break;
}
@@ -386,25 +386,25 @@ void sub_08029F0C(Entity* this) {
bool32 sub_08029F48(Entity* this) {
switch (this->direction >> 3) {
case 0:
case 0: // UP
if (this->y.HALF.HI <= this->field_0x78.HWORD) {
this->y.HALF.HI = this->field_0x78.HWORD;
return TRUE;
}
break;
case 1:
case 1: // RIGHT
if (this->x.HALF.HI >= this->field_0x78.HWORD) {
this->x.HALF.HI = this->field_0x78.HWORD;
return TRUE;
}
break;
case 2:
case 2: // DOWN
if (this->y.HALF.HI >= this->field_0x78.HWORD) {
this->y.HALF.HI = this->field_0x78.HWORD;
return TRUE;
}
break;
case 3:
case 3: // LEFT
if (this->x.HALF.HI <= this->field_0x78.HWORD) {
this->x.HALF.HI = this->field_0x78.HWORD;
return TRUE;
+6 -3
View File
@@ -509,7 +509,7 @@ void sub_0803A8B8(Entity* this) {
this->action = 0x10;
this->timer = 30;
this->direction = 0;
this->direction = DirectionNorth;
this->speed = 0x80;
ptr = gUnk_080CED6C;
@@ -553,7 +553,7 @@ void sub_0803A978(Entity* this) {
sub_08004596(this, 0x10);
}
LinearMoveUpdate(this);
if (this->direction == 0x10) {
if (this->direction == DirectionSouth) {
this->action = 0x12;
this->timer = 3;
COLLISION_OFF(this);
@@ -1225,7 +1225,10 @@ void sub_0803B724(Entity* param_1) {
void sub_0803B798(void) {
gPlayerState.jump_status = 0x41;
gPlayerState.field_0xa = 0;
gPlayerState.flags &= ~(0xffff0000 | PL_CAPTURED);
gPlayerState.flags &=
~(PL_CAPTURED | PL_FLAGS10000 | PL_GYORG_FIGHT | PL_ROLLING | PL_MOLDWORM_CAPTURED | PL_IN_HOLE |
PL_MOLDWORM_RELEASED | PL_CLONING | PL_USE_LANTERN | PL_PARACHUTE | PL_CONVEYOR_PUSHED | PL_ENTER_MINECART |
PL_SWORD_THRUST | PL_USE_OCARINA | PL_CLIMBING | PL_FLAGS40000000 | PL_FLAGS80000000);
gPlayerEntity.flags |= ENT_COLLIDE;
gPlayerEntity.zVelocity = Q_16_16(1.5);
gPlayerEntity.z.HALF.HI = -10;
+4 -4
View File
@@ -561,7 +561,7 @@ void sub_0803473C(Entity* this) {
if (roomX + 0xe0 < this->x.HALF.HI) {
return;
}
this->direction = 8;
this->direction = DirectionEast;
} else {
if (playerX + 4 >= this->x.HALF.HI) {
return;
@@ -569,7 +569,7 @@ void sub_0803473C(Entity* this) {
if (roomX + 0x90 > this->x.HALF.HI) {
return;
}
this->direction = 0x18;
this->direction = DirectionWest;
}
LinearMoveUpdate(this);
}
@@ -581,7 +581,7 @@ void sub_080347B4(Entity* this) {
if (roomX + 0xe0 < this->x.HALF.HI) {
return;
}
this->direction = 8;
this->direction = DirectionEast;
} else {
if (playerX + 4 >= this->x.HALF.HI) {
return;
@@ -589,7 +589,7 @@ void sub_080347B4(Entity* this) {
if (roomX + 0x90 > this->x.HALF.HI) {
return;
}
this->direction = 0x18;
this->direction = DirectionWest;
}
LinearMoveUpdate(this);
}
+1 -1
View File
@@ -209,7 +209,7 @@ void sub_08022F14(Entity* this) {
}
this->direction += this->field_0x78.HALF.LO;
this->direction &= 0x1f;
this->direction &= DirectionNorthWest | 0x3;
this->animationState = ((this->direction + 2) & 0x1c) >> 2;
this->frameIndex = this->animationState;
+6 -6
View File
@@ -53,7 +53,7 @@ void Mulldozer_OnInit(MulldozerEntity* this) {
Mulldozer_Actions[super->action](this);
}
void sub_08032CAC(MulldozerEntity* this) {
void Mulldozer_OnCollision(MulldozerEntity* this) {
if (super->confusedTime != 0) {
Create0x68FX(super, 0x1c);
}
@@ -80,7 +80,7 @@ void sub_08032CAC(MulldozerEntity* this) {
}
}
void sub_08032D3C(MulldozerEntity* this) {
void Mulldozer_OnKnockback(MulldozerEntity* this) {
if (--super->subtimer == 0) {
super->subtimer = 2;
super->animationState = (super->animationState + 1) & 7;
@@ -90,7 +90,7 @@ void sub_08032D3C(MulldozerEntity* this) {
GenericKnockback(super);
}
void nullsub_157(MulldozerEntity* this) {
void Mulldozer_OnGrabbed(MulldozerEntity* this) {
}
void Mulldozer_Init(MulldozerEntity* this) {
@@ -465,11 +465,11 @@ bool32 sub_08033364(MulldozerEntity* this) {
void (*const Mulldozer_Functions[])(MulldozerEntity*) = {
Mulldozer_OnInit,
sub_08032CAC,
sub_08032D3C,
Mulldozer_OnCollision,
Mulldozer_OnKnockback,
(void (*)(MulldozerEntity*))GenericDeath,
(void (*)(MulldozerEntity*))GenericConfused,
nullsub_157,
Mulldozer_OnGrabbed,
};
void (*const Mulldozer_Actions[])(MulldozerEntity*) = {
Mulldozer_Init, Mulldozer_Action1, Mulldozer_Action2, Mulldozer_Action3,
+2 -1
View File
@@ -2,6 +2,7 @@
#include "map.h"
#include "enemy.h"
#include "player.h"
#include "item.h"
void (*const OctorokGolden_Functions[])(Entity*);
void (*const gUnk_080CF484[])(Entity*);
@@ -40,7 +41,7 @@ void OctorokGolden_OnDeath(Entity* this) {
SetGlobalFlag(this->type2);
}
CreateDeathFx(this, 0xff, 0x58);
CreateDeathFx(this, 0xff, ITEM_RUPEE100);
}
void sub_08037CE4(Entity* this) {
+6 -3
View File
@@ -182,7 +182,8 @@ void Peahat_ChargeStart(Entity* this) {
this->action = 3;
this->timer = 120;
this->speed = 192;
this->direction = (GetFacingDirection(this, gUnk_020000B0) + gUnk_080CA5D4[Random() & 1]) & 0x1f;
this->direction =
(GetFacingDirection(this, gUnk_020000B0) + gUnk_080CA5D4[Random() & 1]) & (0x3 | DirectionNorthWest);
}
} else {
sub_080205F8(this);
@@ -226,6 +227,8 @@ void Peahat_ChargeEnd(Entity* this) {
}
}
#define DIR_NONE 0xff
void Peahat_Stunned(Entity* this) {
switch (this->animationState) {
default:
@@ -236,7 +239,7 @@ void Peahat_Stunned(Entity* this) {
this->hitType = 0x71;
}
if (this->direction == 0xff)
if (this->direction == DIR_NONE)
this->direction = this->knockbackDirection;
ProcessMovement0(this);
@@ -364,7 +367,7 @@ void sub_08020604(Entity* this) {
this->direction = sub_08049EE4(this);
} else {
this->direction += this->field_0x80.HALF.LO;
this->direction &= 0x1f;
this->direction &= (0x3 | DirectionNorthWest);
}
}
+7 -7
View File
@@ -387,7 +387,7 @@ void sub_080244E8(Entity* this) {
if (tmp == 0) {
this->field_0x80.HALF.LO++;
this->timer = 12;
this->direction = 0x10;
this->direction = DirectionSouth;
this->speed = tmp;
this->cutsceneBeh.HALF.LO = 0;
this->flags2 &= 0xfc;
@@ -554,13 +554,13 @@ void sub_08024940(Entity* this) {
}
void sub_080249DC(Entity* this) {
u8 direction = ((this->direction + 2) & 0x1c) >> 2;
u8 direction = ((this->direction + 2) & DirectionNorthWest) >> 2;
this->animationState = direction;
InitializeAnimation(this, this->animationState);
}
void sub_080249F4(Entity* this) {
u32 direction = ((this->direction + 2) & 0x1f);
u32 direction = ((this->direction + 2) & (0x3 | DirectionNorthWest));
direction >>= 2;
if (direction != this->animationState) {
this->animationState = direction;
@@ -770,8 +770,8 @@ void sub_08024D00(Entity* this) {
this->field_0x80.HALF.LO++;
this->timer = (Random() & 0xf) + 32;
this->direction += this->field_0x80.HALF.HI ? 4 : 0x1c;
this->direction &= 0x1f;
this->direction += this->field_0x80.HALF.HI ? DirectionNorthEast : DirectionNorthWest;
this->direction &= 0x3 | DirectionNorthWest;
this->field_0x80.HALF.HI ^= 0x40;
sub_08024A14(this, 3, 0x10);
@@ -783,8 +783,8 @@ void sub_08024D00(Entity* this) {
this->timer = (Random() & 0x1f) + 32;
} else {
if (--this->subtimer == 0) {
this->direction += this->field_0x80.HALF.HI ? 1 : 0x1f;
this->direction &= 0x1f;
this->direction += this->field_0x80.HALF.HI ? 1 : (0x3 | DirectionNorthWest);
this->direction &= 0x3 | DirectionNorthWest;
this->subtimer = 16;
sub_080249DC(this);
+2 -2
View File
@@ -339,7 +339,7 @@ void sub_080255AC(Entity* this) {
}
tmp -= 7;
this->direction = (GetFacingDirection(ent, this) + tmp) & 0x1f;
this->direction = (GetFacingDirection(ent, this) + tmp) & (0x3 | DirectionNorthWest);
}
if (this->field_0x78.HWORD == 0) {
@@ -379,7 +379,7 @@ void sub_080256B4(Entity* this) {
this->action = 1;
this->timer = (Random() & 3) + 4;
this->subtimer = 30;
this->direction = (this->direction + 7 + ((s32)Random() % 7) * 4) & 0x1c;
this->direction = (this->direction + 7 + ((s32)Random() % 7) * 4) & DirectionNorthWest;
this->field_0x78.HWORD = gUnk_080CC000[Random() & 0xf];
this->field_0x7a.HALF.LO = ((s32)Random() % 0x18) << 1;
this->field_0x7a.HALF.HI = 0;
+7 -7
View File
@@ -40,7 +40,7 @@ void Rollobite_OnCollision(Entity* this) {
if (this->hitType == 34 && this->health != 0xff) {
this->action = 4;
this->zVelocity = Q_16_16(2.0);
this->direction = 0xff;
this->direction = DIR_NONE;
this->health = 0xff;
this->hitType = 35;
InitializeAnimation(this, this->animationState + 8);
@@ -50,7 +50,7 @@ void Rollobite_OnCollision(Entity* this) {
if (this->action == 4 || this->action == 5) {
this->action = 4;
this->timer = 180;
this->direction = 0xff;
this->direction = DIR_NONE;
InitializeAnimation(this, this->animationState + 0x10);
}
}
@@ -75,7 +75,7 @@ void Rollobite_OnGrabbed(Entity* this) {
if (this->subAction < 3 && !sub_0806F520(this)) {
this->action = 4;
COLLISION_ON(this);
this->direction = 0xff;
this->direction = DIR_NONE;
InitializeAnimation(this, this->animationState + 0x10);
} else {
gUnk_080CA6A4[this->subAction](this);
@@ -108,7 +108,7 @@ void sub_080207A8(Entity* this) {
COLLISION_ON(this);
this->spritePriority.b0 = 4;
this->gustJarState &= 0xfb;
this->direction ^= 0x10;
this->direction ^= DirectionSouth;
this->zVelocity = Q_16_16(1.5);
this->speed = 0x80;
InitializeAnimation(this, this->animationState + 0x10);
@@ -194,7 +194,7 @@ void Rollobite_RolledUp(Entity* this) {
if (unk == 1)
EnqueueSFX(SFX_PLACE_OBJ);
if ((this->direction & 0x80) == 0)
if (!(this->direction & DIR_NOT_MOVING_CHECK))
ProcessMovement2(this);
}
}
@@ -249,8 +249,8 @@ void sub_08020A7C(Entity* this) {
if (sub_08049FA0(this) == 0) {
u32 tmp = DirectionRoundUp(sub_08049EE4(this));
if ((state ^ 0x10) == tmp)
state ^= 0x10;
if ((state ^ DirectionSouth) == tmp)
state ^= DirectionSouth;
}
this->direction = state;
+3 -2
View File
@@ -10,6 +10,7 @@
#include "enemy.h"
#include "physics.h"
#include "player.h"
#include "item.h"
void RopeGolden_OnTick(Entity*);
void RopeGolden_OnCollision(Entity*);
@@ -58,7 +59,7 @@ void RopeGolden_OnDeath(Entity* this) {
if ((this->gustJarState & 2) == 0) {
SetGlobalFlag(this->type2);
}
CreateDeathFx(this, 0xff, 0x58);
CreateDeathFx(this, 0xff, ITEM_RUPEE100);
}
void sub_08038258(Entity* this) {
@@ -130,7 +131,7 @@ void sub_08038304(Entity* this) {
}
this->field_0x7a.HALF.LO = this->field_0x78.HALF.HI;
this->field_0x78.HALF.HI = cVar2;
this->direction = (this->direction + cVar2) & 0x18;
this->direction = (this->direction + cVar2) & DirectionWest;
} else {
this->direction = this->field_0x78.HALF.LO;
}
+1 -1
View File
@@ -218,7 +218,7 @@ void sub_08029688(Entity* this) {
void sub_0802969C(Entity* this) {
u32 bVar1;
if ((this->direction & 0xf) != 0) {
if (this->direction & (0x3 | DIR_DIAGONAL | DirectionEast)) {
bVar1 = this->direction >> 4;
if (bVar1 != this->animationState) {
+9 -9
View File
@@ -42,16 +42,16 @@ void sub_0802BA18(Entity* this) {
this->direction = direction;
switch (direction >> 3) {
case 0:
case 0: // UP
this->field_0x7a.HWORD = this->y.HALF.HI - this->field_0x7c.HALF.HI;
break;
case 1:
case 1: // RIGHT
this->field_0x7a.HWORD = this->x.HALF.HI + this->field_0x7c.HALF.LO;
break;
case 2:
case 2: // DOWN
this->field_0x7a.HWORD = this->y.HALF.HI + this->field_0x7c.HALF.HI;
break;
case 3:
case 3: // LEFT
this->field_0x7a.HWORD = this->x.HALF.HI - this->field_0x7c.HALF.LO;
break;
}
@@ -62,19 +62,19 @@ void sub_0802BA8C(Entity* this) {
sub_0802BB10(this);
} else {
switch (this->direction >> 3) {
case 0:
case 0: // UP
if (this->field_0x7a.HWORD >= this->y.HALF.HI)
sub_0802BB10(this);
break;
case 1:
case 1: // RIGHT
if (this->field_0x7a.HWORD <= this->x.HALF.HI)
sub_0802BB10(this);
break;
case 2:
case 2: // DOWN
if (this->field_0x7a.HWORD <= this->y.HALF.HI)
sub_0802BB10(this);
break;
case 3:
case 3: // LEFT
if (this->field_0x7a.HWORD >= this->x.HALF.HI)
sub_0802BB10(this);
break;
@@ -91,7 +91,7 @@ void sub_0802BAFC(Entity* this) {
void sub_0802BB10(Entity* this) {
this->action = 3;
this->speed = 0xc0;
this->direction = this->direction ^ 0x10;
this->direction = this->direction ^ DirectionSouth;
EnqueueSFX(SFX_METAL_CLINK);
}
+2 -2
View File
@@ -91,8 +91,8 @@ void sub_08031714(Entity* this) {
if (sub_08049FA0(this) == 0 && (this->subtimer & 1) != 0) {
this->direction = sub_08049EE4(this);
} else {
this->direction += 0x18;
this->direction = ((Random() & 0xe) + this->direction) & 0x1f;
this->direction += DirectionWest;
this->direction = ((Random() & 0xe) + this->direction) & (0x3 | DirectionNorthWest);
}
sub_080317E0(this);
}
+1 -1
View File
@@ -60,7 +60,7 @@ void sub_0802B35C(Entity* this) {
if (--this->subtimer == 0) {
this->subtimer = 120;
this->direction += is_head ? 0x08 : 0x18;
this->direction += is_head ? DirectionEast : DirectionWest;
this->direction = DirectionRound(this->direction);
}
} else {
+2 -2
View File
@@ -176,7 +176,7 @@ void sub_08028488(Entity* this) {
this->timer = (Random() & 7) * 3 + 64;
break;
case 4:
this->direction = (this->direction + 0x10) & 0x18;
this->direction = (this->direction + 0x10) & DirectionWest;
/* fallthrough */
case 1:
default:
@@ -265,7 +265,7 @@ void sub_08028604(Entity* this) {
this->timer = this->timer + 0x10;
this->field_0x82.HALF.HI--;
}
this->direction = (iVar3 + 4U) & 0x18;
this->direction = (iVar3 + 4U) & DirectionWest;
iVar3 = Direction8ToAnimationState(this->direction);
}
} else {
+1 -1
View File
@@ -107,7 +107,7 @@ void sub_0802B7A4(Entity* this) {
this->timer = gUnk_080CD314[Random() & 3];
this->speed = 0x60;
sub_0802B960(this);
if (this->direction != 0xff) {
if (this->direction != DIR_NONE) {
u32 animation = this->direction >> 3;
if (animation != this->animationState) {
this->animationState = animation & 3;
+22 -23
View File
@@ -73,7 +73,7 @@ void Stalfos_OnTick(StalfosEntity* this) {
}
}
void sub_0803933C(StalfosEntity* this) {
void Stalfos_OnCollision(StalfosEntity* this) {
Entity* r0;
Entity* r1;
u32 r2;
@@ -120,7 +120,7 @@ void sub_0803933C(StalfosEntity* this) {
EnemyFunctionHandlerAfterCollision(super, Stalfos_Functions);
}
void sub_08039418(StalfosEntity* this) {
void Stalfos_OnDeath(StalfosEntity* this) {
if (super->type == 0) {
CreateDeathFx(super, 0xf3, 0);
} else {
@@ -128,7 +128,7 @@ void sub_08039418(StalfosEntity* this) {
}
}
void sub_08039438(StalfosEntity* this) {
void Stalfos_OnGrabbed(StalfosEntity* this) {
if (sub_0806F520(super)) {
Stalfos_SubActions[super->subAction](this);
}
@@ -453,33 +453,32 @@ u32 sub_08039B28(StalfosEntity* this) {
const u16* ptr;
const s8* ptr2;
if (super->child == NULL) {
ptr2 = &gUnk_080CF930[super->animationState * 2];
pos = COORD_TO_TILE_OFFSET(super, -ptr2[0], -ptr2[1]);
tileType = GetMetaTileType(pos, (u32)super->collisionLayer);
ptr = gUnk_080CF938;
do {
if (ptr[0] != tileType) {
ptr += 2;
} else {
goto found;
}
} while (ptr[0] != 0);
if (super->child != NULL) {
return (u16)-1;
}
return 0xffff;
found:
super->type2 = ptr[1];
return pos;
ptr2 = &gUnk_080CF930[super->animationState * 2];
pos = COORD_TO_TILE_OFFSET(super, -ptr2[0], -ptr2[1]);
tileType = GetMetaTileType(pos, (u32)super->collisionLayer);
ptr = gUnk_080CF938;
do {
if (ptr[0] == tileType) {
super->type2 = ptr[1];
return pos;
}
ptr += 2;
} while (ptr[0] != 0);
return (u16)-1;
}
void (*const Stalfos_Functions[])(StalfosEntity*) = {
Stalfos_OnTick,
sub_0803933C,
Stalfos_OnCollision,
(void (*)(StalfosEntity*))GenericKnockback,
sub_08039418,
Stalfos_OnDeath,
(void (*)(StalfosEntity*))GenericConfused,
sub_08039438,
Stalfos_OnGrabbed,
};
void (*const Stalfos_Actions[])(StalfosEntity*) = {
Stalfos_Init, Stalfos_Action1, Stalfos_Action2, Stalfos_Action3, Stalfos_Action4, Stalfos_Action5,
+2 -2
View File
@@ -159,7 +159,7 @@ void sub_0802F300(Entity* this) {
} else if (this->collisions != COL_NONE) {
sub_0800417E(this, this->collisions);
} else if ((GetVvvAtEntity(this) & 0xf0) == 0x50) { // VVV_240 and VVV_241?
this->direction = (this->direction + 0x10) & 0x1f;
this->direction = (this->direction + 0x10) & (0x3 | DirectionNorthWest);
}
if (--this->timer == 0) {
@@ -214,6 +214,6 @@ static void sub_0802F45C(Entity* this) {
this->direction = sub_08049F84(this, 1);
} else {
temp = (Random() & 0xf) + 0x18;
this->direction = (temp + this->direction) & 0x1f;
this->direction = (temp + this->direction) & (0x3 | DirectionNorthWest);
}
}
+5 -4
View File
@@ -7,6 +7,7 @@
#include "collision.h"
#include "enemy.h"
#include "item.h"
#include "functions.h"
void sub_08038168(Entity*);
@@ -70,9 +71,9 @@ void TektiteGolden_OnDeath(Entity* this) {
SetGlobalFlag(this->type2);
}
if (this->type != 0) {
uVar1 = 0x59;
uVar1 = ITEM_RUPEE200;
} else {
uVar1 = 0x58;
uVar1 = ITEM_RUPEE100;
}
CreateDeathFx(this, 0xff, uVar1);
}
@@ -135,7 +136,7 @@ void sub_08038048(Entity* this) {
} else if (this->collisions != COL_NONE) {
sub_0800417E(this, this->collisions);
} else if ((GetVvvAtEntity(this) & 0xf0) == 0x50) { // VVV_240 and VVV_241?
this->direction = (this->direction + 0x10) & 0x1f;
this->direction = (this->direction + 0x10) & (0x3 | DirectionNorthWest);
}
if (--this->timer == 0) {
@@ -184,6 +185,6 @@ void sub_08038168(Entity* this) {
this->direction = sub_08049F84(this, 1);
} else {
temp = (Random() & 0xf) + 0x18;
this->direction = (temp + this->direction) & 0x1f;
this->direction = (temp + this->direction) & (0x3 | DirectionNorthWest);
}
}
+15 -15
View File
@@ -74,7 +74,7 @@ void sub_0804468C(Entity* this) {
case 0:
this->action = 1;
this->timer = 1;
this->direction = (this->field_0x78.HALF.HI * 8) & 0x1f;
this->direction = (this->field_0x78.HALF.HI * 8) & (0x3 | DirectionNorthWest);
this->field_0x78.HALF.LO = 0;
this->field_0x82.HALF.HI = 0;
this->spriteSettings.draw = 0;
@@ -123,7 +123,7 @@ void sub_0804474C(Entity* this) {
if (--this->timer == 0) {
this->timer = 2;
this->direction++;
this->direction &= 0x1f;
this->direction &= 0x3 | DirectionNorthWest;
}
LinearMoveUpdate(this);
UpdateAnimationSingleFrame(this);
@@ -253,7 +253,7 @@ void sub_080449F8(Entity* this) {
this->timer = 4;
this->direction++;
this->direction &= 0x1f;
this->direction &= 0x3 | DirectionNorthWest;
if (vaati->field_0x80.HALF.LO == 0)
vaati->field_0x74.HALF.LO = 1;
break;
@@ -266,9 +266,9 @@ void sub_080449F8(Entity* this) {
}
break;
case 1:
this->direction = (this->direction + 0x10) & 0x1f;
this->direction = (this->direction + 0x10) & (0x3 | DirectionNorthWest);
LinearMoveUpdate(this);
this->direction = (this->direction + 0x10) & 0x1f;
this->direction = (this->direction + 0x10) & (0x3 | DirectionNorthWest);
this->timer = 2;
break;
case 3:
@@ -324,7 +324,7 @@ void sub_08044B04(Entity* this) {
if (--this->timer == 0) {
this->timer = this->field_0x78.HALF.LO ? 4 : 2;
this->direction++;
this->direction &= 0x1f;
this->direction &= 0x3 | DirectionNorthWest;
}
if (--this->subtimer == 0) {
if (this->timer != 2) {
@@ -346,11 +346,11 @@ void sub_08044B04(Entity* this) {
case 1:
if (--this->timer == 0) {
this->timer = 6;
this->direction = (this->direction + 1) & 0x1f;
this->direction = (this->direction + 1) & (0x3 | DirectionNorthWest);
if (++this->subtimer == 0x30) {
u32 direction = sub_080045B4(this, vaati->x.HALF.HI, vaati->y.HALF.HI - 0x10);
this->speed = 0;
this->direction = (direction + 16) & 0x1f;
this->direction = (direction + 16) & (0x3 | DirectionNorthWest);
this->timer = 16;
this->subtimer = 16;
this->field_0x74.HALF.LO++;
@@ -485,18 +485,18 @@ void sub_08044E74(Entity* this, u32 state) {
switch (state) {
case 2:
this->action = 2;
this->direction += 0x18;
this->direction &= 0x1f;
this->direction += DirectionWest;
this->direction &= 0x3 | DirectionNorthWest;
PositionRelative(this->parent, this, 0, Q_16_16(-16.0));
this->speed = 12288;
LinearMoveUpdate(this);
this->direction += 0x8;
this->direction &= 0x1f;
this->direction += DirectionEast;
this->direction &= 0x3 | DirectionNorthWest;
this->speed = 1280;
LinearMoveUpdate(this);
break;
case 1:
this->direction = (this->direction + 8) & 0x1f;
this->direction = (this->direction + 8) & (0x3 | DirectionNorthWest);
break;
case 0:
if (this->field_0x78.HALF.LO) {
@@ -507,9 +507,9 @@ void sub_08044E74(Entity* this, u32 state) {
} while (this->timer-- != 3);
break;
case 1:
this->direction = (this->direction + 0x10) & 0x1f;
this->direction = (this->direction + 0x10) & (0x3 | DirectionNorthWest);
LinearMoveUpdate(this);
this->direction = (this->direction + 0x10) & 0x1f;
this->direction = (this->direction + 0x10) & (0x3 | DirectionNorthWest);
break;
}
} else {
+5 -5
View File
@@ -233,7 +233,7 @@ void sub_0802EFB8(Entity* this) {
collisionData =
GetCollisionDataAtMetaTilePos(TILE(this->x.HALF.HI, this->y.HALF.HI) + gUnk_080B4488[((uVar1) >> 3)], 1);
if (collisionData != 0) {
this->direction = 0xff;
this->direction = DIR_NONE;
} else {
this->timer = (rand & 3) + 1;
this->direction = (uVar1 & 0x18);
@@ -252,7 +252,7 @@ void sub_0802F04C(Entity* this) {
return;
}
switch (this->direction >> 3) {
case 0:
case 0: // UP
if (((oldY & 0xf) > 8) && ((this->y.HALF.HI & 0xf) < 9)) {
this->timer--;
oldY = (this->y.HALF.HI & 0xfff0) + 8;
@@ -264,7 +264,7 @@ void sub_0802F04C(Entity* this) {
return;
}
break;
case 1:
case 1: // RIGHT
if (((oldX & 0xf) < 8) && ((this->x.HALF.HI & 0xf) >= 8)) {
this->timer--;
oldX = (this->x.HALF.HI & 0xfff0) + 8;
@@ -276,7 +276,7 @@ void sub_0802F04C(Entity* this) {
return;
}
break;
case 2:
case 2: // DOWN
if (((oldY & 0xf) < 8) && ((this->y.HALF.HI & 0xf) >= 8)) {
this->timer--;
oldY = (this->y.HALF.HI & 0xfff0) + 8;
@@ -288,7 +288,7 @@ void sub_0802F04C(Entity* this) {
return;
}
break;
default:
default: // LEFT
if (((oldX & 0xf) >= 9) && ((this->x.HALF.HI & 0xf) < 9)) {
this->timer--;
oldX = (this->x.HALF.HI & 0xfff0) + 8;
+1 -1
View File
@@ -188,7 +188,7 @@ void VaatiProjectileFunction0Action5(Entity* this) {
void VaatiProjectileFunction0Action6(Entity* this) {
if (--this->timer == 0) {
this->action = 7;
this->direction = 0x10;
this->direction = DirectionSouth;
this->speed = 0x300;
}
sub_0803E444(this);
+19 -19
View File
@@ -103,7 +103,7 @@ void VaatiRebornEnemyType0Action0(Entity* this) {
this->timer = 0;
this->field_0x76.HALF.LO = 0;
this->spriteSettings.draw = 1;
this->direction = 0xff;
this->direction = DIR_NONE;
this->spritePriority.b0 = 4;
this->z.WORD = 0;
this->field_0x80.HALF.LO = 2;
@@ -149,12 +149,12 @@ void VaatiRebornEnemyType0Action1(Entity* this) {
this->action = 2;
this->field_0x74.HALF.LO = 0;
this->timer = 16;
this->direction = 0xff;
this->direction = DIR_NONE;
} else {
if ((this->field_0x86.HALF.LO != 0) || (this->field_0x80.HALF.LO != 0)) {
this->direction = ((Random() & 0x80) >> 3) | 8;
this->direction = ((Random() & 0x80) >> 3) | DirectionEast;
} else {
this->direction = 0xff;
this->direction = DIR_NONE;
}
}
} else {
@@ -165,7 +165,7 @@ void VaatiRebornEnemyType0Action1(Entity* this) {
this->field_0x74.HALF.HI = this->field_0x74.HALF.LO & 0x80;
this->field_0x74.HALF.LO = 0;
this->timer = 192;
this->direction = 0xff;
this->direction = DIR_NONE;
this->spriteSettings.draw = 1;
InitAnimationForceUpdate(this, 0);
}
@@ -176,7 +176,7 @@ void VaatiRebornEnemyType0Action1(Entity* this) {
case 0:
this->action = 4;
this->timer = 160;
this->direction = 0xff;
this->direction = DIR_NONE;
this->cutsceneBeh.HALF.LO = 0xff;
InitAnimationForceUpdate(this, 1);
break;
@@ -184,21 +184,21 @@ void VaatiRebornEnemyType0Action1(Entity* this) {
this->action = 6;
this->field_0x74.HALF.LO = 0;
this->timer = 0;
this->direction = 0xff;
this->direction = DIR_NONE;
break;
case 3:
this->action = 5;
this->field_0x74.HALF.LO = 0;
this->subtimer = 32;
this->direction = 0xff;
this->direction = DIR_NONE;
break;
case 2:
this->field_0x74.HALF.LO = 0;
this->timer = 32;
if ((this->field_0x86.HALF.LO != 0) || (this->field_0x80.HALF.LO != 0)) {
this->direction = ((Random() & 0x80) >> 3) | 8;
this->direction = ((Random() & 0x80) >> 3) | DirectionEast;
} else {
this->direction = 0xff;
this->direction = DIR_NONE;
}
break;
}
@@ -340,7 +340,7 @@ void VaatiRebornEnemyType0Action4(Entity* this) {
this->action = 1;
this->cutsceneBeh.HALF.LO = 0xff;
this->timer = 1;
this->direction = (this->direction + 0x10) & 0x1f;
this->direction = (this->direction + 0x10) & (0x3 | DirectionNorthWest);
InitAnimationForceUpdate(this, 0);
} else {
if ((this->frame & 0x10) != 0) {
@@ -369,7 +369,7 @@ void VaatiRebornEnemyType0Action5(Entity* this) {
if (this->field_0x80.HALF.LO == 0) {
this->action = 1;
this->timer = 1;
this->direction = 0xff;
this->direction = DIR_NONE;
InitAnimationForceUpdate(this, 0);
return;
}
@@ -394,7 +394,7 @@ void VaatiRebornEnemyType0Action5(Entity* this) {
this->field_0x86.HALF.HI++;
this->subtimer = (Random() & 0x3f) + 64;
uVar3 = GetFacingDirection(this, &gPlayerEntity);
this->direction = (uVar3 & 0x10) | 8;
this->direction = (uVar3 & 0x10) | DirectionEast;
} else {
this->field_0x74.HALF.LO++;
this->field_0x86.HALF.HI = 0;
@@ -408,7 +408,7 @@ void VaatiRebornEnemyType0Action5(Entity* this) {
this->action = 1;
this->field_0x74.HALF.LO = 0;
this->timer = 1;
this->direction = 0xff;
this->direction = DIR_NONE;
}
break;
}
@@ -557,7 +557,7 @@ void VaatiRebornEnemyType2Action0(Entity* this) {
this->field_0x74.HALF.LO = 1;
this->field_0x74.HALF.HI = 0;
this->spriteOffsetY = -2;
this->direction = 0xff;
this->direction = DIR_NONE;
PositionRelative(source, this, 0, Q_16_16(2.0));
InitAnimationForceUpdate(this, 2);
}
@@ -601,7 +601,7 @@ void VaatiRebornEnemyType2Action1(Entity* this) {
void VaatiRebornEnemyType3Action0(Entity* this) {
this->action = 1;
this->field_0x74.HALF.LO = 0;
this->direction = 0xff;
this->direction = DIR_NONE;
this->spriteOffsetY = -1;
InitAnimationForceUpdate(this, this->field_0x74.HALF.LO);
sub_0803DC0C(this);
@@ -621,7 +621,7 @@ void VaatiRebornEnemyType3Action1(Entity* this) {
} else {
if (this->field_0x74.HALF.LO != 0) {
this->field_0x74.HALF.LO = 0;
this->direction = 0xff;
this->direction = DIR_NONE;
InitAnimationForceUpdate(this, 2);
}
}
@@ -855,7 +855,7 @@ void VaatiRebornEnemyType0PreAction(Entity* this) {
this->field_0x7c = this->y;
}
if (this->field_0x76.HALF.LO == 0) {
if ((this->direction == 0xff) || sub_08049FA0(this)) {
if ((this->direction == DIR_NONE) || sub_08049FA0(this)) {
if (this->field_0x80.HALF.LO == 0) {
this->animationState = (this->animationState + 1) & 3;
this->spriteOffsetX = gUnk_080D04D3[this->animationState];
@@ -863,7 +863,7 @@ void VaatiRebornEnemyType0PreAction(Entity* this) {
return;
}
bVar1 = sub_08049EE4(this);
this->direction = (bVar1 & 0x10) | 8;
this->direction = (bVar1 & 0x10) | DirectionEast;
this->field_0x76.HALF.LO = 0x10;
} else {
this->field_0x76.HALF.LO--;
+2 -2
View File
@@ -888,7 +888,7 @@ void sub_080406A0(Entity* this) {
this->direction = tmp + 0x1f;
}
}
this->direction &= 0x1f;
this->direction &= 0x3 | DirectionNorthWest;
this->field_0x86.HALF.LO = uVar5;
}
@@ -974,7 +974,7 @@ void sub_08040770(Entity* this) {
this->direction = tmp3 + 0x1F;
}
}
this->direction &= 0x1F;
this->direction &= 0x3 | DirectionNorthWest;
this->field_0x86.HALF.LO = tmp2;
}
+6 -6
View File
@@ -383,7 +383,7 @@ void VaatiWrathType0Action7(Entity* this) {
UpdateAnimationSingleFrame(this);
if (gRoomControls.origin_y + 0x48 != this->y.HALF.HI) {
this->speed = 0x100;
this->direction = ((gRoomControls.origin_y + 0x48) >= this->y.HALF.HI) ? 0x10 : 0;
this->direction = ((gRoomControls.origin_y + 0x48) >= this->y.HALF.HI) ? DirectionSouth : DirectionNorth;
LinearMoveUpdate(this);
} else {
if (--this->timer == 0) {
@@ -398,7 +398,7 @@ void VaatiWrathType0Action8(Entity* this) {
LinearMoveUpdate(this);
if (((gRoomControls.origin_x + 0x20) > this->x.HALF.HI) || ((gRoomControls.origin_x + 0x140) < this->x.HALF.HI)) {
if (0x3f < this->speed) {
this->direction ^= 0x10;
this->direction ^= DirectionSouth;
}
}
if (--this->timer == 0) {
@@ -451,7 +451,7 @@ void VaatiWrathType0ActionA(Entity* this) {
if (this->field_0x7a.HALF.HI == 0xf0) {
this->action = 0xb;
this->subAction = 0;
this->direction = 0;
this->direction = DirectionNorth;
this->speed = 0x100;
this->zVelocity = Q_16_16(1.125);
ChangeObjPalette(this, 0x16b);
@@ -521,7 +521,7 @@ void VaatiWrathType0ActionC(Entity* this) {
if (this->z.HALF.HI < -4) {
this->subAction = 1;
this->timer = 120;
this->direction = 0x10;
this->direction = DirectionSouth;
this->speed = 0x80;
}
break;
@@ -998,8 +998,8 @@ void sub_0804235C(Entity* this) {
void VaatiWrathType0PreAction(Entity* this) {
int temp;
if ((gRoomTransition.field_0x38 & 2) == 0) {
if (gSave.timers[3] != 0) {
gSave.timers[3]--;
if (gSave.vaati_timer != 0) {
gSave.vaati_timer--;
} else {
temp = gPlayerState.framestate_last;
switch (temp) {