From 104fb91f57de17bdeb49ae99ebdaa9f8bbd7e116 Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Tue, 29 Oct 2024 00:01:05 +0100 Subject: [PATCH] finished primary tilesets and fixed grass effects --- asm/macros/field_effect_script.inc | 7 ++ data/field_effect_scripts.s | 5 +- data/maps/Route3/map.json | 8 ++- data/maps/Route4/map.json | 4 +- .../primary/general_autumn/palettes/00.pal | 18 ++--- .../primary/general_autumn/palettes/01.pal | 4 +- .../primary/general_autumn/palettes/05.pal | 6 +- .../tilesets/primary/general_autumn/tiles.png | Bin 9133 -> 9141 bytes .../primary/general_summer/palettes/00.pal | 18 ++--- .../primary/general_summer/palettes/05.pal | 2 +- .../tilesets/primary/general_summer/tiles.png | Bin 8671 -> 9141 bytes .../primary/general_winter/palettes/00.pal | 14 ++-- .../tilesets/primary/general_winter/tiles.png | Bin 8671 -> 9141 bytes .../palettes/general_1_autumn.pal | 19 ++++++ .../palettes/general_1_summer.pal | 19 ++++++ .../palettes/general_1_winter.pal | 19 ++++++ .../field_effects/pics/tall_grass_autumn.png | Bin 0 -> 395 bytes .../field_effects/pics/tall_grass_summer.png | Bin 0 -> 395 bytes .../field_effects/pics/tall_grass_winter.png | Bin 0 -> 395 bytes include/constants/field_effects.h | 2 + include/event_object_movement.h | 7 +- include/rtc.h | 2 + src/data/field_effects/field_effect_objects.h | 63 ++++++++++++++++++ .../object_events/object_event_graphics.h | 6 ++ src/field_effect.c | 53 ++++++++++++++- src/field_effect_helpers.c | 19 +++++- src/fieldmap.c | 9 +-- src/overworld.c | 2 + src/rtc.c | 8 +++ src/tilesets.c | 13 ++-- 30 files changed, 275 insertions(+), 52 deletions(-) create mode 100644 graphics/field_effects/palettes/general_1_autumn.pal create mode 100644 graphics/field_effects/palettes/general_1_summer.pal create mode 100644 graphics/field_effects/palettes/general_1_winter.pal create mode 100644 graphics/field_effects/pics/tall_grass_autumn.png create mode 100644 graphics/field_effects/pics/tall_grass_summer.png create mode 100644 graphics/field_effects/pics/tall_grass_winter.png diff --git a/asm/macros/field_effect_script.inc b/asm/macros/field_effect_script.inc index d5895b0ef..5a7943f54 100644 --- a/asm/macros/field_effect_script.inc +++ b/asm/macros/field_effect_script.inc @@ -40,3 +40,10 @@ .4byte \palette_address .4byte \function_address .endm + + @ TODO: refactor field effects/field moves + .macro loadfadedpal_callnative_by_fldeff fldeff, function_address + .byte 8 + .byte \fldeff + .4byte \function_address + .endm diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index e397719aa..0e0a56bec 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -1,3 +1,4 @@ +#include "constants/field_effects.h" .include "asm/macros/field_effect_script.inc" .section script_data, "aw", %progbits .align 2 @@ -93,7 +94,7 @@ gFldEffScript_Shadow:: end gFldEffScript_TallGrass:: - loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_TallGrass + loadfadedpal_callnative_by_fldeff FLDEFF_TALL_GRASS, FldEff_TallGrass end gFldEffScript_Ripple:: @@ -124,7 +125,7 @@ gFldEffScript_UseSecretPowerCave:: end gFldEffScript_JumpTallGrass:: - loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_JumpTallGrass + loadfadedpal_callnative_by_fldeff FLDEFF_JUMP_TALL_GRASS, FldEff_TallGrass end gFldEffScript_SandFootprints:: diff --git a/data/maps/Route3/map.json b/data/maps/Route3/map.json index bc5d1449a..e565c51ca 100644 --- a/data/maps/Route3/map.json +++ b/data/maps/Route3/map.json @@ -153,8 +153,12 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], + "warp_events": [ + + ], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/Route4/map.json b/data/maps/Route4/map.json index 3273015c1..d681d78dc 100644 --- a/data/maps/Route4/map.json +++ b/data/maps/Route4/map.json @@ -142,7 +142,9 @@ "dest_warp_id": "1" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/tilesets/primary/general_autumn/palettes/00.pal b/data/tilesets/primary/general_autumn/palettes/00.pal index 3966876be..e967b4a91 100644 --- a/data/tilesets/primary/general_autumn/palettes/00.pal +++ b/data/tilesets/primary/general_autumn/palettes/00.pal @@ -3,17 +3,17 @@ JASC-PAL 16 0 0 0 242 166 90 -245 133 73 -105 41 6 -75 29 4 +213 115 17 +119 64 9 +71 39 6 115 98 98 65 57 49 -255 0 255 -247 203 122 +154 196 149 +75 124 68 255 197 115 238 131 106 197 49 65 -255 213 131 -238 193 112 -238 193 128 -0 166 90 +185 214 182 +123 178 116 +94 156 87 +35 58 32 diff --git a/data/tilesets/primary/general_autumn/palettes/01.pal b/data/tilesets/primary/general_autumn/palettes/01.pal index c8b97453e..1ab544eca 100644 --- a/data/tilesets/primary/general_autumn/palettes/01.pal +++ b/data/tilesets/primary/general_autumn/palettes/01.pal @@ -8,7 +8,7 @@ JASC-PAL 123 123 131 32 49 57 230 238 238 -243 177 56 +94 156 87 90 90 115 238 213 197 222 197 164 @@ -16,4 +16,4 @@ JASC-PAL 148 106 106 123 74 74 90 57 65 -238 193 112 +123 178 116 diff --git a/data/tilesets/primary/general_autumn/palettes/05.pal b/data/tilesets/primary/general_autumn/palettes/05.pal index b8f58879d..ff783e4bf 100644 --- a/data/tilesets/primary/general_autumn/palettes/05.pal +++ b/data/tilesets/primary/general_autumn/palettes/05.pal @@ -14,6 +14,6 @@ JASC-PAL 238 230 139 222 197 139 213 189 106 -247 203 122 -247 203 122 -238 193 112 +154 196 149 +198 198 132 +123 178 116 diff --git a/data/tilesets/primary/general_autumn/tiles.png b/data/tilesets/primary/general_autumn/tiles.png index eef102a27d19457b0b24998e7067cf6465a6c566..f818851e2fccc5bdc9b401cb601b9b1be44d8d9a 100644 GIT binary patch delta 8837 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 diff --git a/data/tilesets/primary/general_summer/palettes/00.pal b/data/tilesets/primary/general_summer/palettes/00.pal index d183fa440..f5a366ec2 100644 --- a/data/tilesets/primary/general_summer/palettes/00.pal +++ b/data/tilesets/primary/general_summer/palettes/00.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 0 0 -131 213 98 -57 148 49 -57 90 16 -31 72 20 +136 184 48 +106 144 37 +76 103 27 +46 63 16 115 98 98 65 57 49 -255 0 255 -151 216 123 +152 217 125 +73 146 43 255 197 115 238 131 106 197 49 65 -181 227 161 +183 228 165 121 205 86 -106 199 67 -93 184 55 +93 185 55 +34 67 20 diff --git a/data/tilesets/primary/general_summer/palettes/05.pal b/data/tilesets/primary/general_summer/palettes/05.pal index f4f4b6702..8286e9372 100644 --- a/data/tilesets/primary/general_summer/palettes/05.pal +++ b/data/tilesets/primary/general_summer/palettes/05.pal @@ -14,6 +14,6 @@ JASC-PAL 238 230 139 222 197 139 213 189 106 -151 216 123 +152 217 125 151 216 123 121 205 86 diff --git a/data/tilesets/primary/general_summer/tiles.png b/data/tilesets/primary/general_summer/tiles.png index 84ba7b2f987ce0134e5936faf083f7df15665a64..b6ee9336ff2480c5245e25beed3f5b37ce424c9d 100644 GIT binary patch literal 9141 zcmXAPbyU>P_x|iIEV*<@2#bg!jl`Q~DM^v;SR_Omk**ht3X+n7#8LuENuvl$C?(Qe zD=5t*5JwB4;HB0H8EAR1Gc>0sw{~MO@ZY!Xu9^ zf$&g8MbF1TT^WEYsrFc`Tt6Vvp`xU03gl5!+R`PbeWg!Mseu-4YJ_0_VI8oCekj%3 zB39!l0lSU@27ZD7+=8@F5q!{)dEMU)zkgF{k`C<`sHsGjSdO@VlbIo662mOE!|;qq z8Zo7SsaKYvlO>DJPO`|NbXWybyQHlv0}rrOhwXU094%LxcwB^Cuq@(f=hev9y~;@B zxe4;Qdphm?+_ScGM+RA=Bny2w-R_9L1FwdF7Lm5tQ@FTbT*Qx&M@Zzn1`_#$f|Al| zh{hj+xr&P5G*P^80BkfR{bs!5-dwI#L{G;^?GmFJMO+ejbRMt?Dbo1dzpo@Mn%SAE z9in>i#b@iO%NJ3lrt$jV>c=)&rra{<-h?jC%Q0kL8sS7Jk37VPw|n-O9Px{}!1Df&{c5wFNxS(=64jyiwO>Dbpc0 zvaR#NE#>>CrAHPjX0n_ylNy@!H_Y@5J`zhIXpVuZH!FnKn>2=am{dVSh~%SNRfl(i}liP=W;5Q zRYJz#A!L+jhWI1h!|}G7^sPHXTY)7(IQJ z{WaEM%j&P_ycY}|F01hN9`Y*Pk!iS`C&;`;I223p(T8)3LjwlnwNg_Dzcr3~Hp|A)7{Qs*PN47`E+a zNDUtf8~i|Eb3DZ{MBAV{C-Gs}tLI35w*CnHKe~d+hKtm&NC9?mGh?PLJz?oeIvgA+ z5~1IHK7ifuI~b}(v#gvh`SgZjfd{94=6AO;a(ogycHI@DRScgj(yZ!$x4ZpJNE+9O z8qidjO|&h_kg)~_mQVpA@eSh89yR!^YpRcNPkkJO$NRC+62*o7fMa}RGby|?TZZvG zRJfcM7ts`Gs@N#yM6xDc_=guvkaFxK)c9lQ`uCeJc!cmcQ;I5Kp91vXUb*+i+E0ch zCd6VzFgz32^dNfLd_>iDfWDgBF0FoWNyxjo_Ul3l+*f3vFsfabr@RrlfR{Y@HMTUd zHKJ3F14S8m<)fTw0}_`TLvLVBv^#5jWg8T(2c!t%>Cmn?B<7zzoq2#LYHd{@t)n_c zjRfNpma`nk19?yqB5K{K?>;(aN3NOp;zg?fX;nM^3_cEKcQ`OhN?h`3Kze)cJ8Tm5 zv{zlO)=4__JoDz`{z7k&0ap?*hy10dDMzaE>PQRmN;~&AHfE-P4?grL@s5o?5&g%n zdqxKZP%~_RouV&3OMl1k-Dye!H9>e=oDpA-Vtt{=-(5c| zSq1!_?dYLDR0^bq;CGsTOtTzh+UIO1D%R*Y|Bs*F@Ht<4ml=d_6wV&7eH{9X}x{Q|)v4U_R8$2kxFhycoZR&dG$Y-W- zfD6Yol@UMTcf2c1GPdLpf>|jxBntx3+Gs?Uv!u59Bc5UxR1nWKLhJq)zw-2-9*5ea zMPa#aA<&qx+_32;%qw*%ZniK~rqg|WyFhTi_hTWEN}@^WU*+hCfe%Y%o+XP)ot)Nu z+>;m=upGLz-71iu#S7@}@j!dwj9sncSd;Kf_^(}dj~jnM$#5%t^emJFO)?5!A?(TU zLyouNYj$Dl)RE?2Ny-%JosROb3X>_Ycjqm(uUlR$r>A)#s;q!`*0W1qPwkhn^lwr{ zV&w>%gMYRj2#}`g$-STx`8aOKe;v_G zwQ(MO*Xrbi8~Mp>Ddh0s2Vb8H1EMdrdbQr+&{9w762gb{@)DYUiQWy+omnWhKg++q z5s8$#R>DZ3a?55(^k2fDP3mrhKK~WALJ?>VX|4b1@$re=yg&3^W!9uyCN7U5K^Sh~ zR1imfy?oIjSpoy*4@yRCYPEuF?XQz%_gKql4`=M0ZT$Nb>h<{GP2Wge3GAcxHU`U@ zS$r_8s_ZLg(`cC7ntl(xe(S~P$?q}$mf5AF0ENK!C0$c+IeC(~CBt2Lf2mT@HbJl# z%5p3nlKZ`KzcM{oZoNH(FT84kC`W?H%O|9ITa!&HcP@JQ24`?ms6un^xnWHQPmdzW zwj@!-^jZI|X3MIJ?RUj{w3+U&gHHy?37Ej%znu`3!jqZ?W}+tNf2(J^Ju)Bf$+yDs zC}R0mFzK73Iup~KY%NbcgAFjodkwh&vz#5f1oQEg%gaC+tO zoQYp>fA<)P=@l$d*?4B8J8YdLH&i1U5LoF*xVxmu$e+>Mx zq?nkGUA*z%OX#JdMw|ixj!oWGPvwYQ?@raY`60)$Bng9iev}*wo;N(U7hWuEF>f#r}#p(sE^`g^24^KMNTc+707|Vh44w_kulW zvhrnGo(Cxnm*p4nJ?9mi>-dHt?WEW#2&30kRW!O;R!~e7Dz7ku-!GAQ^g2MwTs14*j#+u@o;?!}*sqXXDPpon;B;jdsJ&o9LGhAhrKS0O$9;CMDWJ${*fx z7)?<7I3q5eIVvj^ebAt zN7(Dv0}NSZra07#>$~~%WGd1x;t@T#y66{p?Qo9syopD`8U|#UM;k{jG2_4ZmY~Aa z7Zo?&+zHU)WjdNhmz->WQFt#O98p^~cbsg6UV<>>*BHTjU1tM$45C=oKRNdi)4TH! zJ_)oSDK&qW_s@qn=Lrz)jYreP{ALE(xT*F7~ z!~rl}Dj`O{VMFvx+eML@Fz+y8!$a&t&7EF(f=@8^RJAv!)r!J2$erK2Q>eg~EUEIe z->xg_(!Ct&qMQnAz7Sge+aj(}cy_k3duxW!8)(a&+NQH->I_L30fsaG&zKrvYcZ0; z#Q+f1x4WDqai=A{Z|^Vi#=DioVE$jN>K^da6F83V@Yf-Cf?yoQy{M=@I;I>pJ2BxM z->P_(At$Ne6E~}Y7l;r!n=-4BLO?_}asSQ)+R5xEt~snJ!Ktzq)gr_3JBv~z=@%K6 z2c@$#NVl^hIBh0eHm4r?W~QX{{JdH?G$s#i#)wPx^dUDYbUFE$pi=bA%RyxXZG13>ep?W*4p1g z*Fq6k!%%?PQ-AZgBicQe^e4|fvPH2MVu-RpBSL1rS6Lo4jRi<;4TQHnW#uYhWNiHQ zK&Qq3m!X??#d&uW@`*r_yIl6iK2R` zC8B?ln8o7VQ&PPNSx<4ot1Gwi6tz)l!Km)6qgGiC{& z4vwY$KQ&hQWXQ2&j-4_?_|g%2ZTAjTTG>e^$=UI%ap|`Z4#I@f^ezkuCEC#512&v; z7(o-3y_SB}kuL_rYVomWrcRUesLr~Ys@qHvmX&;-_-_d5VFr&>fRJbkRW{%vaYl|& zB*)Wdg%Mv#Gih0)HcVcC>-Z*-d9h%(8q9?`spk+!e;UQ0Py+-uvZR9I(Wel)b>}nn zhWj(rffkZZrPM}BFW$Yn+PKo&wRIvMoc#GELQZ6|K1vI0_=b>)jQz^L(+Fba-r23D zdjo{{KS0;X)cNsBS=5tFf7si1uD9w^B=gA zom2j>_mXx1Y-qWWI8--6xUbiQ<>^syVko>j^h%hlKwX`E4u|614kDS#Btv8sthYwj zopT6$o4buM?o$9FX`ldzC~@NWZPnAp|B7L%rq z)b{k@s8tah$4Qb#3`Rr^M2ZzZL|`Qz;SIU9ks6eETh-avZ-B##588K=z{0w?xj58x z-0Gr(&mJq~Fk7?Q852>WLra$Efj?@57;W0+ff%bXG9WTex;982(`V@hjMW+9U>M6f zDtt?zL^~DcCRNJVuGtjEufxip5a<}!Y_Crgb?JHWGF@6@n!`B>jF$HqAb8SU-0nZo zT#*H2SuRiu^6iaMOJiWg%mQ()I&vH-(I5w}l!L|rts;Va&YhLMtB`6M9q`SwE~dZ` z%^OuoiL7P+qy!^zOeOi7wn*OTpxk@bWe=N{D_y`fv$4O`$md)sa~{$Xu9(WXxApVk z|IA?`ap!UHwYV*-d(M4^nN3B#`$ZL|tLj}VWV9Lb0XeT@(dv1!P;ZHj2@w@;=^+a) z@U?tQLj{UB!3=Ixx9PE{lt}dz8S%b;41@40(4snHfhJxx5=)&~HQDDA2|{-zy?}eL zKa6SCn-^w9Q5TT&%N$Oq&!@2h&p&RWaQ2Aq&j6R}`fo0R0QS(E=D&7EStMg>CmAup zOD4~$u!4ExNb!H<_-ww`-2n?d$bHH2>Kad~n%AV@n|2>hn8lo>!H@K7dV*%>+`=0e z;nLb`2;S^k6odcQfAskJK%_PbVDA*J>hvA_T@*Yia~Irg=V|fD3ZiI2K+7)mr`+YP z_K^=UA1rpOyKmI`!QyBAn-NvZd#2{h4{L)%7JHBAmM~&H?i8D|<7deG zjtE0C{K_r|299UMU%K(>DbHe%iR^>`5-);&v=9_z*Bt*&e?jNHMRODKnr4(LJMz4Y z)IpFI1XOk2emxxZFY`4~strCugAYd6zY+C0tUh9#R2KNU%eFb58o_Rs?*0W1quxAg=&>&=B!@N0Dm zcW4}A9ot!rO+gu(1L)(I07U^LX3T0)?p+RMp+sF|OqRI&O|Z!Y7$&~o*)sGKukwrp zTY#w8H;tbwWI8Z%yz3Y1SiN!7eJ~p&+S&tXm&64jBLP#$m+lCi_;AY<`iczrc~H() z?fOCiysNJdZpjRxc?=V}!wYV2|MZP!?}uWa!5@nh$i8V3zL27UkjR0PjR#h0J(v^q8+Bj@J z5(PACbct#E>1EspA8EvaN%1J44wPaAj1`ewma8r>jB6wkyNffg|G|wJQ{@4-2Os9; zriRs$I&`~cJO!iHVxdp&EGae8gdn>|#E7A=?z=lTK><}DAWTb-S(bl{f8EH)(fnM$ z4tzmbA~f#FX?G7eisIXap6Itx5)j>TB@Ff>^68eJFC|A~d(Mv808{@JxK|ylCJ0=f zzu43Gf&^}hGfz}}g7;xEK(6ebzyo74dAU5$L%U0HCY1%+}|94DIYR|u>o7lnlIvjS(wR5(dG5-DSuu#Hn6S^`VST+SD7n3K54#eYtv z{}Nw*a%{}VOonwY1r{$W*0W0eF`sI_qW=BIHRBxX!990PPwev0J{z>Sj_*b8)r{;l zR_Tr(QesbR5wk3Le)A|i2iym&d!HkBzLK8xDE5D@owsk(|xt(x04L{rD1rpcDFBk7iI}0-djbvYJ z5hV@5Yrh}jJP|{__-EJ++yxcb76umF&BR`c`0ZR*Txm!Ua2&25NYZ-p_^r%EIE?V* zYqRCp^V{C%_P(>de-D&JKX$ED3QJFs`Nip*_Fnruvf$%JtU@Aez1BGO=%X{%+Lh?D zpdMmp7=8UN8QO{^2w2s%knrx;OA^ULcWYw)ozOP~A7tBbocJMVV%)3C;iJs0-v=tm zjLvVwptm}@K>`UVnP{DQx_$m_gON}M%Y?T8=j+`sqC%DfW*WRxdBuoiAI1R#Ul30BY|7EVPPgS>r*-H z>U3Y)#?-b!@{i|Cxn?%| z1m7*;uQPqIq_2Xf$J0cre@_-BfO38IyFucm2wO z6UjYOPulB8^3`G|;52Nqo^jG;*`D@~Q@asxKj|~gdG(tSr^^{v#W=|neI5=@6k)&P zhA1!_j8~y)lqEDSNIf^1c2(I*x!x3#@pVK094GN}=1yMl31C0xJRw%Q_n`m%m;;>s zPvvD}jkB;aonI9pN~GX4bN;Xu-M2(hal7U#ncMr%gN}!*XHN{~A(M~yGKFD>J}{c2 ziz-{aZhFw-Lm*PyAS$_Nw$oS@S`ExiKMNsY;D z2jQgXjk26oM^P){#LSVET(f^d7~1tpkmx-I2~d07jtLj#at*cxS73}?wjhdJ2T_gr zc$pba!r6++e587{R^N_=}xHZ6(|7xk2Ee(7*m{+r=4HV5 z#0yJ^4s)EgMQLzqK;+(4aQErygTw>RK?#;*f2lMN*7m#Af!(Iy_mC7=IBh()2Gb;B zqpz2)Lj5W&!0p|`i!QtR5dX7=J2`#I;bE4o*4oI@Z0+3Seie@CtjZaGa7`g67aa2> z&*VIfF{$>Hz@9U)CDbtC zC1|u0gCXUYtXznci{R=}3<{r{A(~Ixn^l>rT%W*tNQ7mrTDprM#+#&vx`Amfx~soq zng2U2g!MGJ7tvlZv_p_rF-rER4aVze9kZfmFcuD2LvfrWdkynzB;VcUF}ws-$RJR+ z8-diG=8++!sY2juUm~bkMW9V$(fKaeUwE);zNV<(64>MuUf#WfuxT+6rBma^dug!Hx*6IU}j+}55fx~u2G4zIv>BBBf0XDg#GWs z=)?EOUMW3er2B)v^iZYt;{up}!wp7{$$N6*q7kO_yL|aP<<*{m!|LKQ(utC&CnoBxxSd#^@`Ld5h<$l{ChXL)x*^;XalYK<3D5x~ zRcY(x$jqD6E~yS+LSbG9%?pGi(LRsflF?I#RYz#?Ah82-kJ@*}%P!*-*u4a5)-~Ej zs&5oGf|o197RA5*2Tl}rkLOSR6d*HtZ~*|o#r~HI5F{ybuX>Yo^%KWxFbP^a=H4f` zxY+T-Vx-hO;t=7O0kpsLJ~0o}Y&6f!x18{HkmgprAc0ceoet~5ye7Bh@y_q_Ol1N{ zaC@!r#EaDv6U4dRlGQH)3Tn9B3UAc(i2RcO{77*;3i+|_hXmChOI2G~75Src^Gzf8 zpK0zsy@~-zTV|fxr50q#GV?&|0%Zq1W?dk=*jM809ZdK_a=f85+i~LhMJvw&0>U0N zhtpu?-v}xch6WKQZjZRjGoY~bhq8Sk!dz>24~3Eh8Yz$7Nc6rF7v4L&YrRHIjH-aF zc9H=BW4oa3=N@iNjzagJd-5^u8xLWMg=$Z`j1Y$wddY~!)6YN6&lE>qe>X2gQn)dn zol~%hK#L2;`u$a2j;l3C2Z+?l?PR3f_TJVoW@x*zD2xQVXUsyW*RANnA@t2iVAk$S)3LqL=(k;qB>9(;3m+h8{1zwE48RQxaH;*Fz6TK`IT zeqAU%$!G%Em2E93D4;oWZr!HpSKv_Dd`0oehC29bpYl-P2Ho5K}D21T%$op{7QMSON%JFVz`Ul<;OieM+!tEUL1W^zkhaKgT(Y-{Ct|O z_YLIIWN7tl#gcx!N_GvPuNQ9nMd lhG?A6Uzj**{YAI{x#K_T|d9`o4GURo_U@#bLReWXU=n;1Vep|8>Gyn007+3(o{447eN4kVBoNSx40CS zlYc?PP}lU{_4W16&d$QZ!r#+g4FGt?@$ z%ID7ft-M-_O$OQ!mnHW$NBF1zflAWc64|HHI>bGjkv; zv=|%1i1TAqLuU1JXjxlAt0wEUTw^qj!xuPeCR4f=ex-zNKb-%)b38VDF8}X%U5_~D z3Fu~J2|OyR&SM(;mNVP9v)_k1lAEC?eKXETORwPBEhbI{x*Q?e%!^gFE7c%ft}_j~ zCfW`?%W8d&_dH;v)c8^`itS`Ci!=JeOMs=}Mk}s&XPh|wb7*A~gc2`ETj*i64Q$ON zp(1a3JkO~C-tr3)frTT){^7zCQb4j5EmY=2SeoytR`i{6y4m_wH6REozwL_jfYjShH`4@_(2J);CXOH3an0iT3&d}7X65*u+jj$!o^az#nq z#Jb#RV!Dv2KpI2~+3UJ7M5@?NcznKczix7JvU?}?i+#SB<89mWA94GqQXq3}p%D2x zKPTpsjrqjW-hu5k6D`$`(2Axe8|HyeDaZ3=S{Npf{bt@D#%%OzSGrU_x7*h*W-8~| zg8ijkq|r^+4+OcCo0)q5{`Z21k^Lw}bY3^7E7O$pv$M(DM)lk51N-02UUVxmr@nK8 zQ~trOi4+LQvW}S)Hv7srl*RD;?VZxT#*$IM)86*6ZEwU|V`be+{-sZw|)Y64Vp zz~qpbwgEbbF@b*ahIl=nea?Hb>*9kt7nh|MQuPk+c!|vFI8_i>_y6E8^2(`FnrjQS zosO!@Yu;y;!83H=ed;{L6eM^%`}ZXtj9n!@e);k~Jh^>I4Px9#T_2)1Y7jC`FvAR& zac3sygSb|Ea_`SOX3b)i3ijSzNzgX`vljvDP1YnTN+KrZg|Q6XafiU>t zes&9!mHBOl=KnYY?0-Fy%jLJ{(e;bgaCl^pA1d~M%R?Q=XZ%PDEpQ!-qSPqL>0h(G zYmXhk7qhH_4%OVX?;HeTo36kjc^$;i3TlX>sM$m8Dh}S(!-F>~bb!v!kd~fT50!_BA2`ABM8nOn}}najJ-2(+REe zP1hU4YwI|9;Wsnj2lO$F9GP=bf<^2c@R6QTes0?`zt}^`YHnPpvZEW45eX&hsI4{% zeW;D)h~&Lq|NgU-jHHDvr0XN-ADh;Q4bINY(jFJ+j}{hq`T%*eHiZNr_j*lD5*|DH zQEP+kbI^})PAq-~a!<&uKjXaj%|~u}_xAkYfscu&x*ioCt`Q@30S+XXa-L&wS0veJ zxv}~^RpN|=^YB7Mt}SQtn3SZFSz~}64Z0hWpQXLWmTaY&KX*xpb##mtJ=p0N7Ou#h z(VzWwf%TyK8k?c{on3ae(&(2RL+zay<>-U_NzZ`q;itZ9*L^QjXHTVMm9WT)th(s( zcAGN}R&UYd@{O1IAF|QBk%R^RuIuxUD*@?V7Mw1)y3C1N#pY-4Siw0IB>nTaLBSKN z|JJf$W7)I(@5J*sa*(vvZjw-MH~ACm*whC-&w2$sH{UW?tOol|&j>aIE0;HLJw6i>I1M*zr9)i;f83e z3Q)fL$|EcSEC7El=h8Mu8zHt>gE{>Jb9clI37bA zaXa?Z@~gV$O50UW94x4C6tWU4v5H`#v4vi9hEE*0c&dG{8G`jqE?8Ojw1!R}Xn`uCyqSV|l#9<7UhUG00+n zDT4U;gf~0o?9Wp#iw9s{)OXn~_frWs5pnJZ`yK6%_p+TRFdaU(?#(imoek-Ka9isj=75KeL>(-j z6yor;883Zp9H1>>??1o+W;j_|q->RT0(<;;3?+R``h(+>v*4T%#EoN&^ zafsmT!|arlPSlT|(D1EikYz4cKF&-8z3w-UzHd*UwftlZjV?~Ogc|aX$#-{GY8r)A zeLlSZdur#y^C{HgA6ejB7Kn?EuEPCHEq^PNfPwmXMcN33uW|+<*taW=SlB%4pD^19 zwS;x7WmNfB+Bz9oD-&ftn;O=HE(Sik7vVCF_N)vV<@cGDEksb=?oPk4kJ=I{td^9p z3);saI?nTzu+HRXk@4@{WwX+ATiQyGT=`Y&ayVgj^(aq-#6`aCDr-?P5Ab=(e0 zZnm-QD*IP%6;O-oKji>p3^Mgq<^L;G|D)DuCf6&Hjf5imj!lGrx3K})Z*vG4NP;&f zz2z`Bex)kFzA=c~yw2>b15veBd6^3S2>{%qAAX?ox%y2lJ!{@noq1Ka;hOwV-(4W9 zkFH8)?REW@!Uv8;dDmt*o4cL=gLL0^*W}fB&v}~#qmaT6%y^bl-KGoqCnK%bg>xLK z;t)(WQR+QQyVSAqFPH-Wd?^*(oF9ub9Rdg+7D69KqIDD4U0@w+Qjj;^mm?>E^K!ub zMSH!9zn3AEZKk-);c*2e%ssI`44Z>;_Kn@eQDg`}=wq!$?m0Epw=J=u+8C6a)1QLQ z21A^+B8x!r;*_=9OHRK1J*tyEO=zl+Rw56yCp34JF=~Z4VyxypvEoa)E$gcEapmnI zsKn<$=d`%-dr%3&(f*d-<$XRmpnAGmnyoXcPZ=m+pPjcEa{`m7PvB+{@V=Xb`^kyT zGKh!ao%D((zR@^upLgv;U53c!#+JWn(zb8|yB~Kf%AkG93YEq)zpUPzR~xgVJBhrz z9C%tnd0WPb-Tj80VKjQp`jfB!7(`_u-Z}tzi8OC(*m$=^E*3Vms79HBn#Gwovz0H|V76*W(5S9)9-TN3lV!7pUc>1h%)$#;teVDX(s$uv$@TJGKFS@ zp@z4-P6tL21Ka?b%9gvRi5@d}dI_SjTb>U(P)fxmQR;;cD}+Q|V9vk*CjaQPduqr1 zIufk6*a7_Sk8a*P`#fYz)7&@Cga#9*%r{^&$+gf6VzBPpvF55jgZTDu^IKJqxDqzx zF4eP%7zkx0d<&nweuY<8-GH+XU~JV^!z-RC`rZ*~LI##jEeVts6{c+CSanhudsNNZ zP!EqTdADvIwD+A?57msg%lrp1ed-H!4?O*%&GO0A_bu-Qa1;mlr|mi{IDJAfYr57( zg?+|U+hs!&Mm6_^Hh*i`TlBX?lF}|3taCzY?Szk=*-UO+#Ywjy|&X&iS@@Y6p{>6_=)R5P|4`(TW zxGu=g$?5kV0qiBybU@+m2Jk_R+;Z>C0|E5Ry0aAwCJiemht)@w+c?@Zg%$UJip$w%`q; zlE9CI|Ekgy zqEq(F=h1h6vFGLCxi%ydT%$dZ8G{kV}1W~o4{R;qCl zN;x#3xhNDy5893itQY0Ts)E7-<1AE|WZb|jAQYzqg@!emeaWLBfo^xnIXD@`dNfXl zd*BtsXW{4{Sy;b@TR<{qs=Z`LXh(Ozu@w9~8_V%)hC1naL}Ff~9r61*7~%KxSFhTc zh^FQ)pp@F^%y_C0oC);!cv+fffCB&B=}Z$n*thd);Q z5d@RKxvrg-&p~=lJ`_0()uE$xs}8{!B!(;L(LA_#P5x~-sc0h#m}7w86Z+CfQM8@> zJSSTr;4mfHj6uYV{G+7Hupi`PTb6d7QjXE1cS@_VuB3f%K#@t@A9-5D$TqWt!;OJQn@4k$+PQm<_=Kpyp;mIpt zse>~n<-xJ74gC__U~H|*GoZ-MgAM!qhj%Gpk>P^_61Pj#sM>V(`FW=f=##3^;ns2W0%v z-Nj@D{1r4847~*LNDM)&v44S?2y|S%5D&qzthf5ZV2C@?i2x46*P)h7 zas*%T7pk4|^8KuL|X&?hA4wU!}zc2t%ARQ!WeM%O2H!9h(-M zxw;E|{Dz+y{hj%6%-y0}6 z662@ZuIZN$c}9{kt4weRfoZm|h)jmC78Q^q8X|?nys)1Ce(m$$R-&m=%Q%Ga1U*i~Lfrrf%w6qY zJ@x3!aItLPZVbRN6lZ9ztnH4DUv6Hj-?i-A#2u{Vb7I=Pc#EbFA>QIMU6EyPP7tXC z-y(6Fh|?91PTc@)j6$*U!HTs;-DhXDd;DpzROtA*<0fqNE~Nh0JfrsU9O-A#ONOk& ziq0I?%dtbiaJj%^_)r_0$o@qZyQpUc-kU^1x-Pojz?Xhu^RV zmgnUhkY}m5xzcP0l-EzMVG>}5>`4q7pfyd?ILrwerW;$bWT|axs2$Cl-tR`yf-`Fe zW9u-g1w&i5F*|OYQtT^F#<9b+-dXT*0x^2OByU^4rR!aEwv9OQF<2P52E^i)DBM8Qx`8_dJ(4ebtj~Fnz)sLr>yO+uM z61#Ptj<6yDibbcqV@hmJkNu0Gj-!QxJ2g5l0cK%p?|mX@{9wx1OW`ryHHl0!88EEN z3W2uUe62cWf4uN9Qpw+Tyos+@GIQoZ4E~>t)2tZuUI`=5+2QAWeN`D+u|tIAbzn^J z5!A&YC-8)R#HNeZ#$%|yQS5k~B})YF$A-*-dNl3@C|Lyw^g zt^$RgYJMUyL#ULeQ8%AX>FYd$(PCOJ(OaL~wj?tmK--95bss_{5_8(sL#mJ|pmCGX z{H;ODzn`qUOo0~Re1RH@ZxO~ln5EXtRKP8Vu%wPZl?9h6dpe=1e(;fB_a6%-V&(H^ zb<#F8DY~>Ebx-{xY%xAyPb3Oc&+H^H@O}(nW#5H?`bhBTgE=MfE8h+Q05*9oYrl<= zD}Gncnwq~2kduLWv)h5h4o)r{^za_1RZIidw4Nn?1ys zUdYuLS+Ro>#xx;gn*=jFD1*0T7%5Q;nd@D5NWYD?#{b6shFaB(nWfzNBUSYh__Ipd zuC9vu+UUGNOgQr?05p2;wi3qdbsTyYfxUte<(1Enxv+D)QZgfa{x6~}X6oW?+h7ub zoAK)eS?VsQzY*uHfJ~RI!xMJkr`KW-$L%O)H4iWzhEz4j0kO{f_@}TpRFLr+*cY+- zP?@()@`~|y*QP5ss?A=p{hj&5_forZukn*jeQkBwtmM8McknJ7O))>o2?Jlpv83KP zn}l$k>MUexAf(;ajouVX73{28^nshv?*>Gm59R zJW|Evcr-)pX$ZhVfnv!%SN>QkPv&`VV zw{EkZ4eSMjfu__ToiyeYEla}v8JNqWQFFJvHb24=X5j5IP4kTd-Vd4d}yBX}X?aKEGZU|NGBRi^h< zZ)zDZ6yQp^at*vji{k+Ekc>CXRX9tBEw1|$bVP=e&ag5jI!x|CWaA?aLqQ_t1XpD0 z>l#?zH+{B-`qR%YkFK58hzg_1_odLQEqdVQAekM~S>w$F?Miu@UhL)&nY7{EUr%B* zG`%AZZhKiAZTYVeeW%FXNc%&X8VUa&zmyF?jJ2WKI1s(t|5DY`c~u~Xr=OOATglVL z%bJmT`-rR2K{NRR3V&4lPFk2eAt1C-+4lO#!1MZpgW=S5GsOG+dKJ){x|a5OM{<5m z4`|mT0x#%+sVIZ2tIo`@hqA?+7Di89!u?ClEe=IAR)uBnUc7Gd_LGa$6n-o0S_jFj zLCoB*n90MsOBQGE%M|khH>iXK-5MWT0gGORBsM!l#Y-9V->*J(Pbfs5G*g^=<2{Rb zoC{Y$-p&u*>kaUhR@d$KN0yh~_^RQXCz4h+-*t9a!7pQGWkQygjn!EJ==}K*jPAfa z`%|{fS2YtP|3sf_+LOPZHvcJ41$ImfUP+AsHdY>1^RH|}WF!Rv6S(1`Y_S8;TkHB6 zxzDcmL%tUQ&Q`aLg^w)f>erS%Yi47=`?prYP2~Qj!>&wV5X??lc95{y)L_Gdhu@_N zO|B(|kHfUNe)GcTD{Hx)>_|TaZ4#8MMrKYXT@H5(pabi+)AU3mm#dU}9QrTH823u7fRRYq>D<_iYU2;XR!Czari zWDnaKnce>1)}W*E#?@1MZi}naI0~@UmxgHE)rRu)`tXq;JQaQb9fcIbTBwsPPK0Ij zIHTY)6rG&oXPGkRub}(Mo+Pah9*74Y2^?$v*GBtKa_?O2#kz|_k0*(DK-J#?<#hmf z0d=bpZnj~()K>z2bZzEY@R98ipb~~tcKR02U?zU z_`%i*hdk?>2qR$PJh6Mjlf*Oi)gLKE=8qSIN1!nYa9YmTUNZXgAAYJV4ZfEG1;+oE z%*;|#K3AtG);f%gG;YhA{fVFgPNRVan6@xM^#aIu`Uv6ayRq-k>~;pJ&e7I1^l&!qGN% zrQw9e;KDzdAJTJXj-Z~aU*MlNR9J|!j_4EB^C+XR?Lm~#Z~KBnGmD4Wgojj0@wc3_ z3iq@ydKsOYshE?f3<8UoMiYnTuag+i zEM!5&qp|%wx#FicHX+njAZPH{dsV0~Z5Il%E*4&vR0A#c6ZxBSKDzDM(Mhqc-w0HaLPvaC0F6g;HJQzjdTd>H0L;dcX>8q~fisxF~kE9N<9umR>@I(se10l!NfB5WVYp(u* zaxTWpm3 zfq=roNW16P8%>o}IpvY}1iq5`P6c|Ko_vKw)f+rO{hpYZ$65NYKQ>-+Xshf#VJ>d;_wCNP_x|iIEV*<@2#bg!jl`Q~DM^v;SS3Unk**htgruY(v6O&P(kQ|bN{OU^ z=5qo=EmB4;HB0H8EAR1GdA1ON;}iny$)ghd=( z3c@256+LeQb!7mqq}gGyasz-!hl-N2Ie(hqcEZ`l3{C zi&%}L1nzehGVl`w;1;Asir~G5%&UPO_=B5DlXPg`08J&bqzc4?o6HR1lNe^P9fs#b z(uf}lm{OilLis|C( zXa}oaeD>aY=KNVy>5}k&9Bvu(@!oaJ>KDJOXljV$^)X;3WVWwyBfmjMba|~1^FW@xZw|CRGU>YRh65xmtFPAtf&f1|| zHscE(AoQ3tz5PjjIo?4q)mB*bP(Z49I5vMapm&-I5OGGivL2x@SJZi=VzAuMElex? zEB!@0PkYC9ddnwxY4BZS_4b|x=RmV3N^jh@%8Oh;5oNH$ji3oXg<;9>TkJJZdolo; z(_jTZt-*&CptZad?2$ncHK+7H9)ds#)X?;Ou4(QKOV?=P5Pzh5Io{NezHwt{FLWbe>Ihg7sF{8poQQY>F+s)q#pcZsICB5tl5mNnk+^LQ z?OH|{TaOw7h4}?%AYy?kZvlGdN?2UEmr#W2(L>;ReR$f9u|0JXHNgnf5j5J+#8rqF zvYG6jMXsgb9Wh|@Y?Mah+%@bz8xgcHbbFA(jhe@wRf(ElK=eey={vb!wl3G?nhG5T z7^qU>S%)&np_U<7!eT&lei#|vRA8y|PbQZ9kJ$4gow}coIi;kck!A`ov=0!^q-_y= ziWf3o3CohE$q5e;tQHu@cR7eqPP5}NRaR;O$uu#OWc-jdP+;TQ%bSf2rKhj9yT&?V zS@Q**AH~q=ybAB=C9l>Uor24GfUIkTL$O3}eK@x`H29F0(DhoAA8n?tuR;!uMGoH3 zhhR=MiJoBZen7fQ0=<y{ zQAS+(AZOZ$#O1}(8(0(V&KO_W21V=sse*Vqv0)EeS z?9dM?15(5AJ1sw_SPru6a<`KdYjvFdNHy%&Ya-su%q6&VlK>2nW5jrLRPfu01ZzvP zU?sPD=i!w`UMQZ@ZaSgv)7rp>Yr|YEQAD2G6r8J?8)#$4!06& zcVX+)5$0b=$`u+MkMgk!lc}(`=dHG{TBDXS(mfH?RzN)a`6aHW_RCoMH>o1Aa=6XG zKU;T%`{3c4fGfsWZyNebGFhq)8y~eDQJoq@sYfB$4q=|_Cl4Cz! zb{0j%cCUIFGq& zb#lUu{AjiqeE8_SkN1TE(dRn7I{|Z}?2sDed*8lkA_(X2b5BjDuW6~oNpU;pe47YGBjHkX{ zv0$GffdO*|rK2`=T7kB9*U55vt!1=FGI!24{(TJbd~)!*f3&_7_Cb3agJsPsIT%q@ z_K~w`GE8a9xQAZ96*YG9`@3K3%;J&1LcqJy?jLYDd6L;h!(DklsWQ=aL9iFXax5L3 z_pNHbDkDg4y(5?}ta^edSAxmYJGf?BlT9jbHfHGtXHas8LQCJdVQnW*uOi8|BvIwm z*}$%5>#DQuH^qCjS#Ga_P6o*dn1H^&T@aPR)7nO6qGqRmt7p5tG9T{Ax54o!V)-^O z>65BD9ov&)El>T!el)OES|O*pcOlr#kQqD<<*}{eJ(?b{w4W!fc@!qqIvZv0W;Z(i z?Z2bmVADHVl(t_FrS|YS7N*|YPTf~?_UPS@w!a_UazVdmt|mSa#4XkB@J{4fg&RBP zv!&OT%u=dh=itD2pszN+{}L_D~#Aw840&hXq8vY)gMUAWpi&L5Wd*3Cor`|B)S* zzQs!{PPsPKA#&GO|FuOiSq==VC|=tBz_+hVhGOD9!yZ+P*oQPKQnyjAAL;bF-(xD7 zfNni$e-N$8E(_^P#0WIuMyh~#@GIOu(SKjAsC?Of3$ax~jI)Ow)g_ez$CvJrOf=sq z1S8&)Q(=NM3I4>YK_zK1C7!5yI{<*#qc}*&pqhsp2 zsJ<(vd`u9tA-gDDu96u`ppkXtr{u8TJu}=iPAqYm>0Kp+G;d9U9srQye8Qf7qzqx*ou^r zr@8OOrb@TSqrsElp1GoYjW=mOrNr7IShX3$7yv7#i$eUX|IN1b!Pt*6FKO}ap|4&I zGGv#V;!si7cMIsrRHUO45WTqim?*q<7{_`3#A9I%1G226jU(sS@n3w4P*GY`<&D>O z{Iz(Qj;7G1C)=MD-pL1r*Okv6r&ysEAq@F7M(|G8$p9XUC{guG$$QN7_B@zR0xd{N z&EM^{^62Iq0iwN8Md3JOwR~SykVt09+!^;lc{-1In@`-+h#0H#{K%7Ccve~Cb-MZT zy_9du_Ob>yC%ql5t!DEw66=&YzP~rej5m*mX>P#XHl1nXHmr2YEPTeY5e66-`-rQ& z78ra9)1d9yZGRG$+LN^`Mrp!4>5smJ&F#FVWwzi%B@C=01@59gF6#wN3#`NOK5YVV^tlhRfgktHl;}NFET6-N@sD1 zZf99=%1pR?Rz2kPbZOc7d5v&LY(CnI5truSO>R`=eDWbtrTDq0y~-%s_>RDU{8Ur% zE3cx*ufD_{Hs0zhp18mD1{N@)>aj5Evr;VWg<)^XsR)BrmjxYFQb~GSH5hNt?XV$t zUWoa@6jYs<9R=cvEy>vKax-M`j%(UA0)dM(j!f_QP%uiG?jb-#zNg&?qo zApoV1+geGM0tP_A*;Z%JfE7z0;IJCz}ug(auqT%Hhq1l)9UwP zx~+8LoCz(0;mQ-V3;oK4sP=96t>-~|G$pzT*d^0euVNk{kUQ07W&$=q?^q8gZ6d4D z)kU(<>{j4BJSlSC1rHp#m2Z_Ib#G(F)-!5^&wQ{R+Xw-#Y&){*KN8hn`wQV3zRY*d zPLuZ^e?gcQG=hEheyK|c58h3q8N0}fEQB=-3xljDRpAn048&lO=$|BJ zp=9@zRBuAoL!9vP%B_4wZB%*?swX@79&j7*dl&vjCUwh6pXlsYF8}F2umXJLKm$K8 zEzjPR`q=y%EZ#jP#W~o*{nZRFfDr!& z=(?D?K3pk}e!A%gd-K-i_C2Hs6HudF1JOlzi_nELfI|@n)f%k-536&M7ueZzPP`ukoBvX}ah^&V7)#|!&4uh|= zw=u^33P2XX3sB4o^O4-&Fz&>*nU-P}6a(j|n<^ zqLj;Q&3fOMh!P!Ax=0WFP@}|X({6Xf_gW(ZBID$1L*%jjmaf29ogp5Ev8<=Uw+2Xb zP+@LTrGDQv`+@Q8wDKbaIK;Qu=@Ug?dS1Ltm)4l#a7qSa75xSXo(yN#2TwJZWdT{X zGt`QFbEC}C7+5j0K%A=%97jqt$e}A0plML6m>{2fXSx3>q?%3#eDbYJC@@5GM%7Xx zYdI^FU^Jeov|!T~$vYL8ch9=~QS(xjGq`5<{cjC2k}GxAU0T8gQ#JdhVJ_^SIZPz} zJRZIlzh!mLsoyZGxwvn?xYBf0y?dFAHdEd|_f;HPJzo~;E7dU}qQWgcV!;Kxl8-!**4AUq4TsLoiRiI+{pQfF4pb_GO&&|OJS;1=WuW18{e zg;`P5`{({LhZ7nKXskfwhfNgD4$<=o;PPDl&4v@e9(vRK*UlJ=WNh6eBPM9kB$5g% zm_Lpb|3{9`;cMF+w9tdx79Fmx@uaDFP71#6@b-XN%vu`!%($i}Xm-vmynzuetGkBa z&8b5%_%CRLMhia>Fo`LK zId}Mgx70Q@p_BcM*V|g=EfCl5F#>wmg7AH~-hWQlwxqxD01GnV`BuIoK`7DWN;Dj& z*!cpNLy2Kh2AU+g)x=Ow#&gO4)9^RNwowg>u5yhi2~Z~?48F}uqmG|R^nh{J-QvlLayX6zWs-yy$aa3M7;{$RtsZ{zKtJx zGfpZ7)g4Uxbe$971fKGP5BI8LAU2^N6xHJ++Tf7I&ON3zlvs~D)#mK@Ir4!6!jKHV zyvu=s;~DXnZhS`S^H^jOJHemClb|0X1O?u2NqDP2uk+5Lr5SlmGg_4$d0tLxFGvgg ztGjN$8j1dw^@=FX1|P1$2csLXnRu9#jM%jYFJ6 z2dl9uC}*<={rnQ3*q_9VSuNVF+ukgMsGE$*68E4PHaQQ&Bn&uNhJ55zo|a(q7Zv-e zv9e6210%<~e726$8%I3=Gl8OQy?}O6To5u6Fok^Rj?hVuwoIWfNdJ|C3bq=TCE12d9Oy~|TxV^pN6T?0L#XW~V5h;{?-MBar!wG*?jqX+WJP(^v&$R@GK1lr5 zA{Ud0YPwEXcNaSqx^dzP`admUAm=8L(T;-D;3OLUyew_1Fi534ABDBC-+U|zXx8YG z()TmUxeq?jhy#<7F+d$4#R?cJBe*PAonaW42qbnFXWsCW8}nV22izWdl%JOtT1RT% z=_j!hC+Mp?%V{0Q~`i6CH>v9;zPo#CPt2yNd0>78D)vk zxF@IGGw2|S?+|*b-%d$D^vIPm*p13(Sbn->j>Yw!9kT(Zfh%y&dRT2BxIBMxrwN6L z+!kjZsDwnX%cyO@TdiXzFspjkB*t>K%fY}g41eTCR@|&msjD%F2)aKvepDTagjEC?)1ZD zPHh?Q7uW8rN!mNamu2;5XN~D5-@7$g3;93T9E2$!GJ?>a#D4DyW6tO6a6%UwXfvj7 zPckGyABf}b{k9W@gzz&0XU9}HNjefKW0}y6Q*T-VOX+OxXD^texXHzTj%ELnUVLfUYRA5^eSa7!xdn)3$^IULc!GXYGq+u{w>*

G8bVm!qYD;mfs_9 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 literal 8671 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 dKQw=Czx0iC!Fs-4S#?lAdAjvc&)Z literal 0 HcmV?d00001 diff --git a/graphics/field_effects/pics/tall_grass_winter.png b/graphics/field_effects/pics/tall_grass_winter.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce84ab4fdfa6fdb00e34dbbf9096e45c2cfa1da GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-qTOIhuK6k~CayA#8@b22Z19D@L#5ZC_< z@2WQ!H(yQiu5nSeQZRI6NLuqQY0c5@v)`sX`wvtF1pmR{*|TR7OR@|WG;srk1WJPZ zf}s)+X&`wZpxYTJ_tw+JF~p+xYVcbwWnTXZ?9IPD`xVOm4esIKA6yE?(#3}rNh=$jZ-E$ul;r7#Z6(2 z?yeV&yc+gTT*4dwcohDe$mVME>)^Hf9hUw_W>zk`>$&wFXW#7I-`{)>OFj4dr^cV& z&mWiW*!1Q^%;)nZJBxSdr`+m4b?cA9KTUhRL;W}69~aBnJb%QSV_%_tnLlo;jr^hc abNi)lqzl&b^~$P)0?O0X&t;ucLK6USv9s*} literal 0 HcmV?d00001 diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 2d2ea036e..6505b9602 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -76,6 +76,8 @@ #define FLDEFF_TRACKS_SPOT 71 #define FLDEFF_TRACKS_BUG 72 +#define FLDEFF_COUNT 73 + #define FLDEFF_PAL_TAG_GENERAL_0 0x1004 #define FLDEFF_PAL_TAG_GENERAL_1 0x1005 #define FLDEFF_PAL_TAG_POKEBALL_TRAIL 0x1009 diff --git a/include/event_object_movement.h b/include/event_object_movement.h index c99062772..64aafce21 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -225,7 +225,12 @@ void FieldEffectFreeTilesIfUnused(u16 tileStart); extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1; -extern const struct SpriteTemplate * const gFieldEffectObjectTemplatePointers[]; +extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1Summer; +extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1Autumn; +extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1Winter; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassSummer; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassAutumn; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassWinter; extern const struct OamData gObjectEventBaseOam_32x32; extern const struct OamData gObjectEventBaseOam_64x64; extern const struct SubspriteTable sOamTables_32x32[]; diff --git a/include/rtc.h b/include/rtc.h index 3cea82517..6c6852b24 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -110,6 +110,7 @@ enum Season { }; extern struct Time gLocalTime; +extern enum Season gLoadedSeason; void RtcDisableInterrupts(void); void RtcRestoreInterrupts(void); @@ -146,5 +147,6 @@ enum Season GetSeason(void); const u8* GetSeasonName(enum Season); u8 GetSeasonDay(void); u32 GetGen5TimeOfDayStart(enum TimeOfDay); +void UpdateLoadedSeason(); #endif // GUARD_RTC_UTIL_H diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index ca39a9524..96ff54209 100644 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -1,5 +1,8 @@ const struct SpritePalette gSpritePalette_GeneralFieldEffect0 = { .data = gFieldEffectObjectPalette0, .tag = FLDEFF_PAL_TAG_GENERAL_0 }; const struct SpritePalette gSpritePalette_GeneralFieldEffect1 = { .data = gFieldEffectObjectPalette1, .tag = FLDEFF_PAL_TAG_GENERAL_1 }; +const struct SpritePalette gSpritePalette_GeneralFieldEffect1Summer = { .data = gFieldEffectObjectPalette1Summer, .tag = FLDEFF_PAL_TAG_GENERAL_1 }; +const struct SpritePalette gSpritePalette_GeneralFieldEffect1Autumn = { .data = gFieldEffectObjectPalette1Autumn, .tag = FLDEFF_PAL_TAG_GENERAL_1 }; +const struct SpritePalette gSpritePalette_GeneralFieldEffect1Winter = { .data = gFieldEffectObjectPalette1Winter, .tag = FLDEFF_PAL_TAG_GENERAL_1 }; static const union AnimCmd sAnim_Shadow[] = { @@ -70,6 +73,33 @@ static const struct SpriteFrameImage sPicTable_TallGrass[] = overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 4), }; +static const struct SpriteFrameImage sPicTable_TallGrassSummer[] = +{ + overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 1), + overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 2), + overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 3), + overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 4), +}; + +static const struct SpriteFrameImage sPicTable_TallGrassAutumn[] = +{ + overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 1), + overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 2), + overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 3), + overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 4), +}; + +static const struct SpriteFrameImage sPicTable_TallGrassWinter[] = +{ + overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 1), + overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 2), + overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 3), + overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 4), +}; + static const union AnimCmd sAnim_TallGrass[] = { ANIMCMD_FRAME(1, 10), @@ -96,6 +126,39 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass = .callback = UpdateTallGrassFieldEffect, }; +const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassSummer = +{ + .tileTag = TAG_NONE, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_1, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_TallGrass, + .images = sPicTable_TallGrassSummer, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateTallGrassFieldEffect, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassAutumn = +{ + .tileTag = TAG_NONE, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_1, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_TallGrass, + .images = sPicTable_TallGrassAutumn, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateTallGrassFieldEffect, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassWinter = +{ + .tileTag = TAG_NONE, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_1, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_TallGrass, + .images = sPicTable_TallGrassWinter, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateTallGrassFieldEffect, +}; + static const struct SpriteFrameImage sPicTable_Ripple[] = { overworld_frame(gFieldEffectObjectPic_Ripple, 2, 2, 0), diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index ca21e9857..35c5a3fea 100644 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -199,6 +199,9 @@ const u16 gFieldEffectObjectPic_Ash[] = INCBIN_U16("graphics/field_effects/pics/ const u16 gFieldEffectObjectPic_Arrow[] = INCBIN_U16("graphics/field_effects/pics/arrow.4bpp"); const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effects/palettes/general_0.gbapal"); const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effects/palettes/general_1.gbapal"); +const u16 gFieldEffectObjectPalette1Summer[] = INCBIN_U16("graphics/field_effects/palettes/general_1_summer.gbapal"); +const u16 gFieldEffectObjectPalette1Autumn[] = INCBIN_U16("graphics/field_effects/palettes/general_1_autumn.gbapal"); +const u16 gFieldEffectObjectPalette1Winter[] = INCBIN_U16("graphics/field_effects/palettes/general_1_winter.gbapal"); const u16 sFiller2[0x10] = {}; const u16 gFieldEffectObjectPic_GroundImpactDust[] = INCBIN_U16("graphics/field_effects/pics/ground_impact_dust.4bpp"); const u16 gFieldEffectObjectPic_UnusedGrass3[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_3.4bpp"); // Unused @@ -209,6 +212,9 @@ const u16 gFieldEffectObjectPic_UnusedGrass[] = INCBIN_U16("graphics/field_effec const u16 gFieldEffectObjectPic_UnusedGrass2[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_2.4bpp"); const u16 gFieldEffectObjectPic_LongGrass[] = INCBIN_U16("graphics/field_effects/pics/long_grass.4bpp"); const u16 gFieldEffectObjectPic_TallGrass[] = INCBIN_U16("graphics/field_effects/pics/tall_grass.4bpp"); +const u16 gFieldEffectObjectPic_TallGrassSummer[] = INCBIN_U16("graphics/field_effects/pics/tall_grass_summer.4bpp"); +const u16 gFieldEffectObjectPic_TallGrassAutumn[] = INCBIN_U16("graphics/field_effects/pics/tall_grass_autumn.4bpp"); +const u16 gFieldEffectObjectPic_TallGrassWinter[] = INCBIN_U16("graphics/field_effects/pics/tall_grass_winter.4bpp"); const u16 gFieldEffectObjectPic_ShortGrass[] = INCBIN_U16("graphics/field_effects/pics/short_grass.4bpp"); const u16 gFieldEffectObjectPic_SandFootprints[] = INCBIN_U16("graphics/field_effects/pics/sand_footprints.4bpp"); const u16 gFieldEffectObjectPic_DeepSandFootprints[] = INCBIN_U16("graphics/field_effects/pics/deep_sand_footprints.4bpp"); diff --git a/src/field_effect.c b/src/field_effect.c index ce52c53a1..a0f6be2f5 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -20,6 +20,7 @@ #include "party_menu.h" #include "pokemon_storage_system.h" #include "quest_log.h" +#include "rtc.h" #include "script.h" #include "special_field_anim.h" #include "task.h" @@ -47,8 +48,10 @@ static bool8 FieldEffectCmd_end(const u8 **script, u32 *result); static bool8 FieldEffectCmd_loadgfx_callnative(const u8 **script, u32 *result); static bool8 FieldEffectCmd_loadtiles_callnative(const u8 **script, u32 *result); static bool8 FieldEffectCmd_loadfadedpal_callnative(const u8 **script, u32 *result); +static bool8 FieldEffectCmd_loadfadedpal_callnative_by_fldeff(const u8 **script, u32 *result); static void FieldEffectScript_LoadTiles(const u8 **script); static void FieldEffectScript_LoadFadedPal(const u8 **script); +static void FieldEffectScript_LoadFadedPalByFldeff(const u8 **script); static void FieldEffectScript_LoadPal(const u8 **script); static void FieldEffectScript_CallNative(const u8 **script, u32 *result); static void Task_PokecenterHeal(u8 taskId); @@ -87,7 +90,26 @@ static bool8 (*const sFldEffScrcmdTable[])(const u8 **script, u32 *result) = { FieldEffectCmd_end, FieldEffectCmd_loadgfx_callnative, FieldEffectCmd_loadtiles_callnative, - FieldEffectCmd_loadfadedpal_callnative + FieldEffectCmd_loadfadedpal_callnative, + FieldEffectCmd_loadfadedpal_callnative_by_fldeff +}; + +static const struct SpritePalette* const gFieldEffectPalettes[FLDEFF_COUNT][SEASON_WINTER + 1] = +{ + [FLDEFF_TALL_GRASS] = + { + [SEASON_SPRING] = &gSpritePalette_GeneralFieldEffect1, + [SEASON_SUMMER] = &gSpritePalette_GeneralFieldEffect1Summer, + [SEASON_AUTUMN] = &gSpritePalette_GeneralFieldEffect1Autumn, + [SEASON_WINTER] = &gSpritePalette_GeneralFieldEffect1Winter, + }, + [FLDEFF_JUMP_TALL_GRASS] = + { + [SEASON_SPRING] = &gSpritePalette_GeneralFieldEffect1, + [SEASON_SUMMER] = &gSpritePalette_GeneralFieldEffect1Summer, + [SEASON_AUTUMN] = &gSpritePalette_GeneralFieldEffect1Autumn, + [SEASON_WINTER] = &gSpritePalette_GeneralFieldEffect1Winter, + }, }; static const struct OamData sNewGameOakOamAttributes = { @@ -418,6 +440,15 @@ static bool8 FieldEffectCmd_loadfadedpal_callnative(const u8 **script, u32 *resu return TRUE; } +static bool8 FieldEffectCmd_loadfadedpal_callnative_by_fldeff(const u8 **script, u32 *result) +{ + (*script)++; + FieldEffectScript_LoadFadedPalByFldeff(script); + FieldEffectScript_CallNative(script, result); + return TRUE; +} + + static u32 FieldEffectScript_ReadWord(const u8 **script) { return T2_READ_32(*script); @@ -464,6 +495,26 @@ static void FieldEffectScript_LoadFadedPal(const u8 **script) *script += sizeof(u32); } +static const struct SpritePalette* GetFieldEffectPalette(u32 fldEff) +{ + if (gFieldEffectPalettes[fldEff][gLoadedSeason] != NULL) + return gFieldEffectPalettes[fldEff][gLoadedSeason]; + return gFieldEffectPalettes[fldEff][SEASON_SPRING]; +} + +static void FieldEffectScript_LoadFadedPalByFldeff(const u8 **script) +{ + u8 fldEff = *script[0]; + const struct SpritePalette* spritePalette = GetFieldEffectPalette(fldEff); + + u8 idx = IndexOfSpritePaletteTag(spritePalette->tag); + LoadSpritePalette(spritePalette); + if (idx == 0xFF) + ApplyGlobalFieldPaletteTint(IndexOfSpritePaletteTag(spritePalette->tag)); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(spritePalette->tag), TRUE); + *script += sizeof(u8); +} + static void FieldEffectScript_LoadPal(const u8 **script) { const struct SpritePalette * spritePalette = (const struct SpritePalette * )FieldEffectScript_ReadWord(script); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 4887a9933..346d30163 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,6 +7,7 @@ #include "field_weather.h" #include "fieldmap.h" #include "metatile_behavior.h" +#include "rtc.h" #include "constants/field_effects.h" #include "constants/event_objects.h" #include "constants/songs.h" @@ -397,7 +398,23 @@ u32 FldEff_TallGrass(void) x = gFieldEffectArguments[0]; y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0); + switch(gLoadedSeason) + { + case SEASON_SPRING: + default: + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0); + break; + case SEASON_SUMMER: + spriteId = CreateSpriteAtEnd(&gFieldEffectObjectTemplate_TallGrassSummer, x, y, 0); + break; + case SEASON_AUTUMN: + spriteId = CreateSpriteAtEnd(&gFieldEffectObjectTemplate_TallGrassAutumn, x, y, 0); + break; + case SEASON_WINTER: + spriteId = CreateSpriteAtEnd(&gFieldEffectObjectTemplate_TallGrassWinter, x, y, 0); + break; + } + if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; diff --git a/src/fieldmap.c b/src/fieldmap.c index 625d10f2d..d3aa18929 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -1,10 +1,11 @@ #include "global.h" #include "gflib.h" -#include "overworld.h" -#include "script.h" -#include "menu.h" -#include "quest_log.h" #include "fieldmap.h" +#include "menu.h" +#include "overworld.h" +#include "quest_log.h" +#include "rtc.h" +#include "script.h" struct ConnectionFlags { diff --git a/src/overworld.c b/src/overworld.c index f5c2f3b1e..9285b0b3c 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1956,6 +1956,7 @@ static bool32 LoadMapInStepsLink(u8 *state) switch (*state) { case 0: + UpdateLoadedSeason(); InitOverworldBgs(); ScriptContext_Init(); UnlockPlayerFieldControls(); @@ -2033,6 +2034,7 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 inLink) switch (*state) { case 0: + UpdateLoadedSeason(); InitOverworldBgs(); FieldClearVBlankHBlankCallbacks(); LoadMapFromWarp(inLink); diff --git a/src/rtc.c b/src/rtc.c index a28a9d919..18b5c8edd 100644 --- a/src/rtc.c +++ b/src/rtc.c @@ -14,6 +14,8 @@ static u16 sSavedIme; // iwram common struct Time gLocalTime; +EWRAM_DATA enum Season gLoadedSeason = SEASON_SPRING; + // const rom static const u8 sText_SpringName[] = _("Spring"); static const u8 sText_SummerName[] = _("Summer"); @@ -514,3 +516,9 @@ u32 GetGen5TimeOfDayStart(enum TimeOfDay timeOfDay) { return sTimeOfDayStarts[GetSeason()][timeOfDay]; } + +void UpdateLoadedSeason() +{ + DebugPrintfLevel(MGBA_LOG_ERROR, "UpdateLoadedSeason"); + gLoadedSeason = GetSeason(); +} diff --git a/src/tilesets.c b/src/tilesets.c index 0457fd7bb..9a07d2ff6 100644 --- a/src/tilesets.c +++ b/src/tilesets.c @@ -41,17 +41,14 @@ static const struct Tileset* const gSeasonTilesetsSecondary[][SEASON_WINTER + 1] const struct Tileset* GetPrimaryTileset(const struct MapLayout* mapLayout) { u32 i; - enum Season season; - if (!OW_SEASONS) return mapLayout->primaryTileset; - season = GetSeason(); for (i = 0; gSeasonTilesetsPrimary[i][SEASON_SPRING] != NULL; i++) { if (mapLayout->primaryTileset == gSeasonTilesetsPrimary[i][SEASON_SPRING]) { - if (gSeasonTilesetsPrimary[i][season] != NULL) - return gSeasonTilesetsPrimary[i][season]; + if (gSeasonTilesetsPrimary[i][gLoadedSeason] != NULL) + return gSeasonTilesetsPrimary[i][gLoadedSeason]; else return mapLayout->primaryTileset; } @@ -62,17 +59,15 @@ const struct Tileset* GetPrimaryTileset(const struct MapLayout* mapLayout) const struct Tileset* GetSecondaryTileset(const struct MapLayout* mapLayout) { u32 i; - enum Season season; if (!OW_SEASONS) return mapLayout->secondaryTileset; - season = GetSeason(); for (i = 0; gSeasonTilesetsSecondary[i][SEASON_SPRING] != NULL; i++) { if (mapLayout->secondaryTileset == gSeasonTilesetsSecondary[i][SEASON_SPRING]) { - if (gSeasonTilesetsSecondary[i][season] != NULL) - return gSeasonTilesetsSecondary[i][season]; + if (gSeasonTilesetsSecondary[i][gLoadedSeason] != NULL) + return gSeasonTilesetsSecondary[i][gLoadedSeason]; else return mapLayout->secondaryTileset; }