From 74faf7f89b7643ae8c5179860f6dbbba2139b405 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Thu, 13 May 2021 20:56:36 +0100 Subject: [PATCH] Sprite flipping, face in direction of movement --- !TheEsc/!MapEdit,ff8 | Bin 9960 -> 10264 bytes !TheEsc/!RunImage,ff8 | Bin 21256 -> 21740 bytes !TheEsc/Makefile,fe1 | 12 ++++++++---- !TheEsc/Spr,ff9 | Bin 113592 -> 115236 bytes !TheEsc/c/Graphics | 36 ++++++++++++++++++++++++++++++++++++ !TheEsc/c/Mission2 | 29 ++++++++++++++++++++++++++++- 6 files changed, 72 insertions(+), 5 deletions(-) diff --git a/!TheEsc/!MapEdit,ff8 b/!TheEsc/!MapEdit,ff8 index dc8328e05cc770c5233bef4912d46327e417e926..236539368cdf9b477ef7698c2416d005df283bcd 100644 GIT binary patch delta 2078 zcmZ`)2~1RH5T5_v6J&8$VBG_DSt!s-MYIMI;#sNKN)g3Yyln~=kLrrpHjM}9irUZs zjv}=+JOtU*#v@9bMyK=bHfpzibfz!5lpVO#pXdQ) z3Kj_;COlceHwlj-ef|Kpi(TaK6Jd@*NH4MXbn2kj;=?>mg6V(`PP{=!tS2iVtHTOS zf$JQJibzmI6^D$1*hcumQ}`tQq1nPpaGf@hI@_q7#V2X;p>_sO(_)^kl1FHU>%@cfdj=or$Frk2Hf#iI!FR)Qc&rz{4EvC+!I9y+*fjhud?kNLgIR;>xIu%L z290Bn&=fJA-NxzkdmU>dkbQ+o1}8g$uNcPDOl&qRV;|vN!%)K>4Fu;wvy`TW;3|xX ztahv+kH_WdRwr!i<}Sg{-GX0h6#P}ZK^mhvb|zBGt-lgm!;8BgIt8)ZHL+VyGh0We zZAZUxDC@=tMmzf&V@yuRkHoabPYLK`2C+Zo5R3=tHTnQ*yg0)&jPLN`dXtU!d2zQX z!E~4edK%3zMNo}Dm=aBU$(xxbh#Do)Mr1?0tPJ-Lv9sxTe#qMyGl`)lot{dSSq@61 zCEPLHDam-EvpO)9IF5KvAWY$;a$FF#)byev)sS1R^H01I<+R3=_v|!5l!La=*_gee z{}g|tDLRThz@+GgjGt9-qMQ<)C0kE+nrt6g`c$Ws4?Cm?iZPSca9RtYRWi~D>D2fz z+7Z)6Qa3b6jJ5{T1=>qj{&O52V~<-z0h-7bkTsI!8XKf2x<6K8?7`xg#AH!5aOuD| zx2JUnz;e2r1@2OC(>i(OiZY<5%!`L&(pWWKk4a&3P-Au$qayo;*0bNg8PFK!HR%AZ z=28;5Rr2{EeV3F;$+jxoR$A3i8GstWf3V-@kpM>1ivZg=Sx1_ yoMeYnk>sYxXi zj*aFhylggxyHxP_>vYfD$)i=+J~SbwTgeI&HcS1PsR>=kEKc?lx-53qfnzOB^EqMx zq>FCf+_2LOf{b#33QH|{bURL4QfZiPlcXLE)#Qkk5AL(> z+CYcwmHSjw`qujkSG!A>loc;rynKn@a$2EYGQpOf)yP0 zlLYabq$w%L&b$4c`}>`9 z&w2O0ep)v4iVHxBYnB3#_|FUpJHY*soDNqPYwtJ|w6C#1!q%`??MkgwG5~riJL2i7 zNX|!NW5XkT0FEefR%@DRf#J!&Vm-@aEATTG%<<_$!CI*}NH~dNn|+ikyjSHD+hrkJ zQdVJ{y=8iAhT+IHEaip#o*7$tKC|LUzQErf1z^x54?>x8cWms3OD0GdNtr^CX~)Ve zbQ>!8Ei={|0_-4m7}EVwqKqe*NYqVUN#R+|a-5QD5-VOXOk;=-3`N}0k9o#owiRoP zA=Zr_8$%x+AzHO9A}2$Ooa~d7gM2^WyQ>?!sr?c|6PVYN;O*Lm*jq4o?#u~Z1y*P7u}5|y}AE0b(7 zHVYO0Z6vBDK{f4o%qA(D2@gJl8}J`tH=BgpO+o7HK2s(CSHMxzaxM#4YHsBN0$w$@ zvM=#<%QChH57BcgKDNwdwKyl~dA1tgOqh zXixFr$b`x4DE*qt_F*|aJFp`K**lnH6V}Cenr2Pq+RJe9q~~c2IyyvNW<+$(GuB)pWW-Zeo;UjWd|rO&aYI zLI0XNCprOUQ!^_X8etyIB^&EE1C5uWc-WcG7T}-G5KBeDCDts`W$)2^?w6IaV6CEi z12=$@Xsy!fhj6!AM9F6B+&Y?#&?>_xQvA&)zK9AigI)w=J=9uEnmNP|>-;MG$W3b_dRP8Hu*-3|a)l6*6&gD%x*ppq%2WH~c>;R7~#L;YTma$M&EwD>Xr35K78*RH( z@a{?YKQa`nx#uQj5Df1z6r*0+g^wwrw(U+>rdTDvDs(pctL>;O{F0SUW zD6SRrQ@1S=RrXXk)KrN*;^O4X8CuL{^-2iuiH#=xzoFK5+I0N}!1+GR^S82_$B+6e zSc#9$U5xDfb(;SG>XMH8p5iG(0An~KePeEAv3mx+WrRtG>*vt diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index 72b0aa0d489825fce342b9b740e9d292d695d4b8..d7cdaa5daa35ce6ef271b8992465e64e40c8d5e9 100644 GIT binary patch delta 4532 zcmZ`+34D`97N7Z=q)mE#>D?5Pv?*=rP3cyVB59$eV38I)P_EW3a*0qxJh3UHP>@RT z0iuEgK?RTBqD5B$-J+ndAl3>f2yPBO*EXmX&sEm!f0D3N*Uj(uGT)nd@6CVSy!U3N z^;v#l7f)u);Sv1mEl+8xN6!w> z4A9e{8hNV{7roYPfW(ey=G}t65}A2l&@(S%g`P`3pN^yb5$z^s0)TeqMOX%U58FAV zr_09J>)nh^TDXYqM_akz&czJBPJG`m=Z=|o;rosS^$j!bTDWM=;+f>-$)$VGyj!kn7jbZzk)#2iG4wqEp zaHY08Jbd#i_l~6cv0cAT$RBQ~ha$Kt$>kUu9Cl*m5NbV-aXo@^Xclmn&770pkow9IvMm zZFcsbV7V3MP$580536%{%9y=p)6FJDjVTbzE;GcLo>ps({3qI_Ef|srrAF9RRRt6q zY9PQiD4f~cDi}(dZBj&n31toBoTSy|Xip;fW5H?YfG$>ZTxPvp-E@;KW6)P}z}!xl zLzs#Azt}zb%KXB_UfQNhnzzOBT~NE2_bwb$FhmFLh&d8!#HowQIwR z;N8Y>3tvhb!cE%OfItYk>CNyQKAU>NbEFF=C?O)7Po%PlL|#p|L=5F4sV(AR=@aB? zGk=}h`cOBy^O>3R2DUmrbW%; zpVE=2mHZ8=jka)w?v6I`4{1Ymfpor`-i^MVw^F>EBc_%UH9^SJ=jtnBI^x z`Hkd~udA4X`f2w&xkZ_b@9_v(BPJ{|J3I-fJko$>_ZOFZ-X}#UqgWK8SX>XeNq)ZA zgTywBqei_&`uGxU)MrSCyXh^xkr&W8eWtYUQimocf%A81VC)0Dj~N zbT^Z?D3YA&#`ZchVU=N9QQusT37Pi5Hm?`o)JBq z-XdN6g|g#sm)`t^9*uvNFQH)xYk3JBNm$9_s5Wss52f!D*GljGOur`9kRdUO&L?H@ zXDBjx5`U5ElSiUFZo~f?awU(7dEjSXZyaVwKf#z4bm0>!F=X%`XqsV+ntt|qi|L%9 zfUls_hN1jEicEP9j(s&{ByXqhQ^xQ-8ZlrJpF`^gj5Kup%jf0H?)F(3D&GyBKA&$d z9NE+U5%muETuP3h?tv4H)(GbPHk^6mSTkb%pi&B6I7A(RgpHtbV~KREo9;Jem!A*! zS5D8dMw2oSQe8nUd+kc6x=vKZLrP*l?XwtX@*$;6g=&j2If6bnP9MBKV8&(BnG`e5 z$h(i$xI5X@?Klulf8$pPO#T|pH>L1@(kfGC-Z}KQi?KR@s&RNiSgj|n&VDkk#(pTb z#;%+U>NOx4o}hE4q5Kf(%@)2N|A|y>UL5&&P(tM1bb8+`wrE=F49OTyZ>7Esra7%Z z$_}Sj(t7#V9a}8XoZm(-rT>-R*D-TY3g<=CoH0wvJwv@2MIx{=f7E}d#nB2+iLg?` zY%2}Qnj$$rqGefUL_kg-oWXNDS_X$o{CR52c`VN!#`Yy5%0DhZsX>$%{NVF;jxs52 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 diff --git a/!TheEsc/c/Graphics b/!TheEsc/c/Graphics index 1518a54..8861e1c 100644 --- a/!TheEsc/c/Graphics +++ b/!TheEsc/c/Graphics @@ -139,6 +139,42 @@ void draw_sprite(char* spritename,int x, int y) _kernel_swi(OS_SpriteOp,&inreg,&outreg); } +void draw_sprite_flippedh(char* spritename,int x, int y) +{ + // SpriteOp 32 + inreg.r[0] = 256+33; + inreg.r[1] = (int) buffer; + inreg.r[2] = (int) spritename; + _kernel_swi(OS_SpriteOp,&inreg,&outreg); + + draw_sprite(spritename,x,y); + + // SpriteOp 32 + inreg.r[0] = 256+33; + inreg.r[1] = (int) buffer; + inreg.r[2] = (int) spritename; + _kernel_swi(OS_SpriteOp,&inreg,&outreg); + +} + +void draw_sprite_flippedv(char* spritename,int x, int y) +{ + // SpriteOp 47 + inreg.r[0] = 256+47; + inreg.r[1] = (int) buffer; + inreg.r[2] = (int) spritename; + _kernel_swi(OS_SpriteOp,&inreg,&outreg); + + draw_sprite(spritename,x,y); + + // SpriteOp 47 + inreg.r[0] = 256+47; + inreg.r[1] = (int) buffer; + inreg.r[2] = (int) spritename; + _kernel_swi(OS_SpriteOp,&inreg,&outreg); + +} + void draw_letter(char* spritename,int x, int y) { // SpriteOp 34 to put sprite at a location diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index cb9798f..37c1baf 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -37,6 +37,11 @@ struct Area_s { struct Area_s Areas[AREAS]; +#define DIRECTION_DOWN 0 +#define DIRECTION_UP 1 +#define DIRECTION_LEFT 2 +#define DIRECTION_RIGHT 3 + struct TilePlayer_s { struct EntityLocation_s location; struct EntityLocation_s lastlocation; @@ -48,6 +53,7 @@ struct TilePlayer_s { struct EntityLocation_s lastmapoffset; struct EntityLocation_s localtile; int rawtile; + unsigned char direction; }; struct TilePlayer_s TilePlayer; @@ -270,6 +276,8 @@ void game2_setup() TilePlayer.drawbox_tr.X = 80; TilePlayer.drawbox_tr.Y = 80; + TilePlayer.direction = DIRECTION_DOWN; + memset(map[0],0xFF,100); memset(map[1],0xFF,100); memset(map[2],0xFF,100); @@ -329,6 +337,7 @@ void game2_tick_input() game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y); } movedy = 1; + TilePlayer.direction = DIRECTION_UP; } else if(input_readkey(41))// Down arrow { @@ -344,6 +353,7 @@ void game2_tick_input() TilePlayer.location.Y = TilePlayer.lastlocation.Y; } } + TilePlayer.direction = DIRECTION_DOWN; movedy = 1; } @@ -373,6 +383,7 @@ void game2_tick_input() TilePlayer.mapoffset.X += 10; game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y); } + TilePlayer.direction = DIRECTION_RIGHT; } else if(input_readkey(25))// Left arrow { @@ -388,6 +399,7 @@ void game2_tick_input() TilePlayer.location.X = TilePlayer.lastlocation.X; } } + TilePlayer.direction = DIRECTION_LEFT; } if(game2_check_collide()) @@ -475,7 +487,22 @@ int game2_tick() game2_tick_input(); - draw_sprite("man",TilePlayer.location.X,TilePlayer.location.Y); + if(TilePlayer.direction == DIRECTION_DOWN) + { + draw_sprite("man",TilePlayer.location.X,TilePlayer.location.Y); + } + else if(TilePlayer.direction == DIRECTION_UP) + { + draw_sprite_flippedh("man",TilePlayer.location.X,TilePlayer.location.Y); + } + else if(TilePlayer.direction == DIRECTION_RIGHT) + { + draw_sprite("manrot",TilePlayer.location.X,TilePlayer.location.Y); + } + else if(TilePlayer.direction == DIRECTION_LEFT) + { + draw_sprite_flippedv("manrot",TilePlayer.location.X,TilePlayer.location.Y); + } #ifdef M2_DEBUG_HITBOXES draw_rectangle(