編集可能

カラーパレットとかパレットアニメーションとは何か

パソコンやゲーム機におけるカラーパレットってなんだったっけという話
パソコン 8bit パレット アニメーション
8

↑このまとめからいろいろ考えたこと。パソコンやゲーム機におけるカラーパレットとはなんだったのか

後藤寿庵 @juangotoh
水面に映る建物が歪むアニメーションとかまでパレットでやってるのは地味にすごいな。 http://t.co/BhrZTvqp
後藤寿庵 @juangotoh
パレットアニメーションって今はまず使われないよな。そもそもハードウェアパレット自体が…一応最新のPCでもVGAモードは存在してるので、機能として残ってはいるのかな。
後藤寿庵 @juangotoh
パソコンの画面って、VRAMというメモリに置かれたデータを読み取って、「ここは青」「ここは赤」と判断してスクリーンに表示するわけだけど、画面上の一ピクセルごとに色を変えられるようになったのがFM-8とかあのへんの時代。その頃は固定8色しか出なかった。
後藤寿庵 @juangotoh
R,G,Bの三色と、それらを100%ずつ組み合わせたR+G(黄色),R+B(紫),G+B(青緑),R+G+B(白),それに全部0の黒。この8色ね。これをデジタルカラー等と言ったものです。AppleIIとかは最初期のパソコンで16色出してたけどあれは変態回路だからw
後藤寿庵 @juangotoh
デジタルカラーはRGB各色ONかOFFかだけでいいので、それぞれ1bitで済む。この頃のパソコンだと、1bit=1ドットの画面を三枚重ねて表示したりしていた。
後藤寿庵 @juangotoh
要するに1ピクセルを3bitで表して、それぞれRGBに対応させるわけ。でもまあ、原色だらけのデジタルカラー8色ってギトギトしてるし、もっと色を使いたいよね。で、どうするか。
戦艦ユリシーズ @bs_ulysses
@juangotoh: 要するに1ピクセルを3bitで表して、それぞれRGBに対応させるわけ。でもまあ、原色だらけのデジタルカラー8色ってギトギトしてるし、もっと色を使いたいよね。で、どうするか。” 四点を一色とするタイルパターン
後藤寿庵 @juangotoh
たとえばRGBそれぞれ4bit割り当てて、各16段階の変化をつければ、全部で4096色を表現できる。だけど、そのためには1ピクセルになんと12bitも必要になってしまう。1980年代前半あたり、メモリは高価だったので20万円前後のパソコンにそんなにメモリを積めなかった。
後藤寿庵 @juangotoh
ならどうするか。「カラーパレット」というものを作る。これは絵の具のパレットと同じように、たとえば16個の皿があって、そこにそれぞれ12bitの色データを置いておける。
後藤寿庵 @juangotoh
VRAMには、パレットの皿の何番目かという数字を置く。すると、表示回路がVRAMのデータを読んで、「ふむふむ、3番目か、パレット3には何色が入ってるかな」とパレットを読んで画面に表示する。
後藤寿庵 @juangotoh
こういう仕組みなので、同時に表示できるのは16色。ただしその16色は4096色から選ぶことができるわけです。こういう規格がだんだん発達していって、1600万色中256色同時表示とかになる。
後藤寿庵 @juangotoh
んで、一枚の静止画を表示したあとで、VRAMの方ではなくパレットの方を書き換えるとどうなるか。表示回路は1/60秒という短い単位でVRAMとパレットをスキャンして画面に送っています。なのでパレットを書き換えると瞬時に画面の色が変わる。
後藤寿庵 @juangotoh
これを応用して、青、水色、白の縞模様を描いて、そのパレットをループ処理で書き換えていくと水が流れるようなアニメーションになったりする。これがパレットアニメーション。
蓮之介🍌Virtual ちぅ魔🐈🖤 @rennosuke
@juangotoh 画面スクロールをVRAM上のビットをシフトして実現するルーチンをアセンブラで書いたりしてました…懐かしい。
後藤寿庵 @juangotoh
TVアニメみたいに何枚もの絵を用意し、VRAM全体を高速書き換えするのは当時のPCの能力ではかなり困難でした。上から下までてろ~っと書き換わるみたいになっちゃう。だもんで瞬時に切り替わるパレットアニメーションは重宝されました。
後藤寿庵 @juangotoh
ところで、ハードウェアで実現するパレットは、ウィンドウシステムとは相性がよくありません。画面表示回路は通常モニタ全体を制御するので、パレットを勝手に書き換えられてしまうと、ウインドウやメニューがサイケなことになってしまいます。
後藤寿庵 @juangotoh
それとともに、メモリの価格が下落し、「もうあれじゃね?1ピクセルにダイレクトにRGB各8bit、全部で24bitとか使っちゃってもよくね?」ってことになって、パレットはすたれていきます。
後藤寿庵 @juangotoh
その後、表示回路がどんどん高速、大容量化し、馬鹿でかい画面で書き換えも一瞬みたいになっていき、ソフトウェアでパレットをエミュレートできるようになってきた。んでHTML5のCanvasとJavaScriptでやっちゃったのが これなわけ。 http://t.co/Ly5qOgFC
後藤寿庵 @juangotoh
http://t.co/IYHHsOjf こちらのまとめで「ドット絵すげえ」みたいな感想が多いけど、パレットアニメーションがここまでスムーズにソフトでできるようになったのだなあってのも感慨深いのです。

コメント

@izanamu 2012年10月12日
これに関しては各人の“時代”で感心する所が違うんだな(笑)。
でき🌂 @dekijp 2012年10月13日
BMPに残ってるでしょ。BMPのカラーパレットを変更して表示しなおせば効率良くいけるはず。
後藤寿庵 @juangotoh 2012年10月13日
まあ、ずいぶん前からパレットやスプライトを多用するゲーム機のエミュレータが実機以上の速度で動くようになってるので、いまさらな話ではありますね。
いくた♥️なお/伊奈緒たくみ /なまひめざんまい @ikutana 2012年10月13日
256色のパレットアニメーションっぽいなぁと思った。X68000とかスーパーファミコンとかの世代であって、ファミコンとかPC-8801の世代ではないよね。
いくた♥️なお/伊奈緒たくみ /なまひめざんまい @ikutana 2012年10月13日
FM-8はもうパレットがあったはずです。ただ、割り当てられる色もデジタル8色だっただけ。日本だとPC-8801mkIISRあたりがアナログRGBで多色パレット使える様になったはしり。PC-6001mkIIは16色だったかな。
夢乃 @iamdreamers 2012年10月13日
ちょっと話ずれるけど、ユーザ定義文字(機種によってはPCGとか言った)を使って、障害物が増えても速度の落ちないアニメーションテクとかもあった。
ログインして広告を非表示にする
ログインして広告を非表示にする