diff options
Diffstat (limited to 'include')
39 files changed, 224 insertions, 307 deletions
diff --git a/include/battle.h b/include/battle.h index d3cbd24f5..544e65b80 100644 --- a/include/battle.h +++ b/include/battle.h @@ -763,6 +763,8 @@ void sub_8012324(void); void SwapTurnOrder(u8, u8); u8 GetWhoStrikesFirst(u8, u8, u8); +void debug_sub_8010800(void); + // asm/battle_3.o u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); u8 UpdateTurnCounters(void); diff --git a/include/battle_anim.h b/include/battle_anim.h index fd1becf39..ce9bb13de 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -9,14 +9,6 @@ #define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2) #define REG_BG3CNT_BITFIELD REG_BGnCNT_BITFIELD(3) -enum -{ - ANIM_BANK_ATTACKER, - ANIM_BANK_TARGET, - ANIM_BANK_ATK_PARTNER, - ANIM_BANK_DEF_PARTNER, -}; - struct BattleAnimBackground { void *image; @@ -51,7 +43,7 @@ extern struct DisableStruct *gAnimDisableStructPtr; void DoMoveAnim(u16 move); void LaunchBattleAnimation(const u8 *const moveAnims[], u16 b, u8 c); bool8 IsAnimBankSpriteVisible(u8 a); -void sub_8076034(u8, u8); +void MoveBattlerSpriteToBG(u8, u8); bool8 IsContest(void); void ClearBattleAnimationVars(void); void DestroyAnimSprite(struct Sprite *sprite); diff --git a/include/battle_tower.h b/include/battle_tower.h index a3e1ff28c..fe9d4ae6e 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -98,5 +98,6 @@ void SetEReaderTrainerName(u8*); u8 GetEReaderTrainerPicIndex(void); u8 GetEReaderTrainerClassNameIndex(void); void ValidateEReaderTrainer(void); +void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer); #endif // GUARD_BATTLE_TOWER_H diff --git a/include/cable_club.h b/include/cable_club.h index a2fe46b30..2f509c9fc 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -20,5 +20,8 @@ void sub_8083B90(void); void sub_8083BDC(void); bool32 sub_8083BF4(u8 linkPlayerIndex); void sub_8083C50(u8 taskId); +#if DEBUG +void debug_sub_808B838(u8); +#endif #endif // GUARD_CABLE_CLUB_H diff --git a/include/clock.h b/include/clock.h index 4e6560c91..5772145d3 100644 --- a/include/clock.h +++ b/include/clock.h @@ -3,6 +3,7 @@ // TODO: time of day and seconds in a day defines +void InitTimeBasedEvents(void); void DoTimeBasedEvents(void); #endif diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h new file mode 100644 index 000000000..c173a8730 --- /dev/null +++ b/include/constants/battle_anim.h @@ -0,0 +1,9 @@ +#ifndef GUARD_BATTLEANIM_CONSTANTS_H +#define GUARD_BATTLEANIM_CONSTANTS_H + +#define ANIM_BANK_ATTACKER 0 +#define ANIM_BANK_TARGET 1 +#define ANIM_BANK_ATK_PARTNER 2 +#define ANIM_BANK_DEF_PARTNER 3 + +#endif diff --git a/include/constants/decorations.h b/include/constants/decorations.h index 2e3558721..c361ccdf1 100644 --- a/include/constants/decorations.h +++ b/include/constants/decorations.h @@ -123,4 +123,6 @@ #define DECOR_REGICE_DOLL 119 #define DECOR_REGISTEEL_DOLL 120 +#define DECOR_COUNT 121 + #endif // GUARD_CONSTANTS_DECORATIONS_H diff --git a/include/constants/items.h b/include/constants/items.h index 9b88db1da..a52c72599 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -363,42 +363,12 @@ #define ITEM_15B 347 #define ITEM_15C 348 -// FireRed/LeafGreen -#define ITEM_OAKS_PARCEL 349 -#define ITEM_POKE_FLUTE 350 -#define ITEM_SECRET_KEY 351 -#define ITEM_BIKE_VOUCHER 352 -#define ITEM_GOLD_TEETH 353 -#define ITEM_OLD_AMBER 354 -#define ITEM_CARD_KEY 355 -#define ITEM_LIFT_KEY 356 -#define ITEM_HELIX_FOSSIL 357 -#define ITEM_DOME_FOSSIL 358 -#define ITEM_SILPH_SCOPE 359 -#define ITEM_BICYCLE 360 -#define ITEM_TOWN_MAP 361 -#define ITEM_VS_SEEKER 362 -#define ITEM_FAME_CHECKER 363 -#define ITEM_TM_CASE 364 -#define ITEM_BERRY_POUCH 365 -#define ITEM_TEACHY_TV 366 -#define ITEM_TRI_PASS 367 -#define ITEM_RAINBOW_PASS 368 -#define ITEM_TEA 369 -#define ITEM_MYSTIC_TICKET 370 -#define ITEM_AURORA_TICKET 371 -#define ITEM_POWDER_JAR 372 -#define ITEM_RUBY 373 -#define ITEM_SAPPHIRE 374 - -// Emerald -#define ITEM_MAGMA_EMBLEM 375 -#define ITEM_OLD_SEA_MAP 376 - #define NUM_TECHNICAL_MACHINES 50 #define NUM_HIDDEN_MACHINES 8 // Check if the item is one that can be used on a Pokemon. #define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2) +#define IS_ITEM_MAIL(item) ((item) >= ITEM_ORANGE_MAIL && (item) <= ITEM_RETRO_MAIL) + #endif // GUARD_CONSTANTS_ITEMS_H diff --git a/include/contest.h b/include/contest.h index b0bdd7f61..557b9e5c4 100644 --- a/include/contest.h +++ b/include/contest.h @@ -43,17 +43,13 @@ struct ContestPokemon /*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; /*0x0D*/ u8 trainerName[8]; /*0x15*/ u8 trainerGfxId; - /*0x16*/ u8 unk16; - /*0x17*/ u8 filler17; /*0x18*/ u32 flags; - /*0x1C*/ u8 unk1C_0:2; - u8 unk1C_2:1; - u8 unk1C_3:1; - u8 unk1C_4:1; - u8 unk1C_5:1; - u8 unk1C_6:1; - u8 unk1C_7:1; - u8 filler1D; + /*0x1C*/ u8 whichRank:2; + u8 aiPool_Cool:1; + u8 aiPool_Beauty:1; + u8 aiPool_Cute:1; + u8 aiPool_Smart:1; + u8 aiPool_Tough:1; /*0x1E*/ u16 moves[4]; // moves /*0x26*/ u8 cool; // cool /*0x27*/ u8 beauty; // beauty @@ -61,8 +57,7 @@ struct ContestPokemon /*0x29*/ u8 smart; // smart /*0x2A*/ u8 tough; // tough /*0x2B*/ u8 sheen; // sheen - /*0x2C*/ u8 unk2C; - /*0x2D*/ u8 unk2D[11]; + /*0x2C*/ u8 unk2C[12]; /*0x38*/ u32 personality; // personality /*0x3C*/ u32 otId; // otId }; // wow diff --git a/include/contest_painting.h b/include/contest_painting.h index 48ab95fbc..81535ec8b 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -40,9 +40,9 @@ struct Unk2015E00 struct ContestEntry { - /*0x00*/ u8 var0; - /*0x04*/ u32 var4; - /*0x08*/ u16 var8; + /*0x00*/ u32 personality; + /*0x04*/ u32 otId; + /*0x08*/ u16 species; /*0x0A*/ u8 contestType; /*0x0B*/ u8 pokemon_name[POKEMON_NAME_LENGTH]; /*0x15*/ u8 pad15; diff --git a/include/debug.h b/include/debug.h index f3ad8c401..2136dbfb8 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,7 +1,17 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H +// start_menu_debug +void DebugMenu_8077048(void); + // matsuda_debug_menu void sub_80AAF30(void); +void Crash(const u8 *text); + +// tomomichi_debug_menu +void debug_nullsub_66(void); + +// sound_check_menu +void CB2_StartSoundCheckMenu(void); #endif // GUARD_DEBUG_H diff --git a/include/easy_chat.h b/include/easy_chat.h index 58750fa92..b86b166aa 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -117,6 +117,7 @@ struct Shared1000 // const pointer to shared1000. easy_chat might be two separate files. extern struct Shared1000 *const gEasyChatStruct; +void sub_80E60D8(void); void sub_80E62A0(u8 arg0, u16 *arg1, void (*arg2)(void), u8 arg3); u16 sub_80EB72C(u16 group); void sub_80EB6FC(u16 *, u16); diff --git a/include/field_map_obj.h b/include/event_object_movement.h index cf3be36b2..495942656 100644 --- a/include/field_map_obj.h +++ b/include/event_object_movement.h @@ -1,5 +1,5 @@ -#ifndef GUARD_FIELD_MAP_OBJ_H -#define GUARD_FIELD_MAP_OBJ_H +#ifndef GUARD_EVENTOBJMV_H +#define GUARD_EVENTOBJMV_H #include "sprite.h" @@ -436,5 +436,43 @@ void sub_8060320(u32, s16 *, s16 *, s16, s16); u8 obj_unfreeze(struct Sprite *, s16, s16, u8); u16 npc_paltag_by_palslot(u8); void sub_8060470(s16 *, s16 *, s16, s16); +bool8 FreezeMapObject(struct MapObject *); +void FreezeMapObjects(void); +void FreezeMapObjectsExceptOne(u8); +void UnfreezeMapObjects(void); +void sub_806487C(struct Sprite *sprite, bool8 invisible); +void sub_8064990(u8, u8); +void UnfreezeMapObject(struct MapObject *mapObject); +void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); +void sub_806467C(struct Sprite *sprite, u8 direction); +bool8 sub_806468C(struct Sprite *sprite); +void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4); +void DoShadowFieldEffect(struct MapObject *mapObject); +u8 sub_8064704(struct Sprite *); +u8 sub_806478C(struct Sprite *); +void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3); +void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite); +bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y); +bool8 AreZCoordsCompatible(u8 z1, u8 z2); +void FieldObjectUpdateMetatileBehaviors(struct MapObject *); +void GetGroundEffectFlags_Reflection(struct MapObject *, u32 *); +void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *, u32 *); +void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *, u32 *); +void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *, u32 *); +void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *, u32 *); +void GetGroundEffectFlags_Tracks(struct MapObject *, u32 *); +void GetGroundEffectFlags_SandPile(struct MapObject *, u32 *); +void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *, u32 *); +void GetGroundEffectFlags_Puddle(struct MapObject *, u32 *); +void GetGroundEffectFlags_Ripple(struct MapObject *, u32 *); +void GetGroundEffectFlags_ShortGrass(struct MapObject *, u32 *); +void GetGroundEffectFlags_HotSprings(struct MapObject *, u32 *); +void GetGroundEffectFlags_Seaweed(struct MapObject *, u32 *); +void GetGroundEffectFlags_JumpLanding(struct MapObject *, u32 *); +u8 FieldObjectCheckForReflectiveSurface(struct MapObject *); +u8 GetLedgeJumpDirection(s16, s16, u8); +u8 ZCoordToPriority(u8); +void FieldObjectUpdateZCoord(struct MapObject *pObject); +void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); -#endif // GUARD_FIELD_MAP_OBJ_H +#endif // GUARD_EVENTOBJMV_H diff --git a/include/ewram.h b/include/ewram.h index cafb418fb..f1d9baa78 100644 --- a/include/ewram.h +++ b/include/ewram.h @@ -13,7 +13,6 @@ extern u8 gSharedMem[]; #define ewram0_2 (*(struct Struct2000000 *)(gSharedMem + 0x0)) #define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0)) #define ewramBerryPic (gSharedMem + 0x0) -#define ewram0_3 (*(struct UnknownStruct3 *)(gSharedMem + 0x0)) #define ewram0_4 (*(struct Unk2000000 *)(gSharedMem + 0x0)) #define ewram0_5 (*(struct UnkStruct *)(gSharedMem + 0x0)) #define eMatsudaDebugVar (gSharedMem[0x0]) diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index 2d5693e40..49e9f23e3 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -36,5 +36,6 @@ bool8 sub_8068870(u16 a); bool8 sub_8068894(void); bool8 sub_8068A64(struct MapPosition *, u16); u8 sub_8068F18(void); +bool8 dive_warp(struct MapPosition *position, u16 b); #endif diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 4377367f7..cd0cb6eab 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -27,5 +27,6 @@ void sub_8080F48(void); void sub_8080F58(void); void sub_8080F68(void); void sub_8080F9C(void); +void debug_sub_80888D8(void); #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h deleted file mode 100644 index 19d43c916..000000000 --- a/include/field_ground_effect.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef GUARD_FIELD_GROUND_EFFECT_H -#define GUARD_FIELD_GROUND_EFFECT_H - -bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y); -bool8 AreZCoordsCompatible(u8 z1, u8 z2); -void FieldObjectUpdateMetatileBehaviors(struct MapObject *); -void GetGroundEffectFlags_Reflection(struct MapObject *, u32 *); -void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *, u32 *); -void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *, u32 *); -void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *, u32 *); -void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *, u32 *); -void GetGroundEffectFlags_Tracks(struct MapObject *, u32 *); -void GetGroundEffectFlags_SandPile(struct MapObject *, u32 *); -void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *, u32 *); -void GetGroundEffectFlags_Puddle(struct MapObject *, u32 *); -void GetGroundEffectFlags_Ripple(struct MapObject *, u32 *); -void GetGroundEffectFlags_ShortGrass(struct MapObject *, u32 *); -void GetGroundEffectFlags_HotSprings(struct MapObject *, u32 *); -void GetGroundEffectFlags_Seaweed(struct MapObject *, u32 *); -void GetGroundEffectFlags_JumpLanding(struct MapObject *, u32 *); -u8 FieldObjectCheckForReflectiveSurface(struct MapObject *); -u8 GetLedgeJumpDirection(s16, s16, u8); -u8 ZCoordToPriority(u8); -void FieldObjectUpdateZCoord(struct MapObject *pObject); -void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); - -#endif // GUARD_FIELD_GROUND_EFFECT_H diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h deleted file mode 100644 index f760bf153..000000000 --- a/include/field_map_obj_helpers.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef GUARD_FIELDMAPOBJHELP_H -#define GUARD_FIELDMAPOBJHELP_H - -#include "sprite.h" - -bool8 FreezeMapObject(struct MapObject *); -void FreezeMapObjects(void); -void FreezeMapObjectsExceptOne(u8); -void UnfreezeMapObjects(void); -void sub_806487C(struct Sprite *sprite, bool8 invisible); -void sub_8064990(u8, u8); -void UnfreezeMapObject(struct MapObject *mapObject); -void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); -void sub_806467C(struct Sprite *sprite, u8 direction); -bool8 sub_806468C(struct Sprite *sprite); -void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4); -void DoShadowFieldEffect(struct MapObject *mapObject); -u8 sub_8064704(struct Sprite *); -u8 sub_806478C(struct Sprite *); -void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3); -void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite); - -#endif diff --git a/include/field_specials.h b/include/field_specials.h index 52325879c..a8e8d3da7 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -26,5 +26,6 @@ void SetShoalItemFlag(u16); u8 GetLeadMonIndex(void); void ResetFanClub(void); u8 sub_810FB10(u8 a0); +void sub_810FEFC(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 67b85fa62..5aa9eb360 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -1,6 +1,6 @@ #ifndef GUARD_FIELDMAP2_H #define GUARD_FIELDMAP2_H -#include "field_map_obj.h" +#include "event_object_movement.h" extern struct BackupMapData gUnknown_03004870; struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection); diff --git a/include/global.berry.h b/include/global.berry.h index 21a0dd500..8f185c8f9 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -3,7 +3,7 @@ struct Berry { - /*0x00*/ const u8 name[7]; + /*0x00*/ u8 name[7]; /*0x07*/ u8 firmness; /*0x08*/ u16 size; /*0x0A*/ u8 maxYield; diff --git a/include/global.h b/include/global.h index d0af4a4d1..faa4ace68 100644 --- a/include/global.h +++ b/include/global.h @@ -65,6 +65,15 @@ enum #define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) #define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr) +// Credits to Made (dolphin emoji) +#define S16TOPOSFLOAT(val) \ +({ \ + s16 v = (val); \ + float f = (float)v; \ + if(v < 0) f += 65536.0f; \ + f; \ +}) + enum { VERSION_SAPPHIRE = 1, @@ -623,7 +632,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x24*/ struct WarpData warp4; /*0x2C*/ u16 savedMusic; /*0x2E*/ u8 weather; - /*0x2F*/ u8 filler_2F; + /*0x2F*/ u8 weatherCycleStage; /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest /*0x32*/ u16 mapDataId; /*0x34*/ u16 mapView[0x100]; @@ -725,46 +734,37 @@ struct Pokedex struct BattleTowerTrainer { - u8 trainerClass; - u8 name[8]; - u8 teamFlags; - struct { - u16 easyChat[6]; - } greeting; + /*0x00*/ u8 trainerClass; + /*0x01*/ u8 name[8]; + /*0x09*/ u8 teamFlags; + u8 filler0A[2]; + /*0x0C*/ u16 greeting[6]; }; struct BattleTowerRecord // record mixing { - /*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; + /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ u16 greeting[6]; + /*0x1C*/ struct UnknownPokemonStruct party[3]; + /*0xA0*/ u32 checksum; }; struct BattleTowerEReaderTrainer { - /*0x00*/u8 unk0; - /*0x01*/u8 trainerClass; - /*0x02*/u16 winStreak; - /*0x04*/u8 name[8]; - /*0x0C*/u8 trainerId[4]; - /*0x10*/struct { - u16 easyChat[6]; - } greeting; - /*0x1C*/struct { - u16 easyChat[6]; - } farewellPlayerLost; - /*0x28*/struct { - u16 easyChat[6]; - } farewellPlayerWon; - /*0x34*/struct UnknownPokemonStruct party[3]; - /*0xB8*/u32 checksum; + /*0x00*/ u8 unk0; + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ u16 greeting[6]; + /*0x1C*/ u16 farewellPlayerLost[6]; + /*0x28*/ u16 farewellPlayerWon[6]; + /*0x34*/ struct UnknownPokemonStruct party[3]; + /*0xB8*/ u32 checksum; }; struct BattleTowerData @@ -822,7 +822,7 @@ struct MapPosition { s16 x; s16 y; - u8 height; + s8 height; }; struct UnkStruct_8054FF8 @@ -841,8 +841,6 @@ struct HallOfFame u8 filler[0x1F00]; }; -extern struct HallOfFame gHallOfFame; extern struct SaveBlock2 gSaveBlock2; -extern u8 ewram[]; #endif // GUARD_GLOBAL_H diff --git a/include/item.h b/include/item.h index 8f6cc883b..57aebf88e 100644 --- a/include/item.h +++ b/include/item.h @@ -1,27 +1,8 @@ #ifndef GUARD_ITEM_H #define GUARD_ITEM_H - typedef void (*ItemUseFunc)(u8); -struct Item -{ - u8 name[14]; - u16 itemId; - u16 price; - u8 holdEffect; - u8 holdEffectParam; - const u8 *description; - u8 importance; - u8 unk19; - u8 pocket; - u8 type; - ItemUseFunc fieldUseFunc; - u8 battleUsage; - ItemUseFunc battleUseFunc; - u8 secondaryId; -}; - struct BagPocket { struct ItemSlot *itemSlots; @@ -30,8 +11,6 @@ struct BagPocket #define NUM_BAG_POCKETS 5 -extern const struct BagPocket gBagPockets[NUM_BAG_POCKETS]; - void CopyItemName(u16 itemId, u8 *string); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); @@ -45,7 +24,7 @@ bool8 CheckPCHasItem(u16 itemId, u16 count); bool8 AddPCItem(u16 itemId, u16 count); void RemovePCItem(u8 index, u16 count); void SwapRegisteredBike(void); -const struct Item *ItemId_GetItem(u16 itemId); +const u8 *ItemId_GetName(u16 itemId); u16 ItemId_GetId(u16 itemId); u16 ItemId_GetPrice(u16 itemId); u8 ItemId_GetHoldEffect(u16 itemId); diff --git a/include/link.h b/include/link.h index 6581fdbba..ca6c368ff 100644 --- a/include/link.h +++ b/include/link.h @@ -131,10 +131,11 @@ extern const struct BlockRequest sBlockRequestLookupTable[5]; extern struct Link gLink; extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS]; +// TODO: Why is gBlockSendBuffer a u8 array, while gBlockRecvBuffer is a u16 array? extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; +extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gLinkType; extern u32 gLinkStatus; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gSendCmd[CMD_LENGTH]; extern u8 gShouldAdvanceLinkState; #if GERMAN @@ -145,6 +146,9 @@ extern struct LinkPlayer gLinkPlayers[]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkOpen; +extern bool8 gLinkPlayerPending[MAX_LINK_PLAYERS]; +void (*gLinkCallback)(void); +extern u8 gUnknown_Debug_30030E0; void Task_DestroySelf(u8); void sub_8007270(u8); @@ -194,5 +198,11 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]); void LinkVSync(void); void Timer3Intr(void); void SerialCB(void); +void LinkTestScreen(void); +void debug_sub_8008218(u16 *buffer, u32 arg1, u16 *arg2, u32 arg3); +void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0); +u32 sub_8007E40(void); +void PrintHex(u32, u8, u8, u8); +void InitLinkTestBG_Unused(u8, u8, u8, u8); #endif // GUARD_LINK_H diff --git a/include/macros/battle_anim.inc b/include/macros/battle_anim.inc index 4ff845032..bf409a848 100644 --- a/include/macros/battle_anim.inc +++ b/include/macros/battle_anim.inc @@ -1,14 +1,14 @@ - .macro loadsprite id + .macro loadspritegfx id .byte 0x00 .2byte \id .endm - .macro unloadsprite id + .macro unloadspritegfx id .byte 0x01 .2byte \id .endm - .macro sprite template, priority, argv:vararg + .macro createsprite template, priority, argv:vararg .byte 0x02 .4byte \template .byte \priority @@ -18,7 +18,7 @@ .Lsprite_\@_2: .endm - .macro createtask addr, priority, argv:vararg + .macro createvisualtask addr, priority, argv:vararg .byte 0x03 .4byte \addr .byte \priority @@ -28,12 +28,12 @@ .Lcreatetask_\@_2: .endm - .macro pause delay + .macro delay amount .byte 0x04 - .byte \delay + .byte \amount .endm - .macro wait + .macro waitforvisualfinish .byte 0x05 .endm @@ -78,29 +78,29 @@ .4byte \addr .endm - .macro ret + .macro return .byte 0x0F .endm - .macro setvar var_num, value + .macro setarg arg_num, value .byte 0x10 - .byte \var_num + .byte \arg_num .2byte \value .endm - .macro ifelse addr1, addr2 + .macro choosetwoturnanim addr1, addr2 .byte 0x11 .4byte \addr1 .4byte \addr2 .endm - .macro jumpif cond, addr + .macro jumpifmoveturn cond, addr .byte 0x12 .byte \cond .4byte \addr .endm - .macro jump addr + .macro goto addr .byte 0x13 .4byte \addr .endm @@ -127,7 +127,7 @@ .byte \id .endm - .macro panse_19 id, pan + .macro playsewithpan id, pan .byte 0x19 .2byte \id .byte \pan @@ -147,7 +147,7 @@ .byte \delay .endm - .macro panse_1C id, pan, delay, count + .macro loopsewithpan id, pan, delay, count .byte 0x1C .2byte \id .byte \pan @@ -155,7 +155,7 @@ .byte \count .endm - .macro panse_1D id, pan, count + .macro waitplaysewithpan id, pan, count .byte 0x1D .2byte \id .byte \pan @@ -167,7 +167,7 @@ .2byte \bldcnt .endm - .macro createtask_1F addr, argv:vararg + .macro createsoundtask addr, argv:vararg .byte 0x1F .4byte \addr .byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2 @@ -180,29 +180,29 @@ .byte 0x20 .endm - .macro jumpvareq var_num, value, addr + .macro jumpargeq arg_num, value, addr .byte 0x21 - .byte \var_num + .byte \arg_num .2byte \value .4byte \addr .endm - .macro monbg_22 unk + .macro monbg_22 bank .byte 0x22 - .byte \unk + .byte \bank .endm - .macro clearmonbg_23 unk + .macro clearmonbg_23 bank .byte 0x23 - .byte \unk + .byte \bank .endm - .macro jumpunkcond addr + .macro jumpifcontest addr .byte 0x24 .4byte \addr .endm - .macro fadetobg_25 a, b, c + .macro fadetobgfromset a, b, c .byte 0x25 .byte \a .byte \b @@ -227,38 +227,38 @@ .byte \delay .endm - .macro monbgprio_28 unk + .macro monbgprio_28 bank .byte 0x28 - .byte \unk + .byte \bank .endm .macro monbgprio_29 .byte 0x29 .endm - .macro monbgprio_2A unk + .macro monbgprio_2A bank .byte 0x2A - .byte \unk + .byte \bank .endm - .macro invisible side + .macro invisible bank .byte 0x2B - .byte \side + .byte \bank .endm - .macro visible side + .macro visible bank .byte 0x2C - .byte \side + .byte \bank .endm - .macro doublebattle_2D unk + .macro doublebattle_2D bank .byte 0x2D - .byte \unk + .byte \bank .endm - .macro doublebattle_2E unk + .macro doublebattle_2E bank .byte 0x2E - .byte \unk + .byte \bank .endm .macro stopsound diff --git a/include/mystery_event_menu.h b/include/mystery_event_menu.h index 8801789d9..c1f5fbb8f 100644 --- a/include/mystery_event_menu.h +++ b/include/mystery_event_menu.h @@ -2,5 +2,6 @@ #define GUARD_MYSTERY_EVENT_MENU_H void CB2_InitMysteryEventMenu(void); +void debug_sub_815D15C(void); #endif // GUARD_MYSTERY_EVENT_MENU_H diff --git a/include/new_game.h b/include/new_game.h index 5be7f6265..c90606b5a 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -1,6 +1,8 @@ #ifndef GUARD_NEW_GAME_H #define GUARD_NEW_GAME_H +extern u8 gUnknown_020297ED; + void write_word_to_mem(u32 var, u8 *dataPtr); void copy_word_to_mem(u8 *copyTo, u8 *copyFrom); void InitPlayerTrainerId(void); diff --git a/include/overworld.h b/include/overworld.h index 0954f1b63..dc393cc63 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -24,6 +24,8 @@ struct UCoords32 extern const struct UCoords32 gUnknown_0821664C[]; extern void (*gFieldCallback)(void); +extern u8 gFieldLinkPlayerCount; +extern u8 gUnknown_03004860; // sub_8052F5C void Overworld_ResetStateAfterFly(void); @@ -91,7 +93,7 @@ void sub_8053D14(u16); // GetLocationMusic // GetCurrLocationDefaultMusic // GetWarpDestinationMusic -// Overworld_ResetMapMusic +void Overworld_ResetMapMusic(void); void Overworld_PlaySpecialMapMusic(void); void Overworld_SetSavedMusic(u16); void Overworld_ClearSavedMusic(void); @@ -185,11 +187,11 @@ u16 sub_8055438(u32); // sub_80554B8 // sub_80554BC // sub_80554E4 -// sub_80554F8 +s32 sub_80554F8(void); // unref_sub_8055568 -// sub_8055574 +u16 sub_8055574(void); u16 sub_8055588(void); -// sub_805559C +u16 sub_805559C(void); void sub_80555B0(int linkPlayerId, int a2, struct UnkStruct_8054FF8 *a3); bool32 sub_8055618(struct UnkStruct_8054FF8 *); bool32 sub_8055630(struct UnkStruct_8054FF8 *); @@ -235,4 +237,6 @@ void CreateLinkPlayerSprite(u8); void SpriteCB_LinkPlayer(struct Sprite *); void sub_805465C(void); +void CB2_InitTestMenu(void); + #endif // GUARD_ROM4_H diff --git a/include/pokeblock.h b/include/pokeblock.h index 6720653a0..a606a32ad 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -3,12 +3,20 @@ enum { - PBLOCK_CLR_BLACK, - PBLOCK_CLR_RED, + PBLOCK_CLR_RED = 1, PBLOCK_CLR_BLUE, PBLOCK_CLR_PINK, PBLOCK_CLR_GREEN, - PBLOCK_CLR_YELLOW + PBLOCK_CLR_YELLOW, + PBLOCK_CLR_PURPLE, + PBLOCK_CLR_INDIGO, + PBLOCK_CLR_BROWN, + PBLOCK_CLR_LITEBLUE, + PBLOCK_CLR_OLIVE, + PBLOCK_CLR_GRAY, + PBLOCK_CLR_BLACK, + PBLOCK_CLR_WHITE, + PBLOCK_CLR_GOLD, }; enum @@ -34,6 +42,7 @@ s16 PokeblockGetGain(u8, const struct Pokeblock *); u8 sub_810CB68(u8, u8*); void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); void CB2_PreparePokeblockFeedScene(void); +bool8 sub_810CA34(const struct Pokeblock *); #include "main.h" diff --git a/include/region_map.h b/include/region_map.h index 254307052..e7a357fe2 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -68,5 +68,6 @@ void CreateRegionMapPlayerIcon(u16, u16); const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length); const u8 *CopyMapName(u8 *dest, u16 b); const u8 *CopyLocationName(u8 *dest, u16 b); +void CB2_InitFlyRegionMap(void); #endif // GUARD_REGION_MAP_H diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h index 5807dec99..2de95534a 100644 --- a/include/reset_rtc_screen.h +++ b/include/reset_rtc_screen.h @@ -2,5 +2,6 @@ #define GUARD_RESET_RTC_SCREEN_H void CB2_InitResetRtcScreen(void); +void debug_sub_806F8F8(void); #endif // GUARD_RESET_RTC_SCREEN_H diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index f7b75fb04..1910b7cb2 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -12,12 +12,12 @@ struct Struct_sub_8078914 { u8 GetBankPosition(u8, u8); u8 sub_8077E44(u8 slot, u16 species, u8 a3); -u8 GetAnimBankSpriteId(u8 side); +u8 GetAnimBankSpriteId(u8 bank); void StoreSpriteCallbackInData(struct Sprite *sprite, void(*callback)(struct Sprite *)); void sub_8078314(struct Sprite *sprite); -void sub_8078364(struct Sprite *sprite); -void sub_8078458(struct Sprite *sprite); -void sub_80784A8(struct Sprite *sprite); +void TranslateSpriteOverDuration(struct Sprite *sprite); +void TranslateMonBGUntil(struct Sprite *sprite); +void TranslateMonBGSubPixelUntil(struct Sprite *sprite); u8 GetBankSide(u8); u8 GetBankSide(u8); u8 GetBankSide(u8 side); @@ -34,11 +34,10 @@ u8 IsDoubleBattle(void); bool8 IsDoubleBattle(void); void sub_8078914(); u8 sub_80789BC(); -void sub_8078A5C(struct Sprite *sprite); -void sub_8078A5C(struct Sprite *sprite); -void obj_translate_based_on_private_1_2_3_4(struct Sprite *sprite); -bool8 sub_8078B5C(struct Sprite *sprite); -void sub_8078BB8(struct Sprite *sprite); +void InitSpriteDataForLinearTranslation(struct Sprite *sprite); +void InitAnimSpriteTranslationDeltas(struct Sprite *sprite); +bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite); +void TranslateAnimSpriteByDeltasUntil(struct Sprite *sprite); void sub_8078D44(struct Sprite *sprite); void obj_id_set_rotscale(u8 sprite, s16, s16, u16); bool8 sub_8078E38(); @@ -48,8 +47,8 @@ void sub_8078F9C(u8 sprite); void sub_8079518(struct Sprite *sprite); void sub_8079534(struct Sprite *sprite); void sub_80796F8(u8 task); -void sub_80797EC(struct Task *task); -void sub_8079814(u8 taskId); +void AnimTask_BlendMonInAndOutSetup(struct Task *task); +void AnimTask_BlendMonInAndOutStep(u8 taskId); void sub_8079A64(u8 sprite); u16 sub_8079B10(u8 sprite); void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr); @@ -65,12 +64,12 @@ void sub_807A850(struct Task *task, u8 taskId); void sub_807A8D4(struct Sprite *sprite); void sub_807A960(struct Sprite *sprite); void sub_8078A34(struct Sprite *sprite); -void sub_80787B0(struct Sprite *sprite, u8); +void InitAnimSpritePos(struct Sprite *sprite, u8); void sub_8078764(struct Sprite *sprite, u8); -void sub_8078B34(struct Sprite *sprite); +void StartTranslateAnimSpriteByDeltas(struct Sprite *sprite); void sub_8078D60(struct Sprite *sprite); -void sub_80786EC(struct Sprite *sprite); -void sub_80782D8(struct Sprite *sprite); +void InitAnimSpriteTranslationOverDuration(struct Sprite *sprite); +void WaitAnimForDuration(struct Sprite *sprite); void sub_8078CC0(struct Sprite *sprite); void sub_8078600(struct Sprite *sprite); void sub_8078504(struct Sprite *sprite); @@ -83,10 +82,10 @@ void sub_8078C00(struct Sprite *sprite); void sub_8078114(struct Sprite *sprite); void sub_8078174(struct Sprite *sprite); void sub_80793C4(struct Sprite *sprite); -void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4); +void SetAverageBattlerPositions(u8 slot, u8 a2, s16 *a3, s16 *a4); u8 sub_8079ED4(u8 slot); s16 sub_807A100(u8 slot, u8 a2); -u16 sub_80790F0(s16 a, s16 b); +u16 ArcTan2Neg(s16 a, s16 b); void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); void sub_807867C(struct Sprite *sprite, s16 a2); u8 sub_8077EE4(u8 slot, u8 a2); @@ -99,12 +98,13 @@ void sub_80798F4(struct Task *task, u8 a2, const void *a3); bool8 sub_807992C(struct Task *task); u8 sub_8077FC0(u8 slot); void move_anim_8074EE0(struct Sprite *sprite); -bool8 sub_8078718(struct Sprite *sprite); +bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *sprite); bool8 sub_8078CE8(struct Sprite *sprite); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); void sub_8078BD4(struct Sprite *sprite); -void sub_807941C(struct Sprite *sprite); +void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); void sub_80789D4(bool8 a1); void sub_8079AB8(u8 sprite, u8 sprite2); +u8 sub_807A4A0(int bank, u8 sprite, int species); #endif // GUARD_ROM_8077ABC_H diff --git a/include/rtc.h b/include/rtc.h index fdc5ad709..e117cf753 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -44,5 +44,6 @@ void RtcInitLocalTimeOffset(s32 hour, s32 minute); void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds); void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2); u32 RtcGetMinuteCount(void); +void debug_sub_8009894(u8 *); #endif // GUARD_RTC_UTIL_H diff --git a/include/shop.h b/include/shop.h index 80602e26c..347d46d3c 100644 --- a/include/shop.h +++ b/include/shop.h @@ -28,7 +28,7 @@ enum struct MartInfo { /* 0x0 */ void (* callback) (void); - /* 0x4 */ u16 *itemList; + /* 0x4 */ const u16 *itemList; /* 0x8 */ u8 itemCount; // how many unique items are there for sale? /* 0x9 */ u8 cursor; // this shows the on-screen true index of the cursor and not the current item selected. /* 0xA */ u8 numChoices; // how many options does the mart have? can be either 2 or 1 (BUY/SELL vs BUY) diff --git a/include/slot_machine.h b/include/slot_machine.h index f886d9239..456f2bed6 100644 --- a/include/slot_machine.h +++ b/include/slot_machine.h @@ -1,79 +1,9 @@ #ifndef GUARD_SLOT_MACHINE_H #define GUARD_SLOT_MACHINE_H -enum { - SLOT_MACHINE_TAG_7_RED, - SLOT_MACHINE_TAG_7_BLUE, - SLOT_MACHINE_TAG_AZURILL, - SLOT_MACHINE_TAG_LOTAD, - SLOT_MACHINE_TAG_CHERRY, - SLOT_MACHINE_TAG_POWER, - SLOT_MACHINE_TAG_REPLAY -}; - -enum { - SLOT_MACHINE_MATCHED_1CHERRY, - SLOT_MACHINE_MATCHED_2CHERRY, - SLOT_MACHINE_MATCHED_REPLAY, - SLOT_MACHINE_MATCHED_LOTAD, - SLOT_MACHINE_MATCHED_AZURILL, - SLOT_MACHINE_MATCHED_POWER, - SLOT_MACHINE_MATCHED_777_MIXED, - SLOT_MACHINE_MATCHED_777_RED, - SLOT_MACHINE_MATCHED_777_BLUE, - SLOT_MACHINE_MATCHED_NONE -}; - -struct SlotMachineEwramStruct { - /*0x00*/ u8 state; - /*0x01*/ u8 unk01; - /*0x02*/ u8 pikaPower; - /*0x03*/ u8 unk03; - /*0x04*/ u8 unk04; - /*0x05*/ u8 unk05; - /*0x06*/ u8 unk06; - /*0x07*/ u8 unk07; - /*0x08*/ u16 matchedSymbols; - /*0x0A*/ u8 unk0A; - /*0x0B*/ u8 unk0B; - /*0x0C*/ s16 coins; - /*0x0E*/ s16 payout; - /*0x10*/ s16 unk10; - /*0x12*/ s16 bet; - /*0x14*/ s16 unk14; - /*0x16*/ s16 unk16; - /*0x18*/ s16 unk18; - /*0x1A*/ s16 unk1A; - /*0x1C*/ s16 unk1C[3]; - /*0x22*/ u16 unk22[3]; - /*0x28*/ s16 reelPositions[3]; - /*0x2E*/ s16 unk2E[3]; - /*0x34*/ s16 unk34[3]; - /*0x3A*/ u8 reelTasks[3]; - /*0x3D*/ u8 unk3D; - /*0x3E*/ u8 unk3E; - /*0x3F*/ u8 unk3F; - /*0x40*/ u8 unk40; - /*0x41*/ u8 unk41; - /*0x42*/ u8 unk42; - /*0x43*/ u8 unk43; - /*0x44*/ u8 unk44[5]; - /*0x49*/ u8 unk49[2]; - /*0x49*/ u8 unk4B[3]; - /*0x4E*/ u8 unk4E[2]; - /*0x50*/ u8 unk50[2]; - /*0x52*/ u8 unk52[2]; - /*0x54*/ u8 unk54[4]; - /*0x58*/ u16 win0h; - /*0x5a*/ u16 win0v; - /*0x5c*/ u16 winIn; - /*0x5e*/ u16 winOut; - /*0x60*/ u16 backupMapMusic; - /*0x64*/ MainCallback prevMainCb; -}; - void PlaySlotMachine(u8 arg0, MainCallback cb); void sub_8104DA4(void); u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2); +void debug_sub_811609C(u8, void (*)(void)); #endif // GUARD_SLOT_MACHINE_H diff --git a/include/start_menu.h b/include/start_menu.h index d3f77dc99..5e513b9dc 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -1,6 +1,8 @@ #ifndef GUARD_STARTER_CHOOSE_H #define GUARD_STARTER_CHOOSE_H +extern u8 (*gMenuCallback)(void); + //Public functions void CreateStartMenuTask(void (*func)(u8)); void sub_80712B4(u8 taskId); diff --git a/include/strings.h b/include/strings.h index fe9cfc6ba..91c5c5344 100644 --- a/include/strings.h +++ b/include/strings.h @@ -164,7 +164,7 @@ extern const u8 gOtherText_None[]; extern const u8 gOtherText_ThreeQuestions2[]; -extern const u8 gOtherText_FiveQuestionsAndSlash[]; +extern const u8 gOtherText_FiveQuestions[]; extern const u8 gOtherText_OneDash[]; extern const u8 gOtherText_TwoDashes[]; diff --git a/include/trade.h b/include/trade.h index 46f58a802..d6dee0bd9 100644 --- a/include/trade.h +++ b/include/trade.h @@ -51,6 +51,7 @@ extern const u32 gUnknown_0820CA98[]; extern const u16 gUnknown_0820F798[]; void sub_8047CD8(void); +void sub_804B790(void); void sub_804E174(void); extern const u8 gOtherText_MaleSymbol3[2]; extern const u8 gOtherText_FemaleSymbol3[2]; diff --git a/include/trainer_card.h b/include/trainer_card.h index 7ea1d9fc0..28cabbd09 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -32,6 +32,8 @@ void TrainerCard_ShowPlayerCard(void (*)(void)); void TrainerCard_ShowLinkCard(u8, void (*)(void)); void TrainerCard_GenerateCardForPlayer(struct TrainerCard *); u8 sub_80934C4(u8 id); +void debug_sub_80A0710(void (*)(void)); +void debug_sub_80A073C(void (*)(void)); extern struct TrainerCard gTrainerCards[4]; |