diff options
Diffstat (limited to 'src/battle')
-rw-r--r-- | src/battle/anim/battle_intro.c | 499 | ||||
-rw-r--r-- | src/battle/battle_anim.c | 1269 | ||||
-rw-r--r-- | src/battle/battle_anim_80A7E7C.c | 78 | ||||
-rw-r--r-- | src/battle/battle_controller_linkopponent.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_linkpartner.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_opponent.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_player.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_safari.c | 4 | ||||
-rw-r--r-- | src/battle/battle_controller_wally.c | 4 | ||||
-rw-r--r-- | src/battle/calculate_base_damage.c | 60 |
10 files changed, 1899 insertions, 31 deletions
diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c new file mode 100644 index 000000000..01f823fa7 --- /dev/null +++ b/src/battle/anim/battle_intro.c @@ -0,0 +1,499 @@ +#include "global.h" +#include "constants/battle_constants.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_anim_80CA710.h" +#include "data2.h" +#include "ewram.h" +#include "main.h" +#include "rom_8077ABC.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" + +extern u16 gBattleTypeFlags; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_WIN0V; +extern u16 gUnknown_02024DE8; +extern u8 gBattleMonForms[]; + +extern void sub_800FE20(struct Sprite *); + +static void BattleIntroTask_ScrollScenery(u8); +static void BattleIntroTask_FadeScenery(u8); +static void BattleIntroTask_ScrollAndFadeScenery(u8); +static void BattleIntroTask_80E4C34(u8); + +static const TaskFunc sBattleIntroTaskFuncs[] = +{ + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollAndFadeScenery, + BattleIntroTask_ScrollAndFadeScenery, +}; + +#define tState data[0] +#define tBgXOffset data[2] +#define tFramesUntilBg1Slide data[3] + +void StartBattleIntroAnim(u8 a) +{ + u8 taskId; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + taskId = CreateTask(BattleIntroTask_80E4C34, 0); + } + else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + { + a = 3; + taskId = CreateTask(BattleIntroTask_FadeScenery, 0); + } + else + { + taskId = CreateTask(sBattleIntroTaskFuncs[a], 0); + } + + gTasks[taskId].tState = 0; + gTasks[taskId].data[1] = a; + gTasks[taskId].tBgXOffset = 0; + gTasks[taskId].tFramesUntilBg1Slide = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; +} + +static void EndBattleIntroTask(u8 taskId) +{ + DestroyTask(taskId); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; +} + +static void BattleIntroTask_ScrollScenery(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 6; + + switch (gTasks[taskId].tState) + { + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + } + else + { + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; + } + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + REG_WININ = 0x3F; + } + break; + case 2: + // Open up the window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].tFramesUntilBg1Slide != 0) + { + gTasks[taskId].tFramesUntilBg1Slide--; + } + else + { + if (gTasks[taskId].data[1] == 1) + { + if (gBattle_BG1_Y != 0xFFB0) + gBattle_BG1_Y -= 2; + } + else + { + if (gBattle_BG1_Y != 0xFFC8) + gBattle_BG1_Y -= 1; + } + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } +} + +static void BattleIntroTask_FadeScenery(u8 taskId) +{ + s32 i; + + switch (gTasks[taskId].data[1]) + { + case 2: + case 4: + gBattle_BG1_X += 8; + break; + case 3: + gBattle_BG1_X += 6; + break; + } + + if (gTasks[taskId].data[1] == 4) + { + gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8; + if (gTasks[taskId].data[6] < 0xB4) + gTasks[taskId].data[6] += 4; + else + gTasks[taskId].data[6] += 6; + if (gTasks[taskId].data[6] == 0x168) + gTasks[taskId].data[6] = 0; + } + + switch (gTasks[taskId].tState) + { + case 0: + gTasks[taskId].data[4] = 16; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + } + else + { + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; + } + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + REG_WININ = 0x3F; + } + break; + case 2: + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gTasks[taskId].data[5] = 1; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].tFramesUntilBg1Slide != 0) + { + gTasks[taskId].tFramesUntilBg1Slide--; + if (gTasks[taskId].tFramesUntilBg1Slide == 0) + { + REG_BLDCNT = 0x1842; + REG_BLDALPHA = 0xF; + REG_BLDY = 0; + } + } + else + { + if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 255; + gTasks[taskId].data[5] = 4; + } + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } + + if (gTasks[taskId].tState != 4) + REG_BLDALPHA = gTasks[taskId].data[4]; +} + +static void BattleIntroTask_ScrollAndFadeScenery(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 8; + + switch (gTasks[taskId].tState) + { + case 0: + REG_BLDCNT = 0x1842; + REG_BLDALPHA = 0x0808; + REG_BLDY = 0; + gTasks[taskId].data[4] = 0x0808; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + } + else + { + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; + } + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + REG_WININ = 0x3F; + } + break; + case 2: + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gTasks[taskId].data[5] = 1; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].tFramesUntilBg1Slide != 0) + { + gTasks[taskId].tFramesUntilBg1Slide--; + } + else + { + if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 255; + gTasks[taskId].data[5] = 6; + } + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } + + if (gTasks[taskId].tState != 4) + REG_BLDALPHA = gTasks[taskId].data[4]; +} + +// Seems to only be used for link battles. +static void BattleIntroTask_80E4C34(u8 taskId) +{ + s32 i; + + if (gTasks[taskId].tState > 1 && gTasks[taskId].data[4] == 0) + { + if ((gBattle_BG1_X & 0x8000) || gBattle_BG1_X < 80) // hmm... + { + gBattle_BG1_X += 3; + gBattle_BG2_X -= 3; + } + else + { + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + CpuFill32(0, (void *)(VRAM + 0xF000), 0x800); + gTasks[taskId].data[4] = 1; + } + } + + switch (gTasks[taskId].tState) + { + case 0: + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; + break; + case 1: + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) + { + gTasks[taskId].tState++; + gSprites[ewram1608A].oam.objMode = 2; + gSprites[ewram1608A].callback = sub_800FE20; + gSprites[ewram1608B].oam.objMode = 2; + gSprites[ewram1608B].callback = sub_800FE20; + REG_WININ = 0x3F; + REG_WINOUT = 0x3F06; + } + break; + case 2: + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; + + // Slide in the top half of the BG from the left + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; + + if (gTasks[taskId].tBgXOffset == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].tState++; + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + EndBattleIntroTask(taskId); + break; + } +} + +void unref_sub_80E4EC8(u8 a, u8 b, u8 c, u8 d) +{ + sub_80E4EF8(a, b, c, d, 0x4000, 30, 1); +} + +// draws some 8x8 tilemap +void sub_80E4EF8(u8 left, u8 top, u8 c, u8 paletteNum, u16 e, u8 bgMap, u8 g) +{ + u32 tileNum; + s32 x; + s32 y; + u8 bank = GetBankByIdentity(c); + + DmaCopy16(3, gUnknown_081FAF4C[c] + gBattleMonForms[bank] * 0x800, (void *)(VRAM + e), 0x800); + tileNum = e / 32 - g * 512; + for (y = top; y < top + 8; y++) + { + for (x = left; x < left + 8; x++) + { + *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12); + tileNum++; + } + } +} + +void unref_sub_80E4FDC(u8 left, u8 top, u8 c, u8 form, u8 paletteNum, u16 f, u8 bgMap, u8 h) +{ + u32 tileNum; + s32 x; + s32 y; + + DmaCopy16(3, gUnknown_081FAF4C[c] + form * 0x800, (void *)(VRAM + f), 0x800); + tileNum = f / 32 - h * 512; + for (y = top; y < top + 8; y++) + { + for (x = left; x < left + 8; x++) + { + *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12); + tileNum++; + } + } +} diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index a0c74be1d..4549d1fcb 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -13,6 +13,7 @@ #include "sprite.h" #include "task.h" #include "ewram.h" +#include "graphics.h" // sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. #define GET_TRUE_SPRITE_INDEX(i) (i - 10000) @@ -20,6 +21,1271 @@ #define ANIM_SPRITE_INDEX_COUNT 8 #define ANIM_ARGS_COUNT 8 +const struct OamData gOamData_837DF24 = +{ + .affineMode = 0, + .objMode = 0, + .shape = 0, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837DF2C = +{ + .affineMode = 0, + .objMode = 0, + .shape = 0, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837DF34 = +{ + .affineMode = 0, + .objMode = 0, + .shape = 0, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837DF3C = +{ + .affineMode = 0, + .objMode = 0, + .shape = 0, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837DF44 = +{ + .affineMode = 0, + .objMode = 0, + .shape = 1, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837DF4C = +{ + .affineMode = 0, + .objMode = 0, + .shape = 1, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837DF54 = +{ + .affineMode = 0, + .objMode = 0, + .shape = 1, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837DF5C = +{ + .affineMode = 0, + .objMode = 0, + .shape = 1, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837DF64 = +{ + .affineMode = 0, + .objMode = 0, + .shape = 2, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837DF6C = +{ + .affineMode = 0, + .objMode = 0, + .shape = 2, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837DF74 = +{ + .affineMode = 0, + .objMode = 0, + .shape = 2, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837DF7C = +{ + .affineMode = 0, + .objMode = 0, + .shape = 2, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837DF84 = +{ + .affineMode = 1, + .objMode = 0, + .shape = 0, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837DF8C = +{ + .affineMode = 1, + .objMode = 0, + .shape = 0, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837DF94 = +{ + .affineMode = 1, + .objMode = 0, + .shape = 0, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837DF9C = +{ + .affineMode = 1, + .objMode = 0, + .shape = 0, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837DFA4 = +{ + .affineMode = 1, + .objMode = 0, + .shape = 1, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837DFAC = +{ + .affineMode = 1, + .objMode = 0, + .shape = 1, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837DFB4 = +{ + .affineMode = 1, + .objMode = 0, + .shape = 1, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837DFBC = +{ + .affineMode = 1, + .objMode = 0, + .shape = 1, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837DFC4 = +{ + .affineMode = 1, + .objMode = 0, + .shape = 2, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837DFCC = +{ + .affineMode = 1, + .objMode = 0, + .shape = 2, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837DFD4 = +{ + .affineMode = 1, + .objMode = 0, + .shape = 2, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837DFDC = +{ + .affineMode = 1, + .objMode = 0, + .shape = 2, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837DFE4 = +{ + .affineMode = 3, + .objMode = 0, + .shape = 0, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837DFEC = +{ + .affineMode = 3, + .objMode = 0, + .shape = 0, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837DFF4 = +{ + .affineMode = 3, + .objMode = 0, + .shape = 0, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837DFFC = +{ + .affineMode = 3, + .objMode = 0, + .shape = 0, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837D004 = +{ + .affineMode = 3, + .objMode = 0, + .shape = 1, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837D00C = +{ + .affineMode = 3, + .objMode = 0, + .shape = 1, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E014 = +{ + .affineMode = 3, + .objMode = 0, + .shape = 1, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E01C = +{ + .affineMode = 3, + .objMode = 0, + .shape = 1, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E024 = +{ + .affineMode = 3, + .objMode = 0, + .shape = 2, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E02C = +{ + .affineMode = 3, + .objMode = 0, + .shape = 2, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E034 = +{ + .affineMode = 3, + .objMode = 0, + .shape = 2, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E03C = +{ + .affineMode = 3, + .objMode = 0, + .shape = 2, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E044 = +{ + .affineMode = 0, + .objMode = 1, + .shape = 0, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E04C = +{ + .affineMode = 0, + .objMode = 1, + .shape = 0, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E054 = +{ + .affineMode = 0, + .objMode = 1, + .shape = 0, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E05C = +{ + .affineMode = 0, + .objMode = 1, + .shape = 0, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E064 = +{ + .affineMode = 0, + .objMode = 1, + .shape = 1, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E06C = +{ + .affineMode = 0, + .objMode = 1, + .shape = 1, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E074 = +{ + .affineMode = 0, + .objMode = 1, + .shape = 1, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E07C = +{ + .affineMode = 0, + .objMode = 1, + .shape = 1, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E084 = +{ + .affineMode = 0, + .objMode = 1, + .shape = 2, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E08C = +{ + .affineMode = 0, + .objMode = 1, + .shape = 2, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E094 = +{ + .affineMode = 0, + .objMode = 1, + .shape = 2, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E09C = +{ + .affineMode = 0, + .objMode = 1, + .shape = 2, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E0A4 = +{ + .affineMode = 1, + .objMode = 1, + .shape = 0, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E0AC = +{ + .affineMode = 1, + .objMode = 1, + .shape = 0, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E0B4 = +{ + .affineMode = 1, + .objMode = 1, + .shape = 0, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E0BC = +{ + .affineMode = 1, + .objMode = 1, + .shape = 0, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E0C4 = +{ + .affineMode = 1, + .objMode = 1, + .shape = 1, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E0CC = +{ + .affineMode = 1, + .objMode = 1, + .shape = 1, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E0D4 = +{ + .affineMode = 1, + .objMode = 1, + .shape = 1, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E0DC = +{ + .affineMode = 1, + .objMode = 1, + .shape = 1, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E0E4 = +{ + .affineMode = 1, + .objMode = 1, + .shape = 2, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E0EC = +{ + .affineMode = 1, + .objMode = 1, + .shape = 2, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E0F4 = +{ + .affineMode = 1, + .objMode = 1, + .shape = 2, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E0FC = +{ + .affineMode = 1, + .objMode = 1, + .shape = 2, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E104 = +{ + .affineMode = 3, + .objMode = 1, + .shape = 0, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E10C = +{ + .affineMode = 3, + .objMode = 1, + .shape = 0, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E114 = +{ + .affineMode = 3, + .objMode = 1, + .shape = 0, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E11C = +{ + .affineMode = 3, + .objMode = 1, + .shape = 0, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E124 = +{ + .affineMode = 3, + .objMode = 1, + .shape = 1, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E12C = +{ + .affineMode = 3, + .objMode = 1, + .shape = 1, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E134 = +{ + .affineMode = 3, + .objMode = 1, + .shape = 1, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E13C = +{ + .affineMode = 3, + .objMode = 1, + .shape = 1, + .size = 3, + .priority = 2, +}; + +const struct OamData gOamData_837E144 = +{ + .affineMode = 3, + .objMode = 1, + .shape = 2, + .size = 0, + .priority = 2, +}; + +const struct OamData gOamData_837E14C = +{ + .affineMode = 3, + .objMode = 1, + .shape = 2, + .size = 1, + .priority = 2, +}; + +const struct OamData gOamData_837E154 = +{ + .affineMode = 3, + .objMode = 1, + .shape = 2, + .size = 2, + .priority = 2, +}; + +const struct OamData gOamData_837E15C = +{ + .affineMode = 3, + .objMode = 1, + .shape = 2, + .size = 3, + .priority = 2, +}; + +const struct CompressedSpriteSheet gBattleAnimPicTable[] = +{ + { (u8 *) &gBattleAnimSpriteSheet_000, 0x200, 10000 }, + { (u8 *) &gBattleAnimSpriteSheet_001, 0x300, 10001 }, + { (u8 *) &gBattleAnimSpriteSheet_002, 0x200, 10002 }, + { (u8 *) &gBattleAnimSpriteSheet_003, 0x100, 10003 }, + { (u8 *) &gBattleAnimSpriteSheet_004, 0x200, 10004 }, + { (u8 *) &gBattleAnimSpriteSheet_005, 0x400, 10005 }, + { (u8 *) &gBattleAnimSpriteSheet_006, 0x180, 10006 }, + { (u8 *) &gBattleAnimSpriteSheet_007, 0x800, 10007 }, + { (u8 *) &gBattleAnimSpriteSheet_008, 0x20, 10008 }, + { (u8 *) &gBattleAnimSpriteSheet_009, 0x400, 10009 }, + { (u8 *) &gBattleAnimSpriteSheet_010, 0x1200, 10010 }, + { (u8 *) &gBattleAnimSpriteSheet_011, 0x180, 10011 }, + { (u8 *) &gBattleAnimSpriteSheet_012, 0x80, 10012 }, + { (u8 *) &gBattleAnimSpriteSheet_013, 0x80, 10013 }, + { (u8 *) &gBattleAnimSpriteSheet_014, 0x280, 10014 }, + { (u8 *) &gBattleAnimSpriteSheet_015, 0x80, 10015 }, + { (u8 *) &gBattleAnimSpriteSheet_016, 0x100, 10016 }, + { (u8 *) &gBattleAnimSpriteSheet_017, 0x20, 10017 }, + { (u8 *) &gBattleAnimSpriteSheet_018, 0x80, 10018 }, + { (u8 *) &gBattleAnimSpriteSheet_019, 0x400, 10019 }, + { (u8 *) &gBattleAnimSpriteSheet_020, 0x200, 10020 }, + { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10021 }, + { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10022 }, + { (u8 *) &gBattleAnimSpriteSheet_023, 0x380, 10023 }, + { (u8 *) &gBattleAnimSpriteSheet_024, 0x300, 10024 }, + { (u8 *) &gBattleAnimSpriteSheet_025, 0xA00, 10025 }, + { (u8 *) &gBattleAnimSpriteSheet_026, 0xA00, 10026 }, + { (u8 *) &gBattleAnimSpriteSheet_027, 0xA00, 10027 }, + { (u8 *) &gBattleAnimSpriteSheet_028, 0xA00, 10028 }, + { (u8 *) &gBattleAnimSpriteSheet_029, 0xA00, 10029 }, + { (u8 *) &gBattleAnimSpriteSheet_030, 0xA00, 10030 }, + { (u8 *) &gBattleAnimSpriteSheet_031, 0xE00, 10031 }, + { (u8 *) &gBattleAnimSpriteSheet_032, 0x380, 10032 }, + { (u8 *) &gBattleAnimSpriteSheet_033, 0x1000, 10033 }, + { (u8 *) &gBattleAnimSpriteSheet_034, 0x800, 10034 }, + { (u8 *) &gBattleAnimSpriteSheet_035, 0xA00, 10035 }, + { (u8 *) &gBattleAnimSpriteSheet_036, 0x800, 10036 }, + { (u8 *) &gBattleAnimSpriteSheet_037, 0xA00, 10037 }, + { (u8 *) &gBattleAnimSpriteSheet_038, 0xA00, 10038 }, + { (u8 *) &gBattleAnimSpriteSheet_039, 0xA00, 10039 }, + { (u8 *) &gBattleAnimSpriteSheet_040, 0xA00, 10040 }, + { (u8 *) &gBattleAnimSpriteSheet_041, 0xA00, 10041 }, + { (u8 *) &gBattleAnimSpriteSheet_042, 0xA00, 10042 }, + { (u8 *) &gBattleAnimSpriteSheet_043, 0xA00, 10043 }, + { (u8 *) &gBattleAnimSpriteSheet_044, 0xA00, 10044 }, + { (u8 *) &gBattleAnimSpriteSheet_045, 0xA00, 10045 }, + { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10046 }, + { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10047 }, + { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10048 }, + { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10049 }, + { (u8 *) &gBattleAnimSpriteSheet_050, 0x200, 10050 }, + { (u8 *) &gBattleAnimSpriteSheet_051, 0x200, 10051 }, + { (u8 *) &gBattleAnimSpriteSheet_052, 0x200, 10052 }, + { (u8 *) &gBattleAnimSpriteSheet_053, 0x800, 10053 }, + { (u8 *) &gBattleAnimSpriteSheet_054, 0x80, 10054 }, + { (u8 *) &gBattleAnimSpriteSheet_055, 0x200, 10055 }, + { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10056 }, + { (u8 *) &gBattleAnimSpriteSheet_057, 0x180, 10057 }, + { (u8 *) &gBattleAnimSpriteSheet_058, 0xC00, 10058 }, + { (u8 *) &gBattleAnimSpriteSheet_059, 0x100, 10059 }, + { (u8 *) &gBattleAnimSpriteSheet_060, 0x40, 10060 }, + { (u8 *) &gBattleAnimSpriteSheet_061, 0x180, 10061 }, + { (u8 *) &gBattleAnimSpriteSheet_062, 0x800, 10062 }, + { (u8 *) &gBattleAnimSpriteSheet_063, 0x480, 10063 }, + { (u8 *) &gBattleAnimSpriteSheet_064, 0x200, 10064 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10065 }, + { (u8 *) &gBattleAnimSpriteSheet_066, 0x100, 10066 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10067 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10068 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10069 }, + { (u8 *) &gBattleAnimSpriteSheet_070, 0x200, 10070 }, + { (u8 *) &gBattleAnimSpriteSheet_071, 0xA00, 10071 }, + { (u8 *) &gBattleAnimSpriteSheet_072, 0x300, 10072 }, + { (u8 *) &gBattleAnimSpriteSheet_073, 0x180, 10073 }, + { (u8 *) &gBattleAnimSpriteSheet_074, 0xA0, 10074 }, + { (u8 *) &gBattleAnimSpriteSheet_075, 0x700, 10075 }, + { (u8 *) &gBattleAnimSpriteSheet_076, 0x400, 10076 }, + { (u8 *) &gBattleAnimSpriteSheet_077, 0x200, 10077 }, + { (u8 *) &gBattleAnimSpriteSheet_078, 0x300, 10078 }, + { (u8 *) &gBattleAnimSpriteSheet_079, 0xC00, 10079 }, + { (u8 *) &gBattleAnimSpriteSheet_080, 0xA00, 10080 }, + { (u8 *) &gBattleAnimSpriteSheet_081, 0x80, 10081 }, + { (u8 *) &gBattleAnimSpriteSheet_082, 0x40, 10082 }, + { (u8 *) &gBattleAnimSpriteSheet_083, 0xE00, 10083 }, + { (u8 *) &gBattleAnimSpriteSheet_084, 0xE00, 10084 }, + { (u8 *) &gBattleAnimSpriteSheet_085, 0x280, 10085 }, + { (u8 *) &gBattleAnimSpriteSheet_086, 0x200, 10086 }, + { (u8 *) &gBattleAnimSpriteSheet_087, 0x80, 10087 }, + { (u8 *) &gBattleAnimSpriteSheet_088, 0xC0, 10088 }, + { (u8 *) &gBattleAnimSpriteSheet_089, 0xA00, 10089 }, + { (u8 *) &gBattleAnimSpriteSheet_090, 0x200, 10090 }, + { (u8 *) &gBattleAnimSpriteSheet_091, 0x180, 10091 }, + { (u8 *) &gBattleAnimSpriteSheet_092, 0x80, 10092 }, + { (u8 *) &gBattleAnimSpriteSheet_093, 0x1000, 10093 }, + { (u8 *) &gBattleAnimSpriteSheet_094, 0xA00, 10094 }, + { (u8 *) &gBattleAnimSpriteSheet_095, 0x180, 10095 }, + { (u8 *) &gBattleAnimSpriteSheet_096, 0x380, 10096 }, + { (u8 *) &gBattleAnimSpriteSheet_097, 0xC00, 10097 }, + { (u8 *) &gBattleAnimSpriteSheet_098, 0x200, 10098 }, + { (u8 *) &gBattleAnimSpriteSheet_099, 0x200, 10099 }, + { (u8 *) &gBattleAnimSpriteSheet_100, 0x200, 10100 }, + { (u8 *) &gBattleAnimSpriteSheet_101, 0x200, 10101 }, + { (u8 *) &gBattleAnimSpriteSheet_102, 0x400, 10102 }, + { (u8 *) &gBattleAnimSpriteSheet_103, 0x80, 10103 }, + { (u8 *) &gBattleAnimSpriteSheet_104, 0x400, 10104 }, + { (u8 *) &gBattleAnimSpriteSheet_105, 0xC00, 10105 }, + { (u8 *) &gBattleAnimSpriteSheet_106, 0x200, 10106 }, + { (u8 *) &gBattleAnimSpriteSheet_107, 0x1000, 10107 }, + { (u8 *) &gBattleAnimSpriteSheet_108, 0xA00, 10108 }, + { (u8 *) &gBattleAnimSpriteSheet_109, 0x20, 10109 }, + { (u8 *) &gBattleAnimSpriteSheet_110, 0xE00, 10110 }, + { (u8 *) &gBattleAnimSpriteSheet_111, 0x80, 10111 }, + { (u8 *) &gBattleAnimSpriteSheet_112, 0xA00, 10112 }, + { (u8 *) &gBattleAnimSpriteSheet_113, 0x400, 10113 }, + { (u8 *) &gBattleAnimSpriteSheet_114, 0x200, 10114 }, + { (u8 *) &gBattleAnimSpriteSheet_115, 0x700, 10115 }, + { (u8 *) &gBattleAnimSpriteSheet_116, 0x800, 10116 }, + { (u8 *) &gBattleAnimSpriteSheet_117, 0xA00, 10117 }, + { (u8 *) &gBattleAnimSpriteSheet_118, 0x600, 10118 }, + { (u8 *) &gBattleAnimSpriteSheet_119, 0x800, 10119 }, + { (u8 *) &gBattleAnimSpriteSheet_120, 0x200, 10120 }, + { (u8 *) &gBattleAnimSpriteSheet_121, 0x40, 10121 }, + { (u8 *) &gBattleAnimSpriteSheet_122, 0x180, 10122 }, + { (u8 *) &gBattleAnimSpriteSheet_123, 0x600, 10123 }, + { (u8 *) &gBattleAnimSpriteSheet_124, 0x600, 10124 }, + { (u8 *) &gBattleAnimSpriteSheet_125, 0x200, 10125 }, + { (u8 *) &gBattleAnimSpriteSheet_126, 0x80, 10126 }, + { (u8 *) &gBattleAnimSpriteSheet_127, 0x200, 10127 }, + { (u8 *) &gBattleAnimSpriteSheet_128, 0x800, 10128 }, + { (u8 *) &gBattleAnimSpriteSheet_129, 0x80, 10129 }, + { (u8 *) &gBattleAnimSpriteSheet_130, 0xA00, 10130 }, + { (u8 *) &gBattleAnimSpriteSheet_131, 0x280, 10131 }, + { (u8 *) &gBattleAnimSpriteSheet_132, 0x280, 10132 }, + { (u8 *) &gBattleAnimSpriteSheet_133, 0x100, 10133 }, + { (u8 *) &gBattleAnimSpriteSheet_134, 0x200, 10134 }, + { (u8 *) &gBattleAnimSpriteSheet_135, 0x200, 10135 }, + { (u8 *) &gBattleAnimSpriteSheet_136, 0x20, 10136 }, + { (u8 *) &gBattleAnimSpriteSheet_137, 0xA00, 10137 }, + { (u8 *) &gBattleAnimSpriteSheet_138, 0x800, 10138 }, + { (u8 *) &gBattleAnimSpriteSheet_139, 0x800, 10139 }, + { (u8 *) &gBattleAnimSpriteSheet_140, 0xC0, 10140 }, + { (u8 *) &gBattleAnimSpriteSheet_141, 0x1C0, 10141 }, + { (u8 *) &gBattleAnimSpriteSheet_142, 0x100, 10142 }, + { (u8 *) &gBattleAnimSpriteSheet_143, 0x800, 10143 }, + { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10144 }, + { (u8 *) &gBattleAnimSpriteSheet_145, 0x800, 10145 }, + { (u8 *) &gBattleAnimSpriteSheet_146, 0x180, 10146 }, + { (u8 *) &gBattleAnimSpriteSheet_147, 0x180, 10147 }, + { (u8 *) &gBattleAnimSpriteSheet_148, 0x200, 10148 }, + { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10149 }, + { (u8 *) &gBattleAnimSpriteSheet_150, 0x180, 10150 }, + { (u8 *) &gBattleAnimSpriteSheet_151, 0x400, 10151 }, + { (u8 *) &gBattleAnimSpriteSheet_152, 0x80, 10152 }, + { (u8 *) &gBattleAnimSpriteSheet_153, 0x100, 10153 }, + { (u8 *) &gBattleAnimSpriteSheet_154, 0x100, 10154 }, + { (u8 *) &gBattleAnimSpriteSheet_155, 0x140, 10155 }, + { (u8 *) &gBattleAnimSpriteSheet_156, 0x800, 10156 }, + { (u8 *) &gBattleAnimSpriteSheet_157, 0x200, 10157 }, + { (u8 *) &gBattleAnimSpriteSheet_158, 0x100, 10158 }, + { (u8 *) &gBattleAnimSpriteSheet_159, 0xA0, 10159 }, + { (u8 *) &gBattleAnimSpriteSheet_160, 0x100, 10160 }, + { (u8 *) &gBattleAnimSpriteSheet_161, 0x80, 10161 }, + { (u8 *) &gBattleAnimSpriteSheet_162, 0x300, 10162 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10163 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10164 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10165 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10166 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10167 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10168 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10169 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10170 }, + { (u8 *) &gBattleAnimSpriteSheet_171, 0x80, 10171 }, + { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10172 }, + { (u8 *) &gBattleAnimSpriteSheet_173, 0x200, 10173 }, + { (u8 *) &gBattleAnimSpriteSheet_174, 0x200, 10174 }, + { (u8 *) &gBattleAnimSpriteSheet_175, 0x80, 10175 }, + { (u8 *) &gBattleAnimSpriteSheet_176, 0x200, 10176 }, + { (u8 *) &gBattleAnimSpriteSheet_177, 0x500, 10177 }, + { (u8 *) &gBattleAnimSpriteSheet_178, 0x800, 10178 }, + { (u8 *) &gBattleAnimSpriteSheet_179, 0x400, 10179 }, + { (u8 *) &gBattleAnimSpriteSheet_180, 0x20, 10180 }, + { (u8 *) &gBattleAnimSpriteSheet_181, 0x800, 10181 }, + { (u8 *) &gBattleAnimSpriteSheet_182, 0x100, 10182 }, + { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10183 }, + { (u8 *) &gBattleAnimSpriteSheet_184, 0x400, 10184 }, + { (u8 *) &gBattleAnimSpriteSheet_185, 0xA00, 10185 }, + { (u8 *) &gBattleAnimSpriteSheet_186, 0x1000, 10186 }, + { (u8 *) &gBattleAnimSpriteSheet_187, 0x800, 10187 }, + { (u8 *) &gBattleAnimSpriteSheet_188, 0x400, 10188 }, + { (u8 *) &gBattleAnimSpriteSheet_189, 0x200, 10189 }, + { (u8 *) &gBattleAnimSpriteSheet_190, 0x800, 10190 }, + { (u8 *) &gBattleAnimSpriteSheet_191, 0x800, 10191 }, + { (u8 *) &gBattleAnimSpriteSheet_192, 0x800, 10192 }, + { (u8 *) &gBattleAnimSpriteSheet_193, 0x200, 10193 }, + { (u8 *) &gBattleAnimSpriteSheet_194, 0x800, 10194 }, + { (u8 *) &gBattleAnimSpriteSheet_195, 0x200, 10195 }, + { (u8 *) &gBattleAnimSpriteSheet_196, 0x800, 10196 }, + { (u8 *) &gBattleAnimSpriteSheet_197, 0x200, 10197 }, + { (u8 *) &gBattleAnimSpriteSheet_198, 0x800, 10198 }, + { (u8 *) &gBattleAnimSpriteSheet_199, 0x400, 10199 }, + { (u8 *) &gBattleAnimSpriteSheet_200, 0x200, 10200 }, + { (u8 *) &gBattleAnimSpriteSheet_201, 0xA80, 10201 }, + { (u8 *) &gBattleAnimSpriteSheet_202, 0x600, 10202 }, + { (u8 *) &gBattleAnimSpriteSheet_203, 0x800, 10203 }, + { (u8 *) &gBattleAnimSpriteSheet_204, 0x200, 10204 }, + { (u8 *) &gBattleAnimSpriteSheet_205, 0x600, 10205 }, + { (u8 *) &gBattleAnimSpriteSheet_206, 0x800, 10206 }, + { (u8 *) &gBattleAnimSpriteSheet_207, 0x180, 10207 }, + { (u8 *) &gBattleAnimSpriteSheet_208, 0x800, 10208 }, + { (u8 *) &gBattleAnimSpriteSheet_209, 0x800, 10209 }, + { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10210 }, + { (u8 *) &gBattleAnimSpriteSheet_211, 0x80, 10211 }, + { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10212 }, + { (u8 *) &gBattleAnimSpriteSheet_213, 0x800, 10213 }, + { (u8 *) &gBattleAnimSpriteSheet_214, 0x600, 10214 }, + { (u8 *) &gBattleAnimSpriteSheet_215, 0x600, 10215 }, + { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10216 }, + { (u8 *) &gBattleAnimSpriteSheet_217, 0x80, 10217 }, + { (u8 *) &gBattleAnimSpriteSheet_218, 0x180, 10218 }, + { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10219 }, + { (u8 *) &gBattleAnimSpriteSheet_220, 0x200, 10220 }, + { (u8 *) &gBattleAnimSpriteSheet_221, 0x400, 10221 }, + { (u8 *) &gBattleAnimSpriteSheet_222, 0xA00, 10222 }, + { (u8 *) &gBattleAnimSpriteSheet_223, 0x800, 10223 }, + { (u8 *) &gBattleAnimSpriteSheet_224, 0x200, 10224 }, + { (u8 *) &gBattleAnimSpriteSheet_225, 0x400, 10225 }, + { (u8 *) &gBattleAnimSpriteSheet_226, 0x80, 10226 }, + { (u8 *) &gBattleAnimSpriteSheet_227, 0x800, 10227 }, + { (u8 *) &gBattleAnimSpriteSheet_228, 0x200, 10228 }, + { (u8 *) &gBattleAnimSpriteSheet_229, 0x300, 10229 }, + { (u8 *) &gBattleAnimSpriteSheet_230, 0x800, 10230 }, + { (u8 *) &gBattleAnimSpriteSheet_231, 0x380, 10231 }, + { (u8 *) &gBattleAnimSpriteSheet_232, 0x800, 10232 }, + { (u8 *) &gBattleAnimSpriteSheet_233, 0xC0, 10233 }, + { (u8 *) &gBattleAnimSpriteSheet_234, 0x800, 10234 }, + { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10235 }, + { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10236 }, + { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10237 }, + { (u8 *) &gBattleAnimSpriteSheet_238, 0x80, 10238 }, + { (u8 *) &gBattleAnimSpriteSheet_239, 0x180, 10239 }, + { (u8 *) &gBattleAnimSpriteSheet_240, 0x180, 10240 }, + { (u8 *) &gBattleAnimSpriteSheet_241, 0x200, 10241 }, + { (u8 *) &gBattleAnimSpriteSheet_242, 0x200, 10242 }, + { (u8 *) &gBattleAnimSpriteSheet_243, 0x20, 10243 }, + { (u8 *) &gBattleAnimSpriteSheet_244, 0x400, 10244 }, + { (u8 *) &gBattleAnimSpriteSheet_245, 0x600, 10245 }, + { (u8 *) &gBattleAnimSpriteSheet_246, 0x1000, 10246 }, + { (u8 *) &gBattleAnimSpriteSheet_247, 0x400, 10247 }, + { (u8 *) &gBattleAnimSpriteSheet_248, 0x20, 10248 }, + { (u8 *) &gBattleAnimSpriteSheet_249, 0x80, 10249 }, + { (u8 *) &gBattleAnimSpriteSheet_250, 0x800, 10250 }, + { (u8 *) &gBattleAnimSpriteSheet_251, 0x80, 10251 }, + { (u8 *) &gBattleAnimSpriteSheet_252, 0x200, 10252 }, + { (u8 *) &gBattleAnimSpriteSheet_253, 0x400, 10253 }, + { (u8 *) &gBattleAnimSpriteSheet_254, 0x200, 10254 }, + { (u8 *) &gBattleAnimSpriteSheet_255, 0x200, 10255 }, + { (u8 *) &gBattleAnimSpriteSheet_256, 0x800, 10256 }, + { (u8 *) &gBattleAnimSpriteSheet_257, 0x280, 10257 }, + { (u8 *) &gBattleAnimSpriteSheet_258, 0x200, 10258 }, + { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10259 }, + { (u8 *) &gBattleAnimSpriteSheet_260, 0x400, 10260 }, + { (u8 *) &gBattleAnimSpriteSheet_261, 0x200, 10261 }, + { (u8 *) &gBattleAnimSpriteSheet_262, 0x200, 10262 }, + { (u8 *) &gBattleAnimSpriteSheet_263, 0x80, 10263 }, + { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10264 }, + { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10265 }, + { (u8 *) &gBattleAnimSpriteSheet_266, 0x80, 10266 }, + { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10267 }, + { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10268 }, + { (u8 *) &gBattleAnimSpriteSheet_269, 0x80, 10269 }, + { (u8 *) &gBattleAnimSpriteSheet_270, 0x400, 10270 }, + { (u8 *) &gBattleAnimSpriteSheet_271, 0x80, 10271 }, + { (u8 *) &gBattleAnimSpriteSheet_272, 0x800, 10272 }, + { (u8 *) &gBattleAnimSpriteSheet_273, 0x20, 10273 }, + { (u8 *) &gBattleAnimSpriteSheet_274, 0x800, 10274 }, + { (u8 *) &gBattleAnimSpriteSheet_275, 0x800, 10275 }, + { (u8 *) &gBattleAnimSpriteSheet_276, 0x800, 10276 }, + { (u8 *) &gBattleAnimSpriteSheet_277, 0x1000, 10277 }, + { (u8 *) &gBattleAnimSpriteSheet_278, 0x800, 10278 }, + { (u8 *) &gBattleAnimSpriteSheet_279, 0xA0, 10279 }, + { (u8 *) &gBattleAnimSpriteSheet_280, 0x800, 10280 }, + { (u8 *) &gBattleAnimSpriteSheet_281, 0x200, 10281 }, + { (u8 *) &gBattleAnimSpriteSheet_282, 0x600, 10282 }, + { (u8 *) &gBattleAnimSpriteSheet_283, 0x200, 10283 }, + { (u8 *) &gBattleAnimSpriteSheet_284, 0x800, 10284 }, + { (u8 *) &gBattleAnimSpriteSheet_285, 0x200, 10285 }, + { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10286 }, + { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10287 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10288 }, +}; + +const struct CompressedSpritePalette gBattleAnimPaletteTable[] = +{ + { (u8 *) &gBattleAnimSpritePalette_000, 10000 }, + { (u8 *) &gBattleAnimSpritePalette_001, 10001 }, + { (u8 *) &gBattleAnimSpritePalette_002, 10002 }, + { (u8 *) &gBattleAnimSpritePalette_003, 10003 }, + { (u8 *) &gBattleAnimSpritePalette_004, 10004 }, + { (u8 *) &gBattleAnimSpritePalette_005, 10005 }, + { (u8 *) &gBattleAnimSpritePalette_006, 10006 }, + { (u8 *) &gBattleAnimSpritePalette_007, 10007 }, + { (u8 *) &gBattleAnimSpritePalette_008, 10008 }, + { (u8 *) &gBattleAnimSpritePalette_009, 10009 }, + { (u8 *) &gBattleAnimSpritePalette_010, 10010 }, + { (u8 *) &gBattleAnimSpritePalette_011, 10011 }, + { (u8 *) &gBattleAnimSpritePalette_012, 10012 }, + { (u8 *) &gBattleAnimSpritePalette_013, 10013 }, + { (u8 *) &gBattleAnimSpritePalette_014, 10014 }, + { (u8 *) &gBattleAnimSpritePalette_015, 10015 }, + { (u8 *) &gBattleAnimSpritePalette_016, 10016 }, + { (u8 *) &gBattleAnimSpritePalette_016, 10017 }, + { (u8 *) &gBattleAnimSpritePalette_018, 10018 }, + { (u8 *) &gBattleAnimSpritePalette_019, 10019 }, + { (u8 *) &gBattleAnimSpritePalette_020, 10020 }, + { (u8 *) &gBattleAnimSpritePalette_021, 10021 }, + { (u8 *) &gBattleAnimSpritePalette_022, 10022 }, + { (u8 *) &gBattleAnimSpritePalette_023, 10023 }, + { (u8 *) &gBattleAnimSpritePalette_024, 10024 }, + { (u8 *) &gBattleAnimSpritePalette_025, 10025 }, + { (u8 *) &gBattleAnimSpritePalette_026, 10026 }, + { (u8 *) &gBattleAnimSpritePalette_027, 10027 }, + { (u8 *) &gBattleAnimSpritePalette_028, 10028 }, + { (u8 *) &gBattleAnimSpritePalette_029, 10029 }, + { (u8 *) &gBattleAnimSpritePalette_030, 10030 }, + { (u8 *) &gBattleAnimSpritePalette_031, 10031 }, + { (u8 *) &gBattleAnimSpritePalette_032, 10032 }, + { (u8 *) &gBattleAnimSpritePalette_033, 10033 }, + { (u8 *) &gBattleAnimSpritePalette_033, 10034 }, + { (u8 *) &gBattleAnimSpritePalette_033, 10035 }, + { (u8 *) &gBattleAnimSpritePalette_036, 10036 }, + { (u8 *) &gBattleAnimSpritePalette_036, 10037 }, + { (u8 *) &gBattleAnimSpritePalette_038, 10038 }, + { (u8 *) &gBattleAnimSpritePalette_039, 10039 }, + { (u8 *) &gBattleAnimSpritePalette_038, 10040 }, + { (u8 *) &gBattleAnimSpritePalette_038, 10041 }, + { (u8 *) &gBattleAnimSpritePalette_042, 10042 }, + { (u8 *) &gBattleAnimSpritePalette_043, 10043 }, + { (u8 *) &gBattleAnimSpritePalette_044, 10044 }, + { (u8 *) &gBattleAnimSpritePalette_045, 10045 }, + { (u8 *) &gBattleAnimSpritePalette_046, 10046 }, + { (u8 *) &gBattleAnimSpritePalette_047, 10046 }, + { (u8 *) &gBattleAnimSpritePalette_048, 10048 }, + { (u8 *) &gBattleAnimSpritePalette_049, 10049 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10050 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10051 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10052 }, + { (u8 *) &gBattleAnimSpritePalette_026, 10053 }, + { (u8 *) &gBattleAnimSpritePalette_054, 10054 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10055 }, + { (u8 *) &gBattleAnimSpritePalette_056, 10056 }, + { (u8 *) &gBattleAnimSpritePalette_057, 10057 }, + { (u8 *) &gBattleAnimSpritePalette_058, 10058 }, + { (u8 *) &gBattleAnimSpritePalette_059, 10059 }, + { (u8 *) &gBattleAnimSpritePalette_060, 10060 }, + { (u8 *) &gBattleAnimSpritePalette_061, 10061 }, + { (u8 *) &gBattleAnimSpritePalette_062, 10062 }, + { (u8 *) &gBattleAnimSpritePalette_063, 10063 }, + { (u8 *) &gBattleAnimSpritePalette_064, 10064 }, + { (u8 *) &gBattleAnimSpritePalette_065, 10065 }, + { (u8 *) &gBattleAnimSpritePalette_066, 10066 }, + { (u8 *) &gBattleAnimSpritePalette_067, 10067 }, + { (u8 *) &gBattleAnimSpritePalette_068, 10068 }, + { (u8 *) &gBattleAnimSpritePalette_065, 10069 }, + { (u8 *) &gBattleAnimSpritePalette_070, 10070 }, + { (u8 *) &gBattleAnimSpritePalette_070, 10071 }, + { (u8 *) &gBattleAnimSpritePalette_072, 10072 }, + { (u8 *) &gBattleAnimSpritePalette_073, 10073 }, + { (u8 *) &gBattleAnimSpritePalette_074, 10074 }, + { (u8 *) &gBattleAnimSpritePalette_075, 10075 }, + { (u8 *) &gBattleAnimSpritePalette_076, 10076 }, + { (u8 *) &gBattleAnimSpritePalette_076, 10077 }, + { (u8 *) &gBattleAnimSpritePalette_078, 10078 }, + { (u8 *) &gBattleAnimSpritePalette_078, 10079 }, + { (u8 *) &gBattleAnimSpritePalette_080, 10080 }, + { (u8 *) &gBattleAnimSpritePalette_081, 10081 }, + { (u8 *) &gBattleAnimSpritePalette_082, 10082 }, + { (u8 *) &gBattleAnimSpritePalette_083, 10083 }, + { (u8 *) &gBattleAnimSpritePalette_084, 10084 }, + { (u8 *) &gBattleAnimSpritePalette_085, 10085 }, + { (u8 *) &gBattleAnimSpritePalette_086, 10086 }, + { (u8 *) &gBattleAnimSpritePalette_087, 10087 }, + { (u8 *) &gBattleAnimSpritePalette_088, 10088 }, + { (u8 *) &gBattleAnimSpritePalette_089, 10089 }, + { (u8 *) &gBattleAnimSpritePalette_090, 10090 }, + { (u8 *) &gBattleAnimSpritePalette_091, 10091 }, + { (u8 *) &gBattleAnimSpritePalette_092, 10092 }, + { (u8 *) &gBattleAnimSpritePalette_093, 10093 }, + { (u8 *) &gBattleAnimSpritePalette_094, 10094 }, + { (u8 *) &gBattleAnimSpritePalette_095, 10095 }, + { (u8 *) &gBattleAnimSpritePalette_096, 10096 }, + { (u8 *) &gBattleAnimSpritePalette_097, 10097 }, + { (u8 *) &gBattleAnimSpritePalette_094, 10098 }, + { (u8 *) &gBattleAnimSpritePalette_099, 10099 }, + { (u8 *) &gBattleAnimSpritePalette_100, 10100 }, + { (u8 *) &gBattleAnimSpritePalette_101, 10101 }, + { (u8 *) &gBattleAnimSpritePalette_101, 10102 }, + { (u8 *) &gBattleAnimSpritePalette_103, 10103 }, + { (u8 *) &gBattleAnimSpritePalette_104, 10104 }, + { (u8 *) &gBattleAnimSpritePalette_105, 10105 }, + { (u8 *) &gBattleAnimSpritePalette_105, 10106 }, + { (u8 *) &gBattleAnimSpritePalette_107, 10107 }, + { (u8 *) &gBattleAnimSpritePalette_107, 10108 }, + { (u8 *) &gBattleAnimSpritePalette_109, 10109 }, + { (u8 *) &gBattleAnimSpritePalette_109, 10110 }, + { (u8 *) &gBattleAnimSpritePalette_111, 10111 }, + { (u8 *) &gBattleAnimSpritePalette_112, 10112 }, + { (u8 *) &gBattleAnimSpritePalette_113, 10113 }, + { (u8 *) &gBattleAnimSpritePalette_114, 10114 }, + { (u8 *) &gBattleAnimSpritePalette_115, 10115 }, + { (u8 *) &gBattleAnimSpritePalette_116, 10116 }, + { (u8 *) &gBattleAnimSpritePalette_117, 10117 }, + { (u8 *) &gBattleAnimSpritePalette_118, 10118 }, + { (u8 *) &gBattleAnimSpritePalette_119, 10119 }, + { (u8 *) &gBattleAnimSpritePalette_120, 10120 }, + { (u8 *) &gBattleAnimSpritePalette_121, 10121 }, + { (u8 *) &gBattleAnimSpritePalette_122, 10122 }, + { (u8 *) &gBattleAnimSpritePalette_122, 10123 }, + { (u8 *) &gBattleAnimSpritePalette_124, 10124 }, + { (u8 *) &gBattleAnimSpritePalette_125, 10125 }, + { (u8 *) &gBattleAnimSpritePalette_126, 10126 }, + { (u8 *) &gBattleAnimSpritePalette_127, 10127 }, + { (u8 *) &gBattleAnimSpritePalette_128, 10128 }, + { (u8 *) &gBattleAnimSpritePalette_128, 10129 }, + { (u8 *) &gBattleAnimSpritePalette_130, 10130 }, + { (u8 *) &gBattleAnimSpritePalette_130, 10131 }, + { (u8 *) &gBattleAnimSpritePalette_132, 10132 }, + { (u8 *) &gBattleAnimSpritePalette_133, 10133 }, + { (u8 *) &gBattleAnimSpritePalette_133, 10134 }, + { (u8 *) &gBattleAnimSpritePalette_135, 10135 }, + { (u8 *) &gBattleAnimSpritePalette_136, 10136 }, + { (u8 *) &gBattleAnimSpritePalette_135, 10137 }, + { (u8 *) &gBattleAnimSpritePalette_135, 10138 }, + { (u8 *) &gBattleAnimSpritePalette_139, 10139 }, + { (u8 *) &gBattleAnimSpritePalette_140, 10140 }, + { (u8 *) &gBattleAnimSpritePalette_141, 10141 }, + { (u8 *) &gBattleAnimSpritePalette_141, 10142 }, + { (u8 *) &gBattleAnimSpritePalette_143, 10143 }, + { (u8 *) &gBattleAnimSpritePalette_144, 10144 }, + { (u8 *) &gBattleAnimSpritePalette_139, 10145 }, + { (u8 *) &gBattleAnimSpritePalette_115, 10146 }, + { (u8 *) &gBattleAnimSpritePalette_147, 10147 }, + { (u8 *) &gBattleAnimSpritePalette_148, 10148 }, + { (u8 *) &gBattleAnimSpritePalette_148, 10149 }, + { (u8 *) &gBattleAnimSpritePalette_150, 10150 }, + { (u8 *) &gBattleAnimSpritePalette_150, 10151 }, + { (u8 *) &gBattleAnimSpritePalette_152, 10152 }, + { (u8 *) &gBattleAnimSpritePalette_153, 10153 }, + { (u8 *) &gBattleAnimSpritePalette_154, 10154 }, + { (u8 *) &gBattleAnimSpritePalette_155, 10155 }, + { (u8 *) &gBattleAnimSpritePalette_156, 10156 }, + { (u8 *) &gBattleAnimSpritePalette_157, 10157 }, + { (u8 *) &gBattleAnimSpritePalette_158, 10158 }, + { (u8 *) &gBattleAnimSpritePalette_159, 10159 }, + { (u8 *) &gBattleAnimSpritePalette_160, 10160 }, + { (u8 *) &gBattleAnimSpritePalette_161, 10161 }, + { (u8 *) &gBattleAnimSpritePalette_162, 10162 }, + { (u8 *) &gBattleAnimSpritePalette_163, 10163 }, + { (u8 *) &gBattleAnimSpritePalette_164, 10164 }, + { (u8 *) &gBattleAnimSpritePalette_165, 10165 }, + { (u8 *) &gBattleAnimSpritePalette_166, 10166 }, + { (u8 *) &gBattleAnimSpritePalette_167, 10167 }, + { (u8 *) &gBattleAnimSpritePalette_168, 10168 }, + { (u8 *) &gBattleAnimSpritePalette_169, 10169 }, + { (u8 *) &gBattleAnimSpritePalette_170, 10170 }, + { (u8 *) &gBattleAnimSpritePalette_171, 10171 }, + { (u8 *) &gBattleAnimSpritePalette_172, 10172 }, + { (u8 *) &gBattleAnimSpritePalette_001, 10173 }, + { (u8 *) &gBattleAnimSpritePalette_174, 10174 }, + { (u8 *) &gBattleAnimSpritePalette_175, 10175 }, + { (u8 *) &gBattleAnimSpritePalette_176, 10176 }, + { (u8 *) &gBattleAnimSpritePalette_177, 10177 }, + { (u8 *) &gBattleAnimSpritePalette_178, 10178 }, + { (u8 *) &gBattleAnimSpritePalette_179, 10179 }, + { (u8 *) &gBattleAnimSpritePalette_179, 10180 }, + { (u8 *) &gBattleAnimSpritePalette_179, 10181 }, + { (u8 *) &gBattleAnimSpritePalette_182, 10182 }, + { (u8 *) &gBattleAnimSpritePalette_183, 10183 }, + { (u8 *) &gBattleAnimSpritePalette_184, 10184 }, + { (u8 *) &gBattleAnimSpritePalette_185, 10185 }, + { (u8 *) &gBattleAnimSpritePalette_186, 10186 }, + { (u8 *) &gBattleAnimSpritePalette_187, 10187 }, + { (u8 *) &gBattleAnimSpritePalette_188, 10188 }, + { (u8 *) &gBattleAnimSpritePalette_189, 10189 }, + { (u8 *) &gBattleAnimSpritePalette_190, 10190 }, + { (u8 *) &gBattleAnimSpritePalette_191, 10191 }, + { (u8 *) &gBattleAnimSpritePalette_192, 10192 }, + { (u8 *) &gBattleAnimSpritePalette_193, 10193 }, + { (u8 *) &gBattleAnimSpritePalette_194, 10194 }, + { (u8 *) &gBattleAnimSpritePalette_195, 10195 }, + { (u8 *) &gBattleAnimSpritePalette_196, 10196 }, + { (u8 *) &gBattleAnimSpritePalette_197, 10197 }, + { (u8 *) &gBattleAnimSpritePalette_198, 10198 }, + { (u8 *) &gBattleAnimSpritePalette_199, 10199 }, + { (u8 *) &gBattleAnimSpritePalette_200, 10200 }, + { (u8 *) &gBattleAnimSpritePalette_201, 10201 }, + { (u8 *) &gBattleAnimSpritePalette_202, 10202 }, + { (u8 *) &gBattleAnimSpritePalette_203, 10203 }, + { (u8 *) &gBattleAnimSpritePalette_204, 10204 }, + { (u8 *) &gBattleAnimSpritePalette_205, 10205 }, + { (u8 *) &gBattleAnimSpritePalette_206, 10206 }, + { (u8 *) &gBattleAnimSpritePalette_207, 10207 }, + { (u8 *) &gBattleAnimSpritePalette_167, 10208 }, + { (u8 *) &gBattleAnimSpritePalette_209, 10209 }, + { (u8 *) &gBattleAnimSpritePalette_210, 10210 }, + { (u8 *) &gBattleAnimSpritePalette_211, 10211 }, + { (u8 *) &gBattleAnimSpritePalette_211, 10212 }, + { (u8 *) &gBattleAnimSpritePalette_211, 10213 }, + { (u8 *) &gBattleAnimSpritePalette_064, 10214 }, + { (u8 *) &gBattleAnimSpritePalette_215, 10215 }, + { (u8 *) &gBattleAnimSpritePalette_216, 10216 }, + { (u8 *) &gBattleAnimSpritePalette_217, 10217 }, + { (u8 *) &gBattleAnimSpritePalette_218, 10218 }, + { (u8 *) &gBattleAnimSpritePalette_219, 10219 }, + { (u8 *) &gBattleAnimSpritePalette_220, 10220 }, + { (u8 *) &gBattleAnimSpritePalette_221, 10221 }, + { (u8 *) &gBattleAnimSpritePalette_222, 10222 }, + { (u8 *) &gBattleAnimSpritePalette_223, 10223 }, + { (u8 *) &gBattleAnimSpritePalette_224, 10224 }, + { (u8 *) &gBattleAnimSpritePalette_225, 10225 }, + { (u8 *) &gBattleAnimSpritePalette_226, 10226 }, + { (u8 *) &gBattleAnimSpritePalette_226, 10227 }, + { (u8 *) &gBattleAnimSpritePalette_228, 10228 }, + { (u8 *) &gBattleAnimSpritePalette_229, 10229 }, + { (u8 *) &gBattleAnimSpritePalette_230, 10230 }, + { (u8 *) &gBattleAnimSpritePalette_231, 10231 }, + { (u8 *) &gBattleAnimSpritePalette_231, 10232 }, + { (u8 *) &gBattleAnimSpritePalette_233, 10233 }, + { (u8 *) &gBattleAnimSpritePalette_234, 10234 }, + { (u8 *) &gBattleAnimSpritePalette_235, 10235 }, + { (u8 *) &gBattleAnimSpritePalette_236, 10236 }, + { (u8 *) &gBattleAnimSpritePalette_237, 10237 }, + { (u8 *) &gBattleAnimSpritePalette_238, 10238 }, + { (u8 *) &gBattleAnimSpritePalette_239, 10239 }, + { (u8 *) &gBattleAnimSpritePalette_240, 10240 }, + { (u8 *) &gBattleAnimSpritePalette_241, 10241 }, + { (u8 *) &gBattleAnimSpritePalette_242, 10242 }, + { (u8 *) &gBattleAnimSpritePalette_243, 10243 }, + { (u8 *) &gBattleAnimSpritePalette_244, 10244 }, + { (u8 *) &gBattleAnimSpritePalette_245, 10245 }, + { (u8 *) &gBattleAnimSpritePalette_245, 10246 }, + { (u8 *) &gBattleAnimSpritePalette_064, 10247 }, + { (u8 *) &gBattleAnimSpritePalette_248, 10248 }, + { (u8 *) &gBattleAnimSpritePalette_249, 10249 }, + { (u8 *) &gBattleAnimSpritePalette_249, 10250 }, + { (u8 *) &gBattleAnimSpritePalette_251, 10251 }, + { (u8 *) &gBattleAnimSpritePalette_252, 10252 }, + { (u8 *) &gBattleAnimSpritePalette_253, 10253 }, + { (u8 *) &gBattleAnimSpritePalette_254, 10254 }, + { (u8 *) &gBattleAnimSpritePalette_255, 10255 }, + { (u8 *) &gBattleAnimSpritePalette_256, 10256 }, + { (u8 *) &gBattleAnimSpritePalette_257, 10257 }, + { (u8 *) &gBattleAnimSpritePalette_258, 10258 }, + { (u8 *) &gBattleAnimSpritePalette_259, 10259 }, + { (u8 *) &gBattleAnimSpritePalette_260, 10260 }, + { (u8 *) &gBattleAnimSpritePalette_261, 10261 }, + { (u8 *) &gBattleAnimSpritePalette_262, 10262 }, + { (u8 *) &gBattleAnimSpritePalette_263, 10263 }, + { (u8 *) &gBattleAnimSpritePalette_264, 10264 }, + { (u8 *) &gBattleAnimSpritePalette_265, 10265 }, + { (u8 *) &gBattleAnimSpritePalette_266, 10266 }, + { (u8 *) &gBattleAnimSpritePalette_267, 10267 }, + { (u8 *) &gBattleAnimSpritePalette_268, 10268 }, + { (u8 *) &gBattleAnimSpritePalette_269, 10269 }, + { (u8 *) &gBattleAnimSpritePalette_270, 10270 }, + { (u8 *) &gBattleAnimSpritePalette_271, 10271 }, + { (u8 *) &gBattleAnimSpritePalette_272, 10272 }, + { (u8 *) &gBattleAnimSpritePalette_272, 10273 }, + { (u8 *) &gBattleAnimSpritePalette_274, 10274 }, + { (u8 *) &gBattleAnimSpritePalette_274, 10275 }, + { (u8 *) &gBattleAnimSpritePalette_274, 10276 }, + { (u8 *) &gBattleAnimSpritePalette_277, 10277 }, + { (u8 *) &gBattleAnimSpritePalette_278, 10278 }, + { (u8 *) &gBattleAnimSpritePalette_279, 10279 }, + { (u8 *) &gBattleAnimSpritePalette_280, 10280 }, + { (u8 *) &gBattleAnimSpritePalette_281, 10281 }, + { (u8 *) &gBattleAnimSpritePalette_282, 10282 }, + { (u8 *) &gBattleAnimSpritePalette_283, 10283 }, + { (u8 *) &gBattleAnimSpritePalette_284, 10284 }, + { (u8 *) &gBattleAnimSpritePalette_285, 10285 }, + { (u8 *) &gBattleAnimSpritePalette_286, 10286 }, + { (u8 *) &gBattleAnimSpritePalette_287, 10287 }, + { (u8 *) &gBattleAnimSpritePalette_288, 10288 }, +}; + +const struct BattleAnimBackground gBattleAnimBackgroundTable[] = +{ + &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, + &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, + &gBattleAnimBackgroundImage_02, &gBattleAnimBackgroundPalette_02, &gBattleAnimBackgroundTilemap_02, + &gBattleAnimBackgroundImage_03, &gBattleAnimBackgroundPalette_03, &gBattleAnimBackgroundTilemap_03, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_04, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_05, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_06, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_07, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_08, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_09, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_10, + &gBattleAnimBackgroundImage_11, &gBattleAnimBackgroundPalette_11, &gBattleAnimBackgroundTilemap_11, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_12, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_13, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_14, + &gBattleAnimBackgroundImage_15, &gBattleAnimBackgroundPalette_15, &gBattleAnimBackgroundTilemap_15, + &gBattleAnimBackgroundImage_16, &gBattleAnimBackgroundPalette_16, &gBattleAnimBackgroundTilemap_16, + &gBattleAnimBackgroundImage_17, &gBattleAnimBackgroundPalette_17, &gBattleAnimBackgroundTilemap_17, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_07, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_08, + &gBattleAnimBackgroundImage_20, &gBattleAnimBackgroundPalette_20, &gBattleAnimBackgroundTilemap_20, + &gBattleAnimBackgroundImage_21, &gBattleAnimBackgroundPalette_21, &gBattleAnimBackgroundTilemap_21, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_09, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_10, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_04, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_05, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06, +}; + extern u16 gBattlePartyID[4]; extern u8 gObjectBankIDs[]; extern u8 gBankAttacker; @@ -63,9 +1329,6 @@ extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; extern const u8 *const gBattleAnims_Moves[]; -extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; -extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; -extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; static void RunAnimScriptCommand(void); static void ScriptCmd_loadspritegfx(void); diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index c35434df0..f109333e3 100644 --- a/src/battle/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -20,17 +20,77 @@ static void sub_80A808C(u8 taskId); static void sub_80A81D8(u8 taskId); static void sub_80A8374(u8 taskId); static void sub_80A8488(u8 taskId); +static void sub_80A8530(struct Sprite *sprite); static void sub_80A85A4(struct Sprite *sprite); -void sub_80A8614(struct Sprite* sprite); +static void sub_80A85C8(struct Sprite *sprite); +static void sub_80A8614(struct Sprite* sprite); +static void sub_80A8638(struct Sprite *sprite); static void sub_80A86F4(struct Sprite *sprite); +static void sub_80A8764(struct Sprite *sprite); +static void sub_80A8818(struct Sprite *sprite); static void sub_80A88F0(struct Sprite *sprite); static void sub_80A89B4(u8 taskId); static void sub_80A8A18(u8 taskId); static void sub_80A8C0C(u8 taskId); static void sub_80A8D8C(u8 taskId); -void sub_80A8FD8(u8 taskId); +static void sub_80A8FD8(u8 taskId); static void sub_80A913C(u8 taskId); +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8530, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A85C8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8638, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8764, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8818, +}; + void sub_80A7E7C(u8 taskId) { u8 sprite; @@ -335,7 +395,7 @@ void sub_80A8500(u8 taskId) sub_80A8408(taskId); } -void sub_80A8530(struct Sprite *sprite) +static void sub_80A8530(struct Sprite *sprite) { sprite->invisible = TRUE; if (GetBankSide(gAnimBankAttacker)) @@ -362,7 +422,7 @@ static void sub_80A85A4(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80A85C8(struct Sprite *sprite) +static void sub_80A85C8(struct Sprite *sprite) { u8 spriteId; sprite->invisible = TRUE; @@ -376,7 +436,7 @@ void sub_80A85C8(struct Sprite *sprite) sprite->callback = sub_8078458; } -void sub_80A8614(struct Sprite *sprite) +static void sub_80A8614(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[2] = -sprite->data[2]; @@ -384,7 +444,7 @@ void sub_80A8614(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80A8638(struct Sprite *sprite) +static void sub_80A8638(struct Sprite *sprite) { int something; int spriteId; @@ -451,7 +511,7 @@ static void sub_80A86F4(struct Sprite *sprite) } } -void sub_80A8764(struct Sprite *sprite) +static void sub_80A8764(struct Sprite *sprite) { u8 v1; u8 spriteId; @@ -486,7 +546,7 @@ void sub_80A8764(struct Sprite *sprite) sprite->callback = sub_80784A8; } -void sub_80A8818(struct Sprite *sprite) +static void sub_80A8818(struct Sprite *sprite) { u8 spriteId; u8 v1; @@ -833,7 +893,7 @@ void sub_80A8EFC(u8 taskId) TASK.func = sub_80A8FD8; } -void sub_80A8FD8(u8 taskId) +static void sub_80A8FD8(u8 taskId) { TASK.data[3] += TASK.data[4]; obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]); diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 69306b725..40f50d7ff 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -93,7 +93,7 @@ extern void move_anim_start_t2_for_situation(); extern void dp01t_0F_4_move_anim(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_803A3A8(struct Sprite *); extern void sub_8044CA0(u8); extern void nullsub_47(void); @@ -1620,7 +1620,7 @@ void LinkOpponentHandleFaintingCry(void) void LinkOpponentHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkOpponentBufferExecCompleted(); } diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index c86c337d9..e39d98997 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -62,7 +62,7 @@ extern u8 move_anim_start_t3(); extern u8 IsBankSpritePresent(); extern void sub_8044CA0(u8); extern void sub_8030E38(struct Sprite *); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_8047858(); extern void move_anim_start_t2_for_situation(); extern void load_gfxc_health_bar(); @@ -1565,7 +1565,7 @@ void LinkPartnerHandleFaintingCry(void) void LinkPartnerHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkPartnerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 622e3e9f9..5947053b6 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -108,7 +108,7 @@ extern void move_anim_start_t2_for_situation(); extern void bx_blink_t7(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_8044CA0(u8); extern void nullsub_45(void); extern void sub_8031B74(); @@ -1892,7 +1892,7 @@ void OpponentHandleFaintingCry(void) void OpponentHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; OpponentBufferExecCompleted(); } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index a5f833b6c..2bdf448db 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -98,7 +98,7 @@ extern void move_anim_start_t2_for_situation(); extern void bx_blink_t1(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void StoreSpriteCallbackInData(); @@ -2875,7 +2875,7 @@ void PlayerHandleFaintingCry(void) void PlayerHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; PlayerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index a4b610752..0d193d68f 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -47,7 +47,7 @@ extern u8 sub_8079E90(); extern void sub_80313A0(struct Sprite *); extern void sub_810BADC(void); extern void sub_8045A5C(); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_804777C(); extern void sub_8043DFC(); extern bool8 move_anim_start_t3(); @@ -641,7 +641,7 @@ void SafariHandleFaintingCry(void) void SafariHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; SafariBufferExecCompleted(); } diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 6266d955c..4c0adab5e 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -85,7 +85,7 @@ extern void BufferStringBattle(); extern u8 GetBankSide(u8); extern void sub_80304A8(void); extern void sub_8047858(); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void sub_8030E38(struct Sprite *); @@ -1470,7 +1470,7 @@ void WallyHandleFaintingCry(void) void WallyHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; WallyBufferExecCompleted(); } diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c index 5c91b3657..217ab28a3 100644 --- a/src/battle/calculate_base_damage.c +++ b/src/battle/calculate_base_damage.c @@ -1,16 +1,16 @@ #include "global.h" #include "constants/abilities.h" +#include "constants/battle_move_effects.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" #include "battle.h" #include "berry.h" #include "data2.h" #include "event_data.h" -#include "constants/hold_effects.h" #include "item.h" -#include "constants/items.h" #include "pokemon.h" -#include "constants/species.h" -#include "constants/moves.h" -#include "constants/battle_move_effects.h" #include "ewram.h" extern u16 gBattleTypeFlags; @@ -22,8 +22,54 @@ extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBattleMovePower; extern u16 gTrainerBattleOpponent; -extern const u8 gHoldEffectToType[][2]; -extern const u8 gStatStageRatios[][2]; +// Masks for getting PP Up count, also PP Max values +const u8 gUnknown_08208238[] = {0x03, 0x0c, 0x30, 0xc0}; + +// Masks for setting PP Up count +const u8 gUnknown_0820823C[] = {0xFC, 0xF3, 0xCF, 0x3F}; + +// Values added to PP Up count +const u8 gUnknown_08208240[] = {0x01, 0x04, 0x10, 0x40}; + +const u8 gStatStageRatios[][2] = +{ + {10, 40}, // -6 + {10, 35}, // -5 + {10, 30}, // -4 + {10, 25}, // -3 + {10, 20}, // -2 + {10, 15}, // -1 + {10, 10}, // 0 + {15, 10}, // 1 + {20, 10}, // 2 + {25, 10}, // 3 + {30, 10}, // 4 + {35, 10}, // 5 + {40, 10} // 6 +}; + +const u8 unknownGameFreakAbbrev_820825E[] = _("ゲーフリ"); + +const u8 gHoldEffectToType[][2] = +{ + {HOLD_EFFECT_BUG_POWER, TYPE_BUG}, + {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL}, + {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND}, + {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK}, + {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS}, + {HOLD_EFFECT_DARK_POWER, TYPE_DARK}, + {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING}, + {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC}, + {HOLD_EFFECT_WATER_POWER, TYPE_WATER}, + {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING}, + {HOLD_EFFECT_POISON_POWER, TYPE_POISON}, + {HOLD_EFFECT_ICE_POWER, TYPE_ICE}, + {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST}, + {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC}, + {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE}, + {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON}, + {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL} +}; u8 GetBankSide(u8 bank); |