dos3d
diff src/vga.c @ 23:f2c2e45e8edd
reverted the mistaken push from the deepstone branch
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 21 Sep 2013 18:22:11 +0300 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/vga.c Sat Sep 21 18:22:11 2013 +0300 1.3 @@ -0,0 +1,68 @@ 1.4 +/* 1.5 +256-color 3D graphics hack for real-mode DOS. 1.6 +Copyright (C) 2011 John Tsiombikas <nuclear@member.fsf.org> 1.7 + 1.8 +This program is free software: you can redistribute it and/or modify 1.9 +it under the terms of the GNU General Public License as published by 1.10 +the Free Software Foundation, either version 3 of the License, or 1.11 +(at your option) any later version. 1.12 + 1.13 +This program is distributed in the hope that it will be useful, 1.14 +but WITHOUT ANY WARRANTY; without even the implied warranty of 1.15 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1.16 +GNU General Public License for more details. 1.17 + 1.18 +You should have received a copy of the GNU General Public License 1.19 +along with this program. If not, see <http://www.gnu.org/licenses/>. 1.20 +*/ 1.21 +#include <dos.h> 1.22 +#include <string.h> 1.23 + 1.24 +void set_video_mode(int mode) 1.25 +{ 1.26 + asm { 1.27 + mov ax, mode 1.28 + int 0x10 1.29 + } 1.30 +} 1.31 + 1.32 +void set_palette(unsigned char c, unsigned char r, unsigned char g, unsigned char b) 1.33 +{ 1.34 + asm { 1.35 + mov dx, 0x3c8 1.36 + mov al, c 1.37 + out dx, al 1.38 + inc dx 1.39 + mov al, r 1.40 + shr al, 2 1.41 + out dx, al 1.42 + mov al, g 1.43 + shr al, 2 1.44 + out dx, al 1.45 + mov al, b 1.46 + shr al, 2 1.47 + out dx, al 1.48 + } 1.49 +} 1.50 + 1.51 +void copy_frame(unsigned char *frame) 1.52 +{ 1.53 + _fmemcpy(MK_FP(0xa000, 0), frame, 64000); 1.54 +} 1.55 + 1.56 +void wait_vsync(void) 1.57 +{ 1.58 + asm mov dx, 0x3da 1.59 +l1: 1.60 + asm { 1.61 + in al, dx 1.62 + and al, 0x8 1.63 + jnz l1 1.64 + } 1.65 +l2: 1.66 + asm { 1.67 + in al, dx 1.68 + and al, 0x8 1.69 + jz l2 1.70 + } 1.71 +}