DEADSOFTWARE

sdl2: add software render support
[flatwaifu.git] / src / soft / vga.h
1 /*
2 Управление графикой VGA для DOS4GW
3 Модуль версии 1.0
4 Copyright (C) Алексей Волынсков, 1996
6 Copyright (C) Prikol Software 1996-1997
7 Copyright (C) Aleksey Volynskov 1996-1997
8 Copyright (C) <ARembo@gmail.com> 2011
10 This file is part of the Doom2D:Rembo project.
12 Doom2D:Rembo is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License version 2 as
14 published by the Free Software Foundation.
16 Doom2D:Rembo is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, see <http://www.gnu.org/licenses/> or
23 write to the Free Software Foundation, Inc.,
24 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 */
27 #ifndef VGA_H_INCLUDED
28 #define VGA_H_INCLUDED
30 #include "glob.h"
32 #pragma pack(1)
33 typedef struct {
34 unsigned short w, h; // W-ширина,H-высота
35 short sx, sy; // сдвиг центра изображения
36 } vgaimg;
37 #pragma pack()
39 // карта цветов
40 typedef unsigned char colormap[256];
42 typedef void spr_f(int, int, unsigned char);
44 extern int SCRW;
45 extern int SCRH;
46 extern char fullscreen;
48 extern byte bright[256];
49 extern byte mixmap[256][256];
50 extern byte clrmap[256*12];
52 vgaimg *V_getvgaimg (int id);
53 vgaimg *V_loadvgaimg (char *name);
55 // переключение в режим VGA 320x200,256 цветов
56 // возвращает 0, если все о'кей
57 short V_init (void);
59 // переключение в текстовый режим
60 void V_done (void);
62 // ждать обратного хода луча развертки
63 void V_wait (void);
65 // вывести картинку i в координатах (x,y)
66 void V_pic (short x, short y, vgaimg *i);
68 // вывести спрайт i в координатах (x,y) при помощи функции f
69 // параметры: AL=цвет_точки_спрайта EDI=>экран
70 // !!! сохраняйте все регистры, кроме EAX
71 // !!! EDI должен быть переведен на точку вправо (INC EDI или STOSB)
72 void V_sprf (short x, short y, vgaimg *i, spr_f *f);
74 void smoke_sprf (int x, int y, unsigned char c);
75 void flame_sprf (int x, int y, unsigned char c);
77 // вывести спрайт i в координатах (x,y)
78 void V_spr (short x, short y, vgaimg *i);
80 // вывести зеркально перевернутый спрайт i в координатах (x,y)
81 void V_spr2 (short x, short y, vgaimg *i);
83 // вывести точку цвета c в координатах (x,y)
84 void V_dot (short x, short y, unsigned char c);
86 void V_manspr (int x, int y, void *p, unsigned char c);
87 void V_manspr2 (int x, int y, void *p, unsigned char c);
89 // очистить прямоугольник цветом c
90 // x-левая сторона,w-ширина,y-верх,h-высота
91 void V_clr (short x, short w, short y, short h, unsigned char c);
93 // установить область вывода
94 void V_setrect (short x, short w, short y, short h);
96 // установить адрес экранного буфера
97 // NULL - реальный экран
98 void V_setscr (void *);
100 // скопировать прямоугольник на экран
101 void V_copytoscr (short x, short w, short y, short h);
103 void V_maptoscr (int, int, int, int, void *);
105 // переделать изображение i по карте цветов m
106 void V_remap (vgaimg *i, colormap m);
108 void V_remap_rect (int x, int y, int w, int h, byte *cmap);
110 void V_toggle (void);
111 void V_rotspr (int x, int y, vgaimg* i, int d);
112 void V_center (int f);
113 void V_offset (int ox, int oy);
115 #endif /* VGA_H_INCLUDED */