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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bstub.c

?? 小型游戲引擎
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * "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 <fcntl.h>#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <memory.h>#include <stdlib.h>#include "engine.h"#include "platform.h"#include "build.h"#include "pragmas.h"#include "names.h"#include "bstub.h"#include "cache1d.h"  /* rcg05232001 need groupfile support. */#include "display.h"  /* rcg05232001 need some "vesa" routines. *//* !!! temporary externs. */extern long total_rendered_frames, total_render_time;extern char keystatus[256];static char tempbuf[256];extern long qsetmode;extern short searchsector, searchwall, searchstat;extern long zmode, kensplayerheight;extern short defaultspritecstat;extern short temppicnum, tempcstat, templotag, temphitag, tempextra;extern char tempshade, temppal, tempxrepeat, tempyrepeat;extern char somethingintab;#define NUMOPTIONS 8#define NUMKEYS 19static long vesares[13][2] = {	{320,200},{360,200},{320,240},{360,240},{320,400},	{360,400},{640,350},{640,400},{640,480},{800,600},	{1024,768},{1280,1024},{1600,1200}};static char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0};static char keys[NUMKEYS] ={	0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39,	0x1e,0x2c,0xd1,0xc9,0x33,0x34,	0x9c,0x1c,0xd,0xc,0xf,};extern char buildkeys[NUMKEYS];extern long frameplace, xdimenscale, ydimen;extern long posx, posy, posz, horiz;extern short ang, cursectnum;static long hang = 0;extern long stretchhline(long,long,long,long,long,long);#ifdef PLATFORM_DOS#pragma aux stretchhline parm [eax][ebx][ecx][edx][esi][edi];#endif#ifdef PLATFORM_DOSextern void printext16(long xpos, long ypos, short col, short backcol,			char name[82], char fontsize);#define statusbar_printext16 printext16#define statusbar_printext16_noupdate printext16#elseextern void statusbar_printext16(long xpos, long ypos, short col, short backcol, char name[82], char fontsize);#endif/* * Detecting 2D / 3D mode: *    qsetmode is 200 in 3D mode *    qsetmode is 350/480 in 2D mode *  * You can read these variables when F5-F8 is pressed in 3D mode only: *  *    If (searchstat == 0)  WALL        searchsector=sector, searchwall=wall *    If (searchstat == 1)  CEILING     searchsector=sector *    If (searchstat == 2)  FLOOR       searchsector=sector *    If (searchstat == 3)  SPRITE      searchsector=sector, searchwall=sprite *    If (searchstat == 4)  MASKED WALL searchsector=sector, searchwall=wall *  *    searchsector is the sector of the selected item for all 5 searchstat's *  *    searchwall is undefined if searchstat is 1 or 2 *    searchwall is the wall if searchstat = 0 or 4 *    searchwall is the sprite if searchstat = 3 (Yeah, I know - it says wall, *                                       but trust me, it's the sprite number) */long ofinetotalclock, ototalclock, averagefps;#define AVERAGEFRAMES 32static long frameval[AVERAGEFRAMES], framecnt = 0;#ifdef PLATFORM_DOSvoid inittimer42(void);#pragma aux inittimer42 =\	"in al, 0x61",\	"or al, 1",\	"out 0x61, al",\	"mov al, 0xb4",\	"out 0x43, al",\	"xor al, al",\	"out 0x42, al",\	"out 0x42, al",\	modify exact [eax]\void uninittimer42(void);#pragma aux uninittimer42 =\	"in al, 0x61",\	"and al, 252",\	"out 0x61, al",\	modify exact [eax]\long gettimer42(void);#pragma aux gettimer42 =\	"mov al, 0x84",\	"out 0x43, al",\	"in al, 0x42",\	"shl eax, 24",\	"in al, 0x42",\	"rol eax, 8",\	modify [eax]#else  void inittimer42(void) {}  void uninittimer42(void) {}  int gettimer42(void) { return(0); }#endif/* rcg05232001 These are defined in build.c ... */void editinput(void);void clearmidstatbar16(void);short getnumber16(char namestart[80], short num, long maxnumber);void printmessage16(char name[82]);/* rcg05232001 much thanks to TerminX (Mapster) for the lookup.dat info! */static int use_palette_lookup_file(const char *lookup_file){    int retval = 0;    unsigned char *tempbuf = NULL;    unsigned char *ptr = NULL;    unsigned char num_palettes = 0;    int i = 0;    int bytes = 0;    long in = kopen4load(lookup_file, 0);    if (in != -1)    {        if (kread(in, &num_palettes, 1) == 1)        {            bytes = ( ((int) num_palettes) * 257 );            tempbuf = (unsigned char *) malloc((size_t) bytes);            if (tempbuf != NULL)            {                if (kread(in, tempbuf, bytes) == bytes)                {                    for (i = 0, ptr = tempbuf; i < num_palettes; i++)                    {                        makepalookup(*ptr, (char *) ptr + 1, 0, 0, 0, 1);                        ptr += 257;                    } /* for */                    retval = 1;  /* success. */                } /* if */                free(tempbuf);            } /* if */        } /* if */        kclose(in);    } /* if */    return(retval);} /* use_lookup_dat */void ExtInit(void){	long i, fil;    const char *grpname = getenv("BUILD_GROUPFILE");	/*    printf("------------------------------------------------------------------------------\n");	printf("   BUILD.EXE copyright(c) 1996 by Ken Silverman.  You are granted the\n");	printf("   right to use this software for your personal use only.  This is a\n");	printf("   special version to be used with \"Happy Fun KenBuild\" and may not work\n");	printf("   properly with other Build engine games.  Please refer to license.doc\n");	printf("   for distribution rights\n");	printf("------------------------------------------------------------------------------\n");	getch();	*/        /* Now we check for an envr variable first, for Duke/SW/etc groups. */    if (grpname == NULL)        grpname = "stuff.dat";        /* rcg08122000 panic if groupfile is missing. */	if (initgroupfile(grpname) < 0)    {        fprintf(stderr, "BUILDGRP: Cannot open \"%s\"! Aborting...\n", grpname);        exit(55);    } /* if */	if ((fil = open("setup.dat",O_BINARY|O_RDWR,S_IREAD)) != -1)	{		read(fil,&option[0],NUMOPTIONS);		read(fil,&keys[0],NUMKEYS);		memcpy((void *)buildkeys,(void *)keys,NUMKEYS);   /* Trick to make build use setup.dat keys */		close(fil);	}	if (option[4] > 0) option[4] = 0;	initmouse();	initengine();	vidoption = option[0]; xdim = vesares[option[6]&15][0]; ydim = vesares[option[6]&15][1];		/*         * You can load your own palette lookup tables here if you just		 * copy the right code! (sez Ken).         *         * We try to use a Duke3D lookup.dat first. If that fails, then         *  we revert to KenBuild's original method.  (sez Ryan).         */    if (!use_palette_lookup_file("lookup.dat"))    {    	for(i=0;i<256;i++)    		tempbuf[i] = ((i+32)&255);  /* remap colors for screwy palette sectors */    	makepalookup(16,tempbuf,0,0,0,1);    } /* if */	kensplayerheight = 32;	zmode = 0;	defaultspritecstat = 0;	pskyoff[0] = 0; pskyoff[1] = 0; pskybits = 1;}void ExtUnInit(void){	uninittimer42();	uninitgroupfile();}static long daviewingrange, daaspect, horizval1, horizval2;void ExtPreCheckKeys(void){	long cosang, sinang, dx, dy, mindx, i;	if (keystatus[0x3e])  /* F4 - screen re-size */	{		keystatus[0x3e] = 0;			/* cycle through all vesa modes, then screen-buffer mode */		getvalidvesamodes();		if (vidoption == 1)		{			for(i=0;i<validmodecnt;i++)				if ((validmodexdim[i] == xdim) && (validmodeydim[i] == ydim))				{					if (i == validmodecnt-1)						setgamemode(2,320L,200L);					else						setgamemode(1,validmodexdim[i+1],validmodeydim[i+1]);					break;				}		}		else if (validmodecnt > 0)			setgamemode(1,validmodexdim[0],validmodeydim[0]);		inittimer42();  /* Must init here because VESA 0x4F02 messes timer 2 */	}	if (keystatus[0x2a]|keystatus[0x36])	{		if (keystatus[0xcf]) hang = max(hang-1,-182);		if (keystatus[0xc7]) hang = min(hang+1,182);	}	else	{		if (keystatus[0xcf]) hang = max(hang-8,-182);		if (keystatus[0xc7]) hang = min(hang+8,182);	}	if (keystatus[0x4c]) { hang = 0; horiz = 100; }	if (hang != 0)	{		walock[4094] = 255;		if (waloff[4094] == 0) allocache(&waloff[4094],240L*384L,(unsigned char *) &walock[4094]);		setviewtotile(4094,240L,384L);		cosang = sintable[(hang+512)&2047];		sinang = sintable[hang&2047];		dx = dmulscale1(320,cosang,200,sinang); mindx = dx;		dy = dmulscale1(-200,cosang,320,sinang);		horizval1 = dy*(320>>1)/dx-1;		dx = dmulscale1(320,cosang,-200,sinang); mindx = min(dx,mindx);		dy = dmulscale1(200,cosang,320,sinang);		horizval2 = dy*(320>>1)/dx+1;		daviewingrange = scale(65536,16384*(xdim>>1),mindx-16);		daaspect = scale(daviewingrange,scale(320,tilesizx[4094],tilesizy[4094]),horizval2+6-horizval1);		setaspect(daviewingrange,scale(daaspect,ydim*320,xdim*200));		horiz = 100-divscale15(horizval1+horizval2,daviewingrange);	}}#define MAXVOXMIPS 5extern char *voxoff[][MAXVOXMIPS];void ExtAnalyzeSprites(void){	long i, *longptr;	spritetype *tspr;	for(i=0,tspr=&tsprite[0];i<spritesortcnt;i++,tspr++)	{		switch(tspr->picnum)		{			case PLAYER:				if (!voxoff[0][0]) qloadkvx(0L,"voxel000.kvx");				tspr->cstat |= 48;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久老虎| 欧美性感一类影片在线播放| 亚洲视频中文字幕| 91精品国产综合久久蜜臀| 国产福利视频一区二区三区| 亚洲午夜激情av| 国产日韩欧美综合在线| 欧美日本国产视频| 成人深夜在线观看| 麻豆精品在线看| 一区二区三区中文字幕在线观看| 精品国产一区二区亚洲人成毛片| 欧美在线一区二区| 国产aⅴ综合色| 精品无人区卡一卡二卡三乱码免费卡 | 日韩一区二区中文字幕| 99国产精品一区| 激情图区综合网| 五月激情丁香一区二区三区| 最近中文字幕一区二区三区| 久久久九九九九| 欧美一级久久久| 欧美日韩一区在线| 不卡的av在线播放| 国产美女精品人人做人人爽| 久久国产综合精品| 午夜精品免费在线| 亚洲一卡二卡三卡四卡| 国产精品久久久久影院老司 | 亚洲精品美腿丝袜| 国产精品你懂的在线欣赏| 日韩欧美国产1| 91精品国产色综合久久不卡蜜臀 | 国产精品理论在线观看| 精品第一国产综合精品aⅴ| 宅男在线国产精品| 欧美一区二区高清| 在线播放91灌醉迷j高跟美女| 欧美在线你懂得| 91女厕偷拍女厕偷拍高清| 北岛玲一区二区三区四区| 国产乱码精品一区二区三 | 高清成人免费视频| 国产一区视频导航| 国产一区三区三区| 成人一区二区视频| 国产99一区视频免费| 波多野结衣中文字幕一区| 成人网男人的天堂| 91小视频在线观看| 色婷婷久久久久swag精品| 在线观看精品一区| 欧美日韩成人综合在线一区二区| 欧美精品欧美精品系列| 欧美日韩成人综合天天影院| 日韩视频在线一区二区| 日韩精品在线网站| 国产欧美日韩在线看| 国产精品拍天天在线| 日韩毛片高清在线播放| 一区二区三区日韩欧美| 婷婷综合久久一区二区三区| 日韩主播视频在线| 激情欧美日韩一区二区| 激情伊人五月天久久综合| 国产成人aaa| 99久精品国产| 欧美精品少妇一区二区三区| 欧美精品色综合| 国产午夜精品久久久久久久| 亚洲天堂中文字幕| 亚洲制服丝袜一区| 老司机午夜精品| 成人一级片网址| 欧美综合天天夜夜久久| 日韩一区二区三区电影在线观看| 久久久久久97三级| 17c精品麻豆一区二区免费| 亚洲一区二区三区四区的| 青草国产精品久久久久久| 成人少妇影院yyyy| 欧美三级日本三级少妇99| 日韩免费视频一区| 中文字幕一区二区三| 亚洲成人免费视| 国产一区二区三区不卡在线观看| 99久久精品费精品国产一区二区| 欧美高清性hdvideosex| 久久精品人人做人人综合 | 裸体歌舞表演一区二区| 成人中文字幕电影| 欧美一区二区日韩一区二区| 国产精品国产三级国产有无不卡 | 久久国产尿小便嘘嘘| 99视频一区二区| 欧美一区二区三级| 亚洲精品亚洲人成人网| 精品一区二区三区在线观看国产 | 国产精品一区二区三区乱码| 99久久er热在这里只有精品15| 欧美xxxx老人做受| 成人免费在线播放视频| 国产伦精品一区二区三区免费| 欧美中文一区二区三区| 久久久久久久久蜜桃| 亚洲一区视频在线| 国产成人丝袜美腿| 欧美嫩在线观看| 亚洲人成在线观看一区二区| 韩国欧美国产一区| 欧美视频在线一区| **欧美大码日韩| 国产成人精品亚洲777人妖 | 奇米影视一区二区三区| 91亚洲精华国产精华精华液| 国产亚洲成av人在线观看导航| 偷拍亚洲欧洲综合| 欧美日韩在线一区二区| 国产精品久久久久久久第一福利| 久久91精品国产91久久小草| 欧美日韩国产中文| 一区二区免费视频| 99精品桃花视频在线观看| 精品国产凹凸成av人导航| 男男视频亚洲欧美| 91精品国产综合久久久蜜臀图片| 一二三区精品视频| 99vv1com这只有精品| 欧美国产成人在线| 国产激情一区二区三区桃花岛亚洲| 欧美videos中文字幕| 蜜臀av性久久久久蜜臀aⅴ | 欧美在线观看视频一区二区| 综合激情成人伊人| 成人手机在线视频| 国产精品国产三级国产有无不卡| av中文字幕亚洲| 亚洲欧洲精品一区二区精品久久久| 国产精品88888| 久久免费看少妇高潮| 国产精品性做久久久久久| 久久久久成人黄色影片| 国产精一区二区三区| 久久精品一区二区三区不卡牛牛 | 亚洲乱码国产乱码精品精小说 | 97国产一区二区| 国产精品高潮呻吟| 91偷拍与自偷拍精品| 亚洲精选视频免费看| 欧美日韩激情一区二区三区| 日韩精品国产欧美| 日韩一区二区三区精品视频| 国产一区二区三区四| 欧美极品少妇xxxxⅹ高跟鞋| 丁香六月综合激情| 国产精品久久久久久久午夜片| 91丨九色丨尤物| 亚洲风情在线资源站| 欧美一区午夜视频在线观看| 麻豆精品国产传媒mv男同| 精品国产髙清在线看国产毛片| 高清不卡一区二区在线| 中文字幕一区三区| 欧美日韩国产综合草草| 激情亚洲综合在线| 国产精品二三区| 欧美色精品在线视频| 美脚の诱脚舐め脚责91| 亚洲国产高清aⅴ视频| 91久久精品一区二区| 午夜av电影一区| 久久久亚洲综合| 91亚洲精品乱码久久久久久蜜桃 | 国内成人精品2018免费看| 欧美国产综合色视频| 日本韩国视频一区二区| 肉色丝袜一区二区| 久久久精品黄色| 在线免费观看不卡av| 免费人成在线不卡| 国产精品福利影院| 91精品国产乱| 成人黄动漫网站免费app| 亚洲成av人片在www色猫咪| 日韩精品中文字幕在线不卡尤物| 不卡在线视频中文字幕| 亚洲第一成人在线| 国产亚洲成av人在线观看导航| 欧美日韩精品免费观看视频| 久久精品国产色蜜蜜麻豆| 亚洲欧美日韩精品久久久久| 日韩午夜在线观看| 99国产精品99久久久久久| 久久精品国产精品亚洲精品| 亚洲欧美日韩在线| 日韩亚洲国产中文字幕欧美| 日本道在线观看一区二区| 国产精品一区二区黑丝| 天堂一区二区在线免费观看| 国产精品色哟哟网站|