亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? build.c

?? 小型游戲引擎
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman * Ken Silverman's official web site: "http://www.advsys.net/ken" * See the included license file "BUILDLIC.TXT" for license info. * This file has been modified from Ken Silverman's original release */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include "engine.h"#include "platform.h"#include "build.h"#include "pragmas.h"#include "display.h"#include "bstub.h"#define MAXMENUFILES 256#define updatecrc16(crc,dat) (crc = (((crc<<8)&65535)^crctable[((((unsigned short)crc)>>8)&65535)^dat]))static long crctable[256];static char kensig[24];#define KEYFIFOSIZ 64volatile unsigned char keystatus[256];static volatile unsigned char keyfifo[KEYFIFOSIZ], keyfifoplc, keyfifoend;static volatile unsigned char readch, oldreadch, extended, keytemp;long vel, svel, angvel;#define NUMKEYS 19unsigned char buildkeys[NUMKEYS] ={	0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39,	0x1e,0x2c,0xd1,0xc9,0x33,0x34,	0x9c,0x1c,0xd,0xc,0xf,};long posx, posy, posz, horiz = 100;short ang, cursectnum;long hvel;static long synctics = 0, lockclock = 0;extern volatile long stereomode;extern char vgacompatible;extern char picsiz[MAXTILES];extern long startposx, startposy, startposz;extern short startang, startsectnum;extern long frameplace, pageoffset, ydim16;extern long cachesize, artsize;static short oldmousebstatus = 0, brightness = 0;long zlock = 0x7fffffff, zmode = 0, whitecol, kensplayerheight = 32;short defaultspritecstat = 0;static short localartfreq[MAXTILES];static short localartlookup[MAXTILES], localartlookupnum;char tempbuf[4096];char names[MAXTILES][17];short asksave = 0;extern short editstatus, searchit;extern long searchx, searchy;                          /* search input */extern short searchsector, searchwall, searchstat;     /* search output */extern short pointhighlight, linehighlight, highlightcnt;short grid = 3, gridlock = 1, showtags = 1;long zoom = 768, gettilezoom = 1;int numsprites;short highlight[MAXWALLS];short highlightsector[MAXSECTORS], highlightsectorcnt = -1;/*extern char textfont[128][8];*/static char pskysearch[MAXSECTORS];short temppicnum, tempcstat, templotag, temphitag, tempextra;char tempshade, temppal, tempvis, tempxrepeat, tempyrepeat;char somethingintab = 255;static char boardfilename[13], oboardfilename[13];static long repeatcountx, repeatcounty;static char menuname[MAXMENUFILES][17], curpath[80], menupath[80];static long menunamecnt, menuhighlight;static long fillist[640];static char scantoasc[128] ={	0,0,'1','2','3','4','5','6','7','8','9','0','-','=',0,0,	'q','w','e','r','t','y','u','i','o','p','[',']',0,0,'a','s',	'd','f','g','h','j','k','l',';',39,'`',0,92,'z','x','c','v',	'b','n','m',',','.','/',0,'*',0,32,0,0,0,0,0,0,	0,0,0,0,0,0,0,'7','8','9','-','4','5','6','+','1',	'2','3','0','.',0,0,0,0,0,0,0,0,0,0,0,0,	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};static char scantoascwithshift[128] ={	0,0,'!','@','#','$','%','^','&','*','(',')','_','+',0,0,	'Q','W','E','R','T','Y','U','I','O','P','{','}',0,0,'A','S',	'D','F','G','H','J','K','L',':',34,'~',0,'|','Z','X','C','V',	'B','N','M','<','>','?',0,'*',0,32,0,0,0,0,0,0,	0,0,0,0,0,0,0,'7','8','9','-','4','5','6','+','1',	'2','3','0','.',0,0,0,0,0,0,0,0,0,0,0,0,	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};void keytimerstuff(void){	if (keystatus[buildkeys[5]] == 0)	{		if (keystatus[buildkeys[2]] > 0) angvel = max(angvel-16,-128);		if (keystatus[buildkeys[3]] > 0) angvel = min(angvel+16,127);	}	else	{		if (keystatus[buildkeys[2]] > 0) svel = min(svel+8,127);		if (keystatus[buildkeys[3]] > 0) svel = max(svel-8,-128);	}	if (keystatus[buildkeys[0]] > 0) vel = min(vel+8,127);	if (keystatus[buildkeys[1]] > 0) vel = max(vel-8,-128);	if (keystatus[buildkeys[12]] > 0) svel = min(svel+8,127);	if (keystatus[buildkeys[13]] > 0) svel = max(svel-8,-128);	if (angvel < 0) angvel = min(angvel+12,0);	if (angvel > 0) angvel = max(angvel-12,0);	if (svel < 0) svel = min(svel+2,0);	if (svel > 0) svel = max(svel-2,0);	if (vel < 0) vel = min(vel+2,0);	if (vel > 0) vel = max(vel-2,0);}void __interrupt __far timerhandler(void){	totalclock++;	keytimerstuff();    #ifdef PLATFORM_DOS    	outp(0x20,0x20);    #endif}void __interrupt __far keyhandler(void){        /*         * ryan sez: End Of Interrupt call on DOS. This seems like a         *  dangerous place to put it, if you ask me, but oh well.  --ryan.         */    #ifdef PLATFORM_DOS    	koutp(0x20,0x20);    #endif	oldreadch = readch; readch = _readlastkeyhit();    #if 0        printf("keyhandler() got a (0x%X) ... \n", readch);    #endif        /*         * ryan sez: these inp/outp calls read the keyboard state,         *  reset the keyboard, and put the original state back in.         *  This is apparently needed on some XTs, but not newer boxes, and         *  obviously never on Linux.  --ryan.         */    #ifdef PLATFORM_DOS    	keytemp = kinp(0x61); koutp(0x61,keytemp|128); koutp(0x61,keytemp&127);    #else        keytemp = readch;    #endif	if ((readch|1) == 0xe1) { extended = 128; return; }	if (oldreadch != readch)	{		if ((readch&128) == 0)		{			keytemp = readch+extended;			if (keystatus[keytemp] == 0)			{				keystatus[keytemp] = 1;				keyfifo[keyfifoend] = keytemp;				keyfifo[(keyfifoend+1)&(KEYFIFOSIZ-1)] = 1;				keyfifoend = ((keyfifoend+2)&(KEYFIFOSIZ-1));			}		}		else		{			keytemp = (readch&127)+extended;			keystatus[keytemp] = 0;			keyfifo[keyfifoend] = keytemp;			keyfifo[(keyfifoend+1)&(KEYFIFOSIZ-1)] = 0;			keyfifoend = ((keyfifoend+2)&(KEYFIFOSIZ-1));		}	}	extended = 0;}static void _initkeys(void){	long i;	keyfifoplc = 0; keyfifoend = 0;	for(i=0;i<256;i++) keystatus[i] = 0;    initkeys();  /* rcg06082001 platform driver-specific initialization. */}#define loadbyte(fil,tempbuf,bufplc,dat)        \{                                               \	if (bufplc == 0)                             \	{                                            \		for(bufplc=0;bufplc<4096;bufplc++)        \			tempbuf[bufplc] = 0;                   \		bufplc = 0;                               \		read(fil,tempbuf,4096);                   \	}                                            \	dat = tempbuf[bufplc];                       \	bufplc = ((bufplc+1)&4095);                  \}                                               \int loadnames(void){	char buffer[80], firstch, ch;	long fil, i, num, buffercnt, bufplc;	if ((fil = open("names.h",O_BINARY|O_RDWR,S_IREAD)) == -1) return(-1);	bufplc = 0;	do { loadbyte(fil,tempbuf,bufplc,firstch); } while (firstch != '#');	while ((firstch == '#') || (firstch == '/'))	{		do { loadbyte(fil,tempbuf,bufplc,ch); } while (ch > 32);		buffercnt = 0;		do		{			loadbyte(fil,tempbuf,bufplc,ch);			if (ch > 32) buffer[buffercnt++] = ch;		}		while (ch > 32);		num = 0;		do		{			loadbyte(fil,tempbuf,bufplc,ch);			if ((ch >= 48) && (ch <= 57)) num = num*10+(ch-48);		}		while ((ch != '\r') && (ch != '\n'));		for(i=0;i<buffercnt;i++) names[num][i] = buffer[i];		names[num][buffercnt] = 0;		loadbyte(fil,tempbuf,bufplc,firstch);    		while ((firstch == '\r') || (firstch == '\n'))			loadbyte(fil,tempbuf,bufplc,firstch);	}	close(fil);	return(0);}void initcrc(void){	long i, j, k, a;	for(j=0;j<256;j++)      /* Calculate CRC table */	{		k = (j<<8); a = 0;		for(i=7;i>=0;i--)		{			if (((k^a)&0x8000) > 0)				a = ((a<<1)&65535) ^ 0x1021;   /* 0x1021 = genpoly */			else				a = ((a<<1)&65535);			k = ((k<<1)&65535);		}		crctable[j] = (a&65535);	}}void initmenupaths(char *filename){	long i;	strcpy(curpath,filename);	i = 0;	while ((i < 80) && (curpath[i] != 0)) i++;	while ((i > 0) && (curpath[i] != 92)) i--;	curpath[i] = 0;	strcpy(menupath,curpath);}void showmouse(void){	long i;	for(i=1;i<=4;i++)	{		plotpixel(searchx+i,searchy,whitecol);		plotpixel(searchx-i,searchy,whitecol);		plotpixel(searchx,searchy-i,whitecol);		plotpixel(searchx,searchy+i,whitecol);	}}void fixrepeats(short i){	long dax, day, dist;	dax = wall[wall[i].point2].x-wall[i].x;	day = wall[wall[i].point2].y-wall[i].y;	dist = ksqrt(dax*dax+day*day);	dax = wall[i].xrepeat; day = wall[i].yrepeat;	wall[i].xrepeat = (char)min(max(mulscale10(dist,day),1),255);}long gettile(long tilenum){	char snotbuf[80];	long i, j, k, otilenum, topleft, gap, temp, templong;	long xtiles, ytiles, tottiles;	xtiles = (xdim>>6); ytiles = (ydim>>6); tottiles = xtiles*ytiles;	otilenum = tilenum;	keystatus[0x2f] = 0;	for(i=0;i<MAXTILES;i++)	{		localartfreq[i] = 0;		localartlookup[i] = i;	}	if ((searchstat == 1) || (searchstat == 2))		for(i=0;i<numsectors;i++)		{			localartfreq[sector[i].ceilingpicnum]++;			localartfreq[sector[i].floorpicnum]++;		}	if (searchstat == 0)		for(i=0;i<numwalls;i++)			localartfreq[wall[i].picnum]++;	if (searchstat == 4)		for(i=0;i<numwalls;i++)			localartfreq[wall[i].overpicnum]++;	if (searchstat == 3)		for(i=0;i<MAXSPRITES;i++)			if (sprite[i].statnum < MAXSTATUS)				localartfreq[sprite[i].picnum]++;	gap = (MAXTILES>>1);	do	{		for(i=0;i<MAXTILES-gap;i++)		{			temp = i;			while ((localartfreq[temp] < localartfreq[temp+gap]) && (temp >= 0))			{				templong = localartfreq[temp];				localartfreq[temp] = localartfreq[temp+gap];				localartfreq[temp+gap] = templong;				templong = localartlookup[temp];				localartlookup[temp] = localartlookup[temp+gap];				localartlookup[temp+gap] = templong;				if (tilenum == temp)					tilenum = temp+gap;				else if (tilenum == temp+gap)					tilenum = temp;				temp -= gap;			}		}		gap >>= 1;	}	while (gap > 0);	localartlookupnum = 0;	while (localartfreq[localartlookupnum] > 0)		localartlookupnum++;	if (localartfreq[0] == 0)	{		tilenum = otilenum;		localartlookupnum = MAXTILES;		for(i=0;i<MAXTILES;i++)			localartlookup[i] = i;	}	topleft = ((tilenum/(xtiles<<gettilezoom))*(xtiles<<gettilezoom))-(xtiles<<gettilezoom);	if (topleft < 0) topleft = 0;	if (topleft > MAXTILES-(tottiles<<(gettilezoom<<1))) topleft = MAXTILES-(tottiles<<(gettilezoom<<1));	while ((keystatus[0x1c]|keystatus[1]) == 0)	{		drawtilescreen(topleft,tilenum);		if ((vidoption != 2) && ((vidoption != 1) || (vgacompatible == 1))) limitrate();		nextpage();		synctics = totalclock-lockclock;		lockclock += synctics;		if ((keystatus[0x37] > 0) && (gettilezoom < 2))		{			gettilezoom++;			topleft = ((tilenum/(xtiles<<gettilezoom))*(xtiles<<gettilezoom))-(xtiles<<gettilezoom);			if (topleft < 0) topleft = 0;			if (topleft > MAXTILES-(tottiles<<(gettilezoom<<1))) topleft = MAXTILES-(tottiles<<(gettilezoom<<1));			keystatus[0x37] = 0;		}		if ((keystatus[0xb5] > 0) && (gettilezoom > 0))		{			gettilezoom--;			topleft = ((tilenum/(xtiles<<gettilezoom))*(xtiles<<gettilezoom))-(xtiles<<gettilezoom);			if (topleft < 0) topleft = 0;			if (topleft > MAXTILES-(tottiles<<(gettilezoom<<1))) topleft = MAXTILES-(tottiles<<(gettilezoom<<1));			keystatus[0xb5] = 0;		}		if ((keystatus[0xcb] > 0) && (tilenum > 0))			tilenum--, keystatus[0xcb] = 0;		if ((keystatus[0xcd] > 0) && (tilenum < MAXTILES-1))			tilenum++, keystatus[0xcd] = 0;		if ((keystatus[0xc8] > 0) && (tilenum >= (xtiles<<gettilezoom)))			tilenum-=(xtiles<<gettilezoom), keystatus[0xc8] = 0;		if ((keystatus[0xd0] > 0) && (tilenum < MAXTILES-(xtiles<<gettilezoom)))			tilenum+=(xtiles<<gettilezoom), keystatus[0xd0] = 0;		if ((keystatus[0xc9] > 0) && (tilenum >= (xtiles<<gettilezoom)))		{			tilenum-=(tottiles<<(gettilezoom<<1));			if (tilenum < 0) tilenum = 0;			keystatus[0xc9] = 0;		}		if ((keystatus[0xd1] > 0) && (tilenum < MAXTILES-(xtiles<<gettilezoom)))		{			tilenum+=(tottiles<<(gettilezoom<<1));			if (tilenum >= MAXTILES) tilenum = MAXTILES-1;			keystatus[0xd1] = 0;		}		if (keystatus[0x2f] > 0)   /* V */		{			keystatus[0x2f] = 0;			if (tilenum < localartlookupnum)				tilenum = localartlookup[tilenum];			else				tilenum = 0;			localartlookupnum = MAXTILES;			for(i=0;i<MAXTILES;i++)				localartlookup[i] = i;		}		if (keystatus[0x22] > 0)       /* G (goto) */		{			if (tilenum < localartlookupnum)         /* Automatically press 'V' */				tilenum = localartlookup[tilenum];			else				tilenum = 0;			localartlookupnum = MAXTILES;			for(i=0;i<MAXTILES;i++)				localartlookup[i] = i;			keystatus[0x22] = 0;			j = tilenum;			while (keystatus[1] == 0)			{				drawtilescreen(topleft,tilenum);				if ((vidoption != 2) && ((vidoption != 1) || (vgacompatible == 1))) limitrate();				sprintf(snotbuf,"Goto tile: %ld_ ",j);				printext256(0,0,whitecol,0,snotbuf,0);				nextpage();				for(k=0;k<10;k++)					if (keystatus[((k+9)%10)+2] > 0)					{						keystatus[((k+9)%10)+2] = 0;						i = (j*10)+k;						if (i < MAXTILES) j = i;					}				if (keystatus[0xe] > 0)				{					keystatus[0xe] = 0;					j /= 10;				}				if (keystatus[0x1c] > 0)				{					keystatus[0x1c] = 0;					tilenum = j;					break;				}			}		}		while (tilenum < topleft) topleft -= (xtiles<<gettilezoom);		while (tilenum >= topleft+(tottiles<<(gettilezoom<<1))) topleft += (xtiles<<gettilezoom);		if (topleft < 0) topleft = 0;		if (topleft > MAXTILES-(tottiles<<(gettilezoom<<1))) topleft = MAXTILES-(tottiles<<(gettilezoom<<1));	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性一级生活| 欧美久久久久久久久久| 欧美白人最猛性xxxxx69交| 成人免费在线观看入口| 激情综合网激情| 99视频在线精品| 91麻豆精品久久久久蜜臀| 亚洲卡通动漫在线| 色婷婷综合久久久中文一区二区| 中文乱码免费一区二区 | 国产精品久久久一本精品| 中文字幕一区二| www.亚洲国产| 自拍偷在线精品自拍偷无码专区| 波多野结衣亚洲一区| 亚洲欧美自拍偷拍色图| 色哟哟国产精品免费观看| 日韩久久精品一区| 久草在线在线精品观看| 欧美精品一区二区三区在线| 韩国毛片一区二区三区| 26uuu国产在线精品一区二区| 六月婷婷色综合| 日韩三级在线观看| 麻豆精品久久久| 日韩一区二区免费在线观看| 手机精品视频在线观看| 91亚洲精品久久久蜜桃| 中文字幕免费一区| 国产一区二区三区四区五区美女 | 欧美日韩国产综合视频在线观看| 成人欧美一区二区三区黑人麻豆| 成人av午夜影院| 亚洲青青青在线视频| 在线观看亚洲精品| 偷偷要91色婷婷| 福利一区二区在线观看| 国产欧美日韩亚州综合| 国产成人免费视频网站| 欧美激情中文不卡| 91在线一区二区三区| 国产精品三级视频| 国产一区日韩二区欧美三区| 亚洲精品一区二区三区影院| 韩国三级电影一区二区| 久久久高清一区二区三区| 国产呦萝稀缺另类资源| 久久午夜免费电影| 国产精品亚洲а∨天堂免在线| 久久综合久久综合九色| 亚洲天堂免费看| 欧美精选在线播放| 蜜桃视频第一区免费观看| 久久精品亚洲国产奇米99| 成人国产一区二区三区精品| 亚洲激情在线激情| 欧美亚洲图片小说| 另类小说一区二区三区| 国产午夜精品久久久久久免费视| 成人黄色综合网站| 亚洲第一福利一区| 2021久久国产精品不只是精品| eeuss国产一区二区三区| 亚洲综合区在线| 高清视频一区二区| 亚洲精品乱码久久久久| 69堂成人精品免费视频| 国产精品一区二区免费不卡 | 欧美一级片在线观看| 国产一区二区视频在线播放| 亚洲欧洲性图库| 在线播放日韩导航| 国产精品主播直播| 一区二区在线观看av| 欧美一区二区三区人| 日本亚洲三级在线| 欧美激情一区二区三区蜜桃视频 | 国产精品美女一区二区在线观看| 色先锋资源久久综合| 首页欧美精品中文字幕| 国产色婷婷亚洲99精品小说| 色老汉av一区二区三区| 麻豆成人久久精品二区三区红| 国产精品欧美久久久久无广告| 欧美另类久久久品| 国产真实乱对白精彩久久| 一片黄亚洲嫩模| 欧美一区二区播放| 99精品视频在线播放观看| 裸体歌舞表演一区二区| 欧美大胆人体bbbb| 99视频超级精品| 精品一区免费av| 亚洲亚洲人成综合网络| 久久视频一区二区| 精品污污网站免费看| 国产精品99久久久久久有的能看| 亚洲综合图片区| 欧美高清在线一区| 日韩欧美中文字幕公布| 不卡区在线中文字幕| 亚洲精品视频免费观看| 欧美一区二区三区在线看| 不卡av免费在线观看| 婷婷中文字幕综合| 欧洲国内综合视频| 国产乱对白刺激视频不卡| 亚洲一二三级电影| 久久影院视频免费| 欧美日本一区二区在线观看| 99re这里只有精品6| 国产综合色产在线精品| 午夜欧美2019年伦理| 亚洲美女区一区| 国产日韩av一区| 日韩午夜激情视频| 欧美日韩在线综合| 99精品视频一区二区| 国产在线播放一区三区四| 欧美aa在线视频| 亚洲成在人线免费| 日韩欧美一级二级三级| 欧美肥大bbwbbw高潮| 成人av手机在线观看| 美腿丝袜亚洲一区| 亚洲超碰精品一区二区| 亚洲综合一二区| 最近中文字幕一区二区三区| 久久一二三国产| 日韩你懂的在线观看| 91.com视频| 欧美色区777第一页| 色呦呦国产精品| 91尤物视频在线观看| 成人激情动漫在线观看| 国产ts人妖一区二区| 国产一区美女在线| 国产久卡久卡久卡久卡视频精品| 国产精品中文欧美| 国产91在线观看| 成人福利电影精品一区二区在线观看| 国产一区二区三区免费在线观看| 国产一区不卡在线| 激情综合色播五月| 精品一区二区三区影院在线午夜| 日韩二区在线观看| 日韩高清一区在线| 日本人妖一区二区| 日本一区中文字幕| 久久精品国产999大香线蕉| 免费一级片91| 黄色精品一二区| 久久精品久久精品| 午夜私人影院久久久久| 亚洲午夜免费视频| 亚洲成人在线观看视频| 天天综合网 天天综合色| 亚洲福利一区二区三区| 偷拍自拍另类欧美| 青娱乐精品在线视频| 久久精品国产网站| 国内精品久久久久影院薰衣草| 日本三级亚洲精品| 国产一区二区成人久久免费影院| 国产一区二区影院| 成人动漫精品一区二区| 91亚洲男人天堂| 欧美少妇性性性| 日韩久久精品一区| 欧美国产日韩一二三区| 亚洲欧美日韩中文播放| 国产亚洲欧美色| 久久精品视频网| 综合色中文字幕| 亚洲精品视频免费观看| 日韩电影免费在线观看网站| 综合亚洲深深色噜噜狠狠网站| 一区二区三区四区高清精品免费观看 | a级高清视频欧美日韩| 欧美在线观看视频一区二区| 日韩欧美国产麻豆| 中文字幕亚洲不卡| 午夜精品一区二区三区三上悠亚| 亚洲品质自拍视频| 久久不见久久见免费视频1| 91丨九色porny丨蝌蚪| 日韩一区国产二区欧美三区| 国产精品沙发午睡系列990531| 亚洲成人在线免费| 成人性视频免费网站| 欧美群妇大交群的观看方式| 久久伊99综合婷婷久久伊| 亚洲欧美日韩久久精品| 蜜桃av一区二区三区| 成av人片一区二区| 欧美日韩国产123区| 国产精品毛片久久久久久| 五月天一区二区三区| 国产伦精品一区二区三区在线观看 | 精品中文av资源站在线观看|