From cd49a33a463e11f1fc07b30d8bd0c9ba042f802d Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 3 Apr 2021 22:20:27 +0100 Subject: [PATCH] proof of concept for tile based stuff (performance test). Fixed 10x10 grid, so panning of 10x10 view around a real map yet. --- !TheEsc/!RunImage,ff8 | Bin 19424 -> 20344 bytes !TheEsc/Makefile,fe1 | 3 + !TheEsc/Spr,ff9 | Bin 95456 -> 99764 bytes !TheEsc/Tiles,ff9 | Bin 0 -> 13452 bytes !TheEsc/c/CTheEscape | 10 ++- !TheEsc/c/Graphics | 98 +++++++++++--------------- !TheEsc/c/Mission1 | 4 +- !TheEsc/c/Mission2 | 159 +++++++++++++++++++++++++++++++++++++++--- !TheEsc/map,ffd | Bin 0 -> 100 bytes 9 files changed, 200 insertions(+), 74 deletions(-) create mode 100644 !TheEsc/Tiles,ff9 create mode 100644 !TheEsc/map,ffd diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index 5a5f1eafe2afeef399437fb65b4a83042e1c9e95..d241a353eefc2660cb580e3f9d4de5ea96bc700f 100644 GIT binary patch delta 4897 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 delta 4023 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 literal 95456 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 Zgzdh)#2%g(w_HyQ_U*x*xOq`g%4Z<+bQ%Bv literal 0 HcmV?d00001 diff --git a/!TheEsc/c/CTheEscape b/!TheEsc/c/CTheEscape index 32c9722..0e38eb4 100644 --- a/!TheEsc/c/CTheEscape +++ b/!TheEsc/c/CTheEscape @@ -16,6 +16,8 @@ _kernel_swi_regs outreg; // Sprite buffer unsigned char *buffer; unsigned char *fontbuffer; +unsigned char *tilebuffer; + extern int screen; extern struct CompositionElement composition[128]; extern int current_element; @@ -50,8 +52,8 @@ int main(int argc, char *argv[]) screen_clear(); // Load sprite library - load_sprites("Spr"); - load_font("Font"); + load_sprites("Spr",&buffer); + load_sprites("Font",&fontbuffer); #ifndef SKIP_INTRO // Intro titles + music @@ -84,13 +86,15 @@ int main(int argc, char *argv[]) #ifndef SKIP_MISSION2 lastoutcome = 1; + load_sprites("Tiles",&tilebuffer); + // Mission 2 while(lastoutcome == 1) { outcome = 0; game2_briefing(); screen_clear(); - //game2_setup(); + game2_setup(); while(!outcome) { outcome = game2_tick(); diff --git a/!TheEsc/c/Graphics b/!TheEsc/c/Graphics index 6ccf123..948bc64 100644 --- a/!TheEsc/c/Graphics +++ b/!TheEsc/c/Graphics @@ -8,10 +8,12 @@ extern _kernel_swi_regs outreg; extern unsigned char *buffer; extern unsigned char *fontbuffer; +extern unsigned char *tilebuffer; + int screen = 1; // Loads sprite file into buffer -void load_sprites(char* filename) +void load_sprites(char* filename, unsigned char **buffername) { int length; @@ -38,74 +40,24 @@ void load_sprites(char* filename) } // Attempt malloc, die if we cant - buffer = (unsigned char *) malloc(length + 4); + *buffername = (unsigned char *) malloc(length + 4); - if(buffer==NULL) + if(buffername==NULL) { printf("Couldn't malloc %i bytes for sprite buffer",length); exit(0); } // Store size and other info as required for SpriteOp 9 to init sprite area - *(unsigned int *)buffer = length + 4; - *(unsigned int *)(buffer + 4) = 16; + *(unsigned int *)*buffername = length + 4; + *(unsigned int *)(*buffername + 4) = 16; inreg.r[0] = 256+9; - inreg.r[1] = (unsigned int) buffer; + inreg.r[1] = (unsigned int) *buffername; _kernel_swi(OS_SpriteOp,&inreg,&outreg); // Load sprite file into buffer inreg.r[0] = 256+10; - inreg.r[1] = (int) buffer; - inreg.r[2] = (int) filename; - _kernel_swi(OS_SpriteOp,&inreg,&outreg); -} - -// Loads sprite file into buffer -void load_font(char* filename) -{ - int length; - - // Attempt to get file info - inreg.r[0] = 13; - inreg.r[1] = (int) filename; - _kernel_swi(OS_File,&inreg,&outreg); - - // Length will be in R4 if it exists - length = outreg.r[4]; - - // If it's <1 it's fil not found - if(outreg.r[0] < 1) - { - printf("Sprite file %s not found",filename); - exit(0); - } - - // Stops us trying to mallocsomething mad if file is too big. - if(length > 200000) - { - printf("Sprite file %s seems unreasonably large at %i bytes",filename, length); - exit(0); - } - - // Attempt malloc, die if we cant - fontbuffer = (unsigned char *) malloc(length + 4); - - if(fontbuffer==NULL) - { - printf("Couldn't malloc %i bytes for sprite buffer",length); - exit(0); - } - - // Store size and other info as required for SpriteOp 9 to init sprite area - *(unsigned int *)fontbuffer = length + 4; - *(unsigned int *)(fontbuffer + 4) = 16; - inreg.r[0] = 256+9; - inreg.r[1] = (unsigned int) fontbuffer; - _kernel_swi(OS_SpriteOp,&inreg,&outreg); - - // Load sprite file into buffer - inreg.r[0] = 256+10; - inreg.r[1] = (int) fontbuffer; + inreg.r[1] = (int) *buffername; inreg.r[2] = (int) filename; _kernel_swi(OS_SpriteOp,&inreg,&outreg); } @@ -190,10 +142,21 @@ void draw_letter(char* spritename,int x, int y) inreg.r[2] = (int) spritename; inreg.r[3] = x; inreg.r[4] = y; - inreg.r[5] = 8; // GCOL dest=source and sprite mask + inreg.r[5] = 8; _kernel_swi(OS_SpriteOp,&inreg,&outreg); } +void draw_tile(char* spritename,int x, int y) +{ + // SpriteOp 34 to put sprite at a location + inreg.r[0] = 256+34; + inreg.r[1] = (int) tilebuffer; + inreg.r[2] = (int) spritename; + inreg.r[3] = x; + inreg.r[4] = y; + inreg.r[5] = 0; + _kernel_swi(OS_SpriteOp,&inreg,&outreg); +} void draw_spritetext(char* text, int x, int y) { @@ -214,9 +177,9 @@ void draw_spritetext(char* text, int x, int y) { case 't': case 'i': - case 'y': case '.': case ',': + case 'y': currentx += 12 + 4; break; case '\'': @@ -318,6 +281,23 @@ void screen_flipbuffer() } +void screen_nobuffer() +{ + // Hardware + inreg.r[0] = 113; + inreg.r[1] = 1; + _kernel_swi(OS_Byte,&inreg,&outreg); + + // Drivers + inreg.r[0] = 112; + inreg.r[1] = 1; + _kernel_swi(OS_Byte,&inreg,&outreg); + + inreg.r[0] = 19; + _kernel_swi(OS_Byte,&inreg,&outreg); + +} + void screen_clear() { inreg.r[0] = 12; diff --git a/!TheEsc/c/Mission1 b/!TheEsc/c/Mission1 index 48e5416..0bb1317 100644 --- a/!TheEsc/c/Mission1 +++ b/!TheEsc/c/Mission1 @@ -1006,7 +1006,7 @@ void game1_victory() screen_clear(); draw_spritetext( -"~~~~~~~~{ chief engineers log - uss archimedes - stardate 1234567890 ==}\n\n\nour shuttlepod has been rescued by the uss archimedes - but our \njob here isn't done. the archimedes is now under attack from the \ndurnovarians, and recoverying the shuttle has come at a cost. \nSeveral major systems are now offline.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n~~~~~~~~{======================~~~~~~~~===========================}" +"~~~~~~~~{ chief engineers log - uss archimedes - stardate 1234567890 ==}\n\n\nour shuttlepod has been rescued by the uss archimedes - but our \njob here isn't done. the archimedes is now under attack from the \ndurnovarians, and recoverying the shuttle has come at a cost. \nseveral major systems are now offline.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n~~~~~~~~{======================~~~~~~~~===========================}" , 50, 950); draw_sprite("spacebar",(DISPLAY_X/2)-106,50); @@ -1060,7 +1060,7 @@ int game1_tick() PROFILE(game_draw_player()); PROFILE(game_draw_npcs()); PROFILE(game_draw_projectiles()); - game_draw_comms("Shuttlepod Phoebe - this is the USS Archimedes.\nPower down your engines and stand by for\nimmediate tractor beam recovery."); + game_draw_comms("shuttlepod phoebe - this is the USS Archimedes.\npower down your engines and stand by for\nimmediate tractor beam recovery."); return 0; } else if(Player.integrity > 0) diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index 4fa3bdd..a944958 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -1,10 +1,60 @@ #include "Graphics.h" - -//#defene PROFILE(X) lastprofile = clock(); X; printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t%s %i\n", #X, (clock() - lastprofile)) -#define PROFILE(X) X +#include "swis.h" +#include extern int tick; extern int lasttick; +extern int screen; + +extern _kernel_swi_regs inreg; +extern _kernel_swi_regs outreg; + + +#define TILESX 10 +#define TILESY 10 + +// map[0] is the 'master', [1] and [2] represents what is currently +// believed to be displayed in the corresponding (+1) screen buffer +// and we run a compare to see if re-drawing is needed. 0xFF is used +// for a re-draw being required (so it's set on the tile under the player +unsigned char map[3][TILESX][TILESY]; + +char tilenamebuffer[4]; +char textbuffer[63]; + +struct EntityLocation_s { + short signed int X,Y; +}; + +struct TilePlayer_s { + struct EntityLocation_s location; + struct EntityLocation_s hitbox_bl; + struct EntityLocation_s hitbox_tr; +}; + +struct TilePlayer_s TilePlayer; + +void game2_loadmap(char* filename) +{ + int length; + + // Attempt to get file info + inreg.r[0] = 13; + inreg.r[1] = (int) filename; + _kernel_swi(OS_File,&inreg,&outreg); + + // Length will be in R4 if it exists + length = outreg.r[4]; + + // Attempt to get file info + inreg.r[0] = 16; + inreg.r[1] = (int) filename; + inreg.r[2] = (int) map[0]; + inreg.r[3] = 0; + + _kernel_swi(OS_File,&inreg,&outreg); + +} void game2_death() { @@ -77,7 +127,7 @@ void game2_briefing() screen_clear(); draw_spritetext( -"~~~~~~~~{ chief engineers log - uss archimedes - stardate 1234567890 ==}\n\n\nYour mission is to be dead until I make mission 2. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n~~~~~~~~{======================~~~~~~~~===========================}" +"~~~~~~~~{ chief engineers log - uss archimedes - stardate 1234567890 ==}\n\n\nyour mission is to be dead until i make mission 2. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n~~~~~~~~{======================~~~~~~~~===========================}" , 50, 950); draw_sprite("spacebar",(DISPLAY_X/2)-106,50); @@ -95,23 +145,112 @@ void game2_briefing() } } +void game2_setup() +{ + screen_flipbuffer(); + screen_clear(); + screen_flipbuffer(); + screen_clear(); + TilePlayer.location.X = 0; + TilePlayer.location.Y = 0; + TilePlayer.hitbox_bl.X = 0; + TilePlayer.hitbox_bl.Y = 0; + TilePlayer.hitbox_tr.X = 60; + TilePlayer.hitbox_tr.Y = 50; + game2_loadmap("map"); +} + +void game2_tick_input() +{ + int x,y; + // Up arrow + if(input_readkey(57)) + { + TilePlayer.location.Y += 1 * (tick - lasttick); + } + + // Down arrow + if(input_readkey(41)) + { + TilePlayer.location.Y -= 1 * (tick - lasttick); + } + + // Right arrow + if(input_readkey(121)) + { + TilePlayer.location.X += 1 * (tick - lasttick); + } + + // Left arrow + if(input_readkey(25)) + { + TilePlayer.location.X -= 1 * (tick - lasttick); + } + + // Q + if(input_readkey(16)) + { + for(x = 0; x < TILESX; x++) + { + for(y = 0; y < TILESY; y++) + { + map[0][x][y] = 1; + } + } + } +} + int game2_tick() { + int x; + int y; + int udt = 0; lasttick = tick; tick = clock(); screen_flipbuffer(); - screen_clear(); - if(0) + if(1) { + for(x = 0; x < TILESX; x++) + { + for(y = 0; y < TILESY; y++) + { + if(game_hitbox_collide( + (TilePlayer.location.X + TilePlayer.hitbox_bl.X),(TilePlayer.location.Y + TilePlayer.hitbox_bl.Y), + (TilePlayer.hitbox_tr.X - TilePlayer.hitbox_bl.X),(TilePlayer.hitbox_tr.Y - TilePlayer.hitbox_bl.Y), + x*100,y*100, + 100,100 + )) + { + map[1][x][y] = 255; + map[2][x][y] = 255; + } + + if(map[0][x][y] ^ map[screen+1][x][y]) + { + map[screen+1][x][y] = map[0][x][y]; + sprintf(tilenamebuffer,"%i",map[screen+1][x][y]); + draw_tile(tilenamebuffer,x*100,y*100); + udt++; + } + } + + //draw_sprite("lcarsblack",1000,DISPLAY_Y-164); + + //sprintf(textbuffer,"CPF: %i\nUDT: %i",(tick-lasttick), udt); + //draw_spritetext(textbuffer, 1070, 950); + } + + game2_tick_input(); + + draw_sprite("man",TilePlayer.location.X,TilePlayer.location.Y); + return 0; }else{ - screen_flipbuffer(); +/* screen_flipbuffer(); screen_clear(); game2_death(); - return 1; + return 1;*/ } - - } diff --git a/!TheEsc/map,ffd b/!TheEsc/map,ffd new file mode 100644 index 0000000000000000000000000000000000000000..79ad115be5263fcd9587d3c43956446abe57e75d GIT binary patch literal 100 lcmZSh4+BhKzyc&0u>fWWU}a>3s^?(jgt6FRESOPfGysP`H9-IX literal 0 HcmV?d00001