From 1bd787e8a813a2f887ce9cf083cf80e7c371e1aa Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Fri, 19 Mar 2021 23:19:29 +0000 Subject: [PATCH] Controls handling, tick reset after intro and player movement --- !RunImage,ff8 | Bin 5660 -> 5896 bytes Makefile,fe1 | 16 ++++++++-------- c/CTheEscape | 48 +++++++++++++++++++++++++++++++++++++++++++++--- c/Input | 4 ++-- 4 files changed, 55 insertions(+), 13 deletions(-) diff --git a/!RunImage,ff8 b/!RunImage,ff8 index a1ffd2b576d8784b963162c48332523cf6aff9e0..157d8c2888812c097f603b3d1233056df991a6f5 100644 GIT binary patch delta 1583 zcmZuxe`s4(6h80fCC$>NO-NIz+nOk|Y;|3`UkG)~v=ETB)~t@P*14uGbsf_hW|a+w z&7{tWNNsOS{W0Wrj5(##b{W|pEp^ilqPE~* z*O$}yq4`Q?_HG87$gz)sm8Y{b|4q5fDsXc-O${{XmuW)Km{9#8aE~B%_J1+C{s+NT zB38aZ=;qZzA5kd%BX;%>qssJzOrTobaqig_Ga!55KTkrJmrC-Tj8?{ZtNNDhb%hqX zVni2Xd_k>LBHU@NQJQ(Z`2l7f;%(*@rInvIKVy%`LvsktTqJZqw_9phX^d~TRBf*^ zExs6UhsW5zOtcm@UXG^jJTXgj)u>m6reJK#X-e!u_n7!u%fr3Jzl~}KI$r8*KiD09 zwWq!3;QmA8Aj;S;3oU%JdR`rEO4;Z+&5Bk>u?o5LWYA+!K7c_=mCxZ$AEtU*~4z} delta 1349 zcmZuwYix^A7=FLg%eLy$(x}L)E77J|Y%3u`Tq=w(*SUmYZo?M$S!9bPh8kJStVip% zarl7=K`IgjM^Stl5edkb4;|ME}h)5WT zV$U@c>rd3}9@t>LH*=Ae?vPigS`unGqu7Vc`VIwg722LOYmZ(F<}or;kG>z-;JHG*3nryU-woy# zGLrfpxt`!WpLfs6m8QQl#8iTeT+$i)u552RGE^AkU6&nD@;M`i&x8l4%|y9AyfKc}&bF@W8WU}u4?ORBV^v)qLO&X@4y!Q+#adwwXm zumn36th~V9YZ{fP?1txa!jlV6S(2w19u2yGg2xGMQy)#9#s_FFXoGWvsv9EI9mtR4 zC-yLM#rDbq@~GxZ%hUWI$01)!LY04-r(P~e_gI( z;Zt;jm@UW)bp?u@U)3#4&qEh7i-^uBR0B`f=Q4MIPts>i>SlkQiepV?)SYDdimC8q zBH9HtVWOweDOwRxFlHt^rgWixWc-4D7=M!D81e#b-o@iFD#_?P5s!CmT(f2Us`Aox zn~2ER@X)gKF$|x*nb9kBEP9=M(YNS-1>=1@-Y39u6mJ8HfJ#q13m>1>o7 zN23g9Wk&O7jJn#fVP~l$+u!YzQr?4sw@y zA2YRwE}ILK*((}|Y<{BfDWYFZL<}yOORLPMH50}0RagJvMXgL|wdUSi$uDXt|d0X75MfpVY%r~;}1 MA8-gb3>*c118znJD*ylh diff --git a/Makefile,fe1 b/Makefile,fe1 index ced36f4..93549f1 100644 --- a/Makefile,fe1 +++ b/Makefile,fe1 @@ -30,14 +30,6 @@ o.Sound: C:h.swis o.Sound: C:h.kernel o.Sound: C:h.kernel o.Sound: h.Sound -o.Input: c.Input -o.Input: C:h.swis -o.Input: C:h.kernel -o.Input: C:h.kernel -o.Input: c.Input -o.Input: C:h.swis -o.Input: C:h.kernel -o.Input: C:h.kernel o.Graphics: c.Graphics o.Graphics: C:h.swis o.Graphics: C:h.kernel @@ -56,3 +48,11 @@ o.CTheEscape: C:h.swis o.CTheEscape: C:h.kernel o.CTheEscape: C:h.kernel o.CTheEscape: h.Sound +o.Input: c.Input +o.Input: C:h.swis +o.Input: C:h.kernel +o.Input: C:h.kernel +o.Input: c.Input +o.Input: C:h.swis +o.Input: C:h.kernel +o.Input: C:h.kernel diff --git a/c/CTheEscape b/c/CTheEscape index 6e45743..ea12bf3 100644 --- a/c/CTheEscape +++ b/c/CTheEscape @@ -19,7 +19,7 @@ extern int current_element; #define DISPLAY_Y 960 #define PLAYER_Y_START 100 - +#define PLAYER_X_SPEED 10 #define MAX_NPCS 5 #define MAX_STARS 49 @@ -168,22 +168,64 @@ void game_setup_stars() } } +void game_setup_input() +{ + /* + inreg.r[0] = 4; + inreg.r[1] = 1; + _kernel_swi(OS_Byte,&inreg,&outreg); + */ +} + +void game_input_tick() +{ + // Right arrow + if(input_readkey(121)) + { + Player.location.X += PLAYER_X_SPEED * (tick - lasttick); + Player.sprite = player_shipr; + // TODO: SHIP WIDTH + if(Player.location.X > DISPLAY_X) + { + Player.location.X = DISPLAY_X; + Player.sprite = player_ship; + } + } + + // Left arrow + if(input_readkey(25)) + { + Player.location.X -= PLAYER_X_SPEED * (tick - lasttick); + Player.sprite = player_shipl; + if(Player.location.X < 0) + { + Player.location.X = 0; + Player.sprite = player_ship; + } + } +} + void game_setup() { + game_setup_input(); game_setup_stars(); game_setup_player(); + tick = clock(); } void game_tick() { lasttick = tick; tick = clock(); + screen_flipbuffer(); screen_clear(); + game_tick_stars(); + game_input_tick(); + game_draw_stars(); game_draw_player(); - printf("%i - %i",tick - lasttick,screen); } int main(int argc, char *argv[]) @@ -193,7 +235,7 @@ int main(int argc, char *argv[]) display_mode(DISPLAY_MODE); load_sprites("Spr"); - //intro(); + intro(); display_mode(DISPLAY_MODE); diff --git a/c/Input b/c/Input index 472f4cf..40285b2 100644 --- a/c/Input +++ b/c/Input @@ -12,9 +12,9 @@ int input_readkey(int key) inreg.r[1] = key ^ 255; inreg.r[2] = 255; _kernel_swi(OS_Byte,&inreg,&outreg); - + if(outreg.r[1] == 255) return 1; - + return 0; }