Document Petalburg, Fortree, Sootopolis, and some of Mossdeep Gyms

This commit is contained in:
GriffinR
2019-10-15 04:58:52 -04:00
parent c0b0602516
commit 1b41b8b7ca
37 changed files with 1013 additions and 989 deletions
+2 -2
View File
@@ -302,7 +302,7 @@ void Task_HandlePorthole(u8 taskId)
}
break;
case EXIT_PORTHOLE: // exit porthole.
FlagClear(FLAG_SPECIAL_FLAG_0x4001);
FlagClear(FLAG_DONT_TRANSITION_MUSIC);
FlagClear(FLAG_HIDE_MAP_NAME_POPUP);
SetWarpDestinationToDynamicWarp(0);
DoDiveWarp();
@@ -339,7 +339,7 @@ void sub_80FB768(void)
void sub_80FB7A4(void)
{
FlagSet(FLAG_SYS_CRUISE_MODE);
FlagSet(FLAG_SPECIAL_FLAG_0x4001);
FlagSet(FLAG_DONT_TRANSITION_MUSIC);
FlagSet(FLAG_HIDE_MAP_NAME_POPUP);
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
sub_80FB59C();
+18 -18
View File
@@ -68,8 +68,8 @@
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
static EWRAM_DATA u32 sBikeCyclingTimer = 0;
static EWRAM_DATA u8 sUnknown_0203AB5C = 0;
static EWRAM_DATA u8 sPetalburgGymSlidingDoorFrameCounter = 0;
static EWRAM_DATA u8 sSlidingDoorNextFrameCounter = 0;
static EWRAM_DATA u8 sSlidingDoorFrame = 0;
static EWRAM_DATA u8 sTutorMoveAndElevatorWindowId = 0;
static EWRAM_DATA u16 sLilycoveDeptStore_NeverRead = 0;
static EWRAM_DATA u16 sLilycoveDeptStore_DefaultFloorChoice = 0;
@@ -95,8 +95,8 @@ u16 GetNumMovedLilycoveFanClubMembers(void);
static void RecordCyclingRoadResults(u32, u8);
static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum);
static void Task_PetalburgGym(u8);
static void PetalburgGymFunc(u8, u16);
static void Task_PetalburgGymSlideOpenRoomDoors(u8 taskId);
static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId);
static void Task_PCTurnOnEffect(u8);
static void PCTurnOnEffect_0(struct Task *);
static void PCTurnOnEffect_1(s16, s8, s8);
@@ -814,7 +814,7 @@ void MauvilleGymSpecial3(void)
}
}
static const u8 gUnknown_085B2B78[] = {0, 1, 1, 1, 1};
static const bool8 sSlidingDoorNextFrameDelay[] = {0, 1, 1, 1, 1};
static const u16 sPetalburgGymSlidingDoorMetatiles[] = {
METATILE_ID(PetalburgGym, SlidingDoor_Frame0),
@@ -824,21 +824,21 @@ static const u16 sPetalburgGymSlidingDoorMetatiles[] = {
METATILE_ID(PetalburgGym, SlidingDoor_Frame4),
};
void PetalburgGymSpecial1(void)
void PetalburgGymSlideOpenRoomDoors(void)
{
sUnknown_0203AB5C = 0;
sPetalburgGymSlidingDoorFrameCounter = 0;
sSlidingDoorNextFrameCounter = 0;
sSlidingDoorFrame = 0;
PlaySE(SE_KI_GASYAN);
CreateTask(Task_PetalburgGym, 8);
CreateTask(Task_PetalburgGymSlideOpenRoomDoors, 8);
}
static void Task_PetalburgGym(u8 taskId)
static void Task_PetalburgGymSlideOpenRoomDoors(u8 taskId)
{
if (gUnknown_085B2B78[sPetalburgGymSlidingDoorFrameCounter] == sUnknown_0203AB5C)
if (sSlidingDoorNextFrameDelay[sSlidingDoorFrame] == sSlidingDoorNextFrameCounter)
{
PetalburgGymFunc(gSpecialVar_0x8004, sPetalburgGymSlidingDoorMetatiles[sPetalburgGymSlidingDoorFrameCounter]);
sUnknown_0203AB5C = 0;
if ((++sPetalburgGymSlidingDoorFrameCounter) == ARRAY_COUNT(sPetalburgGymSlidingDoorMetatiles))
PetalburgGymSetDoorMetatiles(gSpecialVar_0x8004, sPetalburgGymSlidingDoorMetatiles[sSlidingDoorFrame]);
sSlidingDoorNextFrameCounter = 0;
if ((++sSlidingDoorFrame) == ARRAY_COUNT(sPetalburgGymSlidingDoorMetatiles))
{
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -846,11 +846,11 @@ static void Task_PetalburgGym(u8 taskId)
}
else
{
sUnknown_0203AB5C++;
sSlidingDoorNextFrameCounter++;
}
}
static void PetalburgGymFunc(u8 roomNumber, u16 metatileId)
static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId)
{
u16 doorCoordsX[4];
u16 doorCoordsY[4];
@@ -915,9 +915,9 @@ static void PetalburgGymFunc(u8 roomNumber, u16 metatileId)
DrawWholeMapView();
}
void PetalburgGymSpecial2(void)
void PetalburgGymUnlockRoomDoors(void)
{
PetalburgGymFunc(gSpecialVar_0x8004, sPetalburgGymSlidingDoorMetatiles[4]);
PetalburgGymSetDoorMetatiles(gSpecialVar_0x8004, sPetalburgGymSlidingDoorMetatiles[4]);
}
void ShowFieldMessageStringVar4(void)
+9 -8
View File
@@ -16,6 +16,7 @@
#include "secret_base.h"
#include "sound.h"
#include "task.h"
#include "constants/field_tasks.h"
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/vars.h"
@@ -38,14 +39,14 @@ static void Task_MuddySlope(u8 taskId);
static const TaskFunc sPerStepCallbacks[] =
{
DummyPerStepCallback,
AshGrassPerStepCallback,
FortreeBridgePerStepCallback,
PacifidlogBridgePerStepCallback,
SootopolisGymIcePerStepCallback,
EndTruckSequence,
SecretBasePerStepCallback,
CrackedFloorPerStepCallback
[STEP_CB_DUMMY] = DummyPerStepCallback,
[STEP_CB_ASH] = AshGrassPerStepCallback,
[STEP_CB_FORTREE_BRIDGE] = FortreeBridgePerStepCallback,
[STEP_CB_PACIFIDLOG_BRIDGE] = PacifidlogBridgePerStepCallback,
[STEP_CB_SOOTOPOLIS_ICE] = SootopolisGymIcePerStepCallback,
[STEP_CB_TRUCK] = EndTruckSequence,
[STEP_CB_SECRET_BASE] = SecretBasePerStepCallback,
[STEP_CB_CRACKED_FLOOR] = CrackedFloorPerStepCallback
};
// they are in pairs but declared as 1D array
+40 -40
View File
@@ -12,10 +12,10 @@ extern const u8 gUnknown_08612698[];
extern const u8 gUnknown_0861269C[];
extern const u8 gUnknown_086126A0[];
extern const u8 gUnknown_086126A4[];
extern const u8 gUnknown_086126A8[];
extern const u8 gUnknown_086126AA[];
extern const u8 gUnknown_086126AC[];
extern const u8 gUnknown_086126AE[];
extern const u8 MossdeepGym_Movement_FaceRight[];
extern const u8 MossdeepGym_Movement_FaceDown[];
extern const u8 MossdeepGym_Movement_FaceLeft[];
extern const u8 MossdeepGym_Movement_FaceUp[];
struct MossdeepSubStruct
{
@@ -35,23 +35,23 @@ static void AddEventObject(u8 eventTemplateId, u8 arg1);
static void sub_81A8D94(u8 eventTemplateId, u8 arg1);
// EWRAM vars
EWRAM_DATA static struct MossdeepStruct *gUnknown_0203CE50 = NULL;
EWRAM_DATA static struct MossdeepStruct *sMossdeepGym = NULL;
// code
void InitMossdeepGymTiles(bool8 arg0)
{
if (gUnknown_0203CE50 == NULL)
gUnknown_0203CE50 = AllocZeroed(sizeof(*gUnknown_0203CE50));
if (sMossdeepGym == NULL)
sMossdeepGym = AllocZeroed(sizeof(*sMossdeepGym));
gUnknown_0203CE50->unk41 = arg0;
sMossdeepGym->unk41 = arg0;
}
void FinishMossdeepGymTiles(void)
{
u8 id;
if (gUnknown_0203CE50 != NULL)
FREE_AND_SET_NULL(gUnknown_0203CE50);
if (sMossdeepGym != NULL)
FREE_AND_SET_NULL(sMossdeepGym);
id = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
@@ -72,7 +72,7 @@ u16 MossdeepGym_MoveEvents(u8 arg0)
s16 y = events[i].y + 7;
u16 metatile = MapGridGetMetatileIdAt(x, y);
if (!gUnknown_0203CE50->unk41)
if (!sMossdeepGym->unk41)
var = 0x250;
else
var = 0x298;
@@ -138,26 +138,26 @@ void MossdeepGym_TurnEvents(void)
s32 var;
struct EventObjectTemplate *events;
if (gUnknown_0203CE50 == NULL)
if (sMossdeepGym == NULL)
return;
if (!gUnknown_0203CE50->unk41)
if (!sMossdeepGym->unk41)
var = 0x250;
else
var = 0x298;
events = gSaveBlock1Ptr->eventObjectTemplates;
for (i = 0; i < gUnknown_0203CE50->count; i++)
for (i = 0; i < sMossdeepGym->count; i++)
{
s32 r6;
s8 r0;
u8 eventObjectId;
s16 x = events[gUnknown_0203CE50->objects[i].eventTemplateId].x + 7;
s16 y = events[gUnknown_0203CE50->objects[i].eventTemplateId].y + 7;
s16 x = events[sMossdeepGym->objects[i].eventTemplateId].x + 7;
s16 y = events[sMossdeepGym->objects[i].eventTemplateId].y + 7;
u16 metatile = MapGridGetMetatileIdAt(x, y);
r0 = (u8)((metatile - var) % 8);
r0 -= (gUnknown_0203CE50->objects[i].unk0);
r0 -= (sMossdeepGym->objects[i].unk0);
if (r0 < 0 || r0 == 3)
{
if (r0 == -3)
@@ -173,7 +173,7 @@ void MossdeepGym_TurnEvents(void)
r6 = 2;
}
eventObjectId = GetEventObjectIdByLocalIdAndMap(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
eventObjectId = GetEventObjectIdByLocalIdAndMap(events[sMossdeepGym->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
if (eventObjectId != EVENT_OBJECTS_COUNT)
{
const u8 *movementScript;
@@ -183,25 +183,25 @@ void MossdeepGym_TurnEvents(void)
switch (direction)
{
case DIR_EAST:
movementScript = gUnknown_086126AE;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
movementScript = MossdeepGym_Movement_FaceUp;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
break;
case DIR_SOUTH:
movementScript = gUnknown_086126A8;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
movementScript = MossdeepGym_Movement_FaceRight;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
break;
case DIR_WEST:
movementScript = gUnknown_086126AA;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
movementScript = MossdeepGym_Movement_FaceDown;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
break;
case DIR_NORTH:
movementScript = gUnknown_086126AC;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
movementScript = MossdeepGym_Movement_FaceLeft;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
break;
default:
continue;
}
ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
ScriptMovement_StartObjectMovementScript(events[sMossdeepGym->objects[i].eventTemplateId].localId,
gSaveBlock1Ptr->location.mapNum,
gSaveBlock1Ptr->location.mapGroup,
movementScript);
@@ -211,25 +211,25 @@ void MossdeepGym_TurnEvents(void)
switch (direction)
{
case DIR_EAST:
movementScript = gUnknown_086126AA;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
movementScript = MossdeepGym_Movement_FaceDown;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
break;
case DIR_SOUTH:
movementScript = gUnknown_086126AC;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
movementScript = MossdeepGym_Movement_FaceLeft;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
break;
case DIR_WEST:
movementScript = gUnknown_086126AE;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
movementScript = MossdeepGym_Movement_FaceUp;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
break;
case DIR_NORTH:
movementScript = gUnknown_086126A8;
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
movementScript = MossdeepGym_Movement_FaceRight;
events[sMossdeepGym->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
break;
default:
continue;
}
ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
ScriptMovement_StartObjectMovementScript(events[sMossdeepGym->objects[i].eventTemplateId].localId,
gSaveBlock1Ptr->location.mapNum,
gSaveBlock1Ptr->location.mapGroup,
movementScript);
@@ -240,9 +240,9 @@ void MossdeepGym_TurnEvents(void)
static void AddEventObject(u8 eventTemplateId, u8 arg1)
{
gUnknown_0203CE50->objects[gUnknown_0203CE50->count].eventTemplateId = eventTemplateId;
gUnknown_0203CE50->objects[gUnknown_0203CE50->count].unk0 = arg1;
gUnknown_0203CE50->count++;
sMossdeepGym->objects[sMossdeepGym->count].eventTemplateId = eventTemplateId;
sMossdeepGym->objects[sMossdeepGym->count].unk0 = arg1;
sMossdeepGym->count++;
}
static void sub_81A8D94(u8 eventTemplateId, u8 arg1)
@@ -256,7 +256,7 @@ static void sub_81A8D94(u8 eventTemplateId, u8 arg1)
s16 y = events[eventTemplateId].y + 7;
u16 metatile = MapGridGetMetatileIdAt(x, y);
if (!gUnknown_0203CE50->unk41)
if (!sMossdeepGym->unk41)
var = 0x250;
else
var = 0x298;
+2 -2
View File
@@ -1183,7 +1183,7 @@ void Overworld_ClearSavedMusic(void)
static void sub_8085810(void)
{
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE)
if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE)
{
u16 newMusic = GetWarpDestinationMusic();
u16 currentMusic = GetCurrentMapMusic();
@@ -1231,7 +1231,7 @@ void TryFadeOutOldMapMusic(void)
{
u16 currentMusic = GetCurrentMapMusic();
u16 warpMusic = GetWarpDestinationMusic();
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE && warpMusic != GetCurrentMapMusic())
if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE && warpMusic != GetCurrentMapMusic())
{
if (currentMusic == MUS_NAMINORI
&& VarGet(VAR_SKY_PILLAR_STATE) == 2