From 8002b764c534baedd31b45f4a902fc28ba6aef20 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Tue, 31 Aug 2021 18:20:11 +0100 Subject: [PATCH] Store pointers for indexed sprites for anything that's redrawn every frame. --- !TheEsc/!MapEdit,ff8 | Bin 11364 -> 11556 bytes !TheEsc/!RunImage,ff8 | Bin 26312 -> 26692 bytes !TheEsc/Makefile,fe1 | 12 ++++++++---- !TheEsc/c/Graphics | 29 +++++++++++++++++++++++++++++ !TheEsc/c/Mission1 | 35 +++++++++++++++++++++++------------ 5 files changed, 60 insertions(+), 16 deletions(-) diff --git a/!TheEsc/!MapEdit,ff8 b/!TheEsc/!MapEdit,ff8 index 612be396c2590fbc94be0e33a17a82cd14f141c1..e7f2decbbde7cd9719186febe7c194da88c7c782 100644 GIT binary patch delta 2446 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 diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index c007e3e3b06023b63f548e1157ef2f25fb5d1baa..be3ec6d007298f0250bbcb6b5ef0ac3af5861689 100644 GIT binary patch delta 5158 zcmZ`-4OG-s+Q0YD49oxn1H*ja00WGIGJKmTnmQZnkb0S+Li(dnwzY6 z9yQxE#;wk=R$C1-4c#<9*4}K7wXOEyzQK%t1;$KG#jl+GT^L`{bKW`U;Xe1?=i}bz z^Zq&c6+d>G_hZb_E+CLG_vc3D4q@yURVian`fTWT;<-sC*1Fw?xz7Wd0ZzaPz%YBW zoXa-KwI=3%2IESM`E0NJ3PvS!xU!YZ?Tc{?Mn8;pj4F)U1?J9?O4g;4X*iFXX@mIl ztXVDt+gXSeBsv9i53#Iw3NdEj>A;036Yvz^LYy9WB5*+;3j7`*7?^$c3D^(n(Vyz7*ioR~FEKaA znQ~}|a+(xvq}9p<-bH(q7Vf04l~ze%q?=g!C&l<$_zBALjpr9>p>ILW{L-qTWfheR zt4fPX=FO`tUABy|FvdKZ!;bc}?~*zdyQet)Sz-GL18W^`ak!?8wa83cFAsxXn0AA# zV)e2D^Wqs6St(A43nt@q>kT4`HpwdOUKu_Wm-bPy2BnI9ET`@$=oBu4olLHvE4z8@ zVTVgPwa&R?FoYjoCHFsUp|ie`)>BrC?Bf+!ZD3u3j)ShlOE<5VP8-<&AzdlxNadH9 zS&tJlyQ7^KJKCjOM|(^Yn76KV&Z~lwrZsX~Ek?FQ4q9aBh zcM*3Jo>wqO`$^jFXG}WPhhhjQgvI{NHgS!C`^BH1tHg(?5fiL$GEPjtBM;fbCZ z@bE;s$MnDH@jRlfwhyh)=4YUls$?EVyHv*M=e)x6UwtV2QXht&^^aa|*<->@aSsn7 zgtwDkZIifx#;D_xf^o9(!4B7Jc|v%DoXwgsHpyA6p>xagmY$dvAul502yIeZgR(C% zRt1^?a~aZ=PN-w~S?W}q)e(LW5nU_i(vbjbNOnACUdB|^s?C(;Z{z!Dv44EhF`QT^ z-TQ2>(kXqE9-IHD(iiE7zbz=cgRu&sbYV|jxZ@wo|45MmW+_)i!vhjRmJfVX+a#(E zi03cRwg59fO$P#OA-5i*7(_QfkwcMzM*b2F3GC)0C`n_L77VASHE|*95_$u2HSW#* zYMsYut;VXp5Qd0E2%n;lHP&&LaxAg}Q6&Pr&P(^#Fj1j4%35TIc7z4lwMq`cULZz= zb`=bS6X$yQibgV1;3fBblhm;i|DFx0$)X$CYz)QrRPm?Jee9zwy0YnqJQm`J?Nw`q>iKV zig@yx@r)@!3JE1CJemJMY2oqwF3k!bJI)7(sz(fnEM~wL-S@boV4C!3bRsRvb3~of ze%IqZfOXNUQNz_Yp=oK){0Wx{-SHZ=hg(%CpbBO%qBbX7y>LlYWjSLDWJ>NAg-oB? zFP`hDy5B`}+1!#!^cq%C4w}+RHn)87;$;;jOVSvl0&^OlPmSi6`36!)*ha2~B1zld z$ylQ-v1p8SZC_wbR0uT+a;CtWdYey%!0o;3OuJ1^r=<~Jrk~cHmVH^83ng5KLho~0 zdssfrPKz4j5>+kWzNf4H24jI2#bFuikZDO|0zXf0Mq2qmIuvQAN(?Vx`+rbNN&%w5-wCu)!f(yq)&aRf|JdC*Ef!KqSRS73H6T4*SJ6*HP2 zB2DaQzKf>f?>1_T9UHptmZvNA0%Q5OM-?FZIyqzG_-mxLPC!^rw+==TZNT66>43F> z*OI>fWIm2c`j6(Zw7vfXUPzt&XK3yQvDPxlA_tsPh6*#TI9ch=yy~S zuZw)Y5BZWF{J5N@K*MIo<-gE|_#*xkU5z(uR`sEqNZ|v`qT&vWSC(TvmP!ViHS@g` z^I+~oT03wsf0o(@8Z{;y$_|O)7@xw*>l&MvQq-j@^wOa9{3NLpiui6?m~a$$k}ZWF zq(YmU*U_ZJX1KmHakRuVl#sNKm$$ShnK{;eOBQ7`GG&5Pe}kS+N$2zE&6Mtt@<3!B z?k~brcs`D{rxr+o7wLZL4-!(~hqO5UKg83`CF|jT;m$yNgFY3MuY2bT%+oMm69)`II^OwDIll?ut7W3cJigaW6Qt#>v4T4@>8yd|T^ei2hWcQZ#dT3X*o=aI2(M z)1QX_Nx1|v{V8UIZjcFHbOld)q=9`7{#LC20g}I))N7I7Q{f0B@842A!sQcQq++di zadiVsu`k-;@=1KvnT`lm)6&s8L(5fSbS`qB$cBT;H;1^gnp&S-+le zYM&iw!CScL{~|mJoN!IMi0E9%6QAF&T=R6%?yN-pEfqv*Yh^IQp!KpID)Q-S*5sN! zsQe4~zk4db4;t)(tmEQ)$R$3v58xgWn(t+};T$4w4rrSYg@49;H=GoJu>w%mhrbN` zBH;x8`y$G5&5sbh=($~@>xu4%C}+zSR997%l~U`Nx^bUC#v73PE_D121!c}1kNY+t z4{OEPdl9<6Mrp_Z{xoQ&VNa9@JP&!YBmKXEl38NW)(pG4y)%)$Hny$LmvX(Gim zn>!D3Ar5m3c;5!C2zZeSKPs8z&ZF-qnKi57F0nl3n#bHkJSRnz`t+RP`b_XV9!L|Y zE=T8k^|Hs^b%p+%6US$?9LZ^xd>!44ow`NOPt6FK4K=_03GN#~j9$MCg z0)&uTT(YF76i>jY4l)#ug7}$*Hf2VaC*T8WD4gs2)!Ur4ou|u%tGThIdd>_!{z$||j-+zA0uBR?0gB&ZtPHRmP!DJV qYz6ED90Z&KoC90}+yf}KBJBWSfCxZ;KqA2Vqny&ZmM2Ts@&5v7YFl9d delta 4906 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 NPCS[i].explodenextframe) { @@ -311,7 +312,7 @@ void game_draw_projectiles() if(Projectiles[i].active == 0) continue; - draw_sprite(sprites[Projectiles[i].sprite], Projectiles[i].location.X,Projectiles[i].location.Y); + draw_sprite_pointer(spritepointer[Projectiles[i].sprite], Projectiles[i].location.X,Projectiles[i].location.Y); Projectiles[i].sprite++; if(Projectiles[i].sprite > Projectiles[i].spriteend) Projectiles[i].sprite = Projectiles[i].spritestart; @@ -809,17 +810,27 @@ void game_setup_audio() } void game_draw_hud() { - draw_sprite("lcars",4,DISPLAY_Y-164); - draw_sprite("pointer",141+(Player.shields*2),DISPLAY_Y - 164 + 84); - draw_sprite("pointer",141+(Player.integrity*2),DISPLAY_Y - 164 + 44); - draw_sprite("pointer",141+(Player.remainingdistance/7500),DISPLAY_Y - 164 + 4); + draw_sprite_pointer(spritepointer[lcars],4,DISPLAY_Y-164); + draw_sprite_pointer(spritepointer[pointer],141+(Player.shields*2),DISPLAY_Y - 164 + 84); + draw_sprite_pointer(spritepointer[pointer],141+(Player.integrity*2),DISPLAY_Y - 164 + 44); + draw_sprite_pointer(spritepointer[pointer],141+(Player.remainingdistance/7500),DISPLAY_Y - 164 + 4); } +void game_setup_sprites() +{ + int i; + + for(i = 0; i < maxsprites ; i++) + { + spritepointer[i] = get_sprite_address(sprites[i]); + } +} void game1_setup() { game_setup_input(); game_setup_audio(); game_setup_stars(); + game_setup_sprites(); game_setup_player(); game_setup_npcs(); tick = clock(); @@ -1014,7 +1025,7 @@ void game1_victory() void game_draw_comms(char* msg) { // TODO: Need to scale this properly once font/text is final - draw_sprite("commspan1",4,DISPLAY_Y-164); + draw_sprite_pointer(spritepointer[commspan1],4,DISPLAY_Y-164); draw_spritetext(msg, 80, DISPLAY_Y-80); }