Port object event flags from emerald

This commit is contained in:
PikalaxALT
2020-02-02 11:23:04 -05:00
parent ba7403c74e
commit ceeed6247d
9 changed files with 114 additions and 118 deletions
+52 -56
View File
@@ -168,62 +168,58 @@ struct MapHeader
struct ObjectEvent struct ObjectEvent
{ {
/*0x00*/ u32 active:1; /*0x00*/ /* 0*/ u32 active:1;
u32 mapobj_bit_1:1; /* 1*/ u32 singleMovementActive:1;
u32 mapobj_bit_2:1; /* 2*/ u32 triggerGroundEffectsOnMove:1;
u32 mapobj_bit_3:1; /* 3*/ u32 triggerGroundEffectsOnStop:1;
u32 mapobj_bit_4:1; /* 4*/ u32 disableCoveringGroundEffects:1;
u32 mapobj_bit_5:1; /* 5*/ u32 landingJump:1;
u32 mapobj_bit_6:1; /* 6*/ u32 heldMovementActive:1;
u32 mapobj_bit_7:1; /* 7*/ u32 heldMovementFinished:1;
/*0x01*/ u32 mapobj_bit_8:1; /*0x01*/ /* 8*/ u32 frozen:1;
u32 mapobj_bit_9:1; /* 9*/ u32 facingDirectionLocked:1;
u32 mapobj_bit_10:1; /*10*/ u32 disableAnim:1;
u32 mapobj_bit_11:1; /*11*/ u32 enableAnim:1;
u32 mapobj_bit_12:1; /*12*/ u32 inanimate:1;
u32 mapobj_bit_13:1; /*13*/ u32 invisible:1;
u32 mapobj_bit_14:1; /*14*/ u32 offScreen:1;
u32 mapobj_bit_15:1; /*15*/ u32 trackedByCamera:1;
/*0x02*/ u32 mapobj_bit_16:1; /*0x02*/ /*16*/ u32 isPlayer:1;
u32 mapobj_bit_17:1; /*17*/ u32 hasReflection:1;
u32 mapobj_bit_18:1; /*18*/ u32 inShortGrass:1;
u32 mapobj_bit_19:1; /*19*/ u32 inShallowFlowingWater:1;
u32 mapobj_bit_20:1; /*20*/ u32 inSandPile:1;
u32 mapobj_bit_21:1; /*21*/ u32 inHotSprings:1;
u32 hasShadow:1; /*22*/ u32 hasShadow:1;
u32 mapobj_bit_23:1; /*23*/ u32 spriteAnimPausedBackup:1;
/*0x03*/ u32 mapobj_bit_24:1; /*0x03*/ /*24*/ u32 spriteAffineAnimPausedBackup:1;
u32 mapobj_bit_25:1; /*25*/ u32 disableJumpLandingGroundEffect:1;
u32 mapobj_bit_26:1; /*26*/ u32 fixedPriority:1;
u32 mapobj_bit_27:1; /*27*/ u32 hideReflection:1;
u32 mapobj_bit_28:1; /*0x04*/ u8 spriteId;
u32 mapobj_bit_29:1; /*0x05*/ u8 graphicsId;
u32 mapobj_bit_30:1; /*0x06*/ u8 animPattern;
u32 mapobj_bit_31:1; /*0x07*/ u8 trainerType;
/*0x04*/ u8 spriteId; /*0x08*/ u8 localId;
/*0x05*/ u8 graphicsId; /*0x09*/ u8 mapNum;
/*0x06*/ u8 animPattern; /*0x0A*/ u8 mapGroup;
/*0x07*/ u8 trainerType; /*0x0B*/ u8 mapobj_unk_0B_0:4;
/*0x08*/ u8 localId; u8 elevation:4;
/*0x09*/ u8 mapNum; /*0x0C*/ struct Coords16 coords1;
/*0x0A*/ u8 mapGroup; /*0x10*/ struct Coords16 coords2;
/*0x0B*/ u8 mapobj_unk_0B_0:4; /*0x14*/ struct Coords16 coords3;
u8 elevation:4; /*0x18*/ u8 facingDirection:4; //current direction?
/*0x0C*/ struct Coords16 coords1; /*0x18*/ u8 placeholder18:4;
/*0x10*/ struct Coords16 coords2; /*0x19*/ union ObjectEventRange range;
/*0x14*/ struct Coords16 coords3; /*0x1A*/ u8 mapobj_unk_1A;
/*0x18*/ u8 facingDirection:4; //current direction? /*0x1B*/ u8 mapobj_unk_1B;
/*0x18*/ u8 placeholder18:4; /*0x1C*/ u8 mapobj_unk_1C;
/*0x19*/ union ObjectEventRange range; /*0x1D*/ u8 trainerRange_berryTreeId;
/*0x1A*/ u8 mapobj_unk_1A; /*0x1E*/ u8 mapobj_unk_1E;
/*0x1B*/ u8 mapobj_unk_1B; /*0x1F*/ u8 mapobj_unk_1F;
/*0x1C*/ u8 mapobj_unk_1C; /*0x20*/ u8 mapobj_unk_20;
/*0x1D*/ u8 trainerRange_berryTreeId; /*0x21*/ u8 mapobj_unk_21;
/*0x1E*/ u8 mapobj_unk_1E; /*0x22*/ u8 animId;
/*0x1F*/ u8 mapobj_unk_1F;
/*0x20*/ u8 mapobj_unk_20;
/*0x21*/ u8 mapobj_unk_21;
/*0x22*/ u8 animId;
/*size = 0x24*/ /*size = 0x24*/
}; };
+16 -16
View File
@@ -591,22 +591,22 @@ union QuestLogMovement
struct QuestLogObjectEvent struct QuestLogObjectEvent
{ {
/*0x00*/ u8 active:1; /*0x00*/ u8 active:1;
/*0x00*/ u8 mapobj_bit_3:1; /*0x00*/ u8 triggerGroundEffectsOnStop:1;
/*0x00*/ u8 mapobj_bit_4:1; /*0x00*/ u8 disableCoveringGroundEffects:1;
/*0x00*/ u8 mapobj_bit_5:1; /*0x00*/ u8 landingJump:1;
/*0x00*/ u8 mapobj_bit_8:1; /*0x00*/ u8 frozen:1;
/*0x00*/ u8 mapobj_bit_9:1; /*0x00*/ u8 facingDirectionLocked:1;
/*0x00*/ u8 mapobj_bit_10:1; /*0x00*/ u8 disableAnim:1;
/*0x00*/ u8 mapobj_bit_11:1; /*0x00*/ u8 enableAnim:1;
/*0x01*/ u8 mapobj_bit_12:1; /*0x01*/ u8 inanimate:1;
/*0x01*/ u8 mapobj_bit_13:1; /*0x01*/ u8 invisible:1;
/*0x01*/ u8 mapobj_bit_14:1; /*0x01*/ u8 offScreen:1;
/*0x01*/ u8 mapobj_bit_15:1; /*0x01*/ u8 trackedByCamera:1;
/*0x01*/ u8 mapobj_bit_16:1; /*0x01*/ u8 isPlayer:1;
/*0x01*/ u8 mapobj_bit_23:1; /*0x01*/ u8 spriteAnimPausedBackup:1;
/*0x01*/ u8 mapobj_bit_24:1; /*0x01*/ u8 spriteAffineAnimPausedBackup:1;
/*0x01*/ u8 mapobj_bit_25:1; /*0x01*/ u8 disableJumpLandingGroundEffect:1;
/*0x02*/ u8 mapobj_bit_26:1; /*0x02*/ u8 fixedPriority:1;
/*0x02*/ u8 mapobj_unk_18:4; /*0x02*/ u8 mapobj_unk_18:4;
/*0x02*/ u8 unused_02_5:3; /*0x02*/ u8 unused_02_5:3;
/*0x03*/ u8 mapobj_unk_0B_0:4; /*0x03*/ u8 mapobj_unk_0B_0:4;
+8 -8
View File
@@ -10,11 +10,11 @@ static void DoObjectUnionRoomWarpYDisplacement(struct Sprite * sprite);
bool8 FreezeObjectEvent(struct ObjectEvent * objectEvent) bool8 FreezeObjectEvent(struct ObjectEvent * objectEvent)
{ {
if (objectEvent->mapobj_bit_6 || objectEvent->mapobj_bit_8) if (objectEvent->heldMovementActive || objectEvent->frozen)
return TRUE; return TRUE;
objectEvent->mapobj_bit_8 = TRUE; objectEvent->frozen = TRUE;
objectEvent->mapobj_bit_23 = gSprites[objectEvent->spriteId].animPaused; objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
objectEvent->mapobj_bit_24 = gSprites[objectEvent->spriteId].affineAnimPaused; objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
gSprites[objectEvent->spriteId].animPaused = TRUE; gSprites[objectEvent->spriteId].animPaused = TRUE;
gSprites[objectEvent->spriteId].affineAnimPaused = TRUE; gSprites[objectEvent->spriteId].affineAnimPaused = TRUE;
return FALSE; return FALSE;
@@ -42,11 +42,11 @@ void FreezeObjectEventsExceptOne(u8 noFreeze)
void UnfreezeObjectEvent(struct ObjectEvent * objectEvent) void UnfreezeObjectEvent(struct ObjectEvent * objectEvent)
{ {
if (objectEvent->active && objectEvent->mapobj_bit_8) if (objectEvent->active && objectEvent->frozen)
{ {
objectEvent->mapobj_bit_8 = FALSE; objectEvent->frozen = FALSE;
gSprites[objectEvent->spriteId].animPaused = objectEvent->mapobj_bit_23; gSprites[objectEvent->spriteId].animPaused = objectEvent->spriteAnimPausedBackup;
gSprites[objectEvent->spriteId].affineAnimPaused = objectEvent->mapobj_bit_24; gSprites[objectEvent->spriteId].affineAnimPaused = objectEvent->spriteAffineAnimPausedBackup;
} }
} }
+2 -2
View File
@@ -51,7 +51,7 @@ void sub_80695CC(u8 taskId)
task->data[0] = 1; task->data[0] = 1;
} }
if (task->data[1] == 0 && !gObjectEvents[gSelectedObjectEvent].mapobj_bit_1) if (task->data[1] == 0 && !gObjectEvents[gSelectedObjectEvent].singleMovementActive)
{ {
FreezeObjectEvent(&gObjectEvents[gSelectedObjectEvent]); FreezeObjectEvent(&gObjectEvents[gSelectedObjectEvent]);
task->data[1] = 1; task->data[1] = 1;
@@ -78,7 +78,7 @@ void LockSelectedObjectEvent(void)
FreezeObjectEventsExceptOne(gSelectedObjectEvent); FreezeObjectEventsExceptOne(gSelectedObjectEvent);
taskId = CreateTask(sub_80695CC, 80); taskId = CreateTask(sub_80695CC, 80);
if (!gObjectEvents[gSelectedObjectEvent].mapobj_bit_1) if (!gObjectEvents[gSelectedObjectEvent].singleMovementActive)
{ {
FreezeObjectEvent(&gObjectEvents[gSelectedObjectEvent]); FreezeObjectEvent(&gObjectEvents[gSelectedObjectEvent]);
gTasks[taskId].data[1] = 1; gTasks[taskId].data[1] = 1;
+1 -1
View File
@@ -850,7 +850,7 @@ static void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4)
(*a4)++; (*a4)++;
playerSpr->pos2.x = *a2 >> 5; playerSpr->pos2.x = *a2 >> 5;
playerSpr->pos2.y = *a3 >> 5; playerSpr->pos2.y = *a3 >> 5;
if (playerObj->mapobj_bit_7) if (playerObj->heldMovementFinished)
{ {
ObjectEventForceSetSpecialAnim(playerObj, GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); ObjectEventForceSetSpecialAnim(playerObj, GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection()));
} }
+1 -1
View File
@@ -316,7 +316,7 @@ void Special_AnimatePcTurnOff()
void SpawnCameraObject(void) void SpawnCameraObject(void)
{ {
u8 objectEventId = SpawnSpecialObjectEventParameterized(OBJECT_EVENT_GFX_YOUNGSTER, 8, 127, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3); u8 objectEventId = SpawnSpecialObjectEventParameterized(OBJECT_EVENT_GFX_YOUNGSTER, 8, 127, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
gObjectEvents[objectEventId].mapobj_bit_13 = TRUE; gObjectEvents[objectEventId].invisible = TRUE;
CameraObjectSetFollowedObjectId(gObjectEvents[objectEventId].spriteId); CameraObjectSetFollowedObjectId(gObjectEvents[objectEventId].spriteId);
} }
+32 -32
View File
@@ -14,22 +14,22 @@ void SetQuestLogObjectEventsData(struct QuestLog * questLog)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++) for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{ {
questLog->unk_008[i].active = gObjectEvents[i].active; questLog->unk_008[i].active = gObjectEvents[i].active;
questLog->unk_008[i].mapobj_bit_3 = gObjectEvents[i].mapobj_bit_3; questLog->unk_008[i].triggerGroundEffectsOnStop = gObjectEvents[i].triggerGroundEffectsOnStop;
questLog->unk_008[i].mapobj_bit_4 = gObjectEvents[i].mapobj_bit_4; questLog->unk_008[i].disableCoveringGroundEffects = gObjectEvents[i].disableCoveringGroundEffects;
questLog->unk_008[i].mapobj_bit_5 = gObjectEvents[i].mapobj_bit_5; questLog->unk_008[i].landingJump = gObjectEvents[i].landingJump;
questLog->unk_008[i].mapobj_bit_8 = gObjectEvents[i].mapobj_bit_8; questLog->unk_008[i].frozen = gObjectEvents[i].frozen;
questLog->unk_008[i].mapobj_bit_9 = gObjectEvents[i].mapobj_bit_9; questLog->unk_008[i].facingDirectionLocked = gObjectEvents[i].facingDirectionLocked;
questLog->unk_008[i].mapobj_bit_10 = gObjectEvents[i].mapobj_bit_10; questLog->unk_008[i].disableAnim = gObjectEvents[i].disableAnim;
questLog->unk_008[i].mapobj_bit_11 = gObjectEvents[i].mapobj_bit_11; questLog->unk_008[i].enableAnim = gObjectEvents[i].enableAnim;
questLog->unk_008[i].mapobj_bit_12 = gObjectEvents[i].mapobj_bit_12; questLog->unk_008[i].inanimate = gObjectEvents[i].inanimate;
questLog->unk_008[i].mapobj_bit_13 = gObjectEvents[i].mapobj_bit_13; questLog->unk_008[i].invisible = gObjectEvents[i].invisible;
questLog->unk_008[i].mapobj_bit_14 = gObjectEvents[i].mapobj_bit_14; questLog->unk_008[i].offScreen = gObjectEvents[i].offScreen;
questLog->unk_008[i].mapobj_bit_15 = gObjectEvents[i].mapobj_bit_15; questLog->unk_008[i].trackedByCamera = gObjectEvents[i].trackedByCamera;
questLog->unk_008[i].mapobj_bit_16 = gObjectEvents[i].mapobj_bit_16; questLog->unk_008[i].isPlayer = gObjectEvents[i].isPlayer;
questLog->unk_008[i].mapobj_bit_23 = gObjectEvents[i].mapobj_bit_23; questLog->unk_008[i].spriteAnimPausedBackup = gObjectEvents[i].spriteAnimPausedBackup;
questLog->unk_008[i].mapobj_bit_24 = gObjectEvents[i].mapobj_bit_24; questLog->unk_008[i].spriteAffineAnimPausedBackup = gObjectEvents[i].spriteAffineAnimPausedBackup;
questLog->unk_008[i].mapobj_bit_25 = gObjectEvents[i].mapobj_bit_25; questLog->unk_008[i].disableJumpLandingGroundEffect = gObjectEvents[i].disableJumpLandingGroundEffect;
questLog->unk_008[i].mapobj_bit_26 = gObjectEvents[i].mapobj_bit_26; questLog->unk_008[i].fixedPriority = gObjectEvents[i].fixedPriority;
questLog->unk_008[i].mapobj_unk_18 = gObjectEvents[i].facingDirection; questLog->unk_008[i].mapobj_unk_18 = gObjectEvents[i].facingDirection;
questLog->unk_008[i].mapobj_unk_0B_0 = gObjectEvents[i].mapobj_unk_0B_0; questLog->unk_008[i].mapobj_unk_0B_0 = gObjectEvents[i].mapobj_unk_0B_0;
questLog->unk_008[i].elevation = gObjectEvents[i].elevation; questLog->unk_008[i].elevation = gObjectEvents[i].elevation;
@@ -58,22 +58,22 @@ void sub_815A1F8(const struct QuestLog * questLog, const struct ObjectEventTempl
for (i = 0; i < OBJECT_EVENTS_COUNT; i++) for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{ {
gObjectEvents[i].active = questLogObjectEvents[i].active; gObjectEvents[i].active = questLogObjectEvents[i].active;
gObjectEvents[i].mapobj_bit_3 = questLogObjectEvents[i].mapobj_bit_3; gObjectEvents[i].triggerGroundEffectsOnStop = questLogObjectEvents[i].triggerGroundEffectsOnStop;
gObjectEvents[i].mapobj_bit_4 = questLogObjectEvents[i].mapobj_bit_4; gObjectEvents[i].disableCoveringGroundEffects = questLogObjectEvents[i].disableCoveringGroundEffects;
gObjectEvents[i].mapobj_bit_5 = questLogObjectEvents[i].mapobj_bit_5; gObjectEvents[i].landingJump = questLogObjectEvents[i].landingJump;
gObjectEvents[i].mapobj_bit_8 = questLogObjectEvents[i].mapobj_bit_8; gObjectEvents[i].frozen = questLogObjectEvents[i].frozen;
gObjectEvents[i].mapobj_bit_9 = questLogObjectEvents[i].mapobj_bit_9; gObjectEvents[i].facingDirectionLocked = questLogObjectEvents[i].facingDirectionLocked;
gObjectEvents[i].mapobj_bit_10 = questLogObjectEvents[i].mapobj_bit_10; gObjectEvents[i].disableAnim = questLogObjectEvents[i].disableAnim;
gObjectEvents[i].mapobj_bit_11 = questLogObjectEvents[i].mapobj_bit_11; gObjectEvents[i].enableAnim = questLogObjectEvents[i].enableAnim;
gObjectEvents[i].mapobj_bit_12 = questLogObjectEvents[i].mapobj_bit_12; gObjectEvents[i].inanimate = questLogObjectEvents[i].inanimate;
gObjectEvents[i].mapobj_bit_13 = questLogObjectEvents[i].mapobj_bit_13; gObjectEvents[i].invisible = questLogObjectEvents[i].invisible;
gObjectEvents[i].mapobj_bit_14 = questLogObjectEvents[i].mapobj_bit_14; gObjectEvents[i].offScreen = questLogObjectEvents[i].offScreen;
gObjectEvents[i].mapobj_bit_15 = questLogObjectEvents[i].mapobj_bit_15; gObjectEvents[i].trackedByCamera = questLogObjectEvents[i].trackedByCamera;
gObjectEvents[i].mapobj_bit_16 = questLogObjectEvents[i].mapobj_bit_16; gObjectEvents[i].isPlayer = questLogObjectEvents[i].isPlayer;
gObjectEvents[i].mapobj_bit_23 = questLogObjectEvents[i].mapobj_bit_23; gObjectEvents[i].spriteAnimPausedBackup = questLogObjectEvents[i].spriteAnimPausedBackup;
gObjectEvents[i].mapobj_bit_24 = questLogObjectEvents[i].mapobj_bit_24; gObjectEvents[i].spriteAffineAnimPausedBackup = questLogObjectEvents[i].spriteAffineAnimPausedBackup;
gObjectEvents[i].mapobj_bit_25 = questLogObjectEvents[i].mapobj_bit_25; gObjectEvents[i].disableJumpLandingGroundEffect = questLogObjectEvents[i].disableJumpLandingGroundEffect;
gObjectEvents[i].mapobj_bit_26 = questLogObjectEvents[i].mapobj_bit_26; gObjectEvents[i].fixedPriority = questLogObjectEvents[i].fixedPriority;
gObjectEvents[i].facingDirection = questLogObjectEvents[i].mapobj_unk_18; gObjectEvents[i].facingDirection = questLogObjectEvents[i].mapobj_unk_18;
gObjectEvents[i].mapobj_unk_0B_0 = questLogObjectEvents[i].mapobj_unk_0B_0; gObjectEvents[i].mapobj_unk_0B_0 = questLogObjectEvents[i].mapobj_unk_0B_0;
gObjectEvents[i].elevation = questLogObjectEvents[i].elevation; gObjectEvents[i].elevation = questLogObjectEvents[i].elevation;
+1 -1
View File
@@ -100,7 +100,7 @@ static void sub_81505C4(u8 taskId)
{ {
case 0: case 0:
ObjectEventClearAnimIfSpecialAnimActive(objectEvent); ObjectEventClearAnimIfSpecialAnimActive(objectEvent);
objectEvent->mapobj_bit_11 = TRUE; objectEvent->enableAnim = TRUE;
sub_81507BC(objectEvent, sub_805C808(4)); sub_81507BC(objectEvent, sub_805C808(4));
StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection)); StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection));
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
+1 -1
View File
@@ -598,7 +598,7 @@ static void sub_810C3B8(u8 taskId)
{ {
if (sub_810CF04(i) == TRUE) if (sub_810CF04(i) == TRUE)
{ {
if (gObjectEvents[i].mapobj_bit_1) if (gObjectEvents[i].singleMovementActive)
return; return;
FreezeObjectEvent(&gObjectEvents[i]); FreezeObjectEvent(&gObjectEvents[i]);
} }