summaryrefslogtreecommitdiff
path: root/include/berry_crush.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/berry_crush.h')
-rw-r--r--include/berry_crush.h176
1 files changed, 102 insertions, 74 deletions
diff --git a/include/berry_crush.h b/include/berry_crush.h
index 9077b966e..999fb59f3 100644
--- a/include/berry_crush.h
+++ b/include/berry_crush.h
@@ -1,9 +1,49 @@
#ifndef GUARD_BERRY_CRUSH_H
#define GUARD_BERRY_CRUSH_H
+enum {
+ BCTEXT_AREYOUREADY,
+ BCTEXT_WAITFOROTHERS,
+ BCTEXT_GAINEDPOWDER,
+ BCTEXT_RECORDINGRESULTS,
+ BCTEXT_ASKPLAYAGAIN,
+ BCTEXT_CANCEL_NOBERRIES,
+ BCTEXT_CANCEL_DROPPEDOUT,
+ BCTEXT_TIMEUP,
+ BCTEXT_COMMSTANDBY,
+};
+
+enum {
+ BCCMD_BeginNormalPaletteFade = 1,
+ BCCMD_WaitPaletteFade,
+ BCCMD_PrintMessage,
+ BCCMD_InitGfx,
+ BCCMD_TeardownGfx,
+ BCCMD_SignalReadyToBegin,
+ BCCMD_AskPickBerry,
+ BCCMD_GoToBerryPouch,
+ BCCMD_WaitForOthersToPickBerries,
+ BCCMD_DropBerriesIntoCrusher,
+ BCCMD_DropLid,
+ BCCMD_Countdown,
+ BCCMD_PlayGame_Master,
+ BCCMD_PlayGame_Slave,
+ BCCMD_FinishGame,
+ BCCMD_HandleTimeUp,
+ BCCMD_TabulateResults,
+ BCCMD_ShowResults,
+ BCCMD_SaveTheGame,
+ BCCMD_AskPlayAgain,
+ BCCMD_CommunicatePlayAgainResponses,
+ BCCMD_FadeOutToPlayAgain,
+ BCCMD_PlayAgainFailureMessage,
+ BCCMD_GracefulExit,
+ BCCMD_Quit,
+};
+
struct BerryCrushGame_Player
{
- u16 unk0;
+ u16 berryId;
u16 unk2;
union
{
@@ -13,40 +53,26 @@ struct BerryCrushGame_Player
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 pushedAButton:1;
u8 unk02_3:5;
- u8 unk03;
+ s8 unk03;
u16 unk04;
u16 unk06;
u16 unk08;
u16 unk0A;
};
+struct __attribute__((packed, aligned(2))) BerryCrushGame_4E
+{
+ u16 unk0;
+ struct BerryCrushGame_5C data;
+};
+
union BerryCrushGame_68
{
struct BerryCrushGame_68_x
@@ -58,7 +84,9 @@ union BerryCrushGame_68
s16 unk06;
u16 unk08;
u16 unk0A;
- u16 unk0C[2][5];
+ // 0: Number of A presses
+ // 1: Neatness
+ u16 stats[2][5];
u8 filler20[16];
} unk00;
u8 unk30[12];
@@ -68,12 +96,12 @@ union BerryCrushGame_68
struct BerryCrushGame_68_y
{
u8 filler00[28];
- struct BerryCrushGame_Player unk1C[5];
+ struct BerryCrushGame_Player players[5];
u8 fillerBC[20];
} as_five_players;
};
-struct BerryCrushGame_138_C
+struct BerryCrushPlayerSeatCoords
{
u8 unk0;
u8 unk1;
@@ -86,19 +114,19 @@ struct BerryCrushGame_138_C
struct BerryCrushGame_138
{
- u8 unk0;
+ u8 animBerryIdx;
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];
+ s16 minutes;
+ s16 secondsInt;
+ s16 secondsFrac;
+ const struct BerryCrushPlayerSeatCoords * seatCoords[5];
+ struct Sprite *coreSprite;
+ struct Sprite *impactSprites[5];
+ struct Sprite *berrySprites[5];
+ struct Sprite *sparkleSprites[11];
+ struct Sprite *timerSprites[2];
u8 unk80;
u8 filler81;
u8 unk82;
@@ -107,23 +135,23 @@ struct BerryCrushGame_138
struct BerryCrushGame
{
- MainCallback unk0;
- u32 (*unk4)(struct BerryCrushGame *, u8 *);
- u8 unk8;
- u8 unk9;
- u8 unkA;
- u8 unkB;
- u8 unkC;
+ MainCallback savedCallback;
+ u32 (*cmdCallback)(struct BerryCrushGame *, u8 *);
+ u8 localId;
+ u8 playerCount;
+ u8 taskId;
+ u8 textSpeed;
+ u8 cmdState;
u8 unkD;
- u8 unkE;
- u8 unkF;
+ u8 nextCmd;
+ u8 afterPalFadeCmd;
u16 unk10;
- u16 unk12;
+ u16 gameState;
u16 unk14;
- u16 unk16;
+ u16 pressingSpeed;
s16 unk18;
s16 unk1A;
- int unk1C;
+ int powder;
s32 unk20;
u8 unk24;
u8 unk25_0:1;
@@ -133,52 +161,52 @@ struct BerryCrushGame
u8 unk25_4:1;
u8 unk25_5:3;
u16 unk26;
- u16 unk28;
- s16 unk2A;
- s16 unk2C;
+ u16 timer;
+ s16 depth;
+ s16 vibration;
s16 unk2E;
s16 unk30;
s16 unk32;
s16 unk34;
- u8 unk36[0xA];
- struct BerryCrushGame_40 unk40;
- struct BerryCrushGame_5C unk5C;
+ u8 commandParams[10];
+ u16 sendCmd[7];
+ u16 recvCmd[7];
+ struct BerryCrushGame_5C localState;
union BerryCrushGame_68 unk68;
- struct BerryCrushGame_138 unk138;
- u8 unk1C0[0x1000];
+ struct BerryCrushGame_138 spritesManager;
+ u8 bg1Buffer[0x1000];
u8 unk11C0[0x1000];
- u8 unk21C0[0x1000];
- u8 unk31C0[0x1000];
+ u8 bg2Buffer[0x1000];
+ u8 bg3Buffer[0x1000];
};
-#define PLAYER_UNK14(game, i) \
+#define BERRYCRUSH_PLAYER_NAME(game, i) \
((u8 *)(game) \
+ offsetof(struct BerryCrushGame, unk68) \
+ offsetof(struct BerryCrushGame_68_x, unk30) \
+ sizeof(struct BerryCrushGame_Player) * (i))
-struct BerryCrushGame *sub_814B6F0(void);
+struct BerryCrushGame *GetBerryCrushGame(void);
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);
+u32 ExitBerryCrushWithCallback(MainCallback callback);
+void CB2_BerryCrush_GoToBerryPouch(void);
+void BerryCrush_SetVBlankCallback(void);
+void BerryCrush_UnsetVBlankCallback(void);
+void BerryCrush_UpdateSav2Records(void);
+void BerryCrush_RunOrScheduleCommand(u16 command, u8 runMode, u8 *params);
+void BerryCrush_SetPaletteFadeParams(u8 *params, bool8 communicateAfter, u32 selectedPals, s8 delay, u8 startY, u8 targetY, u16 palette);
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);
+int BerryCrush_InitBgs(void);
+int BerryCrush_TeardownBgs(void);
+void BerryCrush_CreateBerrySprites(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1);
+void BerryCrushFreeBerrySpriteGfx(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);
+void BerryCrush_HideTimerSprites(struct BerryCrushGame_138 *arg0);
+void SpriteCB_DropBerryIntoCrusher(struct Sprite * sprite);
void ShowBerryCrushRankings(void);
#endif //GUARD_BERRY_CRUSH_H