OLED.c
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:62k
源码类别:

压缩解压

开发平台:

C++ Builder

  1. #define _OLED_H_
  2. #include "TypeDef.h"
  3. #include "Const.h"
  4. #include "Reg5661.h"
  5. #include "Common.h"
  6. #include "NandFlash.h"
  7. #include "OLED.h"
  8. #include "IconDefine.h"
  9. #include "Playback.h"
  10. #include "Idma.h"
  11. #include "OledString.h"
  12. #include "UiCommon.h"
  13. #include "UiSysStr.h"
  14. #include "IconDefine.h"
  15. #include "Video.h"
  16. #include "UiVideo.h"
  17. #if(USE_TITLE_NUM_DEBUG) // Walace091012
  18. // 5*8 number font
  19. #define CB_NUMBER_PAGE 1
  20. #define CB_NUMBER_COL  5
  21. #define CB_NUMBER_GAP 1
  22. CBYTE cbNumberChar[]={
  23. 0x7E,0x81,0x81,0x81,0x7E,
  24. 0x04,0x02,0xFF,0x00,0x00,
  25. 0x82,0xC1,0xA1,0x91,0x8E,
  26. 0x42,0x81,0x89,0x89,0x76,
  27. 0x30,0x2C,0x22,0xFF,0x20,
  28. 0x4C,0x8B,0x89,0x89,0x71,
  29. 0x7E,0x89,0x89,0x89,0x72,
  30. 0x01,0xE1,0x19,0x05,0x03,
  31. 0x76,0x89,0x89,0x89,0x76,
  32. 0x4E,0x91,0x91,0x91,0x7E
  33. };
  34. /*
  35. //6x16 font
  36. CBYTE cbNumberChar[]={0x0,0xE0,0x10,0x10,0x10,0xE0,
  37. 0x0,0x7,0x8,0x8,0x8,0x7,
  38. 0x0,0x40,0x20,0xF0,0x0,0x0,
  39. 0x0,0x0,0x0,0xF,0x0,0x0,
  40. 0x0,0x20,0x10,0x10,0x10,0xE0,
  41. 0x0,0x8,0xC,0xA,0x9,0x8,
  42. 0x0,0x20,0x10,0x90,0x90,0x60,
  43. 0x0,0x4,0x8,0x8,0x8,0x7,
  44. 0x0,0x0,0xC0,0x20,0xF0,0x0,
  45. 0x0,0x3,0x2,0x2,0xF,0x2,
  46. 0x0,0xC0,0xB0,0x90,0x90,0x10,
  47. 0x0,0x4,0x8,0x8,0x8,0x7,
  48. 0x0,0xE0,0x90,0x90,0x90,0x20,
  49. 0x0,0x7,0x8,0x8,0x8,0x7,
  50. 0x0,0x10,0x10,0x90,0x50,0x30,
  51. 0x0,0x0,0xE,0x1,0x0,0x0,
  52. 0x0,0x60,0x90,0x90,0x90,0x60,
  53. 0x0,0x7,0x8,0x8,0x8,0x7,
  54. 0x0,0xE0,0x10,0x10,0x10,0xE0,
  55. 0x0,0x4,0x9,0x9,0x9,0x7};
  56. */
  57. #endif
  58. API void OledCtrlEn(void)
  59. {
  60.        #if(OLED_USE_SM_INTERFEACE) //050725
  61. ClkSmEn();    
  62. obGPIOCDIR |= 0x10;
  63. obGPIOCDAT &= 0xef; //Lcd CSJ=0
  64. OLED_SET_CMD();
  65. #else
  66. ClkLcdEn();
  67. #ifdef USE_LCD_GPIO
  68. gxbKeepModeSel1=obMODSEL1;
  69. obMODSEL1=0;
  70. NandGpioCtrl(NAND_CS_OFF); //all off 051111
  71. // obGPIOHDAT |= 0x08; //Nand CSJ1=1
  72. obGPIOCDAT &= 0xef; //Lcd CSJ=0
  73. #else
  74. obMODSEL2 |= LCD_PAR_EN;
  75. #endif
  76. #endif
  77. }
  78. API void OledCtrlDis(void)
  79. {
  80. #if(OLED_USE_SM_INTERFEACE)
  81. obGPIOCDAT |= 0x10; //Lcd CSJ=1
  82. obGPIOCDIR |= 0x10;
  83. ClkSmDis();
  84. #else
  85. #ifdef USE_LCD_GPIO
  86. obMODSEL1=gxbKeepModeSel1;
  87. obGPIOCDAT |= 0x10; //Lcd CSJ=1
  88. NandGpioCtrl(gbChip); // 051111
  89. // obGPIOHDAT &= 0xF7; //Nand CSJ1=0
  90. #else
  91. obMODSEL2 &= LCD_PAR_DIS;
  92. #endif
  93. ClkLcdDis();
  94. #endif
  95. }
  96. /* Replace by commondelay 
  97. void OledDelay(WORD wDelayTime) large
  98. {
  99. WORD wIndex;
  100. for(wIndex=0;wIndex<wDelayTime;wIndex++)
  101. { ; }
  102. }
  103. */
  104. //#if(_PM_DIR_DEL_|_PM_VD_PLAY_|_PM_HST_|_PM_SYS_|_PM_FM_|_PM_PLAY_MAIN_|_PM_MENU_|_PM_SAVE_|_PM_INIT_CHK_|SETTING_FOR_ICE_START|USE_TITLE_NUM_DEBUG) 
  105. #if 0
  106. void OledWaitForReady(void)
  107. {
  108. #if(LCD_TYPE==TFT_ORISE)
  109. ;
  110. #else
  111. #if(OLED_USE_SM_INTERFEACE) //???
  112.   OLED_SET_STS(); //Read, Command, CSJ=0
  113. while(obSMDATALO&0x80){;}
  114. OLED_SET_CMD() ; // Command, CSJ=0
  115. #else
  116. do
  117. {
  118. obPARLCD = 0x2C; // DOE disable, command, CSJ
  119. obPARLCD = 0x24; // Read
  120. bReadData=obPARLCD_RDATA;
  121. obPARLCD = 0x2C; // 0x2D->0x2C
  122. obPARLCD = 0x24; // Read
  123. bReadData=obPARLCD_RDATA;
  124. obPARLCD = 0x2C; // 0x2D->0x2C
  125. }while(bReadData&0x80) ;
  126. #endif
  127. #endif
  128. }
  129. #endif
  130. //Walace060204#Bright start
  131. /*
  132. #if(OLED_COLOR_FIELD_TYPE==OLED_FIELD_BGR565)
  133. #define OLED_R_FACTOR 63
  134. #define OLED_G_FACTOR 63
  135. #define OLED_B_FACTOR 63
  136. #define OLED_COLOR_EXP 6
  137. #else
  138. #define OLED_R_FACTOR 16
  139. #define OLED_G_FACTOR 32
  140. #define OLED_B_FACTOR 63
  141. #define OLED_COLOR_EXP 6
  142. #endif
  143. #if(!(_PM_PLAY_DEL_|_PM_SLS_))
  144. void OledSetContrast(BYTE bContrast)
  145. {
  146. OledCtrlEn();
  147. OLED_WRITE(OLED_CMD_SET_CONTRAST_A) ;
  148. OLED_WRITE(((WORD)bContrast*OLED_R_FACTOR)>>OLED_COLOR_EXP) ;
  149. OLED_WRITE(OLED_CMD_SET_CONTRAST_B) ;
  150. OLED_WRITE(((WORD)bContrast*OLED_G_FACTOR)>>OLED_COLOR_EXP) ;
  151. OLED_WRITE(OLED_CMD_SET_CONTRAST_C) ;
  152. OLED_WRITE(((WORD)bContrast*OLED_B_FACTOR)>>OLED_COLOR_EXP) ;
  153. OledCtrlDis();
  154. }
  155. #endif
  156. */
  157. //#if(!(_PM_DIR_DEL_|_PM_PLAY_DEL_|_PM_SLS_|_PM_INIT_CHK_|_PM_USB_|_PM_PLAY_PRC_))
  158. #if(!(_PM_DIR_DEL_|_PM_PLAY_DEL_|_PM_SLS_|_PM_INIT_CHK_|_PM_USB_|_PM_PLAY_PRC_|_PM_FM_|_PM_PLAY_MAIN_)) // WHH 070128
  159. void OledSetBrightness(BYTE bBright)
  160. {
  161. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn  // Jeff070125#2
  162. //1 Need  modification
  163.    OledCtrlEn();
  164. /*OLED_SET_CMD();//==================
  165. OLED_WRITE(0xc0) ;
  166. OLED_SET_DAT();
  167. OLED_WRITE(bBright*3) ; //start oscillation exectued
  168. OLED_WRITE(bBright/2) ; //start oscillation exectued
  169. */
  170. OLED_SET_CMD();
  171. OLED_WRITE(0xc6) ;
  172. OLED_SET_DAT();
  173. OLED_WRITE(07-bBright*5+10) ;
  174. OLED_SET_CMD();
  175. OLED_WRITE(0xc5) ;
  176. OLED_SET_DAT();
  177. OLED_WRITE(0xc0-bBright*5+10) ;
  178. OledCtrlDis();
  179. #else
  180. OledCtrlEn();
  181. OLED_WRITE(OLED_CMD_SET_MASTER_CURRENT) ;
  182. OLED_WRITE(bBright&0x0F); 
  183. OledCtrlDis();
  184. #endif
  185. }
  186. #endif
  187. //Walace060204#Bright end
  188. //Walace051130#2 start
  189. #if(UI_COLOR_TUNE)
  190. void OledSetRGBContrast(PBYTE pbContrastFactor) large
  191. {
  192. OledCtrlEn();
  193. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn  // Jeff070125#2
  194. //1 Need  modification
  195. *pbContrastFactor=*pbContrastFactor;
  196. #else
  197. OLED_WRITE(OLED_CMD_SET_CONTRAST_A) ;
  198. OLED_WRITE(pbContrastFactor[0]) ;
  199. OLED_WRITE(OLED_CMD_SET_CONTRAST_B) ;
  200. OLED_WRITE(pbContrastFactor[1]) ;
  201. OLED_WRITE(OLED_CMD_SET_CONTRAST_C) ;
  202. OLED_WRITE(pbContrastFactor[2]) ;
  203. #endif
  204. OledCtrlDis();
  205. }
  206. #endif
  207. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON)  // Jeff070125#2
  208. //Walace061228#CodeSize
  209. #if(_PM_VD_PLAY_|_PM_SLS_)   // Jeff070125#2 // WHH 070128 mark
  210. //#if(_PM_SLS_) // WHH 070128 mark
  211. void TftSetWindowRot(BYTE bColStart, BYTE bRowStart, BYTE bWidth, BYTE bHeight)
  212. {
  213.    DISP_CMD_OUT(0x7);
  214. DISP_DATA_OUT(bColStart) ;
  215. DISP_CMD_OUT(0x8);
  216. DISP_DATA_OUT(bRowStart);
  217. DISP_CMD_OUT(0x10);
  218. DISP_DATA_OUT(bColStart);
  219. DISP_CMD_OUT(0x11);
  220. DISP_DATA_OUT(bRowStart+1-bHeight);
  221. DISP_CMD_OUT(0x12);
  222. DISP_DATA_OUT(bColStart+bWidth-1);
  223. DISP_CMD_OUT(0x13);
  224. DISP_DATA_OUT(bRowStart);
  225. }
  226. #endif
  227. void TftSetWindow(BYTE bColStart,BYTE bRowStart,BYTE bWidth,BYTE bHeight) 
  228. {
  229.       #if(LCD_TYPE==TFT_ORISE)
  230.   //Debug
  231. //4Column set
  232. LCD_SET_CMD();
  233. LCD_WRITE(0x2A);
  234. LCD_SET_DAT();
  235. LCD_WRITE(0x00);  
  236. LCD_WRITE(bColStart);
  237. LCD_WRITE(0x00);  
  238. LCD_WRITE(bColStart+bWidth-1);
  239.   //4  Row set
  240.   LCD_SET_CMD();
  241. LCD_WRITE(0x2B); 
  242. LCD_SET_DAT();
  243. LCD_WRITE(0x00); 
  244. LCD_WRITE(bRowStart);
  245. LCD_WRITE(0x00);
  246. LCD_WRITE(bRowStart+bHeight-1);
  247.         #elif(LCD_TYPE==TFT_TOPPOLY)  // Jeff070125#2
  248.         // WHH_301_061219 #1 (start)
  249.         DISP_CMD_OUT(0x7);
  250. DISP_DATA_OUT(bColStart) ;
  251. DISP_CMD_OUT(0x8);
  252. DISP_DATA_OUT(bRowStart);
  253. DISP_CMD_OUT(0x10);
  254. DISP_DATA_OUT(bColStart) ;
  255. DISP_CMD_OUT(0x11);
  256. DISP_DATA_OUT(bRowStart);
  257. DISP_CMD_OUT(0x12);
  258. DISP_DATA_OUT(bColStart+bWidth-1);
  259. DISP_CMD_OUT(0x13);
  260. DISP_DATA_OUT(bRowStart+bHeight-1);
  261. /*DISP_CMD_OUT(0x14);
  262. DISP_DATA_OUT(bColStart) ;
  263. DISP_CMD_OUT(0x15);
  264. DISP_DATA_OUT(bRowStart);
  265. DISP_CMD_OUT(0x16);
  266. DISP_DATA_OUT(bColStart+bWidth-1);
  267. DISP_CMD_OUT(0x17);
  268. DISP_DATA_OUT(bRowStart+bHeight-1);*/
  269. // WHH_301_061219 #1 (end)
  270. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  271. TFT_WRITE_CMD(0x4E);
  272. LCD_SET_DAT();
  273. LCD_WRITE(0x00);
  274. LCD_WRITE(bColStart);
  275. TFT_WRITE_CMD(0x4F);
  276. TFT_WRITE_DAT16(bRowStart);
  277. //4Column set
  278. TFT_WRITE_CMD(0x44);
  279. TFT_WRITE_DAT(bColStart+bWidth-1);
  280. TFT_WRITE_DAT(bColStart);
  281. //4Row set
  282. TFT_WRITE_CMD(0x45);
  283. TFT_WRITE_DAT16(bRowStart);  
  284. TFT_WRITE_CMD(0x46);
  285. TFT_WRITE_DAT16(bRowStart+bHeight-1);  
  286. #endif
  287. }
  288. #if 0
  289. void TftSetScrollArea(BYTE bScrollStartRow,BYTE bScrollEndRow)
  290. {
  291. TFT_WRITE_CMD(0x33);
  292. LCD_SET_DAT();
  293. LCD_WRITE(0);
  294. LCD_WRITE(bScrollStartRow);
  295. LCD_WRITE(0);
  296. LCD_WRITE(bScrollEndRow-bScrollStartRow);
  297. LCD_WRITE(0);
  298. LCD_WRITE(220-bScrollEndRow);
  299. }
  300. void TftSetScrollLine(BYTE bLine)
  301. {
  302. TFT_WRITE_CMD(0x37); 
  303. LCD_SET_DAT();  
  304. LCD_WRITE(0);
  305. LCD_WRITE(bLine);
  306. }
  307. #endif
  308. #endif
  309. /*
  310. #if(_PM_SYS_) //Walace070112#1
  311. #if(LCD_TYPE==TFT_ORISE) //Walace070110#1
  312. #if(LCD_NUM==ORISE_SPFD54126B)
  313. void TftColorTableSet(PXBYTE pColorRTable,PXBYTE pColorGTable,PXBYTE pColorBTable)
  314. {
  315. BYTE bIndex;
  316. TFT_WRITE_CMD(0x2D);//17h
  317. LCD_SET_DAT();
  318. for(bIndex=0;bIndex<32;bIndex++)
  319. LCD_WRITE(*(pColorRTable+bIndex));
  320. for(bIndex=0;bIndex<64;bIndex++)
  321. LCD_WRITE(*(pColorGTable+bIndex));
  322. for(bIndex=0;bIndex<32;bIndex++)
  323. LCD_WRITE(*(pColorBTable+bIndex));
  324. }
  325. #endif
  326. #endif
  327. #endif
  328. */
  329. //remove !_PM_MTP_ by tne 2006/12/01 #1
  330. #if(_PM_INIT_|_PM_USB_|SETTING_FOR_ICE_START)
  331. /*
  332. #if(LCD_TYPE==TFT_ORISE) //Walace070110#1
  333. #if(LCD_NUM==ORISE_SPFD54126B)
  334. #define R_OFFSET 0x00
  335. #define G_OFFSET 0x05
  336. #define B_OFFSET 0x06
  337. void TftColorLUTSet(void)
  338. {
  339. BYTE bIndex,bValue;
  340. TFT_WRITE_CMD(0x2D);//17h
  341. LCD_SET_DAT();
  342. for(bIndex=0;bIndex<(1<<5);bIndex++)
  343. {
  344. if(bIndex<16)
  345. bValue=(bIndex<<1);
  346. else
  347. bValue=(bIndex<<1)+1;
  348. if(bValue>R_OFFSET)
  349. bValue-=R_OFFSET;
  350. else
  351. bValue=0;
  352. TFT_WRITE_DAT(bValue);
  353. }
  354. for(bIndex=0;bIndex<(1<<6);bIndex++)
  355. {
  356. bValue=bIndex;
  357. if(bIndex>G_OFFSET)
  358. bValue-=G_OFFSET;
  359. else
  360. bValue=0;
  361. TFT_WRITE_DAT(bValue);
  362. }
  363. for(bIndex=0;bIndex<(1<<5);bIndex++)
  364. {
  365. if(bIndex<16)
  366. bValue=(bIndex<<1);
  367. else
  368. bValue=(bIndex<<1)+1;
  369. if(bValue>B_OFFSET)
  370. bValue-=B_OFFSET;
  371. else
  372. bValue=0;
  373. TFT_WRITE_DAT(bValue);
  374. }
  375. }
  376. #endif
  377. #endif
  378. */
  379. void OledInit(void)
  380. {
  381. LCD_POWER_ON();    //Walace051125#2    
  382. LCD_RESET_EN();
  383. LCD_RESET_DIS(); //Walace051125#2
  384.  
  385. OledCtrlEn();
  386. #if(OLED_USE_SM_INTERFEACE)
  387. //050802
  388. obSYSSOFTRSTCTRL |= SM_RST_DIS;
  389. obMODSEL1 |= (MOD_SM_8BIT);
  390. obGPIOCDIR |=0xF0; //050802: force LCD ctrl to output RDJ,WRJ,D/CJ,CSJ
  391. #endif
  392. #if(LCD_TYPE==TFT_ORISE)
  393. #if(LCD_NUM==ORISE_SPFD54126B) //Walace070110#1
  394. TFT_WRITE_CMD(0x11);//00h
  395. TFT_WRITE_CMD(0xC0);//power control
  396. TFT_WRITE_DAT(0x03);//05
  397. TFT_WRITE_CMD(0xC5);//VCOMH control
  398. TFT_WRITE_DAT(0xa4);//a4
  399. TFT_WRITE_CMD(0xC6);//11h
  400. TFT_WRITE_DAT(0x0b);//09
  401. TFT_WRITE_CMD(0x3A);//06h
  402. TFT_WRITE_DAT(0x05);//06;8bit
  403. TFT_WRITE_CMD(0xf0);//Orise mode
  404. TFT_WRITE_DAT(0x5a);//
  405. TFT_WRITE_CMD(0xf2);//
  406. TFT_WRITE_DAT(0x01);//
  407. TFT_WRITE_CMD(0xE0);//0Eh gamma set
  408. TFT_WRITE_DAT(0x00);
  409. TFT_WRITE_DAT(0x01);
  410. TFT_WRITE_DAT(0x06);
  411. TFT_WRITE_DAT(0x2e);
  412. TFT_WRITE_DAT(0x2a);
  413. TFT_WRITE_DAT(0x0b);
  414. TFT_WRITE_DAT(0x1d);
  415. TFT_WRITE_DAT(0x01);
  416. TFT_WRITE_DAT(0x06);
  417. TFT_WRITE_DAT(0x05);
  418. TFT_WRITE_DAT(0x0f);
  419. TFT_WRITE_DAT(0x0f);
  420. TFT_WRITE_DAT(0x00);
  421. TFT_WRITE_DAT(0x04);
  422. TFT_WRITE_DAT(0x03);
  423. TFT_WRITE_DAT(0x05);
  424. TFT_WRITE_CMD(0xE1);
  425. TFT_WRITE_DAT(0x06);
  426. TFT_WRITE_DAT(0x22);
  427. TFT_WRITE_DAT(0x25);
  428. TFT_WRITE_DAT(0x0f);
  429. TFT_WRITE_DAT(0x0a);
  430. TFT_WRITE_DAT(0x04);
  431. TFT_WRITE_DAT(0x02);
  432. TFT_WRITE_DAT(0x1d);
  433. TFT_WRITE_DAT(0x05);
  434. TFT_WRITE_DAT(0x04);
  435. TFT_WRITE_DAT(0x04);
  436. TFT_WRITE_DAT(0x00);
  437. TFT_WRITE_DAT(0x0f);
  438. TFT_WRITE_DAT(0x0f);
  439. TFT_WRITE_DAT(0x05);
  440. TFT_WRITE_DAT(0x05);
  441. TftColorLUTSet(); //Walace070110#1
  442. TFT_WRITE_CMD(0x29);//17h
  443. #elif(LCD_NUM==ORISE_SPFD54126A)
  444. //4 Sleep out & booster up
  445. TFT_WRITE_CMD(0x11);  
  446.     CommonDelay(0xFFFF);
  447.  //4Turn off the separate RGB gamma function
  448. TFT_WRITE_CMD(0xaa);
  449.  
  450.  //4   Interface pixel format
  451. SET_PIXEL_FORMAT_16BITS(); // MCU Interface --> 16 bits /pixel  //RGB Interface -- invalid value
  452. TftSetWindow(0,OLED_MAX_COL,0,OLED_MAX_ROW);
  453. //4Gamma curve selection
  454. TFT_WRITE_CMD(0x26);
  455. TFT_WRITE_DAT(0x04);
  456. //4Dispaly inversion control
  457. TFT_WRITE_CMD(0xb4);
  458. TFT_WRITE_DAT(0x00); // NLA=0,NLB=0,NLC=0 //0: line inversion 1: frame inversion
  459. CommonDelay(0xFFFF);
  460.  //4Frame rate control
  461. TFT_WRITE_CMD(0xB1);
  462. TFT_WRITE_DAT(0x02); // Amount of front porch
  463. TFT_WRITE_DAT(0x02); // Amount of back porch
  464. TFT_WRITE_DAT(0x00); // No. of clock in one line
  465.  
  466. //4Power Control 2
  467. TFT_WRITE_CMD(0xC1);
  468.      TFT_WRITE_DAT(0x05);  // Set the [AVDD,VCL,VGH,VGL] = [4.75,-2.45,14.7,-7.35]
  469. //4VCOMH Control 1
  470.    TFT_WRITE_CMD(0xC5);
  471. TFT_WRITE_DAT(0xa4); //nVm=1, VCOM=3.4
  472. //4VCOMH Control 2
  473. TFT_WRITE_CMD(0xC6);
  474. TFT_WRITE_DAT(0x09); // VCOMAC = 4.45 
  475. //4Power Control 1
  476. TFT_WRITE_CMD(0xC0);
  477. TFT_WRITE_DAT(0x03); //GVDD = 4.65 
  478. TFT_WRITE_DAT(0x06); //VC1 = 2.80
  479. //???
  480. TFT_WRITE_CMD(0xfe);
  481. TFT_WRITE_DAT(0x00);   //05
  482. TFT_WRITE_DAT(0x04);   //05
  483. CommonDelay(1000);
  484. //4Read display status //Write defaut value?? ask LCM engineer
  485. TFT_WRITE_CMD(0x09); 
  486. TFT_WRITE_DAT(0x00); 
  487. TFT_WRITE_DAT(0x61);
  488. TFT_WRITE_DAT(0x00);
  489. TFT_WRITE_DAT(0x00);
  490.  //4Read display image mode
  491. TFT_WRITE_CMD(0x0D);
  492. TFT_WRITE_DAT(0x00); // vertical scroll off, inversion off, gamma curve selection = GC0
  493. //4Gamma curve select
  494. TFT_WRITE_CMD(0x26);
  495. TFT_WRITE_DAT(0x01); // select GC0 (Gamma curve selection 0)
  496. //4 Gamma " +"  polarity correction characteristics setting
  497. TFT_WRITE_CMD(0xE0);
  498. TFT_WRITE_DAT(0x90); 
  499. TFT_WRITE_DAT(0x7D);
  500. TFT_WRITE_DAT(0x33);
  501. TFT_WRITE_DAT(0x74);
  502. TFT_WRITE_DAT(0x57);
  503. //4Gamma "-"  polarity correction characteristics setting
  504. TFT_WRITE_CMD(0xE1);
  505. TFT_WRITE_DAT(0x90);
  506. TFT_WRITE_DAT(0x7D);
  507. TFT_WRITE_DAT(0x33);
  508. TFT_WRITE_DAT(0x74);
  509. TFT_WRITE_DAT(0x57);
  510. //4Lcd Rot 90 degree and left alignment
  511. #if(TFT_ROT90_AND_LEFT_ALIGNMENT)
  512. LCD_ROT90_DISPLAY_EN();
  513. #endif
  514. #if(TFT_FRAME_RATE_UP)
  515. TFT_WRITE_CMD(0xB1);
  516. TFT_WRITE_DAT(15);
  517. TFT_WRITE_DAT(15);
  518. TFT_WRITE_DAT(15);
  519. #endif
  520. //4LCD Display On
  521. OledDisplayOn(TRUE);
  522. #elif(LCD_NUM==ORISE_SPFD54124A)
  523. // Jeff_061130 TFT initial code start
  524. obGPIOCDIR |=0x08;
  525.        obGPIOCDAT &=0xf7;
  526. CommonDelay(5000);
  527.        obGPIOCDAT |=0x08;
  528.    
  529. OLED_SET_CMD();   
  530. OLED_WRITE(0x11);
  531. OLED_WRITE(0x20);
  532. OLED_WRITE(0x38);
  533. OLED_WRITE(0x13);
  534. OLED_WRITE(0x3A);
  535. OLED_SET_DAT();
  536. OLED_WRITE(0x05);
  537. OLED_SET_CMD();   
  538. OLED_WRITE(0xC0);
  539. OLED_SET_DAT();
  540.      OLED_WRITE(0x03);
  541. //4VCOMH Control 1
  542. OLED_SET_CMD();   
  543. OLED_WRITE(0xC5);
  544. OLED_SET_DAT();
  545. OLED_WRITE(0xc0);
  546. //OLED_WRITE(0xd9);
  547. //4VCOMH Control 2
  548. OLED_SET_CMD();   
  549. OLED_WRITE(0xC6);
  550. OLED_SET_DAT();
  551.        OLED_WRITE(0x07);
  552. //OLED_WRITE(0x1f);//(0x1F);
  553.        CommonDelay(5000);
  554. //OLED_SET_CMD();   
  555. //OLED_WRITE(0xFE);
  556. //OLED_SET_DAT();
  557. //OLED_WRITE(0x00);
  558. //OLED_WRITE(0x04);
  559.        
  560. OLED_SET_CMD();   
  561. OLED_WRITE(0xe0);
  562. OLED_SET_DAT();
  563. OLED_WRITE(0x10);
  564. OLED_WRITE(0x11);
  565. OLED_WRITE(0x11);
  566. OLED_WRITE(0x11);
  567. OLED_WRITE(0x11);
  568. OLED_WRITE(0x11);
  569. OLED_WRITE(0x01);
  570.        //OLED_SET_CMD();   
  571.        //OLED_WRITE(0x26);
  572.        //OLED_SET_DAT();
  573.        //OLED_WRITE(0x04);
  574.        OLED_SET_CMD();   
  575. OLED_WRITE(0x2A);
  576. OLED_SET_DAT();
  577. OLED_WRITE(0x00);
  578. OLED_WRITE(0x00);
  579. OLED_WRITE(0x00);
  580. OLED_WRITE(0x7F);
  581. OLED_SET_CMD();   
  582. OLED_WRITE(0x2B);
  583. OLED_SET_DAT();
  584. OLED_WRITE(0x00);
  585. OLED_WRITE(0x00);
  586. OLED_WRITE(0x00);
  587. OLED_WRITE(0x9F);
  588. //4Gamma curve selection
  589. OLED_SET_CMD();   
  590. OLED_WRITE(0x36);
  591. OLED_SET_DAT();
  592. OLED_WRITE(0x00);
  593. OLED_SET_CMD();   
  594. OLED_WRITE(0x29);
  595. // Jeff_061130 end
  596. #endif
  597. #elif(LCD_TYPE==TFT_TOPPOLY) // Jeff070125#2
  598. // WHH_301_061219 #1 (start)
  599. obGPIOCDIR |=0x08;
  600. obGPIOCDAT &=0xf7;
  601. CommonDelay(3000);
  602. obGPIOCDAT |=0x08;
  603. DISP_CMD_OUT(0X01);
  604. DISP_DATA_OUT(0X02);   
  605. DISP_CMD_OUT(0X02);
  606. DISP_DATA_OUT(0X80);
  607. DISP_CMD_OUT(0X03);
  608. DISP_DATA_OUT(0X80);
  609. DISP_CMD_OUT(0X04);
  610. DISP_DATA_OUT(0X50);
  611. DISP_CMD_OUT(0X18);
  612. DISP_DATA_OUT(0X02);
  613. DISP_CMD_OUT(0X35);
  614. DISP_DATA_OUT(0X01);
  615. CommonDelay(50000);
  616. DISP_CMD_OUT(0X07);
  617. DISP_DATA_OUT(0X00);
  618. DISP_CMD_OUT(0X08);
  619. DISP_DATA_OUT(0X00);
  620. DISP_CMD_OUT(0X05);
  621. DISP_DATA_OUT(0X05);
  622. DISP_CMD_OUT(0X06);
  623. DISP_DATA_OUT(0X05);
  624. DISP_CMD_OUT(0X09);
  625. DISP_DATA_OUT(0X10);
  626. DISP_CMD_OUT(0X14);
  627. DISP_DATA_OUT(0X00);
  628. DISP_CMD_OUT(0X15);
  629. DISP_DATA_OUT(0X00);
  630. DISP_CMD_OUT(0X16);
  631. DISP_DATA_OUT(0X5f);
  632. DISP_CMD_OUT(0X17);
  633. DISP_DATA_OUT(0X3f);
  634. DISP_CMD_OUT(0X10);
  635. DISP_DATA_OUT(0X00);
  636. DISP_CMD_OUT(0X11);
  637. DISP_DATA_OUT(0X00);
  638. DISP_CMD_OUT(0X12);
  639. DISP_DATA_OUT(0XAF);
  640. DISP_CMD_OUT(0X13);
  641. DISP_DATA_OUT(0XDB);
  642. DISP_CMD_OUT(0X3F);
  643. DISP_DATA_OUT(0X08);
  644. DISP_CMD_OUT(0X5A);
  645. DISP_DATA_OUT(0X1C);
  646. DISP_CMD_OUT(0x14);
  647. DISP_DATA_OUT(0) ;
  648. DISP_CMD_OUT(0x15);
  649. DISP_DATA_OUT(0);
  650. DISP_CMD_OUT(0x16);
  651. DISP_DATA_OUT(0xAF);
  652. DISP_CMD_OUT(0x17);
  653. DISP_DATA_OUT(0xDB);
  654. DISP_CMD_OUT(0X02);
  655. DISP_DATA_OUT(0X80);
  656. // WHH_301_061219 #1 (end)
  657. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  658. #if(LCD_NUM==SOLOMON_SSD1289)
  659. TFT_WRITE_CMD(0x00);//Oscillation Start
  660. TFT_WRITE_DAT16(0x0001);
  661. TFT_WRITE_CMD(0x10);//Sleep Mode
  662. TFT_WRITE_DAT16(0x0000);//0a00
  663. TFT_WRITE_CMD(0x07);//Display control
  664. TFT_WRITE_DAT16(0x0033);
  665. TFT_WRITE_CMD(0x11);//Entry mode
  666. TFT_WRITE_DAT16(0x6830);
  667. TFT_WRITE_CMD(0x01);//Driver output control
  668. TFT_WRITE_DAT16(0x2B3F);
  669. TFT_WRITE_CMD(0x02);//LCD driver AC control
  670. TFT_WRITE_DAT16(0x0600);//0600
  671. TFT_WRITE_CMD(0x03);//Power control(1)
  672. TFT_WRITE_DAT16(0x6A64);//VGH
  673. TFT_WRITE_CMD(0x0B);//Frame cycle control
  674. TFT_WRITE_DAT16(0x5308);//65HZ
  675. // TFT_WRITE_DAT(0x0600);//new code
  676. TFT_WRITE_CMD(0x0C);//Power control(2)
  677. TFT_WRITE_DAT16(0x0007);
  678. TFT_WRITE_CMD(0x0D);//Power control(3)
  679. TFT_WRITE_DAT16(0x000A);//VLCD63(0X000A)
  680. TFT_WRITE_CMD(0x0F);//Gate scan start
  681. TFT_WRITE_DAT16(0x0000);
  682. TFT_WRITE_CMD(0x1E);//Power control(5) VCOMH
  683. TFT_WRITE_DAT16(0x00B7);//(B6)
  684. TFT_WRITE_CMD(0x0E);//Power control(4) VCOML
  685. TFT_WRITE_DAT16(0x2C00);
  686. TFT_WRITE_CMD(0x25);//Frame Frequency
  687. TFT_WRITE_DAT16(0xE000);
  688. TFT_WRITE_CMD(0x44);//Horizontal RAM address position
  689. TFT_WRITE_DAT16(0xEF00);
  690. TFT_WRITE_CMD(0x45);//Vertical RAM start address position
  691. TFT_WRITE_DAT16(0x0000);
  692. TFT_WRITE_CMD(0x46);//Vertical RAM end address position
  693. TFT_WRITE_DAT16(0x013F);
  694. //TFT_WRITE_CMD(0x0021);
  695. //TFT_WRITE_DAT16(0x0000);  
  696. TFT_WRITE_CMD(0x30);//r cptrol
  697. TFT_WRITE_DAT16(0x0000);
  698. TFT_WRITE_CMD(0x31);//r cptrol
  699. TFT_WRITE_DAT16(0x0405);
  700. TFT_WRITE_CMD(0x32);//r cptrol
  701. TFT_WRITE_DAT16(0x0000);
  702. TFT_WRITE_CMD(0x33);//r cptrol
  703. TFT_WRITE_DAT16(0x0700);
  704. TFT_WRITE_CMD(0x34);//r cptrol
  705. TFT_WRITE_DAT16(0x0200);
  706. TFT_WRITE_CMD(0x35);//r cptrol
  707. TFT_WRITE_DAT16(0x0303);
  708. TFT_WRITE_CMD(0x36);//r cptrol
  709. TFT_WRITE_DAT16(0x0704);
  710. TFT_WRITE_CMD(0x37);//r cptrol
  711. TFT_WRITE_DAT16(0x0200);
  712. TFT_WRITE_CMD(0x3A);//r cptrol
  713. TFT_WRITE_DAT16(0x0700);
  714. TFT_WRITE_CMD(0x3B);//r cptrol
  715. TFT_WRITE_DAT16(0x0003);
  716. TFT_WRITE_CMD(0x22);//RAM data write/read
  717. #endif
  718. #else
  719.        OLED_SET_CMD();
  720. OLED_WRITE(OLED_CMD_SET_DISP_OFF) ;
  721.        CommonDelay(3000);
  722.  
  723. //OledWriteCommand(OLED_CMD_SET_MUX_RATIO) ;
  724. //OledWriteCommand(0x3F) ; //default value
  725. //OledWaitForReady() ;
  726. //OledWriteCommand(OLED_CMD_SET_START_LINE) ;
  727. //OledWriteCommand(0x00) ; //default value
  728. //OledWaitForReady() ;
  729. //OledWriteCommand(OLED_CMD_SET_DISP_OFFSET) ;
  730. //OledWriteCommand(0x00) ; //default value
  731. OLED_WRITE(OLED_CMD_SET_REMAP_FORMAT) ;
  732. OLED_WRITE(OLED_5661_MAP_DRAWDIR_COL) ;
  733. OLED_WRITE(OLED_CMD_SET_MASTER_CURRENT) ;
  734.  //Walace060204#Bright start
  735. OLED_WRITE(gxbLcdContrast) ;  //Walace060320#2
  736. /*
  737. #if(OLED_COLOR_FIELD_TYPE==OLED_FIELD_BGR565)
  738.        OLED_WRITE(0x05) ; //bright 0x00~0x0F
  739. #else //OLED_FIELD_RGB565
  740. OLED_WRITE(0x09) ; //bright 0x00~0x0F
  741. #endif
  742. */
  743. OLED_WRITE(OLED_CMD_SET_VA) ;
  744. OLED_WRITE(0x00) ; // Voltage level = 0.43*Vref
  745. OLED_WRITE(OLED_CMD_SET_VB) ;
  746. OLED_WRITE(0x00) ; // Voltage level = 0.43*Vref
  747. OLED_WRITE(OLED_CMD_SET_VC) ;
  748. OLED_WRITE(0x00) ;  // Voltage level = 0.43*Vref
  749. OLED_WRITE(OLED_CMD_SET_VCOMMH) ;
  750. OLED_WRITE(0x7F) ;  // VCOMH = 1.0*Vref
  751. OLED_WRITE(OLED_CMD_SET_POWER_SAVE) ;
  752. OLED_WRITE(0x12) ; // 0x12 Power Save mode
  753.                                                    // 0x00 normal mode
  754.                                                    
  755. OLED_WRITE(OLED_CMD_SET_PHASE12) ;
  756. OLED_WRITE(0x24) ;
  757. OLED_WRITE(OLED_CMD_SET_LINEAR_GRAY_TABLE);
  758. //OledWriteCommand(OLED_CMD_SET_DISP_CLK_DIVIDER) ;
  759. //OledWriteCommand(0xD0) ; // default value
  760. OLED_WRITE(OLED_CMD_SET_MASTER_CONFIG) ;
  761. OLED_WRITE(MASTER_CONFIG|MASTER_CONFIG_INTER_VCOMH|MASTER_CONFIG_INTER_VP) ;
  762.        OledCtrlDis();
  763.        OLED_CLEAR_ALL(); 
  764.        OledCtrlEn();
  765. //Walace060204#Bright start
  766. OLED_SET_CONTRAST_HI();
  767. //Walace060204#Bright end
  768. OLED_WRITE(OLED_CMD_SET_DISP_ON) ;
  769.        CommonDelay(3000);
  770. OLED_DISP_MASK_INIT();
  771. #endif
  772. OledCtrlDis();
  773. }
  774. #endif //#if(!_PM_USB_)
  775. //#if(!(_PM_PLAY_DEL_|_PM_DIR_DEL_))  //Walace060908#1
  776. void OledDisplayOn(BOOL fPowerOn) 
  777. {  
  778. OledCtrlEn();
  779. #if(LCD_TYPE==TFT_ORISE)
  780. if(fPowerOn) 
  781. OLED_WRITE(TFT_CMD_SET_DISP_ON);
  782. else
  783. OLED_WRITE(TFT_CMD_SET_DISP_OFF);
  784. #elif(LCD_TYPE==TFT_TOPPOLY)  // Jeff070125#2
  785. if(fPowerOn)   // WHH_301_061219 #1
  786. {DISP_CMD_OUT(0X02);
  787.          DISP_DATA_OUT(0X80); }
  788. else           // WHH_301_061219 #1
  789. {DISP_CMD_OUT(0X02);
  790.          DISP_DATA_OUT(0X40); }
  791. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  792. TFT_WRITE_CMD(0x07);
  793. if(fPowerOn) 
  794. {TFT_WRITE_DAT16(0x0033);}
  795. else
  796. {TFT_WRITE_DAT16(0x0000);}
  797. #else
  798. if(fPowerOn) 
  799. OLED_WRITE(OLED_CMD_SET_DISP_ON);
  800. else
  801. OLED_WRITE(OLED_CMD_SET_DISP_OFF);
  802. #endif
  803. //OledWaitForReady(); //tne 2005/11/22 #2
  804. OledCtrlDis();
  805. }
  806. //#endif
  807. #if(0) //tne 2007/01/08 #1
  808. void OledDisplayFade(BOOL fFadeIn,WORD wDelay)
  809. {
  810. BYTE bI ;
  811. // for(bI=0; bI<=MAX_CONTRAST; bI++)
  812. for(bI=0; bI<=MAX_BRIGHTNESS; bI++)//Walace060204#Bright 
  813. {
  814. if(fFadeIn)
  815.                OledSetBrightness(bI);
  816. else
  817. OledSetBrightness(MAX_BRIGHTNESS-bI);
  818. CommonDelay(wDelay);
  819. }
  820. }
  821. #endif
  822. //Walace061228#CodeSize
  823. #if(0)
  824. void OledDMAToLcd(WORD wIconIndex,BYTE bColStart, BYTE bRowStart, BYTE bWidth, BYTE bHeight)
  825. {
  826. WORD wIconSize;    
  827. WORD wPixelIndex;
  828.         WORD wByteIndex;
  829. WORD wBuff;
  830. #if(OLED_USE_MASK_DISPLAY)
  831. BYTE bKeepCLK;
  832. WORD wIndex;
  833. #endif
  834. OledCtrlEn();
  835. //wIconSize = (DWORD)bWidth*bHeight*2; // unit in byte
  836. wIconSize = (WORD)bWidth*(WORD)bHeight; // unit in pixel
  837. wPixelIndex=0;
  838. #if(OLED_USE_MASK_DISPLAY)
  839. if(!gfIconMaskEn)
  840. #endif
  841. {
  842. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn   // Jeff070125#2
  843. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  844. #else
  845. OLED_WRITE(OLED_CMD_SET_COL_ADDR) ;
  846. OLED_WRITE(bColStart) ;
  847. OLED_WRITE(bColStart+bWidth-1) ;
  848. OLED_WRITE(OLED_CMD_SET_ROW_ADDR) ;
  849. OLED_WRITE(bRowStart) ;
  850. OLED_WRITE(bRowStart+bHeight-1) ;
  851. #endif
  852. }
  853. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn    // Jeff070125#2
  854. TFT_MEMORY_WRITE_START();
  855. #endif
  856. while(wIconSize)
  857. {
  858. OledCtrlDis();
  859.        NandReadPhySec(gxwFontTable[FONT_SYS]+(wIconIndex>>SYSFONT_SECTOR_DIV), 1, SRAM_LYRICS_ADDR) ;
  860. OledCtrlEn();
  861. wByteIndex = ((wIconIndex&SYSFONT_OFFSET_MASK)<<SYSFONT_MIN_ALO_EXP);
  862. //wBuff = (SECTOR_SIZE -wByteIndex); // unit in byte
  863. wBuff = (SECTOR_SIZE -wByteIndex)>>1; // unit in pixel
  864.               if(wIconSize<=wBuff)
  865.    wBuff=wIconSize;
  866. #if(OLED_USE_MASK_DISPLAY)
  867.        //2 Send pixel with mask process (Slower)
  868. if(gfIconMaskEn)
  869. {
  870. bKeepCLK=obCLKMCUDIVF; //Walace060131#3
  871. SetSysSpeed(0x03);
  872. //for(wIndex=0;wIndex<wBuff;wIndex+=2)  // unit in byte
  873. for(wIndex=0;wIndex<wBuff;wIndex+=1) // unit in pixel
  874. {
  875. OledDrawPoint(bColStart+wPixelIndex%bWidth,bRowStart+wPixelIndex/bWidth,*((PXWORD)(SRAM_LYRICS_ADDR+wByteIndex+wIndex)));
  876. wPixelIndex++;
  877. }
  878. SetSysSpeed(bKeepCLK); //Walace060131#3
  879. }
  880. //2 Send pixel data with DMA  (Faster)
  881. else
  882. #endif
  883. {
  884. #if 1
  885. OLED_SET_DAT();
  886.       // OledDMASramToSM(wByteIndex+=0x0800,wBuff); // wBuff(unit in byte)
  887.  OledDMASramToSM(wByteIndex+=0x0800,(wBuff<<1)); // wBuff (unit in pixel)
  888. OLED_SET_CMD();
  889. #else
  890. for(wDebug2=0;wDebug2<wBuff;wDebug2++)
  891. {
  892. //LCD_WRITE(*((PXBYTE)(wDebug2+wByteIndex+0xC800)));
  893. if((wDebug3)%2==0)
  894. {
  895. TFT_WRITE_DAT16(0xF800);
  896. }
  897. else
  898. {
  899. TFT_WRITE_DAT16(0xFFFF);
  900. }
  901. CommonDelay(0x2000);
  902. if(wDebug3==100)
  903. {
  904. CommonDelay(0x4000);
  905. }
  906. wDebug3++;
  907. }
  908. //OLED_SET_CMD();
  909. #endif
  910. }
  911. //wIconIndex+=(wBuff>>SYSFONT_MIN_ALO_EXP);  // wBuff(unit in byte)
  912. wIconIndex+=(wBuff>>(SYSFONT_MIN_ALO_EXP-1)); // wBuff (unit in pixel) //((wBuff<<1)>>SYSFONT_MIN_ALO_EXP)
  913. wIconSize-=wBuff;
  914. }
  915. OledCtrlDis();
  916. }
  917. #endif
  918. //#if(1) // WHH 070128
  919. #if(!(_PM_PLAY_DEL_|_PM_DIR_DEL_)) // WHH 070128
  920. void OledDMAToLcdNew(BYTE bGuiIcon, WORD wIconIndex,BYTE bColStart, BYTE bRowStart, BYTE bWidth, BYTE bHeight) // WHH_301_061219 #1 (start)
  921. {
  922. WORD wIconSize;    
  923. WORD wPixelIndex;
  924.         WORD wByteIndex;
  925. WORD wBuff;
  926. #if(OLED_USE_MASK_DISPLAY)
  927. BYTE bKeepCLK;
  928. WORD wIndex;
  929. #endif
  930. OledCtrlEn();
  931. //wIconSize = (DWORD)bWidth*bHeight*2; // unit in byte
  932. wIconSize = (WORD)bWidth*(WORD)bHeight; // unit in pixel
  933. wPixelIndex=0;
  934. #if(OLED_USE_MASK_DISPLAY)
  935. if(!gfIconMaskEn)
  936. #endif
  937. {
  938. #if(LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn  // Jeff_070125#2
  939. #if(!_PM_VD_PLAY_) // WHH 070128
  940. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  941. #else
  942. //if(wIconIndex ==IM_BG_CLEAR_TO_BLACK)
  943. /* if(wIconIndex ==IM_BG_VIDEO_CLEAR_TO_BLACK) // WHH 070126 //tony070129
  944. {
  945. //TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  946. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  947. OledDrawDirection(OLED_RAM_ACCESS_MODE_COLUMN_FIRST); 
  948. }
  949. else
  950. {*/
  951. LCD_ROT90_DISPLAY_EN();
  952. TftSetWindowRot(bRowStart,OLED_MAX_ROW-bColStart-1,bHeight,bWidth);
  953. // }
  954. #endif
  955. #elif(LCD_TYPE==TFT_ORISE)
  956. #if(_PM_VD_PLAY_) 
  957. LCD_ROT90_DISPLAY_EN();
  958. #endif
  959. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  960. #else
  961. OLED_WRITE(OLED_CMD_SET_COL_ADDR) ;
  962. OLED_WRITE(bColStart) ;
  963. OLED_WRITE(bColStart+bWidth-1) ;
  964. OLED_WRITE(OLED_CMD_SET_ROW_ADDR) ;
  965. OLED_WRITE(bRowStart) ;
  966. OLED_WRITE(bRowStart+bHeight-1) ;
  967. #endif
  968. }
  969. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  970. TFT_MEMORY_WRITE_START(); // Jeff_310_061220
  971. #endif
  972. while(wIconSize)
  973. {
  974. OledCtrlDis();
  975.        // WHH #9 301_061229(start)
  976.                //NandReadPhySec(gxwFontTable[FONT_SYS]+(wIconIndex>>SYSFONT_SECTOR_DIV), 1, SRAM_LYRICS_ADDR) ;
  977. NandReadPhySec(gxwFontTable[FONT_SYS+bGuiIcon]+(wIconIndex>>SYSFONT_SECTOR_DIV), 1, SRAM_LYRICS_ADDR) ;
  978.           // WHH #9 301_061229(end)
  979. OledCtrlEn();
  980. wByteIndex = ((wIconIndex&SYSFONT_OFFSET_MASK)<<SYSFONT_MIN_ALO_EXP);
  981. //wBuff = (SECTOR_SIZE -wByteIndex); // unit in byte
  982. wBuff = (SECTOR_SIZE -wByteIndex)>>1; // unit in pixel
  983. if(wIconSize<=wBuff)
  984. wBuff=wIconSize;
  985. #if(OLED_USE_MASK_DISPLAY)
  986.        //2 Send pixel with mask process (Slower)
  987. if(gfIconMaskEn)
  988. {
  989. bKeepCLK=obCLKMCUDIVF; //Walace060131#3
  990. SetSysSpeed(0x03);
  991. //for(wIndex=0;wIndex<wBuff;wIndex+=2)  // unit in byte
  992. for(wIndex=0;wIndex<wBuff;wIndex+=1) // unit in pixel
  993. {
  994. OledDrawPoint(bColStart+wPixelIndex%bWidth,bRowStart+wPixelIndex/bWidth,*((PXWORD)(SRAM_LYRICS_ADDR+wByteIndex+wIndex)));
  995. wPixelIndex++;
  996. }
  997. SetSysSpeed(bKeepCLK); //Walace060131#3
  998. }
  999. //2 Send pixel data with DMA  (Faster)
  1000. else
  1001. #endif
  1002. {
  1003. OLED_SET_DAT();
  1004.       // OledDMASramToSM(wByteIndex+=0x0800,wBuff); // wBuff(unit in byte)
  1005. OledDMASramToSM(wByteIndex+=0x0800,(wBuff<<1)); // wBuff (unit in pixel)
  1006. OLED_SET_CMD();
  1007. }
  1008. //wIconIndex+=(wBuff>>SYSFONT_MIN_ALO_EXP);  // wBuff(unit in byte)
  1009. wIconIndex+=(wBuff>>(SYSFONT_MIN_ALO_EXP-1)); // wBuff (unit in pixel) //((wBuff<<1)>>SYSFONT_MIN_ALO_EXP)
  1010. wIconSize-=wBuff;
  1011. }
  1012. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) // WHH 070128
  1013. #if(_PM_VD_PLAY_) 
  1014. OledDrawDirection(OLED_RAM_ACCESS_MODE_COLUMN_FIRST); 
  1015. #endif
  1016. #endif
  1017. OledCtrlDis();
  1018. }
  1019. #endif 
  1020. //#if(!(_PM_PLAY_DEL_|_PM_DIR_DEL_))
  1021. #if(0) //not used now, tne 2007/01/08 #1
  1022. void OledClearArea(BYTE bColStart, BYTE bRowStart, BYTE bWidth, BYTE bHeight)
  1023. {
  1024. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn  // Jeff070125#2
  1025. BYTE bKeepCLK;
  1026. WORD wIconIndex;
  1027. #else
  1028. WORD wAreaSize;
  1029. #endif
  1030. OledCtrlEn();
  1031. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON)//Jim#TftSolomn  // Jeff070125#2
  1032. bKeepCLK = obCLKMCUDIVF;
  1033. SetSysSpeed(0x03);
  1034. wIconIndex = ICON_BG_BLACK;
  1035. wIconIndex++; // skip icon config information
  1036. OledDMAToLcd(wIconIndex, bColStart, bRowStart,  bWidth,  bHeight);
  1037. SetSysSpeed(bKeepCLK);
  1038. #else
  1039.         wAreaSize = ((WORD)bWidth*(WORD)bHeight)/OLED_PROC_DELAY_DIV;
  1040. OLED_WRITE(OLED_GCMD_CLEAR_WINDOW) ;
  1041. OLED_WRITE(bColStart) ;
  1042. OLED_WRITE(bRowStart) ;
  1043. OLED_WRITE(bColStart+bWidth-1) ;
  1044. OLED_WRITE(bRowStart+bHeight-1) ;
  1045. CommonDelay(wAreaSize);
  1046. #endif
  1047. OledCtrlDis();  
  1048. }
  1049. #endif
  1050. #if(LCD_TYPE==TFT_ORISE)
  1051. /*
  1052. void TftMoveLine(BYTE bColStart, BYTE bRowStart,BYTE bWidth,BYTE bColTarget, BYTE bRowTarget,BOOL fReverse) large
  1053. {
  1054. // OledCopyArea(bColStart,bRowStart)
  1055. BYTE bMove;
  1056. bMove=0;
  1057. while(bWidth)
  1058. {
  1059. if(bWidth<WORD1)
  1060. {
  1061. bMove=bWidth;
  1062. bWidth=0;
  1063. }
  1064. else
  1065. {
  1066. bMove=WORD1;
  1067. bWidth-=bMove;
  1068. }
  1069. OledReadIconToSram(FS_LRC,bColStart,bRowStart,bMove,LINE1); 
  1070. if(fReverse)
  1071. SramDataReverse((PXBYTE)(SRAM_LYRICS_ADDR),(WORD)bMove*LINE1*3);
  1072. OledShowIconFromSram(SRAM_LYRICS_ADDR,bColTarget,bRowTarget,bMove,LINE1); 
  1073. bColStart+=bMove;
  1074. bColTarget+=bMove;
  1075. }
  1076. }
  1077. */
  1078. #endif
  1079. #if(_LCD_COPY_)
  1080. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON)    //Jim#TftSolomn  // Jeff070125#2
  1081. void SramDataReverse(PBYTE pbSram,WORD wDataSize) large
  1082. {
  1083. while(wDataSize)
  1084. {
  1085. wDataSize--;
  1086. pbSram[wDataSize]=(~pbSram[wDataSize]);
  1087. }
  1088. }
  1089. #endif
  1090. #if((_LCD_COPY_)&(!_PM_VD_PLAY_)&(!_PM_FM_)) // WHH 070128
  1091. void OledCopyArea(BYTE bColStart, BYTE bRowStart, BYTE bWidth, BYTE bHeight, BYTE bColTarget, BYTE bRowTarget)
  1092. {
  1093. #if((LCD_TYPE==TFT_ORISE)||(LCD_TYPE==TFT_TOPPOLY)||(LCD_TYPE==TFT_SOLOMON))    //Jim#TftSolomn // Jeff070125#2
  1094. BYTE bKeepClk;
  1095. BYTE bStepWidth,bStepHeight;
  1096. BYTE bColKeep,bTargetColKeep;
  1097. BYTE bKeepWidth; //Jim061201#1 
  1098. bKeepClk = obCLKMCUDIVF;
  1099. SetSysSpeed(0x03);
  1100. while(bHeight)
  1101. {
  1102. //WHH #7 301_061226
  1103. //if(bHeight>LINE1)
  1104. // bStepHeight = LINE1;
  1105. if(bHeight>UI_FILST_ROW)
  1106. bStepHeight = UI_FILST_ROW;
  1107. else
  1108. bStepHeight=bHeight;
  1109. bHeight-=bStepHeight;
  1110. bColKeep=bColStart;
  1111. bTargetColKeep=bColTarget;
  1112. bKeepWidth = bWidth;  //Jim061201#1 
  1113. while(bKeepWidth) //Jim061201#1 
  1114. {
  1115. //if(bKeepWidth>WORD1)    //Jim061201#1 
  1116. // bStepWidth = WORD1;
  1117. if(bKeepWidth>UI_FILST_COL) //WHH #7 301_061226
  1118. bStepWidth = UI_FILST_COL;
  1119. else
  1120. bStepWidth=bKeepWidth;
  1121. bKeepWidth-=bStepWidth;  //Jim061201#1 
  1122. OledReadIconToSram(FS_LRC,bColStart,bRowStart,bStepWidth,bStepHeight); 
  1123. if(gxbCopyReverse)
  1124. SramDataReverse((PXBYTE)(SRAM_LYRICS_ADDR),(WORD)bStepWidth*bStepHeight*3);
  1125. OledShowIconFromSram(SRAM_LYRICS_ADDR,bColTarget,bRowTarget,bStepWidth,bStepHeight); 
  1126. bColStart+=bStepWidth;
  1127. bColTarget+=bStepWidth;
  1128. }
  1129. bColStart=bColKeep;
  1130. bColTarget=bTargetColKeep;
  1131. bRowStart+=bStepHeight;
  1132. bRowTarget+=bStepHeight;
  1133. }
  1134. SetSysSpeed(bKeepClk);
  1135. #else
  1136.     WORD wAreaSize;
  1137. OledCtrlEn();
  1138.        wAreaSize = ((WORD)bWidth*(WORD)bHeight)/OLED_PROC_DELAY_DIV;
  1139. OLED_WRITE(OLED_GCMD_COPY) ;
  1140. OLED_WRITE(bColStart) ;
  1141. OLED_WRITE(bRowStart) ;
  1142. OLED_WRITE(bColStart+bWidth-1) ;
  1143. OLED_WRITE(bRowStart+bHeight-1) ;
  1144. OLED_WRITE(bColTarget) ;
  1145. OLED_WRITE(bRowTarget) ;
  1146. CommonDelay(wAreaSize);
  1147. OledCtrlDis();
  1148. #endif
  1149. }
  1150. #endif // WHH 070128
  1151. #endif
  1152. //#if( (_PM_FLIST_&UI_USE_FILE_LIST) |_PM_FM_|_PM_SYS_|_PM_HST_|_PM_PHOTO_|(_PM_VIDEO_&!_PM_VD_MENU_)|_PM_CLIST_|_PM_CUSTOM_)//060814Renshuo#A   // Jeff070125#3
  1153. #if(_PM_SYS_|_PM_HST_)
  1154. API void OledReverse(BYTE bColStart,BYTE bRowStart,BYTE bWidth,BYTE bHeight)
  1155. {
  1156. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON)//Jim#TftSolomn  // Jeff070125#2
  1157. #if(!_PM_SYS_)    // Jeff070125#3
  1158. OledShowIconNew(1, IM_EXPLORE_BUTTON_CLEAR_ALL, 0, UI_FILST_LIGHT_START_ROW+gxbUiMenuSubStates*UI_FILST_LIGHT_ROW);
  1159. #endif
  1160. gxbCopyReverse=TRUE;
  1161. OledCopyArea(bColStart,bRowStart,bWidth,bHeight,bColStart,bRowStart);
  1162. gxbCopyReverse=FALSE;
  1163. /*
  1164. OledReadIconToSram(FS_LRC,bColStart,bRowStart,bWidth,bHeight); 
  1165. SramDataReverse((PXBYTE)(SRAM_LYRICS_ADDR),(WORD)bWidth*bHeight*3);
  1166. OledShowIconFromSram(SRAM_LYRICS_ADDR,bColStart,bRowStart,bWidth,bHeight); 
  1167. */
  1168. #else
  1169. BYTE bKeepCLK;
  1170. bKeepCLK = obCLKMCUDIVF; //Walace060131#3
  1171. SetSysSpeed(0x08);  
  1172. OledCtrlEn();
  1173. OLED_WRITE(OLED_GCMD_FILL_ENABLE) ;  
  1174. OLED_WRITE(OLED_REVERSE_COPY|OLED_NOT_FILL) ;
  1175. OledCtrlDis() ;
  1176. OledCopyArea(bColStart, bRowStart,bWidth,bHeight,bColStart,bRowStart);
  1177. OledCtrlEn();
  1178. OLED_WRITE(OLED_GCMD_FILL_ENABLE) ;
  1179. OLED_WRITE(OLED_NOT_REVERSE_COPY|OLED_NOT_FILL) ;
  1180. OledCtrlDis() ;
  1181. SetSysSpeed(bKeepCLK);  //Walace060131#3
  1182. #endif
  1183. }
  1184. #endif
  1185. //#if(!(_PM_SLS_|USE_TITLE_NUM_DEBUG)&OLED_USE_MASK_DISPLAY) //Walace051119 #1 //start
  1186. //#if(_PM_PHOTO_|_PM_VIDEO_|_PM_SAVE_|_PM_HST_|_PM_SYS_|_PM_FM_|_PM_REC_|_PM_PLAY_|USE_TITLE_NUM_DEBUG|OLED_USE_MASK_DISPLAY|_PM_CUSTOM_)
  1187. #if(_PM_PHOTO_|_PM_VIDEO_|_PM_HST_|_PM_SYS_|_PM_FM_|_PM_REC_|_PM_PLAY_|USE_TITLE_NUM_DEBUG|OLED_USE_MASK_DISPLAY|_PM_CUSTOM_|_PM_SAVE_)//WHH #4 301_061225 //tne 2007/01/24 #4
  1188. void OledDrawPoint(BYTE bCol,BYTE bRow,WORD wColor)
  1189. {
  1190. #if(OLED_USE_MASK_DISPLAY)
  1191. BOOL fPointInside = TRUE;
  1192.        if(gfIconMaskEn)  //Walace051119 #1 //start
  1193.        {
  1194. if(bCol<gxbMaskLeft||bCol>gxbMaskRight||bRow<gxbMaskTop||bRow>gxbMaskBottom)
  1195.       fPointInside = FALSE;
  1196. if(gfMaskInside==fPointInside) 
  1197. return;
  1198.        }//Walace051119 #1 //end
  1199. #endif
  1200. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON)//Jim#TftSolomn  // Jeff070125#2
  1201. #if(_PM_VD_PLAY_)  // WHH 070130
  1202. TftSetWindowRot(bRow,OLED_MAX_ROW-bCol-1,1,1);
  1203. #else
  1204. TftSetWindow(bCol,bRow,1,1);
  1205. #endif
  1206. TFT_MEMORY_WRITE_START();
  1207. OLED_WRITE_WDATA(wColor);
  1208. #else
  1209. OLED_WRITE(OLED_CMD_SET_COL_ADDR) ;
  1210. OLED_WRITE(bCol);
  1211. OLED_WRITE(bCol);
  1212. OLED_WRITE(OLED_CMD_SET_ROW_ADDR) ;
  1213. OLED_WRITE(bRow);
  1214. OLED_WRITE(bRow);
  1215. OLED_SET_DAT();
  1216. OLED_WRITE_WDATA(wColor) ;
  1217. OLED_SET_CMD();
  1218. #endif
  1219. }
  1220. #endif
  1221. #if 0
  1222. void OledDrawLine(BYTE bColStart, BYTE bRowStart, BYTE bColEnd, BYTE bRowEnd)
  1223. {
  1224. OledCtrlEn();
  1225. OLED_WRITE(OLED_GCMD_DRAW_LINE) ;
  1226. OLED_WRITE(bColStart) ;
  1227. OLED_WRITE(bRowStart) ;
  1228. OLED_WRITE(bColEnd) ;
  1229. OLED_WRITE(bRowEnd) ;
  1230. OLED_WRITE(((gxwFGColor&OLED_B_MASK)>>OLED_B_OFFSET)<<1) ;
  1231. OLED_WRITE((gxwFGColor&OLED_G_MASK)>>OLED_G_OFFSET) ;
  1232. OLED_WRITE(((gxwFGColor&OLED_R_MASK)>>OLED_R_OFFSET)<<1) ;
  1233. OledCtrlDis();
  1234. }
  1235. #endif
  1236. //#if(_PM_FM_|((_PM_PLAY_MAIN_|_PM_DVR_MAIN_|_PM_MENU_)&UI_USE_PROGRESS_BAR)|_PM_SYS_|_PM_VD_PLAY_|_PM_HST_|_PM_INIT_CHK_|((_PM_MENU_==1)&!_PM_DVR_)|(_PM_MENU_==2))
  1237. #if(_PM_INIT_CHK_|_PM_SYS_|_PM_HST_) //tne 2007/01/14 #3
  1238. void OledDrawRect(BYTE bColStart, BYTE bRowStart, BYTE bWidth, BYTE bHeight) 
  1239. {
  1240. WORD wAreaSize;
  1241.        OledCtrlEn();       
  1242.    
  1243. #if(LCD_TYPE==TFT_ORISE)
  1244. if(gfTransparent)
  1245. {
  1246. TftSetWindow(bColStart,bRowStart,bWidth,1);
  1247. TFT_MEMORY_WRITE_START();
  1248. for(wAreaSize=0;wAreaSize<bWidth;wAreaSize++)
  1249. OLED_WRITE_WDATA(gxwFGColor);
  1250. TftSetWindow(bColStart,bRowStart+bHeight-1,bWidth,1);
  1251. TFT_MEMORY_WRITE_START();
  1252. for(wAreaSize=0;wAreaSize<bWidth;wAreaSize++)
  1253. OLED_WRITE_WDATA(gxwFGColor);
  1254. OledDrawDirection(OLED_RAM_ACCESS_MODE_ROW_FIRST);
  1255. TftSetWindow(bRowStart+1,bColStart,bHeight-2,1);
  1256. TFT_MEMORY_WRITE_START();
  1257. for(wAreaSize=0;wAreaSize<bHeight;wAreaSize++)
  1258. OLED_WRITE_WDATA(gxwFGColor);
  1259. TftSetWindow(bRowStart+1,bColStart+bWidth-1,bHeight-2,1);
  1260. TFT_MEMORY_WRITE_START();
  1261. for(wAreaSize=0;wAreaSize<bHeight;wAreaSize++)
  1262. OLED_WRITE_WDATA(gxwFGColor);
  1263. OledDrawDirection(OLED_RAM_ACCESS_MODE_COLUMN_FIRST);
  1264. }
  1265. else
  1266. {
  1267. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1268. wAreaSize = (WORD)bWidth*bHeight;
  1269. TFT_MEMORY_WRITE_START();
  1270. for(wAreaSize=0;wAreaSize<((WORD)bWidth*bHeight);wAreaSize++)
  1271. OLED_WRITE_WDATA(gxwFGColor);
  1272. }
  1273. #elif(LCD_TYPE==TFT_TOPPOLY)  // Jeff070125#2
  1274. if(gfTransparent)
  1275. {
  1276. TftSetWindow(bColStart,bRowStart,bWidth,1);
  1277. TFT_MEMORY_WRITE_START();
  1278. for(wAreaSize=0;wAreaSize<bWidth;wAreaSize++)
  1279. OLED_WRITE_WDATA(gxwFGColor);
  1280. TftSetWindow(bColStart,bRowStart+bHeight-1,bWidth,1);
  1281. TFT_MEMORY_WRITE_START();
  1282. for(wAreaSize=0;wAreaSize<bWidth;wAreaSize++)
  1283. OLED_WRITE_WDATA(gxwFGColor);
  1284. TftSetWindow(bColStart,bRowStart+1,1,bHeight-2);    // Jeff_310_061220
  1285. TFT_MEMORY_WRITE_START();
  1286. for(wAreaSize=0;wAreaSize<bHeight;wAreaSize++)
  1287. OLED_WRITE_WDATA(gxwFGColor);
  1288. TftSetWindow(bColStart+bWidth-1,bRowStart+1,1,bHeight-2);      // Jeff_310_061220           
  1289. TFT_MEMORY_WRITE_START();
  1290. for(wAreaSize=0;wAreaSize<bHeight;wAreaSize++)
  1291. OLED_WRITE_WDATA(gxwFGColor);
  1292. }
  1293. else
  1294. {
  1295. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1296. wAreaSize = (WORD)bWidth*bHeight;
  1297. TFT_MEMORY_WRITE_START();
  1298. for(wAreaSize=0;wAreaSize<((WORD)bWidth*bHeight);wAreaSize++)
  1299. OLED_WRITE_WDATA(gxwFGColor);
  1300. }
  1301. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  1302. if(gfTransparent)
  1303. {
  1304. TftSetWindow(bColStart,bRowStart,bWidth,1);
  1305. TFT_MEMORY_WRITE_START();
  1306. for(wAreaSize=0;wAreaSize<bWidth;wAreaSize++)
  1307. OLED_WRITE_WDATA(gxwFGColor);
  1308. TftSetWindow(bColStart,bRowStart+bHeight-1,bWidth,1);
  1309. TFT_MEMORY_WRITE_START();
  1310. for(wAreaSize=0;wAreaSize<bWidth;wAreaSize++)
  1311. OLED_WRITE_WDATA(gxwFGColor);
  1312. TftSetWindow(bColStart,bRowStart+1,1,bHeight-2);
  1313. TFT_MEMORY_WRITE_START();
  1314. for(wAreaSize=0;wAreaSize<bHeight;wAreaSize++)
  1315. OLED_WRITE_WDATA(gxwFGColor);
  1316. TftSetWindow(bColStart+bWidth-1,bRowStart+1,1,bHeight-2);
  1317. TFT_MEMORY_WRITE_START();
  1318. for(wAreaSize=0;wAreaSize<bHeight;wAreaSize++)
  1319. OLED_WRITE_WDATA(gxwFGColor);
  1320. }
  1321. else
  1322. {
  1323. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1324. wAreaSize = (DWORD)bWidth*bHeight;
  1325. TFT_MEMORY_WRITE_START();
  1326. for(wAreaSize=0;wAreaSize<(bWidth*bHeight);wAreaSize++)
  1327. OLED_WRITE_WDATA(gxwFGColor);
  1328. }
  1329. #else
  1330. OLED_WRITE(OLED_GCMD_FILL_ENABLE) ;
  1331. if(gfTransparent)
  1332. {
  1333. OLED_WRITE(OLED_NOT_REVERSE_COPY|OLED_NOT_FILL) ; 
  1334. }
  1335. else
  1336. {
  1337. OLED_WRITE(OLED_NOT_REVERSE_COPY|OLED_FILL) ;
  1338. wAreaSize = ((WORD)bWidth*(WORD)bHeight)/OLED_PROC_DELAY_DIV;
  1339. }
  1340.  
  1341. OLED_WRITE(OLED_GCMD_DRAW_RECTANGLE) ;
  1342. OLED_WRITE(bColStart) ;
  1343. OLED_WRITE(bRowStart) ;
  1344. OLED_WRITE(bColStart+bWidth-1) ;
  1345. OLED_WRITE(bRowStart+bHeight-1) ;
  1346. OLED_WRITE(((gxwFGColor&OLED_B_MASK)>>OLED_B_OFFSET)<<1) ;
  1347. OLED_WRITE((gxwFGColor&OLED_G_MASK)>>OLED_G_OFFSET) ;
  1348. OLED_WRITE(((gxwFGColor&OLED_R_MASK)>>OLED_R_OFFSET)<<1);
  1349. OLED_WRITE(((gxwBGColor&OLED_B_MASK)>>OLED_B_OFFSET)<<1) ;
  1350. OLED_WRITE((gxwBGColor&OLED_G_MASK)>>OLED_G_OFFSET) ;
  1351. OLED_WRITE(((gxwBGColor&OLED_R_MASK)>>OLED_R_OFFSET)<<1) ;
  1352. if(!gfTransparent)
  1353. CommonDelay(wAreaSize);
  1354. #endif
  1355. OledCtrlDis();
  1356. }
  1357. #endif
  1358. //#if(!((_PM_INIT_&!INIT_USE_BTY_LOW_FLAG)|_PM_USB_|_PM_REC_|_PM_SLS_|_PM_PHOTO_|_PM_PLAY_PRC_|_PM_FLIST_|_PM_CLIST_|_PM_PLAY_DEL_|_PM_DIR_DEL_|_PM_VD_MENU_|_PM_VD_LIST_|_PM_CUSTOM_))
  1359. //#if(!((_PM_INIT_&!INIT_USE_BTY_LOW_FLAG)|_PM_SAVE_|_PM_USB_|_PM_REC_|_PM_SLS_|_PM_PHOTO_|_PM_PLAY_PRC_|_PM_FLIST_|_PM_CLIST_|_PM_PLAY_DEL_|_PM_DIR_DEL_|_PM_VD_MENU_|_PM_VD_LIST_|_PM_CUSTOM_))  // WHH #7 301_061226
  1360. #if(!((_PM_INIT_&!INIT_USE_BTY_LOW_FLAG)|_PM_SAVE_|_PM_FM_|_PM_USB_|_PM_SLS_|_PM_PHOTO_|_PM_PLAY_PRC_|_PM_MENU_|_PM_FLIST_|_PM_CLIST_|_PM_VD_MENU_|_PM_VD_LIST_|_PM_CUSTOM_))  // WHH #7 301_061226
  1361. void OledDrawDirection(BYTE bAccessDir)
  1362. {
  1363. if(bAccessDir==OLED_RAM_ACCESS_MODE_COLUMN_FIRST) //Column first  (Horizontal Address Increment Mode)
  1364. {
  1365. #if(LCD_TYPE==TFT_ORISE)
  1366. TFT_WRITE_CMD(0x36);
  1367. TFT_WRITE_DAT(0x00);
  1368. #elif(LCD_TYPE==TFT_TOPPOLY)   // Jeff070125#2
  1369. TFT_WRITE_CMD(0x09);     // Jeff_310_061220
  1370. TFT_WRITE_DAT(0x10);
  1371. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  1372. TFT_WRITE_CMD(0x11);
  1373. TFT_WRITE_DAT16(0x6830);
  1374. #else
  1375. OLED_WRITE(OLED_CMD_SET_REMAP_FORMAT) ;
  1376. OLED_WRITE(OLED_5661_MAP_DRAWDIR_COL) ; //0110 0010
  1377. //OledWaitForReady() ;
  1378. #endif
  1379. }
  1380. else //Row first       (Vertical Address Increment Mode)
  1381. {
  1382. #if(LCD_TYPE==TFT_ORISE)
  1383. TFT_WRITE_CMD(0x36);
  1384. TFT_WRITE_DAT(0x20);
  1385. #elif(LCD_TYPE==TFT_TOPPOLY)  // Jeff070125#2
  1386. TFT_WRITE_CMD(0x09);  // Jeff_310_061220
  1387. TFT_WRITE_DAT(0x11);
  1388. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  1389. TFT_WRITE_CMD(0x11);
  1390. TFT_WRITE_DAT16(0x6838);
  1391. #else
  1392. OLED_WRITE(OLED_CMD_SET_REMAP_FORMAT) ;
  1393. OLED_WRITE(OLED_5661_MAP_DRAWDIR_ROW) ; //0110 0010
  1394. //OledWaitForReady() ;
  1395. #endif
  1396. }
  1397. }
  1398. #endif
  1399. //#if(!(_PM_INIT_|_PM_USB_|_PM_SLS_|_PM_INIT_CHK_|_PM_PLAY_DEL_|_PM_DIR_DEL_)|USE_TITLE_NUM_DEBUG)
  1400. #if(!(_PM_INIT_|_PM_USB_|_PM_SLS_|_PM_INIT_CHK_|_PM_PLAY_DEL_|_PM_DIR_DEL_)|USE_TITLE_NUM_DEBUG)//WHH #4 301_061225 //tne 2007/01/24 #4
  1401. void OledShowBitsIcon(PBYTE pbDataSource,BYTE bColStart,BYTE bRowStart,BYTE bWidth,BYTE bPageHeight)
  1402. {
  1403. BYTE bPage ;
  1404. BYTE bCol ;
  1405. BYTE bBit ;
  1406. BYTE bKeepCLK;
  1407. OledCtrlEn();
  1408. bKeepCLK = obCLKMCUDIVF; //Walace060131#3
  1409. SetSysSpeed(0x03);
  1410.   
  1411. if((bColStart+bWidth-1)>gxbLcdLimitCol)
  1412. gxbLcdDispLimPix=gxbLcdLimitCol-bColStart+1;
  1413. else
  1414. gxbLcdDispLimPix=0;
  1415. for(bPage=0; bPage<bPageHeight; bPage++)
  1416. {
  1417. for(bCol=bColStart; bCol<(bColStart+bWidth); bCol++)
  1418. {
  1419. if(bCol<=gxbLcdLimitCol)  // Walace051012
  1420. {
  1421. for(bBit=0; bBit<8; bBit++)
  1422. {
  1423. if((*pbDataSource)&(1<<bBit))
  1424. OledDrawPoint(bCol,bRowStart+PAGE2PIXEL(bPage)+bBit,gxwFGColor);
  1425. else if(!gfTransparent)
  1426.                                    OledDrawPoint(bCol,bRowStart+PAGE2PIXEL(bPage)+bBit,gxwBGColor);
  1427. }
  1428. }
  1429. pbDataSource++;
  1430. }
  1431. }
  1432. SetSysSpeed(bKeepCLK); //Walace060131#3
  1433. OledCtrlDis();
  1434.    
  1435. }
  1436. #endif
  1437. //SRAM_LYRICS_ADDR = 0xc800
  1438. //SRAM_DMA_ADDRESS
  1439. //#if(!_PM_PLAY_PRC_) //Walace060830#3
  1440. #if 1
  1441. void OledDMASramToSM(WORD wDMASramAdd,WORD wDataSize)
  1442. {
  1443. BYTE bKeepSMMode;
  1444. BYTE bKeepMcuDiv; //Walace070131#1
  1445. BYTE bKeepSmCtrl;
  1446. //3 Keep register value
  1447. bKeepSMMode=obSMMODE;
  1448. obSMMODE = 0x30; //2048Byte
  1449.  //Walace070109#1 start   // Jeff check why
  1450. bKeepSmCtrl=obCLKSMCTRL; 
  1451. obCLKSMCTRL=0xD0;
  1452. bKeepMcuDiv=obCLKMCUDIVF; 
  1453. SetSysSpeed(LCD_DMA_WRITE_SPEED);
  1454. //Walace070109#1 end
  1455.        //3 Select target 
  1456. obMODSEL3 &= NOTBYPASS_RAJ; //not bypass RA
  1457. obSOURCEPATHCTRL = 0x00; //Source Dis
  1458. obTARGETPATHCTRL = 0x00; //Target Dis
  1459. obTARGETPATHCTRL = SELECT_SM;
  1460.        //3 Select source data address
  1461. obRACTL = RA_INIT;
  1462. obRACTL = RA_COPY_MODE;
  1463.        obRAINIADRL = wDMASramAdd& 0x00FF; //start at 0xC800
  1464.        obRAINIADRH = (wDMASramAdd>>8)&0x1F;
  1465. obRAINIADRH |= RA_ADDR_LOAD;
  1466. //3Set source data length
  1467. obRABANKSIZEH = wDataSize>>8;
  1468. obRABANKSIZEL = (BYTE)wDataSize;
  1469.        //3Set terminal condition
  1470. obTCNTLDDATAH=wDataSize>>9;    //  (wDataSize >>1 for word unit) >>8 for hbyte
  1471. obTCNTLDDATAL=(BYTE)(wDataSize>>1);
  1472. obTCNTCTRL|=TCOUNT_LOAD;
  1473. obTCNTCTRL&=TCOUNT_LOAD_DIS;
  1474. obTCNTCTRL&=TCOUNT_ENJ;
  1475.         //3 DMA Startup
  1476. obRACTL=(RA_DMA_EN|RA_COPY_MODE);
  1477. obSMCTRL=NAND_DATA; //050125: clear SM_HOST_STOP
  1478. obSMECCAUTOCOR=0x00; //050802
  1479. obSMDMACTRL = SM_DMA_EN_OUT;
  1480. while(obTCNTCTRL&0x01)
  1481. { }
  1482.         //3Disable DMA
  1483. obRACTL=RA_NORMAL;
  1484. obSMDMACTRL = SM_DMA_DIS;
  1485. obTCNTCTRL|=TCOUNT_DIS;
  1486. obSOURCEPATHCTRL = 0x00; //Source Dis
  1487. obTARGETPATHCTRL = 0x00; //Target Dis
  1488. obSMMODE |= 0x80; //0930 ECC Init start
  1489. obSMMODE &= 0x7F;
  1490.         //3 Restore keep value
  1491. obSMMODE = bKeepSMMode;
  1492. obCLKSMCTRL=bKeepSmCtrl; //Walace070109#1
  1493. //obCLKMCUDIVF=bKeepSmCtrl;  //Walace070109#1
  1494. SetSysSpeed(bKeepMcuDiv);  //Walace070131#1 // WHH070228#1
  1495. }
  1496. #endif //Walace060830#3
  1497. #if(_LCD_SHOW_ICON_FROM_SRAM_)
  1498. API void OledShowIconFromSram(WORD wSramAdd,BYTE bColStart,BYTE bRowStart,BYTE bWidth,BYTE bHeight)
  1499. {
  1500.        WORD wIconSize;
  1501. #if(OLED_USE_MASK_DISPLAY)    
  1502. BYTE bKeepCLK;
  1503. WORD wPixelIndex;
  1504. #endif
  1505. OledCtrlEn();
  1506. #if(LCD_TYPE==TFT_ORISE) // Jeff070125#2
  1507. SET_PIXEL_FORMAT_18BITS();
  1508. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1509. TFT_MEMORY_WRITE_START();
  1510. #elif(LCD_TYPE==TFT_SOLOMON)
  1511. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1512. TFT_MEMORY_WRITE_START();
  1513. #elif(LCD_TYPE==TFT_TOPPOLY) // Jeff070125#2
  1514. wIconSize = (WORD)bWidth*bHeight*2;  // 2bit/1pixel
  1515. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1516. TFT_MEMORY_WRITE_START();
  1517. #else
  1518. OLED_WRITE(OLED_CMD_SET_COL_ADDR) ;
  1519. OLED_WRITE(bColStart) ;
  1520. OLED_WRITE(bColStart+bWidth-1) ;
  1521. OLED_WRITE(OLED_CMD_SET_ROW_ADDR) ;
  1522. OLED_WRITE(bRowStart) ;
  1523. OLED_WRITE(bRowStart+bHeight-1) ;
  1524. #endif
  1525. wIconSize = (DWORD)bWidth*bHeight*BYTES_PER_PIXEL;  // 3bit/1pixel
  1526. #if(OLED_USE_MASK_DISPLAY)
  1527.        //2 Send pixel with mask process (Slower)
  1528. if(gfIconMaskEn)
  1529. {
  1530. bKeepCLK = obCLKMCUDIVF; //Walace060131#3
  1531. SetSysSpeed(0x03);  
  1532. for(wPixelIndex=0;wPixelIndex<wIconSize;wPixelIndex+=2)
  1533. OledDrawPoint(bColStart+wPixelIndex%bWidth,bRowStart+wPixelIndex/bWidth,*((PWORD)(wSramAdd+wPixelIndex)));
  1534. SetSysSpeed(bKeepCLK); //Walace060131#3
  1535. }
  1536. //2 Send pixel data with DMA  (Faster)
  1537. else
  1538. #endif
  1539. {
  1540. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn  // Jeff070125#2
  1541. if(wIconSize>=0x800)
  1542. OledDMASramToSM(wSramAdd-0xC000,wIconSize-2);
  1543. LCD_WRITE(*((PBYTE)wSramAdd+0x7FF));
  1544. LCD_WRITE(*((PBYTE)wSramAdd+0x7FE));
  1545. }
  1546. else
  1547. OledDMASramToSM(wSramAdd-0xC000,wIconSize);
  1548. #else
  1549. OLED_SET_DAT();
  1550. if(wIconSize>=0x800)
  1551. OledDMASramToSM(wSramAdd-0xC000,wIconSize-2);
  1552. OLED_WRITE(*((PBYTE)wSramAdd+0x7FF));
  1553. OLED_WRITE(*((PBYTE)wSramAdd+0x7FE));
  1554. }
  1555. else
  1556. OledDMASramToSM(wSramAdd-0xC000,wIconSize);
  1557. OLED_SET_CMD();
  1558. #endif
  1559. }
  1560. #if(LCD_TYPE==TFT_ORISE)
  1561. SET_PIXEL_FORMAT_16BITS();
  1562. #endif
  1563. OledCtrlDis();
  1564. }
  1565. #endif
  1566. #if(_LCD_READ_ICON_)
  1567. API void OledReadIconToSram(BYTE bSramType,BYTE bColStart,BYTE bRowStart,BYTE bWidth,BYTE bHeight) //Walace060213#1 start
  1568. {
  1569. BYTE bKeepSMMode;
  1570. BYTE bKeepSmCtrl;
  1571. BYTE bReadCount;
  1572. //Walace060213#1 start
  1573.        WORD wSramAdd;
  1574. switch(bSramType)
  1575. {
  1576. case FS_DATA_0_0:
  1577.                       gxdwKeptDataSec=FORCE_REFLASH_SECTOR;
  1578.  wSramAdd = 0xD800;
  1579.  break;
  1580.  
  1581. case FS_FAT:
  1582.  gxdwKeptFatSec=FORCE_REFLASH_SECTOR;
  1583.  wSramAdd = 0xD000;
  1584.  break;
  1585.  
  1586. case FS_LRC:
  1587.   gxdwKeptLrcSec=FORCE_REFLASH_SECTOR;
  1588.   wSramAdd = 0xC800;
  1589.   break;
  1590. }
  1591. #if 0
  1592. OledCtrlEn();
  1593. SET_PIXEL_FORMAT_18BITS();
  1594. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1595. TFT_MEMORY_READ_START();
  1596. SET_PIXEL_FORMAT_16BITS();
  1597. OledCtrlDis();
  1598. #endif
  1599. OledCtrlEn();
  1600. #if(LCD_TYPE==TFT_ORISE)
  1601. SET_PIXEL_FORMAT_18BITS();
  1602.         #define BYTES_PER_PIXEL 3
  1603. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1604. TFT_MEMORY_READ_START();
  1605. LCD_READ(bKeepSMMode); //dummy read
  1606. #elif(LCD_TYPE==TFT_TOPPOLY)  // Jeff070125#2
  1607.         #define BYTES_PER_PIXEL 2      // Jeff_310_061220
  1608. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1609. TFT_MEMORY_READ_START();
  1610. LCD_READ(bKeepSMMode); //dummy read twice    // Jeff_310_061220
  1611. LCD_READ(bKeepSMMode);
  1612. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  1613. TftSetWindow(bColStart,bRowStart,bWidth,bHeight);
  1614. TFT_MEMORY_READ_START();
  1615. LCD_READ(bKeepSMMode); //dummy read
  1616. #else
  1617. #define BYTES_PER_PIXEL 2
  1618. OLED_WRITE(OLED_CMD_SET_COL_ADDR) ;
  1619. OLED_WRITE(bColStart) ;
  1620. OLED_WRITE(bColStart+bWidth-1) ;
  1621. OLED_WRITE(OLED_CMD_SET_ROW_ADDR) ;
  1622. OLED_WRITE(bRowStart) ;
  1623. OLED_WRITE(bRowStart+bHeight-1) ;
  1624. OLED_SET_DAT();
  1625.        OLED_READ(bKeepSMMode); //dummy read
  1626.  #endif      
  1627.  
  1628.        bReadCount=0;
  1629.        while((0x100<<bReadCount)<((WORD)bWidth*bHeight*BYTES_PER_PIXEL))
  1630.             bReadCount++;
  1631. if(bReadCount>0x03)   // Walace050921
  1632. bReadCount=0x03;
  1633.        //3 Keep register value
  1634. bKeepSMMode=obSMMODE;
  1635. obSMMODE = bReadCount<<4; //0x00 256, 0x10:512Byte  0x20:1024Bytes, 0x30:2048bytes
  1636. bKeepSmCtrl=obCLKMCUDIVF; //Walace070109#1
  1637. SetSysSpeed(LCD_DMA_READ_SPEED); //Walace070109#1
  1638. //bKeepSmCtrl=obCLKSMCTRL; //Walace070109#1
  1639. //obCLKSMCTRL=0xD0;  //Walace070109#1
  1640. //Walace070109#1 end
  1641.   obGPIOCDAT = (obGPIOCDAT&0x0F)|0xE0; // Data
  1642.        //3 Select target 
  1643. obMODSEL3 &= NOTBYPASS_RAJ; //not bypass RA
  1644. obSOURCEPATHCTRL = 0x00; //Source Dis
  1645. obTARGETPATHCTRL = 0x00; //Target Dis
  1646. obSOURCEPATHCTRL = SELECT_SM;
  1647. //obTARGETPATHCTRL = SELECT_SM; //Target Dis
  1648.        //3 Select source data address
  1649. obRACTL = RA_INIT;
  1650. obRACTL = RA_COPY_MODE;
  1651. obRAINIADRL = (wSramAdd-0xC000) & 0x00FF; //start at 0xC800
  1652. obRAINIADRH = (((wSramAdd-0xC000) >> 8) & 0x1F);
  1653. obRAINIADRH |= RA_ADDR_LOAD;
  1654.        //3Set source data length
  1655. obRABANKSIZEH =1<<bReadCount;
  1656. obRABANKSIZEL =  0; //(BYTE)(wDataLength&0x00FF);
  1657.        //3DMA Startup
  1658. obRACTL=(RA_DMA_EN|RA_COPY_MODE);
  1659. obSMCTRL=NAND_DATA; //050125: clear SM_HOST_STOP
  1660. obSMECCAUTOCOR=0x00; //050802
  1661. obSMDMACTRL = SM_DMA_EN_IN; //FE6A
  1662. while(!(obSMINTFLAG&0x80))
  1663. {
  1664. }
  1665. //3 Disable DMA
  1666. obRACTL=RA_NORMAL;
  1667. obSMDMACTRL = SM_DMA_DIS;
  1668. obTCNTCTRL|=TCOUNT_DIS;
  1669. obSOURCEPATHCTRL = 0x00; //Source Dis
  1670. obTARGETPATHCTRL = 0x00; //Target Dis
  1671. obSMMODE |= 0x80; //0930 ECC Init start
  1672. obSMMODE &= 0x7F;
  1673.        //3Restore keep value
  1674. obSMMODE = bKeepSMMode;
  1675.    
  1676. //obCLKSMCTRL=bKeepSmCtrl;  //Walace070109#1
  1677. obCLKMCUDIVF=bKeepSmCtrl; //Walace070109#1
  1678. SetSysSpeed(bKeepSmCtrl);     // WHH070228#1
  1679. #if(LCD_TYPE==TFT_ORISE)
  1680. SET_PIXEL_FORMAT_16BITS();
  1681. #elif(LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  1682. LCD_SET_CMD();
  1683. #elif(LCD_TYPE==TFT_TOPPOLY)
  1684. #else
  1685.        OLED_SET_CMD();
  1686. #endif
  1687. OledCtrlDis();
  1688. #undef BYTES_PER_PIXEL
  1689. }
  1690. #endif
  1691. //#if(!(_PM_SLS_|_PM_PLAY_DEL_|_PM_DIR_DEL_)) //Walace060806#2
  1692. //#if(!_PM_PLAY_PRC_) //Walace060830#3
  1693. //#if(1) //Walace060830#3
  1694. //Walace061228#CodeSize
  1695. #if(0) //tne 2007/01/16 #1
  1696. API void OledShowIcon(WORD wIconIndex,BYTE bColStart,BYTE bRowStart) 
  1697. {
  1698.    // WORD wIconSize;    
  1699.        WORD wByteIndex;
  1700. BYTE bWidth;
  1701. BYTE bHeight;
  1702. //Get the icon data information for first allocate unit data
  1703. OledCtrlDis();
  1704. NandReadPhySec(gxwFontTable[FONT_SYS]+(wIconIndex>>SYSFONT_SECTOR_DIV), 1, SRAM_LYRICS_ADDR) ;
  1705. OledCtrlEn();
  1706.        wByteIndex = ((wIconIndex&SYSFONT_OFFSET_MASK)<<SYSFONT_MIN_ALO_EXP);
  1707.    
  1708.        bHeight = *((PXBYTE)SRAM_LYRICS_ADDR+wByteIndex);
  1709. bWidth = *((PXBYTE)SRAM_LYRICS_ADDR+wByteIndex+1);
  1710. wIconIndex++;
  1711. OledDMAToLcd(wIconIndex, bColStart, bRowStart,  bWidth,  bHeight);
  1712. //wIconSize = (DWORD)bWidth*bHeight*2; // unit in byte
  1713. //wIconSize = (WORD)bWidth*bHeight; // unit in pixel
  1714. }
  1715. #endif
  1716. //#endif //#if(!_PM_SLS_) //Walace060830#3
  1717. //#if(1) // WHH 070128
  1718. #if(!(_PM_PLAY_DEL_|_PM_DIR_DEL_)) // WHH 070128
  1719. API void OledShowIconNew(BYTE bGuiIcon, WORD wIconIndex,BYTE bColStart,BYTE bRowStart) large// WHH_301_061219 #1 (start)
  1720. {
  1721.    // WORD wIconSize;    
  1722.        WORD wByteIndex;
  1723. BYTE bWidth;
  1724. BYTE bHeight;
  1725. //Get the icon data information for first allocate unit data
  1726. OledCtrlDis();
  1727. // WHH #9 301_061229(start)
  1728. NandReadPhySec(gxwFontTable[FONT_SYS+bGuiIcon]+(wIconIndex>>SYSFONT_SECTOR_DIV), 1, SRAM_LYRICS_ADDR) ;
  1729. // WHH #9 301_061229(end)
  1730. OledCtrlEn();
  1731. wByteIndex = ((wIconIndex&SYSFONT_OFFSET_MASK)<<SYSFONT_MIN_ALO_EXP);
  1732.    
  1733. bHeight = *((PXBYTE)SRAM_LYRICS_ADDR+wByteIndex);
  1734. bWidth = *((PXBYTE)SRAM_LYRICS_ADDR+wByteIndex+1);
  1735. wIconIndex++;
  1736. OledDMAToLcdNew(bGuiIcon, wIconIndex, bColStart, bRowStart,  bWidth,  bHeight);
  1737. //wIconSize = (DWORD)bWidth*bHeight*2; // unit in byte
  1738. //wIconSize = (WORD)bWidth*bHeight; // unit in pixel
  1739. }                     // WHH_301_061219 #1 (end)
  1740. #endif
  1741. //Walace060806#3 start
  1742. #if((_PM_INIT_|_PM_SAVE_)&(PW_ON_USE_ANIMATION|PW_OFF_USE_ANIMATION))  //tne 2007/01/04 #1
  1743. API void ShowAnimation(WORD wStartFrameAdd,WORD wFrameOffset,BYTE bFrameNum,BYTE bColStart,BYTE bRowStart,WORD wDelayTime) large
  1744. {
  1745. BYTE bPicIndex;
  1746. WORD wKeepSysFontIndex;
  1747. //WORD wFramePitch; 
  1748. BYTE bKeepCLK;
  1749. wKeepSysFontIndex=gxwFontTable[FONT_SYS];
  1750. //tne 2007/01/04 #1 start
  1751. #if(_PM_SAVE_)
  1752. gxwFontTable[FONT_SYS] = gxwFontTable[FONT_CLOSE_ANI];
  1753. #else
  1754. gxwFontTable[FONT_SYS] = gxwFontTable[FONT_ANIMATION];
  1755. #endif
  1756. //tne 2007/01/04 #1 end
  1757. bKeepCLK=obCLKMCUDIVF; //Walace060131#3
  1758. SetSysSpeed(0x03);
  1759. OledCtrlDis();
  1760. NandReadPhySec(gxwFontTable[FONT_SYS]+(wStartFrameAdd>>SYSFONT_SECTOR_DIV), 1, SRAM_LYRICS_ADDR) ;
  1761. OledCtrlEn();
  1762.      //  wOffsetIndex = ((wOffsetIndex&SYSFONT_OFFSET_MASK)<<SYSFONT_MIN_ALO_EXP);
  1763. /*    
  1764. //Height   
  1765.        wFramePitch = *((PXBYTE)SRAM_LYRICS_ADDR+wOffsetIndex);
  1766. //Frame pitch = Height*Width*2 / SYSFONT_MIN_ALO_SIZE
  1767. wFramePitch = (wFramePitch * (*((PXBYTE)SRAM_LYRICS_ADDR+wOffsetIndex+1)))>>(SYSFONT_MIN_ALO_EXP-1);
  1768. //icon information occupy one unit
  1769. wFramePitch++;
  1770. */
  1771. for(bPicIndex=0;bPicIndex<bFrameNum;bPicIndex++)
  1772. {                     
  1773. // WHH #5 301_061225(start)
  1774. //OledShowIcon(wStartFrameAdd+bPicIndex*wFrameOffset,bColStart,bRowStart);
  1775. OledShowIconNew(0, wStartFrameAdd+bPicIndex*wFrameOffset,bColStart,bRowStart);
  1776. // WHH #5 301_061225(end)
  1777. CommonDelay(wDelayTime);
  1778. //wOffsetIndex +=wFramePitch;
  1779. }
  1780.        SetSysSpeed(bKeepCLK); //Walace060131#3
  1781. gxwFontTable[FONT_SYS] = wKeepSysFontIndex; 
  1782. }
  1783. #endif //#if(_PM_INIT_|(PW_ON_USE_ANIMATION|PW_OFF_USE_ANIMATION))
  1784. //Walace060806#3 end
  1785. //#if(_PM_VIDEO_|_PM_PHOTO_|(_PM_PLAY_&!_PM_SLS_)|_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|USE_TITLE_NUM_DEBUG|SHOW_BATT_VALUE|_PM_CUSTOM_) //tne 2005/12/17 //Vicky060301   // Jeff070125#2
  1786. #if(_PM_SAVE_|_PM_VD_PLAY_|_PM_VD_LIST_|_PM_USB_|_PM_PHOTO_|_PM_PLAY_MAIN_|_PM_PLAY_PRC_|_PM_DVR_MAIN_|_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|USE_TITLE_NUM_DEBUG|SHOW_BATT_VALUE) //tne 2005/12/17 //Vicky060301
  1787. #if(USE_TITLE_NUM_DEBUG)
  1788. API void OledShowNumber(WORD wShowNum,BYTE bColStart,BYTE bRowStart,BYTE bNumLen) large
  1789. #else
  1790. API void OledShowNumber(WORD wShowNum,BYTE bColStart,BYTE bRowStart,BYTE bNumLen) 
  1791. #endif
  1792. {
  1793. BYTE bI,bN;
  1794. for(bI=bNumLen;bI>0;bI--)
  1795. {
  1796. bN=wShowNum%10;
  1797. wShowNum /= 10;
  1798. //Walace051119 #1
  1799. #if(USE_TITLE_NUM_DEBUG)
  1800. OledShowBitsIcon(cbNumberChar+bN*5,
  1801.                        bColStart+(bI-1)*(CB_NUMBER_GAP+CB_NUMBER_COL)+CB_NUMBER_GAP,
  1802.                        bRowStart,
  1803.                        CB_NUMBER_COL,
  1804.                        CB_NUMBER_PAGE);
  1805. #else 
  1806. // WHH #13 301_070105S
  1807. /*OledShowIcon(ICON_DIGIT_68N00+bN*ICON_DIGIT68_PITCH,
  1808. bColStart+(bI-1)*ICON_NUMBER_COL,bRowStart);*/
  1809. #if(_PM_VD_PLAY_)
  1810. OledShowIconNew(1,IM_MOVIE_SMALLNUMBER_0+bN*UI_IM_MOVIE_SMALLNUMBER_PITCH,
  1811. bColStart+(bI-1)*6,bRowStart);
  1812. #else
  1813. OledShowIconNew(1,IM_MUSIC_SMALLNUMBER_0+bN*UI_IM_MUSIC_SMALLNUMBER_PITCH,
  1814. bColStart+(bI-1)*6,bRowStart);      
  1815. #endif
  1816. #endif
  1817. }
  1818. }
  1819. #endif //_PM_PLAY_|_PM_REC_|_PM_FM_|_PM_SYS_
  1820. //tne 2005/11/24 #2 //Walace060926#1 VideoResume
  1821. #if(_PM_VD_LIST_|(_PM_VD_PLAY_&&VIDEO_FORMAT_VERSION_DISPLAY))
  1822. API void OledShowBigNumber(WORD wShowNum,BYTE bColStart,BYTE bRowStart,BYTE bNumLen) large
  1823. {
  1824. BYTE bI,bN[5];
  1825. for(bI=bNumLen;bI>0;bI--)
  1826. {
  1827. bN[bI-1]=(wShowNum%10)+0x30;
  1828. wShowNum /= 10;
  1829. //OledShowIcon(ICON_DIGIT_68N00+bN*ICON_DIGIT68_PITCH,
  1830.         //             bColStart+(bI-1)*CB_NUMBER_COL,bRowStart);
  1831. }
  1832. StrShowString(&bN,bColStart,bRowStart,bNumLen);
  1833. }
  1834. #endif
  1835. #if(_PM_PLAY_&!(_PM_FLIST_|_PM_MENU_|_PM_CLIST_|_PM_PLAY_PRC_)&UI_USE_SPECTRUM)
  1836. void OledShowSpectrum(BOOL fShow)
  1837. {
  1838. fShow=fShow; //test now...  // Jeff070125#2  not support spectrum temporary
  1839. #if(0) //test now...
  1840. BYTE bI, bJ; //Walace061228#CodeSize
  1841. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn  // Jeff070125#2
  1842. BYTE bK;
  1843. #endif
  1844. WORD wVolume;
  1845. OledCtrlEn();
  1846. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn  // Jeff070125#2
  1847. for(bJ=0; bJ<2; bJ++)
  1848. {        
  1849.        
  1850. if(fShow)
  1851. {
  1852. if(bJ==0)
  1853. IdmaPioDmxR(DSP_LEFT_VOLUME_ADDR,&wVolume,1,DSP_W16);
  1854. else
  1855. IdmaPioDmxR(DSP_RIGHT_VOLUME_ADDR,&wVolume,1,DSP_W16);
  1856. wVolume = wVolume >> 9 ;
  1857. if(wVolume >= 16 ) 
  1858. wVolume = 16;
  1859. }
  1860. else
  1861. wVolume = 0;
  1862.            
  1863. for(bI=0;bI<16;bI+=2)
  1864.               {      
  1865. TftSetWindow(bJ*90,31-bI,7,1);
  1866. TFT_MEMORY_WRITE_START();
  1867. if(bI<wVolume)
  1868. {
  1869. #if(OLED_COLOR_FIELD_TYPE==OLED_FILED_RGB565)
  1870. for(bK=0;bK<7;bK++)
  1871. OLED_WRITE_WDATA(OLED_RED|(((WORD)bI*4)<<5)) ;
  1872. #else
  1873. for(bK=0;bK<7;bK++)
  1874. OLED_WRITE_WDATA(OLED_RED|(((WORD)bI*4)<<5)) ;
  1875. #endif
  1876.                      }
  1877. else
  1878. {
  1879. for(bK=0;bK<7;bK++)
  1880. OLED_WRITE_WDATA(OLED_BLACK);
  1881. }
  1882. }
  1883. }
  1884. #else
  1885. for(bJ=0; bJ<2; bJ++)
  1886. {        
  1887.        
  1888. if(fShow)
  1889. {
  1890. if(bJ==0)
  1891. IdmaPioDmxR(DSP_LEFT_VOLUME_ADDR,&wVolume,1,DSP_W16);
  1892. else
  1893. IdmaPioDmxR(DSP_RIGHT_VOLUME_ADDR,&wVolume,1,DSP_W16);
  1894. wVolume = wVolume >> 9 ;
  1895. if(wVolume >= 16 ) 
  1896. wVolume = 16;
  1897. }
  1898. else
  1899. wVolume = 0;
  1900.            
  1901. for(bI=0;bI<16;bI+=2)
  1902.               {      
  1903. OLED_WRITE(OLED_GCMD_DRAW_LINE) ;
  1904. OLED_WRITE(bJ*90) ;
  1905. OLED_WRITE(31-bI) ;
  1906. OLED_WRITE(bJ*90+5) ;
  1907. OLED_WRITE(31-bI) ;
  1908. if(bI<wVolume)
  1909. {
  1910. #if(OLED_COLOR_FIELD_TYPE==OLED_FIELD_BGR565)
  1911. OLED_WRITE(0x00) ;
  1912. OLED_WRITE(3+4*bI) ;  //0x3F-(15-bI)*4 = 63-60+4bI
  1913. OLED_WRITE(0x3E) ;
  1914. #else
  1915. OLED_WRITE(0x3E) ;
  1916. OLED_WRITE(3+4*bI) ;  //0x3F-(15-bI)*4 = 63-60+4bI
  1917. OLED_WRITE(0x00) ;
  1918. #endif
  1919.                      }
  1920. else
  1921. {
  1922. OLED_WRITE(0x00) ;
  1923. OLED_WRITE(0x00) ;
  1924. OLED_WRITE(0x00) ;
  1925. }
  1926.               }
  1927. }
  1928. #endif
  1929. OledCtrlDis();
  1930. #endif
  1931. }
  1932. #endif //#if(_PM_PLAY_&!_PM_FLIST_&!_PM_MENU_&UI_USE_SPECTRUM)
  1933. //#if(((_PM_PLAY_&!(_PM_FLIST_|_PM_CLIST_|_PM_PLAY_PRC_))|_PM_FM_|_PM_SYS_|_PM_INIT_CHK_|_PM_VD_PLAY_)&UI_USE_PROGRESS_BAR)
  1934. #if((_PM_PLAY_MAIN_|_PM_DVR_MAIN_|_PM_SYS_|_PM_INIT_CHK_|_PM_REC_|_PM_PLAY_DEL_|_PM_DIR_DEL_)&UI_USE_PROGRESS_BAR)// WHH #13 301_070107
  1935. void ShowProgress(BYTE bColStart,BYTE bRowStart,BYTE bValue)
  1936. {
  1937. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_SOLOMON) //Jim#TftSolomn
  1938. #if(!_PM_INIT_CHK_)
  1939. BYTE bKeepClk;
  1940. #endif
  1941.      WORD wI;
  1942. #if(!_PM_INIT_CHK_)
  1943. bKeepClk= obCLKMCUDIVF;
  1944. SetSysSpeed(0x03);
  1945. #endif
  1946. if(bValue>PROGRESS_MAX)
  1947. bValue = PROGRESS_MAX;
  1948. // gfTransparent=TRUE;
  1949. // OledDrawRect(bColStart,bRowStart,PROGRESS_MAX+2,6);
  1950. // gfTransparent=FALSE;
  1951. OledCtrlEn();
  1952. OledDrawDirection(OLED_RAM_ACCESS_MODE_ROW_FIRST);
  1953. TftSetWindow(bRowStart+1,bColStart+1,4,PROGRESS_MAX);
  1954. TFT_MEMORY_WRITE_START();
  1955. for(wI=0; wI<((WORD)bValue<<2); wI++)
  1956. OLED_WRITE_WDATA(OLED_RED) ;
  1957. for(wI=0; wI<((PROGRESS_MAX-(WORD)bValue)<<2); wI++)
  1958. OLED_WRITE_WDATA(OLED_BG_COLOR) ;
  1959. OledDrawDirection(OLED_RAM_ACCESS_MODE_COLUMN_FIRST);
  1960. OledCtrlDis();
  1961. #if(!_PM_INIT_CHK_)
  1962. SetSysSpeed(bKeepClk);
  1963. #endif
  1964. #elif(LCD_TYPE==TFT_TOPPOLY) // Jeff070125#2
  1965. #if(!_PM_INIT_CHK_)
  1966. BYTE bKeepClk;
  1967. #endif
  1968.      WORD wI;
  1969. #if(!_PM_INIT_CHK_)
  1970. bKeepClk= obCLKMCUDIVF;
  1971. SetSysSpeed(0x03);
  1972. #endif
  1973. if(bValue>PROGRESS_MAX)
  1974. bValue = PROGRESS_MAX;
  1975. OledCtrlEn();
  1976. OledDrawDirection(OLED_RAM_ACCESS_MODE_ROW_FIRST);
  1977. TftSetWindow(bColStart+1,bRowStart,PROGRESS_MAX,1);
  1978. TFT_MEMORY_WRITE_START();
  1979. for(wI=0; wI<((WORD)bValue); wI++)
  1980. #if(!_PM_REC_)//WHH #13 301_070106
  1981. OLED_WRITE_WDATA(OLED_WHITE) ;
  1982. #else
  1983. OLED_WRITE_WDATA(OLED_RED) ;
  1984. #endif
  1985. for(wI=0; wI<((PROGRESS_MAX-(WORD)bValue)); wI++)
  1986. OLED_WRITE_WDATA(OLED_BG_COLOR) ;
  1987. OledDrawDirection(OLED_RAM_ACCESS_MODE_COLUMN_FIRST);
  1988. OledCtrlDis();
  1989. #if(!_PM_INIT_CHK_)
  1990. SetSysSpeed(bKeepClk);
  1991. #endif
  1992. #else
  1993. WORD wI;
  1994. if(bValue>PROGRESS_MAX)
  1995. bValue = PROGRESS_MAX;
  1996. OledCtrlEn();
  1997. OledDrawDirection(OLED_RAM_ACCESS_MODE_ROW_FIRST);
  1998. OLED_WRITE(OLED_CMD_SET_COL_ADDR) ;
  1999. OLED_WRITE(bColStart+1) ;
  2000. OLED_WRITE(bColStart+PROGRESS_MAX) ;
  2001. OLED_WRITE(OLED_CMD_SET_ROW_ADDR) ;
  2002. OLED_WRITE(bRowStart+1) ;
  2003. OLED_WRITE(bRowStart+4) ;
  2004. OLED_SET_DAT();
  2005. for(wI=0; wI<((WORD)bValue<<2); wI++)
  2006. OLED_WRITE_WDATA(OLED_RED) ;
  2007. for(wI=0; wI<((PROGRESS_MAX-(WORD)bValue)<<2); wI++)
  2008. OLED_WRITE_WDATA(OLED_BG_COLOR) ;
  2009. OLED_SET_CMD();
  2010. OledDrawDirection(OLED_RAM_ACCESS_MODE_COLUMN_FIRST) ;
  2011. OledCtrlDis();
  2012. #endif
  2013. }
  2014. #elif(_PM_VD_PLAY_&UI_USE_PROGRESS_BAR) // WHH 070114
  2015. void ShowProgress(BYTE bPrograssMax, BYTE bColStart,BYTE bRowStart,BYTE bValue)
  2016. {
  2017. #if(LCD_TYPE==TFT_ORISE||LCD_TYPE==TFT_TOPPOLY||LCD_TYPE==TFT_SOLOMON)  // Jeff070125#2
  2018. #if(!_PM_INIT_CHK_)
  2019. BYTE bKeepClk;
  2020. #endif
  2021.      WORD wI;
  2022. #if(!_PM_INIT_CHK_)
  2023. bKeepClk= obCLKMCUDIVF;
  2024. SetSysSpeed(0x03);
  2025. #endif
  2026. OledCtrlEn();
  2027. OledDrawDirection(OLED_RAM_ACCESS_MODE_ROW_FIRST);
  2028. LCD_ROT90_DISPLAY_EN(); // WHH 070128
  2029. //TftSetWindowRot(bColStart+1,bRowStart,bPrograssMax,1); // WHH 070128
  2030. #if(LCD_TYPE==TFT_ORISE)
  2031. TftSetWindow(bColStart,bRowStart+1,PROGRESS_MAX,1);
  2032. #else
  2033. TftSetWindowRot(bRowStart,OLED_MAX_ROW-bColStart-1,1,bPrograssMax); // WHH 070128
  2034. #endif
  2035. TFT_MEMORY_WRITE_START();
  2036. for(wI=0; wI<((WORD)bValue); wI++)
  2037. #if(!_PM_REC_)//WHH #13 301_070106
  2038. OLED_WRITE_WDATA(OLED_WHITE) ;
  2039. #else
  2040. OLED_WRITE_WDATA(OLED_RED) ;
  2041. #endif
  2042. for(wI=0; wI<((bPrograssMax-(WORD)bValue)); wI++)
  2043. OLED_WRITE_WDATA(OLED_BG_COLOR) ;
  2044. OledDrawDirection(OLED_RAM_ACCESS_MODE_COLUMN_FIRST);
  2045. OledCtrlDis();
  2046. #if(!_PM_INIT_CHK_)
  2047. SetSysSpeed(bKeepClk);
  2048. #endif
  2049. #endif
  2050. }
  2051. #endif