LcdLogoName = 1541ii (or 1541classic)
This commit is contained in:
parent
418f8707e9
commit
34c75658eb
6 changed files with 42 additions and 4 deletions
|
@ -55,6 +55,9 @@ GraphIEC = 1
|
||||||
// If you are using a LCD screen and you would like PageUp and PageDown keys to work with it then specify this option
|
// If you are using a LCD screen and you would like PageUp and PageDown keys to work with it then specify this option
|
||||||
//KeyboardBrowseLCDScreen = 1
|
//KeyboardBrowseLCDScreen = 1
|
||||||
|
|
||||||
|
// change startup logo on oled - 1541ii or 1541classic
|
||||||
|
//LcdLogoName = 1541ii
|
||||||
|
|
||||||
// If you are using I2C LCD you can optionally change what pins it is connected to.
|
// If you are using I2C LCD you can optionally change what pins it is connected to.
|
||||||
// (defaults to 0 for non-split lines (Option A) or 1 for split lines (Option B))
|
// (defaults to 0 for non-split lines (Option A) or 1 for split lines (Option B))
|
||||||
//i2cBusMaster = 0 //SDA - pin 27 SCL - pin 28
|
//i2cBusMaster = 0 //SDA - pin 27 SCL - pin 28
|
||||||
|
|
|
@ -42,10 +42,6 @@ void ScreenLCD::Open(u32 widthDesired, u32 heightDesired, u32 colourDepth, int B
|
||||||
ssd1306 = new SSD1306(BSCMaster, LCDAddress, LCDFlip, LCDType);
|
ssd1306 = new SSD1306(BSCMaster, LCDAddress, LCDFlip, LCDType);
|
||||||
ssd1306->DisplayOn();
|
ssd1306->DisplayOn();
|
||||||
|
|
||||||
// ssd1306->Plottext(5, 0, "Pi1541", false);
|
|
||||||
// ssd1306->PlotImage(logo_ssd_1541ii);
|
|
||||||
ssd1306->PlotImage(logo_ssd_1541classic);
|
|
||||||
|
|
||||||
ssd1306->RefreshScreen();
|
ssd1306->RefreshScreen();
|
||||||
|
|
||||||
opened = true;
|
opened = true;
|
||||||
|
@ -85,6 +81,14 @@ void ScreenLCD::PlotImage(u32* image, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScreenLCD::PlotRawImage(const u8* image, int x, int y, int w, int h)
|
||||||
|
{
|
||||||
|
if (x==0 && y==0 && w==128 && h==64)
|
||||||
|
{
|
||||||
|
ssd1306->PlotImage(image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
u32 ScreenLCD::PrintText(bool petscii, u32 x, u32 y, char *ptr, RGBA TxtColour, RGBA BkColour, bool measureOnly, u32* width, u32* height)
|
u32 ScreenLCD::PrintText(bool petscii, u32 x, u32 y, char *ptr, RGBA TxtColour, RGBA BkColour, bool measureOnly, u32* width, u32* height)
|
||||||
{
|
{
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
@ -102,6 +106,11 @@ u32 ScreenLCD::GetFontHeight()
|
||||||
return 16;
|
return 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScreenLCD::RefreshScreen()
|
||||||
|
{
|
||||||
|
ssd1306->RefreshScreen();
|
||||||
|
}
|
||||||
|
|
||||||
void ScreenLCD::SwapBuffers()
|
void ScreenLCD::SwapBuffers()
|
||||||
{
|
{
|
||||||
ssd1306->RefreshScreen();
|
ssd1306->RefreshScreen();
|
||||||
|
|
|
@ -49,9 +49,12 @@ public:
|
||||||
|
|
||||||
void PlotImage(u32* image, int x, int y, int w, int h);
|
void PlotImage(u32* image, int x, int y, int w, int h);
|
||||||
|
|
||||||
|
void PlotRawImage(const u8* image, int x, int y, int w, int h);
|
||||||
|
|
||||||
u32 GetFontHeight();
|
u32 GetFontHeight();
|
||||||
|
|
||||||
void SwapBuffers();
|
void SwapBuffers();
|
||||||
|
void RefreshScreen();
|
||||||
|
|
||||||
void RefreshRows(u8 start, u8 amountOfRows);
|
void RefreshRows(u8 start, u8 amountOfRows);
|
||||||
|
|
||||||
|
|
17
src/main.cpp
17
src/main.cpp
|
@ -43,6 +43,7 @@ extern "C"
|
||||||
|
|
||||||
#include "logo.h"
|
#include "logo.h"
|
||||||
#include "sample.h"
|
#include "sample.h"
|
||||||
|
#include "ssd_logo.h"
|
||||||
|
|
||||||
unsigned versionMajor = 1;
|
unsigned versionMajor = 1;
|
||||||
unsigned versionMinor = 7;
|
unsigned versionMinor = 7;
|
||||||
|
@ -355,6 +356,20 @@ void InitialiseLCD()
|
||||||
{
|
{
|
||||||
screenLCD = new ScreenLCD();
|
screenLCD = new ScreenLCD();
|
||||||
screenLCD->Open(128, 64, 1, i2cBusMaster, i2cLcdAddress, i2cLcdFlip, 1306);
|
screenLCD->Open(128, 64, 1, i2cBusMaster, i2cLcdAddress, i2cLcdFlip, 1306);
|
||||||
|
|
||||||
|
if (strcasecmp(options.GetLcdLogoName(), "1541ii") == 0)
|
||||||
|
{
|
||||||
|
screenLCD->PlotRawImage(logo_ssd_1541ii, 0, 0, 128, 64);
|
||||||
|
snprintf(tempBuffer, tempBufferSize, "Pi1541 V%d.%02d", versionMajor, versionMinor);
|
||||||
|
screenLCD->PrintText(0, 16, 0, tempBuffer, 0xffffffff);
|
||||||
|
screenLCD->RefreshScreen();
|
||||||
|
}
|
||||||
|
if (strcasecmp(options.GetLcdLogoName(), "1541classic") == 0)
|
||||||
|
{
|
||||||
|
screenLCD->PlotRawImage(logo_ssd_1541classic, 0, 0, 128, 64);
|
||||||
|
screenLCD->RefreshScreen();
|
||||||
|
}
|
||||||
|
|
||||||
screenLCD->SetContrast(i2cLcdOnContrast);
|
screenLCD->SetContrast(i2cLcdOnContrast);
|
||||||
}
|
}
|
||||||
else if (strcasecmp(options.GetLCDName(), "sh1106_128x64") == 0)
|
else if (strcasecmp(options.GetLCDName(), "sh1106_128x64") == 0)
|
||||||
|
@ -1060,6 +1075,8 @@ void DisplayOptions(int y_pos)
|
||||||
screen.PrintText(false, 0, y_pos += 16, tempBuffer, COLOUR_WHITE, COLOUR_BLACK);
|
screen.PrintText(false, 0, y_pos += 16, tempBuffer, COLOUR_WHITE, COLOUR_BLACK);
|
||||||
snprintf(tempBuffer, tempBufferSize, "LCDName = %s\r\n", options.GetLCDName());
|
snprintf(tempBuffer, tempBufferSize, "LCDName = %s\r\n", options.GetLCDName());
|
||||||
screen.PrintText(false, 0, y_pos += 16, tempBuffer, COLOUR_WHITE, COLOUR_BLACK);
|
screen.PrintText(false, 0, y_pos += 16, tempBuffer, COLOUR_WHITE, COLOUR_BLACK);
|
||||||
|
snprintf(tempBuffer, tempBufferSize, "LcdLogoName = %s\r\n", options.GetLcdLogoName());
|
||||||
|
screen.PrintText(false, 0, y_pos += 16, tempBuffer, COLOUR_WHITE, COLOUR_BLACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CheckOptions()
|
static void CheckOptions()
|
||||||
|
|
|
@ -221,6 +221,10 @@ void Options::Process(char* buffer)
|
||||||
{
|
{
|
||||||
strncpy(starFileName, pValue, 255);
|
strncpy(starFileName, pValue, 255);
|
||||||
}
|
}
|
||||||
|
else if ((strcasecmp(pOption, "LCDLogoName") == 0))
|
||||||
|
{
|
||||||
|
strncpy(LcdLogoName, pValue, 255);
|
||||||
|
}
|
||||||
else if ((strcasecmp(pOption, "LCDName") == 0))
|
else if ((strcasecmp(pOption, "LCDName") == 0))
|
||||||
{
|
{
|
||||||
strncpy(LCDName, pValue, 255);
|
strncpy(LCDName, pValue, 255);
|
||||||
|
|
|
@ -76,6 +76,7 @@ public:
|
||||||
inline unsigned int I2CLcdOnContrast() const { return i2cLcdOnContrast; }
|
inline unsigned int I2CLcdOnContrast() const { return i2cLcdOnContrast; }
|
||||||
inline unsigned int I2CLcdDimContrast() const { return i2cLcdDimContrast; }
|
inline unsigned int I2CLcdDimContrast() const { return i2cLcdDimContrast; }
|
||||||
inline unsigned int I2CLcdDimTime() const { return i2cLcdDimTime; }
|
inline unsigned int I2CLcdDimTime() const { return i2cLcdDimTime; }
|
||||||
|
inline const char* GetLcdLogoName() const { return LcdLogoName; }
|
||||||
|
|
||||||
// Page up and down will jump a different amount based on the maximum number rows displayed.
|
// Page up and down will jump a different amount based on the maximum number rows displayed.
|
||||||
// Perhaps we should use some keyboard modifier to the the other screen?
|
// Perhaps we should use some keyboard modifier to the the other screen?
|
||||||
|
@ -119,6 +120,7 @@ private:
|
||||||
|
|
||||||
char starFileName[256];
|
char starFileName[256];
|
||||||
char LCDName[256];
|
char LCDName[256];
|
||||||
|
char LcdLogoName[256];
|
||||||
|
|
||||||
char autoMountImageName[256];
|
char autoMountImageName[256];
|
||||||
char ROMFontName[256];
|
char ROMFontName[256];
|
||||||
|
|
Loading…
Reference in a new issue