Merge pull request #1519 from GriffinRichards/doc-mgift
Document Mystery Gift
This commit is contained in:
@@ -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_WONDER_CARD_UNUSED_1 0x13D // These Wonder Card flags are referenced but never set
|
||||
#define FLAG_WONDER_CARD_UNUSED_2 0x13E
|
||||
#define FLAG_WONDER_CARD_UNUSED_3 0x13F
|
||||
#define FLAG_WONDER_CARD_UNUSED_4 0x140
|
||||
#define FLAG_WONDER_CARD_UNUSED_5 0x141
|
||||
#define FLAG_WONDER_CARD_UNUSED_6 0x142
|
||||
#define FLAG_WONDER_CARD_UNUSED_7 0x143
|
||||
#define FLAG_WONDER_CARD_UNUSED_8 0x144
|
||||
#define FLAG_WONDER_CARD_UNUSED_9 0x145
|
||||
#define FLAG_WONDER_CARD_UNUSED_10 0x146
|
||||
#define FLAG_WONDER_CARD_UNUSED_11 0x147
|
||||
#define FLAG_WONDER_CARD_UNUSED_12 0x148
|
||||
#define FLAG_WONDER_CARD_UNUSED_13 0x149
|
||||
#define FLAG_WONDER_CARD_UNUSED_14 0x14A
|
||||
#define FLAG_WONDER_CARD_UNUSED_15 0x14B
|
||||
#define FLAG_WONDER_CARD_UNUSED_16 0x14C
|
||||
#define FLAG_WONDER_CARD_UNUSED_17 0x14D
|
||||
#define NUM_WONDER_CARD_FLAGS (1 + FLAG_WONDER_CARD_UNUSED_17 - FLAG_RECEIVED_AURORA_TICKET)
|
||||
|
||||
#define FLAG_MIRAGE_TOWER_VISIBLE 0x14E
|
||||
#define FLAG_CHOSE_ROOT_FOSSIL 0x14F
|
||||
@@ -518,22 +519,22 @@
|
||||
#define FLAG_UNUSED_0x1E3 0x1E3 // Unused Flag
|
||||
|
||||
// Mystery Gift Flags (Unknown)
|
||||
#define FLAG_MYSTERY_EVENT_DONE 0x1E4
|
||||
#define FLAG_MYSTERY_EVENT_1 0x1E5
|
||||
#define FLAG_MYSTERY_EVENT_2 0x1E6
|
||||
#define FLAG_MYSTERY_EVENT_3 0x1E7
|
||||
#define FLAG_MYSTERY_EVENT_4 0x1E8
|
||||
#define FLAG_MYSTERY_EVENT_5 0x1E9
|
||||
#define FLAG_MYSTERY_EVENT_6 0x1EA
|
||||
#define FLAG_MYSTERY_EVENT_7 0x1EB
|
||||
#define FLAG_MYSTERY_EVENT_8 0x1EC
|
||||
#define FLAG_MYSTERY_EVENT_9 0x1ED
|
||||
#define FLAG_MYSTERY_EVENT_10 0x1EE
|
||||
#define FLAG_MYSTERY_EVENT_11 0x1EF
|
||||
#define FLAG_MYSTERY_EVENT_12 0x1F0
|
||||
#define FLAG_MYSTERY_EVENT_13 0x1F1
|
||||
#define FLAG_MYSTERY_EVENT_14 0x1F2
|
||||
#define FLAG_MYSTERY_EVENT_15 0x1F3
|
||||
#define FLAG_MYSTERY_GIFT_DONE 0x1E4
|
||||
#define FLAG_MYSTERY_GIFT_1 0x1E5
|
||||
#define FLAG_MYSTERY_GIFT_2 0x1E6
|
||||
#define FLAG_MYSTERY_GIFT_3 0x1E7
|
||||
#define FLAG_MYSTERY_GIFT_4 0x1E8
|
||||
#define FLAG_MYSTERY_GIFT_5 0x1E9
|
||||
#define FLAG_MYSTERY_GIFT_6 0x1EA
|
||||
#define FLAG_MYSTERY_GIFT_7 0x1EB
|
||||
#define FLAG_MYSTERY_GIFT_8 0x1EC
|
||||
#define FLAG_MYSTERY_GIFT_9 0x1ED
|
||||
#define FLAG_MYSTERY_GIFT_10 0x1EE
|
||||
#define FLAG_MYSTERY_GIFT_11 0x1EF
|
||||
#define FLAG_MYSTERY_GIFT_12 0x1F0
|
||||
#define FLAG_MYSTERY_GIFT_13 0x1F1
|
||||
#define FLAG_MYSTERY_GIFT_14 0x1F2
|
||||
#define FLAG_MYSTERY_GIFT_15 0x1F3
|
||||
|
||||
// Hidden Items
|
||||
#define FLAG_HIDDEN_ITEMS_START 0x1F4
|
||||
|
||||
@@ -87,6 +87,12 @@
|
||||
#define MOVE_NAME_LENGTH 12
|
||||
#define NUM_QUESTIONNAIRE_WORDS 4
|
||||
#define QUIZ_QUESTION_LEN 9
|
||||
#define WONDER_CARD_TEXT_LENGTH 40
|
||||
#define WONDER_NEWS_TEXT_LENGTH 40
|
||||
#define WONDER_CARD_BODY_TEXT_LINES 4
|
||||
#define WONDER_NEWS_BODY_TEXT_LINES 10
|
||||
|
||||
#define MAX_STAMP_CARD_STAMPS 7
|
||||
|
||||
#define MALE 0
|
||||
#define FEMALE 1
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
#ifndef GUARD_CONSTANTS_MEVENT_H
|
||||
#define GUARD_CONSTANTS_MEVENT_H
|
||||
|
||||
// mevent2.c
|
||||
#define GET_NUM_STAMPS 0
|
||||
#define GET_MAX_STAMPS 1
|
||||
#define GET_CARD_BATTLES_WON 2
|
||||
|
||||
#define GET_NUM_STAMPS_INTERNAL 3
|
||||
#define GET_MAX_STAMPS_INTERNAL 4
|
||||
#define GET_CARD_BATTLES_WON_INTERNAL 0
|
||||
|
||||
#define REQUIRED_CARD_BATTLES 3
|
||||
|
||||
#endif //GUARD_MEVENT_H
|
||||
47
include/constants/mystery_gift.h
Normal file
47
include/constants/mystery_gift.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#ifndef GUARD_CONSTANTS_MYSTERY_GIFT_H
|
||||
#define GUARD_CONSTANTS_MYSTERY_GIFT_H
|
||||
|
||||
#define GET_NUM_STAMPS 0
|
||||
#define GET_MAX_STAMPS 1
|
||||
#define GET_CARD_BATTLES_WON 2
|
||||
#define GET_CARD_BATTLES_LOST 3
|
||||
#define GET_CARD_NUM_TRADES 4
|
||||
|
||||
#define CARD_STAT_BATTLES_WON 0
|
||||
#define CARD_STAT_BATTLES_LOST 1
|
||||
#define CARD_STAT_NUM_TRADES 2
|
||||
#define CARD_STAT_NUM_STAMPS 3
|
||||
#define CARD_STAT_MAX_STAMPS 4
|
||||
|
||||
// Values for the type field of Wonder Card
|
||||
#define CARD_TYPE_GIFT 0 // Normal "Wonder Card"
|
||||
#define CARD_TYPE_STAMP 1 // "Stamp Card"
|
||||
#define CARD_TYPE_LINK_STAT 2 // Referred to as the "Battle Card", shows battle and trade stats
|
||||
#define CARD_TYPE_COUNT 3
|
||||
|
||||
// Values for the sendType field of Wonder Card/News
|
||||
#define SEND_TYPE_DISALLOWED 0
|
||||
#define SEND_TYPE_ALLOWED 1
|
||||
#define SEND_TYPE_ALLOWED_ALWAYS 2
|
||||
|
||||
// Return values for MysteryGift_CompareCardFlags, handled by gMysteryGiftServerScript_SendWonderCard
|
||||
#define HAS_NO_CARD 0
|
||||
#define HAS_SAME_CARD 1
|
||||
#define HAS_DIFF_CARD 2
|
||||
|
||||
// The number of battles needed to be recorded on a Battle Card to win a prize
|
||||
#define REQUIRED_CARD_BATTLES 3
|
||||
|
||||
// Stamps are 32 bits. The first 16 bits are the species
|
||||
// and the second 16 bits are a number (presumably an ID of some kind)
|
||||
#define STAMP_SPECIES 0
|
||||
#define STAMP_ID 1
|
||||
|
||||
// Number of different types/colors of Wonder Card and News backgrounds
|
||||
#define NUM_WONDER_BGS 8
|
||||
|
||||
#define MAX_WONDER_CARD_STAT 999
|
||||
|
||||
#define WONDER_CARD_FLAG_OFFSET 1000
|
||||
|
||||
#endif //GUARD_CONSTANTS_MYSTERY_GIFT_H
|
||||
@@ -60,7 +60,7 @@
|
||||
#define VAR_POISON_STEP_COUNTER 0x402B
|
||||
#define VAR_RESET_RTC_ENABLE 0x402C
|
||||
#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
|
||||
#define VAR_0x402E 0x402E
|
||||
#define VAR_WONDER_NEWS_COUNTER 0x402E
|
||||
|
||||
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
|
||||
#define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030
|
||||
@@ -237,14 +237,14 @@
|
||||
#define VAR_REGISTER_BIRCH_STATE 0x40DA
|
||||
#define VAR_UNUSED_0x40DB 0x40DB // Unused Var
|
||||
#define VAR_UNUSED_0x40DC 0x40DC // Unused Var
|
||||
#define VAR_EVENT_PICHU_SLOT 0x40DD
|
||||
#define VAR_NEVER_READ_0x40DE 0x40DE // Var is written to, but never read
|
||||
#define VAR_NEVER_READ_0x40DF 0x40DF // Var is written to, but never read
|
||||
#define VAR_NEVER_READ_0x40E0 0x40E0 // Var is written to, but never read
|
||||
#define VAR_NEVER_READ_0x40E1 0x40E1 // Var is written to, but never read
|
||||
#define VAR_NEVER_READ_0x40E2 0x40E2 // Var is written to, but never read
|
||||
#define VAR_NEVER_READ_0x40E3 0x40E3 // Var is written to, but never read
|
||||
#define VAR_NEVER_READ_0x40E4 0x40E4 // var is written to, but never read
|
||||
#define VAR_GIFT_PICHU_SLOT 0x40DD
|
||||
#define VAR_GIFT_UNUSED_1 0x40DE // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_2 0x40DF // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_3 0x40E0 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_4 0x40E1 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_5 0x40E2 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_6 0x40E3 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_7 0x40E4 // var is written to, but never read
|
||||
#define VAR_UNUSED_0x40E5 0x40E5 // Unused Var
|
||||
#define VAR_DAILY_SLOTS 0x40E6
|
||||
#define VAR_DAILY_WILDS 0x40E7
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#ifndef GUARD_EREADER_SCREEN_H
|
||||
#define GUARD_EREADER_SCREEN_H
|
||||
|
||||
void task_add_00_ereader(void);
|
||||
void CreateEReaderTask(void);
|
||||
|
||||
#endif // GUARD_EREADER_SCREEN_H
|
||||
|
||||
@@ -13,8 +13,8 @@ bool32 IsMysteryEventEnabled(void);
|
||||
void DisableMysteryGift(void);
|
||||
void EnableMysteryGift(void);
|
||||
bool32 IsMysteryGiftEnabled(void);
|
||||
void ClearMysteryEventFlags(void);
|
||||
void ClearMysteryEventVars(void);
|
||||
void ClearMysteryGiftFlags(void);
|
||||
void ClearMysteryGiftVars(void);
|
||||
void DisableResetRTC(void);
|
||||
void EnableResetRTC(void);
|
||||
bool32 CanResetRTC(void);
|
||||
|
||||
104
include/global.h
104
include/global.h
@@ -836,74 +836,59 @@ struct SaveTrainerHill
|
||||
/*0x3D6E*/ u16 tag:2;
|
||||
};
|
||||
|
||||
struct MysteryEventStruct
|
||||
struct WonderNewsMetadata
|
||||
{
|
||||
u8 unk_0_0:2;
|
||||
u8 unk_0_2:3;
|
||||
u8 unk_0_5:3;
|
||||
u8 unk_1;
|
||||
u8 newsType:2;
|
||||
u8 sentCounter:3;
|
||||
u8 getCounter:3;
|
||||
u8 rand;
|
||||
};
|
||||
|
||||
struct WonderNews
|
||||
struct WonderNews
|
||||
{
|
||||
u16 unk_00;
|
||||
u8 unk_02;
|
||||
u8 unk_03;
|
||||
u8 unk_04[40];
|
||||
u8 unk_2C[10][40];
|
||||
u16 id;
|
||||
u8 sendType; // SEND_TYPE_*
|
||||
u8 bgType;
|
||||
u8 titleText[WONDER_NEWS_TEXT_LENGTH];
|
||||
u8 bodyText[WONDER_NEWS_BODY_TEXT_LINES][WONDER_NEWS_TEXT_LENGTH];
|
||||
};
|
||||
|
||||
struct WonderNewsSaveStruct
|
||||
struct WonderCard
|
||||
{
|
||||
u32 crc;
|
||||
struct WonderNews data;
|
||||
u16 flagId; // Event flag (sReceivedGiftFlags) + WONDER_CARD_FLAG_OFFSET
|
||||
u16 iconSpecies;
|
||||
u32 idNumber;
|
||||
u8 type:2; // CARD_TYPE_*
|
||||
u8 bgType:4;
|
||||
u8 sendType:2; // SEND_TYPE_*
|
||||
u8 maxStamps;
|
||||
u8 titleText[WONDER_CARD_TEXT_LENGTH];
|
||||
u8 subtitleText[WONDER_CARD_TEXT_LENGTH];
|
||||
u8 bodyText[WONDER_CARD_BODY_TEXT_LINES][WONDER_CARD_TEXT_LENGTH];
|
||||
u8 footerLine1Text[WONDER_CARD_TEXT_LENGTH];
|
||||
u8 footerLine2Text[WONDER_CARD_TEXT_LENGTH];
|
||||
};
|
||||
|
||||
struct WonderCard
|
||||
struct WonderCardMetadata
|
||||
{
|
||||
u16 unk_00;
|
||||
u16 unk_02;
|
||||
u32 unk_04;
|
||||
u8 unk_08_0:2;
|
||||
u8 unk_08_2:4;
|
||||
u8 unk_08_6:2;
|
||||
u8 unk_09;
|
||||
u8 unk_0A[40];
|
||||
u8 unk_32[40];
|
||||
u8 unk_5A[4][40];
|
||||
u8 unk_FA[40];
|
||||
u8 unk_122[40];
|
||||
u16 battlesWon;
|
||||
u16 battlesLost;
|
||||
u16 numTrades;
|
||||
u16 iconSpecies;
|
||||
u16 stampData[2][MAX_STAMP_CARD_STAMPS]; // First element is STAMP_SPECIES, second is STAMP_ID
|
||||
};
|
||||
|
||||
struct WonderCardSaveStruct
|
||||
struct MysteryGiftSave
|
||||
{
|
||||
u32 crc;
|
||||
struct WonderCard data;
|
||||
};
|
||||
|
||||
struct MEventBuffer_3430_Sub
|
||||
{
|
||||
u16 unk_00;
|
||||
u16 unk_02;
|
||||
u16 unk_04;
|
||||
u16 unk_06;
|
||||
u16 unk_08[2][7];
|
||||
};
|
||||
|
||||
struct MEventBuffer_3430
|
||||
{
|
||||
u32 crc;
|
||||
struct MEventBuffer_3430_Sub data;
|
||||
};
|
||||
|
||||
struct MEventBuffers
|
||||
{
|
||||
/*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 cardMetadataCrc;
|
||||
struct WonderCardMetadata cardMetadata;
|
||||
u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS];
|
||||
struct WonderNewsMetadata newsMetadata;
|
||||
u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades
|
||||
}; // 0x36C 0x3598
|
||||
|
||||
// For external event data storage. The majority of these may have never been used.
|
||||
@@ -980,7 +965,7 @@ struct SaveBlock1
|
||||
/*0x848*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT];
|
||||
/*0x988*/ u8 seen1[DEX_FLAGS_NO];
|
||||
/*0x9BC*/ u16 berryBlenderRecords[3];
|
||||
/*0x9C2*/ u8 field_9C2[6];
|
||||
/*0x9C2*/ u8 unused_9C2[6];
|
||||
/*0x9C8*/ u16 trainerRematchStepCounter;
|
||||
/*0x9CA*/ u8 trainerRematches[MAX_REMATCH_ENTRIES];
|
||||
/*0xA30*/ struct ObjectEvent objectEvents[OBJECT_EVENTS_COUNT];
|
||||
@@ -1000,7 +985,6 @@ struct SaveBlock1
|
||||
/*0x278E*/ u8 decorationPosters[10];
|
||||
/*0x2798*/ u8 decorationDolls[40];
|
||||
/*0x27C0*/ u8 decorationCushions[10];
|
||||
/*0x27CA*/ u8 padding_27CA[2];
|
||||
/*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT];
|
||||
/*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT];
|
||||
/*0x2B90*/ u16 outbreakPokemonSpecies;
|
||||
@@ -1030,8 +1014,8 @@ struct SaveBlock1
|
||||
/*0x31C7*/ struct ExternalEventFlags externalEventFlags;
|
||||
/*0x31DC*/ struct Roamer roamer;
|
||||
/*0x31F8*/ struct EnigmaBerry enigmaBerry;
|
||||
/*0x322C*/ struct MEventBuffers unk_322C;
|
||||
/*0x3598*/ u8 field_3598[0x180];
|
||||
/*0x322C*/ struct MysteryGiftSave mysteryGift;
|
||||
/*0x3598*/ u8 unused_3598[0x180];
|
||||
/*0x3718*/ u32 trainerHillTimes[4];
|
||||
/*0x3728*/ struct RamScript ramScript;
|
||||
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
|
||||
@@ -1039,7 +1023,7 @@ struct SaveBlock1
|
||||
/*0x3B58*/ LilycoveLady lilycoveLady;
|
||||
/*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20];
|
||||
/*0x3C88*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21];
|
||||
/*0x3D5A*/ u8 filler3D5A[0xA];
|
||||
/*0x3D5A*/ u8 unused_3D5A[10];
|
||||
/*0x3D64*/ struct SaveTrainerHill trainerHill;
|
||||
/*0x3D70*/ struct WaldaPhrase waldaPhrase;
|
||||
// sizeof: 0x3D88
|
||||
|
||||
@@ -40,9 +40,10 @@ struct Main
|
||||
/*0x439*/ u8 anyLinkBattlerHasFrontierPass:1;
|
||||
};
|
||||
|
||||
#define GAME_CODE_LENGTH 4
|
||||
extern const u8 gGameVersion;
|
||||
extern const u8 gGameLanguage;
|
||||
extern const u8 RomHeaderGameCode[4];
|
||||
extern const u8 RomHeaderGameCode[GAME_CODE_LENGTH];
|
||||
extern const u8 RomHeaderSoftwareVersion;
|
||||
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_H
|
||||
#define GUARD_MEVENT_H
|
||||
|
||||
struct MEvent_Str_1
|
||||
{
|
||||
u16 unk_000;
|
||||
size_t unk_004;
|
||||
const void * unk_008;
|
||||
};
|
||||
|
||||
struct MEvent_Str_2
|
||||
{
|
||||
u8 fill_00[0x40];
|
||||
};
|
||||
|
||||
struct MEventStruct_Unk1442CC
|
||||
{
|
||||
u32 unk_00;
|
||||
u16 unk_04;
|
||||
u32 unk_08;
|
||||
u16 unk_0C;
|
||||
u32 unk_10;
|
||||
u16 unk_14;
|
||||
u16 unk_16[NUM_QUESTIONNAIRE_WORDS];
|
||||
struct MEventBuffer_3430_Sub unk_20;
|
||||
u8 unk_44;
|
||||
u8 unk_45[7];
|
||||
u8 unk_4C[4];
|
||||
u16 unk_50[6];
|
||||
u8 unk_5C[4];
|
||||
u8 unk_60;
|
||||
};
|
||||
|
||||
void sub_801AFD8(void);
|
||||
struct WonderNews *GetSavedWonderNews(void);
|
||||
struct WonderCard *GetSavedWonderCard(void);
|
||||
struct MEventBuffer_3430_Sub *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);
|
||||
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);
|
||||
bool32 WonderCard_Test_Unk_08_6(void);
|
||||
u16 GetWonderCardFlagID(void);
|
||||
void WonderCard_ResetInternalReceivedFlag(struct WonderCard *buffer);
|
||||
bool32 CheckReceivedGiftFromWonderCard(void);
|
||||
bool32 sub_801B508(const u16 *data);
|
||||
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);
|
||||
u16 MEventStruct_Unk1442CC_GetValueNFrom_unk_20(const struct MEventStruct_Unk1442CC *a0, u32 command);
|
||||
u16 mevent_081445C0(u32 command);
|
||||
void ResetReceivedWonderCardFlag(void);
|
||||
bool32 MEventHandleReceivedWonderCard(u16 a0);
|
||||
|
||||
#endif //GUARD_MEVENT_H
|
||||
@@ -1,6 +0,0 @@
|
||||
#ifndef GUARD_MEVENT2_H
|
||||
#define GUARD_MEVENT2_H
|
||||
|
||||
void RecordIdOfWonderCardSenderByEventType(u32, u32);
|
||||
|
||||
#endif //GUARD_MEVENT2_H
|
||||
@@ -1,16 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_801BAAC_H
|
||||
#define GUARD_MEVENT_801BAAC_H
|
||||
|
||||
bool32 InitWonderCardResources(struct WonderCard * r5, struct MEventBuffer_3430_Sub * r6);
|
||||
bool32 InitWonderNewsResources(const struct WonderNews * a0);
|
||||
s32 FadeToWonderCardMenu(void);
|
||||
s32 FadeToWonderNewsMenu(void);
|
||||
s32 FadeOutFromWonderCard(bool32 flag);
|
||||
void DestroyWonderCardResources(void);
|
||||
s32 FadeOutFromWonderNews(bool32 flag);
|
||||
void DestroyWonderNewsResources(void);
|
||||
u32 MENews_GetInput(u16 input);
|
||||
void MENews_AddScrollIndicatorArrowPair(void);
|
||||
void MENews_RemoveScrollIndicatorArrowPair(void);
|
||||
|
||||
#endif //GUARD_MEVENT_801BAAC_H
|
||||
@@ -1,33 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_CLIENT_H
|
||||
#define GUARD_MEVENT_CLIENT_H
|
||||
|
||||
#include "mevent_server_helpers.h"
|
||||
|
||||
struct mevent_client_cmd
|
||||
{
|
||||
u32 instr;
|
||||
u32 parameter;
|
||||
};
|
||||
|
||||
struct mevent_client
|
||||
{
|
||||
u32 unk_00;
|
||||
u32 param;
|
||||
u32 mainseqno;
|
||||
u32 flag;
|
||||
u32 cmdidx;
|
||||
void * sendBuffer;
|
||||
void * recvBuffer;
|
||||
struct mevent_client_cmd * cmdBuffer;
|
||||
void * buffer;
|
||||
struct mevent_srv_sub manager;
|
||||
u32 unk_4C;
|
||||
};
|
||||
|
||||
void mevent_client_do_init(u32 arg);
|
||||
u32 mevent_client_do_exec(u16 * a0);
|
||||
void mevent_client_inc_flag(void);
|
||||
void * mevent_client_get_buffer(void);
|
||||
void mevent_client_set_param(u32 a0);
|
||||
|
||||
#endif //GUARD_MEVENT_CLIENT_H
|
||||
@@ -1,7 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_NEWS_H
|
||||
#define GUARD_MEVENT_NEWS_H
|
||||
|
||||
void sub_801DBC0(void);
|
||||
void GenerateRandomNews(u32 a0);
|
||||
|
||||
#endif //GUARD_MEVENT_NEWS_H
|
||||
@@ -1,36 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_SERVER_H
|
||||
#define GUARD_MEVENT_SERVER_H
|
||||
|
||||
#include "mevent_server_helpers.h"
|
||||
|
||||
struct mevent_cmd
|
||||
{
|
||||
u32 instr;
|
||||
bool32 flag;
|
||||
const void * parameter;
|
||||
};
|
||||
|
||||
struct mevent_srv_common
|
||||
{
|
||||
u32 unk_00;
|
||||
u32 param;
|
||||
u32 mainseqno;
|
||||
u32 cmdidx;
|
||||
const struct mevent_cmd * cmdBuffer;
|
||||
void * recvBuffer;
|
||||
struct WonderCard * wonder_card;
|
||||
struct WonderNews * wonder_news;
|
||||
struct MEventStruct_Unk1442CC * mevent_unk1442cc;
|
||||
const void * sendBuffer1;
|
||||
u32 sendBuffer1Size;
|
||||
const void * sendBuffer2;
|
||||
u32 sendBuffer2Size;
|
||||
u32 sendWord;
|
||||
struct mevent_srv_sub manager;
|
||||
};
|
||||
|
||||
void mevent_srv_new_wcard();
|
||||
void mevent_srv_init_wnews();
|
||||
u32 mevent_srv_common_do_exec(u16 * a0);
|
||||
|
||||
#endif //GUARD_MEVENT_SERVER_H
|
||||
@@ -1,38 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_SERVER_HELPERS_H
|
||||
#define GUARD_MEVENT_SERVER_HELPERS_H
|
||||
|
||||
#define ME_SEND_BUF_SIZE 0x400
|
||||
|
||||
struct mevent_srv_sub
|
||||
{
|
||||
s32 seqno;
|
||||
u8 sendPlayerNo;
|
||||
u8 recvPlayerNo;
|
||||
u16 recvIdent;
|
||||
u16 recvCounter;
|
||||
u16 recvCRC;
|
||||
u16 recvSize;
|
||||
u16 sendIdent;
|
||||
u16 sendCounter;
|
||||
u16 sendCRC;
|
||||
u16 sendSize;
|
||||
void * recvBfr;
|
||||
const void * sendBfr;
|
||||
u32 (*recvFunc)(struct mevent_srv_sub *);
|
||||
u32 (*sendFunc)(struct mevent_srv_sub *);
|
||||
};
|
||||
|
||||
struct send_recv_header
|
||||
{
|
||||
u16 ident;
|
||||
u16 crc;
|
||||
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 *);
|
||||
|
||||
#endif //GUARD_MEVENT_SERVER_HELPERS_H
|
||||
@@ -1,16 +1,16 @@
|
||||
#ifndef GUARD_MYSTERY_EVENT_MSG_H
|
||||
#define GUARD_MYSTERY_EVENT_MSG_H
|
||||
|
||||
extern const u8 gText_MysteryGiftBerry[];
|
||||
extern const u8 gText_MysteryGiftBerryTransform[];
|
||||
extern const u8 gText_MysteryGiftBerryObtained[];
|
||||
extern const u8 gText_MysteryGiftSpecialRibbon[];
|
||||
extern const u8 gText_MysteryGiftNationalDex[];
|
||||
extern const u8 gText_MysteryGiftRareWord[];
|
||||
extern const u8 gText_MysteryGiftSentOver[];
|
||||
extern const u8 gText_MysteryGiftFullParty[];
|
||||
extern const u8 gText_MysteryGiftNewTrainer[];
|
||||
extern const u8 gText_MysteryGiftNewAdversaryInBattleTower[];
|
||||
extern const u8 gText_MysteryGiftCantBeUsed[];
|
||||
extern const u8 gText_MysteryEventBerry[];
|
||||
extern const u8 gText_MysteryEventBerryTransform[];
|
||||
extern const u8 gText_MysteryEventBerryObtained[];
|
||||
extern const u8 gText_MysteryEventSpecialRibbon[];
|
||||
extern const u8 gText_MysteryEventNationalDex[];
|
||||
extern const u8 gText_MysteryEventRareWord[];
|
||||
extern const u8 gText_MysteryEventSentOver[];
|
||||
extern const u8 gText_MysteryEventFullParty[];
|
||||
extern const u8 gText_MysteryEventNewTrainer[];
|
||||
extern const u8 gText_MysteryEventNewAdversaryInBattleTower[];
|
||||
extern const u8 gText_MysteryEventCantBeUsed[];
|
||||
|
||||
#endif // GUARD_MYSTERY_EVENT_MSG_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 InitMysteryEventScriptContext(u8 *script);
|
||||
bool32 RunMysteryEventScriptContextCommand(u32 *script);
|
||||
u32 RunMysteryEventScript(u8 *script);
|
||||
void SetMysteryEventScriptStatus(u32 val);
|
||||
u16 GetRecordMixingGift(void);
|
||||
|
||||
63
include/mystery_gift.h
Normal file → Executable file
63
include/mystery_gift.h
Normal file → Executable file
@@ -1,18 +1,57 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_H
|
||||
#define GUARD_MYSTERY_GIFT_H
|
||||
|
||||
extern bool8 gGiftIsFromEReader;
|
||||
#include "main.h"
|
||||
#include "constants/mystery_gift.h"
|
||||
|
||||
u16 GetMysteryGiftBaseBlock(void);
|
||||
void c2_mystery_gift_e_reader_run(void);
|
||||
void PrintMysteryGiftOrEReaderTopMenu(bool8 isJapanese, bool32 usePickOkCancel);
|
||||
void MG_DrawCheckerboardPattern(u32 bg);
|
||||
void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
|
||||
bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str);
|
||||
void AddTextPrinterToWindow1(const u8 *src);
|
||||
void c2_ereader(void);
|
||||
void c2_mystery_gift(void);
|
||||
void MG_DrawTextBorder(u8 windowId);
|
||||
s8 mevent_message_print_and_prompt_yes_no(u8 *textState, u16 *windowId, bool8 yesNoBoxPlacement, const u8 *str);
|
||||
struct MysteryGiftLinkGameData
|
||||
{
|
||||
// It's possible these first 5 fields had some other meaningful purpose,
|
||||
// but they are only ever set when creating this data and read to validate it.
|
||||
u32 validationVar;
|
||||
u16 validationFlag1;
|
||||
u32 validationFlag2;
|
||||
u16 validationGiftType1;
|
||||
u32 validationGiftType2;
|
||||
u16 flagId;
|
||||
u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS];
|
||||
struct WonderCardMetadata cardMetadata;
|
||||
u8 maxStamps;
|
||||
u8 playerName[PLAYER_NAME_LENGTH];
|
||||
u8 playerTrainerId[TRAINER_ID_LENGTH];
|
||||
u16 easyChatProfile[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
u8 romHeaderGameCode[GAME_CODE_LENGTH];
|
||||
u8 romHeaderSoftwareVersion;
|
||||
};
|
||||
|
||||
void ClearMysteryGift(void);
|
||||
struct WonderNews *GetSavedWonderNews(void);
|
||||
struct WonderCard *GetSavedWonderCard(void);
|
||||
struct WonderCardMetadata *GetSavedWonderCardMetadata(void);
|
||||
struct WonderNewsMetadata *GetSavedWonderNewsMetadata(void);
|
||||
u16 *GetQuestionnaireWordsPtr(void);
|
||||
void ClearSavedWonderNewsAndRelated(void);
|
||||
void ClearSavedWonderCardAndRelated(void);
|
||||
bool32 SaveWonderNews(const struct WonderNews *news);
|
||||
bool32 SaveWonderCard(const struct WonderCard *card);
|
||||
bool32 ValidateSavedWonderNews(void);
|
||||
bool32 ValidateSavedWonderCard(void);
|
||||
bool32 IsWonderNewsSameAsSaved(const u8 *news);
|
||||
bool32 IsSendingSavedWonderNewsAllowed(void);
|
||||
bool32 IsSendingSavedWonderCardAllowed(void);
|
||||
u16 GetWonderCardFlagID(void);
|
||||
void DisableWonderCardSending(struct WonderCard *card);
|
||||
bool32 IsSavedWonderCardGiftNotReceived(void);
|
||||
bool32 MysteryGift_TrySaveStamp(const u16 *stamp);
|
||||
void MysteryGift_LoadLinkGameData(struct MysteryGiftLinkGameData *data, bool32 isWonderNews);
|
||||
bool32 MysteryGift_ValidateLinkGameData(const struct MysteryGiftLinkGameData *data, bool32 isWonderNews);
|
||||
u32 MysteryGift_CompareCardFlags(const u16 *flagId, const struct MysteryGiftLinkGameData *data, const void *unused);
|
||||
u32 MysteryGift_CheckStamps(const u16 *stamp, const struct MysteryGiftLinkGameData *data, const void *unused);
|
||||
bool32 MysteryGift_DoesQuestionnaireMatch(const struct MysteryGiftLinkGameData *data, const u16 *words);
|
||||
u16 MysteryGift_GetCardStatFromLinkData(const struct MysteryGiftLinkGameData *data, u32 stat);
|
||||
u16 MysteryGift_GetCardStat(u32 stat);
|
||||
void MysteryGift_DisableStats(void);
|
||||
bool32 MysteryGift_TryEnableStatsByFlagId(u16 flagId);
|
||||
void MysteryGift_TryIncrementStat(u32 stat, u32 trainerId);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_H
|
||||
|
||||
92
include/mystery_gift_client.h
Normal file
92
include/mystery_gift_client.h
Normal file
@@ -0,0 +1,92 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_CLIENT_H
|
||||
#define GUARD_MYSTERY_GIFT_CLIENT_H
|
||||
|
||||
#include "mystery_gift_link.h"
|
||||
|
||||
// Return values for client functions called by MysteryGiftClient_Run
|
||||
enum {
|
||||
CLI_RET_INIT,
|
||||
CLI_RET_ACTIVE,
|
||||
CLI_RET_YES_NO,
|
||||
CLI_RET_PRINT_MSG,
|
||||
CLI_RET_ASK_TOSS,
|
||||
CLI_RET_COPY_MSG,
|
||||
CLI_RET_END,
|
||||
};
|
||||
|
||||
// IDs for client script instructions
|
||||
enum {
|
||||
CLI_NONE,
|
||||
CLI_RETURN,
|
||||
CLI_RECV,
|
||||
CLI_SEND_LOADED,
|
||||
CLI_COPY_RECV,
|
||||
CLI_YES_NO,
|
||||
CLI_COPY_RECV_IF_N,
|
||||
CLI_COPY_RECV_IF,
|
||||
CLI_LOAD_GAME_DATA,
|
||||
CLI_SAVE_NEWS,
|
||||
CLI_SAVE_CARD,
|
||||
CLI_PRINT_MSG,
|
||||
CLI_COPY_MSG,
|
||||
CLI_ASK_TOSS,
|
||||
CLI_LOAD_TOSS_RESPONSE,
|
||||
CLI_RUN_MEVENT_SCRIPT,
|
||||
CLI_SAVE_STAMP,
|
||||
CLI_SAVE_RAM_SCRIPT,
|
||||
CLI_RECV_EREADER_TRAINER,
|
||||
CLI_SEND_STAT,
|
||||
CLI_SEND_READY_END,
|
||||
CLI_RUN_BUFFER_SCRIPT,
|
||||
};
|
||||
|
||||
// IDs for client messages when ending a script.
|
||||
// Given as the parameter to CLI_RETURN, and resolved to text in GetClientResultMessage
|
||||
enum {
|
||||
CLI_MSG_NOTHING_SENT,
|
||||
CLI_MSG_RECORD_UPLOADED,
|
||||
CLI_MSG_CARD_RECEIVED,
|
||||
CLI_MSG_NEWS_RECEIVED,
|
||||
CLI_MSG_STAMP_RECEIVED,
|
||||
CLI_MSG_HAD_CARD,
|
||||
CLI_MSG_HAD_STAMP,
|
||||
CLI_MSG_HAD_NEWS,
|
||||
CLI_MSG_NO_ROOM_STAMPS,
|
||||
CLI_MSG_COMM_CANCELED,
|
||||
CLI_MSG_CANT_ACCEPT,
|
||||
CLI_MSG_COMM_ERROR,
|
||||
CLI_MSG_TRAINER_RECEIVED,
|
||||
CLI_MSG_BUFFER_SUCCESS,
|
||||
CLI_MSG_BUFFER_FAILURE,
|
||||
};
|
||||
|
||||
#define CLIENT_MAX_MSG_SIZE 64
|
||||
|
||||
struct MysteryGiftClientCmd
|
||||
{
|
||||
u32 instr;
|
||||
u32 parameter;
|
||||
};
|
||||
|
||||
struct MysteryGiftClient
|
||||
{
|
||||
u32 unused;
|
||||
u32 param;
|
||||
u32 funcId;
|
||||
u32 funcState;
|
||||
u32 cmdidx;
|
||||
void * sendBuffer;
|
||||
void * recvBuffer;
|
||||
struct MysteryGiftClientCmd * script;
|
||||
void * msg;
|
||||
struct MysteryGiftLink link;
|
||||
bool32 isWonderNews;
|
||||
};
|
||||
|
||||
void MysteryGiftClient_Create(bool32 isWonderNews);
|
||||
u32 MysteryGiftClient_Run(u16 * endVal);
|
||||
void MysteryGiftClient_AdvanceState(void);
|
||||
void * MysteryGiftClient_GetMsg(void);
|
||||
void MysteryGiftClient_SetParam(u32 value);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_CLIENT_H
|
||||
49
include/mystery_gift_link.h
Normal file
49
include/mystery_gift_link.h
Normal file
@@ -0,0 +1,49 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_LINK_H
|
||||
#define GUARD_MYSTERY_GIFT_LINK_H
|
||||
|
||||
#define MG_LINK_BUFFER_SIZE 0x400
|
||||
|
||||
// Send/receive ids for the Client/Server to make sure
|
||||
// they're sending/receiving the same thing
|
||||
enum {
|
||||
MG_LINKID_CLIENT_SCRIPT = 16,
|
||||
MG_LINKID_GAME_DATA,
|
||||
MG_LINKID_GAME_STAT,
|
||||
MG_LINKID_RESPONSE,
|
||||
MG_LINKID_READY_END,
|
||||
MG_LINKID_DYNAMIC_MSG,
|
||||
MG_LINKID_CARD,
|
||||
MG_LINKID_NEWS,
|
||||
MG_LINKID_STAMP,
|
||||
MG_LINKID_RAM_SCRIPT,
|
||||
MG_LINKID_EREADER_TRAINER,
|
||||
MG_LINKID_UNK_1,
|
||||
MG_LINKID_UNK_2,
|
||||
};
|
||||
|
||||
struct MysteryGiftLink
|
||||
{
|
||||
s32 state;
|
||||
u8 sendPlayerId;
|
||||
u8 recvPlayerId;
|
||||
u16 recvIdent;
|
||||
u16 recvCounter;
|
||||
u16 recvCRC;
|
||||
u16 recvSize;
|
||||
u16 sendIdent;
|
||||
u16 sendCounter;
|
||||
u16 sendCRC;
|
||||
u16 sendSize;
|
||||
void * recvBuffer;
|
||||
const void * sendBuffer;
|
||||
u32 (*recvFunc)(struct MysteryGiftLink *);
|
||||
u32 (*sendFunc)(struct MysteryGiftLink *);
|
||||
};
|
||||
|
||||
void MysteryGiftLink_Init(struct MysteryGiftLink * link, u32 sendPlayerId, u32 recvPlayerId);
|
||||
void MysteryGiftLink_InitSend(struct MysteryGiftLink * link, u32 ident, const void * src, u32 size);
|
||||
bool32 MysteryGiftLink_Recv(struct MysteryGiftLink * link);
|
||||
bool32 MysteryGiftLink_Send(struct MysteryGiftLink * link);
|
||||
void MysteryGiftLink_InitRecv(struct MysteryGiftLink * link, u32 ident, void * dest);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_LINK_H
|
||||
18
include/mystery_gift_menu.h
Normal file
18
include/mystery_gift_menu.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_MENU_H
|
||||
#define GUARD_MYSTERY_GIFT_MENU_H
|
||||
|
||||
extern bool8 gGiftIsFromEReader;
|
||||
|
||||
u16 GetMysteryGiftBaseBlock(void);
|
||||
void CB2_MysteryGiftEReader(void);
|
||||
void PrintMysteryGiftOrEReaderTopMenu(bool8 isJapanese, bool32 usePickOkCancel);
|
||||
void MG_DrawCheckerboardPattern(u32 bg);
|
||||
void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
|
||||
bool32 PrintMysteryGiftMenuMessage(u8 *textState, const u8 *str);
|
||||
void AddTextPrinterToWindow1(const u8 *src);
|
||||
void CB2_InitEReader(void);
|
||||
void CB2_InitMysteryGift(void);
|
||||
void MG_DrawTextBorder(u8 windowId);
|
||||
s8 DoMysteryGiftYesNo(u8 *textState, u16 *windowId, bool8 yesNoBoxPlacement, const u8 *str);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_MENU_H
|
||||
100
include/mystery_gift_server.h
Normal file
100
include/mystery_gift_server.h
Normal file
@@ -0,0 +1,100 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_SERVER_H
|
||||
#define GUARD_MYSTERY_GIFT_SERVER_H
|
||||
|
||||
#include "mystery_gift_link.h"
|
||||
|
||||
// Return values for Server_* functions.
|
||||
// Other than SVR_RET_END, effectively useless (not checked for).
|
||||
enum {
|
||||
SVR_RET_INIT,
|
||||
SVR_RET_ACTIVE,
|
||||
SVR_RET_UNUSED,
|
||||
SVR_RET_END
|
||||
};
|
||||
|
||||
// IDs for server script instructions
|
||||
enum {
|
||||
SVR_RETURN,
|
||||
SVR_SEND,
|
||||
SVR_RECV,
|
||||
SVR_GOTO,
|
||||
SVR_GOTO_IF_EQ,
|
||||
SVR_COPY_GAME_DATA,
|
||||
SVR_CHECK_GAME_DATA_CARD,
|
||||
SVR_CHECK_EXISTING_CARD,
|
||||
SVR_READ_RESPONSE,
|
||||
SVR_CHECK_EXISTING_STAMPS,
|
||||
SVR_GET_CARD_STAT,
|
||||
SVR_CHECK_QUESTIONNAIRE,
|
||||
SVR_COMPARE,
|
||||
SVR_LOAD_CARD,
|
||||
SVR_LOAD_NEWS,
|
||||
SVR_LOAD_RAM_SCRIPT,
|
||||
SVR_LOAD_STAMP,
|
||||
SVR_LOAD_UNK_2,
|
||||
SVR_LOAD_CLIENT_SCRIPT,
|
||||
SVR_LOAD_EREADER_TRAINER,
|
||||
SVR_LOAD_MSG,
|
||||
SVR_COPY_STAMP,
|
||||
SVR_COPY_CARD,
|
||||
SVR_COPY_NEWS,
|
||||
SVR_SET_RAM_SCRIPT,
|
||||
SVR_SET_CLIENT_SCRIPT,
|
||||
SVR_COPY_SAVED_CARD,
|
||||
SVR_COPY_SAVED_NEWS,
|
||||
SVR_COPY_SAVED_RAM_SCRIPT,
|
||||
SVR_LOAD_UNK_1,
|
||||
SVR_CHECK_GAME_DATA_NEWS,
|
||||
};
|
||||
|
||||
// IDs for server messages when ending a script.
|
||||
// Given as the parameter to SVR_RETURN, and resolved to text in GetServerResultMessage
|
||||
enum {
|
||||
SVR_MSG_NOTHING_SENT,
|
||||
SVR_MSG_RECORD_UPLOADED,
|
||||
SVR_MSG_CARD_SENT,
|
||||
SVR_MSG_NEWS_SENT,
|
||||
SVR_MSG_STAMP_SENT,
|
||||
SVR_MSG_HAS_CARD,
|
||||
SVR_MSG_HAS_STAMP,
|
||||
SVR_MSG_HAS_NEWS,
|
||||
SVR_MSG_NO_ROOM_STAMPS,
|
||||
SVR_MSG_CLIENT_CANCELED,
|
||||
SVR_MSG_CANT_SEND_GIFT_1,
|
||||
SVR_MSG_COMM_ERROR,
|
||||
SVR_MSG_GIFT_SENT_1,
|
||||
SVR_MSG_GIFT_SENT_2,
|
||||
SVR_MSG_CANT_SEND_GIFT_2,
|
||||
};
|
||||
|
||||
struct MysteryGiftServerCmd
|
||||
{
|
||||
u32 instr;
|
||||
u32 parameter;
|
||||
const void * ptr;
|
||||
};
|
||||
|
||||
struct MysteryGiftServer
|
||||
{
|
||||
u32 unused;
|
||||
u32 param;
|
||||
u32 funcId;
|
||||
u32 cmdidx;
|
||||
const struct MysteryGiftServerCmd * script;
|
||||
void * recvBuffer;
|
||||
struct WonderCard * card;
|
||||
struct WonderNews * news;
|
||||
struct MysteryGiftLinkGameData * linkGameData;
|
||||
const void * ramScript;
|
||||
u32 ramScriptSize;
|
||||
const void * clientScript;
|
||||
u32 clientScriptSize;
|
||||
u32 stamp;
|
||||
struct MysteryGiftLink link;
|
||||
};
|
||||
|
||||
void MysterGiftServer_CreateForCard();
|
||||
void MysterGiftServer_CreateForNews();
|
||||
u32 MysterGiftServer_Run(u16 * endVal);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_SERVER_H
|
||||
24
include/mystery_gift_view.h
Normal file
24
include/mystery_gift_view.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_VIEW_H
|
||||
#define GUARD_MYSTERY_GIFT_VIEW_H
|
||||
|
||||
enum {
|
||||
NEWS_INPUT_A,
|
||||
NEWS_INPUT_B,
|
||||
NEWS_INPUT_SCROLL_UP,
|
||||
NEWS_INPUT_SCROLL_DOWN,
|
||||
NEWS_INPUT_NONE = 0xFF
|
||||
};
|
||||
|
||||
bool32 WonderCard_Init(struct WonderCard * card, struct WonderCardMetadata * metadata);
|
||||
bool32 WonderNews_Init(const struct WonderNews * news);
|
||||
s32 WonderCard_Enter(void);
|
||||
s32 WonderNews_Enter(void);
|
||||
s32 WonderCard_Exit(bool32 flag);
|
||||
s32 WonderNews_Exit(bool32 flag);
|
||||
void WonderCard_Destroy(void);
|
||||
void WonderNews_Destroy(void);
|
||||
u32 WonderNews_GetInput(u16 input);
|
||||
void WonderNews_AddScrollIndicatorArrowPair(void);
|
||||
void WonderNews_RemoveScrollIndicatorArrowPair(void);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_VIEW_H
|
||||
@@ -44,8 +44,11 @@ struct TrainerCard
|
||||
/*0x28*/ u16 easyChatProfile[TRAINER_CARD_PROFILE_LENGTH];
|
||||
/*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x38*/ u8 version;
|
||||
/*0x3A*/ bool16 hasAllFrontierSymbols;
|
||||
/*0x3C*/ u32 berryCrushPoints;
|
||||
/*0x3A*/ bool16 linkHasAllFrontierSymbols;
|
||||
/*0x3C*/ union {
|
||||
u32 berryCrush;
|
||||
u32 frontier;
|
||||
} linkPoints; // This field is used differently by FRLG vs Emerald
|
||||
/*0x40*/ u32 unionRoomNum;
|
||||
/*0x44*/ u8 filler[8];
|
||||
/*0x4C*/ bool8 shouldDrawStickers; // FRLG only
|
||||
@@ -54,7 +57,9 @@ struct TrainerCard
|
||||
/*0x4F*/ u8 facilityClass;
|
||||
/*0x50*/ u8 stickers[TRAINER_CARD_STICKER_TYPES]; // FRLG only
|
||||
/*0x54*/ u16 monSpecies[PARTY_SIZE]; // FRLG only
|
||||
/*0x60*/ bool16 hasAllSymbols;
|
||||
// Note: Link players use linkHasAllFrontierSymbols, not the field below,
|
||||
// which they use for a Wonder Card flag id instead (see CreateTrainerCardInBuffer)
|
||||
/*0x60*/ bool16 hasAllFrontierSymbols;
|
||||
/*0x62*/ u16 frontierBP;
|
||||
};
|
||||
|
||||
@@ -62,9 +67,9 @@ extern struct TrainerCard gTrainerCards[4];
|
||||
|
||||
u32 CountPlayerTrainerStars(void);
|
||||
u8 GetTrainerCardStars(u8 cardId);
|
||||
void CopyTrainerCardData(struct TrainerCard *dst, u16 *src, u8 gameVersion);
|
||||
void CopyTrainerCardData(struct TrainerCard *dst, struct TrainerCard *src, u8 gameVersion);
|
||||
void ShowPlayerTrainerCard(void (*callback)(void));
|
||||
void ShowTrainerCardInLink(u8 arg0, void (*callback)(void));
|
||||
void TrainerCard_GenerateCardForPlayer(struct TrainerCard *);
|
||||
void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *);
|
||||
|
||||
#endif // GUARD_TRAINER_CARD_H
|
||||
|
||||
@@ -153,9 +153,9 @@ extern u8 gUnionRoomRequestedMonType;
|
||||
|
||||
u8 CreateTask_CreateTradeMenu(void);
|
||||
void SetUsingUnionRoomStartMenu(void);
|
||||
void MEvent_CreateTask_CardOrNewsWithFriend(u32 activity);
|
||||
void MEvent_CreateTask_CardOrNewsOverWireless(u32 activity);
|
||||
void MEvent_CreateTask_Leader(u32 activity);
|
||||
void CreateTask_LinkMysteryGiftWithFriend(u32 activity);
|
||||
void CreateTask_LinkMysteryGiftOverWireless(u32 activity);
|
||||
void CreateTask_SendMysteryGift(u32 activity);
|
||||
u8 CreateTask_ListenToWireless(void);
|
||||
void StartUnionRoomBattle(u16 battleFlags);
|
||||
|
||||
|
||||
15
include/wonder_news.h
Executable file
15
include/wonder_news.h
Executable file
@@ -0,0 +1,15 @@
|
||||
#ifndef GUARD_WONDER_NEWS_H
|
||||
#define GUARD_WONDER_NEWS_H
|
||||
|
||||
enum {
|
||||
WONDER_NEWS_NONE,
|
||||
WONDER_NEWS_RECV_FRIEND,
|
||||
WONDER_NEWS_RECV_WIRELESS,
|
||||
WONDER_NEWS_SENT,
|
||||
};
|
||||
|
||||
|
||||
void InitSavedWonderNews(void);
|
||||
void GenerateRandomWonderNews(u32 newsType);
|
||||
|
||||
#endif //GUARD_WONDER_NEWS_H
|
||||
Reference in New Issue
Block a user