Merge remote-tracking branch 'pret/master' into script_menu

This commit is contained in:
Diegoisawesome
2018-11-06 20:20:56 -06:00
236 changed files with 78716 additions and 84453 deletions

View File

@@ -9,7 +9,8 @@ struct ApprenticeTrainer
u16 otId;
u8 facilityClass;
u16 species[APPRENTICE_SPECIES_COUNT];
u8 rest[14];
u8 id;
u16 easyChatWords[6];
};
extern const struct ApprenticeTrainer gApprentices[];

View File

@@ -561,6 +561,7 @@ struct BattleScripting
u8 field_23;
u8 windowsType; // 0 - normal, 1 - battle arena
u8 multiplayerId;
u8 specialTrainerBattleType;
};
// rom_80A5C6C

View File

@@ -1,6 +1,9 @@
#ifndef GUARD_BATTLE_ANIM_H
#define GUARD_BATTLE_ANIM_H
#include "battle.h"
#include "constants/battle_anim.h"
enum
{
BG_ANIM_SCREEN_SIZE,
@@ -126,4 +129,49 @@ u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
u8 GetBattlerSpriteFinal_Y(u8, u16, u8);
extern const struct OamData gUnknown_08524944;
extern const struct OamData gUnknown_08524A8C;
extern const struct OamData gUnknown_08524904;
extern const struct OamData gUnknown_085249C4;
extern const struct OamData gUnknown_0852490C;
extern const struct OamData gUnknown_08524934;
extern const struct OamData gUnknown_08524974;
extern const struct OamData gUnknown_0852499C;
extern const struct OamData gUnknown_085249CC;
extern const struct OamData gUnknown_08524914;
extern const struct OamData gUnknown_0852496C;
extern const struct OamData gUnknown_08524A34;
extern const struct OamData gUnknown_08524A3C;
extern const struct OamData gUnknown_08524A94;
extern const struct OamData gUnknown_08524954;
extern const struct OamData gUnknown_08524AE4;
extern const struct OamData gUnknown_085249D4;
extern const struct OamData gUnknown_08524A9C;
extern const struct OamData gUnknown_08524ADC;
extern const struct OamData gUnknown_08524B14;
extern const struct OamData gUnknown_08524A54;
extern const struct OamData gUnknown_08524A14;
extern const struct OamData gUnknown_08524A1C;
extern const struct OamData gUnknown_085249BC;
extern const struct OamData gUnknown_08524AF4;
extern const struct OamData gUnknown_085249DC;
extern const struct OamData gUnknown_08524AFC;
extern const struct OamData gUnknown_08524B1C;
extern const struct OamData gUnknown_08524A04;
extern const struct OamData gUnknown_08524A2C;
extern const struct OamData gUnknown_08524AEC;
extern const struct OamData gUnknown_08524964;
extern const struct OamData gUnknown_08524B24;
extern const struct OamData gUnknown_08524A24;
extern const struct OamData gUnknown_08524AC4;
extern const struct OamData gUnknown_08524A84;
extern const struct OamData gUnknown_08524A64;
extern const struct OamData gUnknown_0852491C;
extern const struct OamData gUnknown_0852495C;
extern const struct OamData gUnknown_0852497C;
extern const struct OamData gUnknown_085249F4;
extern const struct OamData gUnknown_0852493C;
extern const struct OamData gUnknown_08524A5C;
extern const struct OamData gUnknown_08524A74;
#endif // GUARD_BATTLE_ANIM_H

View File

@@ -3,7 +3,7 @@
extern u32 gUnknown_0203CD70;
s32 GetTrainerMonCountInBits(u16 tournamentTrainerId);
s32 GetDomeTrainerMonCountInBits(u16 tournamentTrainerId);
s32 TrainerIdToDomeTournamentId(u16 trainerId);
#endif // GUARD_BATTLE_DOME_H

View File

@@ -1,6 +0,0 @@
#ifndef GUARD_BATTLE_FRONTIER_1_H
#define GUARD_BATTLE_FRONTIER_1_H
bool32 sub_8196034(void);
#endif // GUARD_BATTLE_FRONTIER_1_H

View File

@@ -1,18 +0,0 @@
#ifndef GUARD_BATTLE_FRONTIER_2_H
#define GUARD_BATTLE_FRONTIER_2_H
#define FRONTIER_BEFORE_TEXT 0
#define FRONTIER_WIN_TEXT 1
#define FRONTIER_LOSE_TEXT 2
void CopyFrontierTrainerText(u8 whichText, u16 trainerId);
void sub_81A8934(u8);
void sub_81A895C(void);
u16 sub_81A89A0(u8);
void sub_81A8AF8(void);
bool8 InBattlePike(void);
void sub_81AA078(u16*, u8);
void sub_81A4C30(void);
bool8 sub_81A6BF4(void);
#endif // GUARD_BATTLE_FRONTIER_2_H

View File

@@ -3,35 +3,25 @@
struct RSBattleTowerRecord
{
/*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
/*0x01*/ u8 trainerClass;
/*0x00*/ u8 lvlMode; // 0 = level 50, 1 = level 100
/*0x01*/ u8 facilityClass;
/*0x02*/ u16 winStreak;
/*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 trainerId[4];
/*0x10*/ struct {
u16 easyChat[6];
} greeting;
/*0x10*/ u16 greeting[6];
/*0x1C*/ struct UnknownPokemonStruct party[3];
/*0xA0*/ u32 checksum;
/*0xA4*/ u16 unk_11c8;
};
union BattleTowerRecord
{
struct RSBattleTowerRecord ruby_sapphire;
struct EmeraldBattleTowerRecord emerald;
};
#define FRONTIER_TRAINER_NAME_LENGTH 7
struct BattleFrontierTrainer
{
u32 facilityClass;
u8 trainerName[FRONTIER_TRAINER_NAME_LENGTH + 1];
u8 facilityClass;
u8 filler1[3];
u8 trainerName[PLAYER_NAME_LENGTH + 1];
u16 speechBefore[6];
u16 speechWin[6];
u16 speechLose[6];
const u16 *btMonPool;
const u16 *bfMonPool;
};
struct FacilityMon
@@ -43,17 +33,47 @@ struct FacilityMon
u8 nature;
};
extern const u8 gTowerMaleFacilityClasses[30];
extern const u8 gTowerMaleTrainerGfxIds[30];
extern const u8 gTowerFemaleFacilityClasses[20];
extern const u8 gTowerFemaleTrainerGfxIds[20];
extern const struct BattleFrontierTrainer *gFacilityTrainers;
extern const struct FacilityMon *gFacilityTrainerMons;
u16 sub_8164FCC(u8, u8);
void sub_81659DC(struct RSBattleTowerRecord *a0, struct RSBattleTowerRecord *a1);
bool32 sub_816587C(union BattleTowerRecord *, union BattleTowerRecord *);
void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *);
void sub_81628A0(union BattleTowerRecord *);
void sub_8162614(u16 trainerId, u8);
void ConvertBattleFrontierTrainerSpeechToString(const u16 *words);
void GetFrontierTrainerName(u8 *dest, u16 trainerIdx);
void GetEreaderTrainerName(u8 *dest);
void sub_8161F74(void);
u16 sub_8162548(u8 challengeNum, u8 battleNum);
void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId);
void SetEReaderTrainerGfxId(void);
u8 GetBattleFacilityTrainerGfxId(u16 trainerId);
void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm);
u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
u8 GetFrontierOpponentClass(u16 trainerId);
void GetFrontierTrainerName(u8 *dst, u16 trainerId);
void FillFrontierTrainerParty(u8 monsCount);
void FillFrontierTrainersParties(u8 monsCount);
u16 RandomizeFacilityTrainerMonId(u16 trainerId);
void FrontierSpeechToString(const u16 *words);
void DoSpecialTrainerBattle(void);
void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *record);
void CalcRubyBattleTowerChecksum(struct RSBattleTowerRecord *record);
u16 GetCurrentBattleTowerWinStreak(u8 lvlMode, u8 battleMode);
u8 GetEreaderTrainerFrontSpriteId(void);
u8 GetEreaderTrainerClassId(void);
void GetEreaderTrainerName(u8 *dst);
void ValidateEReaderTrainer(void);
void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer);
void CopyEReaderTrainerGreeting(void);
void sub_81653CC(void);
bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct EmeraldBattleTowerRecord *dst);
bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, struct RSBattleTowerRecord *dst);
void CalcApprenticeChecksum(struct Apprentice *apprentice);
void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId);
u8 SetFacilityPtrsGetLevel(void);
u8 GetFrontierEnemyMonLevel(u8 lvlMode);
s32 GetHighestLevelInPlayerParty(void);
u8 sub_81660B8(u8 facilityClass);
bool32 ValidateBattleTowerRecord(u8 recordId); // unused
void sub_8166188(void);
#endif //GUARD_BATTLE_TOWER_H

View File

@@ -7,305 +7,295 @@
// Particle ids.
#define ANIM_SPRITES_START 10000
#define ANIM_TAG_BONE (ANIM_SPRITES_START + 0)
#define ANIM_TAG_SPARK (ANIM_SPRITES_START + 1)
#define ANIM_TAG_PENCIL (ANIM_SPRITES_START + 2)
#define ANIM_TAG_AIR_WAVE (ANIM_SPRITES_START + 3)
#define ANIM_TAG_004 (ANIM_SPRITES_START + 4) // ?
#define ANIM_TAG_SWORD (ANIM_SPRITES_START + 5)
#define ANIM_TAG_SEED (ANIM_SPRITES_START + 6)
#define ANIM_TAG_007 (ANIM_SPRITES_START + 7) // ?
#define ANIM_TAG_008 (ANIM_SPRITES_START + 8) // ?
#define ANIM_TAG_GUST (ANIM_SPRITES_START + 9)
#define ANIM_TAG_ICE_CUBE (ANIM_SPRITES_START + 10)
#define ANIM_TAG_SPARK_2 (ANIM_SPRITES_START + 11)
#define ANIM_TAG_012 (ANIM_SPRITES_START + 12) // ?
#define ANIM_TAG_YELLOW_BALL (ANIM_SPRITES_START + 13)
#define ANIM_TAG_LOCK_ON (ANIM_SPRITES_START + 14)
#define ANIM_TAG_TIED_BAG (ANIM_SPRITES_START + 15)
#define ANIM_TAG_BLACK_SMOKE (ANIM_SPRITES_START + 16)
#define ANIM_TAG_BLACK_BALL (ANIM_SPRITES_START + 17)
#define ANIM_TAG_CONVERSION (ANIM_SPRITES_START + 18)
#define ANIM_TAG_019 (ANIM_SPRITES_START + 19) // ?
#define ANIM_TAG_HORN_HIT (ANIM_SPRITES_START + 20)
#define ANIM_TAG_021 (ANIM_SPRITES_START + 21) // ?
#define ANIM_TAG_022 (ANIM_SPRITES_START + 22) // ?
#define ANIM_TAG_023 (ANIM_SPRITES_START + 23) // ?
#define ANIM_TAG_024 (ANIM_SPRITES_START + 24) // ?
#define ANIM_TAG_025 (ANIM_SPRITES_START + 25) // ?
#define ANIM_TAG_026 (ANIM_SPRITES_START + 26) // ?
#define ANIM_TAG_GLARE (ANIM_SPRITES_START + 27)
#define ANIM_TAG_028 (ANIM_SPRITES_START + 28) // ?
#define ANIM_TAG_SMALL_EMBER (ANIM_SPRITES_START + 29)
#define ANIM_TAG_GRAY_SMOKE (ANIM_SPRITES_START + 30)
#define ANIM_TAG_BLUE_STAR (ANIM_SPRITES_START + 31)
#define ANIM_TAG_032 (ANIM_SPRITES_START + 32) // ?
#define ANIM_TAG_FIRE (ANIM_SPRITES_START + 33)
#define ANIM_TAG_034 (ANIM_SPRITES_START + 34) // ?
#define ANIM_TAG_035 (ANIM_SPRITES_START + 35) // ?
#define ANIM_TAG_036 (ANIM_SPRITES_START + 36) // ?
#define ANIM_TAG_LIGHTNING (ANIM_SPRITES_START + 37)
#define ANIM_TAG_038 (ANIM_SPRITES_START + 38) // ?
#define ANIM_TAG_CLAW_SLASH (ANIM_SPRITES_START + 39)
#define ANIM_TAG_040 (ANIM_SPRITES_START + 40) // ?
#define ANIM_TAG_041 (ANIM_SPRITES_START + 41) // ?
#define ANIM_TAG_042 (ANIM_SPRITES_START + 42) // ?
#define ANIM_TAG_ICE_CHUNK (ANIM_SPRITES_START + 43)
#define ANIM_TAG_044 (ANIM_SPRITES_START + 44) // ?
#define ANIM_TAG_PINK_HEART (ANIM_SPRITES_START + 45) // ?
#define ANIM_TAG_046 (ANIM_SPRITES_START + 46) // ?
#define ANIM_TAG_047 (ANIM_SPRITES_START + 47) // ?
#define ANIM_TAG_048 (ANIM_SPRITES_START + 48) // ?
#define ANIM_TAG_SPARKLE (ANIM_SPRITES_START + 49)
#define ANIM_TAG_050 (ANIM_SPRITES_START + 50) // ?
#define ANIM_TAG_051 (ANIM_SPRITES_START + 51)
#define ANIM_TAG_052 (ANIM_SPRITES_START + 52)
#define ANIM_TAG_053 (ANIM_SPRITES_START + 53)
#define ANIM_TAG_054 (ANIM_SPRITES_START + 54)
#define ANIM_TAG_RED_FIST (ANIM_SPRITES_START + 55)
#define ANIM_TAG_056 (ANIM_SPRITES_START + 56)
#define ANIM_TAG_057 (ANIM_SPRITES_START + 57)
#define ANIM_TAG_058 (ANIM_SPRITES_START + 58)
#define ANIM_TAG_059 (ANIM_SPRITES_START + 59)
#define ANIM_TAG_060 (ANIM_SPRITES_START + 60)
#define ANIM_TAG_061 (ANIM_SPRITES_START + 61)
#define ANIM_TAG_062 (ANIM_SPRITES_START + 62)
#define ANIM_TAG_063 (ANIM_SPRITES_START + 63)
#define ANIM_TAG_064 (ANIM_SPRITES_START + 64)
#define ANIM_TAG_065 (ANIM_SPRITES_START + 65)
#define ANIM_TAG_066 (ANIM_SPRITES_START + 66)
#define ANIM_TAG_067 (ANIM_SPRITES_START + 67)
#define ANIM_TAG_068 (ANIM_SPRITES_START + 68)
#define ANIM_TAG_069 (ANIM_SPRITES_START + 69)
#define ANIM_TAG_070 (ANIM_SPRITES_START + 70)
#define ANIM_TAG_071 (ANIM_SPRITES_START + 71)
#define ANIM_TAG_MUSIC_NOTES2 (ANIM_SPRITES_START + 72)
#define ANIM_TAG_DUCK (ANIM_SPRITES_START + 73)
#define ANIM_TAG_074 (ANIM_SPRITES_START + 74)
#define ANIM_TAG_075 (ANIM_SPRITES_START + 75)
#define ANIM_TAG_076 (ANIM_SPRITES_START + 76)
#define ANIM_TAG_077 (ANIM_SPRITES_START + 77)
#define ANIM_TAG_078 (ANIM_SPRITES_START + 78)
#define ANIM_TAG_079 (ANIM_SPRITES_START + 79)
#define ANIM_TAG_080 (ANIM_SPRITES_START + 80)
#define ANIM_TAG_081 (ANIM_SPRITES_START + 81)
#define ANIM_TAG_082 (ANIM_SPRITES_START + 82)
#define ANIM_TAG_083 (ANIM_SPRITES_START + 83)
#define ANIM_TAG_084 (ANIM_SPRITES_START + 84)
#define ANIM_TAG_085 (ANIM_SPRITES_START + 85)
#define ANIM_TAG_086 (ANIM_SPRITES_START + 86)
#define ANIM_TAG_ANGER (ANIM_SPRITES_START + 87)
#define ANIM_TAG_088 (ANIM_SPRITES_START + 88)
#define ANIM_TAG_089 (ANIM_SPRITES_START + 89)
#define ANIM_TAG_090 (ANIM_SPRITES_START + 90)
#define ANIM_TAG_091 (ANIM_SPRITES_START + 91)
#define ANIM_TAG_092 (ANIM_SPRITES_START + 92)
#define ANIM_TAG_093 (ANIM_SPRITES_START + 93)
#define ANIM_TAG_094 (ANIM_SPRITES_START + 94)
#define ANIM_TAG_095 (ANIM_SPRITES_START + 95)
#define ANIM_TAG_096 (ANIM_SPRITES_START + 96)
#define ANIM_TAG_BENT_SPOON (ANIM_SPRITES_START + 97)
#define ANIM_TAG_098 (ANIM_SPRITES_START + 98)
#define ANIM_TAG_MILK_BOTTLE (ANIM_SPRITES_START + 99)
#define ANIM_TAG_100 (ANIM_SPRITES_START + 100)
#define ANIM_TAG_101 (ANIM_SPRITES_START + 101)
#define ANIM_TAG_102 (ANIM_SPRITES_START + 102)
#define ANIM_TAG_103 (ANIM_SPRITES_START + 103)
#define ANIM_TAG_104 (ANIM_SPRITES_START + 104)
#define ANIM_TAG_105 (ANIM_SPRITES_START + 105)
#define ANIM_TAG_106 (ANIM_SPRITES_START + 106)
#define ANIM_TAG_107 (ANIM_SPRITES_START + 107)
#define ANIM_TAG_108 (ANIM_SPRITES_START + 108)
#define ANIM_TAG_109 (ANIM_SPRITES_START + 109)
#define ANIM_TAG_110 (ANIM_SPRITES_START + 110)
#define ANIM_TAG_111 (ANIM_SPRITES_START + 111)
#define ANIM_TAG_112 (ANIM_SPRITES_START + 112)
#define ANIM_TAG_113 (ANIM_SPRITES_START + 113)
#define ANIM_TAG_114 (ANIM_SPRITES_START + 114)
#define ANIM_TAG_115 (ANIM_SPRITES_START + 115)
#define ANIM_TAG_116 (ANIM_SPRITES_START + 116)
#define ANIM_TAG_117 (ANIM_SPRITES_START + 117)
#define ANIM_TAG_118 (ANIM_SPRITES_START + 118)
#define ANIM_TAG_119 (ANIM_SPRITES_START + 119)
#define ANIM_TAG_ITEM_BAG2 (ANIM_SPRITES_START + 120)
#define ANIM_TAG_121 (ANIM_SPRITES_START + 121)
#define ANIM_TAG_122 (ANIM_SPRITES_START + 122)
#define ANIM_TAG_123 (ANIM_SPRITES_START + 123)
#define ANIM_TAG_124 (ANIM_SPRITES_START + 124)
#define ANIM_TAG_125 (ANIM_SPRITES_START + 125)
#define ANIM_TAG_126 (ANIM_SPRITES_START + 126)
#define ANIM_TAG_127 (ANIM_SPRITES_START + 127)
#define ANIM_TAG_128 (ANIM_SPRITES_START + 128)
#define ANIM_TAG_129 (ANIM_SPRITES_START + 129)
#define ANIM_TAG_130 (ANIM_SPRITES_START + 130)
#define ANIM_TAG_131 (ANIM_SPRITES_START + 131)
#define ANIM_TAG_132 (ANIM_SPRITES_START + 132)
#define ANIM_TAG_133 (ANIM_SPRITES_START + 133)
#define ANIM_TAG_134 (ANIM_SPRITES_START + 134)
#define ANIM_TAG_135 (ANIM_SPRITES_START + 135)
#define ANIM_TAG_136 (ANIM_SPRITES_START + 136)
#define ANIM_TAG_137 (ANIM_SPRITES_START + 137)
#define ANIM_TAG_138 (ANIM_SPRITES_START + 138)
#define ANIM_TAG_139 (ANIM_SPRITES_START + 139)
#define ANIM_TAG_140 (ANIM_SPRITES_START + 140)
#define ANIM_TAG_141 (ANIM_SPRITES_START + 141)
#define ANIM_TAG_142 (ANIM_SPRITES_START + 142)
#define ANIM_TAG_143 (ANIM_SPRITES_START + 143)
#define ANIM_TAG_144 (ANIM_SPRITES_START + 144)
#define ANIM_TAG_145 (ANIM_SPRITES_START + 145)
#define ANIM_TAG_146 (ANIM_SPRITES_START + 146)
#define ANIM_TAG_147 (ANIM_SPRITES_START + 147)
#define ANIM_TAG_148 (ANIM_SPRITES_START + 148)
#define ANIM_TAG_149 (ANIM_SPRITES_START + 149)
#define ANIM_TAG_POISON_BUBBLE (ANIM_SPRITES_START + 150)
#define ANIM_TAG_TOXIC_BUBBLE (ANIM_SPRITES_START + 151)
#define ANIM_TAG_152 (ANIM_SPRITES_START + 152)
#define ANIM_TAG_153 (ANIM_SPRITES_START + 153)
#define ANIM_TAG_154 (ANIM_SPRITES_START + 154)
#define ANIM_TAG_155 (ANIM_SPRITES_START + 155)
#define ANIM_TAG_156 (ANIM_SPRITES_START + 156)
#define ANIM_TAG_157 (ANIM_SPRITES_START + 157)
#define ANIM_TAG_158 (ANIM_SPRITES_START + 158)
#define ANIM_TAG_159 (ANIM_SPRITES_START + 159)
#define ANIM_TAG_160 (ANIM_SPRITES_START + 160)
#define ANIM_TAG_161 (ANIM_SPRITES_START + 161)
#define ANIM_TAG_162 (ANIM_SPRITES_START + 162)
#define ANIM_TAG_163 (ANIM_SPRITES_START + 163)
#define ANIM_TAG_164 (ANIM_SPRITES_START + 164)
#define ANIM_TAG_165 (ANIM_SPRITES_START + 165)
#define ANIM_TAG_166 (ANIM_SPRITES_START + 166)
#define ANIM_TAG_167 (ANIM_SPRITES_START + 167)
#define ANIM_TAG_168 (ANIM_SPRITES_START + 168)
#define ANIM_TAG_169 (ANIM_SPRITES_START + 169)
#define ANIM_TAG_170 (ANIM_SPRITES_START + 170)
#define ANIM_TAG_171 (ANIM_SPRITES_START + 171)
#define ANIM_TAG_172 (ANIM_SPRITES_START + 172)
#define ANIM_TAG_173 (ANIM_SPRITES_START + 173)
#define ANIM_TAG_174 (ANIM_SPRITES_START + 174)
#define ANIM_TAG_175 (ANIM_SPRITES_START + 175)
#define ANIM_TAG_176 (ANIM_SPRITES_START + 176)
#define ANIM_TAG_177 (ANIM_SPRITES_START + 177)
#define ANIM_TAG_178 (ANIM_SPRITES_START + 178)
#define ANIM_TAG_179 (ANIM_SPRITES_START + 179)
#define ANIM_TAG_WEB_THREAD (ANIM_SPRITES_START + 180)
#define ANIM_TAG_SPIDER_WEB (ANIM_SPRITES_START + 181)
#define ANIM_TAG_182 (ANIM_SPRITES_START + 182)
#define ANIM_TAG_183 (ANIM_SPRITES_START + 183)
#define ANIM_TAG_184 (ANIM_SPRITES_START + 184)
#define ANIM_TAG_185 (ANIM_SPRITES_START + 185)
#define ANIM_TAG_186 (ANIM_SPRITES_START + 186)
#define ANIM_TAG_EYE (ANIM_SPRITES_START + 187)
#define ANIM_TAG_188 (ANIM_SPRITES_START + 188)
#define ANIM_TAG_189 (ANIM_SPRITES_START + 189)
#define ANIM_TAG_OPENING_EYE (ANIM_SPRITES_START + 190)
#define ANIM_TAG_191 (ANIM_SPRITES_START + 191)
#define ANIM_TAG_192 (ANIM_SPRITES_START + 192)
#define ANIM_TAG_193 (ANIM_SPRITES_START + 193)
#define ANIM_TAG_MOON (ANIM_SPRITES_START + 194)
#define ANIM_TAG_GREEN_SPARKLE (ANIM_SPRITES_START + 195)
#define ANIM_TAG_196 (ANIM_SPRITES_START + 196)
#define ANIM_TAG_197 (ANIM_SPRITES_START + 197)
#define ANIM_TAG_EXPLOSION (ANIM_SPRITES_START + 198)
#define ANIM_TAG_NAIL (ANIM_SPRITES_START + 199)
#define ANIM_TAG_200 (ANIM_SPRITES_START + 200)
#define ANIM_TAG_201 (ANIM_SPRITES_START + 201)
#define ANIM_TAG_BREAKING_EGG (ANIM_SPRITES_START + 202)
#define ANIM_TAG_203 (ANIM_SPRITES_START + 203)
#define ANIM_TAG_204 (ANIM_SPRITES_START + 204)
#define ANIM_TAG_BELL (ANIM_SPRITES_START + 205)
#define ANIM_TAG_MUSIC_NOTES (ANIM_SPRITES_START + 206)
#define ANIM_TAG_207 (ANIM_SPRITES_START + 207)
#define ANIM_TAG_208 (ANIM_SPRITES_START + 208)
#define ANIM_TAG_209 (ANIM_SPRITES_START + 209)
#define ANIM_TAG_PURPLE_HEART (ANIM_SPRITES_START + 210)
#define ANIM_TAG_211 (ANIM_SPRITES_START + 211)
#define ANIM_TAG_212 (ANIM_SPRITES_START + 212)
#define ANIM_TAG_213 (ANIM_SPRITES_START + 213)
#define ANIM_TAG_214 (ANIM_SPRITES_START + 214)
#define ANIM_TAG_215 (ANIM_SPRITES_START + 215)
#define ANIM_TAG_216 (ANIM_SPRITES_START + 216)
#define ANIM_TAG_217 (ANIM_SPRITES_START + 217)
#define ANIM_TAG_218 (ANIM_SPRITES_START + 218)
#define ANIM_TAG_219 (ANIM_SPRITES_START + 219)
#define ANIM_TAG_ANGEL (ANIM_SPRITES_START + 220)
#define ANIM_TAG_EVIL_ANGEL (ANIM_SPRITES_START + 221)
#define ANIM_TAG_222 (ANIM_SPRITES_START + 222)
#define ANIM_TAG_223 (ANIM_SPRITES_START + 223)
#define ANIM_TAG_ITEM_BAG (ANIM_SPRITES_START + 224)
#define ANIM_TAG_225 (ANIM_SPRITES_START + 225)
#define ANIM_TAG_226 (ANIM_SPRITES_START + 226)
#define ANIM_TAG_227 (ANIM_SPRITES_START + 227)
#define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228)
#define ANIM_TAG_229 (ANIM_SPRITES_START + 229)
#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230)
#define ANIM_TAG_231 (ANIM_SPRITES_START + 231)
#define ANIM_TAG_232 (ANIM_SPRITES_START + 232)
#define ANIM_TAG_233 (ANIM_SPRITES_START + 233)
#define ANIM_TAG_234 (ANIM_SPRITES_START + 234)
#define ANIM_TAG_235 (ANIM_SPRITES_START + 235)
#define ANIM_TAG_236 (ANIM_SPRITES_START + 236)
#define ANIM_TAG_237 (ANIM_SPRITES_START + 237)
#define ANIM_TAG_238 (ANIM_SPRITES_START + 238)
#define ANIM_TAG_239 (ANIM_SPRITES_START + 239)
#define ANIM_TAG_240 (ANIM_SPRITES_START + 240)
#define ANIM_TAG_GREEN_STAR (ANIM_SPRITES_START + 241)
#define ANIM_TAG_242 (ANIM_SPRITES_START + 242)
#define ANIM_TAG_243 (ANIM_SPRITES_START + 243)
#define ANIM_TAG_244 (ANIM_SPRITES_START + 244)
#define ANIM_TAG_245 (ANIM_SPRITES_START + 245)
#define ANIM_TAG_246 (ANIM_SPRITES_START + 246)
#define ANIM_TAG_HAND (ANIM_SPRITES_START + 247)
#define ANIM_TAG_248 (ANIM_SPRITES_START + 248)
#define ANIM_TAG_249 (ANIM_SPRITES_START + 249)
#define ANIM_TAG_X_SIGN (ANIM_SPRITES_START + 250)
#define ANIM_TAG_251 (ANIM_SPRITES_START + 251)
#define ANIM_TAG_252 (ANIM_SPRITES_START + 252)
#define ANIM_TAG_253 (ANIM_SPRITES_START + 253)
#define ANIM_TAG_254 (ANIM_SPRITES_START + 254)
#define ANIM_TAG_255 (ANIM_SPRITES_START + 255)
#define ANIM_TAG_256 (ANIM_SPRITES_START + 256)
#define ANIM_TAG_257 (ANIM_SPRITES_START + 257)
#define ANIM_TAG_MAGNIFYING_GLASS (ANIM_SPRITES_START + 258)
#define ANIM_TAG_259 (ANIM_SPRITES_START + 259)
#define ANIM_TAG_260 (ANIM_SPRITES_START + 260)
#define ANIM_TAG_261 (ANIM_SPRITES_START + 261)
#define ANIM_TAG_262 (ANIM_SPRITES_START + 262)
#define ANIM_TAG_263 (ANIM_SPRITES_START + 263)
#define ANIM_TAG_264 (ANIM_SPRITES_START + 264)
#define ANIM_TAG_265 (ANIM_SPRITES_START + 265)
#define ANIM_TAG_266 (ANIM_SPRITES_START + 266)
#define ANIM_TAG_267 (ANIM_SPRITES_START + 267)
#define ANIM_TAG_268 (ANIM_SPRITES_START + 268)
#define ANIM_TAG_269 (ANIM_SPRITES_START + 269)
#define ANIM_TAG_270 (ANIM_SPRITES_START + 270)
#define ANIM_TAG_271 (ANIM_SPRITES_START + 271)
#define ANIM_TAG_272 (ANIM_SPRITES_START + 272)
#define ANIM_TAG_273 (ANIM_SPRITES_START + 273)
#define ANIM_TAG_274 (ANIM_SPRITES_START + 274)
#define ANIM_TAG_275 (ANIM_SPRITES_START + 275)
#define ANIM_TAG_276 (ANIM_SPRITES_START + 276)
#define ANIM_TAG_277 (ANIM_SPRITES_START + 277)
#define ANIM_TAG_RECYCLE (ANIM_SPRITES_START + 278)
#define ANIM_TAG_279 (ANIM_SPRITES_START + 279)
#define ANIM_TAG_PROTECT (ANIM_SPRITES_START + 280)
#define ANIM_TAG_281 (ANIM_SPRITES_START + 281)
#define ANIM_TAG_282 (ANIM_SPRITES_START + 282)
#define ANIM_TAG_283 (ANIM_SPRITES_START + 283)
#define ANIM_TAG_284 (ANIM_SPRITES_START + 284)
#define ANIM_TAG_285 (ANIM_SPRITES_START + 285)
#define ANIM_TAG_286 (ANIM_SPRITES_START + 286)
#define ANIM_TAG_287 (ANIM_SPRITES_START + 287)
#define ANIM_TAG_288 (ANIM_SPRITES_START + 288)
#define ANIM_TAG_289 (ANIM_SPRITES_START + 289)
#define ANIM_TAG_290 (ANIM_SPRITES_START + 290)
#define ANIM_TAG_291 (ANIM_SPRITES_START + 291)
#define ANIM_TAG_292 (ANIM_SPRITES_START + 292)
#define ANIM_TAG_293 (ANIM_SPRITES_START + 293)
#define ANIM_TAG_294 (ANIM_SPRITES_START + 294)
#define ANIM_TAG_295 (ANIM_SPRITES_START + 295)
#define ANIM_TAG_296 (ANIM_SPRITES_START + 296)
#define ANIM_TAG_297 (ANIM_SPRITES_START + 297)
#define ANIM_TAG_298 (ANIM_SPRITES_START + 298)
#define ANIM_TAG_BONE (ANIM_SPRITES_START + 0)
#define ANIM_TAG_SPARK (ANIM_SPRITES_START + 1)
#define ANIM_TAG_PENCIL (ANIM_SPRITES_START + 2)
#define ANIM_TAG_AIR_WAVE (ANIM_SPRITES_START + 3)
#define ANIM_TAG_UNUSED_ORB (ANIM_SPRITES_START + 4)
#define ANIM_TAG_SWORD (ANIM_SPRITES_START + 5)
#define ANIM_TAG_SEED (ANIM_SPRITES_START + 6)
#define ANIM_TAG_UNUSED_EXPLOSION (ANIM_SPRITES_START + 7)
#define ANIM_TAG_UNUSED_PINK_ORB (ANIM_SPRITES_START + 8)
#define ANIM_TAG_GUST (ANIM_SPRITES_START + 9)
#define ANIM_TAG_ICE_CUBE (ANIM_SPRITES_START + 10)
#define ANIM_TAG_SPARK_2 (ANIM_SPRITES_START + 11)
#define ANIM_TAG_UNUSED_ORANGE (ANIM_SPRITES_START + 12)
#define ANIM_TAG_YELLOW_BALL (ANIM_SPRITES_START + 13)
#define ANIM_TAG_LOCK_ON (ANIM_SPRITES_START + 14)
#define ANIM_TAG_TIED_BAG (ANIM_SPRITES_START + 15)
#define ANIM_TAG_BLACK_SMOKE (ANIM_SPRITES_START + 16)
#define ANIM_TAG_BLACK_BALL (ANIM_SPRITES_START + 17)
#define ANIM_TAG_CONVERSION (ANIM_SPRITES_START + 18)
#define ANIM_TAG_UNUSED_GLASS (ANIM_SPRITES_START + 19)
#define ANIM_TAG_HORN_HIT (ANIM_SPRITES_START + 20)
#define ANIM_TAG_UNUSED_HIT (ANIM_SPRITES_START + 21)
#define ANIM_TAG_UNUSED_HIT_2 (ANIM_SPRITES_START + 22)
#define ANIM_TAG_UNUSED_BLUE_SHARDS (ANIM_SPRITES_START + 23)
#define ANIM_TAG_UNUSED_CLOSING_EYE (ANIM_SPRITES_START + 24)
#define ANIM_TAG_UNUSED_WAVING_HAND (ANIM_SPRITES_START + 25)
#define ANIM_TAG_UNUSED_HIT_DUPLICATE (ANIM_SPRITES_START + 26)
#define ANIM_TAG_LEER (ANIM_SPRITES_START + 27)
#define ANIM_TAG_UNUSED_BLUE_BURST (ANIM_SPRITES_START + 28)
#define ANIM_TAG_SMALL_EMBER (ANIM_SPRITES_START + 29)
#define ANIM_TAG_GRAY_SMOKE (ANIM_SPRITES_START + 30)
#define ANIM_TAG_BLUE_STAR (ANIM_SPRITES_START + 31)
#define ANIM_TAG_UNUSED_BUBBLE_BURST (ANIM_SPRITES_START + 32)
#define ANIM_TAG_FIRE (ANIM_SPRITES_START + 33)
#define ANIM_TAG_UNUSED_SPINNING_FIRE (ANIM_SPRITES_START + 34)
#define ANIM_TAG_FIRE_PLUME (ANIM_SPRITES_START + 35)
#define ANIM_TAG_UNUSED_LIGHTNING (ANIM_SPRITES_START + 36)
#define ANIM_TAG_LIGHTNING (ANIM_SPRITES_START + 37)
#define ANIM_TAG_UNUSED_CLAW_SLASH (ANIM_SPRITES_START + 38)
#define ANIM_TAG_CLAW_SLASH (ANIM_SPRITES_START + 39)
#define ANIM_TAG_UNUSED_SCRATCH (ANIM_SPRITES_START + 40)
#define ANIM_TAG_UNUSED_SCRATCH_2 (ANIM_SPRITES_START + 41)
#define ANIM_TAG_UNUSED_BUBBLE_BURST_2 (ANIM_SPRITES_START + 42)
#define ANIM_TAG_ICE_CHUNK (ANIM_SPRITES_START + 43)
#define ANIM_TAG_UNUSED_GLASS_2 (ANIM_SPRITES_START + 44)
#define ANIM_TAG_UNUSED_PINK_HEART (ANIM_SPRITES_START + 45)
#define ANIM_TAG_UNUSED_SAP_DRIP (ANIM_SPRITES_START + 46)
#define ANIM_TAG_UNUSED_SAP_DRIP_2 (ANIM_SPRITES_START + 47)
#define ANIM_TAG_SPARKLE_1 (ANIM_SPRITES_START + 48)
#define ANIM_TAG_SPARKLE_2 (ANIM_SPRITES_START + 49)
#define ANIM_TAG_HUMANOID_FOOT (ANIM_SPRITES_START + 50)
#define ANIM_TAG_UNUSED_MONSTER_FOOT (ANIM_SPRITES_START + 51)
#define ANIM_TAG_UNUSED_HUMANOID_HAND (ANIM_SPRITES_START + 52)
#define ANIM_TAG_NOISE_LINE (ANIM_SPRITES_START + 53)
#define ANIM_TAG_UNUSED_YELLOW_UNK (ANIM_SPRITES_START + 54)
#define ANIM_TAG_UNUSED_RED_FIST (ANIM_SPRITES_START + 55)
#define ANIM_TAG_SLAM_HIT (ANIM_SPRITES_START + 56)
#define ANIM_TAG_UNUSED_RING (ANIM_SPRITES_START + 57)
#define ANIM_TAG_ROCKS (ANIM_SPRITES_START + 58)
#define ANIM_TAG_UNUSED_Z (ANIM_SPRITES_START + 59)
#define ANIM_TAG_UNUSED_YELLOW_UNK_2 (ANIM_SPRITES_START + 60)
#define ANIM_TAG_UNUSED_AIR_SLASH (ANIM_SPRITES_START + 61)
#define ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS (ANIM_SPRITES_START + 62)
#define ANIM_TAG_LEAF (ANIM_SPRITES_START + 63)
#define ANIM_TAG_FINGER (ANIM_SPRITES_START + 64)
#define ANIM_TAG_POISON_POWDER (ANIM_SPRITES_START + 65)
#define ANIM_TAG_UNUSED_BROWN_TRIANGLE (ANIM_SPRITES_START + 66)
#define ANIM_TAG_SLEEP_POWDER (ANIM_SPRITES_START + 67)
#define ANIM_TAG_STUN_SPORE (ANIM_SPRITES_START + 68)
#define ANIM_TAG_UNUSED_POWDER (ANIM_SPRITES_START + 69)
#define ANIM_TAG_SPARKLE_3 (ANIM_SPRITES_START + 70)
#define ANIM_TAG_SPARKLE_4 (ANIM_SPRITES_START + 71)
#define ANIM_TAG_MUSIC_NOTES (ANIM_SPRITES_START + 72)
#define ANIM_TAG_DUCK (ANIM_SPRITES_START + 73)
#define ANIM_TAG_MUD_SAND (ANIM_SPRITES_START + 74)
#define ANIM_TAG_ALERT (ANIM_SPRITES_START + 75)
#define ANIM_TAG_UNUSED_BLUE_FLAMES (ANIM_SPRITES_START + 76)
#define ANIM_TAG_UNUSED_BLUE_FLAMES_2 (ANIM_SPRITES_START + 77)
#define ANIM_TAG_UNUSED_SHOCK (ANIM_SPRITES_START + 78)
#define ANIM_TAG_SHOCK (ANIM_SPRITES_START + 79)
#define ANIM_TAG_UNUSED_BELL (ANIM_SPRITES_START + 80)
#define ANIM_TAG_UNUSED_PINK_GLOVE (ANIM_SPRITES_START + 81)
#define ANIM_TAG_UNUSED_BLUE_LINES (ANIM_SPRITES_START + 82)
#define ANIM_TAG_UNUSED_IMPACT (ANIM_SPRITES_START + 83)
#define ANIM_TAG_UNUSED_IMPACT_2 (ANIM_SPRITES_START + 84)
#define ANIM_TAG_UNUSED_RETICLE (ANIM_SPRITES_START + 85)
#define ANIM_TAG_BREATH (ANIM_SPRITES_START + 86)
#define ANIM_TAG_ANGER (ANIM_SPRITES_START + 87)
#define ANIM_TAG_UNUSED_SNOWBALL (ANIM_SPRITES_START + 88)
#define ANIM_TAG_UNUSED_VINE (ANIM_SPRITES_START + 89)
#define ANIM_TAG_UNUSED_SWORD (ANIM_SPRITES_START + 90)
#define ANIM_TAG_UNUSED_CLAPPING (ANIM_SPRITES_START + 91)
#define ANIM_TAG_UNUSED_RED_TUBE (ANIM_SPRITES_START + 92)
#define ANIM_TAG_AMNESIA (ANIM_SPRITES_START + 93)
#define ANIM_TAG_UNUSED_STRING (ANIM_SPRITES_START + 94)
#define ANIM_TAG_UNUSED_PENCIL (ANIM_SPRITES_START + 95)
#define ANIM_TAG_UNUSED_PETAL (ANIM_SPRITES_START + 96)
#define ANIM_TAG_BENT_SPOON (ANIM_SPRITES_START + 97)
#define ANIM_TAG_UNUSED_WEB (ANIM_SPRITES_START + 98)
#define ANIM_TAG_MILK_BOTTLE (ANIM_SPRITES_START + 99)
#define ANIM_TAG_COIN (ANIM_SPRITES_START + 100)
#define ANIM_TAG_UNUSED_CRACKED_EGG (ANIM_SPRITES_START + 101)
#define ANIM_TAG_UNUSED_HATCHED_EGG (ANIM_SPRITES_START + 102)
#define ANIM_TAG_UNUSED_FRESH_EGG (ANIM_SPRITES_START + 103)
#define ANIM_TAG_UNUSED_FANGS (ANIM_SPRITES_START + 104)
#define ANIM_TAG_UNUSED_EXPLOSION_2 (ANIM_SPRITES_START + 105)
#define ANIM_TAG_UNUSED_EXPLOSION_3 (ANIM_SPRITES_START + 106)
#define ANIM_TAG_UNUSED_WATER_DROPLET (ANIM_SPRITES_START + 107)
#define ANIM_TAG_UNUSED_WATER_DROPLET_2 (ANIM_SPRITES_START + 108)
#define ANIM_TAG_UNUSED_SEED (ANIM_SPRITES_START + 109)
#define ANIM_TAG_UNUSED_SPROUT (ANIM_SPRITES_START + 110)
#define ANIM_TAG_UNUSED_RED_WAND (ANIM_SPRITES_START + 111)
#define ANIM_TAG_UNUSED_PURPLE_GREEN_UNK (ANIM_SPRITES_START + 112)
#define ANIM_TAG_UNUSED_WATER_COLUMN (ANIM_SPRITES_START + 113)
#define ANIM_TAG_UNUSED_MUD_UNK (ANIM_SPRITES_START + 114)
#define ANIM_TAG_RAIN_DROPS (ANIM_SPRITES_START + 115)
#define ANIM_TAG_UNUSED_FURY_SWIPES (ANIM_SPRITES_START + 116)
#define ANIM_TAG_UNUSED_VINE_2 (ANIM_SPRITES_START + 117)
#define ANIM_TAG_UNUSED_TEETH (ANIM_SPRITES_START + 118)
#define ANIM_TAG_UNUSED_BONE (ANIM_SPRITES_START + 119)
#define ANIM_TAG_UNUSED_WHITE_BAG (ANIM_SPRITES_START + 120)
#define ANIM_TAG_UNUSED_UNKNOWN (ANIM_SPRITES_START + 121)
#define ANIM_TAG_UNUSED_PURPLE_CORAL (ANIM_SPRITES_START + 122)
#define ANIM_TAG_UNUSED_PURPLE_DROPLET (ANIM_SPRITES_START + 123)
#define ANIM_TAG_UNUSED_SHOCK_2 (ANIM_SPRITES_START + 124)
#define ANIM_TAG_UNUSED_CLOSING_EYE_2 (ANIM_SPRITES_START + 125)
#define ANIM_TAG_UNUSED_METAL_BALL (ANIM_SPRITES_START + 126)
#define ANIM_TAG_UNUSED_MONSTER_DOLL (ANIM_SPRITES_START + 127)
#define ANIM_TAG_UNUSED_WHIRLWIND (ANIM_SPRITES_START + 128)
#define ANIM_TAG_UNUSED_WHIRLWIND_2 (ANIM_SPRITES_START + 129)
#define ANIM_TAG_UNUSED_EXPLOSION_4 (ANIM_SPRITES_START + 130)
#define ANIM_TAG_UNUSED_EXPLOSION_5 (ANIM_SPRITES_START + 131)
#define ANIM_TAG_UNUSED_TONGUE (ANIM_SPRITES_START + 132)
#define ANIM_TAG_UNUSED_SMOKE (ANIM_SPRITES_START + 133)
#define ANIM_TAG_UNUSED_SMOKE_2 (ANIM_SPRITES_START + 134)
#define ANIM_TAG_IMPACT (ANIM_SPRITES_START + 135)
#define ANIM_TAG_CIRCLE_IMPACT (ANIM_SPRITES_START + 136)
#define ANIM_TAG_SCRATCH (ANIM_SPRITES_START + 137)
#define ANIM_TAG_CUT (ANIM_SPRITES_START + 138)
#define ANIM_TAG_SHARP_TEETH (ANIM_SPRITES_START + 139)
#define ANIM_TAG_RAINBOW_RINGS (ANIM_SPRITES_START + 140)
#define ANIM_TAG_ICE_CRYSTALS (ANIM_SPRITES_START + 141)
#define ANIM_TAG_ICE_SPIKES (ANIM_SPRITES_START + 142)
#define ANIM_TAG_HANDS_AND_FEET (ANIM_SPRITES_START + 143)
#define ANIM_TAG_MIST_CLOUD (ANIM_SPRITES_START + 144)
#define ANIM_TAG_CLAMP (ANIM_SPRITES_START + 145)
#define ANIM_TAG_BUBBLE (ANIM_SPRITES_START + 146)
#define ANIM_TAG_ORBS (ANIM_SPRITES_START + 147)
#define ANIM_TAG_WATER_IMPACT (ANIM_SPRITES_START + 148)
#define ANIM_TAG_WATER_ORB (ANIM_SPRITES_START + 149)
#define ANIM_TAG_POISON_BUBBLE (ANIM_SPRITES_START + 150)
#define ANIM_TAG_TOXIC_BUBBLE (ANIM_SPRITES_START + 151)
#define ANIM_TAG_SPIKES (ANIM_SPRITES_START + 152)
#define ANIM_TAG_HORN_HIT_2 (ANIM_SPRITES_START + 153)
#define ANIM_TAG_AIR_WAVE_2 (ANIM_SPRITES_START + 154)
#define ANIM_TAG_SMALL_BUBBLES (ANIM_SPRITES_START + 155)
#define ANIM_TAG_ROUND_SHADOW (ANIM_SPRITES_START + 156)
#define ANIM_TAG_SUNLIGHT (ANIM_SPRITES_START + 157)
#define ANIM_TAG_SPORE (ANIM_SPRITES_START + 158)
#define ANIM_TAG_FLOWER (ANIM_SPRITES_START + 159)
#define ANIM_TAG_RAZOR_LEAF (ANIM_SPRITES_START + 160)
#define ANIM_TAG_NEEDLE (ANIM_SPRITES_START + 161)
#define ANIM_TAG_WHIRLWIND_LINES (ANIM_SPRITES_START + 162)
#define ANIM_TAG_GOLD_RING (ANIM_SPRITES_START + 163)
#define ANIM_TAG_PURPLE_RING (ANIM_SPRITES_START + 164)
#define ANIM_TAG_BLUE_RING (ANIM_SPRITES_START + 165)
#define ANIM_TAG_GREEN_LIGHT_WALL (ANIM_SPRITES_START + 166)
#define ANIM_TAG_BLUE_LIGHT_WALL (ANIM_SPRITES_START + 167)
#define ANIM_TAG_RED_LIGHT_WALL (ANIM_SPRITES_START + 168)
#define ANIM_TAG_GRAY_LIGHT_WALL (ANIM_SPRITES_START + 169)
#define ANIM_TAG_ORANGE_LIGHT_WALL (ANIM_SPRITES_START + 170)
#define ANIM_TAG_BLACK_BALL_2 (ANIM_SPRITES_START + 171)
#define ANIM_TAG_PURPLE_GAS_CLOUD (ANIM_SPRITES_START + 172)
#define ANIM_TAG_SPARK_H (ANIM_SPRITES_START + 173)
#define ANIM_TAG_YELLOW_STAR (ANIM_SPRITES_START + 174)
#define ANIM_TAG_LARGE_FRESH_EGG (ANIM_SPRITES_START + 175)
#define ANIM_TAG_SHADOW_BALL (ANIM_SPRITES_START + 176)
#define ANIM_TAG_LICK (ANIM_SPRITES_START + 177)
#define ANIM_TAG_UNUSED_VOID_LINES (ANIM_SPRITES_START + 178)
#define ANIM_TAG_STRING (ANIM_SPRITES_START + 179)
#define ANIM_TAG_WEB_THREAD (ANIM_SPRITES_START + 180)
#define ANIM_TAG_SPIDER_WEB (ANIM_SPRITES_START + 181)
#define ANIM_TAG_UNUSED_LIGHTBULB (ANIM_SPRITES_START + 182)
#define ANIM_TAG_SLASH (ANIM_SPRITES_START + 183)
#define ANIM_TAG_FOCUS_ENERGY (ANIM_SPRITES_START + 184)
#define ANIM_TAG_SPHERE_TO_CUBE (ANIM_SPRITES_START + 185)
#define ANIM_TAG_TENDRILS (ANIM_SPRITES_START + 186)
#define ANIM_TAG_EYE (ANIM_SPRITES_START + 187)
#define ANIM_TAG_WHITE_SHADOW (ANIM_SPRITES_START + 188)
#define ANIM_TAG_TEAL_ALERT (ANIM_SPRITES_START + 189)
#define ANIM_TAG_OPENING_EYE (ANIM_SPRITES_START + 190)
#define ANIM_TAG_ROUND_WHITE_HALO (ANIM_SPRITES_START + 191)
#define ANIM_TAG_FANG_ATTACK (ANIM_SPRITES_START + 192)
#define ANIM_TAG_PURPLE_HAND_OUTLINE (ANIM_SPRITES_START + 193)
#define ANIM_TAG_MOON (ANIM_SPRITES_START + 194)
#define ANIM_TAG_GREEN_SPARKLE (ANIM_SPRITES_START + 195)
#define ANIM_TAG_SPIRAL (ANIM_SPRITES_START + 196)
#define ANIM_TAG_SNORE_Z (ANIM_SPRITES_START + 197)
#define ANIM_TAG_EXPLOSION (ANIM_SPRITES_START + 198)
#define ANIM_TAG_NAIL (ANIM_SPRITES_START + 199)
#define ANIM_TAG_GHOSTLY_SPIRIT (ANIM_SPRITES_START + 200)
#define ANIM_TAG_WARM_ROCK (ANIM_SPRITES_START + 201)
#define ANIM_TAG_BREAKING_EGG (ANIM_SPRITES_START + 202)
#define ANIM_TAG_THIN_RING (ANIM_SPRITES_START + 203)
#define ANIM_TAG_UNUSED_PUNCH_IMPACT (ANIM_SPRITES_START + 204)
#define ANIM_TAG_BELL (ANIM_SPRITES_START + 205)
#define ANIM_TAG_MUSIC_NOTES_2 (ANIM_SPRITES_START + 206)
#define ANIM_TAG_SPEED_DUST (ANIM_SPRITES_START + 207)
#define ANIM_TAG_TORN_METAL (ANIM_SPRITES_START + 208)
#define ANIM_TAG_THOUGHT_BUBBLE (ANIM_SPRITES_START + 209)
#define ANIM_TAG_MAGENTA_HEART (ANIM_SPRITES_START + 210)
#define ANIM_TAG_ELECTRIC_ORBS (ANIM_SPRITES_START + 211)
#define ANIM_TAG_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 212)
#define ANIM_TAG_ELECTRICITY (ANIM_SPRITES_START + 213)
#define ANIM_TAG_FINGER_2 (ANIM_SPRITES_START + 214)
#define ANIM_TAG_MOVEMENT_WAVES (ANIM_SPRITES_START + 215)
#define ANIM_TAG_RED_HEART (ANIM_SPRITES_START + 216)
#define ANIM_TAG_RED_ORB (ANIM_SPRITES_START + 217)
#define ANIM_TAG_EYE_SPARKLE (ANIM_SPRITES_START + 218)
#define ANIM_TAG_PINK_HEART (ANIM_SPRITES_START + 219)
#define ANIM_TAG_ANGEL (ANIM_SPRITES_START + 220)
#define ANIM_TAG_DEVIL (ANIM_SPRITES_START + 221)
#define ANIM_TAG_SWIPE (ANIM_SPRITES_START + 222)
#define ANIM_TAG_ROOTS (ANIM_SPRITES_START + 223)
#define ANIM_TAG_ITEM_BAG (ANIM_SPRITES_START + 224)
#define ANIM_TAG_JAGGED_MUSIC_NOTE (ANIM_SPRITES_START + 225)
#define ANIM_TAG_POKEBALL (ANIM_SPRITES_START + 226)
#define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227)
#define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228)
#define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229)
#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230)
#define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231)
#define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232)
#define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233)
#define ANIM_TAG_ECLIPSING_ORB (ANIM_SPRITES_START + 234)
#define ANIM_TAG_GRAY_ORB (ANIM_SPRITES_START + 235)
#define ANIM_TAG_BLUE_ORB (ANIM_SPRITES_START + 236)
#define ANIM_TAG_RED_ORB_2 (ANIM_SPRITES_START + 237)
#define ANIM_TAG_PINK_PETAL (ANIM_SPRITES_START + 238)
#define ANIM_TAG_PAIN_SPLIT (ANIM_SPRITES_START + 239)
#define ANIM_TAG_CONFETTI (ANIM_SPRITES_START + 240)
#define ANIM_TAG_GREEN_STAR (ANIM_SPRITES_START + 241)
#define ANIM_TAG_PINK_CLOUD (ANIM_SPRITES_START + 242)
#define ANIM_TAG_SWEAT_DROP (ANIM_SPRITES_START + 243)
#define ANIM_TAG_GUARD_RING (ANIM_SPRITES_START + 244)
#define ANIM_TAG_PURPLE_SCRATCH (ANIM_SPRITES_START + 245)
#define ANIM_TAG_PURPLE_SWIPE (ANIM_SPRITES_START + 246)
#define ANIM_TAG_TAG_HAND (ANIM_SPRITES_START + 247)
#define ANIM_TAG_SMALL_RED_EYE (ANIM_SPRITES_START + 248)
#define ANIM_TAG_HOLLOW_ORB (ANIM_SPRITES_START + 249)
#define ANIM_TAG_X_SIGN (ANIM_SPRITES_START + 250)
#define ANIM_TAG_BLUEGREEN_ORB (ANIM_SPRITES_START + 251)
#define ANIM_TAG_PAW_PRINT (ANIM_SPRITES_START + 252)
#define ANIM_TAG_PURPLE_FLAME (ANIM_SPRITES_START + 253)
#define ANIM_TAG_RED_BALL (ANIM_SPRITES_START + 254)
#define ANIM_TAG_SMELLINGSALT_EFFECT (ANIM_SPRITES_START + 255)
#define ANIM_TAG_METEOR (ANIM_SPRITES_START + 256)
#define ANIM_TAG_FLAT_ROCK (ANIM_SPRITES_START + 257)
#define ANIM_TAG_MAGNIFYING_GLASS (ANIM_SPRITES_START + 258)
#define ANIM_TAG_BROWN_ORB (ANIM_SPRITES_START + 259)
#define ANIM_TAG_METAL_SOUND_WAVES (ANIM_SPRITES_START + 260)
#define ANIM_TAG_FLYING_DIRT (ANIM_SPRITES_START + 261)
#define ANIM_TAG_ICICLE_SPEAR (ANIM_SPRITES_START + 262)
#define ANIM_TAG_HAIL (ANIM_SPRITES_START + 263)
#define ANIM_TAG_GLOWY_RED_ORB (ANIM_SPRITES_START + 264)
#define ANIM_TAG_GLOWY_GREEN_ORB (ANIM_SPRITES_START + 265)
#define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266)
#define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267)
#define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268)
#define ANIM_TAG_UNUSED_RED_BRICK (ANIM_SPRITES_START + 269)
#define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270)
#define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271)
#define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272)
#define ANIM_TAG_SWEAT_BEAD (ANIM_SPRITES_START + 273)
#define ANIM_TAG_UNUSED_GEM_1 (ANIM_SPRITES_START + 274)
#define ANIM_TAG_UNUSED_GEM_2 (ANIM_SPRITES_START + 275)
#define ANIM_TAG_UNUSED_GEM_3 (ANIM_SPRITES_START + 276)
#define ANIM_TAG_SLAM_HIT_2 (ANIM_SPRITES_START + 277)
#define ANIM_TAG_RECYCLE (ANIM_SPRITES_START + 278)
#define ANIM_TAG_UNUSED_RED_PARTICLES (ANIM_SPRITES_START + 279)
#define ANIM_TAG_PROTECT (ANIM_SPRITES_START + 280)
#define ANIM_TAG_DIRT_MOUND (ANIM_SPRITES_START + 281)
#define ANIM_TAG_SHOCK_3 (ANIM_SPRITES_START + 282)
#define ANIM_TAG_WEATHER_BALL (ANIM_SPRITES_START + 283)
#define ANIM_TAG_BIRD (ANIM_SPRITES_START + 284)
#define ANIM_TAG_CROSS_IMPACT (ANIM_SPRITES_START + 285)
#define ANIM_TAG_SLASH_2 (ANIM_SPRITES_START + 286)
#define ANIM_TAG_WHIP_HIT (ANIM_SPRITES_START + 287)
#define ANIM_TAG_BLUE_RING_2 (ANIM_SPRITES_START + 288)
// battlers
#define ANIM_ATTACKER 0
@@ -420,4 +410,33 @@
#define ANIM_WEATHER_SANDSTORM 3
#define ANIM_WEATHER_HAIL 4
// Battle mon back animations.
#define BACK_ANIM_NONE 0x00
#define BACK_ANIM_H_SLIDE_QUICK 0x01
#define BACK_ANIM_H_SLIDE 0x02
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
#define BACK_ANIM_SHRINK_GROW_1 0x05
#define BACK_ANIM_GROW_1 0x06
#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
#define BACK_ANIM_VERTICAL_SHAKE 0x09
#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
#define BACK_ANIM_VERTICAL_STRETCH 0x0b
#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
#define BACK_ANIM_GROW_2 0x0d
#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
#define BACK_ANIM_SHRINK_GROW_2 0x14
#define BACK_ANIM_JOLT_RIGHT 0x15
#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
#endif // GUARD_CONSTANTS_BATTLE_ANIM_H

View File

@@ -10,6 +10,10 @@
#define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6
#define TENT_VERDANTURF 2
#define TENT_FALLARBOR 3
#define TENT_SLATEPORT 4
// Battle Frontier lvl modes.
#define FRONTIER_LVL_50 0
#define FRONTIER_LVL_OPEN 1
@@ -21,4 +25,20 @@
#define FRONTIER_MODE_MULTIS 2
#define FRONTIER_MODE_LINK_MULTIS 3
// Special trainer battles.
#define SPECIAL_BATTLE_TOWER 0
#define SPECIAL_BATTLE_SECRET_BASE 1
#define SPECIAL_BATTLE_EREADER 2
#define SPECIAL_BATTLE_DOME 3
#define SPECIAL_BATTLE_PALACE 4
#define SPECIAL_BATTLE_ARENA 5
#define SPECIAL_BATTLE_FACTORY 6
#define SPECIAL_BATTLE_PIKE_SINGLE 7
#define SPECIAL_BATTLE_STEVEN 8
#define SPECIAL_BATTLE_PIKE_DOUBLE 9
#define SPECIAL_BATTLE_PYRAMID 10
// For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special.
#define RESULTS_LINK_CONTEST 7
#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H

View File

@@ -11,9 +11,9 @@
#define sB_ANIM_ARG2 gBattleScripting + 0x11
#define sTRIPLE_KICK_POWER gBattleScripting + 0x12
#define sMOVEEND_STATE gBattleScripting + 0x14
#define sBANK_WITH_ABILITY gBattleScripting + 0x15
#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15
#define sMULTIHIT_EFFECT gBattleScripting + 0x16
#define sBANK gBattleScripting + 0x17
#define sBATTLER gBattleScripting + 0x17
#define sB_ANIM_TURN gBattleScripting + 0x18
#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19
#define sSTATCHANGER gBattleScripting + 0x1A
@@ -26,8 +26,9 @@
#define sRESHOW_MAIN_STATE gBattleScripting + 0x21
#define sRESHOW_HELPER_STATE gBattleScripting + 0x22
#define sFIELD_23 gBattleScripting + 0x23
#define sFIELD_24 gBattleScripting + 0x24
#define sWINDOWS_TYPE gBattleScripting + 0x24
#define sMULTIPLAYER_ID gBattleScripting + 0x25
#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26
#define cEFFECT_CHOOSER gBattleCommunication + 3
#define cMULTISTRING_CHOOSER gBattleCommunication + 5

View File

@@ -4,12 +4,15 @@
#include "constants/opponents.h"
// Special Trainer Ids.
#define TRAINER_FRONTIER_BRAIN 1022
#define TRAINER_PLAYER 1023
#define TRAINER_SECRET_BASE 1024
#define TRAINER_LINK_OPPONENT 2048
#define TRAINER_OPPONENT_C00 3072
#define TRAINER_STEVEN_PARTNER 3075
#define TRAINER_RECORD_MIXING_FRIEND 300
#define TRAINER_RECORD_MIXING_APPRENTICE 400
#define TRAINER_EREADER 500
#define TRAINER_FRONTIER_BRAIN 1022
#define TRAINER_PLAYER 1023
#define TRAINER_SECRET_BASE 1024
#define TRAINER_LINK_OPPONENT 2048
#define TRAINER_OPPONENT_C00 3072
#define TRAINER_STEVEN_PARTNER 3075
#define TRAINER_PIC_HIKER 0
#define TRAINER_PIC_AQUA_GRUNT_M 1

View File

@@ -16,5 +16,6 @@ bool32 sub_81381B0(void);
bool32 sub_81381F8(void);
bool32 CountSSTidalStep(u16 delta);
void sub_813A128(void);
void sub_813A878(u8 a0);
#endif // GUARD_FIELD_SPECIALS_H

31
include/frontier_util.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef GUARD_FRONTIER_UTIL_H
#define GUARD_FRONTIER_UTIL_H
#define FRONTIER_BEFORE_TEXT 0
#define FRONTIER_PLAYER_LOST_TEXT 1
#define FRONTIER_PLAYER_WON_TEXT 2
void CallFrontierUtilFunc(void);
u8 sub_81A3610(void);
void CopyFrontierTrainerText(u8 whichText, u16 trainerId);
void sub_81A3908(void);
u32 GetCurrentFacilityWinStreak(void);
void sub_81A3ACC(void);
u8 GetPlayerSymbolCountForFacility(u8 facility);
void ShowRankingHallRecordsWindow(void);
void ScrollRankingHallRecordsWindow(void);
void ClearRankingHallRecords(void);
u8 GetFrontierBrainTrainerPicIndex(void);
u8 GetFrontierBrainTrainerClass(void);
void CopyFrontierBrainTrainerName(u8 *dst);
bool8 IsFrontierBrainFemale(void);
void SetFrontierBrainEventObjGfx_2(void);
void CreateFrontierBrainPokemon(void);
u16 GetFrontierBrainMonSpecies(u8 monId);
void SetFrontierBrainEventObjGfx(u8 facility);
u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId);
u8 GetFrontierBrainMonNature(u8 monId);
u8 GetFrontierBrainMonEvs(u8 monId, u8 evStatId);
s32 GetFronterBrainSymbol(void);
#endif // GUARD_FRONTIER_UTIL_H

View File

@@ -35,9 +35,9 @@ void BgAffineSet(struct BgAffineSrcData *src, struct BgAffineDstData *dest, s32
void ObjAffineSet(struct ObjAffineSrcData *src, void *dest, s32 count, s32 offset);
void LZ77UnCompWram(const void *src, void *dest);
void LZ77UnCompWram(const u32 *src, void *dest);
void LZ77UnCompVram(const void *src, void *dest);
void LZ77UnCompVram(const u32 *src, void *dest);
void RLUnCompWram(const void *src, void *dest);

View File

@@ -137,6 +137,7 @@ enum LanguageId
#define BAG_BERRIES_COUNT 46
#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
@@ -275,26 +276,6 @@ struct BerryCrush
u32 unk;
};
struct UnknownSaveBlock2Struct
{
u8 field_0;
u8 field_1;
u8 field_2[2];
u8 field_4[8];
u8 field_C[16];
u16 field_1C[6];
u16 field_28[6];
u8 field_34[176];
u8 field_E4;
u8 field_E5;
u8 field_E6;
u8 field_E7;
u8 field_E8;
u8 field_E9;
u8 field_EA;
u8 field_EB;
}; // sizeof = 0xEC
struct ApprenticeMon
{
u16 species;
@@ -308,12 +289,12 @@ struct Apprentice
u8 lvlMode:2; // + 1
u8 field_1;
u8 number;
struct ApprenticeMon monData[3];
struct ApprenticeMon party[3];
u16 easyChatWords[6];
u8 playerId[4];
u8 playerName[PLAYER_NAME_LENGTH];
u8 language;
u32 unk40;
u32 checksum;
};
struct UnknownPokemonStruct
@@ -345,20 +326,33 @@ struct UnknownPokemonStruct
struct EmeraldBattleTowerRecord
{
/*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
/*0x01*/ u8 trainerClass;
/*0x00*/ u8 lvlMode; // 0 = level 50, 1 = level 100
/*0x01*/ u8 facilityClass;
/*0x02*/ u16 winStreak;
/*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 trainerId[4];
/*0x10*/ struct {
u16 easyChat[6];
} greeting;
/*0x1C*/ u8 filler_1c[0x18];
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 speechWon[6];
/*0x28*/ u16 speechLost[6];
/*0x34*/ struct UnknownPokemonStruct party[4];
/*0xE4*/ u8 language;
/*0xE8*/ u32 checksum;
};
struct BattleTowerEReaderTrainer
{
/*0x00*/ u8 unk0;
/*0x01*/ u8 facilityClass;
/*0x02*/ u16 winStreak;
/*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1];
/*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 FrontierMonData
{
u16 moves[4];
@@ -386,18 +380,14 @@ struct BattleDomeTrainer
struct BattleFrontier
{
/*0x64C*/ struct EmeraldBattleTowerRecord battleTower;
/*0x738*/ struct UnknownSaveBlock2Struct field_738[5]; // No idea here, it's probably wrong, no clue.
/*0x64C*/ struct EmeraldBattleTowerRecord towerPlayer;
/*0x738*/ struct EmeraldBattleTowerRecord towerRecords[5]; // From record mixing.
/*0xBD4*/ u16 field_BD4;
/*0xBD6*/ u16 field_BD6;
/*0xBD8*/ u8 field_BD8[11];
/*0xBE3*/ u8 field_BE3[8];
/*0xBD8*/ u8 field_BD8[PLAYER_NAME_LENGTH + 1];
/*0xBE3*/ u8 field_BE0[POKEMON_NAME_LENGTH + 1];
/*0xBEB*/ u8 field_BEB;
/*0xBEC*/ u8 filler_BEC[16];
/*0xBFC*/ u16 ecwords_BFC[6];
/*0xC08*/ u16 ecwords_C08[6];
/*0xC14*/ u16 ecwords_C14[6];
/*0xC20*/ u8 filler_C20[0x88];
/*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer;
/*0xCA8*/ u8 field_CA8;
/*0xCA9*/ u8 lvlMode:2; // 0x1, 0x2 -> 0x3
/*0xCA9*/ u8 field_CA9_a:1; // 0x4
@@ -406,16 +396,16 @@ struct BattleFrontier
/*0xCA9*/ u8 field_CA9_d:1; // 0x20
/*0xCA9*/ u8 field_CA9_e:1; // 0x40
/*0xCA9*/ u8 field_CA9_f:1; // 0x80
/*0xCAA*/ u16 field_CAA[3];
/*0xCAA*/ u16 selectedPartyMons[3];
/*0xCB0*/ u16 field_CB0;
/*0xCB2*/ u16 field_CB2;
/*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor.
/*0xCB4*/ u16 field_CB4[20];
/*0xCDC*/ u32 field_CDC;
/*0xCE0*/ u16 field_CE0[4][2];
/*0xCF0*/ u16 field_CF0[2];
/*0xCF4*/ u16 field_CF4[2];
/*0xCF8*/ u16 field_CF8[2];
/*0xCFC*/ u16 field_CFC[5];
/*0xCE0*/ u16 towerWinStreaks[4][2];
/*0xCF0*/ u16 towerRecordWinStreaks[4][2];
/*0xD00*/ u16 field_D00;
/*0xD02*/ u16 field_D02;
/*0xD04*/ u16 field_D04;
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
/*0xD08*/ u8 field_D08_0:1;
@@ -429,47 +419,38 @@ struct BattleFrontier
/*0xD09*/ u8 filler_D09;
/*0xD0A*/ u8 field_D0A;
/*0xD0B*/ u8 field_D0B;
/*0xD0C*/ u16 field_D0C[2][2];
/*0xD14*/ u16 field_D14[2][2];
/*0xD1C*/ u16 field_D1C[2][2];
/*0xD0C*/ u16 domeWinStreaks[2][2];
/*0xD14*/ u16 domeRecordWinStreaks[2][2];
/*0xD1C*/ u16 domeTotalChampionships[2][2];
/*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT];
/*0xD64*/ u16 domeMonId[DOME_TOURNAMENT_TRAINERS_COUNT][3];
/*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][3];
/*0xD64*/ u16 field_DC4[2];
/*0xDC8*/ u16 field_DC8[2][2];
/*0xDD0*/ u16 field_DD0[2][2];
/*0xDC8*/ u16 palaceWinStreaks[2][2];
/*0xDD0*/ u16 palaceRecordWinStreaks[2][2];
/*0xDD8*/ u16 field_DD8;
/*0xDDA*/ u16 field_DDA[2];
/*0xDDE*/ u16 field_DDE[2];
/*0xDE2*/ u16 field_DE2[2][2];
/*0xDEA*/ u16 field_DEA[2];
/*0xDEE*/ u16 field_DEE;
/*0xDF0*/ u16 field_DF0;
/*0xDF2*/ u16 field_DF2;
/*0xDF4*/ u16 field_DF4;
/*0xDF6*/ u16 field_DF6;
/*0xDF8*/ u16 field_DF8;
/*0xDFA*/ u16 field_DFA;
/*0xDFC*/ u16 field_DFC;
/*0xDFE*/ u16 field_DFE;
/*0xE00*/ u16 field_E00;
/*0xDDA*/ u16 arenaWinStreaks[2];
/*0xDDE*/ u16 arenaRecordStreaks[2];
/*0xDE2*/ u16 factoryWinStreaks[2][2];
/*0xDEA*/ u16 factoryRecordWinStreaks[2][2];
/*0xDF6*/ u16 factoryRentsCount[2][2];
/*0xDFA*/ u16 factoryRecordRentsCount[2][2];
/*0xE02*/ u16 field_E02;
/*0xE04*/ u16 field_E04[2];
/*0xE08*/ u16 field_E08[9];
/*0xE1A*/ u16 field_E1A[2];
/*0xE1E*/ u16 field_E1E[7];
/*0xE04*/ u16 pikeWinStreaks[2];
/*0xE08*/ u16 pikeRecordStreaks[2];
/*0xE0C*/ u16 pikeTotalStreaks[2];
/*0xE10*/ u16 field_E10[5];
/*0xE1A*/ u16 pyramidWinStreaks[2];
/*0xE1E*/ u16 pyramidRecordStreaks[2];
/*0xE1E*/ u16 field_E1F[5];
/*0xE2C*/ struct PyramidBag pyramidBag;
/*0xE58*/ u16 field_E58;
/*0xE6A*/ u16 field_E6A;
/*0xE6C*/ u16 field_E6C;
/*0xE6E*/ u16 field_E6E;
/*0xE70*/ struct Struct_field_E70 field_E70[6];
/*0xEB8*/ u16 frontierBattlePoints;
/*0xEBA*/ u8 field_EBA;
/*0xEBB*/ u8 field_EBB;
/*0xEBC*/ u8 field_EBC;
/*0xEBD*/ u8 field_EBD;
/*0xEBE*/ u8 field_EBE;
/*0xEBF*/ u8 field_EBF;
/*0xEB8*/ u16 battlePoints;
/*0xEBA*/ u16 field_EBA;
/*0xEBC*/ u32 battlesCount;
/*0xEC0*/ u16 field_EC0[16];
/*0xEE0*/ u8 field_EE0;
/*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH + 1];
@@ -502,6 +483,24 @@ struct PlayersApprentice
/*0xB8*/ struct Sav2_B8 field_B8[9];
};
struct RankingHall1P
{
u8 id[4];
u16 winStreak;
u8 name[PLAYER_NAME_LENGTH + 1];
u8 language;
};
struct RankingHall2P
{
u8 id1[4];
u8 id2[4];
u16 winStreak;
u8 name1[PLAYER_NAME_LENGTH + 1];
u8 name2[PLAYER_NAME_LENGTH + 1];
u8 language;
};
struct SaveBlock2
{
/*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
@@ -526,12 +525,13 @@ struct SaveBlock2
/*0xA8*/ u32 field_A8;
/*0xAC*/ u32 encryptionKey;
/*0xB0*/ struct PlayersApprentice playerApprentice;
/*0xDC*/ struct Apprentice apprentices[4];
/*0xDC*/ struct Apprentice apprentices[4]; // From record mixing.
/*0x1EC*/ struct BerryCrush berryCrush;
/*0x1FC*/ struct PokemonJumpResults pokeJump;
/*0x20C*/ struct BerryPickingResults berryPick;
/*0x21C*/ u8 field_21C[1032];
/*0x624*/ u16 contestLinkResults[20]; // 4 positions for 5 categories, possibly a struct or a 2d array
/*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing.
/*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing.
/*0x624*/ u16 contestLinkResults[5][4]; // 4 positions for 5 categories.
/*0x64C*/ struct BattleFrontier frontier;
}; // sizeof=0xF2C

File diff suppressed because it is too large Load Diff

View File

@@ -26,16 +26,16 @@ u16 RunTextPrintersAndIsPrinter0Active(void);
void sub_81973A4(void);
void NewMenuHelpers_DrawDialogueFrame(u8, u8);
void sub_819746C(u8 windowId, bool8 copyToVram);
void NewMenuHelpers_DrawStdWindowFrame(u8, u8);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
void sub_8197434(u8 windowId, bool8 copyToVram);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void DisplayYesNoMenu(void);
u8 GetPlayerTextSpeed(void);
u32 GetPlayerTextSpeed(void);
u8 GetPlayerTextSpeedDelay(void);
void sub_81978B0(u16 arg0);
void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextSubPrinter *, u16));
void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16));
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
void sub_8198070(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
@@ -83,7 +83,7 @@ void sub_819A344(u8 a0, u8 *dest, u8 color);
void RemoveMapNamePopUpWindow(void);
u8 GetMapNamePopUpWindowId(void);
u8 AddMapNamePopUpWindow(void);
void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 letterSpacing, u8 lineSpacing);
void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP);
void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram);

View File

@@ -1,9 +1,9 @@
#ifndef GUARD_NEW_GAME_H
#define GUARD_NEW_GAME_H
void WriteUnalignedWord(u32 var, u8 *dataPtr);
u32 ReadUnalignedWord(u8* dataPtr);
void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom);
void SetTrainerId(u32 trainerId, u8 *dst);
u32 GetTrainerId(u8 *trainerId);
void CopyTrainerId(u8 *dst, u8 *src);
void NewGameInitData(void);
void sub_808447C(void);
void Sav2_ClearSetDefault(void);

View File

@@ -595,8 +595,8 @@ u16 GetBattleBGM(void);
void PlayBattleBGM(void);
void PlayMapChosenOrBattleBGM(u16 songId);
void sub_806E694(u16 songId);
const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon);
const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
bool32 IsHMMove2(u16 move);

View File

@@ -1,35 +1,13 @@
#ifndef GUARD_RECORD_MIXING_H
#define GUARD_RECORD_MIXING_H
// Exported type declarations
struct UnkRecordMixingStruct2a
struct PlayerHallRecords
{
u8 playerId[4];
u16 field_4;
u8 playerName[PLAYER_NAME_LENGTH + 1];
u8 language;
struct RankingHall1P onePlayer[9][2];
struct RankingHall2P twoPlayers[2];
};
struct UnkRecordMixingStruct2b
{
u8 playerId1[4];
u8 playerId2[4];
u16 field_8;
u8 playerName1[PLAYER_NAME_LENGTH + 1];
u8 playerName2[PLAYER_NAME_LENGTH + 1];
u8 language;
};
struct UnkRecordMixingStruct2
{
struct UnkRecordMixingStruct2a field_0[9][2];
struct UnkRecordMixingStruct2b field_120[2];
};
// Exported RAM declarations
// Exported ROM declarations
void sub_80E6BE8(void);
void sub_80E8260(struct UnkRecordMixingStruct2 *arg0);
void GetPlayerHallRecords(struct PlayerHallRecords *dst);
#endif //GUARD_RECORD_MIXING_H

View File

@@ -14,16 +14,16 @@ u8 sub_81850D0(void);
u8 sub_81850DC(u8 *arg0);
void sub_81851A8(u8 *arg0);
bool32 CanCopyRecordedBattleSaveData(void);
u32 MoveRecordedBattleToSaveData(void);
bool32 MoveRecordedBattleToSaveData(void);
void PlayRecordedBattle(void (*CB2_After)(void));
u8 GetRecordedBattleFrontierFacility(void);
u8 sub_8185EAC(void);
u8 GetRecordedBattleFronterBrainSymbol(void);
void RecordedBattle_SaveParties(void);
u8 GetActiveBattlerLinkPlayerGender(void);
void sub_8185F84(void);
void sub_8185F90(u16 arg0);
u8 sub_8185FAC(void);
u8 GetBattleStyleInRecordedBattle(void);
u8 GetBattleSceneInRecordedBattle(void);
u8 GetTextSpeedInRecordedBattle(void);
void RecordedBattle_CopyBattlerMoves(void);
void sub_818603C(u8 arg0);
@@ -31,11 +31,11 @@ u32 GetAiScriptsInRecordedBattle(void);
void sub_8186444(void);
bool8 sub_8186450(void);
void sub_8186468(u8 *dst);
u8 sub_818649C(void);
u8 sub_81864A8(void);
u8 sub_81864B4(void);
u8 sub_81864C0(void);
void sub_81864CC(void);
u16 *sub_81864E0(void);
u8 GetRecordedBattleRecordMixFriendClass(void);
u8 GetRecordedBattleApprenticeId(void);
u8 GetRecordedBattleRecordMixFriendLanguage(void);
u8 GetRecordedBattleApprenticeLanguage(void);
void RecordedBattle_SaveBattleOutcome(void);
u16 *GetRecordedBattleEasyChatSpeech(void);
#endif // GUARD_RECORDED_BATTLE_H

View File

@@ -94,7 +94,7 @@ u16 CalculateChecksum(void *data, u16 size);
void UpdateSaveAddresses(void);
u8 HandleSavingData(u8 saveType);
u8 TrySavingData(u8 saveType);
u8 sub_8153380(void);
bool8 sub_8153380(void);
bool8 sub_81533AC(void);
u8 sub_81533E0(void);
u8 sub_8153408(void);

View File

@@ -6,21 +6,21 @@
struct SpriteSheet
{
const u8 *data; // Raw uncompressed pixel data
const void *data; // Raw uncompressed pixel data
u16 size;
u16 tag;
};
struct CompressedSpriteSheet
{
const u8 *data; // LZ77 compressed pixel data
const u32 *data; // LZ77 compressed pixel data
u16 size; // Uncompressed size of pixel data
u16 tag;
};
struct SpriteFrameImage
{
const u8 *data;
const void *data;
u16 size;
};
@@ -36,7 +36,7 @@ struct SpritePalette
struct CompressedSpritePalette
{
const u8 *data; // LZ77 compressed palette data
const u32 *data; // LZ77 compressed palette data
u16 tag;
};
@@ -103,12 +103,19 @@ struct AffineAnimJumpCmd
u16 target;
};
struct AffineAnimEndCmdAlt
{
s16 type;
u16 val;
};
union AffineAnimCmd
{
s16 type;
struct AffineAnimFrameCmd frame;
struct AffineAnimLoopCmd loop;
struct AffineAnimJumpCmd jump;
struct AffineAnimEndCmdAlt end; // unused in code
};
#define AFFINEANIMCMDTYPE_LOOP 0x7FFD
@@ -123,6 +130,8 @@ union AffineAnimCmd
{.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}
#define AFFINEANIMCMD_END \
{.type = AFFINEANIMCMDTYPE_END}
#define AFFINEANIMCMD_END_ALT(_val) \
{.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}}
struct AffineAnimState
{

View File

@@ -2,9 +2,9 @@
#define GUARD_STARTER_CHOOSE_H
extern const u16 gBirchBagGrassPal[2][16];
extern const u8 gBirchBagTilemap[];
extern const u8 gBirchGrassTilemap[];
extern const u8 gBirchHelpGfx[];
extern const u32 gBirchBagTilemap[];
extern const u32 gBirchGrassTilemap[];
extern const u32 gBirchHelpGfx[];
u16 GetStarterPokemon(u16 chosenStarterId);
void CB2_ChooseStarter(void);

View File

@@ -1138,4 +1138,47 @@ extern const u8 OldaleTown_PokemonCenter_2F_Text_27879F[];
extern const u8 OldaleTown_PokemonCenter_2F_Text_2787D5[];
extern const u8 OldaleTown_PokemonCenter_2F_Text_27889C[];
// Frontier records.
extern const u8 gText_WinStreak[];
extern const u8 gText_Record[];
extern const u8 gText_Current[];
extern const u8 gText_RoomsCleared[];
extern const u8 gText_Prev[];
extern const u8 gText_SingleBattleRoomResults[];
extern const u8 gText_DoubleBattleRoomResults[];
extern const u8 gText_MultiBattleRoomResults[];
extern const u8 gText_LinkMultiBattleRoomResults[];
extern const u8 gText_Lv502[];
extern const u8 gText_OpenLv[];
extern const u8 gText_RentalSwap[];
extern const u8 gText_ClearStreak[];
extern const u8 gText_Total[];
extern const u8 gText_Championships[];
extern const u8 gText_SingleBattleTourneyResults[];
extern const u8 gText_DoubleBattleTourneyResults[];
extern const u8 gText_SingleBattleHallResults[];
extern const u8 gText_DoubleBattleHallResults[];
extern const u8 gText_BattleChoiceResults[];
extern const u8 gText_TimesCleared[];
extern const u8 gText_KOsInARow[];
extern const u8 gText_SetKOTourneyResults[];
extern const u8 gText_TimesVar1[];
extern const u8 gText_BattleSwapSingleResults[];
extern const u8 gText_BattleSwapDoubleResults[];
extern const u8 gText_FloorsCleared[];
extern const u8 gText_BattleQuestResults[];
extern const u8 gText_LinkContestResults[];
extern const u8 gText_4th[];
extern const u8 gText_3rd[];
extern const u8 gText_2nd[];
extern const u8 gText_1st[];
extern const u8 gText_SpaceAndSpace[];
extern const u8 gText_CommaSpace[];
extern const u8 gText_NewLine[];
extern const u8 gText_ScrollTextUp[];
extern const u8 gText_Space2[];
extern const u8 gText_Are[];
extern const u8 gText_Are2[];
extern const u8 gText_123Dot[][3];
#endif //GUARD_STRINGS_H

View File

@@ -114,7 +114,7 @@ enum {
FONTATTR_MAX_LETTER_HEIGHT,
FONTATTR_LETTER_SPACING,
FONTATTR_LINE_SPACING,
FONTATTR_COLOR_LOWNIBBLE, // dunno what this is yet
FONTATTR_UNKNOWN, // dunno what this is yet
FONTATTR_COLOR_FOREGROUND,
FONTATTR_COLOR_BACKGROUND,
FONTATTR_COLOR_SHADOW
@@ -122,23 +122,18 @@ enum {
struct TextPrinterSubStruct
{
u8 font_type:4; // 0x14
u8 font_type_upper:1;
u8 font_type_5:3;
u8 field_1:5;
u8 field_1_upmid:2;
u8 field_1_top:1;
u8 frames_visible_counter;
u8 field_3;
u8 field_4; // 0x18
u8 field_5;
u8 field_6;
u8 active;
u8 glyphId:4; // 0x14
bool8 hasPrintBeenSpedUp:1;
u8 unk:3;
u8 downArrowDelay:5;
u8 downArrowYPosIdx:2;
bool8 hasGlyphIdBeenSet:1;
u8 autoScrollDelay;
};
struct TextSubPrinter // TODO: Better name
struct TextPrinterTemplate
{
const u8* current_text_offset;
const u8* currentChar;
u8 windowId;
u8 fontId;
u8 x;
@@ -147,7 +142,7 @@ struct TextSubPrinter // TODO: Better name
u8 currentY;
u8 letterSpacing;
u8 lineSpacing;
u8 fontColor_l:4; // 0xC
u8 unk:4; // 0xC
u8 fgColor:4;
u8 bgColor:4;
u8 shadowColor:4;
@@ -155,18 +150,18 @@ struct TextSubPrinter // TODO: Better name
struct TextPrinter
{
struct TextSubPrinter subPrinter;
struct TextPrinterTemplate printerTemplate;
void (*callback)(struct TextSubPrinter *, u16); // 0x10
void (*callback)(struct TextPrinterTemplate *, u16); // 0x10
union {
union __attribute__((packed)) {
struct TextPrinterSubStruct sub;
u8 fields[7];
} subUnion;
u8 sub_fields[8];
} sub_union;
u8 active;
u8 state; // 0x1C
u8 text_speed;
u8 textSpeed;
u8 delayCounter;
u8 scrollDistance;
u8 minLetterSpacing; // 0x20
@@ -180,7 +175,7 @@ struct FontInfo
u8 maxLetterHeight;
u8 letterSpacing;
u8 lineSpacing;
u8 fontColor_l:4;
u8 unk:4;
u8 fgColor:4;
u8 bgColor:4;
u8 shadowColor:4;
@@ -190,24 +185,34 @@ extern const struct FontInfo *gFonts;
struct GlyphWidthFunc
{
u32 font_id;
u32 fontId;
u32 (*func)(u16 glyphId, bool32 isJapanese);
};
struct KeypadIcon
{
u16 tile_offset;
u16 tileOffset;
u8 width;
u8 height;
};
typedef struct {
u8 flag_0:1;
u8 flag_1:1;
u8 flag_2:1;
u8 flag_3:1;
bool8 canABSpeedUpPrint:1;
bool8 useAlternateDownArrow:1;
bool8 autoScroll:1;
bool8 forceMidTextSpeed:1;
} TextFlags;
struct Struct_03002F90
{
u8 unk0[0x20];
u8 unk20[0x20];
u8 unk40[0x20];
u8 unk60[0x20];
u8 unk80;
u8 unk81;
};
extern TextFlags gTextFlags;
extern u8 gStringVar1[];
@@ -215,17 +220,13 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
u8 gUnknown_03002F84;
u8 gUnknown_03002F90[0x20];
u8 gUnknown_03002FB0[0x20];
u8 gUnknown_03002FD0[0x20];
u8 gUnknown_03002FF0[0x20];
u8 gGlyphDimensions[0x2];
extern u8 gUnknown_03002F84;
extern struct Struct_03002F90 gUnknown_03002F90;
void SetFontsPointer(const struct FontInfo *fonts);
void DeactivateAllTextPrinters(void);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
bool16 AddTextPrinter(struct TextPrinterTemplate *template, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
void RunTextPrinters(void);
bool16 IsTextPrinterActive(u8 id);
u32 RenderFont(struct TextPrinter *textPrinter);

View File

@@ -51,5 +51,7 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 move);
void UpdateTVScreensOnMap(int, int);
void TV_PrintIntToStringVar(u8 varIdx, int value);
void SaveRecordedItemPurchasesForTVShow(void);
bool8 sub_80EE818(void);
void sub_80EE8C8(u16 winStreak, u8 facilityAndMode);
#endif //GUARD_TV_H

View File

@@ -3,7 +3,7 @@
enum
{
WINDOW_PRIORITY,
WINDOW_BG,
WINDOW_TILEMAP_LEFT,
WINDOW_TILEMAP_TOP,
WINDOW_WIDTH,
@@ -15,7 +15,7 @@ enum
struct WindowTemplate
{
u8 priority;
u8 bg;
u8 tilemapLeft;
u8 tilemapTop;
u8 width;
@@ -55,7 +55,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height);
void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height);
void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);
void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset);
void FillWindowPixelBuffer(u8 windowId, u8 fillValue);
void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue);
void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8));