DEADSOFTWARE

fully separate render
[flatwaifu.git] / src / vga.c
index e06baf482dd3ed2a891a5e154a5ce38f434b54ac..0d16859efde217bd07cc56e0da4dfda6a726744a 100644 (file)
--- a/src/vga.c
+++ b/src/vga.c
 #include <SDL.h>
 #include "error.h"
 #include "view.h"
+#include "memory.h"
+#include "misc.h"
+#include "files.h"
+
+#include <assert.h>
 
 
 // адрес экранного буфера
@@ -43,8 +48,34 @@ int cx1,cx2,cy1,cy2;
 
 char fullscreen = OFF;
 
+byte bright[256];
+byte mixmap[256][256];
+byte clrmap[256*12];
+
+static byte flametab[16] = {
+  0xBC,0xBA,0xB8,0xB6,0xB4,0xB2,0xB0,0xD5,0xD6,0xD7,0xA1,0xA0,0xE3,0xE2,0xE1,0xE0
+};
+
+extern void *walp[256];
+
 #define HQ 2
 
+vgaimg *V_getvgaimg (int id) {
+  int loaded = M_was_locked(id);
+  vgaimg *v = M_lock(id);
+  if (v != NULL && !loaded) {
+    v->w = short2host(v->w);
+    v->h = short2host(v->h);
+    v->sx = short2host(v->sx);
+    v->sy = short2host(v->sy);
+  }
+  return v;
+}
+
+vgaimg *V_loadvgaimg (char *name) {
+  return V_getvgaimg(F_getresid(name));
+}
+
 short V_init(void)
 {
     Uint32 flags = SDL_SWSURFACE|SDL_DOUBLEBUF|SDL_HWPALETTE;
@@ -191,11 +222,6 @@ void V_dot(short x,short y, unsigned char c)
     putpixel(x,y,c);
 }
 
-
-extern byte bright[256];
-extern byte flametab[16];
-extern byte mixmap[256][256];
-
 void smoke_sprf(int x, int y, byte c)
 {
     byte t = getpixel(x,y);
@@ -298,39 +324,6 @@ void V_remap_rect(int x,int y,int w,int h,byte *cmap)
             mappixel(cx,cy,cmap);
 }
 
-extern void *walp[256];
-extern byte clrmap[256*12];
-
-void Z_drawfld(byte *fld, int bg)
-{
-    byte *p = fld;
-    int x,y;
-    for (y=0; y<FLDH; y++)
-    {
-        for (x=0; x<FLDW; x++)
-        {
-            int sx = x*CELW-w_x+WD/2;
-            int sy = y*CELH-w_y+HT/2+1+w_o;
-
-
-            if (*p) {
-                 vgaimg *pic = walp[*p];
-                if ((int)pic <= 3) {
-                    if (!bg) {
-                        byte *cmap = clrmap + ((int)pic+7)*256;
-                        V_remap_rect(sx, sy, CELW, CELH, cmap);
-                    }
-                }
-                else {
-                    V_pic(sx, sy, pic);
-                }
-            }
-
-            p++;
-        }
-    }
-}
-
 void V_toggle()
 {
     if (!SDL_WM_ToggleFullScreen(screen)) {