diff options
Diffstat (limited to 'src')
61 files changed, 3927 insertions, 3870 deletions
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index dcffedb0e..ff9e64cb9 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3013,10 +3013,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId) static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b) { - u8 tile; - - tile = (b & 1); - tile = ((-tile | tile) >> 31) & 32; + u8 tile = (b & 1) ? 32 : 0; sprite->oam.tileNum += tile + (a << 2); sprite->oam.paletteNum = IndexOfSpritePaletteTag(gMusicNotePaletteTagsTable[b >> 1]); } @@ -3715,7 +3712,7 @@ void AnimPerishSongMusicNote(struct Sprite *sprite) if (!sprite->data[0]) { sprite->pos1.x = 120; - sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15; + sprite->pos1.y = gBattleAnimArgs[0] / 2 - 15; StartSpriteAnim(sprite, gBattleAnimArgs[1]); @@ -3725,7 +3722,7 @@ void AnimPerishSongMusicNote(struct Sprite *sprite) sprite->data[0]++; - sprite->data[1] = (sprite->data[0] + ((u16)sprite->data[0] >> 31)) / 2; + sprite->data[1] = sprite->data[0] / 2; index = ((sprite->data[0] * 3) + (u16)sprite->data[3]); var2 = 0xFF; sprite->data[6] = (sprite->data[6] + 10) & 0xFF; @@ -3773,8 +3770,7 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite) if (sprite->data[4] > 3) { - int var1 = sprite->data[2]; - sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1); + sprite->invisible = sprite->data[2] % 2; DestroyAnimSprite(sprite); } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c144833a1..ee9251017 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5638,7 +5638,7 @@ static void PutLevelAndGenderOnLvlUpBox(void) printerTemplate.unk = 0; printerTemplate.fgColor = TEXT_COLOR_WHITE; printerTemplate.bgColor = TEXT_COLOR_TRANSPARENT; - printerTemplate.shadowColor = TEXT_COLOR_DARK_GREY; + printerTemplate.shadowColor = TEXT_COLOR_DARK_GRAY; AddTextPrinter(&printerTemplate, 0xFF, NULL); txtPtr = gStringVar4; gStringVar4[0] = 0xF9; @@ -9180,7 +9180,7 @@ static void atkF2_displaydexinfo(void) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - gBattleCommunication[TASK_ID] = sub_8106B60(species); + gBattleCommunication[TASK_ID] = DexScreen_RegisterMonToPokedex(species); ++gBattleCommunication[0]; } break; diff --git a/src/berry_crush.c b/src/berry_crush.c index 87888756e..05be05802 100644 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -400,15 +400,15 @@ static const struct BgTemplate sBgTemplates[] = { static const u8 sBerryCrushTextColorTable[][3] = { { TEXT_COLOR_WHITE, - TEXT_COLOR_DARK_GREY, - TEXT_COLOR_LIGHT_GREY + TEXT_COLOR_DARK_GRAY, + TEXT_COLOR_LIGHT_GRAY }, { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, - TEXT_COLOR_DARK_GREY + TEXT_COLOR_DARK_GRAY }, { TEXT_COLOR_TRANSPARENT, - TEXT_COLOR_LIGHT_GREY, + TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_RED }, { TEXT_COLOR_WHITE, @@ -1091,11 +1091,11 @@ static u32 BerryCrushCommand_PrintMessage(struct BerryCrushGame * game, u8 *para if (params[1] & 2) { StringExpandPlaceholders(gStringVar4, sBerryCrushMessages[params[0]]); - AddTextPrinterParameterized2(0, 2, gStringVar4, game->textSpeed, 0, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gStringVar4, game->textSpeed, 0, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); } else { - AddTextPrinterParameterized2(0, 2, sBerryCrushMessages[params[0]], game->textSpeed, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, sBerryCrushMessages[params[0]], game->textSpeed, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); } CopyWindowToVram(0, COPYWIN_BOTH); break; @@ -2695,7 +2695,7 @@ static void PrintBerryCrushResultWindow(struct BerryCrushGame * game, u8 command break; } if (linkPlayerId == game->localId) - StringCopy(gStringVar3, gText_1_ClrLtGryShdwBlk_Dynamic0); + StringCopy(gStringVar3, gText_1_ClrBluShdwLtBlu_Dynamic0); else StringCopy(gStringVar3, gText_1_Dynamic0); gStringVar3[0] = linkIdToPrint + CHAR_1; @@ -910,7 +910,7 @@ void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0); } -void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 unused, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, s16 palette1, s16 tileOffset) +void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2) { u16 screenWidth, screenHeight, screenSize; u16 var; @@ -926,28 +926,28 @@ void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 { case 0: srcPtr = src + ((srcY * srcWidth) + srcX) * 2; - for (i = destX; i < (destX + rectWidth); i++) + for (i = destY; i < (destY + rectHeight); i++) { - for (j = srcHeight; j < (srcHeight + destY); j++) + for (j = destX; j < (destX + rectWidth); j++) { u16 index = GetTileMapIndexFromCoords(j, i, screenSize, screenWidth, screenHeight); - CopyTileMapEntry(srcPtr, sGpuBgConfigs2[bg].tilemap + (index * 2), rectHeight, palette1, tileOffset); + CopyTileMapEntry(srcPtr, sGpuBgConfigs2[bg].tilemap + (index * 2), palette1, tileOffset, palette2); srcPtr += 2; } - srcPtr += (srcWidth - destY) * 2; + srcPtr += (srcWidth - rectWidth) * 2; } break; case 1: srcPtr = src + ((srcY * srcWidth) + srcX); var = GetBgMetricAffineMode(bg, 0x1); - for (i = destX; i < (destX + rectWidth); i++) + for (i = destY; i < (destY + rectHeight); i++) { - for (j = srcHeight; j < (srcHeight + destY); j++) + for (j = destX; j < (destX + rectWidth); j++) { - *(u8*)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8*)(srcPtr) + palette1; + *(u8*)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8*)(srcPtr) + tileOffset; srcPtr++; } - srcPtr += (srcWidth - destY); + srcPtr += (srcWidth - rectWidth); } break; } diff --git a/src/bike.c b/src/bike.c index b1d39ca21..4a8bf1d4e 100644 --- a/src/bike.c +++ b/src/bike.c @@ -9,48 +9,48 @@ #include "constants/map_types.h" #include "constants/songs.h" -static u8 GetMovePlayerOnBikeFuncId(u8 *, u16, u16); -static void sub_80BD664(void); -static u8 BikeCanFaceDIrectionOnRail(u8, u8); -static u8 CheckNextTileForBikingCollision(u8); -static u8 AdjustCollisionForBiking(struct ObjectEvent *, s16, s16, u8, u8); +static u8 GetBikeTransitionId(u8 *, u16, u16); +static void Bike_SetBikeStill(void); +static u8 CanBikeFaceDirectionOnRail(u8 direction, u8 metatileBehavior); +static u8 GetBikeCollision(u8); +static u8 GetBikeCollisionAt(struct ObjectEvent *playerObjEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior); static bool8 MetatileBehaviorForbidsBiking(u8); -static void BikeFaceDirection(u8); -static void BikeFaceDirectionAccountForRail(u8); -static void BikeTryMoveFastInDirection(u8); -static void BikeLetGravityTakeTheWheel(u8); -static void BikeTryMoveInDirection(u8); -static u8 GetBikeMoveCmd_0(u8 *, u16, u16); -static u8 GetBikeMoveCmd_1(u8 *, u16, u16); -static u8 GetBikeMoveCmd_2(u8 *, u16, u16); - -static void (*const sMovePlayerOnBikeFuncs[])(u8) = +static void BikeTransition_FaceDirection(u8); +static void BikeTransition_TurnDirection(u8); +static void BikeTransition_MoveDirection(u8); +static void BikeTransition_Downhill(u8); +static void BikeTransition_Uphill(u8); +static u8 BikeInputHandler_Normal(u8 *, u16, u16); +static u8 BikeInputHandler_Turning(u8 *, u16, u16); +static u8 BikeInputHandler_Slope(u8 *, u16, u16); + +static void (*const sBikeTransitions[])(u8) = { - BikeFaceDirection, - BikeFaceDirectionAccountForRail, - BikeTryMoveFastInDirection, - BikeLetGravityTakeTheWheel, - BikeTryMoveInDirection, + [BIKE_TRANS_FACE_DIRECTION] = BikeTransition_FaceDirection, + [BIKE_TRANS_TURNING] = BikeTransition_TurnDirection, + [BIKE_TRANS_MOVE] = BikeTransition_MoveDirection, + [BIKE_TRANS_DOWNHILL] = BikeTransition_Downhill, + [BIKE_TRANS_UPHILL] = BikeTransition_Uphill, }; -static u8 (*const sGetMovePlayerOnBikeFuncIdFuncs[])(u8 *, u16, u16) = +static u8 (*const sBikeInputHandlers[])(u8 *, u16, u16) = { - GetBikeMoveCmd_0, - GetBikeMoveCmd_1, - GetBikeMoveCmd_2, + [BIKE_STATE_NORMAL] = BikeInputHandler_Normal, + [BIKE_STATE_TURNING] = BikeInputHandler_Turning, + [BIKE_STATE_SLOPE] = BikeInputHandler_Slope, }; void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) { - sMovePlayerOnBikeFuncs[GetMovePlayerOnBikeFuncId(&direction, newKeys, heldKeys)](direction); + sBikeTransitions[GetBikeTransitionId(&direction, newKeys, heldKeys)](direction); } -static u8 GetMovePlayerOnBikeFuncId(u8 *direction, u16 newKeys, u16 heldKeys) +static u8 GetBikeTransitionId(u8 *direction, u16 newKeys, u16 heldKeys) { - return sGetMovePlayerOnBikeFuncIdFuncs[gPlayerAvatar.acroBikeState](direction, newKeys, heldKeys); + return sBikeInputHandlers[gPlayerAvatar.acroBikeState](direction, newKeys, heldKeys); } -static u8 GetBikeMoveCmd_0(u8 *direction_p, u16 newKeys, u16 heldKeys) +static u8 BikeInputHandler_Normal(u8 *direction_p, u16 newKeys, u16 heldKeys) { struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; u8 direction = GetPlayerMovementDirection(); @@ -60,64 +60,56 @@ static u8 GetBikeMoveCmd_0(u8 *direction_p, u16 newKeys, u16 heldKeys) { if (!JOY_HELD(B_BUTTON)) { - gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; - gPlayerAvatar.runningState = 2; + gPlayerAvatar.acroBikeState = BIKE_STATE_SLOPE; + gPlayerAvatar.runningState = MOVING; if (*direction_p < DIR_NORTH) - return 3; + return BIKE_TRANS_DOWNHILL; else - return 4; + return BIKE_TRANS_UPHILL; } else { if (*direction_p != DIR_NONE) { - gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; - gPlayerAvatar.runningState = 2; - return 4; - } - else - { - goto _080BD17E; // for matching purpose + gPlayerAvatar.acroBikeState = BIKE_STATE_SLOPE; + gPlayerAvatar.runningState = MOVING; + return BIKE_TRANS_UPHILL; } } } + if (*direction_p == DIR_NONE) + { + *direction_p = direction; + gPlayerAvatar.runningState = NOT_MOVING; + return BIKE_TRANS_FACE_DIRECTION; + } else { - if (*direction_p == DIR_NONE) + if (*direction_p != direction && gPlayerAvatar.runningState != MOVING) { - _080BD17E: - *direction_p = direction; - gPlayerAvatar.runningState = 0; - return 0; + gPlayerAvatar.acroBikeState = BIKE_STATE_TURNING; + gPlayerAvatar.newDirBackup = *direction_p; + gPlayerAvatar.runningState = NOT_MOVING; + return GetBikeTransitionId(direction_p, newKeys, heldKeys); } else { - if (*direction_p != direction && gPlayerAvatar.runningState != 2) - { - gPlayerAvatar.acroBikeState = ACRO_STATE_TURNING; - gPlayerAvatar.newDirBackup = *direction_p; - gPlayerAvatar.runningState = 0; - return GetMovePlayerOnBikeFuncId(direction_p, newKeys, heldKeys); - } - else - { - gPlayerAvatar.runningState = 2; - return 2; - } + gPlayerAvatar.runningState = MOVING; + return BIKE_TRANS_MOVE; } } } -static u8 GetBikeMoveCmd_1(u8 *direction_p, UNUSED u16 newKeys, UNUSED u16 heldKeys) +static u8 BikeInputHandler_Turning(u8 *direction_p, UNUSED u16 newKeys, UNUSED u16 heldKeys) { *direction_p = gPlayerAvatar.newDirBackup; - gPlayerAvatar.runningState = 1; - gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; - sub_80BD664(); - return 1; + gPlayerAvatar.runningState = TURN_DIRECTION; + gPlayerAvatar.acroBikeState = BIKE_STATE_NORMAL; + Bike_SetBikeStill(); + return BIKE_TRANS_TURNING; } -static u8 GetBikeMoveCmd_2(u8 *direction_p, u16 newKeys, u16 heldKeys) +static u8 BikeInputHandler_Slope(u8 *direction_p, u16 newKeys, u16 heldKeys) { u8 direction = GetPlayerMovementDirection(); u8 playerObjEventId = gPlayerAvatar.objectEventId; @@ -125,64 +117,61 @@ static u8 GetBikeMoveCmd_2(u8 *direction_p, u16 newKeys, u16 heldKeys) { if (*direction_p != direction) { - gPlayerAvatar.acroBikeState = ACRO_STATE_TURNING; + gPlayerAvatar.acroBikeState = BIKE_STATE_TURNING; gPlayerAvatar.newDirBackup = *direction_p; - gPlayerAvatar.runningState = 0; - return GetMovePlayerOnBikeFuncId(direction_p, newKeys, heldKeys); + gPlayerAvatar.runningState = NOT_MOVING; + return GetBikeTransitionId(direction_p, newKeys, heldKeys); } else { - gPlayerAvatar.runningState = 2; - gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; + gPlayerAvatar.runningState = MOVING; + gPlayerAvatar.acroBikeState = BIKE_STATE_SLOPE; if (*direction_p < DIR_NORTH) - return 3; + return BIKE_TRANS_DOWNHILL; else - return 4; + return BIKE_TRANS_UPHILL; } } + gPlayerAvatar.acroBikeState = BIKE_STATE_NORMAL; + if (*direction_p == DIR_NONE) + { + *direction_p = direction; + gPlayerAvatar.runningState = NOT_MOVING; + return BIKE_TRANS_FACE_DIRECTION; + } else { - gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; - if (*direction_p == DIR_NONE) - { - *direction_p = direction; - gPlayerAvatar.runningState = 0; - return 0; - } - else - { - gPlayerAvatar.runningState = 2; - return 2; - } + gPlayerAvatar.runningState = MOVING; + return BIKE_TRANS_MOVE; } } -static void BikeFaceDirection(u8 direction) +static void BikeTransition_FaceDirection(u8 direction) { PlayerFaceDirection(direction); } -static void BikeFaceDirectionAccountForRail(u8 direction) +static void BikeTransition_TurnDirection(u8 direction) { struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; - if (!BikeCanFaceDIrectionOnRail(direction, playerObjEvent->currentMetatileBehavior)) + if (!CanBikeFaceDirectionOnRail(direction, playerObjEvent->currentMetatileBehavior)) direction = playerObjEvent->movementDirection; PlayerFaceDirection(direction); } -static void BikeTryMoveFastInDirection(u8 direction) +static void BikeTransition_MoveDirection(u8 direction) { struct ObjectEvent *playerObjEvent; playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; - if (!BikeCanFaceDIrectionOnRail(direction, playerObjEvent->currentMetatileBehavior)) + if (!CanBikeFaceDirectionOnRail(direction, playerObjEvent->currentMetatileBehavior)) { - BikeFaceDirection(playerObjEvent->movementDirection); + BikeTransition_FaceDirection(playerObjEvent->movementDirection); } else { - u8 collision = CheckNextTileForBikingCollision(direction); + u8 collision = GetBikeCollision(direction); if (collision > COLLISION_NONE && collision <= COLLISION_ISOLATED_HORIZONTAL_RAIL) { @@ -204,9 +193,9 @@ static void BikeTryMoveFastInDirection(u8 direction) } } -static void BikeLetGravityTakeTheWheel(UNUSED u8 v) +static void BikeTransition_Downhill(UNUSED u8 v) { - u8 collision = CheckNextTileForBikingCollision(DIR_SOUTH); + u8 collision = GetBikeCollision(DIR_SOUTH); if (collision == COLLISION_NONE) sub_805C164(DIR_SOUTH); @@ -214,13 +203,13 @@ static void BikeLetGravityTakeTheWheel(UNUSED u8 v) PlayerJumpLedge(DIR_SOUTH); } -static void BikeTryMoveInDirection(u8 direction) +static void BikeTransition_Uphill(u8 direction) { - if (CheckNextTileForBikingCollision(direction) == COLLISION_NONE) + if (GetBikeCollision(direction) == COLLISION_NONE) PlayerGoSpeed1(direction); } -static u8 CheckNextTileForBikingCollision(u8 direction) +static u8 GetBikeCollision(u8 direction) { struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; s16 x, y; @@ -230,10 +219,10 @@ static u8 CheckNextTileForBikingCollision(u8 direction) y = playerObjEvent->currentCoords.y; MoveCoords(direction, &x, &y); metatileBehavior = MapGridGetMetatileBehaviorAt(x, y); - return AdjustCollisionForBiking(playerObjEvent, x, y, direction, metatileBehavior); + return GetBikeCollisionAt(playerObjEvent, x, y, direction, metatileBehavior); } -static u8 AdjustCollisionForBiking(struct ObjectEvent *playerObjEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior) +static u8 GetBikeCollisionAt(struct ObjectEvent *playerObjEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior) { u8 retVal = CheckForObjectEventCollision(playerObjEvent, x, y, direction, metatileBehavior); @@ -248,7 +237,7 @@ static u8 AdjustCollisionForBiking(struct ObjectEvent *playerObjEvent, s16 x, s1 return retVal; } -bool8 sub_80BD460(u8 r0) +bool8 RS_IsRunningDisallowed(u8 r0) { if (MetatileBehaviorForbidsBiking(r0)) return TRUE; @@ -270,16 +259,16 @@ bool32 IsRunningDisallowed(u8 metatileBehavior) static bool8 MetatileBehaviorForbidsBiking(u8 metatileBehavior) { - if (MetatileBehavior_IsMB0A(metatileBehavior)) + if (MetatileBehavior_IsRunningDisallowed(metatileBehavior)) return TRUE; - if (!MetatileBehavior_ReturnFalse_9(metatileBehavior)) + if (!MetatileBehavior_IsFortreeBridge(metatileBehavior)) return FALSE; if (PlayerGetZCoord() & 1) return FALSE; return TRUE; } -static bool8 BikeCanFaceDIrectionOnRail(u8 direction, u8 metatileBehavior) +static bool8 CanBikeFaceDirectionOnRail(u8 direction, u8 metatileBehavior) { if (direction == DIR_EAST || direction == DIR_WEST) { @@ -294,7 +283,7 @@ static bool8 BikeCanFaceDIrectionOnRail(u8 direction, u8 metatileBehavior) return TRUE; } -bool8 MetatileAtPlayerPositionForbidsBiking(void) +bool8 IsBikingDisallowedByPlayer(void) { s16 x, y; u8 metatileBehavior; @@ -309,9 +298,9 @@ bool8 MetatileAtPlayerPositionForbidsBiking(void) return TRUE; } -bool8 player_should_look_direction_be_enforced_upon_movement(void) +bool8 IsPlayerNotUsingAcroBikeOnBumpySlope(void) { - if (TestPlayerAvatarFlags(PLAYER_AVATAR_STATE_UNDERWATER)) + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) { if (MetatileBehavior_IsBumpySlope(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior)) return FALSE; @@ -319,7 +308,7 @@ bool8 player_should_look_direction_be_enforced_upon_movement(void) return TRUE; } -void StartTransitionToFlipBikeState(u8 flags) +void GetOnOffBike(u8 flags) { gBikeCameraAheadPanback = FALSE; if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) @@ -339,11 +328,11 @@ void StartTransitionToFlipBikeState(u8 flags) } } -void InitPlayerAvatarBikeState(u32 directionHistory, u32 abStartSelectHistory) +void BikeClearState(u32 directionHistory, u32 abStartSelectHistory) { u8 i; - gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; + gPlayerAvatar.acroBikeState = BIKE_STATE_NORMAL; gPlayerAvatar.newDirBackup = 0; gPlayerAvatar.bikeFrameCounter = 0; gPlayerAvatar.bikeSpeed = SPEED_STANDING; @@ -360,7 +349,7 @@ void Bike_UpdateBikeCounterSpeed(u8 counter) gPlayerAvatar.bikeSpeed = counter + (gPlayerAvatar.bikeFrameCounter >> 1); } -static void sub_80BD664(void) +static void Bike_SetBikeStill(void) { gPlayerAvatar.bikeFrameCounter = 0; gPlayerAvatar.bikeSpeed = SPEED_STANDING; @@ -368,16 +357,16 @@ static void sub_80BD664(void) s16 GetPlayerSpeed(void) { - s16 exp[] = { 1, 2, 4 }; + s16 machBikeSpeeds[] = { SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST }; if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) - return exp[gPlayerAvatar.bikeFrameCounter]; + return machBikeSpeeds[gPlayerAvatar.bikeFrameCounter]; else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE) - return 3; + return SPEED_FASTER; else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH)) - return 2; + return SPEED_FAST; else - return 1; + return SPEED_NORMAL; } void Bike_HandleBumpySlopeJump(void) @@ -391,8 +380,8 @@ void Bike_HandleBumpySlopeJump(void) tileBehavior = MapGridGetMetatileBehaviorAt(x, y); if (MetatileBehavior_IsBumpySlope(tileBehavior)) { - gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; - nullsub_24(GetPlayerMovementDirection()); + gPlayerAvatar.acroBikeState = BIKE_STATE_SLOPE; + PlayerUseAcroBikeOnBumpySlope(GetPlayerMovementDirection()); } } } diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index b2f106594..74e48be00 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -55,8 +55,8 @@ static const struct WindowTemplate sWindowTemplates[] = { static const u8 sTextColor[] = { TEXT_COLOR_WHITE, - TEXT_COLOR_DARK_GREY, - TEXT_COLOR_LIGHT_GREY + TEXT_COLOR_DARK_GRAY, + TEXT_COLOR_LIGHT_GRAY }; static void CB2_RunClearSaveDataScreen(void) diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 701167500..b91cd8284 100644 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -463,176 +463,176 @@ static u8 GetMoveDirectionFasterAnimNum(u8 direction); static u8 GetMoveDirectionFastestAnimNum(u8 direction); bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) = { - sMovementActionFuncs_x00, - sMovementActionFuncs_x01, - sMovementActionFuncs_x02, - sMovementActionFuncs_x03, - sMovementActionFuncs_x04, - sMovementActionFuncs_x05, - sMovementActionFuncs_x06, - sMovementActionFuncs_x07, - sMovementActionFuncs_x08, - sMovementActionFuncs_x09, - sMovementActionFuncs_x0A, - sMovementActionFuncs_x0B, - sMovementActionFuncs_x0C, - sMovementActionFuncs_x0D, - sMovementActionFuncs_x0E, - sMovementActionFuncs_x0F, - sMovementActionFuncs_x10, - sMovementActionFuncs_x11, - sMovementActionFuncs_x12, - sMovementActionFuncs_x13, - sMovementActionFuncs_x14, - sMovementActionFuncs_x15, - sMovementActionFuncs_x16, - sMovementActionFuncs_x17, - sMovementActionFuncs_x18, - sMovementActionFuncs_x19, - sMovementActionFuncs_x1A, - sMovementActionFuncs_x1B, - sMovementActionFuncs_x1C, - sMovementActionFuncs_x1D, - sMovementActionFuncs_x1E, - sMovementActionFuncs_x1F, - sMovementActionFuncs_x20, - sMovementActionFuncs_x21, - sMovementActionFuncs_x22, - sMovementActionFuncs_x23, - sMovementActionFuncs_x24, - sMovementActionFuncs_x25, - sMovementActionFuncs_x26, - sMovementActionFuncs_x27, - sMovementActionFuncs_x28, - sMovementActionFuncs_x29, - sMovementActionFuncs_x2A, - sMovementActionFuncs_x2B, - sMovementActionFuncs_x2C, - sMovementActionFuncs_x2D, - sMovementActionFuncs_x2E, - sMovementActionFuncs_x2F, - sMovementActionFuncs_x30, - sMovementActionFuncs_x31, - sMovementActionFuncs_x32, - sMovementActionFuncs_x33, - sMovementActionFuncs_x34, - sMovementActionFuncs_x35, - sMovementActionFuncs_x36, - sMovementActionFuncs_x37, - sMovementActionFuncs_x38, - sMovementActionFuncs_x39, - sMovementActionFuncs_x3A, - sMovementActionFuncs_x3B, - sMovementActionFuncs_x3C, - sMovementActionFuncs_x3D, - sMovementActionFuncs_x3E, - sMovementActionFuncs_x3F, - sMovementActionFuncs_x40, - sMovementActionFuncs_x41, - sMovementActionFuncs_x42, - sMovementActionFuncs_x43, - sMovementActionFuncs_x44, - sMovementActionFuncs_x45, - sMovementActionFuncs_x46, - sMovementActionFuncs_x47, - sMovementActionFuncs_x48, - sMovementActionFuncs_x49, - sMovementActionFuncs_x4A, - sMovementActionFuncs_x4B, - sMovementActionFuncs_x4C, - sMovementActionFuncs_x4D, - sMovementActionFuncs_x4E, - sMovementActionFuncs_x4F, - sMovementActionFuncs_x50, - sMovementActionFuncs_x51, - sMovementActionFuncs_x52, - sMovementActionFuncs_x53, - sMovementActionFuncs_x54, - sMovementActionFuncs_x55, - sMovementActionFuncs_x56, - sMovementActionFuncs_x57, - sMovementActionFuncs_x58, - sMovementActionFuncs_x59, - sMovementActionFuncs_x5A, - sMovementActionFuncs_x5B, - sMovementActionFuncs_x5C, - sMovementActionFuncs_x5D, - sMovementActionFuncs_x5E, - sMovementActionFuncs_x5F, - sMovementActionFuncs_x60, - sMovementActionFuncs_x61, - sMovementActionFuncs_x62, - sMovementActionFuncs_x63, - sMovementActionFuncs_x64, - sMovementActionFuncs_x65, - sMovementActionFuncs_x66, - sMovementActionFuncs_x67, - sMovementActionFuncs_x68, - sMovementActionFuncs_x69, - sMovementActionFuncs_x6A, - sMovementActionFuncs_x6B, - sMovementActionFuncs_x6C, - sMovementActionFuncs_x6D, - sMovementActionFuncs_x6E, - sMovementActionFuncs_x6F, - sMovementActionFuncs_x70, - sMovementActionFuncs_x71, - sMovementActionFuncs_x72, - sMovementActionFuncs_x73, - sMovementActionFuncs_x74, - sMovementActionFuncs_x75, - sMovementActionFuncs_x76, - sMovementActionFuncs_x77, - sMovementActionFuncs_x78, - sMovementActionFuncs_x79, - sMovementActionFuncs_x7A, - sMovementActionFuncs_x7B, - sMovementActionFuncs_x7C, - sMovementActionFuncs_x7D, - sMovementActionFuncs_x7E, - sMovementActionFuncs_x7F, - sMovementActionFuncs_x80, - sMovementActionFuncs_x81, - sMovementActionFuncs_x82, - sMovementActionFuncs_x83, - sMovementActionFuncs_x84, - sMovementActionFuncs_x85, - sMovementActionFuncs_x86, - sMovementActionFuncs_x87, - sMovementActionFuncs_x88, - sMovementActionFuncs_x89, - sMovementActionFuncs_x8A, - sMovementActionFuncs_x8B, - sMovementActionFuncs_x8C, - sMovementActionFuncs_x8D, - sMovementActionFuncs_x8E, - sMovementActionFuncs_x8F, - sMovementActionFuncs_x90, - sMovementActionFuncs_x91, - sMovementActionFuncs_x92, - sMovementActionFuncs_x93, - sMovementActionFuncs_x94, - sMovementActionFuncs_x95, - sMovementActionFuncs_x96, - sMovementActionFuncs_x97, - sMovementActionFuncs_x98, - sMovementActionFuncs_x99, - sMovementActionFuncs_x9A, - sMovementActionFuncs_x9B, - sMovementActionFuncs_x9C, - sMovementActionFuncs_x9D, - sMovementActionFuncs_x9E, - sMovementActionFuncs_x9F, - sMovementActionFuncs_xA0, - sMovementActionFuncs_xA1, - sMovementActionFuncs_xA2, - sMovementActionFuncs_xA3, - sMovementActionFuncs_xA4, - sMovementActionFuncs_xA5, - sMovementActionFuncs_xA6, - sMovementActionFuncs_xA7, - sMovementActionFuncs_xA8, - sMovementActionFuncs_xA9, + [MOVEMENT_ACTION_FACE_DOWN] = sMovementActionFuncs_x00, + [MOVEMENT_ACTION_FACE_UP] = sMovementActionFuncs_x01, + [MOVEMENT_ACTION_FACE_LEFT] = sMovementActionFuncs_x02, + [MOVEMENT_ACTION_FACE_RIGHT] = sMovementActionFuncs_x03, + [MOVEMENT_ACTION_FACE_DOWN_FAST] = sMovementActionFuncs_x04, + [MOVEMENT_ACTION_FACE_UP_FAST] = sMovementActionFuncs_x05, + [MOVEMENT_ACTION_FACE_LEFT_FAST] = sMovementActionFuncs_x06, + [MOVEMENT_ACTION_FACE_RIGHT_FAST] = sMovementActionFuncs_x07, + [MOVEMENT_ACTION_WALK_SLOWEST_DOWN] = sMovementActionFuncs_x08, + [MOVEMENT_ACTION_WALK_SLOWEST_UP] = sMovementActionFuncs_x09, + [MOVEMENT_ACTION_WALK_SLOWEST_LEFT] = sMovementActionFuncs_x0A, + [MOVEMENT_ACTION_WALK_SLOWEST_RIGHT] = sMovementActionFuncs_x0B, + [MOVEMENT_ACTION_WALK_SLOW_DOWN] = sMovementActionFuncs_x0C, + [MOVEMENT_ACTION_WALK_SLOW_UP] = sMovementActionFuncs_x0D, + [MOVEMENT_ACTION_WALK_SLOW_LEFT] = sMovementActionFuncs_x0E, + [MOVEMENT_ACTION_WALK_SLOW_RIGHT] = sMovementActionFuncs_x0F, + [MOVEMENT_ACTION_WALK_NORMAL_DOWN] = sMovementActionFuncs_x10, + [MOVEMENT_ACTION_WALK_NORMAL_UP] = sMovementActionFuncs_x11, + [MOVEMENT_ACTION_WALK_NORMAL_LEFT] = sMovementActionFuncs_x12, + [MOVEMENT_ACTION_WALK_NORMAL_RIGHT] = sMovementActionFuncs_x13, + [MOVEMENT_ACTION_JUMP_2_DOWN] = sMovementActionFuncs_x14, + [MOVEMENT_ACTION_JUMP_2_UP] = sMovementActionFuncs_x15, + [MOVEMENT_ACTION_JUMP_2_LEFT] = sMovementActionFuncs_x16, + [MOVEMENT_ACTION_JUMP_2_RIGHT] = sMovementActionFuncs_x17, + [MOVEMENT_ACTION_DELAY_1] = sMovementActionFuncs_x18, + [MOVEMENT_ACTION_DELAY_2] = sMovementActionFuncs_x19, + [MOVEMENT_ACTION_DELAY_4] = sMovementActionFuncs_x1A, + [MOVEMENT_ACTION_DELAY_8] = sMovementActionFuncs_x1B, + [MOVEMENT_ACTION_DELAY_16] = sMovementActionFuncs_x1C, + [MOVEMENT_ACTION_WALK_FAST_DOWN] = sMovementActionFuncs_x1D, + [MOVEMENT_ACTION_WALK_FAST_UP] = sMovementActionFuncs_x1E, + [MOVEMENT_ACTION_WALK_FAST_LEFT] = sMovementActionFuncs_x1F, + [MOVEMENT_ACTION_WALK_FAST_RIGHT] = sMovementActionFuncs_x20, + [MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN] = sMovementActionFuncs_x21, + [MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP] = sMovementActionFuncs_x22, + [MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT] = sMovementActionFuncs_x23, + [MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT] = sMovementActionFuncs_x24, + [MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN] = sMovementActionFuncs_x25, + [MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP] = sMovementActionFuncs_x26, + [MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT] = sMovementActionFuncs_x27, + [MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT] = sMovementActionFuncs_x28, + [MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN] = sMovementActionFuncs_x29, + [MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP] = sMovementActionFuncs_x2A, + [MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT] = sMovementActionFuncs_x2B, + [MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT] = sMovementActionFuncs_x2C, + [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN] = sMovementActionFuncs_x2D, + [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP] = sMovementActionFuncs_x2E, + [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT] = sMovementActionFuncs_x2F, + [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT] = sMovementActionFuncs_x30, + [MOVEMENT_ACTION_FACE_DOWN_SLOW] = sMovementActionFuncs_x31, + [MOVEMENT_ACTION_FACE_UP_SLOW] = sMovementActionFuncs_x32, + [MOVEMENT_ACTION_FACE_LEFT_SLOW] = sMovementActionFuncs_x33, + [MOVEMENT_ACTION_FACE_RIGHT_SLOW] = sMovementActionFuncs_x34, + [MOVEMENT_ACTION_WALK_FASTEST_DOWN] = sMovementActionFuncs_x35, + [MOVEMENT_ACTION_WALK_FASTEST_UP] = sMovementActionFuncs_x36, + [MOVEMENT_ACTION_WALK_FASTEST_LEFT] = sMovementActionFuncs_x37, + [MOVEMENT_ACTION_WALK_FASTEST_RIGHT] = sMovementActionFuncs_x38, + [MOVEMENT_ACTION_SLIDE_DOWN] = sMovementActionFuncs_x39, + [MOVEMENT_ACTION_SLIDE_UP] = sMovementActionFuncs_x3A, + [MOVEMENT_ACTION_SLIDE_LEFT] = sMovementActionFuncs_x3B, + [MOVEMENT_ACTION_SLIDE_RIGHT] = sMovementActionFuncs_x3C, + [MOVEMENT_ACTION_PLAYER_RUN_DOWN] = sMovementActionFuncs_x3D, + [MOVEMENT_ACTION_PLAYER_RUN_UP] = sMovementActionFuncs_x3E, + [MOVEMENT_ACTION_PLAYER_RUN_LEFT] = sMovementActionFuncs_x3F, + [MOVEMENT_ACTION_PLAYER_RUN_RIGHT] = sMovementActionFuncs_x40, + [MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW] = sMovementActionFuncs_x41, + [MOVEMENT_ACTION_PLAYER_RUN_UP_SLOW] = sMovementActionFuncs_x42, + [MOVEMENT_ACTION_PLAYER_RUN_LEFT_SLOW] = sMovementActionFuncs_x43, + [MOVEMENT_ACTION_PLAYER_RUN_RIGHT_SLOW] = sMovementActionFuncs_x44, + [MOVEMENT_ACTION_START_ANIM_IN_DIRECTION] = sMovementActionFuncs_x45, + [MOVEMENT_ACTION_JUMP_SPECIAL_DOWN] = sMovementActionFuncs_x46, + [MOVEMENT_ACTION_JUMP_SPECIAL_UP] = sMovementActionFuncs_x47, + [MOVEMENT_ACTION_JUMP_SPECIAL_LEFT] = sMovementActionFuncs_x48, + [MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT] = sMovementActionFuncs_x49, + [MOVEMENT_ACTION_FACE_PLAYER] = sMovementActionFuncs_x4A, + [MOVEMENT_ACTION_FACE_AWAY_PLAYER] = sMovementActionFuncs_x4B, + [MOVEMENT_ACTION_LOCK_FACING_DIRECTION] = sMovementActionFuncs_x4C, + [MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION] = sMovementActionFuncs_x4D, + [MOVEMENT_ACTION_JUMP_DOWN] = sMovementActionFuncs_x4E, + [MOVEMENT_ACTION_JUMP_UP] = sMovementActionFuncs_x4F, + [MOVEMENT_ACTION_JUMP_LEFT] = sMovementActionFuncs_x50, + [MOVEMENT_ACTION_JUMP_RIGHT] = sMovementActionFuncs_x51, + [MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN] = sMovementActionFuncs_x52, + [MOVEMENT_ACTION_JUMP_IN_PLACE_UP] = sMovementActionFuncs_x53, + [MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT] = sMovementActionFuncs_x54, + [MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT] = sMovementActionFuncs_x55, + [MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP] = sMovementActionFuncs_x56, + [MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN] = sMovementActionFuncs_x57, + [MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT] = sMovementActionFuncs_x58, + [MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT] = sMovementActionFuncs_x59, + [MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION] = sMovementActionFuncs_x5A, + [MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN] = sMovementActionFuncs_x5B, + [MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT] = sMovementActionFuncs_x5C, + [MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT] = sMovementActionFuncs_x5D, + [MOVEMENT_ACTION_DISABLE_ANIMATION] = sMovementActionFuncs_x5E, + [MOVEMENT_ACTION_RESTORE_ANIMATION] = sMovementActionFuncs_x5F, + [MOVEMENT_ACTION_SET_INVISIBLE] = sMovementActionFuncs_x60, + [MOVEMENT_ACTION_SET_VISIBLE] = sMovementActionFuncs_x61, + [MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK] = sMovementActionFuncs_x62, + [MOVEMENT_ACTION_EMOTE_QUESTION_MARK] = sMovementActionFuncs_x63, + [MOVEMENT_ACTION_EMOTE_X] = sMovementActionFuncs_x64, + [MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK] = sMovementActionFuncs_x65, + [MOVEMENT_ACTION_EMOTE_SMILE] = sMovementActionFuncs_x66, + [MOVEMENT_ACTION_REVEAL_TRAINER] = sMovementActionFuncs_x67, + [MOVEMENT_ACTION_ROCK_SMASH_BREAK] = sMovementActionFuncs_x68, + [MOVEMENT_ACTION_CUT_TREE] = sMovementActionFuncs_x69, + [MOVEMENT_ACTION_SET_FIXED_PRIORITY] = sMovementActionFuncs_x6A, + [MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY] = sMovementActionFuncs_x6B, + [MOVEMENT_ACTION_INIT_AFFINE_ANIM] = sMovementActionFuncs_x6C, + [MOVEMENT_ACTION_CLEAR_AFFINE_ANIM] = sMovementActionFuncs_x6D, + [MOVEMENT_ACTION_WALK_DOWN_START_AFFINE] = sMovementActionFuncs_x6E, + [MOVEMENT_ACTION_WALK_DOWN_AFFINE] = sMovementActionFuncs_x6F, + [MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN] = sMovementActionFuncs_x70, + [MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP] = sMovementActionFuncs_x71, + [MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT] = sMovementActionFuncs_x72, + [MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT] = sMovementActionFuncs_x73, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN] = sMovementActionFuncs_x74, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP] = sMovementActionFuncs_x75, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT] = sMovementActionFuncs_x76, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT] = sMovementActionFuncs_x77, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN] = sMovementActionFuncs_x78, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP] = sMovementActionFuncs_x79, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT] = sMovementActionFuncs_x7A, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT] = sMovementActionFuncs_x7B, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN] = sMovementActionFuncs_x7C, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP] = sMovementActionFuncs_x7D, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT] = sMovementActionFuncs_x7E, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT] = sMovementActionFuncs_x7F, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN] = sMovementActionFuncs_x80, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP] = sMovementActionFuncs_x81, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT] = sMovementActionFuncs_x82, + [MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT] = sMovementActionFuncs_x83, + [MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN] = sMovementActionFuncs_x84, + [MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP] = sMovementActionFuncs_x85, + [MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT] = sMovementActionFuncs_x86, + [MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT] = sMovementActionFuncs_x87, + [MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN] = sMovementActionFuncs_x88, + [MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP] = sMovementActionFuncs_x89, + [MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT] = sMovementActionFuncs_x8A, + [MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT] = sMovementActionFuncs_x8B, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN] = sMovementActionFuncs_x8C, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP] = sMovementActionFuncs_x8D, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x8E, + [MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x8F, + [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN] = sMovementActionFuncs_x90, + [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP] = sMovementActionFuncs_x91, + [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x92, + [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x93, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN] = sMovementActionFuncs_x94, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP] = sMovementActionFuncs_x95, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x96, + [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x97, + [MOVEMENT_ACTION_0x98] = sMovementActionFuncs_x98, + [MOVEMENT_ACTION_0x99] = sMovementActionFuncs_x99, + [MOVEMENT_ACTION_0x9A] = sMovementActionFuncs_x9A, + [MOVEMENT_ACTION_0x9B] = sMovementActionFuncs_x9B, + [MOVEMENT_ACTION_0x9C] = sMovementActionFuncs_x9C, + [MOVEMENT_ACTION_0x9D] = sMovementActionFuncs_x9D, + [MOVEMENT_ACTION_0x9E] = sMovementActionFuncs_x9E, + [MOVEMENT_ACTION_0x9F] = sMovementActionFuncs_x9F, + [MOVEMENT_ACTION_0xA0] = sMovementActionFuncs_xA0, + [MOVEMENT_ACTION_0xA1] = sMovementActionFuncs_xA1, + [MOVEMENT_ACTION_0xA2] = sMovementActionFuncs_xA2, + [MOVEMENT_ACTION_0xA3] = sMovementActionFuncs_xA3, + [MOVEMENT_ACTION_FLY_UP] = sMovementActionFuncs_xA4, + [MOVEMENT_ACTION_FLY_DOWN] = sMovementActionFuncs_xA5, + [MOVEMENT_ACTION_0xA6] = sMovementActionFuncs_xA6, + [MOVEMENT_ACTION_0xA7] = sMovementActionFuncs_xA7, + [MOVEMENT_ACTION_0xA8] = sMovementActionFuncs_xA8, + [MOVEMENT_ACTION_0xA9] = sMovementActionFuncs_xA9, }; static bool8 (*const sMovementActionFuncs_x00[])(struct ObjectEvent *, struct Sprite *) = { diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index a18c0e974..572a9b390 100644 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -4,7 +4,7 @@ static bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, st static bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 MovementType_WanderAround_Step5Duplicate(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_WanderAround_Step5Slowest(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); @@ -141,12 +141,12 @@ static bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, str static bool8 MovementType_Invisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_Invisible_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 sub_8063364(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 sub_8063384(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 sub_80633A4(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 sub_80633B4(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 sub_80633D4(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 sub_80633F4(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_VsSeeker4D_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_VsSeeker4D_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_VsSeeker4D_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_VsSeeker4E_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_VsSeeker4F_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_VsSeeker4E_VsSeeker4F_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); static u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy); static u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy); @@ -170,13 +170,13 @@ u8 (*const gMovementTypeFuncs_WanderAround[])(struct ObjectEvent *, struct Sprit MovementType_WanderAround_Step6, }; -u8 (*const gMovementTypeFuncs_WanderAroundDuplicate[])(struct ObjectEvent *, struct Sprite *) = { +u8 (*const gMovementTypeFuncs_WanderAroundSlowest[])(struct ObjectEvent *, struct Sprite *) = { MovementType_WanderAround_Step0, MovementType_WanderAround_Step1, MovementType_WanderAround_Step2, MovementType_WanderAround_Step3, MovementType_WanderAround_Step4, - MovementType_WanderAround_Step5Duplicate, + MovementType_WanderAround_Step5Slowest, MovementType_WanderAround_Step6, }; @@ -596,18 +596,18 @@ u8 (*const gMovementTypeFuncs_Invisible[])(struct ObjectEvent *, struct Sprite * MovementType_Invisible_Step2, }; -u8 (*const gUnknown_83A63F0[])(struct ObjectEvent *, struct Sprite *) = { - sub_8063364, - sub_8063384, - sub_80633A4, +u8 (*const gMovementTypeFuncs_VsSeeker4D[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_VsSeeker4D_Step0, + MovementType_VsSeeker4D_Step1, + MovementType_VsSeeker4D_Step2, }; -u8 (*const gUnknown_83A63FC[])(struct ObjectEvent *, struct Sprite *) = { - sub_80633B4, - sub_80633F4, +u8 (*const gMovementTypeFuncs_VsSeeker4E[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_VsSeeker4E_Step0, + MovementType_VsSeeker4E_VsSeeker4F_Step1, }; -u8 (*const gUnknown_83A6404[])(struct ObjectEvent *, struct Sprite *) = { - sub_80633D4, - sub_80633F4, +u8 (*const gMovementTypeFuncs_VsSeeker4F[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_VsSeeker4F_Step0, + MovementType_VsSeeker4E_VsSeeker4F_Step1, }; diff --git a/src/data/party_menu.h b/src/data/party_menu.h index e8151b810..084062b50 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -112,12 +112,12 @@ static const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_ static const u8 sFontColorTable[][3] = { - {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_DARK_GREY}, // Default + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_DARK_GRAY}, // Default {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_GREEN}, // Unused {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_2, TEXT_DYNAMIC_COLOR_3}, // Gender symbol - {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}, // Selection actions + {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}, // Selection actions {TEXT_COLOR_WHITE, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_BLUE}, // Field moves - {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, // Unused + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}, // Unused }; static const struct WindowTemplate sSinglePartyMenuWindowTemplate[] = diff --git a/src/data/trainers.h b/src/data/trainers.h index 4ad71fd13..95e1c5412 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -9,7 +9,7 @@ const struct Trainer gTrainers[] = { .doubleBattle = FALSE, .aiFlags = 0, .partySize = 0, - .party = NULL + .party = {}, }, [TRAINER_AQUA_LEADER_1] = { .partyFlags = 0, diff --git a/src/diploma.c b/src/diploma.c index 4f765437f..38df40663 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -38,8 +38,8 @@ static const u8 gUnknown_841599D[] = _("{HIGHLIGHT TRANSPARENT}さま"); static const u8 gUnknown_84159A3[] = _("{HIGHLIGHT TRANSPARENT}ホウエン"); static const u8 gUnknown_84159AB[] = _("{HIGHLIGHT TRANSPARENT}ぜんこく"); static const u8 gUnknown_84159B3[] = _("{HIGHLIGHT TRANSPARENT} ポケモンずかんを\nみごと かんせい させた\nいだいなこうせきを たたえ\nここに しょうめい します"); -static const u8 gUnknown_84159ED[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}ゲームフリーク"); -static const u8 gUnknown_84159FB[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}"); +static const u8 gUnknown_84159ED[] = _("{COLOR DARK_GRAY}{HIGHLIGHT TRANSPARENT}ゲームフリーク"); +static const u8 gUnknown_84159FB[] = _("{COLOR DARK_GRAY}{HIGHLIGHT TRANSPARENT}"); static const ALIGNED(4) u8 gUnknown_8415A04[3] = {0, 2, 3}; diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c index ff44a70de..aa9f65042 100644 --- a/src/dodrio_berry_picking_2.c +++ b/src/dodrio_berry_picking_2.c @@ -906,8 +906,8 @@ static const u8 sTextColorTable[][3] = { { TEXT_COLOR_WHITE, - TEXT_COLOR_DARK_GREY, - TEXT_COLOR_LIGHT_GREY + TEXT_COLOR_DARK_GRAY, + TEXT_COLOR_LIGHT_GRAY }, { TEXT_COLOR_WHITE, TEXT_COLOR_RED, @@ -1421,7 +1421,7 @@ static void sub_8155A78(void) { case 0: DrawDialogueFrame(0, FALSE); - AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); gUnknown_203F440->state++; break; case 1: diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c index c904494bb..dc9fbed01 100644 --- a/src/easy_chat_3.c +++ b/src/easy_chat_3.c @@ -1321,7 +1321,7 @@ static void PrintTitleText(void) xOffset = (128 - GetStringWidth(1, titleText, 0)) / 2u; FillWindowPixelBuffer(0, PIXEL_FILL(0)); - EC_AddTextPrinterParameterized2(0, 1, titleText, xOffset, 0, TEXT_SPEED_FF, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); + EC_AddTextPrinterParameterized2(0, 1, titleText, xOffset, 0, TEXT_SPEED_FF, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY); PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_BOTH); } @@ -1439,7 +1439,7 @@ static void PrintECFields(void) *str++ = 9; } - str = WriteColorChangeControlCode(str, 0, TEXT_COLOR_DARK_GREY); + str = WriteColorChangeControlCode(str, 0, TEXT_COLOR_DARK_GRAY); } str = StringAppend(str, sText_Clear17); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 8b1dffa51..6b9445d8e 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -30,7 +30,7 @@ static void UpdateObjectEventSpriteAnimPause(struct ObjectEvent *, struct Sprite static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *, s16, s16); static bool8 IsMetatileDirectionallyImpassable(struct ObjectEvent *, s16, s16, u8); static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *, s16, s16); -static void sub_8067A10(struct ObjectEvent *, struct Sprite *); +static void CalcWhetherObjectIsOffscreen(struct ObjectEvent *, struct Sprite *); static void UpdateObjEventSpriteVisibility(struct ObjectEvent *, struct Sprite *); static void ObjectEventUpdateMetatileBehaviors(struct ObjectEvent*); static void GetGroundEffectFlags_Reflection(struct ObjectEvent*, u32*); @@ -90,9 +90,9 @@ static bool8 sub_805E2E8(struct ObjectEventTemplate *, s16, s16); static void sub_805E384(struct ObjectEventTemplate *); static bool8 MovementType_Disguise_Callback(struct ObjectEvent *, struct Sprite *); static bool8 MovementType_Buried_Callback(struct ObjectEvent *, struct Sprite *); -static u8 sub_8063304(struct ObjectEvent *, struct Sprite *); -static u8 sub_8063324(struct ObjectEvent *, struct Sprite *); -static u8 sub_8063344(struct ObjectEvent *, struct Sprite *); +static u8 MovementType_VsSeeker4D_Callback(struct ObjectEvent *, struct Sprite *); +static u8 MovementType_VsSeeker4E_Callback(struct ObjectEvent *, struct Sprite *); +static u8 MovementType_VsSeeker4F_Callback(struct ObjectEvent *, struct Sprite *); static void sub_8064544(struct ObjectEvent *, struct Sprite *); static void DoObjectUnionRoomWarpYDisplacement(struct Sprite * sprite); static void MovementType_None(struct Sprite *); @@ -147,10 +147,10 @@ static void MovementType_WalkInPlace(struct Sprite *); static void MovementType_WalkSlowlyInPlace(struct Sprite *); static void MovementType_JogInPlace(struct Sprite *); static void MovementType_Invisible(struct Sprite *); -static void sub_8063298(struct Sprite *); -static void sub_80632BC(struct Sprite *); -static void sub_80632E0(struct Sprite *); -static void MovementType_WanderAroundDuplicate(struct Sprite *); +static void MovementType_VsSeeker4D(struct Sprite *); +static void MovementType_VsSeeker4E(struct Sprite *); +static void MovementType_VsSeeker4F(struct Sprite *); +static void MovementType_WanderAroundSlowest(struct Sprite *); #define movement_type_def(setup, table) \ static u8 setup##_callback(struct ObjectEvent *, struct Sprite *); \ @@ -198,87 +198,87 @@ void (*const gCameraObjectFuncs[])(struct Sprite *) = { #include "data/object_events/object_event_graphics.h" static void (*const sMovementTypeCallbacks[])(struct Sprite *) = { - MovementType_None, - MovementType_LookAround, - MovementType_WanderAround, - MovementType_WanderUpAndDown, - MovementType_WanderUpAndDown, - MovementType_WanderLeftAndRight, - MovementType_WanderLeftAndRight, - MovementType_FaceDirection, - MovementType_FaceDirection, - MovementType_FaceDirection, - MovementType_FaceDirection, - MovementType_Player, - NULL, - MovementType_FaceDownAndUp, - MovementType_FaceLeftAndRight, - MovementType_FaceUpAndLeft, - MovementType_FaceUpAndRight, - MovementType_FaceDownAndLeft, - MovementType_FaceDownAndRight, - MovementType_FaceDownUpAndLeft, - MovementType_FaceDownUpAndRight, - MovementType_FaceUpRightAndLeft, - MovementType_FaceDownRightAndLeft, - MovementType_RotateCounterclockwise, - MovementType_RotateClockwise, - MovementType_WalkBackAndForth, - MovementType_WalkBackAndForth, - MovementType_WalkBackAndForth, - MovementType_WalkBackAndForth, - MovementType_WalkSequenceUpRightLeftDown, - MovementType_WalkSequenceRightLeftDownUp, - MovementType_WalkSequenceDownUpRightLeft, - MovementType_WalkSequenceLeftDownUpRight, - MovementType_WalkSequenceUpLeftRightDown, - MovementType_WalkSequenceLeftRightDownUp, - MovementType_WalkSequenceDownUpLeftRight, - MovementType_WalkSequenceRightDownUpLeft, - MovementType_WalkSequenceLeftUpDownRight, - MovementType_WalkSequenceUpDownRightLeft, - MovementType_WalkSequenceRightLeftUpDown, - MovementType_WalkSequenceDownRightLeftUp, - MovementType_WalkSequenceRightUpDownLeft, - MovementType_WalkSequenceUpDownLeftRight, - MovementType_WalkSequenceLeftRightUpDown, - MovementType_WalkSequenceDownLeftRightUp, - MovementType_WalkSequenceUpLeftDownRight, - MovementType_WalkSequenceDownRightUpLeft, - MovementType_WalkSequenceLeftDownRightUp, - MovementType_WalkSequenceRightUpLeftDown, - MovementType_WalkSequenceUpRightDownLeft, - MovementType_WalkSequenceDownLeftUpRight, - MovementType_WalkSequenceLeftUpRightDown, - MovementType_WalkSequenceRightDownLeftUp, - MovementType_CopyPlayer, - MovementType_CopyPlayer, - MovementType_CopyPlayer, - MovementType_CopyPlayer, - MovementType_TreeDisguise, - MovementType_MountainDisguise, - MovementType_CopyPlayerInGrass, - MovementType_CopyPlayerInGrass, - MovementType_CopyPlayerInGrass, - MovementType_CopyPlayerInGrass, - MovementType_Buried, - MovementType_WalkInPlace, - MovementType_WalkInPlace, - MovementType_WalkInPlace, - MovementType_WalkInPlace, - MovementType_WalkSlowlyInPlace, - MovementType_WalkSlowlyInPlace, - MovementType_WalkSlowlyInPlace, - MovementType_WalkSlowlyInPlace, - MovementType_JogInPlace, - MovementType_JogInPlace, - MovementType_JogInPlace, - MovementType_JogInPlace, - MovementType_Invisible, - sub_8063298, - sub_80632BC, - sub_80632E0, - MovementType_WanderAroundDuplicate, + [MOVEMENT_TYPE_NONE] = MovementType_None, + [MOVEMENT_TYPE_LOOK_AROUND] = MovementType_LookAround, + [MOVEMENT_TYPE_WANDER_AROUND] = MovementType_WanderAround, + [MOVEMENT_TYPE_WANDER_UP_AND_DOWN] = MovementType_WanderUpAndDown, + [MOVEMENT_TYPE_WANDER_DOWN_AND_UP] = MovementType_WanderUpAndDown, + [MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT] = MovementType_WanderLeftAndRight, + [MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT] = MovementType_WanderLeftAndRight, + [MOVEMENT_TYPE_FACE_UP] = MovementType_FaceDirection, + [MOVEMENT_TYPE_FACE_DOWN] = MovementType_FaceDirection, + [MOVEMENT_TYPE_FACE_LEFT] = MovementType_FaceDirection, + [MOVEMENT_TYPE_FACE_RIGHT] = MovementType_FaceDirection, + [MOVEMENT_TYPE_PLAYER] = MovementType_Player, + [MOVEMENT_TYPE_BERRY_TREE_GROWTH] = NULL, + [MOVEMENT_TYPE_FACE_DOWN_AND_UP] = MovementType_FaceDownAndUp, + [MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT] = MovementType_FaceLeftAndRight, + [MOVEMENT_TYPE_FACE_UP_AND_LEFT] = MovementType_FaceUpAndLeft, + [MOVEMENT_TYPE_FACE_UP_AND_RIGHT] = MovementType_FaceUpAndRight, + [MOVEMENT_TYPE_FACE_DOWN_AND_LEFT] = MovementType_FaceDownAndLeft, + [MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT] = MovementType_FaceDownAndRight, + [MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT] = MovementType_FaceDownUpAndLeft, + [MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT] = MovementType_FaceDownUpAndRight, + [MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT] = MovementType_FaceUpRightAndLeft, + [MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT] = MovementType_FaceDownRightAndLeft, + [MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE] = MovementType_RotateCounterclockwise, + [MOVEMENT_TYPE_ROTATE_CLOCKWISE] = MovementType_RotateClockwise, + [MOVEMENT_TYPE_WALK_UP_AND_DOWN] = MovementType_WalkBackAndForth, + [MOVEMENT_TYPE_WALK_DOWN_AND_UP] = MovementType_WalkBackAndForth, + [MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT] = MovementType_WalkBackAndForth, + [MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT] = MovementType_WalkBackAndForth, + [MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN] = MovementType_WalkSequenceUpRightLeftDown, + [MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP] = MovementType_WalkSequenceRightLeftDownUp, + [MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT] = MovementType_WalkSequenceDownUpRightLeft, + [MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT] = MovementType_WalkSequenceLeftDownUpRight, + [MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN] = MovementType_WalkSequenceUpLeftRightDown, + [MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP] = MovementType_WalkSequenceLeftRightDownUp, + [MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT] = MovementType_WalkSequenceDownUpLeftRight, + [MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT] = MovementType_WalkSequenceRightDownUpLeft, + [MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT] = MovementType_WalkSequenceLeftUpDownRight, + [MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT] = MovementType_WalkSequenceUpDownRightLeft, + [MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN] = MovementType_WalkSequenceRightLeftUpDown, + [MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP] = MovementType_WalkSequenceDownRightLeftUp, + [MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT] = MovementType_WalkSequenceRightUpDownLeft, + [MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT] = MovementType_WalkSequenceUpDownLeftRight, + [MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN] = MovementType_WalkSequenceLeftRightUpDown, + [MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP] = MovementType_WalkSequenceDownLeftRightUp, + [MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT] = MovementType_WalkSequenceUpLeftDownRight, + [MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT] = MovementType_WalkSequenceDownRightUpLeft, + [MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP] = MovementType_WalkSequenceLeftDownRightUp, + [MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN] = MovementType_WalkSequenceRightUpLeftDown, + [MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT] = MovementType_WalkSequenceUpRightDownLeft, + [MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT] = MovementType_WalkSequenceDownLeftUpRight, + [MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN] = MovementType_WalkSequenceLeftUpRightDown, + [MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP] = MovementType_WalkSequenceRightDownLeftUp, + [MOVEMENT_TYPE_COPY_PLAYER] = MovementType_CopyPlayer, + [MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE] = MovementType_CopyPlayer, + [MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE] = MovementType_CopyPlayer, + [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE] = MovementType_CopyPlayer, + [MOVEMENT_TYPE_TREE_DISGUISE] = MovementType_TreeDisguise, + [MOVEMENT_TYPE_MOUNTAIN_DISGUISE] = MovementType_MountainDisguise, + [MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS] = MovementType_CopyPlayerInGrass, + [MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = MovementType_CopyPlayerInGrass, + [MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass, + [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass, + [MOVEMENT_TYPE_BURIED] = MovementType_Buried, + [MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = MovementType_WalkInPlace, + [MOVEMENT_TYPE_WALK_IN_PLACE_UP] = MovementType_WalkInPlace, + [MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = MovementType_WalkInPlace, + [MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT] = MovementType_WalkInPlace, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN] = MovementType_WalkSlowlyInPlace, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = MovementType_WalkSlowlyInPlace, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = MovementType_WalkSlowlyInPlace, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = MovementType_WalkSlowlyInPlace, + [MOVEMENT_TYPE_JOG_IN_PLACE_DOWN] = MovementType_JogInPlace, + [MOVEMENT_TYPE_JOG_IN_PLACE_UP] = MovementType_JogInPlace, + [MOVEMENT_TYPE_JOG_IN_PLACE_LEFT] = MovementType_JogInPlace, + [MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT] = MovementType_JogInPlace, + [MOVEMENT_TYPE_INVISIBLE] = MovementType_Invisible, + [MOVEMENT_TYPE_VS_SEEKER_4D] = MovementType_VsSeeker4D, + [MOVEMENT_TYPE_VS_SEEKER_4E] = MovementType_VsSeeker4E, + [MOVEMENT_TYPE_VS_SEEKER_4F] = MovementType_VsSeeker4F, + [MOVEMENT_TYPE_WANDER_AROUND_SLOWEST] = MovementType_WanderAroundSlowest, }; const bool8 gRangedMovementTypes[NUM_FIELD_MAP_OBJECT_TEMPLATES] = { @@ -350,19 +350,19 @@ const bool8 gRangedMovementTypes[NUM_FIELD_MAP_OBJECT_TEMPLATES] = { [MOVEMENT_TYPE_WALK_IN_PLACE_UP] = FALSE, [MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = FALSE, [MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT] = FALSE, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN] = FALSE, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = FALSE, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = FALSE, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = FALSE, [MOVEMENT_TYPE_JOG_IN_PLACE_DOWN] = FALSE, [MOVEMENT_TYPE_JOG_IN_PLACE_UP] = FALSE, [MOVEMENT_TYPE_JOG_IN_PLACE_LEFT] = FALSE, [MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT] = FALSE, - [MOVEMENT_TYPE_RUN_IN_PLACE_DOWN] = FALSE, - [MOVEMENT_TYPE_RUN_IN_PLACE_UP] = FALSE, - [MOVEMENT_TYPE_RUN_IN_PLACE_LEFT] = FALSE, - [MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT] = FALSE, [MOVEMENT_TYPE_INVISIBLE] = FALSE, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN] = FALSE, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = FALSE, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = FALSE, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = TRUE, + [MOVEMENT_TYPE_VS_SEEKER_4D] = FALSE, + [MOVEMENT_TYPE_VS_SEEKER_4E] = FALSE, + [MOVEMENT_TYPE_VS_SEEKER_4F] = FALSE, + [MOVEMENT_TYPE_WANDER_AROUND_SLOWEST] = TRUE, }; const u8 gInitialMovementTypeFacingDirections[NUM_FIELD_MAP_OBJECT_TEMPLATES] = { @@ -434,19 +434,19 @@ const u8 gInitialMovementTypeFacingDirections[NUM_FIELD_MAP_OBJECT_TEMPLATES] = [MOVEMENT_TYPE_WALK_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT] = DIR_EAST, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN] = DIR_SOUTH, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST, + [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, [MOVEMENT_TYPE_JOG_IN_PLACE_DOWN] = DIR_SOUTH, [MOVEMENT_TYPE_JOG_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_JOG_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT] = DIR_EAST, - [MOVEMENT_TYPE_RUN_IN_PLACE_DOWN] = DIR_SOUTH, - [MOVEMENT_TYPE_RUN_IN_PLACE_UP] = DIR_NORTH, - [MOVEMENT_TYPE_RUN_IN_PLACE_LEFT] = DIR_WEST, - [MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT] = DIR_EAST, [MOVEMENT_TYPE_INVISIBLE] = DIR_SOUTH, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN] = DIR_SOUTH, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_SOUTH, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_SOUTH, - [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_SOUTH, + [MOVEMENT_TYPE_VS_SEEKER_4D] = DIR_SOUTH, + [MOVEMENT_TYPE_VS_SEEKER_4E] = DIR_SOUTH, + [MOVEMENT_TYPE_VS_SEEKER_4F] = DIR_SOUTH, + [MOVEMENT_TYPE_WANDER_AROUND_SLOWEST] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_0 0x1103 @@ -2725,7 +2725,7 @@ u16 GetObjectPaletteTag(u8 palSlot) movement_type_empty_callback(MovementType_None) movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround) -movement_type_def(MovementType_WanderAroundDuplicate, gMovementTypeFuncs_WanderAroundDuplicate) +movement_type_def(MovementType_WanderAroundSlowest, gMovementTypeFuncs_WanderAroundSlowest) static bool8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { @@ -2785,7 +2785,7 @@ static bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, st return TRUE; } -static bool8 MovementType_WanderAround_Step5Duplicate(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_WanderAround_Step5Slowest(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowestMovementAction(objectEvent->movementDirection)); objectEvent->singleMovementActive = TRUE; @@ -4603,45 +4603,45 @@ static bool8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struc return FALSE; } -void sub_8063298(struct Sprite *sprite) +void MovementType_VsSeeker4D(struct Sprite *sprite) { - UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, sub_8063304); + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_VsSeeker4D_Callback); } -void sub_80632BC(struct Sprite *sprite) +void MovementType_VsSeeker4E(struct Sprite *sprite) { - UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, sub_8063324); + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_VsSeeker4E_Callback); } -void sub_80632E0(struct Sprite *sprite) +void MovementType_VsSeeker4F(struct Sprite *sprite) { - UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, sub_8063344); + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_VsSeeker4F_Callback); } -static u8 sub_8063304(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static u8 MovementType_VsSeeker4D_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - return gUnknown_83A63F0[sprite->data[1]](objectEvent, sprite); + return gMovementTypeFuncs_VsSeeker4D[sprite->data[1]](objectEvent, sprite); } -static u8 sub_8063324(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static u8 MovementType_VsSeeker4E_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - return gUnknown_83A63FC[sprite->data[1]](objectEvent, sprite); + return gMovementTypeFuncs_VsSeeker4E[sprite->data[1]](objectEvent, sprite); } -static u8 sub_8063344(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static u8 MovementType_VsSeeker4F_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - return gUnknown_83A6404[sprite->data[1]](objectEvent, sprite); + return gMovementTypeFuncs_VsSeeker4F[sprite->data[1]](objectEvent, sprite); } -static bool8 sub_8063364(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_VsSeeker4D_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ClearObjectEventMovement(objectEvent, sprite); - ObjectEventSetSingleMovement(objectEvent, sprite, 0x98); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_0x98); sprite->data[1] = 1; return TRUE; } -static bool8 sub_8063384(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_VsSeeker4D_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { @@ -4651,29 +4651,29 @@ static bool8 sub_8063384(struct ObjectEvent *objectEvent, struct Sprite *sprite) return FALSE; } -static bool8 sub_80633A4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_VsSeeker4D_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) { objectEvent->singleMovementActive = FALSE; return FALSE; } -static bool8 sub_80633B4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_VsSeeker4E_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ClearObjectEventMovement(objectEvent, sprite); - ObjectEventSetSingleMovement(objectEvent, sprite, 0x99); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_0x99); sprite->data[1] = 1; return FALSE; } -static bool8 sub_80633D4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_VsSeeker4F_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ClearObjectEventMovement(objectEvent, sprite); - ObjectEventSetSingleMovement(objectEvent, sprite, 0x9A); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_0x9A); sprite->data[1] = 1; return FALSE; } -static bool8 sub_80633F4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_VsSeeker4E_VsSeeker4F_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { @@ -7879,7 +7879,6 @@ static bool8 MovementActionFunc_x98_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x99_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - s32 y; switch (sprite->data[7]) { case 0: @@ -7892,8 +7891,8 @@ static bool8 MovementActionFunc_x99_1(struct ObjectEvent *objectEvent, struct Sp sprite->animPaused = FALSE; objectEvent->disableAnim = FALSE; } - y = -(3 * gSineTable[sprite->data[6]] >> 7); - objectEvent->singleMovementActive = (-(sprite->pos2.y = y) | y) >> 31; + sprite->pos2.y = -(3 * gSineTable[sprite->data[6]] >> 7); + objectEvent->singleMovementActive = sprite->pos2.y != 0; return FALSE; case 1: if (++sprite->data[4] > 16) @@ -8016,11 +8015,11 @@ static void TryEnableObjectEventAnim(struct ObjectEvent *objectEvent, struct Spr static void UpdateObjectEventVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8067A10(objectEvent, sprite); + CalcWhetherObjectIsOffscreen(objectEvent, sprite); UpdateObjEventSpriteVisibility(objectEvent, sprite); } -static void sub_8067A10(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static void CalcWhetherObjectIsOffscreen(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u16 x, y; u16 x2, y2; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index d2d6309f9..0eb36b523 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -69,7 +69,7 @@ static const u16 sMovingBgPals[] = INCBIN_U16("graphics/evolution_scene/transiti static const u8 sText_ShedinjaJapaneseName[] = _("ヌケニン"); -static const u8 unref_83F8445[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}"); +static const u8 unref_83F8445[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}"); static const u8 unref_83F844F[][10] = { _("▶\n "), diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index bf0afe5b8..2dab94e10 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -720,7 +720,7 @@ static void PlayerAvatarTransition_Bike(struct ObjectEvent * playerObjEvent) { QuestLogTryRecordPlayerAvatarGfxTransition(QL_PLAYER_GFX_BIKE); QuestLogCallUpdatePlayerSprite(QL_PLAYER_GFX_BIKE); - InitPlayerAvatarBikeState(0, 0); + BikeClearState(0, 0); } static void PlayerAvatarTransition_Surfing(struct ObjectEvent * playerObjEvent) @@ -913,7 +913,7 @@ void HandleEnforcedLookDirectionOnPlayerStopMoving(void) { if (gPlayerAvatar.tileTransitionState == T_TILE_CENTER || gPlayerAvatar.tileTransitionState == T_NOT_MOVING) { - if (player_should_look_direction_be_enforced_upon_movement()) + if (IsPlayerNotUsingAcroBikeOnBumpySlope()) PlayerForceSetHeldMovement(GetFaceDirectionMovementAction(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection)); } } @@ -1346,12 +1346,13 @@ void StartPlayerAvatarFishAnim(u8 direction) QuestLogCallUpdatePlayerSprite(QL_PLAYER_GFX_FISH); } -void nullsub_24(u8 direction) +// Stubbed from R/S +void PlayerUseAcroBikeOnBumpySlope(u8 direction) { } -static void nullsub_25(void) +static void SetPlayerAvatarWatering(void) { } @@ -1838,7 +1839,7 @@ static bool8 Fishing10(struct Task *task) { AlignFishingAnimationFrames(&gSprites[gPlayerAvatar.spriteId]); FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, gText_PokemonOnHook, 1, 0, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gText_PokemonOnHook, 1, 0, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->tStep++; task->tFrameCounter = 0; return FALSE; @@ -1885,7 +1886,7 @@ static bool8 Fishing12(struct Task *task) AlignFishingAnimationFrames(&gSprites[gPlayerAvatar.spriteId]); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, gText_NotEvenANibble, 1, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gText_NotEvenANibble, 1, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->tStep = FISHING_SHOW_RESULT; return TRUE; } @@ -1895,7 +1896,7 @@ static bool8 Fishing13(struct Task *task) { AlignFishingAnimationFrames(&gSprites[gPlayerAvatar.spriteId]); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); - AddTextPrinterParameterized2(0, 2, gText_ItGotAway, 1, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gText_ItGotAway, 1, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->tStep++; return TRUE; } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index db5173651..8e0e76488 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -29,7 +29,7 @@ static const struct WindowTemplate gUnknown_83C68E4 = { .baseBlock = 1, }; -static const u8 gUnknown_83C68EC[] = { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY }; +static const u8 gUnknown_83C68EC[] = { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY }; static void Task_EnableScriptAfterMusicFade(u8 taskId); static void Task_BarnDoorWipeChild(u8 taskId); diff --git a/src/graphics.c b/src/graphics.c index 7769e576c..04a6f6206 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1224,29 +1224,29 @@ const u16 gUnknown_8E99F24[] = INCBIN_U16("graphics/link_rfu/unk_8E9A168.gbapal" const u32 gEasyChatSelectGroupHelp_Tiles[] = INCBIN_U32("graphics/link_rfu/unk_8E99F44.4bpp.lz"); const u32 gEasyChatModeIcons_Tiles[] = INCBIN_U32("graphics/link_rfu/unk_8E9A168.4bpp.lz"); -const u32 gUnknown_8E9A460[] = INCBIN_U32("graphics/interface/trainer_memo.4bpp.lz"); -const u32 gUnknown_8E9B310[] = INCBIN_U32("graphics/interface/trainer_memo_pal1.gbapal"); +const u32 gPokeSumBgTiles[] = INCBIN_U32("graphics/interface/trainer_memo.4bpp.lz"); +const u32 gTrainerMemoPal1[] = INCBIN_U32("graphics/interface/trainer_memo_pal1.gbapal"); const u32 gUnknown_8E9B3B0[] = INCBIN_U32("graphics/interface/trainer_memo_pal2.gbapal"); const u32 gUnknown_8E9B3D0[] = INCBIN_U32("graphics/interface/trainer_memo_pal3.gbapal"); -const u32 gUnknown_8E9B3F0[] = INCBIN_U32("graphics/interface/summary_exp_bar.4bpp.lz"); -const u32 gUnknown_8E9B4B8[] = INCBIN_U32("graphics/interface/summary_hp_bar.4bpp.lz"); -const u16 gUnknown_8E9B578[] = INCBIN_U16("graphics/interface/summary_exp_bar.gbapal"); // hp bar uses this too +const u32 gPokeSummary_ExpBarTiles[] = INCBIN_U32("graphics/interface/summary_exp_bar.4bpp.lz"); +const u32 gPokeSummary_HpBarTiles[] = INCBIN_U32("graphics/interface/summary_hp_bar.4bpp.lz"); +const u16 gPokeSummary_ExpBarPals[] = INCBIN_U16("graphics/interface/summary_exp_bar.gbapal"); // hp bar uses this too -const u32 gUnknown_8E9B598[] = INCBIN_U32("graphics/interface/trainer_memo.bin.lz"); -const u32 gUnknown_8E9B750[] = INCBIN_U32("graphics/interface/trainer_memo_2.bin.lz"); -const u32 gUnknown_8E9B950[] = INCBIN_U32("graphics/interface/trainer_memo_3.bin.lz"); -const u32 gUnknown_8E9BA9C[] = INCBIN_U32("graphics/interface/trainer_memo_4.bin.lz"); -const u32 gUnknown_8E9BBCC[] = INCBIN_U32("graphics/interface/trainer_memo_5.bin.lz"); +const u32 gBgTilemap_TrainerMemo_Details[] = INCBIN_U32("graphics/interface/trainer_memo.bin.lz"); +const u32 gBgTilemap_TrainerMemo_Stats[] = INCBIN_U32("graphics/interface/trainer_memo_2.bin.lz"); +const u32 gBgTilemap_PokeSum_MovesListForDelete[] = INCBIN_U32("graphics/interface/trainer_memo_3.bin.lz"); +const u32 gBgTilemap_PokeSum_MoveDetailsForDelete[] = INCBIN_U32("graphics/interface/trainer_memo_4.bin.lz"); +const u32 gBgTilemap_TrainerMemo_Egg[] = INCBIN_U32("graphics/interface/trainer_memo_5.bin.lz"); const u16 gUnknown_8E9BD08[] = INCBIN_U16("graphics/unknown/unknown_E9BD08.gbapal"); // might be an alternate unused palette of the link_rfu gfx below. const u32 gEasyChatRedRectangularCursor_Tiles[] = INCBIN_U32("graphics/interface/link_rfu_frame.4bpp.lz"); -const u16 gUnknown_8E9BF28[] = INCBIN_U16("graphics/interface/link_rfu_frame.gbapal"); -const u32 gUnknown_8E9BF48[] = INCBIN_U32("graphics/interface/link_rfu_status.4bpp.lz"); +const u16 gPokeSummary_StatusAilmentIconPals[] = INCBIN_U16("graphics/interface/link_rfu_frame.gbapal"); +const u32 gPokeSummary_StatusAilmentIconTiles[] = INCBIN_U32("graphics/interface/link_rfu_status.4bpp.lz"); -const u16 gUnknown_8E9C14C[] = INCBIN_U16("graphics/interface/pokedex_abc.gbapal"); -const u16 gUnknown_8E9C16C[] = INCBIN_U16("graphics/interface/pokedex_abc.4bpp.lz"); +const u16 gDexScreen_TopMenuIconPals_AtoZ[] = INCBIN_U16("graphics/pokedex/cat_icon_abc.gbapal"); +const u32 gDexScreen_TopMenuIconTiles_AtoZ[] = INCBIN_U32("graphics/pokedex/cat_icon_abc.4bpp.lz"); const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); const u16 gUnknown_8E9C3F8[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); diff --git a/src/help_message.c b/src/help_message.c index 82a10a5ab..d47642a85 100644 --- a/src/help_message.c +++ b/src/help_message.c @@ -89,7 +89,7 @@ static void sub_8112FD0(void) sub_8112F18(sHelpMessageWindowId); } -static const u8 sHelpMessageTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GREY}; +static const u8 sHelpMessageTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GRAY}; static void PrintHelpMessageText(const u8 *text) { diff --git a/src/help_system_util.c b/src/help_system_util.c index cd7bd1acf..f23bbbcff 100644 --- a/src/help_system_util.c +++ b/src/help_system_util.c @@ -400,7 +400,8 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid case PLACEHOLDER_BEGIN: curChar = *src; src++; - if (curChar == PLACEHOLDER_ID_PLAYER) { + if (curChar == PLACEHOLDER_ID_PLAYER) + { for (i = 0; i < 10; i++) { if (gSaveBlock2Ptr->playerName[i] == EOS) @@ -477,42 +478,33 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid case EXT_CTRL_CODE_SHIFT_RIGHT: case EXT_CTRL_CODE_SHIFT_DOWN: src++; + case EXT_CTRL_CODE_RESET_FONT: + case EXT_CTRL_CODE_WAIT_BUTTON: + case EXT_CTRL_CODE_WAIT_SE: + case EXT_CTRL_CODE_FILL_WINDOW: + break; + case EXT_CTRL_CODE_CLEAR: + case EXT_CTRL_CODE_SKIP: + src++; break; case EXT_CTRL_CODE_CLEAR_TO: { -#ifdef NONMATCHING - curChar = *src; - clearPixels = curChar + orig_x - x; -#else // dumb fakematch - s32 r0; - register const u8 * _src asm("r2") = src; - asm("":::"r1"); - r0 = *_src; - r0 += orig_x; - clearPixels = r0 - x; -#endif + clearPixels = *src + orig_x - x; + if (clearPixels > 0) { destBlit.pixels = dest; destBlit.width = width * 8; destBlit.height = height * 8; - FillBitmapRect4Bit(&destBlit, x, y, clearPixels, GetFontAttribute(font, FONTATTR_MAX_LETTER_HEIGHT), - 0); + FillBitmapRect4Bit(&destBlit, x, y, clearPixels, GetFontAttribute(font, FONTATTR_MAX_LETTER_HEIGHT), 0); x += clearPixels; } src++; break; } - case EXT_CTRL_CODE_CLEAR: - case EXT_CTRL_CODE_SKIP: case EXT_CTRL_CODE_MIN_LETTER_SPACING: src++; break; - case EXT_CTRL_CODE_RESET_FONT: - case EXT_CTRL_CODE_WAIT_BUTTON: - case EXT_CTRL_CODE_WAIT_SE: - case EXT_CTRL_CODE_FILL_WINDOW: - break; case EXT_CTRL_CODE_JPN: case EXT_CTRL_CODE_ENG: break; @@ -521,7 +513,7 @@ void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 wid case CHAR_KEYPAD_ICON: curChar = *src; src++; - srcBlit.pixels = (u8 *)gKeypadIconTiles + 0x20 * GetKeypadIconTileOffset(curChar); + srcBlit.pixels = (u8 *)&gKeypadIconTiles[0x20 * GetKeypadIconTileOffset(curChar)]; srcBlit.width = 0x80; srcBlit.height = 0x80; destBlit.pixels = dest; diff --git a/src/item.c b/src/item.c index ab082c315..801c7d689 100644 --- a/src/item.c +++ b/src/item.c @@ -598,7 +598,7 @@ void TrySetObtainedItemQuestLogEvent(u16 itemId) || itemId == ITEM_SAPPHIRE ) { - if (itemId != ITEM_TOWN_MAP || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_GARYS_HOUSE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_GARYS_HOUSE))) + if (itemId != ITEM_TOWN_MAP || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_RIVALS_HOUSE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_RIVALS_HOUSE))) { ptr = malloc(sizeof(*ptr)); ptr->itemId = itemId; diff --git a/src/item_menu.c b/src/item_menu.c index 3abecc1f5..6b23482e5 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -289,9 +289,9 @@ static const struct YesNoFuncTable sYesNoMenu_Sell = { Task_SellItem_No }; -static const u8 sListItemTextColor_RegularItem[] = _("{COLOR_HIGHLIGHT_SHADOW RED TRANSPARENT GREEN}"); +static const u8 sListItemTextColor_RegularItem[] = _("{COLOR_HIGHLIGHT_SHADOW DARK_GRAY TRANSPARENT LIGHT_GRAY}"); -static const u8 sListItemTextColor_TmCase_BerryPouch[] = _("{COLOR_HIGHLIGHT_SHADOW LIGHT_GRAY TRANSPARENT BLACK}"); +static const u8 sListItemTextColor_TmCase_BerryPouch[] = _("{COLOR_HIGHLIGHT_SHADOW BLUE TRANSPARENT LIGHT_BLUE}"); static const struct ScrollArrowsTemplate sPocketSwitchArrowPairTemplate = { .firstArrowType = SCROLL_ARROW_LEFT, diff --git a/src/item_pc.c b/src/item_pc.c index 8f25e90ad..4366997ba 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -121,10 +121,10 @@ static const struct MenuAction sItemPcSubmenuOptions[] = { }; static const u8 sTextColors[][3] = { - {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, - {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}, - {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_DARK_GREY}, - {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GREY} + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}, + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}, + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_DARK_GRAY}, + {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GRAY} }; static const struct WindowTemplate sWindowTemplates[] = { diff --git a/src/item_use.c b/src/item_use.c index 585d44273..b801e9ee5 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -263,7 +263,7 @@ void FieldUseFunc_MachBike(u8 taskId) || MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE) DisplayItemMessageInCurrentContext(taskId, gTasks[taskId].data[3], 2, gUnknown_8416451); - else if (Overworld_IsBikingAllowed() == TRUE && !MetatileAtPlayerPositionForbidsBiking()) + else if (Overworld_IsBikingAllowed() == TRUE && !IsBikingDisallowedByPlayer()) { sItemUseOnFieldCB = ItemUseOnFieldCB_Bicycle; sub_80A103C(taskId); @@ -276,7 +276,7 @@ static void ItemUseOnFieldCB_Bicycle(u8 taskId) { if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) PlaySE(SE_BIKE_BELL); - StartTransitionToFlipBikeState(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE); + GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); ScriptContext2_Disable(); DestroyTask(taskId); diff --git a/src/librfu_intr.c b/src/librfu_intr.c index 41085182a..4c2f2573a 100644 --- a/src/librfu_intr.c +++ b/src/librfu_intr.c @@ -147,11 +147,7 @@ static void sio32intr_clock_slave(void) { u32 regSIODATA32; u32 r0; - #ifndef NONMATCHING - register u32 reqLen asm("r2"); - #else - u32 reqLen; - #endif + u32 reqLen; gSTWIStatus->timerActive = 0; STWI_set_timer_in_RAM(100); @@ -164,10 +160,14 @@ static void sio32intr_clock_slave(void) ((u32*)gSTWIStatus->rxPacket)[0] = regSIODATA32; gSTWIStatus->reqNext = 1; r0 = 0x99660000; - if ((regSIODATA32 >> 16) == (r0 >> 16)) + // variable reuse required + reqLen = (regSIODATA32 >> 16); + if (reqLen == (r0 >> 16)) { + // only reqLen = regSIODATA32 >> 8 is required to match, but it looks a bit + // more consistent when both lines update the variables. Might have been a macro? gSTWIStatus->reqLength = reqLen = regSIODATA32 >> 8; - gSTWIStatus->reqActiveCommand = regSIODATA32; + gSTWIStatus->reqActiveCommand = reqLen = (regSIODATA32 >> 0); if (gSTWIStatus->reqLength == 0) { if ( diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index 3f5bd8b69..9f642907b 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1425,35 +1425,35 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize, sending = ni_or_uni & 0x20; if (sending || ni_or_uni == 0x40) { - u8 *dataType_p; // a hack to swap instructions - slotStatus_NI = gRfuSlotStatusNI[bm_slot_id]; slotStatus_UNI = NULL; slotStatus_NI->send.errorCode = 0; - *slotStatus_NI->send.now_p = dataType_p = &slotStatus_NI->send.dataType; + slotStatus_NI->send.now_p[0] = &slotStatus_NI->send.dataType; slotStatus_NI->send.remainSize = 7; slotStatus_NI->send.bmSlotOrg = bmSendSlot; slotStatus_NI->send.bmSlot = bmSendSlot; slotStatus_NI->send.payloadSize = subFrameSize - frameSize; if (sending != 0) - *dataType_p = 0; + slotStatus_NI->send.dataType = 0; else - *dataType_p = 1; + slotStatus_NI->send.dataType = 1; slotStatus_NI->send.dataSize = dataSize; slotStatus_NI->send.src = src; slotStatus_NI->send.ack = 0; slotStatus_NI->send.phase = 0; - #ifndef NONMATCHING // to fix r2, r3, r4, r5 register roulette - asm("":::"r2"); - #endif for (i = 0; i < WINDOW_COUNT; ++i) { slotStatus_NI->send.recvAckFlag[i] = 0; slotStatus_NI->send.n[i] = 1; } for (bm_slot_id = 0; bm_slot_id < RFU_CHILD_MAX; ++bm_slot_id) - if ((bmSendSlot >> bm_slot_id) & 1) - gRfuSlotStatusNI[bm_slot_id]->send.failCounter = 0; + { + do + { + if ((bmSendSlot >> bm_slot_id) & 1) + gRfuSlotStatusNI[bm_slot_id]->send.failCounter = 0; + } while (0); + } gRfuLinkStatus->sendSlotNIFlag |= bmSendSlot; *llFrameSize_p -= subFrameSize; slotStatus_NI->send.state = SLOT_STATE_SEND_START; @@ -1758,9 +1758,6 @@ static void rfu_constructSendLLFrame(void) { u8 *maxSize = llf_p - offsetof(struct RfuFixed, LLFBuffer[1]); - // Does the volatile qualifier make sense? - // It's the same as: - // asm("":::"memory"); pakcketSize = maxSize - *(u8 *volatile *)&gRfuFixed; } } diff --git a/src/librfu_sio32id.c b/src/librfu_sio32id.c index b6623540f..d726bca7b 100644 --- a/src/librfu_sio32id.c +++ b/src/librfu_sio32id.c @@ -123,34 +123,30 @@ static void Sio32IDIntr(void) { u32 regSIODATA32; u16 delay; -#ifndef NONMATCHING - register u32 rfuSIO32IdUnk0_times_16 asm("r1"); - register u16 negRfuSIO32IdUnk6 asm("r0"); -#else u32 rfuSIO32IdUnk0_times_16; u16 negRfuSIO32IdUnk6; -#endif regSIODATA32 = REG_SIODATA32; if (gRfuSIO32Id.MS_mode != AGB_CLK_MASTER) REG_SIOCNT |= SIO_ENABLE; - rfuSIO32IdUnk0_times_16 = 16 * gRfuSIO32Id.MS_mode; // to handle side effect of inline asm - rfuSIO32IdUnk0_times_16 = (regSIODATA32 << rfuSIO32IdUnk0_times_16) >> 16; + rfuSIO32IdUnk0_times_16 = (regSIODATA32 << (16 * gRfuSIO32Id.MS_mode)) >> 16; regSIODATA32 = (regSIODATA32 << 16 * (1 - gRfuSIO32Id.MS_mode)) >> 16; if (gRfuSIO32Id.lastId == 0) { - if (rfuSIO32IdUnk0_times_16 == gRfuSIO32Id.recv_id) + u16 backup = rfuSIO32IdUnk0_times_16; + if (backup == gRfuSIO32Id.recv_id) { - if (gRfuSIO32Id.count > 3) + if (gRfuSIO32Id.count < 4) { - gRfuSIO32Id.lastId = regSIODATA32; - } - else if (rfuSIO32IdUnk0_times_16 == (u16)~gRfuSIO32Id.send_id) - { - negRfuSIO32IdUnk6 = ~gRfuSIO32Id.recv_id; - if (regSIODATA32 == negRfuSIO32IdUnk6) - ++gRfuSIO32Id.count; + backup = (u16)~gRfuSIO32Id.send_id; + if (gRfuSIO32Id.recv_id == backup) + { + if (regSIODATA32 == (u16)~gRfuSIO32Id.recv_id) + ++gRfuSIO32Id.count; + } } + else + gRfuSIO32Id.lastId = regSIODATA32; } else { diff --git a/src/link.c b/src/link.c index d9de614ea..2a242dde9 100644 --- a/src/link.c +++ b/src/link.c @@ -1709,7 +1709,7 @@ u32 GetLinkRecvQueueLength(void) return gLink.recvQueue.count; } -bool32 sub_800B270(void) +bool32 LinkRecvQueueLengthMoreThan2(void) { if (GetLinkRecvQueueLength() > 2) { diff --git a/src/list_menu.c b/src/list_menu.c index 5d3cb037f..b032ae012 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -748,12 +748,12 @@ void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value) } } -void sub_8107CD8(u8 palOffset, u16 speciesId) +void ListMenu_LoadMonIconPalette(u8 palOffset, u16 speciesId) { LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, 0x20); } -void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y) +void ListMenu_DrawMonIconGraphics(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y) { BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32); } @@ -871,18 +871,13 @@ void CgbModVol(struct CgbChannel *chan) if ((soundInfo->mode & 1) || !CgbPan(chan)) { chan->pan = 0xFF; - chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + chan->eg = (u32)(chan->leftVolume + chan->rightVolume); + chan->eg /= 16; } else { - // Force chan->rightVolume and chan->leftVolume to be read from memory again, - // even though there is no reason to do so. - // The command line option "-fno-gcse" achieves the same result as this. - #ifndef NONMATCHING - asm("" : : : "memory"); - #endif - - chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + chan->eg = (u32)(chan->leftVolume + chan->rightVolume); + chan->eg /= 16; if (chan->eg > 15) chan->eg = 15; } diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index 7666decd3..ec889a2f5 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -455,7 +455,7 @@ u16 MapPreview_CreateMapNameWindow(u8 mapsec) PutWindowTilemap(windowId); color[0] = TEXT_COLOR_WHITE; // Access violation color[1] = TEXT_COLOR_RED; // Access violation - color[2] = TEXT_COLOR_LIGHT_GREY; // Access violation + color[2] = TEXT_COLOR_LIGHT_GRAY; // Access violation GetMapName(gStringVar4, mapsec, 0); xctr = 104 - GetStringWidth(2, gStringVar4, 0); AddTextPrinterParameterized4(windowId, 2, xctr / 2, 2, 0, 0, color/* Access violation */, -1, gStringVar4); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 01ea44ae5..a64a4a0cd 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -132,7 +132,7 @@ bool8 sub_80BF748(void) { if (MenuHelpers_CallLinkSomething() == TRUE) return TRUE; - else if (sub_800B270() != TRUE) + else if (LinkRecvQueueLengthMoreThan2() != TRUE) return FALSE; else return TRUE; diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 4728ca05c..95215d7b6 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -598,7 +598,7 @@ bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_ReturnFalse_9(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsFortreeBridge(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_UnusedReturnFalse(u8 metatileBehavior){ return FALSE; } bool8 MetatileBehavior_UnusedReturnFalse_2(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_UnusedReturnFalse_3(u8 metatileBehavior) { return FALSE; } @@ -691,9 +691,9 @@ bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_IsMB0A(u8 metatileBehavior) +bool8 MetatileBehavior_IsRunningDisallowed(u8 metatileBehavior) { - if(metatileBehavior == MB_0A) + if(metatileBehavior == MB_RUNNING_DISALLOWED) return TRUE; else return FALSE; diff --git a/src/naming_screen.c b/src/naming_screen.c index 76c1a241e..2f40cf2aa 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -706,7 +706,7 @@ static void pokemon_transfer_to_pc_with_message(void) StringExpandPlaceholders(gStringVar4, sTransferredToPCMessages[stringToDisplay]); DrawDialogueFrame(0, FALSE); gTextFlags.canABSpeedUpPrint = TRUE; - AddTextPrinterParameterized2(0, 2, gStringVar4, GetTextSpeedSetting(), NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gStringVar4, GetTextSpeedSetting(), NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); CopyWindowToVram(0, COPYWIN_BOTH); } @@ -1814,9 +1814,9 @@ struct TextColor // Needed because of alignment static const struct TextColor sTextColorStruct = { { - {TEXT_DYNAMIC_COLOR_4, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, - {TEXT_DYNAMIC_COLOR_5, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, - {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY} + {TEXT_DYNAMIC_COLOR_4, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}, + {TEXT_DYNAMIC_COLOR_5, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}, + {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY} } }; @@ -1880,7 +1880,7 @@ static void sub_809FA60(void) static void sub_809FAE4(void) { - const u8 color[3] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY }; + const u8 color[3] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY }; int strwidth = GetStringWidth(0, gText_MoveOkBack, 0); FillWindowPixelBuffer(sNamingScreenData->windows[4], PIXEL_FILL(15)); diff --git a/src/option_menu.c b/src/option_menu.c index f011bc1ec..0d7d22071 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -176,7 +176,7 @@ static const u8 *const sButtonTypeOptions[] = gText_ButtonTypeLEqualsA }; -static const u8 sOptionMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; +static const u8 sOptionMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}; static const u8 sOptionMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; // Functions diff --git a/src/overworld.c b/src/overworld.c index 10a700e1f..2083b7578 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3117,13 +3117,13 @@ static u16 GetDirectionForEventScript(const u8 *script) return FACING_FORCED_RIGHT; else if (script == BattleColosseum_4P_EventScript_PlayerSpot3) return FACING_FORCED_LEFT; - else if (script == RecordCenter_EventScript_Spot0) + else if (script == RecordCorner_EventScript_Spot0) return FACING_FORCED_RIGHT; - else if (script == RecordCenter_EventScript_Spot1) + else if (script == RecordCorner_EventScript_Spot1) return FACING_FORCED_LEFT; - else if (script == RecordCenter_EventScript_Spot2) + else if (script == RecordCorner_EventScript_Spot2) return FACING_FORCED_RIGHT; - else if (script == RecordCenter_EventScript_Spot3) + else if (script == RecordCorner_EventScript_Spot3) return FACING_FORCED_LEFT; else if (script == BattleColosseum_2P_EventScript_PlayerSpot0) return FACING_FORCED_RIGHT; diff --git a/src/party_menu.c b/src/party_menu.c index 8dcc1d450..e08c427c8 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -3125,7 +3125,7 @@ static void CB2_ShowPokemonSummaryScreen(void) { if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) UpdatePartyToBattleOrder(); - ShowPokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen, 0); + ShowPokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen, PSS_MODE_NORMAL); } static void CB2_ReturnToPartyMenuFromSummaryScreen(void) diff --git a/src/party_menu_specials.c b/src/party_menu_specials.c index 56e3373ec..03e77f52c 100644 --- a/src/party_menu_specials.c +++ b/src/party_menu_specials.c @@ -44,7 +44,7 @@ static void sub_80BF97C(u8 taskId) void SelectMoveDeleterMove(void) { ShowSelectMovePokemonSummaryScreen(gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField, 0); - sub_8138B38(3); + SetPokemonSummaryScreenMode(PSS_MODE_FORGET_MOVE); gFieldCallback = FieldCB_ContinueScriptHandleMusic; } diff --git a/src/pokedex.c b/src/pokedex.c index c49767ea9..e3e83c3c4 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -22,7 +22,7 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data) s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) { - return sub_8104AB0(nationalDexNo, caseID, 0); + return DexScreen_GetSetPokedexFlag(nationalDexNo, caseID, 0); } u16 GetNationalPokedexCount(u8 caseID) diff --git a/src/pokedex_area_markers.c b/src/pokedex_area_markers.c index a47d6876d..5226133ac 100644 --- a/src/pokedex_area_markers.c +++ b/src/pokedex_area_markers.c @@ -157,7 +157,7 @@ static void Task_ShowAreaMarkers(u8 taskId) gSprites[data->spr_id].invisible = FALSE; } -u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y) +u8 Ctor_PokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y) { struct SpriteTemplate spriteTemplate; struct CompressedSpriteSheet spriteSheet; @@ -201,7 +201,7 @@ u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y) return taskId; } -void sub_81343F4(u8 taskId) +void Dtor_PokedexAreaMarkers(u8 taskId) { struct PAM_TaskData * data = (void *)gTasks[taskId].data; FreeSpriteTilesByTag(data->tilesTag); @@ -228,7 +228,7 @@ void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites) subsprites[i].y = sSubspriteLookupTable[whichArea][2]; } -u8 sub_81344E0(u8 taskId) +u8 PokedexAreaMarkers_Any(u8 taskId) { struct PAM_TaskData * data = (void *)gTasks[taskId].data; return data->subsprites.subspriteCount; diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 3c05010ae..dc8968a5f 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -20,58 +20,64 @@ #include "pokedex_area_markers.h" #include "field_specials.h" +enum TextMode { + TEXT_LEFT, + TEXT_CENTER, + TEXT_RIGHT +}; + struct PokedexScreenData { - u8 field_00; - u8 field_01; - u8 field_02[4]; - u32 field_08; - u32 field_0C; - u16 field_10; - u16 field_12; - u8 field_14; - u8 field_15; - u8 field_16; - u8 field_17; - u16 field_18[4]; - u8 field_20[4]; - u8 field_24[4]; - u8 field_28; - u8 field_29; - u8 field_2A; - u8 field_2B; - u8 field_2C; - u8 field_2D; - u8 field_2E; - u8 field_2F; - u32 field_30; - u16 field_34; - u16 field_36; - u16 field_38; - u16 field_3A; - u16 field_3C; - u16 field_3E; - u8 field_40; - u8 field_41; - u8 field_42; - struct ListMenuItem * field_44; - u16 field_48; - u8 field_4A[0x10]; - u16 field_5A; - u16 * field_5C; - u8 field_60; - u8 field_61; - u16 field_62; - u8 field_64; - u16 field_66; - u16 field_68; - u16 field_6A; - u16 field_6C; + u8 taskId; + u8 state; + u8 data[4]; + u32 unlockedCategories; + u32 modeSelectInput; + u16 modeSelectItemsAbove; + u16 modeSelectCursorPos; + u8 modeSelectWindowId; + u8 selectionIconWindowId; + u8 dexCountsWindowId; + u8 modeSelectListMenuId; + u16 pageSpecies[4]; + u8 categoryMonWindowIds[4]; + u8 categoryMonInfoWindowIds[4]; + u8 category; + u8 firstPageInCategory; + u8 lastPageInCategory; + u8 pageNum; + u8 numMonsOnPage; + u8 categoryCursorPosInPage; + u8 categoryPageSelectionCursorTimer; + u8 parentOfCategoryMenu; + u32 characteristicMenuInput; + u16 kantoOrderMenuItemsAbove; + u16 kantoOrderMenuCursorPos; + u16 characteristicOrderMenuItemsAbove; + u16 characteristicOrderMenuCursorPos; + u16 nationalOrderMenuItemsAbove; + u16 nationalOrderMenuCursorPos; + u8 numericalOrderWindowId; + u8 orderedListMenuTaskId; + u8 dexOrderId; + struct ListMenuItem * listItems; + u16 orderedDexCount; + u8 windowIds[0x10]; + u16 dexSpecies; + u16 * bgBufsMem; + u8 scrollArrowsTaskId; + u8 categoryPageCursorTaskId; + u16 modeSelectCursorPosBak; + u8 unlockedSeviiAreas; + u16 numSeenKanto; + u16 numOwnedKanto; + u16 numSeenNational; + u16 numOwnedNational; }; struct PokedexScreenWindowGfx { - const u16 * map; + const u32 * tiles; const u16 * pal; }; @@ -81,61 +87,61 @@ struct PokedexCategoryPage u8 count; }; -EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL; - -static void sub_810287C(u8 taskId); -static void sub_8102C28(void); -static void sub_8102F80(u8 taskId); -static void sub_810317C(void); -static void sub_8103238(u8 taskId); -static void sub_810345C(void); -static u16 sub_8103518(u8 a0); -static void sub_8103924(const struct ListMenuTemplate * a0, u8 a1); -static u8 sub_81039F0(void); -static void sub_8103988(u8 a0); -static void sub_8103AC8(u8 taskId); -static u8 sub_8104234(void); -static int sub_8104284(void); -static void sub_81042EC(u8 taskId); -static bool32 sub_8104664(u8 a0); -void sub_81047B0(u8 *windowId_p); -void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx); -static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx); -void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y); -static u16 sub_8104BBC(u8 caseId, bool8 whichDex); -void sub_8104C2C(const u8 *src); -void sub_8104E90(void); -bool8 sub_8104F0C(bool8 a0); -void sub_8105058(u8 a0); -void sub_8105178(u8 a0, u8 a1, u8 a2); -static bool8 sub_81052D0(u8 a0); -void sub_8105594(u8 a0, u8 a1); -u8 sub_8105E1C(u8 a0); -u8 sub_8106014(void); -u8 sub_810603C(void); -bool8 sub_8106838(u8 category, u8 a1); -u8 sub_81068A0(u8 a0); -u8 sub_810699C(u8 category); -bool8 sub_8106A20(u16 a0); -u8 sub_81067C0(void); -void sub_81068DC(u8 category, u8 a1); -u8 sub_8106AF8(u16 a0); -void sub_8106B34(void); -void sub_8106E78(const u8 *a0, s32 a1); -static void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list); -static void sub_8102F48(u8 windowId, s32 itemId, u8 y); -static void sub_8103A40(u8 windowId, s32 itemId, u8 y); -static void sub_8106BD8(u8 taskId); -static void sub_8106BE8(u8 taskId); +EWRAM_DATA static struct PokedexScreenData * sPokedexScreenData = NULL; + +static void Task_PokedexScreen(u8 taskId); +static void DexScreen_InitGfxForTopMenu(void); +static void Task_DexScreen_NumericalOrder(u8 taskId); +static void DexScreen_InitGfxForNumericalOrderList(void); +static void Task_DexScreen_CharacteristicOrder(u8 taskId); +static void DexScreen_CreateCharacteristicListMenu(void); +static u16 DexScreen_CountMonsInOrderedList(u8 orderIdx); +static void DexScreen_InitListMenuForOrderedList(const struct ListMenuTemplate * template, u8 order); +static u8 DexScreen_CreateDexOrderScrollArrows(void); +static void DexScreen_DestroyDexOrderListMenu(u8 order); +static void Task_DexScreen_CategorySubmenu(u8 taskId); +static u8 DexScreen_CreateCategoryMenuScrollArrows(void); +static int DexScreen_InputHandler_GetShoulderInput(void); +static void Task_DexScreen_ShowMonPage(u8 taskId); +static bool32 DexScreen_TryScrollMonsVertical(u8 direction); +static void DexScreen_RemoveWindow(u8 *windowId_p); +static void DexScreen_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx); +static void DexScreen_PrintNum3RightAlign(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx); +static void DexScreen_PrintMonDexNo(u8 windowId, u8 fontId, u16 species, u8 x, u8 y); +static u16 DexScreen_GetDexCount(u8 caseId, bool8 whichDex); +static void DexScreen_PrintControlInfo(const u8 *src); +static void DexScreen_DestroyCategoryPageMonIconAndInfoWindows(void); +static bool8 DexScreen_CreateCategoryListGfx(bool8 justRegistered); +static void DexScreen_CreateCategoryPageSelectionCursor(u8 cursorPos); +static void DexScreen_UpdateCategoryPageCursorObject(u8 taskId, u8 cursorPos, u8 numMonsInPage); +static bool8 DexScreen_FlipCategoryPageInDirection(u8 direction); +void DexScreen_DexPageZoomEffectFrame(u8 bg, u8 scale); +static u8 DexScreen_DrawMonDexPage(bool8 justRegistered); +u8 RemoveDexPageWindows(void); +u8 DexScreen_DrawMonAreaPage(void); +static bool8 DexScreen_IsPageUnlocked(u8 category, u8 pageNum); +static bool8 DexScreen_IsCategoryUnlocked(u8 category); +static u8 DexScreen_GetPageLimitsForCategory(u8 category); +static bool8 DexScreen_LookUpCategoryBySpecies(u16 species); +u8 DexScreen_DestroyAreaScreenResources(void); +void DexScreen_CreateCategoryPageSpeciesList(u8 category, u8 pageNum); +static u8 DexScreen_PageNumberToRenderablePages(u16 page); +void DexScreen_InputHandler_StartToCry(void); +void DexScreen_PrintStringWithAlignment(const u8 *str, s32 mode); +static void MoveCursorFunc_DexModeSelect(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void ItemPrintFunc_DexModeSelect(u8 windowId, s32 itemId, u8 y); +static void ItemPrintFunc_OrderedListMenu(u8 windowId, s32 itemId, u8 y); +static void Task_DexScreen_RegisterNonKantoMonBeforeNationalDex(u8 taskId); +static void Task_DexScreen_RegisterMonToPokedex(u8 taskId); #include "data/pokemon_graphics/footprint_table.h" -const u8 gUnknown_8440124[] = INCBIN_U8("graphics/pokedex/unk_8440124.bin.lz"); -const u8 gUnknown_8440274[] = INCBIN_U8("graphics/pokedex/unk_8440274.4bpp.lz"); -const u8 gUnknown_84403AC[] = INCBIN_U8("graphics/pokedex/unk_84403AC.4bpp.lz"); -const u16 gUnknown_84404C8[] = INCBIN_U16("graphics/pokedex/unk_84404C8.gbapal"); +const u32 sCategoryMonInfoBgTiles[] = INCBIN_U32("graphics/pokedex/mini_page.4bpp.lz"); +const u32 sKantoDexTiles[] = INCBIN_U32("graphics/pokedex/kanto_dex_bgtiles.4bpp.lz"); +const u32 sNatDexTiles[] = INCBIN_U32("graphics/pokedex/national_dex_bgtiles.4bpp.lz"); +const u16 sKantoDexPalette[0x100] = INCBIN_U16("graphics/pokedex/kanto_dex_bgpals.gbapal"); -const u16 gUnknown_84406C8[] = { +const u16 sDexScreen_CategoryCursorPals[] = { RGB(24, 22, 17), RGB(26, 24, 20), RGB(26, 20, 15), RGB(27, 23, 19), RGB(28, 18, 15), RGB(28, 22, 19), @@ -144,47 +150,47 @@ const u16 gUnknown_84406C8[] = { RGB(26, 20, 15), RGB(27, 23, 19) }; -const u16 gUnknown_84406E0[] = INCBIN_U16("graphics/pokedex/unk_84406E0.gbapal"); -const u16 gUnknown_84408E0[] = INCBIN_U16("graphics/pokedex/unk_84408E0.bin.lz"); -const u16 gUnknown_8440BD8[] = INCBIN_U16("graphics/pokedex/unk_8440BD8.bin.lz"); -const u32 gUnknown_8440EF0[] = INCBIN_U32("graphics/pokedex/unk_8440EF0.bin.lz"); -const u16 gUnknown_844112C[] = INCBIN_U16("graphics/pokedex/unk_844112C.bin.lz"); -const u16 gUnknown_84414BC[] = INCBIN_U16("graphics/pokedex/unk_84414BC.bin.lz"); -const u32 gUnknown_8441808[] = INCBIN_U32("graphics/pokedex/unk_8441808.bin.lz"); -const u16 gUnknown_8441A40[] = INCBIN_U16("graphics/pokedex/unk_8441A40.bin.lz"); -const u16 gUnknown_8441D54[] = INCBIN_U16("graphics/pokedex/unk_8441D54.bin.lz"); -const u16 gUnknown_8442004[] = INCBIN_U16("graphics/pokedex/unk_8442004.bin.lz"); -const u16 gUnknown_844223C[] = INCBIN_U16("graphics/pokedex/unk_844223C.bin.lz"); -const u16 gUnknown_84424E4[] = INCBIN_U16("graphics/pokedex/unk_84424E4.bin.lz"); -const u16 gUnknown_8442838[] = INCBIN_U16("graphics/pokedex/unk_8442838.bin.lz"); -const u16 gUnknown_8442BC0[] = INCBIN_U16("graphics/pokedex/unk_8442BC0.bin.lz"); -const u16 gUnknown_8442EF8[] = INCBIN_U16("graphics/pokedex/unk_8442EF8.bin.lz"); -const u16 gUnknown_844318C[] = INCBIN_U16("graphics/pokedex/unk_844318C.bin.lz"); -const u16 gUnknown_8443420[] = INCBIN_U16("graphics/pokedex/unk_8443420.gbapal"); -const u16 gUnknown_8443440[] = INCBIN_U16("graphics/pokedex/unk_8443440.gbapal"); -const u16 gUnknown_8443460[] = INCBIN_U16("graphics/pokedex/unk_8443460.gbapal"); -const u16 gUnknown_8443480[] = INCBIN_U16("graphics/pokedex/unk_8443480.gbapal"); -const u16 gUnknown_84434A0[] = INCBIN_U16("graphics/pokedex/unk_84434A0.gbapal"); -const u16 gUnknown_84434C0[] = INCBIN_U16("graphics/pokedex/unk_84434C0.gbapal"); -const u16 gUnknown_84434E0[] = INCBIN_U16("graphics/pokedex/unk_84434E0.gbapal"); -const u16 gUnknown_8443500[] = INCBIN_U16("graphics/pokedex/unk_8443500.gbapal"); -const u16 gUnknown_8443520[] = INCBIN_U16("graphics/pokedex/unk_8443520.gbapal"); -const u16 gUnknown_8443540[] = INCBIN_U16("graphics/pokedex/unk_8443540.gbapal"); -const u16 gUnknown_8443560[] = INCBIN_U16("graphics/pokedex/unk_8443560.gbapal"); -const u16 gUnknown_8443580[] = INCBIN_U16("graphics/pokedex/unk_8443580.gbapal"); -const u16 gUnknown_84435A0[] = INCBIN_U16("graphics/pokedex/unk_84435A0.gbapal"); -const u16 gUnknown_84435C0[] = INCBIN_U16("graphics/pokedex/unk_84435C0.gbapal"); -const u16 gUnknown_84435E0[] = INCBIN_U16("graphics/pokedex/unk_84435E0.gbapal"); -const u8 gUnknown_8443600[] = INCBIN_U8("graphics/pokedex/unk_8443600.4bpp"); -const u32 gUnknown_8443620[] = INCBIN_U32("graphics/pokedex/unk_8443620.bin.lz"); -const u32 gUnknown_8443910[] = INCBIN_U32("graphics/pokedex/unk_8443910.bin.lz"); -const u32 gUnknown_8443988[] = INCBIN_U32("graphics/pokedex/unk_8443988.bin.lz"); -const u32 gUnknown_84439FC[] = INCBIN_U32("graphics/pokedex/unk_84439FC.bin.lz"); -const u32 gUnknown_8443A78[] = INCBIN_U32("graphics/pokedex/unk_8443A78.bin.lz"); -const u32 gUnknown_8443AF8[] = INCBIN_U32("graphics/pokedex/unk_8443AF8.bin.lz"); -const u32 gUnknown_8443BB0[] = INCBIN_U32("graphics/pokedex/unk_8443BB0.bin.lz"); -const u32 gUnknown_8443C54[] = INCBIN_U32("graphics/pokedex/unk_8443C54.bin.lz"); -const u16 gUnknown_8443D00[] = INCBIN_U16("graphics/pokedex/unk_8443D00.4bpp"); +const u16 sNationalDexPalette[0x100] = INCBIN_U16("graphics/pokedex/national_dex_bgpals.gbapal"); +const u32 sTopMenuIconTiles_Cave[] = INCBIN_U32("graphics/pokedex/cat_icon_cave.4bpp.lz"); +const u32 sTopMenuIconTiles_Urban[] = INCBIN_U32("graphics/pokedex/cat_icon_urban.4bpp.lz"); +const u32 sTopMenuSelectionIconTiles_Cancel[] = INCBIN_U32("graphics/pokedex/cat_icon_cancel.4bpp.lz"); +const u32 sTopMenuIconTiles_Forest[] = INCBIN_U32("graphics/pokedex/cat_icon_forest.4bpp.lz"); +const u32 sTopMenuIconTiles_Grassland[] = INCBIN_U32("graphics/pokedex/cat_icon_grassland.4bpp.lz"); +const u32 sTopMenuIconTiles_QuestionMark[] = INCBIN_U32("graphics/pokedex/cat_icon_qmark.4bpp.lz"); +const u32 sTopMenuIconTiles_Mountain[] = INCBIN_U32("graphics/pokedex/cat_icon_mountain.4bpp.lz"); +const u32 sTopMenuIconTiles_Rare[] = INCBIN_U32("graphics/pokedex/cat_icon_rare.4bpp.lz"); +const u32 sTopMenuIconTiles_Sea[] = INCBIN_U32("graphics/pokedex/cat_icon_sea.4bpp.lz"); +const u32 sTopMenuIconTiles_Numerical[] = INCBIN_U32("graphics/pokedex/cat_icon_numerical.4bpp.lz"); +const u32 sTopMenuIconTiles_RoughTerrain[] = INCBIN_U32("graphics/pokedex/cat_icon_rough_terrain.4bpp.lz"); +const u32 sTopMenuIconTiles_WatersEdge[] = INCBIN_U32("graphics/pokedex/cat_icon_waters_edge.4bpp.lz"); +const u32 sTopMenuIconTiles_Type[] = INCBIN_U32("graphics/pokedex/cat_icon_type.4bpp.lz"); +const u32 sTopMenuIconTiles_Lightest[] = INCBIN_U32("graphics/pokedex/cat_icon_lightest.4bpp.lz"); +const u32 sTopMenuIconTiles_Smallest[] = INCBIN_U32("graphics/pokedex/cat_icon_smallest.4bpp.lz"); +const u16 sTopMenuIconPals_Cave[] = INCBIN_U16("graphics/pokedex/cat_icon_cave.gbapal"); +const u16 sTopMenuIconPals_Urban[] = INCBIN_U16("graphics/pokedex/cat_icon_urban.gbapal"); +const u16 sTopMenuSelectionIconPals_Cancel[] = INCBIN_U16("graphics/pokedex/cat_icon_cancel.gbapal"); +const u16 sTopMenuIconPals_Forest[] = INCBIN_U16("graphics/pokedex/cat_icon_forest.gbapal"); +const u16 sTopMenuIconPals_Grassland[] = INCBIN_U16("graphics/pokedex/cat_icon_grassland.gbapal"); +const u16 sTopMenuIconPals_QuestionMark[] = INCBIN_U16("graphics/pokedex/cat_icon_qmark.gbapal"); +const u16 sTopMenuIconPals_Mountain[] = INCBIN_U16("graphics/pokedex/cat_icon_mountain.gbapal"); +const u16 sTopMenuIconPals_Rare[] = INCBIN_U16("graphics/pokedex/cat_icon_rare.gbapal"); +const u16 sTopMenuIconPals_Sea[] = INCBIN_U16("graphics/pokedex/cat_icon_sea.gbapal"); +const u16 sTopMenuIconPals_Numerical[] = INCBIN_U16("graphics/pokedex/cat_icon_numerical.gbapal"); +const u16 sTopMenuIconPals_RoughTerrain[] = INCBIN_U16("graphics/pokedex/cat_icon_rough_terrain.gbapal"); +const u16 sTopMenuIconPals_WatersEdge[] = INCBIN_U16("graphics/pokedex/cat_icon_waters_edge.gbapal"); +const u16 sTopMenuIconPals_Type[] = INCBIN_U16("graphics/pokedex/cat_icon_type.gbapal"); +const u16 sTopMenuIconPals_Lightest[] = INCBIN_U16("graphics/pokedex/cat_icon_lightest.gbapal"); +const u16 sTopMenuIconPals_Smallest[] = INCBIN_U16("graphics/pokedex/cat_icon_smallest.gbapal"); +const u8 sDexScreen_CaughtIcon[] = INCBIN_U8("graphics/pokedex/caught_marker.4bpp"); +const u32 sTilemap_AreaMap_Kanto[] = INCBIN_U32("graphics/pokedex/map_kanto.4bpp.lz"); +const u32 sTilemap_AreaMap_OneIsland[] = INCBIN_U32("graphics/pokedex/map_one_island.4bpp.lz"); +const u32 sTilemap_AreaMap_TwoIsland[] = INCBIN_U32("graphics/pokedex/map_two_island.4bpp.lz"); +const u32 sTilemap_AreaMap_ThreeIsland[] = INCBIN_U32("graphics/pokedex/map_three_island.4bpp.lz"); +const u32 sTilemap_AreaMap_FourIsland[] = INCBIN_U32("graphics/pokedex/map_four_island.4bpp.lz"); +const u32 sTilemap_AreaMap_FiveIsland[] = INCBIN_U32("graphics/pokedex/map_five_island.4bpp.lz"); +const u32 sTilemap_AreaMap_SixIsland[] = INCBIN_U32("graphics/pokedex/map_six_island.4bpp.lz"); +const u32 sTilemap_AreaMap_SevenIsland[] = INCBIN_U32("graphics/pokedex/map_seven_island.4bpp.lz"); +const u16 sBlitTiles_WideEllipse[] = INCBIN_U16("graphics/pokedex/blit_wide_ellipse.4bpp"); #include "data/pokemon/pokedex_orders.h" @@ -193,7 +199,7 @@ static const u8 gExpandedPlaceholder_PokedexDescription[] = _(""); #include "data/pokemon/pokedex_text.h" #include "data/pokemon/pokedex_entries.h" -static const struct BgTemplate sUnknown_8451EBC[] = { +static const struct BgTemplate sBgTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -232,7 +238,7 @@ static const struct BgTemplate sUnknown_8451EBC[] = { }, }; -static const struct WindowTemplate sUnknown_8451ECC[] = { +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 0, .tilemapLeft = 0, @@ -262,82 +268,82 @@ static const struct WindowTemplate sUnknown_8451ECC[] = { }, }; -static const struct PokedexScreenData sUnknown_8451EE4 = { - .field_10 = 1, - .field_14 = -1, - .field_15 = -1, - .field_16 = -1, - .field_18 = {-1, -1, -1, -1}, - .field_20 = {-1, -1, -1, -1}, - .field_24 = {-1, -1, -1, -1}, - .field_40 = -1, - .field_4A = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, - .field_60 = -1, - .field_61 = -1, +static const struct PokedexScreenData sDexScreenDataInitialState = { + .modeSelectItemsAbove = 1, + .modeSelectWindowId = -1, + .selectionIconWindowId = -1, + .dexCountsWindowId = -1, + .pageSpecies = {-1, -1, -1, -1}, + .categoryMonWindowIds = {-1, -1, -1, -1}, + .categoryMonInfoWindowIds = {-1, -1, -1, -1}, + .numericalOrderWindowId = -1, + .windowIds = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + .scrollArrowsTaskId = -1, + .categoryPageCursorTaskId = -1, +}; + + +static const struct WindowTemplate sWindowTemplate_ModeSelect = { + .bg = 1, + .tilemapLeft = 1, + .tilemapTop = 2, + .width = 20, + .height = 16, + .paletteNum = 0, + .baseBlock = 0x0008 +}; + +static const struct WindowTemplate sWindowTemplate_SelectionIcon = { + .bg = 1, + .tilemapLeft = 21, + .tilemapTop = 11, + .width = 8, + .height = 6, + .paletteNum = 1, + .baseBlock = 0x0148 }; +static const struct WindowTemplate sWindowTemplate_DexCounts = { + .bg = 1, + .tilemapLeft = 21, + .tilemapTop = 2, + .width = 9, + .height = 9, + .paletteNum = 0, + .baseBlock = 0x0178 +}; -static const struct WindowTemplate sUnknown_8451F54 = { - .bg = 1, - .tilemapLeft = 1, - .tilemapTop = 2, - .width = 20, - .height = 16, - .paletteNum = 0, - .baseBlock = 0x0008 - }; - -static const struct WindowTemplate sUnknown_8451F5C = { - .bg = 1, - .tilemapLeft = 21, - .tilemapTop = 11, - .width = 8, - .height = 6, - .paletteNum = 1, - .baseBlock = 0x0148 - }; - -static const struct WindowTemplate sUnknown_8451F64 = { - .bg = 1, - .tilemapLeft = 21, - .tilemapTop = 2, - .width = 9, - .height = 9, - .paletteNum = 0, - .baseBlock = 0x0178 - }; - -static const struct ListMenuItem sUnknown_8451F6C[] = { - {gText_PokemonList, -3}, - {gText_NumericalMode, 9}, - {gText_PokemonHabitats, -3}, - {gText_DexCategory_GrasslandPkmn, 0}, - {gText_DexCategory_ForestPkmn, 1}, - {gText_DexCategory_WatersEdgePkmn, 2}, - {gText_DexCategory_SeaPkmn, 3}, - {gText_DexCategory_CavePkmn, 4}, - {gText_DexCategory_MountainPkmn, 5}, - {gText_DexCategory_RoughTerrainPkmn, 6}, - {gText_DexCategory_UrbanPkmn, 7}, - {gText_DexCategory_RarePkmn, 8}, - {gText_Search, -3}, - {gText_AToZMode, 10}, - {gText_TypeMode, 11}, - {gText_LightestMode, 12}, - {gText_SmallestMode, 13}, - {gText_PokedexOther, -3}, - {gText_ClosePokedex, -2}, +static const struct ListMenuItem sListMenuItems_KantoDexModeSelect[] = { + {gText_PokemonList, LIST_HEADER}, + {gText_NumericalMode, DEX_MODE(NUMERICAL_KANTO)}, + {gText_PokemonHabitats, LIST_HEADER}, + {gText_DexCategory_GrasslandPkmn, DEX_CATEGORY_GRASSLAND}, + {gText_DexCategory_ForestPkmn, DEX_CATEGORY_FOREST}, + {gText_DexCategory_WatersEdgePkmn, DEX_CATEGORY_WATERS_EDGE}, + {gText_DexCategory_SeaPkmn, DEX_CATEGORY_SEA}, + {gText_DexCategory_CavePkmn, DEX_CATEGORY_CAVE}, + {gText_DexCategory_MountainPkmn, DEX_CATEGORY_MOUNTAIN}, + {gText_DexCategory_RoughTerrainPkmn, DEX_CATEGORY_ROUGH_TERRAIN}, + {gText_DexCategory_UrbanPkmn, DEX_CATEGORY_URBAN}, + {gText_DexCategory_RarePkmn, DEX_CATEGORY_RARE}, + {gText_Search, LIST_HEADER}, + {gText_AToZMode, DEX_MODE(ATOZ)}, + {gText_TypeMode, DEX_MODE(TYPE)}, + {gText_LightestMode, DEX_MODE(LIGHTEST)}, + {gText_SmallestMode, DEX_MODE(SMALLEST)}, + {gText_PokedexOther, LIST_HEADER}, + {gText_ClosePokedex, LIST_CANCEL}, }; -static const struct ListMenuTemplate sUnknown_8452004 = { - .items = sUnknown_8451F6C, - .moveCursorFunc = sub_8102EC0, - .itemPrintFunc = sub_8102F48, - .totalItems = NELEMS(sUnknown_8451F6C), +static const struct ListMenuTemplate sListMenuTemplate_KantoDexModeSelect = { + .items = sListMenuItems_KantoDexModeSelect, + .moveCursorFunc = MoveCursorFunc_DexModeSelect, + .itemPrintFunc = ItemPrintFunc_DexModeSelect, + .totalItems = NELEMS(sListMenuItems_KantoDexModeSelect), .maxShowed = 9, - .windowId = 0, - .header_X = 0, - .item_X = 12, + .windowId = 0, + .header_X = 0, + .item_X = 12, .cursor_X = 4, .upText_Y = 2, .cursorPal = 1, @@ -350,38 +356,38 @@ static const struct ListMenuTemplate sUnknown_8452004 = { .cursorKind = 0, }; -static const struct ListMenuItem sUnknown_845201C[] = { - {gText_PokemonList, -3}, - {gText_NumericalModeKanto, 9}, - {gText_NumericalModeNational, 14}, - {gText_PokemonHabitats, -3}, - {gText_DexCategory_GrasslandPkmn, 0}, - {gText_DexCategory_ForestPkmn, 1}, - {gText_DexCategory_WatersEdgePkmn, 2}, - {gText_DexCategory_SeaPkmn, 3}, - {gText_DexCategory_CavePkmn, 4}, - {gText_DexCategory_MountainPkmn, 5}, - {gText_DexCategory_RoughTerrainPkmn, 6}, - {gText_DexCategory_UrbanPkmn, 7}, - {gText_DexCategory_RarePkmn, 8}, - {gText_Search, -3}, - {gText_AToZMode, 10}, - {gText_TypeMode, 11}, - {gText_LightestMode, 12}, - {gText_SmallestMode, 13}, - {gText_PokedexOther, -3}, - {gText_ClosePokedex, -2}, +static const struct ListMenuItem sListMenuItems_NatDexModeSelect[] = { + {gText_PokemonList, LIST_HEADER}, + {gText_NumericalModeKanto, DEX_MODE(NUMERICAL_KANTO)}, + {gText_NumericalModeNational, DEX_MODE(NUMERICAL_NATIONAL)}, + {gText_PokemonHabitats, LIST_HEADER}, + {gText_DexCategory_GrasslandPkmn, DEX_CATEGORY_GRASSLAND}, + {gText_DexCategory_ForestPkmn, DEX_CATEGORY_FOREST}, + {gText_DexCategory_WatersEdgePkmn, DEX_CATEGORY_WATERS_EDGE}, + {gText_DexCategory_SeaPkmn, DEX_CATEGORY_SEA}, + {gText_DexCategory_CavePkmn, DEX_CATEGORY_CAVE}, + {gText_DexCategory_MountainPkmn, DEX_CATEGORY_MOUNTAIN}, + {gText_DexCategory_RoughTerrainPkmn, DEX_CATEGORY_ROUGH_TERRAIN}, + {gText_DexCategory_UrbanPkmn, DEX_CATEGORY_URBAN}, + {gText_DexCategory_RarePkmn, DEX_CATEGORY_RARE}, + {gText_Search, LIST_HEADER}, + {gText_AToZMode, DEX_MODE(ATOZ)}, + {gText_TypeMode, DEX_MODE(TYPE)}, + {gText_LightestMode, DEX_MODE(LIGHTEST)}, + {gText_SmallestMode, DEX_MODE(SMALLEST)}, + {gText_PokedexOther, LIST_HEADER}, + {gText_ClosePokedex, LIST_CANCEL}, }; -static const struct ListMenuTemplate sUnknown_84520BC = { - .items = sUnknown_845201C, - .moveCursorFunc = sub_8102EC0, - .itemPrintFunc = sub_8102F48, - .totalItems = NELEMS(sUnknown_845201C), +static const struct ListMenuTemplate sListMenuTemplate_NatDexModeSelect = { + .items = sListMenuItems_NatDexModeSelect, + .moveCursorFunc = MoveCursorFunc_DexModeSelect, + .itemPrintFunc = ItemPrintFunc_DexModeSelect, + .totalItems = NELEMS(sListMenuItems_NatDexModeSelect), .maxShowed = 9, - .windowId = 0, - .header_X = 0, - .item_X = 12, + .windowId = 0, + .header_X = 0, + .item_X = 12, .cursor_X = 4, .upText_Y = 2, .cursorPal = 1, @@ -394,54 +400,99 @@ static const struct ListMenuTemplate sUnknown_84520BC = { .cursorKind = 0, }; -static const struct ScrollArrowsTemplate sUnknown_84520D4 = { - .firstArrowType = 2, - .firstX = 200, - .firstY = 19, - .secondArrowType = 3, - .secondX = 200, +static const struct ScrollArrowsTemplate sScrollArrowsTemplate_KantoDex = { + .firstArrowType = 2, + .firstX = 200, + .firstY = 19, + .secondArrowType = 3, + .secondX = 200, .secondY = 141, - .fullyUpThreshold = 0, - .fullyDownThreshold = 10, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 10, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1 }; -static const struct ScrollArrowsTemplate sUnknown_84520E4 = { - .firstArrowType = 2, - .firstX = 200, - .firstY = 19, - .secondArrowType = 3, - .secondX = 200, +static const struct ScrollArrowsTemplate sScrollArrowsTemplate_NatDex = { + .firstArrowType = 2, + .firstX = 200, + .firstY = 19, + .secondArrowType = 3, + .secondX = 200, .secondY = 141, - .fullyUpThreshold = 0, - .fullyDownThreshold = 11, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 11, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1 }; -static const struct PokedexScreenWindowGfx sUnknown_84520F4[] = { - {.map = gUnknown_84414BC, .pal = gUnknown_84434A0}, - {.map = gUnknown_844112C, .pal = gUnknown_8443480}, - {.map = gUnknown_8442838, .pal = gUnknown_8443580}, - {.map = gUnknown_8442004, .pal = gUnknown_8443520}, - {.map = gUnknown_84408E0, .pal = gUnknown_8443420}, - {.map = gUnknown_8441A40, .pal = gUnknown_84434E0}, - {.map = gUnknown_84424E4, .pal = gUnknown_8443560}, - {.map = gUnknown_8440BD8, .pal = gUnknown_8443440}, - {.map = gUnknown_8441D54, .pal = gUnknown_8443500}, - {.map = gUnknown_844223C, .pal = gUnknown_8443540}, - {.map = gUnknown_8E9C16C, .pal = gUnknown_8E9C14C}, - {.map = gUnknown_8442BC0, .pal = gUnknown_84435A0}, - {.map = gUnknown_8442EF8, .pal = gUnknown_84435C0}, - {.map = gUnknown_844318C, .pal = gUnknown_84435E0}, - {.map = gUnknown_844223C, .pal = gUnknown_8443540}, +static const struct PokedexScreenWindowGfx sTopMenuSelectionIconGfxPtrs[] = { + [DEX_CATEGORY_GRASSLAND] = { + .tiles = sTopMenuIconTiles_Grassland, + .pal = sTopMenuIconPals_Grassland + }, + [DEX_CATEGORY_FOREST] = { + .tiles = sTopMenuIconTiles_Forest, + .pal = sTopMenuIconPals_Forest + }, + [DEX_CATEGORY_WATERS_EDGE] = { + .tiles = sTopMenuIconTiles_WatersEdge, + .pal = sTopMenuIconPals_WatersEdge + }, + [DEX_CATEGORY_SEA] = { + .tiles = sTopMenuIconTiles_Sea, + .pal = sTopMenuIconPals_Sea + }, + [DEX_CATEGORY_CAVE] = { + .tiles = sTopMenuIconTiles_Cave, + .pal = sTopMenuIconPals_Cave + }, + [DEX_CATEGORY_MOUNTAIN] = { + .tiles = sTopMenuIconTiles_Mountain, + .pal = sTopMenuIconPals_Mountain + }, + [DEX_CATEGORY_ROUGH_TERRAIN] = { + .tiles = sTopMenuIconTiles_RoughTerrain, + .pal = sTopMenuIconPals_RoughTerrain + }, + [DEX_CATEGORY_URBAN] = { + .tiles = sTopMenuIconTiles_Urban, + .pal = sTopMenuIconPals_Urban + }, + [DEX_CATEGORY_RARE] = { + .tiles = sTopMenuIconTiles_Rare, + .pal = sTopMenuIconPals_Rare + }, + [DEX_MODE(NUMERICAL_KANTO)] = { + .tiles = sTopMenuIconTiles_Numerical, + .pal = sTopMenuIconPals_Numerical + }, + [DEX_MODE(ATOZ)] = { + .tiles = gDexScreen_TopMenuIconTiles_AtoZ, + .pal = gDexScreen_TopMenuIconPals_AtoZ + }, + [DEX_MODE(TYPE)] = { + .tiles = sTopMenuIconTiles_Type, + .pal = sTopMenuIconPals_Type + }, + [DEX_MODE(LIGHTEST)] = { + .tiles = sTopMenuIconTiles_Lightest, + .pal = sTopMenuIconPals_Lightest + }, + [DEX_MODE(SMALLEST)] = { + .tiles = sTopMenuIconTiles_Smallest, + .pal = sTopMenuIconPals_Smallest + }, + [DEX_MODE(NUMERICAL_NATIONAL)] = { + .tiles = sTopMenuIconTiles_Numerical, + .pal = sTopMenuIconPals_Numerical + }, }; -static const struct WindowTemplate sUnknown_845216C = { +static const struct WindowTemplate sWindowTemplate_OrderedListMenu = { .bg = 1, .tilemapLeft = 2, .tilemapTop = 2, @@ -451,15 +502,15 @@ static const struct WindowTemplate sUnknown_845216C = { .baseBlock = 0x0008 }; -static const struct ListMenuTemplate sUnknown_8452174 = { - .items = sUnknown_8451F6C, +static const struct ListMenuTemplate sListMenuTemplate_OrderedListMenu = { + .items = sListMenuItems_KantoDexModeSelect, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, - .itemPrintFunc = sub_8103A40, - .totalItems = 0, + .itemPrintFunc = ItemPrintFunc_OrderedListMenu, + .totalItems = 0, .maxShowed = 9, - .windowId = 0, - .header_X = 0, - .item_X = 56, + .windowId = 0, + .header_X = 0, + .item_X = 56, .cursor_X = 4, .upText_Y = 2, .cursorPal = 1, @@ -472,37 +523,55 @@ static const struct ListMenuTemplate sUnknown_8452174 = { .cursorKind = 0, }; -static const struct ListMenuWindowRect sUnknown_845218C = { - .x = 0, - .y = 0, - .width = 5, - .height = 16, - .palNum = 0, -}; - -// Unused -static const u8 gUnknown_8452194[] = { - 0x05, 0x00, 0x02, 0x10, 0x01, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x08, 0x10, 0x02, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 +static const struct ListMenuWindowRect sListMenuRects_OrderedList[] = { + { + .x = 0, + .y = 0, + .width = 5, + .height = 16, + .palNum = 0 + }, { + .x = 5, + .y = 0, + .width = 2, + .height = 16, + .palNum = 1 + }, { + .x = 7, + .y = 0, + .width = 8, + .height = 16, + .palNum = 0 + }, { + .x = 15, + .y = 0, + .width = 8, + .height = 16, + .palNum = 2, + }, { + .x = 0xFF, + .y = 0xFF, + .width = 0xFF, + .height = 0xFF, + .palNum = 0xFF + } }; -static const struct ScrollArrowsTemplate sUnknown_84521B4 = { - .firstArrowType = 2, - .firstX = 200, - .firstY = 19, - .secondArrowType = 3, - .secondX = 200, +static const struct ScrollArrowsTemplate sDexOrderScrollArrowsTemplate = { + .firstArrowType = 2, + .firstX = 200, + .firstY = 19, + .secondArrowType = 3, + .secondX = 200, .secondY = 141, - .fullyUpThreshold = 0, - .fullyDownThreshold = 0, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 0, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1, }; -static const struct WindowTemplate sUnknown_84521C4 = { +static const struct WindowTemplate sWindowTemplate_CategoryMonIcon = { .bg = 2, .tilemapLeft = 0, .tilemapTop = 0, @@ -512,7 +581,7 @@ static const struct WindowTemplate sUnknown_84521C4 = { .baseBlock = 0x0000 }; -static const struct WindowTemplate sUnknown_84521CC = { +static const struct WindowTemplate sWindowTemplate_CategoryMonInfo = { .bg = 1, .tilemapLeft = 0, .tilemapTop = 0, @@ -522,7 +591,7 @@ static const struct WindowTemplate sUnknown_84521CC = { .baseBlock = 0x0000 }; -const struct WindowTemplate gUnknown_84521D4 = { +const struct WindowTemplate sWindowTemplate_DexEntry_MonPic = { .bg = 1, .tilemapLeft = 19, .tilemapTop = 3, @@ -532,7 +601,7 @@ const struct WindowTemplate gUnknown_84521D4 = { .baseBlock = 0x01a8 }; -const struct WindowTemplate gUnknown_84521DC = { +const struct WindowTemplate sWindowTemplate_DexEntry_SpeciesStats = { .bg = 1, .tilemapLeft = 2, .tilemapTop = 3, @@ -542,7 +611,7 @@ const struct WindowTemplate gUnknown_84521DC = { .baseBlock = 0x01e8 }; -const struct WindowTemplate gUnknown_84521E4 = { +const struct WindowTemplate sWindowTemplate_DexEntry_FlavorText = { .bg = 1, .tilemapLeft = 0, .tilemapTop = 11, @@ -552,7 +621,7 @@ const struct WindowTemplate gUnknown_84521E4 = { .baseBlock = 0x0250 }; -const struct WindowTemplate gUnknown_84521EC = { +const struct WindowTemplate sWindowTemplate_AreaMap_MonIcon = { .bg = 2, .tilemapLeft = 1, .tilemapTop = 2, @@ -562,7 +631,7 @@ const struct WindowTemplate gUnknown_84521EC = { .baseBlock = 0x01a8 }; -const struct WindowTemplate gUnknown_84521F4 = { +const struct WindowTemplate sWindowTemplate_AreaMap_SpeciesName = { .bg = 2, .tilemapLeft = 5, .tilemapTop = 2, @@ -572,7 +641,7 @@ const struct WindowTemplate gUnknown_84521F4 = { .baseBlock = 0x01b8 }; -const struct WindowTemplate gUnknown_84521FC = { +const struct WindowTemplate sWindowTemplate_AreaMap_Size = { .bg = 2, .tilemapLeft = 2, .tilemapTop = 7, @@ -582,7 +651,7 @@ const struct WindowTemplate gUnknown_84521FC = { .baseBlock = 0x01d0 }; -const struct WindowTemplate gUnknown_8452204 = { +const struct WindowTemplate sWindowTemplate_AreaMap_Area = { .bg = 2, .tilemapLeft = 18, .tilemapTop = 2, @@ -592,7 +661,7 @@ const struct WindowTemplate gUnknown_8452204 = { .baseBlock = 0x01e4 }; -const struct WindowTemplate gUnknown_845220C = { +const struct WindowTemplate sWindowTemplate_AreaMap_MonTypes = { .bg = 2, .tilemapLeft = 5, .tilemapTop = 5, @@ -602,7 +671,7 @@ const struct WindowTemplate gUnknown_845220C = { .baseBlock = 0x01f8 }; -const struct WindowTemplate gUnknown_8452214 = { +const struct WindowTemplate sWindowTemplate_AreaMap_Kanto = { .bg = 2, .tilemapLeft = 17, .tilemapTop = 4, @@ -612,7 +681,7 @@ const struct WindowTemplate gUnknown_8452214 = { .baseBlock = 0x0208 }; -static const struct WindowTemplate sUnknown_845221C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_OneIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 4, @@ -622,7 +691,7 @@ static const struct WindowTemplate sUnknown_845221C = { .baseBlock = 0x0274 }; -static const struct WindowTemplate sUnknown_8452224 = { +static const struct WindowTemplate sWindowTemplate_AreaMap_TwoIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 7, @@ -632,7 +701,7 @@ static const struct WindowTemplate sUnknown_8452224 = { .baseBlock = 0x0280 }; -static const struct WindowTemplate sUnknown_845222C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_ThreeIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 10, @@ -642,7 +711,7 @@ static const struct WindowTemplate sUnknown_845222C = { .baseBlock = 0x028c }; -static const struct WindowTemplate sUnknown_8452234 = { +static const struct WindowTemplate sWindowTemplate_AreaMap_FourIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 13, @@ -652,7 +721,7 @@ static const struct WindowTemplate sUnknown_8452234 = { .baseBlock = 0x0298 }; -static const struct WindowTemplate sUnknown_845223C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_FiveIsland = { .bg = 2, .tilemapLeft = 17, .tilemapTop = 13, @@ -662,7 +731,7 @@ static const struct WindowTemplate sUnknown_845223C = { .baseBlock = 0x02a8 }; -static const struct WindowTemplate sUnknown_8452244 = { +static const struct WindowTemplate sWindowTemplate_AreaMap_SixIsland = { .bg = 2, .tilemapLeft = 21, .tilemapTop = 13, @@ -672,7 +741,7 @@ static const struct WindowTemplate sUnknown_8452244 = { .baseBlock = 0x02b8 }; -static const struct WindowTemplate sUnknown_845224C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_SevenIsland = { .bg = 2, .tilemapLeft = 25, .tilemapTop = 13, @@ -684,46 +753,47 @@ static const struct WindowTemplate sUnknown_845224C = { struct { const struct WindowTemplate * window; - const u32 * tilemap; -} const gUnknown_8452254[] = { - {&sUnknown_845221C, gUnknown_8443910}, - {&sUnknown_8452224, gUnknown_8443988}, - {&sUnknown_845222C, gUnknown_84439FC}, - {&sUnknown_8452234, gUnknown_8443A78}, - {&sUnknown_845223C, gUnknown_8443AF8}, - {&sUnknown_8452244, gUnknown_8443BB0}, - {&sUnknown_845224C, gUnknown_8443C54}, + const u32 * tiles; +} const sAreaMapStructs_SeviiIslands[] = { + {&sWindowTemplate_AreaMap_OneIsland, sTilemap_AreaMap_OneIsland}, + {&sWindowTemplate_AreaMap_TwoIsland, sTilemap_AreaMap_TwoIsland}, + {&sWindowTemplate_AreaMap_ThreeIsland, sTilemap_AreaMap_ThreeIsland}, + {&sWindowTemplate_AreaMap_FourIsland, sTilemap_AreaMap_FourIsland}, + {&sWindowTemplate_AreaMap_FiveIsland, sTilemap_AreaMap_FiveIsland}, + {&sWindowTemplate_AreaMap_SixIsland, sTilemap_AreaMap_SixIsland}, + {&sWindowTemplate_AreaMap_SevenIsland, sTilemap_AreaMap_SevenIsland}, }; -static const u16 sUnknown_845228C[] = INCBIN_U16("graphics/pokedex/unk_845228C.bin"); +static const u16 sCategoryPageIconWindowBg[] = INCBIN_U16("graphics/pokedex/page_icon_tilemap.bin"); -static const u8 sUnknown_845230C[][4] = { - {0x0b, 0x03, 0x0b, 0x0b}, +// Circular window x/y; Rectangular window x/y +static const u8 sPageIconCoords_1Mon[1][4] = { + {11, 3, 11, 11}, }; -static const u8 sUnknown_8452310[][4] = { - {0x03, 0x03, 0x0b, 0x03}, - {0x12, 0x09, 0x0a, 0x0b}, +static const u8 sPageIconCoords_2Mons[2][4] = { + { 3, 3, 11, 3}, + {18, 9, 10, 11}, }; -static const u8 sUnknown_8452318[][4] = { - {0x01, 0x02, 0x09, 0x02}, - {0x0b, 0x09, 0x03, 0x0b}, - {0x15, 0x03, 0x15, 0x0b} +static const u8 sPageIconCoords_3Mons[3][4] = { + { 1, 2, 9, 2}, + {11, 9, 3, 11}, + {21, 3, 21, 11} }; -static const u8 sUnknown_8452324[][4] = { - {0x00, 0x02, 0x06, 0x03}, - {0x07, 0x0a, 0x00, 0x0c}, - {0x0f, 0x0a, 0x16, 0x0b}, - {0x16, 0x02, 0x0f, 0x04} +static const u8 sPageIconCoords_4Mons[4][4] = { + { 0, 2, 6, 3}, + { 7, 10, 0, 12}, + {15, 10, 22, 11}, + {22, 2, 15, 4} }; -const u8 (*const gUnknown_8452334[])[4] = { - sUnknown_845230C, - sUnknown_8452310, - sUnknown_8452318, - sUnknown_8452324, +const u8 (*const sCategoryPageIconCoords[])[4] = { + sPageIconCoords_1Mon, + sPageIconCoords_2Mons, + sPageIconCoords_3Mons, + sPageIconCoords_4Mons, }; static const u8 * const sDexCategoryNamePtrs[] = { @@ -738,86 +808,55 @@ static const u8 * const sDexCategoryNamePtrs[] = { gText_DexCategory_RarePkmn, }; -const u16 gUnknown_8452368[] = INCBIN_U16("graphics/pokedex/unk_8452368.gbapal"); - -static const u8 sUnknown_8452388[][30] = { - { - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x05, 0x0b, 0x11, 0x17, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x1a, 0x1d, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x02, 0x03, 0x05, 0x07, 0x09, 0x0b, 0x0d, 0x0f, 0x11, 0x13, - 0x15, 0x17, 0x19, 0x1b, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x02, 0x04, 0x05, 0x07, 0x08, 0x0a, 0x0b, 0x0d, 0x0e, 0x10, - 0x11, 0x13, 0x14, 0x16, 0x17, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, - 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, - 0x1b, 0x1c, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, - 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, - 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, - 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x15, 0x16, - 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, - 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e - }, { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, - 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d - }, +const u16 sPalette_Silhouette[] = INCBIN_U16("graphics/pokedex/silhouette_sprite_pal.gbapal"); + +static const u8 sDexScreenPageTurnColumns[][30] = { + {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 5, 11, 17, 23, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 30, 30, 30, 30, 30, 30}, + { 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 30, 30, 30}, + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 30, 30}, + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30}, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, }; -static const struct ScrollArrowsTemplate sUnknown_84524B4 = { - .firstArrowType = 0, - .firstX = 16, - .firstY = 80, - .secondArrowType = 1, - .secondX = 224, +static const struct ScrollArrowsTemplate sScrollArrowsTemplate_CategoryMenu = { + .firstArrowType = 0, + .firstX = 16, + .firstY = 80, + .secondArrowType = 1, + .secondX = 224, .secondY = 80, - .fullyUpThreshold = 0, - .fullyDownThreshold = 0, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 0, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1, }; -const struct CursorStruct gUnknown_84524C4 = { - .left = 0, +const struct CursorStruct sCursorStruct_CategoryPage = { + .left = 0, .top = 160, - .rowWidth = 64, - .rowHeight = 40, - .tileTag = 2002, + .rowWidth = 64, + .rowHeight = 40, + .tileTag = 2002, .palTag = 0xFFFF, .palNum = 4, }; #include "data/pokemon/pokedex_categories.h" -void sub_81024C0(void) +void VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_81024D4(void) +void CB2_PokedexScreen(void) { if (!gPaletteFade.active || IsDma3ManagerBusyWithBgCopy()) { @@ -832,7 +871,7 @@ void sub_81024D4(void) } } -void sub_810250C(void) +void DexScreen_LoadResources(void) { bool8 natDex; u8 taskId; @@ -845,29 +884,29 @@ void sub_810250C(void) ResetTasks(); ScanlineEffect_Stop(); ResetBgsAndClearDma3BusyFlags(TRUE); - InitBgsFromTemplates(0, sUnknown_8451EBC, NELEMS(sUnknown_8451EBC)); + InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates)); SetBgTilemapBuffer(3, (u16*)Alloc(BG_SCREEN_SIZE)); SetBgTilemapBuffer(2, (u16*)Alloc(BG_SCREEN_SIZE)); SetBgTilemapBuffer(1, (u16*)Alloc(BG_SCREEN_SIZE)); SetBgTilemapBuffer(0, (u16*)Alloc(BG_SCREEN_SIZE)); if (natDex) - DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, (void*)sNatDexTiles, BG_SCREEN_SIZE, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_8440274, BG_SCREEN_SIZE, 0, 0); - InitWindows(sUnknown_8451ECC); + DecompressAndLoadBgGfxUsingHeap(3, (void*)sKantoDexTiles, BG_SCREEN_SIZE, 0, 0); + InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); m4aSoundVSyncOn(); - SetVBlankCallback(sub_81024C0); + SetVBlankCallback(VBlankCB); EnableInterrupts(INTR_FLAG_VBLANK); - taskId = CreateTask(sub_810287C, 0); - gUnknown_203ACF0 = Alloc(sizeof(struct PokedexScreenData)); - *gUnknown_203ACF0 = sUnknown_8451EE4; - gUnknown_203ACF0->field_00 = taskId; - gUnknown_203ACF0->field_44 = Alloc(NATIONAL_DEX_COUNT * sizeof(struct ListMenuItem)); - gUnknown_203ACF0->field_6A = sub_8104BBC(0, 1); - gUnknown_203ACF0->field_6C = sub_8104BBC(1, 1); - gUnknown_203ACF0->field_66 = sub_8104BBC(0, 0); - gUnknown_203ACF0->field_68 = sub_8104BBC(1, 0); + taskId = CreateTask(Task_PokedexScreen, 0); + sPokedexScreenData = Alloc(sizeof(struct PokedexScreenData)); + *sPokedexScreenData = sDexScreenDataInitialState; + sPokedexScreenData->taskId = taskId; + sPokedexScreenData->listItems = Alloc(NATIONAL_DEX_COUNT * sizeof(struct ListMenuItem)); + sPokedexScreenData->numSeenNational = DexScreen_GetDexCount(FLAG_GET_SEEN, 1); + sPokedexScreenData->numOwnedNational = DexScreen_GetDexCount(FLAG_GET_CAUGHT, 1); + sPokedexScreenData->numSeenKanto = DexScreen_GetDexCount(FLAG_GET_SEEN, 0); + sPokedexScreenData->numOwnedKanto = DexScreen_GetDexCount(FLAG_GET_CAUGHT, 0); SetBGMVolume_SuppressHelpSystemReduction(0x80); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -879,31 +918,31 @@ void sub_810250C(void) ChangeBgY(3, 0, 0); gPaletteFade.bufferTransferDisabled = TRUE; if (natDex) - LoadPalette(gUnknown_84406E0, 0, 0x200); + LoadPalette(sNationalDexPalette, 0, 0x200); else - LoadPalette(gUnknown_84404C8, 0, 0x200); - FillBgTilemapBufferRect(3, 0x001, 0, 0, 32, 32, 0); - FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); - FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); - FillBgTilemapBufferRect(0, 0x0003, 0, 0, 32, 2, 0xF); - FillBgTilemapBufferRect(0, 0x0000, 0, 2, 32, 16, 0x11); - FillBgTilemapBufferRect(0, 0x003, 0, 18, 32, 2, 0xF); + LoadPalette(sKantoDexPalette, 0, 0x200); + FillBgTilemapBufferRect(3, 0x001, 0, 0, 32, 32, 0x00); + FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(0, 0x003, 0, 0, 32, 2, 0x0F); + FillBgTilemapBufferRect(0, 0x000, 0, 2, 32, 16, 0x11); + FillBgTilemapBufferRect(0, 0x003, 0, 18, 32, 2, 0x0F); } void CB2_OpenPokedexFromStartMenu(void) { - sub_810250C(); + DexScreen_LoadResources(); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); SetGpuReg(REG_OFFSET_BLDY, 0); - SetMainCallback2(sub_81024D4); + SetMainCallback2(CB2_PokedexScreen); SetHelpContext(HELPCONTEXT_POKEDEX); } #define FREE_IF_NOT_NULL(ptr0) ({ void * ptr = (ptr0); if (ptr) Free(ptr); }) -bool8 sub_8102798(void) +bool8 DoClosePokedex(void) { switch (gMain.state) { @@ -918,8 +957,8 @@ bool8 sub_8102798(void) UpdatePaletteFade(); return FALSE; case 2: - FREE_IF_NOT_NULL(gUnknown_203ACF0->field_44); - FREE_IF_NOT_NULL(gUnknown_203ACF0); + FREE_IF_NOT_NULL(sPokedexScreenData->listItems); + FREE_IF_NOT_NULL(sPokedexScreenData); FreeAllWindowBuffers(); FREE_IF_NOT_NULL(GetBgTilemapBuffer(0)); FREE_IF_NOT_NULL(GetBgTilemapBuffer(1)); @@ -931,44 +970,44 @@ bool8 sub_8102798(void) return TRUE; } -void sub_8102858(void) +void CB2_ClosePokedex(void) { - if (sub_8102798()) + if (DoClosePokedex()) { SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); } } -static void sub_810287C(u8 taskId) +static void Task_PokedexScreen(u8 taskId) { int i; - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: - gUnknown_203ACF0->field_08 = 0; + sPokedexScreenData->unlockedCategories = 0; for (i = 0; i < 9; i++) - gUnknown_203ACF0->field_08 |= (sub_81068A0(i) << i); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->unlockedCategories |= (DexScreen_IsCategoryUnlocked(i) << i); + sPokedexScreenData->state = 2; break; case 1: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - SetMainCallback2(sub_8102858); + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + SetMainCallback2(CB2_ClosePokedex); DestroyTask(taskId); break; case 2: - sub_8102C28(); - gUnknown_203ACF0->field_01 = 3; + DexScreen_InitGfxForTopMenu(); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: ShowBg(3); @@ -981,352 +1020,352 @@ static void sub_810287C(u8 taskId) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_WHITEALPHA); } else - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 5; + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); + sPokedexScreenData->state = 5; break; case 5: - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (IsNationalPokedexEnabled()) - gUnknown_203ACF0->field_60 = AddScrollIndicatorArrowPair(&sUnknown_84520E4, &gUnknown_203ACF0->field_62); + sPokedexScreenData->scrollArrowsTaskId = AddScrollIndicatorArrowPair(&sScrollArrowsTemplate_NatDex, &sPokedexScreenData->modeSelectCursorPosBak); else - gUnknown_203ACF0->field_60 = AddScrollIndicatorArrowPair(&sUnknown_84520D4, &gUnknown_203ACF0->field_62); - gUnknown_203ACF0->field_01 = 6; + sPokedexScreenData->scrollArrowsTaskId = AddScrollIndicatorArrowPair(&sScrollArrowsTemplate_KantoDex, &sPokedexScreenData->modeSelectCursorPosBak); + sPokedexScreenData->state = 6; break; case 6: - gUnknown_203ACF0->field_0C = ListMenu_ProcessInput(gUnknown_203ACF0->field_17); - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + sPokedexScreenData->modeSelectInput = ListMenu_ProcessInput(sPokedexScreenData->modeSelectListMenuId); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (JOY_NEW(A_BUTTON)) { - switch (gUnknown_203ACF0->field_0C) + switch (sPokedexScreenData->modeSelectInput) { case LIST_CANCEL: - gUnknown_203ACF0->field_01 = 1; + sPokedexScreenData->state = 1; break; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - if (sub_81068A0(gUnknown_203ACF0->field_0C)) + case DEX_CATEGORY_GRASSLAND: + case DEX_CATEGORY_FOREST: + case DEX_CATEGORY_WATERS_EDGE: + case DEX_CATEGORY_SEA: + case DEX_CATEGORY_CAVE: + case DEX_CATEGORY_MOUNTAIN: + case DEX_CATEGORY_ROUGH_TERRAIN: + case DEX_CATEGORY_URBAN: + case DEX_CATEGORY_RARE: + if (DexScreen_IsCategoryUnlocked(sPokedexScreenData->modeSelectInput)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - gUnknown_203ACF0->field_28 = gUnknown_203ACF0->field_0C; - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 7; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + sPokedexScreenData->category = sPokedexScreenData->modeSelectInput; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 7; } break; - case 9: - case 14: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - gUnknown_203ACF0->field_42 = gUnknown_203ACF0->field_0C - 9; - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 9; + case DEX_MODE(NUMERICAL_KANTO): + case DEX_MODE(NUMERICAL_NATIONAL): + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + sPokedexScreenData->dexOrderId = sPokedexScreenData->modeSelectInput - DEX_CATEGORY_COUNT; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 9; break; - case 10: - case 11: - case 12: - case 13: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - gUnknown_203ACF0->field_42 = gUnknown_203ACF0->field_0C - 9; - gUnknown_203ACF0->field_38 = gUnknown_203ACF0->field_3A = 0; - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 8; + case DEX_MODE(ATOZ): + case DEX_MODE(TYPE): + case DEX_MODE(LIGHTEST): + case DEX_MODE(SMALLEST): + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + sPokedexScreenData->dexOrderId = sPokedexScreenData->modeSelectInput - DEX_CATEGORY_COUNT; + sPokedexScreenData->characteristicOrderMenuItemsAbove = sPokedexScreenData->characteristicOrderMenuCursorPos = 0; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 8; break; } break; } if (JOY_NEW(B_BUTTON)) { - gUnknown_203ACF0->field_01 = 1; + sPokedexScreenData->state = 1; } break; case 7: - DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10); + DestroyListMenuTask(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPos, &sPokedexScreenData->modeSelectItemsAbove); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20); CopyBgTilemapBufferToVram(1); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - gUnknown_203ACF0->field_2B = 0; - gUnknown_203ACF0->field_2D = 0; - gUnknown_203ACF0->field_2F = 0; - gTasks[taskId].func = sub_8103AC8; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + sPokedexScreenData->pageNum = 0; + sPokedexScreenData->categoryCursorPosInPage = 0; + sPokedexScreenData->parentOfCategoryMenu = 0; + gTasks[taskId].func = Task_DexScreen_CategorySubmenu; + sPokedexScreenData->state = 0; break; case 8: - DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10); + DestroyListMenuTask(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPos, &sPokedexScreenData->modeSelectItemsAbove); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - gTasks[taskId].func = sub_8103238; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + gTasks[taskId].func = Task_DexScreen_CharacteristicOrder; + sPokedexScreenData->state = 0; break; case 9: - DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10); + DestroyListMenuTask(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPos, &sPokedexScreenData->modeSelectItemsAbove); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - gTasks[taskId].func = sub_8102F80; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + gTasks[taskId].func = Task_DexScreen_NumericalOrder; + sPokedexScreenData->state = 0; break; } } -static void sub_8102C28(void) +static void DexScreen_InitGfxForTopMenu(void) { struct ListMenuTemplate listMenuTemplate; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); FillBgTilemapBufferRect(2, 0x000, 0, 0, 30, 20, 0x11); FillBgTilemapBufferRect(1, 0x000, 0, 0, 30, 20, 0x11); - gUnknown_203ACF0->field_14 = AddWindow(&sUnknown_8451F54); - gUnknown_203ACF0->field_15 = AddWindow(&sUnknown_8451F5C); - gUnknown_203ACF0->field_16 = AddWindow(&sUnknown_8451F64); + sPokedexScreenData->modeSelectWindowId = AddWindow(&sWindowTemplate_ModeSelect); + sPokedexScreenData->selectionIconWindowId = AddWindow(&sWindowTemplate_SelectionIcon); + sPokedexScreenData->dexCountsWindowId = AddWindow(&sWindowTemplate_DexCounts); if (IsNationalPokedexEnabled()) { - listMenuTemplate = sUnknown_84520BC; - listMenuTemplate.windowId = gUnknown_203ACF0->field_14; - gUnknown_203ACF0->field_17 = ListMenuInit(&listMenuTemplate, gUnknown_203ACF0->field_12, gUnknown_203ACF0->field_10); - FillWindowPixelBuffer(gUnknown_203ACF0->field_16, PIXEL_FILL(0)); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Seen, 0, 2, 0); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Kanto, 8, 13, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_66, 52, 13, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_National, 8, 24, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_6A, 52, 24, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Owned, 0, 37, 0); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Kanto, 8, 48, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_68, 52, 48, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_National, 8, 59, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_6C, 52, 59, 2); + listMenuTemplate = sListMenuTemplate_NatDexModeSelect; + listMenuTemplate.windowId = sPokedexScreenData->modeSelectWindowId; + sPokedexScreenData->modeSelectListMenuId = ListMenuInit(&listMenuTemplate, sPokedexScreenData->modeSelectCursorPos, sPokedexScreenData->modeSelectItemsAbove); + FillWindowPixelBuffer(sPokedexScreenData->dexCountsWindowId, PIXEL_FILL(0)); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Seen, 0, 2, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Kanto, 8, 13, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numSeenKanto, 52, 13, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_National, 8, 24, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numSeenNational, 52, 24, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Owned, 0, 37, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Kanto, 8, 48, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numOwnedKanto, 52, 48, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_National, 8, 59, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numOwnedNational, 52, 59, 2); } else { - listMenuTemplate = sUnknown_8452004; - listMenuTemplate.windowId = gUnknown_203ACF0->field_14; - gUnknown_203ACF0->field_17 = ListMenuInit(&listMenuTemplate, gUnknown_203ACF0->field_12, gUnknown_203ACF0->field_10); - FillWindowPixelBuffer(gUnknown_203ACF0->field_16, PIXEL_FILL(0)); - sub_81047C8(gUnknown_203ACF0->field_16, 1, gText_Seen, 0, 9, 0); - sub_810491C(gUnknown_203ACF0->field_16, 1, gUnknown_203ACF0->field_66, 32, 21, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 1, gText_Owned, 0, 37, 0); - sub_810491C(gUnknown_203ACF0->field_16, 1, gUnknown_203ACF0->field_68, 32, 49, 2); + listMenuTemplate = sListMenuTemplate_KantoDexModeSelect; + listMenuTemplate.windowId = sPokedexScreenData->modeSelectWindowId; + sPokedexScreenData->modeSelectListMenuId = ListMenuInit(&listMenuTemplate, sPokedexScreenData->modeSelectCursorPos, sPokedexScreenData->modeSelectItemsAbove); + FillWindowPixelBuffer(sPokedexScreenData->dexCountsWindowId, PIXEL_FILL(0)); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 1, gText_Seen, 0, 9, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 1, sPokedexScreenData->numSeenKanto, 32, 21, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 1, gText_Owned, 0, 37, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 1, sPokedexScreenData->numOwnedKanto, 32, 49, 2); } FillWindowPixelBuffer(0, PIXEL_FILL(15)); - sub_8106E78(gText_PokedexTableOfContents, 1); + DexScreen_PrintStringWithAlignment(gText_PokedexTableOfContents, TEXT_CENTER); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - sub_8104C2C(gText_PickOK); + DexScreen_PrintControlInfo(gText_PickOK); PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_GFX); PutWindowTilemap(1); CopyWindowToVram(1, COPYWIN_GFX); - PutWindowTilemap(gUnknown_203ACF0->field_16); - CopyWindowToVram(gUnknown_203ACF0->field_16, COPYWIN_GFX); + PutWindowTilemap(sPokedexScreenData->dexCountsWindowId); + CopyWindowToVram(sPokedexScreenData->dexCountsWindowId, COPYWIN_GFX); } -static void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void MoveCursorFunc_DexModeSelect(s32 itemIndex, bool8 onInit, struct ListMenu *list) { if (!onInit) PlaySE(SE_SELECT); if (itemIndex == LIST_CANCEL) { - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_15, gUnknown_8440EF0, 0x000, 0x000); - LoadPalette(gUnknown_8443460, 0x10, 0x20); + CopyToWindowPixelBuffer(sPokedexScreenData->selectionIconWindowId, sTopMenuSelectionIconTiles_Cancel, 0x000, 0x000); + LoadPalette(sTopMenuSelectionIconPals_Cancel, 0x10, 0x20); } else { - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_15, sUnknown_84520F4[itemIndex].map, 0x000, 0x000); - LoadPalette(sUnknown_84520F4[itemIndex].pal, 0x10, 0x20); + CopyToWindowPixelBuffer(sPokedexScreenData->selectionIconWindowId, sTopMenuSelectionIconGfxPtrs[itemIndex].tiles, 0x000, 0x000); + LoadPalette(sTopMenuSelectionIconGfxPtrs[itemIndex].pal, 0x10, 0x20); } - PutWindowTilemap(gUnknown_203ACF0->field_15); - CopyWindowToVram(gUnknown_203ACF0->field_15, COPYWIN_GFX); + PutWindowTilemap(sPokedexScreenData->selectionIconWindowId); + CopyWindowToVram(sPokedexScreenData->selectionIconWindowId, COPYWIN_GFX); } -static void sub_8102F48(u8 windowId, s32 itemId, u8 y) +static void ItemPrintFunc_DexModeSelect(u8 windowId, s32 itemId, u8 y) { u32 itemId_ = itemId; - if (itemId_ > 8 || gUnknown_203ACF0->field_08 & (1 << itemId_)) + if (itemId_ > 8 || sPokedexScreenData->unlockedCategories & (1 << itemId_)) ListMenuOverrideSetColors(1, 0, 3); else ListMenuOverrideSetColors(10, 0, 11); } -static void sub_8102F80(u8 taskId) +static void Task_DexScreen_NumericalOrder(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: ListMenuLoadStdPalAt(0x10, 0); ListMenuLoadStdPalAt(0x20, 1); - gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->orderedDexCount = DexScreen_CountMonsInOrderedList(sPokedexScreenData->dexOrderId); + sPokedexScreenData->state = 2; break; case 1: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gTasks[taskId].func = sub_810287C; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + gTasks[taskId].func = Task_PokedexScreen; + sPokedexScreenData->state = 0; break; case 2: - sub_810317C(); - gUnknown_203ACF0->field_01 = 3; + DexScreen_InitGfxForNumericalOrderList(); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: ShowBg(1); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 5; + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); + sPokedexScreenData->state = 5; break; case 5: - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); - gUnknown_203ACF0->field_60 = sub_81039F0(); - gUnknown_203ACF0->field_01 = 6; + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); + sPokedexScreenData->scrollArrowsTaskId = DexScreen_CreateDexOrderScrollArrows(); + sPokedexScreenData->state = 6; break; case 6: - gUnknown_203ACF0->field_30 = ListMenu_ProcessInput(gUnknown_203ACF0->field_41); - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + sPokedexScreenData->characteristicMenuInput = ListMenu_ProcessInput(sPokedexScreenData->orderedListMenuTaskId); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (JOY_NEW(A_BUTTON)) { - if ((gUnknown_203ACF0->field_30 >> 16) & 1) + if ((sPokedexScreenData->characteristicMenuInput >> 16) & 1) { - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_30; - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 7; + sPokedexScreenData->dexSpecies = sPokedexScreenData->characteristicMenuInput; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 7; } } else if (JOY_NEW(B_BUTTON)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; } break; case 7: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20); CopyBgTilemapBufferToVram(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gTasks[taskId].func = sub_81042EC; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + gTasks[taskId].func = Task_DexScreen_ShowMonPage; + sPokedexScreenData->state = 0; break; } } -static void sub_810317C(void) +static void DexScreen_InitGfxForNumericalOrderList(void) { struct ListMenuTemplate template; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); - gUnknown_203ACF0->field_40 = AddWindow(&sUnknown_845216C); - template = sUnknown_8452174; - template.items = gUnknown_203ACF0->field_44; - template.windowId = gUnknown_203ACF0->field_40; - template.totalItems = gUnknown_203ACF0->field_48; - sub_8103924(&template, gUnknown_203ACF0->field_42); + sPokedexScreenData->numericalOrderWindowId = AddWindow(&sWindowTemplate_OrderedListMenu); + template = sListMenuTemplate_OrderedListMenu; + template.items = sPokedexScreenData->listItems; + template.windowId = sPokedexScreenData->numericalOrderWindowId; + template.totalItems = sPokedexScreenData->orderedDexCount; + DexScreen_InitListMenuForOrderedList(&template, sPokedexScreenData->dexOrderId); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - sub_8106E78(gText_PokemonListNoColor, 1); + DexScreen_PrintStringWithAlignment(gText_PokemonListNoColor, TEXT_CENTER); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - sub_8104C2C(gText_PickOKExit); + DexScreen_PrintControlInfo(gText_PickOKExit); CopyWindowToVram(0, COPYWIN_GFX); CopyWindowToVram(1, COPYWIN_GFX); } -static void sub_8103238(u8 taskId) +static void Task_DexScreen_CharacteristicOrder(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: ListMenuLoadStdPalAt(0x10, 0); ListMenuLoadStdPalAt(0x20, 1); - gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->orderedDexCount = DexScreen_CountMonsInOrderedList(sPokedexScreenData->dexOrderId); + sPokedexScreenData->state = 2; break; case 1: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gTasks[taskId].func = sub_810287C; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + gTasks[taskId].func = Task_PokedexScreen; + sPokedexScreenData->state = 0; break; case 2: - sub_810345C(); - gUnknown_203ACF0->field_01 = 3; + DexScreen_CreateCharacteristicListMenu(); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: ShowBg(1); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 5; + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); + sPokedexScreenData->state = 5; break; case 5: - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); - gUnknown_203ACF0->field_60 = sub_81039F0(); - gUnknown_203ACF0->field_01 = 6; + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); + sPokedexScreenData->scrollArrowsTaskId = DexScreen_CreateDexOrderScrollArrows(); + sPokedexScreenData->state = 6; break; case 6: - gUnknown_203ACF0->field_30 = ListMenu_ProcessInput(gUnknown_203ACF0->field_41); - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + sPokedexScreenData->characteristicMenuInput = ListMenu_ProcessInput(sPokedexScreenData->orderedListMenuTaskId); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (JOY_NEW(A_BUTTON)) { - if (((gUnknown_203ACF0->field_30 >> 16) & 1) && !sub_8106A20(gUnknown_203ACF0->field_30)) + if (((sPokedexScreenData->characteristicMenuInput >> 16) & 1) && !DexScreen_LookUpCategoryBySpecies(sPokedexScreenData->characteristicMenuInput)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 7; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 7; } } else if (JOY_NEW(B_BUTTON)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; } break; case 7: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20); CopyBgTilemapBufferToVram(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gUnknown_203ACF0->field_2F = 1; - gTasks[taskId].func = sub_8103AC8; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + sPokedexScreenData->parentOfCategoryMenu = 1; + gTasks[taskId].func = Task_DexScreen_CategorySubmenu; + sPokedexScreenData->state = 0; break; } } -static void sub_810345C(void) +static void DexScreen_CreateCharacteristicListMenu(void) { struct ListMenuTemplate template; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); - gUnknown_203ACF0->field_40 = AddWindow(&sUnknown_845216C); - template = sUnknown_8452174; - template.items = gUnknown_203ACF0->field_44; - template.windowId = gUnknown_203ACF0->field_40; - template.totalItems = gUnknown_203ACF0->field_48; - sub_8103924(&template, gUnknown_203ACF0->field_42); + sPokedexScreenData->numericalOrderWindowId = AddWindow(&sWindowTemplate_OrderedListMenu); + template = sListMenuTemplate_OrderedListMenu; + template.items = sPokedexScreenData->listItems; + template.windowId = sPokedexScreenData->numericalOrderWindowId; + template.totalItems = sPokedexScreenData->orderedDexCount; + DexScreen_InitListMenuForOrderedList(&template, sPokedexScreenData->dexOrderId); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - sub_8106E78(gText_SearchNoColor, 1); + DexScreen_PrintStringWithAlignment(gText_SearchNoColor, TEXT_CENTER); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - sub_8104C2C(gText_PickOKExit); + DexScreen_PrintControlInfo(gText_PickOKExit); CopyWindowToVram(0, COPYWIN_GFX); CopyWindowToVram(1, COPYWIN_GFX); } -static u16 sub_8103518(u8 a0) +static u16 DexScreen_CountMonsInOrderedList(u8 orderIdx) { s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_COUNT : KANTO_DEX_COUNT; u16 ndex_num; @@ -1335,165 +1374,165 @@ static u16 sub_8103518(u8 a0) bool8 caught; bool8 seen; - switch (a0) + switch (orderIdx) { default: - case 0: + case DEX_ORDER_NUMERICAL_KANTO: for (i = 0; i < KANTO_DEX_COUNT; i++) { ndex_num = i + 1; - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (seen) { - gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; ret = ndex_num; } else { - gUnknown_203ACF0->field_44[i].label = gText_5Dashes; + sPokedexScreenData->listItems[i].label = gText_5Dashes; } - gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); } break; - case 1: - for (i = 0; i < SPECIES_CHIMECHO; i++) + case DEX_ORDER_ATOZ: + for (i = 0; i < NUM_SPECIES - 1; i++) { ndex_num = gPokedexOrder_Alphabetical[i]; if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (seen) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 2: + case DEX_ORDER_TYPE: for (i = 0; i < NUM_SPECIES - 1; i++) { ndex_num = SpeciesToNationalPokedexNum(gPokedexOrder_Type[i]); if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (caught) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 3: + case DEX_ORDER_LIGHTEST: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { ndex_num = gPokedexOrder_Weight[i]; if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (caught) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 4: + case DEX_ORDER_SMALLEST: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { ndex_num = gPokedexOrder_Height[i]; if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (caught) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 5: + case DEX_ORDER_NUMERICAL_NATIONAL: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { ndex_num = i + 1; - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (seen) { - gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; ret = ndex_num; } else { - gUnknown_203ACF0->field_44[i].label = gText_5Dashes; + sPokedexScreenData->listItems[i].label = gText_5Dashes; } - gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); } break; } return ret; } -static void sub_8103924(const struct ListMenuTemplate * template, u8 a1) +static void DexScreen_InitListMenuForOrderedList(const struct ListMenuTemplate * template, u8 order) { - switch (a1) + switch (order) { default: - case 0: - gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &sUnknown_845218C, gUnknown_203ACF0->field_36, gUnknown_203ACF0->field_34); + case DEX_ORDER_NUMERICAL_KANTO: + sPokedexScreenData->orderedListMenuTaskId = ListMenuInitInRect(template, sListMenuRects_OrderedList, sPokedexScreenData->kantoOrderMenuCursorPos, sPokedexScreenData->kantoOrderMenuItemsAbove); break; - case 1: - case 2: - case 3: - case 4: - gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &sUnknown_845218C, gUnknown_203ACF0->field_3A, gUnknown_203ACF0->field_38); + case DEX_ORDER_ATOZ: + case DEX_ORDER_TYPE: + case DEX_ORDER_LIGHTEST: + case DEX_ORDER_SMALLEST: + sPokedexScreenData->orderedListMenuTaskId = ListMenuInitInRect(template, sListMenuRects_OrderedList, sPokedexScreenData->characteristicOrderMenuCursorPos, sPokedexScreenData->characteristicOrderMenuItemsAbove); break; - case 5: - gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &sUnknown_845218C, gUnknown_203ACF0->field_3E, gUnknown_203ACF0->field_3C); + case DEX_ORDER_NUMERICAL_NATIONAL: + sPokedexScreenData->orderedListMenuTaskId = ListMenuInitInRect(template, sListMenuRects_OrderedList, sPokedexScreenData->nationalOrderMenuCursorPos, sPokedexScreenData->nationalOrderMenuItemsAbove); break; } } -static void sub_8103988(u8 a0) +static void DexScreen_DestroyDexOrderListMenu(u8 order) { - switch (a0) + switch (order) { default: - case 0: - DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_36, &gUnknown_203ACF0->field_34); + case DEX_ORDER_NUMERICAL_KANTO: + DestroyListMenuTask(sPokedexScreenData->orderedListMenuTaskId, &sPokedexScreenData->kantoOrderMenuCursorPos, &sPokedexScreenData->kantoOrderMenuItemsAbove); break; - case 1: - case 2: - case 3: - case 4: - DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3A, &gUnknown_203ACF0->field_38); + case DEX_ORDER_ATOZ: + case DEX_ORDER_TYPE: + case DEX_ORDER_LIGHTEST: + case DEX_ORDER_SMALLEST: + DestroyListMenuTask(sPokedexScreenData->orderedListMenuTaskId, &sPokedexScreenData->characteristicOrderMenuCursorPos, &sPokedexScreenData->characteristicOrderMenuItemsAbove); break; - case 5: - DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3E, &gUnknown_203ACF0->field_3C); + case DEX_ORDER_NUMERICAL_NATIONAL: + DestroyListMenuTask(sPokedexScreenData->orderedListMenuTaskId, &sPokedexScreenData->nationalOrderMenuCursorPos, &sPokedexScreenData->nationalOrderMenuItemsAbove); break; } } -static u8 sub_81039F0(void) +static u8 DexScreen_CreateDexOrderScrollArrows(void) { - struct ScrollArrowsTemplate template = sUnknown_84521B4; - if (gUnknown_203ACF0->field_48 > sUnknown_8452174.maxShowed) - template.fullyDownThreshold = gUnknown_203ACF0->field_48 - sUnknown_8452174.maxShowed; + struct ScrollArrowsTemplate template = sDexOrderScrollArrowsTemplate; + if (sPokedexScreenData->orderedDexCount > sListMenuTemplate_OrderedListMenu.maxShowed) + template.fullyDownThreshold = sPokedexScreenData->orderedDexCount - sListMenuTemplate_OrderedListMenu.maxShowed; else template.fullyDownThreshold = 0; - return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62); + return AddScrollIndicatorArrowPair(&template, &sPokedexScreenData->modeSelectCursorPosBak); } struct PokedexListItem @@ -1503,208 +1542,207 @@ struct PokedexListItem bool8 caught:1; }; -static void sub_8103A40(u8 windowId, s32 itemId, u8 y) +static void ItemPrintFunc_OrderedListMenu(u8 windowId, s32 itemId, u8 y) { - u32 itemId_ = itemId; - u16 species = itemId_; - bool8 seen = (itemId_ >> 16) & 1; // not used but required to match - bool8 caught = (itemId_ >> 17) & 1; + u16 species = (u32)itemId; + bool8 seen = ((u32)itemId >> 16) & 1; // not used but required to match + bool8 caught = ((u32)itemId >> 17) & 1; u8 type1; - sub_8104A34(gUnknown_203ACF0->field_40, 0, species, 12, y); + DexScreen_PrintMonDexNo(sPokedexScreenData->numericalOrderWindowId, 0, species, 12, y); if (caught) { - BlitMoveInfoIcon(gUnknown_203ACF0->field_40, 0, 0x28, y); + BlitMoveInfoIcon(sPokedexScreenData->numericalOrderWindowId, 0, 0x28, y); type1 = gBaseStats[species].type1; - BlitMoveInfoIcon(gUnknown_203ACF0->field_40, type1 + 1, 0x78, y); + BlitMoveInfoIcon(sPokedexScreenData->numericalOrderWindowId, type1 + 1, 0x78, y); if (type1 != gBaseStats[species].type2) - BlitMoveInfoIcon(gUnknown_203ACF0->field_40, gBaseStats[species].type2 + 1, 0x98, y); + BlitMoveInfoIcon(sPokedexScreenData->numericalOrderWindowId, gBaseStats[species].type2 + 1, 0x98, y); } } -static void sub_8103AC8(u8 taskId) +static void Task_DexScreen_CategorySubmenu(u8 taskId) { - int r4; + int pageFlipCmd; u8 *ptr; - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: HideBg(3); HideBg(2); HideBg(1); - sub_810699C(gUnknown_203ACF0->field_28); - if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29) - gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29; - gUnknown_203ACF0->field_01 = 2; + DexScreen_GetPageLimitsForCategory(sPokedexScreenData->category); + if (sPokedexScreenData->pageNum < sPokedexScreenData->firstPageInCategory) + sPokedexScreenData->pageNum = sPokedexScreenData->firstPageInCategory; + sPokedexScreenData->state = 2; break; case 1: - sub_8104E90(); + DexScreen_DestroyCategoryPageMonIconAndInfoWindows(); HideBg(2); HideBg(1); - switch (gUnknown_203ACF0->field_2F) + switch (sPokedexScreenData->parentOfCategoryMenu) { case 0: default: - gTasks[taskId].func = sub_810287C; + gTasks[taskId].func = Task_PokedexScreen; break; case 1: - gTasks[taskId].func = sub_8103238; + gTasks[taskId].func = Task_DexScreen_CharacteristicOrder; break; } - gUnknown_203ACF0->field_01 = 0; + sPokedexScreenData->state = 0; break; case 2: - sub_8104F0C(0); + DexScreen_CreateCategoryListGfx(FALSE); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); - sub_8105058(0xFF); - gUnknown_203ACF0->field_01 = 3; + DexScreen_CreateCategoryPageSelectionCursor(0xFF); + sPokedexScreenData->state = 3; break; case 3: - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); ShowBg(3); ShowBg(2); ShowBg(1); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: - gUnknown_203ACF0->field_60 = sub_8104234(); - gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->scrollArrowsTaskId = DexScreen_CreateCategoryMenuScrollArrows(); + sPokedexScreenData->categoryPageCursorTaskId = ListMenuAddCursorObjectInternal(&sCursorStruct_CategoryPage, 0); + sPokedexScreenData->state = 5; break; case 5: - sub_8105058(gUnknown_203ACF0->field_2D); - sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C); - gUnknown_203ACF0->field_62 = gUnknown_203ACF0->field_2B; - r4 = 0; - if (JOY_NEW(A_BUTTON) && sub_8104AB0(gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D], FLAG_GET_SEEN, 1)) - { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); - gUnknown_203ACF0->field_01 = 12; + DexScreen_CreateCategoryPageSelectionCursor(sPokedexScreenData->categoryCursorPosInPage); + DexScreen_UpdateCategoryPageCursorObject(sPokedexScreenData->categoryPageCursorTaskId, sPokedexScreenData->categoryCursorPosInPage, sPokedexScreenData->numMonsOnPage); + sPokedexScreenData->modeSelectCursorPosBak = sPokedexScreenData->pageNum; + pageFlipCmd = 0; + if (JOY_NEW(A_BUTTON) && DexScreen_GetSetPokedexFlag(sPokedexScreenData->pageSpecies[sPokedexScreenData->categoryCursorPosInPage], FLAG_GET_SEEN, TRUE)) + { + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + ListMenuRemoveCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0); + sPokedexScreenData->state = 12; break; } if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT)) { - if (gUnknown_203ACF0->field_2D != 0) + if (sPokedexScreenData->categoryCursorPosInPage != 0) { - gUnknown_203ACF0->field_2D--; + sPokedexScreenData->categoryCursorPosInPage--; PlaySE(SE_SELECT); break; } else - r4 = 1; + pageFlipCmd = 1; } if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_RIGHT)) { - if (gUnknown_203ACF0->field_2D < gUnknown_203ACF0->field_2C - 1) + if (sPokedexScreenData->categoryCursorPosInPage < sPokedexScreenData->numMonsOnPage - 1) { - gUnknown_203ACF0->field_2D++; + sPokedexScreenData->categoryCursorPosInPage++; PlaySE(SE_SELECT); break; } else - r4 = 2; + pageFlipCmd = 2; } - if (r4 == 0) - r4 = sub_8104284(); - switch (r4) + if (pageFlipCmd == 0) + pageFlipCmd = DexScreen_InputHandler_GetShoulderInput(); + switch (pageFlipCmd) { - case 0: + case 0: // No action break; - case 1: - while (gUnknown_203ACF0->field_2B > gUnknown_203ACF0->field_29) + case 1: // Left + while (sPokedexScreenData->pageNum > sPokedexScreenData->firstPageInCategory) { - gUnknown_203ACF0->field_2B--; - if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) + sPokedexScreenData->pageNum--; + if (DexScreen_IsPageUnlocked(sPokedexScreenData->category, sPokedexScreenData->pageNum)) { - gUnknown_203ACF0->field_01 = 8; + sPokedexScreenData->state = 8; break; } } - if (gUnknown_203ACF0->field_01 != 8) - gUnknown_203ACF0->field_01 = 6; + if (sPokedexScreenData->state != 8) + sPokedexScreenData->state = 6; break; - case 2: - while (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_2A - 1) + case 2: // Right + while (sPokedexScreenData->pageNum < sPokedexScreenData->lastPageInCategory - 1) { - gUnknown_203ACF0->field_2B++; - if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) + sPokedexScreenData->pageNum++; + if (DexScreen_IsPageUnlocked(sPokedexScreenData->category, sPokedexScreenData->pageNum)) { - gUnknown_203ACF0->field_01 = 10; + sPokedexScreenData->state = 10; break; } } - if (gUnknown_203ACF0->field_01 != 10) - gUnknown_203ACF0->field_01 = 6; + if (sPokedexScreenData->state != 10) + sPokedexScreenData->state = 6; break; } if (JOY_NEW(B_BUTTON)) { - gUnknown_203ACF0->field_01 = 6; + sPokedexScreenData->state = 6; } break; case 6: case 7: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + ListMenuRemoveCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; break; case 8: case 10: - sub_8104E90(); - sub_8105058(0xFF); - ListMenuUpdateCursorObject(gUnknown_203ACF0->field_61, 0, 0xA0, 0); - gUnknown_203ACF0->field_2E = 0; - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_01++; + DexScreen_DestroyCategoryPageMonIconAndInfoWindows(); + DexScreen_CreateCategoryPageSelectionCursor(0xFF); + ListMenuUpdateCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0, 0xA0, 0); + sPokedexScreenData->categoryPageSelectionCursorTimer = 0; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->state++; break; case 9: - if (sub_81052D0(0)) + if (DexScreen_FlipCategoryPageInDirection(0)) { - gUnknown_203ACF0->field_2D = gUnknown_203ACF0->field_2C - 1; - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->categoryCursorPosInPage = sPokedexScreenData->numMonsOnPage - 1; + sPokedexScreenData->state = 5; } break; case 11: - if (sub_81052D0(1)) + if (DexScreen_FlipCategoryPageInDirection(1)) { - gUnknown_203ACF0->field_2D = 0; - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->categoryCursorPosInPage = 0; + sPokedexScreenData->state = 5; } break; case 12: - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D]; + sPokedexScreenData->dexSpecies = sPokedexScreenData->pageSpecies[sPokedexScreenData->categoryCursorPosInPage]; PlaySE(SE_SELECT); - gUnknown_203ACF0->field_01 = 14; + sPokedexScreenData->state = 14; break; case 13: - sub_8106014(); - gUnknown_203ACF0->field_01 = 4; + RemoveDexPageWindows(); + sPokedexScreenData->state = 4; break; case 14: - sub_8105E1C(0); - gUnknown_203ACF0->field_01 = 15; + DexScreen_DrawMonDexPage(FALSE); + sPokedexScreenData->state = 15; break; case 15: - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_02[1] = 0; - gUnknown_203ACF0->field_01++; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->data[1] = 0; + sPokedexScreenData->state++; // fallthrough case 16: - if (gUnknown_203ACF0->field_02[1] < 6) + if (sPokedexScreenData->data[1] < 6) { - if (gUnknown_203ACF0->field_02[0]) + if (sPokedexScreenData->data[0]) { - sub_8105594(0, gUnknown_203ACF0->field_02[1]); + DexScreen_DexPageZoomEffectFrame(0, sPokedexScreenData->data[1]); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02[0] = 4; - gUnknown_203ACF0->field_02[1]++; + sPokedexScreenData->data[0] = 4; + sPokedexScreenData->data[1]++; } else { - gUnknown_203ACF0->field_02[0]--; + sPokedexScreenData->data[0]--; } } else @@ -1714,73 +1752,73 @@ static void sub_8103AC8(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_01 = 17; + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->state = 17; } break; case 17: if (JOY_NEW(A_BUTTON)) { - sub_8106014(); + RemoveDexPageWindows(); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 21; + sPokedexScreenData->state = 21; } else if (JOY_NEW(B_BUTTON)) { - gUnknown_203ACF0->field_01 = 18; + sPokedexScreenData->state = 18; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 18: - sub_8104F0C(0); - sub_8105594(0, 6); + DexScreen_CreateCategoryListGfx(FALSE); + DexScreen_DexPageZoomEffectFrame(0, 6); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 19; + sPokedexScreenData->state = 19; break; case 19: - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_02[1] = 6; - gUnknown_203ACF0->field_01++; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->data[1] = 6; + sPokedexScreenData->state++; // fallthrough case 20: - if (gUnknown_203ACF0->field_02[1]) + if (sPokedexScreenData->data[1]) { - if (gUnknown_203ACF0->field_02[0]) + if (sPokedexScreenData->data[0]) { - gUnknown_203ACF0->field_02[1]--; + sPokedexScreenData->data[1]--; FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); - sub_8105594(0, gUnknown_203ACF0->field_02[1]); + DexScreen_DexPageZoomEffectFrame(0, sPokedexScreenData->data[1]); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02[0] = 1; + sPokedexScreenData->data[0] = 1; } else - gUnknown_203ACF0->field_02[0]--; + sPokedexScreenData->data[0]--; } else { FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 13; + sPokedexScreenData->state = 13; } break; case 21: - sub_810603C(); - gUnknown_203ACF0->field_01 = 22; + DexScreen_DrawMonAreaPage(); + sPokedexScreenData->state = 22; break; case 22: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 23; + sPokedexScreenData->state = 23; break; case 23: if (JOY_NEW(A_BUTTON)) @@ -1791,7 +1829,7 @@ static void sub_8103AC8(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 26; + sPokedexScreenData->state = 26; } else if (JOY_NEW(B_BUTTON)) { @@ -1801,42 +1839,45 @@ static void sub_8103AC8(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 24; + sPokedexScreenData->state = 24; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 24: - sub_81067C0(); - gUnknown_203ACF0->field_01 = 25; + DexScreen_DestroyAreaScreenResources(); + sPokedexScreenData->state = 25; break; case 25: - sub_8105E1C(0); + DexScreen_DrawMonDexPage(FALSE); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 17; + sPokedexScreenData->state = 17; break; case 26: - sub_81067C0(); - gUnknown_203ACF0->field_01 = 18; + DexScreen_DestroyAreaScreenResources(); + sPokedexScreenData->state = 18; break; } } -static u8 sub_8104234(void) +static u8 DexScreen_CreateCategoryMenuScrollArrows(void) { - struct ScrollArrowsTemplate template = sUnknown_84524B4; - template.fullyUpThreshold = gUnknown_203ACF0->field_29; - template.fullyDownThreshold = gUnknown_203ACF0->field_2A - 1; - gUnknown_203ACF0->field_62 = gUnknown_203ACF0->field_2B; - return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62); + struct ScrollArrowsTemplate template = sScrollArrowsTemplate_CategoryMenu; + template.fullyUpThreshold = sPokedexScreenData->firstPageInCategory; + template.fullyDownThreshold = sPokedexScreenData->lastPageInCategory - 1; + sPokedexScreenData->modeSelectCursorPosBak = sPokedexScreenData->pageNum; + return AddScrollIndicatorArrowPair(&template, &sPokedexScreenData->modeSelectCursorPosBak); } -static int sub_8104284(void) +/* + * Returns 1 to flip pages left, 2 to flip pages right, 0 for no action + */ +static int DexScreen_InputHandler_GetShoulderInput(void) { switch (gSaveBlock2Ptr->optionsButtonMode) { @@ -1861,95 +1902,95 @@ static int sub_8104284(void) } } -static void sub_81042EC(u8 taskId) +static void Task_DexScreen_ShowMonPage(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: HideBg(3); HideBg(2); HideBg(1); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->state = 2; break; case 1: HideBg(2); HideBg(1); - gTasks[taskId].func = sub_8102F80; - gUnknown_203ACF0->field_01 = 0; + gTasks[taskId].func = Task_DexScreen_NumericalOrder; + sPokedexScreenData->state = 0; break; case 2: - gUnknown_203ACF0->field_2C = 1; - sub_8105E1C(0); - gUnknown_203ACF0->field_01 = 3; + sPokedexScreenData->numMonsOnPage = 1; + DexScreen_DrawMonDexPage(FALSE); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); - gUnknown_203ACF0->field_01 = 4; + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); + sPokedexScreenData->state = 4; break; case 4: - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); ShowBg(3); ShowBg(2); ShowBg(1); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->state = 5; break; case 5: if (JOY_NEW(A_BUTTON)) { - sub_8106014(); + RemoveDexPageWindows(); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 7; + sPokedexScreenData->state = 7; } else if (JOY_NEW(B_BUTTON)) { - sub_8106014(); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveDexPageWindows(); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; } - else if (JOY_NEW(DPAD_UP) && sub_8104664(1)) + else if (JOY_NEW(DPAD_UP) && DexScreen_TryScrollMonsVertical(1)) { - sub_8106014(); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 6; + RemoveDexPageWindows(); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 6; } - else if (JOY_NEW(DPAD_DOWN) && sub_8104664(0)) + else if (JOY_NEW(DPAD_DOWN) && DexScreen_TryScrollMonsVertical(0)) { - sub_8106014(); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 6; + RemoveDexPageWindows(); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 6; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 6: HideBg(2); HideBg(1); - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_30; - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->dexSpecies = sPokedexScreenData->characteristicMenuInput; + sPokedexScreenData->state = 2; break; case 7: - sub_810603C(); - gUnknown_203ACF0->field_01 = 8; + DexScreen_DrawMonAreaPage(); + sPokedexScreenData->state = 8; break; case 8: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 9; + sPokedexScreenData->state = 9; break; case 9: if (JOY_NEW(A_BUTTON)) { - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 12; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 12; } else if (JOY_NEW(B_BUTTON)) { @@ -1959,128 +2000,128 @@ static void sub_81042EC(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 10; + sPokedexScreenData->state = 10; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 10: - sub_81067C0(); - gUnknown_203ACF0->field_01 = 11; + DexScreen_DestroyAreaScreenResources(); + sPokedexScreenData->state = 11; break; case 11: - sub_8105E1C(0); + DexScreen_DrawMonDexPage(FALSE); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->state = 5; break; case 12: - sub_81067C0(); + DexScreen_DestroyAreaScreenResources(); FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 1; + sPokedexScreenData->state = 1; break; } } -static bool32 sub_8104664(u8 a0) +static bool32 DexScreen_TryScrollMonsVertical(u8 direction) { - int r3; - u16 *r6, *r12; + int selectedIndex; + u16 *itemsAbove_p, *cursorPos_p; - switch (gUnknown_203ACF0->field_42) + switch (sPokedexScreenData->dexOrderId) { default: - case 0: - r12 = &gUnknown_203ACF0->field_36; - r6 = &gUnknown_203ACF0->field_34; + case DEX_ORDER_NUMERICAL_KANTO: + cursorPos_p = &sPokedexScreenData->kantoOrderMenuCursorPos; + itemsAbove_p = &sPokedexScreenData->kantoOrderMenuItemsAbove; break; - case 1: - case 2: - case 3: - case 4: - r12 = &gUnknown_203ACF0->field_3A; - r6 = &gUnknown_203ACF0->field_38; + case DEX_ORDER_ATOZ: + case DEX_ORDER_TYPE: + case DEX_ORDER_LIGHTEST: + case DEX_ORDER_SMALLEST: + cursorPos_p = &sPokedexScreenData->characteristicOrderMenuCursorPos; + itemsAbove_p = &sPokedexScreenData->characteristicOrderMenuItemsAbove; break; - case 5: - r12 = &gUnknown_203ACF0->field_3E; - r6 = &gUnknown_203ACF0->field_3C; + case DEX_ORDER_NUMERICAL_NATIONAL: + cursorPos_p = &sPokedexScreenData->nationalOrderMenuCursorPos; + itemsAbove_p = &sPokedexScreenData->nationalOrderMenuItemsAbove; break; } - r3 = *r12 + *r6; - if (a0) + selectedIndex = *cursorPos_p + *itemsAbove_p; + if (direction) // Seek up { - if (r3 == 0) + if (selectedIndex == 0) return FALSE; - r3--; - while (r3 >= 0) //Should be while (--r3 >= 0) without the r3-- in the body or before the while at all, but this is needed to match. + selectedIndex--; + while (selectedIndex >= 0) //Should be while (--selectedIndex >= 0) without the selectedIndex-- in the body or before the while at all, but this is needed to match. { - if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1) + if ((sPokedexScreenData->listItems[selectedIndex].index >> 16) & 1) { break; } - r3--; + selectedIndex--; } - if (r3 < 0) + if (selectedIndex < 0) { return FALSE; } } - else + else // Seek down { - if (r3 == gUnknown_203ACF0->field_48 - 1) + if (selectedIndex == sPokedexScreenData->orderedDexCount - 1) { return FALSE; } - r3++; - while (r3 < gUnknown_203ACF0->field_48) //Should be while (++r3 < gUnknown_203ACF0->field_48) without the r3++ in the body or before the while at all, but this is needed to match. + selectedIndex++; + while (selectedIndex < sPokedexScreenData->orderedDexCount) //Should be while (++selectedIndex < sPokedexScreenData->orderedDexCount) without the selectedIndex++ in the body or before the while at all, but this is needed to match. { - if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1) + if ((sPokedexScreenData->listItems[selectedIndex].index >> 16) & 1) break; - r3++; + selectedIndex++; } - if (r3 >= gUnknown_203ACF0->field_48) + if (selectedIndex >= sPokedexScreenData->orderedDexCount) { return FALSE; } } - gUnknown_203ACF0->field_30 = gUnknown_203ACF0->field_44[r3].index; + sPokedexScreenData->characteristicMenuInput = sPokedexScreenData->listItems[selectedIndex].index; - if (gUnknown_203ACF0->field_48 > 9) + if (sPokedexScreenData->orderedDexCount > 9) { - if (r3 < 4) + if (selectedIndex < 4) { - *r12 = 0; - *r6 = r3; + *cursorPos_p = 0; + *itemsAbove_p = selectedIndex; } - else if (r3 >= (gUnknown_203ACF0->field_48 - 4)) + else if (selectedIndex >= (sPokedexScreenData->orderedDexCount - 4)) { - *r12 = (gUnknown_203ACF0->field_48 - 9); - *r6 = r3 + 9 - (gUnknown_203ACF0->field_48); + *cursorPos_p = (sPokedexScreenData->orderedDexCount - 9); + *itemsAbove_p = selectedIndex + 9 - (sPokedexScreenData->orderedDexCount); } else { - *r12 = r3 - 4; - *r6 = 4; + *cursorPos_p = selectedIndex - 4; + *itemsAbove_p = 4; } } else { - *r12 = 0; - *r6 = r3; + *cursorPos_p = 0; + *itemsAbove_p = selectedIndex; } return TRUE; } -void sub_81047B0(u8 *windowId_p) +static void DexScreen_RemoveWindow(u8 *windowId_p) { if (*windowId_p != 0xFF) { @@ -2089,7 +2130,7 @@ void sub_81047B0(u8 *windowId_p) } } -void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) +static void DexScreen_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) { u8 textColor[3]; switch (colorIdx) @@ -2123,17 +2164,17 @@ void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) AddTextPrinterParameterized4(windowId, fontId, x, y, fontId == 0 ? 0 : 1, 0, textColor, -1, str); } -void sub_8104880(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) +void DexScreen_PrintNum3LeadingZeroes(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) { u8 buff[4]; buff[0] = (num / 100) + CHAR_0; buff[1] = ((num %= 100) / 10) + CHAR_0; buff[2] = (num % 10) + CHAR_0; buff[3] = EOS; - sub_81047C8(windowId, fontId, buff, x, y, colorIdx); + DexScreen_AddTextPrinterParameterized(windowId, fontId, buff, x, y, colorIdx); } -static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) +static void DexScreen_PrintNum3RightAlign(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) { u8 buff[4]; int i; @@ -2147,10 +2188,10 @@ static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx break; buff[i] = CHAR_SPACE; } - sub_81047C8(windowId, fontId, buff, x, y, colorIdx); + DexScreen_AddTextPrinterParameterized(windowId, fontId, buff, x, y, colorIdx); } -u32 sub_81049CC(int species) +static u32 DexScreen_GetDefaultPersonality(int species) { switch (species) { @@ -2163,19 +2204,19 @@ u32 sub_81049CC(int species) } } -void sub_81049FC(u8 windowId, u16 species, u16 paletteOffset) +static void DexScreen_LoadMonPicInWindow(u8 windowId, u16 species, u16 paletteOffset) { - LoadMonPicInWindow(species, 8, sub_81049CC(species), TRUE, paletteOffset >> 4, windowId); + LoadMonPicInWindow(species, 8, DexScreen_GetDefaultPersonality(species), TRUE, paletteOffset >> 4, windowId); } -void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y) +static void DexScreen_PrintMonDexNo(u8 windowId, u8 fontId, u16 species, u8 x, u8 y) { u16 dexNum = SpeciesToNationalPokedexNum(species); - sub_81047C8(windowId, fontId, gText_PokedexNo, x, y, 0); - sub_8104880(windowId, fontId, dexNum, x + 9, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, fontId, gText_PokedexNo, x, y, 0); + DexScreen_PrintNum3LeadingZeroes(windowId, fontId, dexNum, x + 9, y, 0); } -s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) +s8 DexScreen_GetSetPokedexFlag(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) { u8 index; u8 bit; @@ -2195,6 +2236,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) case FLAG_GET_SEEN: if (gSaveBlock2Ptr->pokedex.seen[index] & mask) { + // Anticheat if ((gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask) && (gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask)) retVal = 1; @@ -2203,6 +2245,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) case FLAG_GET_CAUGHT: if (gSaveBlock2Ptr->pokedex.owned[index] & mask) { + // Anticheat if ((gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock2Ptr->pokedex.seen[index] & mask) && (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask) && (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask)) @@ -2211,6 +2254,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) break; case FLAG_SET_SEEN: gSaveBlock2Ptr->pokedex.seen[index] |= mask; + // Anticheat gSaveBlock1Ptr->seen1[index] |= mask; gSaveBlock1Ptr->seen2[index] |= mask; break; @@ -2221,7 +2265,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) return retVal; } -static u16 sub_8104BBC(u8 caseId, bool8 whichDex) +static u16 DexScreen_GetDexCount(u8 caseId, bool8 whichDex) { u16 count = 0; u16 i; @@ -2231,14 +2275,14 @@ static u16 sub_8104BBC(u8 caseId, bool8 whichDex) case 0: // Kanto for (i = 0; i < KANTO_DEX_COUNT; i++) { - if (sub_8104AB0(i + 1, caseId, FALSE)) + if (DexScreen_GetSetPokedexFlag(i + 1, caseId, FALSE)) count++; } break; case 1: // National for (i = 0; i < NATIONAL_DEX_COUNT; i++) { - if (sub_8104AB0(i + 1, caseId, FALSE)) + if (DexScreen_GetSetPokedexFlag(i + 1, caseId, FALSE)) count++; } @@ -2247,157 +2291,157 @@ static u16 sub_8104BBC(u8 caseId, bool8 whichDex) return count; } -void sub_8104C2C(const u8 *src) +static void DexScreen_PrintControlInfo(const u8 *src) { - sub_81047C8(1, 0, src, 236 - GetStringWidth(0, src, 0), 2, 4); + DexScreen_AddTextPrinterParameterized(1, 0, src, 236 - GetStringWidth(0, src, 0), 2, 4); } -bool8 sub_8104C64(u16 a0, u8 a1, u8 a2) +bool8 DexScreen_DrawMonPicInCategoryPage(u16 species, u8 slot, u8 numSlots) { struct WindowTemplate template; - a2--; - CopyToBgTilemapBufferRect_ChangePalette(3, sUnknown_845228C, gUnknown_8452334[a2][a1][0], gUnknown_8452334[a2][a1][1], 8, 8, a1 + 5); - if (gUnknown_203ACF0->field_20[a1] == 0xFF) - { - template = sUnknown_84521C4; - template.tilemapLeft = gUnknown_8452334[a2][a1][0]; - template.tilemapTop = gUnknown_8452334[a2][a1][1]; - template.paletteNum = a1 + 1; - template.baseBlock = a1 * 64 + 8; - gUnknown_203ACF0->field_20[a1] = AddWindow(&template); - FillWindowPixelBuffer(gUnknown_203ACF0->field_20[a1], PIXEL_FILL(0)); - sub_81049FC(gUnknown_203ACF0->field_20[a1], a0, a1 * 16 + 16); - PutWindowTilemap(gUnknown_203ACF0->field_20[a1]); - CopyWindowToVram(gUnknown_203ACF0->field_20[a1], COPYWIN_GFX); + numSlots--; + CopyToBgTilemapBufferRect_ChangePalette(3, sCategoryPageIconWindowBg, sCategoryPageIconCoords[numSlots][slot][0], sCategoryPageIconCoords[numSlots][slot][1], 8, 8, slot + 5); + if (sPokedexScreenData->categoryMonWindowIds[slot] == 0xFF) + { + template = sWindowTemplate_CategoryMonIcon; + template.tilemapLeft = sCategoryPageIconCoords[numSlots][slot][0]; + template.tilemapTop = sCategoryPageIconCoords[numSlots][slot][1]; + template.paletteNum = slot + 1; + template.baseBlock = slot * 64 + 8; + sPokedexScreenData->categoryMonWindowIds[slot] = AddWindow(&template); + FillWindowPixelBuffer(sPokedexScreenData->categoryMonWindowIds[slot], PIXEL_FILL(0)); + DexScreen_LoadMonPicInWindow(sPokedexScreenData->categoryMonWindowIds[slot], species, slot * 16 + 16); + PutWindowTilemap(sPokedexScreenData->categoryMonWindowIds[slot]); + CopyWindowToVram(sPokedexScreenData->categoryMonWindowIds[slot], COPYWIN_GFX); } else - PutWindowTilemap(gUnknown_203ACF0->field_20[a1]); + PutWindowTilemap(sPokedexScreenData->categoryMonWindowIds[slot]); - if (gUnknown_203ACF0->field_24[a1] == 0xFF) + if (sPokedexScreenData->categoryMonInfoWindowIds[slot] == 0xFF) { - if (a0 != SPECIES_NONE) + if (species != SPECIES_NONE) { - template = sUnknown_84521CC; - template.tilemapLeft = gUnknown_8452334[a2][a1][2]; - template.tilemapTop = gUnknown_8452334[a2][a1][3]; - template.baseBlock = a1 * 40 + 0x108; - gUnknown_203ACF0->field_24[a1] = AddWindow(&template); - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_24[a1], gUnknown_8440124, 0, 0); - sub_8104A34(gUnknown_203ACF0->field_24[a1], 0, a0, 12, 0); - sub_81047C8(gUnknown_203ACF0->field_24[a1], 2, gSpeciesNames[a0], 2, 13, 0); - if (sub_8104AB0(a0, FLAG_GET_CAUGHT, TRUE)) - BlitBitmapRectToWindow(gUnknown_203ACF0->field_24[a1], gUnknown_8443600, 0, 0, 8, 8, 2, 3, 8, 8); - PutWindowTilemap(gUnknown_203ACF0->field_24[a1]); - CopyWindowToVram(gUnknown_203ACF0->field_24[a1], COPYWIN_GFX); + template = sWindowTemplate_CategoryMonInfo; + template.tilemapLeft = sCategoryPageIconCoords[numSlots][slot][2]; + template.tilemapTop = sCategoryPageIconCoords[numSlots][slot][3]; + template.baseBlock = slot * 40 + 0x108; + sPokedexScreenData->categoryMonInfoWindowIds[slot] = AddWindow(&template); + CopyToWindowPixelBuffer(sPokedexScreenData->categoryMonInfoWindowIds[slot], sCategoryMonInfoBgTiles, 0, 0); + DexScreen_PrintMonDexNo(sPokedexScreenData->categoryMonInfoWindowIds[slot], 0, species, 12, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->categoryMonInfoWindowIds[slot], 2, gSpeciesNames[species], 2, 13, 0); + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, TRUE)) + BlitBitmapRectToWindow(sPokedexScreenData->categoryMonInfoWindowIds[slot], sDexScreen_CaughtIcon, 0, 0, 8, 8, 2, 3, 8, 8); + PutWindowTilemap(sPokedexScreenData->categoryMonInfoWindowIds[slot]); + CopyWindowToVram(sPokedexScreenData->categoryMonInfoWindowIds[slot], COPYWIN_GFX); } } else - PutWindowTilemap(gUnknown_203ACF0->field_24[a1]); + PutWindowTilemap(sPokedexScreenData->categoryMonInfoWindowIds[slot]); return TRUE; } -void sub_8104E90(void) +static void DexScreen_DestroyCategoryPageMonIconAndInfoWindows(void) { int i; for (i = 0; i < 4; i++) { - sub_81047B0(&gUnknown_203ACF0->field_20[i]); - sub_81047B0(&gUnknown_203ACF0->field_24[i]); + DexScreen_RemoveWindow(&sPokedexScreenData->categoryMonWindowIds[i]); + DexScreen_RemoveWindow(&sPokedexScreenData->categoryMonInfoWindowIds[i]); } } -void sub_8104EC0(u8 unused, u16 a1, u16 a2, u8 unused2, u8 unused3) +static void DexScreen_PrintCategoryPageNumbers(u8 windowId, u16 currentPage, u16 totalPages, u16 x, u16 y) { u8 buffer[30]; u8 *ptr = StringCopy(buffer, gText_Page); - ptr = ConvertIntToDecimalStringN(ptr, a1, STR_CONV_MODE_RIGHT_ALIGN, 2); + ptr = ConvertIntToDecimalStringN(ptr, currentPage, STR_CONV_MODE_RIGHT_ALIGN, 2); *ptr++ = CHAR_SLASH; - ptr = ConvertIntToDecimalStringN(ptr, a2, STR_CONV_MODE_RIGHT_ALIGN, 2); - sub_8106E78(buffer, 2); + ptr = ConvertIntToDecimalStringN(ptr, totalPages, STR_CONV_MODE_RIGHT_ALIGN, 2); + DexScreen_PrintStringWithAlignment(buffer, TEXT_RIGHT); } -bool8 sub_8104F0C(bool8 a0) +static bool8 DexScreen_CreateCategoryListGfx(bool8 justRegistered) { FillBgTilemapBufferRect_Palette0(3, 2, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 32, 20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20); - sub_81068DC(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B); + DexScreen_CreateCategoryPageSpeciesList(sPokedexScreenData->category, sPokedexScreenData->pageNum); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - if (a0) + if (justRegistered) { - sub_8106E78(sDexCategoryNamePtrs[gUnknown_203ACF0->field_28], 1); + DexScreen_PrintStringWithAlignment(sDexCategoryNamePtrs[sPokedexScreenData->category], TEXT_CENTER); } else { - sub_8106E78(sDexCategoryNamePtrs[gUnknown_203ACF0->field_28], 0); - sub_8104EC0(0, sub_8106AF8(gUnknown_203ACF0->field_2B), sub_8106AF8(gUnknown_203ACF0->field_2A - 1), 160, 2); + DexScreen_PrintStringWithAlignment(sDexCategoryNamePtrs[sPokedexScreenData->category], TEXT_LEFT); + DexScreen_PrintCategoryPageNumbers(0, DexScreen_PageNumberToRenderablePages(sPokedexScreenData->pageNum), DexScreen_PageNumberToRenderablePages(sPokedexScreenData->lastPageInCategory - 1), 160, 2); } CopyWindowToVram(0, COPYWIN_GFX); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - if (!a0) - sub_8104C2C(gText_PickFlipPageCheckCancel); + if (!justRegistered) + DexScreen_PrintControlInfo(gText_PickFlipPageCheckCancel); CopyWindowToVram(1, COPYWIN_GFX); - if (gUnknown_203ACF0->field_18[0] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[0], 0, gUnknown_203ACF0->field_2C); - if (gUnknown_203ACF0->field_18[1] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[1], 1, gUnknown_203ACF0->field_2C); - if (gUnknown_203ACF0->field_18[2] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[2], 2, gUnknown_203ACF0->field_2C); - if (gUnknown_203ACF0->field_18[3] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[3], 3, gUnknown_203ACF0->field_2C); + if (sPokedexScreenData->pageSpecies[0] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[0], 0, sPokedexScreenData->numMonsOnPage); + if (sPokedexScreenData->pageSpecies[1] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[1], 1, sPokedexScreenData->numMonsOnPage); + if (sPokedexScreenData->pageSpecies[2] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[2], 2, sPokedexScreenData->numMonsOnPage); + if (sPokedexScreenData->pageSpecies[3] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[3], 3, sPokedexScreenData->numMonsOnPage); return FALSE; } -void sub_8105058(u8 a0) +static void DexScreen_CreateCategoryPageSelectionCursor(u8 cursorPos) { int i; - u32 r7; + u32 palIdx; - if (a0 == 0xFF) + if (cursorPos == 0xFF) { for (i = 0; i < 4; i++) { - LoadPalette(&gUnknown_84406C8[0], 0x52 + 0x10 * i, 2); - LoadPalette(&gUnknown_84406C8[1], 0x58 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[0], 0x52 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[1], 0x58 + 0x10 * i, 2); } - LoadPalette(&gUnknown_84406C8[0], 0x141, 2); - gUnknown_203ACF0->field_2E = 0; + LoadPalette(&sDexScreen_CategoryCursorPals[0], 0x141, 2); + sPokedexScreenData->categoryPageSelectionCursorTimer = 0; } else { - gUnknown_203ACF0->field_2E++; - if (gUnknown_203ACF0->field_2E == 16) - gUnknown_203ACF0->field_2E = 0; - r7 = gUnknown_203ACF0->field_2E >> 2; + sPokedexScreenData->categoryPageSelectionCursorTimer++; + if (sPokedexScreenData->categoryPageSelectionCursorTimer == 16) + sPokedexScreenData->categoryPageSelectionCursorTimer = 0; + palIdx = sPokedexScreenData->categoryPageSelectionCursorTimer >> 2; for (i = 0; i < 4; i++) { - if (i == a0) + if (i == cursorPos) { - LoadPalette(&gUnknown_84406C8[2 * r7 + 2], 0x52 + 0x10 * i, 2); - LoadPalette(&gUnknown_84406C8[2 * r7 + 3], 0x58 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[2 * palIdx + 2], 0x52 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[2 * palIdx + 3], 0x58 + 0x10 * i, 2); } else { - LoadPalette(&gUnknown_84406C8[0], 0x52 + 0x10 * i, 2); - LoadPalette(&gUnknown_84406C8[1], 0x58 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[0], 0x52 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[1], 0x58 + 0x10 * i, 2); } } - LoadPalette(&gUnknown_84406C8[2 * r7 + 2], 0x141, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[2 * palIdx + 2], 0x141, 2); } } -void sub_8105178(u8 a0, u8 a1, u8 a2) +static void DexScreen_UpdateCategoryPageCursorObject(u8 taskId, u8 cursorPos, u8 numMonsInPage) { - a2--; - ListMenuUpdateCursorObject(a0, gUnknown_8452334[a2][a1][2] * 8, gUnknown_8452334[a2][a1][3] * 8, 0); + numMonsInPage--; + ListMenuUpdateCursorObject(taskId, sCategoryPageIconCoords[numMonsInPage][cursorPos][2] * 8, sCategoryPageIconCoords[numMonsInPage][cursorPos][3] * 8, 0); } -bool8 sub_81051AC(const u16 *a0, u8 a1, u16 *a2, u8 a3) +bool8 DexPage_TileBuffer_CopyCol(const u16 *srcBuf, u8 srcCol, u16 *dstBuf, u8 dstCol) { int i; - const u16 *src = &a0[a1]; - u16 *dst = &a2[a3]; + const u16 *src = &srcBuf[srcCol]; + u16 *dst = &dstBuf[dstCol]; for (i = 0; i < 20; i++) { *dst = *src; @@ -2407,42 +2451,42 @@ bool8 sub_81051AC(const u16 *a0, u8 a1, u16 *a2, u8 a3) return FALSE; } -bool8 sub_81051D0(u16 a0, u16 *a1, u8 a2) +bool8 DexPage_TileBuffer_FillCol(u16 tileNo, u16 *tileBuf, u8 x) { int i; - u16 *dst = &a1[a2]; + u16 *dst = &tileBuf[x]; for (i = 0; i < 20; i++) { - *dst = a0; + *dst = tileNo; dst += 32; } return FALSE; } -bool8 sub_81051F0(u8 a0) +bool8 DexScreen_TurnCategoryPage_BgEffect(u8 page) { - int i; - int r4; + int dstCol; + int srcCol; u16 *bg1buff = GetBgTilemapBuffer(1); u16 *bg2buff = GetBgTilemapBuffer(2); u16 *bg3buff = GetBgTilemapBuffer(3); - u16 *sp04 = gUnknown_203ACF0->field_5C + 0x800; - u16 *sp08 = gUnknown_203ACF0->field_5C + 0x400; - u16 *sp0C = gUnknown_203ACF0->field_5C + 0x000; - for (i = 0; i < 30; i++) + u16 *bg1mem = sPokedexScreenData->bgBufsMem + 0x800; + u16 *bg2mem = sPokedexScreenData->bgBufsMem + 0x400; + u16 *bg3mem = sPokedexScreenData->bgBufsMem + 0x000; + for (dstCol = 0; dstCol < 30; dstCol++) { - r4 = sUnknown_8452388[a0][i]; - if (r4 == 30) + srcCol = sDexScreenPageTurnColumns[page][dstCol]; + if (srcCol == 30) { - sub_81051D0(0x000, bg1buff, i); - sub_81051D0(0x000, bg2buff, i); - sub_81051D0(0x00C, bg3buff, i); + DexPage_TileBuffer_FillCol(0x000, bg1buff, dstCol); + DexPage_TileBuffer_FillCol(0x000, bg2buff, dstCol); + DexPage_TileBuffer_FillCol(0x00C, bg3buff, dstCol); } else { - sub_81051AC(sp04, r4, bg1buff, i); - sub_81051AC(sp08, r4, bg2buff, i); - sub_81051AC(sp0C, r4, bg3buff, i); + DexPage_TileBuffer_CopyCol(bg1mem, srcCol, bg1buff, dstCol); + DexPage_TileBuffer_CopyCol(bg2mem, srcCol, bg2buff, dstCol); + DexPage_TileBuffer_CopyCol(bg3mem, srcCol, bg3buff, dstCol); } } CopyBgTilemapBufferToVram(1); @@ -2451,28 +2495,32 @@ bool8 sub_81051F0(u8 a0) return FALSE; } -static bool8 sub_81052D0(u8 a0) +/* + * Direction = 0: Left; 1: Right + */ +static bool8 DexScreen_FlipCategoryPageInDirection(u8 direction) { - u16 r4; + u16 color; if (IsNationalPokedexEnabled()) - r4 = gUnknown_84406E0[7]; + color = sNationalDexPalette[7]; else - r4 = gUnknown_84404C8[7]; - switch (gUnknown_203ACF0->field_02[0]) + color = sKantoDexPalette[7]; + switch (sPokedexScreenData->data[0]) { case 0: - gUnknown_203ACF0->field_5C = Alloc(3 * BG_SCREEN_SIZE); - if (a0) - gUnknown_203ACF0->field_02[0] = 6; + sPokedexScreenData->bgBufsMem = Alloc(3 * BG_SCREEN_SIZE); + if (direction) + sPokedexScreenData->data[0] = 6; else - gUnknown_203ACF0->field_02[0] = 2; + sPokedexScreenData->data[0] = 2; break; case 1: - Free(gUnknown_203ACF0->field_5C); + Free(sPokedexScreenData->bgBufsMem); return TRUE; + // Go left case 2: - BeginNormalPaletteFade(0x00007FFF, 0, 0, 16, r4); - gUnknown_203ACF0->field_02[0]++; + BeginNormalPaletteFade(0x00007FFF, 0, 0, 16, color); + sPokedexScreenData->data[0]++; break; case 3: FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20); @@ -2481,128 +2529,141 @@ static bool8 sub_81052D0(u8 a0) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - gUnknown_203ACF0->field_02[0]++; + sPokedexScreenData->data[0]++; break; case 4: - BeginNormalPaletteFade(0x00007FFF, 0, 0, 0, r4); - sub_8104F0C(FALSE); - CpuFastCopy(GetBgTilemapBuffer(3), &gUnknown_203ACF0->field_5C[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(2), &gUnknown_203ACF0->field_5C[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(1), &gUnknown_203ACF0->field_5C[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + BeginNormalPaletteFade(0x00007FFF, 0, 0, 0, color); + DexScreen_CreateCategoryListGfx(FALSE); + CpuFastCopy(GetBgTilemapBuffer(3), &sPokedexScreenData->bgBufsMem[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(2), &sPokedexScreenData->bgBufsMem[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(1), &sPokedexScreenData->bgBufsMem[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 32, 20); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20); - - gUnknown_203ACF0->field_02[1] = 0; - gUnknown_203ACF0->field_02[0]++; + + sPokedexScreenData->data[1] = 0; + sPokedexScreenData->data[0]++; PlaySE(SE_BALL_TRAY_ENTER); break; case 5: - if (gUnknown_203ACF0->field_02[1] < 10) + if (sPokedexScreenData->data[1] < 10) { - sub_81051F0(gUnknown_203ACF0->field_02[1]); - gUnknown_203ACF0->field_02[1]++; + DexScreen_TurnCategoryPage_BgEffect(sPokedexScreenData->data[1]); + sPokedexScreenData->data[1]++; } else { - gUnknown_203ACF0->field_02[0] = 1; + sPokedexScreenData->data[0] = 1; } break; + // Go right case 6: - CpuFastCopy(GetBgTilemapBuffer(3), &gUnknown_203ACF0->field_5C[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(2), &gUnknown_203ACF0->field_5C[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(1), &gUnknown_203ACF0->field_5C[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(3), &sPokedexScreenData->bgBufsMem[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(2), &sPokedexScreenData->bgBufsMem[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(1), &sPokedexScreenData->bgBufsMem[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - gUnknown_203ACF0->field_02[1] = 9; - gUnknown_203ACF0->field_02[0]++; + sPokedexScreenData->data[1] = 9; + sPokedexScreenData->data[0]++; PlaySE(SE_BALL_TRAY_ENTER); break; case 7: - if (gUnknown_203ACF0->field_02[1] != 0) + if (sPokedexScreenData->data[1] != 0) { - sub_81051F0(gUnknown_203ACF0->field_02[1]); - gUnknown_203ACF0->field_02[1]--; + DexScreen_TurnCategoryPage_BgEffect(sPokedexScreenData->data[1]); + sPokedexScreenData->data[1]--; } else { - sub_81051F0(gUnknown_203ACF0->field_02[0]); - BeginNormalPaletteFade(0x00007FFF, 0, 16, 16, r4); - gUnknown_203ACF0->field_02[0]++; +#ifdef BUGFIX + DexScreen_TurnCategoryPage_BgEffect(0); +#else + DexScreen_TurnCategoryPage_BgEffect(sPokedexScreenData->data[0]); +#endif + BeginNormalPaletteFade(0x00007FFF, 0, 16, 16, color); + sPokedexScreenData->data[0]++; } break; case 8: gPaletteFade.bufferTransferDisabled = TRUE; - sub_8104F0C(FALSE); + DexScreen_CreateCategoryListGfx(FALSE); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - gUnknown_203ACF0->field_02[0]++; + sPokedexScreenData->data[0]++; break; case 9: gPaletteFade.bufferTransferDisabled = FALSE; - BeginNormalPaletteFade(0x00007FFF, 0, 16, 0, r4); - gUnknown_203ACF0->field_02[0] = 1; + BeginNormalPaletteFade(0x00007FFF, 0, 16, 0, color); + sPokedexScreenData->data[0] = 1; break; } return FALSE; } -void sub_8105594(u8 a0, u8 a1) +// Scale from 0 to 6 +void DexScreen_DexPageZoomEffectFrame(u8 bg, u8 scale) { - u8 v0, v1, v2, v3; - s16 v4, v5, v6; - - if (!gUnknown_203ACF0->field_2C) + u8 tileLeft, tileTop, width, height; + s16 left, top, divY; + + if (!sPokedexScreenData->numMonsOnPage) { - v0 = gUnknown_8452334[0][0][2]; - v1 = gUnknown_8452334[0][0][3]; + tileLeft = sCategoryPageIconCoords[0][0][2]; + tileTop = sCategoryPageIconCoords[0][0][3]; } else { - v0 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][2]; - v1 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][3]; - } - - v2 = 6 + (a1 * 4); - v3 = 3 + (a1 * 2); - if (v2 >= 28) - v2 = 28; - if (v3 >= 14) - v3 = 14; - v4 = v0 - ((a1 * 4) / 2); - v5 = v1 - ((a1 * 2) / 2); - if ((v4 + v2 + 2) >= 30) - v4 -= ((v4 + v2 + 2) - 30); - else if (v4 < 0) - v4 = 0; - if ((v5 + v3 + 2) >= 18) - v5 -= ((v5 + v3 + 2) - 18); - else if (v5 < 2) - v5 = 2; - v6 = (v5 + 1) + ((v3 / 2) + 1); - - FillBgTilemapBufferRect_Palette0(a0, 4, v4, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 5, v4 + 1, v5, v2, 1); - FillBgTilemapBufferRect_Palette0(a0, 1028, v4 + 1 + v2, v5, 1, 1); - - FillBgTilemapBufferRect_Palette0(a0, 10, v4, v5 + 1 + v3, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 11, v4 + 1, v5 + 1 + v3, v2, 1); - FillBgTilemapBufferRect_Palette0(a0, 1034, v4 + 1 + v2, v5 + 1 + v3, 1, 1); - - FillBgTilemapBufferRect_Palette0(a0, 6, v4, v5 + 1, 1, v6 - v5 - 1); - FillBgTilemapBufferRect_Palette0(a0, 7, v4, v6, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 9, v4, v6 + 1, 1, v5 + v3 - v6); - - FillBgTilemapBufferRect_Palette0(a0, 1030, v4 + 1 + v2, v5 + 1, 1, v6 - v5 - 1); - FillBgTilemapBufferRect_Palette0(a0, 1031, v4 + 1 + v2, v6, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 1033, v4 + 1 + v2, v6 + 1, 1, v5 + v3 - v6); - - FillBgTilemapBufferRect_Palette0(a0, 1, v4 + 1, v5 + 1, v2, v6 - v5 - 1); - FillBgTilemapBufferRect_Palette0(a0, 8, v4 + 1, v6, v2, 1); - FillBgTilemapBufferRect_Palette0(a0, 2, v4 + 1, v6 + 1, v2, v5 + v3 - v6); -} - -void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3) + tileLeft = sCategoryPageIconCoords[sPokedexScreenData->numMonsOnPage - 1][sPokedexScreenData->categoryCursorPosInPage][2]; + tileTop = sCategoryPageIconCoords[sPokedexScreenData->numMonsOnPage - 1][sPokedexScreenData->categoryCursorPosInPage][3]; + } + + width = 6 + (scale * 4); + height = 3 + (scale * 2); + if (width >= 28) // Make sure it's not wider than the screen + width = 28; + if (height >= 14) // Make sure it's not taller than the screen + height = 14; + + left = tileLeft - ((scale * 4) / 2); + top = tileTop - ((scale * 2) / 2); + if ((left + width + 2) >= 30) // Don't wrap right... + left -= ((left + width + 2) - 30); + else if (left < 0) // ... left ... + left = 0; + if ((top + height + 2) >= 18) // ... down ... + top -= ((top + height + 2) - 18); + else if (top < 2) // or up. + top = 2; + + divY = (top + 1) + ((height / 2) + 1); // The horizontal divider + + // Top edge + FillBgTilemapBufferRect_Palette0(bg, 4, left, top, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, 5, left + 1, top, width, 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(4), left + 1 + width, top, 1, 1); + + // Bottom edge + FillBgTilemapBufferRect_Palette0(bg, 10, left, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, 11, left + 1, top + 1 + height, width, 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(10), left + 1 + width, top + 1 + height, 1, 1); + + // Left edge + FillBgTilemapBufferRect_Palette0(bg, 6, left, top + 1, 1, divY - top - 1); + FillBgTilemapBufferRect_Palette0(bg, 7, left, divY, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, 9, left, divY + 1, 1, top + height - divY); + + // Right edge + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(6), left + 1 + width, top + 1, 1, divY - top - 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(7), left + 1 + width, divY, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(9), left + 1 + width, divY + 1, 1, top + height - divY); + + // Interior + FillBgTilemapBufferRect_Palette0(bg, 1, left + 1, top + 1, width, divY - top - 1); + FillBgTilemapBufferRect_Palette0(bg, 8, left + 1, divY, width, 1); + FillBgTilemapBufferRect_Palette0(bg, 2, left + 1, divY + 1, width, top + height - divY); +} + +void DexScreen_PrintMonCategory(u8 windowId, u16 species, u8 x, u8 y) { u8 * categoryName; u8 index, categoryStr[12]; @@ -2611,7 +2672,7 @@ void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3) categoryName = (u8 *)gPokedexEntries[species].categoryName; index = 0; - if (sub_8104AB0(species, 1, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { #if REVISION == 0 while ((categoryName[index] != CHAR_SPACE) && (index < 11)) @@ -2631,15 +2692,15 @@ void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3) index++; } } - + categoryStr[index] = EOS; - sub_81047C8(a0, 0, categoryStr, a2, a3, 0); - a2 += GetStringWidth(0, categoryStr, 0); - sub_81047C8(a0, 0, gText_PokedexPokemon, a2, a3, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, categoryStr, x, y, 0); + x += GetStringWidth(0, categoryStr, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, gText_PokedexPokemon, x, y, 0); } -void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y) +void DexScreen_PrintMonHeight(u8 windowId, u16 species, u8 x, u8 y) { u16 height; u32 inches, feet; @@ -2657,7 +2718,7 @@ void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y) buffer[i++] = 5; buffer[i++] = CHAR_SPACE; - if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { inches = 10000 * height / 254; // actually tenths of inches here if (inches % 10 >= 5) @@ -2691,12 +2752,12 @@ void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y) } buffer[i++] = EOS; - sub_81047C8(windowId, 0, labelText, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, labelText, x, y, 0); x += 30; - sub_81047C8(windowId, 0, buffer, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, buffer, x, y, 0); } -void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) +void DexScreen_PrintMonWeight(u8 windowId, u16 species, u8 x, u8 y) { u16 weight; u32 lbs; @@ -2717,10 +2778,11 @@ void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING; buffer[i++] = 5; - if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { - lbs = (weight * 100000) / 4536; + lbs = (weight * 100000) / 4536; // Convert to hundredths of lb + // Round up to the nearest 0.1 lb if (lbs % 10 >= 5) lbs += 10; @@ -2746,7 +2808,7 @@ void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) output = TRUE; i++; } - + lbs %= 10000; if ((buffer[i] = (lbs / 1000) + CHAR_0) == CHAR_0 && !output) { @@ -2782,23 +2844,23 @@ void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) buffer[i + j] = lbsText[j]; buffer[i + j] = EOS; - sub_81047C8(windowId, 0, labelText, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, labelText, x, y, 0); x += 30; - sub_81047C8(windowId, 0, buffer, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, buffer, x, y, 0); } -void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y) +void DexScreen_PrintMonFlavorText(u8 windowId, u16 species, u8 x, u8 y) { struct TextPrinterTemplate printerTemplate; u16 length; - s32 v1; + s32 xCenter; species = SpeciesToNationalPokedexNum(species); - if (sub_8104AB0(species, 1, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { printerTemplate.currentChar = gPokedexEntries[species].description; - printerTemplate.windowId = a0; + printerTemplate.windowId = windowId; printerTemplate.fontId = 2; printerTemplate.letterSpacing = 1; printerTemplate.lineSpacing = 0; @@ -2808,10 +2870,10 @@ void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y) printerTemplate.shadowColor = 2; length = GetStringWidth(2, gPokedexEntries[species].description, 0); - v1 = x + (240 - length) / 2; + xCenter = x + (240 - length) / 2; - if (v1 > 0) - x = v1; + if (xCenter > 0) + x = xCenter; else x = 0; @@ -2824,257 +2886,281 @@ void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y) } } -void sub_8105D64(u8 a0, u16 species, u8 a2, u8 a3) +void DexScreen_DrawMonFootprint(u8 windowId, u16 species, u8 x, u8 y) { - u16 i, j, unused, v3; - u8 v4, v5; + u16 i, j, unused, tileIdx; + u8 footprintPixel, footprintTile; u8 * buffer; u8 * footprint; - if (!(sub_8104AB0(species, 1, 1))) + if (!(DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, TRUE))) return; footprint = (u8 *)(gMonFootprintTable[species]); buffer = gDecompressionBuffer; unused = 0; - v3 = 0; + tileIdx = 0; + // Expand 1bpp to 4bpp for (i = 0; i < 32; i++) { - v4 = footprint[i]; - for (j = 0; j < 4; j++) + footprintPixel = footprint[i]; + for (j = 0; j < 8 / 2; j++) { - v5 = 0; - if (v4 & (1 << (j * 2))) - v5 |= 1; - if (v4 & (2 << (j * 2))) - v5 |= 16; - buffer[v3] = v5; - v3++; + footprintTile = 0; + if (footprintPixel & (1 << (j * 2))) + footprintTile |= 0x01; + if (footprintPixel & (2 << (j * 2))) + footprintTile |= 0x10; + buffer[tileIdx] = footprintTile; + tileIdx++; } } - BlitBitmapRectToWindow(a0, buffer, 0, 0, 16, 16, a2, a3, 16, 16); + BlitBitmapRectToWindow(windowId, buffer, 0, 0, 16, 16, x, y, 16, 16); } -u8 sub_8105E1C(bool8 a0) +static u8 DexScreen_DrawMonDexPage(bool8 justRegistered) { - sub_8105594(3, 6); + DexScreen_DexPageZoomEffectFrame(3, 6); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16); - gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_84521D4); - gUnknown_203ACF0->field_4A[1] = AddWindow(&gUnknown_84521DC); - gUnknown_203ACF0->field_4A[2] = AddWindow(&gUnknown_84521E4); - - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], 0); - sub_81049FC(gUnknown_203ACF0->field_4A[0], gUnknown_203ACF0->field_5A, 144); - PutWindowTilemap(gUnknown_203ACF0->field_4A[0]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[1], 0); - sub_8104A34(gUnknown_203ACF0->field_4A[1], 0, gUnknown_203ACF0->field_5A, 0, 8); - sub_81047C8(gUnknown_203ACF0->field_4A[1], 2, gSpeciesNames[gUnknown_203ACF0->field_5A], 28, 8, 0); - sub_8105800(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 24); - sub_81058C4(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 36); - sub_8105A3C(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 48); - sub_8105D64(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 88, 40); - - PutWindowTilemap(gUnknown_203ACF0->field_4A[1]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[1], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[2], 0); - sub_8105CB0(gUnknown_203ACF0->field_4A[2], gUnknown_203ACF0->field_5A, 0, 8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[2]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[2], 2); - FillWindowPixelBuffer(1, 255); - if (a0 == FALSE) - { - sub_81047C8(1, 0, gText_Cry, 8, 2, 4); - sub_8104C2C(gText_NextDataCancel); + sPokedexScreenData->windowIds[0] = AddWindow(&sWindowTemplate_DexEntry_MonPic); + sPokedexScreenData->windowIds[1] = AddWindow(&sWindowTemplate_DexEntry_SpeciesStats); + sPokedexScreenData->windowIds[2] = AddWindow(&sWindowTemplate_DexEntry_FlavorText); + + // Mon pic + FillWindowPixelBuffer(sPokedexScreenData->windowIds[0], PIXEL_FILL(0)); + DexScreen_LoadMonPicInWindow(sPokedexScreenData->windowIds[0], sPokedexScreenData->dexSpecies, 144); + PutWindowTilemap(sPokedexScreenData->windowIds[0]); + CopyWindowToVram(sPokedexScreenData->windowIds[0], COPYWIN_GFX); + + // Species stats + FillWindowPixelBuffer(sPokedexScreenData->windowIds[1], PIXEL_FILL(0)); + DexScreen_PrintMonDexNo(sPokedexScreenData->windowIds[1], 0, sPokedexScreenData->dexSpecies, 0, 8); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[1], 2, gSpeciesNames[sPokedexScreenData->dexSpecies], 28, 8, 0); + DexScreen_PrintMonCategory(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 0, 24); + DexScreen_PrintMonHeight(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 0, 36); + DexScreen_PrintMonWeight(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 0, 48); + DexScreen_DrawMonFootprint(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 88, 40); + PutWindowTilemap(sPokedexScreenData->windowIds[1]); + CopyWindowToVram(sPokedexScreenData->windowIds[1], COPYWIN_GFX); + + // Dex entry + FillWindowPixelBuffer(sPokedexScreenData->windowIds[2], PIXEL_FILL(0)); + DexScreen_PrintMonFlavorText(sPokedexScreenData->windowIds[2], sPokedexScreenData->dexSpecies, 0, 8); + PutWindowTilemap(sPokedexScreenData->windowIds[2]); + CopyWindowToVram(sPokedexScreenData->windowIds[2], COPYWIN_GFX); + + // Control info + FillWindowPixelBuffer(1, PIXEL_FILL(15)); + if (justRegistered == FALSE) + { + DexScreen_AddTextPrinterParameterized(1, 0, gText_Cry, 8, 2, 4); + DexScreen_PrintControlInfo(gText_NextDataCancel); } else - sub_8104C2C(gText_Next); + // Just registered + DexScreen_PrintControlInfo(gText_Next); PutWindowTilemap(1); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); return 1; } -u8 sub_8106014(void) +u8 RemoveDexPageWindows(void) { - sub_81047B0(&gUnknown_203ACF0->field_4A[0]); - sub_81047B0(&gUnknown_203ACF0->field_4A[1]); - sub_81047B0(&gUnknown_203ACF0->field_4A[2]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[0]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[1]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[2]); return 0; } -u8 sub_810603C(void) +u8 DexScreen_DrawMonAreaPage(void) { int i; - u8 v1, v2; - bool8 v3; - s16 v4, v5; + u8 width, height; + bool8 monIsCaught; + s16 left, top; u16 speciesId, species; - u16 v8; + u16 kantoMapVoff; - species = gUnknown_203ACF0->field_5A; + species = sPokedexScreenData->dexSpecies; speciesId = SpeciesToNationalPokedexNum(species); - v3 = sub_8104AB0(species, 1, 1); - v1 = 28; - v2 = 14; - v4 = 0; - v5 = 2; - - FillBgTilemapBufferRect_Palette0(3, 4, v4, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 1028, v4 + 1 + v1, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 2052, v4, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 3076, v4 + 1 + v1, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 5, v4 + 1, v5, v1, 1); - FillBgTilemapBufferRect_Palette0(3, 2053, v4 + 1, v5 + 1 + v2, v1, 1); - FillBgTilemapBufferRect_Palette0(3, 6, v4, v5 + 1, 1, v2); - FillBgTilemapBufferRect_Palette0(3, 1030, v4 + 1 + v1, v5 + 1, 1, v2); - FillBgTilemapBufferRect_Palette0(3, 1, v4 + 1, v5 + 1, v1, v2); + monIsCaught = DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, TRUE); + width = 28; + height = 14; + left = 0; + top = 2; + + FillBgTilemapBufferRect_Palette0(3, 4, left, top, 1, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_H_FLIP(4), left + 1 + width, top, 1, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_V_FLIP(4), left, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_H_V_FLIP(4), left + 1 + width, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(3, 5, left + 1, top, width, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_V_FLIP(5), left + 1, top + 1 + height, width, 1); + FillBgTilemapBufferRect_Palette0(3, 6, left, top + 1, 1, height); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_H_FLIP(6), left + 1 + width, top + 1, 1, height); + FillBgTilemapBufferRect_Palette0(3, 1, left + 1, top + 1, width, height); FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16); - v1 = 10; - v2 = 6; - v4 = 1; - v5 = 9; - - FillBgTilemapBufferRect_Palette0(0, 29, v4, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 1053, v4 + 1 + v1, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 2077, v4, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 3101, v4 + 1 + v1, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 30, v4 + 1, v5, v1, 1); - FillBgTilemapBufferRect_Palette0(0, 2078, v4 + 1, v5 + 1 + v2, v1, 1); - FillBgTilemapBufferRect_Palette0(0, 31, v4, v5 + 1, 1, v2); - FillBgTilemapBufferRect_Palette0(0, 1055, v4 + 1 + v1, v5 + 1, 1, v2); + width = 10; + height = 6; + left = 1; + top = 9; + + FillBgTilemapBufferRect_Palette0(0, 29, left, top, 1, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_H_FLIP(29), left + 1 + width, top, 1, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_V_FLIP(29), left, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_H_V_FLIP(29), left + 1 + width, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(0, 30, left + 1, top, width, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_V_FLIP(30), left + 1, top + 1 + height, width, 1); + FillBgTilemapBufferRect_Palette0(0, 31, left, top + 1, 1, height); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_H_FLIP(31), left + 1 + width, top + 1, 1, height); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20); - gUnknown_203ACF0->field_64 = GetUnlockedSeviiAreas(); - v8 = 4; + sPokedexScreenData->unlockedSeviiAreas = GetUnlockedSeviiAreas(); + kantoMapVoff = 4; + // If any of the postgame islands are unlocked, Kanto map needs to be flush with the + // top of the screen. for (i = 3; i < 7; i++) - if ((gUnknown_203ACF0->field_64 >> i) & 1) - v8 = 0; - - gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_8452214); - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443620, 0, 0); - SetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2, - GetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2) + v8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[0]); + if ((sPokedexScreenData->unlockedSeviiAreas >> i) & 1) + kantoMapVoff = 0; + + sPokedexScreenData->windowIds[0] = AddWindow(&sWindowTemplate_AreaMap_Kanto); + CopyToWindowPixelBuffer(sPokedexScreenData->windowIds[0], (void *)sTilemap_AreaMap_Kanto, 0, 0); + SetWindowAttribute(sPokedexScreenData->windowIds[0], WINDOW_TILEMAP_TOP, + GetWindowAttribute(sPokedexScreenData->windowIds[0], WINDOW_TILEMAP_TOP) + kantoMapVoff); + PutWindowTilemap(sPokedexScreenData->windowIds[0]); for (i = 0; i < 7; i++) - if ((gUnknown_203ACF0->field_64 >> i) & 1) - { - gUnknown_203ACF0->field_4A[i + 1] = AddWindow(gUnknown_8452254[i].window); - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[i + 1], gUnknown_8452254[i].tilemap, 0, 0); - SetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2) + v8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[i + 1]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[i + 1], 2); - } - gUnknown_203ACF0->field_4A[8] = AddWindow(&gUnknown_84521F4); - gUnknown_203ACF0->field_4A[9] = AddWindow(&gUnknown_84521FC); - gUnknown_203ACF0->field_4A[10] = AddWindow(&gUnknown_8452204); - gUnknown_203ACF0->field_4A[11] = AddWindow(&gUnknown_84521EC); - gUnknown_203ACF0->field_4A[12] = AddWindow(&gUnknown_845220C); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[11], 0); - sub_8107CD8(160, species); - sub_8107CF8(gUnknown_203ACF0->field_4A[11], species, sub_81049CC(species), 0, 0); - PutWindowTilemap(gUnknown_203ACF0->field_4A[11]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[11], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[9], 0); - { - s32 width = GetStringWidth(0, gText_Size, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[9], 0, gText_Size, (gUnknown_84521FC.width * 8 - width) / 2, 4, 0); - } - PutWindowTilemap(gUnknown_203ACF0->field_4A[9]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[9], 2); - - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[10], 0); - { - s32 width = GetStringWidth(0, gText_Area, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[10], 0, gText_Area, (gUnknown_8452204.width * 8 - width) / 2, 4, 0); - } - SetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2) + v8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[10]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[10], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[8], 0); - sub_8104A34(gUnknown_203ACF0->field_4A[8], 0, species, 0, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[8], 2, gSpeciesNames[species], 3, 12, 0); - PutWindowTilemap(gUnknown_203ACF0->field_4A[8]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[8], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[12], 0); + if ((sPokedexScreenData->unlockedSeviiAreas >> i) & 1) + { + sPokedexScreenData->windowIds[i + 1] = AddWindow(sAreaMapStructs_SeviiIslands[i].window); + CopyToWindowPixelBuffer(sPokedexScreenData->windowIds[i + 1], sAreaMapStructs_SeviiIslands[i].tiles, 0, 0); + SetWindowAttribute(sPokedexScreenData->windowIds[i + 1], WINDOW_TILEMAP_TOP, GetWindowAttribute(sPokedexScreenData->windowIds[i + 1], WINDOW_TILEMAP_TOP) + kantoMapVoff); + PutWindowTilemap(sPokedexScreenData->windowIds[i + 1]); + CopyWindowToVram(sPokedexScreenData->windowIds[i + 1], COPYWIN_GFX); + } + sPokedexScreenData->windowIds[8] = AddWindow(&sWindowTemplate_AreaMap_SpeciesName); + sPokedexScreenData->windowIds[9] = AddWindow(&sWindowTemplate_AreaMap_Size); + sPokedexScreenData->windowIds[10] = AddWindow(&sWindowTemplate_AreaMap_Area); + sPokedexScreenData->windowIds[11] = AddWindow(&sWindowTemplate_AreaMap_MonIcon); + sPokedexScreenData->windowIds[12] = AddWindow(&sWindowTemplate_AreaMap_MonTypes); + + // Draw the mon icon + FillWindowPixelBuffer(sPokedexScreenData->windowIds[11], PIXEL_FILL(0)); + ListMenu_LoadMonIconPalette(160, species); + ListMenu_DrawMonIconGraphics(sPokedexScreenData->windowIds[11], species, DexScreen_GetDefaultPersonality(species), 0, 0); + PutWindowTilemap(sPokedexScreenData->windowIds[11]); + CopyWindowToVram(sPokedexScreenData->windowIds[11], COPYWIN_GFX); + + // Print "Size" + FillWindowPixelBuffer(sPokedexScreenData->windowIds[9], PIXEL_FILL(0)); + { + s32 strWidth = GetStringWidth(0, gText_Size, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[9], 0, gText_Size, (sWindowTemplate_AreaMap_Size.width * 8 - strWidth) / 2, 4, 0); + } + PutWindowTilemap(sPokedexScreenData->windowIds[9]); + CopyWindowToVram(sPokedexScreenData->windowIds[9], COPYWIN_GFX); + + // Print "Area" + FillWindowPixelBuffer(sPokedexScreenData->windowIds[10], PIXEL_FILL(0)); + { + s32 strWidth = GetStringWidth(0, gText_Area, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[10], 0, gText_Area, (sWindowTemplate_AreaMap_Area.width * 8 - strWidth) / 2, 4, 0); + } + SetWindowAttribute(sPokedexScreenData->windowIds[10], WINDOW_TILEMAP_TOP, GetWindowAttribute(sPokedexScreenData->windowIds[10], WINDOW_TILEMAP_TOP) + kantoMapVoff); + PutWindowTilemap(sPokedexScreenData->windowIds[10]); + CopyWindowToVram(sPokedexScreenData->windowIds[10], COPYWIN_GFX); + + // Print species name + FillWindowPixelBuffer(sPokedexScreenData->windowIds[8], PIXEL_FILL(0)); + DexScreen_PrintMonDexNo(sPokedexScreenData->windowIds[8], 0, species, 0, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[8], 2, gSpeciesNames[species], 3, 12, 0); + PutWindowTilemap(sPokedexScreenData->windowIds[8]); + CopyWindowToVram(sPokedexScreenData->windowIds[8], COPYWIN_GFX); + + // Type icons + FillWindowPixelBuffer(sPokedexScreenData->windowIds[12], PIXEL_FILL(0)); ListMenuLoadStdPalAt(176, 1); - if (v3) + if (monIsCaught) { - BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type1, 0, 1); + BlitMoveInfoIcon(sPokedexScreenData->windowIds[12], 1 + gBaseStats[species].type1, 0, 1); if (gBaseStats[species].type1 != gBaseStats[species].type2) - BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type2, 32, 1); + BlitMoveInfoIcon(sPokedexScreenData->windowIds[12], 1 + gBaseStats[species].type2, 32, 1); } - PutWindowTilemap(gUnknown_203ACF0->field_4A[12]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[12], 2); + PutWindowTilemap(sPokedexScreenData->windowIds[12]); + CopyWindowToVram(sPokedexScreenData->windowIds[12], COPYWIN_GFX); + + // Show size comparison ResetAllPicSprites(); - LoadPalette(gUnknown_8452368, 288, 32); + LoadPalette(sPalette_Silhouette, 288, 32); - if (v3) + if (monIsCaught) { - gUnknown_203ACF0->field_4A[14] = CreateMonPicSprite_HandleDeoxys(species, 8, sub_81049CC(species), 1, 40, 104, 0, 65535); - gSprites[gUnknown_203ACF0->field_4A[14]].oam.paletteNum = 2; - gSprites[gUnknown_203ACF0->field_4A[14]].oam.affineMode = 1; - gSprites[gUnknown_203ACF0->field_4A[14]].oam.matrixNum = 2; - gSprites[gUnknown_203ACF0->field_4A[14]].oam.priority = 1; - gSprites[gUnknown_203ACF0->field_4A[14]].pos2.y = gPokedexEntries[speciesId].pokemonOffset; + sPokedexScreenData->windowIds[14] = CreateMonPicSprite_HandleDeoxys(species, 8, DexScreen_GetDefaultPersonality(species), TRUE, 40, 104, 0, 0xFFFF); + gSprites[sPokedexScreenData->windowIds[14]].oam.paletteNum = 2; + gSprites[sPokedexScreenData->windowIds[14]].oam.affineMode = 1; + gSprites[sPokedexScreenData->windowIds[14]].oam.matrixNum = 2; + gSprites[sPokedexScreenData->windowIds[14]].oam.priority = 1; + gSprites[sPokedexScreenData->windowIds[14]].pos2.y = gPokedexEntries[speciesId].pokemonOffset; SetOamMatrix(2, gPokedexEntries[speciesId].pokemonScale, 0, 0, gPokedexEntries[speciesId].pokemonScale); - gUnknown_203ACF0->field_4A[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, 1), 1, 80, 104, 0, 65535); - gSprites[gUnknown_203ACF0->field_4A[15]].oam.paletteNum = 2; - gSprites[gUnknown_203ACF0->field_4A[15]].oam.affineMode = 1; - gSprites[gUnknown_203ACF0->field_4A[15]].oam.matrixNum = 1; - gSprites[gUnknown_203ACF0->field_4A[15]].oam.priority = 1; - gSprites[gUnknown_203ACF0->field_4A[15]].pos2.y = gPokedexEntries[speciesId].trainerOffset; + sPokedexScreenData->windowIds[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), 1, 80, 104, 0, 0xFFFF); + gSprites[sPokedexScreenData->windowIds[15]].oam.paletteNum = 2; + gSprites[sPokedexScreenData->windowIds[15]].oam.affineMode = 1; + gSprites[sPokedexScreenData->windowIds[15]].oam.matrixNum = 1; + gSprites[sPokedexScreenData->windowIds[15]].oam.priority = 1; + gSprites[sPokedexScreenData->windowIds[15]].pos2.y = gPokedexEntries[speciesId].trainerOffset; SetOamMatrix(1, gPokedexEntries[speciesId].trainerScale, 0, 0, gPokedexEntries[speciesId].trainerScale); } else { - gUnknown_203ACF0->field_4A[14] = 0xff; - gUnknown_203ACF0->field_4A[15] = 0xff; + sPokedexScreenData->windowIds[14] = 0xff; + sPokedexScreenData->windowIds[15] = 0xff; } - gUnknown_203ACF0->field_02[2] = sub_8134230(species, 2001, 3, v8 * 8); - if (!(sub_81344E0(gUnknown_203ACF0->field_02[2]))) + // Create the area markers + sPokedexScreenData->data[2] = Ctor_PokedexAreaMarkers(species, 2001, 3, kantoMapVoff * 8); + if (!(PokedexAreaMarkers_Any(sPokedexScreenData->data[2]))) { - BlitBitmapRectToWindow(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443D00, 0, 0, 88, 16, 4, 28, 88, 16); + BlitBitmapRectToWindow(sPokedexScreenData->windowIds[0], (void *)sBlitTiles_WideEllipse, 0, 0, 88, 16, 4, 28, 88, 16); { - s32 width = GetStringWidth(0, gText_AreaUnknown, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[0], 0, gText_AreaUnknown, (96 - width) / 2, 29, 0); + s32 strWidth = GetStringWidth(0, gText_AreaUnknown, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[0], 0, gText_AreaUnknown, (96 - strWidth) / 2, 29, 0); } } - CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2); - FillWindowPixelBuffer(1, 255); - sub_81047C8(1, 0, gText_Cry, 8, 2, 4); - sub_8104C2C(gText_CancelPreviousData); + CopyWindowToVram(sPokedexScreenData->windowIds[0], COPYWIN_GFX); + + // Draw the control info + FillWindowPixelBuffer(1, PIXEL_FILL(15)); + DexScreen_AddTextPrinterParameterized(1, 0, gText_Cry, 8, 2, 4); + DexScreen_PrintControlInfo(gText_CancelPreviousData); PutWindowTilemap(1); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); return 1; } -u8 sub_81067C0(void) +u8 DexScreen_DestroyAreaScreenResources(void) { int i; - sub_81343F4(gUnknown_203ACF0->field_02[2]); + Dtor_PokedexAreaMarkers(sPokedexScreenData->data[2]); for (i = 0; i < 13; i++) - sub_81047B0(&gUnknown_203ACF0->field_4A[i]); - if (gUnknown_203ACF0->field_4A[15] != 0xff) - FreeAndDestroyTrainerPicSprite(gUnknown_203ACF0->field_4A[15]); - if (gUnknown_203ACF0->field_4A[14] != 0xff) - FreeAndDestroyMonPicSprite(gUnknown_203ACF0->field_4A[14]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[i]); + if (sPokedexScreenData->windowIds[15] != 0xff) + FreeAndDestroyTrainerPicSprite(sPokedexScreenData->windowIds[15]); + if (sPokedexScreenData->windowIds[14] != 0xff) + FreeAndDestroyMonPicSprite(sPokedexScreenData->windowIds[14]); return 0; } -int sub_8106810(u16 species) +static int DexScreen_CanShowMonInDex(u16 species) { if (IsNationalPokedexEnabled() == TRUE) return TRUE; @@ -3083,7 +3169,7 @@ int sub_8106810(u16 species) return FALSE; } -u8 sub_8106838(u8 categoryNum, u8 pageNum) +static u8 DexScreen_IsPageUnlocked(u8 categoryNum, u8 pageNum) { int i, count; u16 species; @@ -3095,14 +3181,14 @@ u8 sub_8106838(u8 categoryNum, u8 pageNum) if (i < count) { species = gDexCategories[categoryNum].page[pageNum].species[i]; - if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) - return 1; + if (DexScreen_CanShowMonInDex(species) == TRUE && DexScreen_GetSetPokedexFlag(species, FLAG_GET_SEEN, TRUE)) + return TRUE; } } - return 0; + return FALSE; } -u8 sub_81068A0(u8 categoryNum) +static bool8 DexScreen_IsCategoryUnlocked(u8 categoryNum) { int i; u8 count; @@ -3110,67 +3196,67 @@ u8 sub_81068A0(u8 categoryNum) count = gDexCategories[categoryNum].count; for (i = 0; i < count; i++) - if (sub_8106838(categoryNum, i)) + if (DexScreen_IsPageUnlocked(categoryNum, i)) return 1; return 0; } -void sub_81068DC(u8 categoryNum, u8 pageNum) +void DexScreen_CreateCategoryPageSpeciesList(u8 categoryNum, u8 pageNum) { int i, count; u16 species; count = gDexCategories[categoryNum].page[pageNum].count; - gUnknown_203ACF0->field_2C = 0; + sPokedexScreenData->numMonsOnPage = 0; for (i = 0; i < 4; i++) - gUnknown_203ACF0->field_18[i] = 0xffff; + sPokedexScreenData->pageSpecies[i] = 0xffff; for (i = 0; i < count; i++) { species = gDexCategories[categoryNum].page[pageNum].species[i]; - if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) + if (DexScreen_CanShowMonInDex(species) == TRUE && DexScreen_GetSetPokedexFlag(species, FLAG_GET_SEEN, TRUE)) { - gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2C] = gDexCategories[categoryNum].page[pageNum].species[i]; - gUnknown_203ACF0->field_2C++; + sPokedexScreenData->pageSpecies[sPokedexScreenData->numMonsOnPage] = gDexCategories[categoryNum].page[pageNum].species[i]; + sPokedexScreenData->numMonsOnPage++; } } } -u8 sub_810699C(u8 category) +static u8 DexScreen_GetPageLimitsForCategory(u8 category) { int i; - u8 count, v2, v3; + u8 count, firstPage, lastPage; count = gDexCategories[category].count; - v2 = 0xff; - v3 = 0xff; + firstPage = 0xff; + lastPage = 0xff; for (i = 0; i < count; i++) - if (sub_8106838(category, i)) + if (DexScreen_IsPageUnlocked(category, i)) { - if (v2 == 0xff) - v2 = i; - v3 = i; + if (firstPage == 0xff) + firstPage = i; + lastPage = i; } - if (v3 != 0xff) + if (lastPage != 0xff) { - gUnknown_203ACF0->field_29 = v2; - gUnknown_203ACF0->field_2A = v3 + 1; - return 0; + sPokedexScreenData->firstPageInCategory = firstPage; + sPokedexScreenData->lastPageInCategory = lastPage + 1; + return FALSE; } else { - gUnknown_203ACF0->field_29 = 0; - gUnknown_203ACF0->field_2A = 0; - return 1; + sPokedexScreenData->firstPageInCategory = 0; + sPokedexScreenData->lastPageInCategory = 0; + return TRUE; } } -u8 sub_8106A20(u16 a0) +static u8 DexScreen_LookUpCategoryBySpecies(u16 species) { - int i, j, k, categoryCount, categoryPageCount, v5; - u16 species; + int i, j, k, categoryCount, categoryPageCount, posInPage; + u16 dexSpecies; for (i = 0; i < NELEMS(gDexCategories); i++) { @@ -3178,84 +3264,84 @@ u8 sub_8106A20(u16 a0) for (j = 0; j < categoryCount; j++) { categoryPageCount = gDexCategories[i].page[j].count; - for (k = 0, v5 = 0; k < categoryPageCount; k++) + for (k = 0, posInPage = 0; k < categoryPageCount; k++) { - species = gDexCategories[i].page[j].species[k]; - if (a0 == species) + dexSpecies = gDexCategories[i].page[j].species[k]; + if (species == dexSpecies) { - gUnknown_203ACF0->field_28 = i; - gUnknown_203ACF0->field_2B = j; - gUnknown_203ACF0->field_2D = v5; - return 0; + sPokedexScreenData->category = i; + sPokedexScreenData->pageNum = j; + sPokedexScreenData->categoryCursorPosInPage = posInPage; + return FALSE; } - if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) - v5++; + if (DexScreen_CanShowMonInDex(dexSpecies) == TRUE && DexScreen_GetSetPokedexFlag(dexSpecies, FLAG_GET_SEEN, TRUE)) + posInPage++; } } } - return 1; + return TRUE; } -u8 sub_8106AF8(u16 a0) +static u8 DexScreen_PageNumberToRenderablePages(u16 page) { - int i, v1; + int i, count; - for (i = 0, v1 = 0; i < a0; i++) - if (sub_8106838(gUnknown_203ACF0->field_28, i)) - v1++; + for (i = 0, count = 0; i < page; i++) + if (DexScreen_IsPageUnlocked(sPokedexScreenData->category, i)) + count++; - return v1 + 1; + return count + 1; } -void sub_8106B34(void) +void DexScreen_InputHandler_StartToCry(void) { if (JOY_NEW(START_BUTTON)) - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); } -u8 sub_8106B60(u16 species) +u8 DexScreen_RegisterMonToPokedex(u16 species) { - sub_8104AB0(species, 2, 1); - sub_8104AB0(species, 3, 1); + DexScreen_GetSetPokedexFlag(species, FLAG_SET_SEEN, TRUE); + DexScreen_GetSetPokedexFlag(species, FLAG_SET_CAUGHT, TRUE); if (!IsNationalPokedexEnabled() && SpeciesToNationalPokedexNum(species) > KANTO_DEX_COUNT) - return CreateTask(sub_8106BD8, 0); + return CreateTask(Task_DexScreen_RegisterNonKantoMonBeforeNationalDex, 0); - sub_810250C(); - gTasks[gUnknown_203ACF0->field_00].func = sub_8106BE8; - sub_8106A20(species); + DexScreen_LoadResources(); + gTasks[sPokedexScreenData->taskId].func = Task_DexScreen_RegisterMonToPokedex; + DexScreen_LookUpCategoryBySpecies(species); - return gUnknown_203ACF0->field_00; + return sPokedexScreenData->taskId; } -static void sub_8106BD8(u8 taskId) +static void Task_DexScreen_RegisterNonKantoMonBeforeNationalDex(u8 taskId) { DestroyTask(taskId); } -static void sub_8106BE8(u8 taskId) +static void Task_DexScreen_RegisterMonToPokedex(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: - sub_810699C(gUnknown_203ACF0->field_28); - if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29) - gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29; - gUnknown_203ACF0->field_01 = 3; + DexScreen_GetPageLimitsForCategory(sPokedexScreenData->category); + if (sPokedexScreenData->pageNum < sPokedexScreenData->firstPageInCategory) + sPokedexScreenData->pageNum = sPokedexScreenData->firstPageInCategory; + sPokedexScreenData->state = 3; break; case 1: - sub_8106014(); - sub_8104E90(); + RemoveDexPageWindows(); + DexScreen_DestroyCategoryPageMonIconAndInfoWindows(); gMain.state = 0; - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->state = 2; break; case 2: - if (sub_8102798()) + if (DoClosePokedex()) DestroyTask(taskId); break; case 3: - sub_8104F0C(1); + DexScreen_CreateCategoryListGfx(TRUE); PutWindowTilemap(0); PutWindowTilemap(1); @@ -3264,9 +3350,9 @@ static void sub_8106BE8(u8 taskId) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - sub_8105058(0xff); + DexScreen_CreateCategoryPageSelectionCursor(0xff); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: gPaletteFade.bufferTransferDisabled = 0; @@ -3276,49 +3362,49 @@ static void sub_8106BE8(u8 taskId) ShowBg(1); ShowBg(0); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->state = 5; break; case 5: gTasks[taskId].data[0] = 30; - gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0); - gUnknown_203ACF0->field_01 = 6; + sPokedexScreenData->categoryPageCursorTaskId = ListMenuAddCursorObjectInternal(&sCursorStruct_CategoryPage, 0); + sPokedexScreenData->state = 6; break; case 6: - sub_8105058(gUnknown_203ACF0->field_2D); - sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C); + DexScreen_CreateCategoryPageSelectionCursor(sPokedexScreenData->categoryCursorPosInPage); + DexScreen_UpdateCategoryPageCursorObject(sPokedexScreenData->categoryPageCursorTaskId, sPokedexScreenData->categoryCursorPosInPage, sPokedexScreenData->numMonsOnPage); if (gTasks[taskId].data[0]) gTasks[taskId].data[0]--; else { - ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); - gUnknown_203ACF0->field_01 = 7; + ListMenuRemoveCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0); + sPokedexScreenData->state = 7; } break; case 7: - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D]; - gUnknown_203ACF0->field_01 = 8; + sPokedexScreenData->dexSpecies = sPokedexScreenData->pageSpecies[sPokedexScreenData->categoryCursorPosInPage]; + sPokedexScreenData->state = 8; break; case 8: - sub_8105E1C(1); - gUnknown_203ACF0->field_01 = 9; + DexScreen_DrawMonDexPage(TRUE); + sPokedexScreenData->state = 9; break; case 9: - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_02[1] = 0; - gUnknown_203ACF0->field_01++; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->data[1] = 0; + sPokedexScreenData->state++; case 10: - if (gUnknown_203ACF0->field_02[1] < 6) + if (sPokedexScreenData->data[1] < 6) { - if (gUnknown_203ACF0->field_02[0]) + if (sPokedexScreenData->data[0]) { - sub_8105594(0, gUnknown_203ACF0->field_02[1]); + DexScreen_DexPageZoomEffectFrame(0, sPokedexScreenData->data[1]); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02[0] = 4; - gUnknown_203ACF0->field_02[1]++; + sPokedexScreenData->data[0] = 4; + sPokedexScreenData->data[1]++; } else - gUnknown_203ACF0->field_02[0]--; + sPokedexScreenData->data[0]--; } else { @@ -3328,35 +3414,35 @@ static void sub_8106BE8(u8 taskId) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_01 = 11; + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->state = 11; } break; case 11: if (JOY_NEW(A_BUTTON | B_BUTTON)) - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->state = 2; break; } } -void sub_8106E78(const u8 * str, s32 mode) +void DexScreen_PrintStringWithAlignment(const u8 * str, s32 mode) { u32 x; switch (mode) { - case 0: + case TEXT_LEFT: x = 8; break; - case 1: + case TEXT_CENTER: x = (u32)(240 - GetStringWidth(2, str, 0)) / 2; break; - case 2: + case TEXT_RIGHT: default: x = 232 - GetStringWidth(2, str, 0); break; } - sub_81047C8(0, 2, str, x, 2, 4); + DexScreen_AddTextPrinterParameterized(0, 2, str, x, 2, 4); } diff --git a/src/pokemon.c b/src/pokemon.c index 563073237..c59fd226e 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5416,7 +5416,7 @@ void RandomlyGivePartyPokerus(struct Pokemon *party) &foo; } -u8 CheckPartyPokerus(struct Pokemon *party, u8 selection) +u8 CheckPartyPokerus(struct Pokemon *party, u8 party_bm) { u8 retVal; @@ -5424,23 +5424,25 @@ u8 CheckPartyPokerus(struct Pokemon *party, u8 selection) unsigned curBit = 1; retVal = 0; - if (selection) + if (party_bm != 0) // Check mons in party based on bitmask, LSB = first mon { do { - if ((selection & 1) && (GetMonData(&party[partyIndex], MON_DATA_POKERUS, NULL) & 0xF)) + if ((party_bm & 1) && (GetMonData(&party[partyIndex], MON_DATA_POKERUS, NULL) & 0xF)) retVal |= curBit; partyIndex++; curBit <<= 1; - selection >>= 1; + party_bm >>= 1; } - while (selection); + while (party_bm); } - else if (GetMonData(&party[0], MON_DATA_POKERUS, NULL) & 0xF) + else // Single Pokemon { - retVal = 1; + if (GetMonData(&party[0], MON_DATA_POKERUS, NULL) & 0xF) + { + retVal = 1; + } } - return retVal; } diff --git a/src/pokemon_jump_4.c b/src/pokemon_jump_4.c index 64316f46e..b197ebeef 100644 --- a/src/pokemon_jump_4.c +++ b/src/pokemon_jump_4.c @@ -667,7 +667,7 @@ static void sub_814A7D0(u16 left, u16 top, u8 cursorPos) static void sub_814A84C(void) { - u8 color[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}; + u8 color[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; PutWindowTilemap(0); PutWindowTilemap(1); @@ -867,7 +867,7 @@ static void sub_814AC30(bool32 arg0) if (!arg0) { for (i = 0; i < playersCount; i++) - sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); + sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY); } else { @@ -875,7 +875,7 @@ static void sub_814AC30(bool32 arg0) for (i = 0; i < playersCount; i++) { if (var != i) - sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); + sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY); else sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED); } diff --git a/src/pokemon_special_anim_scene.c b/src/pokemon_special_anim_scene.c index e7201ef52..5015e93a7 100644 --- a/src/pokemon_special_anim_scene.c +++ b/src/pokemon_special_anim_scene.c @@ -610,13 +610,13 @@ bool8 PSA_LevelUpVerticalSpritesTaskIsRunning(void) UNUSED void PSA_DrawLevelUpWindowPg1(u16 *statsBefore, u16 *statsAfter) { DrawTextBorderOuter(1, 0x001, 0xE); - DrawLevelUpWindowPg1(1, statsBefore, statsAfter, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); + DrawLevelUpWindowPg1(1, statsBefore, statsAfter, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY); PutWindowTilemap(1); CopyWindowToVram(1, COPYWIN_BOTH); } UNUSED void PSA_DrawLevelUpWindowPg2(u16 *currStats) { - DrawLevelUpWindowPg2(1, currStats, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); + DrawLevelUpWindowPg2(1, currStats, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY); CopyWindowToVram(1, COPYWIN_GFX); } diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 397bdda41..c13687cb0 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -245,7 +245,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) LoadStdWindowFrameGfx(); DrawDialogueFrame(0, 0); FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, TEXT_SPEED_FF, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, TEXT_SPEED_FF, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); CopyWindowToVram(0, COPYWIN_BOTH); CopyWindowToVram(task->data[15], COPYWIN_BOTH); task->data[0]++; @@ -271,7 +271,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) { task->data[1] = task->data[3]; FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); } break; case MENU_B_PRESSED: @@ -286,13 +286,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId) if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE) { FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, gText_PartyFull, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gText_PartyFull, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->data[0] = 3; } else if (task->data[2] == 1 && CountPartyMons() == 1) { FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, gText_JustOnePkmn, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, gText_JustOnePkmn, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->data[0] = 3; } else @@ -307,7 +307,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) if (JOY_NEW(A_BUTTON | B_BUTTON)) { FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->data[0] = 2; } else if (JOY_NEW(DPAD_UP)) @@ -317,7 +317,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) Menu_MoveCursor(-1); task->data[1] = Menu_GetCursorPos(); FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->data[0] = 2; } else if (JOY_NEW(DPAD_DOWN)) @@ -327,7 +327,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) Menu_MoveCursor(1); task->data[1] = Menu_GetCursorPos(); FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); task->data[0] = 2; } break; diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c index 262040a85..078c6a77b 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_3.c @@ -2057,7 +2057,7 @@ static void Cb_ChangeScreen(u8 taskId) partyMon = gPSSData->field_218C.mon; monIndex = gPSSData->field_2187; maxMonIndex = gPSSData->field_2186; - mode = gPSSData->field_2188; + mode = gPSSData->summaryScreenMode; FreePSSData(); ShowPokemonSummaryScreen(partyMon, monIndex, maxMonIndex, Cb2_ReturnToPSS, mode); break; diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index a977d0118..96c7a4120 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -9,7 +9,7 @@ #include "constants/items.h" #include "constants/moves.h" -static EWRAM_DATA struct Pokemon gUnknown_20397BC = {}; +static EWRAM_DATA struct Pokemon sMonBeingCarried = {}; static EWRAM_DATA s8 sBoxCursorArea = 0; static EWRAM_DATA s8 sBoxCursorPosition = 0; static EWRAM_DATA bool8 sIsMonBeingMoved = FALSE; @@ -76,7 +76,7 @@ void sub_8092340(void) gPSSData->inBoxMovingMode = 0; if (sIsMonBeingMoved) { - gPSSData->movingMon = gUnknown_20397BC; + gPSSData->movingMon = sMonBeingCarried; CreateMovingMonIcon(); } } @@ -837,7 +837,7 @@ s8 RunCanReleaseMon(void) void sub_8093630(void) { if (sIsMonBeingMoved) - gUnknown_20397BC = gPSSData->movingMon; + sMonBeingCarried = gPSSData->movingMon; } void sub_8093660(void) @@ -845,9 +845,9 @@ void sub_8093660(void) if (sIsMonBeingMoved) { if (sMovingMonOrigBoxId == TOTAL_BOXES_COUNT) - gPSSData->movingMon = gUnknown_20397BC; + gPSSData->movingMon = sMonBeingCarried; else - gPSSData->movingMon.box = gUnknown_20397BC.box; + gPSSData->movingMon.box = sMonBeingCarried.box; } } @@ -856,24 +856,24 @@ void sub_80936B8(void) if (sIsMonBeingMoved) { sub_8093630(); - gPSSData->field_218C.mon = &gUnknown_20397BC; + gPSSData->field_218C.mon = &sMonBeingCarried; gPSSData->field_2187 = 0; gPSSData->field_2186 = 0; - gPSSData->field_2188 = 0; + gPSSData->summaryScreenMode = PSS_MODE_NORMAL; } else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) { gPSSData->field_218C.mon = gPlayerParty; gPSSData->field_2187 = sBoxCursorPosition; gPSSData->field_2186 = CountPartyMons() - 1; - gPSSData->field_2188 = 0; + gPSSData->summaryScreenMode = PSS_MODE_NORMAL; } else { gPSSData->field_218C.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0); gPSSData->field_2187 = sBoxCursorPosition; gPSSData->field_2186 = IN_BOX_COUNT - 1; - gPSSData->field_2188 = 5; + gPSSData->summaryScreenMode = PSS_MODE_BOX; } } @@ -998,7 +998,7 @@ static void sub_8093A10(void) static void sub_8093AAC(void) { if (sIsMonBeingMoved) - SetCursorMonData(&gUnknown_20397BC, MODE_PARTY); + SetCursorMonData(&sMonBeingCarried, MODE_PARTY); else sub_8093A10(); } @@ -1114,18 +1114,18 @@ static void SetCursorMonData(void *pokemon, u8 mode) *(txtPtr)++ = CHAR_FEMALE; break; default: - *(txtPtr)++ = TEXT_COLOR_DARK_GREY; + *(txtPtr)++ = TEXT_COLOR_DARK_GRAY; *(txtPtr)++ = TEXT_COLOR_WHITE; - *(txtPtr)++ = TEXT_COLOR_LIGHT_GREY; + *(txtPtr)++ = TEXT_COLOR_LIGHT_GRAY; *(txtPtr)++ = CHAR_SPACE; break; } *(txtPtr++) = EXT_CTRL_CODE_BEGIN; *(txtPtr++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; - *(txtPtr++) = TEXT_COLOR_DARK_GREY; + *(txtPtr++) = TEXT_COLOR_DARK_GRAY; *(txtPtr++) = TEXT_COLOR_WHITE; - *(txtPtr++) = TEXT_COLOR_LIGHT_GREY; + *(txtPtr++) = TEXT_COLOR_LIGHT_GRAY; *(txtPtr++) = CHAR_SPACE; *(txtPtr++) = CHAR_EXTRA_EMOJI; *(txtPtr++) = 5; // LV_2 diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 0d10e9948..acacd706b 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -37,155 +37,154 @@ // needs conflicting header to match (curIndex is s8 in the function, but has to be defined as u8 here) extern s16 SeekToNextMonInBox(struct BoxPokemon * boxMons, u8 curIndex, u8 maxIndex, u8 flags); -static void sub_8138B8C(struct Pokemon * mon); -static void sub_8135C34(void); -static void sub_813B784(void); -static void sub_8138414(u8 curPageIndex); -static void sub_8134BAC(u8 taskId); -static void sub_8134E84(u8 taskId); -static void sub_813B3F0(u8 taskId); -static void sub_813B120(u8, s8); -static void sub_8137E64(u8 taskId); -static void sub_8135638(void); -static void sub_81356EC(void); -static void sub_813B750(u8 curPageIndex); -static void sub_8138280(u8 curPageIndex); -static void sub_8137D28(u8 curPageIndex); -static void sub_8135514(void); -static u8 sub_81357A0(u8); -static void sub_8138440(void); -static void sub_8138CD8(u8 taskId); -static void sub_8135AA4(void); -static void sub_8135B90(void); -static void sub_8138538(void); -static void sub_8137D28(u8 curPageIndex); -static void sub_8136F4C(void); -static void sub_81374E8(void); -static void sub_8137BD0(void); -static void sub_8138A38(void); -static void sub_8136DA4(const u8 * str); -static void sub_8136DF0(const u8 * str); -static void sub_8136E50(const u8 * str); -static void sub_81358DC(u8, u8); -static void sub_813A838(u8 invisible); -static void sub_813AB70(u8 invisible); -static void sub_8139C44(u8 invisible); -static void sub_813B084(u8 invisible); -static void sub_8139D54(u8 invisible); -static void sub_813A3B8(u8 invisible); -static void sub_813ACF8(u8 invisible); -static void sub_813AEB0(u8 invisible); -static void sub_813A0E8(u8 invisible); -static void sub_8139EE4(u8 invisible); -static void sub_81381AC(void); -static void sub_8136BC4(void); -static void sub_8136BAC(void); -static u8 sub_8135F20(void); -static u8 sub_8136AEC(void); -static void sub_81381D0(void); -static u8 sub_8136040(void); -static void sub_8137E28(void); -static void sub_81381C0(void); -static void sub_8136D54(void); -static void sub_81360D4(void); -static void sub_8136350(void); -static void sub_81367B0(void); -static u8 sub_8138C5C(u32 status); -static void sub_81367E8(u8); -static u16 sub_8138BEC(struct Pokemon * mon, u8 moveSlot); -static u16 sub_8138C24(struct Pokemon * mon, u8 moveSlot); -static void sub_813ADA8(u16, u16); -static void sub_813ABAC(u16, u16); -static void sub_813AFFC(void); -static void sub_8139F64(u16, u16); -static void sub_813A254(u16, u16); -static void sub_813A45C(u16, u16); -static void sub_813A874(u16, u16); -static void sub_8139CB0(void); -static void sub_8139DBC(void); -static void sub_813995C(void); -static void sub_81393D4(u8 taskId); -static void sub_8137EE8(void); -static void sub_8136FB0(void); -static void sub_81370EC(void); -static void sub_8137270(void); -static void sub_81372E4(u8 i); -static void sub_8137554(void); -static void sub_8137A90(void); -static void sub_8137AF8(void); -static void sub_8137944(void); -static void sub_8137970(void); -static bool32 sub_813B838(u8 metLocation); -static bool32 sub_8138B4C(void); -static bool32 sub_813B7E0(u8 nature); -static void sub_8137724(void); -static bool32 sub_813B7F8(void); -static u8 sub_813847C(struct Pokemon * mon); -static void sub_8137C18(void); -static void sub_8137C90(void); -static void sub_813AF90(void); -static void sub_81380F0(void); -static void sub_81390B0(void); -static void sub_81391EC(void); -static void sub_8139328(struct Pokemon * mon); -static void sub_8139AAC(u16 spriteId); -static void sub_813A124(struct Sprite * sprite); -static void sub_813A35C(void); -static void sub_813A620(void); -static void sub_813A994(void); -static void sub_813ACB4(void); -static void sub_813AF50(void); -static void sub_813B068(void); -static void sub_813B0E4(void); -static s8 sub_813B20C(s8); -static s8 sub_813B38C(s8); +static void BufferSelectedMonData(struct Pokemon * mon); +static void CB2_SetUpPSS(void); +static void PokeSum_TryPlayMonCry(void); +static void PokeSum_RemoveWindows(u8 curPageIndex); +static void Task_PokeSum_FlipPages(u8 taskId); +static void Task_FlipPages_FromInfo(u8 taskId); +static void Task_PokeSum_SwitchDisplayedPokemon(u8 taskId); +static void PokeSum_SeekToNextMon(u8 taskId, s8 direction); +static void Task_DestroyResourcesOnExit(u8 taskId); +static void PokeSum_HideSpritesBeforePageFlip(void); +static void PokeSum_ShowSpritesBeforePageFlip(void); +static void PokeSum_UpdateWin1ActiveFlag(u8 curPageIndex); +static void PokeSum_AddWindows(u8 curPageIndex); +static void PokeSum_PrintPageHeaderText(u8 curPageIndex); +static void PokeSum_InitBgCoordsBeforePageFlips(void); +static u8 PokeSum_IsPageFlipFinished(u8); +static void PokeSum_SetHelpContext(void); +static void Task_HandleInput_SelectMove(u8 id); +static void PokeSum_CopyNewBgTilemapBeforePageFlip_2(void); +static void PokeSum_CopyNewBgTilemapBeforePageFlip(void); +static void PokeSum_DrawBg3Tilemap(void); +static void PokeSum_PrintRightPaneText(void); +static void PokeSum_PrintBottomPaneText(void); +static void PokeSum_PrintAbilityDataOrMoveTypes(void); +static void PokeSum_PrintMonTypeIcons(void); +static void PokeSum_PrintPageName(const u8 * str); +static void PokeSum_PrintControlsString(const u8 * str); +static void PrintMonLevelNickOnWindow2(const u8 * str); +static void PokeSum_UpdateBgPriorityForPageFlip(u8 setBg0Priority, u8 keepBg1Bg2PriorityOrder); +static void ShowOrHideHpBarObjs(u8 invisible); +static void ShowOrHideExpBarObjs(u8 invisible); +static void PokeSum_ShowOrHideMonPicSprite(u8 invisible); +static void PokeSum_ShowOrHideMonMarkingsSprite(u8 invisible); +static void ShowOrHideBallIconObj(u8 invisible); +static void ShowOrHideStatusIcon(u8 invisible); +static void HideShowPokerusIcon(u8 invisible); +static void HideShowShinyStar(u8 invisible); +static void ShoworHideMoveSelectionCursor(u8 invisible); +static void PokeSum_ShowOrHideMonIconSprite(u8 invisible); +static void PokeSum_Setup_ResetCallbacks(void); +static void PokeSum_Setup_InitGpu(void); +static void PokeSum_Setup_SpritesReset(void); +static u8 PokeSum_HandleLoadBgGfx(void); +static u8 PokeSum_HandleCreateSprites(void); +static void PokeSum_CreateWindows(void); +static u8 PokeSum_Setup_BufferStrings(void); +static void CommitStaticWindowTilemaps(void); +static void PokeSum_Setup_SetVBlankCallback(void); +static void PokeSum_FinishSetup(void); +static void BufferMonInfo(void); +static void BufferMonSkills(void); +static void BufferMonMoves(void); +static u8 StatusToAilment(u32 status); +static void BufferMonMoveI(u8); +static u16 GetMonMoveBySlotId(struct Pokemon * mon, u8 moveSlot); +static u16 GetMonPpByMoveSlot(struct Pokemon * mon, u8 moveSlot); +static void CreateShinyStarObj(u16, u16); +static void CreatePokerusIconObj(u16, u16); +static void PokeSum_CreateMonMarkingsSprite(void); +static void CreateMoveSelectionCursorObjs(u16, u16); +static void CreateMonStatusIconObj(u16, u16); +static void CreateHpBarObjs(u16, u16); +static void CreateExpBarObjs(u16, u16); +static void CreateBallIconObj(void); +static void PokeSum_CreateMonIconSprite(void); +static void PokeSum_CreateMonPicSprite(void); +static void Task_InputHandler_SelectOrForgetMove(u8 taskId); +static void CB2_RunPokemonSummaryScreen(void); +static void PrintInfoPage(void); +static void PrintSkillsPage(void); +static void PrintMovesPage(void); +static void PokeSum_PrintMoveName(u8 i); +static void PokeSum_PrintTrainerMemo(void); +static void PokeSum_PrintExpPoints_NextLv(void); +static void PokeSum_PrintSelectedMoveStats(void); +static void PokeSum_PrintTrainerMemo_Mon(void); +static void PokeSum_PrintTrainerMemo_Egg(void); +static bool32 MapSecIsInKantoOrSevii(u8 mapSec); +static bool32 IsMultiBattlePartner(void); +static bool32 PokeSum_IsMonBoldOrGentle(u8 nature); +static void PokeSum_PrintTrainerMemo_Mon_NotHeldByOT(void); +static bool32 CurrentMonIsFromGBA(void); +static u8 PokeSum_BufferOtName_IsEqualToCurrentOwner(struct Pokemon * mon); +static void PokeSum_PrintAbilityNameAndDesc(void); +static void PokeSum_DrawMoveTypeIcons(void); +static void PokeSum_DestroySprites(void); +static void PokeSum_FlipPages_HandleBgHofs(void); +static void SwapMonMoveSlots(void); +static void SwapBoxMonMoveSlots(void); +static void UpdateCurrentMonBufferFromPartyOrBox(struct Pokemon * mon); +static void PokeSum_SetMonPicSpriteCallback(u16 spriteId); +static void SpriteCB_MoveSelectionCursor(struct Sprite * sprite); +static void UpdateMonStatusIconObj(void); +static void UpdateHpBarObjs(void); +static void UpdateExpBarObjs(void); +static void ShowPokerusIconObjIfHasOrHadPokerus(void); +static void ShowShinyStarObjIfMonShiny(void); +static void PokeSum_DestroyMonMarkingsSprite(void); +static void PokeSum_UpdateMonMarkingsAnim(void); +static s8 SeekToNextMonInSingleParty(s8 direction); +static s8 SeekToNextMonInMultiParty(s8 direction); struct PokemonSummaryScreenData { - u16 unk0[0x800]; - u16 unk1000[0x800]; - u16 unk2000[0x800]; - u8 ALIGNED(4) unk3000[7]; + u16 bg1TilemapBuffer[0x800]; + u16 bg2TilemapBuffer[0x800]; + u16 bg3TilemapBuffer[0x800]; + u8 ALIGNED(4) windowIds[7]; u8 ALIGNED(4) unk3008; - u8 ALIGNED(4) unk300C; - u8 ALIGNED(4) unk3010; - u8 ALIGNED(4) unk3014; + u8 ALIGNED(4) ballIconSpriteId; + u8 ALIGNED(4) monPicSpriteId; + u8 ALIGNED(4) monIconSpriteId; - u8 ALIGNED(4) unk3018; - u8 ALIGNED(4) unk301C; + u8 ALIGNED(4) inputHandlerTaskId; + u8 ALIGNED(4) inhibitPageFlipInput; - u8 ALIGNED(4) unk3020; + u8 ALIGNED(4) numMonPicBounces; bool32 isEnemyParty; /* 0x3024 */ struct PokeSummary { - u8 ALIGNED(4) unk3028[POKEMON_NAME_LENGTH]; - u8 ALIGNED(4) unk3034[POKEMON_NAME_LENGTH + 1]; - u8 ALIGNED(4) unk3040[12]; - u8 ALIGNED(4) unk304C[2][12]; + u8 ALIGNED(4) speciesNameStrBuf[POKEMON_NAME_LENGTH]; + u8 ALIGNED(4) nicknameStrBuf[POKEMON_NAME_LENGTH + 1]; + u8 ALIGNED(4) otNameStrBuf[12]; + u8 ALIGNED(4) otNameStrBufs[2][12]; - u8 ALIGNED(4) unk3064[5]; + u8 ALIGNED(4) dexNumStrBuf[5]; u8 ALIGNED(4) unk306C[7]; - u8 ALIGNED(4) unk3074[ITEM_NAME_LENGTH + 1]; + u8 ALIGNED(4) itemNameStrBuf[ITEM_NAME_LENGTH + 1]; - u8 ALIGNED(4) unk3084[3]; - u8 ALIGNED(4) unk3088[7]; - u8 ALIGNED(4) unk3090[9]; - u8 ALIGNED(4) unk309C[5][5]; + u8 ALIGNED(4) genderSymbolStrBuf[3]; + u8 ALIGNED(4) levelStrBuf[7]; + u8 ALIGNED(4) curHpStrBuf[9]; + u8 ALIGNED(4) statValueStrBufs[5][5]; - u8 ALIGNED(4) unk30B8[5][11]; - u8 ALIGNED(4) unk30F0[5][11]; - u8 ALIGNED(4) unk3128[5][MOVE_NAME_LENGTH + 1]; - u8 ALIGNED(4) unk316C[5][5]; - u8 ALIGNED(4) unk3188[5][5]; + u8 ALIGNED(4) moveCurPpStrBufs[5][11]; + u8 ALIGNED(4) moveMaxPpStrBufs[5][11]; + u8 ALIGNED(4) moveNameStrBufs[5][MOVE_NAME_LENGTH + 1]; + u8 ALIGNED(4) movePowerStrBufs[5][5]; + u8 ALIGNED(4) moveAccuracyStrBufs[5][5]; - u8 ALIGNED(4) unk31A4[9]; - u8 ALIGNED(4) unk31B0[9]; + u8 ALIGNED(4) expPointsStrBuf[9]; + u8 ALIGNED(4) expToNextLevelStrBuf[9]; - u8 ALIGNED(4) unk31BC[13]; - u8 ALIGNED(4) unk31CC[52]; + u8 ALIGNED(4) abilityNameStrBuf[13]; + u8 ALIGNED(4) abilityDescStrBuf[52]; } summary; u8 ALIGNED(4) isEgg; /* 0x3200 */ @@ -197,37 +196,37 @@ struct PokemonSummaryScreenData u8 ALIGNED(4) curPageIndex; /* 0x3214 */ u8 ALIGNED(4) unk3218; /* 0x3218 */ u8 ALIGNED(4) isBoxMon; /* 0x321C */ - u8 ALIGNED(4) unk3220[2]; /* 0x3220 */ + u8 ALIGNED(4) monTypes[2]; /* 0x3220 */ - u8 ALIGNED(4) unk3224; /* 0x3224 */ + u8 ALIGNED(4) pageFlipDirection; /* 0x3224 */ u8 ALIGNED(4) unk3228; /* 0x3228 */ u8 ALIGNED(4) unk322C; /* 0x322C */ u8 ALIGNED(4) unk3230; /* 0x3230 */ u8 ALIGNED(4) lockMovesFlag; /* 0x3234 */ - u8 ALIGNED(4) unk3238; /* 0x3238 */ - u8 ALIGNED(4) unk323C; /* 0x323C */ - u8 ALIGNED(4) unk3240; /* 0x3240 */ - u8 ALIGNED(4) unk3244; /* 0x3244 */ + u8 ALIGNED(4) whichBgLayerToTranslate; /* 0x3238 */ + u8 ALIGNED(4) skillsPageBgNum; /* 0x323C */ + u8 ALIGNED(4) infoAndMovesPageBgNum; /* 0x3240 */ + u8 ALIGNED(4) flippingPages; /* 0x3244 */ u8 ALIGNED(4) unk3248; /* 0x3248 */ - s16 ALIGNED(4) unk324C; /* 0x324C */ + s16 ALIGNED(4) flipPagesBgHofs; /* 0x324C */ - u16 unk3250[5]; /* 0x3250 */ - u16 unk325A[5]; /* 0x325A */ - u8 ALIGNED(4) unk3264; /* 0x3264 */ - u8 ALIGNED(4) unk3268; /* 0x3268 */ + u16 moveTypes[5]; /* 0x3250 */ + u16 moveIds[5]; /* 0x325A */ + u8 ALIGNED(4) numMoves; /* 0x3264 */ + u8 ALIGNED(4) isSwappingMoves; /* 0x3268 */ - u8 ALIGNED(4) unk326C; /* 0x326C */ + u8 ALIGNED(4) curMonStatusAilment; /* 0x326C */ u8 ALIGNED(4) state3270; /* 0x3270 */ - u8 ALIGNED(4) unk3274; /* 0x3274 */ - u8 ALIGNED(4) unk3278; /* 0x3278 */ - u8 ALIGNED(4) unk327C; /* 0x327C */ - u8 ALIGNED(4) unk3280; /* 0x3280 */ - u8 ALIGNED(4) unk3284; /* 0x3284 */ - u8 ALIGNED(4) unk3288; /* 0x3288 */ - u8 ALIGNED(4) unk328C; /* 0x328C */ + u8 ALIGNED(4) summarySetupStep; /* 0x3274 */ + u8 ALIGNED(4) loadBgGfxStep; /* 0x3278 */ + u8 ALIGNED(4) spriteCreationStep; /* 0x327C */ + u8 ALIGNED(4) bufferStringsStep; /* 0x3280 */ + u8 ALIGNED(4) state3284; /* 0x3284 */ + u8 ALIGNED(4) selectMoveInputHandlerState; /* 0x3288 */ + u8 ALIGNED(4) switchMonTaskState; /* 0x328C */ struct Pokemon currentMon; /* 0x3290 */ @@ -240,115 +239,115 @@ struct PokemonSummaryScreenData MainCallback savedCallback; struct Sprite * markingSprite; - u8 ALIGNED(4) unk3300[2]; /* 0x3300 */ - u8 ALIGNED(4) unk3304[3]; /* 0x3304 */ + u8 ALIGNED(4) lastPageFlipDirection; /* 0x3300 */ + u8 ALIGNED(4) unk3304; /* 0x3304 */ }; struct Struct203B144 { u16 unk00; - u16 unk02; - u16 unk04; - u16 unk06; - u16 unk08; - u16 unk0A; - u16 unk0C; - u16 unk0E; - u16 unk10; - - u16 unk12[5]; - u16 unk1C[5]; + u16 curHpStr; + u16 atkStr; + u16 defStr; + u16 spAStr; + u16 spDStr; + u16 speStr; + u16 expStr; + u16 toNextLevel; + + u16 curPp[5]; + u16 maxPp[5]; u16 unk26; }; -struct Struct203B160 +struct ExpBarObjs { struct Sprite * sprites[11]; /* 0x00 */ - u16 unk2C[11]; /* 0x2c */ - u16 unk42; /* 0x42 */ - u16 unk44; /* 0x44 */ + u16 xpos[11]; /* 0x2c */ + u16 tileTag; /* 0x42 */ + u16 palTag; /* 0x44 */ }; -struct Struct203B15C +struct HpBarObjs { struct Sprite * sprites[10]; /* 0x00 */ - u16 unk28[10]; /* 0x28 */ - u16 unk3C; /* 0x3c */ - u16 unk3E; /* 0x3e */ + u16 xpos[10]; /* 0x28 */ + u16 tileTag; /* 0x3c */ + u16 palTag; /* 0x3e */ }; -struct Struct203B170 +struct MonPicBounceState { - u8 ALIGNED(4) unk00; /* 0x00 */ - u8 ALIGNED(4) unk04; /* 0x04 */ - u8 ALIGNED(4) unk08; /* 0x08 */ + u8 ALIGNED(4) animFrame; /* 0x00 */ + u8 ALIGNED(4) initDelay; /* 0x04 */ + u8 ALIGNED(4) vigor; /* 0x08 */ }; -struct Struct203B148 +struct MoveSelectionCursor { struct Sprite * sprite; /* 0x00 */ - u16 unk04; /* 0x04 */ - u16 unk06; /* 0x06 */ - u16 unk08; /* 0x08 */ + u16 whichSprite; /* 0x04 */ + u16 tileTag; /* 0x06 */ + u16 palTag; /* 0x08 */ }; -struct Struct203B158 +struct MonStatusIconObj { struct Sprite * sprite; /* 0x00 */ - u16 unk04; /* 0x04 */ - u16 unk06; /* 0x06 */ + u16 tileTag; /* 0x04 */ + u16 palTag; /* 0x06 */ }; -struct Struct203B164 +struct PokerusIconObj { struct Sprite * sprite; /* 0x00 */ - u16 unk04; /* 0x04 */ - u16 unk06; /* 0x06 */ + u16 tileTag; /* 0x04 */ + u16 palTag; /* 0x06 */ }; -struct Struct203B168 +struct ShinyStarObjData { struct Sprite * sprite; /* 0x00 */ - u16 unk04; /* 0x04 */ - u16 unk06; /* 0x06 */ + u16 tileTag; /* 0x04 */ + u16 palTag; /* 0x06 */ }; static EWRAM_DATA struct PokemonSummaryScreenData * sMonSummaryScreen = NULL; -static EWRAM_DATA struct Struct203B144 * sUnknown_203B144 = NULL; -static EWRAM_DATA struct Struct203B148 * sUnknown_203B148[4] = {}; -static EWRAM_DATA struct Struct203B158 * sUnknown_203B158 = NULL; -static EWRAM_DATA struct Struct203B15C * sUnknown_203B15C = NULL; -static EWRAM_DATA struct Struct203B160 * sUnknown_203B160 = NULL; -static EWRAM_DATA struct Struct203B164 * sUnknown_203B164 = NULL; -static EWRAM_DATA struct Struct203B168 * sUnknown_203B168 = NULL; +static EWRAM_DATA struct Struct203B144 * sMonSkillsPrinterXpos = NULL; +static EWRAM_DATA struct MoveSelectionCursor * sMoveSelectionCursorObjs[4] = {}; +static EWRAM_DATA struct MonStatusIconObj * sStatusIcon = NULL; +static EWRAM_DATA struct HpBarObjs * sHpBarObjs = NULL; +static EWRAM_DATA struct ExpBarObjs * sExpBarObjs = NULL; +static EWRAM_DATA struct PokerusIconObj * sPokerusIconObj = NULL; +static EWRAM_DATA struct ShinyStarObjData * sShinyStarObjData = NULL; static EWRAM_DATA u8 sLastViewedMonIndex = 0; -static EWRAM_DATA u8 sUnknown_203B16D = 0; -static EWRAM_DATA u8 sUnknown_203B16E = 0; -static EWRAM_DATA struct Struct203B170 * sUnknown_203B170 = NULL; - -extern const u32 gUnknown_8E9B750[]; -extern const u32 gUnknown_8E9B950[]; -extern const u32 gUnknown_8E9B598[]; -extern const u32 gUnknown_8E9BA9C[]; -extern const u32 gUnknown_8E9BBCC[]; -extern const u16 gUnknown_8E9B310[]; -extern const u32 gUnknown_8E9A460[]; -extern const u16 gUnknown_8E9B578[]; -extern const u32 gUnknown_8E9BF48[]; -extern const u16 gUnknown_8E9BF28[]; -extern const u32 gUnknown_8E9B4B8[]; -extern const u32 gUnknown_8E9B3F0[]; -extern const u16 gUnknown_8E9B578[]; - -static const u32 sUnknown_84636C0[] = INCBIN_U32("graphics/interface/pokesummary_unk_84636C0.gbapal"); -static const u16 sUnknown_84636E0[] = INCBIN_U16("graphics/interface/pokesummary_unk_84636E0.gbapal"); -static const u32 sUnknown_8463700[] = INCBIN_U32("graphics/interface/pokesummary_unk_8463700.gbapal"); -static const u16 sUnknown_8463720[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463720.gbapal"); -static const u32 sUnknown_8463740[] = INCBIN_U32("graphics/interface/pokesummary_unk_8463740.4bpp.lz"); -static const u32 sUnknown_846386C[] = INCBIN_U32("graphics/interface/pokesummary_unk_846386C.4bpp.lz"); - -static const struct OamData sUnknown_846398C = +static EWRAM_DATA u8 sMoveSelectionCursorPos = 0; +static EWRAM_DATA u8 sMoveSwapCursorPos = 0; +static EWRAM_DATA struct MonPicBounceState * sMonPicBounceState = NULL; + +extern const u32 gBgTilemap_TrainerMemo_Stats[]; +extern const u32 gBgTilemap_PokeSum_MovesListForDelete[]; +extern const u32 gBgTilemap_TrainerMemo_Details[]; +extern const u32 gBgTilemap_PokeSum_MoveDetailsForDelete[]; +extern const u32 gBgTilemap_TrainerMemo_Egg[]; +extern const u16 gTrainerMemoPal1[]; +extern const u32 gPokeSumBgTiles[]; +extern const u16 gPokeSummary_ExpBarPals[]; +extern const u32 gPokeSummary_StatusAilmentIconTiles[]; +extern const u16 gPokeSummary_StatusAilmentIconPals[]; +extern const u32 gPokeSummary_HpBarTiles[]; +extern const u32 gPokeSummary_ExpBarTiles[]; +extern const u16 gPokeSummary_ExpBarPals[]; + +static const u32 sBgPal7[] = INCBIN_U32("graphics/interface/pokesummary_unk_84636C0.gbapal"); +static const u16 sMonMarkingSpritePalette[] = INCBIN_U16("graphics/interface/pokesummary_unk_84636E0.gbapal"); +static const u32 sBgPal8[] = INCBIN_U32("graphics/interface/pokesummary_unk_8463700.gbapal"); +static const u16 sMoveSelectionCursorPals[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463720.gbapal"); +static const u32 sMoveSelectionCursorTiles_Left[] = INCBIN_U32("graphics/interface/pokesummary_unk_8463740.4bpp.lz"); +static const u32 sMoveSelectionCursorTiles_Right[] = INCBIN_U32("graphics/interface/pokesummary_unk_846386C.4bpp.lz"); + +static const struct OamData sMoveSelectionCursorOamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -364,25 +363,25 @@ static const struct OamData sUnknown_846398C = .paletteNum = 0 }; -static const union AnimCmd sUnknown_8463994[] = +static const union AnimCmd sMoveSelectionCursorOamAnim_Red[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_846399C[] = +static const union AnimCmd sMoveSelectionCursorOamAnim_Blue[] = { ANIMCMD_FRAME(0x20, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd * const sUnknown_84639A4[] = +static const union AnimCmd * const sMoveSelectionCursorOamAnimTable[] = { - sUnknown_8463994, - sUnknown_846399C + sMoveSelectionCursorOamAnim_Red, + sMoveSelectionCursorOamAnim_Blue }; -static const struct OamData sUnknown_84639AC = { +static const struct OamData sStatusAilmentIconOamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -397,67 +396,67 @@ static const struct OamData sUnknown_84639AC = { .paletteNum = 0 }; -static const union AnimCmd sUnknown_84639B4[] = +static const union AnimCmd sStatusAilmentIconAnim_PSN[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_84639BC[] = +static const union AnimCmd sStatusAilmentIconAnim_PRZ[] = { ANIMCMD_FRAME(4, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_84639C4[] = +static const union AnimCmd sStatusAilmentIconAnim_SLP[] = { ANIMCMD_FRAME(8, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_84639CC[] = +static const union AnimCmd sStatusAilmentIconAnim_FRZ[] = { ANIMCMD_FRAME(12, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_84639D4[] = +static const union AnimCmd sStatusAilmentIconAnim_BRN[] = { ANIMCMD_FRAME(16, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_84639DC[] = +static const union AnimCmd sStatusAilmentIconAnim_PKRS[] = { ANIMCMD_FRAME(20, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_84639E4[] = +static const union AnimCmd sStatusAilmentIconAnim_FNT[] = { ANIMCMD_FRAME(24, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_84639EC[] = +static const union AnimCmd sStatusAilmentIconAnim_Blank[] = { ANIMCMD_FRAME(28, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd * const sUnknown_84639F4[] = +static const union AnimCmd * const sStatusAilmentIconAnimTable[] = { - sUnknown_84639B4, - sUnknown_84639BC, - sUnknown_84639C4, - sUnknown_84639CC, - sUnknown_84639D4, - sUnknown_84639DC, - sUnknown_84639E4, - sUnknown_84639EC + sStatusAilmentIconAnim_PSN, + sStatusAilmentIconAnim_PRZ, + sStatusAilmentIconAnim_SLP, + sStatusAilmentIconAnim_FRZ, + sStatusAilmentIconAnim_BRN, + sStatusAilmentIconAnim_PKRS, + sStatusAilmentIconAnim_FNT, + sStatusAilmentIconAnim_Blank }; -static const struct OamData sUnknown_8463A14 = { +static const struct OamData sHpOrExpBarOamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -472,98 +471,98 @@ static const struct OamData sUnknown_8463A14 = { .paletteNum = 0 }; -static const union AnimCmd sUnknown_8463A1C[] = +static const union AnimCmd sHpOrExpAnim_0[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A24[] = +static const union AnimCmd sHpOrExpAnim_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A2C[] = +static const union AnimCmd sHpOrExpAnim_2[] = { ANIMCMD_FRAME(2, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A34[] = +static const union AnimCmd sHpOrExpAnim_3[] = { ANIMCMD_FRAME(3, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A3C[] = +static const union AnimCmd sHpOrExpAnim_4[] = { ANIMCMD_FRAME(4, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A44[] = +static const union AnimCmd sHpOrExpAnim_5[] = { ANIMCMD_FRAME(5, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A4C[] = +static const union AnimCmd sHpOrExpAnim_6[] = { ANIMCMD_FRAME(6, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A54[] = +static const union AnimCmd sHpOrExpAnim_7[] = { ANIMCMD_FRAME(7, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A5C[] = +static const union AnimCmd sHpOrExpAnim_8[] = { ANIMCMD_FRAME(8, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A64[] = +static const union AnimCmd sHpOrExpAnim_9[] = { ANIMCMD_FRAME(9, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A6C[] = +static const union AnimCmd sHpOrExpAnim_10[] = { ANIMCMD_FRAME(10, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sUnknown_8463A74[] = +static const union AnimCmd sHpOrExpAnim_11[] = { ANIMCMD_FRAME(11, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd * const sUnknown_8463A7C[] = -{ - sUnknown_8463A1C, - sUnknown_8463A24, - sUnknown_8463A2C, - sUnknown_8463A34, - sUnknown_8463A3C, - sUnknown_8463A44, - sUnknown_8463A4C, - sUnknown_8463A54, - sUnknown_8463A5C, - sUnknown_8463A64, - sUnknown_8463A6C, - sUnknown_8463A74 +static const union AnimCmd * const sHpOrExpBarAnimTable[] = +{ + sHpOrExpAnim_0, + sHpOrExpAnim_1, + sHpOrExpAnim_2, + sHpOrExpAnim_3, + sHpOrExpAnim_4, + sHpOrExpAnim_5, + sHpOrExpAnim_6, + sHpOrExpAnim_7, + sHpOrExpAnim_8, + sHpOrExpAnim_9, + sHpOrExpAnim_10, + sHpOrExpAnim_11 }; -static const u16 sUnknown_8463AAC[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463AAC.gbapal"); -static const u16 sUnknown_8463ACC[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463ACC.gbapal"); +static const u16 sPokeSummary_HpBarPalYellow[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463AAC.gbapal"); +static const u16 sPokeSummary_HpBarPalRed[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463ACC.gbapal"); -static const struct OamData sUnknown_8463AEC = { +static const struct OamData sPokerusIconObjOamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -578,21 +577,21 @@ static const struct OamData sUnknown_8463AEC = { .paletteNum = 0 }; -static const union AnimCmd sUnknown_8463AF4[] = +static const union AnimCmd sPokerusIconObjAnim0[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd * const sUnknown_8463AFC[] = +static const union AnimCmd * const sPokerusIconObjAnimTable[] = { - sUnknown_8463AF4 + sPokerusIconObjAnim0 }; -static const u16 sUnknown_8463B00[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463B00.gbapal"); -static const u32 sUnknown_8463B20[] = INCBIN_U32("graphics/interface/pokesummary_unk_8463B20.4bpp.lz"); +static const u16 sPokerusIconObjPal[] = INCBIN_U16("graphics/interface/pokesummary_unk_8463B00.gbapal"); +static const u32 sPokerusIconObjTiles[] = INCBIN_U32("graphics/interface/pokesummary_unk_8463B20.4bpp.lz"); -static const struct OamData sUnknown_8463B30 = +static const struct OamData sStarObjOamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -608,49 +607,49 @@ static const struct OamData sUnknown_8463B30 = .paletteNum = 0 }; -static const union AnimCmd sUnknown_8463B38[] = +static const union AnimCmd sStarObjAnim0[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd * const sUnknown_8463B40[] = +static const union AnimCmd * const sStarObjAnimTable[] = { - sUnknown_8463B38 + sStarObjAnim0 }; -static const u16 sUnknown_8463B44[] = INCBIN_U16( "graphics/interface/pokesummary_unk_8463B44.gbapal"); -static const u32 sUnknown_8463B64[] = INCBIN_U32( "graphics/interface/pokesummary_unk_8463B64.4bpp.lz"); -static const u32 sUnknown_8463B88[] = INCBIN_U32( "graphics/interface/pokesummary_unk_8463B88.bin.lz"); -static const u32 sUnknown_8463C80[] = INCBIN_U32( "graphics/interface/pokesummary_unk_8463C80.bin.lz"); +static const u16 sStarObjPal[] = INCBIN_U16( "graphics/interface/pokesummary_unk_8463B44.gbapal"); +static const u32 sStarObjTiles[] = INCBIN_U32( "graphics/interface/pokesummary_unk_8463B64.4bpp.lz"); +static const u32 sBgTilemap_MovesInfoPage[] = INCBIN_U32( "graphics/interface/pokesummary_unk_8463B88.bin.lz"); +static const u32 sBgTilemap_MovesPage[] = INCBIN_U32( "graphics/interface/pokesummary_unk_8463C80.bin.lz"); #include "data/text/nature_names.h" -static const u8 * const sUnknown_8463EC4[] = { - gUnknown_8419B44, - gUnknown_8419B7B, - gUnknown_8419BAE, - gUnknown_8419BDB +static const u8 * const sEggHatchTimeTexts[] = { + gText_PokeSum_EggHatch_LongTime, + gText_PokeSum_EggHatch_SomeTime, + gText_PokeSum_EggHatch_Soon, + gText_PokeSum_EggHatch_AlmostReady }; -static const u8 * const sUnknown_8463ED4[] = { - gUnknown_8419A3D, - gUnknown_8419B18, - gUnknown_8419A6E, - gUnknown_8419B18, - gUnknown_8419AA2, - gUnknown_8419ADE, - gUnknown_8419B18 +static const u8 * const sEggOriginTexts[] = { + gText_PokeSum_EggOrigin_DayCare, + gText_PokeSum_EggOrigin_Trade, + gText_PokeSum_EggOrigin_TravelingMan, + gText_PokeSum_EggOrigin_Trade, + gText_PokeSum_EggOrigin_NicePlace, + gText_PokeSum_EggOrigin_Spa, + gText_PokeSum_EggOrigin_Trade }; -static const u8 sUnknown_8463EF0[][3] = { +static const u8 sPrintMoveTextColors[][3] = { {0, 7, 8}, {0, 1, 2}, {0, 3, 4}, {0, 5, 6} }; -static const struct BgTemplate sUnknown_8463EFC[] = +static const struct BgTemplate sBgTempaltes[] = { { .bg = 0, @@ -690,9 +689,30 @@ static const struct BgTemplate sUnknown_8463EFC[] = } }; -static const struct WindowTemplate sUnknown_8463F0C[] = +#define POKESUM_WIN_PAGE_NAME 0 +#define POKESUM_WIN_CONTROLS 1 +#define POKESUM_WIN_LVL_NICK 2 +#define POKESUM_WIN_RIGHT_PANE 3 +#define POKESUM_WIN_TRAINER_MEMO 4 + +#define POKESUM_WIN_INFO_3 3 +#define POKESUM_WIN_INFO_4 4 +#define POKESUM_WIN_INFO_5 5 +#define POKESUM_WIN_INFO_6 6 + +#define POKESUM_WIN_SKILLS_3 3 +#define POKESUM_WIN_SKILLS_4 4 +#define POKESUM_WIN_SKILLS_5 5 +#define POKESUM_WIN_SKILLS_6 6 + +#define POKESUM_WIN_MOVES_3 3 +#define POKESUM_WIN_MOVES_4 4 +#define POKESUM_WIN_MOVES_5 5 +#define POKESUM_WIN_MOVES_6 6 + +static const struct WindowTemplate sWindowTemplates_Permanent_Bg1[] = { - { + [POKESUM_WIN_PAGE_NAME] = { .bg = 1, .tilemapLeft = 0, .tilemapTop = 0, @@ -701,7 +721,7 @@ static const struct WindowTemplate sUnknown_8463F0C[] = .paletteNum = 7, .baseBlock = 0x0258 }, - { + [POKESUM_WIN_CONTROLS] = { .bg = 1, .tilemapLeft = 19, .tilemapTop = 0, @@ -710,7 +730,7 @@ static const struct WindowTemplate sUnknown_8463F0C[] = .paletteNum = 7, .baseBlock = 0x0272 }, - { + [POKESUM_WIN_LVL_NICK] = { .bg = 1, .tilemapLeft = 0, .tilemapTop = 2, @@ -721,7 +741,7 @@ static const struct WindowTemplate sUnknown_8463F0C[] = } }; -static const struct WindowTemplate sUnknown_8463F24[] = +static const struct WindowTemplate sWindowTemplates_Permanent_Bg2[] = { { .bg = 2, @@ -752,9 +772,9 @@ static const struct WindowTemplate sUnknown_8463F24[] = }, }; -static const struct WindowTemplate sUnknown_8463F3C[] = +static const struct WindowTemplate sWindowTemplates_Info[] = { - { + [POKESUM_WIN_INFO_3 - 3] = { .bg = 0, .tilemapLeft = 15, .tilemapTop = 2, @@ -763,7 +783,7 @@ static const struct WindowTemplate sUnknown_8463F3C[] = .paletteNum = 6, .baseBlock = 0x0001 }, - { + [POKESUM_WIN_INFO_4 - 3] = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 14, @@ -772,7 +792,7 @@ static const struct WindowTemplate sUnknown_8463F3C[] = .paletteNum = 6, .baseBlock = 0x00b5 }, - { + [POKESUM_WIN_INFO_5 - 3] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -781,7 +801,7 @@ static const struct WindowTemplate sUnknown_8463F3C[] = .paletteNum = 0, .baseBlock = 0x0000 }, - { + [POKESUM_WIN_INFO_6 - 3] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -792,9 +812,9 @@ static const struct WindowTemplate sUnknown_8463F3C[] = }, }; -static const struct WindowTemplate sUnknown_8463F5C[] = +static const struct WindowTemplate sWindowTemplates_Skills[] = { - { + [POKESUM_WIN_SKILLS_3 - 3] = { .bg = 0, .tilemapLeft = 20, .tilemapTop = 2, @@ -803,7 +823,7 @@ static const struct WindowTemplate sUnknown_8463F5C[] = .paletteNum = 6, .baseBlock = 0x0001 }, - { + [POKESUM_WIN_SKILLS_4 - 3] = { .bg = 0, .tilemapLeft = 6, .tilemapTop = 12, @@ -812,7 +832,7 @@ static const struct WindowTemplate sUnknown_8463F5C[] = .paletteNum = 6, .baseBlock = 0x008d }, - { + [POKESUM_WIN_SKILLS_5 - 3] = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 16, @@ -821,7 +841,7 @@ static const struct WindowTemplate sUnknown_8463F5C[] = .paletteNum = 6, .baseBlock = 0x00c5 }, - { + [POKESUM_WIN_SKILLS_6 - 3] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -832,9 +852,9 @@ static const struct WindowTemplate sUnknown_8463F5C[] = }, }; -static const struct WindowTemplate sUnknown_8463F7C[] = +static const struct WindowTemplate sWindowTemplates_Moves[] = { - { + [POKESUM_WIN_MOVES_3 - 3] = { .bg = 0, .tilemapLeft = 20, .tilemapTop = 2, @@ -843,7 +863,7 @@ static const struct WindowTemplate sUnknown_8463F7C[] = .paletteNum = 8, .baseBlock = 0x0001 }, - { + [POKESUM_WIN_MOVES_4 - 3] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 7, @@ -852,7 +872,7 @@ static const struct WindowTemplate sUnknown_8463F7C[] = .paletteNum = 6, .baseBlock = 0x00b5 }, - { + [POKESUM_WIN_MOVES_5 - 3] = { .bg = 0, .tilemapLeft = 15, .tilemapTop = 2, @@ -861,7 +881,7 @@ static const struct WindowTemplate sUnknown_8463F7C[] = .paletteNum = 6, .baseBlock = 0x0178 }, - { + [POKESUM_WIN_MOVES_6 - 3] = { .bg = 0, .tilemapLeft = 6, .tilemapTop = 4, @@ -872,7 +892,7 @@ static const struct WindowTemplate sUnknown_8463F7C[] = }, }; -static const struct WindowTemplate sUnknown_8463F9C[] = +static const struct WindowTemplate sWindowTemplates_Dummy[] = { { .bg = 255, @@ -886,7 +906,7 @@ static const struct WindowTemplate sUnknown_8463F9C[] = }; -static const u8 sUnknown_8463FA4[][3] = +static const u8 sLevelNickTextColors[][3] = { {0, 14, 10}, {0, 1, 2}, @@ -896,51 +916,51 @@ static const u8 sUnknown_8463FA4[][3] = {0, 11, 10}, }; -static const u8 ALIGNED(4) sUnknown_8463FB8[] = +static const u8 ALIGNED(4) sMultiBattlePartyOrder[] = { 0, 2, 3, 1, 4, 5 }; -static const s8 sUnknown_8463FBE[] = +static const s8 sMonPicBounceYDelta_Under60[] = { -1, 0, 1 }; -static const s8 sUnknown_8463FC1[] = +static const s8 sMonPicBounceYDelta_60to80[] = { -2, -1, 0, 1, 2 }; -static const s8 sUnknown_8463FC6[] = +static const s8 sMonPicBounceYDelta_80to99[] = { -3, -2, -1, 0, 1, 2, 3 }; -static const s8 sUnknown_8463FCD[] = +static const s8 sMonPicBounceYDelta_Full[] = { -5, -3, -1, 0, 1, 3, 5 }; -static const s8 sUnknown_8463FD4[] = +static const s8 sEggPicShakeXDelta_ItWillTakeSomeTime[] = { 1, 1, 0, -1, -1, 0, -1, -1, 0, 1, 1 }; -static const s8 sUnknown_8463FDF[] = +static const s8 sEggPicShakeXDelta_OccasionallyMoves[] = { 2, 1, 0, -1, -2, 0, -2, -1, 0, 1, 2 }; -static const s8 sUnknown_8463FEA[] = +static const s8 sEggPicShakeXDelta_AlmostReadyToHatch[] = { 2, 1, 1, 0, -1, -1, -2, 0, -2, -1, -1, 0, 1, 1, 2 }; -static const u16 * const sUnknown_8463FFC[] = +static const u16 * const sHpBarPals[] = { - gUnknown_8E9B578, - sUnknown_8463AAC, - sUnknown_8463ACC, + gPokeSummary_ExpBarPals, + sPokeSummary_HpBarPalYellow, + sPokeSummary_HpBarPalRed, }; @@ -956,7 +976,7 @@ static const u16 * const sUnknown_8463FFC[] = void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u8 mode) { sMonSummaryScreen = AllocZeroed(sizeof(struct PokemonSummaryScreenData)); - sUnknown_203B144 = AllocZeroed(sizeof(struct Struct203B144)); + sMonSkillsPrinterXpos = AllocZeroed(sizeof(struct Struct203B144)); if (sMonSummaryScreen == NULL) { @@ -966,8 +986,8 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, sLastViewedMonIndex = cursorPos; - sUnknown_203B16D = 0; - sUnknown_203B16E = 0; + sMoveSelectionCursorPos = 0; + sMoveSwapCursorPos = 0; sMonSummaryScreen->savedCallback = savedCallback; sMonSummaryScreen->monList.mons = party; @@ -1004,58 +1024,58 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, } sMonSummaryScreen->state3270 = 0; - sMonSummaryScreen->unk3274 = 0; - sMonSummaryScreen->unk3278 = 0; - sMonSummaryScreen->unk327C = 0; + sMonSummaryScreen->summarySetupStep = 0; + sMonSummaryScreen->loadBgGfxStep = 0; + sMonSummaryScreen->spriteCreationStep = 0; - sMonSummaryScreen->unk3238 = 0; - sMonSummaryScreen->unk323C = 2; - sMonSummaryScreen->unk3240 = 1; - sMonSummaryScreen->unk3244 = FALSE; + sMonSummaryScreen->whichBgLayerToTranslate = 0; + sMonSummaryScreen->skillsPageBgNum = 2; + sMonSummaryScreen->infoAndMovesPageBgNum = 1; + sMonSummaryScreen->flippingPages = FALSE; sMonSummaryScreen->unk3228 = 0; sMonSummaryScreen->unk322C = 1; - sub_8138B8C(&sMonSummaryScreen->currentMon); + BufferSelectedMonData(&sMonSummaryScreen->currentMon); sMonSummaryScreen->isEgg = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_IS_EGG); sMonSummaryScreen->isBadEgg = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SANITY_IS_BAD_EGG); if (sMonSummaryScreen->isBadEgg == TRUE) sMonSummaryScreen->isEgg = TRUE; - sMonSummaryScreen->unk3300[0] = 0xff; - SetMainCallback2(sub_8135C34); + sMonSummaryScreen->lastPageFlipDirection = 0xff; + SetMainCallback2(CB2_SetUpPSS); } void ShowSelectMovePokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u16 a4) { ShowPokemonSummaryScreen(party, cursorPos, lastIdx, savedCallback, PSS_MODE_SELECT_MOVE); - sMonSummaryScreen->unk325A[4] = a4; + sMonSummaryScreen->moveIds[4] = a4; } -static u8 sub_813476C(u8 a0) +static u8 PageFlipInputIsDisabled(u8 direction) { - if (sMonSummaryScreen->unk301C == TRUE && sMonSummaryScreen->unk3224 != a0) + if (sMonSummaryScreen->inhibitPageFlipInput == TRUE && sMonSummaryScreen->pageFlipDirection != direction) return TRUE; return FALSE; } -u32 sub_81347A4(u8 a0) +bool32 IsPageFlipInput(u8 direction) { if (sMonSummaryScreen->isEgg) return FALSE; - if (sMonSummaryScreen->unk3300[0] != 0xff && sMonSummaryScreen->unk3300[0] == a0) + if (sMonSummaryScreen->lastPageFlipDirection != 0xff && sMonSummaryScreen->lastPageFlipDirection == direction) { - sMonSummaryScreen->unk3300[0] = 0xff; + sMonSummaryScreen->lastPageFlipDirection = 0xff; return TRUE; } - if (sub_813476C(a0)) + if (PageFlipInputIsDisabled(direction)) return FALSE; - switch (a0) + switch (direction) { case 1: if (JOY_NEW(DPAD_RIGHT)) @@ -1078,81 +1098,81 @@ u32 sub_81347A4(u8 a0) return FALSE; } -static void sub_8134840(u8 taskId) +static void Task_InputHandler_Info(u8 taskId) { switch (sMonSummaryScreen->state3270) { - case PSS_STATE3270_0: + case PSS_STATE3270_FADEIN: BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); - sMonSummaryScreen->state3270 = PSS_STATE3270_1; + sMonSummaryScreen->state3270 = PSS_STATE3270_PLAYCRY; break; - case PSS_STATE3270_1: + case PSS_STATE3270_PLAYCRY: if (!gPaletteFade.active) { - sub_813B784(); - sMonSummaryScreen->state3270 = PSS_STATE3270_2; + PokeSum_TryPlayMonCry(); + sMonSummaryScreen->state3270 = PSS_STATE3270_HANDLEINPUT; return; } - sMonSummaryScreen->state3270 = PSS_STATE3270_1; + sMonSummaryScreen->state3270 = PSS_STATE3270_PLAYCRY; break; - case PSS_STATE3270_2: + case PSS_STATE3270_HANDLEINPUT: if (MenuHelpers_CallLinkSomething() == TRUE) return; - else if (sub_800B270() == TRUE) + else if (LinkRecvQueueLengthMoreThan2() == TRUE) return; - else if (FuncIsActiveTask(sub_813B3F0)) + else if (FuncIsActiveTask(Task_PokeSum_SwitchDisplayedPokemon)) return; if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) { - if (sub_81347A4(1) == TRUE) + if (IsPageFlipInput(1) == TRUE) { - if (FuncIsActiveTask(sub_8134BAC)) + if (FuncIsActiveTask(Task_PokeSum_FlipPages)) { - sMonSummaryScreen->unk3300[0] = 1; + sMonSummaryScreen->lastPageFlipDirection = 1; return; } else if (sMonSummaryScreen->curPageIndex < PSS_PAGE_MOVES) { PlaySE(SE_SELECT); HideBg(0); - sMonSummaryScreen->unk3224 = 1; - sub_8138414(sMonSummaryScreen->curPageIndex); + sMonSummaryScreen->pageFlipDirection = 1; + PokeSum_RemoveWindows(sMonSummaryScreen->curPageIndex); sMonSummaryScreen->curPageIndex++; - sMonSummaryScreen->state3270 = PSS_STATE3270_3; + sMonSummaryScreen->state3270 = PSS_STATE3270_FLIPPAGES; } return; } - else if (sub_81347A4(0) == TRUE) + else if (IsPageFlipInput(0) == TRUE) { - if (FuncIsActiveTask(sub_8134BAC)) + if (FuncIsActiveTask(Task_PokeSum_FlipPages)) { - sMonSummaryScreen->unk3300[0] = 0; + sMonSummaryScreen->lastPageFlipDirection = 0; return; } else if (sMonSummaryScreen->curPageIndex > PSS_PAGE_INFO) { PlaySE(SE_SELECT); HideBg(0); - sMonSummaryScreen->unk3224 = 0; - sub_8138414(sMonSummaryScreen->curPageIndex); + sMonSummaryScreen->pageFlipDirection = 0; + PokeSum_RemoveWindows(sMonSummaryScreen->curPageIndex); sMonSummaryScreen->curPageIndex--; - sMonSummaryScreen->state3270 = PSS_STATE3270_3; + sMonSummaryScreen->state3270 = PSS_STATE3270_FLIPPAGES; } return; } } - if ((!FuncIsActiveTask(sub_8134BAC)) || FuncIsActiveTask(sub_813B3F0)) + if ((!FuncIsActiveTask(Task_PokeSum_FlipPages)) || FuncIsActiveTask(Task_PokeSum_SwitchDisplayedPokemon)) { if (JOY_NEW(DPAD_UP)) { - sub_813B120(taskId, -1); + PokeSum_SeekToNextMon(taskId, -1); return; } else if (JOY_NEW(DPAD_DOWN)) { - sub_813B120(taskId, 1); + PokeSum_SeekToNextMon(taskId, 1); return; } else if (JOY_NEW(A_BUTTON)) @@ -1160,74 +1180,74 @@ static void sub_8134840(u8 taskId) if (sMonSummaryScreen->curPageIndex == PSS_PAGE_INFO) { PlaySE(SE_SELECT); - sMonSummaryScreen->state3270 = PSS_STATE3270_4; + sMonSummaryScreen->state3270 = PSS_STATE3270_ATEXIT_FADEOUT; } else if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES) { PlaySE(SE_SELECT); - sMonSummaryScreen->unk3224 = 1; - sub_8138414(sMonSummaryScreen->curPageIndex); + sMonSummaryScreen->pageFlipDirection = 1; + PokeSum_RemoveWindows(sMonSummaryScreen->curPageIndex); sMonSummaryScreen->curPageIndex++; - sMonSummaryScreen->state3270 = PSS_STATE3270_3; + sMonSummaryScreen->state3270 = PSS_STATE3270_FLIPPAGES; } return; } else if (JOY_NEW(B_BUTTON)) { - sMonSummaryScreen->state3270 = PSS_STATE3270_4; + sMonSummaryScreen->state3270 = PSS_STATE3270_ATEXIT_FADEOUT; } } break; - case PSS_STATE3270_3: + case PSS_STATE3270_FLIPPAGES: if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) { - CreateTask(sub_8134BAC, 0); - sMonSummaryScreen->state3270 = PSS_STATE3270_2; + CreateTask(Task_PokeSum_FlipPages, 0); + sMonSummaryScreen->state3270 = PSS_STATE3270_HANDLEINPUT; } else { - gTasks[sMonSummaryScreen->unk3018].func = sub_8134E84; - sMonSummaryScreen->state3270 = PSS_STATE3270_2; + gTasks[sMonSummaryScreen->inputHandlerTaskId].func = Task_FlipPages_FromInfo; + sMonSummaryScreen->state3270 = PSS_STATE3270_HANDLEINPUT; } break; - case PSS_STATE3270_4: + case PSS_STATE3270_ATEXIT_FADEOUT: BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); - sMonSummaryScreen->state3270 = PSS_STATE3270_5; + sMonSummaryScreen->state3270 = PSS_STATE3270_ATEXIT_WAITLINKDELAY; break; - case PSS_STATE3270_5: + case PSS_STATE3270_ATEXIT_WAITLINKDELAY: if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE) return; - else if (sub_800B270() == TRUE) + else if (LinkRecvQueueLengthMoreThan2() == TRUE) return; - sMonSummaryScreen->state3270 = PSS_STATE3270_6; + sMonSummaryScreen->state3270 = PSS_STATE3270_ATEXIT_WAITFADE; break; default: if (!gPaletteFade.active) - sub_8137E64(taskId); + Task_DestroyResourcesOnExit(taskId); break; } } -static void sub_8134BAC(u8 taskId) +static void Task_PokeSum_FlipPages(u8 taskId) { s16 * data = gTasks[taskId].data; switch (data[0]) { case 0: - sub_8135638(); - sub_81356EC(); + PokeSum_HideSpritesBeforePageFlip(); + PokeSum_ShowSpritesBeforePageFlip(); sMonSummaryScreen->lockMovesFlag = TRUE; - sMonSummaryScreen->unk301C = TRUE; - sub_813B750(sMonSummaryScreen->curPageIndex); - sub_8138280(sMonSummaryScreen->curPageIndex); + sMonSummaryScreen->inhibitPageFlipInput = TRUE; + PokeSum_UpdateWin1ActiveFlag(sMonSummaryScreen->curPageIndex); + PokeSum_AddWindows(sMonSummaryScreen->curPageIndex); break; case 1: if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) { - if (!(sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && sMonSummaryScreen->unk3224 == 0)) + if (!(sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && sMonSummaryScreen->pageFlipDirection == 0)) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); CopyBgTilemapBufferToVram(0); @@ -1239,15 +1259,15 @@ static void sub_8134BAC(u8 taskId) FillBgTilemapBufferRect_Palette0(2, 0, 0, 2, 15, 2); break; case 2: - sub_8135AA4(); - sub_8135B90(); - sub_8138538(); - sub_8137D28(sMonSummaryScreen->curPageIndex); + PokeSum_CopyNewBgTilemapBeforePageFlip_2(); + PokeSum_CopyNewBgTilemapBeforePageFlip(); + PokeSum_DrawBg3Tilemap(); + PokeSum_PrintPageHeaderText(sMonSummaryScreen->curPageIndex); break; case 3: - CopyWindowToVram(sMonSummaryScreen->unk3000[0], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[1], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[2], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2); break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) @@ -1261,27 +1281,27 @@ static void sub_8134BAC(u8 taskId) break; case 5: - sub_8135514(); - sMonSummaryScreen->unk3244 = TRUE; + PokeSum_InitBgCoordsBeforePageFlips(); + sMonSummaryScreen->flippingPages = TRUE; break; case 6: - if (!sub_81357A0(sMonSummaryScreen->unk3224)) + if (!PokeSum_IsPageFlipFinished(sMonSummaryScreen->pageFlipDirection)) return; break; case 7: - sub_8136F4C(); + PokeSum_PrintRightPaneText(); if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) - sub_81374E8(); + PokeSum_PrintBottomPaneText(); - sub_8137BD0(); - sub_8138A38(); + PokeSum_PrintAbilityDataOrMoveTypes(); + PokeSum_PrintMonTypeIcons(); break; case 8: - CopyWindowToVram(sMonSummaryScreen->unk3000[3], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[5], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[6], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[5], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[6], 2); break; case 9: if (!IsDma3ManagerBusyWithBgCopy()) @@ -1294,34 +1314,34 @@ static void sub_8134BAC(u8 taskId) break; default: - sub_8138440(); + PokeSum_SetHelpContext(); if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) - gTasks[sMonSummaryScreen->unk3018].func = sub_8138CD8; + gTasks[sMonSummaryScreen->inputHandlerTaskId].func = Task_HandleInput_SelectMove; DestroyTask(taskId); data[0] = 0; sMonSummaryScreen->lockMovesFlag = FALSE; - sMonSummaryScreen->unk301C = FALSE; + sMonSummaryScreen->inhibitPageFlipInput = FALSE; return; } data[0]++; } -static void sub_8134E84(u8 taskId) +static void Task_FlipPages_FromInfo(u8 taskId) { - switch (sMonSummaryScreen->unk3284) + switch (sMonSummaryScreen->state3284) { case 0: sMonSummaryScreen->lockMovesFlag = TRUE; - sMonSummaryScreen->unk301C = TRUE; - sub_8138280(sMonSummaryScreen->curPageIndex); + sMonSummaryScreen->inhibitPageFlipInput = TRUE; + PokeSum_AddWindows(sMonSummaryScreen->curPageIndex); break; case 1: if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) { - if (!(sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && sMonSummaryScreen->unk3224 == 0)) + if (!(sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && sMonSummaryScreen->pageFlipDirection == 0)) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); CopyBgTilemapBufferToVram(0); @@ -1334,23 +1354,23 @@ static void sub_8134E84(u8 taskId) FillBgTilemapBufferRect_Palette0(2, 0, 0, 2, 15, 2); break; case 2: - sub_8135638(); - sub_813B750(sMonSummaryScreen->curPageIndex); - sub_8135B90(); - sub_8138538(); - sub_8135AA4(); + PokeSum_HideSpritesBeforePageFlip(); + PokeSum_UpdateWin1ActiveFlag(sMonSummaryScreen->curPageIndex); + PokeSum_CopyNewBgTilemapBeforePageFlip(); + PokeSum_DrawBg3Tilemap(); + PokeSum_CopyNewBgTilemapBeforePageFlip_2(); break; case 3: - sub_8136DA4(gUnknown_8419C39); + PokeSum_PrintPageName(gText_PokeSum_PageName_KnownMoves); if (!(gMain.inBattle || gReceivedRemoteLinkPlayers)) - sub_8136DF0(gUnknown_8419C92); + PokeSum_PrintControlsString(gText_PokeSum_Controls_PickSwitch); else - sub_8136DF0(gUnknown_8419CA2); + PokeSum_PrintControlsString(gText_PokeSum_Controls_Pick); break; case 4: - CopyWindowToVram(sMonSummaryScreen->unk3000[0], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[1], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS], 2); break; case 5: if (!IsDma3ManagerBusyWithBgCopy()) @@ -1364,37 +1384,37 @@ static void sub_8134E84(u8 taskId) break; case 6: - sub_8136F4C(); - sub_8137BD0(); - CopyWindowToVram(sMonSummaryScreen->unk3000[3], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[5], 2); + PokeSum_PrintRightPaneText(); + PokeSum_PrintAbilityDataOrMoveTypes(); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[5], 2); break; case 7: if (!IsDma3ManagerBusyWithBgCopy()) { CopyBgTilemapBufferToVram(0); - sub_8135514(); - sMonSummaryScreen->unk3244 = TRUE; + PokeSum_InitBgCoordsBeforePageFlips(); + sMonSummaryScreen->flippingPages = TRUE; } else return; break; case 8: - if (!sub_81357A0(sMonSummaryScreen->unk3224)) + if (!PokeSum_IsPageFlipFinished(sMonSummaryScreen->pageFlipDirection)) return; - sub_81374E8(); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); + PokeSum_PrintBottomPaneText(); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); break; case 9: - sub_8138A38(); - sub_8136E50(gUnknown_8419C45); + PokeSum_PrintMonTypeIcons(); + PrintMonLevelNickOnWindow2(gText_PokeSum_NoData); break; case 10: - sub_81356EC(); - CopyWindowToVram(sMonSummaryScreen->unk3000[6], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[2], 2); + PokeSum_ShowSpritesBeforePageFlip(); + CopyWindowToVram(sMonSummaryScreen->windowIds[6], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2); break; case 11: if (!IsDma3ManagerBusyWithBgCopy()) @@ -1408,30 +1428,30 @@ static void sub_8134E84(u8 taskId) break; default: - sub_8138440(); - gTasks[sMonSummaryScreen->unk3018].func = sub_8138CD8; - sMonSummaryScreen->unk3284 = 0; + PokeSum_SetHelpContext(); + gTasks[sMonSummaryScreen->inputHandlerTaskId].func = Task_HandleInput_SelectMove; + sMonSummaryScreen->state3284 = 0; sMonSummaryScreen->lockMovesFlag = FALSE; - sMonSummaryScreen->unk301C = FALSE; + sMonSummaryScreen->inhibitPageFlipInput = FALSE; return; } - sMonSummaryScreen->unk3284++; + sMonSummaryScreen->state3284++; return; } -static void sub_81351A0(u8 taskId) +static void Task_BackOutOfSelectMove(u8 taskId) { - switch (sMonSummaryScreen->unk3284) + switch (sMonSummaryScreen->state3284) { case 0: sMonSummaryScreen->lockMovesFlag = TRUE; - sMonSummaryScreen->unk301C = TRUE; - sub_8138280(sMonSummaryScreen->curPageIndex); + sMonSummaryScreen->inhibitPageFlipInput = TRUE; + PokeSum_AddWindows(sMonSummaryScreen->curPageIndex); break; case 1: if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) { - if (!(sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && sMonSummaryScreen->unk3224 == 0)) + if (!(sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && sMonSummaryScreen->pageFlipDirection == 0)) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); CopyBgTilemapBufferToVram(0); @@ -1444,132 +1464,132 @@ static void sub_81351A0(u8 taskId) FillBgTilemapBufferRect_Palette0(2, 0, 0, 2, 15, 2); break; case 2: - sub_8135AA4(); + PokeSum_CopyNewBgTilemapBeforePageFlip_2(); break; case 3: - sub_8136F4C(); - sub_81374E8(); - sub_8137BD0(); - CopyWindowToVram(sMonSummaryScreen->unk3000[3], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[5], 2); + PokeSum_PrintRightPaneText(); + PokeSum_PrintBottomPaneText(); + PokeSum_PrintAbilityDataOrMoveTypes(); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[5], 2); CopyBgTilemapBufferToVram(0); break; case 4: - sub_8136DA4(gUnknown_8419C39); - sub_8136DF0(gUnknown_8419C82); + PokeSum_PrintPageName(gText_PokeSum_PageName_KnownMoves); + PokeSum_PrintControlsString(gText_PokeSum_Controls_PageDetail); break; case 5: - CopyWindowToVram(sMonSummaryScreen->unk3000[0], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[1], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS], 2); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); break; case 6: - sub_8135514(); - sMonSummaryScreen->unk3244 = TRUE; - sub_8135638(); - sub_813B750(sMonSummaryScreen->curPageIndex); - sub_8138A38(); + PokeSum_InitBgCoordsBeforePageFlips(); + sMonSummaryScreen->flippingPages = TRUE; + PokeSum_HideSpritesBeforePageFlip(); + PokeSum_UpdateWin1ActiveFlag(sMonSummaryScreen->curPageIndex); + PokeSum_PrintMonTypeIcons(); break; case 7: break; case 8: - if (sub_81357A0(sMonSummaryScreen->unk3224) == 0) + if (PokeSum_IsPageFlipFinished(sMonSummaryScreen->pageFlipDirection) == 0) return; - sub_8136E50(gUnknown_8419C45); + PrintMonLevelNickOnWindow2(gText_PokeSum_NoData); break; case 9: - CopyWindowToVram(sMonSummaryScreen->unk3000[6], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[2], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[6], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2); CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); break; case 10: - sub_8135B90(); - sub_8138538(); + PokeSum_CopyNewBgTilemapBeforePageFlip(); + PokeSum_DrawBg3Tilemap(); CopyBgTilemapBufferToVram(3); - sub_81356EC(); + PokeSum_ShowSpritesBeforePageFlip(); break; default: - sub_8138440(); - gTasks[sMonSummaryScreen->unk3018].func = sub_8134840; - sMonSummaryScreen->unk3284 = 0; + PokeSum_SetHelpContext(); + gTasks[sMonSummaryScreen->inputHandlerTaskId].func = Task_InputHandler_Info; + sMonSummaryScreen->state3284 = 0; sMonSummaryScreen->lockMovesFlag = FALSE; - sMonSummaryScreen->unk301C = FALSE; + sMonSummaryScreen->inhibitPageFlipInput = FALSE; return; } - sMonSummaryScreen->unk3284++; + sMonSummaryScreen->state3284++; return; } -static void sub_813546C(void) +static void PokeSum_SetHpExpBarCoordsFullRight(void) { u8 i; for (i = 0; i < 11; i++) { - sUnknown_203B160->unk2C[i] = (8 * i) + 396; - sUnknown_203B160->sprites[i]->pos1.x = sUnknown_203B160->unk2C[i]; + sExpBarObjs->xpos[i] = (8 * i) + 396; + sExpBarObjs->sprites[i]->pos1.x = sExpBarObjs->xpos[i]; if (i >= 9) continue; - sUnknown_203B15C->unk28[i] = (8 * i) + 412; - sUnknown_203B15C->sprites[i]->pos1.x = sUnknown_203B15C->unk28[i]; + sHpBarObjs->xpos[i] = (8 * i) + 412; + sHpBarObjs->sprites[i]->pos1.x = sHpBarObjs->xpos[i]; } } -static void sub_81354C4(void) +static void PokeSum_SetHpExpBarCoordsFullLeft(void) { u8 i; for (i = 0; i < 11; i++) { - sUnknown_203B160->unk2C[i] = (8 * i) + 156; - sUnknown_203B160->sprites[i]->pos1.x = sUnknown_203B160->unk2C[i]; + sExpBarObjs->xpos[i] = (8 * i) + 156; + sExpBarObjs->sprites[i]->pos1.x = sExpBarObjs->xpos[i]; if (i >= 9) continue; - sUnknown_203B15C->unk28[i] = (8 * i) + 172; - sUnknown_203B15C->sprites[i]->pos1.x = sUnknown_203B15C->unk28[i]; + sHpBarObjs->xpos[i] = (8 * i) + 172; + sHpBarObjs->sprites[i]->pos1.x = sHpBarObjs->xpos[i]; } } -static void sub_8135514(void) +static void PokeSum_InitBgCoordsBeforePageFlips(void) { s8 pageDelta = 1; - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) pageDelta = -1; if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) { - sMonSummaryScreen->unk324C = 240; + sMonSummaryScreen->flipPagesBgHofs = 240; return; } if ((sMonSummaryScreen->curPageIndex + pageDelta) == PSS_PAGE_MOVES_INFO) { - sub_81358DC(0, 0); - sMonSummaryScreen->unk324C = 0; + PokeSum_UpdateBgPriorityForPageFlip(0, 0); + sMonSummaryScreen->flipPagesBgHofs = 0; SetGpuReg(REG_OFFSET_BG1HOFS, 0); SetGpuReg(REG_OFFSET_BG2HOFS, 0); return; } - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) { - sMonSummaryScreen->unk324C = 0; + sMonSummaryScreen->flipPagesBgHofs = 0; SetGpuReg(REG_OFFSET_BG0HOFS, 0); SetGpuReg(REG_OFFSET_BG1HOFS, 0); SetGpuReg(REG_OFFSET_BG2HOFS, 0); - sub_81358DC(1, 1); + PokeSum_UpdateBgPriorityForPageFlip(1, 1); } else { u32 bg1Priority = GetGpuReg(REG_OFFSET_BG1CNT) & 3; u32 bg2Priority = GetGpuReg(REG_OFFSET_BG2CNT) & 3; - sMonSummaryScreen->unk324C = 240; + sMonSummaryScreen->flipPagesBgHofs = 240; if (bg1Priority > bg2Priority) SetGpuReg(REG_OFFSET_BG1HOFS, 240); @@ -1577,26 +1597,26 @@ static void sub_8135514(void) SetGpuReg(REG_OFFSET_BG2HOFS, 240); SetGpuReg(REG_OFFSET_BG0HOFS, 240); - sub_81358DC(1, 0); + PokeSum_UpdateBgPriorityForPageFlip(1, 0); } if (sMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS) { - if (sMonSummaryScreen->unk3224 == 1) - sub_81354C4(); + if (sMonSummaryScreen->pageFlipDirection == 1) + PokeSum_SetHpExpBarCoordsFullLeft(); else - sub_813546C(); + PokeSum_SetHpExpBarCoordsFullRight(); } else if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES) - sub_81354C4(); + PokeSum_SetHpExpBarCoordsFullLeft(); } -static void sub_8135638(void) +static void PokeSum_HideSpritesBeforePageFlip(void) { u8 newPage; - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) newPage = sMonSummaryScreen->curPageIndex - 1; else newPage = sMonSummaryScreen->curPageIndex + 1; @@ -1606,36 +1626,36 @@ static void sub_8135638(void) case PSS_PAGE_INFO: break; case PSS_PAGE_SKILLS: - sub_813A838(1); - sub_813AB70(1); + ShowOrHideHpBarObjs(TRUE); + ShowOrHideExpBarObjs(TRUE); break; case PSS_PAGE_MOVES: - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) { - sub_8139C44(1); - sub_813B084(1); - sub_8139D54(1); - sub_813A3B8(1); - sub_813ACF8(1); - sub_813AEB0(1); + PokeSum_ShowOrHideMonPicSprite(TRUE); + PokeSum_ShowOrHideMonMarkingsSprite(TRUE); + ShowOrHideBallIconObj(TRUE); + ShowOrHideStatusIcon(TRUE); + HideShowPokerusIcon(TRUE); + HideShowShinyStar(TRUE); } break; case PSS_PAGE_MOVES_INFO: - sub_813A0E8(1); - sub_8139EE4(1); - sub_813A3B8(1); - sub_813ACF8(1); - sub_813AEB0(1); + ShoworHideMoveSelectionCursor(TRUE); + PokeSum_ShowOrHideMonIconSprite(TRUE); + ShowOrHideStatusIcon(TRUE); + HideShowPokerusIcon(TRUE); + HideShowShinyStar(TRUE); break; } } -static void sub_81356EC(void) +static void PokeSum_ShowSpritesBeforePageFlip(void) { u8 newPage; - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) newPage = sMonSummaryScreen->curPageIndex - 1; else newPage = sMonSummaryScreen->curPageIndex + 1; @@ -1643,86 +1663,86 @@ static void sub_81356EC(void) switch (newPage) { case PSS_PAGE_INFO: - sub_813A838(0); - sub_813AB70(0); + ShowOrHideHpBarObjs(FALSE); + ShowOrHideExpBarObjs(FALSE); break; case PSS_PAGE_SKILLS: break; case PSS_PAGE_MOVES: - if (sMonSummaryScreen->unk3224 == 0) + if (sMonSummaryScreen->pageFlipDirection == 0) { - sub_813A838(0); - sub_813AB70(0); + ShowOrHideHpBarObjs(FALSE); + ShowOrHideExpBarObjs(FALSE); } else { - sub_813A0E8(0); - sub_813ACF8(0); - sub_8139EE4(0); - sub_813AEB0(0); + ShoworHideMoveSelectionCursor(FALSE); + HideShowPokerusIcon(FALSE); + PokeSum_ShowOrHideMonIconSprite(FALSE); + HideShowShinyStar(FALSE); } break; case PSS_PAGE_MOVES_INFO: - sub_8139C44(0); - sub_813B084(0); - sub_813A3B8(0); - sub_8139D54(0); - sub_813ACF8(0); - sub_813AEB0(0); + PokeSum_ShowOrHideMonPicSprite(FALSE); + PokeSum_ShowOrHideMonMarkingsSprite(FALSE); + ShowOrHideStatusIcon(FALSE); + ShowOrHideBallIconObj(FALSE); + HideShowPokerusIcon(FALSE); + HideShowShinyStar(FALSE); break; } } -static u8 sub_81357A0(u8 a0) +static u8 PokeSum_IsPageFlipFinished(u8 a0) { s8 pageDelta = 1; - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) pageDelta = -1; if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) - if (sMonSummaryScreen->unk324C <= 0) + if (sMonSummaryScreen->flipPagesBgHofs <= 0) { - sMonSummaryScreen->unk324C = 0; - sMonSummaryScreen->unk3238 ^= 1; - sub_81358DC(0, 0); - sMonSummaryScreen->unk3244 = FALSE; + sMonSummaryScreen->flipPagesBgHofs = 0; + sMonSummaryScreen->whichBgLayerToTranslate ^= 1; + PokeSum_UpdateBgPriorityForPageFlip(0, 0); + sMonSummaryScreen->flippingPages = FALSE; return TRUE; } if ((sMonSummaryScreen->curPageIndex + pageDelta) == PSS_PAGE_MOVES_INFO) - if (sMonSummaryScreen->unk324C >= 240) + if (sMonSummaryScreen->flipPagesBgHofs >= 240) { - sMonSummaryScreen->unk324C = 240; - sMonSummaryScreen->unk3238 ^= 1; - sMonSummaryScreen->unk3244 = FALSE; + sMonSummaryScreen->flipPagesBgHofs = 240; + sMonSummaryScreen->whichBgLayerToTranslate ^= 1; + sMonSummaryScreen->flippingPages = FALSE; return TRUE; } - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) { - if (sMonSummaryScreen->unk324C >= 240) + if (sMonSummaryScreen->flipPagesBgHofs >= 240) { - sMonSummaryScreen->unk324C = 240; - sMonSummaryScreen->unk3238 ^= 1; - sub_81358DC(0, 0); - sMonSummaryScreen->unk3244 = FALSE; + sMonSummaryScreen->flipPagesBgHofs = 240; + sMonSummaryScreen->whichBgLayerToTranslate ^= 1; + PokeSum_UpdateBgPriorityForPageFlip(0, 0); + sMonSummaryScreen->flippingPages = FALSE; return TRUE; } } - else if (sMonSummaryScreen->unk324C <= 0) + else if (sMonSummaryScreen->flipPagesBgHofs <= 0) { - sMonSummaryScreen->unk3238 ^= 1; - sMonSummaryScreen->unk324C = 0; - sMonSummaryScreen->unk3244 = FALSE; + sMonSummaryScreen->whichBgLayerToTranslate ^= 1; + sMonSummaryScreen->flipPagesBgHofs = 0; + sMonSummaryScreen->flippingPages = FALSE; return TRUE; } return FALSE; } -static void sub_81358DC(u8 a0, u8 a1) +static void PokeSum_UpdateBgPriorityForPageFlip(u8 setBg0Priority, u8 keepBg1Bg2PriorityOrder) { u8 i; u32 bg0Priority; @@ -1733,13 +1753,13 @@ static void sub_81358DC(u8 a0, u8 a1) bg1Priority = GetGpuReg(REG_OFFSET_BG1CNT) & 3; bg2Priority = GetGpuReg(REG_OFFSET_BG2CNT) & 3; - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) { - if (a0 == 0) + if (setBg0Priority == 0) { bg0Priority = 0; - if (a1 == 0) + if (keepBg1Bg2PriorityOrder == 0) { if (bg1Priority > bg2Priority) bg1Priority = 1, bg2Priority = 2; @@ -1754,11 +1774,11 @@ static void sub_81358DC(u8 a0, u8 a1) bg1Priority = 1, bg2Priority = 2; } } - if (a0 == 1) + if (setBg0Priority == 1) { bg0Priority = 1; - if (a1 == 0) + if (keepBg1Bg2PriorityOrder == 0) { if (bg1Priority > bg2Priority) bg1Priority = 0, bg2Priority = 2; @@ -1775,7 +1795,7 @@ static void sub_81358DC(u8 a0, u8 a1) } } - if (sMonSummaryScreen->unk3224 == 0) + if (sMonSummaryScreen->pageFlipDirection == 0) { bg0Priority = 0; if (bg1Priority > bg2Priority) @@ -1786,30 +1806,30 @@ static void sub_81358DC(u8 a0, u8 a1) for (i = 0; i < 11; i++) { - if (sMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && sMonSummaryScreen->unk3224 == 1) - sUnknown_203B160->sprites[i]->oam.priority = bg0Priority; + if (sMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && sMonSummaryScreen->pageFlipDirection == 1) + sExpBarObjs->sprites[i]->oam.priority = bg0Priority; else - sUnknown_203B160->sprites[i]->oam.priority = bg1Priority; + sExpBarObjs->sprites[i]->oam.priority = bg1Priority; if (i >= 9) continue; - if (sMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && sMonSummaryScreen->unk3224 == 1) - sUnknown_203B15C->sprites[i]->oam.priority = bg0Priority; + if (sMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && sMonSummaryScreen->pageFlipDirection == 1) + sHpBarObjs->sprites[i]->oam.priority = bg0Priority; else - sUnknown_203B15C->sprites[i]->oam.priority = bg1Priority; + sHpBarObjs->sprites[i]->oam.priority = bg1Priority; } - SetGpuReg(REG_OFFSET_BG0CNT, (GetGpuReg(REG_OFFSET_BG0CNT) & 0xfffc) | bg0Priority); - SetGpuReg(REG_OFFSET_BG1CNT, (GetGpuReg(REG_OFFSET_BG1CNT) & 0xfffc) | bg1Priority); - SetGpuReg(REG_OFFSET_BG2CNT, (GetGpuReg(REG_OFFSET_BG2CNT) & 0xfffc) | bg2Priority); + SetGpuReg(REG_OFFSET_BG0CNT, (GetGpuReg(REG_OFFSET_BG0CNT) & (u16)~3) | bg0Priority); + SetGpuReg(REG_OFFSET_BG1CNT, (GetGpuReg(REG_OFFSET_BG1CNT) & (u16)~3) | bg1Priority); + SetGpuReg(REG_OFFSET_BG2CNT, (GetGpuReg(REG_OFFSET_BG2CNT) & (u16)~3) | bg2Priority); } -static void sub_8135AA4(void) +static void PokeSum_CopyNewBgTilemapBeforePageFlip_2(void) { u8 newPage; - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) newPage = sMonSummaryScreen->curPageIndex - 1; else newPage = sMonSummaryScreen->curPageIndex + 1; @@ -1817,33 +1837,33 @@ static void sub_8135AA4(void) switch (newPage) { case PSS_PAGE_INFO: - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_TrainerMemo_Stats, 0, 0); break; case PSS_PAGE_SKILLS: - if (sMonSummaryScreen->unk3224 == 1) - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9B950, 0, 0); + if (sMonSummaryScreen->pageFlipDirection == 1) + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_PokeSum_MovesListForDelete, 0, 0); else - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9B598, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_TrainerMemo_Details, 0, 0); break; case PSS_PAGE_MOVES: - if (sMonSummaryScreen->unk3224 == 1) - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9BA9C, 0, 0); + if (sMonSummaryScreen->pageFlipDirection == 1) + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_PokeSum_MoveDetailsForDelete, 0, 0); else - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_TrainerMemo_Stats, 0, 0); break; case PSS_PAGE_MOVES_INFO: - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9B950, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_PokeSum_MovesListForDelete, 0, 0); break; } } -static void sub_8135B90(void) +static void PokeSum_CopyNewBgTilemapBeforePageFlip(void) { u8 newPage; - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) newPage = sMonSummaryScreen->curPageIndex - 1; else newPage = sMonSummaryScreen->curPageIndex + 1; @@ -1851,101 +1871,101 @@ static void sub_8135B90(void) switch (newPage) { case PSS_PAGE_INFO: - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_TrainerMemo_Stats, 0, 0); break; case PSS_PAGE_SKILLS: break; case PSS_PAGE_MOVES: - if (sMonSummaryScreen->unk3224 == 1) - CopyToBgTilemapBuffer(3, sUnknown_8463C80, 0, 0); + if (sMonSummaryScreen->pageFlipDirection == 1) + CopyToBgTilemapBuffer(3, sBgTilemap_MovesPage, 0, 0); else - CopyToBgTilemapBuffer(3, sUnknown_8463B88, 0, 0); + CopyToBgTilemapBuffer(3, sBgTilemap_MovesInfoPage, 0, 0); break; case PSS_PAGE_MOVES_INFO: - CopyToBgTilemapBuffer(3, sUnknown_8463B88, 0, 0); + CopyToBgTilemapBuffer(3, sBgTilemap_MovesInfoPage, 0, 0); break; } } -static void sub_8135C34(void) +static void CB2_SetUpPSS(void) { - switch (sMonSummaryScreen->unk3274) + switch (sMonSummaryScreen->summarySetupStep) { case 0: - sub_81381AC(); + PokeSum_Setup_ResetCallbacks(); break; case 1: - sub_8136BC4(); + PokeSum_Setup_InitGpu(); break; case 2: - sub_8136BAC(); + PokeSum_Setup_SpritesReset(); break; case 3: - if (!sub_8135F20()) + if (!PokeSum_HandleLoadBgGfx()) return; break; case 4: - if (!sub_8136AEC()) + if (!PokeSum_HandleCreateSprites()) return; break; case 5: - sub_81381D0(); + PokeSum_CreateWindows(); break; case 6: - if (!sub_8136040()) + if (!PokeSum_Setup_BufferStrings()) return; break; case 7: - sub_8136F4C(); + PokeSum_PrintRightPaneText(); break; case 8: - sub_81374E8(); + PokeSum_PrintBottomPaneText(); break; case 9: - sub_8137BD0(); - sub_8138A38(); + PokeSum_PrintAbilityDataOrMoveTypes(); + PokeSum_PrintMonTypeIcons(); break; case 10: if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE || sMonSummaryScreen->mode == PSS_MODE_FORGET_MOVE) - CopyToBgTilemapBuffer(3, sUnknown_8463C80, 0, 0); + CopyToBgTilemapBuffer(3, sBgTilemap_MovesPage, 0, 0); else - CopyToBgTilemapBuffer(3, sUnknown_8463B88, 0, 0); + CopyToBgTilemapBuffer(3, sBgTilemap_MovesInfoPage, 0, 0); - sub_8138538(); + PokeSum_DrawBg3Tilemap(); break; case 11: if (sMonSummaryScreen->isEgg) - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9BBCC, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_TrainerMemo_Egg, 0, 0); else { if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE || sMonSummaryScreen->mode == PSS_MODE_FORGET_MOVE) { - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9B950, 0, 0); - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9BA9C, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_PokeSum_MovesListForDelete, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_PokeSum_MoveDetailsForDelete, 0, 0); } else { - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9B598, 0, 0); - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_TrainerMemo_Details, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_TrainerMemo_Stats, 0, 0); } } break; case 12: BlendPalettes(0xffffffff, 16, 0); - sub_8137D28(sMonSummaryScreen->curPageIndex); - sub_8137E28(); + PokeSum_PrintPageHeaderText(sMonSummaryScreen->curPageIndex); + CommitStaticWindowTilemaps(); break; case 13: BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); - CopyWindowToVram(sMonSummaryScreen->unk3000[0], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[1], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[2], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[6], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[3], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[5], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[6], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[5], 2); break; case 14: CopyBgTilemapBufferToVram(0); @@ -1956,58 +1976,58 @@ static void sub_8135C34(void) case 15: if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE || sMonSummaryScreen->mode == PSS_MODE_FORGET_MOVE) { - sub_8139EE4(0); - sub_813A0E8(0); + PokeSum_ShowOrHideMonIconSprite(FALSE); + ShoworHideMoveSelectionCursor(FALSE); } else { - sub_8139C44(0); - sub_813B084(0); - sub_8139D54(0); - sub_813A838(0); - sub_813AB70(0); + PokeSum_ShowOrHideMonPicSprite(FALSE); + PokeSum_ShowOrHideMonMarkingsSprite(FALSE); + ShowOrHideBallIconObj(FALSE); + ShowOrHideHpBarObjs(FALSE); + ShowOrHideExpBarObjs(FALSE); } - sub_813A3B8(0); - sub_813ACF8(0); - sub_813AEB0(0); + ShowOrHideStatusIcon(FALSE); + HideShowPokerusIcon(FALSE); + HideShowShinyStar(FALSE); break; default: - sub_81381C0(); - sub_8136D54(); + PokeSum_Setup_SetVBlankCallback(); + PokeSum_FinishSetup(); return; } - sMonSummaryScreen->unk3274++; + sMonSummaryScreen->summarySetupStep++; } -static u8 sub_8135F20(void) +static u8 PokeSum_HandleLoadBgGfx(void) { - switch (sMonSummaryScreen->unk3278) + switch (sMonSummaryScreen->loadBgGfxStep) { case 0: - LoadPalette(gUnknown_8E9B310, 0, 0x20 * 5); + LoadPalette(gTrainerMemoPal1, 0, 0x20 * 5); if (IsMonShiny(&sMonSummaryScreen->currentMon) == TRUE && !sMonSummaryScreen->isEgg) { - LoadPalette(&gUnknown_8E9B310[16 * 6], 0, 0x20); - LoadPalette(&gUnknown_8E9B310[16 * 5], 0x10, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 6], 0, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 5], 0x10, 0x20); } else { - LoadPalette(&gUnknown_8E9B310[16 * 0], 0, 0x20); - LoadPalette(&gUnknown_8E9B310[16 * 1], 0x10, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 0], 0, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 1], 0x10, 0x20); } break; case 1: ListMenuLoadStdPalAt(0x60, 1); - LoadPalette(sUnknown_84636C0, 0x70, 0x20); + LoadPalette(sBgPal7, 0x70, 0x20); break; case 2: ResetTempTileDataBuffers(); break; case 3: - DecompressAndCopyTileDataToVram(2, gUnknown_8E9A460, 0, 0, 0); + DecompressAndCopyTileDataToVram(2, gPokeSumBgTiles, 0, 0, 0); break; case 4: if (FreeTempTileDataBuffersIfPossible() == TRUE) @@ -2019,45 +2039,45 @@ static u8 sub_8135F20(void) break; default: - LoadPalette(sUnknown_8463700, 0x80, 0x20); + LoadPalette(sBgPal8, 0x80, 0x20); return TRUE; } - sMonSummaryScreen->unk3278++; + sMonSummaryScreen->loadBgGfxStep++; return FALSE; } -static u8 sub_8136040(void) +static u8 PokeSum_Setup_BufferStrings(void) { - switch (sMonSummaryScreen->unk3280) + switch (sMonSummaryScreen->bufferStringsStep) { case 0: - sub_81360D4(); + BufferMonInfo(); if (sMonSummaryScreen->isEgg) { - sMonSummaryScreen->unk3280 = 0; + sMonSummaryScreen->bufferStringsStep = 0; return TRUE; } break; case 1: if (sMonSummaryScreen->isEgg == 0) - sub_8136350(); + BufferMonSkills(); break; case 2: if (sMonSummaryScreen->isEgg == 0) - sub_81367B0(); + BufferMonMoves(); break; default: - sMonSummaryScreen->unk3280 = 0; + sMonSummaryScreen->bufferStringsStep = 0; return TRUE; } - sMonSummaryScreen->unk3280++; + sMonSummaryScreen->bufferStringsStep++; return FALSE; } -static void sub_81360D4(void) +static void BufferMonInfo(void) { u8 tempStr[20]; u16 dexNum; @@ -2067,68 +2087,68 @@ static void sub_81360D4(void) dexNum = SpeciesToPokedexNum(GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES)); if (dexNum == 0xffff) - StringCopy(sMonSummaryScreen->summary.unk3064, gUnknown_8416202); + StringCopy(sMonSummaryScreen->summary.dexNumStrBuf, gText_PokeSum_DexNoUnknown); else - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk3064, dexNum, STR_CONV_MODE_LEADING_ZEROS, 3); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.dexNumStrBuf, dexNum, STR_CONV_MODE_LEADING_ZEROS, 3); - sUnknown_203B144->unk00 = 0; + sMonSkillsPrinterXpos->unk00 = 0; if (!sMonSummaryScreen->isEgg) { dexNum = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES); - GetSpeciesName(sMonSummaryScreen->summary.unk3028, dexNum); + GetSpeciesName(sMonSummaryScreen->summary.speciesNameStrBuf, dexNum); } else { - GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_NICKNAME, sMonSummaryScreen->summary.unk3028); + GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_NICKNAME, sMonSummaryScreen->summary.speciesNameStrBuf); return; } - sMonSummaryScreen->unk3220[0] = gBaseStats[dexNum].type1; - sMonSummaryScreen->unk3220[1] = gBaseStats[dexNum].type2; + sMonSummaryScreen->monTypes[0] = gBaseStats[dexNum].type1; + sMonSummaryScreen->monTypes[1] = gBaseStats[dexNum].type2; GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_NICKNAME, tempStr); - StringCopyN_Multibyte(sMonSummaryScreen->summary.unk3034, tempStr, POKEMON_NAME_LENGTH); - StringGetEnd10(sMonSummaryScreen->summary.unk3034); + StringCopyN_Multibyte(sMonSummaryScreen->summary.nicknameStrBuf, tempStr, POKEMON_NAME_LENGTH); + StringGetEnd10(sMonSummaryScreen->summary.nicknameStrBuf); gender = GetMonGender(&sMonSummaryScreen->currentMon); dexNum = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES2); if (gender == MON_FEMALE) - StringCopy(sMonSummaryScreen->summary.unk3084, gText_FemaleSymbol); + StringCopy(sMonSummaryScreen->summary.genderSymbolStrBuf, gText_FemaleSymbol); else if (gender == MON_MALE) - StringCopy(sMonSummaryScreen->summary.unk3084, gText_MaleSymbol); + StringCopy(sMonSummaryScreen->summary.genderSymbolStrBuf, gText_MaleSymbol); else - StringCopy(sMonSummaryScreen->summary.unk3084, gString_Dummy); + StringCopy(sMonSummaryScreen->summary.genderSymbolStrBuf, gString_Dummy); if (dexNum == SPECIES_NIDORAN_M || dexNum == SPECIES_NIDORAN_F) - if (StringCompare(sMonSummaryScreen->summary.unk3034, gSpeciesNames[dexNum]) == 0) - StringCopy(sMonSummaryScreen->summary.unk3084, gString_Dummy); + if (StringCompare(sMonSummaryScreen->summary.nicknameStrBuf, gSpeciesNames[dexNum]) == 0) + StringCopy(sMonSummaryScreen->summary.genderSymbolStrBuf, gString_Dummy); GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_OT_NAME, tempStr); - StringCopyN_Multibyte(sMonSummaryScreen->summary.unk3040, tempStr, OT_NAME_LENGTH); + StringCopyN_Multibyte(sMonSummaryScreen->summary.otNameStrBuf, tempStr, OT_NAME_LENGTH); - ConvertInternationalString(sMonSummaryScreen->summary.unk3040, GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_LANGUAGE)); + ConvertInternationalString(sMonSummaryScreen->summary.otNameStrBuf, GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_LANGUAGE)); otId = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_OT_ID) & 0xffff; ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk306C, otId, STR_CONV_MODE_LEADING_ZEROS, 5); ConvertIntToDecimalStringN(tempStr, GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_LEVEL), STR_CONV_MODE_LEFT_ALIGN, 3); - StringCopy(sMonSummaryScreen->summary.unk3088, gText_Lv); - StringAppendN(sMonSummaryScreen->summary.unk3088, tempStr, 4); + StringCopy(sMonSummaryScreen->summary.levelStrBuf, gText_Lv); + StringAppendN(sMonSummaryScreen->summary.levelStrBuf, tempStr, 4); heldItem = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_HELD_ITEM); if (heldItem == ITEM_NONE) - StringCopy(sMonSummaryScreen->summary.unk3074, gUnknown_84161EF); + StringCopy(sMonSummaryScreen->summary.itemNameStrBuf, gText_PokeSum_Item_None); else - CopyItemName(heldItem, sMonSummaryScreen->summary.unk3074); + CopyItemName(heldItem, sMonSummaryScreen->summary.itemNameStrBuf); } -#define MACRO_8136350_0(x) (63 - StringLength((x)) * 6) -#define MACRO_8136350_1(x) (27 - StringLength((x)) * 6) +#define GetNumberRightAlign63(x) (63 - StringLength((x)) * 6) +#define GetNumberRightAlign27(x) (27 - StringLength((x)) * 6) -static void sub_8136350(void) +static void BufferMonSkills(void) { u8 tempStr[20]; u8 level; @@ -2140,63 +2160,63 @@ static void sub_8136350(void) u32 expToNextLevel; hp = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_HP); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk3090, hp, STR_CONV_MODE_LEFT_ALIGN, 3); - StringAppend(sMonSummaryScreen->summary.unk3090, gText_Slash); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.curHpStrBuf, hp, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(sMonSummaryScreen->summary.curHpStrBuf, gText_Slash); hp = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MAX_HP); ConvertIntToDecimalStringN(tempStr, hp, STR_CONV_MODE_LEFT_ALIGN, 3); - StringAppend(sMonSummaryScreen->summary.unk3090, tempStr); + StringAppend(sMonSummaryScreen->summary.curHpStrBuf, tempStr); - sUnknown_203B144->unk02 = MACRO_8136350_0(sMonSummaryScreen->summary.unk3090); + sMonSkillsPrinterXpos->curHpStr = GetNumberRightAlign63(sMonSummaryScreen->summary.curHpStrBuf); if (sMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary && sMonSummaryScreen->isEnemyParty == TRUE) { statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK2); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk04 = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_ATK]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->atkStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF2); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk06 = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_DEF]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->defStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK2); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk08 = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPA]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->spAStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPDEF2); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk0A = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPD]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->spDStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED2); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk0C = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPE]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->speStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE]); } else { statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ATK); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk04 = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_ATK]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->atkStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_DEF); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk06 = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_DEF]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->defStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPATK); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk08 = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPA]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->spAStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPDEF); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk0A = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPD]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->spDStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD]); statValue = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPEED); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); - sUnknown_203B144->unk0C = MACRO_8136350_1(sMonSummaryScreen->summary.unk309C[PSS_STAT_SPE]); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3); + sMonSkillsPrinterXpos->speStr = GetNumberRightAlign27(sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE]); } exp = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_EXP); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk31A4, exp, STR_CONV_MODE_LEFT_ALIGN, 7); - sUnknown_203B144->unk0E = MACRO_8136350_0(sMonSummaryScreen->summary.unk31A4); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.expPointsStrBuf, exp, STR_CONV_MODE_LEFT_ALIGN, 7); + sMonSkillsPrinterXpos->expStr = GetNumberRightAlign63(sMonSummaryScreen->summary.expPointsStrBuf); level = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_LEVEL); expToNextLevel = 0; @@ -2206,123 +2226,123 @@ static void sub_8136350(void) expToNextLevel = gExperienceTables[gBaseStats[species].growthRate][level + 1] - exp; } - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk31B0, expToNextLevel, STR_CONV_MODE_LEFT_ALIGN, 7); - sUnknown_203B144->unk10 = MACRO_8136350_0(sMonSummaryScreen->summary.unk31B0); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.expToNextLevelStrBuf, expToNextLevel, STR_CONV_MODE_LEFT_ALIGN, 7); + sMonSkillsPrinterXpos->toNextLevel = GetNumberRightAlign63(sMonSummaryScreen->summary.expToNextLevelStrBuf); type = GetAbilityBySpecies(GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES), GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_ABILITY_NUM)); - StringCopy(sMonSummaryScreen->summary.unk31BC, gAbilityNames[type]); - StringCopy(sMonSummaryScreen->summary.unk31CC, gAbilityDescriptionPointers[type]); + StringCopy(sMonSummaryScreen->summary.abilityNameStrBuf, gAbilityNames[type]); + StringCopy(sMonSummaryScreen->summary.abilityDescStrBuf, gAbilityDescriptionPointers[type]); - sMonSummaryScreen->unk326C = sub_8138C5C(GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_STATUS)); - if (sMonSummaryScreen->unk326C == AILMENT_NONE) + sMonSummaryScreen->curMonStatusAilment = StatusToAilment(GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_STATUS)); + if (sMonSummaryScreen->curMonStatusAilment == AILMENT_NONE) if (CheckPartyPokerus(&sMonSummaryScreen->currentMon, 0)) - sMonSummaryScreen->unk326C = AILMENT_PKRS; + sMonSummaryScreen->curMonStatusAilment = AILMENT_PKRS; } -static void sub_81367B0(void) +static void BufferMonMoves(void) { u8 i; for (i = 0; i < 4; i++) - sub_81367E8(i); + BufferMonMoveI(i); if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) - sub_81367E8(4); + BufferMonMoveI(4); } -#define MACRO_81367E8_0(a, b) ((6 * (a)) - StringLength((b)) * 6) +#define GetRightAlignXpos_NDigits(a, b) ((6 * (a)) - StringLength((b)) * 6) -static void sub_81367E8(u8 i) +static void BufferMonMoveI(u8 i) { if (i < 4) - sMonSummaryScreen->unk325A[i] = sub_8138BEC(&sMonSummaryScreen->currentMon, i); + sMonSummaryScreen->moveIds[i] = GetMonMoveBySlotId(&sMonSummaryScreen->currentMon, i); - if (sMonSummaryScreen->unk325A[i] == 0) + if (sMonSummaryScreen->moveIds[i] == 0) { - StringCopy(sMonSummaryScreen->summary.unk3128[i], gUnknown_841620E); - StringCopy(sMonSummaryScreen->summary.unk30B8[i], gUnknown_8416210); - StringCopy(sMonSummaryScreen->summary.unk316C[i], gText_ThreeHyphens); - StringCopy(sMonSummaryScreen->summary.unk3188[i], gText_ThreeHyphens); - sUnknown_203B144->unk12[i] = 0xff; - sUnknown_203B144->unk1C[i] = 0xff; + StringCopy(sMonSummaryScreen->summary.moveNameStrBufs[i], gText_PokeSum_OneHyphen); + StringCopy(sMonSummaryScreen->summary.moveCurPpStrBufs[i], gText_PokeSum_TwoHyphens); + StringCopy(sMonSummaryScreen->summary.movePowerStrBufs[i], gText_ThreeHyphens); + StringCopy(sMonSummaryScreen->summary.moveAccuracyStrBufs[i], gText_ThreeHyphens); + sMonSkillsPrinterXpos->curPp[i] = 0xff; + sMonSkillsPrinterXpos->maxPp[i] = 0xff; return; } - sMonSummaryScreen->unk3264++; - sMonSummaryScreen->unk3250[i] = gBattleMoves[sMonSummaryScreen->unk325A[i]].type; - StringCopy(sMonSummaryScreen->summary.unk3128[i], gMoveNames[sMonSummaryScreen->unk325A[i]]); + sMonSummaryScreen->numMoves++; + sMonSummaryScreen->moveTypes[i] = gBattleMoves[sMonSummaryScreen->moveIds[i]].type; + StringCopy(sMonSummaryScreen->summary.moveNameStrBufs[i], gMoveNames[sMonSummaryScreen->moveIds[i]]); if (i >= 4 && sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk30B8[i], - gBattleMoves[sMonSummaryScreen->unk325A[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk30F0[i], - gBattleMoves[sMonSummaryScreen->unk325A[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveCurPpStrBufs[i], + gBattleMoves[sMonSummaryScreen->moveIds[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveMaxPpStrBufs[i], + gBattleMoves[sMonSummaryScreen->moveIds[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3); } else { - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk30B8[i], - sub_8138C24(&sMonSummaryScreen->currentMon, i), STR_CONV_MODE_LEFT_ALIGN, 3); - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk30F0[i], - CalculatePPWithBonus(sMonSummaryScreen->unk325A[i], GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_PP_BONUSES), i), + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveCurPpStrBufs[i], + GetMonPpByMoveSlot(&sMonSummaryScreen->currentMon, i), STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveMaxPpStrBufs[i], + CalculatePPWithBonus(sMonSummaryScreen->moveIds[i], GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_PP_BONUSES), i), STR_CONV_MODE_LEFT_ALIGN, 3); } - sUnknown_203B144->unk12[i] = MACRO_81367E8_0(2, sMonSummaryScreen->summary.unk30B8[i]); - sUnknown_203B144->unk1C[i] = MACRO_81367E8_0(2, sMonSummaryScreen->summary.unk30F0[i]); + sMonSkillsPrinterXpos->curPp[i] = GetRightAlignXpos_NDigits(2, sMonSummaryScreen->summary.moveCurPpStrBufs[i]); + sMonSkillsPrinterXpos->maxPp[i] = GetRightAlignXpos_NDigits(2, sMonSummaryScreen->summary.moveMaxPpStrBufs[i]); - if (gBattleMoves[sMonSummaryScreen->unk325A[i]].power <= 1) - StringCopy(sMonSummaryScreen->summary.unk316C[i], gText_ThreeHyphens); + if (gBattleMoves[sMonSummaryScreen->moveIds[i]].power <= 1) + StringCopy(sMonSummaryScreen->summary.movePowerStrBufs[i], gText_ThreeHyphens); else - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk316C[i], gBattleMoves[sMonSummaryScreen->unk325A[i]].power, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.movePowerStrBufs[i], gBattleMoves[sMonSummaryScreen->moveIds[i]].power, STR_CONV_MODE_RIGHT_ALIGN, 3); - if (gBattleMoves[sMonSummaryScreen->unk325A[i]].accuracy == 0) - StringCopy(sMonSummaryScreen->summary.unk3188[i], gText_ThreeHyphens); + if (gBattleMoves[sMonSummaryScreen->moveIds[i]].accuracy == 0) + StringCopy(sMonSummaryScreen->summary.moveAccuracyStrBufs[i], gText_ThreeHyphens); else - ConvertIntToDecimalStringN(sMonSummaryScreen->summary.unk3188[i], gBattleMoves[sMonSummaryScreen->unk325A[i]].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveAccuracyStrBufs[i], gBattleMoves[sMonSummaryScreen->moveIds[i]].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3); } -static u8 sub_8136AEC(void) +static u8 PokeSum_HandleCreateSprites(void) { - switch (sMonSummaryScreen->unk327C) + switch (sMonSummaryScreen->spriteCreationStep) { case 0: - sub_813ADA8(TAG_PSS_UNK_A0, TAG_PSS_UNK_A0); + CreateShinyStarObj(TAG_PSS_UNK_A0, TAG_PSS_UNK_A0); break; case 1: - sub_813ABAC(TAG_PSS_UNK_96, TAG_PSS_UNK_96); + CreatePokerusIconObj(TAG_PSS_UNK_96, TAG_PSS_UNK_96); break; case 2: - sub_813AFFC(); + PokeSum_CreateMonMarkingsSprite(); break; case 3: - sub_8139F64(TAG_PSS_UNK_64, TAG_PSS_UNK_64); + CreateMoveSelectionCursorObjs(TAG_PSS_UNK_64, TAG_PSS_UNK_64); break; case 4: - sub_813A254(TAG_PSS_UNK_6E, TAG_PSS_UNK_6E); + CreateMonStatusIconObj(TAG_PSS_UNK_6E, TAG_PSS_UNK_6E); break; case 5: - sub_813A45C(TAG_PSS_UNK_78, TAG_PSS_UNK_78); + CreateHpBarObjs(TAG_PSS_UNK_78, TAG_PSS_UNK_78); break; case 6: - sub_813A874(TAG_PSS_UNK_82, TAG_PSS_UNK_82); + CreateExpBarObjs(TAG_PSS_UNK_82, TAG_PSS_UNK_82); break; case 7: - sub_8139CB0(); + CreateBallIconObj(); break; case 8: - sub_8139DBC(); + PokeSum_CreateMonIconSprite(); break; default: - sub_813995C(); + PokeSum_CreateMonPicSprite(); return TRUE; } - sMonSummaryScreen->unk327C++; + sMonSummaryScreen->spriteCreationStep++; return FALSE; } -static void sub_8136BAC(void) +static void PokeSum_Setup_SpritesReset(void) { ResetSpriteData(); ResetPaletteFade(); @@ -2330,7 +2350,7 @@ static void sub_8136BAC(void) ScanlineEffect_Stop(); } -static void sub_8136BC4(void) +static void PokeSum_Setup_InitGpu(void) { DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000); DmaClear32(3, (void *)OAM, OAM_SIZE); @@ -2339,7 +2359,7 @@ static void sub_8136BC4(void) SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, sUnknown_8463EFC, NELEMS(sUnknown_8463EFC)); + InitBgsFromTemplates(0, sBgTempaltes, NELEMS(sBgTempaltes)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -2354,16 +2374,16 @@ static void sub_8136BC4(void) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN1_ON); - sub_813B750(sMonSummaryScreen->curPageIndex); + PokeSum_UpdateWin1ActiveFlag(sMonSummaryScreen->curPageIndex); SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_OBJ | WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3) << 8); SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3); SetGpuReg(REG_OFFSET_WIN1V, 32 << 8 | 135); SetGpuReg(REG_OFFSET_WIN1H, 2 << 8 | 240); - SetBgTilemapBuffer(1, sMonSummaryScreen->unk0); - SetBgTilemapBuffer(2, sMonSummaryScreen->unk1000); - SetBgTilemapBuffer(3, sMonSummaryScreen->unk2000); + SetBgTilemapBuffer(1, sMonSummaryScreen->bg1TilemapBuffer); + SetBgTilemapBuffer(2, sMonSummaryScreen->bg2TilemapBuffer); + SetBgTilemapBuffer(3, sMonSummaryScreen->bg3TilemapBuffer); ShowBg(0); ShowBg(1); @@ -2371,87 +2391,87 @@ static void sub_8136BC4(void) ShowBg(3); } -static void sub_8136D54(void) +static void PokeSum_FinishSetup(void) { if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE || sMonSummaryScreen->mode == PSS_MODE_FORGET_MOVE) - sMonSummaryScreen->unk3018 = CreateTask(sub_81393D4, 0); + sMonSummaryScreen->inputHandlerTaskId = CreateTask(Task_InputHandler_SelectOrForgetMove, 0); else - sMonSummaryScreen->unk3018 = CreateTask(sub_8134840, 0); + sMonSummaryScreen->inputHandlerTaskId = CreateTask(Task_InputHandler_Info, 0); - SetMainCallback2(sub_8137EE8); + SetMainCallback2(CB2_RunPokemonSummaryScreen); } -static void sub_8136DA4(const u8 * str) +static void PokeSum_PrintPageName(const u8 * str) { - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[0], 0); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[0], 2, 4, 1, sUnknown_8463FA4[1], 0, str); - PutWindowTilemap(sMonSummaryScreen->unk3000[0]); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME], 0); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME], 2, 4, 1, sLevelNickTextColors[1], 0, str); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME]); } -static void sub_8136DF0(const u8 * str) +static void PokeSum_PrintControlsString(const u8 * str) { u8 v0; s32 width; u8 r1; - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[1], 0); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS], 0); width = GetStringWidth(0, str, 0); - r1 = sMonSummaryScreen->unk3000[1]; - AddTextPrinterParameterized3(r1, 0, 0x54 - width, 0, sUnknown_8463FA4[1], 0, str); - PutWindowTilemap(sMonSummaryScreen->unk3000[1]); + r1 = sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS]; + AddTextPrinterParameterized3(r1, 0, 0x54 - width, 0, sLevelNickTextColors[1], 0, str); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS]); } -static void sub_8136E50(const u8 * msg) +static void PrintMonLevelNickOnWindow2(const u8 * str) { - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[2], 0); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 0); if (!sMonSummaryScreen->isEgg) { if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[2], 2, 4, 2, sUnknown_8463FA4[1], 0xff, sMonSummaryScreen->summary.unk3088); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2, 4, 2, sLevelNickTextColors[1], TEXT_SPEED_FF, sMonSummaryScreen->summary.levelStrBuf); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[2], 2, 40, 2, sUnknown_8463FA4[1], 0xff, sMonSummaryScreen->summary.unk3034); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2, 40, 2, sLevelNickTextColors[1], TEXT_SPEED_FF, sMonSummaryScreen->summary.nicknameStrBuf); if (GetMonGender(&sMonSummaryScreen->currentMon) == MON_FEMALE) - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[2], 2, 105, 2, sUnknown_8463FA4[3], 0, sMonSummaryScreen->summary.unk3084); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2, 105, 2, sLevelNickTextColors[3], 0, sMonSummaryScreen->summary.genderSymbolStrBuf); else - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[2], 2, 105, 2, sUnknown_8463FA4[2], 0, sMonSummaryScreen->summary.unk3084); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2, 105, 2, sLevelNickTextColors[2], 0, sMonSummaryScreen->summary.genderSymbolStrBuf); } - PutWindowTilemap(sMonSummaryScreen->unk3000[2]); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK]); } -static void sub_8136F4C(void) +static void PokeSum_PrintRightPaneText(void) { - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[3], 0); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 0); switch (sMonSummaryScreen->curPageIndex) { case PSS_PAGE_INFO: - sub_8136FB0(); + PrintInfoPage(); break; case PSS_PAGE_SKILLS: - sub_81370EC(); + PrintSkillsPage(); break; case PSS_PAGE_MOVES: case PSS_PAGE_MOVES_INFO: - sub_8137270(); + PrintMovesPage(); break; } - PutWindowTilemap(sMonSummaryScreen->unk3000[3]); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE]); } -static void sub_8136FB0(void) +static void PrintInfoPage(void) { - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 47, 19, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk3028); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 47, 19, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.speciesNameStrBuf); if (!sMonSummaryScreen->isEgg) { - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 47 + sUnknown_203B144->unk00, 5, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk3064); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 47, 49, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk3040); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 47, 64, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk306C); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 47, 79, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk3074); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 47 + sMonSkillsPrinterXpos->unk00, 5, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.dexNumStrBuf); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 47, 49, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.otNameStrBuf); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 47, 64, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk306C); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 47, 79, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.itemNameStrBuf); } else { @@ -2472,122 +2492,122 @@ static void sub_8136FB0(void) if (sMonSummaryScreen->isBadEgg) hatchMsgIndex = 0; - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 7, 45, sUnknown_8463FA4[0], TEXT_SPEED_FF, sUnknown_8463EC4[hatchMsgIndex]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 7, 45, sLevelNickTextColors[0], TEXT_SPEED_FF, sEggHatchTimeTexts[hatchMsgIndex]); } } -static void sub_81370EC(void) +static void PrintSkillsPage(void) { - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 14 + sUnknown_203B144->unk02, 4, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk3090); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 50 + sUnknown_203B144->unk04, 22, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk309C[PSS_STAT_ATK]); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 50 + sUnknown_203B144->unk06, 35, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk309C[PSS_STAT_DEF]); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 50 + sUnknown_203B144->unk08, 48, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk309C[PSS_STAT_SPA]); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 50 + sUnknown_203B144->unk0A, 61, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk309C[PSS_STAT_SPD]); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 50 + sUnknown_203B144->unk0C, 74, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk309C[PSS_STAT_SPE]); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 15 + sUnknown_203B144->unk0E, 87, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk31A4); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 15 + sUnknown_203B144->unk10, 100, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk31B0); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 14 + sMonSkillsPrinterXpos->curHpStr, 4, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.curHpStrBuf); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 50 + sMonSkillsPrinterXpos->atkStr, 22, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_ATK]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 50 + sMonSkillsPrinterXpos->defStr, 35, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_DEF]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 50 + sMonSkillsPrinterXpos->spAStr, 48, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPA]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 50 + sMonSkillsPrinterXpos->spDStr, 61, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPD]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 50 + sMonSkillsPrinterXpos->speStr, 74, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.statValueStrBufs[PSS_STAT_SPE]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 15 + sMonSkillsPrinterXpos->expStr, 87, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.expPointsStrBuf); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 15 + sMonSkillsPrinterXpos->toNextLevel, 100, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.expToNextLevelStrBuf); } -#define MACRO_8137270(x) ((x) * 28 + 5) +#define GetMoveNamePrinterYpos(x) ((x) * 28 + 5) +#define GetMovePpPinterYpos(x) ((x) * 28 + 16) -static void sub_8137270(void) +static void PrintMovesPage(void) { u8 i; for (i = 0; i < 4; i++) - sub_81372E4(i); + PokeSum_PrintMoveName(i); if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) { if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) - sub_81372E4(4); + PokeSum_PrintMoveName(4); else - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, - 3, MACRO_8137270(4), - sUnknown_8463EF0[0], TEXT_SPEED_FF, gFameCheckerText_Cancel); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, + 3, GetMoveNamePrinterYpos(4), + sPrintMoveTextColors[0], TEXT_SPEED_FF, gFameCheckerText_Cancel); } } -#define MACRO_81372E4(x) ((x) * 28 + 16) - -static void sub_81372E4(u8 i) +static void PokeSum_PrintMoveName(u8 i) { - u8 v0 = 0; - u8 curPP = sub_8138C24(&sMonSummaryScreen->currentMon, i); - u16 move = sMonSummaryScreen->unk325A[i]; + u8 colorIdx = 0; + u8 curPP = GetMonPpByMoveSlot(&sMonSummaryScreen->currentMon, i); + u16 move = sMonSummaryScreen->moveIds[i]; u8 ppBonuses = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_PP_BONUSES); u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i); if (i == 4) curPP = maxPP; - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 3, MACRO_8137270(i), sUnknown_8463EF0[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk3128[i]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 3, GetMoveNamePrinterYpos(i), sPrintMoveTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.moveNameStrBufs[i]); - if (sMonSummaryScreen->unk325A[i] == 0 || (curPP == maxPP)) - v0 = 0; + if (sMonSummaryScreen->moveIds[i] == 0 || (curPP == maxPP)) + colorIdx = 0; else if (curPP == 0) - v0 = 3; + colorIdx = 3; else if (maxPP == 3) { if (curPP == 2) - v0 = 2; + colorIdx = 2; else if (curPP == 1) - v0 = 1; + colorIdx = 1; } else if (maxPP == 2) { if (curPP == 1) - v0 = 1; + colorIdx = 1; } else { if (curPP <= (maxPP / 4)) - v0 = 2; + colorIdx = 2; else if (curPP <= (maxPP / 2)) - v0 = 1; + colorIdx = 1; } - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 36, MACRO_81372E4(i), sUnknown_8463EF0[v0], TEXT_SPEED_FF, gUnknown_8416238); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 46 + sUnknown_203B144->unk12[i], MACRO_81372E4(i), sUnknown_8463EF0[v0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk30B8[i]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 36, GetMovePpPinterYpos(i), sPrintMoveTextColors[colorIdx], TEXT_SPEED_FF, + gText_PokeSum_PP); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 46 + sMonSkillsPrinterXpos->curPp[i], GetMovePpPinterYpos(i), sPrintMoveTextColors[colorIdx], TEXT_SPEED_FF, sMonSummaryScreen->summary.moveCurPpStrBufs[i]); - if (sMonSummaryScreen->unk325A[i] != MOVE_NONE) + if (sMonSummaryScreen->moveIds[i] != MOVE_NONE) { - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 58, MACRO_81372E4(i), sUnknown_8463EF0[v0], TEXT_SPEED_FF, gText_Slash); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[3], 2, 64 + sUnknown_203B144->unk1C[i], MACRO_81372E4(i), sUnknown_8463EF0[v0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk30F0[i]); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 58, GetMovePpPinterYpos(i), sPrintMoveTextColors[colorIdx], TEXT_SPEED_FF, gText_Slash); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2, 64 + sMonSkillsPrinterXpos->maxPp[i], GetMovePpPinterYpos(i), sPrintMoveTextColors[colorIdx], TEXT_SPEED_FF, sMonSummaryScreen->summary.moveMaxPpStrBufs[i]); } } -static void sub_81374E8(void) +static void PokeSum_PrintBottomPaneText(void) { - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[4], 0); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 0); switch (sMonSummaryScreen->curPageIndex) { case PSS_PAGE_INFO: - sub_8137554(); + PokeSum_PrintTrainerMemo(); break; case PSS_PAGE_SKILLS: - sub_8137A90(); + PokeSum_PrintExpPoints_NextLv(); break; case PSS_PAGE_MOVES_INFO: - sub_8137AF8(); + PokeSum_PrintSelectedMoveStats(); break; case PSS_PAGE_MOVES: break; } - PutWindowTilemap(sMonSummaryScreen->unk3000[4]); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO]); } -static void sub_8137554(void) +static void PokeSum_PrintTrainerMemo(void) { if (!sMonSummaryScreen->isEgg) - sub_8137944(); + PokeSum_PrintTrainerMemo_Mon(); else - sub_8137970(); + PokeSum_PrintTrainerMemo_Egg(); } -static void sub_8137578(void) +static void PokeSum_PrintTrainerMemo_Mon_HeldByOT(void) { u8 nature; u8 level; @@ -2609,57 +2629,59 @@ static void sub_8137578(void) metLocation = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MET_LOCATION); - if (sub_813B838(metLocation) == TRUE) + if (MapSecIsInKantoOrSevii(metLocation) == TRUE) GetMapNameGeneric_(mapNameStr, metLocation); else { - if (sMonSummaryScreen->isEnemyParty == TRUE || sub_8138B4C() == TRUE) - StringCopy(mapNameStr, gUnknown_8419C13); + if (sMonSummaryScreen->isEnemyParty == TRUE || IsMultiBattlePartner() == TRUE) + StringCopy(mapNameStr, gText_Somewhere); else - StringCopy(mapNameStr, gUnknown_8419C0B); + StringCopy(mapNameStr, gText_PokeSum_ATrade); } DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, mapNameStr); - if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MET_LEVEL) == 0) + // These pairs of strings are bytewise identical to each other in English, + // but Japanese uses different grammar for Bold and Gentle natures. + if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MET_LEVEL) == 0) // Hatched { - if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_EVENT_LEGAL) == 1) + if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_EVENT_LEGAL) == 1) // Fateful encounter { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_841996D); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterHatched_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_841992F); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterHatched); } else { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84198D5); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_Hatched_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84198B4); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_Hatched); } } else { if (metLocation == METLOC_FATEFUL_ENCOUNTER) { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84197ED); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterMet_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84197B8); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterMet); } else { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_8419841); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_Met_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_8419822); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_Met); } } - AddTextPrinterParameterized4(sMonSummaryScreen->unk3000[4], 2, 0, 3, 0, 0, sUnknown_8463FA4[0], TEXT_SPEED_FF, natureMetOrHatchedAtLevelStr); + AddTextPrinterParameterized4(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 0, 3, 0, 0, sLevelNickTextColors[0], TEXT_SPEED_FF, natureMetOrHatchedAtLevelStr); } -static void sub_8137724(void) +static void PokeSum_PrintTrainerMemo_Mon_NotHeldByOT(void) { u8 nature; u8 level; @@ -2682,87 +2704,89 @@ static void sub_8137724(void) metLocation = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MET_LOCATION); - if (!sub_813B838(metLocation) || !sub_813B7F8()) + if (!MapSecIsInKantoOrSevii(metLocation) || !CurrentMonIsFromGBA()) { - if (sub_8138B4C() == TRUE) + if (IsMultiBattlePartner() == TRUE) { - sub_8137578(); + PokeSum_PrintTrainerMemo_Mon_HeldByOT(); return; } if (metLocation == METLOC_FATEFUL_ENCOUNTER) { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84197ED); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterMet_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84197B8); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterMet); } else { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_841979D); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_MetInATrade_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_8419782); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_MetInATrade); } - AddTextPrinterParameterized4(sMonSummaryScreen->unk3000[4], 2, 0, 3, 0, 0, sUnknown_8463FA4[0], TEXT_SPEED_FF, natureMetOrHatchedAtLevelStr); + AddTextPrinterParameterized4(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 0, 3, 0, 0, sLevelNickTextColors[0], TEXT_SPEED_FF, natureMetOrHatchedAtLevelStr); return; } - if (sub_813B838(metLocation) == TRUE) + if (MapSecIsInKantoOrSevii(metLocation) == TRUE) GetMapNameGeneric_(mapNameStr, metLocation); else - StringCopy(mapNameStr, gUnknown_8419C0B); + StringCopy(mapNameStr, gText_PokeSum_ATrade); DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, mapNameStr); - if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MET_LEVEL) == 0) + // These pairs of strings are bytewise identical to each other in English, + // but Japanese uses different grammar for Bold and Gentle natures. + if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MET_LEVEL) == 0) // hatched from an EGG { - if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_EVENT_LEGAL) == 1) + if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_EVENT_LEGAL) == 1) // Fateful encounter { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84199F4); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_ApparentlyFatefulEncounterHatched_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84199AB); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_ApparentlyFatefulEncounterHatched); } else { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_841988A); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_ApparentlyMet_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_8419860); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_ApparentlyMet); } } else { if (metLocation == METLOC_FATEFUL_ENCOUNTER) { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84197ED); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterMet_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_84197B8); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_FatefulEncounterMet); } else { - if (sub_813B7E0(nature)) - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_841988A); + if (PokeSum_IsMonBoldOrGentle(nature)) + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_ApparentlyMet_BoldGentleGrammar); else - DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gUnknown_8419860); + DynamicPlaceholderTextUtil_ExpandPlaceholders(natureMetOrHatchedAtLevelStr, gText_PokeSum_ApparentlyMet); } } - AddTextPrinterParameterized4(sMonSummaryScreen->unk3000[4], 2, 0, 3, 0, 0, sUnknown_8463FA4[0], TEXT_SPEED_FF, natureMetOrHatchedAtLevelStr); + AddTextPrinterParameterized4(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 0, 3, 0, 0, sLevelNickTextColors[0], TEXT_SPEED_FF, natureMetOrHatchedAtLevelStr); } -static void sub_8137944(void) +static void PokeSum_PrintTrainerMemo_Mon(void) { - if (sub_813847C(&sMonSummaryScreen->currentMon) == TRUE) - sub_8137578(); + if (PokeSum_BufferOtName_IsEqualToCurrentOwner(&sMonSummaryScreen->currentMon) == TRUE) + PokeSum_PrintTrainerMemo_Mon_HeldByOT(); else - sub_8137724(); + PokeSum_PrintTrainerMemo_Mon_NotHeldByOT(); } -static void sub_8137970(void) +static void PokeSum_PrintTrainerMemo_Egg(void) { u8 metLocation; u8 version; @@ -2784,7 +2808,7 @@ static void sub_8137970(void) chosenStrIndex = 2; if (chosenStrIndex == 0 || chosenStrIndex == 2) - if (sub_813847C(&sMonSummaryScreen->currentMon) == FALSE) + if (PokeSum_BufferOtName_IsEqualToCurrentOwner(&sMonSummaryScreen->currentMon) == FALSE) chosenStrIndex++; } } @@ -2804,7 +2828,7 @@ static void sub_8137970(void) else if (metLocation == METLOC_SPECIAL_EGG) chosenStrIndex = 2; - if (sub_813847C(&sMonSummaryScreen->currentMon) == FALSE) + if (PokeSum_BufferOtName_IsEqualToCurrentOwner(&sMonSummaryScreen->currentMon) == FALSE) chosenStrIndex++; } } @@ -2812,153 +2836,153 @@ static void sub_8137970(void) if (sMonSummaryScreen->isBadEgg) chosenStrIndex = 0; - AddTextPrinterParameterized4(sMonSummaryScreen->unk3000[4], 2, 0, 3, 0, 0, sUnknown_8463FA4[0], TEXT_SPEED_FF, sUnknown_8463ED4[chosenStrIndex]); + AddTextPrinterParameterized4(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 0, 3, 0, 0, sLevelNickTextColors[0], TEXT_SPEED_FF, sEggOriginTexts[chosenStrIndex]); } -static void sub_8137A90(void) +static void PokeSum_PrintExpPoints_NextLv(void) { - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[4], 2, + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 26, 7, - sUnknown_8463FA4[0], TEXT_SPEED_FF, - gUnknown_8419C4D); + sLevelNickTextColors[0], TEXT_SPEED_FF, + gText_PokeSum_ExpPoints); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[4], 2, + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 26, 20, - sUnknown_8463FA4[0], TEXT_SPEED_FF, - gUnknown_8419C59); + sLevelNickTextColors[0], TEXT_SPEED_FF, + gText_PokeSum_NextLv); } -static void sub_8137AF8(void) +static void PokeSum_PrintSelectedMoveStats(void) { - if (sUnknown_203B16D < 5) + if (sMoveSelectionCursorPos < 5) { - if (sMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE && sUnknown_203B16D == 4) + if (sMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE && sMoveSelectionCursorPos == 4) return; - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[4], 2, + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 57, 1, - sUnknown_8463FA4[0], TEXT_SPEED_FF, - sMonSummaryScreen->summary.unk316C[sUnknown_203B16D]); + sLevelNickTextColors[0], TEXT_SPEED_FF, + sMonSummaryScreen->summary.movePowerStrBufs[sMoveSelectionCursorPos]); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[4], 2, + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 57, 15, - sUnknown_8463FA4[0], TEXT_SPEED_FF, - sMonSummaryScreen->summary.unk3188[sUnknown_203B16D]); + sLevelNickTextColors[0], TEXT_SPEED_FF, + sMonSummaryScreen->summary.moveAccuracyStrBufs[sMoveSelectionCursorPos]); - AddTextPrinterParameterized4(sMonSummaryScreen->unk3000[4], 2, + AddTextPrinterParameterized4(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 7, 42, 0, 0, - sUnknown_8463FA4[0], TEXT_SPEED_FF, - gMoveDescriptionPointers[sMonSummaryScreen->unk325A[sUnknown_203B16D] - 1]); + sLevelNickTextColors[0], TEXT_SPEED_FF, + gMoveDescriptionPointers[sMonSummaryScreen->moveIds[sMoveSelectionCursorPos] - 1]); } } -static void sub_8137BD0(void) +static void PokeSum_PrintAbilityDataOrMoveTypes(void) { switch (sMonSummaryScreen->curPageIndex) { case PSS_PAGE_INFO: break; case PSS_PAGE_SKILLS: - sub_8137C18(); + PokeSum_PrintAbilityNameAndDesc(); break; case PSS_PAGE_MOVES: case PSS_PAGE_MOVES_INFO: - sub_8137C90(); + PokeSum_DrawMoveTypeIcons(); break; } - PutWindowTilemap(sMonSummaryScreen->unk3000[5]); + PutWindowTilemap(sMonSummaryScreen->windowIds[5]); } -static void sub_8137C18(void) +static void PokeSum_PrintAbilityNameAndDesc(void) { - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[5], 0); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[5], 0); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[5], 2, - 66, 1, sUnknown_8463FA4[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.unk31BC); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[5], 2, + 66, 1, sLevelNickTextColors[0], TEXT_SPEED_FF, sMonSummaryScreen->summary.abilityNameStrBuf); - AddTextPrinterParameterized3(sMonSummaryScreen->unk3000[5], 2, - 2, 15, sUnknown_8463FA4[0], TEXT_SPEED_FF, - sMonSummaryScreen->summary.unk31CC); + AddTextPrinterParameterized3(sMonSummaryScreen->windowIds[5], 2, + 2, 15, sLevelNickTextColors[0], TEXT_SPEED_FF, + sMonSummaryScreen->summary.abilityDescStrBuf); } -static void sub_8137C90(void) +static void PokeSum_DrawMoveTypeIcons(void) { u8 i; - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[5], 0); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[5], 0); for (i = 0; i < 4; i++) { - if (sMonSummaryScreen->unk325A[i] == MOVE_NONE) + if (sMonSummaryScreen->moveIds[i] == MOVE_NONE) continue; - BlitMoveInfoIcon(sMonSummaryScreen->unk3000[5], sMonSummaryScreen->unk3250[i] + 1, 3, MACRO_8137270(i)); + BlitMoveInfoIcon(sMonSummaryScreen->windowIds[5], sMonSummaryScreen->moveTypes[i] + 1, 3, GetMoveNamePrinterYpos(i)); } if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) - BlitMoveInfoIcon(sMonSummaryScreen->unk3000[5], sMonSummaryScreen->unk3250[4] + 1, 3, MACRO_8137270(4)); + BlitMoveInfoIcon(sMonSummaryScreen->windowIds[5], sMonSummaryScreen->moveTypes[4] + 1, 3, GetMoveNamePrinterYpos(4)); } -static void sub_8137D28(u8 curPageIndex) +static void PokeSum_PrintPageHeaderText(u8 curPageIndex) { switch (curPageIndex) { case PSS_PAGE_INFO: - sub_8136DA4(gUnknown_8419C1D); + PokeSum_PrintPageName(gText_PokeSum_PageName_PokemonInfo); if (!sMonSummaryScreen->isEgg) - sub_8136DF0(gUnknown_8419C62); + PokeSum_PrintControlsString(gText_PokeSum_Controls_PageCancel); else - sub_8136DF0(gUnknown_8419C72); + PokeSum_PrintControlsString(gText_PokeSum_Controls_Cancel); - sub_8136E50(gUnknown_8419C45); + PrintMonLevelNickOnWindow2(gText_PokeSum_NoData); break; case PSS_PAGE_SKILLS: - sub_8136DA4(gUnknown_8419C2A); - sub_8136DF0(gUnknown_8419C7B); - sub_8136E50(gUnknown_8419C45); + PokeSum_PrintPageName(gText_PokeSum_PageName_PokemonSkills); + PokeSum_PrintControlsString(gText_PokeSum_Controls_Page); + PrintMonLevelNickOnWindow2(gText_PokeSum_NoData); break; case PSS_PAGE_MOVES: - sub_8136DA4(gUnknown_8419C39); - sub_8136DF0(gUnknown_8419C82); - sub_8136E50(gUnknown_8419C45); + PokeSum_PrintPageName(gText_PokeSum_PageName_KnownMoves); + PokeSum_PrintControlsString(gText_PokeSum_Controls_PageDetail); + PrintMonLevelNickOnWindow2(gText_PokeSum_NoData); break; case PSS_PAGE_MOVES_INFO: - sub_8136DA4(gUnknown_8419C39); + PokeSum_PrintPageName(gText_PokeSum_PageName_KnownMoves); if (!gMain.inBattle) - sub_8136DF0(gUnknown_8419C92); + PokeSum_PrintControlsString(gText_PokeSum_Controls_PickSwitch); else - sub_8136DF0(gUnknown_8419CA2); - sub_8136E50(gUnknown_8419C45); + PokeSum_PrintControlsString(gText_PokeSum_Controls_Pick); + PrintMonLevelNickOnWindow2(gText_PokeSum_NoData); break; case PSS_PAGE_MOVE_DELETER: - sub_8136DA4(gUnknown_8419C39); - sub_8136DF0(gUnknown_8419CA9); - sub_8136E50(gUnknown_8419C45); + PokeSum_PrintPageName(gText_PokeSum_PageName_KnownMoves); + PokeSum_PrintControlsString(gText_PokeSum_Controls_PickDelete); + PrintMonLevelNickOnWindow2(gText_PokeSum_NoData); break; default: break; } } -static void sub_8137E28(void) +static void CommitStaticWindowTilemaps(void) { - PutWindowTilemap(sMonSummaryScreen->unk3000[0]); - PutWindowTilemap(sMonSummaryScreen->unk3000[1]); - PutWindowTilemap(sMonSummaryScreen->unk3000[2]); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME]); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS]); + PutWindowTilemap(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK]); } -static void sub_8137E64(u8 taskId) +static void Task_DestroyResourcesOnExit(u8 taskId) { - sub_813AF90(); + PokeSum_DestroySprites(); FreeAllSpritePalettes(); if (IsCryPlayingOrClearCrySongs() == TRUE) StopCryAndClearCrySongs(); - sub_8138414(sMonSummaryScreen->curPageIndex); + PokeSum_RemoveWindows(sMonSummaryScreen->curPageIndex); FreeAllWindowBuffers(); DestroyTask(taskId); SetMainCallback2(sMonSummaryScreen->savedCallback); @@ -2966,10 +2990,10 @@ static void sub_8137E64(u8 taskId) sLastViewedMonIndex = GetLastViewedMonIndex(); FREE_AND_SET_NULL_IF_SET(sMonSummaryScreen); - FREE_AND_SET_NULL_IF_SET(sUnknown_203B144); + FREE_AND_SET_NULL_IF_SET(sMonSkillsPrinterXpos); } -static void sub_8137EE8(void) +static void CB2_RunPokemonSummaryScreen(void) { RunTasks(); AnimateSprites(); @@ -2977,229 +3001,229 @@ static void sub_8137EE8(void) UpdatePaletteFade(); } -static void sub_8137F00(void) +static void PokeSum_FlipPages_SlideHpExpBarsOut(void) { u8 i; for (i = 0; i < 11; i++) { - if (sUnknown_203B160->unk2C[i] < 240) + if (sExpBarObjs->xpos[i] < 240) { - sUnknown_203B160->unk2C[i] += 60; - sUnknown_203B160->sprites[i]->pos1.x = sUnknown_203B160->unk2C[i] + 60; + sExpBarObjs->xpos[i] += 60; + sExpBarObjs->sprites[i]->pos1.x = sExpBarObjs->xpos[i] + 60; } if (i >= 9) continue; - if (sUnknown_203B15C->unk28[i] < 240) + if (sHpBarObjs->xpos[i] < 240) { - sUnknown_203B15C->unk28[i] += 60; - sUnknown_203B15C->sprites[i]->pos1.x = sUnknown_203B15C->unk28[i] + 60; + sHpBarObjs->xpos[i] += 60; + sHpBarObjs->sprites[i]->pos1.x = sHpBarObjs->xpos[i] + 60; } } } -static void sub_8137F68(void) +static void PokeSum_FlipPages_SlideHpExpBarsIn(void) { u8 i; for (i = 0; i < 11; i++) { - if (sUnknown_203B160->unk2C[i] > 156 + (8 * i)) + if (sExpBarObjs->xpos[i] > 156 + (8 * i)) { - sUnknown_203B160->unk2C[i] -= 60; + sExpBarObjs->xpos[i] -= 60; - if (sUnknown_203B160->unk2C[i] < 156 + (8 * i)) - sUnknown_203B160->unk2C[i] = 156 + (8 * i); + if (sExpBarObjs->xpos[i] < 156 + (8 * i)) + sExpBarObjs->xpos[i] = 156 + (8 * i); - sUnknown_203B160->sprites[i]->pos1.x = sUnknown_203B160->unk2C[i]; + sExpBarObjs->sprites[i]->pos1.x = sExpBarObjs->xpos[i]; } if (i >= 9) continue; - if (sUnknown_203B15C->unk28[i] > 172 + (8 * i)) + if (sHpBarObjs->xpos[i] > 172 + (8 * i)) { - sUnknown_203B15C->unk28[i] -= 60; + sHpBarObjs->xpos[i] -= 60; - if (sUnknown_203B15C->unk28[i] < 172 + (8 * i)) - sUnknown_203B15C->unk28[i] = 172 + (8 * i); + if (sHpBarObjs->xpos[i] < 172 + (8 * i)) + sHpBarObjs->xpos[i] = 172 + (8 * i); - sUnknown_203B15C->sprites[i]->pos1.x = sUnknown_203B15C->unk28[i]; + sHpBarObjs->sprites[i]->pos1.x = sHpBarObjs->xpos[i]; } } } -static void sub_8137FF4(void) +static void PokeSum_FlipPages_SlideLayerLeft(void) { - if (sMonSummaryScreen->unk324C < 240) + if (sMonSummaryScreen->flipPagesBgHofs < 240) { - sMonSummaryScreen->unk324C += 60; - if (sMonSummaryScreen->unk324C > 240) - sMonSummaryScreen->unk324C = 240; + sMonSummaryScreen->flipPagesBgHofs += 60; + if (sMonSummaryScreen->flipPagesBgHofs > 240) + sMonSummaryScreen->flipPagesBgHofs = 240; - if (sMonSummaryScreen->unk3238 == 0) - SetGpuReg(REG_OFFSET_BG2HOFS, -sMonSummaryScreen->unk324C); + if (sMonSummaryScreen->whichBgLayerToTranslate == 0) + SetGpuReg(REG_OFFSET_BG2HOFS, -sMonSummaryScreen->flipPagesBgHofs); else - SetGpuReg(REG_OFFSET_BG1HOFS, -sMonSummaryScreen->unk324C); + SetGpuReg(REG_OFFSET_BG1HOFS, -sMonSummaryScreen->flipPagesBgHofs); } } -static void sub_813805C(void) +static void PokeSum_FlipPages_SlideLayeRight(void) { - if (sMonSummaryScreen->unk324C >= 60) + if (sMonSummaryScreen->flipPagesBgHofs >= 60) { - sMonSummaryScreen->unk324C -= 60; - if (sMonSummaryScreen->unk324C < 0) - sMonSummaryScreen->unk324C = 0; + sMonSummaryScreen->flipPagesBgHofs -= 60; + if (sMonSummaryScreen->flipPagesBgHofs < 0) + sMonSummaryScreen->flipPagesBgHofs = 0; - if (sMonSummaryScreen->unk3238 == 0) - SetGpuReg(REG_OFFSET_BG1HOFS, -sMonSummaryScreen->unk324C); + if (sMonSummaryScreen->whichBgLayerToTranslate == 0) + SetGpuReg(REG_OFFSET_BG1HOFS, -sMonSummaryScreen->flipPagesBgHofs); else - SetGpuReg(REG_OFFSET_BG2HOFS, -sMonSummaryScreen->unk324C); + SetGpuReg(REG_OFFSET_BG2HOFS, -sMonSummaryScreen->flipPagesBgHofs); if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) - SetGpuReg(REG_OFFSET_BG0HOFS, -sMonSummaryScreen->unk324C); + SetGpuReg(REG_OFFSET_BG0HOFS, -sMonSummaryScreen->flipPagesBgHofs); } } -static void sub_81380F0(void) +static void PokeSum_FlipPages_HandleBgHofs(void) { - if (sMonSummaryScreen->unk3224 == 1) + if (sMonSummaryScreen->pageFlipDirection == 1) // Right { if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) - sub_8137FF4(); + PokeSum_FlipPages_SlideLayerLeft(); else - sub_813805C(); + PokeSum_FlipPages_SlideLayeRight(); } else { if (sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES) - sub_813805C(); + PokeSum_FlipPages_SlideLayeRight(); else - sub_8137FF4(); + PokeSum_FlipPages_SlideLayerLeft(); } } -static void sub_8138134(void) +static void PokeSum_FlipPages_HandleHpExpBarSprites(void) { if (sMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS - && sMonSummaryScreen->unk3224 == 0) - sub_8137F68(); + && sMonSummaryScreen->pageFlipDirection == 0) + PokeSum_FlipPages_SlideHpExpBarsIn(); if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES - && sMonSummaryScreen->unk3224 == 1) - sub_8137F00(); + && sMonSummaryScreen->pageFlipDirection == 1) + PokeSum_FlipPages_SlideHpExpBarsOut(); } -static void sub_813817C(void) +static void VBlankCB_PokemonSummaryScreen(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - if (sMonSummaryScreen->unk3244 == FALSE) + if (sMonSummaryScreen->flippingPages == FALSE) return; - sub_81380F0(); - sub_8138134(); + PokeSum_FlipPages_HandleBgHofs(); + PokeSum_FlipPages_HandleHpExpBarSprites(); } -static void sub_81381AC(void) +static void PokeSum_Setup_ResetCallbacks(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); } -static void sub_81381C0(void) +static void PokeSum_Setup_SetVBlankCallback(void) { - SetVBlankCallback(sub_813817C); + SetVBlankCallback(VBlankCB_PokemonSummaryScreen); } -static void sub_81381D0(void) +static void PokeSum_CreateWindows(void) { u8 i; - InitWindows(sUnknown_8463F9C); + InitWindows(sWindowTemplates_Dummy); for (i = 0; i < 3; i++) - sMonSummaryScreen->unk3000[i] = AddWindow(&sUnknown_8463F0C[i]); + sMonSummaryScreen->windowIds[i] = AddWindow(&sWindowTemplates_Permanent_Bg1[i]); for (i = 0; i < 4; i++) switch (sMonSummaryScreen->curPageIndex) { case PSS_PAGE_INFO: - sMonSummaryScreen->unk3000[i + 3] = AddWindow(&sUnknown_8463F3C[i]); + sMonSummaryScreen->windowIds[i + 3] = AddWindow(&sWindowTemplates_Info[i]); break; case PSS_PAGE_SKILLS: - sMonSummaryScreen->unk3000[i + 3] = AddWindow(&sUnknown_8463F5C[i]); + sMonSummaryScreen->windowIds[i + 3] = AddWindow(&sWindowTemplates_Skills[i]); break; case PSS_PAGE_MOVES: case PSS_PAGE_MOVES_INFO: - sMonSummaryScreen->unk3000[i + 3] = AddWindow(&sUnknown_8463F7C[i]); + sMonSummaryScreen->windowIds[i + 3] = AddWindow(&sWindowTemplates_Moves[i]); break; default: break; } } -static void sub_8138280(u8 curPageIndex) +static void PokeSum_AddWindows(u8 curPageIndex) { u8 i; u32 bgPriority1 = GetGpuReg(REG_OFFSET_BG1CNT) & 3; u32 bgPriority2 = GetGpuReg(REG_OFFSET_BG2CNT) & 3; for (i = 0; i < 7; i++) - sMonSummaryScreen->unk3000[i] = 0xff; + sMonSummaryScreen->windowIds[i] = 0xff; - if ((sMonSummaryScreen->unk3224 == 1 && sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) - || (sMonSummaryScreen->unk3224 == 0 && sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES)) + if ((sMonSummaryScreen->pageFlipDirection == 1 && sMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) + || (sMonSummaryScreen->pageFlipDirection == 0 && sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES)) { if (bgPriority2 > bgPriority1) for (i = 0; i < 3; i++) - sMonSummaryScreen->unk3000[i] = AddWindow(&sUnknown_8463F24[i]); + sMonSummaryScreen->windowIds[i] = AddWindow(&sWindowTemplates_Permanent_Bg2[i]); else for (i = 0; i < 3; i++) - sMonSummaryScreen->unk3000[i] = AddWindow(&sUnknown_8463F0C[i]); + sMonSummaryScreen->windowIds[i] = AddWindow(&sWindowTemplates_Permanent_Bg1[i]); } else { if (bgPriority2 > bgPriority1) for (i = 0; i < 3; i++) - sMonSummaryScreen->unk3000[i] = AddWindow(&sUnknown_8463F0C[i]); + sMonSummaryScreen->windowIds[i] = AddWindow(&sWindowTemplates_Permanent_Bg1[i]); else for (i = 0; i < 3; i++) - sMonSummaryScreen->unk3000[i] = AddWindow(&sUnknown_8463F24[i]); + sMonSummaryScreen->windowIds[i] = AddWindow(&sWindowTemplates_Permanent_Bg2[i]); } for (i = 0; i < 4; i++) switch (curPageIndex) { case PSS_PAGE_INFO: - sMonSummaryScreen->unk3000[i + 3] = AddWindow(&sUnknown_8463F3C[i]); + sMonSummaryScreen->windowIds[i + 3] = AddWindow(&sWindowTemplates_Info[i]); break; case PSS_PAGE_SKILLS: default: - sMonSummaryScreen->unk3000[i + 3] = AddWindow(&sUnknown_8463F5C[i]); + sMonSummaryScreen->windowIds[i + 3] = AddWindow(&sWindowTemplates_Skills[i]); break; case PSS_PAGE_MOVES: case PSS_PAGE_MOVES_INFO: - sMonSummaryScreen->unk3000[i + 3] = AddWindow(&sUnknown_8463F7C[i]); + sMonSummaryScreen->windowIds[i + 3] = AddWindow(&sWindowTemplates_Moves[i]); break; } } -static void sub_8138414(u8 curPageIndex) +static void PokeSum_RemoveWindows(u8 curPageIndex) { u8 i; for (i = 0; i < 7; i++) - RemoveWindow(sMonSummaryScreen->unk3000[i]); + RemoveWindow(sMonSummaryScreen->windowIds[i]); } -static void sub_8138440(void) +static void PokeSum_SetHelpContext(void) { switch (sMonSummaryScreen->curPageIndex) { @@ -3216,7 +3240,7 @@ static void sub_8138440(void) } } -static u8 sub_813847C(struct Pokemon * mon) +static u8 PokeSum_BufferOtName_IsEqualToCurrentOwner(struct Pokemon * mon) { u8 i; u8 multiplayerId; @@ -3226,20 +3250,20 @@ static u8 sub_813847C(struct Pokemon * mon) { multiplayerId = GetMultiplayerId() ^ 1; trainerId = gLinkPlayers[multiplayerId].trainerId & 0xffff; - StringCopy(sMonSummaryScreen->summary.unk304C[0], gLinkPlayers[multiplayerId].name); + StringCopy(sMonSummaryScreen->summary.otNameStrBufs[0], gLinkPlayers[multiplayerId].name); } else { trainerId = GetPlayerTrainerId() & 0xffff; - StringCopy(sMonSummaryScreen->summary.unk304C[0], gSaveBlock2Ptr->playerName); + StringCopy(sMonSummaryScreen->summary.otNameStrBufs[0], gSaveBlock2Ptr->playerName); } if (trainerId != (GetMonData(mon, MON_DATA_OT_ID) & 0xffff)) return FALSE; - GetMonData(mon, MON_DATA_OT_NAME, sMonSummaryScreen->summary.unk304C[1]); + GetMonData(mon, MON_DATA_OT_NAME, sMonSummaryScreen->summary.otNameStrBufs[1]); - if (!StringCompareWithoutExtCtrlCodes(sMonSummaryScreen->summary.unk304C[0], sMonSummaryScreen->summary.unk304C[1])) + if (!StringCompareWithoutExtCtrlCodes(sMonSummaryScreen->summary.otNameStrBufs[0], sMonSummaryScreen->summary.otNameStrBufs[1])) return TRUE; else return FALSE; @@ -3249,7 +3273,7 @@ static u8 sub_813847C(struct Pokemon * mon) #define SUB_8138538_BASE_TILE_NUM (345) -static void sub_8138538(void) +static void PokeSum_DrawBg3Tilemap(void) { switch (sMonSummaryScreen->curPageIndex) { @@ -3331,17 +3355,17 @@ static void sub_8138538(void) } } -static void sub_8138A38(void) +static void PokeSum_PrintMonTypeIcons(void) { switch (sMonSummaryScreen->curPageIndex) { case PSS_PAGE_INFO: if (!sMonSummaryScreen->isEgg) { - BlitMoveInfoIcon(sMonSummaryScreen->unk3000[3], sMonSummaryScreen->unk3220[0] + 1, 47, 35); + BlitMoveInfoIcon(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], sMonSummaryScreen->monTypes[0] + 1, 47, 35); - if (sMonSummaryScreen->unk3220[0] != sMonSummaryScreen->unk3220[1]) - BlitMoveInfoIcon(sMonSummaryScreen->unk3000[3], sMonSummaryScreen->unk3220[1] + 1, 83, 35); + if (sMonSummaryScreen->monTypes[0] != sMonSummaryScreen->monTypes[1]) + BlitMoveInfoIcon(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], sMonSummaryScreen->monTypes[1] + 1, 83, 35); } break; case PSS_PAGE_SKILLS: @@ -3349,13 +3373,13 @@ static void sub_8138A38(void) case PSS_PAGE_MOVES: break; case PSS_PAGE_MOVES_INFO: - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[6], 0); - BlitMoveInfoIcon(sMonSummaryScreen->unk3000[6], sMonSummaryScreen->unk3220[0] + 1, 0, 3); + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[6], 0); + BlitMoveInfoIcon(sMonSummaryScreen->windowIds[6], sMonSummaryScreen->monTypes[0] + 1, 0, 3); - if (sMonSummaryScreen->unk3220[0] != sMonSummaryScreen->unk3220[1]) - BlitMoveInfoIcon(sMonSummaryScreen->unk3000[6], sMonSummaryScreen->unk3220[1] + 1, 36, 3); + if (sMonSummaryScreen->monTypes[0] != sMonSummaryScreen->monTypes[1]) + BlitMoveInfoIcon(sMonSummaryScreen->windowIds[6], sMonSummaryScreen->monTypes[1] + 1, 36, 3); - PutWindowTilemap(sMonSummaryScreen->unk3000[6]); + PutWindowTilemap(sMonSummaryScreen->windowIds[6]); break; } } @@ -3367,15 +3391,15 @@ u8 GetLastViewedMonIndex(void) u8 GetMoveSlotToReplace(void) { - return sUnknown_203B16E; + return sMoveSwapCursorPos; } -void sub_8138B38(u8 mode) +void SetPokemonSummaryScreenMode(u8 mode) { sMonSummaryScreen->mode = mode; } -static bool32 sub_8138B4C(void) +static bool32 IsMultiBattlePartner(void) { if (!IsUpdateLinkStateCBActive() && IsMultiBattle() == TRUE @@ -3386,7 +3410,7 @@ static bool32 sub_8138B4C(void) return FALSE; } -static void sub_8138B8C(struct Pokemon * mon) +static void BufferSelectedMonData(struct Pokemon * mon) { if (!sMonSummaryScreen->isBoxMon) { @@ -3400,7 +3424,7 @@ static void sub_8138B8C(struct Pokemon * mon) } } -static u16 sub_8138BEC(struct Pokemon * mon, u8 moveSlot) +static u16 GetMonMoveBySlotId(struct Pokemon * mon, u8 moveSlot) { u16 move; @@ -3422,7 +3446,7 @@ static u16 sub_8138BEC(struct Pokemon * mon, u8 moveSlot) return move; } -static u16 sub_8138C24(struct Pokemon * mon, u8 moveSlot) +static u16 GetMonPpByMoveSlot(struct Pokemon * mon, u8 moveSlot) { u16 pp; @@ -3443,7 +3467,7 @@ static u16 sub_8138C24(struct Pokemon * mon, u8 moveSlot) return pp; } -static u8 sub_8138C5C(u32 status) +static u8 StatusToAilment(u32 status) { if (GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_HP) == 0) return AILMENT_FNT; @@ -3469,92 +3493,92 @@ static u8 sub_8138C5C(u32 status) return AILMENT_NONE; } -static void sub_8138CD8(u8 id) +static void Task_HandleInput_SelectMove(u8 taskId) { u8 i; - switch (sMonSummaryScreen->unk3288) + switch (sMonSummaryScreen->selectMoveInputHandlerState) { case 0: - if (MenuHelpers_CallLinkSomething() == TRUE || sub_800B270() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE) return; if (JOY_NEW(DPAD_UP)) { - if (sUnknown_203B16D > 0) + if (sMoveSelectionCursorPos > 0) { - sMonSummaryScreen->unk3288 = 2; + sMonSummaryScreen->selectMoveInputHandlerState = 2; PlaySE(SE_SELECT); - for (i = sUnknown_203B16D; i > 0; i--) - if (sMonSummaryScreen->unk325A[i - 1] != 0) + for (i = sMoveSelectionCursorPos; i > 0; i--) + if (sMonSummaryScreen->moveIds[i - 1] != 0) { PlaySE(SE_SELECT); - sUnknown_203B16D = i - 1; + sMoveSelectionCursorPos = i - 1; return; } } else { - sUnknown_203B16D = 4; - sMonSummaryScreen->unk3288 = 2; + sMoveSelectionCursorPos = 4; + sMonSummaryScreen->selectMoveInputHandlerState = 2; PlaySE(SE_SELECT); - if (sMonSummaryScreen->unk3268 == TRUE) - for (i = sUnknown_203B16D; i > 0; i--) - if (sMonSummaryScreen->unk325A[i - 1] != 0) + if (sMonSummaryScreen->isSwappingMoves == TRUE) + for (i = sMoveSelectionCursorPos; i > 0; i--) + if (sMonSummaryScreen->moveIds[i - 1] != 0) { PlaySE(SE_SELECT); - sUnknown_203B16D = i - 1; + sMoveSelectionCursorPos = i - 1; return; } } } else if (JOY_NEW(DPAD_DOWN)) { - if (sUnknown_203B16D < 4) + if (sMoveSelectionCursorPos < 4) { u8 v0 = 4; - sMonSummaryScreen->unk3288 = 2; + sMonSummaryScreen->selectMoveInputHandlerState = 2; - if (sMonSummaryScreen->unk3268 == TRUE) + if (sMonSummaryScreen->isSwappingMoves == TRUE) { - if (sUnknown_203B16D == 5 - 2) + if (sMoveSelectionCursorPos == 5 - 2) { - sUnknown_203B16D = 0; - sMonSummaryScreen->unk3288 = 2; + sMoveSelectionCursorPos = 0; + sMonSummaryScreen->selectMoveInputHandlerState = 2; PlaySE(SE_SELECT); return; } v0--; } - for (i = sUnknown_203B16D; i < v0; i++) - if (sMonSummaryScreen->unk325A[i + 1] != 0) + for (i = sMoveSelectionCursorPos; i < v0; i++) + if (sMonSummaryScreen->moveIds[i + 1] != 0) { PlaySE(SE_SELECT); - sUnknown_203B16D = i + 1; + sMoveSelectionCursorPos = i + 1; return; } - if (!sMonSummaryScreen->unk3268) + if (!sMonSummaryScreen->isSwappingMoves) { PlaySE(SE_SELECT); - sUnknown_203B16D = i; + sMoveSelectionCursorPos = i; } else { PlaySE(SE_SELECT); - sUnknown_203B16D = 0; + sMoveSelectionCursorPos = 0; } return; } - else if (sUnknown_203B16D == 4) + else if (sMoveSelectionCursorPos == 4) { - sUnknown_203B16D = 0; - sMonSummaryScreen->unk3288 = 2; + sMoveSelectionCursorPos = 0; + sMonSummaryScreen->selectMoveInputHandlerState = 2; PlaySE(SE_SELECT); return; } @@ -3562,98 +3586,98 @@ static void sub_8138CD8(u8 id) else if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - if (sUnknown_203B16D == 4) + if (sMoveSelectionCursorPos == 4) { - sUnknown_203B16D = 0; - sUnknown_203B16E = 0; - sMonSummaryScreen->unk3268 = FALSE; - sub_813A0E8(1); - sMonSummaryScreen->unk3224 = 0; - sub_8138414(sMonSummaryScreen->curPageIndex); + sMoveSelectionCursorPos = 0; + sMoveSwapCursorPos = 0; + sMonSummaryScreen->isSwappingMoves = FALSE; + ShoworHideMoveSelectionCursor(TRUE); + sMonSummaryScreen->pageFlipDirection = 0; + PokeSum_RemoveWindows(sMonSummaryScreen->curPageIndex); sMonSummaryScreen->curPageIndex--; - sMonSummaryScreen->unk3288 = 1; + sMonSummaryScreen->selectMoveInputHandlerState = 1; return; } - if (sMonSummaryScreen->unk3268 != TRUE) + if (sMonSummaryScreen->isSwappingMoves != TRUE) { if (sMonSummaryScreen->isEnemyParty == FALSE && gMain.inBattle == 0 && gReceivedRemoteLinkPlayers == 0) { - sUnknown_203B16E = sUnknown_203B16D; - sMonSummaryScreen->unk3268 = TRUE; + sMoveSwapCursorPos = sMoveSelectionCursorPos; + sMonSummaryScreen->isSwappingMoves = TRUE; } return; } else { - sMonSummaryScreen->unk3268 = FALSE; + sMonSummaryScreen->isSwappingMoves = FALSE; - if (sUnknown_203B16D == sUnknown_203B16E) + if (sMoveSelectionCursorPos == sMoveSwapCursorPos) return; if (sMonSummaryScreen->isBoxMon == 0) - sub_81390B0(); + SwapMonMoveSlots(); else - sub_81391EC(); + SwapBoxMonMoveSlots(); - sub_8139328(&sMonSummaryScreen->currentMon); - sub_81367B0(); - sMonSummaryScreen->unk3288 = 2; + UpdateCurrentMonBufferFromPartyOrBox(&sMonSummaryScreen->currentMon); + BufferMonMoves(); + sMonSummaryScreen->selectMoveInputHandlerState = 2; return; } } else if (JOY_NEW(B_BUTTON)) { - if (sMonSummaryScreen->unk3268 == TRUE) + if (sMonSummaryScreen->isSwappingMoves == TRUE) { - sUnknown_203B16E = sUnknown_203B16D; - sMonSummaryScreen->unk3268 = FALSE; + sMoveSwapCursorPos = sMoveSelectionCursorPos; + sMonSummaryScreen->isSwappingMoves = FALSE; return; } - if (sUnknown_203B16D == 4) + if (sMoveSelectionCursorPos == 4) { - sUnknown_203B16D = 0; - sUnknown_203B16E = 0; + sMoveSelectionCursorPos = 0; + sMoveSwapCursorPos = 0; } - sub_813A0E8(1); - sMonSummaryScreen->unk3224 = 0; - sub_8138414(sMonSummaryScreen->curPageIndex); + ShoworHideMoveSelectionCursor(TRUE); + sMonSummaryScreen->pageFlipDirection = 0; + PokeSum_RemoveWindows(sMonSummaryScreen->curPageIndex); sMonSummaryScreen->curPageIndex--; - sMonSummaryScreen->unk3288 = 1; + sMonSummaryScreen->selectMoveInputHandlerState = 1; } break; case 1: - gTasks[sMonSummaryScreen->unk3018].func = sub_81351A0; - sMonSummaryScreen->unk3288 = 0; + gTasks[sMonSummaryScreen->inputHandlerTaskId].func = Task_BackOutOfSelectMove; + sMonSummaryScreen->selectMoveInputHandlerState = 0; break; case 2: - sub_8136F4C(); - sub_81374E8(); - sub_8137BD0(); - sMonSummaryScreen->unk3288 = 3; + PokeSum_PrintRightPaneText(); + PokeSum_PrintBottomPaneText(); + PokeSum_PrintAbilityDataOrMoveTypes(); + sMonSummaryScreen->selectMoveInputHandlerState = 3; break; case 3: - if (MenuHelpers_CallLinkSomething() == TRUE || sub_800B270() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE) return; - CopyWindowToVram(sMonSummaryScreen->unk3000[3], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[5], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[6], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[5], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[6], 2); CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(3); - sMonSummaryScreen->unk3288 = 0; + sMonSummaryScreen->selectMoveInputHandlerState = 0; break; default: break; } } -static void sub_81390B0(void) +static void SwapMonMoveSlots(void) { struct Pokemon * partyMons; struct Pokemon * mon; @@ -3666,29 +3690,29 @@ static void sub_81390B0(void) partyMons = sMonSummaryScreen->monList.mons; mon = &partyMons[GetLastViewedMonIndex()]; - move1 = GetMonData(mon, MON_DATA_MOVE1 + sUnknown_203B16D); - move2 = GetMonData(mon, MON_DATA_MOVE1 + sUnknown_203B16E); + move1 = GetMonData(mon, MON_DATA_MOVE1 + sMoveSelectionCursorPos); + move2 = GetMonData(mon, MON_DATA_MOVE1 + sMoveSwapCursorPos); - pp1 = GetMonData(mon, MON_DATA_PP1 + sUnknown_203B16D); - pp2 = GetMonData(mon, MON_DATA_PP1 + sUnknown_203B16E); + pp1 = GetMonData(mon, MON_DATA_PP1 + sMoveSelectionCursorPos); + pp2 = GetMonData(mon, MON_DATA_PP1 + sMoveSwapCursorPos); allMovesPPBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); - move1ppBonus = (allMovesPPBonuses & gPPUpGetMask[sUnknown_203B16D]) >> (sUnknown_203B16D * 2); - move2ppBonus = (allMovesPPBonuses & gPPUpGetMask[sUnknown_203B16E]) >> (sUnknown_203B16E * 2); + move1ppBonus = (allMovesPPBonuses & gPPUpGetMask[sMoveSelectionCursorPos]) >> (sMoveSelectionCursorPos * 2); + move2ppBonus = (allMovesPPBonuses & gPPUpGetMask[sMoveSwapCursorPos]) >> (sMoveSwapCursorPos * 2); - allMovesPPBonuses &= ~gPPUpGetMask[sUnknown_203B16D]; - allMovesPPBonuses &= ~gPPUpGetMask[sUnknown_203B16E]; - allMovesPPBonuses |= (move1ppBonus << (sUnknown_203B16E * 2)) + (move2ppBonus << (sUnknown_203B16D * 2)); + allMovesPPBonuses &= ~gPPUpGetMask[sMoveSelectionCursorPos]; + allMovesPPBonuses &= ~gPPUpGetMask[sMoveSwapCursorPos]; + allMovesPPBonuses |= (move1ppBonus << (sMoveSwapCursorPos * 2)) + (move2ppBonus << (sMoveSelectionCursorPos * 2)); - SetMonData(mon, MON_DATA_MOVE1 + sUnknown_203B16D, (u8 *)&move2); - SetMonData(mon, MON_DATA_MOVE1 + sUnknown_203B16E, (u8 *)&move1); - SetMonData(mon, MON_DATA_PP1 + sUnknown_203B16D, &pp2); - SetMonData(mon, MON_DATA_PP1 + sUnknown_203B16E, &pp1); + SetMonData(mon, MON_DATA_MOVE1 + sMoveSelectionCursorPos, (u8 *)&move2); + SetMonData(mon, MON_DATA_MOVE1 + sMoveSwapCursorPos, (u8 *)&move1); + SetMonData(mon, MON_DATA_PP1 + sMoveSelectionCursorPos, &pp2); + SetMonData(mon, MON_DATA_PP1 + sMoveSwapCursorPos, &pp1); SetMonData(mon, MON_DATA_PP_BONUSES, &allMovesPPBonuses); } -static void sub_81391EC(void) +static void SwapBoxMonMoveSlots(void) { struct BoxPokemon * boxMons; struct BoxPokemon * boxMon; @@ -3701,29 +3725,29 @@ static void sub_81391EC(void) boxMons = sMonSummaryScreen->monList.boxMons; boxMon = &boxMons[GetLastViewedMonIndex()]; - move1 = GetBoxMonData(boxMon, MON_DATA_MOVE1 + sUnknown_203B16D); - move2 = GetBoxMonData(boxMon, MON_DATA_MOVE1 + sUnknown_203B16E); + move1 = GetBoxMonData(boxMon, MON_DATA_MOVE1 + sMoveSelectionCursorPos); + move2 = GetBoxMonData(boxMon, MON_DATA_MOVE1 + sMoveSwapCursorPos); - pp1 = GetBoxMonData(boxMon, MON_DATA_PP1 + sUnknown_203B16D); - pp2 = GetBoxMonData(boxMon, MON_DATA_PP1 + sUnknown_203B16E); + pp1 = GetBoxMonData(boxMon, MON_DATA_PP1 + sMoveSelectionCursorPos); + pp2 = GetBoxMonData(boxMon, MON_DATA_PP1 + sMoveSwapCursorPos); allMovesPPBonuses = GetBoxMonData(boxMon, MON_DATA_PP_BONUSES); - move1ppBonus = (allMovesPPBonuses & gPPUpGetMask[sUnknown_203B16D]) >> (sUnknown_203B16D * 2); - move2ppBonus = (allMovesPPBonuses & gPPUpGetMask[sUnknown_203B16E]) >> (sUnknown_203B16E * 2); + move1ppBonus = (allMovesPPBonuses & gPPUpGetMask[sMoveSelectionCursorPos]) >> (sMoveSelectionCursorPos * 2); + move2ppBonus = (allMovesPPBonuses & gPPUpGetMask[sMoveSwapCursorPos]) >> (sMoveSwapCursorPos * 2); - allMovesPPBonuses &= ~gPPUpGetMask[sUnknown_203B16D]; - allMovesPPBonuses &= ~gPPUpGetMask[sUnknown_203B16E]; - allMovesPPBonuses |= (move1ppBonus << (sUnknown_203B16E * 2)) + (move2ppBonus << (sUnknown_203B16D * 2)); + allMovesPPBonuses &= ~gPPUpGetMask[sMoveSelectionCursorPos]; + allMovesPPBonuses &= ~gPPUpGetMask[sMoveSwapCursorPos]; + allMovesPPBonuses |= (move1ppBonus << (sMoveSwapCursorPos * 2)) + (move2ppBonus << (sMoveSelectionCursorPos * 2)); - SetBoxMonData(boxMon, MON_DATA_MOVE1 + sUnknown_203B16D, (u8 *)&move2); - SetBoxMonData(boxMon, MON_DATA_MOVE1 + sUnknown_203B16E, (u8 *)&move1); - SetBoxMonData(boxMon, MON_DATA_PP1 + sUnknown_203B16D, &pp2); - SetBoxMonData(boxMon, MON_DATA_PP1 + sUnknown_203B16E, &pp1); + SetBoxMonData(boxMon, MON_DATA_MOVE1 + sMoveSelectionCursorPos, (u8 *)&move2); + SetBoxMonData(boxMon, MON_DATA_MOVE1 + sMoveSwapCursorPos, (u8 *)&move1); + SetBoxMonData(boxMon, MON_DATA_PP1 + sMoveSelectionCursorPos, &pp2); + SetBoxMonData(boxMon, MON_DATA_PP1 + sMoveSwapCursorPos, &pp1); SetBoxMonData(boxMon, MON_DATA_PP_BONUSES, &allMovesPPBonuses); } -static void sub_8139328(struct Pokemon * mon) +static void UpdateCurrentMonBufferFromPartyOrBox(struct Pokemon * mon) { if (!sMonSummaryScreen->isBoxMon) { @@ -3739,11 +3763,11 @@ static void sub_8139328(struct Pokemon * mon) } } -static u8 sub_8139388(void) +static u8 PokeSum_CanForgetSelectedMove(void) { u16 move; - move = sub_8138BEC(&sMonSummaryScreen->currentMon, sUnknown_203B16D); + move = GetMonMoveBySlotId(&sMonSummaryScreen->currentMon, sMoveSelectionCursorPos); if (IsMoveHm(move) == TRUE && sMonSummaryScreen->mode != PSS_MODE_FORGET_MOVE) return FALSE; @@ -3751,243 +3775,243 @@ static u8 sub_8139388(void) return TRUE; } -static void sub_81393D4(u8 taskId) +static void Task_InputHandler_SelectOrForgetMove(u8 taskId) { u8 i; - switch (sMonSummaryScreen->unk3288) + switch (sMonSummaryScreen->selectMoveInputHandlerState) { case 0: BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); - sMonSummaryScreen->unk3288++; + sMonSummaryScreen->selectMoveInputHandlerState++; break; case 1: if (!gPaletteFade.active) { - sub_813B784(); - sMonSummaryScreen->unk3288++; + PokeSum_TryPlayMonCry(); + sMonSummaryScreen->selectMoveInputHandlerState++; } break; case 2: if (JOY_NEW(DPAD_UP)) { - if (sUnknown_203B16D > 0) + if (sMoveSelectionCursorPos > 0) { - sMonSummaryScreen->unk3288 = 3; + sMonSummaryScreen->selectMoveInputHandlerState = 3; PlaySE(SE_SELECT); - for (i = sUnknown_203B16D; i > 0; i--) - if (sMonSummaryScreen->unk325A[i - 1] != 0) + for (i = sMoveSelectionCursorPos; i > 0; i--) + if (sMonSummaryScreen->moveIds[i - 1] != 0) { PlaySE(SE_SELECT); - sUnknown_203B16D = i - 1; + sMoveSelectionCursorPos = i - 1; return; } } else { - sUnknown_203B16D = 4; - sMonSummaryScreen->unk3288 = 3; + sMoveSelectionCursorPos = 4; + sMonSummaryScreen->selectMoveInputHandlerState = 3; PlaySE(SE_SELECT); return; } } else if (JOY_NEW(DPAD_DOWN)) { - if (sUnknown_203B16D < 4) + if (sMoveSelectionCursorPos < 4) { u8 v0 = 4; - sMonSummaryScreen->unk3288 = 3; + sMonSummaryScreen->selectMoveInputHandlerState = 3; - if (sMonSummaryScreen->unk3268 == TRUE) + if (sMonSummaryScreen->isSwappingMoves == TRUE) v0--; - for (i = sUnknown_203B16D; i < v0; i++) - if (sMonSummaryScreen->unk325A[i + 1] != 0) + for (i = sMoveSelectionCursorPos; i < v0; i++) + if (sMonSummaryScreen->moveIds[i + 1] != 0) { PlaySE(SE_SELECT); - sUnknown_203B16D = i + 1; + sMoveSelectionCursorPos = i + 1; return; } - if (!sMonSummaryScreen->unk3268) + if (!sMonSummaryScreen->isSwappingMoves) { PlaySE(SE_SELECT); - sUnknown_203B16D = i; + sMoveSelectionCursorPos = i; } return; } - else if (sUnknown_203B16D == 4) + else if (sMoveSelectionCursorPos == 4) { - sUnknown_203B16D = 0; - sMonSummaryScreen->unk3288 = 3; + sMoveSelectionCursorPos = 0; + sMonSummaryScreen->selectMoveInputHandlerState = 3; PlaySE(SE_SELECT); return; } } else if (JOY_NEW(A_BUTTON)) { - if (sub_8139388() == TRUE || sUnknown_203B16D == 4) + if (PokeSum_CanForgetSelectedMove() == TRUE || sMoveSelectionCursorPos == 4) { PlaySE(SE_SELECT); - sUnknown_203B16E = sUnknown_203B16D; - gSpecialVar_0x8005 = sUnknown_203B16E; - sMonSummaryScreen->unk3288 = 6; + sMoveSwapCursorPos = sMoveSelectionCursorPos; + gSpecialVar_0x8005 = sMoveSwapCursorPos; + sMonSummaryScreen->selectMoveInputHandlerState = 6; } else { PlaySE(SE_FAILURE); - sMonSummaryScreen->unk3288 = 5; + sMonSummaryScreen->selectMoveInputHandlerState = 5; } } else if (JOY_NEW(B_BUTTON)) { - sUnknown_203B16E = 4; - gSpecialVar_0x8005 = (u16)sUnknown_203B16E; - sMonSummaryScreen->unk3288 = 6; + sMoveSwapCursorPos = 4; + gSpecialVar_0x8005 = (u16)sMoveSwapCursorPos; + sMonSummaryScreen->selectMoveInputHandlerState = 6; } break; case 3: - sub_8136F4C(); - sub_81374E8(); - sub_8137BD0(); - sMonSummaryScreen->unk3288 = 4; + PokeSum_PrintRightPaneText(); + PokeSum_PrintBottomPaneText(); + PokeSum_PrintAbilityDataOrMoveTypes(); + sMonSummaryScreen->selectMoveInputHandlerState = 4; break; case 4: - if (MenuHelpers_CallLinkSomething() == TRUE || sub_800B270() == TRUE) + if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE) return; - CopyWindowToVram(sMonSummaryScreen->unk3000[3], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[5], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[6], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[5], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[6], 2); CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(3); - sMonSummaryScreen->unk3288 = 2; + sMonSummaryScreen->selectMoveInputHandlerState = 2; break; case 5: - FillWindowPixelBuffer(sMonSummaryScreen->unk3000[4], 0); - AddTextPrinterParameterized4(sMonSummaryScreen->unk3000[4], 2, + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 0); + AddTextPrinterParameterized4(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2, 7, 42, 0, 0, - sUnknown_8463FA4[0], TEXT_SPEED_FF, - gUnknown_8419CB9); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); + sLevelNickTextColors[0], TEXT_SPEED_FF, + gText_PokeSum_HmMovesCantBeForgotten); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(3); - sMonSummaryScreen->unk3288 = 2; + sMonSummaryScreen->selectMoveInputHandlerState = 2; break; case 6: BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); - sMonSummaryScreen->unk3288++; + sMonSummaryScreen->selectMoveInputHandlerState++; break; default: if (!gPaletteFade.active) - sub_8137E64(taskId); + Task_DestroyResourcesOnExit(taskId); break; } } -static void sub_8139768(struct Sprite * sprite) +static void SpriteCB_PokeSum_MonPicSprite(struct Sprite * sprite) { - if (sMonSummaryScreen->unk3020 >= 2) + if (sMonSummaryScreen->numMonPicBounces >= 2) return; - if (sUnknown_203B170->unk04++ >= 2) + if (sMonPicBounceState->initDelay++ >= 2) { - u8 v0; + u8 arrayLen; - switch (sUnknown_203B170->unk08) + switch (sMonPicBounceState->vigor) { case 0: - sprite->pos1.y += sUnknown_8463FBE[sUnknown_203B170->unk00++]; - v0 = NELEMS(sUnknown_8463FBE); + sprite->pos1.y += sMonPicBounceYDelta_Under60[sMonPicBounceState->animFrame++]; + arrayLen = NELEMS(sMonPicBounceYDelta_Under60); break; case 1: - sprite->pos1.y += sUnknown_8463FC1[sUnknown_203B170->unk00++]; - v0 = NELEMS(sUnknown_8463FC1); + sprite->pos1.y += sMonPicBounceYDelta_60to80[sMonPicBounceState->animFrame++]; + arrayLen = NELEMS(sMonPicBounceYDelta_60to80); break; case 2: - sprite->pos1.y += sUnknown_8463FC6[sUnknown_203B170->unk00++]; - v0 = NELEMS(sUnknown_8463FC6); + sprite->pos1.y += sMonPicBounceYDelta_80to99[sMonPicBounceState->animFrame++]; + arrayLen = NELEMS(sMonPicBounceYDelta_80to99); break; case 3: default: - sprite->pos1.y += sUnknown_8463FCD[sUnknown_203B170->unk00++]; - v0 = NELEMS(sUnknown_8463FCD); + sprite->pos1.y += sMonPicBounceYDelta_Full[sMonPicBounceState->animFrame++]; + arrayLen = NELEMS(sMonPicBounceYDelta_Full); break; } - if (sUnknown_203B170->unk00 >= v0) + if (sMonPicBounceState->animFrame >= arrayLen) { - sUnknown_203B170->unk00 = 0; - sMonSummaryScreen->unk3020++; + sMonPicBounceState->animFrame = 0; + sMonSummaryScreen->numMonPicBounces++; } - sUnknown_203B170->unk04 = 0; + sMonPicBounceState->initDelay = 0; } } -static void sub_8139868(struct Sprite * sprite) +static void SpriteCB_PokeSum_EggPicShake(struct Sprite * sprite) { - if (sMonSummaryScreen->unk3020 >= 2) + if (sMonSummaryScreen->numMonPicBounces >= 2) return; - switch (sUnknown_203B170->unk08) + switch (sMonPicBounceState->vigor) { case 0: default: - if (sUnknown_203B170->unk04++ >= 120) + if (sMonPicBounceState->initDelay++ >= 120) { - sprite->pos1.x += sUnknown_8463FD4[sUnknown_203B170->unk00]; - if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FD4)) + sprite->pos1.x += sEggPicShakeXDelta_ItWillTakeSomeTime[sMonPicBounceState->animFrame]; + if (++sMonPicBounceState->animFrame >= NELEMS(sEggPicShakeXDelta_ItWillTakeSomeTime)) { - sUnknown_203B170->unk00 = 0; - sUnknown_203B170->unk04 = 0; - sMonSummaryScreen->unk3020++; + sMonPicBounceState->animFrame = 0; + sMonPicBounceState->initDelay = 0; + sMonSummaryScreen->numMonPicBounces++; } } break; case 1: - if (sUnknown_203B170->unk04++ >= 90) + if (sMonPicBounceState->initDelay++ >= 90) { - sprite->pos1.x += sUnknown_8463FDF[sUnknown_203B170->unk00]; - if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FDF)) + sprite->pos1.x += sEggPicShakeXDelta_OccasionallyMoves[sMonPicBounceState->animFrame]; + if (++sMonPicBounceState->animFrame >= NELEMS(sEggPicShakeXDelta_OccasionallyMoves)) { - sUnknown_203B170->unk00 = 0; - sUnknown_203B170->unk04 = 0; - sMonSummaryScreen->unk3020++; + sMonPicBounceState->animFrame = 0; + sMonPicBounceState->initDelay = 0; + sMonSummaryScreen->numMonPicBounces++; } } break; case 2: - if (sUnknown_203B170->unk04++ >= 60) + if (sMonPicBounceState->initDelay++ >= 60) { - sprite->pos1.x += sUnknown_8463FEA[sUnknown_203B170->unk00]; - if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FEA)) + sprite->pos1.x += sEggPicShakeXDelta_AlmostReadyToHatch[sMonPicBounceState->animFrame]; + if (++sMonPicBounceState->animFrame >= NELEMS(sEggPicShakeXDelta_AlmostReadyToHatch)) { - sUnknown_203B170->unk00 = 0; - sUnknown_203B170->unk04 = 0; - sMonSummaryScreen->unk3020++; + sMonPicBounceState->animFrame = 0; + sMonPicBounceState->initDelay = 0; + sMonSummaryScreen->numMonPicBounces++; } } break; } } -static void nullsub_96(struct Sprite * sprite) +static void SpriteCB_MonPicDummy(struct Sprite * sprite) { } -static void sub_813995C(void) +static void PokeSum_CreateMonPicSprite(void) { u16 spriteId; u16 species; u32 personality; u32 trainerId; - sUnknown_203B170 = AllocZeroed(sizeof(struct Struct203B170)); + sMonPicBounceState = AllocZeroed(sizeof(struct MonPicBounceState)); species = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES2); personality = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_PERSONALITY); @@ -4015,43 +4039,43 @@ static void sub_813995C(void) else gSprites[spriteId].hFlip = FALSE; - sMonSummaryScreen->unk3010 = spriteId; + sMonSummaryScreen->monPicSpriteId = spriteId; - sub_8139C44(1); - sub_8139AAC(spriteId); + PokeSum_ShowOrHideMonPicSprite(TRUE); + PokeSum_SetMonPicSpriteCallback(spriteId); } -static void sub_8139AAC(u16 spriteId) +static void PokeSum_SetMonPicSpriteCallback(u16 spriteId) { u16 curHp; u16 maxHp; - sMonSummaryScreen->unk3020 = 0; + sMonSummaryScreen->numMonPicBounces = 0; if (sMonSummaryScreen->isEgg == TRUE) { u8 friendship = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_FRIENDSHIP); if (friendship <= 5) - sUnknown_203B170->unk08 = 2; + sMonPicBounceState->vigor = 2; else { if (friendship <= 10) - sUnknown_203B170->unk08 = 1; + sMonPicBounceState->vigor = 1; else if (friendship <= 40) - sUnknown_203B170->unk08 = 0; + sMonPicBounceState->vigor = 0; } - gSprites[spriteId].callback = sub_8139868; + gSprites[spriteId].callback = SpriteCB_PokeSum_EggPicShake; return; } - if (sMonSummaryScreen->unk326C != AILMENT_NONE && sMonSummaryScreen->unk326C != AILMENT_PKRS) + if (sMonSummaryScreen->curMonStatusAilment != AILMENT_NONE && sMonSummaryScreen->curMonStatusAilment != AILMENT_PKRS) { - if (sMonSummaryScreen->unk326C == AILMENT_FNT) + if (sMonSummaryScreen->curMonStatusAilment == AILMENT_FNT) return; - gSprites[spriteId].callback = nullsub_96; + gSprites[spriteId].callback = SpriteCB_MonPicDummy; return; } @@ -4059,29 +4083,29 @@ static void sub_8139AAC(u16 spriteId) maxHp = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MAX_HP); if (curHp == maxHp) - sUnknown_203B170->unk08 = 3; + sMonPicBounceState->vigor = 3; else if (maxHp * 0.8 <= curHp) - sUnknown_203B170->unk08 = 2; + sMonPicBounceState->vigor = 2; else if (maxHp * 0.6 <= curHp) - sUnknown_203B170->unk08 = 1; + sMonPicBounceState->vigor = 1; else - sUnknown_203B170->unk08 = 0; + sMonPicBounceState->vigor = 0; - gSprites[spriteId].callback = sub_8139768; + gSprites[spriteId].callback = SpriteCB_PokeSum_MonPicSprite; } -static void sub_8139C44(u8 invisible) +static void PokeSum_ShowOrHideMonPicSprite(u8 invisible) { - gSprites[sMonSummaryScreen->unk3010].invisible = invisible; + gSprites[sMonSummaryScreen->monPicSpriteId].invisible = invisible; } -static void sub_8139C80(void) +static void PokeSum_DestroyMonPicSprite(void) { - FreeAndDestroyMonPicSprite(sMonSummaryScreen->unk3010); - FREE_AND_SET_NULL(sUnknown_203B170); + FreeAndDestroyMonPicSprite(sMonSummaryScreen->monPicSpriteId); + FREE_AND_SET_NULL(sMonPicBounceState); } -static void sub_8139CB0(void) +static void CreateBallIconObj(void) { u16 ballItemId; u8 ballId; @@ -4094,24 +4118,24 @@ static void sub_8139CB0(void) ballId = ItemIdToBallId(ballItemId); LoadBallGfx(ballId); - sMonSummaryScreen->unk300C = CreateSprite(&gBallSpriteTemplates[ballId], 106, 88, 0); - gSprites[sMonSummaryScreen->unk300C].callback = SpriteCallbackDummy; - gSprites[sMonSummaryScreen->unk300C].oam.priority = 0; + sMonSummaryScreen->ballIconSpriteId = CreateSprite(&gBallSpriteTemplates[ballId], 106, 88, 0); + gSprites[sMonSummaryScreen->ballIconSpriteId].callback = SpriteCallbackDummy; + gSprites[sMonSummaryScreen->ballIconSpriteId].oam.priority = 0; - sub_8139D54(1); + ShowOrHideBallIconObj(TRUE); } -static void sub_8139D54(u8 invisible) +static void ShowOrHideBallIconObj(u8 invisible) { - gSprites[sMonSummaryScreen->unk300C].invisible = invisible; + gSprites[sMonSummaryScreen->ballIconSpriteId].invisible = invisible; } -static void sub_8139D90(void) +static void DestroyBallIconObj(void) { - DestroySpriteAndFreeResources2(&gSprites[sMonSummaryScreen->unk300C]); + DestroySpriteAndFreeResources2(&gSprites[sMonSummaryScreen->ballIconSpriteId]); } -static void sub_8139DBC(void) +static void PokeSum_CreateMonIconSprite(void) { u16 species; u32 personality; @@ -4124,40 +4148,40 @@ static void sub_8139DBC(void) if (sMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary) { if (sMonSummaryScreen->isEnemyParty == TRUE) - sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0); + sMonSummaryScreen->monIconSpriteId = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0); else - sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1); + sMonSummaryScreen->monIconSpriteId = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1); } else { if (ShouldIgnoreDeoxysForm(DEOXYS_CHECK_TRADE_MAIN, sLastViewedMonIndex)) - sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0); + sMonSummaryScreen->monIconSpriteId = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0); else - sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1); + sMonSummaryScreen->monIconSpriteId = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1); } if (!IsPokeSpriteNotFlipped(species)) - gSprites[sMonSummaryScreen->unk3014].hFlip = TRUE; + gSprites[sMonSummaryScreen->monIconSpriteId].hFlip = TRUE; else - gSprites[sMonSummaryScreen->unk3014].hFlip = FALSE; + gSprites[sMonSummaryScreen->monIconSpriteId].hFlip = FALSE; - sub_8139EE4(1); + PokeSum_ShowOrHideMonIconSprite(TRUE); } -static void sub_8139EE4(u8 invisible) +static void PokeSum_ShowOrHideMonIconSprite(bool8 invisible) { - gSprites[sMonSummaryScreen->unk3014].invisible = invisible; + gSprites[sMonSummaryScreen->monIconSpriteId].invisible = invisible; } -static void sub_8139F20(void) +static void PokeSum_DestroyMonIconSprite(void) { u16 species; species = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES2); SafeFreeMonIconPalette(species); - DestroyMonIcon(&gSprites[sMonSummaryScreen->unk3014]); + DestroyMonIcon(&gSprites[sMonSummaryScreen->monIconSpriteId]); } -static void sub_8139F64(u16 tileTag, u16 palTag) +static void CreateMoveSelectionCursorObjs(u16 tileTag, u16 palTag) { u8 i; u8 spriteId; @@ -4165,13 +4189,13 @@ static void sub_8139F64(u16 tileTag, u16 palTag) gfxBufferPtrs[0] = AllocZeroed(0x20 * 64); gfxBufferPtrs[1] = AllocZeroed(0x20 * 64); - sUnknown_203B148[0] = AllocZeroed(sizeof(struct Struct203B148)); - sUnknown_203B148[1] = AllocZeroed(sizeof(struct Struct203B148)); - sUnknown_203B148[2] = AllocZeroed(sizeof(struct Struct203B148)); - sUnknown_203B148[3] = AllocZeroed(sizeof(struct Struct203B148)); + sMoveSelectionCursorObjs[0] = AllocZeroed(sizeof(struct MoveSelectionCursor)); + sMoveSelectionCursorObjs[1] = AllocZeroed(sizeof(struct MoveSelectionCursor)); + sMoveSelectionCursorObjs[2] = AllocZeroed(sizeof(struct MoveSelectionCursor)); + sMoveSelectionCursorObjs[3] = AllocZeroed(sizeof(struct MoveSelectionCursor)); - LZ77UnCompWram(sUnknown_8463740, gfxBufferPtrs[0]); - LZ77UnCompWram(sUnknown_846386C, gfxBufferPtrs[1]); + LZ77UnCompWram(sMoveSelectionCursorTiles_Left, gfxBufferPtrs[0]); + LZ77UnCompWram(sMoveSelectionCursorTiles_Right, gfxBufferPtrs[1]); for (i = 0; i < 4; i++) { @@ -4181,69 +4205,69 @@ static void sub_8139F64(u16 tileTag, u16 palTag) .tag = tileTag + i }; - struct SpritePalette palette = {.data = sUnknown_8463720, .tag = palTag}; + struct SpritePalette palette = {.data = sMoveSelectionCursorPals, .tag = palTag}; struct SpriteTemplate template = { .tileTag = tileTag + i, .paletteTag = palTag, - .oam = &sUnknown_846398C, - .anims = sUnknown_84639A4, + .oam = &sMoveSelectionCursorOamData, + .anims = sMoveSelectionCursorOamAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_813A124, + .callback = SpriteCB_MoveSelectionCursor, }; LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); - spriteId = CreateSprite(&template, 64 * (i % 2) + 152, sUnknown_203B16D * 28 + 34, i % 2); - sUnknown_203B148[i]->sprite = &gSprites[spriteId]; - sUnknown_203B148[i]->unk04 = i; - sUnknown_203B148[i]->unk06 = tileTag + i; - sUnknown_203B148[i]->unk08 = palTag; - sUnknown_203B148[i]->sprite->subpriority = i; + spriteId = CreateSprite(&template, 64 * (i % 2) + 152, sMoveSelectionCursorPos * 28 + 34, i % 2); + sMoveSelectionCursorObjs[i]->sprite = &gSprites[spriteId]; + sMoveSelectionCursorObjs[i]->whichSprite = i; + sMoveSelectionCursorObjs[i]->tileTag = tileTag + i; + sMoveSelectionCursorObjs[i]->palTag = palTag; + sMoveSelectionCursorObjs[i]->sprite->subpriority = i; if (i > 1) - StartSpriteAnim(sUnknown_203B148[i]->sprite, 1); + StartSpriteAnim(sMoveSelectionCursorObjs[i]->sprite, 1); } - sub_813A0E8(1); + ShoworHideMoveSelectionCursor(TRUE); FREE_AND_SET_NULL_IF_SET(gfxBufferPtrs[0]); FREE_AND_SET_NULL_IF_SET(gfxBufferPtrs[1]); } -static void sub_813A0E8(u8 invisible) +static void ShoworHideMoveSelectionCursor(bool8 invisible) { u8 i; for (i = 0; i < 4; i++) - sUnknown_203B148[i]->sprite->invisible = invisible; + sMoveSelectionCursorObjs[i]->sprite->invisible = invisible; } -static void sub_813A124(struct Sprite * sprite) +static void SpriteCB_MoveSelectionCursor(struct Sprite * sprite) { u8 i; for (i = 0; i < 4; i++) { - if (sMonSummaryScreen->unk3268 == TRUE && i > 1) + if (sMonSummaryScreen->isSwappingMoves == TRUE && i > 1) continue; - sUnknown_203B148[i]->sprite->pos1.y = sUnknown_203B16D * 28 + 34; + sMoveSelectionCursorObjs[i]->sprite->pos1.y = sMoveSelectionCursorPos * 28 + 34; } - if (sMonSummaryScreen->unk3268 != TRUE) + if (sMonSummaryScreen->isSwappingMoves != TRUE) { if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) { - sUnknown_203B148[0]->sprite->invisible = FALSE; - sUnknown_203B148[1]->sprite->invisible = FALSE; + sMoveSelectionCursorObjs[0]->sprite->invisible = FALSE; + sMoveSelectionCursorObjs[1]->sprite->invisible = FALSE; } return; } for (i = 0; i < 2; i++) { - sprite = sUnknown_203B148[i]->sprite; + sprite = sMoveSelectionCursorObjs[i]->sprite; sprite->data[0]++; if (sprite->invisible) @@ -4262,30 +4286,30 @@ static void sub_813A124(struct Sprite * sprite) } } -static void sub_813A21C(void) +static void DestroyMoveSelectionCursorObjs(void) { u8 i; for (i = 0; i < 4; i++) { - if (sUnknown_203B148[i]->sprite != NULL) - DestroySpriteAndFreeResources(sUnknown_203B148[i]->sprite); + if (sMoveSelectionCursorObjs[i]->sprite != NULL) + DestroySpriteAndFreeResources(sMoveSelectionCursorObjs[i]->sprite); - FREE_AND_SET_NULL_IF_SET(sUnknown_203B148[i]); + FREE_AND_SET_NULL_IF_SET(sMoveSelectionCursorObjs[i]); } } -static void sub_813A254(u16 tileTag, u16 palTag) +static void CreateMonStatusIconObj(u16 tileTag, u16 palTag) { u16 spriteId; void * gfxBufferPtr; - sUnknown_203B158 = AllocZeroed(sizeof(struct Struct203B158)); + sStatusIcon = AllocZeroed(sizeof(struct MonStatusIconObj)); gfxBufferPtr = AllocZeroed(0x20 * 32); - LZ77UnCompWram(gUnknown_8E9BF48, gfxBufferPtr); + LZ77UnCompWram(gPokeSummary_StatusAilmentIconTiles, gfxBufferPtr); - if (sUnknown_203B158 != NULL) + if (sStatusIcon != NULL) { struct SpriteSheet sheet = { .data = gfxBufferPtr, @@ -4293,12 +4317,12 @@ static void sub_813A254(u16 tileTag, u16 palTag) .tag = tileTag }; - struct SpritePalette palette = {.data = gUnknown_8E9BF28, .tag = palTag}; + struct SpritePalette palette = {.data = gPokeSummary_StatusAilmentIconPals, .tag = palTag}; struct SpriteTemplate template = { .tileTag = tileTag, .paletteTag = palTag, - .oam = &sUnknown_84639AC, - .anims = sUnknown_84639F4, + .oam = &sStatusAilmentIconOamData, + .anims = sStatusAilmentIconAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, @@ -4308,63 +4332,63 @@ static void sub_813A254(u16 tileTag, u16 palTag) LoadSpritePalette(&palette); spriteId = CreateSprite(&template, 0, 0, 0); - sUnknown_203B158->sprite = &gSprites[spriteId]; - sUnknown_203B158->unk04 = tileTag; - sUnknown_203B158->unk06 = palTag; + sStatusIcon->sprite = &gSprites[spriteId]; + sStatusIcon->tileTag = tileTag; + sStatusIcon->palTag = palTag; } - sub_813A3B8(1); - sub_813A35C(); + ShowOrHideStatusIcon(TRUE); + UpdateMonStatusIconObj(); FREE_AND_SET_NULL_IF_SET(gfxBufferPtr); } -static void sub_813A334(void) +static void DestroyMonStatusIconObj(void) { - if (sUnknown_203B158->sprite != NULL) - DestroySpriteAndFreeResources(sUnknown_203B158->sprite); + if (sStatusIcon->sprite != NULL) + DestroySpriteAndFreeResources(sStatusIcon->sprite); - FREE_AND_SET_NULL_IF_SET(sUnknown_203B158); + FREE_AND_SET_NULL_IF_SET(sStatusIcon); } -static void sub_813A35C(void) +static void UpdateMonStatusIconObj(void) { - sMonSummaryScreen->unk326C = sub_8138C5C(GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_STATUS)); + sMonSummaryScreen->curMonStatusAilment = StatusToAilment(GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_STATUS)); - if (sMonSummaryScreen->unk326C == AILMENT_NONE) + if (sMonSummaryScreen->curMonStatusAilment == AILMENT_NONE) { - sub_813A3B8(1); + ShowOrHideStatusIcon(TRUE); return; } - StartSpriteAnim(sUnknown_203B158->sprite, sMonSummaryScreen->unk326C - 1); - sub_813A3B8(0); + StartSpriteAnim(sStatusIcon->sprite, sMonSummaryScreen->curMonStatusAilment - 1); + ShowOrHideStatusIcon(FALSE); } -static void sub_813A3B8(u8 invisible) +static void ShowOrHideStatusIcon(u8 invisible) { - if (sMonSummaryScreen->unk326C == AILMENT_NONE || sMonSummaryScreen->isEgg) - sUnknown_203B158->sprite->invisible = TRUE; + if (sMonSummaryScreen->curMonStatusAilment == AILMENT_NONE || sMonSummaryScreen->isEgg) + sStatusIcon->sprite->invisible = TRUE; else - sUnknown_203B158->sprite->invisible = invisible; + sStatusIcon->sprite->invisible = invisible; if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) { - if (sUnknown_203B158->sprite->pos1.y != 45) + if (sStatusIcon->sprite->pos1.y != 45) { - sUnknown_203B158->sprite->pos1.x = 16; - sUnknown_203B158->sprite->pos1.y = 45; + sStatusIcon->sprite->pos1.x = 16; + sStatusIcon->sprite->pos1.y = 45; return; } } - else if (sUnknown_203B158->sprite->pos1.y != 38) + else if (sStatusIcon->sprite->pos1.y != 38) { - sUnknown_203B158->sprite->pos1.x = 16; - sUnknown_203B158->sprite->pos1.y = 38; + sStatusIcon->sprite->pos1.x = 16; + sStatusIcon->sprite->pos1.y = 38; return; } } -static void sub_813A45C(u16 tileTag, u16 palTag) +static void CreateHpBarObjs(u16 tileTag, u16 palTag) { u8 i; u8 spriteId; @@ -4373,9 +4397,9 @@ static void sub_813A45C(u16 tileTag, u16 palTag) u32 maxHp; u8 hpBarPalTagOffset = 0; - sUnknown_203B15C = AllocZeroed(sizeof(struct Struct203B15C)); + sHpBarObjs = AllocZeroed(sizeof(struct HpBarObjs)); gfxBufferPtr = AllocZeroed(0x20 * 12); - LZ77UnCompWram(gUnknown_8E9B4B8, gfxBufferPtr); + LZ77UnCompWram(gPokeSummary_HpBarTiles, gfxBufferPtr); curHp = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_HP); maxHp = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MAX_HP); @@ -4393,9 +4417,9 @@ static void sub_813A45C(u16 tileTag, u16 palTag) .tag = tileTag }; - struct SpritePalette palette1 = {.data = sUnknown_8463FFC[0], .tag = palTag}; - struct SpritePalette palette2 = {.data = sUnknown_8463FFC[1], .tag = palTag + 1}; - struct SpritePalette palette3 = {.data = sUnknown_8463FFC[2], .tag = palTag + 2}; + struct SpritePalette palette1 = {.data = sHpBarPals[0], .tag = palTag}; + struct SpritePalette palette2 = {.data = sHpBarPals[1], .tag = palTag + 1}; + struct SpritePalette palette3 = {.data = sHpBarPals[2], .tag = palTag + 2}; LoadSpriteSheet(&sheet); LoadSpritePalette(&palette1); @@ -4408,30 +4432,30 @@ static void sub_813A45C(u16 tileTag, u16 palTag) struct SpriteTemplate template = { .tileTag = tileTag, .paletteTag = palTag + hpBarPalTagOffset, - .oam = &sUnknown_8463A14, - .anims = sUnknown_8463A7C, + .oam = &sHpOrExpBarOamData, + .anims = sHpOrExpBarAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }; - sUnknown_203B15C->unk28[i] = i * 8 + 172; - spriteId = CreateSprite(&template, sUnknown_203B15C->unk28[i], 36, 0); - sUnknown_203B15C->sprites[i] = &gSprites[spriteId]; - sUnknown_203B15C->sprites[i]->invisible = FALSE; - sUnknown_203B15C->sprites[i]->oam.priority = 2; - sUnknown_203B15C->unk3C = tileTag; - sUnknown_203B15C->unk3E = palTag; - StartSpriteAnim(sUnknown_203B15C->sprites[i], 8); + sHpBarObjs->xpos[i] = i * 8 + 172; + spriteId = CreateSprite(&template, sHpBarObjs->xpos[i], 36, 0); + sHpBarObjs->sprites[i] = &gSprites[spriteId]; + sHpBarObjs->sprites[i]->invisible = FALSE; + sHpBarObjs->sprites[i]->oam.priority = 2; + sHpBarObjs->tileTag = tileTag; + sHpBarObjs->palTag = palTag; + StartSpriteAnim(sHpBarObjs->sprites[i], 8); } - sub_813A620(); - sub_813A838(1); + UpdateHpBarObjs(); + ShowOrHideHpBarObjs(TRUE); FREE_AND_SET_NULL_IF_SET(gfxBufferPtr); } -static void sub_813A620(void) +static void UpdateHpBarObjs(void) { u8 numWholeHpBarTiles = 0; u8 i; @@ -4440,8 +4464,8 @@ static void sub_813A620(void) u8 hpBarPalOffset = 0; u32 curHp; u32 maxHp; - s64 v0; - s64 v1; + s64 pointsPerTile; + s64 totalPoints; if (sMonSummaryScreen->isEgg) return; @@ -4469,71 +4493,71 @@ static void sub_813A620(void) } for (i = 0; i < 9; i++) - sUnknown_203B15C->sprites[i]->oam.paletteNum = IndexOfSpritePaletteTag(TAG_PSS_UNK_78) + hpBarPalOffset; + sHpBarObjs->sprites[i]->oam.paletteNum = IndexOfSpritePaletteTag(TAG_PSS_UNK_78) + hpBarPalOffset; if (curHp == maxHp) for (i = two; i < 8; i++) - StartSpriteAnim(sUnknown_203B15C->sprites[i], 8); + StartSpriteAnim(sHpBarObjs->sprites[i], 8); else { - v0 = (maxHp << 2) / 6; - v1 = (curHp << 2); + pointsPerTile = (maxHp << 2) / 6; + totalPoints = (curHp << 2); while (TRUE) { - if (v1 <= v0) + if (totalPoints <= pointsPerTile) break; - v1 -= v0; + totalPoints -= pointsPerTile; numWholeHpBarTiles++; } numWholeHpBarTiles += two; for (i = two; i < numWholeHpBarTiles; i++) - StartSpriteAnim(sUnknown_203B15C->sprites[i], 8); + StartSpriteAnim(sHpBarObjs->sprites[i], 8); - animNum = (v1 * 6) / v0; - StartSpriteAnim(sUnknown_203B15C->sprites[numWholeHpBarTiles], animNum); + animNum = (totalPoints * 6) / pointsPerTile; + StartSpriteAnim(sHpBarObjs->sprites[numWholeHpBarTiles], animNum); for (i = numWholeHpBarTiles + 1; i < 8; i++) - StartSpriteAnim(sUnknown_203B15C->sprites[i], 0); + StartSpriteAnim(sHpBarObjs->sprites[i], 0); } - StartSpriteAnim(sUnknown_203B15C->sprites[0], 9); - StartSpriteAnim(sUnknown_203B15C->sprites[1], 10); - StartSpriteAnim(sUnknown_203B15C->sprites[8], 11); + StartSpriteAnim(sHpBarObjs->sprites[0], 9); + StartSpriteAnim(sHpBarObjs->sprites[1], 10); + StartSpriteAnim(sHpBarObjs->sprites[8], 11); } -static void sub_813A800(void) +static void DestroyHpBarObjs(void) { u8 i; for (i = 0; i < 9; i++) - if (sUnknown_203B15C->sprites[i] != NULL) - DestroySpriteAndFreeResources(sUnknown_203B15C->sprites[i]); + if (sHpBarObjs->sprites[i] != NULL) + DestroySpriteAndFreeResources(sHpBarObjs->sprites[i]); - FREE_AND_SET_NULL_IF_SET(sUnknown_203B15C); + FREE_AND_SET_NULL_IF_SET(sHpBarObjs); } -static void sub_813A838(u8 invisible) +static void ShowOrHideHpBarObjs(u8 invisible) { u8 i; for (i = 0; i < 9; i++) - sUnknown_203B15C->sprites[i]->invisible = invisible; + sHpBarObjs->sprites[i]->invisible = invisible; } -static void sub_813A874(u16 tileTag, u16 palTag) +static void CreateExpBarObjs(u16 tileTag, u16 palTag) { u8 i; u8 spriteId; void * gfxBufferPtr; - sUnknown_203B160 = AllocZeroed(sizeof(struct Struct203B160)); + sExpBarObjs = AllocZeroed(sizeof(struct ExpBarObjs)); gfxBufferPtr = AllocZeroed(0x20 * 12); - LZ77UnCompWram(gUnknown_8E9B3F0, gfxBufferPtr); + LZ77UnCompWram(gPokeSummary_ExpBarTiles, gfxBufferPtr); if (gfxBufferPtr != NULL) { struct SpriteSheet sheet = { @@ -4542,7 +4566,7 @@ static void sub_813A874(u16 tileTag, u16 palTag) .tag = tileTag }; - struct SpritePalette palette = {.data = gUnknown_8E9B578, .tag = palTag}; + struct SpritePalette palette = {.data = gPokeSummary_ExpBarPals, .tag = palTag}; LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); } @@ -4552,28 +4576,28 @@ static void sub_813A874(u16 tileTag, u16 palTag) struct SpriteTemplate template = { .tileTag = tileTag, .paletteTag = palTag, - .oam = &sUnknown_8463A14, - .anims = sUnknown_8463A7C, + .oam = &sHpOrExpBarOamData, + .anims = sHpOrExpBarAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }; - sUnknown_203B160->unk2C[i] = i * 8 + 156; - spriteId = CreateSprite(&template, sUnknown_203B160->unk2C[i], 132, 0); - sUnknown_203B160->sprites[i] = &gSprites[spriteId]; - sUnknown_203B160->sprites[i]->oam.priority = 2; - sUnknown_203B160->unk42 = tileTag; - sUnknown_203B160->unk44 = palTag; + sExpBarObjs->xpos[i] = i * 8 + 156; + spriteId = CreateSprite(&template, sExpBarObjs->xpos[i], 132, 0); + sExpBarObjs->sprites[i] = &gSprites[spriteId]; + sExpBarObjs->sprites[i]->oam.priority = 2; + sExpBarObjs->tileTag = tileTag; + sExpBarObjs->palTag = palTag; } - sub_813A994(); - sub_813AB70(1); + UpdateExpBarObjs(); + ShowOrHideExpBarObjs(TRUE); FREE_AND_SET_NULL_IF_SET(gfxBufferPtr); } -static void sub_813A994(void) +static void UpdateExpBarObjs(void) { u8 numWholeExpBarTiles = 0; u8 i; @@ -4582,8 +4606,8 @@ static void sub_813A994(void) u32 totalExpToNextLevel; u32 curExpToNextLevel; u16 species; - s64 v0; - s64 v1; + s64 pointsPerTile; + s64 totalPoints; u8 animNum; u8 two = 2; @@ -4598,75 +4622,75 @@ static void sub_813A994(void) { totalExpToNextLevel = gExperienceTables[gBaseStats[species].growthRate][level + 1] - gExperienceTables[gBaseStats[species].growthRate][level]; curExpToNextLevel = exp - gExperienceTables[gBaseStats[species].growthRate][level]; - v0 = ((totalExpToNextLevel << 2) / 8); - v1 = (curExpToNextLevel << 2); + pointsPerTile = ((totalExpToNextLevel << 2) / 8); + totalPoints = (curExpToNextLevel << 2); while (TRUE) { - if (v1 <= v0) + if (totalPoints <= pointsPerTile) break; - v1 -= v0; + totalPoints -= pointsPerTile; numWholeExpBarTiles++; } numWholeExpBarTiles += two; for (i = two; i < numWholeExpBarTiles; i++) - StartSpriteAnim(sUnknown_203B160->sprites[i], 8); + StartSpriteAnim(sExpBarObjs->sprites[i], 8); if (numWholeExpBarTiles >= 10) { if (totalExpToNextLevel == curExpToNextLevel) return; else - StartSpriteAnim(sUnknown_203B160->sprites[9], 7); + StartSpriteAnim(sExpBarObjs->sprites[9], 7); } - animNum = (v1 * 8) / v0; - StartSpriteAnim(sUnknown_203B160->sprites[numWholeExpBarTiles], animNum); + animNum = (totalPoints * 8) / pointsPerTile; + StartSpriteAnim(sExpBarObjs->sprites[numWholeExpBarTiles], animNum); for (i = numWholeExpBarTiles + 1; i < 10; i++) - StartSpriteAnim(sUnknown_203B160->sprites[i], 0); + StartSpriteAnim(sExpBarObjs->sprites[i], 0); } else for (i = two; i < 10; i++) - StartSpriteAnim(sUnknown_203B160->sprites[i], 0); + StartSpriteAnim(sExpBarObjs->sprites[i], 0); - StartSpriteAnim(sUnknown_203B160->sprites[0], 9); - StartSpriteAnim(sUnknown_203B160->sprites[1], 10); - StartSpriteAnim(sUnknown_203B160->sprites[10], 11); + StartSpriteAnim(sExpBarObjs->sprites[0], 9); + StartSpriteAnim(sExpBarObjs->sprites[1], 10); + StartSpriteAnim(sExpBarObjs->sprites[10], 11); } -static void sub_813AB38(void) +static void DestroyExpBarObjs(void) { u8 i; for (i = 0; i < 11; i++) - if (sUnknown_203B160->sprites[i] != NULL) - DestroySpriteAndFreeResources(sUnknown_203B160->sprites[i]); + if (sExpBarObjs->sprites[i] != NULL) + DestroySpriteAndFreeResources(sExpBarObjs->sprites[i]); - FREE_AND_SET_NULL_IF_SET(sUnknown_203B160); + FREE_AND_SET_NULL_IF_SET(sExpBarObjs); } -static void sub_813AB70(u8 invisible) +static void ShowOrHideExpBarObjs(u8 invisible) { u8 i; for (i = 0; i < 11; i++) - sUnknown_203B160->sprites[i]->invisible = invisible; + sExpBarObjs->sprites[i]->invisible = invisible; } -static void sub_813ABAC(u16 tileTag, u16 palTag) +static void CreatePokerusIconObj(u16 tileTag, u16 palTag) { u16 spriteId; void * gfxBufferPtr; - sUnknown_203B164 = AllocZeroed(sizeof(struct Struct203B164)); + sPokerusIconObj = AllocZeroed(sizeof(struct PokerusIconObj)); gfxBufferPtr = AllocZeroed(0x20 * 1); - LZ77UnCompWram(sUnknown_8463B20, gfxBufferPtr); + LZ77UnCompWram(sPokerusIconObjTiles, gfxBufferPtr); - if (sUnknown_203B164 != NULL) + if (sPokerusIconObj != NULL) { struct SpriteSheet sheet = { .data = gfxBufferPtr, @@ -4674,12 +4698,12 @@ static void sub_813ABAC(u16 tileTag, u16 palTag) .tag = tileTag }; - struct SpritePalette palette = {.data = sUnknown_8463B00, .tag = palTag}; + struct SpritePalette palette = {.data = sPokerusIconObjPal, .tag = palTag}; struct SpriteTemplate template = { .tileTag = tileTag, .paletteTag = palTag, - .oam = &sUnknown_8463AEC, - .anims = sUnknown_8463AFC, + .oam = &sPokerusIconObjOamData, + .anims = sPokerusIconObjAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, @@ -4689,69 +4713,69 @@ static void sub_813ABAC(u16 tileTag, u16 palTag) LoadSpritePalette(&palette); spriteId = CreateSprite(&template, 114, 92, 0); - sUnknown_203B164->sprite = &gSprites[spriteId]; - sUnknown_203B164->unk04 = tileTag; - sUnknown_203B164->unk06 = palTag; + sPokerusIconObj->sprite = &gSprites[spriteId]; + sPokerusIconObj->tileTag = tileTag; + sPokerusIconObj->palTag = palTag; } - sub_813ACF8(1); - sub_813ACB4(); + HideShowPokerusIcon(TRUE); + ShowPokerusIconObjIfHasOrHadPokerus(); FREE_AND_SET_NULL_IF_SET(gfxBufferPtr); } -static void sub_813AC8C(void) +static void DestroyPokerusIconObj(void) { - if (sUnknown_203B164->sprite != NULL) - DestroySpriteAndFreeResources(sUnknown_203B164->sprite); + if (sPokerusIconObj->sprite != NULL) + DestroySpriteAndFreeResources(sPokerusIconObj->sprite); - FREE_AND_SET_NULL_IF_SET(sUnknown_203B164); + FREE_AND_SET_NULL_IF_SET(sPokerusIconObj); } -static void sub_813ACB4(void) +static void ShowPokerusIconObjIfHasOrHadPokerus(void) { if (!CheckPartyPokerus(&sMonSummaryScreen->currentMon, 0) && CheckPartyHasHadPokerus(&sMonSummaryScreen->currentMon, 0)) - sub_813ACF8(0); + HideShowPokerusIcon(FALSE); else - sub_813ACF8(1); + HideShowPokerusIcon(TRUE); } -static void sub_813ACF8(u8 invisible) +static void HideShowPokerusIcon(bool8 invisible) { if (!CheckPartyPokerus(&sMonSummaryScreen->currentMon, 0) && CheckPartyHasHadPokerus(&sMonSummaryScreen->currentMon, 0)) { - sUnknown_203B164->sprite->invisible = invisible; + sPokerusIconObj->sprite->invisible = invisible; return; } else - sUnknown_203B164->sprite->invisible = TRUE; + sPokerusIconObj->sprite->invisible = TRUE; if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) { - sUnknown_203B164->sprite->invisible = TRUE; - sUnknown_203B164->sprite->pos1.x = 16; - sUnknown_203B164->sprite->pos1.y = 44; + sPokerusIconObj->sprite->invisible = TRUE; + sPokerusIconObj->sprite->pos1.x = 16; + sPokerusIconObj->sprite->pos1.y = 44; } else { - sUnknown_203B164->sprite->pos1.x = 114; - sUnknown_203B164->sprite->pos1.y = 92; + sPokerusIconObj->sprite->pos1.x = 114; + sPokerusIconObj->sprite->pos1.y = 92; } } -static void sub_813ADA8(u16 tileTag, u16 palTag) +static void CreateShinyStarObj(u16 tileTag, u16 palTag) { u16 spriteId; void * gfxBufferPtr; - sUnknown_203B168 = AllocZeroed(sizeof(struct Struct203B168)); + sShinyStarObjData = AllocZeroed(sizeof(struct ShinyStarObjData)); gfxBufferPtr = AllocZeroed(0x20 * 2); - LZ77UnCompWram(sUnknown_8463B64, gfxBufferPtr); + LZ77UnCompWram(sStarObjTiles, gfxBufferPtr); - if (sUnknown_203B168 != NULL) + if (sShinyStarObjData != NULL) { struct SpriteSheet sheet = { .data = gfxBufferPtr, @@ -4759,12 +4783,12 @@ static void sub_813ADA8(u16 tileTag, u16 palTag) .tag = tileTag }; - struct SpritePalette palette = {.data = sUnknown_8463B44, .tag = palTag}; + struct SpritePalette palette = {.data = sStarObjPal, .tag = palTag}; struct SpriteTemplate template = { .tileTag = tileTag, .paletteTag = palTag, - .oam = &sUnknown_8463B30, - .anims = sUnknown_8463B40, + .oam = &sStarObjOamData, + .anims = sStarObjAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, @@ -4773,89 +4797,89 @@ static void sub_813ADA8(u16 tileTag, u16 palTag) LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); spriteId = CreateSprite(&template, 106, 40, 0); - sUnknown_203B168->sprite = &gSprites[spriteId]; - sUnknown_203B168->unk04 = tileTag; - sUnknown_203B168->unk06 = palTag; + sShinyStarObjData->sprite = &gSprites[spriteId]; + sShinyStarObjData->tileTag = tileTag; + sShinyStarObjData->palTag = palTag; } - sub_813AEB0(1); - sub_813AF50(); + HideShowShinyStar(TRUE); + ShowShinyStarObjIfMonShiny(); FREE_AND_SET_NULL_IF_SET(gfxBufferPtr); } -static void sub_813AE88(void) +static void DestroyShinyStarObj(void) { - if (sUnknown_203B168->sprite != NULL) - DestroySpriteAndFreeResources(sUnknown_203B168->sprite); + if (sShinyStarObjData->sprite != NULL) + DestroySpriteAndFreeResources(sShinyStarObjData->sprite); - FREE_AND_SET_NULL_IF_SET(sUnknown_203B168); + FREE_AND_SET_NULL_IF_SET(sShinyStarObjData); } -static void sub_813AEB0(u8 invisible) +static void HideShowShinyStar(bool8 invisible) { if (IsMonShiny(&sMonSummaryScreen->currentMon) == TRUE && !sMonSummaryScreen->isEgg) - sUnknown_203B168->sprite->invisible = invisible; + sShinyStarObjData->sprite->invisible = invisible; else - sUnknown_203B168->sprite->invisible = TRUE; + sShinyStarObjData->sprite->invisible = TRUE; if (sMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO) { - sUnknown_203B168->sprite->pos1.x = 8; - sUnknown_203B168->sprite->pos1.y = 24; + sShinyStarObjData->sprite->pos1.x = 8; + sShinyStarObjData->sprite->pos1.y = 24; } else { - sUnknown_203B168->sprite->pos1.x = 106; - sUnknown_203B168->sprite->pos1.y = 40; + sShinyStarObjData->sprite->pos1.x = 106; + sShinyStarObjData->sprite->pos1.y = 40; } } -static void sub_813AF50(void) +static void ShowShinyStarObjIfMonShiny(void) { if (IsMonShiny(&sMonSummaryScreen->currentMon) == TRUE && !sMonSummaryScreen->isEgg) - sub_813AEB0(0); + HideShowShinyStar(FALSE); else - sub_813AEB0(1); + HideShowShinyStar(TRUE); } -static void sub_813AF90(void) +static void PokeSum_DestroySprites(void) { - sub_813A21C(); - sub_813A800(); - sub_813AB38(); - sub_8139C80(); - sub_8139F20(); - sub_8139D90(); - sub_813B068(); - sub_813A334(); - sub_813AC8C(); - sub_813AE88(); + DestroyMoveSelectionCursorObjs(); + DestroyHpBarObjs(); + DestroyExpBarObjs(); + PokeSum_DestroyMonPicSprite(); + PokeSum_DestroyMonIconSprite(); + DestroyBallIconObj(); + PokeSum_DestroyMonMarkingsSprite(); + DestroyMonStatusIconObj(); + DestroyPokerusIconObj(); + DestroyShinyStarObj(); ResetSpriteData(); } -static void sub_813AFC4(void) +static void PokeSum_CreateSprites(void) { - sub_8139CB0(); - sub_8139D54(0); - sub_8139DBC(); - sub_813995C(); - sub_8139C44(0); - sub_813A620(); - sub_813A994(); - sub_813B0E4(); - sub_813A35C(); - sub_813ACB4(); - sub_813AF50(); + CreateBallIconObj(); + ShowOrHideBallIconObj(FALSE); + PokeSum_CreateMonIconSprite(); + PokeSum_CreateMonPicSprite(); + PokeSum_ShowOrHideMonPicSprite(FALSE); + UpdateHpBarObjs(); + UpdateExpBarObjs(); + PokeSum_UpdateMonMarkingsAnim(); + UpdateMonStatusIconObj(); + ShowPokerusIconObjIfHasOrHadPokerus(); + ShowShinyStarObjIfMonShiny(); } -static void sub_813AFFC(void) +static void PokeSum_CreateMonMarkingsSprite(void) { u32 markings = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MARKINGS); DestroySpriteAndFreeResources(sMonSummaryScreen->markingSprite); - sMonSummaryScreen->markingSprite = CreateMonMarkingSprite_SelectCombo(TAG_PSS_UNK_8C, TAG_PSS_UNK_8C, sUnknown_84636E0); + sMonSummaryScreen->markingSprite = CreateMonMarkingSprite_SelectCombo(TAG_PSS_UNK_8C, TAG_PSS_UNK_8C, sMonMarkingSpritePalette); if (sMonSummaryScreen->markingSprite != NULL) { @@ -4864,15 +4888,15 @@ static void sub_813AFFC(void) sMonSummaryScreen->markingSprite->pos1.y = 91; } - sub_813B084(1); + PokeSum_ShowOrHideMonMarkingsSprite(TRUE); } -static void sub_813B068(void) +static void PokeSum_DestroyMonMarkingsSprite(void) { DestroySpriteAndFreeResources(sMonSummaryScreen->markingSprite); } -static void sub_813B084(u8 invisible) +static void PokeSum_ShowOrHideMonMarkingsSprite(u8 invisible) { u32 markings = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MARKINGS); @@ -4882,162 +4906,163 @@ static void sub_813B084(u8 invisible) sMonSummaryScreen->markingSprite->invisible = invisible; } -static void sub_813B0E4(void) +static void PokeSum_UpdateMonMarkingsAnim(void) { u32 markings = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MARKINGS); StartSpriteAnim(sMonSummaryScreen->markingSprite, markings); - sub_813B084(0); + PokeSum_ShowOrHideMonMarkingsSprite(FALSE); } -static void sub_813B120(u8 taskId, s8 a1) +static void PokeSum_SeekToNextMon(u8 taskId, s8 direction) { - s8 v0 = -1; + s8 scrollResult = -1; if (sMonSummaryScreen->isBoxMon == TRUE) { - if (sMonSummaryScreen->curPageIndex != 0) + if (sMonSummaryScreen->curPageIndex != PSS_PAGE_INFO) { - if (a1 == 1) - a1 = 0; + if (direction == 1) + direction = 0; else - a1 = 2; + direction = 2; } else { - if (a1 == 1) - a1 = 1; + // Allow Eggs + if (direction == 1) + direction = 1; else - a1 = 3; + direction = 3; } - v0 = SeekToNextMonInBox(sMonSummaryScreen->monList.boxMons, GetLastViewedMonIndex(), sMonSummaryScreen->lastIndex, (u8)a1); + scrollResult = SeekToNextMonInBox(sMonSummaryScreen->monList.boxMons, GetLastViewedMonIndex(), sMonSummaryScreen->lastIndex, (u8)direction); } else { if (IsUpdateLinkStateCBActive() == FALSE && gReceivedRemoteLinkPlayers == 1 && IsMultiBattle() == TRUE) - v0 = sub_813B38C(a1); + scrollResult = SeekToNextMonInMultiParty(direction); else - v0 = sub_813B20C(a1); + scrollResult = SeekToNextMonInSingleParty(direction); } - if (v0 == -1) + if (scrollResult == -1) return; - sLastViewedMonIndex = v0; - CreateTask(sub_813B3F0, 0); - sMonSummaryScreen->unk328C = 0; + sLastViewedMonIndex = scrollResult; + CreateTask(Task_PokeSum_SwitchDisplayedPokemon, 0); + sMonSummaryScreen->switchMonTaskState = 0; } -static s8 sub_813B20C(s8 a0) +static s8 SeekToNextMonInSingleParty(s8 direction) { struct Pokemon * partyMons = sMonSummaryScreen->monList.mons; - s8 v1 = 0; + s8 seekDelta = 0; if (sMonSummaryScreen->curPageIndex == 0) { - if (a0 == -1 && sLastViewedMonIndex == 0) + if (direction == -1 && sLastViewedMonIndex == 0) return -1; - else if (a0 == 1 && sLastViewedMonIndex >= sMonSummaryScreen->lastIndex) + else if (direction == 1 && sLastViewedMonIndex >= sMonSummaryScreen->lastIndex) return -1; else - return sLastViewedMonIndex + a0; + return sLastViewedMonIndex + direction; } while (TRUE) { - v1 += a0; - if (0 > sLastViewedMonIndex + v1 || sLastViewedMonIndex + v1 > sMonSummaryScreen->lastIndex) + seekDelta += direction; + if (0 > sLastViewedMonIndex + seekDelta || sLastViewedMonIndex + seekDelta > sMonSummaryScreen->lastIndex) return -1; - if (GetMonData(&partyMons[sLastViewedMonIndex + v1], MON_DATA_IS_EGG) == 0) - return sLastViewedMonIndex + v1; + if (GetMonData(&partyMons[sLastViewedMonIndex + seekDelta], MON_DATA_IS_EGG) == 0) + return sLastViewedMonIndex + seekDelta; } return -1; } -static u8 sub_813B2C8(struct Pokemon * partyMons) +static u8 PokeSum_CanSeekToMon(struct Pokemon * partyMons) { - if (GetMonData(partyMons, MON_DATA_SPECIES) != 0 && (sMonSummaryScreen->curPageIndex != 0 || GetMonData(partyMons, MON_DATA_IS_EGG) == 0)) + if (GetMonData(partyMons, MON_DATA_SPECIES) != SPECIES_NONE && (sMonSummaryScreen->curPageIndex != PSS_PAGE_INFO || !GetMonData(partyMons, MON_DATA_IS_EGG))) return TRUE; return FALSE; } -static s8 sub_813B304(u8 a0) +static s8 SeekToMonInMultiParty_SeekForward(u8 startingIdx) { while (TRUE) { - a0++; + startingIdx++; - if (a0 == 6) + if (startingIdx == 6) return -1; - if (sub_813B2C8(&gPlayerParty[sUnknown_8463FB8[a0]]) == TRUE) + if (PokeSum_CanSeekToMon(&gPlayerParty[sMultiBattlePartyOrder[startingIdx]]) == TRUE) break; } - return (s8)sUnknown_8463FB8[a0]; + return (s8)sMultiBattlePartyOrder[startingIdx]; } -static s8 sub_813B348(u8 a0) +static s8 SeekToMonInMultiParty_SeekBack(u8 startingIdx) { while (1) { - if (a0 == 0) + if (startingIdx == 0) return -1; - a0--; + startingIdx--; - if (sub_813B2C8(&gPlayerParty[sUnknown_8463FB8[a0]]) == TRUE) + if (PokeSum_CanSeekToMon(&gPlayerParty[sMultiBattlePartyOrder[startingIdx]]) == TRUE) break; } - return (s8)(sUnknown_8463FB8[a0]); + return (s8)(sMultiBattlePartyOrder[startingIdx]); } -static s8 sub_813B38C(s8 a0) +static s8 SeekToNextMonInMultiParty(s8 direction) { - u8 v0 = 0; + u8 foundPartyIdx = 0; u8 i; for (i = 0; i < PARTY_SIZE; i++) - if (sUnknown_8463FB8[i] == GetLastViewedMonIndex()) + if (sMultiBattlePartyOrder[i] == GetLastViewedMonIndex()) { - v0 = i; + foundPartyIdx = i; break; } - if ((a0 == -1 && v0 == 0) - || (a0 == 1 && v0 == 5)) + if ((direction == -1 && foundPartyIdx == 0) + || (direction == 1 && foundPartyIdx == 5)) return -1; - if (a0 == 1) - return sub_813B304(v0); + if (direction == 1) + return SeekToMonInMultiParty_SeekForward(foundPartyIdx); else - return sub_813B348(v0); + return SeekToMonInMultiParty_SeekBack(foundPartyIdx); } -static void sub_813B3F0(u8 id) +static void Task_PokeSum_SwitchDisplayedPokemon(u8 taskId) { - switch (sMonSummaryScreen->unk328C) + switch (sMonSummaryScreen->switchMonTaskState) { case 0: StopCryAndClearCrySongs(); - sUnknown_203B16D = 0; - sUnknown_203B16E = 0; - sMonSummaryScreen->unk328C++; + sMoveSelectionCursorPos = 0; + sMoveSwapCursorPos = 0; + sMonSummaryScreen->switchMonTaskState++; break; case 1: - sub_8139C80(); - sub_8139F20(); - sub_8139D90(); - sMonSummaryScreen->unk328C++; + PokeSum_DestroyMonPicSprite(); + PokeSum_DestroyMonIconSprite(); + DestroyBallIconObj(); + sMonSummaryScreen->switchMonTaskState++; break; case 2: - sub_8138B8C(&sMonSummaryScreen->currentMon); + BufferSelectedMonData(&sMonSummaryScreen->currentMon); sMonSummaryScreen->isEgg = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_IS_EGG); sMonSummaryScreen->isBadEgg = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SANITY_IS_BAD_EGG); @@ -5045,97 +5070,97 @@ static void sub_813B3F0(u8 id) if (sMonSummaryScreen->isBadEgg == TRUE) sMonSummaryScreen->isEgg = TRUE; - sMonSummaryScreen->unk328C++; + sMonSummaryScreen->switchMonTaskState++; break; case 3: FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); if (IsMonShiny(&sMonSummaryScreen->currentMon) == TRUE && !sMonSummaryScreen->isEgg) { - LoadPalette(&gUnknown_8E9B310[16 * 6], 0, 0x20); - LoadPalette(&gUnknown_8E9B310[16 * 5], 0x10, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 6], 0, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 5], 0x10, 0x20); } else { - LoadPalette(&gUnknown_8E9B310[16 * 0], 0, 0x20); - LoadPalette(&gUnknown_8E9B310[16 * 1], 0x10, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 0], 0, 0x20); + LoadPalette(&gTrainerMemoPal1[16 * 1], 0x10, 0x20); } - sMonSummaryScreen->unk328C++; + sMonSummaryScreen->switchMonTaskState++; break; case 4: if (sMonSummaryScreen->curPageIndex == PSS_PAGE_INFO) { if (sMonSummaryScreen->isEgg) { - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9BBCC, 0, 0); - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_TrainerMemo_Egg, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_TrainerMemo_Stats, 0, 0); } else { - CopyToBgTilemapBuffer(sMonSummaryScreen->unk323C, gUnknown_8E9B598, 0, 0); - CopyToBgTilemapBuffer(sMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->skillsPageBgNum, gBgTilemap_TrainerMemo_Details, 0, 0); + CopyToBgTilemapBuffer(sMonSummaryScreen->infoAndMovesPageBgNum, gBgTilemap_TrainerMemo_Stats, 0, 0); } } - sMonSummaryScreen->unk328C++; + sMonSummaryScreen->switchMonTaskState++; break; case 5: - sub_81360D4(); - sMonSummaryScreen->unk328C++; + BufferMonInfo(); + sMonSummaryScreen->switchMonTaskState++; break; case 6: if (!sMonSummaryScreen->isEgg) - sub_8136350(); + BufferMonSkills(); - sMonSummaryScreen->unk328C++; + sMonSummaryScreen->switchMonTaskState++; break; case 7: if (!sMonSummaryScreen->isEgg) - sub_81367B0(); + BufferMonMoves(); - sMonSummaryScreen->unk328C++; + sMonSummaryScreen->switchMonTaskState++; break; case 8: - sub_8136F4C(); - sub_81374E8(); - sub_8137BD0(); - sMonSummaryScreen->unk328C++; + PokeSum_PrintRightPaneText(); + PokeSum_PrintBottomPaneText(); + PokeSum_PrintAbilityDataOrMoveTypes(); + sMonSummaryScreen->switchMonTaskState++; break; case 9: - sub_8138A38(); - sub_8138538(); - sub_8137D28(sMonSummaryScreen->curPageIndex); - sMonSummaryScreen->unk328C++; + PokeSum_PrintMonTypeIcons(); + PokeSum_DrawBg3Tilemap(); + PokeSum_PrintPageHeaderText(sMonSummaryScreen->curPageIndex); + sMonSummaryScreen->switchMonTaskState++; break; case 10: - CopyWindowToVram(sMonSummaryScreen->unk3000[0], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[1], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[2], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[6], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[3], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[4], 2); - CopyWindowToVram(sMonSummaryScreen->unk3000[5], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_PAGE_NAME], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_CONTROLS], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_LVL_NICK], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[6], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_TRAINER_MEMO], 2); + CopyWindowToVram(sMonSummaryScreen->windowIds[5], 2); CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - sMonSummaryScreen->unk328C++; + sMonSummaryScreen->switchMonTaskState++; break; case 11: - if (!Overworld_LinkRecvQueueLengthMoreThan2() && !sub_800B270()) + if (!Overworld_LinkRecvQueueLengthMoreThan2() && !LinkRecvQueueLengthMoreThan2()) { - sub_813AFC4(); - sub_813B784(); - sMonSummaryScreen->unk328C++; + PokeSum_CreateSprites(); + PokeSum_TryPlayMonCry(); + sMonSummaryScreen->switchMonTaskState++; } break; default: - sMonSummaryScreen->unk328C = 0; - DestroyTask(id); + sMonSummaryScreen->switchMonTaskState = 0; + DestroyTask(taskId); break; } } -static void sub_813B750(u8 curPageIndex) +static void PokeSum_UpdateWin1ActiveFlag(u8 curPageIndex) { ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); @@ -5151,7 +5176,7 @@ static void sub_813B750(u8 curPageIndex) } } -static void sub_813B784(void) +static void PokeSum_TryPlayMonCry(void) { if (!GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_IS_EGG)) { @@ -5162,7 +5187,7 @@ static void sub_813B784(void) } } -static bool32 sub_813B7E0(u8 nature) +static bool32 PokeSum_IsMonBoldOrGentle(u8 nature) { if (nature == NATURE_BOLD || nature == NATURE_GENTLE) return TRUE; @@ -5170,7 +5195,7 @@ static bool32 sub_813B7E0(u8 nature) return FALSE; } -static bool32 sub_813B7F8(void) +static bool32 CurrentMonIsFromGBA(void) { u8 version = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MET_GAME); @@ -5184,14 +5209,15 @@ static bool32 sub_813B7F8(void) return FALSE; } -static bool32 sub_813B838(u8 place) +static bool32 MapSecIsInKantoOrSevii(u8 mapSec) { - if (place >= MAPSECS_KANTO && place < MAPSEC_NONE) + if (mapSec >= MAPSECS_KANTO && mapSec < MAPSEC_NONE) return TRUE; return FALSE; } -static void sub_813B854(void) +UNUSED +static void Unused_ShowPokemonSummaryScreen_NullParty(void) { - ShowPokemonSummaryScreen(0, 0, 0, CB2_ReturnToField, PSS_MODE_NORMAL); + ShowPokemonSummaryScreen(NULL, 0, 0, CB2_ReturnToField, PSS_MODE_NORMAL); } diff --git a/src/quest_log_player.c b/src/quest_log_player.c index 4dcb13af2..ba672c482 100644 --- a/src/quest_log_player.c +++ b/src/quest_log_player.c @@ -69,7 +69,7 @@ static void QL_GfxTransition_Bike(void) QL_SetObjectGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_BIKE)); ObjectEventTurn(objectEvent, objectEvent->movementDirection); SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_MACH_BIKE); - InitPlayerAvatarBikeState(0, 0); + BikeClearState(0, 0); } static void QL_GfxTransition_Fish(void) diff --git a/src/region_map.c b/src/region_map.c index c964fcf5a..858c5754d 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -511,9 +511,9 @@ static const struct WindowTemplate sRegionMapWindowTemplates[] = { }, DUMMY_WIN_TEMPLATE }; -ALIGNED(4) const u8 sTextColor_White[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; -ALIGNED(4) const u8 sTextColor_Green[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREEN, TEXT_COLOR_DARK_GREY}; -ALIGNED(4) const u8 sTextColor_Red[] = {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GREY}; +ALIGNED(4) const u8 sTextColor_White[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}; +ALIGNED(4) const u8 sTextColor_Green[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREEN, TEXT_COLOR_DARK_GRAY}; +ALIGNED(4) const u8 sTextColor_Red[] = {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GRAY}; static const u8 *const sTextColorTable[] = { [MAPSECTYPE_VISITED - 2] = sTextColor_Green, @@ -812,7 +812,7 @@ static const u8 sWinRegs[][2] = { {REG_OFFSET_WIN1V, REG_OFFSET_WIN1H} }; -static const u8 sTextColors[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; +static const u8 sTextColors[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}; static const u8 *const sMapNames[] = { [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = gMapSecName_PalletTown, diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 9c29323ba..7fd2f0f9f 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -153,7 +153,7 @@ static void ClearMapBuffer(void) static void PrintTextOnSaveFailedScreen(const u8 *str) { - GenerateFontHalfRowLookupTable(TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + GenerateFontHalfRowLookupTable(TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); CpuFill16(PIXEL_FILL(1) | (PIXEL_FILL(1) << 8), gDecompressionBuffer + 0x20, 0x2300); HelpSystemRenderText(2, gDecompressionBuffer + 0x20, str, 2, 2, 28, 10); RequestDmaCopyFromCharBuffer(); diff --git a/src/slot_machine.c b/src/slot_machine.c index 2c2891c5c..96779258d 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1991,7 +1991,7 @@ static bool8 SlotsTask_GraphicsInit(u8 * state, struct SlotMachineSetupTaskData x = 236 - GetStringWidth(0, gString_SlotMachineControls, 0); textColor[0] = TEXT_DYNAMIC_COLOR_6; textColor[1] = TEXT_COLOR_WHITE; - textColor[2] = TEXT_COLOR_DARK_GREY; + textColor[2] = TEXT_COLOR_DARK_GRAY; AddTextPrinterParameterized3(1, 0, x, 0, textColor, 0, gString_SlotMachineControls); CopyBgTilemapBufferToVram(0); diff --git a/src/strings.c b/src/strings.c index e183e5167..0855152f5 100644 --- a/src/strings.c +++ b/src/strings.c @@ -58,7 +58,7 @@ const u8 gText_Seen[] = _("Seen:"); const u8 gText_Owned[] = _("Owned:"); const u8 gText_Kanto[] = _("KANTO"); const u8 gText_National[] = _("NATIONAL"); -const u8 gText_PokemonHabitats[] = _("{COLOR WHITE2}{SHADOW LIGHT_BLUE}POKéMON HABITATS"); +const u8 gText_PokemonHabitats[] = _("{COLOR DYNAMIC_COLOR6}{SHADOW DYNAMIC_COLOR5}POKéMON HABITATS"); const u8 gText_DexCategory_GrasslandPkmn[] = _("Grassland POKéMON"); const u8 gText_DexCategory_ForestPkmn[] = _("Forest POKéMON"); const u8 gText_DexCategory_WatersEdgePkmn[] = _("Water's-edge POKéMON"); @@ -68,16 +68,16 @@ const u8 gText_DexCategory_MountainPkmn[] = _("Mountain POKéMON"); const u8 gText_DexCategory_RoughTerrainPkmn[] = _("Rough-terrain POKéMON"); const u8 gText_DexCategory_UrbanPkmn[] = _("Urban POKéMON"); const u8 gText_DexCategory_RarePkmn[] = _("Rare POKéMON"); -const u8 gText_Search[] = _("{COLOR WHITE2}{SHADOW LIGHT_BLUE}SEARCH"); +const u8 gText_Search[] = _("{COLOR DYNAMIC_COLOR6}{SHADOW DYNAMIC_COLOR5}SEARCH"); const u8 gText_NumericalMode[] = _("NUMERICAL MODE"); const u8 gText_AToZMode[] = _("A TO Z MODE"); -const u8 gText_PokedexOther[] = _("{COLOR WHITE2}{SHADOW LIGHT_BLUE}OTHER"); +const u8 gText_PokedexOther[] = _("{COLOR DYNAMIC_COLOR6}{SHADOW DYNAMIC_COLOR5}OTHER"); const u8 gTextJP_HowToUsePokedex[] = _("ずかんの つかいかた"); const u8 gText_ClosePokedex[] = _("CLOSE POKéDEX"); const u8 gText_TypeMode[] = _("TYPE MODE"); const u8 gText_LightestMode[] = _("LIGHTEST MODE"); const u8 gText_SmallestMode[] = _("SMALLEST MODE"); -const u8 gText_PokemonList[] = _("{COLOR WHITE2}{SHADOW LIGHT_BLUE}POKéMON LIST"); +const u8 gText_PokemonList[] = _("{COLOR DYNAMIC_COLOR6}{SHADOW DYNAMIC_COLOR5}POKéMON LIST"); const u8 gText_NumericalModeKanto[] = _("NUMERICAL MODE: KANTO"); const u8 gText_NumericalModeNational[] = _("NUMERICAL MODE: NATIONAL"); const u8 gText_PokemonListNoColor[] = _("POKéMON LIST"); @@ -110,8 +110,8 @@ ALIGNED(4) const u8 gText_Number[] = _("No. "); ALIGNED(4) const u8 gText_Level[] = _("Lv. "); ALIGNED(4) const u8 gText_Name[] = _("NAME"); ALIGNED(4) const u8 gText_IDNumber[] = _("IDNo."); -const u8 gUnknown_841610A[] = _("{HIGHLIGHT WHITE2}{COLOR DARK_GREY}オダマキはかせが ピンチだ!\nポケモンを だして たすけてあげよう!"); -const u8 gUnknown_8416133[] = _("{HIGHLIGHT WHITE2}{COLOR DARK_GREY}このポケモンにしますか?"); +const u8 gUnknown_841610A[] = _("{HIGHLIGHT DYNAMIC_COLOR6}{COLOR WHITE}オダマキはかせが ピンチだ!\nポケモンを だして たすけてあげよう!"); +const u8 gUnknown_8416133[] = _("{HIGHLIGHT DYNAMIC_COLOR6}{COLOR WHITE}このポケモンにしますか?"); const u8 gUnknown_8416146[] = _("ポケモン"); const u8 gText_SaveError_PleaseExchangeBackupMemory[] = _("Save error.\pPlease exchange the\nbackup memory."); const u8 gSaveStatName_Player[] = _("PLAYER"); @@ -134,14 +134,14 @@ const u8 gText_Mail[] = _("MAIL"); const u8 gText_Take[] = _("TAKE"); const u8 gText_Store[] = _("STORE"); const u8 gOtherText_Check[] = _("CHECK"); -const u8 gUnknown_84161EF[] = _("NONE"); +const u8 gText_PokeSum_Item_None[] = _("NONE"); const u8 gOtherText_Open[] = _("OPEN"); const u8 gOtherText_Deselect[] = _("DESELECT"); -const u8 gUnknown_8416202[] = _("???"); +const u8 gText_PokeSum_DexNoUnknown[] = _("???"); const u8 gUnknown_8416206[] = _("?????"); const u8 gText_Slash[] = _("/"); -const u8 gUnknown_841620E[] = _("-"); -const u8 gUnknown_8416210[] = _("--"); +const u8 gText_PokeSum_OneHyphen[] = _("-"); +const u8 gText_PokeSum_TwoHyphens[] = _("--"); const u8 gText_ThreeHyphens[] = _("---"); const u8 gText_SevenHyphens[] = _("-------"); const u8 gText_MaleSymbol[] = _("♂"); @@ -151,7 +151,7 @@ const u8 gOtherText_UnkF9_08_Clear_01[] = _("{NO}{CLEAR 0x01}"); const u8 gUnknown_841622C[] = _("{PLUS}"); const u8 gUnknown_841622F[] = _("{ESCAPE 0x03}"); const u8 gUnknown_8416233[] = _("{ID}{NO}"); -const u8 gUnknown_8416238[] = _("{PP}"); +const u8 gText_PokeSum_PP[] = _("{PP}"); const u8 gText_SelectorArrow2[] = _("▶"); const u8 gUnknown_841623D[] = _("YES\nNO"); const u8 gText_GoBackToThePreviousMenu[] = _("Go back to the\nprevious menu."); @@ -760,9 +760,9 @@ const u8 gUnknown_8418C62[] = _("なにも かわらなかった!"); const u8 gUnknown_8418C6F[] = _("もう これいじょう たべない みたい‥"); const u8 gText_SaveFailedScreen_CheckingBackupMemory[] = _("Save failed.\nChecking the backup memory‥\nPlease wait.\n“Time required:\nabout 1 minute”"); const u8 gText_SaveFailedScreen_BackupMemoryDamaged[] = _("The backup memory is damaged or\nthe game's battery has run dry.\nThe game can be played, but its\nprogress cannot be saved.\n“Please press the A Button.”"); -const u8 gUnknown_8418D70[] = _("{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”"); +const u8 gUnknown_8418D70[] = _("{COLOR DARK_GRAY}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”"); const u8 gUnknown_8418D99[] = _("けんさが しゅうりょうしました!\nもういちど レポ-トを かきこみます\nしばらくおまちください"); -const u8 gUnknown_8418DC9[] = _("レポ-トの かきこみは しゅうりょうしました\n{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”"); +const u8 gUnknown_8418DC9[] = _("レポ-トの かきこみは しゅうりょうしました\n{COLOR DARK_GRAY}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”"); const u8 gText_SaveFailedScreen_SaveCompleted[] = _("Save completed.\n“Please press the A Button.”"); const u8 gUnknown_8418E36[] = _("れんらくせん"); const u8 gUnknown_8418E3D[] = _("ひみつきち"); @@ -801,47 +801,47 @@ const u8 gText_RegionMap_AreaDesc_TanobyRuins[] = _("An ancient ruin that is rum const u8 gText_RegionMap_AreaDesc_AlteringCave[] = _("This island has been known by this\nname since the distant past.\nNo one today knows where it got\nthis name, however."); const u8 gText_RegionMap_AreaDesc_PatternBush[] = _("A lush and bush-like area. \nIn it are patterns where no grass\ngrows. Some study it in the belief\nthat a secret is concealed."); const u8 gText_RegionMap_AreaDesc_DottedHole[] = _("A mysterious, just-discovered\nruin from an ancient time.\nIt got its name from the six dots\non its door."); -const u8 gUnknown_8419782[] = _("{DYNAMIC 0x00} nature.\nMet in a trade."); -const u8 gUnknown_841979D[] = _("{DYNAMIC 0x00} nature.\nMet in a trade."); -const u8 gUnknown_84197B8[] = _("{DYNAMIC 0x00} nature.\nMet in a fateful encounter when\nat {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_84197ED[] = _("{DYNAMIC 0x00} nature.\nMet in a fateful encounter when\nat {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_8419822[] = _("{DYNAMIC 0x00} nature.\nMet in {DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_8419841[] = _("{DYNAMIC 0x00} nature.\nMet in {DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_8419860[] = _("{DYNAMIC 0x00} nature.\nApparently met in {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_841988A[] = _("{DYNAMIC 0x00} nature.\nApparently met in {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_84198B4[] = _("{DYNAMIC 0x00} nature.\nHatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_84198D5[] = _("{DYNAMIC 0x00} nature.\nHatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); -const u8 gUnknown_84198F6[] = _("{DYNAMIC 0x00}なせいかく {LV_2}{DYNAMIC 0x01}のとき\n{DYNAMIC 0x02}で かえった ようだ"); -const u8 gUnknown_8419913[] = _("{DYNAMIC 0x00}せいかく {LV_2}{DYNAMIC 0x01}のとき\n{DYNAMIC 0x02}で かえった ようだ"); -const u8 gUnknown_841992F[] = _("{DYNAMIC 0x00} nature. Met in a fateful\nencounter (hatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01})."); -const u8 gUnknown_841996D[] = _("{DYNAMIC 0x00} nature. Met in a fateful\nencounter (hatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01})."); -const u8 gUnknown_84199AB[] = _("{DYNAMIC 0x00} nature. Apparently met in\na fateful encounter (hatched:\n{DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01})."); -const u8 gUnknown_84199F4[] = _("{DYNAMIC 0x00} nature. Apparently met in\na fateful encounter シhatched:\n{DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01}ス."); -const u8 gUnknown_8419A3D[] = _("An odd POKéMON EGG found by the\nDAY-CARE couple."); -const u8 gUnknown_8419A6E[] = _("An odd POKéMON EGG obtained from\nthe traveling man."); -const u8 gUnknown_8419AA2[] = _("A wondrously peculiar POKéMON EGG\nobtained at a nice place."); -const u8 gUnknown_8419ADE[] = _("An odd POKéMON EGG obtained from\nan old woman at the SPA."); -const u8 gUnknown_8419B18[] = _("A peculiar POKéMON EGG obtained\nin a trade."); -const u8 gUnknown_8419B44[] = _("It looks like this\nEGG will take a\nlong time to hatch."); -const u8 gUnknown_8419B7B[] = _("What will hatch\nfrom this? It will\ntake some time."); -const u8 gUnknown_8419BAE[] = _("It occasionally\nmoves. It should\nhatch soon."); -const u8 gUnknown_8419BDB[] = _("It's making sounds.\nIt's almost ready\nto hatch!"); -const u8 gUnknown_8419C0B[] = _("a trade"); -const u8 gUnknown_8419C13[] = _("Somewhere"); -const u8 gUnknown_8419C1D[] = _("POKéMON INFO"); -const u8 gUnknown_8419C2A[] = _("POKéMON SKILLS"); -const u8 gUnknown_8419C39[] = _("KNOWN MOVES"); -const u8 gUnknown_8419C45[] = _("No data"); -const u8 gUnknown_8419C4D[] = _("EXP. POINTS"); -const u8 gUnknown_8419C59[] = _("NEXT LV."); -const u8 gUnknown_8419C62[] = _("{DPAD_RIGHT}PAGE {A_BUTTON}CANCEL"); -const u8 gUnknown_8419C72[] = _("{A_BUTTON}CANCEL"); -const u8 gUnknown_8419C7B[] = _("{DPAD_LEFTRIGHT}PAGE"); -const u8 gUnknown_8419C82[] = _("{DPAD_LEFT}PAGE {A_BUTTON}DETAIL"); -const u8 gUnknown_8419C92[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}SWITCH"); -const u8 gUnknown_8419CA2[] = _("{DPAD_UPDOWN}PICK"); -const u8 gUnknown_8419CA9[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}DELETE"); -const u8 gUnknown_8419CB9[] = _("HM moves can't be\nforgotten now."); +const u8 gText_PokeSum_MetInATrade[] = _("{DYNAMIC 0x00} nature.\nMet in a trade."); +const u8 gText_PokeSum_MetInATrade_BoldGentleGrammar[] = _("{DYNAMIC 0x00} nature.\nMet in a trade."); +const u8 gText_PokeSum_FatefulEncounterMet[] = _("{DYNAMIC 0x00} nature.\nMet in a fateful encounter when\nat {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_FatefulEncounterMet_BoldGentleGrammar[] = _("{DYNAMIC 0x00} nature.\nMet in a fateful encounter when\nat {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_Met[] = _("{DYNAMIC 0x00} nature.\nMet in {DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_Met_BoldGentleGrammar[] = _("{DYNAMIC 0x00} nature.\nMet in {DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_ApparentlyMet[] = _("{DYNAMIC 0x00} nature.\nApparently met in {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_ApparentlyMet_BoldGentleGrammar[] = _("{DYNAMIC 0x00} nature.\nApparently met in {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_Hatched[] = _("{DYNAMIC 0x00} nature.\nHatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_Hatched_BoldGentleGrammar[] = _("{DYNAMIC 0x00} nature.\nHatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01}."); +const u8 gText_PokeSum_JP_ApparentlyHatched[] = _("{DYNAMIC 0x00}なせいかく {LV_2}{DYNAMIC 0x01}のとき\n{DYNAMIC 0x02}で かえった ようだ"); +const u8 gText_PokeSum_JP_ApparentlyHatched_BoldGentleGrammar[] = _("{DYNAMIC 0x00}せいかく {LV_2}{DYNAMIC 0x01}のとき\n{DYNAMIC 0x02}で かえった ようだ"); +const u8 gText_PokeSum_FatefulEncounterHatched[] = _("{DYNAMIC 0x00} nature. Met in a fateful\nencounter (hatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01})."); +const u8 gText_PokeSum_FatefulEncounterHatched_BoldGentleGrammar[] = _("{DYNAMIC 0x00} nature. Met in a fateful\nencounter (hatched: {DYNAMIC 0x02}\nat {LV_2} {DYNAMIC 0x01})."); +const u8 gText_PokeSum_ApparentlyFatefulEncounterHatched[] = _("{DYNAMIC 0x00} nature. Apparently met in\na fateful encounter (hatched:\n{DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01})."); +const u8 gText_PokeSum_ApparentlyFatefulEncounterHatched_BoldGentleGrammar[] = _("{DYNAMIC 0x00} nature. Apparently met in\na fateful encounter (hatched:\n{DYNAMIC 0x02} at {LV_2} {DYNAMIC 0x01})."); +const u8 gText_PokeSum_EggOrigin_DayCare[] = _("An odd POKéMON EGG found by the\nDAY-CARE couple."); +const u8 gText_PokeSum_EggOrigin_TravelingMan[] = _("An odd POKéMON EGG obtained from\nthe traveling man."); +const u8 gText_PokeSum_EggOrigin_NicePlace[] = _("A wondrously peculiar POKéMON EGG\nobtained at a nice place."); +const u8 gText_PokeSum_EggOrigin_Spa[] = _("An odd POKéMON EGG obtained from\nan old woman at the SPA."); +const u8 gText_PokeSum_EggOrigin_Trade[] = _("A peculiar POKéMON EGG obtained\nin a trade."); +const u8 gText_PokeSum_EggHatch_LongTime[] = _("It looks like this\nEGG will take a\nlong time to hatch."); +const u8 gText_PokeSum_EggHatch_SomeTime[] = _("What will hatch\nfrom this? It will\ntake some time."); +const u8 gText_PokeSum_EggHatch_Soon[] = _("It occasionally\nmoves. It should\nhatch soon."); +const u8 gText_PokeSum_EggHatch_AlmostReady[] = _("It's making sounds.\nIt's almost ready\nto hatch!"); +const u8 gText_PokeSum_ATrade[] = _("a trade"); +const u8 gText_Somewhere[] = _("Somewhere"); +const u8 gText_PokeSum_PageName_PokemonInfo[] = _("POKéMON INFO"); +const u8 gText_PokeSum_PageName_PokemonSkills[] = _("POKéMON SKILLS"); +const u8 gText_PokeSum_PageName_KnownMoves[] = _("KNOWN MOVES"); +const u8 gText_PokeSum_NoData[] = _("No data"); +const u8 gText_PokeSum_ExpPoints[] = _("EXP. POINTS"); +const u8 gText_PokeSum_NextLv[] = _("NEXT LV."); +const u8 gText_PokeSum_Controls_PageCancel[] = _("{DPAD_RIGHT}PAGE {A_BUTTON}CANCEL"); +const u8 gText_PokeSum_Controls_Cancel[] = _("{A_BUTTON}CANCEL"); +const u8 gText_PokeSum_Controls_Page[] = _("{DPAD_LEFTRIGHT}PAGE"); +const u8 gText_PokeSum_Controls_PageDetail[] = _("{DPAD_LEFT}PAGE {A_BUTTON}DETAIL"); +const u8 gText_PokeSum_Controls_PickSwitch[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}SWITCH"); +const u8 gText_PokeSum_Controls_Pick[] = _("{DPAD_UPDOWN}PICK"); +const u8 gText_PokeSum_Controls_PickDelete[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}DELETE"); +const u8 gText_PokeSum_HmMovesCantBeForgotten[] = _("HM moves can't be\nforgotten now."); const u8 gText_TrainerCardName[] = _("NAME: "); const u8 gText_TrainerCardIDNo[] = _("IDNo."); const u8 gText_TrainerCardMoney[] = _("MONEY"); @@ -1032,7 +1032,7 @@ ALIGNED(4) const u8 gText_BerryCrush_NoBerries[] = _("You have no BERRIES.\nThe ALIGNED(4) const u8 gText_BerryCrush_MemberDroppedOut[] = _("A member dropped out.\nThe game will be canceled."); ALIGNED(4) const u8 gText_BerryCrush_TimeUp[] = _("Time's up.\pGood BERRY POWDER could not be\nmade…\p"); ALIGNED(4) const u8 gText_BerryCrush_CommunicationStandby[] = _("Communication standby…"); -ALIGNED(4) const u8 gText_1_ClrLtGryShdwBlk_Dynamic0[] = _("1. {COLOR LIGHT_GRAY}{SHADOW BLACK}{DYNAMIC 0x00}"); +ALIGNED(4) const u8 gText_1_ClrBluShdwLtBlu_Dynamic0[] = _("1. {COLOR BLUE}{SHADOW LIGHT_BLUE}{DYNAMIC 0x00}"); const u8 gText_1_Dynamic0[] = _("1. {DYNAMIC 0x00}"); ALIGNED(4) const u8 gText_SpaceTimes[] = _(" times"); ALIGNED(4) const u8 gText_XDotY[] = _("{STR_VAR_1}.{STR_VAR_2}"); @@ -1214,10 +1214,10 @@ const u8 gTradeText_CancelTrade[] = _("Cancel trade?"); const u8 gTradeText_PressBButtonToExit[] = _("Press the B Button to exit."); const u8 gUnknown_841E10A[] = _("SUMMARY"); const u8 gUnknown_841E112[] = _("TRADE"); -const u8 gUnknown_841E118[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Communication standby…\nPlease wait."); -const u8 gUnknown_841E145[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}The trade has been canceled."); -const u8 gUnknown_841E16B[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}That's your only POKéMON\nfor battle."); -const u8 gUnknown_841E199[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Waiting for your friend\nto finish…"); +const u8 gUnknown_841E118[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}Communication standby…\nPlease wait."); +const u8 gUnknown_841E145[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}The trade has been canceled."); +const u8 gUnknown_841E16B[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}That's your only POKéMON\nfor battle."); +const u8 gUnknown_841E199[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}Waiting for your friend\nto finish…"); const u8 gUnknown_841E1C5[] = _("Your friend wants\nto trade POKéMON."); const u8 gText_XWillBeSentToY[] = _("{STR_VAR_2} will be\nsent to {STR_VAR_1}."); const u8 gText_ByeByeVar1[] = _("Bye-bye, {STR_VAR_2}!"); @@ -1246,7 +1246,7 @@ const u8 gUnknown_841E2C9[] = _("{DYNAMIC 0x02} players"); const u8 gUnknown_841E2D4[] = _("{DYNAMIC 0x03} players"); const u8 gUnknown_841E2DF[] = _("{DPAD_ANY}えらぶ:{A_BUTTON}けってい"); const u8 gUnknown_841E2EC[] = _("{B_BUTTON}CANCEL"); -const u8 gUnknown_841E2F5[] = _("{COLOR BLUE}{SHADOW YELLOW} たいせんの くみあわせ\n{COLOR RED}{SHADOW GREEN}じぶんの ばしょをきめて ください"); +const u8 gUnknown_841E2F5[] = _("{COLOR RED}{SHADOW LIGHT_RED} たいせんの くみあわせ\n{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}じぶんの ばしょをきめて ください"); const u8 gUnknown_841E322[] = _("{ID}"); const u8 gText_CommunicationStandby5[] = _("Communication standby…"); const u8 gDaycareText_GetAlongVeryWell[] = _("The two seem to get along\nvery well."); diff --git a/src/text.c b/src/text.c index fbb084244..f92c73df1 100644 --- a/src/text.c +++ b/src/text.c @@ -487,7 +487,7 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter) BlitBitmapRectToWindow( textPrinter->printerTemplate.windowId, arrowTiles, - sDownArrowYCoords[*(u32*)subStruct << 17 >> 30], // subStruct->downArrowYPosIdx but again, stupidly retrieved + sDownArrowYCoords[subStruct->downArrowYPosIdx], 0, 0x80, 0x10, @@ -1007,16 +1007,12 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) int minGlyphWidth; s32 (*func)(u16 glyphId, bool32 isJapanese); int localLetterSpacing; - #ifndef NONMATCHING - register u32 lineWidth asm("r5"); - #else - u32 lineWidth; - #endif + u32 lineWidth; const u8 *bufferPointer; int glyphWidth; u32 width; - isJapanese = 0; + isJapanese = FALSE; minGlyphWidth = 0; func = GetFontWidthFunc(fontId); @@ -1024,7 +1020,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) return 0; if (letterSpacing == -1) - localLetterSpacing = GetFontAttribute(fontId, 2); + localLetterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING); else localLetterSpacing = letterSpacing; @@ -1041,7 +1037,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) width = lineWidth; lineWidth = 0; break; - case PLACEHOLDER_BEGIN: + case PLACEHOLDER_BEGIN: switch (*++str) { case PLACEHOLDER_ID_STRING_VAR_1: @@ -1063,18 +1059,15 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) { glyphWidth = func(*bufferPointer++, isJapanese); if (minGlyphWidth > 0) - { - if (glyphWidth < minGlyphWidth) - glyphWidth = minGlyphWidth; - } - else if (isJapanese) - { - glyphWidth += localLetterSpacing; - } - lineWidth += glyphWidth; + lineWidth += minGlyphWidth > glyphWidth ? minGlyphWidth : glyphWidth; + else + lineWidth += isJapanese ? glyphWidth + localLetterSpacing : glyphWidth; } bufferPointer = NULL; break; + case CHAR_PROMPT_SCROLL: + case CHAR_PROMPT_CLEAR: + break; case EXT_CTRL_CODE_BEGIN: switch (*++str) { @@ -1092,13 +1085,17 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) case EXT_CTRL_CODE_SHIFT_RIGHT: case EXT_CTRL_CODE_SHIFT_DOWN: ++str; + case EXT_CTRL_CODE_RESET_FONT: + case EXT_CTRL_CODE_WAIT_BUTTON: + case EXT_CTRL_CODE_WAIT_SE: + case EXT_CTRL_CODE_FILL_WINDOW: break; case EXT_CTRL_CODE_FONT: func = GetFontWidthFunc(*++str); if (func == NULL) return 0; if (letterSpacing == -1) - localLetterSpacing = GetFontAttribute(*str, 2); + localLetterSpacing = GetFontAttribute(*str, FONTATTR_LETTER_SPACING); break; case EXT_CTRL_CODE_CLEAR: glyphWidth = *++str; @@ -1115,15 +1112,10 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) minGlyphWidth = *++str; break; case EXT_CTRL_CODE_JPN: - isJapanese = 1; + isJapanese = TRUE; break; case EXT_CTRL_CODE_ENG: - isJapanese = 0; - break; - case EXT_CTRL_CODE_RESET_FONT: - case EXT_CTRL_CODE_WAIT_BUTTON: - case EXT_CTRL_CODE_WAIT_SE: - case EXT_CTRL_CODE_FILL_WINDOW: + isJapanese = FALSE; default: break; } @@ -1146,9 +1138,6 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) } lineWidth += glyphWidth; break; - case CHAR_PROMPT_SCROLL: - case CHAR_PROMPT_CLEAR: - break; default: glyphWidth = func(*str, isJapanese); if (minGlyphWidth > 0) diff --git a/src/trade.c b/src/trade.c index 21c127838..656cba37b 100644 --- a/src/trade.c +++ b/src/trade.c @@ -411,7 +411,7 @@ static const u8 gUnknown_8261E92[] = { }; const u8 sText_Dummy[] = _(""); -const u8 sText_ClrDkGryHltTranspShdwRed[] = _("{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT}{SHADOW RED}"); +const u8 sText_ClrWhtHltTranspShdwDrkGry[] = _("{COLOR WHITE}{HIGHLIGHT TRANSPARENT}{SHADOW DARK_GRAY}"); const u8 gText_MaleSymbol4[] = _("♂"); const u8 gText_FemaleSymbol4[] = _("♀"); const u8 gText_GenderlessSymbol[] = _(""); @@ -455,7 +455,7 @@ static const u8 *const sTradeErrorOrStatusMessagePtrs[] = { gText_OtherTrainersPkmnCantBeTraded // The other TRAINER's POKéMON can't be traded now }; -static const u8 sTextColor_PartyMonNickname[] = { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY }; +static const u8 sTextColor_PartyMonNickname[] = { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY }; static const struct BgTemplate sBgTemplates[] = { { @@ -674,7 +674,7 @@ static const u8 gUnknown_8262055[][2] = { static void InitTradeMenuResources(void) { int i; - static vu16 dummy; + static u16 dummy; ResetSpriteData(); FreeAllSpritePalettes(); @@ -723,11 +723,6 @@ static void CB2_ReturnFromLinkTrade2(void) u8 id; s32 width; u32 xPos; -#ifndef NONMATCHING - register u32 r0 asm("r0"); -#else - u32 r0; -#endif u8 *name; switch (gMain.state) @@ -895,7 +890,8 @@ static void CB2_ReturnFromLinkTrade2(void) gMain.state++; break; case 12: - width = GetStringWidth(1, gSaveBlock2Ptr->playerName, 0); + name = gSaveBlock2Ptr->playerName; + width = GetStringWidth(1, name, 0); xPos = (56 - width) / 2; for (i = 0; i < 3; i++) { @@ -904,9 +900,8 @@ static void CB2_ReturnFromLinkTrade2(void) CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][1], 1); } id = GetMultiplayerId(); - r0 = (id ^ 1) * sizeof(*gLinkPlayers); - name = gLinkPlayers->name; - width = GetStringWidth(1, name + r0, 0); + name = gLinkPlayers[id ^ 1].name; + width = GetStringWidth(1, name, 0); xPos = (56 - width) / 2; for (i = 0; i < 3; i++) { @@ -999,11 +994,6 @@ void CB2_ReturnToTradeMenuFromSummary(void) u8 id; s32 width; u32 xPos; -#ifndef NONMATCHING - register u32 r0 asm("r0"); -#else - u32 r0; -#endif u8 *name; switch (gMain.state) @@ -1095,7 +1085,8 @@ void CB2_ReturnToTradeMenuFromSummary(void) } break; case 12: - width = GetStringWidth(1, gSaveBlock2Ptr->playerName, 0); + name = gSaveBlock2Ptr->playerName; + width = GetStringWidth(1, name, 0); xPos = (56 - width) / 2; for (i = 0; i < 3; i++) { @@ -1104,9 +1095,8 @@ void CB2_ReturnToTradeMenuFromSummary(void) CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][1], 1); } id = GetMultiplayerId(); - r0 = (id ^ 1) * sizeof(*gLinkPlayers); - name = gLinkPlayers->name; - width = GetStringWidth(1, name + r0, 0); + name = gLinkPlayers[id ^ 1].name; + width = GetStringWidth(1, name, 0); xPos = (56 - width) / 2; for (i = 0; i < 3; i++) { @@ -1827,9 +1817,9 @@ static void TradeMenuCB_2(void) if (!gPaletteFade.active) { if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) - ShowPokemonSummaryScreen(gPlayerParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition, sTradeMenuResourcesPtr->partyCounts[0] - 1, CB2_ReturnToTradeMenuFromSummary, 4); + ShowPokemonSummaryScreen(gPlayerParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition, sTradeMenuResourcesPtr->partyCounts[0] - 1, CB2_ReturnToTradeMenuFromSummary, PSS_MODE_TRADE); else - ShowPokemonSummaryScreen(gEnemyParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition - 6, sTradeMenuResourcesPtr->partyCounts[1] - 1, CB2_ReturnToTradeMenuFromSummary, 4); + ShowPokemonSummaryScreen(gEnemyParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition - 6, sTradeMenuResourcesPtr->partyCounts[1] - 1, CB2_ReturnToTradeMenuFromSummary, PSS_MODE_TRADE); FreeAllWindowBuffers(); } } diff --git a/src/trainer_card.c b/src/trainer_card.c index d3578dfb7..beb209bf5 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -271,7 +271,7 @@ static const u16 *const sKantoTrainerCardStarPals[] = sKantoTrainerCard4Stars_Pals }; -static const u8 sTrainerCardTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}; +static const u8 sTrainerCardTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; static const u8 sTrainerCardStatColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED}; static const u8 sTimeColonInvisibleTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_TRANSPARENT}; static const u8 sTrainerCardFontIds[] = {0, 2, 0}; diff --git a/src/trainer_tower.c b/src/trainer_tower.c index fd10e33b2..b39782297 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -316,7 +316,7 @@ static const struct WindowTemplate sTimeBoardWindowTemplate[] = { static const u32 sUnused_847A228 = 0x70; -static const u8 sTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}; +static const u8 sTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; static void (*const sTrainerTowerFunctions[])(void) = { [TRAINER_TOWER_FUNC_INIT_FLOOR] = InitTrainerTowerFloor, @@ -501,7 +501,7 @@ void GetTrainerTowerOpponentLoseText(u8 *dest, u8 opponentIdx) TT_ConvertEasyChatMessageToString(sTrainerTowerOpponent->speechLose2, dest); } -static void SetUpTrainerTowerDataStruct(void) // fakematching +static void SetUpTrainerTowerDataStruct(void) { u32 challengeType = gSaveBlock1Ptr->towerChallengeId; s32 r4; @@ -519,16 +519,7 @@ static void SetUpTrainerTowerDataStruct(void) // fakematching r7 = gUnknown_84827B4[challengeType]; for (r4 = 0; r4 < MAX_TRAINER_TOWER_FLOORS; r4++) { - #ifndef NONMATCHING - void * r5; - register void * r0 asm("r0") = sTrainerTowerState; - r5 = (void *)(r4 * sizeof(struct TrainerTowerFloor)); - r0 = r5 + (uintptr_t)r0; - r0 += offsetof(struct UnkStruct_203F458, unk_0004.floors); - memcpy(r0, r7[r4], sizeof(struct TrainerTowerFloor)); - #else - memcpy(&sTrainerTowerState->unk_0004.floors[r4], r7[r4], sizeof(struct TrainerTowerFloor)); - #endif + *(sTrainerTowerState->unk_0004.floors + r4) = *(r7[r4]); // manual pointer arithmetic needed to match } sTrainerTowerState->unk_0004.checksum = CalcByteArraySum((void *)sTrainerTowerState->unk_0004.floors, sizeof(sTrainerTowerState->unk_0004.floors)); ValidateOrResetCurTrainerTowerRecord(); diff --git a/src/union_room.c b/src/union_room.c index 24b8a4d3e..f19eba38d 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -3993,9 +3993,9 @@ static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str case UR_COLOR_DKE_WHT_LTE: printerTemplate.letterSpacing = 0; printerTemplate.lineSpacing = 0; - printerTemplate.fgColor = TEXT_COLOR_DARK_GREY; + printerTemplate.fgColor = TEXT_COLOR_DARK_GRAY; printerTemplate.bgColor = TEXT_COLOR_WHITE; - printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GREY; + printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GRAY; break; case UR_COLOR_RED_WHT_LTR: printerTemplate.letterSpacing = 0; @@ -4016,14 +4016,14 @@ static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str printerTemplate.lineSpacing = 0; printerTemplate.fgColor = TEXT_COLOR_WHITE; printerTemplate.bgColor = TEXT_COLOR_WHITE; - printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GREY; + printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GRAY; break; case UR_COLOR_WHT_DKE_LTE: printerTemplate.letterSpacing = 0; printerTemplate.lineSpacing = 0; printerTemplate.fgColor = TEXT_COLOR_WHITE; - printerTemplate.bgColor = TEXT_COLOR_DARK_GREY; - printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GREY; + printerTemplate.bgColor = TEXT_COLOR_DARK_GRAY; + printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GRAY; break; case UR_COLOR_GRN_DN6_LTB: printerTemplate.letterSpacing = 0; diff --git a/src/union_room_chat_display.c b/src/union_room_chat_display.c index 27ce26a02..60c202dcd 100644 --- a/src/union_room_chat_display.c +++ b/src/union_room_chat_display.c @@ -600,7 +600,7 @@ static bool32 DisplaySubtask_UpdateMessageBuffer(u8 *state) UnionRoomChat_GetBufferSelectionRegion(&start, &length); FillWin1Rect(start, length, PIXEL_FILL(0)); str = UnionRoomChat_GetMessageEntryBuffer(); - PrintOnWin1Parameterized(0, str, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY); + PrintOnWin1Parameterized(0, str, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY); CopyWindowToVram(1, COPYWIN_GFX); break; case 1: @@ -670,7 +670,7 @@ static bool32 DisplaySubtask_CancelRegister(u8 *state) str = UnionRoomChat_GetEndOfMessageEntryBuffer(); length = StringLength_Multibyte(str); FillWin1Rect(x, length, PIXEL_FILL(0)); - PrintOnWin1Parameterized(x, str, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY); + PrintOnWin1Parameterized(x, str, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY); CopyWindowToVram(1, COPYWIN_GFX); break; case 1: diff --git a/src/vs_seeker.c b/src/vs_seeker.c index af8bda8be..3432911e2 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -35,6 +35,13 @@ enum typedef enum { + VSSEEKER_SINGLE_RESP_RAND, + VSSEEKER_SINGLE_RESP_NO, + VSSEEKER_SINGLE_RESP_YES +} VsSeekerSingleRespCode; + +typedef enum +{ VSSEEKER_RESPONSE_NO_RESPONSE, VSSEEKER_RESPONSE_UNFOUGHT_TRAINERS, VSSEEKER_RESPONSE_FOUND_REMATCHES @@ -44,8 +51,8 @@ typedef enum typedef struct VsSeekerData { u16 trainerIdxs[6]; - u16 unk_c; // unused - u16 unk_e; // unused + u16 mapGroup; // unused + u16 mapNum; // unused } VsSeekerData; struct VsSeekerTrainerInfo @@ -72,10 +79,6 @@ struct VsSeekerStruct u8 responseCode:5; }; -extern u16 gSpecialVar_LastTalked; -extern struct ObjectEvent gObjectEvents[OBJECT_EVENTS_COUNT]; -extern u8 gSelectedObjectEvent; - // static declarations static EWRAM_DATA struct VsSeekerStruct *sVsSeeker = NULL; @@ -88,24 +91,24 @@ static void Task_VsSeeker_2(u8 taskId); static void GatherNearbyTrainerInfo(void); static void Task_VsSeeker_3(u8 taskId); static bool8 CanUseVsSeeker(void); -static u8 GetVsSeekerResponseInArea(const VsSeekerData *); +static u8 GetVsSeekerResponseInArea(const VsSeekerData * vsSeekerData); static u8 GetRematchTrainerIdGivenGameState(const u16 *trainerIdxs, u8 rematchIdx); -static u8 ShouldTryRematchBattleInternal(const VsSeekerData *, u16); -static u8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *, u16); +static u8 ShouldTryRematchBattleInternal(const VsSeekerData * vsSeekerData, u16 trainerBattleOpponent); +static u8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData * vsSeekerData, u16 trainerBattleOpponent); static int LookupVsSeekerOpponentInArray(const VsSeekerData * array, u16 trainerId); -static bool8 IsTrainerReadyForRematchInternal(const VsSeekerData *, u16); -static u8 GetRunningBehaviorFromGraphicsId(u8); -static u16 GetTrainerFlagFromScript(const u8 *); -static int GetRematchIdx(const VsSeekerData *, u16); -static bool32 IsThisTrainerRematchable(u32); +static bool8 IsTrainerReadyForRematchInternal(const VsSeekerData * array, u16 trainerIdx); +static u8 GetRunningBehaviorFromGraphicsId(u8 graphicsId); +static u16 GetTrainerFlagFromScript(const u8 * script); +static int GetRematchIdx(const VsSeekerData * vsSeekerData, u16 trainerFlagIdx); +static bool32 IsThisTrainerRematchable(u32 localId); static void ClearAllTrainerRematchStates(void); -static bool8 IsTrainerVisibleOnScreen(struct VsSeekerTrainerInfo *); -static u8 GetNextAvailableRematchTrainer(const VsSeekerData *, u16, u8 *); +static bool8 IsTrainerVisibleOnScreen(struct VsSeekerTrainerInfo * trainerInfo); +static u8 GetNextAvailableRematchTrainer(const VsSeekerData * vsSeekerData, u16 trainerFlagNo, u8 * idxPtr); static u8 GetRematchableTrainerLocalId(void); -static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo *, const u8 *); -static u8 GetCurVsSeekerResponse(s32, u16); +static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script); +static u8 GetCurVsSeekerResponse(s32 vsSeekerIdx, u16 trainerIdx); static void StartAllRespondantIdleMovements(void); -static bool8 ObjectEventIdIsSane(u8 a0); +static bool8 ObjectEventIdIsSane(u8 objectEventId); static u8 GetRandomFaceDirectionMovementType(); // rodata @@ -635,7 +638,14 @@ void VsSeekerResetObjectMovementAfterChargeComplete(void) for (i = 0; i < gMapHeader.events->objectEventCount; i++) { - if ((templates[i].trainerType == 1 || templates[i].trainerType == 3) && (templates[i].movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN || templates[i].movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP || templates[i].movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT)) + if (( + templates[i].trainerType == TRAINER_TYPE_NORMAL + || templates[i].trainerType == TRAINER_TYPE_BURIED + ) && ( + templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4D + || templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4E + || templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4F + )) { movementType = GetRandomFaceDirectionMovementType(); TryGetObjectEventIdByLocalIdAndMap(templates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objEventId); @@ -651,8 +661,7 @@ void VsSeekerResetObjectMovementAfterChargeComplete(void) bool8 UpdateVsSeekerStepCounter(void) { - u8 x; - x = 0; + u8 x = 0; if (CheckBagHasItem(ITEM_VS_SEEKER, 1) == TRUE) { @@ -694,7 +703,7 @@ static void ResetMovementOfRematchableTrainers(void) for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { struct ObjectEvent * objectEvent = &gObjectEvents[i]; - if (objectEvent->movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN || objectEvent->movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP || objectEvent->movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT) + if (objectEvent->movementType == MOVEMENT_TYPE_VS_SEEKER_4D || objectEvent->movementType == MOVEMENT_TYPE_VS_SEEKER_4E || objectEvent->movementType == MOVEMENT_TYPE_VS_SEEKER_4F) { u8 movementType = GetRandomFaceDirectionMovementType(); if (objectEvent->active && gSprites[objectEvent->spriteId].data[0] == i) @@ -853,43 +862,42 @@ static u8 CanUseVsSeeker(void) } } -static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0) +static u8 GetVsSeekerResponseInArea(const VsSeekerData * vsSeekerData) { - u16 r8 = 0; + u16 trainerIdx = 0; u16 rval = 0; - u8 r7; - u8 sp0 = 0; - u8 r0 = 0; - s32 vsSeekerIdx; - u8 *r2; - vsSeekerIdx = 0; + u8 rematchTrainerIdx; + u8 unusedIdx = 0; + u8 response = 0; + s32 vsSeekerIdx = 0; while (sVsSeeker->trainerInfo[vsSeekerIdx].localId != 0xFF) { - if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[vsSeekerIdx]) == 1) + if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[vsSeekerIdx]) == TRUE) { - r8 = sVsSeeker->trainerInfo[vsSeekerIdx].trainerIdx; - if (!HasTrainerBeenFought(r8)) + trainerIdx = sVsSeeker->trainerInfo[vsSeekerIdx].trainerIdx; + if (!HasTrainerBeenFought(trainerIdx)) { StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerUnfought); sVsSeeker->trainerHasNotYetBeenFought = 1; vsSeekerIdx++; continue; } - r7 = GetNextAvailableRematchTrainer(a0, r8, &sp0); - if (r7 == 0) + rematchTrainerIdx = GetNextAvailableRematchTrainer(vsSeekerData, trainerIdx, &unusedIdx); + if (rematchTrainerIdx == 0) { StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch); sVsSeeker->trainerDoesNotWantRematch = 1; } else { - rval = Random() % 100; - r0 = GetCurVsSeekerResponse(vsSeekerIdx, r8); - if (r0 == 2) - rval = 100; - else if (r0 == 1) - rval = 0; + rval = Random() % 100; // Even if it's overwritten below, it progresses the RNG. + response = GetCurVsSeekerResponse(vsSeekerIdx, trainerIdx); + if (response == VSSEEKER_SINGLE_RESP_YES) + rval = 100; // Definitely yes + else if (response == VSSEEKER_SINGLE_RESP_NO) + rval = 0; // Definitely no + // Otherwise it's a 70% chance to want a rematch if (rval < 30) { StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch); @@ -897,10 +905,10 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0) } else { - gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[vsSeekerIdx].localId] = r7; + gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[vsSeekerIdx].localId] = rematchTrainerIdx; ShiftStillObjectEventCoords(&gObjectEvents[sVsSeeker->trainerInfo[vsSeekerIdx].objectEventId]); StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerRematch); - sVsSeeker->trainerIdxArray[sVsSeeker->numRematchableTrainers] = r8; + sVsSeeker->trainerIdxArray[sVsSeeker->numRematchableTrainers] = trainerIdx; sVsSeeker->runningBehaviourEtcArray[sVsSeeker->numRematchableTrainers] = GetRunningBehaviorFromGraphicsId(sVsSeeker->trainerInfo[vsSeekerIdx].graphicsId); sVsSeeker->numRematchableTrainers++; sVsSeeker->trainerWantsRematch = 1; @@ -992,11 +1000,11 @@ static u8 GetRematchTrainerIdGivenGameState(const u16 *trainerIdxs, u8 rematchId return 0; } -u8 ShouldTryRematchBattle(void) +bool8 ShouldTryRematchBattle(void) { if (ShouldTryRematchBattleInternal(sVsSeekerData, gTrainerBattleOpponent_A)) { - return 1; + return TRUE; } return HasRematchTrainerAlreadyBeenFought(sVsSeekerData, gTrainerBattleOpponent_A); } @@ -1137,13 +1145,13 @@ static u8 GetRunningBehaviorFromGraphicsId(u8 graphicsId) case OBJ_EVENT_GFX_BLACKBELT: case OBJ_EVENT_GFX_HIKER: case OBJ_EVENT_GFX_SAILOR: - return 0x4e; + return MOVEMENT_TYPE_VS_SEEKER_4E; case OBJ_EVENT_GFX_TUBER_M_WATER: case OBJ_EVENT_GFX_SWIMMER_M_WATER: case OBJ_EVENT_GFX_SWIMMER_F_WATER: - return 0x4f; + return MOVEMENT_TYPE_VS_SEEKER_4F; default: - return 0x4d; + return MOVEMENT_TYPE_VS_SEEKER_4D; } } @@ -1181,9 +1189,9 @@ static int GetRematchIdx(const VsSeekerData * vsSeekerData, u16 trainerFlagIdx) return -1; } -static bool32 IsThisTrainerRematchable(u32 a0) +static bool32 IsThisTrainerRematchable(u32 localId) { - if (!gSaveBlock1Ptr->trainerRematches[a0]) + if (!gSaveBlock1Ptr->trainerRematches[localId]) return FALSE; return TRUE; } @@ -1264,24 +1272,24 @@ static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * traine ScriptMovement_StartObjectMovementScript(trainerInfo->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, script); } -static u8 GetCurVsSeekerResponse(s32 a0, u16 a1) +static u8 GetCurVsSeekerResponse(s32 vsSeekerIdx, u16 trainerIdx) { s32 i; s32 j; - for (i = 0; i < a0; i++) + for (i = 0; i < vsSeekerIdx; i++) { - if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) == 1 && sVsSeeker->trainerInfo[i].trainerIdx == a1) + if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) == 1 && sVsSeeker->trainerInfo[i].trainerIdx == trainerIdx) { for (j = 0; j < sVsSeeker->numRematchableTrainers; j++) { if (sVsSeeker->trainerIdxArray[j] == sVsSeeker->trainerInfo[i].trainerIdx) - return 2; + return VSSEEKER_SINGLE_RESP_YES; } - return 1; + return VSSEEKER_SINGLE_RESP_NO; } } - return 0; + return VSSEEKER_SINGLE_RESP_RAND; } static void StartAllRespondantIdleMovements(void) @@ -1296,11 +1304,11 @@ static void StartAllRespondantIdleMovements(void) { if (sVsSeeker->trainerInfo[j].trainerIdx == sVsSeeker->trainerIdxArray[i]) { - struct ObjectEvent *r4 = &gObjectEvents[sVsSeeker->trainerInfo[j].objectEventId]; + struct ObjectEvent *objectEvent = &gObjectEvents[sVsSeeker->trainerInfo[j].objectEventId]; if (ObjectEventIdIsSane(sVsSeeker->trainerInfo[j].objectEventId) == 1) - SetTrainerMovementType(r4, sVsSeeker->runningBehaviourEtcArray[i]); - OverrideMovementTypeForObjectEvent(r4, sVsSeeker->runningBehaviourEtcArray[i]); + SetTrainerMovementType(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]); + OverrideMovementTypeForObjectEvent(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]); gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[j].localId] = GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[j].trainerIdx, &dummy); } } diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index f67da122f..936a1ed9f 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -323,13 +323,13 @@ static void WCSS_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * { case 0: textColor[0] = TEXT_COLOR_TRANSPARENT; - textColor[1] = TEXT_COLOR_DARK_GREY; - textColor[2] = TEXT_COLOR_LIGHT_GREY; + textColor[1] = TEXT_COLOR_DARK_GRAY; + textColor[2] = TEXT_COLOR_LIGHT_GRAY; break; case 1: textColor[0] = TEXT_COLOR_TRANSPARENT; textColor[1] = TEXT_COLOR_WHITE; - textColor[2] = TEXT_COLOR_LIGHT_GREY; + textColor[2] = TEXT_COLOR_LIGHT_GRAY; break; case 2: textColor[0] = TEXT_COLOR_TRANSPARENT; @@ -344,7 +344,7 @@ static void WCSS_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * case 4: textColor[0] = TEXT_COLOR_TRANSPARENT; textColor[1] = TEXT_COLOR_WHITE; - textColor[2] = TEXT_COLOR_DARK_GREY; + textColor[2] = TEXT_COLOR_DARK_GRAY; break; // default: UB } |