DEADSOFTWARE

portability: avoid errors on some compilers
[flatwaifu.git] / src / soft / vga.c
index ce83101ec24dbabf5d61fad05295fb9915ca5705..292fdde1f48114c496073fb9e240e9857993ea6b 100644 (file)
@@ -1,24 +1,19 @@
-/*
-   Copyright (C) Prikol Software 1996-1997
-   Copyright (C) Aleksey Volynskov 1996-1997
-   Copyright (C) <ARembo@gmail.com> 2011
-
-   This file is part of the Doom2D:Rembo project.
-
-   Doom2D:Rembo is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation.
-
-   Doom2D:Rembo is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, see <http://www.gnu.org/licenses/> or
-   write to the Free Software Foundation, Inc.,
-   51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-*/
+/* Copyright (C) 1996-1997 Aleksey Volynskov
+ * Copyright (C) 2011 Rambo
+ * Copyright (C) 2020 SovietPony
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License ONLY.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 
 #include "glob.h"
 #include "vga.h"
@@ -29,6 +24,8 @@
 #include "files.h"
 #include "system.h"
 
+#include "common/endianness.h"
+
 #include <string.h>
 #include <assert.h>
 
@@ -37,8 +34,8 @@ int SCRH = 600;
 char fullscreen = OFF;
 
 byte bright[256];
-byte mixmap[256][256];
-byte clrmap[256*12];
+byte *mixmap; /* [256][256] */
+byte *clrmap; /* [256*12] */
 
 byte *buffer;
 int buf_w, buf_h, pitch;
@@ -64,6 +61,11 @@ vgaimg *V_loadvgaimg (char *name) {
   return V_getvgaimg(F_getresid(name));
 }
 
+void V_update_buffer (void) {
+  Y_get_buffer(&buffer, &buf_w, &buf_h, &pitch);
+  V_setrect(0, 0, buf_w, buf_h);
+}
+
 static void draw_rect (int x, int y, int w, int h, int c) {
   int i;
   int x0 = max(x, cx1);
@@ -77,6 +79,8 @@ static void draw_rect (int x, int y, int w, int h, int c) {
 }
 
 void V_setrect (short x, short w, short y, short h) {
+  assert(w >= 0);
+  assert(h >= 0);
   cx1 = max(x, 0);
   cx2 = min(x + w - 1, buf_w - 1);
   cy1 = max(y, 0);
@@ -163,7 +167,8 @@ void smoke_sprf (int x, int y, byte c) {
     c = c + bright[t];
     c += 0x60;
     c ^= 0xF;
-    putpixel(x,y,mixmap[c][t]);
+    //putpixel(x,y,mixmap[c][t]);
+    putpixel(x, y, mixmap[t * 256 + c]);
 }
 
 void flame_sprf (int x, int y, byte c) {