📄 drvrld.c
字号:
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2006-2007 MStar Semiconductor, Inc.
// All rights reserved.
//
// Unless otherwise stipulated in writing, any and all information contained
// herein regardless in any format shall remain the sole proprietary of
// MStar Semiconductor Inc. and be kept in strict confidence
// (¨MStar Confidential Information〃) by the recipient.
// Any unauthorized act including without limitation unauthorized disclosure,
// copying, use, reproduction, sale, distribution, modification, disassembling,
// reverse engineering and compiling of the contents of MStar Confidential
// Information is unlawful and strictly prohibited. MStar hereby reserves the
// rights to any and all damages, losses, costs and expenses resulting therefrom.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///@file drvRLD.c
///@Driver interface of Jupiter run-length decoder
///
///@author MStarSemi Inc.
///
///
///
////////////////////////////////////////////////////////////////////////////////
#define DRVRLD_C
//*****************************************************************************
// Header Files
//*****************************************************************************
#include "drvRLD.h"
//*****************************************************************************
// Macro
//*****************************************************************************
//*****************************************************************************
// Enums
//*****************************************************************************
//*****************************************************************************
// Structures
//*****************************************************************************
//*****************************************************************************
// Functions
//*****************************************************************************
void MDrv_STRLD_Start()
{
MDrv_WriteByte(STRLD_CTRL, 0x01);
}
void MDrv_STRLD_Reset()
{
// U16 i, j;
MDrv_WriteByte(STRLD_CTRL, 0x80);
/*
for (i = 0; i < 255; i++)
{
j = i;
}
*/
MDrv_WriteByte(STRLD_CTRL, 0x0);
}
BOOLEAN MDrv_STRLD_SetOutputFormat(U8 u8Value)
{
if ((u8Value != 0x02) && (u8Value != 0x04) && (u8Value != 0x08))
return FALSE;
MDrv_WriteByte(STRLD_OUTPUT_FORMAT, u8Value);
return TRUE;
}
BOOLEAN MDrv_STRLD_SetEnlargeRate(U8 u8Value)
{
// 1 ~ 7
if (( u8Value < 1) || ( u8Value> 7))
{
printf("\nBG in drvRLD\n");
return FALSE;
}
MDrv_WriteByte(STRLD_ENLARGE_RATE, u8Value);
return TRUE;
}
void MDrv_STRLD_SetTransparentKey(U8 u8Value)
{
MDrv_WriteByte(STRLD_TRNASPARENT_KEY, u8Value);
}
void MDrv_STRLD_SetTopFieldLength(U16 u16Value)
{
MDrv_Write2Byte(STRLD_TOP_LEN0,u16Value);
}
void MDrv_STRLD_SetBottomFieldLength(U16 u16Value)
{
MDrv_Write2Byte(STRLD_BOT_LEN0,u16Value);
}
void MDrv_STRLD_SetRegionWdith(U16 u16Value)
{
MDrv_Write2Byte(STRLD_REGION_WIDTH0,u16Value);
}
void MDrv_STRLD_SetRegionHeight(U16 u16Value)
{
MDrv_Write2Byte(STRLD_REGION_HEIGHT0,u16Value);
}
void MDrv_STRLD_SetRegionPitch(U16 u16Value)
{
MDrv_Write2Byte(STRLD_REGION_PITCH0,u16Value);
}
void MDrv_STRLD_SetObjXOffset(U16 u16Value)
{
MDrv_Write2Byte(STRLD_OBJ_X_OFFSET0,u16Value);
}
void MDrv_STRL_SetObjYOffset(U16 u16Value)
{
MDrv_Write2Byte(STRLD_OBJ_Y_OFFSET0,u16Value);
}
void MDrv_STRLD_SetRegionOffset(U8 u8Value)
{
MDrv_WriteByte(STRLD_REGION_OFFSET,u8Value);
}
void MDrv_STRLD_SetRegionDepth(U8 u8Value)
{
MDrv_WriteByte(STRLD_BITSTREAM_DEPTH,u8Value);
}
void MDrv_STRLD_SetRegionColorKeyFG(U8 u8Value)
{
MDrv_WriteByte(STRLD_REGION_COLORKEY_FG,u8Value);
}
void MDrv_STRLD_SetRegionColorKeyBG(U8 u8Value)
{
MDrv_WriteByte(STRLD_REGION_COLORKEY_BG,u8Value);
}
void MDrv_STRLD_SetTopFieldAddress(U32 u32Value)
{
u32Value = u32Value / 8;
MDrv_WriteByte(STRLD_TOP_ADDR0 , VARBYTE(u32Value, 3));
MDrv_WriteByte(STRLD_TOP_ADDR1 , VARBYTE(u32Value, 2));
MDrv_WriteByte(STRLD_TOP_ADDR2 , VARBYTE(u32Value, 1));
MDrv_WriteByte(STRLD_TOP_ADDR3 , VARBYTE(u32Value, 0));
}
void MDrv_STRLD_SetBottomFieldAddress(U32 u32Value)
{
u32Value = u32Value / 8;
MDrv_WriteByte(STRLD_BOT_ADDR0 , VARBYTE(u32Value, 3));
MDrv_WriteByte(STRLD_BOT_ADDR1 , VARBYTE(u32Value, 2));
MDrv_WriteByte(STRLD_BOT_ADDR2 , VARBYTE(u32Value, 1));
MDrv_WriteByte(STRLD_BOT_ADDR3 , VARBYTE(u32Value, 0));
}
void MDrv_STRLD_SetOutputAddress(U32 u32Value)
{
u32Value = u32Value / 8;
MDrv_WriteByte(STRLD_OUTPUT_ADDR0 , VARBYTE(u32Value, 3));
MDrv_WriteByte(STRLD_OUTPUT_ADDR1 , VARBYTE(u32Value, 2));
MDrv_WriteByte(STRLD_OUTPUT_ADDR2 , VARBYTE(u32Value, 1));
MDrv_WriteByte(STRLD_OUTPUT_ADDR3 , VARBYTE(u32Value, 0));
}
void MDrv_STRLD_SetPatch()
{
MDrv_WriteByte(STRLD_PATCH, 0x01);
}
U8 MDrv_STRLD_GetReturn()
{
return MDrv_ReadByte(STRLD_RETURN);
}
void MDrv_STRLD_SetMappingTable2to4(U32 u32Value)
{
MDrv_WriteByte(STRLD_CLUT_2TO4_0 , VARBYTE(u32Value, 3));
MDrv_WriteByte(STRLD_CLUT_2TO4_1 , VARBYTE(u32Value, 2));
MDrv_WriteByte(STRLD_CLUT_2TO4_2 , VARBYTE(u32Value, 1));
MDrv_WriteByte(STRLD_CLUT_2TO4_3 , VARBYTE(u32Value, 0));
}
void MDrv_STRLD_SetMappingTable2to8(U32 u32Value)
{
MDrv_WriteByte(STRLD_CLUT_2TO8_0 , VARBYTE(u32Value, 3));
MDrv_WriteByte(STRLD_CLUT_2TO8_1 , VARBYTE(u32Value, 2));
MDrv_WriteByte(STRLD_CLUT_2TO8_2 , VARBYTE(u32Value, 1));
MDrv_WriteByte(STRLD_CLUT_2TO8_3 , VARBYTE(u32Value, 0));
}
void MDrv_STRLD_SetMappingTable4to8(U32 u32Value0, U32 u32Value1, U32 u32Value2, U32 u32Value3)
{
MDrv_WriteByte(STRLD_CLUT_4TO8_0 , VARBYTE(u32Value0, 3));
MDrv_WriteByte(STRLD_CLUT_4TO8_1 , VARBYTE(u32Value0, 2));
MDrv_WriteByte(STRLD_CLUT_4TO8_2 , VARBYTE(u32Value0, 1));
MDrv_WriteByte(STRLD_CLUT_4TO8_3 , VARBYTE(u32Value0, 0));
MDrv_WriteByte(STRLD_CLUT_4TO8_4 , VARBYTE(u32Value1, 3));
MDrv_WriteByte(STRLD_CLUT_4TO8_5 , VARBYTE(u32Value1, 2));
MDrv_WriteByte(STRLD_CLUT_4TO8_6 , VARBYTE(u32Value1, 1));
MDrv_WriteByte(STRLD_CLUT_4TO8_7 , VARBYTE(u32Value1, 0));
MDrv_WriteByte(STRLD_CLUT_4TO8_8 , VARBYTE(u32Value2, 3));
MDrv_WriteByte(STRLD_CLUT_4TO8_9 , VARBYTE(u32Value2, 2));
MDrv_WriteByte(STRLD_CLUT_4TO8_a , VARBYTE(u32Value2, 1));
MDrv_WriteByte(STRLD_CLUT_4TO8_b , VARBYTE(u32Value2, 0));
MDrv_WriteByte(STRLD_CLUT_4TO8_c , VARBYTE(u32Value3, 3));
MDrv_WriteByte(STRLD_CLUT_4TO8_d , VARBYTE(u32Value3, 2));
MDrv_WriteByte(STRLD_CLUT_4TO8_e , VARBYTE(u32Value3, 1));
MDrv_WriteByte(STRLD_CLUT_4TO8_f , VARBYTE(u32Value3, 0));
}
#undef DRVRLD_C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -