diff options
52 files changed, 1169 insertions, 614 deletions
diff --git a/include/asm.h b/include/asm.h new file mode 100644 index 000000000..ec0516497 --- /dev/null +++ b/include/asm.h @@ -0,0 +1,36 @@ +#ifndef PROJECT_ASM_H +#define PROJECT_ASM_H + +#include "task.h" +#include "main.h" +#include "sprite.h" +#include "asm_fieldmap.h" + +struct UnkInputStruct +{ + u8 input_field_0; + u8 input_field_1; + u8 input_field_2; + u8 input_field_3; +}; + +struct UnknownStruct_FPA +{ + u8 unk0; + u8 unk1; + u8 unk2; + s16 unk4; + s16 unk6; + u8 unk8; + u8 unk9; + u8 unkA_0:4; + u8 unkA_4:4; + u16 unkC; + u16 unkE; + u32 unk10; + u16 unk14; +}; + +#include "asm.inc.h" + +#endif //PROJECT_ASM_H diff --git a/include/asm.inc.h b/include/asm.inc.h new file mode 100644 index 000000000..fc7093437 --- /dev/null +++ b/include/asm.inc.h @@ -0,0 +1,473 @@ +// asm/rom3.o +void sub_800C35C(void); + +// asm/rom_800D42C.o +void sub_800E7C4(void); +u8 b_first_side(u8, u8, u8); +void sub_80157C4(u8 index); +u8 sub_8015A98(u8, u8, u8); +u8 sub_8018324(u8, u8, u8, u8, u16); +void sub_8032AA8(u8 index, int i); + +// asm/rom_803D1FC.o +u16 SpeciesToNationalPokedexNum(u16); +u32 SpeciesToCryId(u32); +void DrawSpindaSpots(u16, u32, void *, u8); +u8 sub_803FC58(u16); +void AdjustFriendship(struct Pokemon *, u8); +void sub_80408BC(); +void current_map_music_set__default_for_battle(u16); + +// asm/rom_8040EB4.o +void StoreWordInTwoHalfwords(u32, u8 *); +void LoadWordFromTwoHalfwords(u32, u8 *); + +// asm/daycare.o +u8 daycare_count_pokemon(u32); +void sub_8041324(struct BoxPokemon *, void *); +void sub_8041790(int i); +u16 sub_8041870(u16); +void sub_8041940(void); +void sub_8041950(void); +u8 daycare_relationship_score_from_savegame(void); + +// asm/rom_804373C.o +void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u16 s4); + +// asm/load_save.o +void CheckForFlashMemory(void); +int sub_80479F8(); +void sub_8047A04(); +void sub_8047A1C(void); +void sub_8047A34(void); +void save_serialize_game(void); +void save_deserialize_game(); + +// asm/berry_blender.o +void sub_80516C4(u8, u16); + +// asm/metatile_behavior.o +bool8 MetatileBehavior_IsSandOrDeepSand(char); +bool8 is_tile_x69_2_warp_door(u8); +u8 MetatileBehavior_IsDoor(u8); +bool8 MetatileBehavior_IsLadder(u8); +u8 sub_8056F08(u8); +bool8 sub_8056F24(u8); +u8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8); +bool8 MetatileBehavior_IsEastArrowWarp(u8); +bool8 MetatileBehavior_IsWestArrowWarp(u8); +bool8 MetatileBehavior_IsNorthArrowWarp(u8); +bool8 MetatileBehavior_IsSouthArrowWarp(u8); +bool8 MetatileBehavior_IsTallGrass(char); +bool8 MetatileBehavior_IsLongGrass(char); +u8 MetatileBehavior_IsBridge(u8); +u8 sub_8057450(u8); +u8 MetatileBehavior_IsLandWildEncounter(u8); +u8 MetatileBehavior_IsWaterWildEncounter(u8); +bool8 sub_80574C4(char); +bool8 sub_80574D8(char); +bool8 sub_8057568(char); +bool8 sub_805759C(u8); +bool8 MetatileBehavior_IsSurfableFishableWater(u8); + +// src/field_door.o +void FieldSetDoorOpened(u32, u32); +void FieldSetDoorClosed(u32, u32); +s8 FieldAnimateDoorClose(u32, u32); +s8 FieldAnimateDoorOpen(u32, u32); +bool8 FieldIsDoorAnimationRunning(void); +u32 sub_8058790(u32 x, u32 y); + +// asm/field_map_obj.o +void sub_805AA98(); +u8 sub_805AB54(void); +u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8); +bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); +u8 GetFieldObjectIdByXY(s16, s16); +void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8); +u8 SpawnSpecialFieldObject(struct UnknownStruct_FPA *); +u8 show_sprite(u8, u8, u8); +u8 AddPseudoFieldObject(u8 val, void (*player)(struct Sprite *), int i, int i1, int i2); +u8 sub_805B410(u8, u8, s16, s16, u8, u8); +void sub_805B55C(int i, int i1); +void sub_805B710(int i, int i1); +void sub_805B980(struct MapObject *, u8); +void FieldObjectTurn(struct MapObject *, u8); +void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); +struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); +void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); +void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *); +void sub_805BCF0(u8, u8, u8, u8); +void sub_805BD48(u8, u8, u8); +void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); +void npc_coords_shift(struct MapObject *pObject, s16 x, s16 y); +void sub_805C0F8(u8, u8, u8, s16, s16); +void npc_coords_shift_still(struct MapObject *pObject); +u8 GetFieldObjectIdByXYZ(u16, u16, int); +void UpdateFieldObjectsForCameraUpdate(s16, s16); +u8 AddCameraObject(u8); +u8 * GetFieldObjectScriptPointerByFieldObjectId(u8); +u8 FieldObjectGetBerryTreeId(u8); +void sub_805C754(struct MapObject *pObject); +void sub_805C774(struct MapObject *, u8 ); +void sub_805C78C(u8, u8, u8); +void sub_805C7C4(int i); +u8 FieldObjectDirectionToImageAnimId(u8); +u8 get_go_image_anim_num(u8 unk_19); +u8 sub_805FD98(u8); +u8 sub_805FDE8(u8); +u8 sub_805FDF8(u8); +u8 sub_805FE08(u8); +void npc_set_running_behaviour_etc(struct MapObject *, u8); +u8 npc_running_behaviour_by_direction(u8); +u8 npc_block_way(struct MapObject *, s16, s16, u8); +u8 sub_8060024(struct MapObject *, s16, s16, u8); +u8 sub_8060234(u8, u8, u8); +void sub_8060288(u8, u8, u8); +void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1); +void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1); +bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *); +void FieldObjectSetSpecialAnim(struct MapObject *, u8); +void FieldObjectForceSetSpecialAnim(struct MapObject *pObject, u8 a); +void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *); +void FieldObjectClearAnim(struct MapObject *); +bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *); +u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); +u8 FieldObjectGetSpecialAnim(struct MapObject *); +u8 GetFaceDirectionAnimId(u8); +u8 GetSimpleGoAnimId(u8); +u8 GetGoSpeed0AnimId(u8 a); +u8 sub_8060744(u8 a); +u8 d2s_08064034(u8 a); +u8 sub_806079C(u8 a); +u8 sub_80607F4(u8 a); +u8 GetJumpLedgeAnimId(u8 a); +u8 sub_806084C(u8); +u8 sub_8060878(u8); +u8 sub_80608D0(u8); +u8 GetStepInPlaceDelay32AnimId(u8 a); +u8 GetStepInPlaceDelay16AnimId(u8); +u8 GetStepInPlaceDelay8AnimId(u8 a); +u8 FieldObjectFaceOppositeDirection(void *, u8); +u8 sub_80609D8(u8); +u8 sub_8060A04(u8); +u8 sub_8060A30(u8); +u8 sub_8060A5C(u8); +u8 sub_8060A88(u8); +u8 sub_8060AB4(u8); +u8 sub_8060AE0(u8); +u8 sub_8060B0C(u8); +u8 sub_8060B38(u8); +u8 sub_8060B64(u8); +u8 GetOppositeDirection(u8); + +// asm/field_ground_effect.o +u8 GetLedgeJumpDirection(s16, s16, u8); +u8 ZCoordToPriority(u8); +void FieldObjectUpdateZCoord(struct MapObject *pObject); +void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); + +// src/map_obj_80643A4.o +bool8 sub_80643A4(struct MapObject *); +void player_bitmagic(void); +void sub_8064470(u8); +void sub_806451C(void); +void sub_806487C(struct Sprite *sprite, bool8 invisible); +void sub_8064990(u8, u8); + +// asm/rom_8065394.o +void sub_8067EEC(struct UnkInputStruct *pStruct); +void process_overworld_input(struct UnkInputStruct *pStruct, u16 keys, u16 heldKeys); +int sub_8068024(struct UnkInputStruct *pStruct); +u8 *sub_80682A8(void *, u8, u8); +void overworld_poison_timer_set(void); +void prev_quest_postbuffer_cursor_backup_reset(void); +u8 *sub_8068E24(struct UnkStruct_8054FF8_Substruct *); +u8 *GetFieldObjectScriptPointerForComparison(); +void sub_8069030(void); +void sub_806906C(void); +bool32 IsNationalPokedex(void); +bool32 IsMysteryGiftAvailable(void); +int sub_80691DC(void); + +// asm/rom_806936C.o +void overworld_ensure_per_step_coros_running(); +void activate_per_step_callback(u8); +void wild_encounter_reset_coro_args(void); +void DoTimeBasedEvents(void); + +// asm/reset_rtc_screen.o +void CB2_InitResetRtcScreen(void); + +// asm/rom_806D7F8.o +bool8 pokemon_has_move(struct Pokemon *, u16); + +// asm/rom_8074BAC.o +u8 battle_side_get_owner(u8); +u8 battle_get_per_side_status(u8); +u8 battle_get_side_with_given_state(u8); + +// asm/rom_8080874.o +void pal_fill_black(); +void sub_8080990(void); +void sub_80809B0(void); +void sub_8080A3C(void); +void sub_8080AC4(void); +void mapldr_default(); +void sub_8080B60(void); +void atk17_seteffectuser(void); +void sub_8080E44(void); +void sub_8080E88(void); +void sp13E_warp_to_last_warp(void); +void sub_8080EF0(void); +void sp13F_fall_to_last_warp(void); +void sub_8080F68(void); +void sub_8081594(u8); +void sub_80815E0(u8 val); + +// asm/cable_club.o +u8 sub_8083664(void); +void sub_8083A84(TaskFunc); +s32 sub_8083BF4(u8 id); + +// src/fldeff_emotion.o +void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3); +void objc_exclamation_mark_probably(struct Sprite *sprite); + +// asm/rom_80859BC.o +u8 CreateTrainerSprite_BirchSpeech(u8, u16, u16, u8, void *); +u8 CreateBirchSprite(u8, u8, u8); +void remove_some_task(void); +void dp12_8087EA4(void); +void sub_80895F8(u32 i, u32 i1, u32 i2); +void sub_8089668(void); +void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6); +void sub_8089A70(void); + +// asm/trainer_card.o +void sub_8093110(void (*)(void)); +void sub_8093130(u8, void (*)(void)); + +// asm/rom_8094928.o +void sub_80961D8(void); +u8 pokemon_ailments_get_primary(u32); +u8 exec_movement(u8, u8, u8, void *); +bool8 sub_80A212C(u8, u8, u8); +void sub_80A2178(void); +void sub_80A2B18(void); +void AddMapNamePopUpWindowTask(void); +void HideMapNamePopUpWindow(); + +// asm/item_menu.o +void sub_80A3684(void); +void sub_80A3714(void); +void sub_80A53F8(void); +void sub_80A68CC(); + +// asm/contest.o +void sub_80AB1B0(void); +void sub_80B2D1C(void); + +// asm/shop.o +void CreatePokemartMenu(void *); +void CreateDecorationShop1Menu(void *); +void CreateDecorationShop2Menu(void *); + +// asm/script_menu.o +bool8 sub_80B5054(u8, u8, u8, u8); +bool8 sub_80B50B0(u8, u8, u8, u8, u8); +bool8 Multichoice(u8, u8, u8, u8); +bool8 yes_no_box(u8, u8); +bool8 sub_80B5578(u8, u8, u8, u8, u8); +bool8 sub_80B58C4(u16, u8, u8); +void *picbox_close(void); + +// asm/naming_screen.o +void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4); + +// asm/money.o +bool8 IsEnoughMoney(u32, u32); +void sub_80B79B8(u32 *, u32); +void sub_80B79E0(u32 *, u32); +void sub_80B7BEC(u32, u8, u8); +void sub_80B7C14(u32, u8, u8); +void RemoveMoneyLabelObject(u8, u8); + +// asm/secret_base.o +void sub_80BB5B4(void); +u8 sub_80BBB24(void); +void sub_80BBCCC(u8); +u8 *sub_80BCCE8(void); +void sub_80BD674(void *, u32, u8); + +// asm/tv.o +void sub_80BD7A8(void); +void UpdateTVScreensOnMap(u32, u32); +void sub_80BDAB4(void); +void sub_80BE97C(u8); +void sub_80BEA50(u16); +bool8 GetPriceReduction(u8); +u8 sub_80BF0B8(u32); +void sub_80BFD44(void *, u32, u8); +void sub_80C0514(void *, u32, u8); + +// asm/contest_link_80C2020.o +void sub_80C48C8(void); +void sub_80C4940(void); +void sub_80C4980(u8); + +// asm/script_pokemon_util_80C4BF0.o +void ShowContestWinner(void); +void HealPlayerParty(); +u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); +u8 ScriptGiveEgg(u16); +void ScriptWildBattle(u16, u8, u16); +void ScriptSetMonMoveSlot(u8, u16, u8); + +// asm/fldeff_80C5CD4.o +void DoFieldPoisonEffect(void); +bool32 FieldPoisonEffectIsRunning(void); +void CreateRecordMixingSprite(void); +void DestroyRecordMixingSprite(void); + +// asm/rotating_gate.o +void RotatingGatePuzzleCameraUpdate(s16, s16); +void sub_80C8080(); +u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16); + +// asm/bike.o +void MovePlayerOnBike(u8, u16, u16); +void sub_80E5B38(u16 i, u16 c); +u8 sub_80E5DEC(u8); +bool8 player_should_look_direction_be_enforced_upon_movement(void); +void sub_80E5FCC(int i, int i1); +void sub_80E6010(int i); +s16 sub_80E6034(void); +void sub_80E6084(); + +// asm/easy_chat.o +void sub_80E6764(void); +u8 ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16); +u16 sub_80EB72C(u16); + +// asm/pokenav.o +void sub_80EBA5C(void); + +// asm/mauville_old_man.o +void sub_80F7AA4(void); +void sub_80F7F30(void); + +// asm/script_pokemon_util_80F99CC.o +void sub_80F99CC(void); + +// src/dewford_trend.o +void sub_80FA17C(void); +void sub_80FA46C(struct EasyChatPair *, u16, u8); +void sub_80FA4E4(struct EasyChatPair *, u32, u8); +bool8 sub_80FA670(struct EasyChatPair *, struct EasyChatPair *, u8); +void sub_80FA740(struct EasyChatPair *); +bool8 SB1ContainsWords(u16 *); +bool8 IsEasyChatPairEqual(u16 *, u16 *); + +// asm/region_map.o +void CopyMapName(); + +// asm/slot_machine.o +void PlaySlotMachine(u8, void *); + +// asm/contest_painting.o +void sub_8106630(u32); + +// asm/rom6.o +void sub_810C994(void); +void sub_810CA6C(s32); +s16 sub_810CAE4(u8, struct Pokeblock *); +void sub_810CC80(void); +u8 sub_810D32C(void); +void ResetCyclingRoadChallengeData(void); +void ScriptAddElevatorMenuItem(u8, u8, u8, u8); +void ScriptShowElevatorMenu(void); +u8 GetLeadMonIndex(void); +void sub_810FA54(void); + +// asm/battle_records.o +void InitLinkBattleRecords(void); + +// asm/battle_transition.o +void sub_811AABC(u8); +void sub_811AAD8(u8); +u8 sub_811AAE8(void); + +// asm/mystery_event_script.o +void sub_8126160(u8); +u16 sub_8126338(void); + +// asm/field_effect_helpers.o +u8 sub_8126B54(void); +void objid_set_invisible(u8); +void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y); +void sub_8127ED0(u8, u8); +void sub_8127F28(u8, u8, s16); +u8 sub_8128124(u8 id); + +// asm/rom_81258BC.o +void sub_8132670(void); +void sub_8133F80(void); +u8 sub_8133FE4(u8); +u8 IsThereStorageSpaceForDecoration(u8); +u8 sub_8134074(u8); +s8 sub_81340A8(u8); +void sub_81341F8(void); +void sub_813420C(void); +void mapnumbers_history_shift_sav1_0_2_4_out(void); +void sub_8134348(void); +void sub_8134394(); +u8 sub_81344CC(void); +void sub_8134AC0(void *); + +// asm/player_pc.o +void NewGameInitPCItems(void); + +// asm/rom_813BA94.o +void sub_813CAF4(u8); +void intro_reset_and_hide_bgs(void); +void sub_813CCE8(u8); +void sub_813CE30(u16, u16, u16, u16); +u8 sub_813CE88(/*TODO: arg types*/); +u8 sub_813CFA8(/*TODO: arg types*/); +void sub_813D084(/*TODO: arg types*/); +u8 sub_813D584(/*TODO: arg types*/); +void sub_813D788(struct Sprite *); +void sub_813D880(struct Sprite *); +void sub_813D954(/*TODO: arg types*/); +void sub_813DB9C(struct Sprite *); +void sub_813DE70(struct Sprite *); +void sub_813E10C(struct Sprite *); +void sub_813E210(struct Sprite *); +void sub_813E7C0(u8); +void sub_813E930(/*TODO: arg types*/); +void sub_813EB4C(u8); +void sub_813EDBC(/*TODO: arg types*/); + +// asm/mystery_event_menu.o +void CB2_InitMysteryEventMenu(void); + +// asm/save_failed_screen.o +void fullscreen_save_activate(); + +// asm/rom_8148B8C.o +void load_intro_part2_graphics(/*TODO: arg types*/); +void sub_8148C78(/*TODO: arg types*/); +u8 sub_8148EC0(/*TODO: arg types*/); +void sub_8149020(/*TODO: arg types*/); +u8 intro_create_brendan_sprite(/*TODO: arg types*/); +u8 intro_create_may_sprite(/*TODO: arg types*/); +u8 intro_create_latios_sprite(/*TODO: arg types*/); +u8 intro_create_latias_sprite(/*TODO: arg types*/); + +// src/agb_flash.o +u16 ReadFlashId(void); +u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)); +void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size); +u32 ProgramFlashSectorAndVerify(); +u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n); diff --git a/include/battle_setup.h b/include/battle_setup.h index 2c9d1d8c5..b82180f28 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -1,7 +1,84 @@ #ifndef GUARD_BATTLE_SETUP_H #define GUARD_BATTLE_SETUP_H +// task01_battle_start +// task_add_01_battle_start void CheckForSafariZoneAndProceed(void); +void sub_8081A18(void); void sub_8081A5C(void); +void sub_8081AA4(void); +// task_add_01_battle_start_with_music_and_stats +// sub_8081AFC +void sub_8081B3C(void); +// sub_8081B78 +// sub_8081BB8 +// sub_8081BF8 +// sub_8081C50 +void sub_8081C8C(void); +void sub_8081CEC(void); +// sub_8081D3C +// sub_8081E90 +// GetSumOfPartyMonLevel +// GetSumOfEnemyPartyLevel +u8 GetWildBattleTransition(void); +u8 GetTrainerBattleTransition(void); +// GetBattleTowerBattleTransition +// sub_8082168 +void sub_8082188(void); +void sub_80821D8(void); +void sub_8082228(void); +// TrainerBattleLoadArg32 +// TrainerBattleLoadArg16 +// TrainerBattleLoadArg8 +// trainerflag_opponent +bool32 battle_exit_is_player_defeat(u32 a1); +// sub_80822BC +// TrainerBattleLoadArgs +// battle_80801F0 +u8 *TrainerBattleConfigure(u8 *data); +void TrainerWantsBattle(u8, u8 *); +u8* GetTrainerFlagFromScriptPointer(u8 *data); +// sub_8082524 +// sub_8082558 +// sub_8082564 +// sub_808257C +// unref_sub_8082590 +u8 trainer_flag_check(u16); +void trainer_flag_set(u16); +void trainer_flag_clear(u16); +void sub_80825E4(void); +void sub_808260C(void); +// do_choose_name_or_words_screen +// sub_80826B0 +// sub_80826D8 +u8 *sub_80826E8(void); +u8 *sub_8082700(void); +// sub_8082718 +// PlayTrainerEncounterMusic +// SanitizeString +u8 *sub_808281C(void); +// sub_8082830 +// unref_sub_808286C +u8 *sub_8082880(void); +// sub_8082894 +// sub_80828B8 +// sub_80828FC +// sub_80829A8 +// sub_80829E8 +// sub_8082A18 +// sub_8082A54 +// sub_8082A90 +// sub_8082AE4 +// sub_8082B10 +// sub_8082B44 +// sub_8082B78 +// sub_8082BA4 +void sub_8082BD0(u16, u16); +// sub_8082C0C +// unref_sub_8082C2C +u16 sub_8082C4C(u16 a1); +// sub_8082C68 +// sub_8082C9C +void sub_8082CB8(void); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/berry.h b/include/berry.h new file mode 100644 index 000000000..2b2933412 --- /dev/null +++ b/include/berry.h @@ -0,0 +1,38 @@ +#ifndef GUARD_BERRY_H +#define GUARD_BERRY_H + +void unref_sub_80B4884(void); +void sub_80B48A8(u8 *src); +u32 sub_80B48F8(struct EnigmaBerry *enigmaBerry); +bool32 sub_80B4940(void); +struct Berry *GetBerryInfo(u8 berry); +struct BerryTree *GetBerryTreeInfo(u8 id); +bool32 FieldObjectInteractionWaterBerryTree(void); +bool32 IsPlayerFacingPlantedBerryTree(void); +u8 WaterBerryTree(void); +void sub_80B4A90(void); +bool32 BerryTreeGrow(struct BerryTree *tree); +void BerryTreeTimeUpdate(int time); +void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle); +void RemoveBerryTree(u8 id); +u8 GetBerryTypeByBerryTreeId(u8 id); +u8 GetStageByBerryTreeId(u8); +u8 ItemIdToBerryType(u16 item); +u16 BerryTypeToItemId(u16 berry); +void GetBerryNameByBerryType(u8 berry, u8 *string); +void ResetBerryTreeSparkleFlag(u8 id); +u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree); +u8 GetNumStagesWateredByBerryTreeId(u8 id); +u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water); +u8 CalcBerryYield(struct BerryTree *tree); +u8 GetBerryCountByBerryTreeId(u8 id); +u16 GetStageDurationByBerryType(u8); +void FieldObjectInteractionGetBerryTreeData(void); +void sub_80B4EE4(void); +void FieldObjectInteractionPlantBerryTree(void); +void FieldObjectInteractionPickBerryTree(void); +void FieldObjectInteractionRemoveBerryTree(void); +u8 PlayerHasBerries(void); +void ResetBerryTreeSparkleFlags(void); + +#endif // GUARD_BERRY_H diff --git a/include/blend_palette.h b/include/blend_palette.h new file mode 100644 index 000000000..a00847bc3 --- /dev/null +++ b/include/blend_palette.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BLEND_PALETTE_H +#define GUARD_BLEND_PALETTE_H + +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); + +#endif // GUARD_BLEND_PALETTE_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 0c9e78a2a..9e2e7a489 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -1,17 +1,112 @@ #ifndef GUARD_FIELD_PLAYER_AVATAR_H #define GUARD_FIELD_PLAYER_AVATAR_H +// sub_80587B4 void player_step(u8 a, u16 b, u16 c); +// ForcedMovement_None +// ForcedMovement_Slip +// sub_8058AAC +// sub_8058AC4 +// sub_8058ADC +// sub_8058AF4 +// sub_8058B0C +// sub_8058B24 +// sub_8058B3C +// sub_8058B54 +// ForcedMovement_SlideSouth +// ForcedMovement_SlideNorth +// ForcedMovement_SlideWest +// ForcedMovement_SlideEast +// sub_8058C04 +// sub_8058C10 +// ForcedMovement_MuddySlope +// PlayerNotOnBikeNotMoving +// PlayerNotOnBikeTurningInPlace +// sub_8058D0C +u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e); void SetPlayerAvatarTransitionFlags(u16 a); +// nullsub_49 +// PlayerAvatarTransition_Normal +// PlayerAvatarTransition_MachBike +// PlayerAvatarTransition_AcroBike +// PlayerAvatarTransition_Surfing +// PlayerAvatarTransition_Underwater +// sub_80591F4 void sub_8059204(void); +// player_get_x22 +// player_npc_set_state_and_x22_etc +void PlayerGoSpeed0(u8 a); +void sub_80593C4(u8 a); +void npc_use_some_d2s(u8 a); +// sub_80593F4 +void sub_805940C(u8 a); +// PlayerOnBikeCollide +void PlayerFaceDirection(u8 a); +void PlayerTurnInPlace(u8 a); +void PlayerJumpLedge(u8 a); void sub_80594C0(void); +// sub_8059504 +// sub_805951C +// sub_8059534 +// sub_805954C +// sub_8059570 +// sub_8059594 +// sub_80595B8 +// sub_80595DC +// sub_8059600 +// sub_8059618 +// sub_8059630 void GetXYCoordsOneStepInFrontOfPlayer(s16 *x, s16 *y); void PlayerGetDestCoords(s16 *, s16 *); u8 player_get_direction_lower_nybble(void); u8 player_get_direction_upper_nybble(void); +// PlayerGetZCoord u8 TestPlayerAvatarFlags(u8); +// sub_80597D0 +// GetPlayerAvatarObjectId void sub_80597E8(void); void sub_80597F4(void); +u8 sub_805983C(u8 a, u8 b); +u8 GetPlayerAvatarGraphicsIdByStateId(u8 a); +// GetPlayerAvatarGenderByGraphicsId +// PartyHasMonWithSurf +// IsPlayerSurfingNorth +// IsPlayerFacingSurfableFishableWater +// ClearPlayerAvatarInfo +void SetPlayerAvatarStateMask(u8 a); +// GetPlayerAvatarGraphicsIdByCurrentState +// SetPlayerAvatarExtraStateTransition void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d); +// sub_8059B88 +// sub_8059BF4 +// sub_8059C3C +// sub_8059C94 +// sub_8059D08 +// sub_8059E84 +// sub_8059EA4 +// sub_8059F40 +// sub_805A000 +// sub_805A0D8 +// sub_805A100 +// sub_805A178 +// sub_805A1B8 +void sub_805A20C(u8 a); +// StartFishing +// Fishing1 +// Fishing2 +// Fishing3 +// Fishing4 +// Fishing5 +// Fishing6 +// Fishing7 +// Fishing8 +// Fishing9 +// Fishing10 +// Fishing11 +// Fishing12 +// Fishing13 +// Fishing14 +// Fishing15 +// Fishing16 #endif diff --git a/include/global.h b/include/global.h index 7fbf5755b..79204e082 100644 --- a/include/global.h +++ b/include/global.h @@ -294,6 +294,23 @@ struct SaveBlock2 /*0xA8*/ u8 filler_A8[0x7E8]; }; +struct UnkStruct_8054FF8_Substruct +{ + s16 x; + s16 y; + u8 field_8; +}; + +struct UnkStruct_8054FF8 +{ + u8 a; + u8 b; + u8 c; + u8 d; + struct UnkStruct_8054FF8_Substruct sub; + u16 field_C; +}; + extern struct SaveBlock2 gSaveBlock2; #endif // GUARD_GLOBAL_H diff --git a/include/m4a.h b/include/m4a.h index 85cba5d77..949403885 100644 --- a/include/m4a.h +++ b/include/m4a.h @@ -3,11 +3,16 @@ #include "gba/m4a_internal.h" -void m4aSoundInit(void); -void m4aSoundMain(void); -void m4aSongNumStart(u16 n); void m4aSoundVSync(void); +void m4aSoundInit(void); +void m4aSoundMain(void); +void m4aSongNumStart(u16); +void m4aSongNumStop(u16 n); void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo); +void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed); +void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed); +void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed); +void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo); #endif //GUARD_M4A_H diff --git a/include/main_menu.h b/include/main_menu.h new file mode 100644 index 000000000..87569dc8e --- /dev/null +++ b/include/main_menu.h @@ -0,0 +1,61 @@ +#ifndef GUARD_MAIN_MENU_H +#define GUARD_MAIN_MENU_H + +#include "gba/types.h" + +void CB2_MainMenu(void); +void VBlankCB_MainMenu(void); +void CB2_InitMainMenu(void); +void Task_NewGameSpeech1(u8 taskId); +// Task_NewGameSpeech2 +// Task_NewGameSpeech3 +// Task_NewGameSpeech4 +// Task_NewGameSpeech5 +// Task_NewGameSpeech6 +// Task_NewGameSpeech7 +// Task_NewGameSpeech8 +// Task_NewGameSpeech9 +// Task_NewGameSpeech10 +// Task_NewGameSpeech11 +// Task_NewGameSpeech12 +// Task_NewGameSpeech13 +// Task_NewGameSpeech14 +// Task_NewGameSpeech15 +// Task_NewGameSpeech16 +// Task_NewGameSpeech17 +// Task_NewGameSpeech18 +// Task_NewGameSpeech19 +// Task_NewGameSpeech20 +// Task_NewGameSpeech21 +// Task_NewGameSpeech22 +// Task_NewGameSpeech23 +// Task_NewGameSpeech24 +// Task_NewGameSpeech25 +// Task_NewGameSpeech26 +// Task_NewGameSpeech27 +// Task_NewGameSpeech28 +// Task_NewGameSpeech29 +// Task_NewGameSpeech30 +// Task_NewGameSpeech31 +// Task_NewGameSpeech32 +// Task_NewGameSpeech33 +// CB_ContinueNewGameSpeechPart2 +// nullsub_34 +// sub_800B240 +// CreateAzurillSprite +// AddBirchSpeechObjects +// Task_SpriteFadeOut +// StartSpriteFadeOut +// Task_SpriteFadeIn +// StartSpriteFadeIn +// sub_800B5A8 +// StartBackgroundFadeOut +// sub_800B654 +// StartBackgroundFadeIn +// CreateGenderMenu +// GenderMenuProcessInput +// CreateNameMenu +// NameMenuProcessInput +// SetPresetPlayerName + +#endif //GUARD_M4A_H diff --git a/include/pokedex.h b/include/pokedex.h index 22ba76fc6..af0ed7102 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -133,11 +133,13 @@ void sub_8090750(u8); void sub_8090A3C(u8); void sub_8090C68(void); +u8 *GetPokemonCategory(u16); bool8 sub_8090D90(u16, u8); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); +u16 sub_8090FF4(void); void sub_8091060(u16); void sub_8091154(u16 order, int i, int i1); void sub_80911C8(u16 num, int i, int i1); diff --git a/include/rom4.h b/include/rom4.h index 21a866d02..98ec02b5f 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -1,13 +1,221 @@ #ifndef GUARD_ROM4_H #define GUARD_ROM4_H +#include "sprite.h" + +struct UnkPlayerStruct +{ + u8 player_field_0; + u8 player_field_1; +}; + +// sub_8052F5C +// flag_var_implications_of_teleport_ +// new_game +// sub_8053014 +void sub_8053050(void); +// sub_805308C +void sub_80530AC(void); void sav12_xor_increment(u8 index); +u32 sub_8053108(u8); +// sav12_xor_set +// sub_8053154 +// sub_8053198 +void update_saveblock1_field_object_coords(u8, s16, s16); +void update_saveblock1_field_object_movement_behavior(u8, u8); +// mapdata_load_assets_to_gpu_and_full_redraw +// get_mapdata_header +// warp_shift +// warp_set +// warp_data_is_not_neg_1 +// get_mapheader_by_bank_and_number +// warp1_get_mapheader +// set_current_map_header_from_sav1_save_old_name +// sub_805338C +// sub_80533CC void warp_in(void); void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +// warp1_set_2 +// saved_warp2_set +void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +// copy_saved_warp2_bank_and_enter_x_to_warp1 +// sub_8053538 +void sub_8053570(void); +void sub_8053588(u8); +// sub_80535C4 void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +// sub_8053678 +void sub_8053690(s8, s8, s8, s8, s8); +// warp1_set_to_warp2 +void sub_80536E4(s8, s8, s8, s8, s8); +void sub_8053720(s16, s16); +// sub_8053778 +// unref_sub_8053790 +// sub_80537CC +// gpu_sync_bg_hide +// sub_8053818 +// sub_8053850 +// sub_80538B0 +// sub_80538D0 +// sub_80538F0 +// sub_8053994 +void player_avatar_init_params_reset(void); +// walkrun_find_lowest_active_bit_in_bitfield +// sub_8053AA8 +u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); +u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8); +u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); +bool32 sub_8053C44(void); +void sub_8053C98(void); +void sub_8053CE4(s32 a1); +u8 sav1_get_flash_used_on_map(void); +void sub_8053D14(u16); +// sub_8053D30 +// sub_8053D6C +// sub_8053D9C +// sav1_map_get_music +// warp1_target_get_music +// call_map_music_set_to_zero +// sub_8053E90 +void sav1_set_battle_music_maybe(u16); void sav1_reset_battle_music_maybe(void); +void sub_8053F0C(void); +void sub_8053F84(void); +void sub_8053FB0(u16); +// is_warp1_light_level_8_or_9 +// sub_8053FF8 +// sub_8054034 +// sub_8054044 +// sub_8054050 +// sub_80540D0 +void sub_8054164(void); +u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); +// get_map_light_level_from_warp u8 sav1_map_get_light_level(void); +// get_map_light_from_warp0 bool8 is_light_level_1_2_3_5_or_6(u8 a1); +// is_light_level_1_2_3_or_6 +u8 is_light_level_8_or_9(u8); +// unref_sub_8054260 +u8 sav1_map_get_name(); +// sav1_map_get_battletype +// ResetSafariZoneFlag_ +bool32 is_c1_link_related_active(void); +// c1_overworld_normal +// c1_overworld +// c2_overworld_basic +// sub_8054398 +void c2_overworld(void); +// set_callback1 +// sub_80543DC +// sub_80543E8 +void CB2_NewGame(void); +void c2_whiteout(void); void CB2_LoadMap(void); +void CB2_LoadMap2(void); +// sub_8054534 +// sub_8054588 +void c2_80567AC(void); +void c2_exit_to_overworld_2_switch(void); +void c2_exit_to_overworld_2_local(void); +void c2_exit_to_overworld_2_link(void); +// sub_805465C +void sub_805469C(void); +// sub_80546B8 +void c2_exit_to_overworld_1_continue_scripts_restart_music(void); +void sub_80546F0(void); +// sub_805470C +void CB2_ContinueSavedGame(void); +void FieldClearVBlankHBlankCallbacks(void); +void SetFieldVBlankCallback(void); +void VBlankCB_Field(void); +// sub_8054814 +bool32 sub_805483C(u8 *); +bool32 sub_805493C(u8 *, u32); +bool32 sub_8054A4C(u8 *); +bool32 sub_8054A9C(u8 *a1); +void do_load_map_stuff_loop(u8 *a1); +void sub_8054BA8(void); +void sub_8054C2C(void); +void sub_8054C54(void); +void sub_8054D4C(u32 a1); +void sub_8054D90(void); +void mli4_mapscripts_and_other(void); +void sub_8054E20(void); +void sub_8054E34(void); +void sub_8054E60(void); +void sub_8054E7C(void); +void sub_8054E98(void); +void sub_8054EC8(void); +void sub_8054F48(void); +void sub_8054F70(void); +// sub_8054F88 +// sub_8054FC0 +// sub_8054FF8 +// sub_8055218 +// sub_8055280 +// sub_80552B0 +u16 sub_805530C(u16); +void sub_8055340(u16 *); +void sub_8055354(void); +u16 sub_8055390(u32); +// sub_80553E0 +u16 sub_80553E4(u32); +u16 sub_8055408(u32); +u16 sub_8055438(u32); +// sub_8055468 +// sub_805546C +// sub_80554A4 +// sub_80554B8 +// sub_80554BC +// sub_80554E4 +// sub_80554F8 +// unref_sub_8055568 +// sub_8055574 +u16 sub_8055588(void); +// sub_805559C +void sub_80555B0(int linkPlayerId, int a2, struct UnkStruct_8054FF8 *a3); +bool32 sub_8055618(struct UnkStruct_8054FF8 *); +bool32 sub_8055630(struct UnkStruct_8054FF8 *); +u8 *sub_8055648(struct UnkStruct_8054FF8 *); +bool32 sub_8055660(struct UnkStruct_8054FF8 *); +u8 *sub_805568C(struct UnkStruct_8054FF8 *); +u16 sub_8055758(u8 *); +void sub_80557E8(void); +void sub_80557F4(void); +void sub_8055808(u8 *); +void sub_8055824(void); +void sub_8055840(u8 *); +void sub_805585C(void); +bool32 sub_8055870(void); +u32 sub_80558AC(void); +u32 sub_8055910(void); +u32 sub_8055940(void); +// ZeroLinkPlayerMapObject +// strange_npc_table_clear +// ZeroMapObject +void SpawnLinkPlayerMapObject(u8, s16, s16, u8); +void InitLinkPlayerMapObjectPos(struct MapObject *, s16, s16); +// unref_sub_8055A6C +// unref_sub_8055A9C +u8 sub_8055AE8(u8); +void sub_8055B08(u8, u16 *, u16 *); +u8 sub_8055B30(u8); +u8 sub_8055B50(u8); +// unref_sub_8055B74 +u8 GetLinkPlayerIdAt(s16, s16); +void sub_8055BFC(u8, u8); +// sub_8055C68 +// sub_8055C88 +// sub_8055C8C +// sub_8055CAC +// sub_8055CB0 +// sub_8055D18 +// sub_8055D30 +// sub_8055D38 +u8 npc_something3(u8, u8); +u8 LinkPlayerDetectCollision(u8, u8, s16, s16); +void CreateLinkPlayerSprite(u8); +void SpriteCB_LinkPlayer(struct Sprite *); #endif // GUARD_ROM4_H diff --git a/include/trainer_see.h b/include/trainer_see.h index 281c7b158..e4d1fe270 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -30,6 +30,5 @@ void sub_80846E4(u8 taskId); void sub_8084794(u32 var); void sub_80847C8(void); void sub_80847D8(u8); -void sub_80847D8(u8); #endif // GUARD_TRAINER_SEE_H diff --git a/include/weather.h b/include/weather.h index a6ca2262c..a24a6d51f 100644 --- a/include/weather.h +++ b/include/weather.h @@ -31,10 +31,13 @@ void sub_807D874(u8); // ... void sub_807DB64(u8, u8); // ... +void PlayRainSoundEffect(void); +// ... void SetSav1Weather(u32); u8 GetSav1Weather(void); void sub_80806E4(void); // ... void sub_808073C(void); +void sub_8080750(); #endif // GUARD_WEATHER_H diff --git a/src/battle_ai.c b/src/battle_ai.c index 945176b64..a2db200ac 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "asm.h" #include "pokemon.h" #include "rng.h" @@ -13,11 +14,6 @@ all the way to at least 0x2016800, in addition to extremely hard functions that as it currently is until someone bothers to document this huge struct. */ -extern u8 sub_8015A98(u8, u8, u8); -extern u8 battle_side_get_owner(u8); -extern s16 battle_get_per_side_status(u8); -extern u8 b_first_side(u8, u8, u8); - extern u16 gUnknown_020239F8; extern u8 gUnknown_02024A60; extern u8 gUnknown_02024C07; @@ -1248,8 +1244,8 @@ void BattleAICmd_get_ability(void) if(battle_side_get_owner(var) == 0) { //register u8 unk asm("r1") = battle_get_per_side_status(var) & 1; - s32 unk = battle_get_per_side_status(var) & 1; - + u16 unk = battle_get_per_side_status(var) & 1; + if(unk_2016A00.unk20[unk] != 0) { ((struct UnknownStruct2 *)((u8 *)&unk_2016A00 - 512))->unk8 = unk_2016A00.unk20[unk]; diff --git a/src/battle_setup.c b/src/battle_setup.c index fd44d2fc6..312dcdbeb 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle_setup.h" +#include "asm.h" #include "safari_zone.h" #include "weather.h" #include "palette.h" @@ -9,6 +10,7 @@ #include "main.h" #include "species.h" #include "songs.h" +#include "sound.h" #include "task.h" #include "string_util.h" #include "rng.h" @@ -22,41 +24,6 @@ #define NUM_TRAINER_EYE_TRAINERS 56 #define TRAINER_REMATCH_STEPS 255 -extern void prev_quest_postbuffer_cursor_backup_reset(void); -extern void overworld_poison_timer_set(void); -extern void current_map_music_set__default_for_battle(u16); -extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); -extern void c2_exit_to_overworld_2_switch(void); -extern void npc_set_running_behaviour_etc(struct MapObject *, u8); -extern u8 npc_running_behaviour_by_direction(u8); -extern void c2_whiteout(void); -extern void sub_800E7C4(void); -extern void sub_8081AA4(void); -extern void sub_8081A18(void); -extern void sub_8081C8C(void); -extern void sub_8081CEC(void); -extern void sub_8080E44(void); -extern void sub_80821D8(void); -extern void sub_8082228(void); -extern void sub_808260C(void); -extern void sub_8082CB8(void); -extern void sub_811AAD8(u8); -extern u8 *sub_80BCCE8(void); -extern void sub_811AABC(u8); -extern u8 sub_811AAE8(void); -extern u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8); -extern u8 *sub_8082880(void); -extern u8 sub_803FC58(u16); -extern bool32 FieldPoisonEffectIsRunning(void); -extern void player_bitmagic(void); -extern void sub_80408BC(); - -u8 GetWildBattleTransition(void); -u8 GetTrainerBattleTransition(void); -bool32 battle_exit_is_player_defeat(u32 a1); -u8 *sub_808281C(void); -u16 sub_8082C4C(u16 a1); - extern u16 gScriptResult; struct TrainerPartyMember0 @@ -104,19 +71,6 @@ struct TrainerEyeTrainer u16 mapNum; }; -extern bool8 MetatileBehavior_IsTallGrass(char); -extern bool8 MetatileBehavior_IsLongGrass(char); -extern bool8 MetatileBehavior_IsSandOrDeepSand(char); -extern bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(char); -extern bool8 MetatileBehavior_IsBridge(char); -extern bool8 sub_80574C4(char); -extern bool8 sub_80574D8(char); -extern bool8 sub_8057568(char); -extern u8 sub_8057450(u8); -extern void PlayNewMapMusic(u16); - -extern u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); - extern void (*gUnknown_0300485C)(void); extern struct Pokemon gEnemyParty[]; @@ -164,8 +118,6 @@ extern u8 gStringVar4[]; extern u8 gBattleTransitionTable_Wild[][2]; extern u8 gBattleTransitionTable_Trainer[][2]; -void sub_8082188(void); - void task01_battle_start(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -732,10 +684,10 @@ void TrainerWantsBattle(u8 trainerMapObjId, u8 *trainerScript) ScriptContext2_Enable(); } -u8 GetTrainerFlagFromScriptPointer(u8 *data) +u8* GetTrainerFlagFromScriptPointer(u8 *data) { u32 flag = TrainerBattleLoadArg16(data + 2); - return FlagGet(TRAINER_FLAG_START + flag); + return (u8*)FlagGet(TRAINER_FLAG_START + flag); } void sub_8082524(void) diff --git a/src/berry.c b/src/berry.c index 2d7b50e2b..aee624c33 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1,4 +1,6 @@ #include "global.h" +#include "berry.h" +#include "asm.h" #include "item.h" #include "main.h" #include "text.h" @@ -7,14 +9,6 @@ #define FIRST_BERRY 0x85 // ITEM_CHERI_BERRY #define LAST_BERRY 0xaf // ITEM_ENIGMA_BERRY -extern u8 GetStageByBerryTreeId(u8); -extern u16 GetStageDurationByBerryType(u8); -extern void sub_80A68CC(); -extern u8 sub_8060234(u8, u8, u8); -extern void sub_8060288(u8, u8, u8); -extern u8 FieldObjectGetBerryTreeId(u8); -extern u8 *GetFieldObjectScriptPointerForComparison(); - extern struct Berry gBerries[]; extern u8 BerryTreeScript; extern struct BerryTree gUnknown_083CD780; @@ -24,8 +18,6 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; -u8 CalcBerryYield(struct BerryTree *tree); - void unref_sub_80B4884(void) { CpuFill16(0, &gSaveBlock1.enigmaBerry, sizeof(gSaveBlock1.enigmaBerry)); diff --git a/src/decompress.c b/src/decompress.c index 16c9f39ed..7f8ed9271 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -1,6 +1,7 @@ #include "global.h" #include "decompress.h" #include "species.h" +#include "asm.h" #define WRAM 0x02000000 @@ -8,8 +9,6 @@ extern struct SpriteSheet gMonFrontPicTable[]; extern struct SpriteSheet gMonBackPicTable[]; extern void *gUnknown_081FAF4C[]; -extern void DrawSpindaSpots(u16, u32, void *, u8); - void sub_800D238(const void *src, void *dest) { LZ77UnCompWram(src, dest); diff --git a/src/dewford_trend.c b/src/dewford_trend.c index 8d683e072..ae1397852 100644 --- a/src/dewford_trend.c +++ b/src/dewford_trend.c @@ -1,23 +1,14 @@ #include "global.h" +#include "asm.h" #include "link.h" #include "rng.h" #include "flag.h" -extern u8 GetLinkPlayerCount(void); -extern u16 sub_80EB72C(u16); -extern u8 ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16); - extern struct EasyChatPair unk_2007800[5]; extern struct EasyChatPair unk_2007900[5]; extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; -void sub_80FA740(struct EasyChatPair *); -void sub_80FA46C(struct EasyChatPair *, u16, u8); -bool8 sub_80FA670(struct EasyChatPair *, struct EasyChatPair *, u8); -bool8 IsEasyChatPairEqual(u16 *, u16 *); -bool8 SB1ContainsWords(u16 *); - void sub_80FA17C(void) { u16 i; @@ -394,7 +385,7 @@ void sub_80FA4E4(u8 *a, u32 b) } #else __attribute__((naked)) -void sub_80FA4E4(u8 *a, u32 b) +void sub_80FA4E4(struct EasyChatPair *a, u32 b, u8 c) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/diploma.c b/src/diploma.c index 4d81ad4b0..8fabe3a2f 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -1,16 +1,15 @@ #include "global.h" +#include "asm.h" #include "main.h" #include "menu.h" #include "palette.h" +#include "pokedex.h" +#include "rom4.h" #include "sprite.h" #include "string_util.h" #include "task.h" #include "text.h" -extern void remove_some_task(void); -extern void sub_80546F0(void); -extern u16 sub_8090FF4(void); - extern u8 gDiplomaTiles[]; extern u8 gDiplomaTilemap[]; extern u8 gDiplomaPalettes[]; diff --git a/src/field_camera.c b/src/field_camera.c index 1986e33d7..b9a813bdf 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -1,5 +1,7 @@ #include "global.h" #include "field_camera.h" +#include "asm.h" +#include "berry.h" #include "field_player_avatar.h" #include "asm_fieldmap.h" #include "sprite.h" @@ -7,11 +9,6 @@ extern u16 gBGTilemapBuffers[4][0x400]; - -//ToDo: argument types -extern void ResetBerryTreeSparkleFlags(void); -extern void RotatingGatePuzzleCameraUpdate(s16, s16); - extern u8 gUnknown_0202E854; @@ -49,13 +46,10 @@ static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData static void RedrawMapSliceEast(struct UnknownStruct *a, struct MapData *mapData); static void RedrawMapSliceWest(struct UnknownStruct *a, struct MapData *mapData); static s32 MapPosToBgTilemapOffset(struct UnknownStruct *a, s32 x, s32 y); -void CameraUpdate(void); static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData); static void DrawMetatileAt(struct MapData *mapData, u16, int, int); static void DrawMetatile(s32 a, u16 *b, u16 c); -u8 AddCameraObject(u8); -void UpdateFieldObjectsForCameraUpdate(s16, s16); static void CameraPanningCB_PanAhead(void); static void move_tilemap_camera_to_upper_left_corner_(struct UnknownStruct *a) diff --git a/src/field_door.c b/src/field_door.c index 8aac6cce3..da57988ca 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -1,9 +1,8 @@ #include "global.h" +#include "asm.h" #include "task.h" #include "field_camera.h" -extern u8 MetatileBehavior_IsDoor(u8); - struct DoorGraphics { u16 metatileNum; @@ -225,7 +224,7 @@ bool8 FieldIsDoorAnimationRunning(void) return FuncIsActiveTask(Task_AnimateDoor); } -u8 sub_8058790(u32 x, u32 y) +u32 sub_8058790(u32 x, u32 y) { if (cur_mapdata_get_door_x2_at(gDoorAnimGraphicsTable, x, y) == 0) return 8; diff --git a/src/field_effect.c b/src/field_effect.c index 480e970ab..fe586fcb6 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -11,18 +11,6 @@ extern u8 *gFieldEffectScriptPointers[]; extern FldEffCmd gFieldEffectScriptFuncs[]; -void FieldEffectScript_LoadTiles(u8 **script); -void FieldEffectScript_LoadFadedPalette(u8 **script); -void FieldEffectScript_LoadPalette(u8 **script); -void FieldEffectScript_CallNative(u8 **script, u32 *val); -void FieldEffectFreeGraphicsResources(struct Sprite *sprite); -void FieldEffectStop(struct Sprite *sprite, u8 id); -void FieldEffectFreeTilesIfUnused(u16 tileStart); -void FieldEffectFreePaletteIfUnused(u8 paletteNum); -void FieldEffectActiveListClear(void); -void FieldEffectActiveListAdd(u8 id); -void FieldEffectActiveListRemove(u8 id); - u32 FieldEffectStart(u8 id) { u8 *script; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index be9d07582..a6b53b7a6 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1,5 +1,6 @@ #include "global.h" #include "field_player_avatar.h" +#include "asm.h" #include "field_map_obj.h" #include "rom4.h" #include "flag.h" @@ -14,94 +15,6 @@ #include "wild_encounter.h" #include "asm_fieldmap.h" -struct UnknownStruct -{ - u8 unk0; - u8 unk1; - u8 unk2; - s16 unk4; - s16 unk6; - u8 unk8; - u8 unk9; - u8 unkA_0:4; - u8 unkA_4:4; - u16 unkC; - u16 unkE; - u32 unk10; - u16 unk14; -}; - -extern u8 SpawnSpecialFieldObject(struct UnknownStruct *); -extern u8 sub_8126B54(void); -extern bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *); -extern u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); -extern u8 FieldObjectGetSpecialAnim(struct MapObject *); -extern bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8); -extern void FieldObjectClearAnim(struct MapObject *); -extern s16 sub_80E6034(void); -extern bool8 MetatileBehavior_IsSurfableFishableWater(u8); -extern bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *); -extern void sub_806451C(void); -extern void sub_805B980(struct MapObject *, u8); -extern void sub_8127ED0(u8, u8); -extern bool8 is_tile_x69_2_warp_door(u8); -extern bool8 pokemon_has_move(struct Pokemon *, u8); -extern u8 GetSimpleGoAnimId(u8); -extern u8 GetStepInPlaceDelay16AnimId(u8); -extern u8 sub_806084C(u8); -extern u8 GetOppositeDirection(u8); -extern u8 GetFaceDirectionAnimId(u8); -extern u8 sub_80608D0(u8); -extern bool8 GetFishingWildMonListHeader(void); -extern u8 npc_block_way(struct MapObject *, s16, s16, u8); -extern u8 GetFieldObjectIdByXY(s16, s16); -extern u8 sub_8056F08(u8); -extern u8 GetLedgeJumpDirection(s16, s16, u8); -extern u8 GetFieldObjectIdByXYZ(u16, u16, int); -extern u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16); -extern u8 sub_805FDF8(u8); -extern void sub_80BE97C(u8); -extern void sub_8127F28(u8, u8, s16); -extern u8 sub_805FE08(u8); -extern void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *); -extern u8 FieldObjectDirectionToImageAnimId(u8); -extern u8 sub_805FD98(u8); -extern u8 sub_805FDE8(u8); -extern void sub_8053F84(void); -extern u8 sub_80609D8(u8); -extern u8 sub_8060A04(u8); -extern u8 sub_8060A30(u8); -extern u8 sub_8060A5C(u8); -extern u8 sub_8060A88(u8); -extern u8 sub_8060AB4(u8); -extern u8 sub_8060878(u8); -extern u8 sub_8060AE0(u8); -extern u8 sub_8060B0C(u8); -extern u8 sub_8060B38(u8); -extern u8 sub_8060B64(u8); -extern void objid_set_invisible(u8); -extern void FieldObjectTurn(struct MapObject *, u8); -extern u8 sub_8128124(u8 id); -extern u8 sub_80607F4(u8 a); -extern u8 GetGoSpeed0AnimId(u8 a); -extern u8 sub_8060744(u8 a); -extern u8 d2s_08064034(u8 a); -extern u8 sub_806079C(u8 a); -extern void FieldObjectForceSetSpecialAnim(struct MapObject *pObject, u8 a); -extern u8 GetStepInPlaceDelay8AnimId(u8 a); -extern u8 GetStepInPlaceDelay32AnimId(u8 a); -extern u8 GetJumpLedgeAnimId(u8 a); - -// Bike -extern void MovePlayerOnBike(u8, u16, u16); -extern void sub_80E5B38(u16 i, u16 c); -extern u8 sub_80E5DEC(u8); -extern bool8 player_should_look_direction_be_enforced_upon_movement(void); -extern void sub_80E5FCC(int i, int i1); -extern void sub_80E6010(int i); -extern void sub_80E6084(); -extern void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y); - extern u8 gOtherText_OhABite[]; extern u8 gOtherText_PokeOnHook[]; extern u8 gOtherText_NotEvenANibble[]; @@ -149,7 +62,6 @@ static u8 GetForcedMovementByMetatileBehavior(void); static void MovePlayerNotOnBike(u8 a, u16 b); static u8 CheckMovementInputNotOnBike(u8 a); static u8 CheckForPlayerAvatarCollision(u8 a); -u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e); static u8 sub_8058EF0(s16 a, s16 b, u8 c); static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c); static u8 sub_8058F6C(s16 a, s16 b, u8 c); @@ -159,22 +71,12 @@ static bool8 player_is_anim_in_certain_ranges(void); static bool8 sub_80592A4(void); static bool8 PlayerIsAnimActive(void); static bool8 PlayerCheckIfAnimFinishedOrInactive(void); -void PlayerGoSpeed0(u8 a); -void sub_80593C4(u8 a); -void npc_use_some_d2s(u8 a); -void sub_805940C(u8 a); static void PlayerNotOnBikeCollide(u8 a); -void PlayerFaceDirection(u8 a); -void PlayerTurnInPlace(u8 a); -void PlayerJumpLedge(u8 a); static void PlayCollisionSoundIfNotFacingWarp(u8 a); -u8 GetPlayerAvatarGraphicsIdByStateId(u8 a); -void SetPlayerAvatarStateMask(u8 a); static void sub_8059D60(struct MapObject *a); static void StartStrengthAnim(u8 a, u8 b); static void sub_8059F94(void); static void sub_805A06C(void); -void sub_805A20C(u8 a); void sub_80587B4(struct Sprite *sprite) { @@ -1093,7 +995,7 @@ void SetPlayerAvatarExtraStateTransition(u8 a, u8 b) void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d) { - struct UnknownStruct s; + struct UnknownStruct_FPA s; u8 mapObjectId; struct MapObject *mapObject; diff --git a/src/field_poison.c b/src/field_poison.c index a51fe5546..309ec1d71 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -1,14 +1,11 @@ #include "global.h" +#include "asm.h" #include "field_message_box.h" #include "pokemon.h" #include "script.h" #include "string_util.h" #include "task.h" -extern void AdjustFriendship(struct Pokemon *, u8); -extern u8 pokemon_ailments_get_primary(u32); -extern void DoFieldPoisonEffect(void); - extern struct Pokemon gPlayerParty[6]; extern u16 gScriptResult; extern u8 fieldPoisonText_PokemonFainted[]; diff --git a/src/fldeff_emotion.c b/src/fldeff_emotion.c index 81ab135c4..efe4ef683 100644 --- a/src/fldeff_emotion.c +++ b/src/fldeff_emotion.c @@ -1,4 +1,5 @@ #include "global.h" +#include "asm.h" #include "sprite.h" #include "asm_fieldmap.h" #include "field_effect.h" @@ -8,11 +9,6 @@ extern u32 gUnknown_0202FF84[]; extern struct SpriteTemplate gSpriteTemplate_839B510; extern struct SpriteTemplate gSpriteTemplate_839B528; -bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); - -void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3); -void objc_exclamation_mark_probably(struct Sprite *sprite); - u8 FldEff_ExclamationMarkIcon1(void) { u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53); diff --git a/src/intro.c b/src/intro.c index 3d32cb18e..13e35976e 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1,5 +1,6 @@ #include "global.h" #include "intro.h" +#include "asm.h" #include "gba/m4a_internal.h" #include "m4a.h" #include "libgncmultiboot.h" @@ -60,39 +61,6 @@ extern const u8 gIntroCopyright_Gfx[]; extern const u16 gIntroCopyright_Pal[]; extern const u16 gIntroCopyright_Tilemap[]; -// rom_813BA94 -extern void sub_813CAF4(u8); -extern void intro_reset_and_hide_bgs(void); -extern void sub_813CCE8(u8); -extern void sub_813CE30(u16, u16, u16, u16); -extern u8 sub_813CE88(/*TODO: arg types*/); -extern u8 sub_813CFA8(/*TODO: arg types*/); -extern void sub_813D084(/*TODO: arg types*/); -extern u8 sub_813D584(/*TODO: arg types*/); -extern void sub_813D788(struct Sprite *); -extern void sub_813D880(struct Sprite *); -extern void sub_813D954(/*TODO: arg types*/); -extern void sub_813DB9C(struct Sprite *); -extern void sub_813DE70(struct Sprite *); -extern void sub_813E10C(struct Sprite *); -extern void sub_813E210(struct Sprite *); -extern void sub_813E7C0(u8); -extern void sub_813E930(/*TODO: arg types*/); -extern void sub_813EB4C(u8); -extern void sub_813EDBC(/*TODO: arg types*/); - -// rom_8148B8C -extern void load_intro_part2_graphics(/*TODO: arg types*/); -extern void sub_8148C78(/*TODO: arg types*/); -extern u8 sub_8148EC0(/*TODO: arg types*/); -extern void sub_8149020(/*TODO: arg types*/); -extern u8 intro_create_brendan_sprite(/*TODO: arg types*/); -extern u8 intro_create_may_sprite(/*TODO: arg types*/); -extern u8 intro_create_latios_sprite(/*TODO: arg types*/); -extern u8 intro_create_latias_sprite(/*TODO: arg types*/); - -extern void remove_some_task(void); - static void MainCB2_EndIntro(void); static void Task_IntroLoadPart1Graphics(u8); static void Task_IntroFadeIn(u8); diff --git a/src/link.c b/src/link.c index 2208390da..56635def2 100644 --- a/src/link.c +++ b/src/link.c @@ -1,10 +1,11 @@ #include "global.h" +#include "link.h" +#include "asm.h" #include "main.h" #include "task.h" #include "text.h" #include "sprite.h" #include "songs.h" -#include "link.h" #include "palette.h" #include "rng.h" #include "menu.h" @@ -30,8 +31,6 @@ struct LinkTestBGInfo u32 dummy_C; }; -extern void sub_80516C4(u8, u16); - extern u8 unk_2000000[]; extern u8 unk_2004000[]; extern u16 gUnknown_020239F8; diff --git a/src/main.c b/src/main.c index 0023925f8..a14663d32 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,6 @@ #include "global.h" #include "main.h" +#include "asm.h" #include "play_time.h" #include "m4a.h" #include "gba/m4a_internal.h" @@ -8,6 +9,7 @@ #include "rtc.h" #include "link.h" #include "rng.h" +#include "rom4.h" #include "sound.h" #include "intro.h" @@ -65,13 +67,6 @@ u8 gPcmDmaCounter; EWRAM_DATA void (*gFlashTimerIntrFunc)(void) = NULL; -extern void sub_800C35C(void); -extern void remove_some_task(void); -extern u32 sub_80558AC(void); -extern u32 sub_8055910(void); -extern u32 sub_8055940(void); -extern void CheckForFlashMemory(void); - static void UpdateLinkAndCallCallbacks(void); static void InitMainCallbacks(void); static void CallCallbacks(void); diff --git a/src/main_menu.c b/src/main_menu.c index eb5867d5d..176d6bd99 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1,10 +1,13 @@ #include "global.h" +#include "main_menu.h" +#include "asm.h" #include "save_menu_util.h" #include "option_menu.h" #include "text.h" #include "sprite.h" #include "task.h" #include "main.h" +#include "rom4.h" #include "rtc.h" #include "songs.h" #include "palette.h" @@ -18,16 +21,6 @@ #define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24)) -extern void remove_some_task(void); -extern void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u16 s4); -extern bool32 IsMysteryGiftAvailable(void); -extern void CB2_ContinueSavedGame(void); -extern void CB2_InitMysteryEventMenu(void); -extern void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4); -extern void CB2_NewGame(void); -extern u8 CreateBirchSprite(u8, u8, u8); -extern u8 CreateTrainerSprite_BirchSpeech(u8, u16, u16, u8, void *); - extern struct PaletteFadeControl gPaletteFade; extern u8 gSaveFileDeletedMessage[]; extern u8 gSaveFileCorruptMessage[]; @@ -43,9 +36,6 @@ extern u8 gMainMenuString_Time[]; extern u8 gMainMenuString_Pokedex[]; extern u8 gMainMenuString_Badges[]; -void CB2_MainMenu(void); -void VBlankCB_MainMenu(void); -void CB2_InitMainMenu(void); static void sub_80096FC(void); static u32 InitMainMenu(bool8 a1); static void Task_MainMenuCheckSave(u8 taskId); @@ -65,7 +55,6 @@ static void PrintPlayerName(void); static void PrintPlayTime(void); static void PrintPokedexCount(void); static void PrintBadgeCount(void); -void Task_NewGameSpeech1(u8); extern u16 gMainMenuPalette[]; diff --git a/src/map_obj_80643A4.c b/src/map_obj_80643A4.c index d30fab49c..20c5303c4 100644 --- a/src/map_obj_80643A4.c +++ b/src/map_obj_80643A4.c @@ -1,13 +1,9 @@ #include "global.h" +#include "asm.h" #include "sprite.h" #include "asm_fieldmap.h" #include "field_effect.h" -extern void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); -extern u8 FieldObjectDirectionToImageAnimId(u8); -extern void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *); -extern struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); - typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir); extern u32 gUnknown_0202FF84[]; diff --git a/src/map_obj_lock.c b/src/map_obj_lock.c index bbe08ac37..cc2befa6d 100644 --- a/src/map_obj_lock.c +++ b/src/map_obj_lock.c @@ -1,17 +1,9 @@ #include "global.h" #include "map_obj_lock.h" +#include "asm.h" #include "field_player_avatar.h" #include "task.h" -extern void player_bitmagic(void); -extern void sub_80643A4(struct MapObject *); -extern void sub_8064470(u8); -extern u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8); -extern u8 FieldObjectClearAnimIfSpecialAnimFinished(void *); -extern void sub_80A2178(void); -extern void sub_806451C(void); -extern u8 FieldObjectFaceOppositeDirection(void *, u8); - extern u16 gScriptFacing; bool8 walkrun_is_standing_still(void) diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index 3353ec58e..b8fe92b9a 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -1,17 +1,13 @@ #include "global.h" #include "mori_debug_menu.h" +#include "asm.h" #include "start_menu.h" #include "menu.h" #include "main.h" #include "string_util.h" -extern u16 sub_8041870(u16); -extern void sub_810CA6C(s32); extern u8 (*gCallback_03004AE8)(void); -extern u8 daycare_count_pokemon(u32); -extern u8 daycare_relationship_score_from_savegame(void); - struct DebugMenuAction { u8 *text; diff --git a/src/new_game.c b/src/new_game.c index 97a6c6ee0..c8221fa5d 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -1,5 +1,7 @@ #include "global.h" #include "new_game.h" +#include "asm.h" +#include "berry.h" #include "play_time.h" #include "pokemon_size_record.h" #include "script.h" diff --git a/src/palette.c b/src/palette.c index 53ade0105..bf93a036c 100644 --- a/src/palette.c +++ b/src/palette.c @@ -1,5 +1,7 @@ #include "global.h" #include "palette.h" +#include "asm.h" +#include "blend_palette.h" #include "decompress.h" enum @@ -38,8 +40,6 @@ struct PaletteStruct u8 ps_field_9; }; -extern void BlendPalette(u16, u16, u8, u16); - EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0}; EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0}; EWRAM_DATA static struct PaletteStruct sPaletteStructs[0x10] = {0}; diff --git a/src/pokedex.c b/src/pokedex.c index c7f3b5f5c..8d574ed57 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1,5 +1,6 @@ #include "global.h" #include "pokedex.h" +#include "asm.h" #include "gba/m4a_internal.h" #include "string_util.h" #include "m4a.h" @@ -107,7 +108,6 @@ extern u8 gDexText_RegisterComplete[]; extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); extern void remove_some_task(void); -extern bool32 IsNationalPokedex(void); extern u8 sub_8091E3C(void); extern void sub_80690C8(void); extern void sub_805469C(void); diff --git a/src/pokemon_1.c b/src/pokemon_1.c index 0c34279f7..3971e08dd 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -1,7 +1,9 @@ #include "global.h" +#include "asm.h" #include "text.h" #include "string_util.h" #include "pokemon.h" +#include "rom4.h" #include "species.h" #include "main.h" #include "rng.h" @@ -13,8 +15,6 @@ //Extracts the lower 16 bits of a 32-bit number #define LOHALF(n) ((n) & 0xFFFF) -extern u8 sav1_map_get_name(); - extern struct Pokemon gPlayerParty[6]; // 0x3004360 extern struct Pokemon gEnemyParty[6]; // 0x30045C0 diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 78b394b87..aeffb29a0 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1,7 +1,9 @@ #include "global.h" +#include "asm.h" #include "text.h" #include "string_util.h" #include "pokemon.h" +#include "rng.h" #include "species.h" #include "main.h" #include "sprite.h" @@ -49,11 +51,6 @@ extern u8 gUnknown_0820823C[]; extern u8 gStatStageRatios[][2]; extern u8 gHoldEffectToType[][2]; -extern u8 battle_side_get_owner(u8); -extern u8 battle_get_side_with_given_state(u8); -extern u32 battle_get_per_side_status(u8); -extern u8 sub_8018324(u8, u8, u8, u8, u16); - u8 sub_803C348(u8 a1) { s32 i; @@ -87,6 +84,7 @@ u8 sub_803C348(u8 a1) return retVal; } +#ifdef NONMATCHING u8 sub_803C434(u8 a1) { u32 status0 = battle_get_per_side_status(a1); @@ -111,7 +109,7 @@ u8 sub_803C434(u8 a1) if (sub_803C348(0) > 1) { - u32 r = Random(); + u16 r = Random(); register u32 val asm("r1") = mask2; val &= r; if (!val) @@ -133,6 +131,77 @@ u8 sub_803C434(u8 a1) return battle_get_side_with_given_state(status); } } +#else +__attribute__((naked)) +u8 sub_803C434(u8 a1) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl battle_get_per_side_status\n\ + movs r1, 0x1\n\ + movs r6, 0x1\n\ + adds r4, r6, 0\n\ + ands r4, r0\n\ + eors r4, r1\n\ + adds r5, r4, 0\n\ + ldr r0, _0803C45C\n\ + ldrh r1, [r0]\n\ + adds r0, r6, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0803C460\n\ + adds r0, r4, 0\n\ + b _0803C4AA\n\ + .align 2, 0\n\ +_0803C45C: .4byte gUnknown_020239F8\n\ +_0803C460:\n\ + movs r0, 0\n\ + bl sub_803C348\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bls _0803C484\n\ + bl Random\n\ + adds r1, r6, 0\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0803C480\n\ + movs r0, 0x2\n\ + eors r0, r4\n\ + b _0803C4AA\n\ +_0803C480:\n\ + adds r0, r4, 0\n\ + b _0803C4AA\n\ +_0803C484:\n\ + ldr r0, _0803C49C\n\ + ldrb r1, [r0]\n\ + ldr r2, _0803C4A0\n\ + lsls r0, r4, 2\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _0803C4A4\n\ + adds r0, r4, 0\n\ + b _0803C4AA\n\ + .align 2, 0\n\ +_0803C49C: .4byte gUnknown_02024C0C\n\ +_0803C4A0: .4byte gBitTable\n\ +_0803C4A4:\n\ + movs r0, 0x2\n\ + eors r5, r0\n\ + adds r0, r5, 0\n\ +_0803C4AA:\n\ + bl battle_get_side_with_given_state\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif u8 GetMonGender(struct Pokemon *mon) { diff --git a/src/record_mixing.c b/src/record_mixing.c index 1bcd83882..281ab2803 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -1,7 +1,9 @@ #include "global.h" #include "record_mixing.h" +#include "asm.h" #include "link.h" #include "menu.h" +#include "rom4.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -32,22 +34,6 @@ extern bool8 gReceivedRemoteLinkPlayers; extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; -extern void sub_8083A84(TaskFunc); -extern void sub_8041324(struct BoxPokemon *, void *); -extern void sub_80BD674(void *, u32, u8); -extern void sub_80BFD44(void *, u32, u8); -extern void sub_80C0514(void *, u32, u8); -// UB: sub_80FA4E4 declared with 3 arguments instead of 2 -extern void sub_80FA4E4(void *, u32, u8); -extern u16 sub_8126338(void); -extern u8 sub_8083664(void); -extern void sub_80720B0(void); -extern void CreateRecordMixingSprite(void); -extern void DestroyRecordMixingSprite(void); -extern u16 sub_8055588(void); -extern void sub_80F7F30(void); -extern void sub_8134AC0(void *); - #define BUFFER_CHUNK_SIZE 200 void sub_80B929C(void) diff --git a/src/rom4.c b/src/rom4.c index 493f37513..2fdee966c 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -1,5 +1,10 @@ #include "global.h" #include "rom4.h" +#include "asm.h" +#include "asm_fieldmap.h" +#include "battle_setup.h" +#include "berry.h" +#include "field_map_obj.h" #include "field_player_avatar.h" #include "menu.h" #include "weather.h" @@ -11,6 +16,7 @@ #include "new_game.h" #include "heal_location.h" #include "field_message_box.h" +#include "safari_zone.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -23,7 +29,6 @@ #include "field_camera.h" #include "field_effect.h" #include "wild_encounter.h" -#include "asm_fieldmap.h" #ifdef SAPPHIRE #define LEGENDARY_MUSIC BGM_OOAME // Heavy Rain @@ -37,37 +42,6 @@ struct UnkTVStruct u32 tv_field_4; }; -struct UnkPlayerStruct -{ - u8 player_field_0; - u8 player_field_1; -}; - -struct UnkInputStruct -{ - u8 input_field_0; - u8 input_field_1; - u8 input_field_2; - u8 input_field_3; -}; - -struct UnkStruct_8054FF8_Substruct -{ - s16 x; - s16 y; - u8 field_8; -}; - -struct UnkStruct_8054FF8 -{ - u8 a; - u8 b; - u8 c; - u8 d; - struct UnkStruct_8054FF8_Substruct sub; - u16 field_C; -}; - struct LinkPlayerMapObject { u8 active; @@ -140,99 +114,6 @@ extern const struct WarpData gDummyWarpData; extern s32 gUnknown_0839ACE8; extern u32 gUnknown_08216694[]; -extern u8 sub_810D32C(void); -extern void sub_8080B60(void); -extern void sub_810CC80(void); -extern void sub_8080AC4(void); -extern void sub_8080A3C(void); -extern void atk17_seteffectuser(void); -extern void sub_80809B0(void); -extern void sub_8080990(void); -extern u8 sub_80BBB24(void); -extern u8 *sub_80682A8(void *, u8, u8); -extern u8 *sub_8068E24(struct UnkStruct_8054FF8_Substruct *); -extern u8 ZCoordToPriority(u8); - -void sub_8082BD0(u16, u16); -void player_avatar_init_params_reset(void); -u8 player_get_direction_lower_nybble(void); -u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16, u8); -u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8); -u8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8); -bool8 sub_8056F24(u8); -bool8 sub_8056F08(u8); -bool8 MetatileBehavior_IsDoor(u8); -bool8 MetatileBehavior_IsSouthArrowWarp(u8); -bool8 MetatileBehavior_IsNorthArrowWarp(u8); -bool8 MetatileBehavior_IsWestArrowWarp(u8); -bool8 MetatileBehavior_IsEastArrowWarp(u8); -bool8 MetatileBehavior_IsLadder(u8); -u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); -bool32 sub_8053C44(void); -void sub_8053C98(void); -void sub_8053F0C(void); -u8 is_light_level_8_or_9(u8); -void sub_8054164(void); -void sub_8055354(void); -void c2_overworld(void); -void CB2_LoadMap2(void); -void c2_80567AC(void); -void c2_exit_to_overworld_2_link(void); -void c2_exit_to_overworld_2_local(void); -void FieldClearVBlankHBlankCallbacks(void); -void SetFieldVBlankCallback(void); -void VBlankCB_Field(void); -bool32 sub_805483C(u8 *); -bool32 sub_805493C(u8 *, u32); -bool32 sub_8054A4C(u8 *); -bool32 sub_8054A9C(u8 *a1); -void do_load_map_stuff_loop(u8 *a1); -void sub_8054BA8(void); -void sub_8054C2C(void); -void sub_8054C54(void); -void sub_8054D4C(u32 a1); -void sub_8054D90(void); -void mli4_mapscripts_and_other(void); -void sub_8054E20(void); -void sub_8054E34(void); -void sub_8054E60(void); -void sub_8054E7C(void); -void sub_8054E98(void); -void sub_8054EC8(void); -void sub_8054F48(void); -void sub_8054F70(void); -u16 sub_805530C(u16); -void sub_8055340(u16 *); -u16 sub_8055390(u32); -u16 sub_80553E4(u32); -u16 sub_8055408(u32); -u16 sub_8055438(u32); -bool32 sub_8055618(struct UnkStruct_8054FF8 *); -bool32 sub_8055630(struct UnkStruct_8054FF8 *); -u8 *sub_8055648(struct UnkStruct_8054FF8 *); -bool32 sub_8055660(struct UnkStruct_8054FF8 *); -u8 *sub_805568C(struct UnkStruct_8054FF8 *); -u16 sub_8055758(u8 *); -void sub_80557E8(void); -void sub_80557F4(void); -void sub_8055808(u8 *); -void sub_8055824(void); -void sub_8055840(u8 *); -void sub_805585C(void); -bool32 sub_8055870(void); -void SpawnLinkPlayerMapObject(u8, s16, s16, u8); -void InitLinkPlayerMapObjectPos(struct MapObject *, s16, s16); -void sub_80555B0(int, int, struct UnkStruct_8054FF8 *); -u8 sub_8055AE8(u8); -void sub_8055B08(u8, u16 *, u16 *); -u8 sub_8055B30(u8); -u8 sub_8055B50(u8); -u8 GetLinkPlayerIdAt(s16, s16); -void sub_8055BFC(u8, u8); -u8 npc_something3(u8, u8); -u8 LinkPlayerDetectCollision(u8, u8, s16, s16); -void CreateLinkPlayerSprite(u8); -void SpriteCB_LinkPlayer(struct Sprite *); void sub_8052F5C(void) { diff --git a/src/safari_zone.c b/src/safari_zone.c index deb8817ec..118797136 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -1,5 +1,6 @@ #include "global.h" #include "safari_zone.h" +#include "asm.h" #include "field_player_avatar.h" #include "flag.h" #include "main.h" @@ -20,9 +21,6 @@ struct PokeblockFeeder static void ClearAllPokeblockFeeders(void); static void DecrementFeederStepCounters(void); -extern void c2_exit_to_overworld_2_switch(void); -extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); -extern void sub_8080E44(void); extern u8 gUnknown_02024D26; diff --git a/src/save.c b/src/save.c index 6d9ec8b03..80e913794 100644 --- a/src/save.c +++ b/src/save.c @@ -1,12 +1,10 @@ #include "global.h" #include "save.h" +#include "asm.h" #include "gba/gba.h" #include "rom4.h" #include "gba/flash_internal.h" -extern u32 sub_8053108(u8); -extern u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n); - extern struct SaveSection unk_2000000; extern u32 gUnknown_02039284; diff --git a/src/save_menu_util.c b/src/save_menu_util.c index c315acda5..ff42d66ea 100644 --- a/src/save_menu_util.c +++ b/src/save_menu_util.c @@ -1,5 +1,6 @@ #include "global.h" #include "save_menu_util.h" +#include "asm.h" #include "menu.h" #include "flag.h" #include "string_util.h" diff --git a/src/scrcmd.c b/src/scrcmd.c index e80777489..8051b0cb0 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1,4 +1,7 @@ #include "global.h" +#include "asm.h" +#include "battle_setup.h" +#include "berry.h" #include "field_player_avatar.h" #include "item.h" #include "script.h" @@ -21,101 +24,6 @@ #include "coins.h" #include "field_effect.h" -extern void ClearRamScript(void); -extern void sub_8126160(u8); -extern u8 IsThereStorageSpaceForDecoration(u8); -extern s8 sub_81340A8(u8); -extern u8 sub_8134074(u8); -extern u8 sub_8133FE4(u8); -extern void sub_8081594(u8); -extern void sub_8053CE4(u32); -extern void DoTimeBasedEvents(void); -extern void activate_per_step_callback(u8); -extern void sub_8053D14(u16); -extern void sub_8080E88(void); -extern void player_avatar_init_params_reset(void); -extern void sp13E_warp_to_last_warp(void); -extern void sub_8080EF0(void); -extern void sp13F_fall_to_last_warp(void); -extern void sub_8053720(s16, s16); -extern void sub_8080F68(void); -extern void saved_warp2_set_2(s8, s8, s8, s8, s8, s8); -extern void sub_8053690(s8, s8, s8, s8, s8); -extern void sub_80536E4(s8, s8, s8, s8, s8); -extern void sav1_set_battle_music_maybe(u16); -extern void sub_8053F84(void); -extern void sub_8053FB0(u16); -extern u8 exec_movement(u8, u8, u8, void *); -extern bool8 sub_80A212C(u8, u8, u8); -extern void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8); -extern u8 show_sprite(u8, u8, u8); -extern void sub_805C0F8(u8, u8, u8, s16, s16); -extern void update_saveblock1_field_object_coords(u8, s16, s16); -extern void sub_805C78C(u8, u8, u8); -extern void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); -extern void sub_805BCF0(u8, u8, u8, u8); -extern void sub_805BD48(u8, u8, u8); -extern u8 FieldObjectFaceOppositeDirection(void *, u8); -extern void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); -extern void update_saveblock1_field_object_movement_behavior(u8, u8); -extern u8 sub_805B410(u8, u8, s16, s16, u8, u8); -extern void sub_8064990(u8, u8); -extern bool32 is_c1_link_related_active(void); -extern u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8); -extern u8 FieldObjectClearAnimIfSpecialAnimFinished(void *); -extern void sub_80A2178(void); -extern void sub_806451C(void); -extern bool8 yes_no_box(u8, u8); -extern bool8 sub_80B5054(u8, u8, u8, u8); -extern bool8 sub_80B50B0(u8, u8, u8, u8, u8); -extern bool8 sub_80B5578(u8, u8, u8, u8, u8); -extern bool8 Multichoice(u8, u8, u8, u8); -extern bool8 sub_80B58C4(u16, u8, u8); -extern void *picbox_close(void); -extern void sub_8106630(u32); -extern void ShowContestWinner(void); -extern u8 GetLeadMonIndex(void); -extern u8 sub_80BF0B8(u32); -extern void sub_80B79B8(u32 *, u32); -extern void sub_80B79E0(u32 *, u32); -extern bool8 IsEnoughMoney(u32, u32); -extern void sub_80B7C14(u32, u8, u8); -extern void RemoveMoneyLabelObject(u8, u8); -extern void sub_80B7BEC(u32, u8, u8); -extern void *TrainerBattleConfigure(u8 *); -extern void sub_80825E4(void); -extern u8 *sub_80826E8(void); -extern u8 *sub_8082700(void); -extern u8 trainer_flag_check(u16); -extern void trainer_flag_set(u16); -extern void trainer_flag_clear(u16); -extern void ScriptWildBattle(u16, u8, u16); -extern void sub_8081B3C(void); -extern void CreatePokemartMenu(void *); -extern void CreateDecorationShop1Menu(void *); -extern void CreateDecorationShop2Menu(void *); -extern void PlaySlotMachine(u8, void *); -extern void PlantBerryTree(u8, u8, u8, bool8); -extern bool8 GetPriceReduction(u8); -extern void sub_80F99CC(void); -extern void sub_80C48C8(void); -extern void sub_80C4940(void); -extern void sub_80C4980(u8); -extern void sub_8053588(u8); -extern u16 sub_8058790(u32, u32); -extern bool8 FieldAnimateDoorOpen(u32, u32); -extern bool8 FieldAnimateDoorClose(u32, u32); -extern bool8 FieldIsDoorAnimationRunning(void); -extern void FieldSetDoorOpened(u32, u32); -extern void FieldSetDoorClosed(u32, u32); -extern void ScriptAddElevatorMenuItem(u8, u8, u8, u8); -extern void ScriptShowElevatorMenu(void); -extern u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); -extern u8 ScriptGiveEgg(u16); -extern void ScriptSetMonMoveSlot(u8, u16, u8); -extern bool8 pokemon_has_move(struct Pokemon *, u16); -extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); - typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); diff --git a/src/sound.c b/src/sound.c index 77ad2b9f6..56719aa08 100644 --- a/src/sound.c +++ b/src/sound.c @@ -1,5 +1,6 @@ #include "global.h" #include "sound.h" +#include "asm.h" #include "gba/m4a_internal.h" #include "task.h" #include "songs.h" @@ -11,8 +12,6 @@ struct Fanfare u16 duration; }; -extern u32 SpeciesToCryId(u32); - extern u16 gUnknown_020239F8; extern struct MusicPlayerInfo *gMPlay_PokemonCry; extern u8 gPokemonCryBGMDuckingCounter; diff --git a/src/start_menu.c b/src/start_menu.c index 3237632a8..3cffae111 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -1,8 +1,10 @@ #include "global.h" #include "start_menu.h" +#include "asm.h" #include "main.h" #include "menu.h" #include "palette.h" +#include "pokedex.h" #include "script.h" #include "songs.h" #include "sound.h" @@ -19,25 +21,6 @@ #include "map_obj_lock.h" #include "save_menu_util.h" -//External functions -extern void sub_8047A1C(void); -extern void sub_8047A34(void); -extern void remove_some_task(void); -extern void dp12_8087EA4(void); -extern void sub_8093130(u8, void (*)(void)); -extern void sub_805469C(void); -extern void SafariZoneRetirePrompt(void); -extern void sub_8093110(void (*)(void)); -extern void sub_80EBA5C(void); -extern void sub_80A53F8(void); -extern void sub_8089A70(void); -extern void CB2_InitPokedex(void); -extern u16 GetNationalPokedexCount(u8); -extern bool32 is_c1_link_related_active(); -extern void player_bitmagic(void); -extern u8 *sub_8072C44(u8 *, s32, u8, u8); -extern bool32 is_c1_link_related_active(void); - //Menu actions enum { MENU_ACTION_POKEDEX, diff --git a/src/starter_choose.c b/src/starter_choose.c index 725d481be..f21ddde1c 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -1,8 +1,10 @@ #include "global.h" #include "starter_choose.h" +#include "asm.h" #include "main.h" #include "menu.h" #include "palette.h" +#include "pokedex.h" #include "songs.h" #include "sound.h" #include "string_util.h" @@ -10,10 +12,6 @@ #include "trig.h" #include "decompress.h" -//Functions that need to be put in headers -void remove_some_task(void); -u16 SpeciesToNationalPokedexNum(u16); - struct MonCoords { u8 x, y; @@ -54,7 +52,6 @@ static void Task_StarterChoose4(u8 taskId); static void Task_StarterChoose5(u8 taskId); static void Task_StarterChoose6(u8 taskId); -extern u8 *GetPokemonCategory(u16); static void CreateStarterPokemonLabel(u8, u8); static u8 CreatePokemonFrontSprite(u16, u8, u8); diff --git a/src/title_screen.c b/src/title_screen.c index 72833a4e9..6100fbdc5 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -1,5 +1,9 @@ #include "global.h" #include "title_screen.h" +#include "asm.h" +#include "clear_save_data_menu.h" +#include "m4a.h" +#include "main_menu.h" #include "intro.h" #include "gba/m4a_internal.h" #include "main.h" @@ -9,11 +13,6 @@ #include "task.h" #include "decompress.h" -extern void m4aSongNumStart(u16); -extern void CB2_InitMainMenu(void); -extern void CB2_InitClearSaveDataScreen(void); -extern void CB2_InitResetRtcScreen(void); - extern u8 gReservedSpritePaletteCount; extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gUnknown_0202F7E4; diff --git a/src/trainer_see.c b/src/trainer_see.c index 6e2292067..ed0b5caf4 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -1,5 +1,7 @@ #include "global.h" #include "trainer_see.h" +#include "asm.h" +#include "battle_setup.h" #include "field_player_avatar.h" #include "field_map_obj.h" #include "asm_fieldmap.h" @@ -8,24 +10,6 @@ #include "field_effect.h" #include "script.h" -extern u8 * GetFieldObjectScriptPointerByFieldObjectId(u8); -extern u8 * GetTrainerFlagFromScriptPointer(u8 *); -extern u8 sub_8060024(struct MapObject *, s16, s16, u8); -extern u8 npc_block_way(struct MapObject *, s16, s16, u8); -extern u8 npc_running_behaviour_by_direction(u8); -extern u8 GetGoSpeed0AnimId(u8); -extern u8 GetOppositeDirection(u8); -extern u8 GetFaceDirectionAnimId(u8); -extern bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *); -extern bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *); -extern bool8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); -extern void FieldObjectClearAnim(struct MapObject *); -extern void TrainerWantsBattle(u8, u8 *); -extern void FieldObjectSetSpecialAnim(struct MapObject *, u8); -extern void LoadWordFromTwoHalfwords(u32, u8 *); -extern void StoreWordInTwoHalfwords(u32, u8 *); - - extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16); extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *); extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *); diff --git a/src/truck_scene.c b/src/truck_scene.c index c8997a643..4e45bd165 100644 --- a/src/truck_scene.c +++ b/src/truck_scene.c @@ -1,5 +1,6 @@ #include "global.h" #include "truck_scene.h" +#include "asm.h" #include "palette.h" #include "task.h" #include "script.h" @@ -9,9 +10,6 @@ extern s8 gTruckCamera_HorizontalTable[]; -extern void SetCameraPanning(s16 a1, s16 a2); -extern void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); - s32 GetTruckCameraBobbingY(int a1) { s32 result; diff --git a/src/wallclock.c b/src/wallclock.c index e41bf761d..abfc4a12a 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -1,5 +1,6 @@ #include "global.h" #include "wallclock.h" +#include "asm.h" #include "decompress.h" #include "main.h" #include "menu.h" @@ -10,9 +11,6 @@ #include "trig.h" #include "sound.h" -//Functions that need to be put in headers -void remove_some_task(void); - extern u16 gSpecialVar_0x8004; extern u16 gMiscClockMale_Pal[]; extern u16 gMiscClockFemale_Pal[]; diff --git a/src/weather.c b/src/weather.c index 07a8f9f91..90831f014 100644 --- a/src/weather.c +++ b/src/weather.c @@ -1,5 +1,6 @@ #include "global.h" #include "weather.h" +#include "asm.h" #include "task.h" #include "sprite.h" #include "palette.h" diff --git a/src/wild_encounter.c b/src/wild_encounter.c index d021189e9..84943b0d5 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -1,5 +1,6 @@ #include "global.h" #include "wild_encounter.h" +#include "asm.h" #include "field_player_avatar.h" #include "safari_zone.h" #include "battle_setup.h" @@ -34,14 +35,6 @@ struct WildPokemonHeader struct WildPokemonInfo *fishingMonsInfo; }; -extern bool8 sub_805759C(u8); -extern s16 sub_810CAE4(u8, struct Pokeblock *); -extern u8 MetatileBehavior_IsLandWildEncounter(u8); -extern u8 sub_81344CC(void); -extern u8 MetatileBehavior_IsWaterWildEncounter(u8); -extern u8 MetatileBehavior_IsBridge(u8); -extern void sub_80BEA50(u16); - extern u16 gRoute119WaterTileData[]; extern struct WildPokemonHeader gWildMonHeaders[]; extern struct Pokemon gEnemyParty[6]; |