Merge branch 'master' of https://github.com/pret/pokeemerald into pretmerge10apr

This commit is contained in:
Bassoonian 2025-04-10 23:57:57 +02:00
commit 708bb4a831
7 changed files with 28 additions and 24 deletions

View File

@ -209,8 +209,11 @@ struct ObjectEvent
/*0x14*/ struct Coords16 previousCoords;
/*0x18*/ u16 facingDirection:4; // current direction?
u16 movementDirection:4;
u16 rangeX:4;
u16 rangeY:4;
struct __attribute__((packed))
{
u16 rangeX:4;
u16 rangeY:4;
} range;
/*0x1A*/ u8 fieldEffectSpriteId;
/*0x1B*/ u8 warpArrowSpriteId;
/*0x1C*/ u8 movementActionId;

View File

@ -5,6 +5,7 @@
.equiv NUM_TRACKS_SE3, 1
.bss
.align 2
gMPlayTrack_BGM::
.space TRACK_SIZE * NUM_TRACKS_BGM

View File

@ -1435,8 +1435,8 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem
objectEvent->previousCoords.y = y;
objectEvent->currentElevation = template->elevation;
objectEvent->previousElevation = template->elevation;
objectEvent->rangeX = template->movementRangeX;
objectEvent->rangeY = template->movementRangeY;
objectEvent->range.rangeX = template->movementRangeX;
objectEvent->range.rangeY = template->movementRangeY;
objectEvent->trainerType = template->trainerType;
objectEvent->mapNum = mapNum;
objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
@ -1444,10 +1444,10 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem
SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection);
if (sMovementTypeHasRange[objectEvent->movementType])
{
if (objectEvent->rangeX == 0)
objectEvent->rangeX++;
if (objectEvent->rangeY == 0)
objectEvent->rangeY++;
if (objectEvent->range.rangeX == 0)
objectEvent->range.rangeX++;
if (objectEvent->range.rangeY == 0)
objectEvent->range.rangeY++;
}
return objectEventId;
}
@ -6207,18 +6207,18 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv
s16 top;
s16 bottom;
if (objectEvent->rangeX != 0)
if (objectEvent->range.rangeX != 0)
{
left = objectEvent->initialCoords.x - objectEvent->rangeX;
right = objectEvent->initialCoords.x + objectEvent->rangeX;
left = objectEvent->initialCoords.x - objectEvent->range.rangeX;
right = objectEvent->initialCoords.x + objectEvent->range.rangeX;
if (left > x || right < x)
return TRUE;
}
if (objectEvent->rangeY != 0)
if (objectEvent->range.rangeY != 0)
{
top = objectEvent->initialCoords.y - objectEvent->rangeY;
bottom = objectEvent->initialCoords.y + objectEvent->rangeY;
top = objectEvent->initialCoords.y - objectEvent->range.rangeY;
bottom = objectEvent->initialCoords.y + objectEvent->range.rangeY;
if (top > y || bottom < y)
return TRUE;

View File

@ -251,7 +251,7 @@ static bool8 (*const sArrowWarpMetatileBehaviorChecks[])(u8) =
[DIR_EAST - 1] = MetatileBehavior_IsEastArrowWarp,
};
static const u8 sRivalAvatarGfxIds[][2] =
static const u8 sRivalAvatarGfxIds[][GENDER_COUNT] =
{
[PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, OBJ_EVENT_GFX_RIVAL_MAY_NORMAL},
[PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE},
@ -264,7 +264,7 @@ static const u8 sRivalAvatarGfxIds[][2] =
[PLAYER_AVATAR_STATE_VSSEEKER] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE},
};
static const u8 sPlayerAvatarGfxIds[][2] =
static const u8 sPlayerAvatarGfxIds[][GENDER_COUNT] =
{
[PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_BRENDAN_NORMAL, OBJ_EVENT_GFX_MAY_NORMAL},
[PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_MAY_MACH_BIKE},

View File

@ -124,7 +124,7 @@ void AgbMain()
#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT)
(void) MgbaOpen();
#elif (LOG_HANDLER == LOG_HANDLER_AGB_PRINT)
AGBPrintfInit();
AGBPrintInit();
#endif
#endif
gAgbMainLoop_sp = __builtin_frame_address(0);

View File

@ -3014,7 +3014,7 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent)
// conflict with the usual Event Object struct, thus the definitions.
#define linkGender(obj) obj->singleMovementActive
// not even one can reference *byte* aligned bitfield members...
#define linkDirection(obj) ((u8 *)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX
#define linkDirection(obj) ((u8 *)obj)[offsetof(typeof(*obj), range)] // -> rangeX
static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender)
{

View File

@ -590,15 +590,15 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap
return 0;
}
rangeX = trainerObj->rangeX;
rangeY = trainerObj->rangeY;
trainerObj->rangeX = 0;
trainerObj->rangeY = 0;
rangeX = trainerObj->range.rangeX;
rangeY = trainerObj->range.rangeY;
trainerObj->range.rangeX = 0;
trainerObj->range.rangeY = 0;
collision = GetCollisionAtCoords(trainerObj, x, y, direction);
trainerObj->rangeX = rangeX;
trainerObj->rangeY = rangeY;
trainerObj->range.rangeX = rangeX;
trainerObj->range.rangeY = rangeY;
if (collision == COLLISION_OBJECT_EVENT)
return approachDistance;