--- nono/vm/bt454.h 2026/04/29 17:04:55 1.1.1.7 +++ nono/vm/bt454.h 2026/04/29 17:05:11 1.1.1.8 @@ -4,9 +4,14 @@ // Licensed under nono-license.txt // +// +// BT454 +// + #pragma once #include "device.h" +#include "color.h" struct BT454 { @@ -32,13 +37,7 @@ struct BT454 // idx = 4 はパレット 1、ab 1。 int idx; - // ホスト用に変換したパレットデータ。レンダラ側から参照するもので - // 4バイトになるようパディングしておく。 - // [0] パレット0 R - // [1] パレット0 G - // [2] パレット0 B - // [3] padding - // : + // ホスト用に変換したパレットデータ。 // ホスト用なので各8ビット、といいつつ元レジスタが上位4ビットのみ有効で // 下位4ビットは 0 なのでここでは手抜きしてその値をそのまま流用する。 // つまり $f (最も明るい) は 255 ではなく 240。 @@ -47,7 +46,7 @@ struct BT454 // 展開する。パレットのうち実際には #14 と #15 だけが使われるが、 // それについてはレンダラ側で処理している。 // see https://twitter.com/tsutsuii/status/356704682514714625 - uint8 hostcolor[4 * 16]; + ColorXBGR hostcolor[16]; }; class BT454Device : public IODevice @@ -60,10 +59,10 @@ class BT454Device : public IODevice virtual ~BT454Device() override; bool Init() override; - void ResetHard() override; + void ResetHard(bool poweron) override; // ホストパレットのアドレスを取得 - const uint8 *GetHostPalette() const { return reg.hostcolor; } + const ColorXBGR *GetHostPalette() const { return reg.hostcolor; } // BusIO インタフェース // (内蔵 ROM からのアクセス用に特別に public にしてある) @@ -87,4 +86,4 @@ class BT454Device : public IODevice static const char rgbstr[3]; }; -extern std::unique_ptr gBT454; +extern BT454Device *gBT454;