patches: optimize doomgeneric patch

This commit is contained in:
Matheus
2022-10-14 19:07:11 -03:00
parent 1b766ceb4a
commit d66ff03141
+23 -20
View File
@@ -1,7 +1,7 @@
diff -ruN doomgeneric/doomgeneric/doomgeneric_astral.c Astral/sources/doomgeneric/doomgeneric/doomgeneric_astral.c diff -ruN doomgeneric/doomgeneric/doomgeneric_astral.c Astral/sources/doomgeneric/doomgeneric/doomgeneric_astral.c
--- doomgeneric/doomgeneric/doomgeneric_astral.c 1969-12-31 21:00:00.000000000 -0300 --- doomgeneric/doomgeneric/doomgeneric_astral.c 1969-12-31 21:00:00.000000000 -0300
+++ Astral/sources/doomgeneric/doomgeneric/doomgeneric_astral.c 2022-10-08 22:09:58.026611370 -0300 +++ Astral/sources/doomgeneric/doomgeneric/doomgeneric_astral.c 2022-10-14 18:57:20.269819323 -0300
@@ -0,0 +1,191 @@ @@ -0,0 +1,194 @@
+#include "doomkeys.h" +#include "doomkeys.h"
+ +
+#include "doomgeneric.h" +#include "doomgeneric.h"
@@ -84,19 +84,11 @@ diff -ruN doomgeneric/doomgeneric/doomgeneric_astral.c Astral/sources/doomgeneri
+ +
+ ioctlordie(fbfd, FBIOGET_VSCREENINFO, &fbvs); + ioctlordie(fbfd, FBIOGET_VSCREENINFO, &fbvs);
+ ioctlordie(fbfd, FBIOGET_FSCREENINFO, &fbfs); + ioctlordie(fbfd, FBIOGET_FSCREENINFO, &fbfs);
+ +
+ // clear fb
+
+ frame = malloc(fbfs.smem_len);
+ if(!frame){
+ printf("doomgeneric: %s", strerror(ENOMEM));
+ exit(ENOMEM);
+ }
+ memset(frame, 0, fbfs.smem_len);
+ writeordie(fbfd, frame, fbfs.smem_len);
+ struct termios tty;
+ +
+ // make tty raw and nonblocking + // make tty raw and nonblocking
+
+ struct termios tty;
+ +
+ tcgetattr(1, &tty); + tcgetattr(1, &tty);
+ ttysave = tty; + ttysave = tty;
@@ -112,15 +104,14 @@ diff -ruN doomgeneric/doomgeneric/doomgeneric_astral.c Astral/sources/doomgeneri
+ +
+ // TODO handle bpp stuff + // TODO handle bpp stuff
+ +
+ seekordie(fbfd, 0, SEEK_SET); + off_t moffset = fbfs.line_length * (fbvs.yres / 2 - DOOMGENERIC_RESY/2) + (fbvs.xres / 2 - DOOMGENERIC_RESX / 2) * (fbvs.bits_per_pixel / 8);
+ +
+ for(uintmax_t y = 0; y < DOOMGENERIC_RESY; ++y){ + for(uintmax_t y = 0; y < DOOMGENERIC_RESY; ++y){
+ uintptr_t foffset = 0; + uintptr_t foffset = 0;
+ foffset = fbfs.line_length * y; + foffset = fbfs.line_length * y;
+ memcpy(frame + foffset, DG_ScreenBuffer + DOOMGENERIC_RESX*y, DOOMGENERIC_RESX*4); + seekordie(fbfd, moffset + fbfs.line_length * y, SEEK_SET);
+ writeordie(fbfd, DG_ScreenBuffer + DOOMGENERIC_RESX*y, DOOMGENERIC_RESX*4);
+ } + }
+
+ writeordie(fbfd, frame, fbfs.smem_len);
+ +
+} +}
+ +
@@ -191,11 +182,23 @@ diff -ruN doomgeneric/doomgeneric/doomgeneric_astral.c Astral/sources/doomgeneri
+ +
+void DG_SleepMs(uint32_t ms){} +void DG_SleepMs(uint32_t ms){}
+static int aa = 0; +static int aa = 0;
+uint32_t DG_GetTicksMs(){return aa++;} +
+// I need gettimeanddate() already
+
+uint32_t DG_GetTicksMs(){
+ static int w = 0;
+ if(w++ == 40000){
+ w = 0;
+ return aa++;
+ }
+ else {
+ return aa;
+ }
+}
+void DG_SetWindowTitle(const char* title){} +void DG_SetWindowTitle(const char* title){}
diff -ruN doomgeneric/doomgeneric/Makefile Astral/sources/doomgeneric/doomgeneric/Makefile diff -ruN doomgeneric/doomgeneric/Makefile Astral/sources/doomgeneric/doomgeneric/Makefile
--- doomgeneric/doomgeneric/Makefile 2022-10-08 20:18:58.119998127 -0300 --- doomgeneric/doomgeneric/Makefile 2022-10-08 20:18:58.119998127 -0300
+++ Astral/sources/doomgeneric/doomgeneric/Makefile 2022-10-08 20:23:06.036662797 -0300 +++ Astral/sources/doomgeneric/doomgeneric/Makefile 2022-10-14 17:10:52.856538703 -0300
@@ -12,17 +12,17 @@ @@ -12,17 +12,17 @@
endif endif