--- nono/wx/wxplanemonitor.cpp 2026/04/29 17:05:19 1.1.1.3 +++ nono/wx/wxplanemonitor.cpp 2026/04/29 17:05:31 1.1.1.6 @@ -12,6 +12,7 @@ #include "wxcolor.h" #include "wxuimessage.h" #include "bt45x.h" +#include "mainapp.h" #include "planevram.h" #include "videoctlr.h" @@ -95,9 +96,11 @@ WXPlaneVRAMBitmapPanel::Draw() if (scale > 1) { Rect dr(0, 0, bitmap.GetWidth(), bitmap.GetHeight()); - bitmap.DrawScale(dr, src, &pal[0], view.x, scale, 1, view.y, scale, 1); + bitmap.DrawBitmapI8Scale(dr, src, &pal[0], + view.x, scale, 1, + view.y, scale, 1); } else { - bitmap.DrawBitmap(0, 0, src, &pal[0], view); + bitmap.DrawBitmapI8(0, 0, src, &pal[0], view); } } @@ -139,20 +142,23 @@ WXPlaneVRAMBitmapPanel::GenPalette() { if (apply_palette) { // パレットを適用する場合 - const ColorXBGR *vmpal; - // 雑に X680x0/LUNA 対応 + // (雑に X680x0/LUNA 対応) + const std::vector *vmpal; if (videoctlr) { - vmpal = &(videoctlr->GetHostPalette())[0]; + vmpal = &videoctlr->GetHostPalette(); } else { - vmpal = &(bt45x->GetHostPalette())[0]; + vmpal = &bt45x->GetHostPalette(); } - const Color bg = vmpal[0].ToColor(); - for (int i = 0; i < pal.size(); i++) { - if ((i & planemask)) { - int n = i % 16; - pal[i] = vmpal[n].ToColor(); + int vmpal_size = vmpal->size(); + const Color bg = (*vmpal)[0]; + int d = 0; + int s; + for (; d < pal.size(); d++) { + s = d % vmpal_size; + if ((s & planemask)) { + pal[d] = (*vmpal)[s]; } else { - pal[i] = bg; + pal[d] = bg; } } } else { @@ -488,6 +494,7 @@ WXPlaneVRAMWindow::WXPlaneVRAMWindow(wxW // 上にコントロールパネル(のまず下敷き) ctrlpanel = new wxPanel(this); + ctrlpanel->SetName("WXPlaneVRAMWindow.CtrlPanel"); topsizer->Add(ctrlpanel, 0, wxEXPAND); // コントロールパネル用の横 Sizer