diff options
Diffstat (limited to 'include')
59 files changed, 841 insertions, 456 deletions
diff --git a/include/battle.h b/include/battle.h index 52c4ee8ae..73caed16f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -302,11 +302,10 @@ struct BattleResults u8 playerSwitchesCounter; // 0x2 u8 unk3; // 0x3 u8 unk4; // 0x4 - u8 playerMonWasDamaged:1; // 0x5 + u8 playerMonWasDamaged:1; // 0x5 u8 usedMasterBall:1; // 0x5 u8 caughtMonBall:4; // 0x5 u8 shinyWildMon:1; // 0x5 - u8 unk5_7:1; // 0x5 u16 playerMon1Species; // 0x6 u8 playerMon1Name[POKEMON_NAME_LENGTH + 1]; // 0x8 u8 battleTurnCounter; // 0x13 @@ -411,16 +410,16 @@ struct BattleStruct { u8 turnEffectsTracker; u8 turnEffectsBattlerId; - u8 filler2; + u8 unused_0; u8 turnCountersTracker; u8 wrappedMove[MAX_BATTLERS_COUNT * 2]; // Leftover from Ruby's ewram access. u8 moveTarget[MAX_BATTLERS_COUNT]; u8 expGetterMonId; - u8 field_11; + u8 unused_1; u8 wildVictorySong; u8 dynamicMoveType; u8 wrappedBy[MAX_BATTLERS_COUNT]; - u16 assistPossibleMoves[PARTY_SIZE * 4]; // Each of mons can know max 4 moves. + u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // Each of mons can know max 4 moves. u8 focusPunchBattlerId; u8 battlerPreventingSwitchout; u8 moneyMultiplier; @@ -437,28 +436,25 @@ struct BattleStruct u8 field_60[4][3]; u8 runTries; u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; - u8 field_78; + u8 unused_2; u8 safariGoNearCounter; u8 safariPkblThrowCounter; u8 safariEscapeFactor; u8 safariCatchFactor; - u8 field_7D; - u8 field_7E; + u8 field_7D; // unknown spriteId + u8 field_7E; // unknown spriteId u8 formToChangeInto; u8 chosenMovePositions[MAX_BATTLERS_COUNT]; u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT]; - u8 field_88; - u8 field_89; - u8 field_8A; - u8 field_8B; - u8 field_8C; - u8 field_8D; + u8 unused_3[3]; + u8 field_8B; // related to player's pokemon switching + u8 unused_4[2]; u8 stringMoveType; u8 expGetterBattlerId; - u8 field_90; - u8 field_91; - u8 field_92; - u8 field_93; + u8 unused_5; + u8 field_91; // related to gAbsentBattlerFlags, possibly absent flags turn ago? + u8 field_92; // battle palace related + u8 field_93; // related to choosing pokemon? u8 wallyBattleState; u8 wallyMovesState; u8 wallyWaitFrames; @@ -481,11 +477,11 @@ struct BattleStruct u8 switchInItemsCounter; u8 arenaTurnCounter; u8 turnSideTracker; - u8 fillerDC[0xDF-0xDC]; + u8 unused_6[3]; u8 givenExpMons; // Bits for enemy party's pokemon that gave exp to player's party. u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; // a 3-D array [target][attacker][byte] u16 castformPalette[MAX_BATTLERS_COUNT][16]; - u8 field_180; + u8 field_180; // weird field, used in battle_main.c, once accessed as an array of u32 overwriting the field below u8 field_181; u8 field_182; u8 field_183; @@ -496,7 +492,7 @@ struct BattleStruct u8 atkCancellerTracker; struct BattleTvMovePoints tvMovePoints; struct BattleTv tv; - u8 notSureWhatFieldLol[0x28]; + u8 unused_7[0x28]; u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; s8 arenaMindPoints[2]; s8 arenaSkillPoints[2]; diff --git a/include/battle_anim.h b/include/battle_anim.h index 1c2093da9..4723fb0d5 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -58,7 +58,7 @@ void DestroyAnimSprite(struct Sprite *sprite); void DestroyAnimVisualTask(u8 taskId); void DestroyAnimSoundTask(u8 taskId); bool8 IsBattlerSpriteVisible(u8 battlerId); -void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible); +void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible); bool8 IsContest(void); s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); @@ -78,8 +78,8 @@ void sub_80A6450(struct Sprite *sprite); void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y); void DestroySpriteAndMatrix(struct Sprite *sprite); void AnimTranslateLinearSimple(struct Sprite *sprite); -void InitSpritePosToAnimAttacker(struct Sprite *sprite, u8 a2); -void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 a2); +void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets); +void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets); void StartAnimLinearTranslation(struct Sprite *sprite); void InitAnimArcTranslation(struct Sprite *sprite); bool8 AnimTranslateLinear(struct Sprite *sprite); @@ -94,7 +94,7 @@ void sub_80A66DC(struct Sprite *sprite); void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite); void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite); void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 a2); -s16 sub_80A861C(u8 battlerId, u8 a2); +s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 a2); u8 GetBattlerYCoordWithElevation(u8 battlerId); void WaitAnimForDuration(struct Sprite *sprite); void sub_80A7938(struct Sprite *sprite); @@ -122,7 +122,7 @@ s16 CloneBattlerSpriteWithBlend(u8); void obj_delete_but_dont_free_vram(struct Sprite*); u8 sub_80A89C8(int, u8, int); void sub_80A6D60(struct UnknownAnimStruct2*, const void*, u32); -void sub_80A6CC0(u32, const void*, u32); +void sub_80A6CC0(u32, const u32*, u32); void sub_80A6DAC(bool8); void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *); void sub_80A653C(struct Sprite *); @@ -148,7 +148,9 @@ void sub_80A6BFC(struct UnknownAnimStruct2 *unk, u8 unused); u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10); void sub_80A749C(struct Sprite *sprite); void sub_80A6814(u8 taskId); -void sub_80A8610(struct Sprite *sprite); +void sub_80A6DEC(struct Sprite *sprite); +void DestroySpriteAndFreeResources_(struct Sprite *sprite); +void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId); enum { @@ -159,6 +161,17 @@ enum BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, }; +enum +{ + BATTLER_COORD_ATTR_HEIGHT, + BATTLER_COORD_ATTR_WIDTH, + BATTLER_COORD_ATTR_TOP, + BATTLER_COORD_ATTR_BOTTOM, + BATTLER_COORD_ATTR_LEFT, + BATTLER_COORD_ATTR_RIGHT, + BATTLER_COORD_ATTR_RAW_BOTTOM, +}; + u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); bool8 IsBattlerSpritePresent(u8 battlerId); @@ -172,6 +185,10 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 battlerId); u8 GetSubstituteSpriteDefault_Y(u8 battlerId); +// battle_anim_80A64EC.c +void sub_80A64EC(struct Sprite *sprite); +void sub_80A718C(struct Sprite *sprite); + // battle_anim_80A9C70.s #define STAT_ANIM_PLUS1 15 #define STAT_ANIM_PLUS2 39 @@ -193,7 +210,7 @@ u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, // battle_anim_utility_funcs.s void sub_8116EB4(u8); -void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette); +void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *arg8, const u32 *arg9, const u32 *palette); u32 UnpackSelectedBattleAnimPalettes(s16); diff --git a/include/battle_main.h b/include/battle_main.h index 18bdde2f1..c134f819f 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -54,7 +54,7 @@ void sub_8038B74(struct Sprite *sprite); void sub_8038D64(void); u32 sub_80391E0(u8 arrayId, u8 caseId); u32 sub_80397C4(u32 setId, u32 tableId); -void oac_poke_opponent(struct Sprite *sprite); +void SpriteCb_WildMon(struct Sprite *sprite); void SpriteCallbackDummy_2(struct Sprite *sprite); void SpriteCB_FaintOpponentMon(struct Sprite *sprite); void sub_8039AD8(struct Sprite *sprite); @@ -86,6 +86,9 @@ bool8 TryRunFromBattle(u8 battlerId); extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3]; +extern const struct SpriteTemplate gUnknown_0831AC88; +extern const struct OamData gOamData_831ACA8; +extern const struct OamData gOamData_831ACB0; extern const u8 gTypeEffectiveness[336]; extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1]; extern const struct TrainerMoney gTrainerMoneyTable[]; diff --git a/include/bg.h b/include/bg.h index a10abaa8d..1366923f1 100644 --- a/include/bg.h +++ b/include/bg.h @@ -13,14 +13,16 @@ struct BGCntrlBitfield // for the I/O registers enum { - BG_CTRL_ATTR_VISIBLE = 1, - BG_CTRL_ATTR_CHARBASEINDEX = 2, - BG_CTRL_ATTR_MAPBASEINDEX = 3, - BG_CTRL_ATTR_SCREENSIZE = 4, - BG_CTRL_ATTR_PALETTEMODE = 5, - BG_CTRL_ATTR_PRIORITY = 6, - BG_CTRL_ATTR_MOSAIC = 7, - BG_CTRL_ATTR_WRAPAROUND = 8, + BG_ATTR_CHARBASEINDEX = 1, + BG_ATTR_MAPBASEINDEX, + BG_ATTR_SCREENSIZE, + BG_ATTR_PALETTEMODE, + BG_ATTR_MOSAIC, + BG_ATTR_WRAPAROUND, + BG_ATTR_PRIORITY, + BG_ATTR_METRIC, + BG_ATTR_TYPE, + BG_ATTR_BASETILE, }; struct BgTemplate @@ -38,8 +40,6 @@ void ResetBgs(void); u8 GetBgMode(void); void ResetBgControlStructs(void); void Unused_ResetBgControlStruct(u8 bg); -void SetBgControlAttributes(u8 bg, u8 charBaseIndex, u8 mapBaseIndex, u8 screenSize, u8 paletteMode, u8 priority, u8 mosaic, u8 wraparound); -u16 GetBgControlAttribute(u8 bg, u8 attributeId); u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode); void SetTextModeAndHideBgs(void); bool8 IsInvalidBg(u8 bg); @@ -56,11 +56,11 @@ void ShowBg(u8 bg); void HideBg(u8 bg); void SetBgAttribute(u8 bg, u8 attributeId, u8 value); u16 GetBgAttribute(u8 bg, u8 attributeId); -u32 ChangeBgX(u8 bg, u32 value, u8 op); -u32 GetBgX(u8 bg); -u32 ChangeBgY(u8 bg, u32 value, u8 op); -u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op); -u32 GetBgY(u8 bg); +s32 ChangeBgX(u8 bg, s32 value, u8 op); +s32 GetBgX(u8 bg); +s32 ChangeBgY(u8 bg, s32 value, u8 op); +s32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op); +s32 GetBgY(u8 bg); void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); u8 Unused_AdjustBgMosaic(u8 a1, u8 a2); void SetBgTilemapBuffer(u8 bg, void *tilemap); diff --git a/include/blit.h b/include/blit.h index 2fe99d7bd..78f67766e 100644 --- a/include/blit.h +++ b/include/blit.h @@ -3,15 +3,15 @@ struct Bitmap { - u8* pixels; + u8 *pixels; u32 width:16; u32 height:16; }; -void BlitBitmapRect4BitWithoutColorKey(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height); -void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey); +void BlitBitmapRect4BitWithoutColorKey(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height); +void BlitBitmapRect4Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey); void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); -void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset); +void BlitBitmapRect4BitTo8Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset); void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); #endif // GUARD_BLIT_H diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 7a97c4caf..9973477da 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -241,12 +241,26 @@ #define EVENT_OBJ_GFX_LUGIA 237 #define EVENT_OBJ_GFX_HOOH 238 #define EVENT_OBJ_GFX_BARD_2 239 -#define EVENT_OBJ_GFX_HIPSTER 240 -#define EVENT_OBJ_GFX_TRADER 241 -#define EVENT_OBJ_GFX_STORYTELLER 242 -#define EVENT_OBJ_GFX_GIDDY 243 -#define EVENT_OBJ_GFX_PLACEHOLDER_1 244 -#define EVENT_OBJ_GFX_PLACEHOLDER_2 245 + +// These are dynamic object gfx ids. +// They correspond with the values of the VAR_OBJ_GFX_ID_X vars. +// More info about them in include/constants/vars.h +#define EVENT_OBJ_GFX_VAR_0 240 +#define EVENT_OBJ_GFX_VAR_1 241 +#define EVENT_OBJ_GFX_VAR_2 242 +#define EVENT_OBJ_GFX_VAR_3 243 +#define EVENT_OBJ_GFX_VAR_4 244 +#define EVENT_OBJ_GFX_VAR_5 245 +#define EVENT_OBJ_GFX_VAR_6 246 +#define EVENT_OBJ_GFX_VAR_7 247 +#define EVENT_OBJ_GFX_VAR_8 248 +#define EVENT_OBJ_GFX_VAR_9 249 +#define EVENT_OBJ_GFX_VAR_A 250 +#define EVENT_OBJ_GFX_VAR_B 251 +#define EVENT_OBJ_GFX_VAR_C 252 +#define EVENT_OBJ_GFX_VAR_D 253 +#define EVENT_OBJ_GFX_VAR_E 254 +#define EVENT_OBJ_GFX_VAR_F 255 #define SHADOW_SIZE_S 0 #define SHADOW_SIZE_M 1 diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index b93b98201..add195df8 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -67,6 +67,6 @@ #define FLDEFF_USE_TELEPORT 63 #define FLDEFF_64 64 #define FLDEFF_65 65 -#define FLDEFF_66 66 +#define FLDEFF_MOVE_DEOXYS_ROCK 66 #endif diff --git a/include/constants/flags.h b/include/constants/flags.h index c21affd61..b1dce013e 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -162,7 +162,7 @@ #define FLAG_0x09A 0x9A #define FLAG_0x09B 0x9B #define FLAG_0x09C 0x9C -#define FLAG_0x09D 0x9D +#define FLAG_FORCE_MIRAGE_TOWER_VISIBLE 0x9D #define FLAG_0x09E 0x9E #define FLAG_0x09F 0x9F #define FLAG_0x0A0 0xA0 @@ -344,7 +344,7 @@ #define FLAG_0x14B 0x14B #define FLAG_0x14C 0x14C #define FLAG_0x14D 0x14D -#define FLAG_0x14E 0x14E +#define FLAG_MIRAGE_TOWER_VISIBLE 0x14E #define FLAG_0x14F 0x14F// PLAYER CHOSE CLAW FOSSIL #define FLAG_0x150 0x150// PLAYER CHOSE ROOT FOSSIL #define FLAG_0x151 0x151 @@ -804,7 +804,7 @@ #define FLAG_HIDE_TRICK_HOUSE_ENTRANCE_MAN 0x368 #define FLAG_HIDE_LILYCOVE_CONTEST_HALL_POKEBLOCK_EXPERT 0x369 #define FLAG_HIDE_DESERT_UNDERPASS_FOSSIL 0x36A -#define FLAG_HIDE_ROUTE_111_DESERT_RIVAL 0x36B +#define FLAG_HIDE_ROUTE_111_PLAYER_DESCENT 0x36B #define FLAG_HIDE_ROUTE_111_DESERT_FOSSIL 0x36C #define FLAG_HIDE_MT_CHIMNEY_TRAINERS 0x36D #define FLAG_HIDE_RUSTURF_TUNNEL_AQUA_GRUNT 0x36E @@ -1355,10 +1355,10 @@ #define FLAG_SYS_PYRAMID_GOLD (SYSTEM_FLAGS + 0x71) #define FLAG_SYS_FRONTIER_PASS (SYSTEM_FLAGS + 0x72) -#define FLAG_0x8D3 (SYSTEM_FLAGS + 0x73) -#define FLAG_0x8D4 (SYSTEM_FLAGS + 0x74) -#define FLAG_0x8D5 (SYSTEM_FLAGS + 0x75) -#define FLAG_0x8D6 (SYSTEM_FLAGS + 0x76) +#define FLAG_0x8D3 (SYSTEM_FLAGS + 0x73) +#define FLAG_DEOXYS_ROCK_COMPLETE (SYSTEM_FLAGS + 0x74) +#define FLAG_0x8D5 (SYSTEM_FLAGS + 0x75) +#define FLAG_0x8D6 (SYSTEM_FLAGS + 0x76) #define FLAG_SYS_STORAGE_UNKNOWN_FLAG (SYSTEM_FLAGS + 0x77) diff --git a/include/constants/global.h b/include/constants/global.h new file mode 100644 index 000000000..ff28d6a4b --- /dev/null +++ b/include/constants/global.h @@ -0,0 +1,77 @@ +#ifndef GUARD_CONSTANTS_GLOBAL_H +#define GUARD_CONSTANTS_GLOBAL_H +// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. +// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. +// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------". +// Gen 5 and up read Diamond, Pearl, or Platinum's ID as "Sinnoh". +// In Gen 4 and up, migrated Pokemon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string. +#define VERSION_SAPPHIRE 1 +#define VERSION_RUBY 2 +#define VERSION_EMERALD 3 +#define VERSION_FIRE_RED 4 +#define VERSION_LEAF_GREEN 5 +#define VERSION_HEART_GOLD 7 +#define VERSION_SOUL_SILVER 8 +#define VERSION_DIAMOND 10 +#define VERSION_PEARL 11 +#define VERSION_PLATINUM 12 +#define VERSION_GAMECUBE 15 + +#define LANGUAGE_JAPANESE 1 +#define LANGUAGE_ENGLISH 2 +#define LANGUAGE_FRENCH 3 +#define LANGUAGE_ITALIAN 4 +#define LANGUAGE_GERMAN 5 +#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean +#define LANGUAGE_SPANISH 7 + +#define GAME_VERSION (VERSION_EMERALD) +#define GAME_LANGUAGE (LANGUAGE_ENGLISH) + +// capacities of various saveblock objects +#define DAYCARE_MON_COUNT 2 +#define POKEBLOCKS_COUNT 40 +#define EVENT_OBJECTS_COUNT 16 +#define BERRY_TREES_COUNT 128 +#define FLAGS_COUNT 300 +#define VARS_COUNT 256 +#define MAIL_COUNT 16 +#define SECRET_BASES_COUNT 20 +#define TV_SHOWS_COUNT 25 +#define POKE_NEWS_COUNT 16 +#define PC_ITEMS_COUNT 50 +#define BAG_ITEMS_COUNT 30 +#define BAG_KEYITEMS_COUNT 30 +#define BAG_POKEBALLS_COUNT 16 +#define BAG_TMHM_COUNT 64 +#define BAG_BERRIES_COUNT 46 +#define EVENT_OBJECT_TEMPLATES_COUNT 64 + +#define PYRAMID_BAG_ITEMS_COUNT 10 +#define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. + +// string lengths +#define ITEM_NAME_LENGTH 14 +#define POKEMON_NAME_LENGTH 10 +#define PLAYER_NAME_LENGTH 7 +#define MAIL_WORDS_COUNT 9 +#define MOVE_NAME_LENGTH 12 + +#define MALE 0 +#define FEMALE 1 + +#define OPTIONS_BUTTON_MODE_NORMAL 0 +#define OPTIONS_BUTTON_MODE_LR 1 +#define OPTIONS_BUTTON_MODE_L_EQUALS_A 2 + +#define OPTIONS_TEXT_SPEED_SLOW 0 +#define OPTIONS_TEXT_SPEED_MID 1 +#define OPTIONS_TEXT_SPEED_FAST 2 + +#define OPTIONS_SOUND_MONO 0 +#define OPTIONS_SOUND_STEREO 1 + +#define OPTIONS_BATTLE_STYLE_SHIFT 0 +#define OPTIONS_BATTLE_STYLE_SET 1 + +#endif // GUARD_CONSTANTS_GLOBAL_H diff --git a/include/constants/maps.h b/include/constants/maps.h index bcb778422..c65f373af 100644 --- a/include/constants/maps.h +++ b/include/constants/maps.h @@ -587,6 +587,7 @@ // Map Group 33 #define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8)) +#define MAP_GROUPS_COUNT 34 #define MAP_NONE (0x7F | (0x7F << 8)) #define MAP_UNDEFINED (0xFF | (0xFF << 8)) diff --git a/include/constants/rgb.h b/include/constants/rgb.h index fd9c5c5a7..80d951f4b 100644 --- a/include/constants/rgb.h +++ b/include/constants/rgb.h @@ -2,6 +2,7 @@ #define GUARD_RGB_H #define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) #define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) #define RGB_BLACK RGB(0, 0, 0) @@ -12,6 +13,6 @@ #define RGB_YELLOW RGB(31, 31, 0) #define RGB_MAGENTA RGB(31, 0, 31) #define RGB_CYAN RGB(0, 31, 31) -#define RGB_WHITEALPHA RGB_WHITE | 0x8000 +#define RGB_WHITEALPHA (RGB_WHITE | 0x8000) #endif // GUARD_RGB_H diff --git a/include/constants/songs.h b/include/constants/songs.h index 58a8e725c..a459edd24 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -536,6 +536,6 @@ #define PH_NURSE_HELD 608 #define PH_NURSE_SOLO 609 -#define MUS_ROUTE_118 0x7FFF // What is this for? +#define MUS_ROUTE_118 0x7FFF // map is split into 2 music sections. controlled by GetCurrLocationDefaultMusic(). #endif // GUARD_CONSTANTS_SONGS_H diff --git a/include/constants/vars.h b/include/constants/vars.h index faffe7c70..30df01f55 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -68,8 +68,8 @@ #define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032 #define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033 -#define VAR_0x4034 0x4034 -#define VAR_0x4035 0x4035 +#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034 +#define VAR_DEOXYS_ROCK_LEVEL 0x4035 #define VAR_STORAGE_UNKNOWN 0x4036 #define VAR_0x4037 0x4037 #define VAR_0x4038 0x4038 @@ -81,8 +81,8 @@ #define VAR_ALTERING_CAVE_WILD_SET 0x403E #define VAR_0x403F 0x403F #define VAR_DAYS 0x4040 -#define VAR_FANCLUB_UNKNOWN_1 0x4041 -#define VAR_FANCLUB_UNKNOWN_2 0x4042 +#define VAR_FANCLUB_UNKNOWN_1 0x4041 +#define VAR_FANCLUB_UNKNOWN_2 0x4042 #define VAR_DEPT_STORE_FLOOR 0x4043 #define VAR_0x4044 0x4044 #define VAR_POKELOT_PRIZE 0x4045 diff --git a/include/credits.h b/include/credits.h index faad1058a..e7e58415b 100644 --- a/include/credits.h +++ b/include/credits.h @@ -7,5 +7,6 @@ extern EWRAM_DATA bool8 gHasHallOfFameRecords; // Exported ROM declarations +void sub_8175620(void); -#endif //GUARD_CREDITS_H +#endif // GUARD_CREDITS_H diff --git a/include/data2.h b/include/data2.h index 268dc9ac8..37ce5bf20 100644 --- a/include/data2.h +++ b/include/data2.h @@ -1,8 +1,6 @@ #ifndef GUARD_DATA2_H #define GUARD_DATA2_H -#define MOVE_NAME_LENGTH 12 - struct MonCoords { // This would use a bitfield, but some function diff --git a/include/decompress.h b/include/decompress.h index 853230aea..02412defb 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -8,13 +8,13 @@ extern u8 gDecompressionBuffer[0x4000]; void LZDecompressWram(const u32 *src, void *dest); void LZDecompressVram(const u32 *src, void *dest); -u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src); -void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); -bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src); +u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src); +void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); +bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src); -void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src); -void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); -bool8 LoadCompressedObjectPaletteUsingHeap(const struct CompressedSpritePalette *src); +void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src); +void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); +bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src); void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species); void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species); diff --git a/include/dma3.h b/include/dma3.h index 19a69ea80..8eff34f55 100644 --- a/include/dma3.h +++ b/include/dma3.h @@ -1,6 +1,51 @@ #ifndef GUARD_DMA3_H #define GUARD_DMA3_H +// Maximum amount of data we will transfer in one operation +#define MAX_DMA_BLOCK_SIZE 0x1000 + +#define Dma3CopyLarge_(src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaCopy##bit(3, _src, _dest, _size); \ + break; \ + } \ + DmaCopy##bit(3, _src, _dest, MAX_DMA_BLOCK_SIZE); \ + _src += MAX_DMA_BLOCK_SIZE; \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3CopyLarge16_(src, dest, size) Dma3CopyLarge_(src, dest, size, 16) +#define Dma3CopyLarge32_(src, dest, size) Dma3CopyLarge_(src, dest, size, 32) + +#define Dma3FillLarge_(value, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaFill##bit(3, value, _dest, _size); \ + break; \ + } \ + DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) +#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) + void ClearDma3Requests(void); void ProcessDma3Requests(void); s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index cc45f1531..284bbe8db 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -59,6 +59,9 @@ struct LockedAnimEventObjects }; extern const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[]; +extern const struct OamData gEventObjectBaseOam_32x8; +extern const struct OamData gEventObjectBaseOam_32x32; +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; extern const u8 gReflectionEffectPaletteMap[]; void ResetEventObjects(void); diff --git a/include/event_scripts.h b/include/event_scripts.h index 2661494d3..e611dc6e0 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -538,7 +538,7 @@ extern const u8 EventScript_TV[]; extern const u8 EventScript_ClosedSootopolisDoor[]; extern const u8 SkyPillar_Outside_EventScript_2393F9[]; extern const u8 EventScript_CableBoxResults[]; -extern const u8 EventScript_2A4BAC[]; +extern const u8 EventScript_PokeBlockFeeder[]; extern const u8 Route110_TrickHouseEntrance_EventScript_26A22A[]; extern const u8 EventScript_RegionMap[]; extern const u8 EventScript_RunningShoesManual[]; @@ -579,4 +579,9 @@ extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C4F[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C6A[]; +// fldeff misc +extern const u8 EventScript_275A86[]; +extern const u8 EventScript_275ADF[]; +extern const u8 EventScript_275B38[]; + #endif // GUARD_EVENT_SCRIPTS_H diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index 24adbe4b3..3cc4a8324 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -7,8 +7,8 @@ struct FieldInput bool8 checkStandardWildEncounter:1; bool8 pressedStartButton:1; bool8 pressedSelectButton:1; - bool8 input_field_0_4:1; - bool8 input_field_0_5:1; + bool8 heldDirection:1; + bool8 heldDirection2:1; bool8 tookStep:1; bool8 pressedBButton:1; bool8 input_field_1_0:1; @@ -20,7 +20,6 @@ struct FieldInput bool8 input_field_1_6:1; bool8 input_field_1_7:1; u8 dpadDirection; - u8 input_field_3; }; void FieldClearPlayerInput(struct FieldInput *pStruct); diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index f3ac2e866..3daf8d892 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -19,11 +19,11 @@ void sub_80AF688(void); bool8 sub_80AF6A4(void); void sub_80AF6D4(void); void sub_80AF6F0(void); -void sub_80AF734(void); -void sp13E_warp_to_last_warp(void); +void DoWarp(void); +void DoDiveWarp(void); void sub_80AF79C(void); -void sub_80AF7D0(void); -void sp13F_fall_to_last_warp(void); +void DoDoorWarp(void); +void DoFallWarp(void); void sub_80AF80C(u8 metatileBehavior); void sub_80AF828(void); void sub_80AF838(void); diff --git a/include/field_specials.h b/include/field_specials.h index 5adc7f3cb..10433299b 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -6,7 +6,7 @@ u8 sub_813B260(void); u16 get_unknown_box_id(void); bool8 InMultiBattleRoom(void); void sub_813BF10(void); -void increment_var_x4026_on_birth_island_modulo_100(void); +void IncrementBirthIslandRockStepCount(void); bool8 sub_813B3B0(void); bool8 ShouldDoBrailleRegicePuzzle(void); bool32 is_tile_that_overrides_player_control(void); @@ -15,7 +15,13 @@ bool32 sub_8138168(void); bool32 sub_81381B0(void); bool32 sub_81381F8(void); bool32 CountSSTidalStep(u16 delta); +u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y); void sub_813A128(void); void sub_813A878(u8 a0); +u8 sub_813BADC(u8 a0); +bool8 sub_813B9C0(void); +void SetShoalItemFlag(u16 v0); +void UpdateFrontierManiac(u16 a0); +void UpdateFrontierGambler(u16 a0); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/field_weather.h b/include/field_weather.h index c032183e1..91dcef1dc 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -134,6 +134,10 @@ struct Weather // field_weather.c extern struct Weather gWeather; extern struct Weather *const gWeatherPtr; +extern const u16 gUnknown_083970E8[]; + +// field_weather_effect.c +extern const u8 gWeatherFog1Tiles[]; void StartWeather(void); void ChangeWeather(u8 weather); diff --git a/include/fieldmap.h b/include/fieldmap.h index a50c79b43..3f5cc5ec8 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -7,8 +7,9 @@ #define NUM_METATILES_TOTAL 1024 #define NUM_PALS_IN_PRIMARY 6 #define NUM_PALS_TOTAL 13 +#define MAX_MAP_DATA_SIZE 0x2800 -extern struct BackupMapLayout gUnknown_03005DC0; +extern struct BackupMapLayout gBackupMapLayout; u32 MapGridGetMetatileIdAt(int, int); u32 MapGridGetMetatileBehaviorAt(int, int); @@ -19,23 +20,19 @@ bool8 MapGridIsImpassableAt(int, int); int GetMapBorderIdAt(int x, int y); int CanCameraMoveInDirection(int direction); u16 GetBehaviorByMetatileId(u16 metatileId); -void sav1_camera_get_focus_coords(u16 *x, u16 *y); +void GetCameraFocusCoords(u16 *x, u16 *y); u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y); u8 MapGridGetZCoordAt(int x, int y); u8 CameraMove(s32 deltaX, s32 deltaY); -void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader); -void map_copy_with_padding(u16 *map, u16 width, u16 height); -void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *); -void fillSouthConnection(struct MapHeader const *, struct MapHeader const *, s32); -void fillNorthConnection(struct MapHeader const *, struct MapHeader const *, s32); -void fillWestConnection(struct MapHeader const *, struct MapHeader const *, s32); -void fillEastConnection(struct MapHeader const *, struct MapHeader const *, s32); -void mapdata_from_sav2(void); -bool8 sub_8088BF0(u16*, u16, u8); struct MapConnection *sub_8088950(u8 direction, int x, int y); bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection); bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset); void save_serialize_map(void); +void sub_8088B3C(u16 x, u16 y); +void InitMap(void); +void InitMapFromSavedGame(void); +void InitTrainerHillMap(void); +void InitBattlePyramidMap(u8 a0); void SpriteCB_PokeballGlow(struct Sprite *); void SpriteCB_PokecenterMonitor(struct Sprite *); diff --git a/include/fldeff.h b/include/fldeff.h new file mode 100644 index 000000000..e095396a4 --- /dev/null +++ b/include/fldeff.h @@ -0,0 +1,61 @@ +#ifndef GUARD_FLDEFF_H +#define GUARD_FLDEFF_H + +// cut +bool8 SetUpFieldMove_Cut(void); +bool8 FldEff_UseCutOnGrass(void); +bool8 FldEff_UseCutOnTree(void); +bool8 FldEff_CutGrass(void); +void FixLongGrassMetatilesWindowTop(s16 x, s16 y); +void FixLongGrassMetatilesWindowBottom(s16 x, s16 y); + +extern const struct SpritePalette gFieldEffectObjectPaletteInfo6; + +// groundshake +bool8 sub_81BE66C(void); +void sub_81BE6AC(void); +void sub_81BE6B8(void); +void sub_81BE72C(void); +void sub_81BE79C(void); +void sub_81BE7F4(void); +void sub_81BE994(void); + +// escalator +void sub_80E1558(u8 var); +void sub_80E1570(void); +bool8 sub_80E1584(void); + +// soft-boiled +bool8 SetUpFieldMove_SoftBoiled(void); +void sub_81615A8(u8 taskId); +void sub_8161560(u8 taskId); + +// flash +bool8 SetUpFieldMove_Flash(void); +void c2_change_map(void); +bool8 GetMapPairFadeToType(u8 a1, u8 a2); +bool8 GetMapPairFadeFromType(u8 a1, u8 a2); + +// strength +bool8 SetUpFieldMove_Strength(void); +bool8 sub_8145E2C(void); + +// sweet scent +bool8 SetUpFieldMove_SweetScent(void); +bool8 FldEff_SweetScent(void); + +// teleport +bool8 SetUpFieldMove_Teleport(void); +bool8 FldEff_UseTeleport(void); + +// dig +bool8 SetUpFieldMove_Dig(void); +bool8 FldEff_UseDig(void); + +// rock smash +bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); +u8 oei_task_add(void); +bool8 SetUpFieldMove_RockSmash(void); +bool8 FldEff_UseRockSmash(void); + +#endif // GUARD_FLDEFF_H diff --git a/include/fldeff_cut.h b/include/fldeff_cut.h deleted file mode 100644 index c89d3b6ca..000000000 --- a/include/fldeff_cut.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef GUARD_FLDEFF_CUT_H -#define GUARD_FLDEFF_CUT_H - -extern const struct SpritePalette gFieldEffectObjectPaletteInfo6; - -bool8 SetUpFieldMove_Cut(void); -bool8 FldEff_UseCutOnGrass(void); -bool8 FldEff_UseCutOnTree(void); -bool8 FldEff_CutGrass(void); -void sub_80D423C(s16 x, s16 y); -void sub_80D42B8(s16 x, s16 y); - -#endif // GUARD_FLDEFF_CUT_H diff --git a/include/fldeff_groundshake.h b/include/fldeff_groundshake.h deleted file mode 100644 index c1629f9bd..000000000 --- a/include/fldeff_groundshake.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_FLDEFF_GROUNDSHAKE_H -#define GUARD_FLDEFF_GROUNDSHAKE_H - -void sub_81BE72C(void); - -#endif // GUARD_FLDEFF_GROUNDSHAKE_H diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h index 954ecbb5c..fd96f5646 100644 --- a/include/fldeff_misc.h +++ b/include/fldeff_misc.h @@ -1,24 +1,37 @@ #ifndef GUARD_FLDEFF_MISC_H #define GUARD_FLDEFF_MISC_H -void PopSecretBaseBalloon(s16 id, s16 x, s16 y); +void sub_80F9BCC(u16 a0, u16 a1, u8 a2); +void sub_80F9BF4(u16 a0, u16 a1, u8 a2); +bool8 sub_80F9C1C(void); +bool8 sub_80F9C30(void); +bool8 SetUpFieldMove_SecretPower(void); +bool8 FldEff_UseSecretPowerCave(void); +bool8 FldEff_SecretPowerCave(void); +bool8 FldEff_UseSecretPowerTree(void); +bool8 FldEff_SecretPowerTree(void); +bool8 FldEff_UseSecretPowerShrub(void); +bool8 FldEff_SecretPowerShrub(void); +bool8 FldEff_SecretBasePCTurnOn(void); +void DoSecretBasePCTurnOffEffect(void); +void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y); +bool8 FldEff_NopA6FC(void); +bool8 FldEff_NopA700(void); void ShatterSecretBaseBreakableDoor(s16 x, s16 y); -u8 CreateRecordMixingSprite(void); -void DestroyRecordMixingSprite(void); -void FldEffPoison_Start(void); void PlaySecretBaseMusicNoteMatSound(s16 metatileId); void DoSecretBaseGlitterMatSparkle(void); -bool8 sub_80FADE4(u16, u8); - -extern struct MapPosition gPlayerFacingPosition; -extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; - -extern u8 EventScript_275A86[]; -extern u8 EventScript_275ADF[]; -extern u8 EventScript_275B38[]; - -extern const struct OamData gEventObjectBaseOam_32x8; +bool8 FldEff_SandPillar(void); +void GetShieldToyTVDecorationInfo(void); +bool8 sub_80FADE4(u16 arg0, u8 arg1); +void FldEffPoison_Start(void); +bool32 FldEffPoison_IsActive(void); +void DoWateringBerryTreeAnim(void); +u8 CreateRecordMixingSprite(void); +void DestroyRecordMixingSprite(void); +extern const struct SpritePalette gFieldEffectObjectPaletteInfo7; +extern const struct SpritePalette gFieldEffectObjectPaletteInfo8; +extern const struct SpritePalette gFieldEffectObjectPaletteInfo9; extern const u16 gTilesetPalettes_SecretBase[][16]; #endif //GUARD_FLDEFF_MISC_H diff --git a/include/fldeff_softboiled.h b/include/fldeff_softboiled.h deleted file mode 100755 index abb3c7913..000000000 --- a/include/fldeff_softboiled.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef GUARD_FLDEFF_SOFTBOILED_H -#define GUARD_FLDEFF_SOFTBOILED_H - -void sub_81615A8(u8 taskId); -void sub_8161560(u8 taskId); - -#endif // GUARD_FLDEFF_SOFTBOILED_H diff --git a/include/gba/defines.h b/include/gba/defines.h index 16f1315d0..b68a2ad1e 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -66,6 +66,4 @@ #define TOTAL_OBJ_TILE_COUNT 1024 -#define WIN_RANGE(a, b) (((a) << 8) | (b)) - #endif // GUARD_GBA_DEFINES diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index c20b69886..df79b084d 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -576,6 +576,9 @@ #define WINOUT_WINOBJ_OBJ (1 << 12) #define WINOUT_WINOBJ_CLR (1 << 13) +#define WIN_RANGE(a, b) (((a) << 8) | (b)) +#define WIN_RANGE2(a, b) ((b) | ((a) << 8)) + // BLDCNT // Bits 0-5 select layers for the 1st target #define BLDCNT_TGT1_BG0 (1 << 0) diff --git a/include/global.h b/include/global.h index e3792ac56..c11bddc2d 100644 --- a/include/global.h +++ b/include/global.h @@ -4,6 +4,7 @@ #include <string.h> #include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines. #include "gba/gba.h" +#include "constants/global.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); @@ -93,100 +94,6 @@ f; \ }) -// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. -// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. -// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------". -// Gen 5 and up read Diamond, Pearl, or Platinum's ID as "Sinnoh". -// In Gen 4 and up, migrated Pokemon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string. -enum -{ - VERSION_SAPPHIRE = 1, - VERSION_RUBY = 2, - VERSION_EMERALD = 3, - VERSION_FIRE_RED = 4, - VERSION_LEAF_GREEN = 5, - VERSION_HEART_GOLD = 7, - VERSION_SOUL_SILVER = 8, - VERSION_DIAMOND = 10, - VERSION_PEARL = 11, - VERSION_PLATINUM = 12, - VERSION_GAMECUBE = 15, -}; - -enum LanguageId -{ - LANGUAGE_JAPANESE = 1, - LANGUAGE_ENGLISH = 2, - LANGUAGE_FRENCH = 3, - LANGUAGE_ITALIAN = 4, - LANGUAGE_GERMAN = 5, - // 6 goes unused but the theory is it was meant to be Korean - LANGUAGE_SPANISH = 7, -}; - -#define GAME_VERSION (VERSION_EMERALD) -#define GAME_LANGUAGE (LANGUAGE_ENGLISH) - -// capacities of various saveblock objects -#define DAYCARE_MON_COUNT 2 -#define POKEBLOCKS_COUNT 40 -#define EVENT_OBJECTS_COUNT 16 -#define BERRY_TREES_COUNT 128 -#define FLAGS_COUNT 300 -#define VARS_COUNT 256 -#define MAIL_COUNT 16 -#define SECRET_BASES_COUNT 20 -#define TV_SHOWS_COUNT 25 -#define POKE_NEWS_COUNT 16 -#define PC_ITEMS_COUNT 50 -#define BAG_ITEMS_COUNT 30 -#define BAG_KEYITEMS_COUNT 30 -#define BAG_POKEBALLS_COUNT 16 -#define BAG_TMHM_COUNT 64 -#define BAG_BERRIES_COUNT 46 -#define EVENT_OBJECT_TEMPLATES_COUNT 64 - -#define PYRAMID_BAG_ITEMS_COUNT 10 -#define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. - -// string lengths -#define ITEM_NAME_LENGTH 14 -#define POKEMON_NAME_LENGTH 10 -#define PLAYER_NAME_LENGTH 7 -#define MAIL_WORDS_COUNT 9 - -enum -{ - MALE, - FEMALE -}; - -enum -{ - OPTIONS_BUTTON_MODE_NORMAL, - OPTIONS_BUTTON_MODE_LR, - OPTIONS_BUTTON_MODE_L_EQUALS_A -}; - -enum -{ - OPTIONS_TEXT_SPEED_SLOW, - OPTIONS_TEXT_SPEED_MID, - OPTIONS_TEXT_SPEED_FAST -}; - -enum -{ - OPTIONS_SOUND_MONO, - OPTIONS_SOUND_STEREO -}; - -enum -{ - OPTIONS_BATTLE_STYLE_SHIFT, - OPTIONS_BATTLE_STYLE_SET -}; - struct Coords8 { s8 x; @@ -521,7 +428,7 @@ struct SaveBlock2 { /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x08*/ u8 playerGender; // MALE, FEMALE - /*0x09*/ u8 specialSaveWarp; + /*0x09*/ u8 specialSaveWarpFlags; /*0x0A*/ u8 playerTrainerId[4]; /*0x0E*/ u16 playTimeHours; /*0x10*/ u8 playTimeMinutes; @@ -872,15 +779,15 @@ typedef union // 3b58 struct WaldaPhrase { - u16 field_0; - u16 field_2; + u16 colors[2]; // Background, foreground. u8 text[16]; u8 iconId; u8 patternId; bool8 patternUnlocked; }; -struct UnkSaveSubstruct_3b98 { +struct UnkSaveSubstruct_3b98 +{ u32 trainerId; u8 trainerName[PLAYER_NAME_LENGTH + 1]; }; @@ -889,10 +796,10 @@ struct SaveBlock1 { /*0x00*/ struct Coords16 pos; /*0x04*/ struct WarpData location; - /*0x0C*/ struct WarpData warp1; - /*0x14*/ struct WarpData warp2; - /*0x1C*/ struct WarpData lastHealLocation; - /*0x24*/ struct WarpData warp4; + /*0x0C*/ struct WarpData continueGameWarp; + /*0x14*/ struct WarpData dynamicWarp; + /*0x1C*/ struct WarpData lastHealLocation; // used by white-out and teleport + /*0x24*/ struct WarpData escapeWarp; // used by Dig and Escape Rope /*0x2C*/ u16 savedMusic; /*0x2E*/ u8 weather; /*0x2F*/ u8 weatherCycleStage; diff --git a/include/graphics.h b/include/graphics.h index d7bdf096e..8a54ba536 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3071,7 +3071,7 @@ extern const u32 gTrainerBackPicPalette_Leaf[]; // pokeblock extern const u32 gMenuPokeblock_Gfx[]; -extern const u8 gMenuPokeblock_Pal[]; +extern const u32 gMenuPokeblock_Pal[]; extern const u32 gMenuPokeblock_Tilemap[]; extern const u32 gMenuPokeblockDevice_Gfx[]; extern const u32 gMenuPokeblockDevice_Pal[]; @@ -3859,8 +3859,8 @@ extern const u8 gFireRedMenuElements_Gfx[]; // item menu graphics extern const u32 gBagScreen_Gfx[]; -extern const u16 gBagScreenFemale_Pal[]; -extern const u16 gBagScreenMale_Pal[]; +extern const u32 gBagScreenFemale_Pal[]; +extern const u32 gBagScreenMale_Pal[]; extern const u8 gBagMenuHMIcon_Gfx[]; // item menu icons graphics @@ -3914,7 +3914,7 @@ extern const u32 gIntro2FlygonGfx[]; // party menu graphics extern const u32 gPartyMenuMisc_Gfx[]; extern const u32 gPartyMenuMisc_Tilemap[]; -extern const u8 gPartyMenuMisc_Pal[]; +extern const u32 gPartyMenuMisc_Pal[]; // berry pics extern const u32 gBerryPic_Cheri[]; @@ -4105,6 +4105,10 @@ extern const u32 gUnknown_08D83C3C[]; extern const u32 gUnknown_08D83900[]; extern const u32 gBattleFrontierGfx_DomeOptions[]; +extern const u32 gUnknown_08D854E8[]; +extern const u32 gUnknown_08D855E8[]; +extern const u32 gContest2Pal[]; + extern const u32 gBattleAnimSpriteSheet_000[]; extern const u32 gBattleAnimSpriteSheet_001[]; extern const u32 gBattleAnimSpriteSheet_002[]; @@ -4626,9 +4630,9 @@ extern const u32 gBattleAnimSpritePalette_241[]; extern const u32 gBattleAnimSpritePalette_242[]; extern const u32 gBattleAnimSpritePalette_243[]; extern const u32 gBattleAnimSpritePalette_244[]; -extern const u8 gUnknown_08C2DC68[]; -extern const u16 gUnknown_08C2DDA4[]; -extern const u8 gUnknown_08C2DDC4[]; +extern const u32 gUnknown_08C2DC68[]; +extern const u32 gUnknown_08C2DDA4[]; +extern const u32 gUnknown_08C2DDC4[]; extern const u32 gBattleAnimSpritePalette_245[]; extern const u32 gBattleAnimSpritePalette_248[]; extern const u32 gBattleAnimSpritePalette_249[]; @@ -4720,6 +4724,10 @@ extern const u32 gBattleAnimBackgroundTilemap_17[]; extern const u32 gBattleAnimBackgroundTilemap_20[]; extern const u32 gBattleAnimBackgroundTilemap_21[]; +extern const u32 gUnknown_08C1D0AC[]; +extern const u32 gUnknown_08C1D1E8[]; +extern const u32 gUnknown_08C1D210[]; + extern const u32 gUnknown_08C20668[]; extern const u32 gUnknown_08C20684[]; extern const u32 gBattleStatMask_Gfx[]; @@ -4748,6 +4756,8 @@ extern const u32 gBattleAnimBackgroundImage_Surf[]; extern const u32 gBattleAnimBackgroundPalette_Surf[]; extern const u32 gBattleAnimBackgroundImageMuddyWater_Pal[]; +extern const u32 gBattleAnimFogTilemap[]; + // Berry blender extern const u32 gBerryBlenderArrowTiles[]; extern const u32 gBerryBlenderStartTiles[]; @@ -4769,6 +4779,20 @@ extern const u32 gUnknown_08D8D58C[]; extern const u32 gPokedexAreaScreenAreaUnknown_Gfx[]; extern const u16 gPokedexAreaScreenAreaUnknown_Pal[]; +// Pokemon Storage System +extern const u32 gPSSMenu_Gfx[]; +extern const u16 gPSSMenu_Pal[]; +extern const u32 gWallpaperIcon_Plusle[]; +extern const u32 gWallpaperIcon_Cross[]; +extern const u32 gWallpaperIcon_Bolt[]; +extern const u32 gUnknown_08DD36C8[]; +extern const u32 gWallpaperTiles_Ribbon[]; +extern const u32 gWallpaperTilemap_Ribbon[]; +extern const u16 gWallpaperPalettes_Ribbon[][16]; +extern const u32 gWallpaperTiles_Horizontal[]; +extern const u32 gWallpaperTilemap_Horizontal[]; +extern const u16 gWallpaperPalettes_Horizontal[][16]; + // Cable Car extern const u32 gUnknown_08DBA5B8[]; extern const u16 gUnknown_08DBA518[]; @@ -4777,4 +4801,21 @@ extern const u32 gCableCarDoor_Gfx[]; extern const u32 gCableCarCord_Gfx[]; extern const u16 gCableCar_Pal[]; +// Trade +extern const u16 gUnknown_08DDB3E4[]; +extern const u8 gUnknown_08DDB464[]; +extern const u16 gUnknown_08DDCF04[]; +extern const u16 gTradeGba2_Pal[]; +extern const u8 gTradeGba_Gfx[]; +extern const u16 gUnknown_08DDD704[]; +extern const u8 gUnknown_08DDC6E4[]; +extern const u16 gUnknown_08DDB444[]; + +// Party menu +extern const u32 gPartyMenuPokeball_Gfx[]; +extern const u32 gPartyMenuPokeballSmall_Gfx[]; +extern const u32 gStatusPal_Icons[]; +extern const u32 gPartyMenuPokeball_Pal[]; +extern const u32 gStatusPal_Icons[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/item_menu.h b/include/item_menu.h index a904208d9..d972cdf83 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -78,5 +78,6 @@ u8 GetItemListPosition(u8 pocketId); bool8 UseRegisteredKeyItemOnField(void); void CB2_GoToSellMenu(void); void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)()); +void DoWallyTutorialBagMenu(void); #endif //GUARD_item_menu_H diff --git a/include/librfu.h b/include/librfu.h index 49df42541..38c819835 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -255,6 +255,6 @@ void rfu_REQ_recvData(void); void rfu_UNI_readySendData(u8 a0); void rfu_UNI_clearRecvNewDataFlag(u8 a0); void rfu_REQ_PARENT_resumeRetransmitAndChange(void); -void rfu_NI_setSendData(u8, u8, u8 *, u8); +void rfu_NI_setSendData(u8, u8, const void *, u32); #endif // GUARD_LIBRFU_H diff --git a/include/link.h b/include/link.h index f12f0990f..9552f062c 100644 --- a/include/link.h +++ b/include/link.h @@ -240,7 +240,7 @@ void SerialCB(void); u8 GetLinkPlayerCount(void); bool32 InUnionRoom(void); void sub_800E0E8(void); -bool8 sub_800A520(void); +bool8 IsLinkTaskFinished(void); void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_800ADF8(void); void sub_800B488(void); @@ -311,5 +311,6 @@ void sub_800AD10(void); void sub_800AB18(void); void sub_8009F18(void); bool8 sub_800AA60(void); +void sub_800ABF4(u16 a0); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index e394e2611..715b4cdd9 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -279,5 +279,7 @@ void sub_8011DE0(u32 arg0); u8 sub_801100C(int a0); void sub_800EF7C(void); bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx); +s32 sub_800E87C(u8 idx); +void sub_8011BA4(void); #endif //GUARD_LINK_RFU_H diff --git a/include/load_save.h b/include/load_save.h index c64a1179b..bf50bffd7 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -15,11 +15,11 @@ void ClearSav2(void); void ClearSav1(void); void SetSaveBlocksPointers(u16 offset); void MoveSaveBlocks_ResetHeap(void); -u32 GetSecretBase2Field_9(void); -void ClearSecretBase2Field_9(void); -void SetSecretBase2Field_9(void); -void sub_8076D5C(void); -void sav2_gender2_inplace_and_xFE(void); +u32 UseContinueGameWarp(void); +void ClearContinueGameWarpStatus(void); +void SetContinueGameWarpStatus(void); +void SetContinueGameWarpStatusToDynamicWarp(void); +void ClearContinueGameWarpStatus2(void); void SavePlayerParty(void); void LoadPlayerParty(void); void SaveEventObjects(void); diff --git a/include/menu.h b/include/menu.h index 2606b1f58..aca462468 100644 --- a/include/menu.h +++ b/include/menu.h @@ -20,7 +20,8 @@ struct MenuAction extern const u16 gUnknown_0860F074[]; -void sub_81971D0(void); +void FreeAllOverworldWindowBuffers(void); +void InitStandardTextBoxWindows(void); void sub_8197200(void); u16 RunTextPrintersAndIsPrinter0Active(void); void sub_81973A4(void); @@ -44,16 +45,16 @@ void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palet void schedule_bg_copy_tilemap_to_vram(u8 bgNum); void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs); u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 numItems, u8 initialCursorPos); -u8 GetMenuCursorPos(void); +u8 Menu_GetCursorPos(void); s8 Menu_ProcessInput(void); s8 Menu_ProcessInputNoWrap(void); void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y); void reset_temp_tile_data_buffers(void); -void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, u16 offset, u8 mode); +void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); struct WindowTemplate CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock); void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); -void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, int size, u16 offset, u8 mode); +void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); s8 Menu_ProcessInputNoWrapClearOnChoose(void); s8 ProcessMenuInput_other(void); void do_scheduled_bg_tilemap_copies_to_vram(void); @@ -63,7 +64,7 @@ void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 a3); void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds); void sub_8197DF8(u8 windowId, bool8 copyToVram); u16 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16); -void *malloc_and_decompress(const void *src, int *sizeOut); +void *malloc_and_decompress(const void *src, u32 *sizeOut); u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode); void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress); void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8); @@ -72,7 +73,8 @@ u8 sub_8199944(u8 windowId, u8 optionWidth, u8 horizontalCount, u8 verticalCount u8 sub_8199134(s8, s8); u8 GetStartMenuWindowId(void); void sub_819A2BC(u8, u8); -u8 MoveMenuCursor(s8 cursorDelta); +u8 Menu_MoveCursor(s8 cursorDelta); +u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta); void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 CopyToVram); u8 sub_81979C4(u8 a1); u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos); @@ -94,5 +96,8 @@ s8 Menu_ProcessInputGridLayout(void); u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted); s8 Menu_ProcessInputNoWrapAround_other(void); void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); +u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile); +void sub_8198314(void); +void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram); #endif // GUARD_MENU_H diff --git a/include/mirage_tower.h b/include/mirage_tower.h new file mode 100644 index 000000000..f98b016b2 --- /dev/null +++ b/include/mirage_tower.h @@ -0,0 +1,8 @@ +#ifndef GUARD_MIRAGE_TOWER_H +#define GUARD_MIRAGE_TOWER_H + +void ClearMirageTowerPulseBlendEffect(void); +void ClearMirageTowerPulseBlend(void); +void TryStartMirageTowerPulseBlendEffect(void); + +#endif // GUARD_MIRAGE_TOWER_H diff --git a/include/mon_markings.h b/include/mon_markings.h index 22c3f14a4..8e4ec58bd 100644 --- a/include/mon_markings.h +++ b/include/mon_markings.h @@ -21,6 +21,15 @@ struct PokemonMarkMenu /*0x10B4*/ u8 tileLoadState; }; // 10b8 +void sub_811F90C(struct PokemonMarkMenu *ptr); +void sub_811F918(void); +bool8 sub_811F960(void); +void sub_811FA90(void); +void sub_811FAA4(u8 markings, s16 x, s16 y); +void sub_811FAF8(void); +bool8 sub_811FBA4(void); struct Sprite *sub_811FF94(u16 tileTag, u16 paletteTag, const u16 *palette); +struct Sprite *sub_811FFB4(u16 tileTag, u16 paletteTag, const u16 *palette); +void sub_8120084(u8 markings, void *dest); #endif //POKEEMERALD_MON_MARKINGS_H diff --git a/include/overworld.h b/include/overworld.h index 1f53662b3..79cbf1da3 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -46,28 +46,25 @@ void Overworld_SetEventObjTemplateCoords(u8 localId, s16 x, s16 y); void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType); const struct MapLayout *GetMapLayout(void); void ApplyCurrentWarp(void); -void set_warp2_warp3_to_neg_1(void); struct MapHeader const *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); struct MapHeader const *const GetDestinationWarpMapHeader(void); void WarpIntoMap(void); -void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); -void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId); -void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); -void sub_8084CCC(u8 a1); -void Overworld_SetWarpDestToLastHealLoc(void); -void Overworld_SetHealLocationWarp(u8 healLocationId); -void sub_8084D5C(s16 a1, s16 a2); -void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void sub_8084E14(void); +void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpId); +void SetDynamicWarp(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId); +void SetDynamicWarpWithCoords(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetWarpDestinationToDynamicWarp(u8 unused); +void SetWarpDestinationToHealLocation(u8 a1); +void SetWarpDestinationToLastHealLocation(void); +void SetLastHealLocationWarp(u8 healLocationId); +void UpdateEscapeWarp(s16 x, s16 y); +void SetEscapeWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetWarpDestinationToEscapeWarp(void); void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void SetFixedHoleWarpAsDestination(s16 x, s16 y); -void warp1_set_to_sav1w(void); -void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void sub_8084F6C(u8 a1); -void sub_8084FAC(int unused); +void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y); +void SetContinueGameWarpToHealLocation(u8 a1); +void SetContinueGameWarpToDynamicWarp(int unused); const struct MapConnection *GetMapConnection(u8 dir); bool8 SetDiveWarpEmerge(u16 x, u16 y); bool8 SetDiveWarpDive(u16 x, u16 y); @@ -78,7 +75,7 @@ bool32 Overworld_IsBikingAllowed(void); void SetDefaultFlashLevel(void); void Overworld_SetFlashLevel(s32 flashLevel); u8 Overworld_GetFlashLevel(void); -void sub_8085524(u16 mapLayoutId); +void SetCurrentMapLayout(u16 mapLayoutId); void sub_8085540(u8 var); u8 sub_808554C(void); u16 GetLocationMusic(struct WarpData *warp); @@ -97,15 +94,15 @@ void Overworld_FadeOutMapMusic(void); void UpdateAmbientCry(s16 *state, u16 *delayCounter); u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); u8 GetMapTypeByWarpData(struct WarpData *warp); -u8 Overworld_GetMapTypeOfSaveblockLocation(void); +u8 GetCurrentMapType(void); u8 GetLastUsedWarpMapType(void); bool8 is_map_type_1_2_3_5_or_6(u8 mapType); bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); bool8 Overworld_MapTypeIsIndoors(u8 mapType); -u8 sav1_saved_warp2_map_get_name(void); -u8 sav1_map_get_name(void); +u8 GetSavedWarpRegionMapSectionId(void); +u8 GetCurrentRegionMapSectionId(void); u8 GetCurrentMapBattleScene(void); -void overworld_free_bg_tilemaps(void); +void CleanupOverworldWindowsAndTilemaps(void); bool32 is_c1_link_related_active(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); diff --git a/include/palette.h b/include/palette.h index c14e9f453..540452f3d 100644 --- a/include/palette.h +++ b/include/palette.h @@ -43,7 +43,7 @@ extern u8 gPaletteDecompressionBuffer[]; extern u16 gPlttBufferUnfaded[]; extern u16 gPlttBufferFaded[]; -void LoadCompressedPalette(const void *, u16, u16); +void LoadCompressedPalette(const u32 *, u16, u16); void LoadPalette(const void *, u16, u16); void FillPalette(u16, u16, u16); void TransferPlttBuffer(void); diff --git a/include/party_menu.h b/include/party_menu.h index 27a043cb6..ae7c414a8 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -26,7 +26,8 @@ enum PARTY_GIVE_ITEM, }; -struct Struct203CEC8 { +struct Struct203CEC8 +{ MainCallback exitCallback; TaskFunc unk4; u8 unk8_0:4; @@ -41,42 +42,72 @@ struct Struct203CEC8 { }; extern struct Struct203CEC8 gUnknown_0203CEC8; +extern u8 gUnknown_0203CEE8; +extern u8 gUnknown_0203CEE9; +extern MainCallback gPostMenuFieldCallback; +extern u8 gSelectedOrderFromParty[4]; +extern u8 gUnknown_0203CF00[3]; -extern const u16 gUnknown_0861500C[]; // tutor table +extern const u16 gTutorMoves[]; -bool8 pokemon_has_move(struct Pokemon *, u16); -void sub_81B58A8(void); -void DoWallyTutorialBagMenu(void); -u8 pokemon_ailments_get_primary(u32 status); -u8 *GetMonNickname(struct Pokemon *mon, u8 *dst); +void sub_81B0FCC(u8 slot, u8 b); +bool8 IsMultiBattle(void); u8 GetCursorSelectionMonId(void); +u8 sub_81B1360(void); +void sub_81B1370(u8 taskId); +u8* GetMonNickname(struct Pokemon *mon, u8 *dest); +u8 sub_81B1B5C(const u8* str, u8 b); +bool8 sub_81B1BD4(void); +void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func); +u8 pokemon_ailments_get_primary(u32 status); +u8 sub_81B205C(struct Pokemon *mon); +void display_pokemon_menu_message(u32 stringID); +void sub_81B47E0(u8 taskId); bool8 FieldCallback_PrepareFadeInFromMenu(void); +void sub_81B58A8(void); +void LoadHeldItemIcons(void); +void sub_81B5D4C(u8 *a, u8 *b, u8 c); +void sub_81B617C(void); +void ItemUseCB_Medicine(u8 taskId, TaskFunc task); +void sub_81B67C8(u8 taskId, TaskFunc task); +void dp05_ether(u8 taskId, TaskFunc task); +void dp05_pp_up(u8 taskId, TaskFunc task); +u16 ItemIdToBattleMoveId(u16 item); +bool8 IsMoveHm(u16 move); +bool8 MonKnowsMove(struct Pokemon *mon, u16 move); +void sub_81B6DC4(u8 taskId, TaskFunc task); +void dp05_rare_candy(u8 taskId, TaskFunc task); +void sub_81B79E8(u8 taskId, TaskFunc task); +void sub_81B7C74(u8 taskId, TaskFunc task); +u8 GetItemEffectType(u16 item); +void CB2_PartyMenuFromStartMenu(void); void sub_81B7F60(void); - -void sub_81B0FCC(u8 partyIdx, u8 a); -void sub_81B1370(u8 taskId); -void display_pokemon_menu_message(u32 windowId); -void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func); -u8 sub_81B1B5C(const u8 *a, u8 b); -u8 sub_81B1BD4(void); void sub_81B8448(void); void sub_81B8518(u8 unused); -u8 sub_81B1360(void); -void sub_81B8904(u8 arg0, void (*callback)(void)); -void OpenPartyMenuInBattle(u8 caseId); -u16 ItemIdToBattleMoveId(u16 itemId); -u8 sub_81B205C(struct Pokemon* a); -void sub_81B617C(void); -u8 sub_81B6D14(u16 a); +void sub_81B8558(void); +void sub_81B8904(u8 initArg, MainCallback callback); +void sub_81B892C(void); +void sub_81B8958(void); +void OpenPartyMenuInBattle(u8 arg); +void sub_81B89F0(void); +void sub_81B8C68(void); +void sub_81B8D64(u8 battlerId, u8 multiplayerFlag); +void sub_81B8E80(u8 battlerId, u8 unk, u8 arrayIndex); +void sub_81B8FB0(u8 slot, u8 slot2); +u8 pokemon_order_func(u8 slot); +void sub_81B9150(void); +void sub_81B9328(void); bool8 hm_add_c3_without_phase_2(void); - -extern void dp05_ether(u8, TaskFunc); -extern void dp05_pp_up(u8, TaskFunc); -extern void dp05_rare_candy(u8, TaskFunc); - -extern void sub_81B67C8(u8, TaskFunc); -extern void sub_81B79E8(u8, TaskFunc); -extern void sub_81B6DC4(u8, TaskFunc); -extern void sub_81B7C74(u8, TaskFunc); +void sub_81B9404(void); +void sub_81B94B0(void); +void sub_81B951C(void); +void sub_81B9620(void); +void sub_81B95E0(void); +void sub_81B98DC(void); +void sub_81B9918(void); +void sub_81B9770(void); +void sub_81B9718(void); +void sub_81B96D0(void); +void sub_81B968C(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 94dae089f..cfa5cc350 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -8,9 +8,9 @@ #define MON_DATA_OT_ID 1 #define MON_DATA_NICKNAME 2 #define MON_DATA_LANGUAGE 3 -#define MON_DATA_SANITY_BIT1 4 -#define MON_DATA_SANITY_BIT2 5 -#define MON_DATA_SANITY_BIT3 6 +#define MON_DATA_SANITY_IS_BAD_EGG 4 +#define MON_DATA_SANITY_HAS_SPECIES 5 +#define MON_DATA_SANITY_IS_EGG 6 #define MON_DATA_OT_NAME 7 #define MON_DATA_MARKINGS 8 #define MON_DATA_CHECKSUM 9 @@ -251,14 +251,6 @@ struct Pokemon u16 spDefense; }; -struct PokemonStorage -{ - /*0x0000*/ u8 currentBox; - /*0x0001*/ struct BoxPokemon boxes[14][30]; - /*0x8344*/ u8 boxNames[14][9]; - /*0x83C2*/ u8 boxWallpapers[14]; -}; - struct Unknown_806F160_Struct { u8 field_0_0:4; @@ -430,7 +422,6 @@ extern struct Pokemon gPlayerParty[PARTY_SIZE]; extern u8 gEnemyPartyCount; extern struct Pokemon gEnemyParty[PARTY_SIZE]; extern struct SpriteTemplate gMultiuseSpriteTemplate; -extern struct PokemonStorage* gPokemonStoragePtr; extern const struct BattleMove gBattleMoves[]; extern const u8 gFacilityClassToPicIndex[]; diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 17c7d5573..4f27ef281 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -1,9 +1,14 @@ #ifndef GUARD_POKEMON_ICON_H #define GUARD_POKEMON_ICON_H +extern const u8 gMonIconPaletteIndices[]; + const u8 *GetMonIconTiles(u16 species, bool32); +void sub_80D304C(u16 offset); +u8 GetValidMonIconPalIndex(u16 species); const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); const u16 *GetValidMonIconPalettePtr(u16 speciesId); +u16 GetIconSpecies(u16 species, u32 personality); u16 GetUnownLetterByPersonality(u32 personality); u16 sub_80D2E84(u16 speciesId); void LoadMonIconPalettes(void); diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 7f618498b..a85ee5ff4 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -2,88 +2,73 @@ #define GUARD_POKEMON_STORAGE_SYSTEM_H #define TOTAL_BOXES_COUNT 14 -#define IN_BOX_COUNT 30 +#define IN_BOX_ROWS 6 +#define IN_BOX_COLUMNS 5 +#define IN_BOX_COUNT (IN_BOX_ROWS * IN_BOX_COLUMNS) -#include "pc_screen_effect.h" -#include "mon_markings.h" +/* + ROWS +COLUMNS 0 1 2 3 4 5 + 6 7 8 9 10 11 + 12 13 14 15 16 17 + 18 19 20 21 22 23 + 24 25 26 27 28 29 +*/ -struct PokemonStorageSystemFunc +struct PokemonStorage { - u8 (*func)(void); - s8 unk4; + /*0x0000*/ u8 currentBox; + /*0x0001*/ struct BoxPokemon boxes[TOTAL_BOXES_COUNT][IN_BOX_COUNT]; + /*0x8344*/ u8 boxNames[TOTAL_BOXES_COUNT][9]; + /*0x83C2*/ u8 boxWallpapers[TOTAL_BOXES_COUNT]; }; -struct StorageAction -{ - const u8 *text; - u8 format; -}; - -struct StorageText -{ - const u8 *text; - int textId; -}; - -struct PSS_MenuStringPtrs -{ - const u8 *text; - const u8 *desc; -}; - -struct UnkStruct_2000028 -{ - const u8 *unk_00; - u8 *unk_04; - u16 unk_08; - u16 unk_0a; - void (*unk_0c)(struct UnkStruct_2000028 *data); -}; +extern struct PokemonStorage *gPokemonStoragePtr; -struct UnkStruct_2000020 -{ - struct UnkStruct_2000028 *unk_00; - u8 unk_04; - u8 unk_05; -}; - -struct UnkPSSStruct_2002370 -{ - struct Sprite *unk_0000; - struct Sprite *unk_0004[4]; - u32 unk_0014[3]; - struct Sprite *unk_0020[2]; - u8 filler_0028[0x214]; - u32 unk_023c; - u16 unk_0240; - u16 unk_0242; - u8 curBox; - u8 unk_0245; - u8 unk_0246; -}; - -struct PokemonStorageSystemData -{ - u8 state; - u8 boxOption; - u8 unk_0002; - u8 unk_0003; - u8 taskId; - u8 unk_0005[710]; - u16 bg2_X; -}; - -extern struct UnkPSSStruct_2002370 *gUnknown_02039D04; -extern struct PokemonStorageSystemData *gUnknown_02039D08; - -u8* GetBoxNamePtr(u8 boxNumber); -struct BoxPokemon *GetBoxedMonPtr(u8, u8); -void SetBoxMonNickFromAnyBox(u8, u8, u8 *); -void CompactPartySlots(void); -u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); -bool8 CheckFreePokemonStorageSpace(void); +u8 CountMonsInBox(u8 boxId); +s16 GetFirstFreeBoxSpot(u8 boxId); +u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); +u16 CountPartyAliveNonEggMons_IgnoreVar0x8004Slot(void); +u8 CountPartyMons(void); +u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n); +void ShowPokemonStorageSystemPC(void); +void ResetPokemonStorageSystem(void); +s16 CompactPartySlots(void); u8 StorageGetCurrentBox(void); -u8 sub_80D214C(struct BoxPokemon *a, u8 b, u8 c, u8 d); -bool32 sub_80D23A8(u16 move); +u32 GetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request); +void SetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, const void *value); +u32 GetCurrentBoxMonData(u8 boxPosition, s32 request); +void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value); +void GetBoxMonNickAt(u8 boxId, u8 boxPosition, u8 *dst); +u32 GetBoxMonLevelAt(u8 boxId, u8 boxPosition); +void SetBoxMonNickAt(u8 boxId, u8 boxPosition, const u8 *nick); +u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst); +void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon *src); +void CopyBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon *dst); +void CreateBoxMonAt(u8 boxId, u8 boxPosition, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 personality, u8 otIDType, u32 otID); +void ZeroBoxMonAt(u8 boxId, u8 boxPosition); +void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon *dst); +struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition); +u8 *GetBoxNamePtr(u8 boxId); +u8 GetBoxWallpaper(u8 boxId); +void SetBoxWallpaper(u8 boxId, u8 wallpaperId); +s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3); +bool8 CheckFreePokemonStorageSpace(void); +bool32 CheckBoxMonSanityAt(u32 boxId, u32 boxPosition); +u32 CountStorageNonEggMons(void); +u32 CountAllStorageMons(void); +bool32 AnyStorageMonWithMove(u16 moveId); +void ResetWaldaWallpaper(void); +void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked); +bool32 IsWaldaWallpaperUnlocked(void); +u32 GetWaldaWallpaperPatternId(void); +void SetWaldaWallpaperPatternId(u8 id); +u32 GetWaldaWallpaperIconId(void); +void SetWaldaWallpaperIconId(u8 id); +u16 *GetWaldaWallpaperColorsPtr(void); +void SetWaldaWallpaperColors(u16 color1, u16 color2); +u8 *GetWaldaPhrasePtr(void); +void SetWaldaPhrase(const u8 *src); +bool32 IsWaldaPhraseEmpty(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 63d740949..e2226b1e1 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -6,7 +6,10 @@ extern u8 gUnknown_0203CF20; void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); void sub_81C4F98(u8, void(*)(void)); void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); +void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); u8 sub_81C1B94(void); +void SummaryScreen_SetUnknownTaskId(u8 a0); +void SummaryScreen_DestroyUnknownTask(void); // The Pokemon Summary Screen can operate in different modes. Certain features, // such as move re-ordering, are available in the different modes. @@ -14,7 +17,7 @@ enum PokemonSummaryScreenMode { PSS_MODE_NORMAL, PSS_MODE_UNK1, - PSS_MODE_UNK2, + PSS_MODE_BOX, PSS_MODE_SELECT_MOVE, }; diff --git a/include/rom6.h b/include/rom6.h deleted file mode 100644 index 8b133e56e..000000000 --- a/include/rom6.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef GUARD_ROM6_H -#define GUARD_ROM6_H - -void OpenPokeblockCase(u8, void(void)); -u8 GetLeadMonIndex(void); -u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y); -void sub_813BADC(bool8); -bool8 sub_813B9C0(void); -void UpdateMirageRnd(u16 days); -void UpdateBirchState(u16 days); -void UpdateFrontierManiac(u16 days); -void UpdateFrontierGambler(u16 days); -void SetShoalItemFlag(u16 days); - -bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); -u8 oei_task_add(void); - -#endif //GUARD_ROM6_H diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h index c1bdbdf34..faffd3375 100644 --- a/include/rom_8011DC0.h +++ b/include/rom_8011DC0.h @@ -5,6 +5,7 @@ // Exported RAM declarations +extern u8 gUnknown_02022C2C; extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38; extern u16 gUnknown_02022C3C; extern u8 gUnknown_02022C3E; diff --git a/include/roulette_util.h b/include/roulette_util.h index 964f551fe..7f0b9cbf8 100644 --- a/include/roulette_util.h +++ b/include/roulette_util.h @@ -1,45 +1,44 @@ #ifndef GUARD_ROULETTE_UTIL_H #define GUARD_ROULETTE_UTIL_H -struct InnerStruct203CF18_3 +struct PulseBlendSettings { - u16 unk0; - u16 unk2; - u8 unk4; - u8 unk5; - u8 unk6; - s8 unk7_0:4; - s8 unk7_4:2; - s8 unk7_6:1; + u16 blendColor; + u16 paletteOffset; + u8 numColors; + u8 delay; + u8 numFadeCycles; + s8 maxBlendCoeff:4; + s8 fadeType:2; + s8 restorePaletteOnUnload:1; s8 unk7_7:1; }; -struct InnerStruct203CF18_2 +struct PulseBlendPalette { - u8 unk0; - u8 unk1_0:4; - u8 unk1_4:1; + u8 paletteSelector; + u8 blendCoeff:4; + u8 fadeDirection:1; s8 unk1_5:1; - s8 unk1_6:1; - u32 unk1_7:1; - u8 unk2; - u8 unk3; - struct InnerStruct203CF18_3 unk4; + s8 available:1; + u32 inUse:1; + u8 delayCounter; + u8 fadeCycleCounter; + struct PulseBlendSettings pulseBlendSettings; }; -// structures -struct InnerStruct203CF18 +struct PulseBlend { - u16 unk0; - struct InnerStruct203CF18_2 unk4[16]; + u16 usedPulseBlendPalettes; + struct PulseBlendPalette pulseBlendPalettes[16]; }; -int sub_8151B68(struct InnerStruct203CF18 *, const struct InnerStruct203CF18_3 *); -void sub_8151B3C(struct InnerStruct203CF18 *); -void sub_8151CA8(struct InnerStruct203CF18 *, u16, u8); -void sub_8151C50(struct InnerStruct203CF18 *, u16, u8); -void sub_8151D28(struct InnerStruct203CF18 *, u16, u8); -void sub_8151E50(struct InnerStruct203CF18 *); +int InitPulseBlendPaletteSettings(struct PulseBlend *, const struct PulseBlendSettings *); +void InitPulseBlend(struct PulseBlend *); +void MarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8); +void UnloadUsedPulseBlendPalettes(struct PulseBlend *, u16, u8); +void UnmarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8); +void UpdatePulseBlend(struct PulseBlend *); void sub_8152008(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height); void sub_8152058(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height); diff --git a/include/save_location.h b/include/save_location.h index 71dbd3fd8..c330124ad 100644 --- a/include/save_location.h +++ b/include/save_location.h @@ -1,6 +1,12 @@ #ifndef GUARD_SAVE_LOCATION_H #define GUARD_SAVE_LOCATION_H +// specialSaveWarp flags +#define CONTINUE_GAME_WARP (1 << 0) +#define POKECENTER_SAVEWARP (1 << 1) +#define LOBBY_SAVEWARP (1 << 2) +#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3) + void TrySetMapSaveWarpStatus(void); void sub_81AFDA0(void); void sub_81AFDD0(void); diff --git a/include/secret_base.h b/include/secret_base.h index ac15357e3..524dde473 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -21,7 +21,7 @@ void sub_80EB498(void); void sub_80EB56C(void); void sub_80EB9E0(void); void sub_80EBB28(void); -void sub_80E9668(const struct MapPosition *position, const struct MapEvents *events); +void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events); // SetCurrentSecretBaseFromPosition void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events); diff --git a/include/strings.h b/include/strings.h index a6f61f603..7c6ca14ba 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1801,4 +1801,193 @@ extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_254F47[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_254F0E[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_254ED3[]; +// PC strings +extern const u8 gText_ExitFromBox[]; +extern const u8 gText_WhatDoYouWantToDo[]; +extern const u8 gText_PleasePickATheme[]; +extern const u8 gText_PickTheWallpaper[]; +extern const u8 gText_PkmnIsSelected[]; +extern const u8 gText_JumpToWhichBox[]; +extern const u8 gText_DepositInWhichBox[]; +extern const u8 gText_PkmnWasDeposited[]; +extern const u8 gText_BoxIsFull2[]; +extern const u8 gText_ReleaseThisPokemon[]; +extern const u8 gText_PkmnWasReleased[]; +extern const u8 gText_ByeByePkmn[]; +extern const u8 gText_MarkYourPkmn[]; +extern const u8 gText_ThatsYourLastPkmn[]; +extern const u8 gText_YourPartysFull[]; +extern const u8 gText_YoureHoldingAPkmn[]; +extern const u8 gText_WhichOneWillYouTake[]; +extern const u8 gText_YouCantReleaseAnEgg[]; +extern const u8 gText_ContinueBoxOperations[]; +extern const u8 gText_PkmnCameBack[]; +extern const u8 gText_WasItWorriedAboutYou[]; +extern const u8 gText_FourEllipsesExclamation[]; +extern const u8 gText_PleaseRemoveTheMail[]; +extern const u8 gText_GiveToAPkmn[]; +extern const u8 gText_PlacedItemInBag[]; +extern const u8 gText_BagIsFull2[]; +extern const u8 gText_PutItemInBag[]; +extern const u8 gText_ItemIsNowHeld[]; +extern const u8 gText_ChangedToNewItem[]; +extern const u8 gText_MailCantBeStored[]; +extern const u8 gPCText_Cancel[]; +extern const u8 gPCText_Store[]; +extern const u8 gPCText_Withdraw[]; +extern const u8 gPCText_Move[]; +extern const u8 gPCText_Shift[]; +extern const u8 gPCText_Place[]; +extern const u8 gPCText_Summary[]; +extern const u8 gPCText_Release[]; +extern const u8 gPCText_Mark[]; +extern const u8 gPCText_Jump[]; +extern const u8 gPCText_Wallpaper[]; +extern const u8 gPCText_Name[]; +extern const u8 gPCText_Take[]; +extern const u8 gPCText_Give[]; +extern const u8 gPCText_Give[]; +extern const u8 gPCText_Switch[]; +extern const u8 gPCText_Bag[]; +extern const u8 gPCText_Info[]; +extern const u8 gPCText_Scenery1[]; +extern const u8 gPCText_Scenery2[]; +extern const u8 gPCText_Scenery3[]; +extern const u8 gPCText_Etcetera[]; +extern const u8 gPCText_Friends[]; +extern const u8 gPCText_Forest[]; +extern const u8 gPCText_City[]; +extern const u8 gPCText_Desert[]; +extern const u8 gPCText_Savanna[]; +extern const u8 gPCText_Crag[]; +extern const u8 gPCText_Volcano[]; +extern const u8 gPCText_Snow[]; +extern const u8 gPCText_Cave[]; +extern const u8 gPCText_Beach[]; +extern const u8 gPCText_Seafloor[]; +extern const u8 gPCText_River[]; +extern const u8 gPCText_Sky[]; +extern const u8 gPCText_PolkaDot[]; +extern const u8 gPCText_Pokecenter[]; +extern const u8 gPCText_Machine[]; +extern const u8 gPCText_Simple[]; +extern const u8 gText_PartyFull[]; +extern const u8 gText_Box[]; +extern const u8 gText_JustOnePkmn[]; + +// battle main +extern const u8 gText_LinkStandby3[]; +extern const u8 gText_BattleRecordCouldntBeSaved[]; +extern const u8 gText_Poison[]; +extern const u8 gText_Sleep[]; +extern const u8 gText_Paralysis[]; +extern const u8 gText_Burn[]; +extern const u8 gText_Ice[]; +extern const u8 gText_Confusion[]; +extern const u8 gText_Love[]; + +// battle message +extern const u8 gText_PkmnBoxSomeonesPCFull[]; +extern const u8 gText_PkmnBoxLanettesPCFull[]; +extern const u8 gText_PkmnTransferredSomeonesPC[]; +extern const u8 gText_PkmnTransferredLanettesPC[]; + +// hall of fame +extern const u8 gText_LeagueChamp[]; +extern const u8 gText_HOFNumber[]; +extern const u8 gText_PickNextCancel[]; +extern const u8 gText_PickCancel[]; +extern const u8 gText_UnkCtrlF800Exit[]; +extern const u8 gText_HOFCorrupted[]; +extern const u8 gText_WelcomeToHOF[]; +extern const u8 gText_Number[]; +extern const u8 gText_Level[]; +extern const u8 gText_IDNumber[]; +extern const u8 gText_Name[]; +extern const u8 gText_MainMenuTime[]; + +// daycare +extern const u8 gText_MaleSymbol4[]; +extern const u8 gText_FemaleSymbol4[]; +extern const u8 gText_GenderlessSymbol[]; +extern const u8 gText_NewLine2[]; +extern const u8 gText_Exit4[]; +extern const u8 gText_Lv[]; +extern const u8 gExpandedPlaceholder_Empty[]; +extern const u8 gText_Exit[]; +extern const u8 gDaycareText_GetAlongVeryWell[]; +extern const u8 gDaycareText_GetAlong[]; +extern const u8 gDaycareText_DontLikeOther[]; +extern const u8 gDaycareText_PlayOther[]; + +// party menu +extern const u8 gUnknown_085E9E43[]; +extern const u8 gUnknown_085EA010[]; +extern const u8 gUnknown_085EA02A[]; +extern const u8 gUnknown_085E9E55[]; +extern const u8 gUnknown_085E9E64[]; +extern const u8 gUnknown_085E9E79[]; +extern const u8 gUnknown_085E9E8F[]; +extern const u8 gUnknown_085E9EBC[]; +extern const u8 gUnknown_085E9ED4[]; +extern const u8 gUnknown_085E9EE9[]; +extern const u8 gUnknown_085E9FDB[]; +extern const u8 gUnknown_085EA046[]; +extern const u8 gUnknown_085EA05B[]; +extern const u8 gUnknown_085E9F01[]; +extern const u8 gUnknown_085E9F58[]; +extern const u8 gUnknown_085E9F6F[]; +extern const u8 gUnknown_085E9F81[]; +extern const u8 gUnknown_085E9F90[]; +extern const u8 gUnknown_085E9FA7[]; +extern const u8 gUnknown_085E9FC2[]; +extern const u8 gUnknown_085E9EA6[]; +extern const u8 gUnknown_085E9F16[]; +extern const u8 gUnknown_085E9F2A[]; +extern const u8 gUnknown_085E9F42[]; +extern const u8 gUnknown_085E9FF9[]; +extern const u8 gUnknown_085EA073[]; +extern const u8 gUnknown_085EA091[]; +extern const u8 gUnknown_085EA099[]; +extern const u8 gUnknown_085EA09E[]; +extern const u8 gUnknown_085EA0A4[]; +extern const u8 gUnknown_085EA0AB[]; +extern const u8 gUnknown_085EA0E7[]; +extern const u8 gUnknown_085EA0B1[]; +extern const u8 gUnknown_085EA0B6[]; +extern const u8 gUnknown_085EA0BF[]; +extern const u8 gUnknown_085EA0C5[]; +extern const u8 gUnknown_085EA0CF[]; +extern const u8 gUnknown_085EA0D7[]; +extern const u8 gUnknown_085EA0DC[]; +extern const u8 gText_Take[]; +extern const u8 gText_Mail[]; +extern const u8 gText_Take2[]; +extern const u8 gText_Read2[]; +extern const u8 gText_Cancel2[]; +extern const u8 gText_Shift[]; +extern const u8 gText_SendOut[]; +extern const u8 gText_Enter[]; +extern const u8 gText_NoEntry[]; +extern const u8 gText_Store[]; +extern const u8 gText_Register[]; +extern const u8 gText_Trade4[]; +extern const u8 gText_Summary5[]; +extern const u8 gText_Switch2[]; +extern const u8 gText_Item[]; +extern const u8 gText_NotPkmnOtherTrainerWants[]; +extern const u8 gText_ThatIsntAnEgg[]; +extern const u8 gText_PkmnCantBeTradedNow[]; +extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; +extern const u8 gText_EggCantBeTradedNow[]; +extern const u8 gText_OtherTrainerCantAcceptPkmn[]; +extern const u8 gText_CantTradeWithTrainer[]; + +// trade +extern const u8 gText_XWillBeSentToY[]; +extern const u8 gText_ByeByeVar1[]; +extern const u8 gText_XSentOverY[]; +extern const u8 gText_TakeGoodCareOfX[]; +extern const u8 gText_CommunicationStandby5[]; + #endif //GUARD_STRINGS_H diff --git a/include/text.h b/include/text.h index 69cbb87ed..d9c7a9a2e 100644 --- a/include/text.h +++ b/include/text.h @@ -258,7 +258,7 @@ void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *c u16 RenderText(struct TextPrinter *textPrinter); u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing); u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32); -u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing); +s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing); u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str); u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y); u8 GetKeypadIconTileOffset(u8 keypadIconId); diff --git a/include/trade.h b/include/trade.h index e3c18bffd..95a10cacf 100644 --- a/include/trade.h +++ b/include/trade.h @@ -12,8 +12,12 @@ s32 sub_807A728(void); void sub_80773AC(void); void sub_807AE50(void); -int sub_807A8D0(u32 /* probably wrong */, u16, u16, u8); -int sub_807A7E0(u32 /* probably wrong */, u32 /* probably wrong */, u16, u16, u16, u16, u8); +int sub_807A8D0(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8); +int sub_807A7E0(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6); int sub_807A918(struct Pokemon*, u16); +void sub_807B140(void); +void sub_807B154(void); +void sub_807F19C(void); +void sub_807F1A8(u8, const u8 *, u8); #endif //GUARD_TRADE_H diff --git a/include/trainer_card.h b/include/trainer_card.h index d80a5fa52..1af247d8a 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -38,5 +38,6 @@ void sub_80C3120(struct TrainerCard *arg0, u16 *arg1, u8 gameVersion); void TrainerCard_ShowLinkCard(u8 arg0, void (*callback)(void)); void TrainerCard_GenerateCardForPlayer(struct TrainerCard *); u8 sub_80C4904(u8); +void sub_80C6D80(const u8 *, u8 *, u8, u8, u8); #endif // GUARD_TRAINER_CARD_H diff --git a/include/util.h b/include/util.h index 997c8f713..9d13453c2 100644 --- a/include/util.h +++ b/include/util.h @@ -14,5 +14,6 @@ u16 CalcCRC16(u8 *data, s32 length); u16 CalcCRC16WithTable(u8 *data, u32 length); u32 CalcByteArraySum(const u8* data, u32 length); void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); #endif // GUARD_UTIL_H diff --git a/include/window.h b/include/window.h index 692ca1d81..25573ac3e 100644 --- a/include/window.h +++ b/include/window.h @@ -61,10 +61,10 @@ void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)); bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value); u32 GetWindowAttribute(u8 windowId, u8 attributeId); -u16 AddWindow8Bit(struct WindowTemplate *template); -u16 AddWindow8Bit(struct WindowTemplate *template); +u16 AddWindow8Bit(const struct WindowTemplate *template); +void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue); void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); +void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); void CopyWindowToVram8Bit(u8 windowId, u8 mode); extern struct Window gWindows[]; |