DEADSOFTWARE

update copyrights
[flatwaifu.git] / src / soft / vga.h
1 /* Copyright (C) 1996-1997 Aleksey Volynskov
2 * Copyright (C) 2011 Rambo
3 * Copyright (C) 2020 SovietPony
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 3 of the License ONLY.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
18 #ifndef VGA_H_INCLUDED
19 #define VGA_H_INCLUDED
21 #include "glob.h"
23 #pragma pack(1)
24 typedef struct {
25 unsigned short w, h; // W-ширина,H-высота
26 short sx, sy; // сдвиг центра изображения
27 } vgaimg;
28 #pragma pack()
30 // карта цветов
31 typedef unsigned char colormap[256];
33 typedef void spr_f(int, int, unsigned char);
35 extern int SCRW;
36 extern int SCRH;
37 extern char fullscreen;
39 extern byte *buffer;
40 extern int buf_w, buf_h, pitch;
42 extern byte bright[256];
43 extern byte mixmap[256][256];
44 extern byte clrmap[256*12];
46 vgaimg *V_getvgaimg (int id);
47 vgaimg *V_loadvgaimg (char *name);
49 // ждать обратного хода луча развертки
50 void V_wait (void);
52 // вывести картинку i в координатах (x,y)
53 void V_pic (short x, short y, vgaimg *i);
55 // вывести спрайт i в координатах (x,y) при помощи функции f
56 // параметры: AL=цвет_точки_спрайта EDI=>экран
57 // !!! сохраняйте все регистры, кроме EAX
58 // !!! EDI должен быть переведен на точку вправо (INC EDI или STOSB)
59 void V_sprf (short x, short y, vgaimg *i, spr_f *f);
61 void smoke_sprf (int x, int y, unsigned char c);
62 void flame_sprf (int x, int y, unsigned char c);
64 // вывести спрайт i в координатах (x,y)
65 void V_spr (short x, short y, vgaimg *i);
67 // вывести зеркально перевернутый спрайт i в координатах (x,y)
68 void V_spr2 (short x, short y, vgaimg *i);
70 // вывести точку цвета c в координатах (x,y)
71 void V_dot (short x, short y, unsigned char c);
73 void V_manspr (int x, int y, void *p, unsigned char c);
74 void V_manspr2 (int x, int y, void *p, unsigned char c);
76 // очистить прямоугольник цветом c
77 // x-левая сторона,w-ширина,y-верх,h-высота
78 void V_clr (short x, short w, short y, short h, unsigned char c);
80 // установить область вывода
81 void V_setrect (short x, short w, short y, short h);
83 // установить адрес экранного буфера
84 // NULL - реальный экран
85 void V_setscr (void *);
87 // скопировать прямоугольник на экран
88 void V_copytoscr (short x, short w, short y, short h);
90 void V_maptoscr (int, int, int, int, void *);
92 // переделать изображение i по карте цветов m
93 void V_remap (vgaimg *i, colormap m);
95 void V_remap_rect (int x, int y, int w, int h, byte *cmap);
97 void V_update_buffer (void);
98 void V_rotspr (int x, int y, vgaimg* i, int d);
99 void V_center (int f);
100 void V_offset (int ox, int oy);
102 #endif /* VGA_H_INCLUDED */