diff options
-rw-r--r-- | data/fldeff_cut.s | 31 | ||||
-rwxr-xr-x | data/fldeff_decoration.s | 36 | ||||
-rwxr-xr-x | data/fldeff_secretpower.s | 208 | ||||
-rw-r--r-- | include/field_map_obj.h | 3 | ||||
-rw-r--r-- | ld_script.txt | 6 | ||||
-rw-r--r-- | src/field/field_map_obj.c | 2 | ||||
-rw-r--r-- | src/field/fldeff_cut.c | 53 | ||||
-rw-r--r-- | src/field/fldeff_decoration.c | 63 | ||||
-rw-r--r-- | src/field/fldeff_secretpower.c | 186 |
9 files changed, 298 insertions, 290 deletions
diff --git a/data/fldeff_cut.s b/data/fldeff_cut.s deleted file mode 100644 index e1d27647e..000000000 --- a/data/fldeff_cut.s +++ /dev/null @@ -1,31 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gOamData_CutGrass:: @ 83C15DC - .2byte 0 - .2byte 0 - .2byte 0x1401 - - .align 2 -gSpriteAnim_CutGrass:: @ 83C15E4 - obj_image_anim_frame 0, 30 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_CutGrass:: @ 83C15EC - .4byte gSpriteAnim_CutGrass - - .align 2 -gSpriteImageTable_CutGrass:: @ 83C15F0 - obj_frame_tiles gFieldEffectPic_CutGrass, 0x20 - - .align 2 -gFieldEffectObjectPaletteInfo6:: @ 83C15F8 - obj_pal gFieldEffectObjectPalette6, 0x1000 - - .align 2 -gSpriteTemplate_CutGrass:: @ 83C1600 - spr_template 0xFFFF, 0x1000, gOamData_CutGrass, gSpriteAnimTable_CutGrass, gSpriteImageTable_CutGrass, gDummySpriteAffineAnimTable, sub_80A2A48 diff --git a/data/fldeff_decoration.s b/data/fldeff_decoration.s deleted file mode 100755 index 2081679cd..000000000 --- a/data/fldeff_decoration.s +++ /dev/null @@ -1,36 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gOamData_83D266C:: @ 83D266C - .2byte 0x8000 - .2byte 0x8000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_83D2674:: @ 83D2674 - obj_image_anim_frame 0, 6 - obj_image_anim_frame 1, 6 - obj_image_anim_frame 2, 6 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83D2684:: @ 83D2684 - .4byte gSpriteAnim_83D2674 - - .align 2 -gSpriteImageTable_83D2688:: @ 83D2688 - obj_frame_tiles gSpriteImage_83D21EC, 0x100 - obj_frame_tiles gSpriteImage_83D22EC, 0x100 - obj_frame_tiles gSpriteImage_83D23EC, 0x100 - - .align 2 -gSpriteTemplate_83D26A0:: @ 83D26A0 - spr_template 0xFFFF, 4110, gOamData_83D266C, gSpriteAnimTable_83D2684, gSpriteImageTable_83D2688, gDummySpriteAffineAnimTable, SpriteCB_SandPillar_0 - -@ This uses one of the secret base palettes, so there is no "09.pal" file. - .align 2 -gFieldEffectObjectPaletteInfo9:: @ 83D26B8 - obj_pal gTilesetPalettes_SecretBase + 5 * 0x20, 0x100E diff --git a/data/fldeff_secretpower.s b/data/fldeff_secretpower.s deleted file mode 100755 index 589ded675..000000000 --- a/data/fldeff_secretpower.s +++ /dev/null @@ -1,208 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSpriteImage_83D198C:: @ 83D198C - .incbin "graphics/unknown_sprites/83D259C/0.4bpp" - - .align 2 -gSpriteImage_83D1A0C:: @ 83D1A0C - .incbin "graphics/unknown_sprites/83D259C/1.4bpp" - - .align 2 -gSpriteImage_83D1A8C:: @ 83D1A8C - .incbin "graphics/unknown_sprites/83D259C/2.4bpp" - - .align 2 -gSpriteImage_83D1B0C:: @ 83D1B0C - .incbin "graphics/unknown_sprites/83D259C/3.4bpp" - - .align 2 -gSpriteImage_83D1B8C:: @ 83D1B8C - .incbin "graphics/unknown_sprites/83D259C/4.4bpp" - - .space 32 - - .align 2 -gFieldEffectObjectPalette7: @ 83D1C2C - .incbin "graphics/field_effect_objects/palettes/07.gbapal" - - .align 2 -gSpriteImage_83D1C4C:: @ 83D1C4C - .incbin "graphics/unknown_sprites/83D25EC/0.4bpp" - - .align 2 -gSpriteImage_83D1CCC:: @ 83D1CCC - .incbin "graphics/unknown_sprites/83D25EC/1.4bpp" - - .align 2 -gSpriteImage_83D1D4C:: @ 83D1D4C - .incbin "graphics/unknown_sprites/83D25EC/2.4bpp" - - .align 2 -gSpriteImage_83D1DCC:: @ 83D1DCC - .incbin "graphics/unknown_sprites/83D25EC/3.4bpp" - - .align 2 -gSpriteImage_83D1E4C:: @ 83D1E4C - .incbin "graphics/unknown_sprites/83D25EC/4.4bpp" - - .align 2 -gSpriteImage_83D1ECC:: @ 83D1ECC - .incbin "graphics/unknown_sprites/83D25C4/0.4bpp" - - .align 2 -gSpriteImage_83D1F4C:: @ 83D1F4C - .incbin "graphics/unknown_sprites/83D25C4/1.4bpp" - - .align 2 -gSpriteImage_83D1FCC:: @ 83D1FCC - .incbin "graphics/unknown_sprites/83D25C4/2.4bpp" - - .align 2 -gSpriteImage_83D204C:: @ 83D204C - .incbin "graphics/unknown_sprites/83D25C4/3.4bpp" - - .align 2 -gSpriteImage_83D20CC:: @ 83D20CC - .incbin "graphics/unknown_sprites/83D25C4/4.4bpp" - - .align 2 - .incbin "graphics/unknown_sprites/83D25C4/5.4bpp" - - .align 2 -gFieldEffectObjectPalette8: @ 83D21CC - .incbin "graphics/field_effect_objects/palettes/08.gbapal" - - .align 2 -gSpriteImage_83D21EC:: @ 83D21EC - .incbin "graphics/unknown_sprites/83D2688/0.4bpp" - - .align 2 -gSpriteImage_83D22EC:: @ 83D22EC - .incbin "graphics/unknown_sprites/83D2688/1.4bpp" - - .align 2 -gSpriteImage_83D23EC:: @ 83D23EC - .incbin "graphics/unknown_sprites/83D2688/2.4bpp" - - .align 2 -gOamData_83D24EC:: @ 83D24EC - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_83D24F4:: @ 83D24F4 - obj_image_anim_frame 0, 8 - obj_image_anim_frame 1, 8 - obj_image_anim_frame 2, 8 - obj_image_anim_frame 3, 8 - obj_image_anim_frame 4, 8 - obj_image_anim_end - - .align 2 -gSpriteAnim_83D250C:: @ 83D250C - obj_image_anim_frame 0, 8 - obj_image_anim_frame 1, 8 - obj_image_anim_frame 2, 8 - obj_image_anim_frame 3, 8 - obj_image_anim_frame 4, 8 - obj_image_anim_end - - .align 2 -gSpriteAnim_83D2524:: @ 83D2524 - obj_image_anim_frame 4, 8 - obj_image_anim_frame 3, 8 - obj_image_anim_frame 2, 8 - obj_image_anim_frame 1, 8 - obj_image_anim_frame 0, 8 - obj_image_anim_end - - .align 2 -gSpriteAnim_83D253C:: @ 83D253C - obj_image_anim_frame 0, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 1, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 2, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 3, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_83D2554:: @ 83D2554 - obj_image_anim_frame 4, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 3, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 2, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 1, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_83D256C:: @ 83D256C - obj_image_anim_frame 0, 8 - obj_image_anim_frame 1, 8 - obj_image_anim_frame 2, 8 - obj_image_anim_frame 3, 8 - obj_image_anim_frame 4, 8 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83D2584:: @ 83D2584 - .4byte gSpriteAnim_83D24F4 - - .align 2 -gSpriteAnimTable_83D2588:: @ 83D2588 - .4byte gSpriteAnim_83D250C - .4byte gSpriteAnim_83D2524 - .4byte gSpriteAnim_83D253C - .4byte gSpriteAnim_83D2554 - - .align 2 -gSpriteAnimTable_83D2598:: @ 83D2598 - .4byte gSpriteAnim_83D256C - - .align 2 -gSpriteImageTable_83D259C:: @ 83D259C - obj_frame_tiles gSpriteImage_83D198C, 0x80 - obj_frame_tiles gSpriteImage_83D1A0C, 0x80 - obj_frame_tiles gSpriteImage_83D1A8C, 0x80 - obj_frame_tiles gSpriteImage_83D1B0C, 0x80 - obj_frame_tiles gSpriteImage_83D1B8C, 0x80 - - .align 2 -gSpriteImageTable_83D25C4:: @ 83D25C4 - obj_frame_tiles gSpriteImage_83D1ECC, 0x80 - obj_frame_tiles gSpriteImage_83D1F4C, 0x80 - obj_frame_tiles gSpriteImage_83D1FCC, 0x80 - obj_frame_tiles gSpriteImage_83D204C, 0x80 - obj_frame_tiles gSpriteImage_83D20CC, 0x80 - - .align 2 -gSpriteImageTable_83D25EC:: @ 83D25EC - obj_frame_tiles gSpriteImage_83D1C4C, 0x80 - obj_frame_tiles gSpriteImage_83D1CCC, 0x80 - obj_frame_tiles gSpriteImage_83D1D4C, 0x80 - obj_frame_tiles gSpriteImage_83D1DCC, 0x80 - obj_frame_tiles gSpriteImage_83D1E4C, 0x80 - - .align 2 -gSpriteTemplate_83D2614:: @ 83D2614 - spr_template 0xFFFF, 4099, gOamData_83D24EC, gSpriteAnimTable_83D2584, gSpriteImageTable_83D259C, gDummySpriteAffineAnimTable, sub_80C644C - - .align 2 -gSpriteTemplate_83D262C:: @ 83D262C - spr_template 0xFFFF, 4104, gOamData_83D24EC, gSpriteAnimTable_83D2588, gSpriteImageTable_83D25C4, gDummySpriteAffineAnimTable, sub_80C6598 - - .align 2 -gSpriteTemplate_83D2644:: @ 83D2644 - spr_template 0xFFFF, 4104, gOamData_83D24EC, gSpriteAnimTable_83D2598, gSpriteImageTable_83D25EC, gDummySpriteAffineAnimTable, sub_80C66BC - - .align 2 -gFieldEffectObjectPaletteInfo7:: @ 83D265C - obj_pal gFieldEffectObjectPalette7, 0x1003 - - .align 2 -gFieldEffectObjectPaletteInfo8:: @ 83D2664 - obj_pal gFieldEffectObjectPalette8, 0x1008 diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 22674406d..f0b0bb5ab 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -38,6 +38,9 @@ extern const u16 gMapObjectPalette19[]; extern const u32 gMapObjectPic_MovingBox[32]; extern const struct SpriteFrameImage gMapObjectPicTable_PechaBerryTree[]; +extern const u8 gFieldEffectPic_CutGrass[]; +extern const u16 gFieldEffectObjectPalette6[]; + void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); diff --git a/ld_script.txt b/ld_script.txt index 78844929a..fecd5a2e2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -513,7 +513,7 @@ SECTIONS { data/pokemon_storage_system.o(.rodata); src/pokemon/pokemon_icon.o(.rodata); src/pokemon/pokemon_summary_screen.o(.rodata); - data/fldeff_cut.o(.rodata); + src/field/fldeff_cut.o(.rodata); src/field/item_menu.o(.rodata); data/battle_anim_80A7E7C.o(.rodata); src/field/item.o(.rodata); @@ -535,8 +535,8 @@ SECTIONS { src/pokemon/pokemon_size_record.o(.rodata); src/field/pc_screen_effect.o(.rodata); data/pc_screen_effect.o(.rodata); - data/fldeff_secretpower.o(.rodata); - data/fldeff_decoration.o(.rodata); + src/field/fldeff_secretpower.o(.rodata); + src/field/fldeff_decoration.o(.rodata); src/field/fldeff_recordmixing.o(.rodata); src/field/field_special_scene.o(.rodata); src/field/rotating_gate.o(.rodata); diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 0e6794ed7..81c0c5854 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1354,7 +1354,7 @@ const u32 gFieldEffectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effect_obj const u32 gFieldEffectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_large.4bpp"); const u32 gFieldEffectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_extra_large.4bpp"); const u32 filler_8368A08[0x48] = {}; -const u32 gFieldEffectPic_CutGrass[] = INCBIN_U32("graphics/field_effect_objects/pics/cut_grass.4bpp"); +const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effect_objects/pics/cut_grass.4bpp"); const u32 FieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effect_objects/pics/cut_grass.4bpp"); const u16 gFieldEffectObjectPalette6[] = INCBIN_U16("graphics/field_effect_objects/palettes/06.gbapal"); const u32 gFieldEffectPic_Ripple_0[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/0.4bpp"); diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index edf38d800..e4328acfc 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -2,6 +2,7 @@ #include "fldeff_cut.h" #include "field_camera.h" #include "field_effect.h" +#include "field_map_obj.h" #include "field_player_avatar.h" #include "fieldmap.h" #include "map_obj_lock.h" @@ -20,12 +21,56 @@ extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); +extern u8 gLastFieldPokeMenuOpened; -extern struct SpriteTemplate gSpriteTemplate_CutGrass; +extern const u8 S_UseCut[]; -extern u8 gLastFieldPokeMenuOpened; +const struct OamData gOamData_CutGrass = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 1, + .priority = 1, + .paletteNum = 1, + .affineParam = 0, +}; -extern u8 S_UseCut[]; +const union AnimCmd gSpriteAnim_CutGrass[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_CutGrass[] = +{ + gSpriteAnim_CutGrass, +}; + +const struct SpriteFrameImage gSpriteImageTable_CutGrass[] = +{ + {gFieldEffectPic_CutGrass, 0x20}, +}; + +const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, 0x1000}; + +static void sub_80A2A48(struct Sprite *); +static const struct SpriteTemplate gSpriteTemplate_CutGrass = +{ + .tileTag = 0xFFFF, + .paletteTag = 0x1000, + .oam = &gOamData_CutGrass, + .anims = gSpriteAnimTable_CutGrass, + .images = gSpriteImageTable_CutGrass, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A2A48, +}; bool8 SetUpFieldMove_Cut(void) { @@ -238,7 +283,7 @@ void sub_80A28F4(s16 x, s16 y) } } -void sub_80A2A48(struct Sprite *sprite) +static void sub_80A2A48(struct Sprite *sprite) { sprite->data[0] = 8; sprite->data[1] = 0; diff --git a/src/field/fldeff_decoration.c b/src/field/fldeff_decoration.c index d58f53a3c..7c8ff44db 100644 --- a/src/field/fldeff_decoration.c +++ b/src/field/fldeff_decoration.c @@ -13,14 +13,69 @@ #include "task.h" #include "text.h" -extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; -extern const struct SpriteTemplate gSpriteTemplate_83D26A0; +extern const u8 gSpriteImage_83D21EC[]; +extern const u8 gSpriteImage_83D22EC[]; +extern const u8 gSpriteImage_83D23EC[]; +extern const u16 gTilesetPalettes_SecretBase[][16]; + +const struct OamData gOamData_83D266C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_83D2674[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2684[] = +{ + gSpriteAnim_83D2674, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D2688[] = +{ + {gSpriteImage_83D21EC, 0x100}, + {gSpriteImage_83D22EC, 0x100}, + {gSpriteImage_83D23EC, 0x100}, +}; -static void sub_80C68EC(u8); -static void DoBalloonSoundEffect(s16); void SpriteCB_SandPillar_0(struct Sprite *); void SpriteCB_SandPillar_1(struct Sprite *); void SpriteCB_SandPillar_2(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D26A0 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4110, + .oam = &gOamData_83D266C, + .anims = gSpriteAnimTable_83D2684, + .images = gSpriteImageTable_83D2688, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SandPillar_0, +}; + +// This uses one of the secret base palettes, so there is no "09.pal" file. +const struct SpritePalette gFieldEffectObjectPaletteInfo9 = {gTilesetPalettes_SecretBase[5], 0x100E}; + +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; + +static void sub_80C68EC(u8); +static void DoBalloonSoundEffect(s16); void sub_80C68A4(s16 metatileId, s16 x, s16 y) { diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index cd9a2ae36..9bcfaa8c4 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -17,9 +17,189 @@ extern u8 gUnknown_081A2CE6[]; extern u8 gUnknown_081A2D3E[]; extern u8 gUnknown_081A2D96[]; -extern struct SpriteTemplate gSpriteTemplate_83D2614; -extern struct SpriteTemplate gSpriteTemplate_83D262C; -extern struct SpriteTemplate gSpriteTemplate_83D2644; +const u8 gSpriteImage_83D198C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/0.4bpp"); +const u8 gSpriteImage_83D1A0C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/1.4bpp"); +const u8 gSpriteImage_83D1A8C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/2.4bpp"); +const u8 gSpriteImage_83D1B0C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/3.4bpp"); +const u8 gSpriteImage_83D1B8C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/4.4bpp"); +const u8 gUnusedEmptySpace_83D1C0C[32] = {0}; +const u16 gFieldEffectObjectPalette7[] = INCBIN_U16("graphics/field_effect_objects/palettes/07.gbapal"); +const u8 gSpriteImage_83D1C4C[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/0.4bpp"); +const u8 gSpriteImage_83D1CCC[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/1.4bpp"); +const u8 gSpriteImage_83D1D4C[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/2.4bpp"); +const u8 gSpriteImage_83D1DCC[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/3.4bpp"); +const u8 gSpriteImage_83D1E4C[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/4.4bpp"); +const u8 gSpriteImage_83D1ECC[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/0.4bpp"); +const u8 gSpriteImage_83D1F4C[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/1.4bpp"); +const u8 gSpriteImage_83D1FCC[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/2.4bpp"); +const u8 gSpriteImage_83D204C[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/3.4bpp"); +const u8 gSpriteImage_83D20CC[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/4.4bpp"); +const u8 gSpriteImage_83D214C[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/5.4bpp"); // unused +const u16 gFieldEffectObjectPalette8[] = INCBIN_U16("graphics/field_effect_objects/palettes/08.gbapal"); +const u8 gSpriteImage_83D21EC[] = INCBIN_U8("graphics/unknown_sprites/83D2688/0.4bpp"); +const u8 gSpriteImage_83D22EC[] = INCBIN_U8("graphics/unknown_sprites/83D2688/1.4bpp"); +const u8 gSpriteImage_83D23EC[] = INCBIN_U8("graphics/unknown_sprites/83D2688/2.4bpp"); + +const struct OamData gOamData_83D24EC = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_83D24F4[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D250C[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D2524[] = +{ + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D253C[] = +{ + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .hFlip = TRUE), + ANIMCMD_FRAME(2, 8, .hFlip = TRUE), + ANIMCMD_FRAME(3, 8, .hFlip = TRUE), + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D2554[] = +{ + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_FRAME(3, 8, .hFlip = TRUE), + ANIMCMD_FRAME(2, 8, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .hFlip = TRUE), + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D256C[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2584[] = +{ + gSpriteAnim_83D24F4, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2588[] = +{ + gSpriteAnim_83D250C, + gSpriteAnim_83D2524, + gSpriteAnim_83D253C, + gSpriteAnim_83D2554, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2598[] = +{ + gSpriteAnim_83D256C, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D259C[] = +{ + {gSpriteImage_83D198C, 0x80}, + {gSpriteImage_83D1A0C, 0x80}, + {gSpriteImage_83D1A8C, 0x80}, + {gSpriteImage_83D1B0C, 0x80}, + {gSpriteImage_83D1B8C, 0x80}, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D25C4[] = +{ + {gSpriteImage_83D1ECC, 0x80}, + {gSpriteImage_83D1F4C, 0x80}, + {gSpriteImage_83D1FCC, 0x80}, + {gSpriteImage_83D204C, 0x80}, + {gSpriteImage_83D20CC, 0x80}, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D25EC[] = +{ + {gSpriteImage_83D1C4C, 0x80}, + {gSpriteImage_83D1CCC, 0x80}, + {gSpriteImage_83D1D4C, 0x80}, + {gSpriteImage_83D1DCC, 0x80}, + {gSpriteImage_83D1E4C, 0x80}, +}; + +void sub_80C644C(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D2614 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4099, + .oam = &gOamData_83D24EC, + .anims = gSpriteAnimTable_83D2584, + .images = gSpriteImageTable_83D259C, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80C644C, +}; + +void sub_80C6598(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D262C = +{ + .tileTag = 0xFFFF, + .paletteTag = 4104, + .oam = &gOamData_83D24EC, + .anims = gSpriteAnimTable_83D2588, + .images = gSpriteImageTable_83D25C4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80C6598, +}; + +void sub_80C66BC(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D2644 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4104, + .oam = &gOamData_83D24EC, + .anims = gSpriteAnimTable_83D2598, + .images = gSpriteImageTable_83D25EC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80C66BC, +}; + +const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003}; +const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008}; void sub_80C639C(void); void sub_80C63E8(void); |