summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h10
-rw-r--r--include/battle_anim.h4
-rw-r--r--include/battle_main.h2
-rw-r--r--include/berry_blender.h10
-rw-r--r--include/constants/battle_anim.h2
-rw-r--r--include/constants/daycare.h2
-rw-r--r--include/constants/flags.h42
-rwxr-xr-xinclude/constants/layouts.h14
-rwxr-xr-xinclude/constants/map_groups.h114
-rw-r--r--include/constants/pokemon.h2
-rw-r--r--include/constants/region_map_sections.h12
-rw-r--r--include/gba/io_reg.h10
-rw-r--r--include/gba/m4a_internal.h92
-rw-r--r--include/global.h1
-rw-r--r--include/global.tv.h82
-rw-r--r--include/graphics.h124
-rw-r--r--include/item_menu.h2
-rw-r--r--include/item_menu_icons.h2
-rw-r--r--include/link.h104
-rw-r--r--include/link_rfu.h32
-rw-r--r--include/list_menu.h4
-rw-r--r--include/palette.h2
-rw-r--r--include/pokeball.h8
-rw-r--r--include/pokeblock.h13
-rw-r--r--include/rayquaza_scene.h13
-rw-r--r--include/rom_8011DC0.h4
-rw-r--r--include/strings.h5
27 files changed, 373 insertions, 339 deletions
diff --git a/include/battle.h b/include/battle.h
index 78e7b809a..5a04c1eec 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -523,14 +523,14 @@ struct BattleAnimationInfo
u8 field_7;
u8 ballThrowCaseId;
u8 field_9_x1:1;
- u8 field_9_x2:1;
+ u8 wildMonInvisible:1;
u8 field_9_x1C:3;
u8 field_9_x20:1;
u8 field_9_x40:1;
u8 field_9_x80:1;
- u8 field_A;
+ u8 numBallParticles;
u8 field_B;
- s16 field_C;
+ s16 ballSubpx;
u8 field_E;
u8 field_F;
};
@@ -544,8 +544,8 @@ struct BattleHealthboxInfo
u8 statusAnimActive:1; // x10
u8 animFromTableActive:1; // x20
u8 specialAnimActive:1; // x40
- u8 flag_x80:1;
- u8 field_1_x1:1;
+ u8 triedShinyMonAnim:1;
+ u8 finishedShinyMonAnim:1;
u8 field_1_x1E:4;
u8 field_1_x20:1;
u8 field_1_x40:1;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 18727cc73..096d533e2 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -207,8 +207,8 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_ground.c
void AnimTask_HorizontalShake(u8 taskId);
-// battle_anim_special.c
-void sub_8172EF0(u8 battler, struct Pokemon *mon);
+// battle_anim_throw.c
+void TryShinyAnimation(u8 battler, struct Pokemon *mon);
u8 ItemIdToBallId(u16 itemId);
u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId);
diff --git a/include/battle_main.h b/include/battle_main.h
index 217b10b39..890e47f39 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -67,7 +67,7 @@ void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d);
void EndBounceEffect(u8 battlerId, bool8 b);
void SpriteCb_PlayerMonFromBall(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
-void sub_8039E84(struct Sprite *sprite);
+void SpriteCB_TrainerThrowObject(struct Sprite *sprite);
void sub_8039E9C(struct Sprite *sprite);
void nullsub_20(void);
void BeginBattleIntro(void);
diff --git a/include/berry_blender.h b/include/berry_blender.h
index e8f7bb83d..66d839389 100644
--- a/include/berry_blender.h
+++ b/include/berry_blender.h
@@ -1,6 +1,16 @@
#ifndef GUARD_BERRY_BLENDER_H
#define GUARD_BERRY_BLENDER_H
+// Indices into gSendCmd / gRecvCmds
+#define BLENDER_COMM_INPUT_STATE 0
+#define BLENDER_COMM_RESP 1
+#define BLENDER_COMM_SCORE 2
+#define BLENDER_COMM_STOP_TYPE 2 // re-used
+#define BLENDER_COMM_PLAYER_ID 3
+#define BLENDER_COMM_UNUSED 4
+#define BLENDER_COMM_PROGRESS_BAR 5
+#define BLENDER_COMM_ARROW_POS 6
+
extern u8 gInGameOpponentsNo;
void DoBerryBlending(void);
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index dfdd9f912..ebc422b18 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -376,7 +376,7 @@
#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1
#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2
#define B_ANIM_BALL_THROW 0x3
-#define B_ANIM_SAFARI_BALL_THROW 0x4
+#define B_ANIM_BALL_THROW_WITH_TRAINER 0x4
#define B_ANIM_SUBSTITUTE_TO_MON 0x5
#define B_ANIM_MON_TO_SUBSTITUTE 0x6
diff --git a/include/constants/daycare.h b/include/constants/daycare.h
index 103f920f2..adb62fab5 100644
--- a/include/constants/daycare.h
+++ b/include/constants/daycare.h
@@ -22,6 +22,6 @@
// Array buffers
#define EGG_MOVES_ARRAY_COUNT 10
-#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+#define EGG_LVL_UP_MOVES_ARRAY_COUNT (MAX_LEVEL_UP_MOVES > 50 ? MAX_LEVEL_UP_MOVES : 50)
#endif //GUARD_DAYCARE_CONSTANTS_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 2490a6244..a562b0670 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -538,27 +538,27 @@
// Hidden Items -- sorted by location
#define FLAG_HIDDEN_ITEMS_START 0x1F4
#define FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x01)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_1_CARBOS (FLAG_HIDDEN_ITEMS_START + 0x08)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_1_GREEN_SHARD (FLAG_HIDDEN_ITEMS_START + 0x09)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_1_PEARL (FLAG_HIDDEN_ITEMS_START + 0x0A)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_1_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x0B)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_1_HEART_SCALE_1 (FLAG_HIDDEN_ITEMS_START + 0x0D)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_1_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x24)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_1_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x26)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x0E)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x0F)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_STARDUST (FLAG_HIDDEN_ITEMS_START + 0x10)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_PEARL (FLAG_HIDDEN_ITEMS_START + 0x11)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_IRON (FLAG_HIDDEN_ITEMS_START + 0x13)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_YELLOW_SHARD (FLAG_HIDDEN_ITEMS_START + 0x12)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x14)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_2_BLUE_SHARD (FLAG_HIDDEN_ITEMS_START + 0x0C)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_3_STAR_PIECE (FLAG_HIDDEN_ITEMS_START + 0x15)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_3_HP_UP (FLAG_HIDDEN_ITEMS_START + 0x16)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_3_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x17)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_3_RED_SHARD (FLAG_HIDDEN_ITEMS_START + 0x18)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_4_PROTEIN (FLAG_HIDDEN_ITEMS_START + 0x19)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_4_PEARL (FLAG_HIDDEN_ITEMS_START + 0x1A)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_CARBOS (FLAG_HIDDEN_ITEMS_START + 0x08)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_GREEN_SHARD (FLAG_HIDDEN_ITEMS_START + 0x09)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_PEARL (FLAG_HIDDEN_ITEMS_START + 0x0A)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x0B)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_HEART_SCALE_1 (FLAG_HIDDEN_ITEMS_START + 0x0D)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x24)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x26)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x0E)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x0F)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_STARDUST (FLAG_HIDDEN_ITEMS_START + 0x10)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_PEARL (FLAG_HIDDEN_ITEMS_START + 0x11)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_IRON (FLAG_HIDDEN_ITEMS_START + 0x13)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_YELLOW_SHARD (FLAG_HIDDEN_ITEMS_START + 0x12)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x14)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_BLUE_SHARD (FLAG_HIDDEN_ITEMS_START + 0x0C)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_127_STAR_PIECE (FLAG_HIDDEN_ITEMS_START + 0x15)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_127_HP_UP (FLAG_HIDDEN_ITEMS_START + 0x16)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_127_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x17)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_127_RED_SHARD (FLAG_HIDDEN_ITEMS_START + 0x18)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_128_PROTEIN (FLAG_HIDDEN_ITEMS_START + 0x19)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_128_PEARL (FLAG_HIDDEN_ITEMS_START + 0x1A)
#define FLAG_HIDDEN_ITEM_FALLARBOR_TOWN_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x1C)
#define FLAG_HIDDEN_ITEM_LAVARIDGE_TOWN_ICE_HEAL (FLAG_HIDDEN_ITEMS_START + 0x00)
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_1_KEY (FLAG_HIDDEN_ITEMS_START + 0x1F)
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
index 500b82cd4..9d5e877b0 100755
--- a/include/constants/layouts.h
+++ b/include/constants/layouts.h
@@ -55,9 +55,9 @@
#define LAYOUT_ROUTE132 48
#define LAYOUT_ROUTE133 49
#define LAYOUT_ROUTE134 50
-#define LAYOUT_UNDERWATER2 51
-#define LAYOUT_UNDERWATER3 52
-#define LAYOUT_UNDERWATER4 53
+#define LAYOUT_UNDERWATER_ROUTE126 51
+#define LAYOUT_UNDERWATER_ROUTE127 52
+#define LAYOUT_UNDERWATER_ROUTE128 53
#define LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 54
#define LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 55
#define LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_1F 56
@@ -278,7 +278,7 @@
#define LAYOUT_ROUTE119_WEATHER_INSTITUTE_1F 271
#define LAYOUT_ROUTE119_WEATHER_INSTITUTE_2F 272
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 273
-#define LAYOUT_UNDERWATER1 274
+#define LAYOUT_UNDERWATER_ROUTE124 274
#define LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_1F 275
#define LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_2F 276
#define LAYOUT_SS_TIDAL_CORRIDOR 277
@@ -414,9 +414,9 @@
#define LAYOUT_MARINE_CAVE_ENTRANCE 407
#define LAYOUT_TERRA_CAVE_ENTRANCE 408
#define LAYOUT_TERRA_CAVE_END 409
-#define LAYOUT_UNDERWATER6 410
-#define LAYOUT_UNDERWATER7 411
-#define LAYOUT_UNDERWATER5 412
+#define LAYOUT_UNDERWATER_ROUTE105 410
+#define LAYOUT_UNDERWATER_ROUTE125 411
+#define LAYOUT_UNDERWATER_ROUTE129 412
#define LAYOUT_MARINE_CAVE_END 413
#define LAYOUT_TRAINER_HILL_ENTRANCE 414
#define LAYOUT_TRAINER_HILL_1F 415
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index aef9924fa..69355635b 100755
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -6,63 +6,63 @@
//
// Map Group 0
-#define MAP_PETALBURG_CITY (0 | (0 << 8))
-#define MAP_SLATEPORT_CITY (1 | (0 << 8))
-#define MAP_MAUVILLE_CITY (2 | (0 << 8))
-#define MAP_RUSTBORO_CITY (3 | (0 << 8))
-#define MAP_FORTREE_CITY (4 | (0 << 8))
-#define MAP_LILYCOVE_CITY (5 | (0 << 8))
-#define MAP_MOSSDEEP_CITY (6 | (0 << 8))
-#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8))
-#define MAP_EVER_GRANDE_CITY (8 | (0 << 8))
-#define MAP_LITTLEROOT_TOWN (9 | (0 << 8))
-#define MAP_OLDALE_TOWN (10 | (0 << 8))
-#define MAP_DEWFORD_TOWN (11 | (0 << 8))
-#define MAP_LAVARIDGE_TOWN (12 | (0 << 8))
-#define MAP_FALLARBOR_TOWN (13 | (0 << 8))
-#define MAP_VERDANTURF_TOWN (14 | (0 << 8))
-#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8))
-#define MAP_ROUTE101 (16 | (0 << 8))
-#define MAP_ROUTE102 (17 | (0 << 8))
-#define MAP_ROUTE103 (18 | (0 << 8))
-#define MAP_ROUTE104 (19 | (0 << 8))
-#define MAP_ROUTE105 (20 | (0 << 8))
-#define MAP_ROUTE106 (21 | (0 << 8))
-#define MAP_ROUTE107 (22 | (0 << 8))
-#define MAP_ROUTE108 (23 | (0 << 8))
-#define MAP_ROUTE109 (24 | (0 << 8))
-#define MAP_ROUTE110 (25 | (0 << 8))
-#define MAP_ROUTE111 (26 | (0 << 8))
-#define MAP_ROUTE112 (27 | (0 << 8))
-#define MAP_ROUTE113 (28 | (0 << 8))
-#define MAP_ROUTE114 (29 | (0 << 8))
-#define MAP_ROUTE115 (30 | (0 << 8))
-#define MAP_ROUTE116 (31 | (0 << 8))
-#define MAP_ROUTE117 (32 | (0 << 8))
-#define MAP_ROUTE118 (33 | (0 << 8))
-#define MAP_ROUTE119 (34 | (0 << 8))
-#define MAP_ROUTE120 (35 | (0 << 8))
-#define MAP_ROUTE121 (36 | (0 << 8))
-#define MAP_ROUTE122 (37 | (0 << 8))
-#define MAP_ROUTE123 (38 | (0 << 8))
-#define MAP_ROUTE124 (39 | (0 << 8))
-#define MAP_ROUTE125 (40 | (0 << 8))
-#define MAP_ROUTE126 (41 | (0 << 8))
-#define MAP_ROUTE127 (42 | (0 << 8))
-#define MAP_ROUTE128 (43 | (0 << 8))
-#define MAP_ROUTE129 (44 | (0 << 8))
-#define MAP_ROUTE130 (45 | (0 << 8))
-#define MAP_ROUTE131 (46 | (0 << 8))
-#define MAP_ROUTE132 (47 | (0 << 8))
-#define MAP_ROUTE133 (48 | (0 << 8))
-#define MAP_ROUTE134 (49 | (0 << 8))
-#define MAP_UNDERWATER1 (50 | (0 << 8))
-#define MAP_UNDERWATER2 (51 | (0 << 8))
-#define MAP_UNDERWATER3 (52 | (0 << 8))
-#define MAP_UNDERWATER4 (53 | (0 << 8))
-#define MAP_UNDERWATER5 (54 | (0 << 8))
-#define MAP_UNDERWATER6 (55 | (0 << 8))
-#define MAP_UNDERWATER7 (56 | (0 << 8))
+#define MAP_PETALBURG_CITY (0 | (0 << 8))
+#define MAP_SLATEPORT_CITY (1 | (0 << 8))
+#define MAP_MAUVILLE_CITY (2 | (0 << 8))
+#define MAP_RUSTBORO_CITY (3 | (0 << 8))
+#define MAP_FORTREE_CITY (4 | (0 << 8))
+#define MAP_LILYCOVE_CITY (5 | (0 << 8))
+#define MAP_MOSSDEEP_CITY (6 | (0 << 8))
+#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8))
+#define MAP_EVER_GRANDE_CITY (8 | (0 << 8))
+#define MAP_LITTLEROOT_TOWN (9 | (0 << 8))
+#define MAP_OLDALE_TOWN (10 | (0 << 8))
+#define MAP_DEWFORD_TOWN (11 | (0 << 8))
+#define MAP_LAVARIDGE_TOWN (12 | (0 << 8))
+#define MAP_FALLARBOR_TOWN (13 | (0 << 8))
+#define MAP_VERDANTURF_TOWN (14 | (0 << 8))
+#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8))
+#define MAP_ROUTE101 (16 | (0 << 8))
+#define MAP_ROUTE102 (17 | (0 << 8))
+#define MAP_ROUTE103 (18 | (0 << 8))
+#define MAP_ROUTE104 (19 | (0 << 8))
+#define MAP_ROUTE105 (20 | (0 << 8))
+#define MAP_ROUTE106 (21 | (0 << 8))
+#define MAP_ROUTE107 (22 | (0 << 8))
+#define MAP_ROUTE108 (23 | (0 << 8))
+#define MAP_ROUTE109 (24 | (0 << 8))
+#define MAP_ROUTE110 (25 | (0 << 8))
+#define MAP_ROUTE111 (26 | (0 << 8))
+#define MAP_ROUTE112 (27 | (0 << 8))
+#define MAP_ROUTE113 (28 | (0 << 8))
+#define MAP_ROUTE114 (29 | (0 << 8))
+#define MAP_ROUTE115 (30 | (0 << 8))
+#define MAP_ROUTE116 (31 | (0 << 8))
+#define MAP_ROUTE117 (32 | (0 << 8))
+#define MAP_ROUTE118 (33 | (0 << 8))
+#define MAP_ROUTE119 (34 | (0 << 8))
+#define MAP_ROUTE120 (35 | (0 << 8))
+#define MAP_ROUTE121 (36 | (0 << 8))
+#define MAP_ROUTE122 (37 | (0 << 8))
+#define MAP_ROUTE123 (38 | (0 << 8))
+#define MAP_ROUTE124 (39 | (0 << 8))
+#define MAP_ROUTE125 (40 | (0 << 8))
+#define MAP_ROUTE126 (41 | (0 << 8))
+#define MAP_ROUTE127 (42 | (0 << 8))
+#define MAP_ROUTE128 (43 | (0 << 8))
+#define MAP_ROUTE129 (44 | (0 << 8))
+#define MAP_ROUTE130 (45 | (0 << 8))
+#define MAP_ROUTE131 (46 | (0 << 8))
+#define MAP_ROUTE132 (47 | (0 << 8))
+#define MAP_ROUTE133 (48 | (0 << 8))
+#define MAP_ROUTE134 (49 | (0 << 8))
+#define MAP_UNDERWATER_ROUTE124 (50 | (0 << 8))
+#define MAP_UNDERWATER_ROUTE126 (51 | (0 << 8))
+#define MAP_UNDERWATER_ROUTE127 (52 | (0 << 8))
+#define MAP_UNDERWATER_ROUTE128 (53 | (0 << 8))
+#define MAP_UNDERWATER_ROUTE129 (54 | (0 << 8))
+#define MAP_UNDERWATER_ROUTE105 (55 | (0 << 8))
+#define MAP_UNDERWATER_ROUTE125 (56 | (0 << 8))
// Map Group 1
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index f026fa0e3..52eabe71b 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -204,6 +204,8 @@
#define LEVEL_UP_MOVE_LV 0xFE00
#define LEVEL_UP_END 0xFFFF
+#define MAX_LEVEL_UP_MOVES 20
+
#define MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
diff --git a/include/constants/region_map_sections.h b/include/constants/region_map_sections.h
index 5e64048dd..65aa3e1ca 100644
--- a/include/constants/region_map_sections.h
+++ b/include/constants/region_map_sections.h
@@ -52,9 +52,9 @@
#define MAPSEC_ROUTE_133 0x30
#define MAPSEC_ROUTE_134 0x31
#define MAPSEC_UNDERWATER_124 0x32
-#define MAPSEC_UNDERWATER_125 0x33
-#define MAPSEC_UNDERWATER_126 0x34
-#define MAPSEC_UNDERWATER_127 0x35
+#define MAPSEC_UNDERWATER_126 0x33
+#define MAPSEC_UNDERWATER_127 0x34
+#define MAPSEC_UNDERWATER_128 0x35
#define MAPSEC_UNDERWATER_SOOTOPOLIS 0x36
#define MAPSEC_GRANITE_CAVE 0x37
#define MAPSEC_MT_CHIMNEY 0x38
@@ -70,7 +70,7 @@
#define MAPSEC_AQUA_HIDEOUT_OLD 0x42
#define MAPSEC_SHOAL_CAVE 0x43
#define MAPSEC_SEAFLOOR_CAVERN 0x44
-#define MAPSEC_UNDERWATER_128 0x45
+#define MAPSEC_UNDERWATER_SEAFLOOR_CAVERN 0x45
#define MAPSEC_VICTORY_ROAD 0x46
#define MAPSEC_MIRAGE_ISLAND 0x47
#define MAPSEC_CAVE_OF_ORIGIN 0x48
@@ -207,8 +207,8 @@
#define MAPSEC_MARINE_CAVE 0xCB
#define MAPSEC_UNDERWATER_MARINE_CAVE 0xCC
#define MAPSEC_TERRA_CAVE 0xCD
-#define MAPSEC_UNDERWATER_TERRA_CAVE 0xCE
-#define MAPSEC_UNDERWATER_UNK1 0xCF
+#define MAPSEC_UNDERWATER_105 0xCE
+#define MAPSEC_UNDERWATER_125 0xCF
#define MAPSEC_UNDERWATER_129 0xD0
#define MAPSEC_DESERT_UNDERPASS 0xD1
#define MAPSEC_ALTERING_CAVE 0xD2
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 071a89bc5..1daa99e1d 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -553,6 +553,7 @@
#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3)
#define WININ_WIN0_OBJ (1 << 4)
#define WININ_WIN0_CLR (1 << 5)
+#define WININ_WIN0_ALL (WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR)
#define WININ_WIN1_BG0 (1 << 8)
#define WININ_WIN1_BG1 (1 << 9)
#define WININ_WIN1_BG2 (1 << 10)
@@ -560,6 +561,7 @@
#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3)
#define WININ_WIN1_OBJ (1 << 12)
#define WININ_WIN1_CLR (1 << 13)
+#define WININ_WIN1_ALL (WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR)
#define WINOUT_WIN01_BG0 (1 << 0)
#define WINOUT_WIN01_BG1 (1 << 1)
@@ -568,6 +570,7 @@
#define WINOUT_WIN01_BG_ALL (WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3)
#define WINOUT_WIN01_OBJ (1 << 4)
#define WINOUT_WIN01_CLR (1 << 5)
+#define WINOUT_WIN01_ALL (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR)
#define WINOUT_WINOBJ_BG0 (1 << 8)
#define WINOUT_WINOBJ_BG1 (1 << 9)
#define WINOUT_WINOBJ_BG2 (1 << 10)
@@ -575,6 +578,7 @@
#define WINOUT_WINOBJ_BG_ALL (WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3)
#define WINOUT_WINOBJ_OBJ (1 << 12)
#define WINOUT_WINOBJ_CLR (1 << 13)
+#define WINOUT_WINOBJ_ALL (WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)
#define WIN_RANGE(a, b) (((a) << 8) | (b))
#define WIN_RANGE2(a, b) ((b) | ((a) << 8))
@@ -585,9 +589,10 @@
#define BLDCNT_TGT1_BG1 (1 << 1)
#define BLDCNT_TGT1_BG2 (1 << 2)
#define BLDCNT_TGT1_BG3 (1 << 3)
+#define BLDCNT_TGT1_BG_ALL (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3)
#define BLDCNT_TGT1_OBJ (1 << 4)
#define BLDCNT_TGT1_BD (1 << 5)
-#define BLDCNT_TGT1_ALL (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD)
+#define BLDCNT_TGT1_ALL (BLDCNT_TGT1_BG_ALL | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD)
// Bits 6-7 select the special effect
#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
@@ -598,9 +603,10 @@
#define BLDCNT_TGT2_BG1 (1 << 9)
#define BLDCNT_TGT2_BG2 (1 << 10)
#define BLDCNT_TGT2_BG3 (1 << 11)
+#define BLDCNT_TGT2_BG_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3)
#define BLDCNT_TGT2_OBJ (1 << 12)
#define BLDCNT_TGT2_BD (1 << 13)
-#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD)
+#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG_ALL | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD)
// BLDALPHA
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index e2836c6f6..bdff1b865 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -140,55 +140,13 @@ struct SoundChannel
struct WaveData *wav;
u32 cp;
struct MusicPlayerTrack *track;
- u32 pp;
- u32 np;
- u32 d4;
+ void *pp;
+ void *np;
+ void *d4;
u16 xpi;
u16 xpc;
};
-#define MAX_DIRECTSOUND_CHANNELS 12
-
-#define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer
-
-struct SoundInfo
-{
- // This field is normally equal to ID_NUMBER but it is set to other
- // values during sensitive operations for locking purposes.
- // This field should be volatile but isn't. This could potentially cause
- // race conditions.
- u32 ident;
-
- vu8 pcmDmaCounter;
-
- // Direct Sound
- u8 reverb;
- u8 maxChans;
- u8 masterVolume;
- u8 freq;
-
- u8 mode;
- u8 c15;
- u8 pcmDmaPeriod; // number of V-blanks per PCM DMA
- u8 maxLines;
- u8 gap[3];
- s32 pcmSamplesPerVBlank;
- s32 pcmFreq;
- s32 divFreq;
- struct CgbChannel *cgbChans;
- u32 func;
- u32 intp;
- void (*CgbSound)(void);
- void (*CgbOscOff)(u8);
- u32 (*MidiKeyToCgbFreq)(u8, u8, u8);
- u32 MPlayJumpTable;
- u32 plynote;
- u32 ExtVolPit;
- u8 gap2[16];
- struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS];
- s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2];
-};
-
struct SongHeader
{
u8 trackCount;
@@ -312,7 +270,7 @@ struct MusicPlayerInfo
struct MusicPlayerTrack *tracks;
struct ToneData *tone;
u32 ident;
- u32 func;
+ void (*func)();
u32 intp;
};
@@ -334,7 +292,47 @@ struct Song
extern const struct MusicPlayer gMPlayTable[];
extern const struct Song gSongTable[];
+#define MAX_DIRECTSOUND_CHANNELS 12
+
+#define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer
+
+struct SoundInfo
+{
+ // This field is normally equal to ID_NUMBER but it is set to other
+ // values during sensitive operations for locking purposes.
+ // This field should be volatile but isn't. This could potentially cause
+ // race conditions.
+ u32 ident;
+
+ vu8 pcmDmaCounter;
+
+ // Direct Sound
+ u8 reverb;
+ u8 maxChans;
+ u8 masterVolume;
+ u8 freq;
+ u8 mode;
+ u8 c15;
+ u8 pcmDmaPeriod; // number of V-blanks per PCM DMA
+ u8 maxLines;
+ u8 gap[3];
+ s32 pcmSamplesPerVBlank;
+ s32 pcmFreq;
+ s32 divFreq;
+ struct CgbChannel *cgbChans;
+ void (*func)();
+ u32 intp;
+ void (*CgbSound)();
+ void (*CgbOscOff)(u8);
+ u32 (*MidiKeyToCgbFreq)(u8, u8, u8);
+ void (**MPlayJumpTable)();
+ void (*plynote)(u8, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
+ void (*ExtVolPit)(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
+ u32 gap2[4];
+ struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS];
+ s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2];
+};
extern u8 gMPlayMemAccArea[];
@@ -448,7 +446,7 @@ void ply_tune(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_port(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xcmd(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_endtie(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
-void ply_note(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
+void ply_note(u8, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
// extended sound command handler functions
void ply_xxx(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
diff --git a/include/global.h b/include/global.h
index 7de8d1eb3..08988eac7 100644
--- a/include/global.h
+++ b/include/global.h
@@ -102,6 +102,7 @@
#define TEST_BUTTON(field, button) ({(field) & (button);})
#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button)
#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button)
+#define JOY_HELD_RAW(button) TEST_BUTTON(gMain.heldKeysRaw, button)
#define JOY_REPEAT(button) TEST_BUTTON(gMain.newAndRepeatedKeys, button)
#define S16TOPOSFLOAT(val) \
diff --git a/include/global.tv.h b/include/global.tv.h
index b211052e0..8e1a898b6 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -32,7 +32,7 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u16 species;
/*0x04*/ u16 words[6];
- /*0x10*/ u8 playerName[8];
+ /*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x18*/ u8 language;
} fanclubLetter;
@@ -42,7 +42,7 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u16 var02;
/*0x04*/ u16 words[6];
- /*0x10*/ u8 playerName[8];
+ /*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x18*/ u8 language;
} recentHappenings;
@@ -53,11 +53,11 @@ typedef union // size = 0x24
/*0x02*/ u16 species;
/*0x04*/ u8 friendshipHighNybble:4;
/*0x04*/ u8 questionAsked:4;
- /*0x05*/ u8 playerName[8];
+ /*0x05*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x0D*/ u8 language;
/*0x0E*/ u8 pokemonNameLanguage;
/*0x0F*/ u8 filler_0F[1];
- /*0x10*/ u8 nickname[8];
+ /*0x10*/ u8 nickname[PLAYER_NAME_LENGTH + 1];
/*0x18*/ u16 words18[2];
/*0x1C*/ u16 words[4];
} fanclubOpinions;
@@ -78,7 +78,7 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 species;
- /*0x04*/ u8 pokemonName[11];
+ /*0x04*/ u8 pokemonName[POKEMON_NAME_LENGTH + 1];
/*0x0F*/ u8 trainerName[11];
/*0x1A*/ u8 random;
/*0x1B*/ u8 random2;
@@ -93,12 +93,12 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u16 species;
/*0x04*/ u16 words[2];
- /*0x08*/ u8 pokemonNickname[11];
+ /*0x08*/ u8 pokemonNickname[POKEMON_NAME_LENGTH + 1];
/*0x13*/ u8 contestCategory:3;
/*0x13*/ u8 contestRank:2;
/*0x13*/ u8 contestResult:2;
/*0x14*/ u16 move;
- /*0x16*/ u8 playerName[8];
+ /*0x16*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x1E*/ u8 language;
/*0x1F*/ u8 pokemonNameLanguage;
} bravoTrainer;
@@ -107,7 +107,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 trainerName[8];
+ /*0x02*/ u8 trainerName[PLAYER_NAME_LENGTH + 1];
/*0x0A*/ u16 species;
/*0x0C*/ u8 pokemonName[8];
/*0x14*/ u16 defeatedSpecies;
@@ -125,14 +125,14 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 losingSpecies;
- /*0x04*/ u8 losingTrainerName[8];
+ /*0x04*/ u8 losingTrainerName[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 loserAppealFlag;
/*0x0D*/ u8 round1Placing;
/*0x0e*/ u8 round2Placing;
/*0x0f*/ u8 winnerAppealFlag;
/*0x10*/ u16 move;
/*0x12*/ u16 winningSpecies;
- /*0x14*/ u8 winningTrainerName[8];
+ /*0x14*/ u8 winningTrainerName[PLAYER_NAME_LENGTH + 1];
/*0x1C*/ u8 category;
/*0x1D*/ u8 winningTrainerLanguage;
/*0x1E*/ u8 losingTrainerLanguage;
@@ -144,9 +144,9 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u8 sheen;
/*0x03*/ u8 flavor:3;
- /*0x03*/ u8 unk_03_3:2;
- /*0x04*/ u8 worstBlenderName[8];
- /*0x0C*/ u8 playerName[8];
+ /*0x03*/ u8 color:2;
+ /*0x04*/ u8 worstBlenderName[PLAYER_NAME_LENGTH + 1];
+ /*0x0C*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x14*/ u8 language;
/*0x15*/ u8 worstBlenderLanguage;
} threeCheers;
@@ -156,8 +156,8 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 speciesOpponent;
- /*0x04*/ u8 playerName[8];
- /*0x0C*/ u8 linkOpponentName[8];
+ /*0x04*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
+ /*0x0C*/ u8 linkOpponentName[PLAYER_NAME_LENGTH + 1];
/*0x14*/ u16 move;
/*0x16*/ u16 speciesPlayer;
/*0x18*/ u8 battleType;
@@ -169,10 +169,10 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 playerName[8];
+ /*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x0a*/ u8 idLo;
/*0x0b*/ u8 idHi;
- /*0x0c*/ u8 idolName[8];
+ /*0x0c*/ u8 idolName[PLAYER_NAME_LENGTH + 1];
/*0x14*/ u16 words[1];
/*0x16*/ u8 score;
/*0x17*/ u8 language;
@@ -183,9 +183,9 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 playerName[8];
+ /*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x0a*/ u8 contestCategory;
- /*0x0b*/ u8 nickname[11];
+ /*0x0b*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x16*/ u8 pokeblockState;
/*0x17*/ u8 language;
/*0x18*/ u8 pokemonNameLanguage;
@@ -198,11 +198,11 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u8 language;
/*0x03*/ u8 language2;
- /*0x04*/ u8 nickname[11];
+ /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0F*/ u8 ball;
/*0x10*/ u16 species;
/*0x12*/ u8 nBallsUsed;
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} pokemonToday;
// TVSHOW_SMART_SHOPPER
@@ -215,7 +215,7 @@ typedef union // size = 0x24
/*0x06*/ u16 itemIds[3];
/*0x0C*/ u16 itemAmounts[3];
/*0x12*/ u8 shopLocation;
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} smartshopperShow;
// TVSHOW_POKEMON_TODAY_FAILED
@@ -229,7 +229,7 @@ typedef union // size = 0x24
/*0x10*/ u8 nBallsUsed;
/*0x11*/ u8 outcome;
/*0x12*/ u8 location;
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} pokemonTodayFailed;
// TVSHOW_FISHING_ADVICE
@@ -241,7 +241,7 @@ typedef union // size = 0x24
/*0x04*/ u16 species;
/*0x06*/ u8 language;
/*0x07*/ u8 pad07[12];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} pokemonAngler;
// TVSHOW_WORLD_OF_MASTERS
@@ -255,7 +255,7 @@ typedef union // size = 0x24
/*0x0a*/ u8 location;
/*0x0b*/ u8 language;
/*0x0c*/ u8 pad0c[7];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} worldOfMasters;
// TVSHOW_TODAYS_RIVAL_TRAINER
@@ -271,7 +271,7 @@ typedef union // size = 0x24
/*0x0a*/ u16 mapLayoutId;
/*0x0c*/ u8 language;
/*0x0d*/ u8 filler_0d[6];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} rivalTrainer;
// TVSHOW_TREND_WATCHER
@@ -283,7 +283,7 @@ typedef union // size = 0x24
/*0x08*/ u8 gender;
/*0x09*/ u8 language;
/*0x0a*/ u8 filler_0a[9];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} trendWatcher;
// TVSHOW_TREASURE_INVESTIGATORS
@@ -295,7 +295,7 @@ typedef union // size = 0x24
/*0x05*/ u8 language;
/*0x06*/ u16 mapLayoutId;
/*0x08*/ u8 filler_08[11];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} treasureInvestigators;
// TVSHOW_FIND_THAT_GAMER
@@ -308,7 +308,7 @@ typedef union // size = 0x24
/*0x06*/ u8 filler_06[2];
/*0x08*/ u8 language;
/*0x09*/ u8 filler_09[10];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} findThatGamer;
// TVSHOW_BREAKING_NEWS
@@ -324,7 +324,7 @@ typedef union // size = 0x24
/*0x0c*/ u16 lastUsedMove;
/*0x0e*/ u8 language;
/*0x0f*/ u8 filler_0f[4];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} breakingNews;
// TVSHOW_SECRET_BASE_VISIT
@@ -338,7 +338,7 @@ typedef union // size = 0x24
/*0x0a*/ u16 move;
/*0x0c*/ u8 language;
/*0x0d*/ u8 filler_0d[6];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} secretBaseVisit;
// TVSHOW_LOTTO_WINNER
@@ -349,7 +349,7 @@ typedef union // size = 0x24
/*0x04*/ u8 whichPrize;
/*0x05*/ u8 language;
/*0x06*/ u8 filler_06[13];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} lottoWinner;
// TVSHOW_BATTLE_SEMINAR
@@ -364,7 +364,7 @@ typedef union // size = 0x24
/*0x10*/ u8 nOtherMoves;
/*0x11*/ u8 language;
/*0x12*/ u8 filler_12[1];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} battleSeminar;
// TVSHOW_TRAINER_FAN_CLUB
@@ -375,7 +375,7 @@ typedef union // size = 0x24
/*0x04*/ u16 words[2];
/*0x08*/ u8 language;
/*0x09*/ u8 filler_09[10];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} trainerFanClub;
// TVSHOW_CUTIES
@@ -384,11 +384,11 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u8 nRibbons;
/*0x03*/ u8 selectedRibbon;
- /*0x04*/ u8 nickname[11];
+ /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0f*/ u8 language;
/*0x10*/ u8 pokemonNameLanguage;
/*0x11*/ u8 filler_12[2];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} cuties;
// TVSHOW_FRONTIER
@@ -403,7 +403,7 @@ typedef union // size = 0x24
/*0x0c*/ u8 language;
/*0x0d*/ u8 facility;
/*0x0e*/ u8 filler_0e[5];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} frontier;
// TVSHOW_NUMBER_ONE
@@ -414,7 +414,7 @@ typedef union // size = 0x24
/*0x04*/ u8 actionIdx;
/*0x05*/ u8 language;
/*0x06*/ u8 filler_06[13];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} numberOne;
// TVSHOW_SECRET_BASE_SECRETS
@@ -422,11 +422,11 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 stepsInBase;
- /*0x04*/ u8 baseOwnersName[8];
+ /*0x04*/ u8 baseOwnersName[PLAYER_NAME_LENGTH + 1];
/*0x0c*/ u32 flags;
/*0x10*/ u16 item;
/*0x12*/ u8 savedState;
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x1b*/ u8 language;
/*0x1c*/ u8 baseOwnersNameLanguage;
} secretBaseSecrets;
@@ -439,7 +439,7 @@ typedef union // size = 0x24
/*0x03*/ u8 nPkblkUsed;
/*0x04*/ u8 language;
/*0x05*/ u8 filler_05[14];
- /*0x13*/ u8 playerName[8];
+ /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} safariFanClub;
// Mass Outbreak
diff --git a/include/graphics.h b/include/graphics.h
index 158697af0..32268d6db 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3310,57 +3310,57 @@ extern const u32 gBerryTag_Gfx[];
extern const u32 gBerryTag_Pal[];
// rayquaza scene gfx
-extern const u32 gRaySceneGroudon_Gfx[];
-extern const u32 gRaySceneGroudon2_Gfx[];
-extern const u32 gRaySceneGroudon3_Gfx[];
-extern const u32 gRaySceneKyogre_Gfx[];
-extern const u32 gRaySceneKyogre2_Gfx[];
-extern const u32 gRaySceneKyogre3_Gfx[];
-extern const u32 gRaySceneGroudon_Pal[];
-extern const u32 gRaySceneKyogre_Pal[];
-extern const u32 gRaySceneSmoke_Gfx[];
-extern const u32 gRaySceneSmoke_Pal[];
-extern const u32 gRaySceneRayquaza_Pal[];
-extern const u32 gRaySceneRayquazaFly1_Gfx[];
-extern const u32 gRaySceneRayquazaTail_Gfx[];
-extern const u32 gRaySceneGroudonLeft_Gfx[];
-extern const u32 gRaySceneGroudonTail_Gfx[];
-extern const u32 gRaySceneKyogreRight_Gfx[];
-extern const u32 gRaySceneRayquazaHover_Gfx[];
-extern const u32 gRaySceneRayquazaFlyIn_Gfx[];
-extern const u32 gRaySceneOvercast_Gfx[];
-extern const u32 gRaySceneOvercast_Tilemap[];
-extern const u32 gRaySceneRayquaza_Gfx[];
-extern const u32 gRaySceneRayquaza_Tilemap[];
-extern const u32 gRaySceneSplash_Gfx[];
-extern const u32 gRaySceneGroudonLeft_Pal[];
-extern const u32 gRaySceneKyogreRight_Pal[];
-extern const u32 gRaySceneRayquazaHover_Pal[];
-extern const u32 gRaySceneSplash_Pal[];
-extern const u32 gRaySceneClouds_Gfx[];
-extern const u32 gRaySceneClouds_Pal[];
-extern const u32 gRaySceneClouds2_Tilemap[];
-extern const u32 gRaySceneClouds1_Tilemap[];
-extern const u32 gRaySceneClouds3_Tilemap[];
-extern const u32 gRaySceneRayquazaLight_Gfx[];
-extern const u32 gRaySceneRayquazaLight_Tilemap[];
-extern const u32 gRaySceneOvercast2_Gfx[];
-extern const u32 gRaySceneOvercast2_Tilemap[];
-extern const u32 gRaySceneOvercast2_Pal[];
-extern const u32 gRaySceneRayquazaChase_Gfx[];
-extern const u32 gRaySceneChaseStreaks_Gfx[];
-extern const u32 gRaySceneChaseBg_Gfx[];
-extern const u32 gRayChaseRayquazaChase2_Tilemap[];
-extern const u32 gRayChaseRayquazaChase_Tilemap[];
-extern const u32 gRaySceneChaseStreaks_Tilemap[];
-extern const u32 gRaySceneChaseBg_Tilemap[];
-extern const u32 gRaySceneChase_Pal[];
-extern const u32 gRaySceneHushRing_Tilemap[];
-extern const u32 gRaySceneHushBg_Tilemap[];
-extern const u32 gRaySceneHushRing_Map[];
-extern const u32 gRaySceneHushBg_Pal[];
-extern const u32 gRaySceneHushBg_Gfx[];
-extern const u32 gRaySceneHushRing_Gfx[];
+extern const u32 gRaySceneDuoFight_Groudon_Gfx[];
+extern const u32 gRaySceneDuoFight_GroudonShoulder_Gfx[];
+extern const u32 gRaySceneDuoFight_GroudonClaw_Gfx[];
+extern const u32 gRaySceneDuoFight_Kyogre_Gfx[];
+extern const u32 gRaySceneDuoFight_KyogrePectoralFin_Gfx[];
+extern const u32 gRaySceneDuoFight_KyogreDorsalFin_Gfx[];
+extern const u32 gRaySceneDuoFight_Groudon_Pal[];
+extern const u32 gRaySceneDuoFight_Kyogre_Pal[];
+extern const u32 gRaySceneDuoFight_Clouds_Gfx[];
+extern const u32 gRaySceneDuoFight_Clouds_Pal[];
+extern const u32 gRaySceneDuoFight_Clouds1_Tilemap[];
+extern const u32 gRaySceneDuoFight_Clouds2_Tilemap[];
+extern const u32 gRaySceneDuoFight_Clouds3_Tilemap[];
+extern const u32 gRaySceneTakesFlight_Smoke_Gfx[];
+extern const u32 gRaySceneTakesFlight_Smoke_Pal[];
+extern const u32 gRaySceneTakesFlight_Rayquaza_Pal[];
+extern const u32 gRaySceneTakesFlight_Bg_Gfx[];
+extern const u32 gRaySceneTakesFlight_Bg_Tilemap[];
+extern const u32 gRaySceneTakesFlight_Rayquaza_Gfx[];
+extern const u32 gRaySceneTakesFlight_Rayquaza_Tilemap[];
+extern const u32 gRaySceneDescends_Rayquaza_Gfx[];
+extern const u32 gRaySceneDescends_RayquazaTail_Gfx[];
+extern const u32 gRaySceneDescends_Light_Gfx[];
+extern const u32 gRaySceneDescends_Light_Tilemap[];
+extern const u32 gRaySceneDescends_Bg_Gfx[];
+extern const u32 gRaySceneDescends_Bg_Tilemap[];
+extern const u32 gRaySceneDescends_Bg_Pal[];
+extern const u32 gRaySceneCharges_Rayquaza_Gfx[];
+extern const u32 gRaySceneCharges_Streaks_Gfx[];
+extern const u32 gRaySceneCharges_Bg_Gfx[];
+extern const u32 gRaySceneCharges_Orbs_Tilemap[];
+extern const u32 gRaySceneCharges_Rayquaza_Tilemap[];
+extern const u32 gRaySceneCharges_Streaks_Tilemap[];
+extern const u32 gRaySceneCharges_Bg_Tilemap[];
+extern const u32 gRaySceneCharges_Bg_Pal[];
+extern const u32 gRaySceneChasesAway_Groudon_Gfx[];
+extern const u32 gRaySceneChasesAway_GroudonTail_Gfx[];
+extern const u32 gRaySceneChasesAway_Kyogre_Gfx[];
+extern const u32 gRaySceneChasesAway_Rayquaza_Gfx[];
+extern const u32 gRaySceneChasesAway_RayquazaTail_Gfx[];
+extern const u32 gRaySceneChasesAway_KyogreSplash_Gfx[];
+extern const u32 gRaySceneChasesAway_Groudon_Pal[];
+extern const u32 gRaySceneChasesAway_Kyogre_Pal[];
+extern const u32 gRaySceneChasesAway_Rayquaza_Pal[];
+extern const u32 gRaySceneChasesAway_KyogreSplash_Pal[];
+extern const u32 gRaySceneChasesAway_Bg_Tilemap[];
+extern const u32 gRaySceneChasesAway_Light_Tilemap[];
+extern const u32 gRaySceneChasesAway_Ring_Tilemap[];
+extern const u32 gRaySceneChasesAway_Bg_Pal[];
+extern const u32 gRaySceneChasesAway_Light_Gfx[];
+extern const u32 gRaySceneChasesAway_Ring_Gfx[];
// Pokeballs
extern const u32 gItemIcon_MasterBall[];
@@ -4813,16 +4813,16 @@ extern const u16 gUsePokeblockGraph_Pal[];
extern const u16 gUsePokeblockNatureWin_Pal[];
// Berry blender
-extern const u32 gBerryBlenderArrowTiles[];
-extern const u32 gBerryBlenderStartTiles[];
-extern const u32 gBerryBlenderMarubatsuTiles[];
-extern const u32 gBerryBlenderParticlesTiles[];
-extern const u32 gBerryBlenderCountdownNumbersTiles[];
+extern const u32 gBerryBlenderPlayerArrow_Gfx[];
+extern const u32 gBerryBlenderStart_Gfx[];
+extern const u32 gBerryBlenderScoreSymbols_Gfx[];
+extern const u32 gBerryBlenderParticles_Gfx[];
+extern const u32 gBerryBlenderCountdownNumbers_Gfx[];
extern const u16 gBerryBlenderMiscPalette[];
extern const u16 gBerryBlenderArrowPalette[];
-extern const u32 sBlenderCenterGfx[];
-extern const u32 gUnknown_08D91DB8[];
-extern const u32 gUnknown_08D927EC[];
+extern const u32 gBerryBlenderCenter_Gfx[];
+extern const u32 gBerryBlenderOuter_Gfx[];
+extern const u32 gBerryBlenderOuter_Tilemap[];
// Slot Machine
extern const u32 gSlotMachineDigitalDisplay_Gfx[];
@@ -4894,11 +4894,11 @@ extern const u32 gWallpaperTilemap_Horizontal[];
extern const u16 gWallpaperPalettes_Horizontal[][16];
// Cable Car
-extern const u32 gUnknown_08DBA5B8[];
-extern const u16 gUnknown_08DBA518[];
+extern const u32 gCableCarBg_Gfx[];
+extern const u16 gCableCarBg_Pal[];
extern const u32 gCableCar_Gfx[];
extern const u32 gCableCarDoor_Gfx[];
-extern const u32 gCableCarCord_Gfx[];
+extern const u32 gCableCarCable_Gfx[];
extern const u16 gCableCar_Pal[];
// Trade
diff --git a/include/item_menu.h b/include/item_menu.h
index edfb986f7..a99272b0c 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -93,7 +93,7 @@ void CB2_GoToSellMenu(void);
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
void DoWallyTutorialBagMenu(void);
void ResetBagScrollPositions(void);
-void ChooseBerrySetCallback(void (*callback)(void));
+void ChooseBerryForMachine(void (*exitCallback)(void));
void CB2_ChooseBerry(void);
void Task_FadeAndCloseBagMenu(u8 taskId);
void BagMenu_YesNo(u8, u8, const struct YesNoFuncTable*);
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index 75e9100d2..e061149fc 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -19,7 +19,7 @@ void sub_80D4FC8(u8 arg0);
void sub_80D4FEC(u8 arg0);
u8 CreateBerryTagSprite(u8 id, s16 x, s16 y);
void FreeBerryTagSpritePalette(void);
-u8 LoadSpinningBerryPicGfx(u8 berryId, u8 x, u8 y, bool8 startAffine);
+u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine);
u8 CreateBerryFlavorCircleSprite(s16 x);
#define TAG_BAG_GFX 100
diff --git a/include/link.h b/include/link.h
index de10bb8dc..086bf787b 100644
--- a/include/link.h
+++ b/include/link.h
@@ -48,52 +48,60 @@
#define EXTRACT_LINK_ERRORS(status) \
(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT)
-#define LINKCMD_SEND_LINK_TYPE 0x2222
-#define LINKCMD_READY_EXIT_STANDBY 0x2FFE
-#define LINKCMD_SEND_HELD_KEYS 0x4444
-#define LINKCMD_0x5555 0x5555
-#define LINKCMD_0x5566 0x5566
-#define LINKCMD_READY_CLOSE_LINK 0x5FFF
-#define LINKCMD_0x6666 0x6666
-#define LINKCMD_0x7777 0x7777
-#define LINKCMD_CONT_BLOCK 0x8888
-#define LINKCMD_0xAAAA 0xAAAA
-#define LINKCMD_0xAAAB 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_2 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_0xDDEE 0xDDEE
-#define LINKCMD_REQUEST_CANCEL 0xEEAA
-#define LINKCMD_CANCEL_TRADE 0xEEBB
-#define LINKCMD_0xEECC 0xEECC
-
-#define LINKTYPE_TRADE 0x1111
-#define LINKTYPE_TRADE_CONNECTING 0x1122
-#define LINKTYPE_TRADE_SETUP 0x1133
-#define LINKTYPE_TRADE_DISCONNECTED 0x1144
-#define LINKTYPE_BATTLE 0x2211
-#define LINKTYPE_0x2222 0x2222 // unused battle?
-#define LINKTYPE_SINGLE_BATTLE 0x2233
-#define LINKTYPE_DOUBLE_BATTLE 0x2244
-#define LINKTYPE_MULTI_BATTLE 0x2255
-#define LINKTYPE_BATTLE_TOWER_50 0x2266
-#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277
-#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_BERRY_BLENDER 0x4422
-#define LINKTYPE_MYSTERY_EVENT 0x5501
-#define LINKTYPE_0x5502 0x5502 // unused?
-#define LINKTYPE_EREADER 0x5503
-#define LINKTYPE_CONTEST_GMODE 0x6601
-#define LINKTYPE_CONTEST_EMODE 0x6602
+#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_0x5555 0x5555
+#define LINKCMD_0x5566 0x5566
+#define LINKCMD_READY_CLOSE_LINK 0x5FFF
+#define LINKCMD_0x6666 0x6666
+#define LINKCMD_0x7777 0x7777
+#define LINKCMD_BLENDER_PLAY_AGAIN 0x7779
+#define LINKCMD_0x7FFF 0x7FFF
+#define LINKCMD_CONT_BLOCK 0x8888
+#define LINKCMD_BLENDER_NO_BERRIES 0x9999
+#define LINKCMD_BLENDER_NO_PBLOCK_SPACE 0xAAAA
+#define LINKCMD_0xAAAB 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_0xDDEE 0xDDEE
+#define LINKCMD_REQUEST_CANCEL 0xEEAA
+#define LINKCMD_CANCEL_TRADE 0xEEBB
+#define LINKCMD_0xEECC 0xEECC
+
+#define LINKTYPE_TRADE 0x1111
+#define LINKTYPE_TRADE_CONNECTING 0x1122
+#define LINKTYPE_TRADE_SETUP 0x1133
+#define LINKTYPE_TRADE_DISCONNECTED 0x1144
+#define LINKTYPE_BATTLE 0x2211
+#define LINKTYPE_0x2222 0x2222 // unused battle?
+#define LINKTYPE_SINGLE_BATTLE 0x2233
+#define LINKTYPE_DOUBLE_BATTLE 0x2244
+#define LINKTYPE_MULTI_BATTLE 0x2255
+#define LINKTYPE_BATTLE_TOWER_50 0x2266
+#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277
+#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_BERRY_BLENDER 0x4422
+#define LINKTYPE_MYSTERY_EVENT 0x5501
+#define LINKTYPE_0x5502 0x5502 // unused?
+#define LINKTYPE_EREADER 0x5503
+#define LINKTYPE_CONTEST_GMODE 0x6601
+#define LINKTYPE_CONTEST_EMODE 0x6602
struct LinkStatus
{
@@ -230,7 +238,7 @@ extern u16 gSendCmd[CMD_LENGTH];
extern struct LinkPlayer gLinkPlayers[5];
extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
-extern u32 gUnknown_020223C0;
+extern u32 gBerryBlenderKeySendAttempts;
extern bool8 gLinkVSyncDisabled;
extern u32 gLinkStatus;
@@ -280,7 +288,7 @@ u8 IsLinkMaster(void);
void SetCloseLinkCallback(void);
bool8 HandleLinkConnection(void);
void SetLinkDebugValues(u32 seed, u32 flags);
-void sub_800A418(void);
+void SetBerryBlenderLinkCallback(void);
void SetSuppressLinkErrorMessage(bool8 flag);
void sub_800B524(struct LinkPlayer *linkPlayer);
u8 GetSioMultiSI(void);
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 4d00039eb..9476da6b7 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -5,18 +5,18 @@
#include "link.h"
#include "AgbRfu_LinkManager.h"
-#define RFU_COMMAND_0x4400 0x4400
-#define RFU_COMMAND_0x8800 0x8800
-#define RFU_COMMAND_0x8900 0x8900
-#define RFU_COMMAND_SEND_BLOCK_REQ 0xA100
-#define RFU_COMMAND_0x7700 0x7700
-#define RFU_COMMAND_0x7800 0x7800
-#define RFU_COMMAND_READY_EXIT_STANDBY 0x6600
-#define RFU_COMMAND_READY_CLOSE_LINK 0x5F00
-#define RFU_COMMAND_0x2F00 0x2F00
-#define RFU_COMMAND_0xBE00 0xBE00
-#define RFU_COMMAND_0xEE00 0xEE00
-#define RFU_COMMAND_0xED00 0xED00
+#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_0x7700 0x7700
+#define RFUCMD_0x7800 0x7800
+#define RFUCMD_0x8800 0x8800
+#define RFUCMD_0x8900 0x8900
+#define RFUCMD_SEND_BLOCK_REQ 0xA100
+#define RFUCMD_SEND_HELD_KEYS 0xBE00
+#define RFUCMD_0xED00 0xED00
+#define RFUCMD_0xEE00 0xEE00
#define RFU_SERIAL_7F7D 0x7F7D
@@ -29,6 +29,8 @@
#define BACKUP_QUEUE_NUM_SLOTS 2
#define BACKUP_QUEUE_SLOT_LENGTH 14
+#define RFU_PACKET_SIZE 6
+
#define RFU_STATUS_OK 0
#define RFU_STATUS_FATAL_ERROR 1
#define RFU_STATUS_CONNECTION_ERROR 2
@@ -140,7 +142,7 @@ struct GFRfuManager
/* 0x0ef */ bool8 isShuttingDown;
/* 0x0f0 */ u8 linkLossRecoveryState;
/* 0x0f1 */ u8 status;
- /* 0x0f2 */ u16 unk_f2[6];
+ /* 0x0f2 */ u16 packet[RFU_PACKET_SIZE];
/* 0x0fe */ u16 resendExitStandbyTimer;
/* 0x100 */ u16 unk_100;
/* 0x102 */ u8 unk_102;
@@ -197,7 +199,7 @@ void Rfu_SetBlockReceivedFlag(u8 who);
void Rfu_ResetBlockReceivedFlag(u8 who);
bool32 IsSendingKeysToRfu(void);
void StartSendingKeysToRfu(void);
-void sub_800F850(void);
+void Rfu_SetBerryBlenderLinkCallback(void);
u8 Rfu_GetBlockReceivedStatus(void);
bool32 Rfu_InitBlockSend(const u8 *src, size_t size);
void ClearLinkRfuCallback(void);
@@ -250,7 +252,7 @@ void SetTradeBoardRegisteredMonInfo(u32 type, u32 species, u32 level);
void InitializeRfuLinkManager_EnterUnionRoom(void);
void sub_8012188(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
bool32 IsUnionRoomListenTaskActive(void);
-void sub_800FE50(void *a0);
+void Rfu_SendPacket(void *data);
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
void sub_8011DE0(u32 arg0);
u8 sub_801100C(s32 a0);
diff --git a/include/list_menu.h b/include/list_menu.h
index 0a54a069a..4697ba5aa 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -24,7 +24,7 @@ struct ListMenu;
struct ListMenuItem
{
const u8 *name;
- s32 id;
+ u32 id;
};
struct ListMenuTemplate
@@ -98,7 +98,7 @@ struct CursorStruct
extern struct ScrollArrowsTemplate gTempScrollArrowTemplate;
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
-s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
+u32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *arg1, u16 scrollOffset, u16 selectedRow);
s32 ListMenu_ProcessInput(u8 listTaskId);
diff --git a/include/palette.h b/include/palette.h
index 8d16270aa..f874bcd74 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -70,7 +70,7 @@ void BeginFastPaletteFade(u8);
void BeginHardwarePaletteFade(u8, u8, u8, u8, u8);
void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color);
void BlendPalettesUnfaded(u32, u8, u16);
-void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7);
+void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id);
void TintPalette_GrayScale(u16 *palette, u16 count);
void TintPalette_GrayScale2(u16 *palette, u16 count);
void TintPalette_SepiaTone(u16 *palette, u16 count);
diff --git a/include/pokeball.h b/include/pokeball.h
index 12b9b1eff..1cdb08f94 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -18,6 +18,14 @@ enum
POKEBALL_COUNT
};
+enum {
+ BALL_AFFINE_ANIM_0,
+ BALL_ROTATE_RIGHT,
+ BALL_ROTATE_LEFT,
+ BALL_AFFINE_ANIM_3,
+ BALL_AFFINE_ANIM_4
+};
+
extern const struct SpriteTemplate gBallSpriteTemplates[];
#define POKEBALL_PLAYER_SENDOUT 0xFF
diff --git a/include/pokeblock.h b/include/pokeblock.h
index 0d413a810..c82e99d8f 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -9,12 +9,21 @@
enum
{
- PBLOCK_CLR_BLACK,
+ PBLOCK_CLR_NONE,
PBLOCK_CLR_RED,
PBLOCK_CLR_BLUE,
PBLOCK_CLR_PINK,
PBLOCK_CLR_GREEN,
- PBLOCK_CLR_YELLOW
+ PBLOCK_CLR_YELLOW,
+ PBLOCK_CLR_PURPLE,
+ PBLOCK_CLR_INDIGO,
+ PBLOCK_CLR_BROWN,
+ PBLOCK_CLR_LITE_BLUE,
+ PBLOCK_CLR_OLIVE,
+ PBLOCK_CLR_GRAY,
+ PBLOCK_CLR_BLACK,
+ PBLOCK_CLR_WHITE,
+ PBLOCK_CLR_GOLD,
};
enum
diff --git a/include/rayquaza_scene.h b/include/rayquaza_scene.h
index fe66b3df0..5aa21981e 100644
--- a/include/rayquaza_scene.h
+++ b/include/rayquaza_scene.h
@@ -1,17 +1,6 @@
#ifndef GUARD_RAYQUAZA_SCENE_H
#define GUARD_RAYQUAZA_SCENE_H
-void DoRayquazaScene(u8 animId, bool8 onlyOneAnim, void (*callback)(void));
-
-enum
-{
- RAY_ANIM_DUO_FIGHT_PRE,
- RAY_ANIM_DUO_FIGHT,
- RAY_ANIM_TAKES_FLIGHT,
- RAY_ANIM_DESCENDS,
- RAY_ANIM_CHARGES,
- RAY_ANIM_CHACES_AWAY,
- RAY_ANIM_END
-};
+void DoRayquazaScene(u8 animId, bool8 endEarly, void (*callback)(void));
#endif // GUARD_RAYQUAZA_SCENE_H
diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h
deleted file mode 100644
index ee7397320..000000000
--- a/include/rom_8011DC0.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef GUARD_rom_8011DC0_H
-#define GUARD_rom_8011DC0_H
-
-#endif //GUARD_rom_8011DC0_H
diff --git a/include/strings.h b/include/strings.h
index 1f2920140..7018f9e0d 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -2983,4 +2983,9 @@ extern const u8 gText_Smartness[];
extern const u8 gText_Cuteness[];
extern const u8 gText_Beauty3[];
+// Berry Blender
+extern const u8 gText_SavingDontTurnOff2[];
+extern const u8 gText_BlenderMaxSpeedRecord[];
+extern const u8 gText_234Players[];
+
#endif // GUARD_STRINGS_H