Merge branch 'master' of https://github.com/pret/pokefirered into doc-ql
This commit is contained in:
+9
-4
@@ -88,7 +88,7 @@ struct TrainerMonNoItemCustomMoves
|
||||
u16 iv;
|
||||
u8 lvl;
|
||||
u16 species;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
struct TrainerMonItemCustomMoves
|
||||
@@ -97,9 +97,14 @@ struct TrainerMonItemCustomMoves
|
||||
u8 lvl;
|
||||
u16 species;
|
||||
u16 heldItem;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
#define NO_ITEM_DEFAULT_MOVES(party) { .NoItemDefaultMoves = party }, .partySize = ARRAY_COUNT(party), .partyFlags = 0
|
||||
#define NO_ITEM_CUSTOM_MOVES(party) { .NoItemCustomMoves = party }, .partySize = ARRAY_COUNT(party), .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET
|
||||
#define ITEM_DEFAULT_MOVES(party) { .ItemDefaultMoves = party }, .partySize = ARRAY_COUNT(party), .partyFlags = F_TRAINER_PARTY_HELD_ITEM
|
||||
#define ITEM_CUSTOM_MOVES(party) { .ItemCustomMoves = party }, .partySize = ARRAY_COUNT(party), .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM
|
||||
|
||||
union TrainerMonPtr
|
||||
{
|
||||
const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
|
||||
@@ -115,7 +120,7 @@ struct Trainer
|
||||
/*0x02*/ u8 encounterMusic_gender; // last bit is gender
|
||||
/*0x03*/ u8 trainerPic;
|
||||
/*0x04*/ u8 trainerName[12];
|
||||
/*0x10*/ u16 items[4];
|
||||
/*0x10*/ u16 items[MAX_TRAINER_ITEMS];
|
||||
/*0x18*/ bool8 doubleBattle;
|
||||
/*0x1C*/ u32 aiFlags;
|
||||
/*0x20*/ u8 partySize;
|
||||
@@ -576,7 +581,7 @@ struct BattleBarInfo
|
||||
u8 healthboxSpriteId;
|
||||
s32 maxValue;
|
||||
s32 oldValue;
|
||||
s32 receivedValue;
|
||||
s32 receivedValue; // if positive/negative, fills the bar to the left/right respectively
|
||||
s32 currValue;
|
||||
};
|
||||
|
||||
|
||||
+21
-15
@@ -25,25 +25,31 @@ enum
|
||||
HP_BAR_FULL,
|
||||
};
|
||||
|
||||
#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
|
||||
#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
|
||||
#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
|
||||
#define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702
|
||||
#define TAG_HEALTHBOX_PLAYER1_TILE 55039
|
||||
#define TAG_HEALTHBOX_PLAYER2_TILE 55040
|
||||
#define TAG_HEALTHBOX_OPPONENT1_TILE 55041
|
||||
#define TAG_HEALTHBOX_OPPONENT2_TILE 55042
|
||||
|
||||
#define TAG_HEALTHBAR_PLAYER1_TILE 0xD704
|
||||
#define TAG_HEALTHBAR_OPPONENT1_TILE 0xD705
|
||||
#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706
|
||||
#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707
|
||||
#define TAG_HEALTHBAR_PLAYER1_TILE 55044
|
||||
#define TAG_HEALTHBAR_OPPONENT1_TILE 55045
|
||||
#define TAG_HEALTHBAR_PLAYER2_TILE 55046
|
||||
#define TAG_HEALTHBAR_OPPONENT2_TILE 55047
|
||||
|
||||
#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
|
||||
#define TAG_HEALTHBOX_PALS_1 55049
|
||||
#define TAG_HEALTHBOX_PALS_2 55050
|
||||
#define TAG_HEALTHBOX_SAFARI_TILE 55051
|
||||
#define TAG_PARTY_SUMMARY_BAR_PLAYER_TILE 55052
|
||||
#define TAG_PARTY_SUMMARY_BAR_OPPONENT_TILE 55053
|
||||
|
||||
#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
|
||||
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
|
||||
#define TAG_PARTY_SUMMARY_BAR_PLAYER_PAL 55056
|
||||
#define TAG_PARTY_SUMMARY_BAR_OPPONENT_PAL 55057
|
||||
#define TAG_PARTY_SUMMARY_BALL_PLAYER_PAL 55058
|
||||
#define TAG_PARTY_SUMMARY_BALL_OPPONENT_PAL 55059
|
||||
#define TAG_PARTY_SUMMARY_BALL_PLAYER_TILE 55060
|
||||
#define TAG_PARTY_SUMMARY_BALL_OPPONENT_TILE 55061
|
||||
|
||||
#define TAG_HEALTHBOX_PAL 0xD6FF
|
||||
#define TAG_HEALTHBAR_PAL 0xD704
|
||||
#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
|
||||
#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
|
||||
#define TAG_HEALTHBOX_PAL TAG_HEALTHBOX_PLAYER1_TILE
|
||||
#define TAG_HEALTHBAR_PAL TAG_HEALTHBAR_PLAYER1_TILE
|
||||
|
||||
enum
|
||||
{
|
||||
|
||||
+25
-22
@@ -13,29 +13,32 @@ enum
|
||||
MUGSHOTS_COUNT
|
||||
};
|
||||
|
||||
#define B_TRANSITION_BLUR 0
|
||||
#define B_TRANSITION_DISTORTED_WAVE 1
|
||||
#define B_TRANSITION_HORIZONTAL_CORRUGATE 2
|
||||
#define B_TRANSITION_BIG_POKEBALL 3
|
||||
#define B_TRANSITION_SLIDING_POKEBALLS 4
|
||||
#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
|
||||
#define B_TRANSITION_FULLSCREEN_WAVE 6
|
||||
#define B_TRANSITION_BLACK_WAVE_TO_RIGHT 7
|
||||
#define B_TRANSITION_SLICED_SCREEN 8
|
||||
#define B_TRANSITION_WHITEFADE_IN_STRIPES 9
|
||||
#define B_TRANSITION_GRID_SQUARES 10
|
||||
#define B_TRANSITION_BLACK_DOODLES 11
|
||||
#define B_TRANSITION_LORELEI 12
|
||||
#define B_TRANSITION_BRUNO 13
|
||||
#define B_TRANSITION_AGATHA 14
|
||||
#define B_TRANSITION_LANCE 15
|
||||
#define B_TRANSITION_BLUE 16
|
||||
#define B_TRANSITION_ANTI_CLOCKWISE_SPIRAL 17
|
||||
enum {
|
||||
B_TRANSITION_BLUR,
|
||||
B_TRANSITION_SWIRL,
|
||||
B_TRANSITION_SHUFFLE,
|
||||
B_TRANSITION_BIG_POKEBALL,
|
||||
B_TRANSITION_POKEBALLS_TRAIL,
|
||||
B_TRANSITION_CLOCKWISE_WIPE,
|
||||
B_TRANSITION_RIPPLE,
|
||||
B_TRANSITION_WAVE,
|
||||
B_TRANSITION_SLICE,
|
||||
B_TRANSITION_WHITE_BARS_FADE,
|
||||
B_TRANSITION_GRID_SQUARES,
|
||||
B_TRANSITION_ANGLED_WIPES,
|
||||
B_TRANSITION_LORELEI,
|
||||
B_TRANSITION_BRUNO,
|
||||
B_TRANSITION_AGATHA,
|
||||
B_TRANSITION_LANCE,
|
||||
B_TRANSITION_BLUE,
|
||||
B_TRANSITION_SPIRAL,
|
||||
B_TRANSITION_COUNT
|
||||
};
|
||||
|
||||
extern const struct SpritePalette sSpritePalette_SlidingPokeball;
|
||||
extern const struct SpritePalette gSpritePalette_Pokeball;
|
||||
|
||||
bool8 BT_IsDone(void);
|
||||
void BT_StartOnField(u8 transitionId);
|
||||
bool8 FldEff_Pokeball(void);
|
||||
bool8 IsBattleTransitionDone(void);
|
||||
void BattleTransition_StartOnField(u8 transitionId);
|
||||
bool8 FldEff_PokeballTrail(void);
|
||||
|
||||
#endif // GUARD_BATTLE_TRANSITION_H
|
||||
|
||||
@@ -0,0 +1,282 @@
|
||||
#ifndef GUARD_CHARACTERS_H
|
||||
#define GUARD_CHARACTERS_H
|
||||
|
||||
#define CHAR_SPACE 0x00
|
||||
#define CHAR_A_GRAVE 0x01
|
||||
#define CHAR_A_ACUTE 0x02
|
||||
#define CHAR_A_CIRCUMFLEX 0x03
|
||||
#define CHAR_C_CEDILLA 0x04
|
||||
#define CHAR_E_GRAVE 0x05
|
||||
#define CHAR_E_ACUTE 0x06
|
||||
#define CHAR_E_CIRCUMFLEX 0x07
|
||||
#define CHAR_E_DIAERESIS 0x08
|
||||
#define CHAR_I_GRAVE 0x09
|
||||
//#define CHAR_I_ACUTE 0x0A // Is 0x5A instead
|
||||
#define CHAR_I_CIRCUMFLEX 0x0B
|
||||
#define CHAR_I_DIAERESIS 0x0C
|
||||
#define CHAR_O_GRAVE 0x0D
|
||||
#define CHAR_O_ACUTE 0x0E
|
||||
#define CHAR_O_CIRCUMFLEX 0x0F
|
||||
#define CHAR_OE 0x10
|
||||
#define CHAR_U_GRAVE 0x11
|
||||
#define CHAR_U_ACUTE 0x12
|
||||
#define CHAR_U_CIRCUMFLEX 0x13
|
||||
#define CHAR_N_TILDE 0x14
|
||||
#define CHAR_ESZETT 0x15
|
||||
#define CHAR_a_GRAVE 0x16
|
||||
#define CHAR_a_ACUTE 0x17
|
||||
//#define CHAR_a_CIRCUMFLEX 0x18 // Is 0x68 instead
|
||||
#define CHAR_c_CEDILLA 0x19
|
||||
#define CHAR_e_GRAVE 0x1A
|
||||
#define CHAR_e_ACUTE 0x1B
|
||||
#define CHAR_e_CIRCUMFLEX 0x1C
|
||||
#define CHAR_e_DIAERESIS 0x1D
|
||||
#define CHAR_i_GRAVE 0x1E
|
||||
//#define CHAR_i_ACUTE 0x1F // Is 0x6F instead
|
||||
#define CHAR_i_CIRCUMFLEX 0x20
|
||||
#define CHAR_i_DIAERESIS 0x21
|
||||
#define CHAR_o_GRAVE 0x22
|
||||
#define CHAR_o_ACUTE 0x23
|
||||
#define CHAR_o_CIRCUMFLEX 0x24
|
||||
#define CHAR_oe 0x25
|
||||
#define CHAR_u_GRAVE 0x26
|
||||
#define CHAR_u_ACUTE 0x27
|
||||
#define CHAR_u_CIRCUMFLEX 0x28
|
||||
#define CHAR_n_TILDE 0x29
|
||||
#define CHAR_MASCULINE_ORDINAL 0x2A
|
||||
#define CHAR_FEMININE_ORDINAL 0x2B
|
||||
#define CHAR_SUPER_ER 0x2C
|
||||
#define CHAR_AMPERSAND 0x2D
|
||||
#define CHAR_PLUS 0x2E
|
||||
//
|
||||
#define CHAR_LV 0x34
|
||||
#define CHAR_EQUALS 0x35
|
||||
#define CHAR_SEMICOLON 0x36
|
||||
#define CHAR_BARD_WORD_DELIMIT 0x37 // Empty space to separate words in Bard's song
|
||||
//
|
||||
#define CHAR_EMPTY_RECT 0x50
|
||||
#define CHAR_INV_QUESTION_MARK 0x51
|
||||
#define CHAR_INV_EXCL_MARK 0x52
|
||||
#define CHAR_PK 0x53
|
||||
#define CHAR_MN 0x54
|
||||
#define CHAR_PO 0x55
|
||||
#define CHAR_KE 0x56
|
||||
#define CHAR_BLOCK_1 0x57 // Each of these 3
|
||||
#define CHAR_BLOCK_2 0x58 // chars contains 1/3
|
||||
#define CHAR_BLOCK_3 0x59 // of the word BLOCK
|
||||
#define CHAR_I_ACUTE 0x5A
|
||||
#define CHAR_PERCENT 0x5B
|
||||
#define CHAR_LEFT_PAREN 0x5C
|
||||
#define CHAR_RIGHT_PAREN 0x5D
|
||||
//
|
||||
#define CHAR_a_CIRCUMFLEX 0x68
|
||||
//
|
||||
#define CHAR_i_ACUTE 0x6F
|
||||
//
|
||||
#define CHAR_SPACER 0x77 // Empty space
|
||||
//
|
||||
#define CHAR_UP_ARROW 0x79
|
||||
#define CHAR_DOWN_ARROW 0x7A
|
||||
#define CHAR_LEFT_ARROW 0x7B
|
||||
#define CHAR_RIGHT_ARROW 0x7C
|
||||
//
|
||||
#define CHAR_SUPER_E 0x84
|
||||
#define CHAR_LESS_THAN 0x85
|
||||
#define CHAR_GREATER_THAN 0x86
|
||||
//
|
||||
#define CHAR_SUPER_RE 0xA0
|
||||
#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_BULLET 0xAF
|
||||
#define CHAR_ELLIPSIS 0xB0
|
||||
#define CHAR_DBL_QUOTE_LEFT 0xB1
|
||||
#define CHAR_DBL_QUOTE_RIGHT 0xB2
|
||||
#define CHAR_SGL_QUOTE_LEFT 0xB3
|
||||
#define CHAR_SGL_QUOTE_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_BLACK_TRIANGLE 0xEF
|
||||
#define CHAR_COLON 0xF0
|
||||
#define CHAR_A_DIAERESIS 0xF1
|
||||
#define CHAR_O_DIAERESIS 0xF2
|
||||
#define CHAR_U_DIAERESIS 0xF3
|
||||
#define CHAR_a_DIAERESIS 0xF4
|
||||
#define CHAR_o_DIAERESIS 0xF5
|
||||
#define CHAR_u_DIAERESIS 0xF6
|
||||
#define CHAR_DYNAMIC 0xF7
|
||||
#define CHAR_KEYPAD_ICON 0xF8
|
||||
#define CHAR_EXTRA_SYMBOL 0xF9
|
||||
#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
|
||||
|
||||
// CHAR_KEYPAD_ICON chars
|
||||
#define CHAR_A_BUTTON 0x00
|
||||
#define CHAR_B_BUTTON 0x01
|
||||
#define CHAR_L_BUTTON 0x02
|
||||
#define CHAR_R_BUTTON 0x03
|
||||
#define CHAR_START_BUTTON 0x04
|
||||
#define CHAR_SELECT_BUTTON 0x05
|
||||
#define CHAR_DPAD_UP 0x06
|
||||
#define CHAR_DPAD_DOWN 0x07
|
||||
#define CHAR_DPAD_LEFT 0x08
|
||||
#define CHAR_DPAD_RIGHT 0x09
|
||||
#define CHAR_DPAD_UPDOWN 0x0A
|
||||
#define CHAR_DPAD_LEFTRIGHT 0x0B
|
||||
#define CHAR_DPAD_NONE 0x0C
|
||||
|
||||
// CHAR_EXTRA_SYMBOL chars
|
||||
#define CHAR_UP_ARROW_2 0x00
|
||||
#define CHAR_DOWN_ARROW_2 0x01
|
||||
#define CHAR_LEFT_ARROW_2 0x02
|
||||
#define CHAR_RIGHT_ARROW_2 0x03
|
||||
#define CHAR_PLUS_2 0x04
|
||||
#define CHAR_LV_2 0x05
|
||||
#define CHAR_PP 0x06
|
||||
#define CHAR_ID 0x07
|
||||
#define CHAR_NO 0x08
|
||||
#define CHAR_UNDERSCORE 0x09
|
||||
#define CHAR_CIRCLED_1 0x0A
|
||||
#define CHAR_CIRCLED_2 0x0B
|
||||
#define CHAR_CIRCLED_3 0x0C
|
||||
#define CHAR_CIRCLED_4 0x0D
|
||||
#define CHAR_CIRCLED_5 0x0E
|
||||
#define CHAR_CIRCLED_6 0x0F
|
||||
#define CHAR_CIRCLED_7 0x10
|
||||
#define CHAR_CIRCLED_8 0x11
|
||||
#define CHAR_CIRCLED_9 0x12
|
||||
#define CHAR_LEFT_PAREN_SMALL 0x13
|
||||
#define CHAR_RIGHT_PAREN_SMALL 0x14
|
||||
#define CHAR_BULLSEYE 0x15
|
||||
#define CHAR_TRIANGLE 0x16
|
||||
#define CHAR_CROSS_X 0x17
|
||||
|
||||
#define EXT_CTRL_CODE_COLOR 0x01
|
||||
#define EXT_CTRL_CODE_HIGHLIGHT 0x02
|
||||
#define EXT_CTRL_CODE_SHADOW 0x03
|
||||
#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x04
|
||||
#define EXT_CTRL_CODE_PALETTE 0x05
|
||||
#define EXT_CTRL_CODE_FONT 0x06
|
||||
#define EXT_CTRL_CODE_RESET_FONT 0x07
|
||||
#define EXT_CTRL_CODE_PAUSE 0x08
|
||||
#define EXT_CTRL_CODE_PAUSE_UNTIL_PRESS 0x09
|
||||
#define EXT_CTRL_CODE_WAIT_SE 0x0A
|
||||
#define EXT_CTRL_CODE_PLAY_BGM 0x0B
|
||||
#define EXT_CTRL_CODE_ESCAPE 0x0C
|
||||
#define EXT_CTRL_CODE_SHIFT_RIGHT 0x0D
|
||||
#define EXT_CTRL_CODE_SHIFT_DOWN 0x0E
|
||||
#define EXT_CTRL_CODE_FILL_WINDOW 0x0F
|
||||
#define EXT_CTRL_CODE_PLAY_SE 0x10
|
||||
#define EXT_CTRL_CODE_CLEAR 0x11
|
||||
#define EXT_CTRL_CODE_SKIP 0x12
|
||||
#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 EXT_CTRL_CODE_PAUSE_MUSIC 0x17
|
||||
#define EXT_CTRL_CODE_RESUME_MUSIC 0x18
|
||||
|
||||
#define TEXT_COLOR_TRANSPARENT 0x0
|
||||
#define TEXT_COLOR_WHITE 0x1
|
||||
#define TEXT_COLOR_DARK_GRAY 0x2
|
||||
#define TEXT_COLOR_LIGHT_GRAY 0x3
|
||||
#define TEXT_COLOR_RED 0x4
|
||||
#define TEXT_COLOR_LIGHT_RED 0x5
|
||||
#define TEXT_COLOR_GREEN 0x6
|
||||
#define TEXT_COLOR_LIGHT_GREEN 0x7
|
||||
#define TEXT_COLOR_BLUE 0x8
|
||||
#define TEXT_COLOR_LIGHT_BLUE 0x9
|
||||
#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white
|
||||
#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green
|
||||
#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white
|
||||
#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine
|
||||
#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green
|
||||
#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean
|
||||
|
||||
#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_MAGMA 0x8
|
||||
#define PLACEHOLDER_ID_AQUA 0x9
|
||||
#define PLACEHOLDER_ID_MAXIE 0xA
|
||||
#define PLACEHOLDER_ID_ARCHIE 0xB
|
||||
#define PLACEHOLDER_ID_GROUDON 0xC
|
||||
#define PLACEHOLDER_ID_KYOGRE 0xD
|
||||
|
||||
#endif // GUARD_CHARACTERS_H
|
||||
@@ -189,10 +189,21 @@
|
||||
#define TRACKS_FOOT 1
|
||||
#define TRACKS_BIKE_TIRE 2
|
||||
|
||||
#define OBJ_EVENT_ID_PLAYER 0xFF
|
||||
#define OBJ_EVENT_ID_CAMERA 0x7F
|
||||
|
||||
#define OBJ_KIND_NORMAL 0
|
||||
#define OBJ_KIND_CLONE 255
|
||||
|
||||
// Special object event local ids
|
||||
#define OBJ_EVENT_ID_PLAYER 0xFF
|
||||
#define OBJ_EVENT_ID_CAMERA 0x7F
|
||||
|
||||
// Object event local ids referenced in C files
|
||||
#define LOCALID_UNION_ROOM_PLAYER_4 2
|
||||
#define LOCALID_UNION_ROOM_PLAYER_8 3
|
||||
#define LOCALID_UNION_ROOM_PLAYER_7 4
|
||||
#define LOCALID_UNION_ROOM_PLAYER_6 5
|
||||
#define LOCALID_UNION_ROOM_PLAYER_5 6
|
||||
#define LOCALID_UNION_ROOM_PLAYER_3 7
|
||||
#define LOCALID_UNION_ROOM_PLAYER_2 8
|
||||
#define LOCALID_UNION_ROOM_PLAYER_1 9
|
||||
|
||||
#endif // GUARD_CONSTANTS_EVENT_OBJECTS_H
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
|
||||
#define FLDEFF_PAL_TAG_GENERAL_0 0x1004
|
||||
#define FLDEFF_PAL_TAG_GENERAL_1 0x1005
|
||||
#define FLDEFF_PAL_TAG_POKEBALL_TRAIL 0x1009
|
||||
#define FLDEFF_PAL_TAG_ASH 0x100D
|
||||
#define FLDEFF_PAL_TAG_SMALL_SPARKLE 0x100F
|
||||
|
||||
|
||||
+22
-20
@@ -701,26 +701,28 @@
|
||||
#define FLAG_0x2A4 0x2A4
|
||||
#define FLAG_CAN_USE_ROCKET_HIDEOUT_LIFT 0x2A5
|
||||
#define FLAG_GOT_TEA 0x2A6
|
||||
#define FLAG_GOT_AURORA_TICKET 0x2A7
|
||||
#define FLAG_GOT_MYSTIC_TICKET 0x2A8
|
||||
#define FLAG_0x2A9 0x2A9
|
||||
#define FLAG_0x2AA 0x2AA
|
||||
#define FLAG_0x2AB 0x2AB
|
||||
#define FLAG_0x2AC 0x2AC
|
||||
#define FLAG_0x2AD 0x2AD
|
||||
#define FLAG_0x2AE 0x2AE
|
||||
#define FLAG_0x2AF 0x2AF
|
||||
#define FLAG_0x2B0 0x2B0
|
||||
#define FLAG_0x2B1 0x2B1
|
||||
#define FLAG_0x2B2 0x2B2
|
||||
#define FLAG_0x2B3 0x2B3
|
||||
#define FLAG_0x2B4 0x2B4
|
||||
#define FLAG_0x2B5 0x2B5
|
||||
#define FLAG_0x2B6 0x2B6
|
||||
#define FLAG_0x2B7 0x2B7
|
||||
#define FLAG_0x2B8 0x2B8
|
||||
#define FLAG_0x2B9 0x2B9
|
||||
#define FLAG_0x2BA 0x2BA
|
||||
#define FLAG_RECEIVED_AURORA_TICKET 0x2A7
|
||||
#define FLAG_RECEIVED_MYSTIC_TICKET 0x2A8
|
||||
#define FLAG_RECEIVED_OLD_SEA_MAP 0x2A9
|
||||
#define FLAG_WONDER_CARD_UNUSED_1 0x2AA
|
||||
#define FLAG_WONDER_CARD_UNUSED_2 0x2AB
|
||||
#define FLAG_WONDER_CARD_UNUSED_3 0x2AC
|
||||
#define FLAG_WONDER_CARD_UNUSED_4 0x2AD
|
||||
#define FLAG_WONDER_CARD_UNUSED_5 0x2AE
|
||||
#define FLAG_WONDER_CARD_UNUSED_6 0x2AF
|
||||
#define FLAG_WONDER_CARD_UNUSED_7 0x2B0
|
||||
#define FLAG_WONDER_CARD_UNUSED_8 0x2B1
|
||||
#define FLAG_WONDER_CARD_UNUSED_9 0x2B2
|
||||
#define FLAG_WONDER_CARD_UNUSED_10 0x2B3
|
||||
#define FLAG_WONDER_CARD_UNUSED_11 0x2B4
|
||||
#define FLAG_WONDER_CARD_UNUSED_12 0x2B5
|
||||
#define FLAG_WONDER_CARD_UNUSED_13 0x2B6
|
||||
#define FLAG_WONDER_CARD_UNUSED_14 0x2B7
|
||||
#define FLAG_WONDER_CARD_UNUSED_15 0x2B8
|
||||
#define FLAG_WONDER_CARD_UNUSED_16 0x2B9
|
||||
#define FLAG_WONDER_CARD_UNUSED_17 0x2BA
|
||||
#define NUM_WONDER_CARD_FLAGS (1 + FLAG_WONDER_CARD_UNUSED_17 - FLAG_RECEIVED_AURORA_TICKET)
|
||||
|
||||
#define FLAG_GOT_POWDER_JAR 0x2BB
|
||||
#define FLAG_FOUGHT_MEWTWO 0x2BC
|
||||
#define FLAG_FOUGHT_MOLTRES 0x2BD
|
||||
|
||||
@@ -44,4 +44,12 @@
|
||||
|
||||
#define WONDER_CARD_FLAG_OFFSET 1000
|
||||
|
||||
#define NEWS_REWARD_NONE 0
|
||||
#define NEWS_REWARD_RECV_SMALL 1
|
||||
#define NEWS_REWARD_RECV_BIG 2
|
||||
#define NEWS_REWARD_WAITING 3
|
||||
#define NEWS_REWARD_SENT_SMALL 4
|
||||
#define NEWS_REWARD_SENT_BIG 5
|
||||
#define NEWS_REWARD_AT_MAX 6
|
||||
|
||||
#endif //GUARD_CONSTANTS_MYSTERY_GIFT_H
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
#define QL_EVENT_USED_FIELD_MOVE 36
|
||||
#define QL_EVENT_BOUGHT_ITEM 37
|
||||
#define QL_EVENT_SOLD_ITEM 38
|
||||
#define QL_EVENT_ACTION_FF 39 // Null
|
||||
#define QL_EVENT_SCENE_END 39 // Null
|
||||
#define QL_EVENT_OBTAINED_STORY_ITEM 40
|
||||
#define QL_EVENT_ACTION_FE 41 // Null
|
||||
#define QL_EVENT_WAIT 41 // Null
|
||||
#define QL_EVENT_ARRIVED 42
|
||||
|
||||
#define QL_EVENT_USED_POKEMART (QL_EVENT_BOUGHT_ITEM - 1) // Used as a start pos for QL_EVENT_BOUGHT_ITEM / QL_EVENT_SOLD_ITEM
|
||||
@@ -146,11 +146,11 @@
|
||||
#define QL_INPUT_A 9
|
||||
#define QL_INPUT_B 10
|
||||
|
||||
#define QL_ACTION_MOVEMENT 0
|
||||
#define QL_ACTION_GFX_CHANGE 1
|
||||
#define QL_ACTION_INPUT 2
|
||||
#define QL_ACTION_3 3
|
||||
#define QL_ACTION_FE 0xFE
|
||||
#define QL_ACTION_FF 0xFF
|
||||
#define QL_ACTION_MOVEMENT 0
|
||||
#define QL_ACTION_GFX_CHANGE 1
|
||||
#define QL_ACTION_INPUT 2
|
||||
#define QL_ACTION_3 3
|
||||
#define QL_ACTION_WAIT 254
|
||||
#define QL_ACTION_SCENE_END 255
|
||||
|
||||
#endif //GUARD_CONSTANTS_QUEST_LOG_H
|
||||
|
||||
@@ -1,47 +1,51 @@
|
||||
#ifndef GUARD_CONSTANTS_UNION_ROOM_H
|
||||
#define GUARD_CONSTANTS_UNION_ROOM_H
|
||||
|
||||
// The number of possible group leaders visible in the Union Room.
|
||||
// Note that this is different than the number of people actively
|
||||
// connected as children via the Wireless Adapter, which cannot
|
||||
// exceed RFU_CHILD_MAX (4), for a total of 5 including the player.
|
||||
#define MAX_UNION_ROOM_LEADERS 8
|
||||
|
||||
#define UNION_ROOM_SPAWN_NONE 0
|
||||
#define UNION_ROOM_SPAWN_IN 1
|
||||
#define UNION_ROOM_SPAWN_OUT 2
|
||||
|
||||
#define ACTIVITY_NONE 0
|
||||
#define ACTIVITY_BATTLE 1
|
||||
#define ACTIVITY_DBLBATTLE 2
|
||||
#define ACTIVITY_MLTBATTLE 3
|
||||
#define ACTIVITY_TRADE 4
|
||||
#define ACTIVITY_CHAT 5
|
||||
#define ACTIVITY_WCARD 6
|
||||
#define ACTIVITY_WNEWS 7
|
||||
#define ACTIVITY_CARD 8
|
||||
#define ACTIVITY_PJUMP 9
|
||||
#define ACTIVITY_BCRUSH 10
|
||||
#define ACTIVITY_BPICK 11
|
||||
#define ACTIVITY_SEARCH 12
|
||||
#define ACTIVITY_SPINTRADE 13
|
||||
#define ACTIVITY_ITEMTRADE 14
|
||||
#define UNION_ROOM_MAX_LEVEL 30
|
||||
|
||||
// The number of possible trainer classes for a trainer of a given gender in the Union Room.
|
||||
// This value is necessarily a power of 2 because of the way it's treated in GetUnionRoomTrainerPic / GetUnionRoomTrainerClass
|
||||
#define NUM_UNION_ROOM_CLASSES (1 << 3) // 8
|
||||
|
||||
#define ACTIVITY_NONE 0
|
||||
#define ACTIVITY_BATTLE_SINGLE 1
|
||||
#define ACTIVITY_BATTLE_DOUBLE 2
|
||||
#define ACTIVITY_BATTLE_MULTI 3
|
||||
#define ACTIVITY_TRADE 4
|
||||
#define ACTIVITY_CHAT 5
|
||||
#define ACTIVITY_WONDER_CARD_DUP 6 // Duplicates of later WONDER constants
|
||||
#define ACTIVITY_WONDER_NEWS_DUP 7 //
|
||||
#define ACTIVITY_CARD 8
|
||||
#define ACTIVITY_POKEMON_JUMP 9
|
||||
#define ACTIVITY_BERRY_CRUSH 10
|
||||
#define ACTIVITY_BERRY_PICK 11
|
||||
#define ACTIVITY_SEARCH 12
|
||||
#define ACTIVITY_SPIN_TRADE 13
|
||||
#define ACTIVITY_ITEM_TRADE 14 // Replaced with ACTIVITY_BATTLE_TOWER_OPEN in Emerald
|
||||
#define ACTIVITY_RECORD_CORNER 15
|
||||
#define ACTIVITY_BERRY_BLENDER 16
|
||||
|
||||
// Player response
|
||||
#define ACTIVITY_ACCEPT 17
|
||||
#define ACTIVITY_DECLINE 18
|
||||
#define ACTIVITY_ACCEPT 17
|
||||
#define ACTIVITY_DECLINE 18
|
||||
|
||||
#define ACTIVITY_NPCTALK 19
|
||||
#define ACTIVITY_PLYRTALK 20
|
||||
#define ACTIVITY_NPCTALK 19
|
||||
#define ACTIVITY_PLYRTALK 20
|
||||
|
||||
// Duplicate IDs?
|
||||
#define ACTIVITY_WCARD2 21
|
||||
#define ACTIVITY_WNEWS2 22
|
||||
#define ACTIVITY_WONDER_CARD 21
|
||||
#define ACTIVITY_WONDER_NEWS 22
|
||||
|
||||
#define IN_UNION_ROOM 0x40
|
||||
|
||||
// Used in UR_AddTextPrinterParameterized
|
||||
#define UR_COLOR_DKE_WHT_LTE 0
|
||||
#define UR_COLOR_RED_WHT_LTR 1
|
||||
#define UR_COLOR_GRN_WHT_LTG 2
|
||||
#define UR_COLOR_WHT_WHT_LTE 3
|
||||
#define UR_COLOR_WHT_DKE_LTE 4
|
||||
#define UR_COLOR_GRN_DN6_LTB 5
|
||||
#define UR_COLOR_DN5_DN6_LTB 6
|
||||
#define IN_UNION_ROOM (1 << 6)
|
||||
|
||||
#define LINK_GROUP_SINGLE_BATTLE 0
|
||||
#define LINK_GROUP_DOUBLE_BATTLE 1
|
||||
@@ -52,9 +56,30 @@
|
||||
#define LINK_GROUP_BERRY_PICKING 6
|
||||
#define LINK_GROUP_WONDER_CARD 7
|
||||
#define LINK_GROUP_WONDER_NEWS 8
|
||||
#define NUM_LINK_GROUP_TYPES 9
|
||||
|
||||
#define LINK_GROUP_UNION_ROOM_RESUME 9
|
||||
#define LINK_GROUP_UNION_ROOM_INIT 10
|
||||
#define LINK_GROUP_UNK_11 11
|
||||
#define LINK_GROUP_UNK_12 12
|
||||
#define NUM_LINK_GROUP_TYPES 13
|
||||
|
||||
#define UR_TRADE_MATCH 0
|
||||
#define UR_TRADE_NOTYPE 1
|
||||
#define UR_TRADE_NOEGG 2
|
||||
|
||||
#define UR_TRADE_READY 0
|
||||
#define UR_TRADE_PLAYER_NOT_READY 1
|
||||
#define UR_TRADE_PARTNER_NOT_READY 2
|
||||
|
||||
#define UR_INTERACT_PLAYER_1 1
|
||||
#define UR_INTERACT_PLAYER_2 2
|
||||
#define UR_INTERACT_PLAYER_3 3
|
||||
#define UR_INTERACT_PLAYER_4 4
|
||||
#define UR_INTERACT_PLAYER_5 5
|
||||
#define UR_INTERACT_PLAYER_6 6
|
||||
#define UR_INTERACT_PLAYER_7 7
|
||||
#define UR_INTERACT_PLAYER_8 8
|
||||
#define UR_INTERACT_ATTENDANT 9
|
||||
#define UR_INTERACT_UNUSED 10
|
||||
#define UR_INTERACT_START_MENU 11
|
||||
|
||||
#endif //GUARD_CONSTANTS_UNION_ROOM_H
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
// Bits 12-15 are the same for the player's party.
|
||||
// Used by Quest Log.
|
||||
#define VAR_QUEST_LOG_MON_COUNTS 0x4027
|
||||
#define VAR_MENEWS_JISAN_STEP_COUNTER 0x4028
|
||||
#define VAR_WONDER_NEWS_STEP_COUNTER 0x4028
|
||||
#define VAR_0x4029 0x4029
|
||||
#define VAR_0x402A 0x402A
|
||||
#define VAR_0x402B 0x402B
|
||||
|
||||
+4
-1
@@ -4,6 +4,9 @@
|
||||
#include "global.h"
|
||||
#include "constants/easy_chat.h"
|
||||
|
||||
#define NUM_ALPHABET_ROWS 4
|
||||
#define NUM_ALPHABET_COLUMNS 7
|
||||
|
||||
struct EasyChatWordInfo
|
||||
{
|
||||
const u8 *text;
|
||||
@@ -33,7 +36,7 @@ struct EasyChatWordsByLetter
|
||||
u8 *CopyEasyChatWord(u8 *dest, u16 word);
|
||||
u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows);
|
||||
bool8 EC_DoesEasyChatStringFitOnLine(const u16 *easyChatWords, u8 columns, u8 rows, u16 maxLength);
|
||||
void EC_ResetMEventProfileMaybe(void);
|
||||
void InitQuestionnaireWords(void);
|
||||
void InitEasyChatPhrases(void);
|
||||
void EnableRareWord(u8);
|
||||
bool8 InitEasyChatSelection(void);
|
||||
|
||||
@@ -14,17 +14,20 @@ enum {
|
||||
#define EREADER_XFER_EXE 1
|
||||
#define EREADER_XFER_CHK 2
|
||||
#define EREADER_XFER_SHIFT 0
|
||||
#define EREADER_XFER_MASK 3
|
||||
#define EREADER_XFER_MASK ((EREADER_XFER_EXE | EREADER_XFER_CHK) << EREADER_XFER_SHIFT)
|
||||
|
||||
#define EREADER_CANCEL_TIMEOUT 1
|
||||
#define EREADER_CANCEL_KEY 2
|
||||
#define EREADER_CANCEL_MASK 0xC
|
||||
#define EREADER_CANCEL_SHIFT 2
|
||||
#define EREADER_CANCEL_TIMEOUT_MASK (EREADER_CANCEL_TIMEOUT << EREADER_CANCEL_SHIFT)
|
||||
#define EREADER_CANCEL_KEY_MASK (EREADER_CANCEL_KEY << EREADER_CANCEL_SHIFT)
|
||||
#define EREADER_CANCEL_MASK ((EREADER_CANCEL_TIMEOUT | EREADER_CANCEL_KEY) << EREADER_CANCEL_SHIFT)
|
||||
|
||||
#define EREADER_CHECKSUM_OK 1
|
||||
#define EREADER_CHECKSUM_ERR 2
|
||||
#define EREADER_CHECKSUM_MASK 0x30
|
||||
#define EREADER_CHECKSUM_SHIFT 4
|
||||
#define EREADER_CHECKSUM_OK_MASK (EREADER_CHECKSUM_OK << EREADER_CHECKSUM_SHIFT)
|
||||
#define EREADER_CHECKSUM_MASK ((EREADER_CHECKSUM_OK | EREADER_CHECKSUM_ERR) << EREADER_CHECKSUM_SHIFT)
|
||||
|
||||
void EReaderHelper_SerialCallback(void);
|
||||
void EReaderHelper_Timer3Callback(void);
|
||||
|
||||
@@ -49,8 +49,8 @@ bool8 FlagGet(u16 id);
|
||||
u16 * GetVarPointer(u16 id);
|
||||
bool32 IsMysteryGiftEnabled(void);
|
||||
void ResetSpecialVars(void);
|
||||
void ResetMysteryEventFlags(void);
|
||||
void ResetMysteryEventVars(void);
|
||||
void ClearMysteryGiftFlags(void);
|
||||
void ClearMysteryGiftVars(void);
|
||||
bool32 IsNationalPokedexEnabled(void);
|
||||
void EnableNationalPokedex_RSE(void);
|
||||
void ClearTempFieldEventData(void);
|
||||
|
||||
@@ -27,6 +27,9 @@ typedef double f64;
|
||||
typedef u8 bool8;
|
||||
typedef u16 bool16;
|
||||
typedef u32 bool32;
|
||||
typedef vu8 vbool8;
|
||||
typedef vu16 vbool16;
|
||||
typedef vu32 vbool32;
|
||||
|
||||
struct BgCnt
|
||||
{
|
||||
|
||||
+4
-4
@@ -626,15 +626,15 @@ struct FameCheckerSaveData
|
||||
|
||||
struct WonderNewsMetadata
|
||||
{
|
||||
u8 unk_0_0:2;
|
||||
u8 unk_0_2:3;
|
||||
u8 unk_0_5:3;
|
||||
u8 newsType:2;
|
||||
u8 sentRewardCounter:3;
|
||||
u8 rewardCounter:3;
|
||||
u8 berry;
|
||||
};
|
||||
|
||||
struct WonderNews
|
||||
{
|
||||
u16 newsId;
|
||||
u16 id;
|
||||
u8 sendType; // SEND_TYPE_*
|
||||
u8 bgType;
|
||||
u8 titleText[WONDER_NEWS_TEXT_LENGTH];
|
||||
|
||||
+24
-26
@@ -2866,21 +2866,19 @@ extern const u16 gFameCheckerBg3Tilemap[0x400];
|
||||
extern const u16 gFameCheckerBg2Tilemap[0x400];
|
||||
|
||||
// tm_case
|
||||
extern const u32 gUnknown_8E845D8[];
|
||||
extern const u32 gUnknown_8E84A24[];
|
||||
extern const u32 gUnknown_8E84B70[];
|
||||
extern const u32 gUnknown_8E84CB0[];
|
||||
extern const u32 gUnknown_8E84D20[];
|
||||
extern const u32 gTMCase_TMSpriteGfx[];
|
||||
extern const u32 gUnknown_8E84F20[];
|
||||
extern const u32 gUnknown_8E85068[];
|
||||
extern const u8 gUnknown_8E99118[];
|
||||
extern const u32 gTMCase_Gfx[];
|
||||
extern const u32 gTMCaseMenu_Tilemap[];
|
||||
extern const u32 gTMCase_Tilemap[];
|
||||
extern const u32 gTMCaseMenu_Male_Pal[];
|
||||
extern const u32 gTMCaseMenu_Female_Pal[];
|
||||
extern const u32 gTMCaseDisc_Gfx[];
|
||||
extern const u32 gTMCaseDiscTypes1_Pal[];
|
||||
extern const u32 gTMCaseDiscTypes2_Pal[];
|
||||
extern const u8 gTMCaseHM_Gfx[];
|
||||
|
||||
extern const u16 gStandardMenuPalette[];
|
||||
|
||||
// egg_hatch
|
||||
extern const u32 gBattleTextboxTiles[];
|
||||
extern const u32 gBattleTextboxTilemap[];
|
||||
extern const u32 gBattleTextboxPalette[];
|
||||
extern const u32 gTradeGba2_Pal[];
|
||||
extern const u32 gTradeGba_Gfx[];
|
||||
|
||||
@@ -4312,8 +4310,8 @@ extern const u8 gGraphics_TitleScreen_BoxArtMonMap[];
|
||||
extern u16 gGraphics_TitleScreen_BackgroundPals[]; // If this is const, title_screen.c does not match
|
||||
extern const u8 gGraphics_TitleScreen_CopyrightPressStartTiles[];
|
||||
extern const u8 gGraphics_TitleScreen_CopyrightPressStartMap[];
|
||||
extern const u16 gGraphics_TitleScreen_FireOrLeafPals[];
|
||||
extern const u32 gGraphics_TitleScreen_BlankObjTiles[];
|
||||
extern const u16 gTitleScreen_Slash_Pal[];
|
||||
extern const u32 gTitleScreen_BlankSprite_Tiles[];
|
||||
|
||||
// battle_gfx_sfx_util
|
||||
extern const u32 gHealthboxSinglesPlayerGfx[];
|
||||
@@ -4322,8 +4320,6 @@ extern const u32 gHealthboxDoublesPlayerGfx[];
|
||||
extern const u32 gHealthboxDoublesOpponentGfx[];
|
||||
extern const u32 gHealthboxSafariGfx[];
|
||||
extern const u32 gBlankGfxCompressed[];
|
||||
extern const u16 gBattleInterface_BallStatusBarPal[];
|
||||
extern const u16 gBattleInterface_BallDisplayPal[];
|
||||
extern const u32 gInterfaceGfx_HPNumbers[];
|
||||
extern const u32 gGhostFrontPic[];
|
||||
extern const u32 gGhostPalette[];
|
||||
@@ -4861,11 +4857,13 @@ extern const u16 gHoennTrainerCard_Pal[];
|
||||
extern const u32 gHoennTrainerCard_Gfx[];
|
||||
|
||||
// battle_interface
|
||||
extern const u32 gFile_graphics_battle_interface_ball_status_bar_sheet[];
|
||||
extern const u8 gHealthboxElementsGfxTable[][32];
|
||||
extern const u16 gBattleInterface_BallStatusBarPal[];
|
||||
extern const u16 gBattleInterface_BallDisplayPal[];
|
||||
extern const u16 gBattleInterface_SummaryBallDisplayGfx[];
|
||||
extern const u32 gBattleInterface_Textbox_Gfx[];
|
||||
extern const u32 gBattleInterface_Textbox_Pal[];
|
||||
extern const u32 gBattleInterface_Textbox_Tilemap[];
|
||||
extern const u32 gBattleInterface_PartySummaryBar_Gfx[];
|
||||
extern const u8 gBattleInterface_Gfx[][32];
|
||||
extern const u16 gBattleInterface_Healthbox_Pal[];
|
||||
extern const u16 gBattleInterface_Healthbar_Pal[];
|
||||
|
||||
// item_menu
|
||||
extern const u32 gUnknown_8E830CC[];
|
||||
@@ -4899,11 +4897,11 @@ extern const u32 gBerryCrush_Crusher_Tilemap[];
|
||||
// easy_chat_3
|
||||
extern const u32 gEasyChatWindow_Gfx[];
|
||||
extern const u32 gEasyChatWindow_Tilemap[];
|
||||
extern const u32 gEasyChatMode_Pal[];
|
||||
extern const u16 gUnknown_8E99F24[];
|
||||
extern const u32 gEasyChatRedRectangularCursor_Tiles[];
|
||||
extern const u32 gEasyChatSelectGroupHelp_Tiles[];
|
||||
extern const u32 gEasyChatModeIcons_Tiles[];
|
||||
extern const u32 gEasyChatWindow_Pal[];
|
||||
extern const u16 gEasyChatButtonWindow_Pal[];
|
||||
extern const u32 gEasyChatRectangleCursor_Gfx[];
|
||||
extern const u32 gEasyChatButtonWindow_Gfx[];
|
||||
extern const u32 gEasyChatMode_Gfx[];
|
||||
|
||||
// naming_screen
|
||||
extern const u32 gNamingScreenBackground_Tilemap[];
|
||||
|
||||
+3
-3
@@ -14,7 +14,7 @@ struct Item
|
||||
u8 holdEffectParam;
|
||||
const u8 *description;
|
||||
u8 importance;
|
||||
u8 exitsBagOnUse;
|
||||
u8 registrability;
|
||||
u8 pocket;
|
||||
u8 type; // unused for balls
|
||||
ItemUseFunc fieldUseFunc;
|
||||
@@ -69,7 +69,7 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
|
||||
u8 ItemId_GetBattleUsage(u16 itemId);
|
||||
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
|
||||
u8 ItemId_GetSecondaryId(u16 itemId);
|
||||
u16 itemid_get_market_price(u16 itemId);
|
||||
u16 ItemId_GetPrice(u16 itemId);
|
||||
void ClearBag(void);
|
||||
void ClearPCItemSlots(void);
|
||||
void TrySetObtainedItemQuestLogEvent(u16 itemId);
|
||||
@@ -79,7 +79,7 @@ void SortPocketAndPlaceHMsFirst(struct BagPocket * pocket);
|
||||
u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 itemId);
|
||||
u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 itemId);
|
||||
u16 BagGetQuantityByItemId(u16 item);
|
||||
bool8 itemid_is_unique(u16 itemId);
|
||||
u8 ItemId_GetImportance(u16 itemId);
|
||||
void BagPocketCompaction(struct ItemSlot * slots, u8 capacity);
|
||||
u16 GetPcItemQuantity(u16 *);
|
||||
void SetBagPocketsPointers(void);
|
||||
|
||||
+51
-27
@@ -7,6 +7,7 @@
|
||||
#define MAX_RFU_PLAYERS 5
|
||||
#define CMD_LENGTH 8
|
||||
#define QUEUE_CAPACITY 50
|
||||
#define OVERWORLD_RECV_QUEUE_MAX 3
|
||||
#define BLOCK_BUFFER_SIZE 0x100
|
||||
|
||||
#define LINK_SLAVE 0
|
||||
@@ -50,28 +51,46 @@
|
||||
#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_COUNTDOWN 0x7FFF
|
||||
#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_BLENDER_STOP 0x1111
|
||||
#define LINKCMD_SEND_LINK_TYPE 0x2222
|
||||
#define LINKCMD_BLENDER_SCORE_MISS 0x2345
|
||||
#define LINKCMD_READY_EXIT_STANDBY 0x2FFE
|
||||
#define LINKCMD_SEND_PACKET 0x2FFF
|
||||
#define LINKCMD_BLENDER_SEND_KEYS 0x4444
|
||||
#define LINKCMD_BLENDER_SCORE_BEST 0x4523
|
||||
#define LINKCMD_BLENDER_SCORE_GOOD 0x5432
|
||||
#define LINKCMD_DUMMY_1 0x5555
|
||||
#define LINKCMD_DUMMY_2 0x5566
|
||||
#define LINKCMD_READY_CLOSE_LINK 0x5FFF
|
||||
#define LINKCMD_SEND_EMPTY 0x6666
|
||||
#define LINKCMD_SEND_0xEE 0x7777
|
||||
#define LINKCMD_BLENDER_PLAY_AGAIN 0x7779
|
||||
#define LINKCMD_COUNTDOWN 0x7FFF
|
||||
#define LINKCMD_CONT_BLOCK 0x8888
|
||||
#define LINKCMD_BLENDER_NO_BERRIES 0x9999
|
||||
#define LINKCMD_BLENDER_NO_PBLOCK_SPACE 0xAAAA
|
||||
#define LINKCMD_SEND_ITEM 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 0xCAFE
|
||||
#define LINKCMD_SEND_BLOCK_REQ 0xCCCC
|
||||
#define LINKCMD_START_TRADE 0xCCDD
|
||||
#define LINKCMD_CONFIRM_FINISH_TRADE 0xDCBA
|
||||
#define LINKCMD_SET_MONS_TO_TRADE 0xDDDD
|
||||
#define LINKCMD_PLAYER_CANCEL_TRADE 0xDDEE
|
||||
#define LINKCMD_REQUEST_CANCEL 0xEEAA
|
||||
#define LINKCMD_BOTH_CANCEL_TRADE 0xEEBB
|
||||
#define LINKCMD_PARTNER_CANCEL_TRADE 0xEECC
|
||||
#define LINKCMD_NONE 0xEFFF
|
||||
|
||||
#define LINKTYPE_TRADE 0x1111 // trade
|
||||
#define LINKTYPE_0x1122 0x1122 // trade
|
||||
#define LINKTYPE_TRADE 0x1111
|
||||
#define LINKTYPE_TRADE_CONNECTING 0x1122
|
||||
#define LINKTYPE_TRADE_SETUP 0x1133
|
||||
#define LINKTYPE_0x1144 0x1144 // trade
|
||||
#define LINKTYPE_TRADE_DISCONNECTED 0x1144
|
||||
#define LINKTYPE_BATTLE 0x2211
|
||||
#define LINKTYPE_0x2222 0x2222 // unused battle?
|
||||
#define LINKTYPE_UNUSED_BATTLE 0x2222 // Unused, inferred from gap
|
||||
#define LINKTYPE_SINGLE_BATTLE 0x2233
|
||||
#define LINKTYPE_DOUBLE_BATTLE 0x2244
|
||||
#define LINKTYPE_MULTI_BATTLE 0x2255
|
||||
@@ -80,8 +99,13 @@
|
||||
#define LINKTYPE_BATTLE_TOWER 0x2288
|
||||
#define LINKTYPE_RECORD_MIX_BEFORE 0x3311
|
||||
#define LINKTYPE_RECORD_MIX_AFTER 0x3322
|
||||
#define LINKTYPE_BERRY_BLENDER_SETUP 0x4411
|
||||
#define LINKTYPE_CONTEST_GMODE 0x6601
|
||||
#define LINKTYPE_BERRY_BLENDER_SETUP 0x4411
|
||||
#define LINKTYPE_BERRY_BLENDER 0x4422
|
||||
#define LINKTYPE_MYSTERY_EVENT 0x5501
|
||||
#define LINKTYPE_EREADER_FRLG 0x5502
|
||||
#define LINKTYPE_EREADER_EM 0x5503
|
||||
#define LINKTYPE_CONTEST_GMODE 0x6601
|
||||
#define LINKTYPE_CONTEST_EMODE 0x6602
|
||||
|
||||
enum {
|
||||
BLOCK_REQ_SIZE_NONE, // Identical to 200
|
||||
@@ -91,8 +115,9 @@ enum {
|
||||
BLOCK_REQ_SIZE_40,
|
||||
};
|
||||
|
||||
#define MASTER_HANDSHAKE 0x8FFF
|
||||
#define SLAVE_HANDSHAKE 0xB9A0
|
||||
#define MASTER_HANDSHAKE 0x8FFF
|
||||
#define SLAVE_HANDSHAKE 0xB9A0
|
||||
#define EREADER_HANDSHAKE 0xCCD0
|
||||
|
||||
#define IsSendCmdComplete() (gSendCmd[0] == 0)
|
||||
|
||||
@@ -250,7 +275,7 @@ void SetSuppressLinkErrorMessage(bool8);
|
||||
bool8 HasLinkErrorOccurred(void);
|
||||
void ResetSerial(void);
|
||||
u32 LinkMain1(u8 *, u16 *, u16[MAX_RFU_PLAYERS][CMD_LENGTH]);
|
||||
void RFUVSync(void);
|
||||
void RfuVSync(void);
|
||||
void Timer3Intr(void);
|
||||
void SerialCB(void);
|
||||
u8 GetLinkPlayerCount(void);
|
||||
@@ -258,15 +283,14 @@ bool32 InUnionRoom(void);
|
||||
|
||||
void SetLinkStandbyCallback(void);
|
||||
void SetWirelessCommType1(void);
|
||||
void LinkRfu_DestroyIdleTask(void);
|
||||
void SetCloseLinkCallback(void);
|
||||
void OpenLink(void);
|
||||
bool8 IsLinkMaster(void);
|
||||
void CheckShouldAdvanceLinkState(void);
|
||||
void Link_StartSend5FFFwithParam(u16 a0);
|
||||
void SetCloseLinkCallbackAndType(u16 type);
|
||||
void CloseLink(void);
|
||||
bool8 IsLinkTaskFinished(void);
|
||||
bool32 LinkRecvQueueLengthMoreThan2(void);
|
||||
bool32 IsLinkRecvQueueAtOverworldMax(void);
|
||||
void ResetSerial(void);
|
||||
void SetWirelessCommType1(void);
|
||||
void LoadWirelessStatusIndicatorSpriteGfx(void);
|
||||
|
||||
+163
-143
@@ -6,35 +6,29 @@
|
||||
#include "link.h"
|
||||
#include "AgbRfu_LinkManager.h"
|
||||
|
||||
#define RFUCMD_MASK 0xFF00
|
||||
#define RFUCMD_MASK 0xFF00
|
||||
|
||||
#define RFUCMD_SEND_PACKET 0x2F00
|
||||
#define RFUCMD_READY_CLOSE_LINK 0x5f00
|
||||
#define RFUCMD_READY_EXIT_STANDBY 0x6600
|
||||
#define RFUCMD_PLAYERS_LIST 0x7700
|
||||
#define RFUCMD_PLAYERS_LIST_2 0x7800
|
||||
#define RFUCMD_SEND_BLOCK_INIT 0x8800
|
||||
#define RFUCMD_SEND_BLOCK_STEP 0x8900
|
||||
#define RFUCMD_SEND_BLOCK_REQ 0xa100
|
||||
#define RFUCMD_SEND_HELD_KEYS 0xbe00
|
||||
#define RFUCMD_PARENT_DISCONNECT 0xed00
|
||||
#define RFUCMD_CHILD_DISCONNECT 0xee00
|
||||
#define RFUCMD_SEND_PACKET 0x2F00
|
||||
#define RFUCMD_BLENDER_SEND_KEYS 0x4400
|
||||
#define RFUCMD_READY_CLOSE_LINK 0x5F00
|
||||
#define RFUCMD_READY_EXIT_STANDBY 0x6600
|
||||
#define RFUCMD_SEND_PLAYER_IDS 0x7700
|
||||
#define RFUCMD_SEND_PLAYER_IDS_NEW 0x7800
|
||||
#define RFUCMD_SEND_BLOCK_INIT 0x8800
|
||||
#define RFUCMD_SEND_BLOCK 0x8900
|
||||
#define RFUCMD_SEND_BLOCK_REQ 0xA100
|
||||
#define RFUCMD_SEND_HELD_KEYS 0xBE00
|
||||
#define RFUCMD_DISCONNECT 0xED00
|
||||
#define RFUCMD_DISCONNECT_PARENT 0xEE00
|
||||
|
||||
#define RFU_PACKET_SIZE 6
|
||||
|
||||
#define RFU_SERIAL_7F7D 0x7F7D
|
||||
#define RFU_SERIAL_GAME 0x0002 // Serial number for Pokémon game (FRLG or Emerald)
|
||||
#define RFU_SERIAL_WONDER_DISTRIBUTOR 0x7F7D // Serial number for distributing Wonder Cards / News
|
||||
#define RFU_SERIAL_END 0xFFFF
|
||||
|
||||
#define COMM_SLOT_LENGTH 14
|
||||
#define RECV_QUEUE_NUM_SLOTS 20
|
||||
#define RECV_QUEUE_SLOT_LENGTH (14 * MAX_RFU_PLAYERS)
|
||||
|
||||
#define SEND_QUEUE_NUM_SLOTS 40
|
||||
#define SEND_QUEUE_SLOT_LENGTH 14
|
||||
|
||||
#define BACKUP_QUEUE_NUM_SLOTS 2
|
||||
#define BACKUP_QUEUE_SLOT_LENGTH 14
|
||||
|
||||
#define UNUSED_QUEUE_NUM_SLOTS 2
|
||||
#define UNUSED_QUEUE_SLOT_LENGTH 256
|
||||
|
||||
#define RFU_PACKET_SIZE 6
|
||||
|
||||
@@ -48,50 +42,88 @@
|
||||
#define RFU_STATUS_WAIT_ACK_JOIN_GROUP 7
|
||||
#define RFU_STATUS_LEAVE_GROUP_NOTICE 8
|
||||
#define RFU_STATUS_LEAVE_GROUP 9
|
||||
#define RFU_STATUS_10 10
|
||||
#define RFU_STATUS_11 11
|
||||
#define RFU_STATUS_CHILD_LEAVE_READY 10
|
||||
#define RFU_STATUS_CHILD_LEAVE 11
|
||||
#define RFU_STATUS_ACK_JOIN_GROUP 12
|
||||
|
||||
#define RFU_RECV_IDLE 0
|
||||
#define RFU_RECV_RECEIVING 1
|
||||
#define RFU_RECV_FINISHED 2
|
||||
// Values for disconnectMode
|
||||
enum {
|
||||
RFU_DISCONNECT_NONE,
|
||||
RFU_DISCONNECT_ERROR,
|
||||
RFU_DISCONNECT_NORMAL,
|
||||
};
|
||||
|
||||
// Values for errorState
|
||||
enum {
|
||||
RFU_ERROR_STATE_NONE,
|
||||
RFU_ERROR_STATE_OCCURRED,
|
||||
RFU_ERROR_STATE_PROCESSED,
|
||||
RFU_ERROR_STATE_DISCONNECTING,
|
||||
RFU_ERROR_STATE_IGNORE,
|
||||
};
|
||||
|
||||
// These error flags are set in errorInfo, and given as
|
||||
// the uppermost 16 bits of 'status' for sLinkErrorBuffer.
|
||||
// The first 8 bits are reserved for the link manager msg
|
||||
// when the error occurred, and the last 8 bits are this
|
||||
// sequence of presumably meaningful error flags, but
|
||||
// ultimately sLinkErrorBuffer's status is never read.
|
||||
#define F_RFU_ERROR_1 (1 << 8)
|
||||
#define F_RFU_ERROR_2 (1 << 9) // Never set
|
||||
#define F_RFU_ERROR_3 (1 << 10) // Never set
|
||||
#define F_RFU_ERROR_4 (1 << 11) // Never set
|
||||
#define F_RFU_ERROR_5 (1 << 12)
|
||||
#define F_RFU_ERROR_6 (1 << 13)
|
||||
#define F_RFU_ERROR_7 (1 << 14)
|
||||
#define F_RFU_ERROR_8 (1 << 15)
|
||||
|
||||
// RfuTgtData.gname is read as these structs.
|
||||
struct GFtgtGnameSub
|
||||
struct RfuGameCompatibilityData
|
||||
{
|
||||
u16 language:4;
|
||||
u16 hasNews:1;
|
||||
u16 hasCard:1;
|
||||
u16 unknown:1;
|
||||
u16 unknown:1; // Never read
|
||||
u16 isChampion:1;
|
||||
u16 hasNationalDex:1;
|
||||
u16 gameClear:1;
|
||||
u16 version:4;
|
||||
u16 unk_01_6:2;
|
||||
u16 unused:2;
|
||||
u8 playerTrainerId[2];
|
||||
};
|
||||
|
||||
struct __attribute__((packed, aligned(2))) GFtgtGname
|
||||
// This struct is sent via the Wireless Adapter as the game name or "gname" data.
|
||||
// Gname is only applicable during Wireless Single Game Pak Multiplay, when the
|
||||
// adapter needs this data for connection. Per the RFU manual, during "normal"
|
||||
// wireless play (the kind the Pokémon games use) the gname data can be used for
|
||||
// anything the developers want. This struct is what GF decided to use it for.
|
||||
// It can be up to 13 bytes in size (RFU_GAME_NAME_LENGTH).
|
||||
// The player's name is sent separately as the username ("uname"), and does not
|
||||
// use a struct (gHostRfuUsername).
|
||||
struct __attribute__((packed, aligned(2))) RfuGameData
|
||||
{
|
||||
struct GFtgtGnameSub unk_00;
|
||||
u8 child_sprite_gender[RFU_CHILD_MAX]; // u8 sprite_idx:3;
|
||||
// u8 gender:1;
|
||||
// u8 unk_4:3
|
||||
// u8 active:1
|
||||
u16 species:10;
|
||||
u16 type:6;
|
||||
struct RfuGameCompatibilityData compatibility;
|
||||
u8 partnerInfo[RFU_CHILD_MAX];
|
||||
u16 tradeSpecies:10;
|
||||
u16 tradeType:6;
|
||||
u8 activity:7;
|
||||
u8 started:1;
|
||||
u8 startedActivity:1;
|
||||
u8 playerGender:1;
|
||||
u8 level:7;
|
||||
u8 tradeLevel:7;
|
||||
u8 padding;
|
||||
}; // size: RFU_GNAME_SIZE
|
||||
|
||||
struct Padded_U8
|
||||
{
|
||||
u8 value;
|
||||
};
|
||||
|
||||
// Constants for getting/setting information in 'partnerInfo' of RfuGameData.
|
||||
// This data is used to determine what the link partners look like from
|
||||
// the host's perspective.
|
||||
// Bits 0-2 are a shortened trainerId
|
||||
// Bit 3 is the player's gender
|
||||
// Bits 4-6 are unknown/unused
|
||||
// Bit 7 is an 'active' flag
|
||||
#define PINFO_TID_MASK 0x7
|
||||
#define PINFO_GENDER_SHIFT 3
|
||||
#define PINFO_ACTIVE_FLAG (1 << 7)
|
||||
|
||||
struct RfuBlockSend
|
||||
{
|
||||
/* 0x00 */ u16 next;
|
||||
@@ -106,59 +138,50 @@ struct RfuBlockSend
|
||||
|
||||
struct RfuRecvQueue
|
||||
{
|
||||
/* 0x000 */ u8 slots[RECV_QUEUE_NUM_SLOTS][RECV_QUEUE_SLOT_LENGTH];
|
||||
/* 0x578 */ vu8 recv_slot;
|
||||
/* 0x579 */ vu8 send_slot;
|
||||
/* 0x000 */ u8 slots[RECV_QUEUE_NUM_SLOTS][COMM_SLOT_LENGTH * MAX_RFU_PLAYERS];
|
||||
/* 0x578 */ vu8 recvSlot;
|
||||
/* 0x579 */ vu8 sendSlot;
|
||||
/* 0x57a */ vu8 count;
|
||||
/* 0x57b */ vu8 full;
|
||||
};
|
||||
|
||||
struct RfuSendQueue
|
||||
{
|
||||
/* 0x000 */ u8 slots[SEND_QUEUE_NUM_SLOTS][SEND_QUEUE_SLOT_LENGTH];
|
||||
/* 0x230 */ vu8 recv_slot;
|
||||
/* 0x231 */ vu8 send_slot;
|
||||
/* 0x000 */ u8 slots[SEND_QUEUE_NUM_SLOTS][COMM_SLOT_LENGTH];
|
||||
/* 0x230 */ vu8 recvSlot;
|
||||
/* 0x231 */ vu8 sendSlot;
|
||||
/* 0x232 */ vu8 count;
|
||||
/* 0x233 */ vu8 full;
|
||||
};
|
||||
|
||||
struct RfuBackupQueue
|
||||
{
|
||||
/* 0x00 */ u8 slots[BACKUP_QUEUE_NUM_SLOTS][BACKUP_QUEUE_SLOT_LENGTH];
|
||||
/* 0x1c */ vu8 recv_slot;
|
||||
/* 0x1d */ vu8 send_slot;
|
||||
/* 0x00 */ u8 slots[BACKUP_QUEUE_NUM_SLOTS][COMM_SLOT_LENGTH];
|
||||
/* 0x1c */ vu8 recvSlot;
|
||||
/* 0x1d */ vu8 sendSlot;
|
||||
/* 0x1e */ vu8 count;
|
||||
};
|
||||
|
||||
struct RfuUnusedQueue
|
||||
struct RfuManager
|
||||
{
|
||||
/* 0x000 */ u8 slots[UNUSED_QUEUE_NUM_SLOTS][UNUSED_QUEUE_SLOT_LENGTH];
|
||||
/* 0x200 */ vu8 recv_slot;
|
||||
/* 0x201 */ vu8 send_slot;
|
||||
/* 0x202 */ vu8 count;
|
||||
/* 0x203 */ vu8 full;
|
||||
};
|
||||
|
||||
typedef struct UnkRfuStruct_2
|
||||
{
|
||||
/* 0x000 */ void (*RfuFunc)(void);
|
||||
/* 0x000 */ void (*callback)(void);
|
||||
/* 0x004 */ u16 state;
|
||||
/* 0x006 */ u8 filler_06[4];
|
||||
/* 0x00a */ u16 linkman_msg;
|
||||
/* 0x00c */ u8 parent_child;
|
||||
/* 0x006 */ u8 unused1[4];
|
||||
/* 0x00a */ u16 errorInfo;
|
||||
/* 0x00c */ u8 parentChild;
|
||||
/* 0x00d */ u8 playerCount;
|
||||
/* 0x00e */ u8 unk_0e;
|
||||
/* 0x00f */ u8 unk_0f;
|
||||
/* 0x010 */ u16 linkman_param[2];
|
||||
/* 0x014 */ u8 main_UNI_recvBuffer[RFU_CHILD_MAX][14];
|
||||
/* 0x04c */ u8 lastCmdBeforeCommInterrupt[14];
|
||||
/* 0x05a */ u8 cmdA100_blockRequestType;
|
||||
/* 0x00e */ bool8 runParentMain2;
|
||||
/* 0x00f */ u8 unused2;
|
||||
/* 0x010 */ u16 errorParams[2];
|
||||
/* 0x014 */ u8 childRecvBuffer[RFU_CHILD_MAX][COMM_SLOT_LENGTH];
|
||||
/* 0x04c */ u8 childSendBuffer[COMM_SLOT_LENGTH];
|
||||
/* 0x05a */ u8 blockRequestType;
|
||||
/* 0x05b */ u8 sendBlockInitDelay;
|
||||
/* 0x05c */ bool8 blockReceived[MAX_RFU_PLAYERS];
|
||||
/* 0x061 */ u8 numBlocksReceived[MAX_RFU_PLAYERS];
|
||||
/* 0x066 */ u8 idleTaskId;
|
||||
/* 0x067 */ u8 searchTaskId;
|
||||
/* 0x068 */ u8 filler_68[4];
|
||||
/* 0x068 */ u8 unused3[4];
|
||||
/* 0x06c */ struct RfuBlockSend sendBlock;
|
||||
/* 0x080 */ struct RfuBlockSend recvBlock[MAX_RFU_PLAYERS];
|
||||
/* 0x0e4 */ bool8 readyCloseLink[MAX_RFU_PLAYERS];
|
||||
@@ -170,67 +193,64 @@ typedef struct UnkRfuStruct_2
|
||||
/* 0x0f2 */ u16 packet[RFU_PACKET_SIZE];
|
||||
/* 0x0fe */ u16 resendExitStandbyTimer;
|
||||
/* 0x100 */ u16 resendExitStandbyCount;
|
||||
/* 0x102 */ u8 unk_102;
|
||||
/* 0x104 */ struct RfuTgtData tgtData;
|
||||
/* 0x102 */ u8 childSendCmdId;
|
||||
/* 0x104 */ struct RfuTgtData parent;
|
||||
/* 0x124 */ struct RfuRecvQueue recvQueue;
|
||||
/* 0x6a0 */ struct RfuSendQueue sendQueue;
|
||||
/* 0x8d4 */ struct RfuBackupQueue backupQueue;
|
||||
/* 0x8f4 */ vu8 linkRecovered;
|
||||
/* 0x8f5 */ u8 reconnectedParentIdx;
|
||||
/* 0x8f6 */ vu8 child_slot;
|
||||
/* 0x8f7 */ u8 unk_c3f[70];
|
||||
/* 0x8f5 */ u8 reconnectParentId;
|
||||
/* 0x8f6 */ vu8 childSlot;
|
||||
/* 0x8f7 */ u8 childRecvQueue[COMM_SLOT_LENGTH * MAX_RFU_PLAYERS];
|
||||
/* 0x93d */ u8 sendStatus;
|
||||
/* 0x93e */ u8 recvStatus;
|
||||
/* 0x93f */ u8 recvCmds[MAX_RFU_PLAYERS][7][2];
|
||||
/* 0x93f */ u8 recvCmds[MAX_RFU_PLAYERS][CMD_LENGTH - 1][2];
|
||||
/* 0x985 */ u8 parentId;
|
||||
/* 0x986 */ u8 multiplayerId; // childId
|
||||
/* 0x987 */ u8 unk_ccf;
|
||||
/* 0x988 */ vu8 sem_UNI_SendRecv;
|
||||
/* 0x987 */ u8 connectParentFailures;
|
||||
/* 0x988 */ vu8 childSendCount;
|
||||
/* 0x989 */ u8 partnerSendStatuses[RFU_CHILD_MAX];
|
||||
/* 0x98d */ u8 partnerRecvStatuses[RFU_CHILD_MAX];
|
||||
/* 0x991 */ u8 linkClosing;
|
||||
/* 0x992 */ u8 unk_cda;
|
||||
/* 0x993 */ volatile bool8 unk_cdb;
|
||||
/* 0x994 */ volatile bool8 unk_cdc;
|
||||
/* 0x995 */ u8 unk_cdd;
|
||||
/* 0x991 */ bool8 stopNewConnections;
|
||||
/* 0x992 */ u8 parentSendSlot;
|
||||
/* 0x993 */ vbool8 parentFinished;
|
||||
/* 0x994 */ vbool8 parentMain2Failed;
|
||||
/* 0x995 */ u8 unused5;
|
||||
/* 0x996 */ u8 linkPlayerIdx[RFU_CHILD_MAX];
|
||||
/* 0x99a */ u8 bm_PartnerFlags;
|
||||
/* 0x99b */ u8 bm_DisconnectSlot;
|
||||
/* 0x99c */ u8 unk_ce4;
|
||||
/* 0x99d */ u8 bmChatLeaderMaybe;
|
||||
/* 0x99e */ u8 unionRoomChatters;
|
||||
/* 0x99a */ u8 parentSlots;
|
||||
/* 0x99b */ u8 disconnectSlots;
|
||||
/* 0x99c */ u8 disconnectMode;
|
||||
/* 0x99d */ u8 nextChildBits;
|
||||
/* 0x99e */ u8 newChildQueue;
|
||||
/* 0x99f */ u8 acceptSlot_flag;
|
||||
/* 0x9a0 */ bool8 foundNewLeaderMaybe;
|
||||
/* 0x9a1 */ u8 unk_ce9;
|
||||
/* 0x9a2 */ u8 unk_cea[RFU_CHILD_MAX];
|
||||
/* 0x9a6 */ u8 unk_cee[RFU_CHILD_MAX];
|
||||
} GF_RFU_MANAGER; // size: 0x9AC
|
||||
/* 0x9a0 */ bool8 playerExchangeActive;
|
||||
/* 0x9a1 */ u8 incomingChild;
|
||||
/* 0x9a2 */ u8 numChildRecvErrors[RFU_CHILD_MAX];
|
||||
/* 0x9a6 */ u8 childRecvIds[RFU_CHILD_MAX];
|
||||
}; // size: 0x9AC
|
||||
|
||||
extern struct GFtgtGname gHostRFUtgtGnameBuffer;
|
||||
extern u8 gHostRFUtgtUnameBuffer[];
|
||||
extern GF_RFU_MANAGER Rfu;
|
||||
extern struct RfuGameData gHostRfuGameData;
|
||||
extern u8 gHostRfuUsername[];
|
||||
extern struct RfuManager gRfu;
|
||||
|
||||
// GameFreak signatures
|
||||
void AddTextPrinterToWindow1(const u8 *str);
|
||||
bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src);
|
||||
void LinkRfu_FatalError(void);
|
||||
void MG_DrawCheckerboardPattern(void);
|
||||
void Rfu_SetCloseLinkCallback(void);
|
||||
bool8 IsLinkRfuTaskFinished(void);
|
||||
void DestroyWirelessStatusIndicatorSprite(void);
|
||||
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
|
||||
void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
|
||||
void MEvent_CreateTask_Leader(u32 arg0);
|
||||
void CreateTask_LinkMysteryGiftWithFriend(u32 activity);
|
||||
void CreateTask_LinkMysteryGiftOverWireless(u32 activity);
|
||||
void CreateTask_SendMysteryGift(u32 activity);
|
||||
void Rfu_SendPacket(void *data);
|
||||
u8 CreateTask_ListenToWireless(void);
|
||||
void LinkRfu_DestroyIdleTask(void);
|
||||
void DestroyTask_RfuIdle(void);
|
||||
void InitRFUAPI(void);
|
||||
void sub_80FB128(bool32 a0);
|
||||
void RfuSetIgnoreError(bool32 enable);
|
||||
bool32 IsSendingKeysToRfu(void);
|
||||
void ClearLinkRfuCallback(void);
|
||||
u8 GetRfuPlayerCount(void);
|
||||
u8 Rfu_GetLinkPlayerCount(void);
|
||||
void StartSendingKeysToRfu(void);
|
||||
u8 LinkRfu_GetMultiplayerId(void);
|
||||
u8 Rfu_GetMultiplayerId(void);
|
||||
bool32 Rfu_InitBlockSend(const u8 * src, size_t size);
|
||||
bool8 Rfu_SendBlockRequest(u8 blockRequestType);
|
||||
u8 Rfu_GetBlockReceivedStatus(void);
|
||||
@@ -238,15 +258,15 @@ void Rfu_SetBlockReceivedFlag(u8 linkPlayerId);
|
||||
void Rfu_ResetBlockReceivedFlag(u8 linkPlayerId);
|
||||
bool8 Rfu_IsMaster(void);
|
||||
void ResetLinkRfuGFLayer(void);
|
||||
bool32 LinkRfuMain1(void);
|
||||
bool32 LinkRfuMain2(void);
|
||||
bool32 RfuMain1(void);
|
||||
bool32 RfuMain2(void);
|
||||
bool32 IsRfuRecvQueueEmpty(void);
|
||||
u32 GetRfuRecvQueueLength(void);
|
||||
void LinkRfu_Shutdown(void);
|
||||
void LinkRfu_CreateIdleTask(void);
|
||||
bool8 ToggleLMANlinkRecovery(bool32 enable);
|
||||
void var_800D_set_xB(void);
|
||||
struct GFtgtGname *GetHostRFUtgtGname(void);
|
||||
void CreateTask_RfuIdle(void);
|
||||
bool8 Rfu_SetLinkRecovery(bool32 enable);
|
||||
void SetUsingUnionRoomStartMenu(void);
|
||||
struct RfuGameData *GetHostRfuGameData(void);
|
||||
void UpdateWirelessStatusIndicatorSprite(void);
|
||||
void InitRFU(void);
|
||||
bool32 RfuHasErrored(void);
|
||||
@@ -262,47 +282,47 @@ bool8 RfuBackupQueue_Dequeue(struct RfuBackupQueue *queue, u8 *dest);
|
||||
void RfuBackupQueue_Enqueue(struct RfuBackupQueue *queue, const u8 *dest);
|
||||
bool8 RfuRecvQueue_Dequeue(struct RfuRecvQueue * queue, u8 *dest);
|
||||
void RfuSendQueue_Enqueue(struct RfuSendQueue * queue, u8 *src);
|
||||
void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 started, s32 child_sprite_genders);
|
||||
void InitHostRfuGameData(struct RfuGameData *data, u8 activity, bool32 started, s32 partnerInfo);
|
||||
void UpdateGameData_GroupLockedIn(bool8 started);
|
||||
bool32 IsRfuSerialNumberValid(u32 serialNo);
|
||||
bool8 IsRfuRecoveringFromLinkLoss(void);
|
||||
bool8 LmanAcceptSlotFlagIsNotZero(void);
|
||||
void LinkRfu_StopManagerAndFinalizeSlots(void);
|
||||
bool32 sub_80FA5D4(void);
|
||||
bool32 sub_80FC1CC(void);
|
||||
bool32 WaitRfuState(bool32 a0);
|
||||
bool32 CheckTrainerHasLeftByIdAndName(u16 trainerId, const u8 *trainerName);
|
||||
void SendByteToPartnerByIdAndName(u8 a0, u16 a1, const u8 *a2);
|
||||
u32 WaitSendByteToPartnerByIdAndName(u16 a0, const u8 *a1);
|
||||
void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 a2);
|
||||
bool32 RfuTryDisconnectLeavingChildren(void);
|
||||
bool32 IsRfuCommunicatingWithAllChildren(void);
|
||||
bool32 WaitRfuState(bool32 force);
|
||||
bool32 HasTrainerLeftPartnersList(u16 trainerId, const u8 *trainerName);
|
||||
void SendRfuStatusToPartner(u8 status, u16 trainerId, const u8 *name);
|
||||
u32 WaitSendRfuStatusToPartner(u16 trainerId, const u8 *name);
|
||||
void SetHostRfuGameData(u8 activity, u32 partnerInfo, bool32 startedActivity);
|
||||
void InitializeRfuLinkManager_LinkLeader(u32 availSlots);
|
||||
void RequestDisconnectSlotByTrainerNameAndId(const u8 *trainerName, u16 trainerId);
|
||||
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname);
|
||||
void CopyHostRfuGameDataAndUsername(struct RfuGameData *gameData, u8 *username);
|
||||
void InitializeRfuLinkManager_JoinGroup(void);
|
||||
void SendLeaveGroupNotice(void);
|
||||
void CreateTask_RfuReconnectWithParent(const u8 *src, u16 trainerId);
|
||||
void UpdateGameDataWithActivitySpriteGendersFlag(u8 activity, u32 child_sprite_genders, u32 started);
|
||||
void RecordMixTrainerNames(void);
|
||||
void UpdateGameData_SetActivity(u8 activity, u32 partnerInfo, u32 startedActivity);
|
||||
void SaveLinkTrainerNames(void);
|
||||
void LinkRfu_CreateConnectionAsParent();
|
||||
void LinkRfu_StopManagerBeforeEnteringChat();
|
||||
void SetGnameBufferWonderFlags(bool32 hasNews, bool32 hasCard);
|
||||
void ClearAndInitHostRFUtgtGname(void);
|
||||
void sub_80F8FA0(void);
|
||||
void RfuUpdatePlayerGnameStateAndSend(u32 type, u32 species, u32 level);
|
||||
void SetHostRfuWonderFlags(bool32 hasNews, bool32 hasCard);
|
||||
void ResetHostRfuGameData(void);
|
||||
void StopUnionRoomLinkManager(void);
|
||||
void SetTradeBoardRegisteredMonInfo(u32 type, u32 species, u32 level);
|
||||
bool32 IsUnionRoomListenTaskActive(void);
|
||||
void InitializeRfuLinkManager_EnterUnionRoom(void);
|
||||
void sub_80FBD6C(u32 a0);
|
||||
void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
|
||||
void Rfu_DisconnectPlayerById(u32 playerIdx);
|
||||
void TryConnectToUnionRoomParent(const u8 *name, struct RfuGameData *parent, u8 activity);
|
||||
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
|
||||
bool8 LinkRfu_GetNameIfCompatible(struct GFtgtGname *gname, u8 *uname, u8 idx);
|
||||
bool8 LinkRfu_GetNameIfSerial7F7D(struct GFtgtGname *gname, u8 *uname, u8 idx);
|
||||
bool32 RfuHasFoundNewLeader(void);
|
||||
void Rfu_UnionRoomChat_StopLinkManager(void);
|
||||
void sub_80FB9D0(void);
|
||||
void sub_80FB030(u32 a0);
|
||||
bool8 Rfu_GetCompatiblePlayerData(struct RfuGameData *gameData, u8 *username, u8 idx);
|
||||
bool8 Rfu_GetWonderDistributorPlayerData(struct RfuGameData *gameData, u8 *username, u8 idx);
|
||||
bool32 Rfu_IsPlayerExchangeActive(void);
|
||||
void Rfu_StopPartnerSearch(void);
|
||||
void RfuSetNormalDisconnectMode(void);
|
||||
void SetUnionRoomChatPlayerData(u32 numPlayers);
|
||||
void ClearRecvCommands(void);
|
||||
|
||||
#include "mevent_server.h"
|
||||
extern const struct mevent_server_cmd gServerScript_ClientCanceledCard[];
|
||||
#include "mystery_gift_server.h"
|
||||
extern const struct MysteryGiftServerCmd gServerScript_ClientCanceledCard[];
|
||||
|
||||
#endif //GUARD_LINK_RFU_H
|
||||
|
||||
+2
-1
@@ -69,7 +69,8 @@ void StartTimer1(void);
|
||||
void SeedRngAndSetTrainerId(void);
|
||||
u16 GetGeneratedTrainerIdLower(void);
|
||||
|
||||
extern const char RomHeaderGameCode[4];
|
||||
#define GAME_CODE_LENGTH 4
|
||||
extern const char RomHeaderGameCode[GAME_CODE_LENGTH];
|
||||
extern const char RomHeaderSoftwareVersion;
|
||||
|
||||
extern u8 gLinkTransferringData;
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
#ifndef GUARD_MENEWS_JISAN_H
|
||||
#define GUARD_MENEWS_JISAN_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void MENewsJisan_SetRandomReward(u32 a0);
|
||||
void MENewsJisanReset(void);
|
||||
void MENewsJisanStepCounter(void);
|
||||
|
||||
#endif //GUARD_MENEWS_JISAN_H
|
||||
@@ -15,19 +15,19 @@ struct YesNoFuncTable
|
||||
};
|
||||
|
||||
bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
|
||||
bool8 MenuHelpers_CallLinkSomething(void);
|
||||
bool8 sub_80BF748(void);
|
||||
bool8 MenuHelpers_LinkSomething(void);
|
||||
bool8 IsActiveOverworldLinkBusy(void);
|
||||
bool8 MenuHelpers_ShouldWaitForLinkRecv(void);
|
||||
bool8 MenuHelpers_IsLinkActive(void);
|
||||
void SetVBlankHBlankCallbacksToNull(void);
|
||||
void ResetAllBgsCoordinatesAndBgCntRegs(void);
|
||||
u8 GetDialogBoxFontId(void);
|
||||
bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity_p, u16 qmax);
|
||||
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
|
||||
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
|
||||
u8 GetLRKeysState(void);
|
||||
u8 GetLRKeysPressed(void);
|
||||
u8 GetLRKeysPressedAndHeld(void);
|
||||
bool8 itemid_link_can_give_berry(u16 itemId);
|
||||
bool8 CanWriteMailHere(u16 itemId);
|
||||
bool8 IsHoldingItemAllowed(u16 itemId);
|
||||
bool8 IsWritingMailAllowed(u16 itemId);
|
||||
void ResetVramOamAndBgCntRegs(void);
|
||||
|
||||
#endif //GUARD_MENU_HELPERS_H
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_H
|
||||
#define GUARD_MEVENT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
#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
|
||||
|
||||
enum {
|
||||
NEWS_INPUT_A,
|
||||
NEWS_INPUT_B,
|
||||
NEWS_INPUT_SCROLL_UP,
|
||||
NEWS_INPUT_SCROLL_DOWN,
|
||||
NEWS_INPUT_NONE = 0xFF
|
||||
};
|
||||
|
||||
struct MEventClientHeaderStruct
|
||||
{
|
||||
u32 unk_00;
|
||||
u16 unk_04;
|
||||
u32 unk_08;
|
||||
u16 unk_0C;
|
||||
u32 unk_10;
|
||||
u16 id;
|
||||
u16 unk_16[4];
|
||||
struct WonderCardMetadata unk_20;
|
||||
u8 maxDistributionMons;
|
||||
u8 playerName[7];
|
||||
u8 playerTrainerId[4];
|
||||
u16 easyChatProfile[6];
|
||||
u8 gameCode[4];
|
||||
u8 version;
|
||||
};
|
||||
|
||||
struct MEvent_Str_1
|
||||
{
|
||||
u16 status;
|
||||
size_t size;
|
||||
const void *data;
|
||||
};
|
||||
|
||||
struct MEvent_Str_2
|
||||
{
|
||||
u8 fill_00[0x40];
|
||||
};
|
||||
|
||||
struct WonderGraphics
|
||||
{
|
||||
u8 titleTextPal:4;
|
||||
u8 bodyTextPal:4;
|
||||
u8 footerTextPal:4;
|
||||
u8 stampShadowPal:4;
|
||||
const u8 * tiles;
|
||||
const u8 * map;
|
||||
const u16 * pal;
|
||||
};
|
||||
|
||||
extern const u16 gCard1Pal[];
|
||||
extern const u16 gCard2Pal[];
|
||||
extern const u16 gCard3Pal[];
|
||||
extern const u16 gCard4Pal[];
|
||||
extern const u16 gCard5Pal[];
|
||||
|
||||
struct WonderNews * GetSavedWonderNews(void);
|
||||
struct WonderCard * GetSavedWonderCard(void);
|
||||
struct WonderCardMetadata * sav1_get_mevent_buffer_2(void);
|
||||
struct WonderNewsMetadata * GetMENewsJisanStructPtr(void);
|
||||
bool32 OverwriteSavedWonderNewsWithReceivedNews(const struct WonderNews * src);
|
||||
bool32 ValidateReceivedWonderNews(void);
|
||||
bool32 ValidateReceivedWonderCard(void);
|
||||
bool32 MEvent_HaveAlreadyReceivedWonderNews(const u8 * src);
|
||||
bool32 OverwriteSavedWonderCardWithReceivedCard(const struct WonderCard * data);
|
||||
void MEvent_WonderCardResetUnk08_6(struct WonderCard * buffer);
|
||||
bool32 MEvent_ReceiveDistributionMon(const u16 * data);
|
||||
void BuildMEventClientHeader(struct MEventClientHeaderStruct * data);
|
||||
bool32 ValidateMEventClientHeader(const struct MEventClientHeaderStruct * data);
|
||||
u32 sub_8144418(const u16 * a0, const struct MEventClientHeaderStruct * a1, void *unused);
|
||||
u32 MEvent_CanPlayerReceiveDistributionMon(const u16 * a0, const struct MEventClientHeaderStruct * a1, void *unused);
|
||||
bool32 sub_8144474(const struct MEventClientHeaderStruct * a0, const u16 * a1);
|
||||
u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command);
|
||||
bool32 WonderCard_Init(struct WonderCard * card, struct WonderCardMetadata * metadata);
|
||||
bool32 WonderNews_Init(const struct WonderNews * news);
|
||||
s32 WonderCard_Enter(void);
|
||||
s32 WonderNews_Enter(void);
|
||||
void DestroyWonderCard(void);
|
||||
void DestroyWonderNews(void);
|
||||
void WonderCard_Destroy(void);
|
||||
void WonderNews_Destroy(void);
|
||||
s32 WonderCard_Exit(bool32 flag);
|
||||
s32 WonderNews_Exit(bool32 flag);
|
||||
bool32 CheckReceivedGiftFromWonderCard(void);
|
||||
void WonderNews_AddScrollIndicatorArrowPair(void);
|
||||
void WonderNews_RemoveScrollIndicatorArrowPair(void);
|
||||
bool32 WonderNews_Test_Unk_02(void);
|
||||
bool32 WonderCard_Test_Unk_08_6(void);
|
||||
u32 WonderNews_GetInput(u16 input);
|
||||
void InitMEventData(void);
|
||||
u16 MEvent_GetBattleCardCount(u32 command);
|
||||
void MysteryGift_TryIncrementStat(u32 eventId, u32 trainerId);
|
||||
u16 *GetMEventProfileECWordsMaybe(void);
|
||||
void ResetReceivedWonderCardFlag(void);
|
||||
bool32 MEventHandleReceivedWonderCard(u16 flagId);
|
||||
u16 GetWonderCardFlagId(void);
|
||||
|
||||
#endif //GUARD_MEVENT_H
|
||||
@@ -1,129 +0,0 @@
|
||||
#ifndef GUARD_MEVENT_SERVER_H
|
||||
#define GUARD_MEVENT_SERVER_H
|
||||
|
||||
#include "global.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;
|
||||
};
|
||||
|
||||
struct mevent_client_cmd
|
||||
{
|
||||
u32 instr;
|
||||
u32 parameter;
|
||||
};
|
||||
|
||||
// Client commands
|
||||
#define CLI_RETURN(x) {.instr = 1, .parameter = x}
|
||||
#define CLI_RECEIVE(x) {.instr = 2, .parameter = x}
|
||||
#define CLI_WAITSND {.instr = 3, .parameter = 0}
|
||||
#define CLI_JUMPBUF {.instr = 4, .parameter = 0}
|
||||
#define CLI_SNDHEAD {.instr = 8, .parameter = 0}
|
||||
#define CLI_VLDNEWS {.instr = 9, .parameter = 0}
|
||||
#define CLI_RECVSAV {.instr = 10, .parameter = 0}
|
||||
#define CLI_RECVBUF {.instr = 12, .parameter = 0}
|
||||
#define CLI_REQWORD {.instr = 13, .parameter = 0}
|
||||
#define CLI_SNDWORD {.instr = 14, .parameter = 0}
|
||||
#define CLI_RECVMON {.instr = 16, .parameter = 0}
|
||||
#define CLI_RECVRAM {.instr = 17, .parameter = 0}
|
||||
#define CLI_SENDALL {.instr = 20, .parameter = 0}
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
struct mevent_server_cmd
|
||||
{
|
||||
u32 instr;
|
||||
bool32 flag;
|
||||
void *parameter;
|
||||
};
|
||||
|
||||
// Server commands
|
||||
#define SRV_RETURN(x) {.instr = 0, .flag = x}
|
||||
#define SRV_WAITSND {.instr = 1}
|
||||
#define SRV_RECV(x) {.instr = 2, .flag = x}
|
||||
#define SRV_BRANCH(y) {.instr = 3, .parameter = (void *)y}
|
||||
#define SRV_BRANCHIF(x, y) {.instr = 4, .flag = x, .parameter = (void *)y}
|
||||
#define SRV_READ_1442CC {.instr = 5}
|
||||
#define SRV_VALID_1442CC {.instr = 6}
|
||||
#define SRV_CHECK_1442CC_14 {.instr = 7}
|
||||
#define SRV_READWORD {.instr = 8}
|
||||
#define SRV_SEND_CARD {.instr = 13}
|
||||
#define SRV_SEND_NEWS {.instr = 14}
|
||||
#define SRV_BUFFER_SEND {.instr = 15}
|
||||
#define SRV_SEND(x, y) {.instr = 18, .flag = x, .parameter = (void *)y}
|
||||
#define SRV_SENDSTR(x, y) {.instr = 20, .flag = x, .parameter = (void *)y}
|
||||
#define SRV_BUFFER_CARD {.instr = 26}
|
||||
#define SRV_BUFFER_NEWS {.instr = 27}
|
||||
#define SRV_RAM_SCRIPT_IF_VALID {.instr = 28}
|
||||
|
||||
struct mevent_srv_common
|
||||
{
|
||||
u32 unk_00;
|
||||
u32 param;
|
||||
u32 mainseqno;
|
||||
u32 cmdidx;
|
||||
const struct mevent_server_cmd * cmdBuffer;
|
||||
void *recvBuffer;
|
||||
struct WonderCard * card;
|
||||
struct WonderNews * news;
|
||||
struct MEventClientHeaderStruct * mevent_unk1442cc;
|
||||
void *sendBuffer1;
|
||||
u32 sendBuffer1Size;
|
||||
void *sendBuffer2;
|
||||
u32 sendBuffer2Size;
|
||||
u32 sendWord;
|
||||
struct mevent_srv_sub manager;
|
||||
};
|
||||
|
||||
u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr);
|
||||
u32 mevent_srv_sub_send(struct mevent_srv_sub * svr);
|
||||
void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo);
|
||||
void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void *src, u32 size);
|
||||
void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void *dest);
|
||||
|
||||
void mevent_client_do_init(void);
|
||||
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);
|
||||
void mevent_srv_init_wnews(void);
|
||||
void mevent_srv_new_wcard(void);
|
||||
u32 mevent_srv_common_do_exec(u16 * a0);
|
||||
|
||||
#endif //GUARD_MEVENT_SERVER_H
|
||||
@@ -0,0 +1,98 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_H
|
||||
#define GUARD_MYSTERY_GIFT_H
|
||||
|
||||
#include "global.h"
|
||||
#include "main.h"
|
||||
#include "constants/mystery_gift.h"
|
||||
|
||||
#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
|
||||
|
||||
enum {
|
||||
NEWS_INPUT_A,
|
||||
NEWS_INPUT_B,
|
||||
NEWS_INPUT_SCROLL_UP,
|
||||
NEWS_INPUT_SCROLL_DOWN,
|
||||
NEWS_INPUT_NONE = 0xFF
|
||||
};
|
||||
|
||||
struct MysteryGiftLinkGameData
|
||||
{
|
||||
u32 unk_00;
|
||||
u16 unk_04;
|
||||
u32 unk_08;
|
||||
u16 unk_0C;
|
||||
u32 unk_10;
|
||||
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 gameCode[GAME_CODE_LENGTH];
|
||||
u8 version;
|
||||
};
|
||||
|
||||
struct WonderGraphics
|
||||
{
|
||||
u8 titleTextPal:4;
|
||||
u8 bodyTextPal:4;
|
||||
u8 footerTextPal:4;
|
||||
u8 stampShadowPal:4;
|
||||
const u8 * tiles;
|
||||
const u8 * map;
|
||||
const u16 * pal;
|
||||
};
|
||||
|
||||
extern const u16 gCard1Pal[];
|
||||
extern const u16 gCard2Pal[];
|
||||
extern const u16 gCard3Pal[];
|
||||
extern const u16 gCard4Pal[];
|
||||
extern const u16 gCard5Pal[];
|
||||
|
||||
struct WonderNews * GetSavedWonderNews(void);
|
||||
struct WonderCard * GetSavedWonderCard(void);
|
||||
struct WonderCardMetadata * GetSavedWonderCardMetadata(void);
|
||||
struct WonderNewsMetadata * GetSavedWonderNewsMetadata(void);
|
||||
bool32 SaveWonderNews(const struct WonderNews * news);
|
||||
bool32 ValidateSavedWonderNews(void);
|
||||
bool32 ValidateSavedWonderCard(void);
|
||||
bool32 IsWonderNewsSameAsSaved(const u8 * news);
|
||||
bool32 SaveWonderCard(const struct WonderCard * card);
|
||||
void DisableWonderCardSending(struct WonderCard * card);
|
||||
bool32 MysteryGift_TrySaveStamp(const u16 * stamp);
|
||||
void MysteryGift_LoadLinkGameData(struct MysteryGiftLinkGameData * data);
|
||||
bool32 MysteryGift_ValidateLinkGameData(const struct MysteryGiftLinkGameData * data);
|
||||
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);
|
||||
bool32 WonderCard_Init(struct WonderCard * card, struct WonderCardMetadata * metadata);
|
||||
bool32 WonderNews_Init(const struct WonderNews * news);
|
||||
s32 WonderCard_Enter(void);
|
||||
s32 WonderNews_Enter(void);
|
||||
void ClearSavedWonderCardAndRelated(void);
|
||||
void ClearSavedWonderNewsAndRelated(void);
|
||||
void WonderCard_Destroy(void);
|
||||
void WonderNews_Destroy(void);
|
||||
s32 WonderCard_Exit(bool32 flag);
|
||||
s32 WonderNews_Exit(bool32 flag);
|
||||
bool32 IsSavedWonderCardGiftNotReceived(void);
|
||||
void WonderNews_AddScrollIndicatorArrowPair(void);
|
||||
void WonderNews_RemoveScrollIndicatorArrowPair(void);
|
||||
bool32 IsSendingSavedWonderNewsAllowed(void);
|
||||
bool32 IsSendingSavedWonderCardAllowed(void);
|
||||
u32 WonderNews_GetInput(u16 input);
|
||||
void ClearMysteryGift(void);
|
||||
u16 MysteryGift_GetCardStat(u32 stat);
|
||||
void MysteryGift_TryIncrementStat(u32 stat, u32 trainerId);
|
||||
u16 *GetQuestionnaireWordsPtr(void);
|
||||
void MysteryGift_DisableStats(void);
|
||||
bool32 MysteryGift_TryEnableStatsByFlagId(u16 flagId);
|
||||
u16 GetWonderCardFlagId(void);
|
||||
|
||||
#endif // GUARD_MYSTERY_GIFT_H
|
||||
@@ -0,0 +1,91 @@
|
||||
#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;
|
||||
};
|
||||
|
||||
void MysteryGiftClient_Create(void);
|
||||
u32 MysteryGiftClient_Run(u16 * endVal);
|
||||
void MysteryGiftClient_AdvanceState(void);
|
||||
void * MysteryGiftClient_GetMsg(void);
|
||||
void MysteryGiftClient_SetParam(u32 value);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_CLIENT_H
|
||||
@@ -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
|
||||
@@ -3,11 +3,13 @@
|
||||
|
||||
extern bool8 gGiftIsFromEReader;
|
||||
|
||||
bool32 PrintMysteryGiftMenuMessage(u8 * cmdPtr, const u8 * src);
|
||||
void AddTextPrinterToWindow1(const u8 *str);
|
||||
void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
|
||||
void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32);
|
||||
void c2_mystery_gift(void);
|
||||
void c2_mystery_gift_e_reader_run(void);
|
||||
s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 * str);
|
||||
void CB2_InitMysteryGift(void);
|
||||
void CB2_MysteryGiftEReader(void);
|
||||
s8 DoMysteryGiftYesNo(u8 * textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 * str);
|
||||
void MG_DrawTextBorder(u8 windowId);
|
||||
u16 GetMysteryGiftBaseBlock(void);
|
||||
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
#ifndef GUARD_MYSTERY_GIFT_SERVER_H
|
||||
#define GUARD_MYSTERY_GIFT_SERVER_H
|
||||
|
||||
#include "global.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, // In Emerald, this was separated into SVR_CHECK_GAME_DATA_CARD and SVR_CHECK_GAME_DATA_NEWS
|
||||
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,
|
||||
};
|
||||
|
||||
// Create arguments for SVR_LOAD_CLIENT_SCRIPT or SVR_LOAD_MSG
|
||||
// (a script/text size and pointer to send to the client)
|
||||
#define PTR_ARG(pointer) .param = sizeof(pointer), .ptr = pointer
|
||||
|
||||
// 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;
|
||||
bool32 param;
|
||||
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 manager;
|
||||
};
|
||||
|
||||
void MysterGiftServer_CreateForNews(void);
|
||||
void MysterGiftServer_CreateForCard(void);
|
||||
u32 MysterGiftServer_Run(u16 * endVal);
|
||||
|
||||
#endif //GUARD_MYSTERY_GIFT_SERVER_H
|
||||
@@ -15,6 +15,90 @@ enum
|
||||
FLAG_SET_CAUGHT
|
||||
};
|
||||
|
||||
// IDs for the pokedex area markers
|
||||
enum {
|
||||
DEX_AREA_NONE,
|
||||
DEX_AREA_PALLET_TOWN,
|
||||
DEX_AREA_VIRIDIAN_CITY,
|
||||
DEX_AREA_PEWTER_CITY,
|
||||
DEX_AREA_CERULEAN_CITY,
|
||||
DEX_AREA_LAVENDER_TOWN,
|
||||
DEX_AREA_VERMILION_CITY,
|
||||
DEX_AREA_CELADON_CITY,
|
||||
DEX_AREA_FUCHSIA_CITY,
|
||||
DEX_AREA_CINNABAR_ISLAND,
|
||||
DEX_AREA_INDIGO_PLATEAU,
|
||||
DEX_AREA_SAFFRON_CITY,
|
||||
DEX_AREA_ROUTE_1,
|
||||
DEX_AREA_ROUTE_2,
|
||||
DEX_AREA_ROUTE_3,
|
||||
DEX_AREA_ROUTE_4,
|
||||
DEX_AREA_ROUTE_5,
|
||||
DEX_AREA_ROUTE_6,
|
||||
DEX_AREA_ROUTE_7,
|
||||
DEX_AREA_ROUTE_8,
|
||||
DEX_AREA_ROUTE_9,
|
||||
DEX_AREA_ROUTE_10,
|
||||
DEX_AREA_ROUTE_11,
|
||||
DEX_AREA_ROUTE_12,
|
||||
DEX_AREA_ROUTE_13,
|
||||
DEX_AREA_ROUTE_14,
|
||||
DEX_AREA_ROUTE_15,
|
||||
DEX_AREA_ROUTE_16,
|
||||
DEX_AREA_ROUTE_17,
|
||||
DEX_AREA_ROUTE_18,
|
||||
DEX_AREA_ROUTE_19,
|
||||
DEX_AREA_ROUTE_20,
|
||||
DEX_AREA_ROUTE_21,
|
||||
DEX_AREA_ROUTE_22,
|
||||
DEX_AREA_ROUTE_23,
|
||||
DEX_AREA_ROUTE_24,
|
||||
DEX_AREA_ROUTE_25,
|
||||
DEX_AREA_VIRIDIAN_FOREST,
|
||||
DEX_AREA_DIGLETTS_CAVE,
|
||||
DEX_AREA_MT_MOON,
|
||||
DEX_AREA_CERULEAN_CAVE,
|
||||
DEX_AREA_ROCK_TUNNEL,
|
||||
DEX_AREA_POWER_PLANT,
|
||||
DEX_AREA_POKEMON_TOWER,
|
||||
DEX_AREA_SAFARI_ZONE,
|
||||
DEX_AREA_SEAFOAM_ISLANDS,
|
||||
DEX_AREA_POKEMON_MANSION,
|
||||
DEX_AREA_VICTORY_ROAD,
|
||||
DEX_AREA_ONE_ISLAND,
|
||||
DEX_AREA_TWO_ISLAND,
|
||||
DEX_AREA_THREE_ISLAND,
|
||||
DEX_AREA_FOUR_ISLAND,
|
||||
DEX_AREA_FIVE_ISLAND,
|
||||
DEX_AREA_SIX_ISLAND, // Not associated with any MAPSEC
|
||||
DEX_AREA_SEVEN_ISLAND, // Not associated with any MAPSEC
|
||||
DEX_AREA_KINDLE_ROAD,
|
||||
DEX_AREA_TREASURE_BEACH,
|
||||
DEX_AREA_CAPE_BRINK,
|
||||
DEX_AREA_BOND_BRIDGE,
|
||||
DEX_AREA_THREE_ISLE_PATH,
|
||||
DEX_AREA_RESORT_GORGEOUS,
|
||||
DEX_AREA_WATER_LABYRINTH,
|
||||
DEX_AREA_FIVE_ISLE_MEADOW,
|
||||
DEX_AREA_MEMORIAL_PILLAR,
|
||||
DEX_AREA_OUTCAST_ISLAND,
|
||||
DEX_AREA_GREEN_PATH,
|
||||
DEX_AREA_WATER_PATH,
|
||||
DEX_AREA_RUIN_VALLEY,
|
||||
DEX_AREA_TRAINER_TOWER,
|
||||
DEX_AREA_CANYON_ENTRANCE,
|
||||
DEX_AREA_SEVAULT_CANYON,
|
||||
DEX_AREA_TANOBY_RUINS,
|
||||
DEX_AREA_MT_EMBER,
|
||||
DEX_AREA_BERRY_FOREST,
|
||||
DEX_AREA_ICEFALL_CAVE,
|
||||
DEX_AREA_LOST_CAVE,
|
||||
DEX_AREA_ALTERING_CAVE,
|
||||
DEX_AREA_PATTERN_BUSH,
|
||||
DEX_AREA_DOTTED_HOLE,
|
||||
DEX_AREA_TANOBY_CHAMBER,
|
||||
};
|
||||
|
||||
struct PokedexEntry
|
||||
{
|
||||
/*0x00*/ u8 categoryName[12];
|
||||
|
||||
@@ -1,19 +1,9 @@
|
||||
#ifndef GUARD_POKEDEX_AREA_MARKERS_H
|
||||
#define GUARD_POKEDEX_AREA_MARKERS_H
|
||||
|
||||
struct PAM_TaskData
|
||||
{
|
||||
struct SubspriteTable subsprites;
|
||||
void *buffer;
|
||||
u8 unk_0C;
|
||||
u8 spr_id;
|
||||
u16 tilesTag;
|
||||
u16 unk_10;
|
||||
};
|
||||
|
||||
void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites);
|
||||
void Dtor_PokedexAreaMarkers(u8 taskId);
|
||||
u8 Ctor_PokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y);
|
||||
u8 PokedexAreaMarkers_Any(u8 taskId);
|
||||
void GetAreaMarkerSubsprite(s32 i, s32 dexArea, struct Subsprite * subsprites);
|
||||
void DestroyPokedexAreaMarkers(u8 taskId);
|
||||
u8 CreatePokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y);
|
||||
u8 GetNumPokedexAreaMarkers(u8 taskId);
|
||||
|
||||
#endif //GUARD_POKEDEX_AREA_MARKERS_H
|
||||
|
||||
+7
-7
@@ -204,7 +204,7 @@ void SaveQuestLogData(void);
|
||||
void QuestLog_CutRecording(void);
|
||||
u8 sub_8112CAC(void);
|
||||
void ResetDeferredLinkEvent(void);
|
||||
void FinishRecordingQuestLogScene(void);
|
||||
void QL_FinishRecordingScene(void);
|
||||
void QuestLogEvents_HandleEndTrainerBattle(void);
|
||||
void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
|
||||
void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
|
||||
@@ -235,13 +235,13 @@ u8 GetQuestLogStartType(void);
|
||||
void sub_81113E4(void);
|
||||
void sub_8111438(void);
|
||||
void StartRecordingQuestLogAction(u16 eventId);
|
||||
bool8 WillCommandOfSizeFitInSav1Record(u16 *cursor, size_t size);
|
||||
bool8 sub_8110944(const void *a0, size_t cmdSize);
|
||||
bool8 QL_IsRoomToSaveAction(const void *cursor, size_t size);
|
||||
bool8 QL_IsRoomToSaveEvent(const void *cursor, size_t size);
|
||||
|
||||
void sub_8113BD8(void);
|
||||
void ResetUnk203B044(void);
|
||||
u16 *QL_RecordAction_FF(u16 *);
|
||||
u16 *QL_LoadAction_FE(u16 *, struct QuestLogAction *);
|
||||
u16 *QL_RecordAction_SceneEnd(u16 *);
|
||||
u16 *QL_LoadAction_Wait(u16 *, struct QuestLogAction *);
|
||||
u16 *QL_RecordAction_Input(u16 *, struct QuestLogAction *);
|
||||
u16 *QL_LoadAction_Input(u16 *, struct QuestLogAction *);
|
||||
u16 *QL_RecordAction_MovementOrGfxChange(u16 *, struct QuestLogAction *);
|
||||
@@ -249,9 +249,9 @@ u16 *QL_LoadAction_MovementOrGfxChange(u16 *, struct QuestLogAction *);
|
||||
void QL_EnableRecordingSteps(void);
|
||||
u16 *QuestLog_SkipCommand(u16 *, u16 **);
|
||||
void sub_8113ABC(const u16 *);
|
||||
u16 *QL_LoadAction_FF(u16 *, struct QuestLogAction *);
|
||||
u16 *QL_LoadAction_SceneEnd(u16 *, struct QuestLogAction *);
|
||||
bool8 sub_8113AE8(const u16 *);
|
||||
bool8 sub_8113B44(const u16 *);
|
||||
void TryRecordEvent41_IncCursor(u16);
|
||||
void QL_RecordWait(u16);
|
||||
|
||||
#endif //GUARD_QUEST_LOG_H
|
||||
|
||||
@@ -14,7 +14,7 @@ enum {
|
||||
u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill);
|
||||
u8 *GetMapNameGeneric(u8 *dest, u16 mapsec);
|
||||
u8 *GetMapNameGeneric_(u8 *dest, u16 mapsec);
|
||||
void InitRegionMapWithExitCB(u8 a0, void (*a1)(void));
|
||||
void InitRegionMapWithExitCB(u8 type, void (*callback)(void));
|
||||
void CB2_OpenFlyMap(void);
|
||||
|
||||
#endif // GUARD_REGION_MAP_H
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
#ifndef GUARD_RESET_SAVE_HEAP_H
|
||||
#define GUARD_RESET_SAVE_HEAP_H
|
||||
|
||||
// Exported type declarations
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
|
||||
void ResetSaveHeap(void);
|
||||
void ReloadSave(void);
|
||||
|
||||
#endif //GUARD_RESET_SAVE_HEAP_H
|
||||
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H
|
||||
#define GUARD_UNION_ROOM_PLAYER_AVATAR_H
|
||||
|
||||
#include "union_room.h"
|
||||
|
||||
u8 ZeroUnionObjWork(struct UnionObj * ptr);
|
||||
void DeleteUnionObjWorkAndStopTask(void);
|
||||
void CreateGroupMemberObjectsInvisible(u8 *spriteIds, s32 group);
|
||||
void DestroyGroupMemberObjects(u8 *spriteIds);
|
||||
void MakeGroupAssemblyAreasPassable(void);
|
||||
void ScheduleUnionRoomPlayerRefresh(struct UnkStruct_URoom *uroom_p);
|
||||
void HandleUnionRoomPlayerRefresh(struct UnkStruct_URoom *uroom_p);
|
||||
bool32 RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(struct UnkStruct_Main0 *main0_p, s16 *member_p, s16 *group_p, u8 *spriteIds);
|
||||
void UpdateUnionGroupMemberFacing(u32 member, u32 group, struct UnkStruct_Main0 *main0_p);
|
||||
|
||||
#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H
|
||||
+3
-3
@@ -103,8 +103,8 @@ extern const u8 gText_ItemCantBeHeld[];
|
||||
extern const u8 gText_TMCase[];
|
||||
extern const u8 gText_Close[];
|
||||
extern const u8 gText_TMCaseWillBePutAway[];
|
||||
extern const u8 gText_FontSize0[];
|
||||
extern const u8 gText_FontSize2[];
|
||||
extern const u8 gText_FontSmall[];
|
||||
extern const u8 gText_FontNormal[];
|
||||
extern const u8 gText_OhNoICantBuyThat[];
|
||||
extern const u8 gText_HowManyWouldYouLikeToSell[];
|
||||
extern const u8 gText_ICanPayThisMuch_WouldThatBeOkay[];
|
||||
@@ -1141,7 +1141,7 @@ extern const u8 gText_PeopleBattling[];
|
||||
extern const u8 gText_PeopleInUnionRoom[];
|
||||
extern const u8 gText_PeopleCommunicating[];
|
||||
|
||||
// mevent
|
||||
// mystery_gift
|
||||
extern const u8 gJPText_ReceiveMysteryGiftWithEReader[];
|
||||
extern const u8 gJPText_SelectConnectFromEReaderMenu[];
|
||||
extern const u8 gJPText_SelectConnectWithGBA[];
|
||||
|
||||
+40
-192
@@ -2,157 +2,7 @@
|
||||
#define GUARD_TEXT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
#define CHAR_SPACE 0x00
|
||||
#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_COLON 0xF0
|
||||
|
||||
#define CHAR_DYNAMIC_PLACEHOLDER 0xF7
|
||||
#define CHAR_KEYPAD_ICON 0xF8
|
||||
#define CHAR_EXTRA_SYMBOL 0xF9
|
||||
#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
|
||||
|
||||
// CHAR_EXTRA_SYMBOL chars
|
||||
#define CHAR_LV_2 0x05
|
||||
|
||||
#define TEXT_COLOR_TRANSPARENT 0x0
|
||||
#define TEXT_COLOR_WHITE 0x1
|
||||
#define TEXT_COLOR_DARK_GRAY 0x2
|
||||
#define TEXT_COLOR_LIGHT_GRAY 0x3
|
||||
#define TEXT_COLOR_RED 0x4
|
||||
#define TEXT_COLOR_LIGHT_RED 0x5
|
||||
#define TEXT_COLOR_GREEN 0x6
|
||||
#define TEXT_COLOR_LIGHT_GREEN 0x7
|
||||
#define TEXT_COLOR_BLUE 0x8
|
||||
#define TEXT_COLOR_LIGHT_BLUE 0x9
|
||||
#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white
|
||||
#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green
|
||||
#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white
|
||||
#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine
|
||||
#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green
|
||||
#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean
|
||||
|
||||
#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_MAGMA 0x8
|
||||
#define PLACEHOLDER_ID_AQUA 0x9
|
||||
#define PLACEHOLDER_ID_MAXIE 0xA
|
||||
#define PLACEHOLDER_ID_ARCHIE 0xB
|
||||
#define PLACEHOLDER_ID_GROUDON 0xC
|
||||
#define PLACEHOLDER_ID_KYOGRE 0xD
|
||||
|
||||
// battle placeholders are located in battle_message.h
|
||||
#define EXT_CTRL_CODE_COLOR 0x1
|
||||
#define EXT_CTRL_CODE_HIGHLIGHT 0x2
|
||||
#define EXT_CTRL_CODE_SHADOW 0x3
|
||||
#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x4
|
||||
#define EXT_CTRL_CODE_PALETTE 0x5
|
||||
#define EXT_CTRL_CODE_FONT 0x6
|
||||
#define EXT_CTRL_CODE_RESET_FONT 0x7
|
||||
#define EXT_CTRL_CODE_PAUSE 0x8
|
||||
#define EXT_CTRL_CODE_WAIT_BUTTON 0x9
|
||||
#define EXT_CTRL_CODE_WAIT_SE 0xA
|
||||
#define EXT_CTRL_CODE_PLAY_BGM 0xB
|
||||
#define EXT_CTRL_CODE_ESCAPE 0xC
|
||||
#define EXT_CTRL_CODE_SHIFT_RIGHT 0xD
|
||||
#define EXT_CTRL_CODE_SHIFT_DOWN 0xE
|
||||
#define EXT_CTRL_CODE_FILL_WINDOW 0xF
|
||||
#define EXT_CTRL_CODE_PLAY_SE 0x10
|
||||
#define EXT_CTRL_CODE_CLEAR 0x11
|
||||
#define EXT_CTRL_CODE_SKIP 0x12
|
||||
#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 EXT_CTRL_CODE_STOP_BGM 0x17
|
||||
#define EXT_CTRL_CODE_RESUME_BGM 0x18
|
||||
#include "characters.h"
|
||||
|
||||
#define NUM_TEXT_PRINTERS 32
|
||||
|
||||
@@ -163,13 +13,33 @@
|
||||
#define TEXT_SKIP_DRAW 0xFF
|
||||
|
||||
enum {
|
||||
FONT_0,
|
||||
FONT_1,
|
||||
FONT_2,
|
||||
FONT_3,
|
||||
FONT_4,
|
||||
FONT_5,
|
||||
FONT_SMALL,
|
||||
FONT_NORMAL_COPY_1,
|
||||
FONT_NORMAL,
|
||||
FONT_NORMAL_COPY_2,
|
||||
FONT_MALE,
|
||||
FONT_FEMALE,
|
||||
FONT_BRAILLE,
|
||||
FONT_BOLD,
|
||||
};
|
||||
|
||||
// Return values for font functions
|
||||
enum {
|
||||
RENDER_PRINT,
|
||||
RENDER_FINISH,
|
||||
RENDER_REPEAT, // Run render function again, if e.g. a control code is encountered.
|
||||
RENDER_UPDATE,
|
||||
};
|
||||
|
||||
// Text printer states read by RenderText / FontFunc_Braille
|
||||
enum {
|
||||
RENDER_STATE_HANDLE_CHAR,
|
||||
RENDER_STATE_WAIT,
|
||||
RENDER_STATE_CLEAR,
|
||||
RENDER_STATE_SCROLL_START,
|
||||
RENDER_STATE_SCROLL,
|
||||
RENDER_STATE_WAIT_SE,
|
||||
RENDER_STATE_PAUSE,
|
||||
};
|
||||
|
||||
enum
|
||||
@@ -259,13 +129,6 @@ struct GlyphWidthFunc
|
||||
s32 (*func)(u16 glyphId, bool32 isJapanese);
|
||||
};
|
||||
|
||||
struct KeypadIcon
|
||||
{
|
||||
u16 tileOffset;
|
||||
u8 width;
|
||||
u8 height;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
u8 canABSpeedUpPrint:1;
|
||||
u8 useAlternateDownArrow:1;
|
||||
@@ -297,15 +160,13 @@ u8 GetLastTextColor(u8 colorType);
|
||||
void CopyGlyphToWindow(struct TextPrinter *x);
|
||||
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width);
|
||||
|
||||
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);
|
||||
u16 Font6Func(struct TextPrinter *textPrinter);
|
||||
u16 FontFunc_Small(struct TextPrinter *textPrinter);
|
||||
u16 FontFunc_NormalCopy1(struct TextPrinter *textPrinter);
|
||||
u16 FontFunc_Normal(struct TextPrinter *textPrinter);
|
||||
u16 FontFunc_NormalCopy2(struct TextPrinter *textPrinter);
|
||||
u16 FontFunc_Male(struct TextPrinter *textPrinter);
|
||||
u16 FontFunc_Female(struct TextPrinter *textPrinter);
|
||||
u16 FontFunc_Braille(struct TextPrinter *textPrinter);
|
||||
|
||||
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
|
||||
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);
|
||||
@@ -317,31 +178,18 @@ void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *c
|
||||
u16 RenderText(struct TextPrinter *textPrinter);
|
||||
s32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
|
||||
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
|
||||
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7);
|
||||
u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7);
|
||||
u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
|
||||
u8 GetKeypadIconTileOffset(u8 keypadIconId);
|
||||
u8 GetKeypadIconWidth(u8 keypadIconId);
|
||||
u8 GetKeypadIconHeight(u8 keypadIconId);
|
||||
u8 GetFontAttribute(u8 fontId, u8 attributeId);
|
||||
u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension);
|
||||
void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont7(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont8(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyphFont9(u16 glyphId);
|
||||
s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
|
||||
void sub_80062B0(struct Sprite *sprite);
|
||||
u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
|
||||
void DecompressGlyph_Small(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyph_Normal(u16 glyphId, bool32 isJapanese);
|
||||
void DecompressGlyph_Female(u16 glyphId, bool32 isJapanese);
|
||||
s32 GetGlyphWidth_Braille(u16 font_type, bool32 isJapanese);
|
||||
u8 CreateTextCursorSprite(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
|
||||
void DestroyTextCursorSprite(u8 spriteId);
|
||||
s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese);
|
||||
|
||||
#endif // GUARD_TEXT_H
|
||||
|
||||
+13
-9
@@ -1,17 +1,21 @@
|
||||
#ifndef GUARD_TM_CASE_H
|
||||
#define GUARD_TM_CASE_H
|
||||
|
||||
enum TmCaseType
|
||||
{
|
||||
TMCASE_FROMFIELD,
|
||||
TMCASE_FROMPARTYGIVE,
|
||||
TMCASE_FROMMARTSELL,
|
||||
TMCASE_FROMPOKEMONSTORAGEPC,
|
||||
TMCASE_FROMBATTLE,
|
||||
TMCASE_NA
|
||||
// Values for 'type' argument to InitTMCase
|
||||
enum {
|
||||
TMCASE_FIELD,
|
||||
TMCASE_GIVE_PARTY,
|
||||
TMCASE_SELL,
|
||||
TMCASE_GIVE_PC,
|
||||
TMCASE_POKEDUDE,
|
||||
TMCASE_REOPENING,
|
||||
};
|
||||
|
||||
void InitTMCase(u8 a0, void (* a1)(void), u8 a2);
|
||||
// Alternative value for 'allowSelectClose' argument to InitTMCase.
|
||||
// Indicates that the previous value should be preserved
|
||||
#define TMCASE_KEEP_PREV 0xFF
|
||||
|
||||
void InitTMCase(u8 type, void (* exitCallback)(void), bool8 allowSelectClose);
|
||||
void ResetTMCaseCursorPos(void);
|
||||
void Pokedude_InitTMCase(void);
|
||||
|
||||
|
||||
+3
-3
@@ -13,10 +13,10 @@ extern const u8 gText_FemaleSymbol4[];
|
||||
extern const u8 gText_GenderlessSymbol[];
|
||||
|
||||
extern const u16 gTradeOrHatchMonShadowTilemap[];
|
||||
void CB2_ReturnFromLinkTrade(void);
|
||||
void CB2_StartCreateTradeMenu(void);
|
||||
s32 Trade_CalcLinkPlayerCompatibilityParam(void);
|
||||
s32 CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isEventLegal);
|
||||
s32 GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isEventLegal);
|
||||
s32 CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData rfuPlayer, u16 species2, u16 species, u8 isEventLegal);
|
||||
s32 GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData rfuPlayer, struct RfuGameCompatibilityData rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isEventLegal);
|
||||
void CB2_ReturnToTradeMenuFromSummary(void);
|
||||
|
||||
#endif //GUARD_TRADE_H
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_TRADE_SCENE_H
|
||||
#define GUARD_TRADE_SCENE_H
|
||||
|
||||
void CB2_InitTradeAnim_LinkTrade(void);
|
||||
void CB2_LinkTrade(void);
|
||||
void CreateInGameTradePokemon(void);
|
||||
void DoInGameTradeScene(void);
|
||||
void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed);
|
||||
|
||||
@@ -8,7 +8,7 @@ bool16 ResetAllPicSprites(void);
|
||||
u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
|
||||
u16 FreeAndDestroyMonPicSprite(u16);
|
||||
u16 FreeAndDestroyTrainerPicSprite(u16);
|
||||
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass);
|
||||
u16 PlayerGenderToFrontTrainerPicId(u8 gender, bool8 getClass);
|
||||
u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
|
||||
u16 LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId);
|
||||
u16 CreateMonPicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys);
|
||||
|
||||
+85
-97
@@ -3,58 +3,60 @@
|
||||
|
||||
#include "global.h"
|
||||
#include "link_rfu.h"
|
||||
#include "constants/union_room.h"
|
||||
|
||||
// Return value of IsRequestedTypeAndSpeciesInPlayerParty
|
||||
#define UR_TRADE_MATCH 0
|
||||
#define UR_TRADE_NOTYPE 1
|
||||
#define UR_TRADE_NOEGG 2
|
||||
// In the Union Room the player is only ever connected to ≤ 4 other players.
|
||||
// However, there can be up to MAX_UNION_ROOM_LEADERS (8) object events to
|
||||
// represent leaders of recently discovered link groups, and each of those groups
|
||||
// may have up to MAX_RFU_PLAYERS (5) players in it including the leader.
|
||||
// These players are represented on-screen by NPC sprites drawn around the leader.
|
||||
// Thus there can be 40 sprites of other players on-screen, in 8 groups of 5.
|
||||
#define NUM_UNION_ROOM_SPRITES (MAX_UNION_ROOM_LEADERS * MAX_RFU_PLAYERS)
|
||||
|
||||
#define UROOM_MAX_GROUP_COUNT 8
|
||||
#define UROOM_MAX_PARTY_SIZE 5
|
||||
// The maximum number of recently connected players that can be tracked.
|
||||
// Note that this is significantly less than NUM_UNION_ROOM_SPRITES, i.e. not
|
||||
// every player that can be shown in the Union Room can be tracked at once.
|
||||
// Information such as a group member's gender can instead be read from partnerInfo
|
||||
// of the leader's RfuGameData by tracking at least all of the group leaders.
|
||||
#define MAX_RFU_PLAYER_LIST_SIZE 16
|
||||
|
||||
struct UnionGnameUnamePair
|
||||
struct RfuPlayerData
|
||||
{
|
||||
struct GFtgtGname gname;
|
||||
u8 ALIGNED(4) uname[PLAYER_NAME_LENGTH + 1];
|
||||
struct RfuGameData data;
|
||||
u8 ALIGNED(4) name[RFU_USER_NAME_LENGTH];
|
||||
};
|
||||
|
||||
struct UnkStruct_x1C
|
||||
struct RfuPlayer
|
||||
{
|
||||
struct UnionGnameUnamePair gname_uname;
|
||||
struct RfuPlayerData rfu;
|
||||
u16 timeoutCounter;
|
||||
u8 groupScheduledAnim:2;
|
||||
bool8 useRedText:1; // Never set
|
||||
u8 newPlayerCountdown;
|
||||
u8 unused;
|
||||
};
|
||||
|
||||
struct RfuPlayerList
|
||||
{
|
||||
struct RfuPlayer players[MAX_RFU_PLAYER_LIST_SIZE];
|
||||
};
|
||||
|
||||
struct RfuIncomingPlayer
|
||||
{
|
||||
struct RfuPlayerData rfu;
|
||||
u8 active:1;
|
||||
};
|
||||
|
||||
struct UnkStruct_x20
|
||||
struct RfuIncomingPlayerList
|
||||
{
|
||||
struct UnionGnameUnamePair gname_uname;
|
||||
u16 field_18;
|
||||
u8 groupScheduledAnim:2;
|
||||
bool8 field_1A_1:1;
|
||||
u8 field_1B;
|
||||
u32 field_1C; // unused
|
||||
struct RfuIncomingPlayer players[MAX_RFU_PLAYERS];
|
||||
};
|
||||
|
||||
// These arrays are dynamically allocated but must be
|
||||
// represented as structs to match.
|
||||
// Don't ask me why.
|
||||
|
||||
// FIXME: Find a way around this.
|
||||
|
||||
struct UnkStruct_Main0
|
||||
struct WirelessLink_Leader
|
||||
{
|
||||
struct UnkStruct_x20 arr[0];
|
||||
};
|
||||
|
||||
struct UnkStruct_Main4
|
||||
{
|
||||
struct UnkStruct_x1C arr[0];
|
||||
};
|
||||
|
||||
struct UnkStruct_Leader
|
||||
{
|
||||
struct UnkStruct_Main0 * field_0;
|
||||
struct UnkStruct_Main4 * field_4;
|
||||
struct UnkStruct_Main0 * field_8;
|
||||
struct RfuPlayerList * playerList;
|
||||
struct RfuIncomingPlayerList * incomingPlayerList;
|
||||
struct RfuPlayerList * playerListBackup;
|
||||
u8 state;
|
||||
u8 textState;
|
||||
u8 delayTimerAfterOk;
|
||||
@@ -63,36 +65,35 @@ struct UnkStruct_Leader
|
||||
u8 nPlayerModeWindowId;
|
||||
u8 listTaskId;
|
||||
u8 playerCount;
|
||||
u8 messageWindowId;
|
||||
u8 field_15;
|
||||
u8 field_16;
|
||||
u16 yesNoWindowId;
|
||||
u8 unused;
|
||||
u8 listenTaskId;
|
||||
u8 activity;
|
||||
u8 field_19;
|
||||
u16 field_1A;
|
||||
u8 joinRequestAnswer;
|
||||
u16 memberConfirmTimeout;
|
||||
};
|
||||
|
||||
struct UnkStruct_Group
|
||||
struct WirelessLink_Group
|
||||
{
|
||||
struct UnkStruct_Main0 * field_0;
|
||||
struct UnkStruct_Main4 * field_4;
|
||||
struct RfuPlayerList * playerList;
|
||||
struct RfuIncomingPlayerList * incomingPlayerList;
|
||||
u8 state;
|
||||
u8 textState;
|
||||
u8 field_A; // unused
|
||||
u8 delayTimerAfterOk; // unused
|
||||
u8 listWindowId;
|
||||
u8 bButtonCancelWindowId;
|
||||
u8 playerNameAndIdWindowId;
|
||||
u8 listTaskId;
|
||||
u8 leaderId;
|
||||
u8 field_10;
|
||||
u8 unused;
|
||||
u8 listenTaskId;
|
||||
u8 cardOrNews;
|
||||
u8 field_13; // referenced but never set
|
||||
bool8 isWonderNews;
|
||||
bool8 showListMenu; // referenced but never set
|
||||
u8 refreshTimer;
|
||||
u8 delayBeforePrint;
|
||||
};
|
||||
|
||||
struct UnionObj
|
||||
struct UnionRoomObject
|
||||
{
|
||||
u8 state;
|
||||
u8 gfxId;
|
||||
@@ -100,69 +101,56 @@ struct UnionObj
|
||||
u8 schedAnim;
|
||||
};
|
||||
|
||||
struct UnkStruct_URoom
|
||||
struct WirelessLink_URoom
|
||||
{
|
||||
/* 0x000 */ struct UnkStruct_Main0 * field_0;
|
||||
/* 0x004 */ struct UnkStruct_Main4 * field_4;
|
||||
/* 0x008 */ struct UnkStruct_Main0 * field_8;
|
||||
/* 0x00C */ struct UnkStruct_Main4 * field_C;
|
||||
/* 0x010 */ u16 field_10;
|
||||
/* 0x012 */ u16 field_12;
|
||||
/* 0x014 */ u8 state;
|
||||
/* 0x015 */ u8 stateAfterPrint;
|
||||
/* 0x016 */ u8 textState;
|
||||
/* 0x017 */ u8 field_17;
|
||||
/* 0x018 */ u8 field_18;
|
||||
/* 0x019 */ u8 field_19;
|
||||
/* 0x01A */ u8 field_1A;
|
||||
/* 0x01B */ u8 topListMenuWindowId;
|
||||
/* 0x01C */ u8 topListMenuListMenuId;
|
||||
/* 0x01D */ u8 tradeBoardSelectWindowId;
|
||||
/* 0x01E */ u8 tradeBoardDetailsWindowId;
|
||||
/* 0x01F */ u8 field_1F;
|
||||
/* 0x020 */ u8 field_20;
|
||||
/* 0x021 */ u8 spriteIds[40];
|
||||
/* 0x049 */ u8 field_49;
|
||||
/* 0x04A */ u8 tradeBoardListMenuId;
|
||||
|
||||
// For communication with potential link partners
|
||||
/* 0x04C */ u16 playerSendBuffer[6];
|
||||
/* 0x058 */ u8 activityRequestStrbufs[4][11];
|
||||
/* 0x084 */ u16 partnerYesNoResponse;
|
||||
/* 0x086 */ u16 recvActivityRequest[3]; // activity[, species, level]
|
||||
/* 0x08C */ struct UnionObj unionObjs[8];
|
||||
/* 0x0AC */ u8 trainerCardStrbufs[12][15];
|
||||
/* 0x160 */ u8 field_174[48];
|
||||
/* 0x190 */ u8 field_1A4[200];
|
||||
};
|
||||
|
||||
union UnkUnion_Main
|
||||
{
|
||||
struct UnkStruct_Leader * leader;
|
||||
struct UnkStruct_Group * group;
|
||||
struct UnkStruct_URoom * uRoom;
|
||||
struct RfuPlayerList * playerList;
|
||||
struct RfuIncomingPlayerList * incomingChildList;
|
||||
struct RfuPlayerList * spawnPlayer;
|
||||
struct RfuIncomingPlayerList * incomingParentList;
|
||||
u16 unknown; // Never read
|
||||
u16 unreadPlayerId;
|
||||
u8 state;
|
||||
u8 stateAfterPrint;
|
||||
u8 textState;
|
||||
u8 filler[4];
|
||||
u8 topListMenuWindowId;
|
||||
u8 topListMenuId;
|
||||
u8 tradeBoardMainWindowId;
|
||||
u8 tradeBoardHeaderWindowId;
|
||||
u8 unused1;
|
||||
u8 searchTaskId;
|
||||
u8 spriteIds[NUM_UNION_ROOM_SPRITES];
|
||||
u8 unused2;
|
||||
u8 tradeBoardListMenuId;
|
||||
// For communication with potential link partners
|
||||
u16 playerSendBuffer[6];
|
||||
u8 activityRequestStrbufs[4][11];
|
||||
u16 partnerYesNoResponse;
|
||||
u16 recvActivityRequest[3]; // activity[, species, level]
|
||||
struct UnionRoomObject objects[MAX_UNION_ROOM_LEADERS];
|
||||
u8 trainerCardStrBuffer[12][15];
|
||||
u8 trainerCardColorStrBuffer[48];
|
||||
u8 trainerCardMsgStrBuffer[200];
|
||||
};
|
||||
|
||||
struct UnionRoomTrade
|
||||
{
|
||||
u16 field_0;
|
||||
u16 state;
|
||||
u16 type;
|
||||
u32 playerPersonality;
|
||||
u8 field_8;
|
||||
u8 field_9;
|
||||
u8 offerPlayerId;
|
||||
u16 playerSpecies;
|
||||
u16 playerLevel;
|
||||
u16 species;
|
||||
u16 level;
|
||||
u16 field_12;
|
||||
u32 personality;
|
||||
};
|
||||
|
||||
extern struct GFtgtGnameSub gPartnerTgtGnameSub;
|
||||
extern struct RfuGameCompatibilityData gRfuPartnerCompatibilityData;
|
||||
extern u16 gUnionRoomOfferedSpecies;
|
||||
extern u8 gUnionRoomRequestedMonType;
|
||||
|
||||
void StartUnionRoomBattle(u16 battleFlags);
|
||||
u8 UnionRoom_CreateTask_CallCB2ReturnFromLinkTrade(void);
|
||||
u8 CreateTask_CreateTradeMenu(void);
|
||||
|
||||
#endif //GUARD_UNION_ROOM_H
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H
|
||||
#define GUARD_UNION_ROOM_PLAYER_AVATAR_H
|
||||
|
||||
#include "union_room.h"
|
||||
|
||||
u8 InitUnionRoomPlayerObjects(struct UnionRoomObject * players);
|
||||
void DestroyUnionRoomPlayerObjects(void);
|
||||
void CreateUnionRoomPlayerSprites(u8 *spriteIds, s32 leaderId);
|
||||
void DestroyUnionRoomPlayerSprites(u8 *spriteIds);
|
||||
void MakeGroupAssemblyAreasPassable(void);
|
||||
void ScheduleUnionRoomPlayerRefresh(struct WirelessLink_URoom *uroom);
|
||||
void HandleUnionRoomPlayerRefresh(struct WirelessLink_URoom *uroom);
|
||||
bool32 TryInteractWithUnionRoomMember(struct RfuPlayerList *list, s16 *memberIdPtr, s16 *leaderIdPtr, u8 *spriteIds);
|
||||
void UpdateUnionRoomMemberFacing(u32 memberId, u32 leaderId, struct RfuPlayerList *list);
|
||||
|
||||
#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H
|
||||
@@ -8,6 +8,8 @@
|
||||
#define ROCK_WILD_COUNT 5
|
||||
#define FISH_WILD_COUNT 10
|
||||
|
||||
#define NUM_ALTERING_CAVE_TABLES 9
|
||||
|
||||
struct WildPokemon
|
||||
{
|
||||
u8 minLevel;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#ifndef GUARD_WILD_POKEMON_AREA_H
|
||||
#define GUARD_WILD_POKEMON_AREA_H
|
||||
|
||||
s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites);
|
||||
s32 GetSpeciesPokedexAreaMarkers(u16 species, struct Subsprite * subsprites);
|
||||
|
||||
#endif //GUARD_WILD_POKEMON_AREA_H
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef GUARD_WONDER_NEWS_H
|
||||
#define GUARD_WONDER_NEWS_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
enum {
|
||||
WONDER_NEWS_NONE,
|
||||
WONDER_NEWS_RECV_FRIEND,
|
||||
WONDER_NEWS_RECV_WIRELESS,
|
||||
WONDER_NEWS_SENT,
|
||||
};
|
||||
|
||||
void WonderNews_SetReward(u32 newsType);
|
||||
void WonderNews_Reset(void);
|
||||
void WonderNews_IncrementStepCounter(void);
|
||||
|
||||
#endif //GUARD_WONDER_NEWS_H
|
||||
Reference in New Issue
Block a user