resolve compiler errors

This commit is contained in:
Evan 2019-12-02 20:58:12 -07:00
parent 5c40e5ea21
commit f1bd7a41cc
9 changed files with 173 additions and 216 deletions

View File

@ -2464,7 +2464,7 @@ gFile_graphics_battle_anims_masks_cure_bubbles_sheet:: @ 8D2DE3C
.incbin "graphics/battle_anims/masks/cure_bubbles.4bpp.lz"
.align 2
gFile_graphics_battle_anims_masks_cure_bubbles_palette:: @ 8D2DF78
gCureBubblesPal:: @ 8D2DF78
.incbin "graphics/battle_anims/masks/cure_bubbles.gbapal.lz"
.align 2

View File

@ -197,8 +197,12 @@ void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *ar
// battle_anim_special.s
void sub_80F1720(u8 battler, struct Pokemon *mon);
// battle_anim_effects_1.s
void AnimMoveTwisterParticle(struct Sprite *sprite);
// battle_anim_effects_1.c
void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite);
void AnimMoveTwisterParticle(struct Sprite* sprite);
// water.c
void AnimWaterPulseRing(struct Sprite *sprite);
enum
{
@ -284,7 +288,7 @@ void sub_8075358(u32 bgId);
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset);
void InitAnimBgTilemapBuffer(u32 bgId, const void *src);
void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src);
u8 sub_8075454(void);
u8 GetBattleBgPaletteNum(void);
void sub_8075458(bool8 arg0);
void sub_8075490(struct Sprite *sprite);
void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
@ -451,6 +455,9 @@ void sub_80AD800(u8 taskId);
extern const union AnimCmd *const gUnknown_83E5958[];
extern const union AnimCmd *const gUnknown_83E5A78[];
// smokescreen.c
u8 SmokescreenImpact(s16 x, s16 y, u8 a3);
// battle_anim_utility_funcs.c
void sub_80BA7F8(u8 taskId);
void sub_80BA83C(u8 taskId);

View File

@ -73,10 +73,18 @@
#define TOTAL_OBJ_TILE_COUNT 1024
#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r))
#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F))
#define RGB_BLACK RGB(0, 0, 0)
#define RGB_WHITE RGB(31, 31, 31)
#define RGB_WHITEALPHA (0xFFFF)
#define RGB_RED RGB(31, 0, 0)
#define RGB_GREEN RGB(0, 31, 0)
#define RGB_BLUE RGB(0, 0, 31)
#define RGB_YELLOW RGB(31, 31, 0)
#define RGB_MAGENTA RGB(31, 0, 31)
#define RGB_CYAN RGB(0, 31, 31)
#define RGB_WHITEALPHA (RGB_WHITE | 0x8000)
#define NAKED __attribute__((naked))
#define UNUSED __attribute__((unused))

View File

@ -4215,6 +4215,7 @@ extern const u32 gBattleAnimSpritePal_CrossImpact[];
extern const u32 gBattleAnimSpritePal_Slash2[];
extern const u32 gBattleAnimSpritePal_WhipHit[];
extern const u32 gBattleAnimSpritePal_BlueRing2[];
extern const u32 gCureBubblesPal[];
// battle bg
extern const u32 gBattleAnimBgImage_Dark[];

View File

@ -13,7 +13,6 @@
#include "sound.h"
#include "trig.h"
#include "util.h"
#include "constants/rgb.h"
#include "constants/songs.h"
// RAM
@ -4373,7 +4372,7 @@ static void AnimLockOnTargetStep4(struct Sprite* sprite)
sprite->data[1] = 0;
}
BlendPalettes(sub_80A75AC(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31));
BlendPalettes(sub_8075BE8(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31));
if (sprite->data[1] == 16)
{
int pal;
@ -5029,7 +5028,7 @@ void AnimTask_FadeScreenBlueStep(u8);
void AnimTask_FadeScreenBlue(u8 taskId)
{
int a = sub_80A75AC(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
int a = sub_8075BE8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
int b;
int c;
int d;
@ -5044,7 +5043,7 @@ void AnimTask_FadeScreenBlue(u8 taskId)
gTasks[taskId].data[7] = 13;
gTasks[taskId].data[8] = 14;
gTasks[taskId].data[9] = 15;
b = sub_80A76C4(1, 1, 1, 1);
b = sub_8075CB8(1, 1, 1, 1);
c = a | b;
StorePointerInVars(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c);
b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON));

View File

@ -13,7 +13,6 @@
#include "sound.h"
#include "trig.h"
#include "util.h"
#include "constants/rgb.h"
#include "constants/songs.h"
void sub_80A6E48(struct Sprite *);
@ -344,7 +343,7 @@ const struct SpriteTemplate gWaterPulseRingSpriteTemplate = //gUnknown_83E3CE8
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gWaterPulseRingAffineAnimTable,
.callback = AnimWaterPulseRing,
.callback = sub_80AC6D8,
};
const struct SpriteTemplate gEggThrowSpriteTemplate = //gUnknown_83E3D00
@ -3096,7 +3095,7 @@ static void FakeOutStep2(u8 taskId)
{
gTasks[taskId].data[11] = 0x88;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN);
BlendPalettes(sub_80A75AC(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31));
BlendPalettes(sub_8075BE8(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31));
}
else if (gTasks[taskId].data[10] > 4)
{

View File

@ -3,7 +3,6 @@
#include "battle.h"
#include "battle_anim.h"
#include "bg.h"
#include "contest.h"
#include "data.h"
#include "decompress.h"
#include "dma3.h"
@ -19,7 +18,6 @@
#include "trig.h"
#include "util.h"
#include "constants/battle_anim.h"
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/weather.h"
@ -122,6 +120,10 @@ static void AnimRecycleStep(struct Sprite *);
static void AnimTask_SlackOffSquishStep(u8);
// Data
extern const u32 gUnknown_8D2A8C0[];
extern const u32 gUnknown_8D2A808[];
extern const u32 gUnknown_8D2A8A8[];
const union AnimCmd gScratchAnimCmds[] = //83FEDE4
{
ANIMCMD_FRAME(0, 4),
@ -468,8 +470,8 @@ const union AffineAnimCmd *const gTriAttackTriangleAffineAnimTable[] = //83FF0D4
const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = //83FF0D8
{
.tileTag = ANIM_TAG_TRI_ATTACK_TRIANGLE,
.paletteTag = ANIM_TAG_TRI_ATTACK_TRIANGLE,
.tileTag = ANIM_TAG_TRI_FORCE_TRIANGLE,
.paletteTag = ANIM_TAG_TRI_FORCE_TRIANGLE,
.oam = &gOamData_AffineDouble_ObjNormal_64x64,
.anims = gTriAttackTriangleAnimTable,
.images = NULL,
@ -719,7 +721,7 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate = //83FF324
.callback = AnimSweetScentPetal,
};
const u16 gUnknown_83FF33C[] = INCBIN_U16("graphics/unknown/unk_83FF33C.gbapal"); //Unused
const u16 gUnknown_83FF33C[] = INCBIN_U16("graphics/battle_anims/unk_83FF33C.gbapal"); //Unused
const union AnimCmd gPainSplitAnimCmds[] = //83FF35C
{
@ -1214,7 +1216,7 @@ static void AnimBlackSmokeStep(struct Sprite *sprite)
void AnimTask_SmokescreenImpact(u8 taskId)
{
SmokescreenImpact(
SmokescreenImpact( //sub_804A76C
GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 8,
GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 8,
0);
@ -2288,8 +2290,7 @@ void AnimTask_TransformMon(u8 taskId)
break;
case 2:
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]);
sub_80A6BFC(&animBg, gBattleAnimAttacker);
sub_8075300(&animBg, gBattleAnimAttacker);
if (IsContest())
position = 0;
else
@ -2297,40 +2298,8 @@ void AnimTask_TransformMon(u8 taskId)
src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
dest = animBg.bgTiles;
CpuCopy32(src, dest, 0x800);
CpuSet(src, dest, 0x4000200);
LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset);
if (IsContest())
{
if (IsSpeciesNotUnown(gContestResources->field_18->species) != IsSpeciesNotUnown(gContestResources->field_18->unk2))
{
bgTilemap = (u16 *)animBg.bgTilemap;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 4; j++)
{
u16 temp = bgTilemap[j + i * 0x20];
bgTilemap[j + i * 0x20] = bgTilemap[(7 - j) + i * 0x20];
bgTilemap[(7 - j) + i * 0x20] = temp;
}
}
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
{
bgTilemap[j + i * 0x20] ^= 0x400;
}
}
}
if (IsSpeciesNotUnown(gContestResources->field_18->unk2))
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gUnknown_082FF6C0;
else
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gUnknown_082FF694;
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
}
gTasks[taskId].data[0]++;
break;
case 3:
@ -2392,13 +2361,13 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
sub_80752A0
sub_807543C
sub_80753B4 //AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C2A634, animBg.tilesOffset);
sub_80752A0(&animBg);
AnimLoadCompressedBgTilemap(animBg.bgId, gUnknown_8D2A8C0);
AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_8D2A808, animBg.tilesOffset);
LoadCompressedPalette(gUnknown_8D2A8A8, animBg.paletteId * 16, 32);
if (IsContest())
{
sub_80730C0(animBg.paletteId, [sp+4 ???], 0, 0);
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
gBattle_BG1_X = -56;
}
else
@ -2410,30 +2379,6 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
}
gBattle_BG1_Y = 0;
/*
sub_80752A0(&animBg);
sub_80A6D60(&animBg, &gUnknown_08C2A6EC, 0);
if (IsContest())
{
gBattle_BG1_X = -56;
gBattle_BG1_Y = 0;
}
else
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattle_BG1_X = -135;
else
gBattle_BG1_X = -10;
gBattle_BG1_Y = 0;
}
*/
gTasks[taskId].data[10] = gBattle_BG1_X;
gTasks[taskId].data[11] = gBattle_BG1_Y;
@ -2594,21 +2539,16 @@ void AnimTask_DoomDesireLightBeam(u8 taskId)
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
/*
sub_80752A0(&animBg);
sub_80A6D60(&animBg, &gUnknown_08C2A6EC, 0);
*/
sub_80752A0( ,
sub_807543C( , gUnknown_8D2A8C0
sub_80753B4( , gUnknown_8D2A808
LoadCompressedPalette(gUnknown_8D2A808
//...
sub_80752A0(&animBg);
AnimLoadCompressedBgTilemap(animBg.bgId, gUnknown_8D2A8C0);
AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_8D2A808, animBg.tilesOffset);
LoadCompressedPalette(gUnknown_8D2A8A8, animBg.paletteId * 16, 32);
if (IsContest())
{
gBattle_BG1_X = -56;
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
gBattle_BG1_X = -56;
gBattle_BG1_Y = 0;
}
else
@ -2636,8 +2576,6 @@ void AnimTask_DoomDesireLightBeam(u8 taskId)
gBattle_BG1_Y = 0;
}
//AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C2A634, animBg.tilesOffset);
//LoadCompressedPalette(gUnknown_08C2A6D4, animBg.paletteId * 16, 32);
gTasks[taskId].data[10] = gBattle_BG1_X;
gTasks[taskId].data[11] = gBattle_BG1_Y;
gTasks[taskId].data[0]++;
@ -3229,62 +3167,51 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
s16 coord1, coord2;
GetAnimBattlerSpriteId(ANIM_ATTACKER);
if (IsContest())
{
isBackPic = 1;
personality = gContestResources->field_18->unk10;
otId = gContestResources->field_18->unkC;
species = gContestResources->field_18->unk2;
xOffset = 20;
priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
else
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
isBackPic = 0;
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
else
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
}
else
{
species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies;
}
xOffset = 20;
priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
else
{
isBackPic = 1;
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
else
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
}
else
{
species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies;
}
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
isBackPic = 0;
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
else
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
}
else
{
species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies;
}
xOffset = -20;
priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
}
xOffset = 20;
priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
else
{
isBackPic = 1;
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
else
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
}
else
{
species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies;
}
xOffset = -20;
priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
spriteId = sub_80A8394(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId, gBattleAnimTarget, 1);
spriteId = sub_80768D0(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId, gBattleAnimTarget, 1);
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
@ -5056,46 +4983,34 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
}
break;
case 1:
if (IsContest())
{
personality = gContestResources->field_18->unk8;
otId = gContestResources->field_18->unkC;
species = gContestResources->field_18->species;
subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
isBackPic = 0;
x = -32;
}
else
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
else
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
else
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
isBackPic = 0;
x = 272;
}
else
{
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE)
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
else
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
isBackPic = 0;
x = 272;
}
else
{
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE)
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
else
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
isBackPic = 1;
x = -32;
}
}
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
isBackPic = 1;
x = -32;
}
spriteId2 = sub_80A8394(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
spriteId2 = sub_80768D0(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE)
BlendPalette((gSprites[spriteId2].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE);

View File

@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
#include "battle_main.h"
#include "battle_controllers.h"
#include "battle_interface.h"
#include "decompress.h"
@ -19,7 +20,6 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/rgb.h"
// Defines
#define TAG_PARTICLES_POKEBALL 55020
@ -35,6 +35,9 @@
#define TAG_PARTICLES_LUXURYBALL 55030
#define TAG_PARTICLES_PREMIERBALL 55031
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
#define LOHALF(n) ((n) & 0xFFFF)
// IWRAM
EWRAM_DATA int gUnknown_3005424 = 0;
EWRAM_DATA u16 gUnknown_3005428 = 0;
@ -66,6 +69,8 @@ static void sub_80F05B4(u8);
static void sub_80F0278(struct Sprite *);
static void sub_80F0378(struct Sprite *);
static void sub_80F04B4(struct Sprite *);
static void sub_80F052C(struct Sprite *sprite);
static void sub_80F0574(struct Sprite *sprite);
static void PokeBallOpenParticleAnimation_Step1(struct Sprite *);
static void PokeBallOpenParticleAnimation_Step2(struct Sprite *);
static void DestroyBallOpenAnimationParticle(struct Sprite *);
@ -94,6 +99,10 @@ static void PremierBallOpenParticleAnimation(u8);
static void sub_80F1B3C(struct Sprite *);
// Data
extern const u32 gUnknown_8D2EC24[];
extern const u32 gUnknown_8D2EC70[];
extern const struct SpriteTemplate gBallSpriteTemplates[]; //for now
struct BallCaptureSuccessStarData
{
s8 xOffset;
@ -445,9 +454,9 @@ void sub_80EEC0C(u8 taskId)
gSprites[spriteId3].callback = SpriteCallbackDummy;
gSprites[spriteId4].callback = SpriteCallbackDummy;
sub_80A6B30(&unknownStruct);
AnimLoadCompressedBgTilemap(unknownStruct.bgId, gUnknown_08C2EA9C);
AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset);
sub_80752A0(&unknownStruct);
AnimLoadCompressedBgTilemap(unknownStruct.bgId, gUnknown_8D2EC70);
AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_8D2EC24, unknownStruct.tilesOffset);
LoadCompressedPalette(gCureBubblesPal, unknownStruct.paletteId << 4, 32);
gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
@ -492,7 +501,7 @@ static void sub_80EEDF4(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
if (gTasks[taskId].data[12] == 0)
{
sub_80A477C(0);
sub_8073128(0);
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
@ -518,7 +527,7 @@ static void sub_80EEDF4(u8 taskId)
}
}
static void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler)
void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler)
{
u8 healthBoxSpriteId;
u8 spriteId1, spriteId2;
@ -547,7 +556,7 @@ void sub_80EF0B4(u8 taskId)
DestroyAnimVisualTask(taskId);
}
static void sub_80EF0E0(u8 battler)
void sub_80EF0E0(u8 battler)
{
u8 healthBoxSpriteId;
u8 spriteId1, spriteId2;
@ -666,8 +675,8 @@ void sub_80EF344(u8 taskId)
y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
priority = gSprites[spriteId].oam.priority;
subpriority = gSprites[spriteId].subpriority;
gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId);
selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
gTasks[taskId].data[10] = LaunchBallStarsTask(x, y + 32, priority, subpriority, ballId);
selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0);
gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId);
gTasks[taskId].data[0]++;
break;
@ -764,25 +773,27 @@ void sub_80EF6D4(u8 taskId)
u8 subpriority;
u8 spriteId;
if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL)
{
x = 32;
x = 28;
y = 11;
}
else
{
x = 23;
y = 5;
y = 11;
if (gSaveBlock2Ptr->playerGender == FEMALE)
y = 13;
}
ballId = ItemIdToBallId(gLastUsedItem);
subpriority = GetBattlerSpriteSubpriority(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1;
spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x + 32, y | 80, subpriority);
spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x | 32, y | 80, subpriority);
gSprites[spriteId].data[0] = 34;
gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16;
gSprites[spriteId].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8039E84;
gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8012354;
gTasks[taskId].data[0] = spriteId;
gTasks[taskId].func = sub_80EF7EC;
}
@ -853,7 +864,7 @@ static void sub_80EF8F0(struct Sprite *sprite)
switch (ballId)
{
case 0 ... POKEBALL_COUNT - 1:
AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId);
break;
}
@ -1185,7 +1196,7 @@ static void sub_80EFFC4(struct Sprite *sprite)
sprite->data[4]++;
if (sprite->data[4] == 40)
{
PlaySE(SE_RG_GETTING);
PlaySE(SE_GETTING);
BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB(0, 0, 0));
sub_80F01B8(sprite);
}
@ -1198,7 +1209,7 @@ static void sub_80EFFC4(struct Sprite *sprite)
gDoingBattleAnim = 0;
UpdateOamPriorityInAllHealthboxes(1);
m4aMPlayAllStop();
PlaySE(MUS_RG_FAN6);
PlaySE(MUS_FAN6);
}
else if (sprite->data[4] == 315)
{
@ -1315,7 +1326,7 @@ static void sub_80F02B0(struct Sprite *sprite)
switch (ballId)
{
case 0 ... POKEBALL_COUNT - 1:
AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId);
break;
}
@ -1391,7 +1402,23 @@ static void sub_80F04B4(struct Sprite *sprite)
// GhostBallDodge
static void sub_80F052C(struct Sprite *sprite)
{
// to do
s16 x;
s16 y;
x = sprite->pos1.x + sprite->pos2.x;
sprite->pos1.x = x;
y = sprite->pos1.y + sprite->pos2.y;
sprite->pos1.y = y;
sprite->pos2.x = sprite->pos2.y = 0;
sprite->data[0] = 0x22;
sprite->data[1] = x;
sprite->data[2] = x - 8;
sprite->data[3] = y;
sprite->data[4] = 0x90;
sprite->data[5] = 0x20;
InitAnimArcTranslation(sprite);
TranslateAnimVerticalArc(sprite);
sprite->callback = sub_80F0574;
}
static void sub_80F0574(struct Sprite *sprite)
@ -1410,7 +1437,7 @@ static void sub_80F05B4(u8 ballId)
}
}
u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
{
u8 taskId;
@ -2217,7 +2244,7 @@ static void sub_80F1B3C(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3];
sprite->data[5] = -32;
InitAnimArcTranslation(sprite);
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8039E84;
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8012354;
sprite->callback = sub_80F1BCC;
}

View File

@ -9,7 +9,7 @@
#include "trig.h"
#include "util.h"
#include "constants/battle_anim.h"
#include "constants/rgb.h"
#include "constants/pokemon.h"
// Function Declarations
static u8 sub_8078178(u8 battlerId, bool8 b);
@ -51,7 +51,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF3F8 =
.anims = gSpriteAnimTable_83BF3F4,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8AEC,
.callback = sub_8076F58,
};
const struct SpriteTemplate gSpriteTemplate_83BF410 =
@ -62,7 +62,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF410 =
.anims = gSpriteAnimTable_83BF3F4,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8A6C,
.callback = sub_8076ED8,
};
static const union AnimCmd gUnknown_83BF428[] =
@ -84,7 +84,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF434 =
.anims = gSpriteAnimTable_83BF430,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8E30,
.callback = sub_807729C,
};
const struct SpriteTemplate gSpriteTemplate_83BF44C =
@ -95,7 +95,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF44C =
.anims = gSpriteAnimTable_83BF430,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8EE4,
.callback = sub_8077350,
};
static const union AnimCmd gUnknown_83BF464[] =
@ -121,7 +121,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF480 =
.anims = gSpriteAnimTable_83BF47C,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8B64,
.callback = sub_8076FD0,
};
const struct SpriteTemplate gSpriteTemplate_83BF498 =
@ -132,7 +132,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF498 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8AEC,
.callback = sub_8076F58,
};
static const union AnimCmd gUnknown_83BF4B0[] =
@ -168,7 +168,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF4D4 =
.anims = gSpriteAniimTable_83BF4C8,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8AEC,
.callback = sub_8076F58,
};
static const union AnimCmd gUnknown_83BF4EC[] =
@ -202,10 +202,11 @@ const struct SpriteTemplate gSpriteTemplate_83BF514 =
.anims = gSpriteAnimTable_83BF4F4,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_83BF510,
.callback = sub_80A8A6C,
.callback = sub_8076ED8,
};
static const u32 gUnknown_83BF52C = _("TASK OVER\nタスクがオーバーしました$");
const u8 gUnknown_83BF52C[] = _("TASK OVER\n");
const u8 gUnknown_83BF536[] = {0x60, 0x5D, 0x58, 0x37, 0x55, 0xAE, 0x96, 0xAE, 0x0C, 0x1F, 0x0C, 0x10, 0xFF}; //
static const struct Subsprite gSubsprites_83BF544[] =
{
@ -510,8 +511,8 @@ void AnimTask_StatsChange(u8 taskId)
gBattleAnimArgs[2] = 0;
gBattleAnimArgs[3] = 0;
gBattleAnimArgs[4] = sharply;
gTasks[taskId].func = sub_8116EB4;
sub_8116EB4(taskId);
gTasks[taskId].func = sub_80BB088;
sub_80BB088(taskId);
}
#undef CASE