From f77b0feba6f1152216eba3b2c1edf63ba76c5a80 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 2 Mar 2020 16:57:00 -0500 Subject: Port berry_crush.c part 1 from Emerald --- include/berry_crush.h | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/math_util.h | 1 + include/overworld.h | 2 + 3 files changed, 162 insertions(+) (limited to 'include') diff --git a/include/berry_crush.h b/include/berry_crush.h index e8e9c216f..864d9b9d3 100644 --- a/include/berry_crush.h +++ b/include/berry_crush.h @@ -1,6 +1,165 @@ #ifndef GUARD_BERRY_CRUSH_H #define GUARD_BERRY_CRUSH_H +struct BerryCrushGame_Player +{ + u16 unk0; + u16 unk2; + union + { + u8 as_2d_bytes[2][8]; + u16 as_hwords[8]; + } unk4; + u8 unk14[12]; +}; + +struct __attribute__((packed, aligned(2))) BerryCrushGame_4E +{ + u16 unk0; + u16 filler2; + u8 unk4_0:1; + u8 unk4_1:1; + s8 unk5; + u16 unk6; + u16 unk8; + u16 unkA; + u16 unkC; +}; + +struct __attribute__((packed)) BerryCrushGame_40 +{ + u8 unk0[2]; + u16 unk2[6]; + struct BerryCrushGame_4E unkE; +}; + +struct BerryCrushGame_5C +{ + u16 unk00; + u8 unk02_0:1; + u8 unk02_1:1; + u8 unk02_2:1; + u8 unk02_3:5; + u8 unk03; + u16 unk04; + u16 unk06; + u16 unk08; + u16 unk0A; +}; + +union BerryCrushGame_68 +{ + struct BerryCrushGame_68_x + { + struct BerryCrushGame_68_x_SubStruct + { + s32 unk00; + u16 unk04; + s16 unk06; + u16 unk08; + u16 unk0A; + u16 unk0C[2][5]; + u8 filler20[16]; + } unk00; + u8 unk30[12]; + struct BerryCrushGame_Player others[4]; + u8 fillerBC[20]; + } as_four_players; + struct BerryCrushGame_68_y + { + u8 filler00[28]; + struct BerryCrushGame_Player unk1C[5]; + u8 fillerBC[20]; + } as_five_players; +}; + +struct BerryCrushGame_138_C +{ + u8 unk0; + u8 unk1; + u8 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; +}; + +struct BerryCrushGame_138 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + s16 unk4; + s16 unk6; + s16 unk8; + const struct BerryCrushGame_138_C *unkC[5]; + struct Sprite *unk20; + struct Sprite *unk24[5]; + struct Sprite *unk38[5]; + struct Sprite *unk4C[11]; + struct Sprite *unk78[2]; + u8 unk80; + u8 filler81; + u8 unk82; + u8 unk83[5]; +}; + +struct BerryCrushGame +{ + MainCallback unk0; + u32 (* unk4)(struct BerryCrushGame *, u8 *); + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u8 unkC; + u8 unkD; + u8 unkE; + u8 unkF; + u16 unk10; + u16 unk12; + u16 unk14; + u16 unk16; + s16 unk18; + s16 unk1A; + int unk1C; + s32 unk20; + u8 unk24; + u8 unk25_0:1; + u8 unk25_1:1; + u8 unk25_2:1; + u8 unk25_3:1; + u8 unk25_4:1; + u8 unk25_5:3; + u16 unk26; + u16 unk28; + s16 unk2A; + s16 unk2C; + s16 unk2E; + s16 unk30; + s16 unk32; + s16 unk34; + u8 unk36[0xA]; + struct BerryCrushGame_40 unk40; + struct BerryCrushGame_5C unk5C; + union BerryCrushGame_68 unk68; + struct BerryCrushGame_138 unk138; + u8 unk1C0[0x1000]; + u8 unk11C0[0x1000]; + u8 unk21C0[0x1000]; + u8 unk31C0[0x1000]; +}; + void StartBerryCrush(MainCallback callback); +u32 sub_814B6FC(MainCallback callback); +void sub_814B8F0(void); +void sub_814B914(void); +void sub_814B924(void); +void sub_814B930(void); +void sub_814BABC(struct BerryCrushGame *arg0); +void sub_814BB4C(u16, u8, u8 *); +void sub_814D564(u8 *, u32, s32, u32, u32, u32, u32); +void sub_814D9CC(struct BerryCrushGame *arg0); #endif //GUARD_BERRY_CRUSH_H diff --git a/include/math_util.h b/include/math_util.h index 473be5d45..7a81ee7e3 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -3,5 +3,6 @@ s16 sub_80D8B90(s16 y); s16 sub_80D8AA0(s16 x, s16 y); +s32 sub_80D8B68(s32 x, s32 y); #endif //GUARD_MATH_UTIL_H diff --git a/include/overworld.h b/include/overworld.h index 1775a6896..a67c7cd88 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -189,6 +189,8 @@ void sub_8057F34(void); u32 sub_8057EC0(void); void sub_8057F70(void); void sub_8057F48(void); +void SetMainCallback1(MainCallback cb); +void CB1_Overworld(void); extern u16 gHeldKeyCodeToSend; -- cgit v1.2.3 From 8594e7f72d070ce10fcc41a8c2dfe32420e7c560 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 2 Mar 2020 21:36:30 -0500 Subject: Port berry_crush_2 from emerald --- include/berry.h | 2 +- include/berry_crush.h | 12 ++++++++++++ include/item.h | 1 + include/link_rfu.h | 1 + include/math_util.h | 1 + include/strings.h | 11 +++++++++++ 6 files changed, 27 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/berry.h b/include/berry.h index 5bf272d42..905ce291b 100644 --- a/include/berry.h +++ b/include/berry.h @@ -72,6 +72,6 @@ struct UnkStruct_0858AB24 { u16 unk1; }; -extern const struct UnkStruct_0858AB24 gUnknown_0858AB24[]; +extern const struct UnkStruct_0858AB24 gUnknown_83DFC9C[]; #endif // GUARD_BERRY_H diff --git a/include/berry_crush.h b/include/berry_crush.h index 864d9b9d3..97e530f5e 100644 --- a/include/berry_crush.h +++ b/include/berry_crush.h @@ -151,6 +151,7 @@ struct BerryCrushGame u8 unk31C0[0x1000]; }; +struct BerryCrushGame *sub_814B6F0(void); void StartBerryCrush(MainCallback callback); u32 sub_814B6FC(MainCallback callback); void sub_814B8F0(void); @@ -161,5 +162,16 @@ void sub_814BABC(struct BerryCrushGame *arg0); void sub_814BB4C(u16, u8, u8 *); void sub_814D564(u8 *, u32, s32, u32, u32, u32, u32); void sub_814D9CC(struct BerryCrushGame *arg0); +bool32 sub_814D5C8(void); +bool32 sub_814D888(void); +void sub_814DA24(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); +void sub_814DC24(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); +void sub_814DC5C(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); +bool32 sub_814DE50(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); +bool32 sub_814E644(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); +void sub_814E80C(struct BerryCrushGame *arg0); +void sub_814DA04(struct BerryCrushGame *arg0); +void sub_814EB04(struct BerryCrushGame_138 *arg0); +void sub_814DB84(struct Sprite * sprite); #endif //GUARD_BERRY_CRUSH_H diff --git a/include/item.h b/include/item.h index 1d63c1a22..2c5852617 100644 --- a/include/item.h +++ b/include/item.h @@ -79,5 +79,6 @@ void RemovePCItem(u16 itemId, u16 quantity); void SortAndCompactBagPocket(struct BagPocket * pocket); u8 CountItemsInPC(void); void ApplyNewEncryptionKeyToBagItems_(u32 newKey); +bool8 CheckHasAtLeastOneBerry(void); #endif // GUARD_ITEM_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 5ef954dd5..ba2eb0120 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -275,6 +275,7 @@ bool32 GetRfuUnkCE8(void); void sub_80FA4A8(void); void sub_80FB9D0(void); void sub_80FB030(u32 a0); +void sub_80FBA44(void); #include "mevent_server.h" extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; diff --git a/include/math_util.h b/include/math_util.h index 7a81ee7e3..946ecd949 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -4,5 +4,6 @@ s16 sub_80D8B90(s16 y); s16 sub_80D8AA0(s16 x, s16 y); s32 sub_80D8B68(s32 x, s32 y); +s32 sub_80D8AE0(s32 x, s32 y); #endif //GUARD_MATH_UTIL_H diff --git a/include/strings.h b/include/strings.h index ec5965b75..38252f6e6 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1148,4 +1148,15 @@ extern const u8 gUnknown_841DF92[]; extern const u8 gUnknown_841DF99[]; extern const u8 gUnknown_841DFA0[]; +// berry_cursh +extern const u8 gUnknown_841CE3C[]; +extern const u8 gUnknown_841CE78[]; +extern const u8 gUnknown_841CEA8[]; +extern const u8 gUnknown_841CF14[]; +extern const u8 gUnknown_841CF50[]; +extern const u8 gUnknown_841CF70[]; +extern const u8 gUnknown_841CFA0[]; +extern const u8 gUnknown_841CFD4[]; +extern const u8 gUnknown_841D008[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 8a7c2ded11a2adf4f09ddca814eb06fdbca13fd1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 3 Mar 2020 12:24:18 -0500 Subject: Port berry_crush_3 from Emerald --- include/berry_crush.h | 13 ++++++++++--- include/digit_obj_util.h | 8 ++++++-- include/graphics.h | 7 ++++++- include/math_util.h | 2 ++ include/strings.h | 23 +++++++++++++++++++++++ 5 files changed, 47 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/berry_crush.h b/include/berry_crush.h index 97e530f5e..18ac6d1bd 100644 --- a/include/berry_crush.h +++ b/include/berry_crush.h @@ -151,6 +151,12 @@ struct BerryCrushGame u8 unk31C0[0x1000]; }; +#define PLAYER_UNK14(game, i) \ + ((u8 *)(game) \ + + offsetof(struct BerryCrushGame, unk68) \ + + offsetof(struct BerryCrushGame_68_x, unk30) \ + + sizeof(struct BerryCrushGame_Player) * (i)) + struct BerryCrushGame *sub_814B6F0(void); void StartBerryCrush(MainCallback callback); u32 sub_814B6FC(MainCallback callback); @@ -161,9 +167,9 @@ void sub_814B930(void); void sub_814BABC(struct BerryCrushGame *arg0); void sub_814BB4C(u16, u8, u8 *); void sub_814D564(u8 *, u32, s32, u32, u32, u32, u32); -void sub_814D9CC(struct BerryCrushGame *arg0); -bool32 sub_814D5C8(void); -bool32 sub_814D888(void); +int sub_814D9CC(struct BerryCrushGame *arg0); +int sub_814D5C8(void); +int sub_814D888(void); void sub_814DA24(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); void sub_814DC24(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); void sub_814DC5C(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1); @@ -173,5 +179,6 @@ void sub_814E80C(struct BerryCrushGame *arg0); void sub_814DA04(struct BerryCrushGame *arg0); void sub_814EB04(struct BerryCrushGame_138 *arg0); void sub_814DB84(struct Sprite * sprite); +void ShowBerryCrushRankings(void); #endif //GUARD_BERRY_CRUSH_H diff --git a/include/digit_obj_util.h b/include/digit_obj_util.h index 11d51f1fc..1db775d26 100644 --- a/include/digit_obj_util.h +++ b/include/digit_obj_util.h @@ -11,8 +11,12 @@ struct DigitObjUtilTemplate u8 xDelta; s16 x; s16 y; - const struct SpriteSheet *spriteSheet; - const struct SpritePalette *spritePal; + union + { + const struct SpriteSheet * uncompressed; + const struct CompressedSpriteSheet * compressed; + } spriteSheet; + const struct SpritePalette * spritePal; }; extern const u16 gUnknown_8479668[]; diff --git a/include/graphics.h b/include/graphics.h index 1405cdcf1..2c3aa7c4b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4875,10 +4875,15 @@ extern const u32 gLinkMiscMenu_Tilemap[]; // union_room_chat_objects extern const u32 gUnionRoomChatIcons[]; -//battle_bg +// battle_bg extern const u32 gFile_graphics_battle_transitions_vs_frame_sheet[]; extern const u32 gVsLettersGfx[]; extern const u32 gFile_graphics_battle_transitions_vs_frame_palette[]; extern const u32 gFile_graphics_battle_transitions_vs_frame_tilemap[]; +// berry_crush +extern const u16 gUnknown_8EAFEA0[]; +extern const u32 gUnknown_8EAFFC0[]; +extern const u32 gUnknown_8EB0ADC[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/math_util.h b/include/math_util.h index 946ecd949..71e87dad1 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -5,5 +5,7 @@ s16 sub_80D8B90(s16 y); s16 sub_80D8AA0(s16 x, s16 y); s32 sub_80D8B68(s32 x, s32 y); s32 sub_80D8AE0(s32 x, s32 y); +s16 sub_80D8B40(u8 s, s16 x, s16 y); +s16 sub_80D8ABC(u8 s, s16 x, s16 y); #endif //GUARD_MATH_UTIL_H diff --git a/include/strings.h b/include/strings.h index 38252f6e6..2587d7008 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1158,5 +1158,28 @@ extern const u8 gUnknown_841CF70[]; extern const u8 gUnknown_841CFA0[]; extern const u8 gUnknown_841CFD4[]; extern const u8 gUnknown_841D008[]; +extern const u8 gText_1_ClrLtGryShdwBlk_Dynamic0[]; +extern const u8 gText_1_Dynamic0[]; +extern const u8 gText_SpaceTimes[]; +extern const u8 gText_XDotY[]; +extern const u8 gText_StrVar1Berry[]; +extern const u8 gText_TimeColon[]; +extern const u8 gText_PressingSpeed[]; +extern const u8 gText_Silkiness[]; +extern const u8 gText_StrVar1[]; +extern const u8 gText_SpaceMin[]; +extern const u8 gText_XDotY2[]; +extern const u8 gText_SpaceSec[]; +extern const u8 gText_XDotY3[]; +extern const u8 gText_TimesPerSec[]; +extern const u8 gText_Var1Percent[]; +extern const u8 gText_PressesRankings[]; +extern const u8 gText_CrushingResults[]; +extern const u8 gText_BerryCrush2[]; +extern const u8 gText_PressingSpeedRankings[]; +extern const u8 gText_Var1Players[]; +extern const u8 gText_NeatnessRankings[]; +extern const u8 gText_CooperativeRankings[]; +extern const u8 gText_PressingPowerRankings[]; #endif //GUARD_STRINGS_H -- cgit v1.2.3 From c2f85a5326dceb0b17618cae9947491667e9e7e7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 3 Mar 2020 15:42:14 -0500 Subject: Address review comments --- include/berry_crush.h | 2 +- include/strings.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/berry_crush.h b/include/berry_crush.h index 18ac6d1bd..9077b966e 100644 --- a/include/berry_crush.h +++ b/include/berry_crush.h @@ -108,7 +108,7 @@ struct BerryCrushGame_138 struct BerryCrushGame { MainCallback unk0; - u32 (* unk4)(struct BerryCrushGame *, u8 *); + u32 (*unk4)(struct BerryCrushGame *, u8 *); u8 unk8; u8 unk9; u8 unkA; diff --git a/include/strings.h b/include/strings.h index 2587d7008..c812e991a 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1148,7 +1148,7 @@ extern const u8 gUnknown_841DF92[]; extern const u8 gUnknown_841DF99[]; extern const u8 gUnknown_841DFA0[]; -// berry_cursh +// berry_crush extern const u8 gUnknown_841CE3C[]; extern const u8 gUnknown_841CE78[]; extern const u8 gUnknown_841CEA8[]; -- cgit v1.2.3