Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

凄まじい粗画質!MSXのSCREEN3で楽しいアニメーション

https://p.gigamix.jp/devmsx/cg/screen3-animation_title.png

よし。ようやくSCREEN3の時代が訪れたな!(ムチャ理論 — Takashi Kobayashi (@nf_ban) 2022年12月9日

SCREEN3とは

今更なのだが念のためSCREEN3(MSX)とSCREEN5(MSX2)の解像度の違いを同じプログラムで比較してみるのだが…ほんっとSCREEN3はドットがデカいな!🤨VRAMの構造が全く違うのに同じプログラムが動く(同じ乱数だから線の引かれ方と色の配置も同じ)というのはある意味凄い。 - Takashi Kobayashi (@nf_ban) 2023年5月17日

  • MSX1から利用できる、1画面が横64×縦48ドットのスクリーンモード
  • SCREEN3では点(ドット)のことを「ブロック」と呼ぶ
  • 通称「マルチカラーモード」と呼ばれ、ブロックは16色から自由に配置できる(SCREEN2の横8px毎2色のような制限が無い)
  • 1ブロックの点の大きさは、他のスクリーンモードでは4×4pxに該当する(64×48ブロック=256×192px)
  • VRAMのデータ仕様が複雑で使いづらい
  • MSX2以降ではカラーパレット(RGB333)が利用できる
  • MSX2以降ではVDP設定を変更すると128KBのVRAMへアクセスできる(デフォルトは16KB)
  • MSX2以降ではVDP設定を「212ラインモード」へ変更すると縦方向が53.5pxまで拡張する(デフォルトは「192ラインモード」)

https://p.gigamix.jp/devmsx/cg/screen3-animation_fig_1.png

https://p.gigamix.jp/devmsx/cg/screen3-animation_fig_2.png

 SCREEN3を扱ううえで最大の課題が「VRAMのデータ仕様が複雑」なことです。MSX2以降のビットマップモードのようにシンプルなデータ管理ができなく、なぜか縦2×4ブロック(横8×縦32px)単位の管理が必要です。

 そのため、「とにかく画質が粗い」という見た目の問題も相まって、SCREEN3の活用がユーザー間に広まらず、ほとんど見向きされませんでした。

アスキー ポケットバンク 9 グラフィックス○秘伝 この本は本当にお世話になりました。高速切り替えやデフォルトフォント変更。ワークエリアのVRAMテーブルアドレスのそれぞれの違いと使い方。SCREEN1.5とSCREEN3の魅力。SCREEN3以下ならテクハンより詳しいですよね。#MSX pic.twitter.com/aMMiYg3eV8 — うにスキー (@uniskie) 2022年11月6日

 この本はバイブルです。ぜひ大切に保存してください!

いにしえの、SCREEN3アニメの提唱者

スクリーン3のススメ

 SCREEN3を用いたアニメーション動画の制作については1990年代から研究はされていて、2000年頃にWebで公開された「スクリーン3のススメ」で広く(!?)認知されるようになりました。ここに、偏屈ながらも熱い想いが集約されています。

↓こちらをクリック↓

www.ca.sakura.ne.jp

 一般人の見識「こんなん何の役に立つん?」がまさにその通りなんですが…。技術的には可能であることが分かりつつ、とにかくアニメーションのフレーム(コマ)データをどう効率的に作成するか?という問題が目下の課題でした。

なぜSCREEN3でアニメーションが良いのか

  • SCREEN3はVRAMが低コスト。1画面を構成する点の数が64×48ブロックしかなく、実質データ量は1536バイトとかなり小さい
  • SCREEN3は最大16色使える64×48pxのビットマップ画像とも言え、「横8px中2色しか使えない」というような色の制限は受けないので、絵を描きやすい
  • 画面のページ切り替え処理がBASIC言語で簡単に実装できるので、フレームアニメーションがやりやすい
  • MSX2以降の機種ではVRAMが128KB搭載されており、1フレーム2KBと見積もっても60超のフレームを格納できるため、オンメモリでのアニメーションに適している
  • MSX2以降の機種ではデフォルトカラーのほかパレット16色を自由に作成できるので、アニメーションのフレームごとに最適な色を決められる

 お分かりのように、基本的にはMSX2(VRAM128KB搭載機種)以上の規格での動作が前提になります。そして、極めつけが…

5×5cmの外形に4cmの実質解像度というMSX0でドットがデカいSCREEN3が見直されています(と勝手に思ってる)。1画面2kB弱、しかもMSX2(VRAM128kB)仕様だからRGB333パレットも使えるし60ページ以上の裏画面も持てます!有能な減色アプリが数々リリースされた今なら、もう伸び代しかない!(だいぶ病んでいる - Takashi Kobayashi (@nf_ban) 2023年4月11日

https://static.camp-fire.jp/uploads/project_version/image/1005732/3af770be-f3ea-4a0c-83c8-06fd8c1eacdd.jpeg

 2023年夏にリリース予定である MSX0 Stack の登場により1980・90年代にMSXをいじっていたマイコン少年のプログラミング熱・MSX熱がにわかに再燃しつつあるなか、MSX0 Stackの液晶画面が実質4cm角というとても小さな面積であることで、精細な画面表示をしてもどうせよく見えない(実際SCREEN6/7の高解像度はMSX0 Stackでは正確に表示できない)のであれば、いっそSCREEN3という粗画質でもMSX0 Stackの小画面なら意外と見栄えがするのでは?という予想がありました。

  • MSX0 StackはMSX2+相当のエミュレーションで動作する(=MSX2以降に拡張された機能が利用できる)
  • MSX0 Stackのファイルアクセス(ローディング)は瞬時である(実際のFDDのアクセス速度をエミュレーションしていない)

MSX0でMSX BASICを使ったアニメーション。最適化されたパレットに対応しました。(前回はMSX1標準パレット)。512色中16色最小距離加算、ベタ(Simple)での変換結果です。要VRAM64KB #MSX0 #MSXBASIC #MSX2 #さぽ太 #メタルギア eme (@emef220) - 2023年5月19日

 実際にMSX0 StackでSCREEN3アニメーションのプログラムを作成・実行する人が現れ始め、粗画質の筆頭株であるSCREEN3のスクリーンモードが見直されてきています。

SCREEN3アニメーション専用の画像変換ツールが登場

「Easy SCREEN3 Animation Converter for MSX2」を公開しました。動画ファイルからお好きな場面を切り出し、MSX2のSCREEN3モードを使ったアニメーションに変換するWebアプリです。MSXPenを使用して簡単にアニメーションを見ることも出来ます。#nazoware #MSX2 - まひな(マイナンバーカードじゃない方) (@myna_nazo) 2023年5月11日

 「Easy SCREEN3 Animation Converter(オンライン MSX SCREEN3アニメーション画像コンバータ)というWebアプリが登場しました。任意の動画データをWebブラウザでアップロードすると、SCREEN3のアニメーションデータを生成し、起動用BASICプログラムまで付いてきます。

 なんと良い時代になったんでしょう。

アニメーションを実現する方法

ページ切替法

30枚1.25秒程の時間ですが印象的な場面だと面白いモノが出来ると感じました。まひなさんのEasy SCREEN3 Animation Converter を使用してます。TVアニメ【推しの子】オープニング#MSX #MSX2動画 #16色グラフィック pic.twitter.com/GgRZcOTrYh — いのしかトラッキー (@TooLucky_) 2023年5月10日
ベタで変換したものの方がもっと良さげかも #MSXPen #MSX2動画 #SCREEN3 SHILPEED OP 8FPS 1-30(SIMPLE) - eme (@emef220) 2023年5月15日

 アニメーションのフレームデータをMSX2のVRAMへ大量に配置しておき、SCREEN3におけるパターンジェネレータテーブルの開始アドレスを1コマごとずらすことで、あたかもページを切り替えるように高速で画面を書き換えることができます。ただしこれには前提条件があります。

BASIC的にはSCREEN5・VDPモードはSCREEN3

「SCREEN5でBLOADしているのはSCREEN3で4000H以降まで読み込むとデータが化けるためです。何故?」SCREEN3では互換性のため、VDPは16Kで折り返しています。 - spacemoai (@spacemoai) 2023年5月3日

 MSX2はVRAMが128KB搭載されていますが、MSX BASICでSCREEN3を指定するとVRAMは先頭の16KBしかアクセスできなくなります(MSX1との互換性維持のため)。そこで、BASICではSCREEN5として起動し、VDPへSCREEN3のモードへ切り替えるよう直接命令します。こうすることで、MSX BASIC上はSCREEN5の認識のまま実際はSCREEN3の画面として表示されるようになります。

 BASIC上はSCREEN5のままなので、VRAMへのアクセスは16KBの制限を受けず128KBアクセス可能になります。アニメーションのフレームデータをVRAMへ大量に配置しておき、パターンジェネレータテーブルの開始アドレスをフレームごとに変更すれば画面がどんどん切り替わる、という仕掛けです。

それでは種明かしです。WebMSXのリンクを用意しました。端的にいうと、SCREEN3の画像(64x48)ファイルを随時読み込みながら、ジェネレータテーブルを切り替えています。SCREEN3.05というと大層ですが、やってることは物凄く単純です😆https://t.co/3APeIC7QGN#WebMSX #MSX0 #MSX2 #MSXBASIC #SCREEN3 https://t.co/rw4thmhZBL — eme (@emef220) 2023年5月14日
ありがとうございます‼️勝手にSCREEN3.05と呼んでます(😅)が、端的にいうとBASIC側はSCREEN5でVDPだけSCREEN3なモードです。結果として、ちょっと変則的で扱いづらいネームテーブルですが、裏画面を62枚持て、SCREEN5と同じくSETPAGE又はACPAGE(&HFAF6)を通してVRAM128KBにアクセス出来ます。(続く) — eme (@emef220) 2023年5月14日
SCREEN3ではBLOAD/BSAVEにおいて、そのセーブ元/ロード先の対象が&H0-&H3FFFというVRAMの最初の16KBに固定されてしまいます。これの回避策を色々試行錯誤した結果、この案にいきつきました。SCREEN5でBSAVEしたデータをそのまま素直にVRAMにアップロード出来るという点で凄く使い易くなったと思います — eme (@emef220) 2023年5月14日
すご〜く単純化すると、SCREEN3ベースでもっと沢山再生できる道が開けたという事です😉一気に63コマ再生して、次の63コマをファイルから読み込んでも良し、小分けにしてちょっとずつ読み込んで都度再生も良し。700KBに316コマ分(内5コマはネームテーブル領域の為311コマ有効)入る事もわかりました — eme (@emef220) 2023年5月14日

 かくいう筆者(nf_ban)も実は去る90年代にページ切替法でSCREEN3アニメーション動画を作成していました。フレーム画像はソニーのビデオデジタイザカートリッジ・HBI-V1を用いて映像を1枚1枚デジタイズ(デジタルスキャン)、そしてSCREEN8→5→3コンバータでデータ化しました。

帰宅しました。MSXでやったらイメージ化できた「アデランスディスク」。折角なので動画をどうぞ。映像をHBI-J1で秒間4コマくらいでデジタイズ+1bitサンプリング録音するアニメーションツールで、テレビCMをデータ化。いわゆるSCREEN3アニメ。オンメモリ再生。なぜアデランスを選んだのかは不明… pic.twitter.com/bOQapV9kIm — Takashi Kobayashi (@nf_ban) 2018年11月14日
パナソニックのMSX、A1のイメージキャラクター「アシュギーネ」テレビCMのデータも作ったけど、映像ボケボケ+音声ガッサガサなので、雰囲気だけ味わってください。 pic.twitter.com/OtwkkgzKLR — Takashi Kobayashi (@nf_ban) 2018年11月14日
さっきの「アデランスディスク」のMSXアニメツールを使った、新しいディスクを発掘した。これはCMではなくて自分等で撮影したビデオ映像でしょーもないSCREEN3アニメを作ったっぽい。右は俺だが…左は誰だろう?リンクスの知人かな? pic.twitter.com/t7qaDf6IuD — Takashi Kobayashi (@nf_ban) 2018年11月14日

ブロック転送法

RAM→VRAMのブロック転送

@nf_ban @SAL_MSX @emef220 @goripon_tw @1re1 MSXのSCREEN3でDM-system2を活用して、古典的なTHE HORSE IN MOTIONのアニメを作りました。全15コマ全画角書き換えてます。スピードは問題ないでしょう。 pic.twitter.com/xo2gX93hc0 — いのしかトラッキー (@TooLucky_) 2023年4月17日
MSXのSCREEN3で回転を4色に絞ってパターンを4色x4ドットで2bitx4=8bitになるのでネームテーブルを書き換えるようにして転送量を減らしたり端のチェックを外したりしてみた。#MSX0 #MSX3 次はマップを1バイトで2bit*4dotにして128*128/4=16kbytesで動かしたい。 pic.twitter.com/zARYLhtUA9 — e(i(I),I). e(A+B,I):-e(A,J),e(B,K),I is J+K. (@h_sakurai) 2023年4月29日

 RAMに格納した画像データをVRAMのパターンジェネレータテーブルへ次々と転送することで画面を書き換える手法。ページ切り替えではないため処理速度は低下しますがVDPの制御はシンプルで、MSX1でも利用できます。予めフレーム画像を切り替えるだけの予定調和的な動画でなく、CPUによる演算結果をVRAMへ都度出力したりするようなインタラクティブな演出におすすめです。

 反面、RAMの容量が不足気味(特にBASIC+FDD環境では約20KB程度まで減少)となり、フレーム画像を多数用意するような演出には向きません。マッパーRAMまで活用するなら話は別ですが…

ROM→VRAMのブロック転送

 画像データをメガROMの形状にして、ROMからVRAMのパターンジェネレータテーブルへ次々とブロック転送することで画面を書き換える手法。データ量に応じてROMの容量を拡張してゆけるのでRAMのようなMSX本体側の制限がなく、長編のアニメーション動画にも向いています。

MSX (MSX2以降) SCREEN3で動画実験 "Bad Apple!!" (参考用)MSX1用と比べて白黒の諧調は多いですが画質は粗くなりました。64ドット×48ドット。秒間30コマ。ROM容量2.25Mバイト(18メガビット)音源の関係でMSX2+で動かしています 音楽はPSGとFM音源です(aro氏に作って頂きました)※MGSDRV使用 pic.twitter.com/MyJhH4sYEG — MSX研鑚推進委員会 (@mdpc___) 2023年4月27日
MSX (MSX2以降) SCREEN3で動画実験 アニメ「めぞん一刻」OP 一応やってみました。64ドット×48ドット。秒間30コマ。ROM容量3Mバイト(24メガビット)音源の関係でMSX2+で動かしています。音楽はPSGとFM音源です。(aro氏に作って頂きました)※MGSDRV使用 pic.twitter.com/y85Vv5SPim — MSX研鑚推進委員会 (@mdpc___) 2023年4月23日

 音楽再生をMSXの音源でこなし、音声合成もやっていて、もはやオーパーツでしょ…

ブロック転送による縦スクロール

 SCREEN3のパターンネームテーブルは横2×縦8ブロック(横8×縦32px)が1単位となっているため、1ブロック単位の画面スクロール処理がとてつもなく面倒です。

 とは言え、パターンネームテーブルの最小単位である「縦8ブロック(32px)単位の縦スクロール処理」はBASICでも比較的簡単です。

MSX SCREEN3の難解な仕様を再確認し、まともに縦スクロールするには本気で取り組まないとダメだわと嘆きつつ、32px単位ならBASICでも簡単に縦スクロールできるかも?と思って作ったサンプルプログラムhttps://t.co/QQActqiS3o あかべこさんお誕生日おめでとうございます!🎉(画像お借りました) pic.twitter.com/XETqPBK8nL — Takashi Kobayashi (@nf_ban) 2023年4月11日

 縦8ブロック(32px)単位で縦スクロールする、BASICのサンプルプログラム。

32pxと言うのは、SCREEN3は1ブロック2×2の点(=8×8px)が縦に4個(8×32px)繋がって横展開される特殊な構造で、点単位で縦スクロールするのがめちゃくちゃ大変です。ただし4ブロック(縦32px)単位であれば単に行送りするだけなので簡単です。ちなみに画像はSCREEN5の1枚絵をSCREEN3用に変換しています。 pic.twitter.com/rmN8jKFFiV — Takashi Kobayashi (@nf_ban) 2023年4月11日
SCREEN3の構造を表にしてみました。SCREEN5のドット絵をIとJの二重ループの順番で点を読み込み、RAMへ保存しています。Iのループは32毎に下段へ改行し511までループするので計16段(=Y座標128px)まで読み込む、ということです。160行と220行のLINE命令は進捗を見たかっただけなので不要です。 pic.twitter.com/DpTMVrkSyX — Takashi Kobayashi (@nf_ban) 2023年4月12日
1バイトで2pxのくだりは、実はSCREEN3とSCREEN5は同じ構造なんです。SCREEN5の横64pxは計32バイトなのですがSCREEN3では先に縦方向へ8px読む必要があるためJのループを設けています。SCREEN5では横256pxで128バイトです。だからJのループで1px下の点を読むときは128を足しています。 — Takashi Kobayashi (@nf_ban) 2023年4月12日

 同様に、パターンネームテーブルの配置を工夫すれば「横2ブロック(横8px)単位の横スクロール」も比較的簡単に実装可能かと追われます。

パレット切替法(パレットアニメーション)

 MSX2ではRGB333(RGBの各輝度が3bit)のパレットを16色作成できます。パレットを高速に切り替えることでアニメーションの演出に使うことができます。色を変更するだけなのでデータ量が小さく(16色フルに変更してもたった32バイト)、処理速度も軽いのがメリットです。

 パレットアニメーションはMSX・FANの「AVフォーラム」のほか、市販レトロゲームの演出でもよく使われていました。「スーパーマリオブラザーズ」のコインが光る表現、「ベア・ナックル」の海岸に波が打ち寄せる表現…それらはキャラクターの色は変わっていますがキャラクターのパターン(ドット絵データ)が変更されているわけではありません。

 この手法はSCREEN3に限らず、SCREEN5以降でも利用できます。MSXを用いたサンプルは以下のページで解説しています。

↓こちらをクリック↓ www.gigamix.jp

白黒画像のOR演算法

SCREEN3で63コマはパレット使えるなら63x4プレーンで252フレームの白黒アニメが作れるんじゃないのか?とか思った。4色で63x2=126フレームとかw#MSX0 — e(i(I),I). e(A+B,I):-e(A,J),e(B,K),I is J+K. (@h_sakurai) 2023年4月17日

 上のツイートを解説します。白黒2階調のフレーム画像4枚を工夫して合成し、「見せたいフレーム」だけ色を有効化しそれ以外は無効化(背景化)するようにパレットを切り替えると、最大4枚のフレームを1画面のデータ量で表現できます。

モノクロ2色画像(64×48px)の4枚をOR合成したうえでパレットをひたすら変更して実現するMSX SCREEN3のアニメーション。画像は1枚だけ(実質1536バイト)+パレットセット4本で128バイト。データ量を節約できる! - Takashi Kobayashi (@nf_ban) - 2023年5月20日

 どういうことか言うと、白黒2階調の画像を以下の仕様で作成します。

https://p.gigamix.jp/devmsx/cg/screen3-animation_fig_3.png

  1. 1枚目は「背景色をcolor 0、有効色をcolor 1(bit0が1)」
  2. 2枚目は「背景色をcolor 0、有効色をcolor 2(bit1が1)」
  3. 3枚目は「背景色をcolor 0、有効色をcolor 4(bit2が1)」
  4. 4枚目は「背景色をcolor 0、有効色をcolor 8(bit3が1)」

 よく見ると、有効色が1bitずつずれています。この4枚をOR演算で合成します。

https://p.gigamix.jp/devmsx/cg/screen3-animation_fig_4.png

 4枚なので4bit、全てのbitが1になっている(&b1111=4枚全ての画像で色が付いた)点の状態でも、最大16色(4bit)しか使用しません。SCREEN3は64×48pxしか領域がありませんが点の色を16色の中から自由に決められる、ある意味ビットマップ画像ですから、OR演算で合成した画像はそのまま表示できます。

https://p.gigamix.jp/devmsx/cg/screen3-animation_fig_5.png

 そして、MSX2以降の規格ではパレットによって16色を自由に決定できますので、見せるフレーム・見せないフレームごとにパレットを変更することで影絵のようなアニメーションが実現できるわけです。

皆さんのSCREEN3作品集

#msx screen3を使った動画。データの作り方を幾とおりか試してみました。その1 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210901_2151.dsk その2 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210901_2154.dsk その3 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210901_2159.dsk その4 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210901_2203.dsk その5 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210901_2206.dsk - keeekn (@fukui_keeekn) 2021年9月1日
#msx screen3を使った動画。データ試作の続きです。Yukari(FLAX.exe)を使わせていただきました。その6 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210904_0814.dsk その7 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210904_0817.dsk その8 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210904_0819.dsk その9 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210904_0820.dsk その10 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210904_0822.dsk その11 https://webmsx.org/?MACHINE=MSX1J&DISK=http://www.mitene.or.jp/~wintree/rent/keeekn/msx/P210904_0824.dsk - keeekn (@fukui_keeekn) 2021年9月4日
MSXで動画作りにハマってた頃のデータだった。SCREEN3+1bitサウンドポートPCMの、音も見た目もガッサガサな動画。タイムスタンプが1992年…「アメリカ横断ウルトラクイズ」がまだ放送されていたあの頃… - Takashi Kobayashi (@nf_ban) 2019年7月5日
#MSX SCREEN3の64×48でスクロール風に描画してみました。@nf_banさんSCREEN3の難解な仕様やアドレス計算のご教授ありがとうございました。絵はうる星やつらアニメ公式HPから拝借 pic.twitter.com/dRAzHwZG9u — いのしかトラッキー (@TooLucky_) 2023年4月12日
#MSX のSCREEN3で表しました。パレット上手く使えなくて難しいです。背景に色が持っていかれるので、背景無くす方がいいのかな。みんな大好き響子さん めぞん一刻 pic.twitter.com/o0o4ZZbnb1 — いのしかトラッキー (@TooLucky_) 2023年4月28日
#MSX の #SCREEN3 でリゼロのレムちゃん風です。blueMSX上でDM-SYSTEM2で表示してます。まひな(@myna_nazo)さんのRetro PC画像変換を使用しています。 pic.twitter.com/R5vYFGZ8Nt — いのしかトラッキー (@TooLucky_) 2023年5月4日
WebMSX: https://webmsx.org/?DISK=https://github.com/hsk/msxgl/raw/main/screen3/emul/dsk/DOS1_template.dsk SCREEN3の4色でシルフィードのオープニングをアニメーションさせてみました。#MSX0 #MSX3 — e(i(I),I). e(A+B,I):-e(A,J),e(B,K),I is J+K. (@h_sakurai) 2023年5月15日
MSX (MSX2以降) SCREEN3で動画実験 アニメ「小林さんちのメイドラゴン」OP これもやってみました。64ドット×36ドット。秒間30コマ。2MバイトROM(16メガビット)使用。音源の関係でMSX2+で動かしています。音楽はPSGとFM音源です。(aro氏に作って頂きました)※MGSDRV使用 pic.twitter.com/a2AvLwJ2H3 — MSX研鑚推進委員会 (@mdpc___) 2023年4月24日
MSX (MSX2以降) SCREEN3で動画実験 劇場版「超時空要塞マクロス」
MSX (MSX2以降) SCREEN3で動画実験 アニメ「コメットさん」OP 64ドット×48ドット。秒間30コマ。ROM容量2.5Mバイト(20メガビット)音楽演奏で処理落ちしたのでturboRで動かしていますが、やっぱり表現力に無理があります。音楽はPSGとFM音源です。(aro氏に作って頂きました)※MGSDRV使用 pic.twitter.com/51s3wUmbUf — MSX研鑚推進委員会 (@mdpc___) 2023年4月23日
今回更新したファイル https://t.co/YnaPPXZRcs SCREEN3用グラフィックツール・サンプル画像 ディスクイメージ(MSXエミュレータ向け) 説明見直し #MSX30th #MSX31st #MSX32nd — 大槻真嗣 (@s_ohtsuki) 2014年8月24日

アニメーションから、その先へ

MSXで最初に作ったプログラムが見つからないので星をとっていくゲームを自作してみました。学研の雑誌に載ってました。画面はSCREEN3です。 pic.twitter.com/z48UCZ2R55 — FULLMSX (@FULLMSX) 2017年7月19日
MSXのSCREEN3とSCREEN4とSCREEN5を使ってオンメモリでオープニングムービー風の画面がワチャワチャする感じのゲーム(必要スペックはMSX2以降です) https://t.co/7AsSApikqe — Takashi Kobayashi (@nf_ban) 2023年4月17日
#MSX #五条大橋 ひっそりしめやかに完売御礼の模様、ありがたやありがたや。これでこの怪作入手の機会がもうないかと思うと残念でならない、って自分で言うな。 pic.twitter.com/O2LawMxIhp — ghost_jp (@Nobuaki_Washio) 2021年4月27日
とりあえず SCREEN3 用のオフスクリーンバッファに、クリッピングなしで点、縦線、長方形の描画ができるようになりました。#MSX0 #MSX3 pic.twitter.com/ZkisYrxRG3 — e(i(I),I). e(A+B,I):-e(A,J),e(B,K),I is J+K. (@h_sakurai) 2023年5月16日

 SCREEN3はもはやアニメーションを超えて、ドットが粗いキャンバスとして自由に活用できるようになるかもしれませんね。

【参考】DMシステム2を利用したアニメーション事例

 ページ切替法とパレット切替法の二つを組み合わせています。

DMシステム2とVDPマクロを知ってないと何やってるのか分からないMSX SCREEN3アニメーション処理のサンプル。ダウンロード→https://p.gigamix.jp/ds2/download/ds2vm_mlr-anime.dsk pic.twitter.com/wbwzbjkEoJ — Takashi Kobayashi (@nf_ban) 2023年4月17日
DMシステム2とVDPマクロを知ってないと何やってるのか分からないMSX SCREEN3アニメーション処理のソースコード - Takashi Kobayashi (@nf_ban) 2023年4月18日
パレットテーブル/#0:真っ黒、#1:本来のパレット マクロの主な用途/初めに画面を真っ暗にする→192ラインモードにする→VDPだけSCREEN3に切り替える→パターンネームテーブルをFC00hに設定する(BASIC側で事前に用意しておく)→ウェイトをかけながらひたすら表示ページを切り替える→画面消して終了 — Takashi Kobayashi (@nf_ban) 2023年4月17日
BASIC側の主な用途/SCREEN3のパターンネームテーブルをにコピーしSCREEN5に切り替えてVRAMのFC00hへコピー→SC5ページ1にSCREEN3アニメ用画像をロード→VDPマクロを実行(マクロ内でSC3に切替)→マクロ実行中に次のシーンの圧縮画像を展開→BEEPがなったら展開処理終了でキー入力待ち→最初へループ pic.twitter.com/wx9TtAqEy1 — Takashi Kobayashi (@nf_ban) 2023年4月17日
VDPページ切替によるアニメーションの場合、1コマ2kB。マクロのコマページ指定 SCREEN5のページ0→SC3のページ#0~#15(今回は何も使用していない) SCREEN5のページ1→#16~#31 SCREEN5のページ2→#32~#47 SCREEN5のページ3→#48~#63(今回#63はSC3時のパターンネームテーブルとして使用した) — Takashi Kobayashi (@nf_ban) 2023年4月17日