void LCDInit(void) { int i; LCDReset(); LCDSend(PSWRESET); // software reset SpinDelay(100); LCDSend(PSLEEPOUT); // exit sleep mode LCDSend(PBSTRON); // booster on LCDSend(PDISPON); // display on LCDSend(PNORON); // normal on LCDSend(PMADCTL); // rotate display 180 deg LCDSend(0xC0); LCDSend(PCOLMOD); // color mode LCDSend(0x02); // 8bpp color mode LCDSend(PSETCON); // set contrast LCDSend(0xDC); // clear display LCDSetXY(0,0); LCDSend(PRAMWR); // Write to display i=LCD_XRES*LCD_YRES; while(i--) LCDSend(WHITE); // test text on different colored backgrounds LCDString(" The quick brown fox ", (char *)&FONT6x8,1,1+8*0,WHITE ,BLACK ); LCDString(" jumped over the ", (char *)&FONT6x8,1,1+8*1,BLACK ,WHITE ); LCDString(" lazy dog. ", (char *)&FONT6x8,1,1+8*2,YELLOW ,RED ); LCDString(" AaBbCcDdEeFfGgHhIiJj ", (char *)&FONT6x8,1,1+8*3,RED ,GREEN ); LCDString(" KkLlMmNnOoPpQqRrSsTt ", (char *)&FONT6x8,1,1+8*4,MAGENTA,BLUE ); LCDString("UuVvWwXxYyZz0123456789", (char *)&FONT6x8,1,1+8*5,BLUE ,YELLOW); LCDString("`-=[]_;',./~!@#$%^&*()", (char *)&FONT6x8,1,1+8*6,BLACK ,CYAN ); LCDString(" _+{}|:\\\"<>? ",(char *)&FONT6x8,1,1+8*7,BLUE ,MAGENTA); // color bands LCDFill(0, 1+8* 8, 132, 8, BLACK); LCDFill(0, 1+8* 9, 132, 8, WHITE); LCDFill(0, 1+8*10, 132, 8, RED); LCDFill(0, 1+8*11, 132, 8, GREEN); LCDFill(0, 1+8*12, 132, 8, BLUE); LCDFill(0, 1+8*13, 132, 8, YELLOW); LCDFill(0, 1+8*14, 132, 8, CYAN); LCDFill(0, 1+8*15, 132, 8, MAGENTA); }
bool G15::Write( const uint32_t iData, G15DisplayState throwaway ) { unsigned char data[160*43]; memcpy(data, OpenITGLCD, 160*43); // for now, just shows bars on the LCD to indicate lights for (unsigned i = 0; i < 32; i++) { if ( iData & (1 << i) ) { for (unsigned j = 0; j < 43; j++) { for( unsigned col = 5*i; col < (5*i)+5; col++ ) { data[j*160 + col] ^= 1; } } } } // pad lights (P1 Left,Right,Up,Down): 8 9 10 11 // pad lights (P2 Left,Right,Up,Down): 12 13 14 15 // P1 Left if (iData & (1 << 8)) { LCDFill( data, 15, 84, 12, 13 ); } // P1 Right if (iData & (1 << 9)) { LCDFill( data, 15, 110, 12, 13 ); } // P1 Up if (iData & (1 << 10)) { LCDFill( data, 0, 97, 12, 14 ); } // P1 Down if (iData & (1 << 11)) { LCDFill( data, 29, 97, 12, 14 ); } // P2 Left if (iData & (1 << 12)) { LCDFill( data, 15, 123, 12, 13 ); } // P2 Right if (iData & (1 << 13)) { LCDFill( data, 15, 148, 12, 13 ); } // P2 Up if (iData & (1 << 14)) { LCDFill( data, 0, 135, 12, 14 ); } // P2 Down if (iData & (1 << 15)) { LCDFill( data, 29, 135, 12, 14 ); } return WriteLCD(data); }