📄 game_lcd.c
字号:
#include "Include/Game_LCD.h"
#define PAINTACTOR
#define LCD_BG_ADDR 0xa0260000 //SpriteCell data end at 0xa0c70000
#define LCD_UP_ADDR (LCD_BG_ADDR + 0x25800)
#define LCD_DOWN_ADDR (LCD_UP_ADDR + 0x4800)
#define LCD_RIGHT_ADDR (LCD_DOWN_ADDR + 0x4800)
#define LCD_RIGHTUP_ADDR (LCD_RIGHT_ADDR + 0x4800)
#define LCD_RIGHTDOWN_ADDR (LCD_RIGHTUP_ADDR + 0x4800)
#define LCD_MIDDLE_ADDR (LCD_RIGHTDOWN_ADDR + 0x4800)
#define LCD_LEFT_ADDR (LCD_MIDDLE_ADDR + 0x4800)
#define LCD_LEFTUP_ADDR (LCD_LEFT_ADDR + 0x4800)
#define LCD_LEFTDOWN_ADDR (LCD_LEFTUP_ADDR + 0x4800)
#define LCD_1_1_ADDR (LCD_LEFTDOWN_ADDR + 0x4800)
#define LCD_1_2_ADDR (LCD_1_1_ADDR + 0x4800)
#define LCD_1_3_ADDR (LCD_1_2_ADDR + 0x4800)
#define LCD_2_1_ADDR (LCD_1_3_ADDR + 0x4800)
#define LCD_2_2_ADDR (LCD_2_1_ADDR + 0x4800)
#define LCD_3_1_ADDR (LCD_2_2_ADDR + 0x4800)
#define LCD_3_2_ADDR (LCD_3_1_ADDR + 0x4800)
#define LCD_4_1_ADDR (LCD_3_2_ADDR + 0x4800)
#define LCD_1_ADDR (LCD_4_1_ADDR + 0x4800)
#define LCD_2_ADDR (LCD_1_ADDR + 0x4800)
#define LCD_3_ADDR (LCD_2_ADDR + 0x4800)
#define LCD_4_ADDR (LCD_3_ADDR + 0x4800)
#define LCD_5_ADDR (LCD_4_ADDR + 0x4800)
const LOAD_INFO LCDDataInfo[] =
{
{".\\Game\\CeShow\\Game_Sprite.bin" , SP_PGT_ADDR , O_RDONLY, 0x480000},//0x479400
//{".\\Lcd_bg.bin" , LCD_BG_ADDR , O_RDONLY, 0x26000 },
{".\\Game\\CeShow\\Lcd_bg.bin" , LCD_BUFFER0 , O_RDONLY, 0x26000 },
{".\\Game\\CeShow\\Lcd_bg.bin" , LCD_BUFFER1 , O_RDONLY, 0x26000 },
{".\\Game\\CeShow\\Lcd_Up.bin" , LCD_UP_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Down.bin" , LCD_DOWN_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Right.bin" , LCD_RIGHT_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_RightUp.bin" , LCD_RIGHTUP_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_RightDown.bin" , LCD_RIGHTDOWN_ADDR, O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Middle.bin" , LCD_MIDDLE_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Left.bin" , LCD_LEFT_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_LeftUp.bin" , LCD_LEFTUP_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_LeftDown.bin" , LCD_LEFTDOWN_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_1_1.bin" , LCD_1_1_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_1_2.bin" , LCD_1_2_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_1_3.bin" , LCD_1_3_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_2_1.bin" , LCD_2_1_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_2_2.bin" , LCD_2_2_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_3_1.bin" , LCD_3_1_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_3_2.bin" , LCD_3_2_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_4_1.bin" , LCD_4_1_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Actor1.bin" , LCD_1_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Actor2.bin" , LCD_2_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Actor3.bin" , LCD_3_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Actor4.bin" , LCD_4_ADDR , O_RDONLY, 0x5000 },
{".\\Game\\CeShow\\Lcd_Actor5.bin" , LCD_5_ADDR , O_RDONLY, 0x5000 },
};
U8 g_nCurrentBuffer=0;
U8 Fish_Index = 0;
U8 Key_Index = 0;
U8 Actor_Index = 0;
void LCD_LoadData(void)
{
Sys_Load_SDCard(&LCDDataInfo, ASZ(LCDDataInfo));
}
void LCD_InitBG(void)
{
//init BG
/* BlnDmaStart_linear2block_Dma(LCD_BG_ADDR, LCD_BUFFER0, 0, 0, 1, 0, 320, 240, 0, 0, 0);
WaitBlanking();
WaitBlanking();
BlnDmaStart_linear2block_Dma(LCD_BG_ADDR, LCD_BUFFER1, 0, 0, 1, 0, 320, 240, 0, 0, 0);
WaitBlanking();
WaitBlanking(); */
Key_Index = LCD_KEYMIDDLE;
Fish_Index = LCD_1_1;
Actor_Index = LCD_ACTORFRAME0;
*P_LCD_FB_ADDR1= LCD_BUFFER0;
g_nCurrentBuffer = 0;
}
void LCD_Paint(void)
{
static int count = 0;
if( count++ > 3 )
count = 0;
else
return;
#ifdef PAINTACTOR
if( Actor_Index > 4 )
Actor_Index = 0;
#endif
if(g_nCurrentBuffer)
{
BlnDmaStart_linear2block_Dma( ((U32)LCD_1_1_ADDR+(0x4800)*Fish_Index),LCD_BUFFER0,189,127,1,0,96,96,0,0,0);
Paint_Sprite_Onlcd( ((U32)LCD_UP_ADDR+(0x4800)*Key_Index),LCD_BUFFER0,96,96,22,117);
#ifdef PAINTACTOR
Paint_Sprite_Onlcd( ((U32)LCD_1_ADDR+(0x4800)*(Actor_Index++)),LCD_BUFFER0,96,96,189,10);
#endif
*P_LCD_FB_ADDR1= LCD_BUFFER0;
g_nCurrentBuffer=0;
}
else
{
BlnDmaStart_linear2block_Dma( ((U32)LCD_1_1_ADDR+(0x4800)*Fish_Index),LCD_BUFFER1,189,127,1,0,96,96,0,0,0);
Paint_Sprite_Onlcd( ((U32)LCD_UP_ADDR+(0x4800)*Key_Index),LCD_BUFFER1,96,96,22,117);
#ifdef PAINTACTOR
Paint_Sprite_Onlcd( ((U32)LCD_1_ADDR+(0x4800)*(Actor_Index++)),LCD_BUFFER1,96,96,189,10);
#endif
*P_LCD_FB_ADDR1= LCD_BUFFER1;
g_nCurrentBuffer=1;
}
}
void Paint_Sprite_Onlcd(U32 nSrcAddr,U32 nDestAddr,U16 nImageSize_x,U16 nImageSize_y,U16 nLcdScreenPosx,U16 nLcdScreenPosy)
{
U32 i,j,k=0;
U32 ntemp0;
U32 nDestBaseAddr;
const U16 *nSrcAddrTemp;
U16 nImageSizex,nImageSizey;
nSrcAddrTemp=nSrcAddr;
nImageSizex= (nImageSize_x>>1); //one register restores two pixels
nImageSizey= nImageSize_y;
nDestBaseAddr=nDestAddr+(((nLcdScreenPosx-(nLcdScreenPosx%2))+320*(nLcdScreenPosy))<<1);
for(j=0; j < nImageSizey; j++)
{
for(i=0; i < nImageSizex; i++)
{
ntemp0 = nSrcAddrTemp[k] | (nSrcAddrTemp[k+1]<<16);
//ntemp0 = nSrcAddr[k] | (nSrcAddr[k+1]<<16);
*((U32*)nDestBaseAddr+i+j*160)=ntemp0;
k +=2;
}
}
}
/* extern U32 md_frame_int;
extern U32 CSI_MD_DIFFBUF[1200];
extern U32 CSI_KEY[7];
void CSI_MDInit(void)
{
U32 i;
*P_CSI_MD_SADDR = CSI_MD_DIFFBUF;
*P_CSI_MD_CR = MD_DIFF|SAMP_16|FRAME_2|(0x20<<9);
md_frame_int = 0;
*P_CSI_IRQEN = FRAME_LOSS|MD_FRAME|MD_UF;
for(i=0; i<7; i++)
CSI_KEY[i]=0;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -