diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/field_control_avatar.c | 2 | ||||
-rw-r--r-- | src/field_screen_effect.c | 2 | ||||
-rw-r--r-- | src/rotating_tile_puzzle.c (renamed from src/mossdeep_gym.c) | 139 | ||||
-rw-r--r-- | src/scrcmd.c | 14 |
4 files changed, 79 insertions, 78 deletions
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index f3f9be530..46e4840a4 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -738,7 +738,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB } if (MetatileBehavior_IsMossdeepGymWarp(metatileBehavior) == TRUE) { - sub_80AF87C(); + DoMossdeepGymWarp(); return TRUE; } DoWarp(); diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 9a5d47156..872946ce5 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -556,7 +556,7 @@ void sub_80AF848(void) gFieldCallback = sub_80AF3E8; } -void sub_80AF87C(void) +void DoMossdeepGymWarp(void) { sub_8085540(1); ScriptContext2_Enable(); diff --git a/src/mossdeep_gym.c b/src/rotating_tile_puzzle.c index 2dc641705..acc1c11cc 100644 --- a/src/mossdeep_gym.c +++ b/src/rotating_tile_puzzle.c @@ -2,10 +2,11 @@ #include "event_object_movement.h" #include "fieldmap.h" #include "malloc.h" -#include "mossdeep_gym.h" +#include "rotating_tile_puzzle.h" #include "script_movement.h" #include "constants/event_object_movement_constants.h" #include "constants/event_objects.h" +#include "constants/metatile_labels.h" // Movement scripts. extern const u8 gUnknown_08612698[]; @@ -23,11 +24,11 @@ struct MossdeepSubStruct u8 eventTemplateId; }; -struct MossdeepStruct +struct RotatingTilePuzzle { struct MossdeepSubStruct objects[EVENT_OBJECTS_COUNT]; u8 count; - bool8 unk41; + bool8 isTrickHouse; }; // This file's functions. @@ -35,57 +36,57 @@ static void AddEventObject(u8 eventTemplateId, u8 arg1); static void sub_81A8D94(u8 eventTemplateId, u8 arg1); // EWRAM vars -EWRAM_DATA static struct MossdeepStruct *sMossdeepGym = NULL; +EWRAM_DATA static struct RotatingTilePuzzle *sRotatingTilePuzzle = NULL; // code -void InitMossdeepGymTiles(bool8 arg0) +void InitRotatingTilePuzzle(bool8 isTrickHouse) { - if (sMossdeepGym == NULL) - sMossdeepGym = AllocZeroed(sizeof(*sMossdeepGym)); + if (sRotatingTilePuzzle == NULL) + sRotatingTilePuzzle = AllocZeroed(sizeof(*sRotatingTilePuzzle)); - sMossdeepGym->unk41 = arg0; + sRotatingTilePuzzle->isTrickHouse = isTrickHouse; } void FinishMossdeepGymTiles(void) { u8 id; - if (sMossdeepGym != NULL) - FREE_AND_SET_NULL(sMossdeepGym); + if (sRotatingTilePuzzle != NULL) + FREE_AND_SET_NULL(sRotatingTilePuzzle); id = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0); EventObjectClearHeldMovementIfFinished(&gEventObjects[id]); ScriptMovement_UnfreezeEventObjects(); } -u16 MossdeepGym_MoveEvents(u8 arg0) +u16 MossdeepGym_MoveEvents(u8 puzzleNumber) { u8 i; - struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates; + struct EventObjectTemplate *eventObjects = gSaveBlock1Ptr->eventObjectTemplates; u16 localId = 0; for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++) { - s32 var; + s32 puzzleTileStart; u8 r5; - s16 x = events[i].x + 7; - s16 y = events[i].y + 7; + s16 x = eventObjects[i].x + 7; + s16 y = eventObjects[i].y + 7; u16 metatile = MapGridGetMetatileIdAt(x, y); - if (!sMossdeepGym->unk41) - var = 0x250; + if (!sRotatingTilePuzzle->isTrickHouse) + puzzleTileStart = METATILE_MossdeepGym_YellowRightArrow; else - var = 0x298; + puzzleTileStart = METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right; - if (metatile < 0x250) + if (metatile < METATILE_MossdeepGym_YellowRightArrow) continue; - if ((u8)((metatile - var) / 8) >= 5) + if ((u8)((metatile - puzzleTileStart) / 8) >= 5) continue; - if ((u8)((metatile - var) / 8) != arg0) + if ((u8)((metatile - puzzleTileStart) / 8) != puzzleNumber) continue; - r5 = (u8)((metatile - var) % 8); + r5 = (u8)((metatile - puzzleTileStart) % 8); if (r5 < 4) { s8 x = 0; @@ -114,12 +115,12 @@ u16 MossdeepGym_MoveEvents(u8 arg0) continue; } - events[i].x += x; - events[i].y += y; - if (GetEventObjectIdByLocalIdAndMap(events[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup) != EVENT_OBJECTS_COUNT) + eventObjects[i].x += x; + eventObjects[i].y += y; + if (GetEventObjectIdByLocalIdAndMap(eventObjects[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup) != EVENT_OBJECTS_COUNT) { AddEventObject(i, r5); - localId = events[i].localId; + localId = eventObjects[i].localId; ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); } else @@ -135,29 +136,29 @@ u16 MossdeepGym_MoveEvents(u8 arg0) void MossdeepGym_TurnEvents(void) { u8 i; - s32 var; - struct EventObjectTemplate *events; + s32 puzzleTileStart; + struct EventObjectTemplate *eventObjects; - if (sMossdeepGym == NULL) + if (sRotatingTilePuzzle == NULL) return; - if (!sMossdeepGym->unk41) - var = 0x250; + if (!sRotatingTilePuzzle->isTrickHouse) + puzzleTileStart = METATILE_MossdeepGym_YellowRightArrow; else - var = 0x298; + puzzleTileStart = METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right; - events = gSaveBlock1Ptr->eventObjectTemplates; - for (i = 0; i < sMossdeepGym->count; i++) + eventObjects = gSaveBlock1Ptr->eventObjectTemplates; + for (i = 0; i < sRotatingTilePuzzle->count; i++) { s32 r6; s8 r0; u8 eventObjectId; - s16 x = events[sMossdeepGym->objects[i].eventTemplateId].x + 7; - s16 y = events[sMossdeepGym->objects[i].eventTemplateId].y + 7; + s16 x = eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].x + 7; + s16 y = eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].y + 7; u16 metatile = MapGridGetMetatileIdAt(x, y); - r0 = (u8)((metatile - var) % 8); - r0 -= (sMossdeepGym->objects[i].unk0); + r0 = (u8)((metatile - puzzleTileStart) % 8); + r0 -= (sRotatingTilePuzzle->objects[i].unk0); if (r0 < 0 || r0 == 3) { if (r0 == -3) @@ -173,7 +174,7 @@ void MossdeepGym_TurnEvents(void) r6 = 2; } - eventObjectId = GetEventObjectIdByLocalIdAndMap(events[sMossdeepGym->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + eventObjectId = GetEventObjectIdByLocalIdAndMap(eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); if (eventObjectId != EVENT_OBJECTS_COUNT) { const u8 *movementScript; @@ -184,24 +185,24 @@ void MossdeepGym_TurnEvents(void) { case DIR_EAST: movementScript = MossdeepGym_Movement_FaceUp; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; break; case DIR_SOUTH: movementScript = MossdeepGym_Movement_FaceRight; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; break; case DIR_WEST: movementScript = MossdeepGym_Movement_FaceDown; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; break; case DIR_NORTH: movementScript = MossdeepGym_Movement_FaceLeft; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; break; default: continue; } - ScriptMovement_StartObjectMovementScript(events[sMossdeepGym->objects[i].eventTemplateId].localId, + ScriptMovement_StartObjectMovementScript(eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); @@ -212,24 +213,24 @@ void MossdeepGym_TurnEvents(void) { case DIR_EAST: movementScript = MossdeepGym_Movement_FaceDown; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; break; case DIR_SOUTH: movementScript = MossdeepGym_Movement_FaceLeft; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; break; case DIR_WEST: movementScript = MossdeepGym_Movement_FaceUp; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; break; case DIR_NORTH: movementScript = MossdeepGym_Movement_FaceRight; - events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; + eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; break; default: continue; } - ScriptMovement_StartObjectMovementScript(events[sMossdeepGym->objects[i].eventTemplateId].localId, + ScriptMovement_StartObjectMovementScript(eventObjects[sRotatingTilePuzzle->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); @@ -240,28 +241,28 @@ void MossdeepGym_TurnEvents(void) static void AddEventObject(u8 eventTemplateId, u8 arg1) { - sMossdeepGym->objects[sMossdeepGym->count].eventTemplateId = eventTemplateId; - sMossdeepGym->objects[sMossdeepGym->count].unk0 = arg1; - sMossdeepGym->count++; + sRotatingTilePuzzle->objects[sRotatingTilePuzzle->count].eventTemplateId = eventTemplateId; + sRotatingTilePuzzle->objects[sRotatingTilePuzzle->count].unk0 = arg1; + sRotatingTilePuzzle->count++; } static void sub_81A8D94(u8 eventTemplateId, u8 arg1) { s8 r0; s32 r6; - s32 var; + s32 puzzleTileStart; u16 movementType; - struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates; - s16 x = events[eventTemplateId].x + 7; - s16 y = events[eventTemplateId].y + 7; + struct EventObjectTemplate *eventObjects = gSaveBlock1Ptr->eventObjectTemplates; + s16 x = eventObjects[eventTemplateId].x + 7; + s16 y = eventObjects[eventTemplateId].y + 7; u16 metatile = MapGridGetMetatileIdAt(x, y); - if (!sMossdeepGym->unk41) - var = 0x250; + if (!sRotatingTilePuzzle->isTrickHouse) + puzzleTileStart = METATILE_MossdeepGym_YellowRightArrow; else - var = 0x298; + puzzleTileStart = METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right; - r0 = (u8)((metatile - var) % 8); + r0 = (u8)((metatile - puzzleTileStart) % 8); r0 -= arg1; if (r0 < 0 || r0 == 3) r6 = 0; @@ -270,22 +271,22 @@ static void sub_81A8D94(u8 eventTemplateId, u8 arg1) else r6 = 2; - movementType = events[eventTemplateId].movementType; + movementType = eventObjects[eventTemplateId].movementType; if (r6 == 0) { switch (movementType) { case MOVEMENT_TYPE_FACE_RIGHT: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; break; case MOVEMENT_TYPE_FACE_DOWN: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; break; case MOVEMENT_TYPE_FACE_LEFT: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; break; case MOVEMENT_TYPE_FACE_UP: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; break; default: break; @@ -296,16 +297,16 @@ static void sub_81A8D94(u8 eventTemplateId, u8 arg1) switch (movementType) { case MOVEMENT_TYPE_FACE_RIGHT: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN; break; case MOVEMENT_TYPE_FACE_DOWN: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT; break; case MOVEMENT_TYPE_FACE_LEFT: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP; break; case MOVEMENT_TYPE_FACE_UP: - events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; + eventObjects[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT; break; default: break; diff --git a/src/scrcmd.c b/src/scrcmd.c index 9861f9dae..c1188f16a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -815,7 +815,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_warpD7(struct ScriptContext *ctx) +bool8 ScrCmd_warpmossdeepgym(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -824,7 +824,7 @@ bool8 ScrCmd_warpD7(struct ScriptContext *ctx) u16 y = VarGet(ScriptReadHalfword(ctx)); SetWarpDestination(mapGroup, mapNum, warpId, x, y); - sub_80AF87C(); + DoMossdeepGymWarp(); ResetInitialPlayerAvatarState(); return TRUE; } @@ -2151,9 +2151,9 @@ bool8 ScrCmd_takecoins(struct ScriptContext *ctx) bool8 ScrCmd_mossdeepgym1(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); + u16 puzzleNumber = VarGet(ScriptReadHalfword(ctx)); - sMovingNpcId = MossdeepGym_MoveEvents(v1); + sMovingNpcId = MossdeepGym_MoveEvents(puzzleNumber); return FALSE; } @@ -2163,11 +2163,11 @@ bool8 ScrCmd_mossdeepgym2(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_mossdeepgym3(struct ScriptContext *ctx) +bool8 ScrCmd_initrotatingtilepuzzle(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); + u16 isTrickHouse = VarGet(ScriptReadHalfword(ctx)); - InitMossdeepGymTiles(v1); + InitRotatingTilePuzzle(isTrickHouse); return FALSE; } |