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

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

?? r_data.c

?? 游戲類程序源代碼---WinDoom 3D源程序.zip
?? C
?? 第 1 頁 / 共 2 頁
字號:
    int			offset;
    int			maxoff;
    int			maxoff2;
    int			numtextures1;
    int			numtextures2;

    int*		directory;
    
    int			temp1;
    int			temp2;
    int			temp3;

    
    // Load the patch names from pnames.lmp.
    name[8] = 0;	
    names = W_CacheLumpName ("PNAMES", PU_STATIC);
    nummappatches = LONG ( *((int *)names) );
    name_p = names+4;
    patchlookup = alloca (nummappatches*sizeof(*patchlookup));
    
    for (i=0 ; i<nummappatches ; i++)
    {
	strncpy (name,name_p+i*8, 8);
	patchlookup[i] = W_CheckNumForName (name);
    }
    Z_Free (names);
    
    // Load the map texture definitions from textures.lmp.
    // The data is contained in one or two lumps,
    //  TEXTURE1 for shareware, plus TEXTURE2 for commercial.
    maptex = maptex1 = W_CacheLumpName ("TEXTURE1", PU_STATIC);
    numtextures1 = LONG(*maptex);
    maxoff = W_LumpLength (W_GetNumForName ("TEXTURE1"));
    directory = maptex+1;
	
    if (W_CheckNumForName ("TEXTURE2") != -1)
    {
	maptex2 = W_CacheLumpName ("TEXTURE2", PU_STATIC);
	numtextures2 = LONG(*maptex2);
	maxoff2 = W_LumpLength (W_GetNumForName ("TEXTURE2"));
    }
    else
    {
	maptex2 = NULL;
	numtextures2 = 0;
	maxoff2 = 0;
    }
    numtextures = numtextures1 + numtextures2;
	
    textures = Z_Malloc (numtextures*4, PU_STATIC, 0);
    texturecolumnlump = Z_Malloc (numtextures*4, PU_STATIC, 0);
    texturecolumnofs = Z_Malloc (numtextures*4, PU_STATIC, 0);
    texturecomposite = Z_Malloc (numtextures*4, PU_STATIC, 0);
    texturecompositesize = Z_Malloc (numtextures*4, PU_STATIC, 0);
    texturewidthmask = Z_Malloc (numtextures*4, PU_STATIC, 0);
    textureheight = Z_Malloc (numtextures*4, PU_STATIC, 0);

    totalwidth = 0;
    
    //	Really complex printing shit...
    temp1 = W_GetNumForName ("S_START");  // P_???????
    temp2 = W_GetNumForName ("S_END") - 1;
    temp3 = ((temp2-temp1+63)/64) + ((numtextures+63)/64);
    sprintf(MsgText,"[");
    WriteDebug(MsgText);
    for (i = 0; i < temp3; i++)
	sprintf(MsgText," ");
    WriteDebug(MsgText);
    sprintf(MsgText,"         ]");
    WriteDebug(MsgText);
    for (i = 0; i < temp3; i++)
	sprintf(MsgText,"\x8");
    WriteDebug(MsgText);
    sprintf(MsgText,"\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8");	
    WriteDebug(MsgText);
	
    for (i=0 ; i<numtextures ; i++, directory++)
    {
	if (!(i&63))
       {
	    sprintf (MsgText,".");
        WriteDebug(MsgText);
       }

	if (i == numtextures1)
	{
	    // Start looking in second texture file.
	    maptex = maptex2;
	    maxoff = maxoff2;
	    directory = maptex+1;
	}
		
	offset = LONG(*directory);

	if (offset > maxoff)
	    I_Error ("R_InitTextures: bad texture directory");
	
	mtexture = (maptexture_t *) ( (byte *)maptex + offset);

	texture = textures[i] =
	    Z_Malloc (sizeof(texture_t)
		      + sizeof(texpatch_t)*(SHORT(mtexture->patchcount)-1),
		      PU_STATIC, 0);
	
	texture->width = SHORT(mtexture->width);
	texture->height = SHORT(mtexture->height);
	texture->patchcount = SHORT(mtexture->patchcount);

	memcpy (texture->name, mtexture->name, sizeof(texture->name));
	mpatch = &mtexture->patches[0];
	patch = &texture->patches[0];

	for (j=0 ; j<texture->patchcount ; j++, mpatch++, patch++)
	{
	    patch->originx = SHORT(mpatch->originx);
	    patch->originy = SHORT(mpatch->originy);
	    patch->patch = patchlookup[SHORT(mpatch->patch)];
	    if (patch->patch == -1)
	    {
		I_Error ("R_InitTextures: Missing patch in texture %s",
			 texture->name);
	    }
	}		
	texturecolumnlump[i] = Z_Malloc (texture->width*2, PU_STATIC,0);
	texturecolumnofs[i] = Z_Malloc (texture->width*2, PU_STATIC,0);

	j = 1;
	while (j*2 <= texture->width)
	    j<<=1;

	texturewidthmask[i] = j-1;
	textureheight[i] = texture->height<<FRACBITS;
		
	totalwidth += texture->width;
    }

    Z_Free (maptex1);
    if (maptex2)
	Z_Free (maptex2);
    
    // Precalculate whatever possible.	
    for (i=0 ; i<numtextures ; i++)
	R_GenerateLookup (i);
    
    // Create translation table for global animation.
    texturetranslation = Z_Malloc ((numtextures+1)*4, PU_STATIC, 0);
    
    for (i=0 ; i<numtextures ; i++)
	texturetranslation[i] = i;
}



//
// R_InitFlats
//
void R_InitFlats (void)
{
    int		i;
	
    firstflat = W_GetNumForName ("F_START") + 1;
    lastflat = W_GetNumForName ("F_END") - 1;
    numflats = lastflat - firstflat + 1;
	
    // Create translation table for global animation.
    flattranslation = Z_Malloc ((numflats+1)*4, PU_STATIC, 0);
    
    for (i=0 ; i<numflats ; i++)
	flattranslation[i] = i;
}


//
// R_InitSpriteLumps
// Finds the width and hoffset of all sprites in the wad,
//  so the sprite does not need to be cached completely
//  just for having the header info ready during rendering.
//
void R_InitSpriteLumps (void)
{
    int		i;
    patch_t	*patch;
	
    firstspritelump = W_GetNumForName ("S_START") + 1;
    lastspritelump = W_GetNumForName ("S_END") - 1;
    
    numspritelumps = lastspritelump - firstspritelump + 1;
    spritewidth = Z_Malloc (numspritelumps*4, PU_STATIC, 0);
    spriteoffset = Z_Malloc (numspritelumps*4, PU_STATIC, 0);
    spritetopoffset = Z_Malloc (numspritelumps*4, PU_STATIC, 0);
	
    for (i=0 ; i< numspritelumps ; i++)
    {
	if (!(i&63))
       {
	    sprintf (MsgText,".");
        WriteDebug(MsgText);
       }

	patch = W_CacheLumpNum (firstspritelump+i, PU_CACHE);
	spritewidth[i] = SHORT(patch->width)<<FRACBITS;
	spriteoffset[i] = SHORT(patch->leftoffset)<<FRACBITS;
	spritetopoffset[i] = SHORT(patch->topoffset)<<FRACBITS;
    }
}



//
// R_InitColormaps
//
void R_InitColormaps (void)
{
    int	lump, length;
    
    // Load in the light tables, 
    //  256 byte align tables.
    lump = W_GetNumForName("COLORMAP"); 
    length = W_LumpLength (lump) + 255; 
    colormaps = Z_Malloc (length, PU_STATIC, 0); 
    colormaps = (byte *)( ((int)colormaps + 255)&~0xff); 
    W_ReadLump (lump,colormaps); 
}



//
// R_InitData
// Locates all the lumps
//  that will be used by all views
// Must be called after W_Init.
//
void R_InitData (void)
{
    R_InitTextures ();
    sprintf (MsgText,"\nInitTextures");
    WriteDebug(MsgText);
    R_InitFlats ();
    sprintf (MsgText,"\nInitFlats");
    WriteDebug(MsgText);
    R_InitSpriteLumps ();
    sprintf (MsgText,"\nInitSprites");
    WriteDebug(MsgText);
    R_InitColormaps ();
    sprintf (MsgText,"\nInitColormaps");
    WriteDebug(MsgText);
}



//
// R_FlatNumForName
// Retrieval, get a flat number for a flat name.
//
int R_FlatNumForName (char* name)
{
    int		i;
    char	namet[9];

    i = W_CheckNumForName (name);

    if (i == -1)
    {
	namet[8] = 0;
	memcpy (namet, name,8);
	I_Error ("R_FlatNumForName: %s not found",namet);
    }
    return i - firstflat;
}




//
// R_CheckTextureNumForName
// Check whether texture is available.
// Filter out NoTexture indicator.
//
int	R_CheckTextureNumForName (char *name)
{
    int		i;
    char    tname[10];

    // "NoTexture" marker.
    if (name[0] == '-')		
	return 0;

    strncpy(tname, name, 8);
    strupr(tname);

    for (i=0 ; i<numtextures ; i++)
	if (!strncasecmp (textures[i]->name, tname, 8) )
	    return i;
		
    return -1;
}



//
// R_TextureNumForName
// Calls R_CheckTextureNumForName,
//  aborts with error message.
//
int	R_TextureNumForName (char* name)
{
    int		i;
	
    i = R_CheckTextureNumForName (name);

    if (i==-1)
    {
	I_Error ("R_TextureNumForName: %s not found",
		 name);
    }
    return i;
}




//
// R_PrecacheLevel
// Preloads all relevant graphics for the level.
//
int		flatmemory;
int		texturememory;
int		spritememory;

void R_PrecacheLevel (void)
{
    char*		flatpresent;
    char*		texturepresent;
    char*		spritepresent;

    int			i;
    int			j;
    int			k;
    int			lump;
    
    texture_t*		texture;
    thinker_t*		th;
    spriteframe_t*	sf;

    if (demoplayback)
	return;
    
    // Precache flats.
    flatpresent = alloca(numflats);
    memset (flatpresent,0,numflats);	

    for (i=0 ; i<numsectors ; i++)
    {
	flatpresent[sectors[i].floorpic] = 1;
	flatpresent[sectors[i].ceilingpic] = 1;
    }
	
    flatmemory = 0;

    for (i=0 ; i<numflats ; i++)
    {
	if (flatpresent[i])
	{
	    lump = firstflat + i;
	    flatmemory += lumpinfo[lump].size;
	    W_CacheLumpNum(lump, PU_CACHE);
	}
    }
    
    // Precache textures.
    texturepresent = alloca(numtextures);
    memset (texturepresent,0, numtextures);
	
    for (i=0 ; i<numsides ; i++)
    {
	texturepresent[sides[i].toptexture] = 1;
	texturepresent[sides[i].midtexture] = 1;
	texturepresent[sides[i].bottomtexture] = 1;
    }

    // Sky texture is always present.
    // Note that F_SKY1 is the name used to
    //  indicate a sky floor/ceiling as a flat,
    //  while the sky texture is stored like
    //  a wall texture, with an episode dependend
    //  name.
    texturepresent[skytexture] = 1;
	
    texturememory = 0;
    for (i=0 ; i<numtextures ; i++)
    {
	if (!texturepresent[i])
	    continue;

	texture = textures[i];
	
	for (j=0 ; j<texture->patchcount ; j++)
	{
	    lump = texture->patches[j].patch;
	    texturememory += lumpinfo[lump].size;
	    W_CacheLumpNum(lump , PU_CACHE);
	}
    }
    
    // Precache sprites.
    spritepresent = alloca(numsprites);
    memset (spritepresent,0, numsprites);
	
    for (th = thinkercap.next ; th != &thinkercap ; th=th->next)
    {
	if (th->function.acp1 == (actionf_p1)P_MobjThinker)
	    spritepresent[((mobj_t *)th)->sprite] = 1;
    }
	
    spritememory = 0;
    for (i=0 ; i<numsprites ; i++)
    {
	if (!spritepresent[i])
	    continue;

	for (j=0 ; j<sprites[i].numframes ; j++)
	{
	    sf = &sprites[i].spriteframes[j];
	    for (k=0 ; k<8 ; k++)
	    {
		lump = firstspritelump + sf->lump[k];
		spritememory += lumpinfo[lump].size;
		W_CacheLumpNum(lump , PU_CACHE);
	    }
	}
    }
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说综合欧美亚洲| 麻豆精品国产传媒mv男同| 精品国产免费久久| 日韩一级完整毛片| 91精品国产入口| 欧美日韩亚洲综合在线| 欧美狂野另类xxxxoooo| 91精品婷婷国产综合久久性色 | 日本一区二区成人| 国产无一区二区| 国产精品素人一区二区| 国产精品久久久久7777按摩| 亚洲日本电影在线| 一级中文字幕一区二区| 日本vs亚洲vs韩国一区三区| 精品综合久久久久久8888| 国产精品主播直播| 91亚洲男人天堂| 欧美乱妇23p| 亚洲国产高清不卡| 亚洲精品视频免费观看| 丝袜脚交一区二区| 国产传媒欧美日韩成人| 一本久道中文字幕精品亚洲嫩| 欧美视频三区在线播放| 久久先锋资源网| 亚洲欧美区自拍先锋| 五月综合激情婷婷六月色窝| 国内精品嫩模私拍在线| 91视视频在线直接观看在线看网页在线看 | 亚洲视频香蕉人妖| 午夜国产精品一区| 成人午夜精品在线| 在线播放91灌醉迷j高跟美女 | 亚洲视频资源在线| 久久国产综合精品| 一本到不卡精品视频在线观看| 欧美一级片免费看| 亚洲猫色日本管| 国产成人高清在线| 欧美一区二区播放| 一区二区三区中文字幕| 国产一区二区主播在线| 欧美男人的天堂一二区| 国产精品美女久久久久av爽李琼| 午夜伊人狠狠久久| 91国产丝袜在线播放| 中文字幕欧美激情| 韩国视频一区二区| 3d动漫精品啪啪一区二区竹菊| 国产精品视频一二三区| 国产一区二区精品在线观看| 欧美一区在线视频| 亚洲成人黄色影院| 在线精品观看国产| 国产精品美女久久久久久久久| 黄一区二区三区| 日韩免费高清视频| 秋霞影院一区二区| 欧美一区二区在线看| 亚洲国产wwwccc36天堂| 97精品久久久午夜一区二区三区| 国产性天天综合网| 国产制服丝袜一区| www国产精品av| 国产老女人精品毛片久久| 欧美xxx久久| 国产ts人妖一区二区| 日韩一级免费一区| 日本不卡中文字幕| 日韩亚洲欧美在线观看| 日本女人一区二区三区| 日韩一区和二区| 美女被吸乳得到大胸91| 日韩欧美亚洲国产精品字幕久久久| 日韩av一区二区三区四区| 日韩亚洲欧美综合| 精品中文字幕一区二区| 久久综合九色欧美综合狠狠| 国产一区二区调教| 国产精品伦理在线| 色哟哟国产精品| 亚洲一区二区三区美女| 337p亚洲精品色噜噜噜| 久草热8精品视频在线观看| 久久欧美中文字幕| 国产成人精品影视| 亚洲免费在线电影| 精品视频一区二区不卡| 久久99久国产精品黄毛片色诱| 久久精品夜色噜噜亚洲aⅴ| 福利91精品一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 色综合久久久久久久久久久| 丝瓜av网站精品一区二区| 精品免费视频一区二区| 风间由美一区二区三区在线观看| 亚洲三级在线看| 日韩视频在线永久播放| 国产福利一区二区| 亚洲国产精品嫩草影院| 日韩欧美国产不卡| jvid福利写真一区二区三区| 天天综合色天天综合色h| 久久久久九九视频| 欧美日韩视频不卡| 国产不卡视频一区| 免费观看一级特黄欧美大片| 国产精品理伦片| 日韩欧美成人激情| 色噜噜狠狠成人网p站| 精品综合久久久久久8888| 亚洲视频在线一区| 久久久亚洲午夜电影| 欧美偷拍一区二区| 不卡的av网站| 韩国视频一区二区| 日本亚洲免费观看| 一区二区欧美国产| 国产日韩在线不卡| 91精品国产手机| 在线观看国产日韩| 99精品桃花视频在线观看| 精品午夜久久福利影院| 亚洲影院免费观看| 亚洲天堂av一区| 国产免费观看久久| 欧美成人女星排行榜| 欧美日韩三级一区| 91丝袜美女网| www.日韩av| 国产精品一区久久久久| 日本不卡免费在线视频| 夜夜爽夜夜爽精品视频| 综合久久久久久| 国产日韩欧美麻豆| 26uuu欧美| 欧美成人性战久久| 日韩欧美在线综合网| 欧美日韩日日夜夜| 在线成人av网站| 欧美日本视频在线| 国产精品麻豆欧美日韩ww| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩情趣电影| 91超碰这里只有精品国产| 欧美人狂配大交3d怪物一区| 91黄色激情网站| 在线观看亚洲专区| 欧美色图天堂网| 欧美人体做爰大胆视频| 欧美高清激情brazzers| 欧美日韩成人在线一区| 欧美一区二区私人影院日本| 欧美精品v日韩精品v韩国精品v| 欧美精品高清视频| 日韩女优av电影在线观看| 精品精品欲导航| 久久久噜噜噜久噜久久综合| 久久色.com| 国产精品毛片久久久久久久| 亚洲精品亚洲人成人网| 天天操天天色综合| 美女www一区二区| 国产成人福利片| 一本到不卡精品视频在线观看| 在线一区二区三区四区五区 | 高清成人在线观看| 成人精品gif动图一区| 色综合亚洲欧洲| 欧美午夜不卡在线观看免费| 3d动漫精品啪啪1区2区免费| 亚洲精品在线网站| 国产精品成人一区二区艾草 | 欧美日韩高清一区二区| 精品国产成人系列| 中文字幕在线视频一区| 亚洲一线二线三线久久久| 日本va欧美va精品发布| 国产精品88av| 欧美日韩激情一区| 久久在线观看免费| 洋洋成人永久网站入口| 免费成人深夜小野草| 成人一二三区视频| 欧美酷刑日本凌虐凌虐| 国产精品日产欧美久久久久| 午夜欧美在线一二页| 国产成人午夜电影网| 欧美日韩国产精品成人| 中文字幕成人在线观看| 美女视频黄 久久| 99re这里都是精品| 精品久久免费看| 亚洲成人av电影在线| 成人网页在线观看| 日韩欧美成人午夜| 亚洲一区二区四区蜜桃| 国产电影精品久久禁18| 欧美一级免费观看|