diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2021-10-14 15:36:51 -0400 |
---|---|---|
committer | GriffinR <griffin.g.richards@gmail.com> | 2021-10-15 12:05:06 -0400 |
commit | c02001c46d4ea55db8b59f91413627800d5674e8 (patch) | |
tree | c5b6ddb4588767280446941f463006b6b55ac498 /include | |
parent | 37e52c4f34fa3d6bb25f670bfc77ed220962f834 (diff) |
Document mystery gift link scripts, general mystery gift
Diffstat (limited to 'include')
-rw-r--r-- | include/constants/flags.h | 35 | ||||
-rw-r--r-- | include/global.h | 41 | ||||
-rwxr-xr-x | include/mevent.h | 30 | ||||
-rw-r--r-- | include/mevent_client.h | 59 | ||||
-rw-r--r-- | include/mevent_server.h | 2 | ||||
-rw-r--r-- | include/mevent_server_helpers.h | 16 | ||||
-rw-r--r-- | include/mystery_event_script.h | 4 | ||||
-rw-r--r-- | include/wonder_transfer.h | 2 |
8 files changed, 106 insertions, 83 deletions
diff --git a/include/constants/flags.h b/include/constants/flags.h index ef5a9a75e..880d227aa 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -338,23 +338,24 @@ #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 -#define FLAG_UNUSED_MYSTERY_GIFT_0x140 0x140 -#define FLAG_UNUSED_MYSTERY_GIFT_0x141 0x141 -#define FLAG_UNUSED_MYSTERY_GIFT_0x142 0x142 -#define FLAG_UNUSED_MYSTERY_GIFT_0x143 0x143 -#define FLAG_UNUSED_MYSTERY_GIFT_0x144 0x144 -#define FLAG_UNUSED_MYSTERY_GIFT_0x145 0x145 -#define FLAG_UNUSED_MYSTERY_GIFT_0x146 0x146 -#define FLAG_UNUSED_MYSTERY_GIFT_0x147 0x147 -#define FLAG_UNUSED_MYSTERY_GIFT_0x148 0x148 -#define FLAG_UNUSED_MYSTERY_GIFT_0x149 0x149 -#define FLAG_UNUSED_MYSTERY_GIFT_0x14A 0x14A -#define FLAG_UNUSED_MYSTERY_GIFT_0x14B 0x14B -#define FLAG_UNUSED_MYSTERY_GIFT_0x14C 0x14C -#define FLAG_UNUSED_MYSTERY_GIFT_0x14D 0x14D +#define FLAG_MYSTERY_GIFT_UNUSED_1 0x13D // These mystery gift flags are referenced but never set +#define FLAG_MYSTERY_GIFT_UNUSED_2 0x13E +#define FLAG_MYSTERY_GIFT_UNUSED_3 0x13F +#define FLAG_MYSTERY_GIFT_UNUSED_4 0x140 +#define FLAG_MYSTERY_GIFT_UNUSED_5 0x141 +#define FLAG_MYSTERY_GIFT_UNUSED_6 0x142 +#define FLAG_MYSTERY_GIFT_UNUSED_7 0x143 +#define FLAG_MYSTERY_GIFT_UNUSED_8 0x144 +#define FLAG_MYSTERY_GIFT_UNUSED_9 0x145 +#define FLAG_MYSTERY_GIFT_UNUSED_10 0x146 +#define FLAG_MYSTERY_GIFT_UNUSED_11 0x147 +#define FLAG_MYSTERY_GIFT_UNUSED_12 0x148 +#define FLAG_MYSTERY_GIFT_UNUSED_13 0x149 +#define FLAG_MYSTERY_GIFT_UNUSED_14 0x14A +#define FLAG_MYSTERY_GIFT_UNUSED_15 0x14B +#define FLAG_MYSTERY_GIFT_UNUSED_16 0x14C +#define FLAG_MYSTERY_GIFT_UNUSED_17 0x14D +#define NUM_MYSTERY_GIFT_FLAGS (1 + FLAG_MYSTERY_GIFT_UNUSED_17 - FLAG_RECEIVED_AURORA_TICKET) #define FLAG_MIRAGE_TOWER_VISIBLE 0x14E #define FLAG_CHOSE_ROOT_FOSSIL 0x14F diff --git a/include/global.h b/include/global.h index f8bb24da7..c737be7b8 100644 --- a/include/global.h +++ b/include/global.h @@ -854,15 +854,9 @@ struct MysteryEventStruct u8 unk_2C[10][WONDER_NEWS_TEXT_LENGTH]; }; - struct WonderNewsSaveStruct -{ - u32 crc; - struct WonderNews data; -}; - struct WonderCard { - u16 unk_00; + u16 flagId; u16 unk_02; u32 unk_04; u8 unk_08_0:2; @@ -876,13 +870,7 @@ struct MysteryEventStruct u8 unk_122[WONDER_CARD_TEXT_LENGTH]; }; - struct WonderCardSaveStruct -{ - u32 crc; - struct WonderCard data; -}; - - struct MEventBuffer_3430_Sub + struct MEventBuffer_3430 { u16 unk_00; u16 unk_02; @@ -891,20 +879,17 @@ struct MysteryEventStruct u16 unk_08[2][7]; }; - struct MEventBuffer_3430 -{ - u32 crc; - struct MEventBuffer_3430_Sub data; -}; - - struct MEventBuffers + struct MysteryGiftSave { - /*0x000 0x322C*/ struct WonderNewsSaveStruct wonderNews; - /*0x1c0 0x33EC*/ struct WonderCardSaveStruct wonderCard; - /*0x310 0x353C*/ struct MEventBuffer_3430 buffer_310; - /*0x338 0x3564*/ u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS]; - /*0x340 0x356C*/ struct MysteryEventStruct unk_340; - /*0x344 0x3570*/ u32 unk_344[2][5]; + u32 newsCrc; + struct WonderNews news; + u32 cardCrc; + struct WonderCard card; + u32 unkCrc; + struct MEventBuffer_3430 unk_3430; + u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS]; + struct MysteryEventStruct unk_340; + u32 unk_344[2][5]; }; // 0x36C 0x3598 // For external event data storage. The majority of these may have never been used. @@ -1031,7 +1016,7 @@ struct SaveBlock1 /*0x31C7*/ struct ExternalEventFlags externalEventFlags; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; - /*0x322C*/ struct MEventBuffers unk_322C; + /*0x322C*/ struct MysteryGiftSave mysteryGift; /*0x3598*/ u8 field_3598[0x180]; /*0x3718*/ u32 trainerHillTimes[4]; /*0x3728*/ struct RamScript ramScript; diff --git a/include/mevent.h b/include/mevent.h index 4b7d39b0c..4fda47fbd 100755 --- a/include/mevent.h +++ b/include/mevent.h @@ -21,30 +21,30 @@ struct MEventStruct_Unk1442CC u16 unk_0C; u32 unk_10; u16 unk_14; - u16 unk_16[NUM_QUESTIONNAIRE_WORDS]; - struct MEventBuffer_3430_Sub unk_20; + u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS]; + struct MEventBuffer_3430 unk_20; u8 unk_44; - u8 unk_45[7]; - u8 unk_4C[4]; - u16 unk_50[6]; - u8 unk_5C[4]; - u8 unk_60; + u8 playerName[PLAYER_NAME_LENGTH]; + u8 playerTrainerId[TRAINER_ID_LENGTH]; + u16 easyChatProfile[EASY_CHAT_BATTLE_WORDS_COUNT]; + u8 romHeaderGameCode[4]; + u8 romHeaderSoftwareVersion; }; void sub_801AFD8(void); struct WonderNews *GetSavedWonderNews(void); struct WonderCard *GetSavedWonderCard(void); -struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void); +struct MEventBuffer_3430 *sav1_get_mevent_buffer_2(void); struct MysteryEventStruct *sub_801B044(void); u16 *GetQuestionnaireWordsPtr(void); -void DestroyWonderNews(void); -bool32 sub_801B078(const struct WonderNews *src); -bool32 ValidateReceivedWonderNews(void); +void ClearSavedWonderNews(void); +bool32 SaveWonderNews(const struct WonderNews *news); +bool32 ValidateSavedWonderNews(void); bool32 WonderNews_Test_Unk_02(void); bool32 sub_801B1A4(const u8 *src); -void DestroyWonderCard(void); -bool32 sub_801B21C(const struct WonderCard *data); -bool32 ValidateReceivedWonderCard(void); +void ClearSavedWonderCard(void); +bool32 SaveWonderCard(const struct WonderCard *card); +bool32 ValidateSavedWonderCard(void); bool32 WonderCard_Test_Unk_08_6(void); u16 GetWonderCardFlagID(void); void WonderCard_ResetInternalReceivedFlag(struct WonderCard *buffer); @@ -54,7 +54,7 @@ void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1); bool32 sub_801B6A0(const struct MEventStruct_Unk1442CC *data, bool32 a1); u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const void *unused); u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const void *unused); -bool32 MEventStruct_Unk1442CC_CompareField_unk_16(const struct MEventStruct_Unk1442CC *a0, const u16 *a1); +bool32 MysteryGift_DoesQuestionnaireMatch(const struct MEventStruct_Unk1442CC *data, const u16 *words); u16 MEventStruct_Unk1442CC_GetValueNFrom_unk_20(const struct MEventStruct_Unk1442CC *a0, u32 command); u16 mevent_081445C0(u32 command); void ResetReceivedWonderCardFlag(void); diff --git a/include/mevent_client.h b/include/mevent_client.h index c32d14d7a..f68bb7592 100644 --- a/include/mevent_client.h +++ b/include/mevent_client.h @@ -3,31 +3,68 @@ #include "mevent_server_helpers.h" -struct mevent_client_cmd +// Return values for client functions called by MysteryGiftClient_Run +enum { + CLI_RET_INIT, + CLI_RET_1, + CLI_RET_2, + CLI_RET_3, + CLI_RET_ASK_TOSS, + CLI_RET_5, + CLI_RET_END, +}; + +// IDs for client script instructions +enum { + CLI_NONE, + CLI_RETURN, + CLI_RECV, + CLI_SEND_LOADED, + CLI_COPY_RECV, + CLI_5, + CLI_COPY_RECV_IF_N, + CLI_COPY_RECV_IF, + CLI_8, + CLI_9, + CLI_10, + CLI_11, + CLI_12, + CLI_ASK_TOSS, + CLI_LOAD_TOSS_RESPONSE, + CLI_15, + CLI_16, + CLI_17, + CLI_RECV_EREADER_TRAINER, + CLI_SEND_STAT, + CLI_20, + CLI_21, +}; + +struct MysteryGiftClientCmd { u32 instr; u32 parameter; }; -struct mevent_client +struct MysteryGiftClient { u32 unk_00; u32 param; - u32 mainseqno; - u32 flag; + u32 funcId; + u32 funcState; u32 cmdidx; void * sendBuffer; void * recvBuffer; - struct mevent_client_cmd * cmdBuffer; + struct MysteryGiftClientCmd * cmdBuffer; void * buffer; - struct mevent_srv_sub manager; - u32 unk_4C; + struct MysteryGiftLink link; + bool32 isWonderNews; }; -void mevent_client_do_init(u32 arg); -u32 mevent_client_do_exec(u16 * a0); -void mevent_client_inc_flag(void); +void MysteryGiftClient_Create(bool32 isWonderNews); +u32 MysteryGiftClient_Run(u16 * param); +void MysteryGiftClient_AdvanceState(void); void * mevent_client_get_buffer(void); -void mevent_client_set_param(u32 a0); +void MysteryGiftClient_SetParam(u32 value); #endif //GUARD_MEVENT_CLIENT_H diff --git a/include/mevent_server.h b/include/mevent_server.h index e74337cf6..3152280d3 100644 --- a/include/mevent_server.h +++ b/include/mevent_server.h @@ -26,7 +26,7 @@ struct mevent_srv_common const void * sendBuffer2; u32 sendBuffer2Size; u32 sendWord; - struct mevent_srv_sub manager; + struct MysteryGiftLink manager; }; void mevent_srv_new_wcard(); diff --git a/include/mevent_server_helpers.h b/include/mevent_server_helpers.h index e4e409862..d2f292a0b 100644 --- a/include/mevent_server_helpers.h +++ b/include/mevent_server_helpers.h @@ -3,7 +3,7 @@ #define ME_SEND_BUF_SIZE 0x400 -struct mevent_srv_sub +struct MysteryGiftLink { s32 seqno; u8 sendPlayerNo; @@ -18,8 +18,8 @@ struct mevent_srv_sub u16 sendSize; void * recvBfr; const void * sendBfr; - u32 (*recvFunc)(struct mevent_srv_sub *); - u32 (*sendFunc)(struct mevent_srv_sub *); + u32 (*recvFunc)(struct MysteryGiftLink *); + u32 (*sendFunc)(struct MysteryGiftLink *); }; struct send_recv_header @@ -29,10 +29,10 @@ struct send_recv_header u16 size; }; -void mevent_srv_sub_init(struct mevent_srv_sub *, u32, u32); -void mevent_srv_sub_init_send(struct mevent_srv_sub * manager, u32 ident, const void * src, u32 size); -bool32 mevent_srv_sub_recv(struct mevent_srv_sub * manager); -bool32 mevent_srv_sub_send(struct mevent_srv_sub * manager); -void mevent_srv_sub_init_recv(struct mevent_srv_sub *, u32, void *); +void MysteryGiftLink_Init(struct MysteryGiftLink *, u32, u32); +void MysteryGiftLink_InitSend(struct MysteryGiftLink * manager, u32 ident, const void * src, u32 size); +bool32 MysteryGiftLink_Recv(struct MysteryGiftLink * manager); +bool32 MysteryGiftLink_Send(struct MysteryGiftLink * manager); +void MysteryGiftLink_InitRecv(struct MysteryGiftLink *, u32, void *); #endif //GUARD_MEVENT_SERVER_HELPERS_H diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index 991cab53a..807c78b13 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -1,8 +1,8 @@ #ifndef GUARD_MYSTERY_EVENT_SCRIPT_H #define GUARD_MYSTERY_EVENT_SCRIPT_H -void sub_8153870(u8 *script); -bool32 sub_8153884(u32 *a0); +void InitMysteryGiftScriptContext(u8 *script); +bool32 RunMysteryGiftScriptContextCommand(u32 *script); u32 RunMysteryEventScript(u8 *script); void SetMysteryEventScriptStatus(u32 val); u16 GetRecordMixingGift(void); diff --git a/include/wonder_transfer.h b/include/wonder_transfer.h index 65b475725..7532d6b3c 100644 --- a/include/wonder_transfer.h +++ b/include/wonder_transfer.h @@ -9,7 +9,7 @@ enum { NEWS_INPUT_NONE = 0xFF }; -bool32 WonderCard_Init(struct WonderCard * card, struct MEventBuffer_3430_Sub * r6); +bool32 WonderCard_Init(struct WonderCard * card, struct MEventBuffer_3430 * r6); bool32 WonderNews_Init(const struct WonderNews * news); s32 WonderCard_Enter(void); s32 WonderNews_Enter(void); |