diff options
Diffstat (limited to 'include')
31 files changed, 536 insertions, 154 deletions
diff --git a/include/battle_tower.h b/include/battle_tower.h index 25b439c1b..9d4553132 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -1,6 +1,31 @@ #ifndef GUARD_BATTLE_TOWER_H #define GUARD_BATTLE_TOWER_H +struct RSBattleTowerRecord +{ + /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ struct { + u16 easyChat[6]; + } greeting; + /*0x1C*/ struct UnknownPokemonStruct party[3]; + /*0xA0*/ u32 checksum; + /*0xA4*/ u16 unk_11c8; +}; + +union BattleTowerRecord +{ + struct RSBattleTowerRecord ruby_sapphire; + struct EmeraldBattleTowerRecord emerald; +}; + u16 sub_8164FCC(u8, u8); +void sub_81659DC(struct RSBattleTowerRecord *a0, struct RSBattleTowerRecord *a1); +bool32 sub_816587C(union BattleTowerRecord *, union BattleTowerRecord *); +void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *); +void sub_81628A0(union BattleTowerRecord *); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/cable_club.h b/include/cable_club.h new file mode 100644 index 000000000..44831235c --- /dev/null +++ b/include/cable_club.h @@ -0,0 +1,13 @@ +#ifndef GUARD_CABLE_CLUB_H +#define GUARD_CABLE_CLUB_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_80B37D4(TaskFunc taskFunc); +u8 sub_80B3050(void); + +#endif //GUARD_CABLE_CLUB_H diff --git a/include/constants/vars.h b/include/constants/vars.h index be21f1730..976c6a739 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -3,42 +3,53 @@ #define VAR_0x3F20 0x3F20 -#define VAR_0x4000 0x4000 -#define VAR_0x4001 0x4001 -#define VAR_0x4002 0x4002 -#define VAR_0x4003 0x4003 -#define VAR_0x4004 0x4004 -#define VAR_0x4005 0x4005 -#define VAR_0x4006 0x4006 -#define VAR_0x4007 0x4007 -#define VAR_0x4008 0x4008 -#define VAR_0x4009 0x4009 -#define VAR_0x400A 0x400A -#define VAR_0x400B 0x400B -#define VAR_0x400C 0x400C -#define VAR_0x400D 0x400D -#define VAR_0x400E 0x400E -#define VAR_0x400F 0x400F -#define VAR_0x4010 0x4010 -#define VAR_0x4011 0x4011 -#define VAR_0x4012 0x4012 -#define VAR_0x4013 0x4013 -#define VAR_0x4014 0x4014 -#define VAR_0x4015 0x4015 -#define VAR_0x4016 0x4016 -#define VAR_0x4017 0x4017 -#define VAR_0x4018 0x4018 -#define VAR_0x4019 0x4019 -#define VAR_0x401A 0x401A -#define VAR_0x401B 0x401B -#define VAR_0x401C 0x401C -#define VAR_0x401D 0x401D -#define VAR_0x401E 0x401E -#define VAR_0x401F 0x401F +#define VARS_START 0x4000 + +// temporary vars +// The first 0x10 vars are are temporary--they are cleared every time a map is loaded. +#define VAR_TEMP_0 0x4000 +#define VAR_TEMP_1 0x4001 +#define VAR_TEMP_2 0x4002 +#define VAR_TEMP_3 0x4003 +#define VAR_TEMP_4 0x4004 +#define VAR_TEMP_5 0x4005 +#define VAR_TEMP_6 0x4006 +#define VAR_TEMP_7 0x4007 +#define VAR_TEMP_8 0x4008 +#define VAR_TEMP_9 0x4009 +#define VAR_TEMP_A 0x400A +#define VAR_TEMP_B 0x400B +#define VAR_TEMP_C 0x400C +#define VAR_TEMP_D 0x400D +#define VAR_TEMP_E 0x400E +#define VAR_TEMP_F 0x400F + +// object gfx id vars +// These 0x10 vars are used to dynamically control a map object's sprite. +// For example, the rival's sprite id is dynamically set based on the player's gender. +// See VarGetFieldObjectGraphicsId(). +#define VAR_OBJ_GFX_ID_0 0x4010 +#define VAR_OBJ_GFX_ID_1 0x4011 +#define VAR_OBJ_GFX_ID_2 0x4012 +#define VAR_OBJ_GFX_ID_3 0x4013 +#define VAR_OBJ_GFX_ID_4 0x4014 +#define VAR_OBJ_GFX_ID_5 0x4015 +#define VAR_OBJ_GFX_ID_6 0x4016 +#define VAR_OBJ_GFX_ID_7 0x4017 +#define VAR_OBJ_GFX_ID_8 0x4018 +#define VAR_OBJ_GFX_ID_9 0x4019 +#define VAR_OBJ_GFX_ID_A 0x401A +#define VAR_OBJ_GFX_ID_B 0x401B +#define VAR_OBJ_GFX_ID_C 0x401C +#define VAR_OBJ_GFX_ID_D 0x401D +#define VAR_OBJ_GFX_ID_E 0x401E +#define VAR_OBJ_GFX_ID_F 0x401F + +// general purpose vars #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 #define VAR_ICE_STEP_COUNT 0x4022 -#define VAR_FIRST_POKE 0x4023 +#define VAR_FIRST_POKE 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip #define VAR_MIRAGE_RND_H 0x4024 #define VAR_MIRAGE_RND_L 0x4025 #define VAR_SECRET_BASE_MAP 0x4026 @@ -262,6 +273,8 @@ #define VAR_0x40FE 0x40FE #define VAR_0x40FF 0x40FF +// special vars +// They are commonly used as parameters to commands, or return values from commands. #define VAR_0x8000 0x8000 #define VAR_0x8001 0x8001 #define VAR_0x8002 0x8002 diff --git a/include/decompress.h b/include/decompress.h index 34a678cda..e98181c82 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -28,6 +28,6 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); -u32 sub_8034974(const u8 *ptr); +u32 GetDecompressedDataSize(const u8 *ptr); #endif // GUARD_DECOMPRESS_H diff --git a/include/field_effect.h b/include/field_effect.h index 700256f30..9cd26f6b8 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -1,6 +1,14 @@ #ifndef GUARD_FIELD_EFFECTS_H #define GUARD_FIELD_EFFECTS_H +#include "task.h" + +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[2]; +extern const struct SpritePalette gNewGameBirchObjectPaletteInfo; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2]; +extern const struct SpriteTemplate gNewGameBirchObjectTemplate; +extern const struct OamData gNewGameBirchOamAttributes; + enum FieldEffectScriptIdx { FLDEFF_EXCLAMATION_MARK_ICON_1, @@ -69,7 +77,9 @@ enum FieldEffectScriptIdx FLDEFF_USE_TELEPORT }; -extern u32 gFieldEffectArguments[8]; +extern s32 gFieldEffectArguments[8]; +extern void (*gUnknown_0203CEEC)(void); +extern bool8 (*gUnknown_03005DB0)(void); u32 FieldEffectStart(u8); bool8 FieldEffectActiveListContains(u8 id); @@ -77,10 +87,147 @@ void sub_80B69DC(void); u8 AddNewGameBirchObject(s16, s16, u8); void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); -void sub_80B7FC8(void); +void CreateTeleportFieldEffectTask(void); void FieldEffectActiveListRemove(u8 id); void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); -extern void (*gUnknown_0203CEEC)(void); -extern bool8 (*gUnknown_03005DB0)(void); +void FieldEffectActiveListAdd(u8 id); +void FieldEffectScript_LoadTiles(u8 **script); +void FieldEffectScript_LoadFadedPalette(u8 **script); +void FieldEffectScript_LoadPalette(u8 **script); +void FieldEffectScript_CallNative(u8 **script, u32 *val); +void FieldEffectFreeTilesIfUnused(u16 tileStart); +void FieldEffectFreePaletteIfUnused(u8 paletteNum); +bool8 FieldEffectCmd_loadtiles(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadfadedpal(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadpal(u8 **script, u32 *val); +bool8 FieldEffectCmd_callnative(u8 **script, u32 *val); +bool8 FieldEffectCmd_end(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadgfx_callnative(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadtiles_callnative(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadfadedpal_callnative(u8 **script, u32 *val); + +void PokecenterHealEffect_0(struct Task *); +void PokecenterHealEffect_1(struct Task *); +void PokecenterHealEffect_2(struct Task *); +void PokecenterHealEffect_3(struct Task *); + +void HallOfFameRecordEffect_0(struct Task *); +void HallOfFameRecordEffect_1(struct Task *); +void HallOfFameRecordEffect_2(struct Task *); +void HallOfFameRecordEffect_3(struct Task *); + +void PokeballGlowEffect_0(struct Sprite *); +void PokeballGlowEffect_1(struct Sprite *); +void PokeballGlowEffect_2(struct Sprite *); +void PokeballGlowEffect_3(struct Sprite *); +void PokeballGlowEffect_4(struct Sprite *); +void PokeballGlowEffect_5(struct Sprite *); +void PokeballGlowEffect_6(struct Sprite *); +void PokeballGlowEffect_7(struct Sprite *); + +bool8 sub_80B6BCC(struct Task *); +bool8 sub_80B6C74(struct Task *); +bool8 sub_80B6C90(struct Task *); +bool8 sub_80B6D04(struct Task *); +bool8 sub_80B6DBC(struct Task *); +bool8 sub_80B6DD8(struct Task *); +bool8 sub_80B6E18(struct Task *); + +bool8 sub_80B6EC0(struct Task *); +bool8 sub_80B6EE0(struct Task *); +bool8 sub_80B6F50(struct Task *); +bool8 sub_80B6F74(struct Task *); +bool8 sub_80B6F84(struct Task *); +bool8 sub_80B6FA8(struct Task *); + +bool8 sub_80B7114(struct Task *); +bool8 sub_80B7190(struct Task *); +bool8 sub_80B71D0(struct Task *); +bool8 sub_80B7230(struct Task *); +bool8 sub_80B7270(struct Task *); +bool8 sub_80B72D0(struct Task *); +bool8 sub_80B72F4(struct Task *); + +bool8 sub_80B73D0(struct Task *, struct MapObject *); +bool8 waterfall_1_do_anim_probably(struct Task *, struct MapObject *); +bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct MapObject *); +bool8 sub_80B7450(struct Task *, struct MapObject *); +bool8 sub_80B7478(struct Task *, struct MapObject *); + +bool8 dive_1_lock(struct Task *); +bool8 dive_2_unknown(struct Task *); +bool8 dive_3_unknown(struct Task *); + +bool8 sub_80B764C(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7684(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B76B8(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7704(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B77F8(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7814(struct Task *, struct MapObject *, struct Sprite *); + +bool8 sub_80B78EC(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B791C(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7968(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B79BC(struct Task *, struct MapObject *, struct Sprite *); + +bool8 sub_80B7AE8(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7B18(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7B94(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7BCC(struct Task *, struct MapObject *, struct Sprite *); +bool8 sub_80B7BF4(struct Task *, struct MapObject *, struct Sprite *); + +void sub_80B7D14(struct Task *); +void sub_80B7D34(struct Task *); + +void sub_80B7EC4(struct Task *); +void sub_80B7EE8(struct Task *); + +void sub_80B8280(struct Task *); +void sub_80B830C(struct Task *); +void sub_80B8410(struct Task *); + +void sub_80B8584(struct Task *); +void sub_80B85F8(struct Task *); +void sub_80B8660(struct Task *); +void sub_80B86EC(struct Task *); +void sub_80B871C(struct Task *); +void sub_80B8770(struct Task *); +void overworld_bg_setup_2(struct Task *); + +void sub_80B88E4(struct Task *); +void sub_80B8920(struct Task *); +void sub_80B898C(struct Task *); +void sub_80B89DC(struct Task *); +void sub_80B8A0C(struct Task *); +void sub_80B8A44(struct Task *); +void sub_80B8A64(struct Task *); + +void sub_80B8DB4(struct Task *); +void sub_80B8E14(struct Task *); +void sub_80B8E60(struct Task *); +void sub_80B8EA8(struct Task *); +void sub_80B8F24(struct Task *); + +void sub_80B9204(struct Task *); +void sub_80B925C(struct Task *); +void sub_80B92A0(struct Task *); +void sub_80B92F8(struct Task *); +void sub_80B933C(struct Task *); +void sub_80B9390(struct Task *); +void sub_80B9418(struct Task *); +void sub_80B9474(struct Task *); +void sub_80B9494(struct Task *); + +void sub_80B9804(struct Task *); +void sub_80B98B8(struct Task *); +void sub_80B9924(struct Task *); +void sub_80B9978(struct Task *); +void sub_80B99F0(struct Task *); +void sub_80B9A28(struct Task *); +void sub_80B9A60(struct Task *); + +void sub_80B9C28(s16*, u8); +void sub_80B9C54(s16*, u8); +void sub_80B9CDC(s16*, u8); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 15928eba3..3c9e00b62 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -13,5 +13,7 @@ u8 sub_8154228(void); bool8 sub_8155DA0(struct MapObject *); void sub_8155D78(struct MapObject *); +void sub_81555AC(u8, u8); +void ash(s16, s16, u16, s16); #endif //GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 8f34d4b93..1bf3915e1 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -93,6 +93,8 @@ void npc_coords_shift_still(struct MapObject *pObject); void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); u8 AddCameraObject(u8 linkedSpriteId); void UpdateFieldObjectsForCameraUpdate(s16 x, s16 y); +u8 GetSimpleGoAnimId(u32); +u8 sub_8093514(u32); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index f616717f2..0b9ea385c 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -40,6 +40,9 @@ void sub_808D074(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8); void sub_808C114(void); -u8 GetPlayerAvatarGraphicsIdByCurrentState(); +u8 GetPlayerAvatarGraphicsIdByCurrentState(void); +void SetPlayerAvatarStateMask(u8 a); +u8 GetPlayerAvatarGraphicsIdByStateId(u8 a); +u8 sub_8093540(u32); #endif // GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen.h b/include/field_screen.h index 02e0a0a91..d9a2bb5fa 100644 --- a/include/field_screen.h +++ b/include/field_screen.h @@ -7,10 +7,12 @@ // Exported ROM declarations void pal_fill_black(void); -bool8 sub_80ABDFC(void); +bool8 IsWeatherNotFadingIn(void); void sub_80AF168(void); +void sub_80AF2B4(u8 taskId); void UpdateWeatherPerDay(u16 days); void sub_80AC3D0(void); void sub_80AC3E4(void); +void PreservePaletteInWeather(u8); #endif //GUARD_FIELD_SCREEN_H diff --git a/include/field_special_scene.h b/include/field_special_scene.h new file mode 100644 index 000000000..240e9ecb6 --- /dev/null +++ b/include/field_special_scene.h @@ -0,0 +1,14 @@ +#ifndef GUARD_FIELD_SPECIAL_SCENE_H +#define GUARD_FIELD_SPECIAL_SCENE_H + +s16 GetTruckCameraBobbingY(int a1); +s16 GetTruckBoxMovement(int a1); +void Task_Truck1(u8 taskId); +void Task_Truck2(u8 taskId); +void Task_Truck3(u8 taskId); +void Task_HandleTruckSequence(u8 taskId); +void ExecuteTruckSequence(void); +void EndTruckSequence(u8); +void sub_80C791C(void); + +#endif // GUARD_FIELD_SPECIAL_SCENE_H diff --git a/include/field_tasks.h b/include/field_tasks.h index 2a2a772d8..400ad054d 100644 --- a/include/field_tasks.h +++ b/include/field_tasks.h @@ -1,6 +1,9 @@ #ifndef GUARD_FIELD_TASKS_H #define GUARD_FIELD_TASKS_H -void ActivatePerStepCallback(u8); +void SetUpFieldTasks(void); +void ActivatePerStepCallback(u8 callbackId); +void ResetFieldTasksArgs(void); +void SetSootopolisGymCrackedIceMetatiles(void); #endif // GUARD_FIELD_TASKS_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 6e127ce5d..699595580 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -28,4 +28,8 @@ struct MapConnection *sub_8088950(u8 direction, int x, int y); bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection); bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset); +void SpriteCB_PokeballGlow(struct Sprite *); +void SpriteCB_PokecenterMonitor(struct Sprite *); +void SpriteCB_HallOfFameMonitor(struct Sprite *); + #endif //GUARD_FIELDMAP_H diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h index 84015065e..ba775cd6d 100644 --- a/include/fldeff_80F9BCC.h +++ b/include/fldeff_80F9BCC.h @@ -9,6 +9,8 @@ void sub_80FA5E4(s16 id, s16 x, s16 y); void sub_80FA794(s16 x, s16 y); +void CreateRecordMixingSprite(void); +void DestroyRecordMixingSprite(void); void overworld_poison_effect(void); bool8 sub_80FADE4(u16, u8); diff --git a/include/global.h b/include/global.h index 863bfcee6..4a0fdb70a 100644 --- a/include/global.h +++ b/include/global.h @@ -11,10 +11,10 @@ // to help in decompiling #define asm_comment(x) asm volatile("@ -- " x " -- ") #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided") -#define ASM_DIRECT __attribute__((naked)) +#define NAKED __attribute__((naked)) // IDE support -#if defined (__APPLE__) || defined (__CYGWIN__) +#if defined (__APPLE__) || defined (__CYGWIN__) || defined (_MSC_VER) #define _(x) x #define __(x) x #define INCBIN_U8 {0} @@ -23,7 +23,7 @@ #define INCBIN_S8 {0} #define INCBIN_S16 {0} #define INCBIN_S32 {0} -#endif // __APPLE__ +#endif // IDE support #define ARRAY_COUNT(array) (size_t)(sizeof(array) / sizeof((array)[0])) @@ -107,6 +107,8 @@ enum LanguageId #define VARS_COUNT 256 #define MAIL_COUNT 16 #define SECRET_BASES_COUNT 20 +#define TV_SHOWS_COUNT 25 +#define POKE_NEWS_COUNT 16 #define PC_ITEMS_COUNT 50 #define BAG_ITEMS_COUNT 30 #define BAG_KEYITEMS_COUNT 30 @@ -262,6 +264,56 @@ struct UnknownSaveBlock2Struct u8 field_EB; }; // sizeof = 0xEC +struct UnkRecordMixingStruct +{ + u8 field_0[0x34]; + u8 playerId[4]; + u8 field_38[10]; +}; + +struct UnknownPokemonStruct +{ + u16 species; + u16 heldItem; + u16 moves[4]; + u8 level; + u8 ppBonuses; + u8 hpEV; + u8 attackEV; + u8 defenseEV; + u8 speedEV; + u8 spAttackEV; + u8 spDefenseEV; + u32 otId; + u32 hpIV:5; + u32 attackIV:5; + u32 defenseIV:5; + u32 speedIV:5; + u32 spAttackIV:5; + u32 spDefenseIV:5; + u32 gap:1; + u32 altAbility:1; + u32 personality; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + u8 friendship; +}; + +struct EmeraldBattleTowerRecord +{ + /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ struct { + u16 easyChat[6]; + } greeting; + /*0x1C*/ u8 filler_1c[0x18]; + /*0x34*/ struct UnknownPokemonStruct party[4]; + /*0xE4*/ u8 language; + /*0xE8*/ u32 checksum; +}; + struct SaveBlock2 { /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH]; @@ -287,7 +339,12 @@ struct SaveBlock2 /*0xAC*/ u32 encryptionKey; // TODO: fix and verify labels - /*0xB0*/ u8 field_B0[316]; + /*0xB0*/ u8 field_B0; + /*0xB1*/ u8 field_B1; + /*0xB2*/ u8 field_B2_0:3; + /*0xB2*/ u8 field_B2_1:2; + /*0xB3*/ u8 field_B3[0x29]; + /*0xDC*/ struct UnkRecordMixingStruct field_DC[4]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; @@ -296,7 +353,7 @@ struct SaveBlock2 // All below could be a one giant struct - /*0x64C*/ u8 field_64C[236]; + /*0x64C*/ struct EmeraldBattleTowerRecord battleTower; /*0x738*/ struct UnknownSaveBlock2Struct field_738[5]; // No idea here, it's probably wrong, no clue. /*0xBD4*/ u16 field_BD4; /*0xBD6*/ u16 field_BD6; @@ -313,22 +370,64 @@ struct SaveBlock2 /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 /*0xCAA*/ u16 field_CAA[4]; /*0xCB2*/ u16 battlePyramidWildHeaderId; - /*0xCB4*/ u16 field_CB4[41]; + /*0xCB4*/ u16 field_CB4[30]; + /*0xCF0*/ u16 field_CF0[2]; + /*0xCF4*/ u16 field_CF4[2]; + /*0xCF8*/ u16 field_CF8[2]; + /*0xCFC*/ u16 field_CFC[5]; /*0xD06*/ u8 field_D06; /*0xD07*/ u8 field_D07; - /*0xD08*/ u8 filler_D08[0x112]; + /*0xD08*/ u8 filler_D08; + /*0xD09*/ u8 filler_D09; + /*0xD0A*/ u8 filler_D0A; + /*0xD0B*/ u8 filler_D0B; + /*0xD0C*/ u8 filler_D0C; + /*0xD0D*/ u8 filler_D0D; + /*0xD0E*/ u8 filler_D0E; + /*0xD0F*/ u8 filler_D0F; + /*0xD10*/ u8 filler_D10; + /*0xD11*/ u8 filler_D11; + /*0xD12*/ u8 filler_D12; + /*0xD13*/ u8 filler_D13; + /*0xD14*/ u16 field_D14[2]; + /*0xD18*/ u8 field_D18[0xB8]; + /*0xDD0*/ u16 field_DD0[2]; + /*0xDD4*/ u16 field_DD4[2]; + /*0xDD8*/ u16 field_DD8; + /*0xDDA*/ u16 field_DDA; + /*0xDDC*/ u16 field_DDC; + /*0xDDE*/ u16 field_DDE[2]; + /*0xDE2*/ u16 field_DE2; + /*0xDE4*/ u16 field_DE4; + /*0xDE6*/ u16 field_DE6; + /*0xDE8*/ u16 field_DE8; + /*0xDEA*/ u16 field_DEA[2]; + /*0xDEE*/ u16 field_DEE; + /*0xDF0*/ u16 field_DF0; + /*0xDF2*/ u16 field_DF2; + /*0xDF4*/ u16 field_DF4; + /*0xDF6*/ u16 field_DF6; + /*0xDF8*/ u16 field_DF8; + /*0xDFA*/ u16 field_DFA; + /*0xDFC*/ u16 field_DFC; + /*0xDFE*/ u16 field_DFE; + /*0xE00*/ u16 field_E00; + /*0xE02*/ u16 field_E02; + /*0xE04*/ u16 field_E04; + /*0xE06*/ u16 field_E06; + /*0xE08*/ u16 field_E08[9]; /*0xE1A*/ u16 battlePyramidFloor; // possibly? - /*0xE1C*/ u8 field_E1C[16]; + /*0xE1C*/ u16 field_E1C; + /*0xE1E*/ u16 field_E1E[7]; /*0xE2C*/ struct PyramidBag pyramidBag; /*0x???*/ u8 field_unkown[6]; /*0xE6E*/ u16 battleTentWinStreak; /*0xE70*/ u8 field_E70[72]; /*0xEB8*/ u16 frontierBattlePoints; /*0xEBA*/ u8 field_EBA[39]; - /*0xEE1*/ u8 field_EE1; - /*0xEE2*/ u8 field_EE2[7]; - /*0xEE9*/ u8 field_EE9; - /*0xEEA*/ u8 field_EEA[66]; + /*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH]; + /*0xEF1*/ u8 field_EF1[2][4]; + /*0xEF9*/ u8 field_EF9[51]; // sizeof=0xF2C }; @@ -564,9 +663,9 @@ struct ContestWinner u8 contestRank; }; -struct DaycareMiscMon +struct DayCareMail { - struct MailStruct mail; + struct MailStruct message; u8 OT_name[OT_NAME_LENGTH + 1]; u8 monName[POKEMON_NAME_LENGTH + 1]; u8 gameLanguage:4; @@ -576,7 +675,7 @@ struct DaycareMiscMon struct DaycareMon { struct BoxPokemon mon; - struct DaycareMiscMon misc; + struct DayCareMail mail; u32 steps; }; @@ -587,12 +686,6 @@ struct DayCare u8 stepCounter; }; -struct DayCareMail -{ - /*0x00*/ struct MailStruct message; - /*0x24*/ u8 names[19]; -}; - struct RecordMixingDayCareMail { struct DayCareMail mail[DAYCARE_MON_COUNT]; @@ -648,12 +741,13 @@ struct LilycoveLadyContest /*0x00e*/ u8 language; }; -typedef union // TODO +typedef union { struct LilycoveLadyQuiz quiz; struct LilycoveLadyFavour favour; struct LilycoveLadyContest contest; u8 id; + u8 pad[0x40]; } LilycoveLady; struct WaldaPhrase @@ -720,8 +814,8 @@ struct SaveBlock1 /*0x????*/ u8 decorDoll[40]; /*0x????*/ u8 decorCushion[10]; /*0x27CA*/ u8 padding_27CA[2]; - /*0x27CC*/ TVShow tvShows[25]; - /*0x2B50*/ PokeNews pokeNews[16]; + /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; + /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT]; /*0x2B90*/ u16 outbreakPokemonSpecies; /*0x2B92*/ u8 outbreakLocationMapNum; /*0x2B93*/ u8 outbreakLocationMapGroup; @@ -753,7 +847,6 @@ struct SaveBlock1 /*0x3B14*/ struct RecordMixingGift recordMixingGift; /*0x3B24*/ u8 seen2[DEX_FLAGS_NO]; /*0x3B58*/ LilycoveLady lilycoveLady; - /*0x3B88*/ u8 filler_3B88[0x10]; /*0x3B98*/ struct UnkSaveSubstruct_3b98 unk_3B98[20]; /*0x3C88*/ u8 filler_3C88[0xE8]; /*0x3D70*/ struct WaldaPhrase waldaPhrase; diff --git a/include/item_menu.h b/include/item_menu.h index 40c015a8e..8a474bc0f 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -7,7 +7,7 @@ struct BagStruct void (*bagCallback)(void); u8 location; u8 pocket; - u8 unk6[2]; + u16 unk6; u16 cursorPosition[5]; u16 scrollPosition[5]; }; diff --git a/include/lilycove_lady.h b/include/lilycove_lady.h index 084e5722e..f26285d68 100644 --- a/include/lilycove_lady.h +++ b/include/lilycove_lady.h @@ -6,7 +6,7 @@ void SetLilycoveLady(void); void sub_818DA78(void); void sub_818DEF4(void); void sub_818E564(void); -void sub_818E570(const struct LilycoveLadyQuiz *quiz); +void sub_818E570(const LilycoveLady *lilycoveLady); bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock); void sub_818E7E0(u8 *dest1, u8 *dest2); void sub_818E81C(u8 *dest); diff --git a/include/link.h b/include/link.h index 051370897..5b3cd26ca 100644 --- a/include/link.h +++ b/include/link.h @@ -293,4 +293,13 @@ extern u32 gFiller_03004138; extern u32 gFiller_0300413C; extern u32 gFiller_03003080; +bool32 Link_AnyPartnersPlayingRubyOrSapphire(void); +bool32 sub_800A03C(void); +void sub_8009628(u8); +u8 sub_800AA48(void); +void sub_8009FAC(void); +bool8 sub_800A4D8(u8 a0); +u8 sub_800A9D8(void); +u8 sub_800A0C8(s32, s32); + #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index a6084b138..ca39c2fb2 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -231,5 +231,6 @@ struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void); void sub_8011068(u8 a0); void sub_8011170(u32 a0); void sub_8011A64(u8 a0, u16 a1); +u8 sub_801048C(bool32 a0); #endif //GUARD_LINK_RFU_H diff --git a/include/list_menu.h b/include/list_menu.h index 0aa66a524..d8b526b61 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -58,6 +58,33 @@ struct UnknownListMenuWindowStruct u8 palNum; }; +struct ArrowStruct +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u16 unk6; + u16 unk8; + u16 tileTag; + u16 palTag; + u8 palNum; +}; + +struct CursorStruct +{ + u8 unk0; + u8 unk1; + u16 unk2; + u16 unk4; + u16 tileTag; + u16 palTag; + u8 palNum; +}; + +extern struct ArrowStruct gUnknown_0203CE8C; extern struct ListMenuTemplate gMultiuseListMenuTemplate; s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); @@ -74,5 +101,11 @@ void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow) u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId); void sub_81AF028(u8 cursorPal, u8 fillValue, u8 cursorShadowPal); void sub_81AF078(s32 arg0, u8 arg1, struct ListMenu *list); +s32 sub_81AF08C(u8 taskId, u8 field); +void sub_81AF15C(u8 taskId, u8 field, s32 value); +u8 AddScrollIndicatorArrowPair(const struct ArrowStruct *arrowInfo, u16 *arg1); +u8 AddScrollIndicatorArrowPairParametrized(u32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 tileTag, s32 palTag, void *arg7); +void RemoveScrollIndicatorArrowPair(u8 taskId); +void Task_ScrollIndicatorArrowPairOnMainMenu(u8 taskId); #endif //GUARD_LIST_MENU_H diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h index 696f12cc7..e318ac8bb 100644 --- a/include/mauville_old_man.h +++ b/include/mauville_old_man.h @@ -11,9 +11,16 @@ enum MauvilleOldManType MAUVILLE_MAN_GIDDY }; +extern struct BardSong gBardSong; + void SetMauvilleOldMan(void); u8 GetCurrentMauvilleOldMan(void); -extern struct BardSong gBardSong; void ScrSpecial_SetMauvilleOldManMapObjGfx(void); +u8 sub_81201C8(void); +void sub_8120B70(OldMan *dest); +void sub_8120670(void); +void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 r1, u32 r6); +void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 unused, u32 a2); +void ResetMauvilleOldManFlag(void); #endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 4de6603a3..387a89fdd 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -14,29 +14,27 @@ struct YesNoFuncTable // Exported RAM declarations // Exported ROM declarations -void sub_812220C(struct ItemSlot *, u8, u8 *, u8 *, u8); -void sub_812225C(u16 *, u16 *, u8, u8); -void sub_8122298(u16 *, u16 *, u8, u8, u8); -void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data); -bool8 sub_81221AC(void); -bool8 sub_81221EC(void); void ResetVramOamAndBgCntRegs(void); -void SetVBlankHBlankCallbacksToNull(void); void ResetAllBgsCoordinates(void); +void SetVBlankHBlankCallbacksToNull(void); +void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); bool16 RunTextPrintersRetIsActive(u8 textPrinterId); -void sub_8122344(u8 *arg0, u8 arg1); -void sub_81223B0(u8 *arg0, u8 arg1); -void LoadListMenuArrowsGfx(void); -void sub_81223FC(u8 *a0, u8 count, u8 a2); -void sub_8122448(u8 *a0, u8 count, u16 x, u16 y); -void DisplayMessageAndContinueTask(u8 taskId, u8 arg1, u16 arg2, u8 arg3, u8 arg4, u8 textSpeed, const u8 *string, void *taskFunc); +void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data); void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); +bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1); u8 GetLRKeysState(void); u8 sub_812210C(void); -bool8 sub_81221EC(void); +bool8 sub_8122148(u16 itemId); +bool8 itemid_80BF6D8_mail_related(u16 itemId); bool8 sub_81221AC(void); -bool8 sub_8122148(u16); -bool8 AdjustQuantityAccordingToDPadInput(s16*, u16); -bool8 itemid_80BF6D8_mail_related(u16); +bool8 sub_81221EC(void); +void sub_812220C(struct ItemSlot *slots, u8 count, u8 *arg2, u8 *usedSlotsCount, u8 maxUsedSlotsCount); +void sub_812225C(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3); +void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4); +void LoadListMenuArrowsGfx(void); +void sub_8122344(u8 *spriteIds, u8 count); +void sub_81223B0(u8 *spriteIds, u8 count); +void sub_81223FC(u8 *spriteIds, u8 count, bool8 invisible); +void sub_8122448(u8 *spriteIds, u8 count, s16 x, u16 y); #endif //GUARD_MENU_HELPERS_H diff --git a/include/menu_indicators.h b/include/menu_indicators.h deleted file mode 100644 index a099cffab..000000000 --- a/include/menu_indicators.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef GUARD_MENU_INDICATORS_H -#define GUARD_MENU_INDICATORS_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - -struct ArrowStruct -{ - u8 unk0[6]; - u16 unk6[4]; - u8 unkE; -}; - -struct CursorStruct -{ - u8 unk0; - u8 unk1; - u16 unk2; - u16 unk4; - u16 unk6; - u16 unk8; - u8 unkA; -}; - -void Task_ScrollIndicatorArrowPairOnMainMenu(u8); -u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *); -void RemoveScrollIndicatorArrowPair(u8); -u8 AddScrollIndicatorArrowPair(const struct ArrowStruct*, void*); -void sub_81AF15C(u8, u8, u8); -void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind); -void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind); -u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind); - -#endif //GUARD_MENU_INDICATORS_H diff --git a/include/overworld.h b/include/overworld.h index 59d4d6a30..15d7bb362 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -23,6 +23,8 @@ extern u16 *gBGTilemapBuffers1; extern u16 *gBGTilemapBuffers2; extern u16 *gBGTilemapBuffers3; +extern void (*gFieldCallback)(void); + // Exported ROM declarations extern const struct UCoords32 gUnknown_08339D64[]; @@ -101,7 +103,7 @@ u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); u8 GetMapTypeByWarpData(struct WarpData *warp); u8 Overworld_GetMapTypeOfSaveblockLocation(void); u8 get_map_light_from_warp0(void); -bool8 is_light_level_1_2_3_5_or_6(u8 mapType); +bool8 is_map_type_1_2_3_5_or_6(u8 mapType); bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); bool8 Overworld_MapTypeIsIndoors(u8 mapType); u8 sav1_saved_warp2_map_get_name(void); diff --git a/include/pokemon.h b/include/pokemon.h index cd79a217d..37028821a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -240,33 +240,6 @@ struct PokemonStorage /*0x83C2*/ u8 boxWallpapers[14]; }; -struct UnknownPokemonStruct -{ - u16 species; - u16 heldItem; - u16 moves[4]; - u8 level; - u8 ppBonuses; - u8 hpEV; - u8 attackEV; - u8 defenseEV; - u8 speedEV; - u8 spAttackEV; - u8 spDefenseEV; - u32 otId; - u32 hpIV:5; - u32 attackIV:5; - u32 defenseIV:5; - u32 speedIV:5; - u32 spAttackIV:5; - u32 spDefenseIV:5; - u32 gap:1; - u32 altAbility:1; - u32 personality; - u8 nickname[POKEMON_NAME_LENGTH + 1]; - u8 friendship; -}; - struct UnknownPokemonSubStruct2 { u16 species; @@ -482,6 +455,7 @@ extern const u8 gUnknown_08329D2A[]; extern const u8 gStatStageRatios[][2]; extern const u16 gUnknown_08329D54[]; extern const struct SpriteTemplate gUnknown_08329D98[]; +extern const struct CompressedSpritePalette gMonPaletteTable[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); diff --git a/include/record_mixing.h b/include/record_mixing.h new file mode 100644 index 000000000..3cd4d649e --- /dev/null +++ b/include/record_mixing.h @@ -0,0 +1,35 @@ +#ifndef GUARD_RECORD_MIXING_H +#define GUARD_RECORD_MIXING_H + +// Exported type declarations +struct UnkRecordMixingStruct2a +{ + u8 playerId[4]; + u16 field_4; + u8 playerName[PLAYER_NAME_LENGTH]; + u8 language; +}; + +struct UnkRecordMixingStruct2b +{ + u8 playerId1[4]; + u8 playerId2[4]; + u16 field_8; + u8 playerName1[PLAYER_NAME_LENGTH]; + u8 playerName2[PLAYER_NAME_LENGTH]; + u8 language; +}; + +struct UnkRecordMixingStruct2 +{ + struct UnkRecordMixingStruct2a field_0[9][2]; + struct UnkRecordMixingStruct2b field_120[2]; +}; + +// Exported RAM declarations + +// Exported ROM declarations +void sub_80E6BE8(void); +void sub_80E8260(struct UnkRecordMixingStruct2 *arg0); + +#endif //GUARD_RECORD_MIXING_H diff --git a/include/rom_8034C54.h b/include/rom_8034C54.h new file mode 100644 index 000000000..9ad84ca13 --- /dev/null +++ b/include/rom_8034C54.h @@ -0,0 +1,26 @@ +#ifndef GUARD_ROM_8034C54_H +#define GUARD_ROM_8034C54_H + +struct UnkStruct3 +{ + u8 field_0_0:2; + u8 shape:2; + u8 size:2; + u8 priority:2; + u8 field_1; + u8 xDelta; + s16 x; + s16 y; + const struct SpriteSheet *spriteSheet; + const struct SpritePalette *spritePal; +}; + +bool32 sub_8034C54(u32 count); +void sub_8034CC8(void); +bool32 sub_8034D14(u32 id, s32 arg1, const struct UnkStruct3 *arg2); +void sub_8035044(u32 id, s32 arg1); +void sub_80353DC(u32 id); +void sub_803547C(u32 id, bool32 arg1); +u8 sub_80355F8(u32 arg0, u32 arg1); + +#endif // GUARD_ROM_8034C54_H diff --git a/include/save.h b/include/save.h index f06db2955..7b271129a 100644 --- a/include/save.h +++ b/include/save.h @@ -90,6 +90,9 @@ u8 sub_8153430(void); bool8 sub_8153474(void); u8 Save_LoadGameData(u8 a1); u16 sub_815355C(void); +u8 sub_81534D0(u8); +u8 sub_8153430(void); +bool8 sub_8153474(void); u32 TryCopySpecialSaveSection(u8 sector, u8* dst); u32 sub_8153634(u8 sector, u8* src); void sub_8153688(u8 taskId); diff --git a/include/secret_base.h b/include/secret_base.h index eef48db31..c20533698 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -8,10 +8,13 @@ // Exported ROM declarations void sub_80E9578(void); void sub_80E980C(void); +void sub_80EB18C(struct SecretBaseRecord *dest); +void sub_80E9914(void); u8 *GetSecretBaseMapName(u8 *dest); const u8 *GetSecretBaseTrainerLoseText(void); void sub_80E8EE0(struct MapEvents const *events); void sub_80E9238(u8 flagIn); bool8 CurrentMapIsSecretBase(void); +void sub_80EA3E4(u8 taskId); #endif //GUARD_SECRET_BASE_H diff --git a/include/sprite.h b/include/sprite.h index b5a1b6ae5..4723b66e1 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -229,6 +229,7 @@ struct OamMatrix extern const struct OamData gDummyOamData; extern const union AnimCmd *const gDummySpriteAnimTable[]; extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; +extern const struct SpriteTemplate gDummySpriteTemplate; extern s16 gSpriteCoordOffsetX; extern s16 gSpriteCoordOffsetY; diff --git a/include/strings.h b/include/strings.h index 501cbe510..4736fdc5d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -110,6 +110,8 @@ extern const u8 gText_MoveCloserToLinkPartner[]; extern const u8 gText_CommErrorCheckConnections[]; extern const u8 gText_ABtnTitleScreen[]; extern const u8 gText_ABtnRegistrationCounter[]; +extern const u8 gText_MixingRecords[]; +extern const u8 gText_RecordMixingComplete[]; extern const u8 gText_EmptyString2[]; extern const u8 gText_Confirm3[]; extern const u8 gText_Cancel4[]; diff --git a/include/tv.h b/include/tv.h index 1e05a680e..17be8c43c 100644 --- a/include/tv.h +++ b/include/tv.h @@ -16,7 +16,7 @@ void sub_80EED10(void); void sub_80EED34(void); void sub_80EED60(u16 delta); void sub_80F01B8(void); -void sub_80F01E8(void *src, u32 size, u8 masterIdx); +void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx); void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx); u32 GetPlayerIDAsU32(void); bool8 GetPriceReduction(u8 newsKind); @@ -30,7 +30,7 @@ void sub_80EEA70(void); void sub_80EDB44(void); void sub_80EDC60(const u16 *words); void sub_80EDA80(void); -void sub_80F0C7C(void *src, u32 size, u8 masterIdx); +void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx); void sub_80F0BB8(void); void sub_80ED950(bool8 flag); void sub_80EEC80(void); @@ -39,11 +39,13 @@ void sub_80EECC8(void); void sub_80EECEC(void); void sub_80F1208(TVShow *shows); void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed); +void sub_80F14F8(TVShow *shows); +size_t sub_80EF370(int value); +bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language); void SetPokemonAnglerSpecies(u16 species); void UpdateTVShowsPerDay(u16 days); void PutPokemonTodayCaughtOnAir(void); void TV_PutSecretBaseVisitOnTheAir(void); -bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language); void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent); void UpdateTVScreensOnMap(int, int); |