www.pudn.com > 6027_HD65.rar > osdgame.c


/**********************************************************************/ 
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/ 
/***************                                       ****************/ 
/***************  $Modtime:: 04/04/19 3:01p    $       ****************/ 
/***************  $Revision:: 1                $       ****************/ 
/***************                                       ****************/ 
/***************   Description : OSD Game              ****************/ 
/***************                                       ****************/ 
/***************       Company : MediaTek Inc.         ****************/ 
/***************    Programmer :                       ****************/ 
/**********************************************************************/ 
 
#include "general.h" 
 
#define BLOCK_WIDTH 16 
#define BLOCK_HEIGHT 16 
 
BYTE _bX = 0; 
BYTE _bY = 0; 
 
void vOsdGamePasteBmp(BYTE bBmpIndex, WORD wX, WORD wY) 
{ 
  BYTE bLang = bSharedInfo(SI_OSD_LANG); 
  BYTE bLefCmdNo; 
 
//  if((ReadBIM(BIM_ANIRQ)&AOSDI)==0) 
  { 
    bLefCmdNo = bSharedInfo(SI_OSD_CMD_NS); 
    if(bLefCmdNo<10) 
    { 
      bNowCmdGR = bSharedInfo(SI_OSD_CMD_WPTR) + SI_OSD_CMD_PRM_GRP; 
      vWaitBusy(); 
      vBeginWriteSharedGrp(bNowCmdGR, OSD_CMD_PAS_BMP); 
      vWriteNextSharedItem(bBmpIndex); 
      vWriteNextSharedItem(bLang); 
      vWriteNextSharedItem(MENU_MSG); 
      vWriteNextSharedItem(OSD_MSG_SETUP_START); 
      vWriteNextSharedItem(bLoByte(wX)); 
      vWriteNextSharedItem(bHiByte(wX)); 
      vWriteNextSharedItem(bLoByte(wY)); 
      vWriteNextSharedItem(bHiByte(wY)); 
      vSendOsdCmd(); 
    } 
  } 
} 
 
void vOsdGameInit(void) 
{ 
  BYTE bLang = bSharedInfo(SI_OSD_LANG); 
  BYTE bLefCmdNo; 
 
//  if((ReadBIM(BIM_ANIRQ)&AOSDI)==0) 
  { 
    bLefCmdNo = bSharedInfo(SI_OSD_CMD_NS); 
    if(bLefCmdNo<10) 
    { 
      bNowCmdGR = bSharedInfo(SI_OSD_CMD_WPTR) + SI_OSD_CMD_PRM_GRP; 
      vWaitBusy(); 
      vBeginWriteSharedGrp(bNowCmdGR, OSD_CMD_SHOW_WHITE_BOARD_256); 
      vWriteNextSharedItem(bLang); 
      vWriteNextSharedItem(MENU_MSG); 
      vWriteNextSharedItem(OSD_MSG_SETUP_START); 
      vWriteNextSharedItem(OSD_MSG_SETUP_END); 
      vSendOsdCmd(); 
    } 
  } 
} 
 
 
void vOsdGameStart(void) 
{ 
  INT i=0; 
  INT j=0; 
 
  for(i=0; i<256; i+=BLOCK_WIDTH) 
    for(j=0; j<256; j+=BLOCK_HEIGHT) 
      vOsdGamePasteBmp(0, i, j); 
 
  vOsdGamePasteBmp(1, _bX*BLOCK_WIDTH, _bY*BLOCK_HEIGHT); 
} 
 
void vGameStateMachine(BYTE bKey) 
{ 
  vOsdGamePasteBmp(0, _bX*BLOCK_WIDTH, _bY*BLOCK_HEIGHT); 
 
  switch(bKey) 
  { 
    case IR_UP: 
      if (_bY>0) 
        _bY--; 
      break; 
    case IR_DOWN: 
//      if (bY<0) 
        _bY++; 
      break; 
    case IR_LEFT: 
      if (_bX>0) 
        _bX--; 
      break; 
    case IR_RIGHT: 
//      if (bX>0) 
        _bX++; 
      break; 
  } 
 
  vOsdGamePasteBmp(1, _bX*BLOCK_WIDTH, _bY*BLOCK_HEIGHT); 
}