CAVE だもんね。(9)


RGKT-NDS-HMBR-004(009)


リスペクト元はrerofumi氏の MSX CAVE なので
フォント画像も MSX のそれを表示させたいってことで
自前で用意する手堅い方法を考えてみる。
とはいっても
手持ちの実機がジャンク MSX1 だけで、しかも押入れに埋まってる状態なので
エミュ上から抜き出す手段を考えることにする。


ということなのでインストールして直ぐ利用可能なエミュレータ RuMSX を使い
キャラクタセット一覧を表示させてみることにした。

10 WIDTH 32
10 FOR I=0 TO 255
20 PRINT CHR$(I);
30 NEXT



実際に表示させてみたところ
実機での GRPHキー と組み合わせて入力することができる
罫線等の特殊文字が一部表示出来ない。


調べてみるにどうも制御文字コードにある文字は普通じゃ
表示させることができないらしい
(PRINT CHR$(n) とすると制御文字の動作が行われる。)。


更に調べてみると、制御文字コードに位置する MSX 独自の文字
(GRAPH + キーでの組み合わせで使用できる文字)はどうやら
VDP (VRAM) に直接、文字コードを書き込むことで表示ができるらしいことを知る。

10 WIDTH 32:CLS
20 FOR I=0 TO 255
30 VPOKE &H1800+I,I
40 NEXT
50 FOR CRLF=0 TO 3
60 PRINT CHR$(13)+CHR$(10)
70 NEXT


VPOKE命令を使って書き込む先の VRAM アドレスを指定して、書き込むデータをセット。
それを256キャラ分やって、最後に改行してプログラム終了後のプロンプトが被らないようにしてる。
ただそれだけの処理。


MSX-BASIC での、 VRAM 読み書きのステートメント・ファンクションでは
こんなものがあるという、気持ち程度のメモ。

VPOKE 命令

VPOKE <番地>, <データ>
VRAM 上の指定した番地にデータを書き込む。
番地は符号無し2バイト整数の範囲、データは符号無し1バイト整数の範囲で指定する。

VPOKE &H1800, &HFF
VPEEK 関数

VPEEK(<番地>)
VRAM 上の指定した番地の内容を読み出す。
番地は符号無し2バイト整数の範囲、与えられるデータ(返値)は符号無し1バイト整数の範囲。

A=VPEEK(&H1800)



とまあ後はスクリーンショットを取ってタイル用に加工すればOK。
てとこまで来たものの RuMSX が原寸大解像度で表示してくれないことに気付く。orz


今、ダンボールに仕舞ってある MSXPlayer の入ったMSX-FAN付録ディスクを探し中。
本は手元にあるのに…。><