--- nono/vm/lcd.cpp 2026/04/29 17:05:29 1.1.1.12 +++ nono/vm/lcd.cpp 2026/04/29 17:05:50 1.1.1.14 @@ -9,15 +9,16 @@ // #include "lcd.h" +#include "monitor.h" #include "uimessage.h" // コンストラクタ LCDDevice::LCDDevice() : inherited(OBJ_LCD) { - monitor.func = ToMonitorCallback(&LCDDevice::MonitorUpdate); - monitor.SetSize(67, 3); - monitor.Regist(ID_MONITOR_LCD); + monitor = gMonitorManager->Regist(ID_MONITOR_LCD, this); + monitor->func = ToMonitorCallback(&LCDDevice::MonitorUpdate); + monitor->SetSize(67, 3); } // デストラクタ @@ -25,6 +26,15 @@ LCDDevice::~LCDDevice() { } +// 初期化 +bool +LCDDevice::Init() +{ + uimessage = gMainApp.GetUIMessage(); + + return true; +} + // リセット void LCDDevice::ResetHard(bool poweron) @@ -36,7 +46,7 @@ LCDDevice::ResetHard(bool poweron) SetAddr(0, false); - UIMessage::Post(UIMessage::LCD); + uimessage->Post(UIMessage::LCD); } // 電源オフ @@ -45,7 +55,7 @@ LCDDevice::PowerOff() { // XXX 電源オフは色を落としたほうがいい memset(ddram, 0x20, sizeof(ddram)); - UIMessage::Post(UIMessage::LCD); + uimessage->Post(UIMessage::LCD); } void @@ -212,7 +222,7 @@ LCDDevice::Write(uint8 data) memset(ddram, 0x20, sizeof(ddram)); // DDRAM アドレス 0 をセット SetAddr(0, false); - UIMessage::Post(UIMessage::LCD); + uimessage->Post(UIMessage::LCD); } else { // $00 が書き込まれるんだけど、データシートにはないんだよね。 // 無視していいかな。 @@ -231,7 +241,7 @@ LCDDevice::Write(uint8 data) addr_counter % 0x40, addr_counter / 0x40, data); } NextAddr(); - UIMessage::Post(UIMessage::LCD); + uimessage->Post(UIMessage::LCD); } }