all matching except Task_DoPokeballSendOutAnim

This commit is contained in:
Evan committed 2019-11-30 10:50:58 -05:00
1 parent 52013cf052
commit b626882708
9 files changed
+355 -230

No files matched your search

+4 -4
View File
@@ -1219,7 +1219,7 @@ sub_80EF5AC: @ 80EF5AC
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
ldr r1, _080EF678 @ =gUnknown_82606F4
ldr r1, _080EF678 @ =gBallSpriteTemplates
adds r0, r1
movs r1, 0x20
movs r2, 0x50
@@ -1298,7 +1298,7 @@ sub_80EF5AC: @ 80EF5AC
bx r0
.align 2, 0
_080EF674: .4byte gLastUsedItem
_080EF678: .4byte gUnknown_82606F4
_080EF678: .4byte gBallSpriteTemplates
_080EF67C: .4byte gSprites
_080EF680: .4byte gBattleAnimTarget
_080EF684: .4byte sub_80EF8C0
@@ -1387,7 +1387,7 @@ _080EF708:
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
ldr r1, _080EF7CC @ =gUnknown_82606F4
ldr r1, _080EF7CC @ =gBallSpriteTemplates
adds r0, r1
movs r1, 0x20
orrs r5, r1
@@ -1458,7 +1458,7 @@ _080EF708:
.align 2, 0
_080EF7C4: .4byte gSaveBlock2Ptr
_080EF7C8: .4byte gLastUsedItem
_080EF7CC: .4byte gUnknown_82606F4
_080EF7CC: .4byte gBallSpriteTemplates
_080EF7D0: .4byte gSprites
_080EF7D4: .4byte gBattleAnimTarget
_080EF7D8: .4byte SpriteCallbackDummy
+2 -2
View File
@@ -10638,7 +10638,7 @@ _08139CDA:
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
ldr r1, _08139D40 @ =gUnknown_82606F4
ldr r1, _08139D40 @ =gBallSpriteTemplates
adds r0, r1
movs r1, 0x6A
movs r2, 0x58
@@ -10677,7 +10677,7 @@ _08139CDA:
pop {r0}
bx r0
.align 2, 0
_08139D40: .4byte gUnknown_82606F4
_08139D40: .4byte gBallSpriteTemplates
_08139D44: .4byte gUnknown_203B140
_08139D48: .4byte 0x0000300c
_08139D4C: .4byte gSprites
+25 -25
View File
@@ -46,103 +46,103 @@ gFile_graphics_battle_anims_sprites_smokescreen_impact_palette:: @ 8D0170C
.incbin "graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Poke_sheet:: @ 8D01724
gInterfaceGfx_PokeBall:: @ 8D01724
.incbin "graphics/interface/ball/poke.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Poke_palette:: @ 8D017E0
gInterfacePal_PokeBall:: @ 8D017E0
.incbin "graphics/interface/ball/poke.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Great_sheet:: @ 8D01800
gInterfaceGfx_GreatBall:: @ 8D01800
.incbin "graphics/interface/ball/great.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Great_palette:: @ 8D018BC
gInterfacePal_GreatBall:: @ 8D018BC
.incbin "graphics/interface/ball/great.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Safari_sheet:: @ 8D018E0
gInterfaceGfx_SafariBall:: @ 8D018E0
.incbin "graphics/interface/ball/safari.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Safari_palette:: @ 8D019A4
gInterfacePal_SafariBall:: @ 8D019A4
.incbin "graphics/interface/ball/safari.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Ultra_sheet:: @ 8D019C8
gInterfaceGfx_UltraBall:: @ 8D019C8
.incbin "graphics/interface/ball/ultra.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Ultra_palette:: @ 8D01A7C
gInterfacePal_UltraBall:: @ 8D01A7C
.incbin "graphics/interface/ball/ultra.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Master_sheet:: @ 8D01A9C
gInterfaceGfx_MasterBall:: @ 8D01A9C
.incbin "graphics/interface/ball/master.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Master_palette:: @ 8D01B5C
gInterfacePal_MasterBall:: @ 8D01B5C
.incbin "graphics/interface/ball/master.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Net_sheet:: @ 8D01B80
gInterfaceGfx_NetBall:: @ 8D01B80
.incbin "graphics/interface/ball/net.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Net_palette:: @ 8D01C40
gInterfacePal_NetBall:: @ 8D01C40
.incbin "graphics/interface/ball/net.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Dive_sheet:: @ 8D01C60
gInterfaceGfx_DiveBall:: @ 8D01C60
.incbin "graphics/interface/ball/dive.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Dive_palette:: @ 8D01D74
gInterfacePal_DiveBall:: @ 8D01D74
.incbin "graphics/interface/ball/dive.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Nest_sheet:: @ 8D01D9C
gInterfaceGfx_NestBall:: @ 8D01D9C
.incbin "graphics/interface/ball/nest.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Nest_palette:: @ 8D01E60
gInterfacePal_NestBall:: @ 8D01E60
.incbin "graphics/interface/ball/nest.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Repeat_sheet:: @ 8D01E84
gInterfaceGfx_RepeatBall:: @ 8D01E84
.incbin "graphics/interface/ball/repeat.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Repeat_palette:: @ 8D01F44
gInterfacePal_RepeatBall:: @ 8D01F44
.incbin "graphics/interface/ball/repeat.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Timer_sheet:: @ 8D01F68
gInterfaceGfx_TimerBall:: @ 8D01F68
.incbin "graphics/interface/ball/timer.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Timer_palette:: @ 8D02060
gInterfacePal_TimerBall:: @ 8D02060
.incbin "graphics/interface/ball/timer.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Luxury_sheet:: @ 8D02084
gInterfaceGfx_LuxuryBall:: @ 8D02084
.incbin "graphics/interface/ball/luxury.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Luxury_palette:: @ 8D021B0
gInterfacePal_LuxuryBall:: @ 8D021B0
.incbin "graphics/interface/ball/luxury.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Premier_sheet:: @ 8D021D8
gInterfaceGfx_PremierBall:: @ 8D021D8
.incbin "graphics/interface/ball/premier.4bpp.lz"
.align 2
gFile_graphics_interface_ball_Premier_palette:: @ 8D022C8
gInterfacePal_PremierBall:: @ 8D022C8
.incbin "graphics/interface/ball/premier.gbapal.lz"
.align 2
gFile_graphics_interface_ball_Open_sheet:: @ 8D022E8
gOpenPokeballGfx:: @ 8D022E8
.incbin "graphics/interface/ball_open.4bpp.lz"
.align 2
-116
View File
@@ -1,116 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2, 0
gUnknown_826056C:: @ 826056C
obj_tiles gFile_graphics_interface_ball_Poke_sheet, 0x180, 55000
obj_tiles gFile_graphics_interface_ball_Great_sheet, 0x180, 55001
obj_tiles gFile_graphics_interface_ball_Safari_sheet, 0x180, 55002
obj_tiles gFile_graphics_interface_ball_Ultra_sheet, 0x180, 55003
obj_tiles gFile_graphics_interface_ball_Master_sheet, 0x180, 55004
obj_tiles gFile_graphics_interface_ball_Net_sheet, 0x180, 55005
obj_tiles gFile_graphics_interface_ball_Dive_sheet, 0x180, 55006
obj_tiles gFile_graphics_interface_ball_Nest_sheet, 0x180, 55007
obj_tiles gFile_graphics_interface_ball_Repeat_sheet, 0x180, 55008
obj_tiles gFile_graphics_interface_ball_Timer_sheet, 0x180, 55009
obj_tiles gFile_graphics_interface_ball_Luxury_sheet, 0x180, 55010
obj_tiles gFile_graphics_interface_ball_Premier_sheet, 0x180, 55011
gUnknown_82605CC:: @ 82605CC
obj_pal gFile_graphics_interface_ball_Poke_palette, 55000
obj_pal gFile_graphics_interface_ball_Great_palette, 55001
obj_pal gFile_graphics_interface_ball_Safari_palette, 55002
obj_pal gFile_graphics_interface_ball_Ultra_palette, 55003
obj_pal gFile_graphics_interface_ball_Master_palette, 55004
obj_pal gFile_graphics_interface_ball_Net_palette, 55005
obj_pal gFile_graphics_interface_ball_Dive_palette, 55006
obj_pal gFile_graphics_interface_ball_Nest_palette, 55007
obj_pal gFile_graphics_interface_ball_Repeat_palette, 55008
obj_pal gFile_graphics_interface_ball_Timer_palette, 55009
obj_pal gFile_graphics_interface_ball_Luxury_palette, 55010
obj_pal gFile_graphics_interface_ball_Premier_palette, 55011
gOamData_826062C:: @ 826062C
.4byte 0x40000300, 0x00000800
gSpriteAnim_8260634:: @ 8260634
obj_image_anim_frame 0x0, 0x5
obj_image_anim_jump 0
gSpriteAnim_826063C:: @ 826063C
obj_image_anim_frame 0x4, 0x1
obj_image_anim_jump 0
gSpriteAnim_8260644:: @ 8260644
obj_image_anim_frame 0x8, 0x5
obj_image_anim_jump 0
gSpriteAnim_826064C:: @ 826064C
obj_image_anim_frame 0xc, 0x1
obj_image_anim_jump 0
gSpriteAnim_8260654:: @ 8260654
obj_image_anim_frame 0x0, 0x1
obj_image_anim_end
gSpriteAnim_826065C:: @ 826065C
obj_image_anim_frame 0x4, 0x5
obj_image_anim_frame 0x8, 0x5
obj_image_anim_end
gSpriteAnim_8260668:: @ 8260668
obj_image_anim_frame 0x4, 0x5
obj_image_anim_frame 0x0, 0x5
obj_image_anim_end
gSpriteAnimTable_8260674::
.4byte gSpriteAnim_8260654
.4byte gSpriteAnim_826065C
.4byte gSpriteAnim_8260668
.4byte gSpriteAnim_8260634
.4byte gSpriteAnim_8260644
.4byte gSpriteAnim_826063C
.4byte gSpriteAnim_826064C
gSpriteAffineAnims_8260690::
obj_rot_scal_anim_frame 0x0, 0x0, 0x0, 0x1
obj_rot_scal_anim_jump 0
gSpriteAffineAnims_82606A0::
obj_rot_scal_anim_frame 0x0, 0x0, 0xfd, 0x1
obj_rot_scal_anim_jump 0
gSpriteAffineAnims_82606B0::
obj_rot_scal_anim_frame 0x0, 0x0, 0x3, 0x1
obj_rot_scal_anim_jump 0
gSpriteAffineAnims_82606C0::
obj_rot_scal_anim_frame 0x100, 0x100, 0x0, 0x0
obj_rot_scal_anim_end
gSpriteAffineAnims_82606D0::
obj_rot_scal_anim_frame 0x0, 0x0, 0x19, 0x1
obj_rot_scal_anim_jump 0
gSpriteAffineAnimTable_82606E0::
.4byte gSpriteAffineAnims_8260690
.4byte gSpriteAffineAnims_82606A0
.4byte gSpriteAffineAnims_82606B0
.4byte gSpriteAffineAnims_82606C0
.4byte gSpriteAffineAnims_82606D0
gUnknown_82606F4:: @ 82606F4
spr_template 55000, 55000, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55001, 55001, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55002, 55002, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55003, 55003, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55004, 55004, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55005, 55005, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55006, 55006, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55007, 55007, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55008, 55008, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55009, 55009, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55010, 55010, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
spr_template 55011, 55011, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow
+25 -25
View File
@@ -7,31 +7,31 @@
#include "global.h"
extern const u8 gInterfaceGfx_PokeBall[];
extern const u8 gInterfacePal_PokeBall[];
extern const u8 gInterfaceGfx_GreatBall[];
extern const u8 gInterfacePal_GreatBall[];
extern const u8 gInterfaceGfx_SafariBall[];
extern const u8 gInterfacePal_SafariBall[];
extern const u8 gInterfaceGfx_UltraBall[];
extern const u8 gInterfacePal_UltraBall[];
extern const u8 gInterfaceGfx_MasterBall[];
extern const u8 gInterfacePal_MasterBall[];
extern const u8 gInterfaceGfx_NetBall[];
extern const u8 gInterfacePal_NetBall[];
extern const u8 gInterfaceGfx_DiveBall[];
extern const u8 gInterfacePal_DiveBall[];
extern const u8 gInterfaceGfx_NestBall[];
extern const u8 gInterfacePal_NestBall[];
extern const u8 gInterfaceGfx_RepeatBall[];
extern const u8 gInterfacePal_RepeatBall[];
extern const u8 gInterfaceGfx_TimerBall[];
extern const u8 gInterfacePal_TimerBall[];
extern const u8 gInterfaceGfx_LuxuryBall[];
extern const u8 gInterfacePal_LuxuryBall[];
extern const u8 gInterfaceGfx_PremierBall[];
extern const u8 gInterfacePal_PremierBall[];
extern const u8 gOpenPokeballGfx[];
extern const u32 gInterfaceGfx_PokeBall[];
extern const u32 gInterfacePal_PokeBall[];
extern const u32 gInterfaceGfx_GreatBall[];
extern const u32 gInterfacePal_GreatBall[];
extern const u32 gInterfaceGfx_SafariBall[];
extern const u32 gInterfacePal_SafariBall[];
extern const u32 gInterfaceGfx_UltraBall[];
extern const u32 gInterfacePal_UltraBall[];
extern const u32 gInterfaceGfx_MasterBall[];
extern const u32 gInterfacePal_MasterBall[];
extern const u32 gInterfaceGfx_NetBall[];
extern const u32 gInterfacePal_NetBall[];
extern const u32 gInterfaceGfx_DiveBall[];
extern const u32 gInterfacePal_DiveBall[];
extern const u32 gInterfaceGfx_NestBall[];
extern const u32 gInterfacePal_NestBall[];
extern const u32 gInterfaceGfx_RepeatBall[];
extern const u32 gInterfacePal_RepeatBall[];
extern const u32 gInterfaceGfx_TimerBall[];
extern const u32 gInterfacePal_TimerBall[];
extern const u32 gInterfaceGfx_LuxuryBall[];
extern const u32 gInterfacePal_LuxuryBall[];
extern const u32 gInterfaceGfx_PremierBall[];
extern const u32 gInterfacePal_PremierBall[];
extern const u32 gOpenPokeballGfx[];
// pokemon gfx
extern const u32 gMonFrontPic_Bulbasaur[];
+1 -1
View File
@@ -24,7 +24,6 @@ enum
#define POKEBALL_OPPONENT_SENDOUT 0xFE
u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow);
//void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species)
void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h);
u8 CreateTradePokeballSprite(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h);
u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
@@ -33,5 +32,6 @@ void DoHitAnimHealthboxEffect(u8 bank);
void LoadBallGfx(u8 ballId);
void FreeBallGfx(u8 ballId);
void sub_804BD94(u8 battler);
void DestroySpriteAndFreeResources2(struct Sprite *sprite);
#endif // GUARD_POKEBALL_H
+1 -1
View File
@@ -15,7 +15,7 @@ struct Task
/*0x05*/ u8 prev;
/*0x06*/ u8 next;
/*0x07*/ u8 priority;
/*0x08*/ s16 data[16]; //8, a, c, e, 10, 12, 14, 16, 18, 1a, 1c, 1e, 20, 22, 24, 26
/*0x08*/ s16 data[16];
}; /*size = 0x28*/
extern struct Task gTasks[];
+1 -1
View File
@@ -400,7 +400,7 @@ SECTIONS {
src/daycare.o(.rodata);
src/battle_gfx_sfx_util.o(.rodata);
data/battle_interface.o(.rodata);
data/pokeball.o(.rodata);
src/pokeball.o(.rodata);
src/trade.o(.rodata);
src/trade_scene.o(.rodata);
data/overworld.o(.rodata);
+296 -55
View File
@@ -25,6 +25,19 @@
#define sBattler data[6]
#define GFX_TAG_POKE_BALL 55000
#define GFX_TAG_GREAT_BALL 55001
#define GFX_TAG_SAFARI_BALL 55002
#define GFX_TAG_ULTRA_BALL 55003
#define GFX_TAG_MASTER_BALL 55004
#define GFX_TAG_NET_BALL 55005
#define GFX_TAG_DIVE_BALL 55006
#define GFX_TAG_NEST_BALL 55007
#define GFX_TAG_REPEAT_BALL 55008
#define GFX_TAG_TIMER_BALL 55009
#define GFX_TAG_LUXURY_BALL 55010
#define GFX_TAG_PREMIER_BALL 55011
// Function Declarations
static void Task_DoPokeballSendOutAnim(u8 taskId);
static void SpriteCB_TestBallThrow(struct Sprite *sprite);
@@ -51,18 +64,266 @@ static void sub_804BAA4(struct Sprite *sprite);
static void sub_804BC50(struct Sprite *sprite);
static void sub_804BCF8(struct Sprite *sprite);
static void sub_804BD6C(struct Sprite *sprite);
static void DestroySpriteAndFreeResources2(struct Sprite *sprite);
static void sub_804BE24(struct Sprite *sprite);
static void sub_804BE48(struct Sprite *sprite);
static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite);
static u16 GetBattlerPokeballItemId(u8 battlerId);
// Data
extern const struct SpriteTemplate gUnknown_82606F4[];
const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT] =
{
{gInterfaceGfx_PokeBall, 384, GFX_TAG_POKE_BALL},
{gInterfaceGfx_GreatBall, 384, GFX_TAG_GREAT_BALL},
{gInterfaceGfx_SafariBall, 384, GFX_TAG_SAFARI_BALL},
{gInterfaceGfx_UltraBall, 384, GFX_TAG_ULTRA_BALL},
{gInterfaceGfx_MasterBall, 384, GFX_TAG_MASTER_BALL},
{gInterfaceGfx_NetBall, 384, GFX_TAG_NET_BALL},
{gInterfaceGfx_DiveBall, 384, GFX_TAG_DIVE_BALL},
{gInterfaceGfx_NestBall, 384, GFX_TAG_NEST_BALL},
{gInterfaceGfx_RepeatBall, 384, GFX_TAG_REPEAT_BALL},
{gInterfaceGfx_TimerBall, 384, GFX_TAG_TIMER_BALL},
{gInterfaceGfx_LuxuryBall, 384, GFX_TAG_LUXURY_BALL},
{gInterfaceGfx_PremierBall, 384, GFX_TAG_PREMIER_BALL},
};
extern const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT];
extern const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT];
extern const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT];
const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT] =
{
{gInterfacePal_PokeBall, GFX_TAG_POKE_BALL},
{gInterfacePal_GreatBall, GFX_TAG_GREAT_BALL},
{gInterfacePal_SafariBall, GFX_TAG_SAFARI_BALL},
{gInterfacePal_UltraBall, GFX_TAG_ULTRA_BALL},
{gInterfacePal_MasterBall, GFX_TAG_MASTER_BALL},
{gInterfacePal_NetBall, GFX_TAG_NET_BALL},
{gInterfacePal_DiveBall, GFX_TAG_DIVE_BALL},
{gInterfacePal_NestBall, GFX_TAG_NEST_BALL},
{gInterfacePal_RepeatBall, GFX_TAG_REPEAT_BALL},
{gInterfacePal_TimerBall, GFX_TAG_TIMER_BALL},
{gInterfacePal_LuxuryBall, GFX_TAG_LUXURY_BALL},
{gInterfacePal_PremierBall, GFX_TAG_PREMIER_BALL},
};
static const struct OamData sBallOamData =
{
.y = 0,
.affineMode = 3,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
.affineParam = 0,
};
static const union AnimCmd sBallAnimSeq3[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_JUMP(0),
};
static const union AnimCmd sBallAnimSeq5[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_JUMP(0),
};
static const union AnimCmd sBallAnimSeq4[] =
{
ANIMCMD_FRAME(8, 5),
ANIMCMD_JUMP(0),
};
static const union AnimCmd sBallAnimSeq6[] =
{
ANIMCMD_FRAME(12, 1),
ANIMCMD_JUMP(0),
};
static const union AnimCmd sBallAnimSeq0[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
static const union AnimCmd sBallAnimSeq1[] =
{
ANIMCMD_FRAME(4, 5),
ANIMCMD_FRAME(8, 5),
ANIMCMD_END,
};
static const union AnimCmd sBallAnimSeq2[] =
{
ANIMCMD_FRAME(4, 5),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
static const union AnimCmd *const sBallAnimSequences[] =
{
sBallAnimSeq0,
sBallAnimSeq1,
sBallAnimSeq2,
sBallAnimSeq3,
sBallAnimSeq4,
sBallAnimSeq5,
sBallAnimSeq6,
};
static const union AffineAnimCmd sBallAffineAnimSeq0[] =
{
AFFINEANIMCMD_FRAME(0, 0, 0, 1),
AFFINEANIMCMD_JUMP(0),
};
static const union AffineAnimCmd sBallAffineAnimSeq1[] =
{
AFFINEANIMCMD_FRAME(0, 0, -3, 1),
AFFINEANIMCMD_JUMP(0),
};
static const union AffineAnimCmd sBallAffineAnimSeq2[] =
{
AFFINEANIMCMD_FRAME(0, 0, 3, 1),
AFFINEANIMCMD_JUMP(0),
};
static const union AffineAnimCmd sBallAffineAnimSeq3[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_END,
};
static const union AffineAnimCmd sBallAffineAnimSeq4[] =
{
AFFINEANIMCMD_FRAME(0, 0, 25, 1),
AFFINEANIMCMD_JUMP(0),
};
static const union AffineAnimCmd *const sBallAffineAnimSequences[] =
{
sBallAffineAnimSeq0,
sBallAffineAnimSeq1,
sBallAffineAnimSeq2,
sBallAffineAnimSeq3,
sBallAffineAnimSeq4,
};
const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
{
{
.tileTag = GFX_TAG_POKE_BALL,
.paletteTag = GFX_TAG_POKE_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_GREAT_BALL,
.paletteTag = GFX_TAG_GREAT_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_SAFARI_BALL,
.paletteTag = GFX_TAG_SAFARI_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_ULTRA_BALL,
.paletteTag = GFX_TAG_ULTRA_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_MASTER_BALL,
.paletteTag = GFX_TAG_MASTER_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_NET_BALL,
.paletteTag = GFX_TAG_NET_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_DIVE_BALL,
.paletteTag = GFX_TAG_DIVE_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_NEST_BALL,
.paletteTag = GFX_TAG_NEST_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_REPEAT_BALL,
.paletteTag = GFX_TAG_REPEAT_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_TIMER_BALL,
.paletteTag = GFX_TAG_TIMER_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_LUXURY_BALL,
.paletteTag = GFX_TAG_LUXURY_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
{
.tileTag = GFX_TAG_PREMIER_BALL,
.paletteTag = GFX_TAG_PREMIER_BALL,
.oam = &sBallOamData,
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sBallAffineAnimSequences,
.callback = SpriteCB_TestBallThrow,
},
};
// Functions
u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow)
@@ -79,6 +340,7 @@ u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow)
}
#ifdef NONMATCHING
//gender is an unused variable that still manages to show up in the assembly, can't get temporary variables to make it work.
static void Task_DoPokeballSendOutAnim(u8 taskId)
{
u16 throwCaseId;
@@ -86,7 +348,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
u16 itemId, ballId;
u8 ballSpriteId;
bool8 notSendOut = FALSE;
u8 gender;
u8 gender, temp;
if (gTasks[taskId].tFrames == 0)
{
@@ -104,12 +366,14 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
ballId = ItemIdToBallId(itemId);
LoadBallGfx(ballId);
// r10 is set to gender byte here and loaded into a temporary variable to be immediately overwritten by an unused variable..
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
gender = gLinkPlayers[GetBattlerMultiplayerId(battlerId)].gender;
else
gender = gSaveBlock2Ptr->playerGender;
ballSpriteId = CreateSprite(&gUnknown_82606F4[ballId], 32, 80, 29);
ballSpriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29);
gSprites[ballSpriteId].data[0] = 0x80;
gSprites[ballSpriteId].data[1] = 0;
gSprites[ballSpriteId].data[7] = throwCaseId;
@@ -124,7 +388,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
}
else
{
gender == gender;
temp = gender; //mov r0, r10 (r10 = gender), but this is never actually used
gSprites[ballSpriteId].pos1.x = 48;
gSprites[ballSpriteId].pos1.y = 70;
}
@@ -153,7 +417,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
}
// this will perform an unused ball throw animation
gSprites[ballSpriteId].data[0] = 0x22;
gSprites[ballSpriteId].data[0] = 34;
gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_X);
gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_Y) - 16;
gSprites[ballSpriteId].data[5] = -40;
@@ -263,7 +527,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
"\tlsls r0, r5, 1\n"
"\tadds r0, r5\n"
"\tlsls r0, 3\n"
"\tldr r1, _0804AABC @ =gUnknown_82606F4\n"
"\tldr r1, _0804AABC @ =gBallSpriteTemplates\n"
"\tadds r0, r1\n"
"\tmovs r1, 0x20\n"
"\tmovs r2, 0x50\n"
@@ -300,7 +564,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
"\tb _0804AACE\n"
"\t.align 2, 0\n"
"_0804AAB8: .4byte gSaveBlock2Ptr\n"
"_0804AABC: .4byte gUnknown_82606F4\n"
"_0804AABC: .4byte gBallSpriteTemplates\n"
"_0804AAC0: .4byte gSprites\n"
"_0804AAC4: .4byte gBattleTypeFlags\n"
"_0804AAC8:\n"
@@ -485,6 +749,7 @@ static void sub_804AD00(struct Sprite *sprite)
sprite->data[5]++;
if (sprite->data[5] == 11)
PlaySE(SE_SUIKOMU);
if (gSprites[gBattlerSpriteIds[sprite->sBattler]].affineAnimEnded)
{
StartSpriteAnim(sprite, 2);
@@ -654,6 +919,7 @@ static void sub_804AF24(struct Sprite *sprite)
StartSpriteAffineAnim(sprite, 2);
else
StartSpriteAffineAnim(sprite, 1);
PlaySE(SE_BOWA);
}
break;
@@ -663,35 +929,33 @@ static void sub_804AF24(struct Sprite *sprite)
#define tCryTaskSpecies data[0]
#define tCryTaskPan data[1]
#define tCryTaskWantedCry data[2]
#define tCryTaskBattler data[3]
#define tCryTaskMonSpriteId data[4]
#define tCryTaskMonPtr1 data[5]
#define tCryTaskMonPtr2 data[6]
#define tCryTaskMonPtr1 data[3]
#define tCryTaskMonPtr2 data[4]
#define tCryTaskFrames data[10]
#define tCryTaskState data[15]
static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
{
u8 wantedCry = gTasks[taskId].tCryTaskWantedCry;
u8 state2 = gTasks[taskId].data[2];
s8 pan = gTasks[taskId].tCryTaskPan;
u16 species = gTasks[taskId].tCryTaskSpecies;
u8 battlerId = gTasks[taskId].tCryTaskBattler;
u8 monSpriteId = gTasks[taskId].tCryTaskMonSpriteId;
struct Pokemon *mon = (void*)(u32)((gTasks[taskId].tCryTaskMonPtr1 << 0x10) | (u16)(gTasks[taskId].tCryTaskMonPtr2));
struct Pokemon *mon = (void*)(u32)((u32)(gTasks[taskId].tCryTaskMonPtr1 << 0x10) | ((u16)gTasks[taskId].tCryTaskMonPtr2));
switch (gTasks[taskId].tCryTaskState)
{
case 0:
default:
if (gSprites[monSpriteId].affineAnimEnded)
gTasks[taskId].tCryTaskState = wantedCry + 1;
if (gTasks[taskId].data[8] < 3)
gTasks[taskId].data[8]++;
else
gTasks[taskId].tCryTaskState = state2 + 1;
break;
case 1:
if (ShouldPlayNormalPokeCry(mon) == TRUE)
PlayCry3(species, pan, 0);
else
PlayCry3(species, pan, 11);
gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0;
DestroyTask(taskId);
break;
case 2:
@@ -707,7 +971,6 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
else
PlayCry4(species, pan, 12);
gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0;
DestroyTask(taskId);
}
else
@@ -726,7 +989,6 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
break;
}
gTasks[taskId].tCryTaskState++;
// fall through
case 31:
if (!IsCryPlayingOrClearCrySongs())
{
@@ -741,12 +1003,12 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
gTasks[taskId].tCryTaskFrames--;
break;
}
if (ShouldPlayNormalPokeCry(mon) == TRUE)
PlayCry4(species, pan, 0);
else
PlayCry4(species, pan, 11);
gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0;
DestroyTask(taskId);
break;
}
@@ -786,7 +1048,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
if ((battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
&& IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
if (IsBGMPlaying())
m4aMPlayStop(&gMPlayInfo_BGM);
@@ -804,28 +1066,16 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
else
wantedCryCase = 2;
gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 1;
taskId = CreateTask(Task_PlayCryWhenReleasedFromBall, 3);
gTasks[taskId].tCryTaskSpecies = species;
gTasks[taskId].tCryTaskPan = pan;
gTasks[taskId].tCryTaskWantedCry = wantedCryCase;
gTasks[taskId].tCryTaskBattler = battlerId;
gTasks[taskId].tCryTaskMonSpriteId = gBattlerSpriteIds[sprite->sBattler];
gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 0x10;
gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon);
gTasks[taskId].tCryTaskState = 0;
}
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], 1);
/*
if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT)
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = sub_8039B58;
else
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = sub_8039E44;
*/
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000;
}
@@ -833,8 +1083,6 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
#undef tCryTaskSpecies
#undef tCryTaskPan
#undef tCryTaskWantedCry
#undef tCryTaskBattler
#undef tCryTaskMonSpriteId
#undef tCryTaskMonPtr1
#undef tCryTaskMonPtr2
#undef tCryTaskFrames
@@ -903,7 +1151,7 @@ static void sub_804B5C8(struct Sprite *sprite)
{
gDoingBattleAnim = FALSE;
m4aMPlayAllStop();
PlaySE(MUS_FANFA5);
PlaySE(MUS_FAN6);
}
else if (sprite->data[4] == 315)
{
@@ -1026,22 +1274,17 @@ void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y,
LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]);
LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]);
spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy);
gSprites[spriteId].data[0] = monSpriteId;
gSprites[spriteId].data[5] = gSprites[monSpriteId].pos1.x;
gSprites[spriteId].data[6] = gSprites[monSpriteId].pos1.y;
gSprites[monSpriteId].pos1.x = x;
gSprites[monSpriteId].pos1.y = y;
//gSprites[monSpriteId].data[7] = species;
gSprites[spriteId].data[1] = g;
gSprites[spriteId].data[2] = battlerId;
gSprites[spriteId].data[3] = h;
gSprites[spriteId].data[4] = h >> 0x10;
gSprites[spriteId].oam.priority = oamPriority;
gSprites[spriteId].callback = sub_804B9E8;
gSprites[monSpriteId].invisible = TRUE;
}
@@ -1085,11 +1328,13 @@ static void sub_804BAA4(struct Sprite *sprite)
if (sprite->animEnded)
sprite->invisible = TRUE;
if (gSprites[monSpriteId].affineAnimEnded)
{
StartSpriteAffineAnim(&gSprites[monSpriteId], 0);
r12 = TRUE;
}
var1 = (sprite->data[5] - sprite->pos1.x) * sprite->data[7] / 128 + sprite->pos1.x;
var2 = (sprite->data[6] - sprite->pos1.y) * sprite->data[7] / 128 + sprite->pos1.y;
gSprites[monSpriteId].pos1.x = var1;
@@ -1110,16 +1355,9 @@ static void sub_804BAA4(struct Sprite *sprite)
gSprites[monSpriteId].pos2.y = 0;
r6 = TRUE;
}
if (sprite->animEnded && r12 && r6)
{
/*
if (gSprites[monSpriteId].data[7] == SPECIES_EGG)
DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0);
else
DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0);
*/
DestroySpriteAndFreeResources(sprite);
}
}
u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h)
@@ -1174,6 +1412,7 @@ static void sub_804BCF8(struct Sprite *sprite)
sprite->data[5]++;
if (sprite->data[5] == 11)
PlaySE(SE_SUIKOMU);
r1 = sprite->data[0];
if (gSprites[r1].affineAnimEnded)
{
@@ -1195,7 +1434,7 @@ static void sub_804BD6C(struct Sprite *sprite)
sprite->callback = SpriteCallbackDummy;
}
static void DestroySpriteAndFreeResources2(struct Sprite *sprite)
void DestroySpriteAndFreeResources2(struct Sprite *sprite)
{
DestroySpriteAndFreeResources(sprite);
}
@@ -1216,6 +1455,7 @@ void sub_804BD94(u8 battlerId)
healthboxSprite->pos2.x = -healthboxSprite->pos2.x;
healthboxSprite->pos2.y = -healthboxSprite->pos2.y;
}
gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]);
if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)
healthboxSprite->callback = sub_804BE24;
@@ -1273,6 +1513,7 @@ void LoadBallGfx(u8 ballId)
LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[ballId]);
LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[ballId]);
}
switch (ballId)
{
case BALL_DIVE: