From 7d420b22e8b5e3a0808a533e0df94ff00ec54c0e Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Wed, 5 May 2021 19:58:44 -0400 Subject: [PATCH] Added affine animations for followers entering/exiting pokeball. --- .../object_events/pics/misc/animated_ball.png | Bin 4840 -> 8227 bytes src/event_object_movement.c | 61 ++++++++++++++++-- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/graphics/object_events/pics/misc/animated_ball.png b/graphics/object_events/pics/misc/animated_ball.png index da7a678e10512cc45708b7bfec5d3ad0b1b4bfa9..534e66c7b4258dea4c7866063725614ae31a4af8 100644 GIT binary patch literal 8227 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 b16X3C9xz`kd0<2<4`8T!R_DH!bL9U3Y5}^Y delta 4749 zcmV;85_0XMK)i1fU8)0n0%=XLc~lpIc4JmM!}|PY{ntssloWFSNq>*FSIg2R}J#4!KyXz1GN2 z?zzk0ON+0c{=BD{pZDjdzEAP@566RioDdEvpZfaK#{2rg@qhCDhL1VY{PB2b?=#Zg z1HDgt45&V{&$d4=lH>9^p7ML3e%?#&%|0)6zL&b*7d}gQ|EfJhe;dUA4xbNXBTBn) zm5Llq8lU(4T7kZP2fvkfj?2f9q%AxjA6p_IKWy*gGse#W`XR_4-@?z)FXh+4m+`(r ze~RThje#$}Jb#hOuY>=D_|wGtZAJ3qi8kZ;vYq$uy}R9eUb`E)64Cmus2Dz?4$HT-q-Wm#%(qfw=AF1y5`TjwZu#vi{ME_-k_YAmf@N6cdjBK>Av$;o&bNm-sz8@3X4)DgXIZxV}m2k*ATO$@3o~*o|Wqg zpRcY+!S;IqLd4vK#Uv#Iu_i64rf4FT5^-!KXs~jjHzpZKrO0NHl2xk&lO{el_gH$a zl_FLAFn`!YA_|>lDYaN>q4YAU)?7=i)vANsFtu#Os+l$G zHk!8FN~_IUYrTywUBST8Yq#Ed?_)?9Of(p4aQ)!Ol&Le%GV8S2W}jnGJ}a-X>ax{V zUt`PG4NUC1ZMWU`I4K;E;^b3KJ$BmZXIyIS>VM6*+RYayTiTGcqPQk#X}3P|)Hzi!J3Wo;lB1>_Sr%VUfji6L#{9k-~hE zl$*Zg?tA9`C~u*(Kgyf@UFL$P?*EawKGisxb8s&B@ z3xD6+aC-YMKf})l#;I(ju02Ls;1{%B#~Q7yZj$4wIi3~o*hR-_x&VgjOAN&7p4pQB zxg(+L11KAP?Ob}hwyOyVIk{ItC*3k*fu!wFOn28YH<4^TFboJjhYtie-_s)3*Cus% zp6iy=)@!|)GE2EQoqqiczdP}#pJgZV-G4OHskd2~^hFmiD6(cFMQzVs)=>(e7{#!* z7^y}2%rl;03Z)&t#VL58evZ>5;hzKfC5}UFssBY!6xuv_i(>fuF#bAm_&kF@C{BNlT{d$oHG zkY%Hund&~N@2x{}7!&+FMbBb$s(-g1q>$CpZr)?IGpTzUt3ZNlSAf9AEmNc~5->AZ zdg_IF!)fK&IjGjeKPxF2>>G?dtIOd>dp~MD5>*;EX@{E+oiq}G>=X8u5>{=AQjoNH zU)PFm)(_g7Hys3#>xt^x4~0~`fcJQwu7B#REtUz? z-=#>uUQVLMx)h~Q+MN^wlO3zK9zgpZ=%t6HgWYz*yTSN2Q=XHN+$rpp#8ak+Wa${A zrrs(8E7e~&L1uB=OGIW4x>g*}L7q8HxZ!Ltv7hWL)zOm?{(45+0BmN#cXJ!Kcw4&w z>7ZLyxjXc93OvDHd;yIjCV$ls?TBKd*K=%aqI!vg$EV(iW*GZs*|M@+gf2QMThJ-l z6Q=tBaS#izUuI%qy10MN1Q)V|LK%$S$t&b}(qi;Hd#7kF*}W3Zz!X)q_o#4h!iMdo zsjaFLv0D?e7OPV%L9H?eqYqXCf5EDzlx_4Ntrg&bb;vq@ZOs>+7=KFjZsYct_o;Aq z>r=*>-Gi^)8N~K!oz2Wv;>c%~910*q?KmLc+g(RE9OQkM7dEBYkL*~X)N4!j+&i6` zGcwbq1!^DJP$jlNyC8sszPN47H7;d0jjlTC6+ar=LI3YtZ5qVCV1-5`w5?kx0p157 zAOUvZMs@rneJrf(On>HJ3L0~eG)mK3sIanFSi*@9nDvOvxVNkap-uxv=+8>G(4$NS z$;9O$C4kDTjTWhsGZYvKOD_m_Aabd|Ee_48oXgG%jzcr=ggdD&C(vN3$(BzCh$723 z7#$zfq+v_f0yv}1NGH(Nv>1q`7OWSvRnF8h-X|A8OsJ26YJUUCDfxL0b3G_o;`Y|` zn$L8nkOLR)wBYGD?r(=W1tK+uMM0P#*oG_+IV}&=7R+MwuF`uGF}T?HmE=gt(Nsv;7&IWL8Z9B$(5}#tO_PvAOao5Undae2;!hs;1zZu)qBY#r3zf0V^)f(p7uCQhZ5Am{ zRnx6>)JDi2n{)(;^P)8By7;$4H1-b3p8AZo`a~eoQzssyhspGKnpo$8V+vMmWf3yq^t*)19@-3mD}?FG*0$w5#+@DKsE#+KNo-=5HD9bhEP9ybAS zTAO(8%72;*c@RhB;@9Nb3+Y@O>&-&70|7o*$erb^qNrkVa>h&OCd**ys7#t+4uzo$ z!kIuft4FA{o*>{IHo20{ekS-1nqok-Fy5hxXTA;JK<(UK8=OfyG^p4m(kP`-mIlB8 zCWr|93CRJcGqWA*71L55pn%Ot=zikm{=ySY_kT3}Gv)zM+O5$I+Ky9xU_fDG(HWTd zVxZXuWr>_6>TIISRT-sI0I^^-U=8tSIaEleLFP6;wSuSbQukCRX3Pz3gOAEQD9$89vKu`<(#7qYmd_jL& zt}p1I+faobHCQ{N+R#D%EC_tWiqa`$Eq@w=us<9W2E&EI92QUyKuw`-O79M0^eJtI zSxo*IhoDdx>`@S8a0I@~nO4Cw;Dbg$DgcSV2pL2{x|_mxlJrXHAa7a&7B+#h(;M|h z1d+oCfpMud1#(*!5ztcqsgo1yEcz5EC+l2Tm zz-$9$2s)%pT9x4ABAAe!0~qu=E`QfbboDu?HejyqfJ~sU(3Kt+1xpy>CR~aO*G>i> z2&6jc*xI*0Jpn@(>!4q+#sd}-nG|p?C>tu^CamWqH1r}GX1c@ydR7~h6rw+qSriu_ zavp4eA2QMnj>Lbo9n=?S=r)$!tL!8A>vR1Z1Hy~AbiWZS?$2l9D;`L>41fLERT6L+ z6)_4I(#1e6RSU8tmlYiui8#8Eh>1rDZc9BA1k|Qu8eZ=p#n^5`CN)eAC567vuKGLc zjIkbe9@zqF$R7qGZ4R~rks{!iEVl@dar5@ruv0vU$8KTzevdyRid@Hb$L**h1_VU9 zcgM1dyrx|IAqI;W#^po~pMTNOB_%?V#~+NhtN!dtk4rhska!o9TaO6T;HtQ~79ayu zO_%C%5l4AUgxf}deVF@kdfNmrEwV}KF<4$;p{WO2V$bM0nz1~N}eU@-<0Vj}=>wj$P7)C{FV@|8f z1K&^tCy+0Q8U;?z@aJjOai?R4ru%jH`(>%2YX8Le)eE=NC-4Y?c-0IOvSN5*&|Uao z%-JxwK6f+>C_pQco`!HCvd}yP2{#i;mORUS%@A=gG#T4v6`-V6#|EN^_jrVHLJ2;p zKq}RjeNPey!hU)Cu7CAeY(cGFHR|2;t!(RS2v?`i0MS?LPpM4l-{tNt2yX|(TZ4ro zC;PeEaJ3msqYEfPJ027~fhTskbRXW_35%6>&Z%OKGrjhNDycN_2aUjO#N!o1HWRwD zBS7a*3+Nz}8+8K4Q%wpMXSfH##-+kXp;0I;58&HvT04%)K!3B_G=N3Go0VPCFbUO7 zi{v|yb)X;glnnRj|F&@OkBDqUa08cEfWd8XJ19E?vJ&+6wuSv7GZRk9v=81GD+0EY zQL;WaYYW_l6+VJ=z?ft8K&=VZV~?wMAevX;OVqqXsAwRH60VQl$!I(@1F{GFIsrpj zseCLpg?w-IXMd*X1)@8_A_#!)#Pw%@A45&yB9cIp?mY;RU^rtz3(rs~G!!aYq_2+T zN76X)R1QpdYT!0;fE8D7SaS-k%jB}@v!1$&eqcn`E;L*3c&k?2XK|Nz3|o?Z-1$rgx;L<;{n&jl07BavU}X8 zzHh#?Tzl|aeMNtu7TrK9JI6>Mco7yEQ_qCYgQ`yUfy0371EeTUR2OuQ{WXfXd9rtV z!9csy#{w|$DDrqRWG8AKXMu{Kyn0)KoY5DRP5}9)lbd(Q^@q8>E1HL>vIbsAg7;Q& zbCh|Slz$Ahkdag-ud=y}Ei5fWN!5 z2%G|mQ|2VeKq5ByetJ8OiGfpzH~JIw-ct8?yXEphacXZ+@qcyIiSeTXE3OFl==zIN zKrTTXha6Y8Xm>vYO^-IZ26pp*K25C5v(X~ZczENb>A zq8Vzda3b+(m7E#^a5{T5m{uFbwl7*@cs7X_fcEj^Q3TD8mcS*$=;oYkYx(~csJe;( zWYPXisHPG?JqXLiM|O4wwh`?9Z^sVZ0m}ZQ&AeWq6JWg3bi|wMyJ|ikm4wR%5MuZ@ zBYz)8NzyCA-~a#tg=s@WP)S2WAaHVTW@&6?004NLeUUv#!$2IxUt6_Bsty(uamdg* zSr8R*)G8FALZ}s5buhW~Luk^Fq_{W=t_24_7OM^}&bm6d3WDGVh?Ap}qKlOHzogJ2 z#)IR2yu0_fdk6UIWu}@PV}PnzMmm`gvVXZ1A^3_e^kM)Z#3W|wv!a-S=lHsZkFR%e zp5=Y+&(WjgO$PV`;u)qJ7V$dq)TX6#-Y1T*lB5uy6OS5nLE=ZQ%PzlhE;{VznGqwC zo+FMB3&l2;+nALMm3Wdks;C;}`?D@9oVPfu0%tH zl!=KHsqx}f4T+P+aLbqL|9``!0KYIO7U7!$6&K-Oh3DdnP}eq(7n>wd?!|FsF>Nd& z3c+(YH2KbAD{ox2a?1tEy(G!AiZhjl=w_yJFHC*C zIC0c!WJF)9jtSHQNA-a=#a6495m76_g?kTRqxAV5QE9=Crgw1Gr*MuW&<+qq^Q4cX b{j<3OejURT?|9!600000NkvXXu0mjfg9!&- diff --git a/src/event_object_movement.c b/src/event_object_movement.c index fc99a172aa..6fab120d76 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -6459,7 +6459,7 @@ static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite * bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { objectEvent->invisible = FALSE; - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // If player is dashing, the pokemon must come out faster InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastestAnimNum(DIR_NORTH), 8); sprite->data[6] = 0; // fast speed } else { @@ -6470,6 +6470,40 @@ bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct return MovementAction_ExitPokeball_Step1(objectEvent, sprite); } +static const union AffineAnimCmd sAffineAnim_PokeballExit[] = +{ + AFFINEANIMCMD_FRAME(0x40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballEnter[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x40, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballEnterEast[] = // sprtie is h-flipped when east +{ + AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFFC0, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sAffineAnims_PokeballFollower[] = +{ + sAffineAnim_PokeballExit, + sAffineAnim_PokeballEnter, + sAffineAnim_PokeballEnterEast, +}; + bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 duration = sprite->data[6] & 0xF; @@ -6479,12 +6513,20 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct sprite->data[2] = 2; sprite->animPaused = TRUE; return TRUE; - // Restore graphicsId and set palette to white + // Set graphics, palette, and affine animation } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); LoadWhiteFlashPalette(objectEvent, sprite); - // Restore original palette + // Initialize affine animation + sprite->affineAnims = sAffineAnims_PokeballFollower; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + StartSpriteAffineAnim(sprite, 0); + // Restore original palette & disable affine } else if ((duration == 0 && sprite->data[3] == 1) || (duration == 1 && sprite->data[3] == 3)) { + sprite->affineAnimEnded = TRUE; + FreeSpriteOamMatrix(sprite); + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); } return FALSE; @@ -6493,7 +6535,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 direction = objectEvent->facingDirection; InitMoveInPlace(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction), 16); - sprite->data[6] = 1; // slow speed + sprite->data[6] = direction == DIR_EAST ? 2 : 1; // affine animation number return MovementAction_EnterPokeball_Step1(objectEvent, sprite); } @@ -6503,9 +6545,16 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct if (sprite->data[3] == 0) { sprite->data[2] = 2; return FALSE; - } else if (sprite->data[3] == 11) { // Set palette to white + } else if (sprite->data[3] == 11) { // Set palette to white & start affine LoadWhiteFlashPalette(objectEvent, sprite); - } else if (sprite->data[3] == 7) { // Free white palette and change to pokeball + sprite->affineAnims = sAffineAnims_PokeballFollower; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + StartSpriteAffineAnim(sprite, sprite->data[6]); + } else if (sprite->data[3] == 7) { // Free white palette and change to pokeball, disable affine + sprite->affineAnimEnded = TRUE; + FreeSpriteOamMatrix(sprite); + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); } return FALSE;