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

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

?? ppu_control.c

?? SPG290 上SD卡讀取寫入程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
	attr 		= P_PPU_TX1_Attribute 	+ nTextLayer * 7;
	x 			= P_PPU_TX1_X 			+ nTextLayer * 7;
	y 			= P_PPU_TX1_Y 			+ nTextLayer * 7;
	control 	= P_PPU_TX1_Control 	+ nTextLayer * 7;
	
	port 		= pIndexAddr;
	
	for(i=0; i< nYSize; i++)
	{		
		if(nColorMode == TX_Color65536)
			*(port + i) = i* (nXSize * nColorMode / 32);
		else		
			*(port + i) = i* (nXSize * nColorMode / 16);	 
	}		
		
	*index 		= (U32)pIndexAddr;				
	*addr 		= (U32)pPatAddr;	
	*(addr + 1) = (U32)pPatAddr;	
	*(addr + 2) = (U32)pPatAddr;	
	*x 			= 0;
	*y 			= 0;
	*control 	= TXEN|TXLINEAR|TXREGMODE;	
	
	switch(nColorMode)
	{
		case TX_Color4:
		case TX_Color16:
			*attr 	= ((nColorMode>>2) | nDepthLayer | nBank);
			break;
		case TX_Color64:
		case TX_Color256:
			*attr 	= (((nColorMode>>2) + 1) | nDepthLayer | nBank);
			break;
		case TX_Color32768:
			*control|= TXRGB555 ;//| 
			*attr 	= nDepthLayer;				
			break;
		case TX_Color65536:
			*control|= TXRGB565;// | nDepthLayer			
			*attr 	= nDepthLayer;
			break;
	}
}

//PPU_Sprite
/**
 * PPU_InitSprite - initialize sprite.
 */
void PPU_InitSprite(void)
{
	U16	i;
	PAINT_CELL	*pPaintCell;

	//initialize SPRITE_TABLE
	for(i=0; i<SPRITE_NUM_MAX; i++)
	{
		SPRITE_TABLE[i].SprList.prev	= (LISTHEAD*)NULL;
		SPRITE_TABLE[i].SprList.next	= (LISTHEAD*)NULL;
		SPRITE_TABLE[i].nCtrlFlag		= 0x00000000;
		SPRITE_TABLE[i].stPos.x			= 0;
		SPRITE_TABLE[i].stPos.y			= 0;
		SPRITE_TABLE[i].pFrame			= (FRAME*)NULL;
	}

	//initialize SPRITE_FREE_LIST, add all SPTITE into SPRITE_FREE_LIST
	INIT_LIST_HEAD(&SPRITE_FREE_LIST);
	for (i = 0; i < SPRITE_NUM_MAX; i++)
	{
		list_add_tail(&SPRITE_TABLE[i].SprList, &SPRITE_FREE_LIST);
	}

	//initialize SPRITE_PRI_LIST
	for (i = 0; i < SPRITE_PRI_MAX/2; i++)
	{
		INIT_LIST_HEAD(&SPRITE_PRI_LIST[i]);
	}

	{//initialize cell register (pack function in the future)
		pPaintCell = (PAINT_CELL*)(P_PPU_Sprite);
		for(i=0; i<CELL_NUM_MAX; i++)
		{
			pPaintCell->SP_Attribute1.DW	= 0;
			pPaintCell->SP_Attribute2.DW	= 0;
			pPaintCell++;	//add 8 byte
		}
	}
	PPU_SetSP_BUF_SA(SP_PGT_ADDR);	//get the sprite PGT data (Array Data)
	PPU_SetSP_En(SP_ENABLE);
	g_nUsed_Cell_Count		= 0;
	g_bShowSpriteFlag		= false;
}

/**
 * PPU_AllocSprite - alloc sprite.
 * @pFrame:
 * @x:
 * @y:
 * @nPri:
 * @RETURN:
 */
SPRITE* PPU_AllocSprite( const FRAME *pFrame, S16 x, S16 y, U16 nPri )
{
	SPRITE *pSprite;
	LISTHEAD *pList, *pPriList;

#ifdef ARG_CHK_EN
	if (pFrame == (FRAME*)NULL)
	{
		return (SPRITE*)NULL;
	}
#endif

	//Check sprite priority
	if (nPri >= SPRITE_PRI_MAX)
	{
		nPri = SPRITE_PRI_MAX - 1;
	}

	//Check Sprite free list is empty or not
	if (list_empty(&SPRITE_FREE_LIST))
	{
		return (SPRITE*)NULL;
	}

	pList	= SPRITE_FREE_LIST.next;
	pSprite = List2Sprite(pList);
	list_del(pList);					//delete assigned SPRITE from Sprite free list

	//set sprite basic info
	pSprite->stPos.x	= x;
	pSprite->stPos.y	= y;
	pSprite->nCtrlFlag	= 0x00000000;
	pSprite->pFrame		= (FRAME*)pFrame;

	//insert assigned sprite to priority list
	pPriList = &SPRITE_PRI_LIST[(nPri>>1)];
	if( (nPri&0x0001) == 1 )
	{
		list_add(pList, pPriList);		//Add to head, so it will have higher Priority
	}
	else
	{
		list_add_tail(pList, pPriList);	//Add to tail, so it will have lower Priority
	}

	return (pSprite);
}

/**
 * PPU_FreeSprite - free sprite.
 * @pSprite:
 */
void PPU_FreeSprite(SPRITE *pSprite)
{
#ifdef ARG_CHK_EN
    if (pSprite < &SPRITE_TABLE[0]
		|| pSprite >= &SPRITE_TABLE[SPRITE_NUM_MAX]
		|| pSprite->pFrame ==(FRAME*)NULL)
	{
		return;
	}
#endif

	//Remove from Sprite Priority list
	list_del(&pSprite->SprList);

	//Clean SPRITE
	pSprite->SprList.prev	= (LISTHEAD*)NULL;
	pSprite->SprList.next	= (LISTHEAD*)NULL;
	pSprite->nCtrlFlag		= 0x00000000;
	pSprite->stPos.x		= 0;
	pSprite->stPos.y		= 0;
	pSprite->pFrame			= (FRAME*)NULL;

	//Add to Free Sprite List
	list_add(&pSprite->SprList, &SPRITE_FREE_LIST);
}

/**
 * PPU_PaintSprite - set all cell register, paint all sprites.
 */
void PPU_PaintSprite(void)
{
	LISTHEAD	*pos, *pHead;
	PAINT_CELL	*pPaintCell;
	SPRITE		*pSprite;
	FRAME		*pFrame;
	FRAME_CELL	*pFrameCell;
	U16			i, nCellCount;
	S16			sScrX,sScrY;			//screen coordinate

	nCellCount	= 0;
	pPaintCell	= (PAINT_CELL*)(P_PPU_Sprite);

	for (pHead=&SPRITE_PRI_LIST[0]; pHead<=(&SPRITE_PRI_LIST[SPRITE_PRI_MAX/2]-1); pHead++)
	{
		list_for_each_prev(pos, pHead)
		{
			pSprite	= List2Sprite(pos);
			pFrame	= pSprite->pFrame;

#ifdef ARG_CHK_EN
			if( pFrame == (FRAME*)NULL )
			{
				continue;
			}
#endif

			sScrX	= pSprite->stPos.x;			//Sprite's screen X(Sprite's cg relative to Screen left-top corner)
			sScrY	= pSprite->stPos.y;			//Sprite's screen Y(Sprite's cg relative to Screen left-top corner)

			//check sprite overstep screen or not
			if( (sScrX - pFrame->stOrgPos.x + pFrame->stSize.width) < 0 ||
				(sScrX - pFrame->stOrgPos.x) > SCREEN_WIDTH ||
				(sScrY - pFrame->stOrgPos.y + pFrame->stSize.height) < 0 ||
				(sScrY - pFrame->stOrgPos.y) > SCREEN_HEIGHT )
			{
				continue;
			}

			//check paint cell numbers is CELL_NUM_MAX
			if( nCellCount + pFrame->nCellNum >= CELL_NUM_MAX )
			{
				continue;
			}

			//paint sprite
#ifndef SPRITETAB_BIN
			pFrameCell	= (FRAME_CELL*)pFrame->pFrameCellTbl;
#else
			pFrameCell	= (FRAME_CELL*)((U32)pFrame->pFrameCellTbl + SP_TBL_ADDR);
#endif
			
			for( i = 0; i < pFrame->nCellNum; i++ )
			{
				pPaintCell->SP_Attribute1.B.nChNum		= pFrameCell->nPGTIndex;
				pPaintCell->SP_Attribute1.B.sPosX		= pFrameCell->sRefX + sScrX;
#ifndef SPRITETAB_BIN				
				pPaintCell->SP_Attribute2.B.nAttribute	= pFrame->pFrameInfo->W;
#else
				pPaintCell->SP_Attribute2.B.nAttribute	= ((FRAME_INFO*)((U32)pFrame->pFrameInfo + SP_TBL_ADDR))->W;
#endif
				pPaintCell->SP_Attribute2.B.sPosY		= pFrameCell->sRefY + sScrY;

				pFrameCell++;
				pPaintCell++;
				nCellCount++;
			}
		}
	}

	//clear all no painted cell
	for( i = nCellCount; i < g_nUsed_Cell_Count; i++ )
	{
		pPaintCell->SP_Attribute1.DW	= 0;
		pPaintCell->SP_Attribute2.DW	= 0;
		pPaintCell++;
	}
	g_nUsed_Cell_Count = nCellCount;
	g_bShowSpriteFlag = false;
}

//PPU_Effect
/**
 * PPU_SetTxBlendLevel - set texture blend level
 * @nText: which texture blend, like "TEXT1, TEXT2, TEXT3"
 * @nBlendLevel: blend level, 0 ~ 63(63 is absolute transparence)
 */
void PPU_SetTxBlendLevel(U8 nText, U8 nBlendLevel)
{
	switch(nText)
	{
	case TEXT1:
		*P_PPU_TX1_Blending = nBlendLevel;
		break;
	case TEXT2:
		*P_PPU_TX2_Blending = nBlendLevel;
		break;
	case TEXT3:
		*P_PPU_TX3_Blending = nBlendLevel;
		break;
	default:
		break;
	}
}

/**
 * PPU_GetTxBlendLevel - get texture blend level
 * @nText: which texture, like "TEXT1, TEXT2, TEXT3"
 * @RETURN: blend level, if return 0xff, "nText" is set error.
 */
U8 PPU_GetTxBlendLevel(U8 nText)
{
	switch(nText)
	{
	case TEXT1:
		return *P_PPU_TX1_Blending;
	case TEXT2:
		return *P_PPU_TX2_Blending;
	case TEXT3:
		return *P_PPU_TX3_Blending;
	}
	return 0xFF;
}

/**
 * PPU_EnableTxBlend - enable or disable texture blending.
 * @bText1: text1 blend enable(true) or disable(false)
 * @bText2: text2 blend enable(true) or disable(false)
 * @bText3: text3 blend enable(true) or disable(false)
 */
void PPU_EnableTxBlend(bool bText1, bool bText2, bool bText3)
{
	*P_PPU_TX1_Control = ((*P_PPU_TX1_Control) & 0xFEFF) | (bText1<<8);
	*P_PPU_TX2_Control = ((*P_PPU_TX2_Control) & 0xFEFF) | (bText2<<8);
	*P_PPU_TX3_Control = ((*P_PPU_TX3_Control) & 0xFEFF) | (bText3<<8);
}

/**
 * PPU_TxHMovement - set every scan line's horizontal movement value.
 * @nMode: 0 - every scan line have the same value; 1 - have different value.
 * @nStartScanline: from which Scan line to begin
 * @nEndScanline: from which Scan line to end
 * @nCompValue: the same movement value, nMode = 0.
 * @pScanline: scan line movement data table, nMode = 1.
 * @nNumberData: movement data table length.
 */
void PPU_TxHMovement
(
 S16 nMode, 
 S32 nStartScanline,
 S32 nEndScanline,
 S32 nCompValue,
 const S8 *pScanline,
 U16 nNumberData
)
{
	S32 i;
	U32 *port;
    U32 nScanLine;
	
	port = P_PPU_Tx_HOffset_ADR; 
	nScanLine=nEndScanline-nStartScanline;
	
	if(nMode == 0)
	{
		for(i = 0; i<nScanLine; i ++)	
		{
			*(port + nStartScanline + i) =nCompValue;		// write Scanline table data to I/O
		}		
	}
	else
	{
		for(i = 0; i<nScanLine; i ++)	
		{
			*(port + nStartScanline + i) =pScanline[nHMovementCnt+1];		// write Scanline table data to I/O
			nHMovementCnt++;
			if(nHMovementCnt>=nNumberData-1)
			nHMovementCnt=0;
		}
	}
} 

/**
 * PPU_EnTxHMovement - enable or disable texture H movement effect.
 * @bText1: text1 HMovement enable(true) or disable(false)
 * @bText2: text2 HMovement enable(true) or disable(false)
 * @bText3: text3 HMovement enable(true) or disable(false)
 */
void PPU_EnTxHMovement(bool bText1, bool bText2, bool bText3)
{
	*P_PPU_TX1_Control = ((*P_PPU_TX1_Control) & 0xFFEF) | (bText1<<4);
	*P_PPU_TX2_Control = ((*P_PPU_TX2_Control) & 0xFFEF) | (bText2<<4);
	*P_PPU_TX3_Control = ((*P_PPU_TX3_Control) & 0xFFEF) | (bText3<<4);
}

/**
 * PPU_TxVCompress - set some attribute about vertical compression.
 * @nCmpValue: text screen vertical compression/extension value(0 ~ 1023)
 					Double size: 0x10
					Unit gain: 0x20
					Half size: 0x40
 * @nCmpStep: text screen vertical compression/extension step value(-128 ~ 127)
 * @nCmpOffset: text screen vertical compression/extension movement value
 */
void PPU_TxVCompress(U16 nCmpValue, S16 nCmpStep, U16 nCmpOffset)
{
	*P_PPU_VComp_Value = nCmpValue;
	*P_PPU_VComp_Step = nCmpStep;
	*P_PPU_VComp_Offset = nCmpOffset;
}

/**
 * PPU_EnTxVCompress - enable or disable texture V Compression effect.
 * @bText1: text1 V Compression enable(true) or disable(false)
 * @bText2: text2 V Compression enable(true) or disable(false)
 * @bText3: text3 V Compression enable(true) or disable(false)
 */
void PPU_EnTxVCompress(bool bText1, bool bText2, bool bText3)
{
	*P_PPU_TX1_Control = ((*P_PPU_TX1_Control) & 0xFFBF) | (bText1<<6);
	*P_PPU_TX2_Control = ((*P_PPU_TX2_Control) & 0xFFBF) | (bText2<<6);
	*P_PPU_TX3_Control = ((*P_PPU_TX3_Control) & 0xFFBF) | (bText3<<6);
}

/**
 * PPU_TxHCompress - Set Horizontal compression value.
 * @nMode: every scan lines's compression value same(0) or different(1)
 * @nStartLine: start scan line
 * @nEndLine: end scan line
 * @nSingleValue: all scan lines use this compression value
 * @pHCmpValueTbl: compression value table
 
 * **NOTE** the horizontal compression is only available in Text1 
 *			and character mode.
 */
void PPU_TxHCompress(U8 nMode, U16 nStartLine, U16 nEndLine, U16 nSingleValue, U16 *pHCmpValueTbl)
{
	U16 i,j;

	nEndLine = (nEndLine > 512) ? (512) : (nEndLine);

	for(i = nStartLine,j = 0; i < nEndLine; i++, j++)
	{
		if(nMode == 0)
		{
			*(P_PPU_Tx1_HCmp_ADR + i) = nSingleValue;
		}
		else
		{
#ifdef ARG_CHK_EN
			if (NULL == pHCmpValueTbl)
			{
				return;
			}
#endif
			*(P_PPU_Tx1_HCmp_ADR + i) = pHCmpValueTbl[j];
		}
	}
}

/**
 * PPU_EnTxHCompress - enable or disable texture H Compression effect.
 * @bText1: text1 V Compression enable(true) or disable(false)
 
 * **NOTE** the horizontal compression is only available in Text1 
 *			and character mode.
 */
void PPU_EnTxHCompress(bool bText1)
{
	*P_PPU_TX1_Control = ((*P_PPU_TX1_Control) & 0xFFDF) | (bText1<<5);
}


//PPU_Palette
/**
 * PPU_SP_InitPalette - initialize sprite palette.
 * @SPPalAddr: sprite palette data start address
 */
void PPU_SP_InitPalette(U32 *pSPPalAddr)
{
	U32 i;
	for (i = 0; i < 512; i++)
		*(P_SP_COLOR_PALETTE + i)	= *(pSPPalAddr + i);
}

/**
 * PPU_BG_InitPalette - initialize texture palette.
 * @BGPalAddr: texture palette data start address
 */
void PPU_BG_InitPalette(U32 *pBGPalAddr)
{
	U32 i;
	for (i = 0; i < 1024; i++)
		*(P_BG_COLOR_PALETTE + i)	= *(pBGPalAddr + i);
}
//====================================================================================================
//	Description:	Fade Out Effect
//	Function:		FadeOut()
//	Syntax:			void	FadeOut(void);
//	Input Paramter:	none
//	Return: 		none
//====================================================================================================
void FadeOut(void)    
{
	U32 i, j;
	for(i=0; i<256; i++)
	{
		*P_TV_FADE = i;
		for(j=0; j<1024*6; j++);
	}
}
//====================================================================================================
//	Description:	Fade In Effect
//	Function:		FadeIn()
//	Syntax:			void	FadeIn(void);
//	Input Paramter:	none
//	Return: 		none
//====================================================================================================
void FadeIn(void)     
{
	U32 i, j;
	for(i=0; i<256; i++)
	{
		*P_TV_FADE = 255-i;
		for(j=0; j<1024*8; j++);
	}
}

//==========================================
// Function:     SetColorPalette();
// Syntax:       void PPU_SP_SetPalette(U16 col_st, U16 number, U32 *pSPPalAddr)
// Description:  Set One Color to Palette
// Notes:        none
// parameters:	 int col_st: Color Start Index
//				 int col_end: Color End Index
//				 int value: Color Value
// returns: 	 none
//==========================================
void PPU_SP_SetPalette(U16 col_st, U16 number, U32 *pSPPalAddr)
{
	U32 i,j;

	for (i = col_st, j = 0; i < (col_st+number); i++,j++)//no safe
		*(P_SP_COLOR_PALETTE + i)	= *(pSPPalAddr + j);
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区精华液| 污片在线观看一区二区| 日本伊人午夜精品| 色综合天天综合网国产成人综合天| 久久久久久久久久久久久女国产乱 | 91精品国产免费| 亚洲国产精品一区二区www在线 | 成人涩涩免费视频| 久久先锋影音av鲁色资源网| 精品一二三四区| 久久综合色天天久久综合图片| 亚洲二区视频在线| 中文字幕日本乱码精品影院| 国产白丝精品91爽爽久久| 久久久午夜精品| 成人久久视频在线观看| 亚洲三级理论片| av电影一区二区| 一区二区三区视频在线看| 欧洲中文字幕精品| 人人狠狠综合久久亚洲| 欧美一级片免费看| 狠狠色丁香九九婷婷综合五月| 欧美变态tickling挠脚心| 国产一区视频在线看| 2021国产精品久久精品| 不卡av免费在线观看| 国产色综合一区| 成人福利视频网站| 一区二区三区在线视频免费| 欧美一区二区三区免费大片| 国产精品夜夜爽| 中文字幕亚洲区| 欧美电影影音先锋| 国产999精品久久| 亚洲美女在线国产| 欧美高清视频不卡网| 国产在线精品一区在线观看麻豆| 国产精品免费视频一区| 欧美性大战xxxxx久久久| 久久精品噜噜噜成人88aⅴ| 国产精品妹子av| 欧美群妇大交群中文字幕| 精品夜夜嗨av一区二区三区| 中文字幕av一区二区三区| 久久你懂得1024| 经典一区二区三区| 久久久久久黄色| 欧美日韩国产美| 国产成人精品亚洲日本在线桃色| 一区二区三区毛片| 精品久久国产字幕高潮| 99re亚洲国产精品| 久久99精品一区二区三区| 自拍偷在线精品自拍偷无码专区| 欧美美女黄视频| 国产成人综合在线播放| 免费精品视频最新在线| 亚洲四区在线观看| 久久久久青草大香线综合精品| 欧美亚洲综合久久| 成a人片亚洲日本久久| 久久激情五月激情| 亚洲在线成人精品| 国产精品国产三级国产普通话三级 | 免费视频一区二区| 亚洲乱码精品一二三四区日韩在线| 精品国产人成亚洲区| 欧美日韩的一区二区| 91色在线porny| 国产精品99久久久久久似苏梦涵 | 国产日韩欧美a| 日韩一级精品视频在线观看| 在线视频一区二区免费| 成人激情图片网| 国产成人在线色| 九色porny丨国产精品| 人人狠狠综合久久亚洲| 中文字幕一区二区三| 精品电影一区二区| 精品国产凹凸成av人导航| 欧美一级理论片| 欧美日韩精品一区视频| 色菇凉天天综合网| 91丨九色丨蝌蚪富婆spa| av亚洲精华国产精华精华 | 国产日韩精品视频一区| 91精品国产91久久久久久最新毛片| 日本丰满少妇一区二区三区| a亚洲天堂av| 99麻豆久久久国产精品免费| 成人黄色在线看| 成人性生交大片免费看中文网站| 国产一区二区毛片| 国产成人免费视频网站| 蜜臀久久久久久久| 亚洲一区在线视频| 亚洲成在线观看| 成人性色生活片| 国产精品自产自拍| 日韩中文字幕亚洲一区二区va在线 | 欧美日韩一卡二卡三卡| 国产九色精品成人porny| 亚洲精品国产无天堂网2021 | 国产美女精品一区二区三区| 国产综合成人久久大片91| 国产米奇在线777精品观看| 国产精品一二三四五| 国产一区二区三区免费观看| 国产一区二区三区国产| 国产精品一区二区久久不卡| 国产经典欧美精品| 成人v精品蜜桃久久一区| 91性感美女视频| 欧美挠脚心视频网站| 日韩精品一区二区三区三区免费| 国产人久久人人人人爽| 亚洲成人动漫在线免费观看| 性做久久久久久| 国内精品在线播放| 成人精品在线视频观看| 91九色02白丝porn| 日韩一区国产二区欧美三区| 国产亚洲一区二区三区在线观看| 国产精品乱子久久久久| 午夜伊人狠狠久久| 精品一区二区三区欧美| 国产91在线看| 欧美另类变人与禽xxxxx| www久久久久| 亚洲三级小视频| 日本人妖一区二区| 成a人片亚洲日本久久| 欧美三级电影一区| 久久一区二区三区国产精品| 国产精品高潮久久久久无| 一区二区三区四区视频精品免费| 日本不卡123| 91蜜桃传媒精品久久久一区二区| 91麻豆精品91久久久久久清纯| 国产色一区二区| 天天影视色香欲综合网老头| 国产一区二区成人久久免费影院| 欧美嫩在线观看| 国产精品美女久久久久高潮| 日韩电影网1区2区| 成人在线综合网| 666欧美在线视频| 尤物在线观看一区| 国产精品一区二区在线观看网站| 欧美视频一区在线观看| 中文字幕欧美国产| 男人的天堂久久精品| 欧美在线播放高清精品| 国产精品视频一二三区| 美女视频免费一区| 91搞黄在线观看| 精品国产乱码久久久久久1区2区 | 91精品国产入口| 亚洲丝袜美腿综合| 国产精品一线二线三线精华| 欧美日韩一区二区欧美激情| 亚洲视频 欧洲视频| 国产精品一级黄| 精品国产一区久久| 亚洲免费在线播放| 色婷婷av一区二区三区软件 | 成人丝袜视频网| 久久婷婷成人综合色| 日韩不卡一区二区| 欧美日韩免费高清一区色橹橹| 国产欧美中文在线| 首页国产欧美日韩丝袜| 在线视频你懂得一区二区三区| 国产精品久久久久久久久免费丝袜| 九九九精品视频| 欧美mv日韩mv国产网站app| 日韩高清不卡一区二区三区| 欧美久久久久免费| 午夜精品aaa| 欧美一区二区久久久| 免费日韩伦理电影| 国产亚洲福利社区一区| 北条麻妃国产九九精品视频| 亚洲伊人色欲综合网| 日韩欧美在线1卡| 国产精品996| 亚洲精品中文在线观看| 91精品国产色综合久久ai换脸| 国产一区久久久| 国产精品国产三级国产aⅴ原创 | 在线看日韩精品电影| 日av在线不卡| 国产精品天美传媒| 欧美日韩一区二区欧美激情| 激情久久五月天| 一区二区三区自拍| 日韩一区二区精品葵司在线| 成人综合日日夜夜| 石原莉奈在线亚洲三区|