--- nono/wx/wxplanemonitor.cpp 2026/04/29 17:05:19 1.1.1.3 +++ nono/wx/wxplanemonitor.cpp 2026/04/29 17:05:27 1.1.1.5 @@ -95,9 +95,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 +141,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 {