From c32884d225a54262cfdda3a2f76bf1ba8a4e4a9a Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 27 Mar 2021 20:56:40 +0000 Subject: [PATCH] Function name tidy up. Removed star colour variation. Increased weapon range and re-balanced projectiles/NPC velocities. --- !TheEsc/!RunImage,ff8 | Bin 14940 -> 14860 bytes !TheEsc/Spr,ff9 | Bin 57456 -> 40504 bytes !TheEsc/c/CTheEscape | 79 +++++++++++++++++++----------------------- README.md | 13 ++++++- 4 files changed, 47 insertions(+), 45 deletions(-) diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index 8bd69969e417741fea9bcfa540e485b9b98c36cf..ff3893b97286adfba80158c73045a3ff55863704 100644 GIT binary patch delta 4020 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 T7UM?@+D2r-uw%F|RE+-uNEkh# delta 4149 zcmZu!3v`p!9sl32Nt?7O{Yp}jkhV!nX(>>e)}nQTk%EswQCceFXe$<5#VTkKbjm=| z8U#ErTP_bDxPCG=L8jwvc}?(81r$UScYNT!9mgmnqeZ%aHmo96Ymod z20RaV7`OsF7x>4(lYo1Ge+XRayMT|AbjA~rxA=3+Zk+(?G^itdu3}Fg1L{aXGfseW zFfOl<98i1W@)A()8#Ut)INRd#q2TNT^+H@O*IheBGj@WrAub;T&P$-4iOVxUmBapd zaClsv0?w15R!F&(KwX6WQ@l*E^R3Ke{U(*7)v#E_YrzRBrp)u;%zzH74n-b^(kI02mx6Kl0Vr?#Jt89EAddZ3eggJv{AK2gRp`T#f;@T?%hdT;~%tjZHsJE3!D zLT3teuHwvOU%Um}P=Y%N+)@9>aszaBCv?U@M|R+Hrqa8N`zh$0OXyTUC%d0cGjwD% zI-oNgvaFwEw}qw91mSWBM?ko?R5Q#un$cyYXffzTpf^L#vfCn0gEtM^^fYt}r4#ZS z>ZW>Y4S2HDx07a+Ciriqk|!sP|I4&NvDo-p^8!}RGm}TKB0e_RS=<5(Qnj!Z&3a#2 zbf9sd-;;Qtk5B5e;uK$${8!e%OHw>m$9|%ddx*MuZORDtd%h@T2#fINQar4XA4sWY zFLJA8h&7wm2rJ^O;4JOee39h}>zx*g`oR5^S6K`A8A}uNtE@{ElZ79%=9;C!)BFqT z;?)17^eH}M;XkC-@YhnWWH0kesY_jJAh6KOLgsrO`MPMAD1}!Zw7B@rv;xz5D1gY~ z7t)GMDM|n>A73@J? zn|_701x9{#wP@fg(@V{%jNWMAhtj?5SsqTWRti%1r~$uXr}&%!*DE;5Sj%w{qL5B(iLR&}g1NMC6~MyFGMs}CCR3DAC=v@$B$aM5zKq58`Zv}0 zHtglMXM9-xeo3!s>tsl74cEgj)o6xgxmSGO>J{BhUa^Fh!0%FB_DS(|i0R{&@mXr# ztrj{dsw_dBsK#&-9cx1uB#v1YA!^)C>@nR&9f&a`7C=@4a8O&sLWjkJQWyO<+ce{s zz%kx17!QjolNM(9TKG}bll%_iJinQLrg|6mi_t4%M7~5 z(pl|N-P|aL#1e6X)C2Uz&?6>FIuXNwINp<3zekLhG zC+ThIjY;!j7gP0!6>l53 zH2qXRt#v%h{zUqHeG$t`CHxTIX1{9j49P)UIEw}gqUVde!ZODz8rfRWkhxZnTBYw# z@d|SidK}QggZ&+XGeuYMReTe4#dlDQFF+*ty09;lVOn@RU=?FJL5HambW#tBDhGOs zuLFBQW>iQtSW#Dx|8bKlv`&yk3kLv;GJ@DVwc$ZT9}unnkx%NnK7C6-e;CO%qd5+~ z*-4M*vI&_B-OWC zq>^TbeNqOM^zz1ZS26ifWJGZ6yI52`xiV5Ioua^uf_epQ6s%@R#7xtS-}25urQ>^2 zXrJYAFNV*P!gjY;xazv%gJ=degp1G?-x{=Lt*A32Z~q$c3WoOA7}}L8+URME0zV!OsCUq0&SDDyC`9?9u}YWv-p~Cb9!^!327&!k$%#1 zCY-3aeOf|eDKyUX)A)erxjgI#KGx+NdmP#-5<54yFR6^5C3PP1ldKEn>A*hhK(bYO z3U+KOo;NML(`7H-1C0w^n&E&KIiK@?=HVmA<#e#{d9C?Hy15LvF}NEl2h~_avW@_@7>BT zxa-Z6`);biMT%oTUof~xZMtvv?3U&`?!Rq*OVd3>4t~gHcOOpfJ9FwEyy6_@Ye%D3 ztZwfTE`Db4^P|qQjQBB@dfPXL_As53CM zj*+kP$5G&uy780UuIC@@6t*K;cyi^VdI1vXyQ13lG7Hs(vvJ%lfeAY62}oGar9Kbq^crqE4cQ>(Tu$S>r2-0PWlS7nX1>+(^0J<*$Y z`B3katYKN0s(GCv)!!bGdqWkNa(ubB+tzY#>jU%q%A#_Hu|0#&^m%Hh%1wkEZGk0O zek^%of;NFJ13f80TR;y4eO-c9LEAx(PtXp~F3`W?$98AIWc%cB?Gz^!icXQ5 zJ}tceL9dV-{T6KWNjx*pp7S)MDr^fAz6icPzY~dIa-8Hp-ZvIH# z)bvY9eX+X|+*wTL*XDZ%HL%^HnS!`1{v`0I>Fs-z@CEsk#`c(KAMOR?2$meFb_v{K zh78V%U=-lTfu{kNcg`{3Nx-E(-R0?hjk6(Bsy4ube1^V*bB|sb-!Y1QrFwDqcZ%T6 zGG#fmI)xwBHYDLd3C2v6axFXz-d^CHL!6_(g_Y!FLz)Y&h6E+u3$JJ4Ri41}(6Ra6 zi(6(vXB|H?#F=vz+>05S;Zt{u1&NYMOA9m}=a~gg_C7BzC>`5~IGZtsc`O#K#P_v} zvFKTR=fP&!U=)`GJ7PiDKyoweb0VPZl?pl^c(On$avf-KZI3>XClZQau~bHQaddCzJ)aNuEV23)^u` zS{j35WH5*@)(Df@7Lkv4>=whXYM^yIweTMzN?Lgl{{TtB05D~j9AHXi2A&l>*~JX- zE>A%{{*m@%QJrGhvmBj*33*G|E2*8Y5_P~$>z{dfc{>}iV^?_{yY};)M1R>uwD1rv)Wbx04#a7x zDQW#J^b5aWu+KUk2zZx&l5W^>L&c7y+&8xq-36EpkU!~mD_|#}dl%2V`WF6B<;sEi x`T2CsHP^r`{^|gyA)3SAyjt}ye32*!2mzJ>RscExs{u~})&n%aM!+V(e*yc~R*(Py diff --git a/!TheEsc/Spr,ff9 b/!TheEsc/Spr,ff9 index 90a159ff5d3850b19a0dfa0afe888e7e04145cd6..c10e375c2ae113ff72812c209fffe5facf24b7de 100644 GIT binary patch delta 27 hcmexxfO*FrCN3cc1_l8jwwbrtj72$abLs+a2LNx-2cZA} delta 2961 zcmdn7hv~xsW>XOc1_l8jE_uMfpu@tzkdm5~SejD;6k%Xs24a3Ni-AENNb4{GF;Gxu z^Fc!==F{g84|YKt2lZ zLOsY{5P&Mb0O7-U7no7_P^%F}L!5%nhnNU<2~h52;nj@GA@3o#JG`1F;2sd zfgvY3v8Xs75?VSyN*g)gfNU9H2+B;}*sytWLA_AD*}wwg?EjAhsOw(h>?hMssH^em zrm6k-EQZQqu^;SeBD7LPNhVcHfdn*uqb4WTPn9F6BysYF29`+;ER*Lq%T8`+<|nKp z0--}2s6!l>tI`lchCm_C$%P4WO#lB+7EJSCUcY|*3;@-q|S71P}pnEwHYd|1GfesEtIM^DCgArYEpb?=6BMhLazZ4;) z02E@MJiYl4SW2Ox7bYcZ%R4!te$M0xp{yXG$s2rGCckVEn|z^R%4CBk_Q_IB5@7cF z2G+^)?Fuk$^P79YCQWFb1EM!iXbxnA3UE&Rz%%(m7&|cgSs;`<4rNA Y*-&;n{y2mA3@Z)HO#Y0Ub>es&0Ni?Xr~m)} diff --git a/!TheEsc/c/CTheEscape b/!TheEsc/c/CTheEscape index f2b055c..32b113d 100644 --- a/!TheEsc/c/CTheEscape +++ b/!TheEsc/c/CTheEscape @@ -32,8 +32,8 @@ char hudbuffer[63]; enum font_e{sys_12_8,font_max}; -enum colour_e{lcars_black,lcars_violet1,debugpink,stargrey1,stargrey2,stargrey3,debuggreen,phaserorange1,phaserorange2}; -int colours[] = {0x11111100,0xc4727200,0xcc00ff00,0x66666600,0x22222200,0x44444400,0x00ff0000,0x0053ff00,0x00d5ff00}; +enum colour_e{lcars_black,lcars_violet1,debugpink,stargrey,debuggreen,phaserorange1,phaserorange2}; +int colours[] = {0x11111100,0xc4727200,0xcc00ff00,0x66666600,0x00ff0000,0x0053ff00,0x00d5ff00}; int font[font_max]; enum debugs_e{dbbase,dbhitbox,dbweapons,dbinput,dbperformance,dbnpcs,dbprojectiles,dbmax}; @@ -66,7 +66,6 @@ struct NPC_s { struct Star_s { struct EntityLocation_s location; - int colour; unsigned char length; }; @@ -397,7 +396,7 @@ void game_draw_projectiles() void game_draw_stars() { unsigned char i; - graphics_colour(Stars[0].colour); + graphics_colour(colours[stargrey]); for(i = 0; i < MAX_STARS; i++) { draw_line(Stars[i].location.X,Stars[i].location.Y,Stars[i].location.X,Stars[i].location.Y+Stars[i].length); @@ -437,7 +436,6 @@ void game_tick_stars() Stars[i].location.Y -= (tick - lasttick) * 4; if((Stars[i].location.Y + Stars[i].length) <= 0) { - Stars[i].colour = colours[stargrey1 + (rand() % 2)]; Stars[i].length = 20 + (rand() % 10); Stars[i].location.X = rand() % DISPLAY_X; Stars[i].location.Y = DISPLAY_Y + Stars[i].length; @@ -450,7 +448,6 @@ void game_setup_stars() int i; for(i = 0; i < MAX_STARS; i++) { - Stars[i].colour = colours[stargrey1 + (rand() % 2)]; Stars[i].length = 20 + (rand() % 10); Stars[i].location.X = rand() % DISPLAY_X; Stars[i].location.Y = rand() % DISPLAY_Y; @@ -497,7 +494,7 @@ void game_respawn_npc(int id) case littledurno: NPCS[id].idlesprite = durno_ship2; NPCS[id].sprite = durno_ship2; - NPCS[id].velocity.X = (rand() % 3) + 2; + NPCS[id].velocity.X = (rand() % 1) - 2; NPCS[id].velocity.Y = (rand() % 2) + 3; NPCS[id].health = 300; NPCS[id].hitbox_bl.X = 0; @@ -566,13 +563,26 @@ void game_tick_npcs() if((NPCS[i].firewidth == -1) || (abs(Player.location.X - NPCS[i].location.X) < NPCS[i].firewidth)) { if(NPCS[i].weaponspritestart == photon1) - game_spawn_projectile(-1,NPCS[i].location.X, NPCS[i].location.Y, 0, 5, NPCS[i].weaponspritestart, NPCS[i].weaponspriteend, 60); + game_spawn_projectile(-1,NPCS[i].location.X, NPCS[i].location.Y, 0, 10, NPCS[i].weaponspritestart, NPCS[i].weaponspriteend, 60); else game_spawn_projectile(-1,NPCS[i].location.X, NPCS[i].location.Y, 0, 10, NPCS[i].weaponspritestart, NPCS[i].weaponspriteend, 20); NPCS[i].nextfire = tick + NPCS[i].fireinterval; } } } + + if(NPCS[i].health <= 0) + { + if(NPCS[i].sprite == NPCS[i].idlesprite) + { + NPCS[i].collidable = 0; + NPCS[i].sprite = explode_start; + NPCS[i].explodenextframe = tick + 4; + sound_play(1,-5,0,100); + sound_play(3,-15,0,1000); + sound_play(2,-10,1,100); + } + } } } @@ -583,17 +593,17 @@ void game_draw_debugmenu() { font_colour(colours[debuggreen],colours[lcars_black],font[sys_12_8]); draw_text("Debug List",DISPLAY_X-200,DISPLAY_Y-40,font[sys_12_8]); - font_colour(colours[debugs[dbhitbox]?debugpink:stargrey1],colours[lcars_black],font[sys_12_8]); + font_colour(colours[debugs[dbhitbox]?debugpink:stargrey],colours[lcars_black],font[sys_12_8]); draw_text("1: hitbox",DISPLAY_X-200,DISPLAY_Y-60,font[sys_12_8]); - font_colour(colours[debugs[dbweapons]?debugpink:stargrey1],colours[lcars_black],font[sys_12_8]); + font_colour(colours[debugs[dbweapons]?debugpink:stargrey],colours[lcars_black],font[sys_12_8]); draw_text("2: weapons",DISPLAY_X-200,DISPLAY_Y-80,font[sys_12_8]); - font_colour(colours[debugs[dbinput]?debugpink:stargrey1],colours[lcars_black],font[sys_12_8]); + font_colour(colours[debugs[dbinput]?debugpink:stargrey],colours[lcars_black],font[sys_12_8]); draw_text("3: input",DISPLAY_X-200,DISPLAY_Y-100,font[sys_12_8]); - font_colour(colours[debugs[dbperformance]?debugpink:stargrey1],colours[lcars_black],font[sys_12_8]); + font_colour(colours[debugs[dbperformance]?debugpink:stargrey],colours[lcars_black],font[sys_12_8]); draw_text("4: performance",DISPLAY_X-200,DISPLAY_Y-120,font[sys_12_8]); - font_colour(colours[debugs[dbnpcs]?debugpink:stargrey1],colours[lcars_black],font[sys_12_8]); + font_colour(colours[debugs[dbnpcs]?debugpink:stargrey],colours[lcars_black],font[sys_12_8]); draw_text("5: NPCs",DISPLAY_X-200,DISPLAY_Y-140,font[sys_12_8]); - font_colour(colours[debugs[dbprojectiles]?debugpink:stargrey1],colours[lcars_black],font[sys_12_8]); + font_colour(colours[debugs[dbprojectiles]?debugpink:stargrey],colours[lcars_black],font[sys_12_8]); draw_text("6: Projectiles",DISPLAY_X-200,DISPLAY_Y-160,font[sys_12_8]); } @@ -625,7 +635,7 @@ void game_draw_debugmenu() } } -void game_collider_tick() +void game_tick_collider() { int i; for(i = 0; i < MAX_NPCS; i++) @@ -692,7 +702,7 @@ void game_collider_tick() } } -void game_player_targets_tick() +void game_tick_player_targets() { int i; int NoseX = Player.location.X + Player.hitbox_bl.X + (Player.hitbox_tr.X/2); @@ -709,7 +719,7 @@ void game_player_targets_tick() { if(!NPCS[i].collidable) continue; - if(NPCS[i].location.Y > (DISPLAY_Y-200)) + if(NPCS[i].location.Y > (DISPLAY_Y-50)) continue; LeftCornerX = NPCS[i].location.X + NPCS[i].hitbox_bl.X; LeftCornerY = NPCS[i].location.Y + NPCS[i].hitbox_bl.Y; @@ -755,7 +765,7 @@ int game_hitbox_collide(int x1, int y1, int w1, int h1, int x2, int y2, int w2, return 0; } -void game_projectiles_tick() +void game_tick_projectiles() { int i; for(i = 0; i < MAX_PROJECTILES; i++) @@ -787,7 +797,7 @@ void game_projectiles_tick() -void game_input_tick() +void game_tick_input() { if(debugs[dbbase]) { @@ -924,25 +934,6 @@ void game_tick_player() } } -void game_npcs_tick() -{ - int i; - for(i = 0; i < MAX_NPCS; i++) - { - if(NPCS[i].health <= 0) - { - if(NPCS[i].sprite == NPCS[i].idlesprite) - { - NPCS[i].collidable = 0; - NPCS[i].sprite = explode_start; - NPCS[i].explodenextframe = tick + 4; - sound_play(1,-5,0,100); - sound_play(3,-15,0,1000); - sound_play(2,-10,1,100); - } - } - } -} void game_tick() { lasttick = tick; @@ -952,13 +943,13 @@ void game_tick() screen_clear(); PROFILE(game_tick_stars()); - PROFILE(game_input_tick()); + PROFILE(game_tick_input()); PROFILE(game_tick_player()); PROFILE(game_tick_npcs()); - PROFILE(game_collider_tick()); - PROFILE(game_projectiles_tick()); - PROFILE(game_player_targets_tick()); - PROFILE(game_npcs_tick()); + PROFILE(game_tick_collider()); + PROFILE(game_tick_player_targets()); + PROFILE(game_tick_npcs()); + PROFILE(game_tick_projectiles()); PROFILE(game_draw_stars()); PROFILE(game_draw_player()); PROFILE(game_draw_npcs()); @@ -975,7 +966,7 @@ int main(int argc, char *argv[]) display_mode(DISPLAY_MODE); screen_clear(); - + load_sprites("Spr"); font[sys_12_8] = font_find("Trinity.Medium",12,8); diff --git a/README.md b/README.md index 6c81c2b..7b88fdf 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,9 @@ All files are in RiscOS formats, suitable for hostfs on RPCEmu. Binary is includ Tested on: RPCEmu on Win10 (recompiler) - RiscOS 3.71 on StrongARM with 128MB of RAM, 2MB VRAM + Arculator 2.0 - RiscOS 3.10 emulating Acorn A3000 with 2MB RAM + Acorn A3000, 2MB RAM (current build not tested) - performance is rubbish Controls so far: @@ -33,4 +35,13 @@ Known bugs: No ending -Flashing cursor in top left \ No newline at end of file +Flashing cursor in top left + +Sub-optimal sprites (squished rather than re-drawn as mode 15) +plasma1-2 +explode_ship1-4 +tng_te +tng_st +photon1-2 +durno_ship +durno_ship2 \ No newline at end of file