diff options
author | camthesaxman <cameronghall@cox.net> | 2017-06-19 13:34:32 -0500 |
---|---|---|
committer | Marijn van der Werf <marijn.vanderwerf@gmail.com> | 2017-06-20 15:13:44 +0200 |
commit | e072ddd6fbae8b303de546d0e9bd5ace2ecb20a1 (patch) | |
tree | 5652c2e7dc0cd743c6114af68bb5af5e88f9a076 | |
parent | 1fafe80241d56c7e89aa37d0bf6d20a0f4d208f2 (diff) |
move data to C and introduce CompressedSpriteSheet and CompressedSpritePalette
-rw-r--r-- | asm/battle_anim_813F0F4.s | 8 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 4 | ||||
-rw-r--r-- | data/pokeball.s | 137 | ||||
-rw-r--r-- | include/data2.h | 19 | ||||
-rw-r--r-- | include/decompress.h | 14 | ||||
-rw-r--r-- | include/field_effect.h | 6 | ||||
-rw-r--r-- | include/graphics.h | 26 | ||||
-rw-r--r-- | include/intro_credits_graphics.h | 14 | ||||
-rw-r--r-- | include/pokeball.h | 2 | ||||
-rw-r--r-- | include/pokemon.h | 5 | ||||
-rw-r--r-- | include/sprite.h | 21 | ||||
-rwxr-xr-x | ld_script.txt | 2 | ||||
-rw-r--r-- | src/battle_7.c | 50 | ||||
-rw-r--r-- | src/battle_anim.c | 4 | ||||
-rw-r--r-- | src/berry_tag_screen.c | 4 | ||||
-rw-r--r-- | src/credits.c | 6 | ||||
-rw-r--r-- | src/decompress.c | 64 | ||||
-rwxr-xr-x | src/field_effect.c | 3 | ||||
-rw-r--r-- | src/intro.c | 18 | ||||
-rw-r--r-- | src/money.c | 4 | ||||
-rw-r--r-- | src/pokeball.c | 313 | ||||
-rw-r--r-- | src/pokedex.c | 10 | ||||
-rw-r--r-- | src/pokemon_3.c | 8 | ||||
-rw-r--r-- | src/script_pokemon_util_80C4BF0.c | 19 | ||||
-rw-r--r-- | src/starter_choose.c | 4 | ||||
-rw-r--r-- | src/title_screen.c | 6 | ||||
-rw-r--r-- | src/wallclock.c | 2 |
27 files changed, 476 insertions, 297 deletions
diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s index 296db945e..a5ab2fb83 100644 --- a/asm/battle_anim_813F0F4.s +++ b/asm/battle_anim_813F0F4.s @@ -1218,7 +1218,7 @@ sub_813FA94: @ 813FA94 lsls r0, r1, 1 adds r0, r1 lsls r0, 3 - ldr r1, _0813FB5C @ =gSpriteTemplate_820AAB4 + ldr r1, _0813FB5C @ =gBallSpriteTemplates adds r0, r1 movs r1, 0x20 movs r2, 0x50 @@ -1295,7 +1295,7 @@ sub_813FA94: @ 813FA94 bx r0 .align 2, 0 _0813FB58: .4byte gLastUsedItem -_0813FB5C: .4byte gSpriteTemplate_820AAB4 +_0813FB5C: .4byte gBallSpriteTemplates _0813FB60: .4byte gSprites _0813FB64: .4byte gBattleAnimEnemyMonIndex _0813FB68: .4byte sub_813FD90 @@ -1378,7 +1378,7 @@ _0813FBE0: lsls r0, r4, 1 adds r0, r4 lsls r0, 3 - ldr r1, _0813FCA0 @ =gSpriteTemplate_820AAB4 + ldr r1, _0813FCA0 @ =gBallSpriteTemplates adds r0, r1 adds r1, r6, 0 adds r1, 0x20 @@ -1447,7 +1447,7 @@ _0813FBE0: bx r0 .align 2, 0 _0813FC9C: .4byte gLastUsedItem -_0813FCA0: .4byte gSpriteTemplate_820AAB4 +_0813FCA0: .4byte gBallSpriteTemplates _0813FCA4: .4byte gSprites _0813FCA8: .4byte gBattleAnimEnemyMonIndex _0813FCAC: .4byte SpriteCallbackDummy diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 20231a0bb..fea619ac8 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -8398,7 +8398,7 @@ sub_80A1DE8: @ 80A1DE8 lsls r0, r4, 1 adds r0, r4 lsls r0, 3 - ldr r1, _080A1E48 @ =gSpriteTemplate_820AAB4 + ldr r1, _080A1E48 @ =gBallSpriteTemplates adds r0, r1 movs r1, 0x6 movs r2, 0x88 @@ -8429,7 +8429,7 @@ sub_80A1DE8: @ 80A1DE8 pop {r0} bx r0 .align 2, 0 -_080A1E48: .4byte gSpriteTemplate_820AAB4 +_080A1E48: .4byte gBallSpriteTemplates _080A1E4C: .4byte 0x02018000 _080A1E50: .4byte gSprites _080A1E54: .4byte SpriteCallbackDummy diff --git a/data/pokeball.s b/data/pokeball.s deleted file mode 100644 index 788f8bdb7..000000000 --- a/data/pokeball.s +++ /dev/null @@ -1,137 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_0820A92C:: @ 820A92C - obj_tiles gInterfaceGfx_PokeBall, 384, 0xd6d8 @ poke - obj_tiles gInterfaceGfx_GreatBall, 384, 0xd6d9 @ great - obj_tiles gInterfaceGfx_SafariBall, 384, 0xd6da @ safari - obj_tiles gInterfaceGfx_UltraBall, 384, 0xd6db @ ultra - obj_tiles gInterfaceGfx_MasterBall, 384, 0xd6dc @ master - obj_tiles gInterfaceGfx_NetBall, 384, 0xd6dd @ net - obj_tiles gInterfaceGfx_DiveBall, 384, 0xd6de @ dive - obj_tiles gInterfaceGfx_NestBall, 384, 0xd6df @ nest - obj_tiles gInterfaceGfx_RepeatBall, 384, 0xd6e0 @ repeat - obj_tiles gInterfaceGfx_TimerBall, 384, 0xd6e1 @ timer - obj_tiles gInterfaceGfx_LuxuryBall, 384, 0xd6e2 @ luxury - obj_tiles gInterfaceGfx_PremierBall, 384, 0xd6e3 @ premier - - .align 2 -gUnknown_0820A98C:: @ 820A98C - obj_pal gInterfacePal_PokeBall, 0xD6D8 @ poke - obj_pal gInterfacePal_GreatBall, 0xD6D9 @ great - obj_pal gInterfacePal_SafariBall, 0xD6DA @ safari - obj_pal gInterfacePal_UltraBall, 0xD6DB @ ultra - obj_pal gInterfacePal_MasterBall, 0xD6DC @ master - obj_pal gInterfacePal_NetBall, 0xD6DD @ net - obj_pal gInterfacePal_DiveBall, 0xD6DE @ dive - obj_pal gInterfacePal_NestBall, 0xD6DF @ nest - obj_pal gInterfacePal_RepeatBall, 0xD6E0 @ repeat - obj_pal gInterfacePal_TimerBall, 0xD6E1 @ timer - obj_pal gInterfacePal_LuxuryBall, 0xD6E2 @ luxury - obj_pal gInterfacePal_PremierBall, 0xD6E3 @ premier - - .align 2 -gOamData_820A9EC:: @ 820A9EC - .2byte 0x0300 - .2byte 0x4000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_820A9F4: @ 820A9F4 - obj_image_anim_frame 0, 5 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_820A9FC: @ 820A9FC - obj_image_anim_frame 4, 1 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_820AA04: @ 820AA04 - obj_image_anim_frame 8, 5 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_820AA0C: @ 820AA0C - obj_image_anim_frame 12, 1 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_820AA14:: @ 820AA14 - obj_image_anim_frame 0, 1 - obj_image_anim_end - - .align 2 -gSpriteAnim_820AA1C:: @ 820AA1C - obj_image_anim_frame 4, 5 - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820AA28:: @ 820AA28 - obj_image_anim_frame 4, 5 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820AA34:: @ 820AA34 - .4byte gSpriteAnim_820AA14 - .4byte gSpriteAnim_820AA1C - .4byte gSpriteAnim_820AA28 - - @ unused? - .4byte gSpriteAnim_820A9F4 - .4byte gSpriteAnim_820AA04 - .4byte gSpriteAnim_820A9FC - .4byte gSpriteAnim_820AA0C - - .align 2 -gSpriteAffineAnim_820AA50:: @ 820AA50 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_820AA60:: @ 820AA60 - obj_rot_scal_anim_frame 0x0, 0x0, -3, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_820AA70:: @ 820AA70 - obj_rot_scal_anim_frame 0x0, 0x0, 3, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_820AA80:: @ 820AA80 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_820AA90:: @ 820AA90 - obj_rot_scal_anim_frame 0x0, 0x0, 25, 1 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_820AAA0:: @ 820AAA0 - .4byte gSpriteAffineAnim_820AA50 - .4byte gSpriteAffineAnim_820AA60 - .4byte gSpriteAffineAnim_820AA70 - .4byte gSpriteAffineAnim_820AA80 - .4byte gSpriteAffineAnim_820AA90 - - .align 2 -gSpriteTemplate_820AAB4:: @ 820AAB4 - spr_template 55000, 55000, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55001, 55001, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55002, 55002, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55003, 55003, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55004, 55004, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55005, 55005, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55006, 55006, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55007, 55007, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55008, 55008, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55009, 55009, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55010, 55010, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 - spr_template 55011, 55011, gOamData_820A9EC, gSpriteAnimTable_820AA34, NULL, gSpriteAffineAnimTable_820AAA0, objc_0804ABD4 diff --git a/include/data2.h b/include/data2.h index 759efe3d3..f292472ef 100644 --- a/include/data2.h +++ b/include/data2.h @@ -3,7 +3,8 @@ #include "sprite.h" -struct UnknownStructD2 { +struct UnknownStructD2 +{ u32 unk0; u32 unk4; u32 unk8; @@ -21,15 +22,15 @@ extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; extern const union AnimCmd *const gSpriteAnimTable_81E7C64[]; extern struct MonCoords gMonFrontPicCoords[]; extern struct MonCoords gMonBackPicCoords[]; -extern struct SpriteSheet gMonFrontPicTable[]; -extern struct SpriteSheet gMonBackPicTable[]; -extern const struct SpritePalette gMonPaletteTable[]; -extern const struct SpritePalette gMonShinyPaletteTable[]; +extern struct CompressedSpriteSheet gMonFrontPicTable[]; +extern struct CompressedSpriteSheet gMonBackPicTable[]; +extern const struct CompressedSpritePalette gMonPaletteTable[]; +extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; extern const union AnimCmd *const *const gUnknown_081EC2A4[]; extern const union AnimCmd *const *const gUnknown_081ECACC[]; extern struct MonCoords gTrainerBackPicCoords[]; -extern struct SpriteSheet gTrainerBackPicTable[]; -extern const struct SpritePalette gTrainerBackPicPaletteTable[]; +extern struct CompressedSpriteSheet gTrainerBackPicTable[]; +extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; extern u8 gEnemyMonElevation[]; extern const u8 gTrainerClassNames[][13]; extern const struct Trainer gTrainers[]; @@ -37,8 +38,8 @@ extern u8 gSpeciesNames[][11]; extern u8 gMoveNames[][13]; extern const struct UnknownStructD2 gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; -extern struct SpriteSheet gUnknown_081FAEA4; -extern struct SpritePalette gUnknown_081FAEAC; +extern struct CompressedSpriteSheet gUnknown_081FAEA4; +extern struct CompressedSpritePalette gUnknown_081FAEAC; extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; extern void *const gUnknown_081FAF4C[]; extern struct BattleMove gBattleMoves[]; diff --git a/include/decompress.h b/include/decompress.h index 28570afdd..07d69301f 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -5,13 +5,13 @@ void sub_800D238(const void *src, void *dest); void LZDecompressVram(const void *src, void *dest); -void LoadCompressedObjectPic(const struct SpriteSheet *a); -void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *buffer); -void LoadCompressedObjectPalette(const struct SpritePalette *a); -void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, void *buffer); -void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f); -void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g); -void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h); +void LoadCompressedObjectPic(const struct CompressedSpriteSheet *a); +void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *a, void *buffer); +void LoadCompressedObjectPalette(const struct CompressedSpritePalette *a); +void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); +void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f); +void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g); +void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h); void Unused_LZDecompressWramIndirect(const void **src, void *dest); #endif // GUARD_DECOMPRESS_H diff --git a/include/field_effect.h b/include/field_effect.h index 74b5fa34d..cd84652b1 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -72,15 +72,13 @@ enum FieldEffectScriptIdx FLDEFF_USE_TELEPORT }; -extern const struct SpritePalette gTrainerFrontPicPaletteTable[2]; +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[2]; extern const struct SpritePalette gUnknown_0839F114; -extern const struct SpriteSheet gTrainerFrontPicTable[2]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2]; extern const struct SpriteTemplate gSpriteTemplate_839F128; extern const struct OamData gOamData_839F0F4; extern struct SpriteTemplate gUnknown_02024E8C; -extern const struct SpritePalette *sub_80409C8(u16, u32, u32); - extern u8 gLastFieldPokeMenuOpened; u32 FieldEffectStart(u8 id); diff --git a/include/graphics.h b/include/graphics.h index 096a1982c..c3fe20996 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2,6 +2,32 @@ #define GUARD_GRAPHICS_H // data/graphics.s +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 gUnknown_08D030D0[]; + extern const u8 gMonFootprint_QuestionMark[]; // data/graphics/pokemon/graphics.inc diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h index 85485a2c4..5abb2381b 100644 --- a/include/intro_credits_graphics.h +++ b/include/intro_credits_graphics.h @@ -1,14 +1,14 @@ #ifndef GUARD_INTRO_CREDITS_GRAPHICS_H #define GUARD_INTRO_CREDITS_GRAPHICS_H -extern const struct SpriteSheet gIntro2BrendanSpriteSheet; -extern const struct SpriteSheet gIntro2MaySpriteSheet; -extern const struct SpriteSheet gIntro2BicycleSpriteSheet; -extern const struct SpriteSheet gIntro2LatiosSpriteSheet; -extern const struct SpriteSheet gIntro2LatiasSpriteSheet; +extern const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet; +extern const struct CompressedSpriteSheet gIntro2MaySpriteSheet; +extern const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet; +extern const struct CompressedSpriteSheet gIntro2LatiosSpriteSheet; +extern const struct CompressedSpriteSheet gIntro2LatiasSpriteSheet; extern const struct SpritePalette gIntro2SpritePalettes[]; -extern const struct SpriteSheet gUnknown_08416E24; -extern const struct SpriteSheet gUnknown_08416E34; +extern const struct CompressedSpriteSheet gUnknown_08416E24; +extern const struct CompressedSpriteSheet gUnknown_08416E34; void load_intro_part2_graphics(/*TODO: arg types*/); void sub_8148C78(/*TODO: arg types*/); diff --git a/include/pokeball.h b/include/pokeball.h index b492df6e1..19f813415 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -1,6 +1,8 @@ #ifndef GUARD_POKEBALL_H #define GUARD_POKEBALL_H +extern const struct SpriteTemplate gBallSpriteTemplates[]; + void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u32 s4); void sub_804777C(u8); void sub_80478DC(u8); diff --git a/include/pokemon.h b/include/pokemon.h index d67cd647a..47990073b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -503,8 +503,9 @@ u8 sub_8040574(struct Pokemon *party); void ClearBattleMonForms(void); void sub_80408BC(); void current_map_music_set__default_for_battle(u16); -const u16 *species_and_otid_get_pal(u16, u32, u32); -const struct SpritePalette *sub_80409C8(u16, u32, u32); +const u8 *pokemon_get_pal(struct Pokemon *mon); +const u8 *species_and_otid_get_pal(u16, u32, u32); +const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32); bool8 IsOtherTrainer(u32, u8 *); void sub_8040B8C(void); void SetWildMonHeldItem(void); diff --git a/include/sprite.h b/include/sprite.h index dd9d5efb7..3f893132e 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -5,11 +5,18 @@ struct SpriteSheet { - const u8 *data; + const u8 *data; // Raw uncompressed pixel data u16 size; u16 tag; }; +struct CompressedSpriteSheet +{ + const u8 *data; // LZ77 compressed pixel data + u16 size; // Uncompressed size of pixel data + u16 tag; +}; + struct SpriteFrameImage { u8 *data; @@ -20,7 +27,13 @@ struct SpriteFrameImage struct SpritePalette { - const u16 *data; + const u16 *data; // Raw uncompressed palette data + u16 tag; +}; + +struct CompressedSpritePalette +{ + const u8 *data; // LZ77 compressed palette data u16 tag; }; @@ -99,6 +112,10 @@ union AffineAnimCmd #define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \ {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}} +#define AFFINEANIMCMD_LOOP(_count) \ + {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}} +#define AFFINEANIMCMD_JUMP(_target) \ + {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} #define AFFINEANIMCMD_END \ {.type = AFFINEANIMCMDTYPE_END} diff --git a/ld_script.txt b/ld_script.txt index 5bbabf504..281f1781d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -339,7 +339,7 @@ SECTIONS { data/daycare.o(.rodata); data/egg_hatch.o(.rodata); data/battle_interface.o(.rodata); - data/pokeball.o(.rodata); + src/pokeball.o(.rodata); data/trade.o(.rodata); data/berry_blender.o(.rodata); src/new_game.o(.rodata); diff --git a/src/battle_7.c b/src/battle_7.c index a2990018e..a93237608 100644 --- a/src/battle_7.c +++ b/src/battle_7.c @@ -55,21 +55,21 @@ extern void (*gAnimScriptCallback)(void); extern u8 gAnimScriptActive; extern const u8 *const gBattleAnims_Unknown1[]; extern const u8 *const gBattleAnims_Unknown2[]; -extern const struct SpriteSheet gTrainerFrontPicTable[]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; -extern const struct SpritePalette gTrainerFrontPicPaletteTable[]; +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const u8 gSubstituteDollTilemap[]; extern const u8 gSubstituteDollGfx[]; extern const u8 gSubstituteDollPal[]; -extern const struct SpriteSheet gUnknown_081FAF24; +extern const struct CompressedSpriteSheet gUnknown_081FAF24; extern const struct SpriteTemplate gSpriteTemplate_81FAF34; extern void (*const gOpponentBufferCommands[])(void); -extern const struct SpriteSheet gUnknown_0820A47C; -extern const struct SpriteSheet gUnknown_0820A484; -extern const struct SpriteSheet gUnknown_0820A48C[]; -extern const struct SpriteSheet gUnknown_0820A49C[]; -extern const struct SpriteSheet gUnknown_0820A4AC; -extern const struct SpriteSheet gUnknown_0820A4B4[]; +extern const struct CompressedSpriteSheet gUnknown_0820A47C; +extern const struct CompressedSpriteSheet gUnknown_0820A484; +extern const struct CompressedSpriteSheet gUnknown_0820A48C[]; +extern const struct CompressedSpriteSheet gUnknown_0820A49C[]; +extern const struct CompressedSpriteSheet gUnknown_0820A4AC; +extern const struct CompressedSpriteSheet gUnknown_0820A4B4[]; extern const struct SpritePalette gUnknown_0820A4D4[]; extern const u8 gUnknown_08D09C48[]; @@ -84,10 +84,8 @@ extern u8 sub_8078874(u8); extern u8 sub_8077F68(u8); extern u8 sub_8077F7C(u8); extern void sub_8094958(void); -extern const u16 *pokemon_get_pal(struct Pokemon *); extern void sub_80105DC(struct Sprite *); extern void move_anim_start_t2(); -extern const u16 *species_and_otid_get_pal(); void sub_80315E8(u8); u8 sub_803163C(u8); @@ -283,7 +281,7 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) u32 otId; u8 var; u16 paletteOffset; - const u16 *palette; + const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); if (ewram17800[b].unk2 == 0) @@ -308,16 +306,16 @@ void sub_8031794(struct Pokemon *pkmn, u8 b) r7); paletteOffset = 0x100 + b * 16; if (ewram17800[b].unk2 == 0) - palette = pokemon_get_pal(pkmn); + lzPaletteData = pokemon_get_pal(pkmn); else - palette = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(palette, ewram); + lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(palette, ewram + 0x16400); + sub_800D238(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } if (ewram17800[b].unk2 != 0) @@ -335,7 +333,7 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) u32 otId; u8 var; u16 paletteOffset; - const u16 *palette; + const u8 *lzPaletteData; personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); if (ewram17800[b].unk2 == 0) @@ -360,16 +358,16 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b) r7); paletteOffset = 0x100 + b * 16; if (ewram17800[b].unk2 == 0) - palette = pokemon_get_pal(pkmn); + lzPaletteData = pokemon_get_pal(pkmn); else - palette = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(palette, ewram); + lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(palette, ewram + 0x16400); + sub_800D238(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } if (ewram17800[b].unk2 != 0) @@ -390,7 +388,7 @@ void nullsub_9(u16 unused) void sub_8031A6C(u16 a, u8 b) { u8 status; - struct SpriteSheet spriteSheet; + struct CompressedSpriteSheet spriteSheet; status = GetBankIdentity(b); DecompressPicFromTable_2( @@ -624,7 +622,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) u32 personalityValue; u32 otId; u8 r10; - const u16 *palette; + const u8 *lzPaletteData; if (c) { @@ -697,14 +695,14 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); DmaCopy32(3, src, dst, 0x800); paletteOffset = 0x100 + a * 16; - palette = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(palette, ewram); + lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 32); if (species == SPECIES_CASTFORM) { u16 *paletteSrc = (u16 *)(ewram + 0x16400); - sub_800D238(palette, paletteSrc); + sub_800D238(lzPaletteData, paletteSrc); LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32); } BlendPalette(paletteOffset, 16, 6, 0x7FFF); diff --git a/src/battle_anim.c b/src/battle_anim.c index cc856d5cd..55ede1788 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -58,8 +58,8 @@ extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; extern const u8 *const gBattleAnims_Moves[]; -extern const struct SpriteSheet gBattleAnimPicTable[]; -extern const struct SpritePalette gBattleAnimPaletteTable[]; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; static void RunAnimScriptCommand(void); diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 5647d4593..116ca2cca 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -38,8 +38,8 @@ extern struct BerryTagStatus gUnknown_0203932E; extern u16 gScriptItemId; extern u16 gUnknown_030041B4; -extern const struct SpriteSheet gUnknown_083C1F74; -extern const struct SpritePalette gUnknown_083C1F7C; +extern const struct CompressedSpriteSheet gUnknown_083C1F74; +extern const struct CompressedSpritePalette gUnknown_083C1F7C; extern u8 *gUnknown_0841192C[]; diff --git a/src/credits.c b/src/credits.c index a7d6191e6..8ec126a41 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1495,7 +1495,7 @@ void spritecb_81454E0(struct Sprite *sprite) { static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) { u32 personality; - const u16 *palette; + const u8 *lzPaletteData; u8 spriteId; u8 spriteId2; @@ -1527,8 +1527,8 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) 1 ); - palette = species_and_otid_get_pal(species, 0, 0xFFFF); - LoadCompressedPalette(palette, 0x100 + (position * 16), 0x20); + lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20); sub_8143648(position, position); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); diff --git a/src/decompress.c b/src/decompress.c index 1d38447b5..d7f7087a7 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -16,57 +16,57 @@ void LZDecompressVram(const void *src, void *dest) LZ77UnCompVram(src, dest); } -void LoadCompressedObjectPic(const struct SpriteSheet *a) +void LoadCompressedObjectPic(const struct CompressedSpriteSheet *src) { - struct SpriteSheet spriteSheet; + struct SpriteSheet dest; - LZ77UnCompWram(a->data, (void *)WRAM); - spriteSheet.data = (void *)WRAM; - spriteSheet.size = a->size; - spriteSheet.tag = a->tag; - LoadSpriteSheet(&spriteSheet); + LZ77UnCompWram(src->data, (void *)WRAM); + dest.data = (void *)WRAM; + dest.size = src->size; + dest.tag = src->tag; + LoadSpriteSheet(&dest); } -void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *buffer) +void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer) { - struct SpriteSheet spriteSheet; + struct SpriteSheet dest; - LZ77UnCompWram(a->data, buffer); - spriteSheet.data = buffer; - spriteSheet.size = a->size; - spriteSheet.tag = a->tag; - LoadSpriteSheet(&spriteSheet); + LZ77UnCompWram(src->data, buffer); + dest.data = buffer; + dest.size = src->size; + dest.tag = src->tag; + LoadSpriteSheet(&dest); } -void LoadCompressedObjectPalette(const struct SpritePalette *a) +void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src) { - struct SpritePalette spritePalette; + struct SpritePalette dest; - LZ77UnCompWram(a->data, (void *)WRAM); - spritePalette.data = (void *)WRAM; - spritePalette.tag = a->tag; - LoadSpritePalette(&spritePalette); + LZ77UnCompWram(src->data, (void *)WRAM); + dest.data = (void *)WRAM; + dest.tag = src->tag; + LoadSpritePalette(&dest); } -void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, void *buffer) +void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer) { - struct SpritePalette spritePalette; + struct SpritePalette dest; LZ77UnCompWram(a->data, buffer); - spritePalette.data = buffer; - spritePalette.tag = a->tag; - LoadSpritePalette(&spritePalette); + dest.data = buffer; + dest.tag = a->tag; + LoadSpritePalette(&dest); } -void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 species) +void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, u8 b, u8 c, void *d, void *buffer, s32 species) { if (species > SPECIES_EGG) - LZ77UnCompWram(gMonFrontPicTable[0].data, e); + LZ77UnCompWram(gMonFrontPicTable[0].data, buffer); else - LZ77UnCompWram(a->data, e); + LZ77UnCompWram(src->data, buffer); } -void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g) +void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g) { u32 frontOrBack; @@ -76,10 +76,10 @@ void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 else frontOrBack = 1; // frontPic - LoadSpecialPokePic(spriteSheet, b, c, d, dest, species, g, frontOrBack); + LoadSpecialPokePic(src, b, c, d, dest, species, g, frontOrBack); } -void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 frontOrBack) +void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 frontOrBack) { u8 frontOrBack8 = frontOrBack; @@ -101,7 +101,7 @@ void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 else if (species > SPECIES_EGG) // is species unknown? draw the ? icon LZ77UnCompWram(gMonFrontPicTable[0].data, dest); else - LZ77UnCompWram(spriteSheet->data, dest); + LZ77UnCompWram(src->data, dest); DrawSpindaSpots(species, g, dest, frontOrBack8); } diff --git a/src/field_effect.c b/src/field_effect.c index 9591bb6a0..a7f0e4129 100755 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -657,7 +657,8 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority) { - const struct SpritePalette *spritePalette; + const struct CompressedSpritePalette *spritePalette; + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[3] /* this is actually u8* or something, pointing to ewram */, gUnknown_081FAF4C[3], species, g); spritePalette = sub_80409C8(species, d, g); LoadCompressedObjectPalette(spritePalette); diff --git a/src/intro.c b/src/intro.c index f13bd04e6..396f5e5df 100644 --- a/src/intro.c +++ b/src/intro.c @@ -31,7 +31,7 @@ extern struct GcmbStruct gMultibootProgramStruct; extern u16 gSaveFileStatus; extern u8 gReservedSpritePaletteCount; extern const u8 gInterfaceGfx_PokeBall[]; -extern const u16 gInterfacePal_PokeBall[]; +extern const u8 gInterfacePal_PokeBall[]; extern const u8 gIntroCopyright_Gfx[]; extern const u16 gIntroCopyright_Pal[]; extern const u16 gIntroCopyright_Tilemap[]; @@ -411,12 +411,12 @@ static const struct SpriteTemplate gSpriteTemplate_840AFF0 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_813DA64, }; -const struct SpriteSheet gUnknown_0840B008[] = +const struct CompressedSpriteSheet gUnknown_0840B008[] = { {gIntroTiles, 0x1400, 2000}, {NULL}, }; -const struct SpriteSheet gUnknown_0840B018[] = +const struct CompressedSpriteSheet gUnknown_0840B018[] = { {gIntro1EonTiles, 0x400, 2002}, {NULL}, @@ -738,17 +738,17 @@ static const struct SpriteTemplate gSpriteTemplate_840B1F4 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_813EDFC, }; -const struct SpriteSheet gIntro3PokeballGfx_Table[] = +const struct CompressedSpriteSheet gIntro3PokeballGfx_Table[] = { {gInterfaceGfx_PokeBall, 0x100, 2002}, {NULL}, }; -const struct SpriteSheet gIntro3MiscGfx_Table[] = +const struct CompressedSpriteSheet gIntro3MiscGfx_Table[] = { {gIntro3MiscTiles, 0xa00, 2003}, {NULL}, }; -const struct SpritePalette gInterfacePokeballPal_Table[] = +const struct CompressedSpritePalette gInterfacePokeballPal_Table[] = { {gInterfacePal_PokeBall, 2002}, {NULL}, @@ -1772,15 +1772,15 @@ void sub_813CE30(u16 scrX, u16 scrY, u16 zoom, u16 alpha) static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front) { - const u16 *pal; + const u8 *lzPaletteData; u8 spriteId; if (front) LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); else LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); - pal = species_and_otid_get_pal(species, 0, 0xFFFF); - LoadCompressedPalette(pal, 0x100 + d * 0x10, 0x20); + lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + LoadCompressedPalette(lzPaletteData, 0x100 + d * 0x10, 0x20); sub_8143648(d, d); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, (d + 1) * 4); gSprites[spriteId].oam.paletteNum = d; diff --git a/src/money.c b/src/money.c index de0730951..ab4508a39 100644 --- a/src/money.c +++ b/src/money.c @@ -10,8 +10,8 @@ extern u16 gSpecialVar_0x8005; extern u8 gUnknown_02038734; -extern const struct SpriteSheet gUnknown_083CF584; -extern const struct SpritePalette gUnknown_083CF58C; +extern const struct CompressedSpriteSheet gUnknown_083CF584; +extern const struct CompressedSpritePalette gUnknown_083CF58C; extern const struct SpriteTemplate gSpriteTemplate_83CF56C; bool8 IsEnoughMoney(u32 budget, u32 cost) diff --git a/src/pokeball.c b/src/pokeball.c index 4b2ba8212..c123130c6 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -2,6 +2,7 @@ #include "gba/m4a_internal.h" #include "battle.h" #include "decompress.h" +#include "graphics.h" #include "m4a.h" #include "main.h" #include "pokeball.h" @@ -23,10 +24,276 @@ extern u8 gObjectBankIDs[]; extern u8 gDoingBattleAnim; extern u8 gHealthboxIDs[]; -extern const struct SpriteSheet gUnknown_0820A92C[]; -extern const struct SpritePalette gUnknown_0820A98C[]; -extern const struct SpriteTemplate gSpriteTemplate_820AAB4[]; -extern const u8 gUnknown_08D030D0[]; +#define GFX_TAG_POKEBALL 55000 +#define GFX_TAG_GREATBALL 55001 +#define GFX_TAG_SAFARIBALL 55002 +#define GFX_TAG_ULTRABALL 55003 +#define GFX_TAG_MASTERBALL 55004 +#define GFX_TAG_NETBALL 55005 +#define GFX_TAG_DIVEBALL 55006 +#define GFX_TAG_NESTBALL 55007 +#define GFX_TAG_REPEATBALL 55008 +#define GFX_TAG_TIMERBALL 55009 +#define GFX_TAG_LUXURYBALL 55010 +#define GFX_TAG_PREMIERBALL 55011 + +static const struct CompressedSpriteSheet sBallSpriteSheets[] = +{ + {gInterfaceGfx_PokeBall, 384, GFX_TAG_POKEBALL}, + {gInterfaceGfx_GreatBall, 384, GFX_TAG_GREATBALL}, + {gInterfaceGfx_SafariBall, 384, GFX_TAG_SAFARIBALL}, + {gInterfaceGfx_UltraBall, 384, GFX_TAG_ULTRABALL}, + {gInterfaceGfx_MasterBall, 384, GFX_TAG_MASTERBALL}, + {gInterfaceGfx_NetBall, 384, GFX_TAG_NETBALL}, + {gInterfaceGfx_DiveBall, 384, GFX_TAG_DIVEBALL}, + {gInterfaceGfx_NestBall, 384, GFX_TAG_NESTBALL}, + {gInterfaceGfx_RepeatBall, 384, GFX_TAG_REPEATBALL}, + {gInterfaceGfx_TimerBall, 384, GFX_TAG_TIMERBALL}, + {gInterfaceGfx_LuxuryBall, 384, GFX_TAG_LUXURYBALL}, + {gInterfaceGfx_PremierBall, 384, GFX_TAG_PREMIERBALL}, +}; + +static const struct CompressedSpritePalette sBallSpritePalettes[] = +{ + {gInterfacePal_PokeBall, GFX_TAG_POKEBALL}, + {gInterfacePal_GreatBall, GFX_TAG_GREATBALL}, + {gInterfacePal_SafariBall, GFX_TAG_SAFARIBALL}, + {gInterfacePal_UltraBall, GFX_TAG_ULTRABALL}, + {gInterfacePal_MasterBall, GFX_TAG_MASTERBALL}, + {gInterfacePal_NetBall, GFX_TAG_NETBALL}, + {gInterfacePal_DiveBall, GFX_TAG_DIVEBALL}, + {gInterfacePal_NestBall, GFX_TAG_NESTBALL}, + {gInterfacePal_RepeatBall, GFX_TAG_REPEATBALL}, + {gInterfacePal_TimerBall, GFX_TAG_TIMERBALL}, + {gInterfacePal_LuxuryBall, GFX_TAG_LUXURYBALL}, + {gInterfacePal_PremierBall, GFX_TAG_PREMIERBALL}, +}; + +static const struct OamData sBallOamData = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .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, + + // unused? + 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, +}; + +static void objc_0804ABD4(struct Sprite *sprite); +const struct SpriteTemplate gBallSpriteTemplates[] = +{ + { + .tileTag = GFX_TAG_POKEBALL, + .paletteTag = GFX_TAG_POKEBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_GREATBALL, + .paletteTag = GFX_TAG_GREATBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_SAFARIBALL, + .paletteTag = GFX_TAG_SAFARIBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_ULTRABALL, + .paletteTag = GFX_TAG_ULTRABALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_MASTERBALL, + .paletteTag = GFX_TAG_MASTERBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_NETBALL, + .paletteTag = GFX_TAG_NETBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_DIVEBALL, + .paletteTag = GFX_TAG_DIVEBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_NESTBALL, + .paletteTag = GFX_TAG_NESTBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_REPEATBALL, + .paletteTag = GFX_TAG_REPEATBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_TIMERBALL, + .paletteTag = GFX_TAG_TIMERBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_LUXURYBALL, + .paletteTag = GFX_TAG_LUXURYBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, + { + .tileTag = GFX_TAG_PREMIERBALL, + .paletteTag = GFX_TAG_PREMIERBALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = objc_0804ABD4, + }, +}; extern u32 ball_number_to_ball_processing_index(u16); // not sure of return type extern void sub_80786EC(); @@ -95,7 +362,7 @@ static void sub_8046464(u8 taskId) ball = GetMonData(&gPlayerParty[gBattlePartyID[r5]], MON_DATA_POKEBALL); r4 = ball_number_to_ball_processing_index(ball); sub_80478DC(r4); - spriteId = CreateSprite(&gSpriteTemplate_820AAB4[r4], 32, 80, 0x1D); + spriteId = CreateSprite(&gBallSpriteTemplates[r4], 32, 80, 0x1D); gSprites[spriteId].data0 = 0x80; gSprites[spriteId].data1 = 0; gSprites[spriteId].data7 = r8; @@ -103,13 +370,13 @@ static void sub_8046464(u8 taskId) { case 0xFF: gBankTarget = r5; - gSprites[spriteId].pos1.x = 0x18; - gSprites[spriteId].pos1.y = 0x44; + gSprites[spriteId].pos1.x = 24; + gSprites[spriteId].pos1.y = 68; gSprites[spriteId].callback = sub_8047074; break; case 0xFE: gSprites[spriteId].pos1.x = sub_8077ABC(r5, 0); - gSprites[spriteId].pos1.y = sub_8077ABC(r5, 1) + 0x18; + gSprites[spriteId].pos1.y = sub_8077ABC(r5, 1) + 24; gBankTarget = r5; gSprites[spriteId].data0 = 0; gSprites[spriteId].callback = sub_8047254; @@ -136,7 +403,7 @@ static void sub_8046464(u8 taskId) PlaySE(SE_NAGERU); } -void objc_0804ABD4(struct Sprite *sprite) +static void objc_0804ABD4(struct Sprite *sprite) { if (sub_8078718(sprite)) { @@ -563,7 +830,7 @@ static void sub_8047074(struct Sprite *sprite) { sprite->data0 = 25; sprite->data2 = sub_8077ABC(sprite->data6, 2); - sprite->data4 = sub_8077ABC(sprite->data6, 3) + 0x18; + sprite->data4 = sub_8077ABC(sprite->data6, 3) + 24; sprite->data5 = -30; sprite->oam.affineParam = sprite->data6; sub_80786EC(sprite); @@ -628,7 +895,7 @@ static void sub_80470C4(struct Sprite *sprite) static void sub_8047230(struct Sprite *sprite) { - if (sprite->data0++ > 0x18) + if (sprite->data0++ > 24) { sprite->data0 = 0; sprite->callback = sub_8046C78; @@ -663,9 +930,9 @@ void CreatePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 e, u8 f, u8 g, u32 h) { u8 spriteId; - LoadCompressedObjectPic(&gUnknown_0820A92C[0]); - LoadCompressedObjectPalette(&gUnknown_0820A98C[0]); - spriteId = CreateSprite(&gSpriteTemplate_820AAB4[0], x, y, f); + LoadCompressedObjectPic(&sBallSpriteSheets[0]); + LoadCompressedObjectPalette(&sBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, f); gSprites[spriteId].data0 = a; gSprites[spriteId].data5 = gSprites[a].pos1.x; gSprites[spriteId].data6 = gSprites[a].pos1.y; @@ -752,9 +1019,9 @@ u8 sub_8047580(u8 a, u8 b, u8 x, u8 y, u8 e, u8 f, u8 g, u32 h) { u8 spriteId; - LoadCompressedObjectPic(&gUnknown_0820A92C[0]); - LoadCompressedObjectPalette(&gUnknown_0820A98C[0]); - spriteId = CreateSprite(&gSpriteTemplate_820AAB4[0], x, y, f); + LoadCompressedObjectPic(&sBallSpriteSheets[0]); + LoadCompressedObjectPalette(&sBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, f); gSprites[spriteId].data0 = a; gSprites[spriteId].data1 = g; gSprites[spriteId].data2 = b; @@ -893,10 +1160,10 @@ void sub_80478DC(u8 a) { u16 var; - if (GetSpriteTileStartByTag(gUnknown_0820A92C[a].tag) == 0xFFFF) + if (GetSpriteTileStartByTag(sBallSpriteSheets[a].tag) == 0xFFFF) { - LoadCompressedObjectPic(&gUnknown_0820A92C[a]); - LoadCompressedObjectPalette(&gUnknown_0820A98C[a]); + LoadCompressedObjectPic(&sBallSpriteSheets[a]); + LoadCompressedObjectPalette(&sBallSpritePalettes[a]); } switch (a) { @@ -905,7 +1172,7 @@ void sub_80478DC(u8 a) case 11: break; default: - var = GetSpriteTileStartByTag(gUnknown_0820A92C[a].tag); + var = GetSpriteTileStartByTag(sBallSpriteSheets[a].tag); LZDecompressVram(gUnknown_08D030D0, (void *)(VRAM + 0x10100 + var * 32)); break; } @@ -913,8 +1180,8 @@ void sub_80478DC(u8 a) void sub_804794C(u8 a) { - FreeSpriteTilesByTag(gUnknown_0820A92C[a].tag); - FreeSpritePaletteByTag(gUnknown_0820A98C[a].tag); + FreeSpriteTilesByTag(sBallSpriteSheets[a].tag); + FreeSpritePaletteByTag(sBallSpritePalettes[a].tag); } static u16 sub_8047978(u8 a) diff --git a/src/pokedex.c b/src/pokedex.c index 8674c3d2b..17ae9a597 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -162,7 +162,7 @@ extern const u8 gUnknown_08E96ACC[]; extern const u8 gUnknown_08E96B58[]; extern const u16 gPokedexMenu_Pal[]; extern const u16 gPokedexMenu2_Pal[]; -extern const struct SpriteSheet gTrainerFrontPicTable[]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; extern const struct PokedexEntry gPokedexEntries[]; extern const u8 gPokedexMenuSearch_Gfx[]; @@ -493,7 +493,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A05B4 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808F168, }; -static const struct SpriteSheet gUnknown_083A05CC[] = +static const struct CompressedSpriteSheet gUnknown_083A05CC[] = { {gPokedexMenu2_Gfx, 0x1F00, 0x1000}, {NULL, 0, 0}, @@ -3921,7 +3921,7 @@ static void sub_8090B8C(u8 taskId) u32 otId; u32 personality; u8 paletteNum; - const u16 *palette; + const u8 *lzPaletteData; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000); @@ -3930,8 +3930,8 @@ static void sub_8090B8C(u8 taskId) otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12]; personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14]; paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum; - palette = species_and_otid_get_pal(species, otId, personality); - LoadCompressedPalette(palette, 0x100 | paletteNum * 16, 32); + lzPaletteData = species_and_otid_get_pal(species, otId, personality); + LoadCompressedPalette(lzPaletteData, 0x100 | paletteNum * 16, 32); DestroyTask(taskId); } } diff --git a/src/pokemon_3.c b/src/pokemon_3.c index ef9a1698d..cb8eb2a46 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1172,7 +1172,7 @@ void current_map_music_set__default_for_battle(u16 song) PlayNewMapMusic(sub_8040728()); } -const u16 *pokemon_get_pal(struct Pokemon *mon) +const u8 *pokemon_get_pal(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); @@ -1186,7 +1186,7 @@ const u16 *pokemon_get_pal(struct Pokemon *mon) //Extracts the lower 16 bits of a 32-bit number #define LOHALF(n) ((n) & 0xFFFF) -const u16 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) +const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) { u32 shinyValue; @@ -1200,7 +1200,7 @@ const u16 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) return gMonPaletteTable[species].data; } -const struct SpritePalette *sub_8040990(struct Pokemon *mon) +const struct CompressedSpritePalette *sub_8040990(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); @@ -1208,7 +1208,7 @@ const struct SpritePalette *sub_8040990(struct Pokemon *mon) return sub_80409C8(species, otId, personality); } -const struct SpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality) +const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality) { u32 shinyValue; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index fb72be527..ecfd8111b 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -407,7 +407,7 @@ u8 sub_80C5044(void) void ShowContestEntryMonPic(void) { - struct SpritePalette *paletteData; + const struct CompressedSpritePalette *palette; u32 var1, var2; u16 species; u8 spriteId; @@ -425,13 +425,18 @@ void ShowContestEntryMonPic(void) taskId = CreateTask(sub_80C5190, 0x50); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; - HandleLoadSpecialPokePic((struct SpriteSheet *)&gMonFrontPicTable[species].data, - gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, - (u32)gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species, var1); - paletteData = (struct SpritePalette *) sub_80409C8(species, var2, var1); - LoadCompressedObjectPalette(paletteData); + HandleLoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, + (u32)gUnknown_081FAF4C[0], + gUnknown_081FAF4C[1], + species, + var1); + palette = sub_80409C8(species, var2, var1); + LoadCompressedObjectPalette(palette); GetMonSpriteTemplate_803C56C(species, 1); - gUnknown_02024E8C.paletteTag = paletteData->tag; + gUnknown_02024E8C.paletteTag = palette->tag; spriteId = CreateSprite(&gUnknown_02024E8C, 0x78, 0x40, 0); gTasks[taskId].data[2] = spriteId; gTasks[taskId].data[3] = left; diff --git a/src/starter_choose.c b/src/starter_choose.c index f30be8e08..c838f2dc0 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -172,12 +172,12 @@ static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] = { gSpriteAffineAnim_83F7774, }; -static const struct SpriteSheet gUnknown_083F7794[] = +static const struct CompressedSpriteSheet gUnknown_083F7794[] = { {gBirchBallarrow_Gfx, 0x0800, 0x1000}, {NULL}, }; -static const struct SpriteSheet gUnknown_083F77A4[] = +static const struct CompressedSpriteSheet gUnknown_083F77A4[] = { {gBirchCircle_Gfx, 0x0800, 0x1001}, {NULL}, diff --git a/src/title_screen.c b/src/title_screen.c index 12c31d10a..dd06956c3 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -152,7 +152,7 @@ static const struct SpriteTemplate sVersionBannerRightSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallback_VersionBannerRight, }; -static const struct SpriteSheet gUnknown_08393EFC[] = +static const struct CompressedSpriteSheet gUnknown_08393EFC[] = { {gVersionTiles, 0x1000, 1000}, {NULL}, @@ -234,7 +234,7 @@ static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallback_PressStartCopyrightBanner, }; -static const struct SpriteSheet gUnknown_08393F8C[] = +static const struct CompressedSpriteSheet gUnknown_08393F8C[] = { {gTitleScreenPressStart_Gfx, 0x520, 1001}, {NULL}, @@ -279,7 +279,7 @@ static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallback_PokemonLogoShine, }; -static const struct SpriteSheet sPokemonLogoShineSpriteSheet[] = +static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] = { {sLogoShineTiles, 0x800, 1002}, {NULL}, diff --git a/src/wallclock.c b/src/wallclock.c index efc7dd42a..8db13dc2d 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -24,7 +24,7 @@ extern u16 gMiscClockFemale_Pal[]; //-------------------------------------------------- static const u8 ClockGfx_Misc[] = INCBIN_U8("graphics/misc/clock_misc.4bpp.lz"); -static const struct SpriteSheet gUnknown_083F7A90[] = +static const struct CompressedSpriteSheet gUnknown_083F7A90[] = { {ClockGfx_Misc, 0x2000, 0x1000}, {NULL}, |