diff options
Diffstat (limited to 'include')
75 files changed, 1134 insertions, 1612 deletions
diff --git a/include/alloc.h b/include/alloc.h deleted file mode 100644 index f2dcf6d46..000000000 --- a/include/alloc.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef GUARD_ALLOC_H -#define GUARD_ALLOC_H - -#define HEAP_SIZE 0x1C000 -#define malloc Alloc -#define calloc(ct, sz) AllocZeroed((ct) * (sz)) -#define free Free - -#define FREE_AND_SET_NULL(ptr) \ -{ \ - free(ptr); \ - ptr = NULL; \ -} - -extern u8 gHeap[]; - -void *Alloc(u32 size); -void *AllocZeroed(u32 size); -void Free(void *pointer); -void InitHeap(void *pointer, u32 size); - -#endif // GUARD_ALLOC_H diff --git a/include/battle_anim.h b/include/battle_anim.h index a7b71bd85..503e23df2 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -101,7 +101,7 @@ void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 a2); s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 a2); u8 GetBattlerYCoordWithElevation(u8 battlerId); void WaitAnimForDuration(struct Sprite *sprite); -void sub_80A7938(struct Sprite *sprite); +void AnimSnoreZ(struct Sprite *sprite); void InitAnimLinearTranslation(struct Sprite *sprite); void sub_80A6F98(struct Sprite *sprite); u8 GetBattlerSpriteBGPriority(u8 battlerId); @@ -141,17 +141,17 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite); void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); void TranslateMonSpriteLinear(struct Sprite *sprite); void TranslateSpriteLinear(struct Sprite *sprite); -void sub_80A77C8(struct Sprite *sprite); +void AnimSpriteOnMonPos(struct Sprite *sprite); void sub_80A7000(struct Sprite *sprite); void TranslateSpriteInCircleOverDuration(struct Sprite *sprite); void SetGreyscaleOrOriginalPalette(u16 a1, bool8 a2); void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds); bool8 RunAffineAnimFromTaskData(struct Task *task); -void sub_80A78AC(struct Sprite *sprite); +void AnimThrowProjectile(struct Sprite *sprite); void sub_80A6BFC(struct BattleAnimBgData *unk, u8 unused); u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10); void sub_80A749C(struct Sprite *sprite); -void sub_80A6DEC(struct Sprite *sprite); +void TradeMenuBouncePartySprites(struct Sprite *sprite); void DestroyAnimVisualTaskAndDisableBlend(u8 taskId); void DestroySpriteAndFreeResources_(struct Sprite *sprite); void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId); @@ -221,11 +221,11 @@ void sub_8116EB4(u8); void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *arg8, const u32 *arg9, const u32 *palette); // battle_anim_effects_1.c -void sub_810310C(u8 battler, struct Sprite* sprite); +void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite); void AnimMoveTwisterParticle(struct Sprite* sprite); // water.c -void sub_8108C94(struct Sprite *sprite); +void AnimWaterPulseRing(struct Sprite *sprite); // flying.c void sub_810E2C8(struct Sprite *sprite); @@ -237,50 +237,50 @@ u32 UnpackSelectedBattleAnimPalettes(s16); u8 GetBattlerSpriteFinal_Y(u8, u16, u8); -extern const struct OamData gUnknown_08524944; -extern const struct OamData gUnknown_08524A8C; -extern const struct OamData gUnknown_08524904; -extern const struct OamData gUnknown_085249C4; -extern const struct OamData gUnknown_0852490C; -extern const struct OamData gUnknown_08524934; -extern const struct OamData gUnknown_08524974; -extern const struct OamData gUnknown_0852499C; -extern const struct OamData gUnknown_085249CC; -extern const struct OamData gUnknown_08524914; -extern const struct OamData gUnknown_0852496C; -extern const struct OamData gUnknown_08524A34; -extern const struct OamData gUnknown_08524A3C; -extern const struct OamData gUnknown_08524A94; -extern const struct OamData gUnknown_08524954; -extern const struct OamData gUnknown_08524AE4; -extern const struct OamData gUnknown_085249D4; -extern const struct OamData gUnknown_08524A9C; -extern const struct OamData gUnknown_08524ADC; -extern const struct OamData gUnknown_08524B14; -extern const struct OamData gUnknown_08524A54; -extern const struct OamData gUnknown_08524A14; -extern const struct OamData gUnknown_08524A1C; -extern const struct OamData gUnknown_085249BC; -extern const struct OamData gUnknown_08524AF4; -extern const struct OamData gUnknown_085249DC; -extern const struct OamData gUnknown_08524AFC; -extern const struct OamData gUnknown_08524B1C; -extern const struct OamData gUnknown_08524A04; -extern const struct OamData gUnknown_08524A2C; -extern const struct OamData gUnknown_08524AEC; -extern const struct OamData gUnknown_08524964; -extern const struct OamData gUnknown_08524B24; -extern const struct OamData gUnknown_08524A24; -extern const struct OamData gUnknown_08524AC4; -extern const struct OamData gUnknown_08524A84; -extern const struct OamData gUnknown_08524A64; -extern const struct OamData gUnknown_0852491C; -extern const struct OamData gUnknown_0852495C; -extern const struct OamData gUnknown_0852497C; -extern const struct OamData gUnknown_085249F4; -extern const struct OamData gUnknown_0852493C; -extern const struct OamData gUnknown_08524A5C; -extern const struct OamData gUnknown_08524A74; +extern const struct OamData gOamData_AffineOff_ObjNormal_8x16; +extern const struct OamData gOamData_AffineNormal_ObjBlend_16x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; +extern const struct OamData gOamData_AffineDouble_ObjNormal_8x8; +extern const struct OamData gOamData_AffineOff_ObjNormal_16x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x16; +extern const struct OamData gOamData_AffineNormal_ObjNormal_32x32; +extern const struct OamData gOamData_AffineNormal_ObjNormal_64x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_16x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x32; +extern const struct OamData gOamData_AffineNormal_ObjNormal_16x16; +extern const struct OamData gOamData_AffineOff_ObjBlend_32x32; +extern const struct OamData gOamData_AffineOff_ObjBlend_64x64; +extern const struct OamData gOamData_AffineNormal_ObjBlend_32x32; +extern const struct OamData gOamData_AffineOff_ObjNormal_16x32; +extern const struct OamData gOamData_AffineDouble_ObjBlend_8x8; +extern const struct OamData gOamData_AffineDouble_ObjNormal_32x32; +extern const struct OamData gOamData_AffineNormal_ObjBlend_64x64; +extern const struct OamData gOamData_AffineNormal_ObjBlend_32x64; +extern const struct OamData gOamData_AffineDouble_ObjBlend_32x16; +extern const struct OamData gOamData_AffineOff_ObjBlend_32x16; +extern const struct OamData gOamData_AffineDouble_ObjNormal_16x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_32x64; +extern const struct OamData gOamData_AffineNormal_ObjNormal_32x64; +extern const struct OamData gOamData_AffineDouble_ObjBlend_32x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_64x64; +extern const struct OamData gOamData_AffineDouble_ObjBlend_64x64; +extern const struct OamData gOamData_AffineDouble_ObjBlend_64x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_8x16; +extern const struct OamData gOamData_AffineOff_ObjBlend_16x16; +extern const struct OamData gOamData_AffineDouble_ObjBlend_16x16; +extern const struct OamData gOamData_AffineNormal_ObjNormal_8x8; +extern const struct OamData gOamData_AffineDouble_ObjBlend_8x16; +extern const struct OamData gOamData_AffineOff_ObjBlend_8x8; +extern const struct OamData gOamData_AffineNormal_ObjBlend_8x16; +extern const struct OamData gOamData_AffineNormal_ObjBlend_8x8; +extern const struct OamData gOamData_AffineOff_ObjBlend_8x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_64x64; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x64; +extern const struct OamData gOamData_AffineNormal_ObjNormal_64x64; +extern const struct OamData gOamData_AffineDouble_ObjNormal_32x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_64x32; +extern const struct OamData gOamData_AffineOff_ObjBlend_64x32; +extern const struct OamData gOamData_AffineOff_ObjBlend_16x32; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 365229fda..32918fefb 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -248,8 +248,8 @@ void nullsub_21(void); void PlayerHandleGetRawMonData(void); void sub_80587B0(void); void sub_805CC00(struct Sprite *sprite); -void SetCB2ToReshowScreenAfterMenu(void); -void SetCB2ToReshowScreenAfterMenu2(void); +void CB2_SetUpReshowBattleScreenAfterMenu(void); +void CB2_SetUpReshowBattleScreenAfterMenu2(void); void c3_0802FDF4(u8 taskId); void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); void ActionSelectionDestroyCursorAt(u8 cursorPos); diff --git a/include/battle_main.h b/include/battle_main.h index c134f819f..e04db17bb 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -77,20 +77,20 @@ void sub_803B3AC(void); // unused void sub_803B598(void); // unused void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(void); -void sub_803BDA0(u8 battlerId); +void SwitchPartyOrder(u8 battlerId); void SwapTurnOrder(u8 id1, u8 id2); u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); bool8 TryRunFromBattle(u8 battlerId); -extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3]; +extern struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE]; extern const struct SpriteTemplate gUnknown_0831AC88; extern const struct OamData gOamData_831ACA8; extern const struct OamData gOamData_831ACB0; extern const u8 gTypeEffectiveness[336]; -extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1]; +extern const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1]; extern const struct TrainerMoney gTrainerMoneyTable[]; extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; extern const u8 *const gAbilityDescriptionPointers[]; diff --git a/include/battle_pyramid_bag.h b/include/battle_pyramid_bag.h index c3b799a4d..f0c6e7ee4 100644 --- a/include/battle_pyramid_bag.h +++ b/include/battle_pyramid_bag.h @@ -36,13 +36,13 @@ extern struct PyramidBagCursorData gPyramidBagCursorData; void InitBattlePyramidBagCursorPosition(void); void CB2_PyramidBagMenuFromStartMenu(void); -void sub_81C4F84(void); +void CB2_ReturnToPyramidBagMenu(void); void sub_81C5924(void); void sub_81C59BC(void); void sub_81C4EFC(void); -void sub_81C4F98(u8 a0, void (*callback)(void)); +void GoToBattlePyramidBagMenu(u8 a0, void (*callback)(void)); void sub_81C6714(u8 taskId); -void sub_81C6A94(void); +void TryStoreHeldItemsInPyramidBag(void); void sub_81C4F24(void); void sub_81C5B14(u8 taskId); void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId)); diff --git a/include/battle_util2.h b/include/battle_util2.h index 336698ea3..fe767ea4b 100644 --- a/include/battle_util2.h +++ b/include/battle_util2.h @@ -4,7 +4,7 @@ void AllocateBattleResources(void); void FreeBattleResources(void); void AdjustFriendshipOnBattleFaint(u8 battler); -void sub_80571DC(u8 battler, u8 arg1); +void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1); u32 sub_805725C(u8 battler); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/bg.h b/include/bg.h deleted file mode 100644 index 3c7eee292..000000000 --- a/include/bg.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef GUARD_BG_H -#define GUARD_BG_H - -struct BGCntrlBitfield // for the I/O registers -{ - volatile u16 priority:2; - volatile u16 charBaseBlock:2; - volatile u16 field_0_2:4; - volatile u16 field_1_0:5; - volatile u16 areaOverflowMode:1; - volatile u16 screenSize:2; -}; - -enum -{ - BG_ATTR_CHARBASEINDEX = 1, - BG_ATTR_MAPBASEINDEX, - BG_ATTR_SCREENSIZE, - BG_ATTR_PALETTEMODE, - BG_ATTR_MOSAIC, - BG_ATTR_WRAPAROUND, - BG_ATTR_PRIORITY, - BG_ATTR_METRIC, - BG_ATTR_TYPE, - BG_ATTR_BASETILE, -}; - -struct BgTemplate -{ - u16 bg:2; // 0x1, 0x2 -> 0x3 - u16 charBaseIndex:2; // 0x4, 0x8 -> 0xC - u16 mapBaseIndex:5; // 0x10, 0x20, 0x40, 0x80, 0x100 -> 0x1F0 - u16 screenSize:2; // 0x200, 0x400 -> 0x600 - u16 paletteMode:1; // 0x800 - u16 priority:2; // 0x1000, 0x2000 > 0x3000 - u16 baseTile:10; -}; - -void ResetBgs(void); -u8 GetBgMode(void); -void ResetBgControlStructs(void); -void Unused_ResetBgControlStruct(u8 bg); -u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode); -void SetTextModeAndHideBgs(void); -bool8 IsInvalidBg(u8 bg); -int DummiedOutFireRedLeafGreenTileAllocFunc(int a1, int a2, int a3, int a4); -void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable); -void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates); -void InitBgFromTemplate(const struct BgTemplate *template); -void SetBgMode(u8 bgMode); -u16 LoadBgTiles(u8 bg, const void* src, u16 size, u16 destOffset); -u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset); -u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset); -bool8 IsDma3ManagerBusyWithBgCopy(void); -void ShowBg(u8 bg); -void HideBg(u8 bg); -void SetBgAttribute(u8 bg, u8 attributeId, u8 value); -u16 GetBgAttribute(u8 bg, u8 attributeId); -s32 ChangeBgX(u8 bg, s32 value, u8 op); -s32 GetBgX(u8 bg); -s32 ChangeBgY(u8 bg, s32 value, u8 op); -s32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op); -s32 GetBgY(u8 bg); -void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); -u8 Unused_AdjustBgMosaic(u8 a1, u8 a2); -void SetBgTilemapBuffer(u8 bg, void *tilemap); -void UnsetBgTilemapBuffer(u8 bg); -void* GetBgTilemapBuffer(u8 bg); -void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset); -void CopyBgTilemapBufferToVram(u8 bg); -void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height); -void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette); -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 FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height); -void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette); -void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta); -u16 GetBgMetricTextMode(u8 bg, u8 whichMetric); -u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric); -u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32 screenHeight); -void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2); -u32 GetBgType(u8 bg); -bool32 IsInvalidBg32(u8 bg); -bool32 IsTileMapOutsideWram(u8 bg); - -#endif // GUARD_BG_H diff --git a/include/blit.h b/include/blit.h deleted file mode 100644 index 78f67766e..000000000 --- a/include/blit.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef GUARD_BLIT_H -#define GUARD_BLIT_H - -struct Bitmap -{ - u8 *pixels; - u32 width:16; - u32 height:16; -}; - -void BlitBitmapRect4BitWithoutColorKey(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height); -void BlitBitmapRect4Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey); -void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); -void BlitBitmapRect4BitTo8Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset); -void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); - -#endif // GUARD_BLIT_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index d287dd2db..b849686f5 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -4,16 +4,17 @@ #define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode) // Battle Frontier facility ids. -#define FRONTIER_FACILITY_TOWER 0 -#define FRONTIER_FACILITY_DOME 1 -#define FRONTIER_FACILITY_PALACE 2 -#define FRONTIER_FACILITY_ARENA 3 -#define FRONTIER_FACILITY_FACTORY 4 -#define FRONTIER_FACILITY_PIKE 5 -#define FRONTIER_FACILITY_PYRAMID 6 -#define NUM_FRONTIER_FACILITIES 7 +#define FRONTIER_FACILITY_TOWER 0 +#define FRONTIER_FACILITY_DOME 1 +#define FRONTIER_FACILITY_PALACE 2 +#define FRONTIER_FACILITY_ARENA 3 +#define FRONTIER_FACILITY_FACTORY 4 +#define FRONTIER_FACILITY_PIKE 5 +#define FRONTIER_FACILITY_PYRAMID 6 +#define NUM_FRONTIER_FACILITIES 7 // The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY. -#define FRONTIER_FACILITY_DOUBLE_COLOSSEUM 9 +#define FACILITY_UNION_ROOM 8 +#define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles #define TENT_VERDANTURF 2 #define TENT_FALLARBOR 3 diff --git a/include/constants/battle_pike.h b/include/constants/battle_pike.h new file mode 100644 index 000000000..e92c4a006 --- /dev/null +++ b/include/constants/battle_pike.h @@ -0,0 +1,49 @@ +#ifndef GUARD_CONSTANTS_BATTLE_PIKE_H +#define GUARD_CONSTANTS_BATTLE_PIKE_H + +#define PIKE_ROOM_SINGLE_BATTLE 0 +#define PIKE_ROOM_HEAL_FULL 1 +#define PIKE_ROOM_NPC 2 +#define PIKE_ROOM_STATUS 3 +#define PIKE_ROOM_HEAL_PART 4 +#define PIKE_ROOM_WILD_MONS 5 +#define PIKE_ROOM_HARD_BATTLE 6 +#define PIKE_ROOM_DOUBLE_BATTLE 7 +#define PIKE_ROOM_BRAIN 8 + +// For the room with a status effect. +#define PIKE_STATUS_KIRLIA 0 +#define PIKE_STATUS_DUSCLOPS 1 + +// Function IDs for sBattlePikeFunctions / CallBattlePikeFunction +#define BATTLE_PIKE_FUNC_SET_ROOM_TYPE 0 +#define BATTLE_PIKE_FUNC_GET_DATA 1 +#define BATTLE_PIKE_FUNC_SET_DATA 2 +#define BATTLE_PIKE_FUNC_IN_FINAL_ROOM 3 +#define BATTLE_PIKE_FUNC_SET_UP_ROOM_OBJECTS 4 +#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE 5 +#define BATTLE_PIKE_FUNC_6 6 +#define BATTLE_PIKE_FUNC_7 7 +#define BATTLE_PIKE_FUNC_8 8 +#define BATTLE_PIKE_FUNC_NULL_9 9 +#define BATTLE_PIKE_FUNC_NULL_10 10 +#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS 11 +#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS_MON 12 +#define BATTLE_PIKE_FUNC_HEAL_ONE_TWO_MONS 13 +#define BATTLE_PIKE_FUNC_BUFFER_NPC_MSG 14 +#define BATTLE_PIKE_FUNC_STATUS_SCREEN_FADE 15 +#define BATTLE_PIKE_FUNC_IS_IN 16 +#define BATTLE_PIKE_FUNC_SET_HINT_ROOM 17 +#define BATTLE_PIKE_FUNC_SET_HINT_ROOM_ID 18 +#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE_HINT 19 +#define BATTLE_PIKE_FUNC_CLEAR_TRAINER_IDS 20 +#define BATTLE_PIKE_FUNC_BUFFER_RECORD_MIX_MSG 21 +#define BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE 22 +#define BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN 23 +#define BATTLE_PIKE_FUNC_SET_HEALING_ROOMS_DISABLED 24 +#define BATTLE_PIKE_FUNC_CAN_PARTY_BE_HEALED 25 +#define BATTLE_PIKE_FUNC_SAVE_MON_HELD_ITEMS 26 +#define BATTLE_PIKE_FUNC_LOAD_MON_HELD_ITEMS 27 +#define BATTLE_PIKE_FUNC_INIT_CHALLENGE 28 + +#endif // GUARD_CONSTANTS_BATTLE_PIKE_H diff --git a/include/constants/battle_pyramid.h b/include/constants/battle_pyramid.h new file mode 100644 index 000000000..0d59ae94d --- /dev/null +++ b/include/constants/battle_pyramid.h @@ -0,0 +1,49 @@ +#ifndef GUARD_CONSTANTS_BATTLE_PYRAMID_H +#define GUARD_CONSTANTS_BATTLE_PYRAMID_H + +#define TOTAL_ROUNDS 20 +#define PICKUP_ITEMS_PER_ROUND 10 + +#define FLOOR_WALKABLE_METATILE 0x28D +#define FLOOR_EXIT_METATILE 0x28E + +#define HINT_EXIT_DIRECTION 0 +#define HINT_REMAINING_ITEMS 1 +#define HINT_REMAINING_TRAINERS 2 +#define HINT_EXIT_SHORT_REMAINING_TRAINERS 3 +#define HINT_EXIT_SHORT_REMAINING_ITEMS 4 +#define HINT_EXIT_MEDIUM_REMAINING_TRAINERS 5 +#define HINT_EXIT_MEDIUM_REMAINING_ITEMS 6 +#define HINT_EXIT_FAR_REMAINING_TRAINERS 7 +#define HINT_EXIT_FAR_REMAINING_ITEMS 8 + +#define OBJ_TRAINERS 0 +#define OBJ_ITEMS 1 + +#define OBJ_POSITIONS_UNIFORM 0 +#define OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE 1 +#define OBJ_POSITIONS_IN_AND_NEAR_EXIT 2 +#define OBJ_POSITIONS_NEAR_ENTRANCE 3 +#define OBJ_POSITIONS_NEAR_EXIT 4 + +// Functions IDs for sBattlePyramidFunctions / CallBattlePyramidFunction +#define BATTLE_PYRAMID_FUNC_INIT_CHALLENGE 0 +#define BATTLE_PYRAMID_FUNC_GET_DATA 1 +#define BATTLE_PYRAMID_FUNC_SET_DATA 2 +#define BATTLE_PYRAMID_FUNC_3 3 +#define BATTLE_PYRAMID_FUNC_SET_REWARD 4 +#define BATTLE_PYRAMID_FUNC_GIVE_REWARD 5 +#define BATTLE_PYRAMID_FUNC_SEED_FLOOR 6 +#define BATTLE_PYRAMID_FUNC_SET_ITEM 7 +#define BATTLE_PYRAMID_FUNC_HIDE_ITEM 8 +#define BATTLE_PYRAMID_FUNC_INIT_TRAINERS 9 +#define BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT 10 +#define BATTLE_PYRAMID_FUNC_UPDATE_STREAK 11 +#define BATTLE_PYRAMID_FUNC_IS_IN 12 +#define BATTLE_PYRAMID_FUNC_UPDATE_LIGHT 13 +#define BATTLE_PYRAMID_FUNC_CLEAR_HELD_ITEMS 14 +#define BATTLE_PYRAMID_FUNC_SET_FLOOR_PALETTE 15 +#define BATTLE_PYRAMID_FUNC_16 16 +#define BATTLE_PYRAMID_FUNC_RESTORE_PARTY 17 + +#endif // GUARD_CONSTANTS_BATTLE_PYRAMID_H diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h new file mode 100644 index 000000000..f2aa4120c --- /dev/null +++ b/include/constants/cable_club.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CONSTANTS_CABLE_CLUB_H +#define GUARD_CONSTANTS_CABLE_CLUB_H + +// States for VAR_CABLE_CLUB_STATE +#define USING_SINGLE_BATTLE 1 +#define USING_DOUBLE_BATTLE 2 +#define USING_TRADE_CENTER 3 +#define USING_RECORD_CORNER 4 +#define USING_MULTI_BATTLE 5 +#define USING_UNION_ROOM 6 +#define USING_BERRY_CRUSH 7 +#define USING_MINIGAME 8 +#define USING_BATTLE_TOWER 9 + +#endif //GUARD_CONSTANTS_CABLE_CLUB_H diff --git a/include/constants/contest.h b/include/constants/contest.h index d3296222b..0c866069e 100644 --- a/include/constants/contest.h +++ b/include/constants/contest.h @@ -16,4 +16,10 @@ #define CONTEST_CATEGORY_TOUGH 4 #define CONTEST_CATEGORIES_COUNT 5 +#define CANT_ENTER_CONTEST 0 +#define CAN_ENTER_CONTEST_EQUAL_RANK 1 +#define CAN_ENTER_CONTEST_HIGH_RANK 2 +#define CANT_ENTER_CONTEST_EGG 3 +#define CANT_ENTER_CONTEST_FAINTED 4 + #endif // GUARD_CONSTANTS_CONTEST_H diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h index 50f5994f4..b97c2aaf2 100644 --- a/include/constants/easy_chat.h +++ b/include/constants/easy_chat.h @@ -1095,6 +1095,7 @@ #define EC_WORD_OLD (EC_GROUP_TRENDY_SAYING << 9) | 0x1e #define EC_WORD_YOUNG (EC_GROUP_TRENDY_SAYING << 9) | 0x1f #define EC_WORD_UGLY (EC_GROUP_TRENDY_SAYING << 9) | 0x20 +#define NUM_ADDITIONAL_PHRASES 33 #define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon) #define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon) diff --git a/include/constants/event_object_movement_constants.h b/include/constants/event_object_movement_constants.h index b1f9b4cb5..ed6f6c7fb 100755 --- a/include/constants/event_object_movement_constants.h +++ b/include/constants/event_object_movement_constants.h @@ -179,8 +179,8 @@ #define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D #define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E #define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F -#define MOVEMENT_ACTION_UNKNOWN1 0x60 -#define MOVEMENT_ACTION_UNKNOWN2 0x61 +#define MOVEMENT_ACTION_HIDE_REFLECTION 0x60 +#define MOVEMENT_ACTION_SHOW_REFLECTION 0x61 #define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62 #define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63 #define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64 diff --git a/include/constants/field_poison.h b/include/constants/field_poison.h new file mode 100644 index 000000000..19b91e7c2 --- /dev/null +++ b/include/constants/field_poison.h @@ -0,0 +1,12 @@ +#ifndef GUARD_CONSTANTS_FIELD_POISON_H +#define GUARD_CONSTANTS_FIELD_POISON_H + +#define FLDPSN_NONE 0 +#define FLDPSN_PSN 1 +#define FLDPSN_FNT 2 + +#define FLDPSN_NO_WHITEOUT 0 +#define FLDPSN_WHITEOUT 1 +#define FLDPSN_FRONTIER_WHITEOUT 2 + +#endif //GUARD_CONSTANTS_FIELD_POISON_H diff --git a/include/constants/field_tasks.h b/include/constants/field_tasks.h new file mode 100644 index 000000000..7f773855d --- /dev/null +++ b/include/constants/field_tasks.h @@ -0,0 +1,13 @@ +#ifndef GUARD_CONSTANTS_FIELD_TASKS_H +#define GUARD_CONSTANTS_FIELD_TASKS_H + +#define STEP_CB_DUMMY 0 +#define STEP_CB_ASH 1 +#define STEP_CB_FORTREE_BRIDGE 2 +#define STEP_CB_PACIFIDLOG_BRIDGE 3 +#define STEP_CB_SOOTOPOLIS_ICE 4 +#define STEP_CB_TRUCK 5 +#define STEP_CB_SECRET_BASE 6 +#define STEP_CB_CRACKED_FLOOR 7 + +#endif // GUARD_CONSTANTS_FIELD_TASKS_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 4679e953c..0e85e2570 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -87,7 +87,7 @@ #define FLAG_UNUSED_0x04F 0x4F // Unused Flag // Scripts -#define FLAG_RAYQUAZA_ON_SKY_TOWER_SUMMIT 0x50 +#define FLAG_HIDE_RAYQUAZA_SKY_TOWER_SUMMIT 0x50 #define FLAG_SET_WALL_CLOCK 0x51 #define FLAG_RESCUED_BIRCH 0x52 #define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53 @@ -109,10 +109,10 @@ #define FLAG_MET_TEAM_AQUA_HARBOR 0x61 #define FLAG_TV_EXPLAINED 0x62 #define FLAG_MAUVILLE_GYM_BARRIERS_STATE 0x63 -#define FLAG_MOSSDEEP_GYM_SWITCH_1 0x64 -#define FLAG_MOSSDEEP_GYM_SWITCH_2 0x65 -#define FLAG_MOSSDEEP_GYM_SWITCH_3 0x66 -#define FLAG_MOSSDEEP_GYM_SWITCH_4 0x67 +#define FLAG_MOSSDEEP_GYM_SWITCH_1 0x64 // Leftover from the RS version of Mossdeep Gym, functionally unused +#define FLAG_MOSSDEEP_GYM_SWITCH_2 0x65 // +#define FLAG_MOSSDEEP_GYM_SWITCH_3 0x66 // +#define FLAG_MOSSDEEP_GYM_SWITCH_4 0x67 // #define FLAG_UNUSED_0x068 0x68 // Unused Flag @@ -146,7 +146,7 @@ #define FLAG_DEFEATED_RIVAL_ROUTE103 0x82 #define FLAG_RECEIVED_DOLL_LANETTE 0x83 #define FLAG_RECEIVED_POTION_OLDALE 0x84 -#define FLAG_MOM_SAYS_GOODBYE 0x85 +#define FLAG_RECEIVED_AMULET_COIN 0x85 #define FLAG_PENDING_DAYCARE_EGG 0x86 #define FLAG_THANKED_FOR_PLAYING_WITH_WALLY 0x87 #define FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL 0x88 // Set after defeating Wally outside Mauville Gym. Will activate a call later to register Wally. @@ -163,9 +163,7 @@ #define FLAG_MR_BRINEY_SAILING_INTRO 0x93 #define FLAG_DOCK_REJECTED_DEVON_GOODS 0x94 #define FLAG_DELIVERED_DEVON_GOODS 0x95 - -#define FLAG_UNUSED_0x096 0x96 // Unused Flag - +#define FLAG_RECEIVED_CONTEST_PASS 0x96 // Unused, leftover from R/S #define FLAG_RECEIVED_CASTFORM 0x97 #define FLAG_RECEIVED_SUPER_ROD 0x98 #define FLAG_RUSTBORO_NPC_TRADE_COMPLETED 0x99 @@ -332,10 +330,10 @@ #define FLAG_MET_SCOTT_RUSTBORO 0x136 #define FLAG_WALLACE_GOES_TO_SKY_PILLAR 0x137 // Set after speaking to Wallace within the Cave of Origin. #define FLAG_RECEIVED_HM07 0x138 -#define FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS 0x139 // Beat Magma Grunt blocking Magma Hideout entrance. -#define FLAG_RECEIVED_AURORA_TICKET 0x13A // RECEIVED Aurora Ticket in Mystery Gift -#define FLAG_RECEIVED_MYSTIC_TICKET 0x13B // RECEIVED Mystic Ticket in Mystery Gift -#define FLAG_RECEIVED_OLD_SEA_MAP 0x13C // RECEIVED Old Sea Map in Mystery Gift +#define FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS 0x139 +#define FLAG_RECEIVED_AURORA_TICKET 0x13A +#define FLAG_RECEIVED_MYSTIC_TICKET 0x13B +#define FLAG_RECEIVED_OLD_SEA_MAP 0x13C #define FLAG_UNUSED_MYSTERY_GIFT_0x13D 0x13D #define FLAG_UNUSED_MYSTERY_GIFT_0x13E 0x13E #define FLAG_UNUSED_MYSTERY_GIFT_0x13F 0x13F @@ -355,8 +353,8 @@ #define FLAG_UNUSED_MYSTERY_GIFT_0x14D 0x14D #define FLAG_MIRAGE_TOWER_VISIBLE 0x14E -#define FLAG_CHOSE_CLAW_FOSSIL 0x14F // Player chose Claw Fossil -#define FLAG_CHOSE_ROOT_FOSSIL 0x150 // Player chose Root Fossil +#define FLAG_CHOSE_CLAW_FOSSIL 0x14F +#define FLAG_CHOSE_ROOT_FOSSIL 0x150 #define FLAG_RECEIVED_POWDER_JAR 0x151 #define FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER 0x152 @@ -367,7 +365,7 @@ #define FLAG_MET_SLATEPORT_FANCLUB_CHAIRMAN 0x156 #define FLAG_MET_BATTLE_FRONTIER_BETTOR 0x157 #define FLAG_ENABLE_MR_STONE_POKENAV 0x158 -#define FLAG_OLDALE_NURSE_MENTIONS_GOLD_CARD 0x159 +#define FLAG_NURSE_MENTIONS_GOLD_CARD 0x159 #define FLAG_MET_FRONTIER_BEAUTY_MOVE_TUTOR 0x15A #define FLAG_MET_FRONTIER_SWIMMER_MOVE_TUTOR 0x15B @@ -650,6 +648,95 @@ #define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x5D) #define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_3 (FLAG_HIDDEN_ITEMS_START + 0x5E) +#define FLAG_UNUSED_0x264 0x264 // Unused Flag +#define FLAG_UNUSED_0x265 0x265 // Unused Flag +#define FLAG_UNUSED_0x266 0x266 // Unused Flag +#define FLAG_UNUSED_0x267 0x267 // Unused Flag +#define FLAG_UNUSED_0x268 0x268 // Unused Flag +#define FLAG_UNUSED_0x269 0x269 // Unused Flag +#define FLAG_UNUSED_0x26A 0x26A // Unused Flag +#define FLAG_UNUSED_0x26B 0x26B // Unused Flag +#define FLAG_UNUSED_0x26C 0x26C // Unused Flag +#define FLAG_UNUSED_0x26D 0x26D // Unused Flag +#define FLAG_UNUSED_0x26E 0x26E // Unused Flag +#define FLAG_UNUSED_0x26F 0x26F // Unused Flag +#define FLAG_UNUSED_0x270 0x270 // Unused Flag +#define FLAG_UNUSED_0x271 0x271 // Unused Flag +#define FLAG_UNUSED_0x272 0x272 // Unused Flag +#define FLAG_UNUSED_0x273 0x273 // Unused Flag +#define FLAG_UNUSED_0x274 0x274 // Unused Flag +#define FLAG_UNUSED_0x275 0x275 // Unused Flag +#define FLAG_UNUSED_0x276 0x276 // Unused Flag +#define FLAG_UNUSED_0x277 0x277 // Unused Flag +#define FLAG_UNUSED_0x278 0x278 // Unused Flag +#define FLAG_UNUSED_0x279 0x279 // Unused Flag +#define FLAG_UNUSED_0x27A 0x27A // Unused Flag +#define FLAG_UNUSED_0x27B 0x27B // Unused Flag +#define FLAG_UNUSED_0x27C 0x27C // Unused Flag +#define FLAG_UNUSED_0x27D 0x27D // Unused Flag +#define FLAG_UNUSED_0x27E 0x27E // Unused Flag +#define FLAG_UNUSED_0x27F 0x27F // Unused Flag +#define FLAG_UNUSED_0x280 0x280 // Unused Flag +#define FLAG_UNUSED_0x281 0x281 // Unused Flag +#define FLAG_UNUSED_0x282 0x282 // Unused Flag +#define FLAG_UNUSED_0x283 0x283 // Unused Flag +#define FLAG_UNUSED_0x284 0x284 // Unused Flag +#define FLAG_UNUSED_0x285 0x285 // Unused Flag +#define FLAG_UNUSED_0x286 0x286 // Unused Flag +#define FLAG_UNUSED_0x287 0x287 // Unused Flag +#define FLAG_UNUSED_0x288 0x288 // Unused Flag +#define FLAG_UNUSED_0x289 0x289 // Unused Flag +#define FLAG_UNUSED_0x28A 0x28A // Unused Flag +#define FLAG_UNUSED_0x28B 0x28B // Unused Flag +#define FLAG_UNUSED_0x28C 0x28C // Unused Flag +#define FLAG_UNUSED_0x28D 0x28D // Unused Flag +#define FLAG_UNUSED_0x28E 0x28E // Unused Flag +#define FLAG_UNUSED_0x28F 0x28F // Unused Flag +#define FLAG_UNUSED_0x290 0x290 // Unused Flag +#define FLAG_UNUSED_0x291 0x291 // Unused Flag +#define FLAG_UNUSED_0x292 0x292 // Unused Flag +#define FLAG_UNUSED_0x293 0x293 // Unused Flag +#define FLAG_UNUSED_0x294 0x294 // Unused Flag +#define FLAG_UNUSED_0x295 0x295 // Unused Flag +#define FLAG_UNUSED_0x296 0x296 // Unused Flag +#define FLAG_UNUSED_0x297 0x297 // Unused Flag +#define FLAG_UNUSED_0x298 0x298 // Unused Flag +#define FLAG_UNUSED_0x299 0x299 // Unused Flag +#define FLAG_UNUSED_0x29A 0x29A // Unused Flag +#define FLAG_UNUSED_0x29B 0x29B // Unused Flag +#define FLAG_UNUSED_0x29C 0x29C // Unused Flag +#define FLAG_UNUSED_0x29D 0x29D // Unused Flag +#define FLAG_UNUSED_0x29E 0x29E // Unused Flag +#define FLAG_UNUSED_0x29F 0x29F // Unused Flag +#define FLAG_UNUSED_0x2A0 0x2A0 // Unused Flag +#define FLAG_UNUSED_0x2A1 0x2A1 // Unused Flag +#define FLAG_UNUSED_0x2A2 0x2A2 // Unused Flag +#define FLAG_UNUSED_0x2A3 0x2A3 // Unused Flag +#define FLAG_UNUSED_0x2A4 0x2A4 // Unused Flag +#define FLAG_UNUSED_0x2A5 0x2A5 // Unused Flag +#define FLAG_UNUSED_0x2A6 0x2A6 // Unused Flag +#define FLAG_UNUSED_0x2A7 0x2A7 // Unused Flag +#define FLAG_UNUSED_0x2A8 0x2A8 // Unused Flag +#define FLAG_UNUSED_0x2A9 0x2A9 // Unused Flag +#define FLAG_UNUSED_0x2AA 0x2AA // Unused Flag +#define FLAG_UNUSED_0x2AB 0x2AB // Unused Flag +#define FLAG_UNUSED_0x2AC 0x2AC // Unused Flag +#define FLAG_UNUSED_0x2AD 0x2AD // Unused Flag +#define FLAG_UNUSED_0x2AE 0x2AE // Unused Flag +#define FLAG_UNUSED_0x2AF 0x2AF // Unused Flag +#define FLAG_UNUSED_0x2B0 0x2B0 // Unused Flag +#define FLAG_UNUSED_0x2B1 0x2B1 // Unused Flag +#define FLAG_UNUSED_0x2B2 0x2B2 // Unused Flag +#define FLAG_UNUSED_0x2B3 0x2B3 // Unused Flag +#define FLAG_UNUSED_0x2B4 0x2B4 // Unused Flag +#define FLAG_UNUSED_0x2B5 0x2B5 // Unused Flag +#define FLAG_UNUSED_0x2B6 0x2B6 // Unused Flag +#define FLAG_UNUSED_0x2B7 0x2B7 // Unused Flag +#define FLAG_UNUSED_0x2B8 0x2B8 // Unused Flag +#define FLAG_UNUSED_0x2B9 0x2B9 // Unused Flag +#define FLAG_UNUSED_0x2BA 0x2BA // Unused Flag +#define FLAG_UNUSED_0x2BB 0x2BB // Unused Flag + // Event Flags #define FLAG_HIDE_ROUTE_101_BIRCH_STARTERS_BAG 0x2BC #define FLAG_HIDE_APPRENTICE 0x2BD @@ -690,16 +777,16 @@ #define FLAG_HIDE_PLAYERS_HOUSE_DAD 0x2DE #define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_SIBLING 0x2DF #define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_RIVAL_SIBLING 0x2E0 -#define FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_INVISIBLE_NINJA_BOY 0x2E1 +#define FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_MAGMA_NOTE 0x2E1 #define FLAG_HIDE_ROUTE_104_MR_BRINEY 0x2E2 #define FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY 0x2E3 #define FLAG_HIDE_MR_BRINEY_DEWFORD_TOWN 0x2E4 -#define FLAG_HIDE_ROUTE_108_MR_BRINEY 0x2E5 +#define FLAG_HIDE_ROUTE_109_MR_BRINEY 0x2E5 #define FLAG_HIDE_ROUTE_104_MR_BRINEY_BOAT 0x2E6 #define FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN 0x2E7 #define FLAG_HIDE_ROUTE_109_MR_BRINEY_BOAT 0x2E8 #define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_BRENDAN 0x2E9 -#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_BRENDAN 0x2EA +#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_MAY 0x2EA #define FLAG_HIDE_SAFARI_ZONE_SOUTH_EAST_EXPANSION 0x2EB #define FLAG_HIDE_LILYCOVE_HARBOR_EVENT_TICKET_TAKER 0x2EC #define FLAG_HIDE_SLATEPORT_CITY_SCOTT 0x2ED @@ -778,9 +865,7 @@ #define FLAG_HIDE_AQUA_HIDEOUT_1F_GRUNT_2_BLOCKING_ENTRANCE 0x336 #define FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA 0x337 #define FLAG_HIDE_PETALBURG_GYM_WALLYS_UNCLE 0x338 - -#define FLAG_UNUSED_0x339 0x339 // Unused Flag - +#define FLAG_HIDE_LEGEND_MON_CAVE_OF_ORIGIN 0x339 // Unused, leftover from R/S #define FLAG_HIDE_SOOTOPOLIS_CITY_ARCHIE 0x33A #define FLAG_HIDE_SOOTOPOLIS_CITY_MAXIE 0x33B #define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_ARCHIE 0x33C @@ -883,7 +968,7 @@ #define FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS 0x39D #define FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA 0x39E #define FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA 0x39F -#define FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO 0x3A0 +#define FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO 0x3A0 #define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_1 0x3A1 #define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_2 0x3A2 #define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1 0x3A3 @@ -925,7 +1010,7 @@ #define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN 0x3C7 #define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_BELDUM_POKEBALL 0x3C8 #define FLAG_HIDE_FORTREE_CITY_KECLEON 0x3C9 -#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3CA +#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE 0x3CA #define FLAG_HIDE_LILYCOVE_CITY_RIVAL 0x3CB #define FLAG_HIDE_ROUTE_120_STEVEN 0x3CC #define FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN 0x3CD @@ -936,14 +1021,14 @@ #define FLAG_HIDE_AQUA_HIDEOUT_B1F_ELECTRODE_2 0x3D2 #define FLAG_HIDE_OLDALE_TOWN_RIVAL 0x3D3 #define FLAG_HIDE_UNDERWATER_SEA_FLOOR_CAVERN_STOLEN_SUBMARINE 0x3D4 -#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE 0x3D5 -#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D6 +#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5 +#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3D6 #define FLAG_HIDE_RUSTURF_TUNNEL_LOVER_WOMAN 0x3D7 #define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_LOVER_WOMAN 0x3D8 -#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3D9 -#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DA -#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DB -#define FLAG_HIDE_ROUTE_120_KECLEON_6 0x3DC +#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D9 +#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3DA +#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DB +#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DC #define FLAG_HIDE_ROUTE_119_KECLEON_1 0x3DD #define FLAG_HIDE_ROUTE_119_KECLEON_2 0x3DE #define FLAG_HIDE_ROUTE_101_BOY 0x3DF @@ -1549,9 +1634,9 @@ // Special Flags (Unknown) #define SPECIAL_FLAGS_START 0x4000 #define FLAG_HIDE_MAP_NAME_POPUP 0x4000 -#define FLAG_SPECIAL_FLAG_0x4001 0x4001 +#define FLAG_DONT_TRANSITION_MUSIC 0x4001 #define FLAG_SPECIAL_FLAG_0x4002 0x4002 #define FLAG_SPECIAL_FLAG_0x4003 0x4003 -#define FLAG_SPECIAL_FLAG_0x4004 0x4004 +#define FLAG_STORING_ITEMS_IN_PYRAMID_BAG 0x4004 #endif // GUARD_CONSTANTS_FLAGS_H diff --git a/include/constants/global.h b/include/constants/global.h index 7e0b5cfa4..4ade1c823 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -46,12 +46,16 @@ #define BAG_TMHM_COUNT 64 #define BAG_BERRIES_COUNT 46 #define EVENT_OBJECT_TEMPLATES_COUNT 64 +#define DECOR_MAX_SECRET_BASE 16 +#define DECOR_MAX_PLAYERS_HOUSE 12 #define PYRAMID_BAG_ITEMS_COUNT 10 #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. #define TRAINER_ID_LENGTH 4 #define PARTY_SIZE 6 +#define FRONTIER_PARTY_SIZE 3 +#define MULTI_PARTY_SIZE PARTY_SIZE / 2 #define MAX_MON_MOVES 4 // string lengths @@ -65,6 +69,10 @@ #define FEMALE 1 #define GENDER_COUNT 2 +#define BARD_SONG_LENGTH 6 +#define NUM_STORYTELLER_TALES 4 +#define NUM_TRADER_ITEMS 4 + #define OPTIONS_BUTTON_MODE_NORMAL 0 #define OPTIONS_BUTTON_MODE_LR 1 #define OPTIONS_BUTTON_MODE_L_EQUALS_A 2 diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 6a3276b44..802c381b5 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -98,8 +98,8 @@ #define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8)) #define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8)) #define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_COZMOS_HOUSE (6 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE (7 | (5 << 8)) // Map Group 6 #define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8)) diff --git a/include/constants/mauville_man.h b/include/constants/mauville_man.h deleted file mode 100644 index b00e3a291..000000000 --- a/include/constants/mauville_man.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef GUARD_CONSTANTS_MAUVILLE_MAN_H -#define GUARD_CONSTANTS_MAUVILLE_MAN_H - -#define MAUVILLE_MAN_BARD 0 -#define MAUVILLE_MAN_HIPSTER 1 -#define MAUVILLE_MAN_TRADER 2 -#define MAUVILLE_MAN_STORYTELLER 3 -#define MAUVILLE_MAN_GIDDY 4 - -#endif // GUARD_CONSTANTS_MAUVILLE_MAN_H diff --git a/include/constants/mauville_old_man.h b/include/constants/mauville_old_man.h new file mode 100644 index 000000000..c1fb0bf24 --- /dev/null +++ b/include/constants/mauville_old_man.h @@ -0,0 +1,12 @@ +#ifndef GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H +#define GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H + +#define MAUVILLE_MAN_BARD 0 +#define MAUVILLE_MAN_HIPSTER 1 +#define MAUVILLE_MAN_TRADER 2 +#define MAUVILLE_MAN_STORYTELLER 3 +#define MAUVILLE_MAN_GIDDY 4 +#define MAUVILLE_MAN_UNUSED1 5 +#define MAUVILLE_MAN_UNUSED2 6 + +#endif // GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h index 8fe95b464..2f3ce5f71 100644 --- a/include/constants/metatile_labels.h +++ b/include/constants/metatile_labels.h @@ -68,13 +68,16 @@ #define METATILE_PetalburgGym_SlidingDoor_Frame3 0x21B #define METATILE_PetalburgGym_SlidingDoor_Frame4 0x21C -// gTileset_MossdeepGym -#define METATILE_MossdeepGym_Obelisk_Top 0x204 -#define METATILE_MossdeepGym_Obelisk_Base 0x20C -#define METATILE_MossdeepGym_Wall_LeftCorner 0x20D -#define METATILE_MossdeepGym_OuterWall_RightCorner 0x205 -#define METATILE_MossdeepGym_Empty0 0x238 -#define METATILE_MossdeepGym_Empty1 0x239 +// gTileset_MossdeepGym from R/S +#define METATILE_RS_MossdeepGym_RedArrow_Right 0x204 +#define METATILE_RS_MossdeepGym_RedArrow_Left 0x20C +#define METATILE_RS_MossdeepGym_RedArrow_Up 0x20D +#define METATILE_RS_MossdeepGym_RedArrow_Down 0x205 +#define METATILE_RS_MossdeepGym_Switch_Up 0x238 +#define METATILE_RS_MossdeepGym_Switch_Down 0x239 + +// gTileset_MossdeepGym from Emerald +#define METATILE_MossdeepGym_YellowArrow_Right 0x250 // gTileset_BrendansMaysHouse #define METATILE_BrendansMaysHouse_BrendanPC_Off 0x25A @@ -376,6 +379,7 @@ #define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Down 0x263 #define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Left_Alt 0x27B #define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Right_Alt 0x27C +#define METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right 0x298 // gTileset_BikeShop #define METATILE_BikeShop_Barrier_Hidden_Top 0x269 diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h new file mode 100644 index 000000000..7953967ed --- /dev/null +++ b/include/constants/party_menu.h @@ -0,0 +1,132 @@ +#ifndef GUARD_CONSTANTS_PARTY_MENU_H +#define GUARD_CONSTANTS_PARTY_MENU_H + +#define AILMENT_NONE 0 +#define AILMENT_PSN 1 +#define AILMENT_PRZ 2 +#define AILMENT_SLP 3 +#define AILMENT_FRZ 4 +#define AILMENT_BRN 5 +#define AILMENT_PKRS 6 +#define AILMENT_FNT 7 + +#define TUTOR_MOVE_MEGA_PUNCH 0 +#define TUTOR_MOVE_SWORDS_DANCE 1 +#define TUTOR_MOVE_MEGA_KICK 2 +#define TUTOR_MOVE_BODY_SLAM 3 +#define TUTOR_MOVE_DOUBLE_EDGE 4 +#define TUTOR_MOVE_COUNTER 5 +#define TUTOR_MOVE_SEISMIC_TOSS 6 +#define TUTOR_MOVE_MIMIC 7 +#define TUTOR_MOVE_METRONOME 8 +#define TUTOR_MOVE_SOFT_BOILED 9 +#define TUTOR_MOVE_DREAM_EATER 10 +#define TUTOR_MOVE_THUNDER_WAVE 11 +#define TUTOR_MOVE_EXPLOSION 12 +#define TUTOR_MOVE_ROCK_SLIDE 13 +#define TUTOR_MOVE_SUBSTITUTE 14 +#define TUTOR_MOVE_DYNAMIC_PUNCH 15 +#define TUTOR_MOVE_ROLLOUT 16 +#define TUTOR_MOVE_PSYCH_UP 17 +#define TUTOR_MOVE_SNORE 18 +#define TUTOR_MOVE_ICY_WIND 19 +#define TUTOR_MOVE_ENDURE 20 +#define TUTOR_MOVE_MUD_SLAP 21 +#define TUTOR_MOVE_ICE_PUNCH 22 +#define TUTOR_MOVE_SWAGGER 23 +#define TUTOR_MOVE_SLEEP_TALK 24 +#define TUTOR_MOVE_SWIFT 25 +#define TUTOR_MOVE_DEFENSE_CURL 26 +#define TUTOR_MOVE_THUNDER_PUNCH 27 +#define TUTOR_MOVE_FIRE_PUNCH 28 +#define TUTOR_MOVE_FURY_CUTTER 29 +#define TUTOR_MOVE_COUNT 30 + +#define PARTY_LAYOUT_SINGLE 0 +#define PARTY_LAYOUT_DOUBLE 1 +#define PARTY_LAYOUT_MULTI 2 +#define PARTY_LAYOUT_MULTI_SHOWCASE 3 // The layout during the screen that appears just before a multi battle +#define PARTY_LAYOUT_COUNT 4 +#define KEEP_PARTY_LAYOUT 0xFF + +#define PARTY_MENU_TYPE_FIELD 0 +#define PARTY_MENU_TYPE_IN_BATTLE 1 +#define PARTY_MENU_TYPE_CONTEST 2 +#define PARTY_MENU_TYPE_CHOOSE_MON 3 +#define PARTY_MENU_TYPE_CHOOSE_HALF 4 // multi battles, eReader battles, and some battle facilities +#define PARTY_MENU_TYPE_MULTI_SHOWCASE 5 +#define PARTY_MENU_TYPE_DAYCARE 6 +#define PARTY_MENU_TYPE_MOVE_RELEARNER 7 +#define PARTY_MENU_TYPE_UNION_ROOM_REGISTER 8 // trading board +#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board +#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade +#define PARTY_MENU_TYPE_MINIGAME 11 +#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12 + +#define PARTY_ACTION_CHOOSE_MON 0 +#define PARTY_ACTION_SEND_OUT 1 +#define PARTY_ACTION_CANT_SWITCH 2 +#define PARTY_ACTION_USE_ITEM 3 +#define PARTY_ACTION_ABILITY_PREVENTS 4 +#define PARTY_ACTION_GIVE_ITEM 5 +#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC +#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7 +#define PARTY_ACTION_SWITCH 8 +#define PARTY_ACTION_SWITCHING 9 +#define PARTY_ACTION_SOFTBOILED 10 +#define PARTY_ACTION_CHOOSE_AND_CLOSE 11 +#define PARTY_ACTION_MOVE_TUTOR 12 +#define PARTY_ACTION_MINIGAME 13 +#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately + +// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu +#define PARTY_MSG_CHOOSE_MON 0 +#define PARTY_MSG_CHOOSE_MON_OR_CANCEL 1 +#define PARTY_MSG_CHOOSE_MON_AND_CONFIRM 2 +#define PARTY_MSG_MOVE_TO_WHERE 3 +#define PARTY_MSG_TEACH_WHICH_MON 4 +#define PARTY_MSG_USE_ON_WHICH_MON 5 +#define PARTY_MSG_GIVE_TO_WHICH_MON 6 +#define PARTY_MSG_NOTHING_TO_CUT 7 +#define PARTY_MSG_CANT_SURF_HERE 8 +#define PARTY_MSG_ALREADY_SURFING 9 +#define PARTY_MSG_CURRENT_TOO_FAST 10 +#define PARTY_MSG_ENJOY_CYCLING 11 +#define PARTY_MSG_ALREADY_IN_USE 12 +#define PARTY_MSG_CANT_USE_HERE 13 +#define PARTY_MSG_NO_MON_FOR_BATTLE 14 +#define PARTY_MSG_CHOOSE_MON_2 15 +#define PARTY_MSG_NOT_ENOUGH_HP 16 +#define PARTY_MSG_X_MONS_ARE_NEEDED 17 +#define PARTY_MSG_MONS_CANT_BE_SAME 18 +#define PARTY_MSG_NO_SAME_HOLD_ITEMS 19 +#define PARTY_MSG_UNUSED 20 +#define PARTY_MSG_DO_WHAT_WITH_MON 21 +#define PARTY_MSG_RESTORE_WHICH_MOVE 22 +#define PARTY_MSG_BOOST_PP_WHICH_MOVE 23 +#define PARTY_MSG_DO_WHAT_WITH_ITEM 24 +#define PARTY_MSG_DO_WHAT_WITH_MAIL 25 +#define PARTY_MSG_ALREADY_HOLDING_ONE 26 +#define PARTY_MSG_NONE 127 + +// IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box +#define PARTYBOX_DESC_NO_USE 0 +#define PARTYBOX_DESC_ABLE_3 1 +#define PARTYBOX_DESC_FIRST 2 +#define PARTYBOX_DESC_SECOND 3 +#define PARTYBOX_DESC_THIRD 4 +#define PARTYBOX_DESC_FOURTH 5 +#define PARTYBOX_DESC_ABLE 6 +#define PARTYBOX_DESC_NOT_ABLE 7 +#define PARTYBOX_DESC_ABLE_2 8 +#define PARTYBOX_DESC_NOT_ABLE_2 9 +#define PARTYBOX_DESC_LEARNED 10 +#define PARTYBOX_DESC_HAVE 11 +#define PARTYBOX_DESC_DONT_HAVE 12 + +#define SELECTWINDOW_ACTIONS 0 +#define SELECTWINDOW_ITEM 1 +#define SELECTWINDOW_MAIL 2 +#define SELECTWINDOW_MOVES 3 + +#endif // GUARD_CONSTANTS_PARTY_MENU_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 52a4f0254..b2084f154 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -177,13 +177,13 @@ #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 +#define MIN_LEVEL 1 #define MAX_LEVEL 100 #define OT_ID_PLAYER_ID 0 #define OT_ID_PRESET 1 #define OT_ID_RANDOM_NO_SHINY 2 - #define MON_GIVEN_TO_PARTY 0 #define MON_GIVEN_TO_PC 1 #define MON_CANT_GIVE 2 @@ -192,6 +192,9 @@ #define PLAYER_HAS_ONE_MON 1 #define PLAYER_HAS_ONE_USABLE_MON 2 +#define MON_ALREADY_KNOWS_MOVE 0xFFFE +#define MON_HAS_MAX_MOVES 0xFFFF + #define MON_MALE 0x00 #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF diff --git a/include/constants/script_menu.h b/include/constants/script_menu.h index b7ec908c1..928ca00e0 100644 --- a/include/constants/script_menu.h +++ b/include/constants/script_menu.h @@ -13,8 +13,8 @@ #define MULTI_ENTERINFO 2 #define MULTI_CONTEST_INFO 3 #define MULTI_CONTEST_TYPE 4 -#define MULTI_DECOR_NOREGISTRY 5 -#define MULTI_DECOR_REGISTRY 6 +#define MULTI_BASE_PC_NO_REGISTRY 5 +#define MULTI_BASE_PC_WITH_REGISTRY 6 #define MULTI_REGISTER_MENU 7 #define MULTI_SSTIDAL_LILYCOVE 8 // Exit only, populated by CreateLilycoveSSTidalMultichoice #define MULTI_UNUSED_9 9 diff --git a/include/constants/trade.h b/include/constants/trade.h new file mode 100644 index 000000000..fa42e6b43 --- /dev/null +++ b/include/constants/trade.h @@ -0,0 +1,116 @@ +#ifndef GUARD_CONSTANTS_TRADE_H +#define GUARD_CONSTANTS_TRADE_H + +#define TRADE_PLAYER 0 +#define TRADE_PARTNER 1 + +#define LINK_TRADE_TIMEOUT 300 + +// In-game Trade IDs +#define INGAME_TRADE_SEEDOT 0 +#define INGAME_TRADE_PLUSLE 1 +#define INGAME_TRADE_HORSEA 2 +#define INGAME_TRADE_MEOWTH 3 + +// Flag IDs for sending link data +#define INITIATE_TRADE 1 +#define CANCEL_TRADE 2 +#define WANTS_TO_TRADE 1 +#define WANTS_TO_CANCEL 2 +#define READY_FINISH_TRADE 1 +#define FINISH_TRADE 2 + +// Return values for CanTradeSelectedMon and CanSpinTradeMon +#define CAN_TRADE_MON 0 +#define CANT_TRADE_LAST_MON 1 +#define CANT_TRADE_NATIONAL 2 +#define CANT_TRADE_EGG_YET 3 +#define CANT_TRADE_INVALID_MON 4 +#define CANT_TRADE_EGG_YET2 5 + +// Return values for CheckValidityOfTradeMons +#define PLAYER_MON_INVALID 0 +#define BOTH_MONS_VALID 1 +#define PARTNER_MON_INVALID 2 + +// Return values for GetGameProgressForLinkTrade +#define TRADE_BOTH_PLAYERS_READY 0 +#define TRADE_PLAYER_NOT_READY 1 +#define TRADE_PARTNER_NOT_READY 2 + +// Indexes for sTradeActionTexts +#define TRADE_TEXT_CANCEL 0 +#define TRADE_TEXT_CHOOSE_MON 1 +#define TRADE_TEXT_SUMMARY 2 +#define TRADE_TEXT_TRADE 3 +#define TRADE_TEXT_CANCEL_TRADE 4 +#define TRADE_TEXT_JP_QUIT 5 + +// Checked to confirm DrawTradeMenuParty has reached final state +#define DRAW_PARTY_FINISH 5 + +// Message indexes for sTradeMessages +#define TRADE_MSG_STANDBY 0 +#define TRADE_MSG_CANCELED 1 +#define TRADE_MSG_ONLY_MON1 2 +#define TRADE_MSG_ONLY_MON2 3 +#define TRADE_MSG_WAITING_FOR_FRIEND 4 +#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5 +#define TRADE_MSG_MON_CANT_BE_TRADED 6 +#define TRADE_MSG_EGG_CANT_BE_TRADED 7 +#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8 + +// IDs for QueueAction +#define QUEUE_SEND_DATA 0 +#define QUEUE_STANDBY 1 +#define QUEUE_ONLY_MON1 2 +#define QUEUE_ONLY_MON2 3 +#define QUEUE_UNUSED1 4 +#define QUEUE_UNUSED2 5 +#define QUEUE_MON_CANT_BE_TRADED 6 +#define QUEUE_EGG_CANT_BE_TRADED 7 +#define QUEUE_FRIENDS_MON_CANT_BE_TRADED 8 + +#define QUEUE_DELAY_MSG 3 +#define QUEUE_DELAY_DATA 5 + +// IDs for CallTradeMenuFunc +#define TRADEMENUFUNC_MAIN_MENU 0 +#define TRADEMENUFUNC_SELECTED_MON 1 +#define TRADEMENUFUNC_SHOW_MON_SUMMARY 2 +#define TRADEMENUFUNC_CONFIRM_OR_CANCEL_TRADE 3 +#define TRADEMENUFUNC_CANCEL_TRADE_PROMPT 4 +#define TRADEMENUFUNC_UNUSED_5 5 +#define TRADEMENUFUNC_BOTH_MONS_SELECTED 6 +#define TRADEMENUFUNC_CONFIRM_TRADE_PROMPT 7 +#define TRADEMENUFUNC_REDRAW_MAIN_MENU 8 +#define TRADEMENUFUNC_LINK_TRADE_FADE_OUT 9 +#define TRADEMENUFUNC_LINK_TRADE_WAIT_FADE 10 +#define TRADEMENUFUNC_CANCEL_TRADE_1 11 +#define TRADEMENUFUNC_CANCEL_TRADE_2 12 +#define TRADEMENUFUNC_START_LINK_TRADE 13 +#define TRADEMENUFUNC_DELAY_TRADE_CONFIRM 14 +#define TRADEMENUFUNC_UNUSED_15 15 +#define TRADEMENUFUNC_LINK_TRADE_WAIT_QUEUE 16 +#define TRADEMENUFUNC_PARTNER_MON_INVALID 17 +#define TRADEMENUFUNC_STANDBY 100 + +// Message indexes for sUnionRoomTradeMessages +#define UR_TRADE_MSG_NONE 0 +#define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS 1 +#define UR_TRADE_MSG_NOT_EGG 2 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1 3 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2 4 +#define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED 5 +#define UR_TRADE_MSG_EGG_CANT_BE_TRADED 6 +#define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON 7 +#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1 8 +#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 9 + +// Return values for CanRegisterMonForTradingBoard +#define CAN_REGISTER_MON 0 +#define CANT_REGISTER_MON 1 +#define CANT_REGISTER_EGG 2 + + +#endif //GUARD_CONSTANTS_TRADE_H diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h index 4aae1dbbc..cab56a5ac 100644 --- a/include/constants/trainer_hill.h +++ b/include/constants/trainer_hill.h @@ -11,7 +11,7 @@ #define TRAINER_HILL_FUNC_7 7 #define TRAINER_HILL_FUNC_8 8 #define TRAINER_HILL_FUNC_9 9 -#define TRAINER_HILL_FUNC_10 10 +#define TRAINER_HILL_FUNC_IS_IN 10 #define TRAINER_HILL_FUNC_11 11 #define TRAINER_HILL_FUNC_12 12 #define TRAINER_HILL_FUNC_13 13 diff --git a/include/constants/tv.h b/include/constants/tv.h new file mode 100644 index 000000000..c22bec9a3 --- /dev/null +++ b/include/constants/tv.h @@ -0,0 +1,46 @@ +#ifndef GUARD_CONSTANTS_TV_H +#define GUARD_CONSTANTS_TV_H + +#define POKENEWS_NONE 0 +#define POKENEWS_SLATEPORT 1 +#define POKENEWS_GAME_CORNER 2 +#define POKENEWS_LILYCOVE 3 +#define POKENEWS_BLENDMASTER 4 + +#define TVSHOW_OFF_AIR 0 +#define TVSHOW_FAN_CLUB_LETTER 1 +#define TVSHOW_RECENT_HAPPENINGS 2 +#define TVSHOW_PKMN_FAN_CLUB_OPINIONS 3 +#define TVSHOW_UNKN_SHOWTYPE_04 4 +#define TVSHOW_NAME_RATER_SHOW 5 +#define TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE 6 +#define TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE 7 +#define TVSHOW_CONTEST_LIVE_UPDATES 8 +#define TVSHOW_3_CHEERS_FOR_POKEBLOCKS 9 +#define TVSHOW_BATTLE_UPDATE 10 +#define TVSHOW_FAN_CLUB_SPECIAL 11 +#define TVSHOW_CONTEST_LIVE_UPDATES_2 12 +// // +#define TVSHOW_POKEMON_TODAY_CAUGHT 21 +#define TVSHOW_SMART_SHOPPER 22 +#define TVSHOW_POKEMON_TODAY_FAILED 23 +#define TVSHOW_FISHING_ADVICE 24 +#define TVSHOW_WORLD_OF_MASTERS 25 +#define TVSHOW_TODAYS_RIVAL_TRAINER 26 +#define TVSHOW_TREND_WATCHER 27 +#define TVSHOW_TREASURE_INVESTIGATORS 28 +#define TVSHOW_FIND_THAT_GAMER 29 +#define TVSHOW_BREAKING_NEWS 30 +#define TVSHOW_SECRET_BASE_VISIT 31 +#define TVSHOW_LOTTO_WINNER 32 +#define TVSHOW_BATTLE_SEMINAR 33 +#define TVSHOW_TRAINER_FAN_CLUB 34 +#define TVSHOW_CUTIES 35 +#define TVSHOW_FRONTIER 36 +#define TVSHOW_NUMBER_ONE 37 +#define TVSHOW_SECRET_BASE_SECRETS 38 +#define TVSHOW_SAFARI_FAN_CLUB 39 +// // +#define TVSHOW_MASS_OUTBREAK 41 + +#endif //GUARD_CONSTANTS_TV_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 72b15654e..64ff6622b 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -77,7 +77,7 @@ #define VAR_REGICE_STEPS_2 0x403C #define VAR_REGICE_STEPS_3 0x403D #define VAR_ALTERING_CAVE_WILD_SET 0x403E -#define VAR_ALWAYS_ZERO_0x403F 0x403F // This var is read and written, but is always zero. +#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing #define VAR_DAYS 0x4040 #define VAR_FANCLUB_UNKNOWN_1 0x4041 #define VAR_FANCLUB_UNKNOWN_2 0x4042 @@ -147,7 +147,7 @@ #define VAR_LITTLEROOT_HOUSES_STATE 0x4082 #define VAR_UNUSED_0x4083 0x4083 // Unused Var #define VAR_BIRCH_LAB_STATE 0x4084 -#define VAR_PETALBURG_GYM_STATE 0x4085 +#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman #define VAR_LINK_CONTEST_ROOM_STATE 0x4086 #define VAR_CABLE_CLUB_STATE 0x4087 #define VAR_CONTEST_LOCATION 0x4088 @@ -172,13 +172,13 @@ #define VAR_UNUSED_0x409B 0x409B // Unused Var #define VAR_ELITE_4_STATE 0x409C #define VAR_UNUSED_0x409D 0x409D // Unused Var -#define VAR_MOSSDEEP_SPACE_CENTER_STATE_1 0x409E -#define VAR_MOSSDEEP_SPACE_CENTER_STATE_2 0x409F +#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE 0x409E +#define VAR_MOSSDEEP_SPACE_CENTER_STATE 0x409F #define VAR_SLATEPORT_HARBOR_STATE 0x40A0 #define VAR_UNUSED_0x40A1 0x40A1 // Unused var #define VAR_SEAFLOOR_CAVERN_STATE 0x40A2 #define VAR_CABLE_CAR_STATION_STATE 0x40A3 -#define VAR_SAFARI_ZONE_STATE 0x40A4 +#define VAR_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ #define VAR_TRICK_HOUSE_ENTRANCE_STATE_1 0x40A5 #define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6 #define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7 diff --git a/include/contest.h b/include/contest.h index 2b1b95af5..aeedc63b1 100644 --- a/include/contest.h +++ b/include/contest.h @@ -466,7 +466,7 @@ void CB2_StartContest(void); void sub_80DA8C8(u8 partyIndex); void sub_80DAB8C(u8 contestType, u8 rank); void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame); -u8 sub_80DAE0C(struct Pokemon *pkmn); +u8 GetContestEntryEligibility(struct Pokemon *pkmn); void sub_80DB09C(u8 contestCategory); bool8 IsSpeciesNotUnown(u16 species); bool8 Contest_IsMonsTurnDisabled(u8 a); diff --git a/include/dma3.h b/include/dma3.h deleted file mode 100644 index 8eff34f55..000000000 --- a/include/dma3.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef GUARD_DMA3_H -#define GUARD_DMA3_H - -// Maximum amount of data we will transfer in one operation -#define MAX_DMA_BLOCK_SIZE 0x1000 - -#define Dma3CopyLarge_(src, dest, size, bit) \ -{ \ - const void *_src = src; \ - void *_dest = dest; \ - u32 _size = size; \ - while (1) \ - { \ - if (_size <= MAX_DMA_BLOCK_SIZE) \ - { \ - DmaCopy##bit(3, _src, _dest, _size); \ - break; \ - } \ - DmaCopy##bit(3, _src, _dest, MAX_DMA_BLOCK_SIZE); \ - _src += MAX_DMA_BLOCK_SIZE; \ - _dest += MAX_DMA_BLOCK_SIZE; \ - _size -= MAX_DMA_BLOCK_SIZE; \ - } \ -} - -#define Dma3CopyLarge16_(src, dest, size) Dma3CopyLarge_(src, dest, size, 16) -#define Dma3CopyLarge32_(src, dest, size) Dma3CopyLarge_(src, dest, size, 32) - -#define Dma3FillLarge_(value, dest, size, bit) \ -{ \ - void *_dest = dest; \ - u32 _size = size; \ - while (1) \ - { \ - if (_size <= MAX_DMA_BLOCK_SIZE) \ - { \ - DmaFill##bit(3, value, _dest, _size); \ - break; \ - } \ - DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \ - _dest += MAX_DMA_BLOCK_SIZE; \ - _size -= MAX_DMA_BLOCK_SIZE; \ - } \ -} - -#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) -#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) - -void ClearDma3Requests(void); -void ProcessDma3Requests(void); -s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); -s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode); -s16 CheckForSpaceForDma3Request(s16 index); - -#endif // GUARD_DMA3_H diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h index 55e8fa880..9995decc2 100644 --- a/include/dodrio_berry_picking.h +++ b/include/dodrio_berry_picking.h @@ -2,7 +2,7 @@ #define GUARD_DODRIO_BERRY_PICKING_H void sub_802493C(u16 a0, void (*callback)(void)); -void sub_8027A5C(void); -void sub_8027AAC(void); +void IsDodrioInParty(void); +void ShowDodrioBerryPickingRecords(void); #endif // GUARD_DODRIO_BERRY_PICKING_H diff --git a/include/easy_chat.h b/include/easy_chat.h index 84ac15422..221cbd1da 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -129,11 +129,11 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); u16 sub_811EE38(u16 group); -u16 sub_811F01C(void); +u16 GetNewHipsterPhraseToTeach(void); u16 EasyChat_GetNumWordsInGroup(u8); u16 sub_811EE90(u16); void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType); void sub_811F8BC(void); -void sub_811EFC0(u8 additionalPhraseId); +void UnlockAdditionalPhrase(u8 additionalPhraseId); #endif // GUARD_EASYCHAT_H diff --git a/include/event_scripts.h b/include/event_scripts.h index fc0b3cde0..b86c46df0 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1,22 +1,14 @@ #ifndef GUARD_EVENT_SCRIPTS_H #define GUARD_EVENT_SCRIPTS_H -extern const u8 gUnknown_0823B4E8[]; -extern const u8 gUnknown_0823B5E9[]; extern const u8 EventScript_TestSignpostMsg[]; extern const u8 EventScript_TryGetTrainerScript[]; -extern const u8 EventScript_275BB7[]; -extern const u8 EventScript_275D0C[]; -extern const u8 EventScript_275D1F[]; -extern const u8 EventScript_275D2E[]; extern const u8 EventScript_271354[]; extern const u8 EventScript_DoTainerBattle[]; extern const u8 EventScript_TryDoDoubleTrainerBattle[]; extern const u8 EventScript_TryDoNormalTrainerBattle[]; extern const u8 EventScript_TryDoDoubleRematchBattle[]; extern const u8 EventScript_TryDoRematchBattle[]; -extern const u8 SecretBase_EventScript_DollInteract[]; -extern const u8 SecretBase_EventScript_CushionInteract[]; extern const u8 BerryTreeScript[]; @@ -368,28 +360,28 @@ extern const u8 gPokeNewsTextLilycove_Ending[]; extern const u8 gPokeNewsTextBlendMaster_Upcoming[]; extern const u8 gPokeNewsTextBlendMaster_Ongoing[]; extern const u8 gPokeNewsTextBlendMaster_Ending[]; -extern const u8 SecretBase_RedCave1_Text_274966[]; -extern const u8 SecretBase_RedCave1_Text_274D13[]; -extern const u8 SecretBase_RedCave1_Text_274FFE[]; -extern const u8 SecretBase_RedCave1_Text_275367[]; -extern const u8 SecretBase_RedCave1_Text_2756C7[]; -extern const u8 SecretBase_RedCave1_Text_274B24[]; -extern const u8 SecretBase_RedCave1_Text_274E75[]; -extern const u8 SecretBase_RedCave1_Text_2751E1[]; -extern const u8 SecretBase_RedCave1_Text_2754F6[]; -extern const u8 SecretBase_RedCave1_Text_2758CC[]; +extern const u8 SecretBase_Text_Trainer0Defeated[]; +extern const u8 SecretBase_Text_Trainer1Defeated[]; +extern const u8 SecretBase_Text_Trainer2Defeated[]; +extern const u8 SecretBase_Text_Trainer3Defeated[]; +extern const u8 SecretBase_Text_Trainer4Defeated[]; +extern const u8 SecretBase_Text_Trainer5Defeated[]; +extern const u8 SecretBase_Text_Trainer6Defeated[]; +extern const u8 SecretBase_Text_Trainer7Defeated[]; +extern const u8 SecretBase_Text_Trainer8Defeated[]; +extern const u8 SecretBase_Text_Trainer9Defeated[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[]; //field effects extern const u8 EventScript_FldEffStrength[]; extern const u8 EventScript_FailSweetScent[]; -extern const u8 EventScript_2926F8[]; +extern const u8 EventScript_FldEffFlash[]; extern const u8 EventScript_FldEffRockSmash[]; //player pc -extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[]; -extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[]; +extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_TurnOffPlayerPC[]; +extern const u8 LittlerootTown_MaysHouse_2F_EventScript_TurnOffPlayerPC[]; //contest_strings extern const u8 gText_0827D507[]; @@ -415,124 +407,121 @@ extern const u8 gMauvilleManText_WhenYouSeeTheSettingSunDoesIt[]; extern const u8 gMauvilleManText_LyingBackInTheGreenGrass[]; extern const u8 gMauvilleManText_SecretBasesAreSoWonderful[]; +// mauville old man storyteller +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SavedGameTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SavedGameAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SavedGameStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrendsStartedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrendsStartedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrendsStartedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BikeTradesTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BikeTradesAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BikeTradesStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_InterviewsTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_InterviewsAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_InterviewsStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrainerBattlesTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrainerBattlesAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TrainerBattlesStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonCaughtTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonCaughtAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonCaughtStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_FishingPokemonCaughtTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_FishingPokemonCaughtAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_FishingPokemonCaughtStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_EggsHatchedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_EggsHatchedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_EggsHatchedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonEvolvedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonEvolvedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_PokemonEvolvedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedPokemonCenterTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedPokemonCenterAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedPokemonCenterStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RestedAtHomeTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RestedAtHomeAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RestedAtHomeStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SafariGamesTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SafariGamesAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SafariGamesStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedCutTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedCutAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedCutStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedRockSmashTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedRockSmashAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedRockSmashStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_MovedBasesTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_MovedBasesAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_MovedBasesStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedSplashTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedSplashAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedSplashStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedStruggleTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedStruggleAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedStruggleStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SlotJackpotsTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SlotJackpotsAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_SlotJackpotsStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RouletteWinsTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RouletteWinsAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RouletteWinsStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BattleTowerChallengesTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BattleTowerChallengesAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_BattleTowerChallengesStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_MadePokeblocksTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_MadePokeblocksAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_MadePokeblocksStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_EnteredContestsTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_EnteredContestsAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_EnteredContestsStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonContestsTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonContestsAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonContestsStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesShoppedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesShoppedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesShoppedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedItemFinderTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedItemFinderAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedItemFinderStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesRainedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesRainedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TimesRainedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedPokedexTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedPokedexAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedPokedexStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_ReceivedRibbonsTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_ReceivedRibbonsAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_ReceivedRibbonsStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_LedgesJumpedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_LedgesJumpedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_LedgesJumpedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TVWatchedTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TVWatchedAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_TVWatchedStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedClockTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedClockAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_CheckedClockStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonLotteryTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonLotteryAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_WonLotteryStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedDaycareTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedDaycareAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_UsedDaycareStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RodeCableCarTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RodeCableCarAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_RodeCableCarStory[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_HotSpringsTitle[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_HotSpringsAction[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_HotSpringsStory[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E947[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E956[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9D7[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9EF[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9FE[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA7D[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA98[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EAA8[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB19[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB31[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB3E[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBB5[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBCD[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBDD[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC60[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC79[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC81[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED04[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED21[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED30[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDA1[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDB5[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDCF[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE45[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE5D[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE6A[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEDD[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEF1[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF01[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF73[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF95[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EFAA[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F045[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F05A[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F071[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F0F3[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F10D[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F125[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1BE[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1D5[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1DE[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F24F[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F269[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F277[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F2FC[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F314[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F32A[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3AD[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3C6[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3D2[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F44B[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F461[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F47C[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F50C[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F51B[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F538[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5BE[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5D1[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5F2[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F678[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F694[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F6B4[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F751[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F76A[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F776[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F7F6[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F811[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F822[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F89C[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8AF[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8BC[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F92F[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F941[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F949[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9D1[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9EA[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9FD[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA81[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA99[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FAA7[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB1D[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB35[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB47[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBC4[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBD9[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBEA[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC6B[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC85[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC98[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD1D[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD35[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD40[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDA2[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDBD[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDCE[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE57[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE72[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE88[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF0C[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF27[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF44[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFDD[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFFA[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_29000D[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_290097[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900B5[]; -extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900CB[]; - -extern const u8 EventScript_PlayerPCMale[]; -extern const u8 EventScript_PlayerPCFemale[]; -extern const u8 EventScript_SecretBasePC[]; -extern const u8 EventScript_RecordMixingSecretBasePC[]; +extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_PC[]; +extern const u8 LittlerootTown_MaysHouse_2F_EventScript_PC[]; extern const u8 EventScript_PC[]; extern const u8 EventScript_TestSignpostMsg[]; extern const u8 EventScript_HiddenItemScript[]; -extern const u8 EventScript_2759F1[]; extern const u8 EventScript_TV[]; extern const u8 EventScript_ClosedSootopolisDoor[]; extern const u8 SkyPillar_Outside_EventScript_2393F9[]; @@ -552,8 +541,6 @@ extern const u8 EventScript_WirelessBoxResults[]; extern const u8 EventScript_CableBoxResults[]; extern const u8 EventScript_Questionnaire[]; extern const u8 EventScript_TrainerHillTimer[]; -extern const u8 EventScript_SecretBaseSandOrnament[]; -extern const u8 EventScript_SecretBaseShieldOrToyTV[]; extern const u8 EventScript_UseSurf[]; extern const u8 EventScript_UseWaterfall[]; extern const u8 EventScript_CannotUseWaterfall[]; @@ -561,17 +548,32 @@ extern const u8 EventScript_UseDive[]; extern const u8 EventScript_UseDiveUnderwater[]; extern const u8 EventScript_FallDownHole[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252BE8[]; -extern const u8 EventScript_Poison[]; +extern const u8 EventScript_FieldPoison[]; extern const u8 EventScript_EggHatch[]; extern const u8 UnusualWeather_EventScript_EndEventAndCleanup_1[]; -extern const u8 IslandCave_EventScript_238EAF[]; +extern const u8 IslandCave_EventScript_OpenRegiEntrance[]; extern const u8 MauvilleCity_EventScript_1DF7BA[]; extern const u8 Route119_EventScript_1F49EC[]; extern const u8 LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6[]; -extern const u8 RustboroCity_Gym_EventScript_21307B[]; -extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224175[]; +extern const u8 RustboroCity_Gym_EventScript_RegisterRoxanne[]; +extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_RivalRayquazaCall[]; extern const u8 SSTidalCorridor_EventScript_23C050[]; -extern const u8 gUnknown_082A8350[]; +extern const u8 EventScript_FallDownHoleMtPyre[]; + +// Secret Base +extern const u8 SecretBase_EventScript_PC[]; +extern const u8 SecretBase_EventScript_RecordMixingPC[]; +extern const u8 SecretBase_EventScript_PCCancel[]; +extern const u8 SecretBase_EventScript_ShowRegisterMenu[]; +extern const u8 SecretBase_EventScript_SandOrnament[]; +extern const u8 SecretBase_EventScript_ShieldOrToyTV[]; +extern const u8 SecretBase_EventScript_DollInteract[]; +extern const u8 SecretBase_EventScript_CushionInteract[]; +extern const u8 SecretBase_EventScript_CheckEntrance[]; +extern const u8 SecretBase_EventScript_Enter[]; +extern const u8 SecretBase_EventScript_InitDecorations[]; +extern const u8 SecretBase_EventScript_PutAwayDecoration[]; +extern const u8 SecretBase_EventScript_SetDecoration[]; // Battle Pyramid. extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[]; @@ -579,9 +581,9 @@ extern const u8 BattlePyramid_TrainerBattle[]; extern const u8 BattlePyramid_FindItemBall[]; // fldeff misc -extern const u8 EventScript_275A86[]; -extern const u8 EventScript_275ADF[]; -extern const u8 EventScript_275B38[]; +extern const u8 SecretBase_EventScript_CaveUseSecretPower[]; +extern const u8 SecretBase_EventScript_TreeUseSecretPower[]; +extern const u8 SecretBase_EventScript_ShrubUseSecretPower[]; // trainer hill extern const u8 EventScript_2C83F0[]; diff --git a/include/field_effect.h b/include/field_effect.h index 0dbe600d3..0a99938d7 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -12,7 +12,7 @@ extern bool8 (*gFieldCallback2)(void); u32 FieldEffectStart(u8); bool8 FieldEffectActiveListContains(u8 id); void FieldEffectActiveListClear(void); -void sub_80B69DC(void); +void ReturnToFieldFromFlyMapSelect(void); u8 AddNewGameBirchObject(s16, s16, u8); void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); diff --git a/include/field_poison.h b/include/field_poison.h index a23a93ca5..e9de7878e 100644 --- a/include/field_poison.h +++ b/include/field_poison.h @@ -7,13 +7,7 @@ // Exported ROM declarations -enum { - FLDPSN_NONE, - FLDPSN_PSN, - FLDPSN_FNT -}; - -void ExecuteWhiteOut(void); +void TryFieldPoisonWhiteOut(void); s32 DoPoisonFieldEffect(void); #endif //GUARD_FIELD_POISON_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index a62a76b2a..42f077dc3 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -28,17 +28,17 @@ void sub_80AF80C(u8 metatileBehavior); void sub_80AF828(void); void sub_80AF838(void); void sub_80AF848(void); -void sub_80AF87C(void); +void DoMossdeepGymWarp(void); void sub_80AF8B8(void); void sub_80AF948(void); void sub_80AF9F8(void); void sub_80AFC60(void); -void sub_80B009C(u8 flashLevel); +void AnimateFlash(u8 flashLevel); void WriteBattlePyramidViewScanlineEffectBuffer(void); void sub_80B0244(void); void sub_80B0268(void); -void sub_80B0534(void); -void sub_80B058C(void); +void DoOrbEffect(void); +void FadeOutOrbEffect(void); void sub_80B05B4(void); void WriteFlashScanlineEffectBuffer(u8 flashLevel); bool8 walkrun_is_standing_still(void); diff --git a/include/fldeff.h b/include/fldeff.h index ff6c9823f..5da189c2a 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -28,8 +28,8 @@ bool8 sub_80E1584(void); // soft-boiled bool8 SetUpFieldMove_SoftBoiled(void); -void sub_81615A8(u8 taskId); -void sub_8161560(u8 taskId); +void Task_TryUseSoftboiledOnPartyMon(u8 taskId); +void ChooseMonForSoftboiled(u8 taskId); // flash bool8 SetUpFieldMove_Flash(void); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index a17180589..de08fd1ec 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -65,7 +65,7 @@ struct EventObjectTemplate /*0x0E*/ u16 trainerRange_berryTreeId; /*0x10*/ const u8 *script; /*0x14*/ u16 flagId; -}; /*size = 0x18*/ +}; struct WarpEvent { @@ -82,7 +82,6 @@ struct CoordEvent u8 elevation; u16 trigger; u16 index; - u8 filler_A[0x2]; u8 *script; }; @@ -90,20 +89,14 @@ struct BgEvent { u16 x, y; u8 elevation; - u8 kind; - union { // carried over from diego's FR/LG work, seems to be the same struct - // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union. + u8 kind; // The "kind" field determines how to access bgUnion union below. + union { u8 *script; - - // hidden item type struct { u16 item; - u16 hiddenItemId; // flag offset to determine flag lookup + u16 hiddenItemId; } hiddenItem; - - // secret base type u32 secretBaseId; - } bgUnion; }; @@ -113,7 +106,6 @@ struct MapEvents u8 warpCount; u8 coordEventCount; u8 bgEventCount; - struct EventObjectTemplate *eventObjects; struct WarpEvent *warps; struct CoordEvent *coordEvents; @@ -122,10 +114,10 @@ struct MapEvents struct MapConnection { - /*0x00*/ u8 direction; - /*0x01*/ u32 offset; - /*0x05*/ u8 mapGroup; - /*0x06*/ u8 mapNum; + u8 direction; + u32 offset; + u8 mapGroup; + u8 mapNum; }; struct MapConnections @@ -180,7 +172,7 @@ struct EventObject /*0x03*/ u32 spriteAffineAnimPausedBackup:1; u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; - u32 unk3_3:1; + u32 hideReflection:1; /*0x04*/ u8 spriteId; /*0x05*/ u8 graphicsId; /*0x06*/ u8 movementType; @@ -267,7 +259,20 @@ enum enum { - COLLISION_LEDGE_JUMP = 6 + COLLISION_NONE, + COLLISION_OUTSIDE_RANGE, + COLLISION_IMPASSABLE, + COLLISION_ELEVATION_MISMATCH, + COLLISION_EVENT_OBJECT, + COLLISION_STOP_SURFING, + COLLISION_LEDGE_JUMP, + COLLISION_PUSHED_BOULDER, + COLLISION_ROTATING_GATE, + COLLISION_WHEELIE_HOP, + COLLISION_ISOLATED_VERTICAL_RAIL, + COLLISION_ISOLATED_HORIZONTAL_RAIL, + COLLISION_VERTICAL_RAIL, + COLLISION_HORIZONTAL_RAIL, }; // player running states diff --git a/include/global.h b/include/global.h index 44a4d0164..94dfebc28 100644 --- a/include/global.h +++ b/include/global.h @@ -220,7 +220,7 @@ struct Apprentice u8 lvlMode:2; // + 1 u8 field_1; u8 number; - struct ApprenticeMon party[3]; + struct ApprenticeMon party[MULTI_PARTY_SIZE]; u16 easyChatWords[6]; u8 playerId[TRAINER_ID_LENGTH]; u8 playerName[PLAYER_NAME_LENGTH]; @@ -282,7 +282,7 @@ struct BattleTowerEReaderTrainer /*0x10*/ u16 greeting[6]; /*0x1C*/ u16 farewellPlayerLost[6]; /*0x28*/ u16 farewellPlayerWon[6]; - /*0x34*/ struct BattleTowerPokemon party[3]; + /*0x34*/ struct BattleTowerPokemon party[FRONTIER_PARTY_SIZE]; /*0xB8*/ u32 checksum; }; @@ -329,7 +329,7 @@ struct BattleFrontier /*0xCA9*/ u8 field_CA9_d:1; // 0x20 /*0xCA9*/ u8 field_CA9_e:1; // 0x40 /*0xCA9*/ u8 field_CA9_f:1; // 0x80 - /*0xCAA*/ u16 selectedPartyMons[3]; + /*0xCAA*/ u16 selectedPartyMons[FRONTIER_PARTY_SIZE]; /*0xCB0*/ u16 field_CB0; /*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor. /*0xCB4*/ u16 trainerIds[20]; @@ -356,7 +356,7 @@ struct BattleFrontier /*0xD14*/ u16 domeRecordWinStreaks[2][2]; /*0xD1C*/ u16 domeTotalChampionships[2][2]; /*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT]; - /*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][3]; + /*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][FRONTIER_PARTY_SIZE]; /*0xDC4*/ u16 field_DC4; /*0xDC6*/ u16 field_DC6; /*0xDC8*/ u16 palaceWinStreaks[2][2]; @@ -375,7 +375,7 @@ struct BattleFrontier /*0xE10*/ u8 pikeHintedRoomIndex:3; /*0xE10*/ u8 pikeHintedRoomType:4; /*0xE10*/ u8 pikeHealingRoomsDisabled:1; - /*0xE12*/ u16 pikeHeldItemsBackup[3]; + /*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE]; /*0xE18*/ u16 pyramidRewardItem; /*0xE1A*/ u16 pyramidWinStreaks[2]; /*0xE1E*/ u16 pyramidRecordStreaks[2]; @@ -419,7 +419,7 @@ struct PlayersApprentice /*0xB2*/ u8 field_B2_0:3; /*0xB2*/ u8 field_B2_1:2; /*0xB3*/ u8 field_B3; - /*0xB4*/ u8 monIds[3]; + /*0xB4*/ u8 monIds[MULTI_PARTY_SIZE]; /*0xB8*/ struct Sav2_B8 field_B8[9]; }; @@ -500,8 +500,8 @@ struct SecretBase /*0x1AAA*/ u16 numSecretBasesReceived; /*0x1AAC*/ u8 numTimesEntered; /*0x1AAD*/ u8 sbr_field_11; - /*0x1AAE*/ u8 decorations[16]; - /*0x1ABE*/ u8 decorationPositions[16]; + /*0x1AAE*/ u8 decorations[DECOR_MAX_SECRET_BASE]; + /*0x1ABE*/ u8 decorationPositions[DECOR_MAX_SECRET_BASE]; /*0x1AD0*/ struct SecretBaseParty party; }; @@ -594,9 +594,9 @@ struct MauvilleManCommon struct MauvilleManBard { /*0x00*/ u8 id; - /*0x02*/ u16 songLyrics[6]; - /*0x0E*/ u16 temporaryLyrics[6]; - /*0x1A*/ u8 playerName[8]; + /*0x02*/ u16 songLyrics[BARD_SONG_LENGTH]; + /*0x0E*/ u16 temporaryLyrics[BARD_SONG_LENGTH]; + /*0x1A*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x22*/ u8 filler_2DB6[0x3]; /*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH]; /*0x29*/ bool8 hasChangedSong; @@ -608,10 +608,10 @@ struct MauvilleManStoryteller u8 id; bool8 alreadyRecorded; u8 filler2[2]; - u8 gameStatIDs[4]; - u8 trainerNames[4][7]; - u8 statValues[4][4]; - u8 language[4]; + u8 gameStatIDs[NUM_STORYTELLER_TALES]; + u8 trainerNames[NUM_STORYTELLER_TALES][PLAYER_NAME_LENGTH]; + u8 statValues[NUM_STORYTELLER_TALES][4]; + u8 language[NUM_STORYTELLER_TALES]; }; struct MauvilleManGiddy @@ -634,10 +634,10 @@ struct MauvilleManHipster struct MauvilleOldManTrader { u8 id; - u8 decorIds[4]; - u8 playerNames[4][11]; + u8 decorIds[NUM_TRADER_ITEMS]; + u8 playerNames[NUM_TRADER_ITEMS][11]; u8 alreadyTraded; - u8 language[4]; + u8 language[NUM_TRADER_ITEMS]; }; typedef union OldMan @@ -925,8 +925,8 @@ struct SaveBlock1 /*0x159C*/ u32 gameStats[NUM_GAME_STATS]; /*0x169C*/ struct BerryTree berryTrees[BERRY_TREES_COUNT]; /*0x1A9C*/ struct SecretBase secretBases[SECRET_BASES_COUNT]; - /*0x271C*/ u8 playerRoomDecor[12]; - /*0x2728*/ u8 playerRoomDecorPos[12]; + /*0x271C*/ u8 playerRoomDecor[DECOR_MAX_PLAYERS_HOUSE]; + /*0x2728*/ u8 playerRoomDecorPos[DECOR_MAX_PLAYERS_HOUSE]; /*0x2734*/ u8 decorDesk[10]; /*0x????*/ u8 decorChair[10]; /*0x????*/ u8 decorPlant[10]; diff --git a/include/global.tv.h b/include/global.tv.h index 1cef057ae..34791d43c 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -1,45 +1,6 @@ #ifndef GUARD_GLOBAL_TV_H #define GUARD_GLOBAL_TV_H -enum -{ - TVSHOW_OFF_AIR, - TVSHOW_FAN_CLUB_LETTER, - TVSHOW_RECENT_HAPPENINGS, - TVSHOW_PKMN_FAN_CLUB_OPINIONS, - TVSHOW_UNKN_SHOWTYPE_04, - TVSHOW_NAME_RATER_SHOW, - TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE, - TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE, - TVSHOW_CONTEST_LIVE_UPDATES, - TVSHOW_3_CHEERS_FOR_POKEBLOCKS, - TVSHOW_BATTLE_UPDATE, - TVSHOW_FAN_CLUB_SPECIAL, - TVSHOW_CONTEST_LIVE_UPDATES_2, - - TVSHOW_POKEMON_TODAY_CAUGHT = 21, - TVSHOW_SMART_SHOPPER, - TVSHOW_POKEMON_TODAY_FAILED, - TVSHOW_FISHING_ADVICE, - TVSHOW_WORLD_OF_MASTERS, - TVSHOW_TODAYS_RIVAL_TRAINER, - TVSHOW_TREND_WATCHER, - TVSHOW_TREASURE_INVESTIGATORS, - TVSHOW_FIND_THAT_GAMER, - TVSHOW_BREAKING_NEWS, - TVSHOW_SECRET_BASE_VISIT, - TVSHOW_LOTTO_WINNER, - TVSHOW_BATTLE_SEMINAR, - TVSHOW_TRAINER_FAN_CLUB, - TVSHOW_CUTIES, - TVSHOW_FRONTIER, - TVSHOW_NUMBER_ONE, - TVSHOW_SECRET_BASE_SECRETS, - TVSHOW_SAFARI_FAN_CLUB, - - TVSHOW_MASS_OUTBREAK = 41, -}; - typedef union // size = 0x24 { // Common @@ -495,14 +456,6 @@ typedef union // size = 0x24 } massOutbreak; } TVShow; -enum { - POKENEWS_NONE, - POKENEWS_SLATEPORT, - POKENEWS_GAME_CORNER, - POKENEWS_LILYCOVE, - POKENEWS_BLENDMASTER -}; - typedef struct // 2b50 { u8 kind; diff --git a/include/gpu_regs.h b/include/gpu_regs.h deleted file mode 100644 index 89e0cb64b..000000000 --- a/include/gpu_regs.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef GUARD_GPU_REGS_H -#define GUARD_GPU_REGS_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations -void InitGpuRegManager(void); -void CopyBufferedValuesToGpuRegs(void); -void SetGpuReg(u8 regOffset, u16 value); -void SetGpuReg_ForcedBlank(u8 regOffset, u16 value); -u16 GetGpuReg(u8 regOffset); -void SetGpuRegBits(u8 regOffset, u16 mask); -void ClearGpuRegBits(u8 regOffset, u16 mask); -void EnableInterrupts(u16 mask); -void DisableInterrupts(u16 mask); - -#endif //GUARD_GPU_REGS_H diff --git a/include/graphics.h b/include/graphics.h index 5f5c579d2..37dd77e89 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3916,9 +3916,9 @@ extern const u16 gIntro2FlygonPal[]; extern const u32 gIntro2FlygonGfx[]; // party menu graphics -extern const u32 gPartyMenuMisc_Gfx[]; -extern const u32 gPartyMenuMisc_Tilemap[]; -extern const u32 gPartyMenuMisc_Pal[]; +extern const u32 gPartyMenuBg_Gfx[]; +extern const u32 gPartyMenuBg_Tilemap[]; +extern const u32 gPartyMenuBg_Pal[]; // berry pics extern const u32 gBerryPic_Cheri[]; @@ -4848,13 +4848,13 @@ extern const u32 gCableCarCord_Gfx[]; extern const u16 gCableCar_Pal[]; // Trade -extern const u16 gUnknown_08DDB3E4[]; -extern const u8 gUnknown_08DDB464[]; +extern const u16 gTradeMenu_Pal[]; +extern const u8 gTradeMenu_Gfx[]; extern const u16 gUnknown_08DDCF04[]; extern const u16 gTradeGba2_Pal[]; extern const u8 gTradeGba_Gfx[]; -extern const u16 gUnknown_08DDD704[]; -extern const u8 gUnknown_08DDC6E4[]; +extern const u16 gTradeMenuMonBox_Tilemap[]; +extern const u8 gTradeButtons_Gfx[]; extern const u16 gUnknown_08DDB444[]; // Party menu diff --git a/include/item_use.h b/include/item_use.h index 37343f6e7..5ce47a9bc 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -50,6 +50,6 @@ void ItemUseOutOfBattle_EnigmaBerry(u8); void ItemUseInBattle_EnigmaBerry(u8); void ItemUseOutOfBattle_CannotUse(u8); u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); -void sub_80FDD10(u8); +void ItemUseOutOfBattle_Berry(u8); #endif // GUARD_ITEM_USE_H diff --git a/include/librfu.h b/include/librfu.h index 38c819835..55b5d264c 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -76,10 +76,10 @@ struct UnkLinkRfuStruct_02022B14Substruct u16 unk_00_4:1; u16 unk_00_5:1; u16 unk_00_6:1; - u16 unk_00_7:1; - u16 unk_01_0:1; - u16 unk_01_1:1; - u16 unk_01_2:4; + u16 isChampion:1; + u16 hasNationalDex:1; + u16 gameClear:1; // never read, redundant with isChampion + u16 unk_01_2:4; // always 3? u16 unk_01_6:2; u8 playerTrainerId[2]; }; @@ -93,7 +93,7 @@ struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14 u8 unk_0a_0:7; u8 unk_0a_7:1; u8 playerGender:1; - u8 unk_0b_1:7; + u8 level:7; u8 unk_0c; }; diff --git a/include/link.h b/include/link.h index c14084066..499405fc1 100644 --- a/include/link.h +++ b/include/link.h @@ -48,20 +48,52 @@ #define EXTRACT_LINK_ERRORS(status) \ (((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT) -#define LINKCMD_SEND_LINK_TYPE 0x2222 -#define LINKCMD_0x2FFE 0x2FFE -#define LINKCMD_SEND_HELD_KEYS 0x4444 -#define LINKCMD_0x5555 0x5555 -#define LINKCMD_0x5566 0x5566 -#define LINKCMD_0x5FFF 0x5FFF -#define LINKCMD_0x6666 0x6666 -#define LINKCMD_0x7777 0x7777 -#define LINKCMD_CONT_BLOCK 0x8888 -#define LINKCMD_0xAAAA 0xAAAA -#define LINKCMD_0xAAAB 0xAAAB -#define LINKCMD_INIT_BLOCK 0xBBBB -#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE -#define LINKCMD_0xCCCC 0xCCCC +#define LINKCMD_SEND_LINK_TYPE 0x2222 +#define LINKCMD_0x2FFE 0x2FFE +#define LINKCMD_SEND_HELD_KEYS 0x4444 +#define LINKCMD_0x5555 0x5555 +#define LINKCMD_0x5566 0x5566 +#define LINKCMD_0x5FFF 0x5FFF +#define LINKCMD_0x6666 0x6666 +#define LINKCMD_0x7777 0x7777 +#define LINKCMD_CONT_BLOCK 0x8888 +#define LINKCMD_0xAAAA 0xAAAA +#define LINKCMD_0xAAAB 0xAAAB +#define LINKCMD_READY_TO_TRADE 0xAABB +#define LINKCMD_READY_FINISH_TRADE 0xABCD +#define LINKCMD_INIT_BLOCK 0xBBBB +#define LINKCMD_READY_CANCEL_TRADE 0xBBCC +#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE +#define LINKCMD_0xCCCC 0xCCCC +#define LINKCMD_START_TRADE 0xCCDD +#define LINKCMD_CONFIRM_FINISH_TRADE 0xDCBA +#define LINKCMD_SET_MONS_TO_TRADE 0xDDDD +#define LINKCMD_0xDDEE 0xDDEE +#define LINKCMD_REQUEST_CANCEL 0xEEAA +#define LINKCMD_CANCEL_TRADE 0xEEBB +#define LINKCMD_0xEECC 0xEECC + +#define LINKTYPE_0x1111 0x1111 // trade +#define LINKTYPE_0x1122 0x1122 // trade +#define LINKTYPE_0x1133 0x1133 // trade +#define LINKTYPE_0x1144 0x1144 // trade +#define LINKTYPE_BATTLE 0x2211 +#define LINKTYPE_0x2222 0x2222 // unused battle? +#define LINKTYPE_SINGLE_BATTLE 0x2233 +#define LINKTYPE_DOUBLE_BATTLE 0x2244 +#define LINKTYPE_MULTI_BATTLE 0x2255 +#define LINKTYPE_BATTLE_TOWER_50 0x2266 +#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277 +#define LINKTYPE_0x2288 0x2288 // battle? +#define LINKTYPE_0x3311 0x3311 +#define LINKTYPE_0x3322 0x3322 +#define LINKTYPE_0x4411 0x4411 +#define LINKTYPE_BERRY_BLENDER 0x4422 +#define LINKTYPE_0x5501 0x5501 // mystery event +#define LINKTYPE_0x5502 0x5502 // unused? +#define LINKTYPE_0x5503 0x5503 // eReader +#define LINKTYPE_0x6601 0x6601 +#define LINKTYPE_0x6602 0x6602 struct LinkStatus { @@ -95,8 +127,8 @@ enum EXCHANGE_COMPLETE, EXCHANGE_TIMED_OUT, EXCHANGE_IN_PROGRESS, - EXCHANGE_STAT_4, - EXCHANGE_STAT_5, + EXCHANGE_PLAYER_NOT_READY, + EXCHANGE_PARTNER_NOT_READY, EXCHANGE_STAT_6, EXCHANGE_STAT_7 }; @@ -120,7 +152,10 @@ struct LinkPlayer /* 0x00 */ u16 version; /* 0x02 */ u16 lp_field_2; /* 0x04 */ u32 trainerId; - /* 0x08 */ u8 name[11]; + /* 0x08 */ u8 name[PLAYER_NAME_LENGTH + 1]; + /* 0x10 */ u8 progressFlags; // (& 0x0F) is hasNationalDex, (& 0xF0) is hasClearedGame + /* 0x11 */ u8 neverRead; + /* 0x12 */ u8 progressFlagsCopy; /* 0x13 */ u8 gender; /* 0x14 */ u32 linkType; /* 0x18 */ u16 id; // battler id in battles diff --git a/include/link_rfu.h b/include/link_rfu.h index d6e1009e1..533e515c5 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -128,7 +128,7 @@ struct UnkRfuStruct_Sub_Unused struct UnkRfuStruct_2 { - /* 0x000 */ void (*unk_00)(void); + /* 0x000 */ void (*linkRfuCallback)(void); /* 0x004 */ u16 unk_04; /* 0x006 */ u8 filler_06[4]; /* 0x00a */ u16 unk_0a; @@ -224,11 +224,11 @@ void sub_800F804(void); void sub_800F850(void); u8 sub_800FCD8(void); bool32 sub_800FE84(const u8 *src, size_t size); -void Rfu_set_zero(void); +void ClearLinkRfuCallback(void); u8 sub_80104F4(void); u8 rfu_get_multiplayer_id(void); bool8 sub_8010100(u8 a0); -bool8 sub_8010500(void); +bool8 IsLinkRfuTaskFinished(void); bool8 Rfu_IsMaster(void); void task_add_05_task_del_08FA224_when_no_RfuFunc(void); void sub_8010434(void); diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h index 9d71e81aa..3845ac290 100644 --- a/include/mauville_old_man.h +++ b/include/mauville_old_man.h @@ -1,16 +1,6 @@ - #ifndef GUARD_MAUVILLE_OLD_MAN_H #define GUARD_MAUVILLE_OLD_MAN_H -enum MauvilleOldManType -{ - MAUVILLE_MAN_BARD, - MAUVILLE_MAN_HIPSTER, - MAUVILLE_MAN_TRADER, - MAUVILLE_MAN_STORYTELLER, - MAUVILLE_MAN_GIDDY -}; - extern struct BardSong gBardSong; void SetMauvilleOldMan(void); diff --git a/include/menu.h b/include/menu.h index 62e2558dc..c5cef202c 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,4 +1,3 @@ - #ifndef GUARD_MENU_H #define GUARD_MENU_H @@ -87,7 +86,7 @@ void RemoveMapNamePopUpWindow(void); u8 GetMapNamePopUpWindowId(void); u8 AddMapNamePopUpWindow(void); void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); -void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); +void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP); void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram); void sub_8197AE8(bool8 copyToVram); @@ -95,7 +94,7 @@ void PrintMenuGridTable(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const s8 Menu_ProcessInputGridLayout(void); u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted); s8 Menu_ProcessInputNoWrapAround_other(void); -void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); +void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile); void sub_8198314(void); void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 3b6c13172..442f4a063 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -4,6 +4,9 @@ #include "task.h" #include "window.h" +#define MENU_L_PRESSED 1 +#define MENU_R_PRESSED 2 + // Exported type declarations struct YesNoFuncTable @@ -23,8 +26,8 @@ bool16 RunTextPrintersRetIsActive(u8 textPrinterId); void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data); void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1); -u8 GetLRKeysState(void); -u8 sub_812210C(void); +u8 GetLRKeysPressed(void); +u8 GetLRKeysPressedAndHeld(void); bool8 sub_8122148(u16 itemId); bool8 itemid_80BF6D8_mail_related(u16 itemId); bool8 sub_81221AC(void); diff --git a/include/mossdeep_gym.h b/include/mossdeep_gym.h deleted file mode 100644 index c16730094..000000000 --- a/include/mossdeep_gym.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GUARD_MOSSDEEP_GYM_H -#define GUARD_MOSSDEEP_GYM_H - -void InitMossdeepGymTiles(bool8 arg0); -void FinishMossdeepGymTiles(void); -u16 MossdeepGym_MoveEvents(u8 arg0); -void MossdeepGym_TurnEvents(void); - -#endif // GUARD_MOSSDEEP_GYM_H diff --git a/include/naming_screen.h b/include/naming_screen.h index 611f53ef2..7d32abcd3 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -9,6 +9,16 @@ #define KBEVENT_PRESSED_SELECT 8 #define KBEVENT_PRESSED_START 9 +#define KBROW_COUNT 4 + +enum +{ + KBPAGE_LETTERS_LOWER, + KBPAGE_LETTERS_UPPER, + KBPAGE_SYMBOLS, + KBPAGE_COUNT, +}; + enum { NAMING_SCREEN_PLAYER, @@ -57,12 +67,6 @@ struct NamingScreenData { /*0x1E3C*/ MainCallback returnCallback; }; -enum -{ - PAGE_OTHERS, - PAGE_UPPER, - PAGE_LOWER, -}; enum { diff --git a/include/party_menu.h b/include/party_menu.h index d76e50788..126931762 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -4,147 +4,90 @@ #include "main.h" #include "task.h" -enum -{ - AILMENT_NONE, - AILMENT_PSN, - AILMENT_PRZ, - AILMENT_SLP, - AILMENT_FRZ, - AILMENT_BRN, - AILMENT_PKRS, - AILMENT_FNT -}; - -enum -{ - PARTY_CHOOSE_MON, - PARTY_MUST_CHOOSE_MON, - PARTY_CANT_SWITCH, - PARTY_USE_ITEM_ON, - PARTY_ABILITY_PREVENTS, - PARTY_GIVE_ITEM, -}; - -enum -{ - TUTOR_MOVE_MEGA_PUNCH, - TUTOR_MOVE_SWORDS_DANCE, - TUTOR_MOVE_MEGA_KICK, - TUTOR_MOVE_BODY_SLAM, - TUTOR_MOVE_DOUBLE_EDGE, - TUTOR_MOVE_COUNTER, - TUTOR_MOVE_SEISMIC_TOSS, - TUTOR_MOVE_MIMIC, - TUTOR_MOVE_METRONOME, - TUTOR_MOVE_SOFT_BOILED, - TUTOR_MOVE_DREAM_EATER, - TUTOR_MOVE_THUNDER_WAVE, - TUTOR_MOVE_EXPLOSION, - TUTOR_MOVE_ROCK_SLIDE, - TUTOR_MOVE_SUBSTITUTE, - TUTOR_MOVE_DYNAMIC_PUNCH, - TUTOR_MOVE_ROLLOUT, - TUTOR_MOVE_PSYCH_UP, - TUTOR_MOVE_SNORE, - TUTOR_MOVE_ICY_WIND, - TUTOR_MOVE_ENDURE, - TUTOR_MOVE_MUD_SLAP, - TUTOR_MOVE_ICE_PUNCH, - TUTOR_MOVE_SWAGGER, - TUTOR_MOVE_SLEEP_TALK, - TUTOR_MOVE_SWIFT, - TUTOR_MOVE_DEFENSE_CURL, - TUTOR_MOVE_THUNDER_PUNCH, - TUTOR_MOVE_FIRE_PUNCH, - TUTOR_MOVE_FURY_CUTTER, - TUTOR_MOVE_COUNT -}; - -struct Struct203CEC8 +// seems like the last two fields may have been left as all-purpose vars +// and the second of the two just happens to only be used in one case +struct PartyMenu { MainCallback exitCallback; - TaskFunc unk4; - u8 unk8_0:4; - u8 mode:2; - u8 unk8_2:2; + TaskFunc task; + u8 menuType:4; + u8 layout:2; s8 slotId; - s8 unkA; - u8 unkB; - u16 unkC; - s16 unkE; - s16 unk10; + s8 slotId2; + u8 action; + u16 bagItem; + s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos + s16 learnMoveState; // data2, used only as a learn move state }; -extern struct Struct203CEC8 gUnknown_0203CEC8; -extern u8 gUnknown_0203CEE8; -extern u8 gUnknown_0203CEE9; +extern struct PartyMenu gPartyMenu; +extern bool8 gPartyMenuUseExitCallback; +extern u8 gSelectedMonPartyId; extern MainCallback gPostMenuFieldCallback; extern u8 gSelectedOrderFromParty[4]; -extern u8 gUnknown_0203CF00[3]; +extern u8 gBattlePartyCurrentOrder[3]; -extern void (*gUnknown_03006328)(u8, TaskFunc); +extern void (*gItemUseCB)(u8, TaskFunc); extern const u16 gTutorMoves[]; -void sub_81B0FCC(u8 slot, u8 b); +void AnimatePartySlot(u8 slot, u8 animNum); bool8 IsMultiBattle(void); u8 GetCursorSelectionMonId(void); -u8 sub_81B1360(void); -void sub_81B1370(u8 taskId); +u8 GetPartyMenuType(void); +void Task_HandleChooseMonInput(u8 taskId); u8* GetMonNickname(struct Pokemon *mon, u8 *dest); -u8 sub_81B1B5C(const u8* str, u8 b); -bool8 sub_81B1BD4(void); -void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func); -u8 pokemon_ailments_get_primary(u32 status); +u8 DisplayPartyMenuMessage(const u8* str, bool8 keepOpen); +bool8 IsPartyMenuTextPrinterActive(void); +void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 HPDifference, TaskFunc task); +u8 GetAilmentFromStatus(u32 status); u8 GetMonAilment(struct Pokemon *mon); -void display_pokemon_menu_message(u32 stringID); -void sub_81B47E0(u8 taskId); +void DisplayPartyMenuStdMessage(u32 stringId); bool8 FieldCallback_PrepareFadeInFromMenu(void); -void sub_81B58A8(void); +void CB2_ReturnToPartyMenuFromFlyMap(void); void LoadHeldItemIcons(void); -void sub_81B5D4C(u8 *a, u8 *b, u8 c); -void sub_81B617C(void); +void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); +void CB2_ShowPartyMenuForItemUse(void); void ItemUseCB_Medicine(u8 taskId, TaskFunc task); -void sub_81B67C8(u8 taskId, TaskFunc task); -void dp05_ether(u8 taskId, TaskFunc task); -void dp05_pp_up(u8 taskId, TaskFunc task); +void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task); +void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task); +void ItemUseCB_PPUp(u8 taskId, TaskFunc task); u16 ItemIdToBattleMoveId(u16 item); bool8 IsMoveHm(u16 move); bool8 MonKnowsMove(struct Pokemon *mon, u16 move); -void sub_81B6DC4(u8 taskId, TaskFunc task); -void dp05_rare_candy(u8 taskId, TaskFunc task); -void sub_81B79E8(u8 taskId, TaskFunc task); -void sub_81B7C74(u8 taskId, TaskFunc task); +void ItemUseCB_TMHM(u8 taskId, TaskFunc task); +void ItemUseCB_RareCandy(u8 taskId, TaskFunc task); +void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task); +void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task); u8 GetItemEffectType(u16 item); void CB2_PartyMenuFromStartMenu(void); -void sub_81B7F60(void); -void sub_81B8448(void); +void CB2_ChooseMonToGiveItem(void); +void ChooseMonToGiveMailFromMailbox(void); void InitChooseHalfPartyForBattle(u8 unused); -void sub_81B8558(void); -void sub_81B8904(u8 initArg, MainCallback callback); -void sub_81B892C(void); -void sub_81B8958(void); -void OpenPartyMenuInBattle(u8 arg); -void sub_81B89F0(void); -void sub_81B8C68(void); -void sub_81B8D64(u8 battlerId, u8 multiplayerFlag); -void sub_81B8E80(u8 battlerId, u8 unk, u8 arrayIndex); -void sub_81B8FB0(u8 slot, u8 slot2); -u8 pokemon_order_func(u8 slot); -void sub_81B9150(void); -void sub_81B9328(void); -bool8 hm_add_c3_without_phase_2(void); -void sub_81B9404(void); -void sub_81B94B0(void); -void sub_81B951C(void); -void sub_81B9620(void); -void sub_81B95E0(void); -void sub_81B98DC(void); -void sub_81B9918(void); -void sub_81B9770(void); -void sub_81B9718(void); -void sub_81B96D0(void); -void sub_81B968C(void); +void ClearSelectedPartyOrder(void); +void ChooseMonForTradingBoard(u8 menuType, MainCallback callback); +void ChooseMonForMoveTutor(void); +void ChooseMonForWirelessMinigame(void); +void OpenPartyMenuInBattle(u8 partyAction); +void ChooseMonForInBattleItem(void); +void BufferBattlePartyCurrentOrder(void); +void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId); +void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 arrayIndex); +void SwitchPartyMonSlots(u8 slot, u8 slot2); +u8 GetPartyIdFromBattlePartyId(u8 slot); +void ShowPartyMenuToShowcaseMultiBattleParty(void); +void ChooseMonForDaycare(void); +bool8 CB2_FadeFromPartyMenu(void); +void ChooseContestMon(void); +void ChoosePartyMon(void); +void ChooseMonForMoveRelearner(void); +void BattlePyramidChooseMonHeldItems(void); +void DoBattlePyramidMonsHaveHeldItem(void); +void IsSelectedMonEgg(void); +void IsLastMonThatKnowsSurf(void); +void MoveDeleterForgetMove(void); +void BufferMoveDeleterNicknameAndMove(void); +void GetNumMovesSelectedMonHas(void); +void MoveDeleterChooseMoveToForget(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokeball.h b/include/pokeball.h index 8e1d8b8ec..12b9b1eff 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -25,7 +25,7 @@ extern const struct SpriteTemplate gBallSpriteTemplates[]; u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battler, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species); -u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); +u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); void sub_8076918(u8 battler); void DoHitAnimHealthboxEffect(u8 battler); void LoadBallGfx(u8 ballId); diff --git a/include/pokemon.h b/include/pokemon.h index 6a34e3cda..316fbc2b3 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -287,7 +287,6 @@ void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest); u8 GetLevelFromMonExp(struct Pokemon *mon); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u16 GiveMoveToMon(struct Pokemon *mon, u16 move); -u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot); @@ -357,8 +356,8 @@ u16 SpeciesToCryId(u16 species); void sub_806D544(u16 species, u32 personality, u8 *dest); void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); -bool8 sub_806D7EC(void); -bool16 GetLinkTrainerFlankId(u8 id); +u8 GetPlayerFlankId(void); +u16 GetLinkTrainerFlankId(u8 id); s32 GetBattlerMultiplayerId(u16 a1); u8 GetTrainerEncounterMusicId(u16 trainerOpponentId); u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex); diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 8af43c753..9d56aebcb 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -21,8 +21,8 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u u8 UpdateMonIconFrame(struct Sprite *sprite); void LoadMonIconPalette(u16 species); void sub_80D328C(struct Sprite *sprite); -void sub_80D3014(struct Sprite *sprite); -void sub_80D32C8(struct Sprite *sprite, u8 animNum); +void SpriteCB_MonIcon(struct Sprite *sprite); +void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum); u8 GetMonIconPaletteIndexFromSpecies(u16 species); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h index 28b19f9b1..dde59aac5 100644 --- a/include/pokemon_jump.h +++ b/include/pokemon_jump.h @@ -4,10 +4,10 @@ #include "main.h" void sub_802A9A8(u16 monId, MainCallback callback); -bool32 sub_802C908(u16 species); -void sub_802C920(void); +bool32 IsSpeciesAllowedInPokemonJump(u16 species); +void IsPokemonJumpSpeciesInParty(void); void ResetPokeJumpResults(void); -void sub_802E3C4(void); +void ShowPokemonJumpRecords(void); void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority); bool32 sub_802EB84(void); diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 4c319e59d..7b6a38678 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -25,7 +25,7 @@ struct PokemonStorage extern struct PokemonStorage *gPokemonStoragePtr; -void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4); +void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 bytesToBuffer); u8 CountMonsInBox(u8 boxId); s16 GetFirstFreeBoxSpot(u8 boxId); u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 20d881702..07d541cac 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -9,10 +9,9 @@ extern const u8 *const gMoveDescriptionPointers[]; extern const u8 *const gNatureNamePointers[]; void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); -void sub_81C4F98(u8, void(*)(void)); void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); -u8 sub_81C1B94(void); +u8 GetMoveSlotToReplace(void); void SummaryScreen_SetUnknownTaskId(u8 a0); void SummaryScreen_DestroyUnknownTask(void); diff --git a/include/region_map.h b/include/region_map.h index 798e6f56d..0d219643d 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -102,7 +102,7 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); -u8 *sub_81245DC(u8 *dest, u16 mapSecId); +u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId); u8 *sub_8124610(u8 *dest, u16 mapSecId); u16 CorrectSpecialMapSecId(u16 mapSecId); void sub_8122D88(struct RegionMap *regionMap); diff --git a/include/rotating_tile_puzzle.h b/include/rotating_tile_puzzle.h new file mode 100644 index 000000000..8c6ab7944 --- /dev/null +++ b/include/rotating_tile_puzzle.h @@ -0,0 +1,9 @@ +#ifndef GUARD_ROTATING_TILE_PUZZLE_H +#define GUARD_ROTATING_TILE_PUZZLE_H + +void InitRotatingTilePuzzle(bool8 isTrickHouse); +void FreeRotatingTilePuzzle(void); +u16 MoveRotatingTileObjects(u8 puzzleNumber); +void TurnRotatingTileObjects(void); + +#endif // GUARD_ROTATING_TILE_PUZZLE_H diff --git a/include/script.h b/include/script.h index cfe493479..3f92964ac 100644 --- a/include/script.h +++ b/include/script.h @@ -62,6 +62,6 @@ u8 *GetSavedRamScriptIfValid(void); void InitRamScript_NoEventObject(u8 *script, u16 scriptSize); // srccmd.h -void sub_809BE48(u16 npcId); +void SetMovingNpcId(u16 npcId); #endif // GUARD_SCRIPT_H diff --git a/include/script_pokemon_81B9.h b/include/script_pokemon_81B9.h deleted file mode 100644 index 1b8563ee6..000000000 --- a/include/script_pokemon_81B9.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_SCRIPTPOKE81B9_H -#define GUARD_SCRIPTPOKE81B9_H - -void sub_81B9404(void); - -#endif diff --git a/include/sprite.h b/include/sprite.h deleted file mode 100644 index 9753837fd..000000000 --- a/include/sprite.h +++ /dev/null @@ -1,319 +0,0 @@ -#ifndef GUARD_SPRITE_H -#define GUARD_SPRITE_H - -#define MAX_SPRITES 64 -#define SPRITE_INVALID_TAG 0xFFFF - -struct SpriteSheet -{ - const void *data; // Raw uncompressed pixel data - u16 size; - u16 tag; -}; - -struct CompressedSpriteSheet -{ - const u32 *data; // LZ77 compressed pixel data - u16 size; // Uncompressed size of pixel data - u16 tag; -}; - -struct SpriteFrameImage -{ - const void *data; - u16 size; -}; - -#define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr} - -#define overworld_frame(ptr, width, height, frame) {.data = (u8 *)ptr + (width * height * frame * 64)/2, .size = (width * height * 64)/2} - -struct SpritePalette -{ - const u16 *data; // Raw uncompressed palette data - u16 tag; -}; - -struct CompressedSpritePalette -{ - const u32 *data; // LZ77 compressed palette data - u16 tag; -}; - -struct AnimFrameCmd -{ - // If the sprite has an array of images, this is the array index. - // If the sprite has a sheet, this is the tile offset. - u32 imageValue:16; - - u32 duration:6; - u32 hFlip:1; - u32 vFlip:1; -}; - -struct AnimLoopCmd -{ - u32 type:16; - u32 count:6; -}; - -struct AnimJumpCmd -{ - u32 type:16; - u32 target:6; -}; - -// The first halfword of this union specifies the type of command. -// If it -2, then it is a jump command. If it is -1, then it is the end of the script. -// Otherwise, it is the imageValue for a frame command. -union AnimCmd -{ - s16 type; - struct AnimFrameCmd frame; - struct AnimLoopCmd loop; - struct AnimJumpCmd jump; -}; - -#define ANIMCMD_FRAME(...) \ - {.frame = {__VA_ARGS__}} -#define ANIMCMD_LOOP(_count) \ - {.loop = {.type = -3, .count = _count}} -#define ANIMCMD_JUMP(_target) \ - {.jump = {.type = -2, .target = _target}} -#define ANIMCMD_END \ - {.type = -1} - -struct AffineAnimFrameCmd -{ - s16 xScale; - s16 yScale; - u8 rotation; - u8 duration; -}; - -struct AffineAnimLoopCmd -{ - s16 type; - s16 count; -}; - -struct AffineAnimJumpCmd -{ - s16 type; - u16 target; -}; - -struct AffineAnimEndCmdAlt -{ - s16 type; - u16 val; -}; - -union AffineAnimCmd -{ - s16 type; - struct AffineAnimFrameCmd frame; - struct AffineAnimLoopCmd loop; - struct AffineAnimJumpCmd jump; - struct AffineAnimEndCmdAlt end; // unused in code -}; - -#define AFFINEANIMCMDTYPE_LOOP 0x7FFD -#define AFFINEANIMCMDTYPE_JUMP 0x7FFE -#define AFFINEANIMCMDTYPE_END 0x7FFF - -#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \ - {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}} -#define AFFINEANIMCMD_LOOP(_count) \ - {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}} -#define AFFINEANIMCMD_JUMP(_target) \ - {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} -#define AFFINEANIMCMD_END \ - {.type = AFFINEANIMCMDTYPE_END} -#define AFFINEANIMCMD_END_ALT(_val) \ - {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}} - -struct AffineAnimState -{ - u8 animNum; - u8 animCmdIndex; - u8 delayCounter; - u8 loopCounter; - s16 xScale; - s16 yScale; - u16 rotation; -}; - -enum -{ - SUBSPRITES_OFF, - SUBSPRITES_ON, - SUBSPRITES_IGNORE_PRIORITY, // on but priority is ignored -}; - -struct Subsprite -{ - s8 x; // was u16 in R/S - s8 y; // was u16 in R/S - u16 shape:2; - u16 size:2; - u16 tileOffset:10; - u16 priority:2; -}; - -struct SubspriteTable -{ - u8 subspriteCount; - const struct Subsprite *subsprites; -}; - -struct Sprite; - -typedef void (*SpriteCallback)(struct Sprite *); - -struct SpriteTemplate -{ - u16 tileTag; - u16 paletteTag; - const struct OamData *oam; - const union AnimCmd *const *anims; - const struct SpriteFrameImage *images; - const union AffineAnimCmd *const *affineAnims; - SpriteCallback callback; -}; - -struct Sprite -{ - /*0x00*/ struct OamData oam; - /*0x08*/ const union AnimCmd *const *anims; - /*0x0C*/ const struct SpriteFrameImage *images; - /*0x10*/ const union AffineAnimCmd *const *affineAnims; - /*0x14*/ const struct SpriteTemplate *template; - /*0x18*/ const struct SubspriteTable *subspriteTables; - /*0x1C*/ SpriteCallback callback; - - /*0x20*/ struct Coords16 pos1; - /*0x24*/ struct Coords16 pos2; - /*0x28*/ s8 centerToCornerVecX; - /*0x29*/ s8 centerToCornerVecY; - - /*0x2A*/ u8 animNum; - /*0x2B*/ u8 animCmdIndex; - /*0x2C*/ u8 animDelayCounter:6; - bool8 animPaused:1; - bool8 affineAnimPaused:1; - /*0x2D*/ u8 animLoopCounter; - - // general purpose data fields - /*0x2E*/ s16 data[8]; - - /*0x3E*/ bool16 inUse:1; //1 - bool16 coordOffsetEnabled:1; //2 - bool16 invisible:1; //4 - bool16 flags_3:1; //8 - bool16 flags_4:1; //0x10 - bool16 flags_5:1; //0x20 - bool16 flags_6:1; //0x40 - bool16 flags_7:1; //0x80 - /*0x3F*/ bool16 hFlip:1; //1 - bool16 vFlip:1; //2 - bool16 animBeginning:1; //4 - bool16 affineAnimBeginning:1; //8 - bool16 animEnded:1; //0x10 - bool16 affineAnimEnded:1; //0x20 - bool16 usingSheet:1; //0x40 - bool16 flags_f:1; //0x80 - - /*0x40*/ u16 sheetTileStart; - - /*0x42*/ u8 subspriteTableNum:6; - u8 subspriteMode:2; - - /*0x43*/ u8 subpriority; -}; - -struct OamMatrix -{ - s16 a; - s16 b; - s16 c; - s16 d; -}; - -extern const struct OamData gDummyOamData; -extern const union AnimCmd *const gDummySpriteAnimTable[]; -extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; -extern const struct SpriteTemplate gDummySpriteTemplate; - -extern u8 gReservedSpritePaletteCount; -extern struct Sprite gSprites[]; -extern u8 gOamLimit; -extern u16 gReservedSpriteTileCount; -extern s16 gSpriteCoordOffsetX; -extern s16 gSpriteCoordOffsetY; -extern struct OamMatrix gOamMatrices[]; -extern bool8 gAffineAnimsDisabled; - -void ResetSpriteData(void); -void AnimateSprites(void); -void BuildOamBuffer(void); -u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); -u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); -u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); -u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); -void DestroySprite(struct Sprite *sprite); -void ResetOamRange(u8 a, u8 b); -void LoadOam(void); -void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d); -void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode); -void SpriteCallbackDummy(struct Sprite *sprite); -void ProcessSpriteCopyRequests(void); -void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size); -void FreeSpriteTiles(struct Sprite *sprite); -void FreeSpritePalette(struct Sprite *sprite); -void FreeSpriteOamMatrix(struct Sprite *sprite); -void DestroySpriteAndFreeResources(struct Sprite *sprite); -void sub_800142C(u32 a1, u32 a2, u16 *a3, u16 a4, u32 a5); -void AnimateSprite(struct Sprite *sprite); -void sub_8007E18(struct Sprite* sprite, s16 a2, s16 a3); -void StartSpriteAnim(struct Sprite *sprite, u8 animNum); -void StartSpriteAnimIfDifferent(struct Sprite *sprite, u8 animNum); -void SeekSpriteAnim(struct Sprite *sprite, u8 animCmdIndex); -void StartSpriteAffineAnim(struct Sprite *sprite, u8 animNum); -void StartSpriteAffineAnimIfDifferent(struct Sprite *sprite, u8 animNum); -void ChangeSpriteAffineAnim(struct Sprite *sprite, u8 animNum); -void ChangeSpriteAffineAnimIfDifferent(struct Sprite *sprite, u8 animNum); -void SetSpriteSheetFrameTileNum(struct Sprite *sprite); -u8 AllocOamMatrix(void); -void FreeOamMatrix(u8 matrixNum); -void InitSpriteAffineAnim(struct Sprite *sprite); -void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation); -u16 LoadSpriteSheet(const struct SpriteSheet *sheet); -void LoadSpriteSheets(const struct SpriteSheet *sheets); -u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet); -void AllocTilesForSpriteSheets(struct SpriteSheet *sheets); -void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet); -void LoadTilesForSpriteSheets(struct SpriteSheet *sheets); -void FreeSpriteTilesByTag(u16 tag); -void FreeSpriteTileRanges(void); -u16 GetSpriteTileStartByTag(u16 tag); -u16 GetSpriteTileTagByTileStart(u16 start); -void RequestSpriteSheetCopy(const struct SpriteSheet *sheet); -u16 LoadSpriteSheetDeferred(const struct SpriteSheet *sheet); -void FreeAllSpritePalettes(void); -u8 LoadSpritePalette(const struct SpritePalette *palette); -void LoadSpritePalettes(const struct SpritePalette *palettes); -u8 AllocSpritePalette(u16 tag); -u8 IndexOfSpritePaletteTag(u16 tag); -u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum); -void FreeSpritePaletteByTag(u16 tag); -void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables); -bool8 AddSpriteToOamBuffer(struct Sprite *object, u8 *oamIndex); -bool8 AddSubspritesToOamBuffer(struct Sprite *sprite, struct OamData *destOam, u8 *oamIndex); -void CopyToSprites(u8 *src); -void CopyFromSprites(u8 *dest); -u8 SpriteTileAllocBitmapOp(u16 bit, u8 op); -void ClearSpriteCopyRequests(void); -void ResetAffineAnimData(void); - -#endif //GUARD_SPRITE_H diff --git a/include/string_util.h b/include/string_util.h deleted file mode 100644 index b921d2391..000000000 --- a/include/string_util.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef GUARD_STRING_UTIL_H -#define GUARD_STRING_UTIL_H - -extern u8 gStringVar1[]; -extern u8 gStringVar2[]; -extern u8 gStringVar3[]; -extern u8 gStringVar4[]; - -enum StringConvertMode -{ - STR_CONV_MODE_LEFT_ALIGN, - STR_CONV_MODE_RIGHT_ALIGN, - STR_CONV_MODE_LEADING_ZEROS -}; - -u8 *StringCopy10(u8 *dest, const u8 *src); -u8 *StringGetEnd10(u8 *str); -u8 *StringCopy7(u8 *dest, const u8 *src); -u8 *StringCopy(u8 *dest, const u8 *src); -u8 *StringAppend(u8 *dest, const u8 *src); -u8 *StringCopyN(u8 *dest, const u8 *src, u8 n); -u8 *StringAppendN(u8 *dest, const u8 *src, u8 n); -u16 StringLength(const u8 *str); -s32 StringCompare(const u8 *str1, const u8 *str2); -s32 StringCompareN(const u8 *str1, const u8 *str2, u32 n); -bool8 IsStringLengthAtLeast(const u8 *str, s32 n); -u8 *ConvertIntToDecimalStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 n); -u8 *ConvertUIntToDecimalStringN(u8 *dest, u32 value, enum StringConvertMode mode, u8 n); -u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 n); -u8 *StringExpandPlaceholders(u8 *dest, const u8 *src); -u8 *StringBraille(u8 *dest, const u8 *src); -const u8 *GetExpandedPlaceholder(u32 id); -u8 *StringFill(u8 *dest, u8 c, u16 n); -u8 *StringCopyPadded(u8 *dest, const u8 *src, u8 c, u16 n); -u8 *StringFillWithTerminator(u8 *dest, u16 n); -u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n); -u32 StringLength_Multibyte(const u8 *str); -u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color); -bool32 IsStringJapanese(u8 *str); -bool32 sub_800924C(u8 *str, s32 n); -u8 GetExtCtrlCodeLength(u8 code); -s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2); -void ConvertInternationalString(u8 *s, u8 language); -void StripExtCtrlCodes(u8 *str); - -#endif // GUARD_STRING_UTIL_H diff --git a/include/strings.h b/include/strings.h index c1414269a..f135944bd 100644 --- a/include/strings.h +++ b/include/strings.h @@ -411,7 +411,7 @@ extern const u8 gText_CantBeUsedOnPkmn[]; extern const u8 gText_CancelParticipation[]; extern const u8 gText_PkmnWasGivenItem[]; extern const u8 gText_ReceivedItemFromPkmn[]; -extern const u8 gText_SwitchPkmnItem[]; +extern const u8 gText_PkmnAlreadyHoldingItemSwitch[]; extern const u8 gText_SwitchedPkmnItem[]; extern const u8 gText_BagFullCouldNotRemoveItem[]; extern const u8 gText_PkmnCantParticipate[]; @@ -427,7 +427,7 @@ extern const u8 gText_NoMoreThanVar1Pkmn[]; extern const u8 gText_PkmnCantBeTradedNow[]; extern const u8 gText_EggCantBeTradedNow[]; extern const u8 gText_OnlyPkmnForBattle[]; -extern const u8 gJPText_PutVar1IntoSpinner[]; +extern const u8 gJPText_AreYouSureYouWantToSpinTradeMon[]; extern const u8 gText_PauseUntilPress[]; extern const u8 gText_CantUseUntilNewBadge[]; extern const u8 gText_ReturnToHealingSpot[]; @@ -2035,8 +2035,8 @@ extern const u8 gText_Confusion[]; extern const u8 gText_Love[]; // battle message -extern const u8 gText_PkmnBoxSomeonesPCFull[]; -extern const u8 gText_PkmnBoxLanettesPCFull[]; +extern const u8 gText_PkmnTransferredSomeonesPCBoxFull[]; +extern const u8 gText_PkmnTransferredLanettesPCBoxFull[]; extern const u8 gText_PkmnTransferredSomeonesPC[]; extern const u8 gText_PkmnTransferredLanettesPC[]; @@ -2512,52 +2512,53 @@ extern const u8 gEasyChatGroupName_Move2[]; extern const u8 gEasyChatGroupName_TrendySaying[]; extern const u8 gEasyChatGroupName_Pokemon2[]; -extern const u8 gUnknown_862B810[]; -extern const u8 gUnknown_862B832[]; -extern const u8 gUnknown_862B84B[]; -extern const u8 gUnknown_862B86C[]; -extern const u8 gUnknown_0862B88D[]; -extern const u8 gUnknown_0862B8AE[]; -extern const u8 gUnknown_0862B8CF[]; -extern const u8 gUnknown_0862B8F0[]; -extern const u8 gUnknown_0862B911[]; -extern const u8 gUnknown_0862B932[]; -extern const u8 gUnknown_0862B953[]; -extern const u8 gUnknown_0862B974[]; -extern const u8 gUnknown_0862B995[]; -extern const u8 gUnknown_0862B9AE[]; -extern const u8 gUnknown_0862B9C7[]; -extern const u8 gUnknown_0862B9E0[]; -extern const u8 gUnknown_0862B9F9[]; -extern const u8 gUnknown_0862B9FF[]; -extern const u8 gUnknown_0862BA05[]; -extern const u8 gUnknown_0862BA0B[]; -extern const u8 gUnknown_0862BA11[]; -extern const u8 gUnknown_0862BA17[]; -extern const u8 gUnknown_0862BA1D[]; -extern const u8 gUnknown_0862BA23[]; -extern const u8 gUnknown_0862BA29[]; -extern const u8 gUnknown_0862BA2F[]; -extern const u8 gUnknown_0862BA35[]; -extern const u8 gUnknown_0862BA3B[]; -extern const u8 gUnknown_0862BA41[]; -extern const u8 gUnknown_0862BA47[]; -extern const u8 gUnknown_0862BA4D[]; -extern const u8 gUnknown_0862BA53[]; -extern const u8 gUnknown_0862BA59[]; -extern const u8 gUnknown_0862BA5F[]; -extern const u8 gUnknown_0862BA65[]; -extern const u8 gUnknown_0862BA6B[]; -extern const u8 gUnknown_0862BA79[]; -extern const u8 gUnknown_0862BA84[]; -extern const u8 gUnknown_0862BA8F[]; -extern const u8 gUnknown_0862BA9A[]; -extern const u8 gUnknown_0862BAA3[]; -extern const u8 gUnknown_0862BAAE[]; -extern const u8 gUnknown_0862BAB9[]; -extern const u8 gUnknown_0862BAC4[]; -extern const u8 gUnknown_0862BACF[]; -extern const u8 gUnknown_0862BADA[]; +// Text Input Strings +extern const u8 gText_EasyChatKeyboard_ABCDEFothers[]; +extern const u8 gText_EasyChatKeyboard_GHIJKL[]; +extern const u8 gText_EasyChatKeyboard_MNOPQRS[]; +extern const u8 gText_EasyChatKeyboard_TUVWXYZ[]; +extern const u8 gText_NamingScreenKeyboard_abcdef[]; +extern const u8 gText_NamingScreenKeyboard_ghijkl[]; +extern const u8 gText_NamingScreenKeyboard_mnopqrs[]; +extern const u8 gText_NamingScreenKeyboard_tuvwxyz[]; +extern const u8 gText_NamingScreenKeyboard_ABCDEF[]; +extern const u8 gText_NamingScreenKeyboard_GHIJKL[]; +extern const u8 gText_NamingScreenKeyboard_MNOPQRS[]; +extern const u8 gText_NamingScreenKeyboard_TUVWXYZ[]; +extern const u8 gText_NamingScreenKeyboard_01234[]; +extern const u8 gText_NamingScreenKeyboard_56789[]; +extern const u8 gText_NamingScreenKeyboard_Symbols1[]; +extern const u8 gText_NamingScreenKeyboard_Symbols2[]; +extern const u8 gText_UnionRoomChatKeyboard_ABCDE[]; +extern const u8 gText_UnionRoomChatKeyboard_FGHIJ[]; +extern const u8 gText_UnionRoomChatKeyboard_KLMNO[]; +extern const u8 gText_UnionRoomChatKeyboard_PQRST[]; +extern const u8 gText_UnionRoomChatKeyboard_UVWXY[]; +extern const u8 gText_UnionRoomChatKeyboard_Z[]; +extern const u8 gText_UnionRoomChatKeyboard_01234Upper[]; +extern const u8 gText_UnionRoomChatKeyboard_56789Upper[]; +extern const u8 gText_UnionRoomChatKeyboard_PunctuationUpper[]; +extern const u8 gText_UnionRoomChatKeyboard_SymbolsUpper[]; +extern const u8 gText_UnionRoomChatKeyboard_abcde[]; +extern const u8 gText_UnionRoomChatKeyboard_fghij[]; +extern const u8 gText_UnionRoomChatKeyboard_klmno[]; +extern const u8 gText_UnionRoomChatKeyboard_pqrst[]; +extern const u8 gText_UnionRoomChatKeyboard_uvwxy[]; +extern const u8 gText_UnionRoomChatKeyboard_z[]; +extern const u8 gText_UnionRoomChatKeyboard_01234Lower[]; +extern const u8 gText_UnionRoomChatKeyboard_56789Lower[]; +extern const u8 gText_UnionRoomChatKeyboard_PunctuationLower[]; +extern const u8 gText_UnionRoomChatKeyboard_SymbolsLower[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji1[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji2[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji3[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji4[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji5[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji6[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji7[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji8[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji9[]; +extern const u8 gText_UnionRoomChatKeyboard_Emoji10[]; // E-Reader extern const u8 gUnknown_085EDFD6[]; diff --git a/include/text.h b/include/text.h deleted file mode 100644 index e37773475..000000000 --- a/include/text.h +++ /dev/null @@ -1,312 +0,0 @@ -#ifndef GUARD_TEXT_H -#define GUARD_TEXT_H - -#define CHAR_SPACE 0x00 -#define CHAR_PLUS 0x2E -#define CHAR_0 0xA1 -#define CHAR_1 0xA2 -#define CHAR_2 0xA3 -#define CHAR_3 0xA4 -#define CHAR_4 0xA5 -#define CHAR_5 0xA6 -#define CHAR_6 0xA7 -#define CHAR_7 0xA8 -#define CHAR_8 0xA9 -#define CHAR_9 0xAA -#define CHAR_EXCL_MARK 0xAB -#define CHAR_QUESTION_MARK 0xAC -#define CHAR_PERIOD 0xAD -#define CHAR_HYPHEN 0xAE -#define CHAR_ELLIPSIS 0xB0 -#define CHAR_DBL_QUOT_LEFT 0xB1 -#define CHAR_DBL_QUOT_RIGHT 0xB2 -#define CHAR_SGL_QUOT_LEFT 0xB3 -#define CHAR_SGL_QUOT_RIGHT 0xB4 -#define CHAR_MALE 0xB5 -#define CHAR_FEMALE 0xB6 -#define CHAR_CURRENCY 0xB7 -#define CHAR_COMMA 0xB8 -#define CHAR_MULT_SIGN 0xB9 -#define CHAR_SLASH 0xBA -#define CHAR_A 0xBB -#define CHAR_B 0xBC -#define CHAR_C 0xBD -#define CHAR_D 0xBE -#define CHAR_E 0xBF -#define CHAR_F 0xC0 -#define CHAR_G 0xC1 -#define CHAR_H 0xC2 -#define CHAR_I 0xC3 -#define CHAR_J 0xC4 -#define CHAR_K 0xC5 -#define CHAR_L 0xC6 -#define CHAR_M 0xC7 -#define CHAR_N 0xC8 -#define CHAR_O 0xC9 -#define CHAR_P 0xCA -#define CHAR_Q 0xCB -#define CHAR_R 0xCC -#define CHAR_S 0xCD -#define CHAR_T 0xCE -#define CHAR_U 0xCF -#define CHAR_V 0xD0 -#define CHAR_W 0xD1 -#define CHAR_X 0xD2 -#define CHAR_Y 0xD3 -#define CHAR_Z 0xD4 -#define CHAR_a 0xD5 -#define CHAR_b 0xD6 -#define CHAR_c 0xD7 -#define CHAR_d 0xD8 -#define CHAR_e 0xD9 -#define CHAR_f 0xDA -#define CHAR_g 0xDB -#define CHAR_h 0xDC -#define CHAR_i 0xDD -#define CHAR_j 0xDE -#define CHAR_k 0xDF -#define CHAR_l 0xE0 -#define CHAR_m 0xE1 -#define CHAR_n 0xE2 -#define CHAR_o 0xE3 -#define CHAR_p 0xE4 -#define CHAR_q 0xE5 -#define CHAR_r 0xE6 -#define CHAR_s 0xE7 -#define CHAR_t 0xE8 -#define CHAR_u 0xE9 -#define CHAR_v 0xEA -#define CHAR_w 0xEB -#define CHAR_x 0xEC -#define CHAR_y 0xED -#define CHAR_z 0xEE -#define CHAR_SPECIAL_F7 0xF7 -#define CHAR_SPECIAL_F8 0xF8 -#define CHAR_SPECIAL_F9 0xF9 -#define CHAR_COLON 0xF0 -#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog -#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog -#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code -#define PLACEHOLDER_BEGIN 0xFD // string placeholder -#define CHAR_NEWLINE 0xFE -#define EOS 0xFF // end of string - -#define EXT_CTRL_CODE_COLOR 0x1 -#define EXT_CTRL_CODE_HIGHLIGHT 0x2 -#define EXT_CTRL_CODE_SHADOW 0x3 -// -#define EXT_CTRL_CODE_UNKNOWN_7 0x7 -// -#define EXT_CTRL_CODE_CLEAR 0x11 -// -#define EXT_CTRL_CODE_CLEAR_TO 0x13 -#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14 -#define EXT_CTRL_CODE_JPN 0x15 -#define EXT_CTRL_CODE_ENG 0x16 - -#define TEXT_COLOR_TRANSPARENT 0x0 -#define TEXT_COLOR_WHITE 0x1 -#define TEXT_COLOR_DARK_GREY 0x2 -// 0x3 -#define TEXT_COLOR_RED 0x4 -// 0x5 -#define TEXT_COLOR_GREEN 0x6 -// 0x7 -#define TEXT_COLOR_BLUE 0x8 - -#define PLACEHOLDER_ID_UNKNOWN 0x0 -#define PLACEHOLDER_ID_PLAYER 0x1 -#define PLACEHOLDER_ID_STRING_VAR_1 0x2 -#define PLACEHOLDER_ID_STRING_VAR_2 0x3 -#define PLACEHOLDER_ID_STRING_VAR_3 0x4 -#define PLACEHOLDER_ID_KUN 0x5 -#define PLACEHOLDER_ID_RIVAL 0x6 -#define PLACEHOLDER_ID_VERSION 0x7 -#define PLACEHOLDER_ID_AQUA 0x8 -#define PLACEHOLDER_ID_MAGMA 0x9 -#define PLACEHOLDER_ID_ARCHIE 0xA -#define PLACEHOLDER_ID_MAXIE 0xB -#define PLACEHOLDER_ID_KYOGRE 0xC -#define PLACEHOLDER_ID_GROUDON 0xD - -// battle placeholders are located in battle_message.h - -#define NUM_TEXT_PRINTERS 32 - -#define TEXT_SPEED_FF 0xFF - -enum -{ - FONTATTR_MAX_LETTER_WIDTH, - FONTATTR_MAX_LETTER_HEIGHT, - FONTATTR_LETTER_SPACING, - FONTATTR_LINE_SPACING, - FONTATTR_UNKNOWN, // dunno what this is yet - FONTATTR_COLOR_FOREGROUND, - FONTATTR_COLOR_BACKGROUND, - FONTATTR_COLOR_SHADOW -}; - -struct TextPrinterSubStruct -{ - u8 glyphId:4; // 0x14 - bool8 hasPrintBeenSpedUp:1; - u8 unk:3; - u8 downArrowDelay:5; - u8 downArrowYPosIdx:2; - bool8 hasGlyphIdBeenSet:1; - u8 autoScrollDelay; -}; - -struct TextPrinterTemplate -{ - const u8* currentChar; - u8 windowId; - u8 fontId; - u8 x; - u8 y; - u8 currentX; // 0x8 - u8 currentY; - u8 letterSpacing; - u8 lineSpacing; - u8 unk:4; // 0xC - u8 fgColor:4; - u8 bgColor:4; - u8 shadowColor:4; -}; - -struct TextPrinter -{ - struct TextPrinterTemplate printerTemplate; - - void (*callback)(struct TextPrinterTemplate *, u16); // 0x10 - - union -#if !MODERN - __attribute__((packed)) -#endif - { - struct TextPrinterSubStruct sub; - u8 fields[7]; - } subUnion; - - u8 active; - u8 state; // 0x1C - u8 textSpeed; - u8 delayCounter; - u8 scrollDistance; - u8 minLetterSpacing; // 0x20 - u8 japanese; -}; - -struct FontInfo -{ - u16 (*fontFunction)(struct TextPrinter *x); - u8 maxLetterWidth; - u8 maxLetterHeight; - u8 letterSpacing; - u8 lineSpacing; - u8 unk:4; - u8 fgColor:4; - u8 bgColor:4; - u8 shadowColor:4; -}; - -extern const struct FontInfo *gFonts; - -struct GlyphWidthFunc -{ - u32 fontId; - u32 (*func)(u16 glyphId, bool32 isJapanese); -}; - -struct KeypadIcon -{ - u16 tileOffset; - u8 width; - u8 height; -}; - -typedef struct { - bool8 canABSpeedUpPrint:1; - bool8 useAlternateDownArrow:1; - bool8 autoScroll:1; - bool8 forceMidTextSpeed:1; -} TextFlags; - -struct Struct_03002F90 -{ - u32 unk0[8]; - u32 unk20[8]; - u32 unk40[8]; - u32 unk60[8]; - u8 unk80; - u8 unk81; -}; - -extern TextFlags gTextFlags; - -extern u8 gUnknown_03002F84; -extern struct Struct_03002F90 gUnknown_03002F90; - -void SetFontsPointer(const struct FontInfo *fonts); -void DeactivateAllTextPrinters(void); -u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); -bool16 AddTextPrinter(struct TextPrinterTemplate *template, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)); -void RunTextPrinters(void); -bool16 IsTextPrinterActive(u8 id); -u32 RenderFont(struct TextPrinter *textPrinter); -void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor); -void SaveTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor); -void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor); -void DecompressGlyphTile(const void *src_, void *dest_); -u8 GetLastTextColor(u8 colorType); -void CopyGlyphToWindow(struct TextPrinter *x); -void ClearTextSpan(struct TextPrinter *textPrinter, u32 width); -u8 GetMenuCursorDimensionByFont(u8, u8); - -u16 Font0Func(struct TextPrinter *textPrinter); -u16 Font1Func(struct TextPrinter *textPrinter); -u16 Font2Func(struct TextPrinter *textPrinter); -u16 Font3Func(struct TextPrinter *textPrinter); -u16 Font4Func(struct TextPrinter *textPrinter); -u16 Font5Func(struct TextPrinter *textPrinter); -u16 Font7Func(struct TextPrinter *textPrinter); -u16 Font8Func(struct TextPrinter *textPrinter); - -void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter); -void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter); -void TextPrinterClearDownArrow(struct TextPrinter *textPrinter); -bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter); -bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter); -bool16 TextPrinterWait(struct TextPrinter *textPrinter); -void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex); -u16 RenderText(struct TextPrinter *textPrinter); -u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing); -u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32); -s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing); -u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str); -u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y); -u8 GetKeypadIconTileOffset(u8 keypadIconId); -u8 GetKeypadIconWidth(u8 keypadIconId); -u8 GetKeypadIconHeight(u8 keypadIconId); -void SetDefaultFontsPointer(void); -u8 GetFontAttribute(u8 fontId, u8 attributeId); -u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension); -void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese); -u32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese); -void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese); -u32 GetGlyphWidthFont7(u16 glyphId, bool32 isJapanese); -void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese); -u32 GetGlyphWidthFont8(u16 glyphId, bool32 isJapanese); -void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese); -u32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese); -void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese); -u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese); -void DecompressGlyphFont9(u16 glyphId); - -// unk_text_util_2.c -u16 Font6Func(struct TextPrinter *textPrinter); -u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese); - -#endif // GUARD_TEXT_H diff --git a/include/trade.h b/include/trade.h index 0c95e1e81..72a04ed21 100644 --- a/include/trade.h +++ b/include/trade.h @@ -2,25 +2,26 @@ #define GUARD_TRADE_H #include "link_rfu.h" +#include "constants/trade.h" // Exported type declarations // Exported RAM declarations -extern struct MailStruct gUnknown_020321C0[PARTY_SIZE]; -extern u8 gUnknown_02032298[2]; +extern struct MailStruct gTradeMail[PARTY_SIZE]; +extern u8 gSelectedTradeMonPositions[2]; // Exported ROM declarations -extern const struct WindowTemplate gUnknown_0833900C; +extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate; -s32 sub_807A728(void); -void sub_80773AC(void); -void sub_807AE50(void); -int sub_807A8D0(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8); -int sub_807A7E0(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6); -int sub_807A918(struct Pokemon*, u16); -void sub_807B140(void); -void sub_807B154(void); -void sub_807F19C(void); -void sub_807F1A8(u8, const u8 *, u8); +s32 GetGameProgressForLinkTrade(void); +void CB2_StartCreateTradeMenu(void); +void CB2_LinkTrade(void); +int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8); +int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6); +int CanSpinTradeMon(struct Pokemon*, u16); +void InitTradeSequenceBgGpuRegs(void); +void LinkTradeDrawWindow(void); +void InitTradeBg(void); +void DrawTextOnTradeWindow(u8, const u8 *, u8); #endif //GUARD_TRADE_H diff --git a/include/trainer_hill.h b/include/trainer_hill.h index 31480287a..a592ef580 100644 --- a/include/trainer_hill.h +++ b/include/trainer_hill.h @@ -57,7 +57,7 @@ u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId); void InitTrainerHillBattleStruct(void); void FreeTrainerHillBattleStruct(void); void CopyTrainerHillTrainerText(u8 which, u16 trainerId); -bool8 sub_81D5C18(void); +bool8 InTrainerHillChallenge(void); void nullsub_129(void); void PrintOnTrainerHillRecordsWindow(void); void sub_81D5DF8(void); diff --git a/include/trainer_see.h b/include/trainer_see.h index a9b92d71b..daf9d0298 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -9,11 +9,11 @@ struct ApproachingTrainer u8 taskId; }; -extern u16 gUnknown_03006080; -extern u8 gUnknown_03006084[4]; +extern u16 gWhichTrainerToFaceAfterBattle; +extern u8 gPostBattleMovementScript[4]; extern struct ApproachingTrainer gApproachingTrainers[2]; extern u8 gNoOfApproachingTrainers; -extern u8 gUnknown_030060AC; +extern bool8 gTrainerApproachedPlayer; extern u8 gApproachingTrainerId; bool8 CheckForTrainersWantingBattle(void); @@ -25,6 +25,6 @@ u8 FldEff_QuestionMarkIcon(void); u8 FldEff_HeartIcon(void); u8 GetCurrentApproachingTrainerEventObjectId(void); u8 GetChosenApproachingTrainerEventObjectId(u8 arrayId); -void sub_80B4808(void); +void PlayerFaceTrainerAfterBattle(void); #endif // GUARD_TRAINER_SEE_H diff --git a/include/tv.h b/include/tv.h index ec7ac1e89..8f697afe9 100644 --- a/include/tv.h +++ b/include/tv.h @@ -12,12 +12,12 @@ void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u1 void sub_80EE8C8(u16 winStreak, u8 facility); void DoTVShow(void); void DoTVShowInSearchOfTrainers(void); -void sub_80EDCE8(void); +void TryPutTreasureInvestigatorsOnAir(void); void sub_80EE2CC(void); void sub_80EE72C(void); -void sub_80EED10(void); -void sub_80EED34(void); -void sub_80EED60(u16 delta); +void IncrementDailyPlantedBerries(void); +void IncrementDailyPickedBerries(void); +void IncrementDailyBattlePoints(u16 delta); void sub_80F01B8(void); void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx); void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx); @@ -36,10 +36,10 @@ void sub_80EDA80(void); void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx); void sub_80F0BB8(void); void sub_80ED950(bool8 flag); -void sub_80EEC80(void); -void sub_80EECA4(void); -void sub_80EECC8(void); -void sub_80EECEC(void); +void IncrementDailySlotsUses(void); +void IncrementDailyRouletteUses(void); +void IncrementDailyWildBattles(void); +void IncrementDailyBerryBlender(void); void sub_80F1208(TVShow *shows); void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed); void sub_80F14F8(TVShow *shows); diff --git a/include/union_room.h b/include/union_room.h index facc63986..54f09cbeb 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -135,7 +135,7 @@ union UnkUnion_Main struct UnkStruct_URoom *uRoom; }; -struct TradeUnkStruct +struct UnionRoomTrade { u16 field_0; u16 type; @@ -156,8 +156,8 @@ extern u8 gUnknown_02022C2C; extern union UnkUnion_Main gUnknown_02022C30; extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38; -extern u16 gUnknown_02022C3C; -extern u8 gUnknown_02022C3E; +extern u16 gUnionRoomOfferedSpecies; +extern u8 gUnionRoomRequestedMonType; // Exported ROM declarations diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 17e482525..e7ca9d46e 100755 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -1,6 +1,17 @@ #ifndef GUARD_UNION_ROOM_CHAT_H #define GUARD_UNION_ROOM_CHAT_H +enum +{ + UNION_ROOM_KB_PAGE_UPPER, + UNION_ROOM_KB_PAGE_LOWER, + UNION_ROOM_KB_PAGE_EMOJI, + UNION_ROOM_KB_PAGE_COUNT +}; + +#define UNION_ROOM_KB_ROW_COUNT 10 + + void sub_801DD98(void); void copy_strings_to_sav1(void); diff --git a/include/window.h b/include/window.h deleted file mode 100644 index 10e447789..000000000 --- a/include/window.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef GUARD_WINDOW_H -#define GUARD_WINDOW_H - -#define PIXEL_FILL(num) ((num) | ((num) << 4)) - -enum -{ - WINDOW_BG, - WINDOW_TILEMAP_LEFT, - WINDOW_TILEMAP_TOP, - WINDOW_WIDTH, - WINDOW_HEIGHT, - WINDOW_PALETTE_NUM, - WINDOW_BASE_BLOCK, - WINDOW_TILE_DATA -}; - -struct WindowTemplate -{ - u8 bg; - u8 tilemapLeft; - u8 tilemapTop; - u8 width; - u8 height; - u8 paletteNum; - u16 baseBlock; -}; - -#define DUMMY_WIN_TEMPLATE \ -{ \ - 0xFF, \ - 0, \ - 0, \ - 0, \ - 0, \ - 0, \ - 0, \ -} - -struct Window -{ - struct WindowTemplate window; - u8 *tileData; -}; - -bool16 InitWindows(const struct WindowTemplate *templates); -u16 AddWindow(const struct WindowTemplate *template); -int AddWindowWithoutTileMap(const struct WindowTemplate *template); -void RemoveWindow(u8 windowId); -void FreeAllWindowBuffers(void); -void CopyWindowToVram(u8 windowId, u8 mode); -void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h); -void PutWindowTilemap(u8 windowId); -void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette); -void ClearWindowTilemap(u8 windowId); -void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); -void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); -void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); -void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset); -void FillWindowPixelBuffer(u8 windowId, u8 fillValue); -void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); -void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)); -bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value); -u32 GetWindowAttribute(u8 windowId, u8 attributeId); -u16 AddWindow8Bit(const struct WindowTemplate *template); -void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue); -void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); -void CopyWindowToVram8Bit(u8 windowId, u8 mode); - -extern struct Window gWindows[]; -extern void* gUnknown_03002F70[]; -extern u32 filler_03002F58; -extern u32 filler_03002F5C; -extern u32 filler_03002F64; - -#endif // GUARD_WINDOW_H |