MSXのテキストモードと多色刷り

MSXBASICで文字を書くことができるモードをテキストモードと呼び、
このモードで呼び出すことができるファイルをテキストファイルと呼びます。
MSXで読み込み可能な文字コードは次のとおりです。


MSXのキャラクタセット
 MSXのキャラクタセットでは半角ひらがな、罫線、時分秒月火水木金土日、クロス罫線などが使えます。

ASCII、JISのテキストファイル(全機種対応)
半角の英文コード(ASCII)、カタカナ(JIS)の1バイトコードをMSX以外のパソコンで読み込むことができます。

シフトJISのテキストファイル
 詳しくはわからないが、MSXのワープロソフトのデータ形式は各社バラバラだったので、
MSXマガジンか?アスキーか?マイクロソフトか?でMSXをシフトJIS化しようということでMSX2+に実装した拡張モード。

CVSファイルに変換する(全機種対応)
 MSXでCVSファイルに変換するにはカンマで区切ればExcelでテキストファイルを表として読み込むことができます。


SCREEN0モード

SCREEN0は文字専用のテキストモードです。8×8の右2ドットがカットされるかわりに40文字
MSX2では最高で80文字まで表示できます。

SCREEN1モード

SCREEN1は文字専用のテキストモードで32文字まで表示できます。
色指定できますが、8キャラクタごとの色指定です。
文字をキャラクタに変えたり、VRAMに書き込むことでスプライトのようにアニメーションさせることもできます。
もちろん、MSXひらがなをN88系のBASICのキャラクタコードに書き換えれば
MSXBASICで88とか98を楽しむことも不可能ではないです。
他の機種との違いは何でもBASICでできる事が飛び抜けて凄いように思います。

MSX テキストカーソルy

自作すれば四角いカーソルをスプライトにしてキャラクタにしてみたりもできる。
とりあえず、お下げの女の子を描いたが目の下の_は体の部分で左右の1ドットが手で^^;
怪物にも見えてやっぱり8ドットは限界。でも8ドットなら誰でも描きやすい。

<<sp-cor.bas を ダウンロード>>

表示に使わない文字をキャラクタにする方法は次のページにあります。
SPプログラムレポート:http://f28.aaa.livedoor.jp/~uyanexp/center/sp-report.html

使わない文字をキャラクタに置き換える事により「a」が雲になったり、空になったり、壁になったり
と一見するとバグのような今まで見たことがない画面に驚くでしょう。


SCREEN2モード

このプログラムはVRAMをSCREEN2で積層に色指定が可能になり
太字に斜体を加えてさらに多色刷りまでやっているプログラムです。
MSXの多色刷りモードは2色で即ち
データの「0」ゼロの色と「1」イチの色をラインごとに変えます。

16進数:
http://www.geocities.jp/fullmsx2/u-yan/basic/hexa.htm

テキストモードはSCREEN1になっていますが、
VDPモードをグラフィックモードに変更することで可能です。
通称、Mマガ用語ではSCREEN1.5と呼ばれるモードです。

tashoku-s.jpg

◆多色刷りモード

10 COLOR  15,1,15: SCREEN 2
20 SCREEN  1: WIDTH  32: KEY  OFF
30 DEF USR =&H007E: A=USR (0)
40 FOR  I=0  TO  256*3-1
50 VPOKE  I+&H1800,I MOD  256
60 NEXT
70 FOR  I=&H2000  TO  &H37FF
80 VPOKE  I,(I MOD  8 +5)*16+1
90 NEXT
100 FOR  I=0  TO  &H07FF
110 D=VPEEK (I)
120 D=D OR  D\2: D=D\VAL (MID$("84422211",I MOD  8 +1,1))
130 FOR  J=0  TO  2: VPOKE  I+&H0800*J,D: NEXT
140 NEXT

まず、10行はSCREEN2の色を設定して20行でSCREEN1に戻ります。
30行でVDPモードをSCREEN2へ変えます。
60行まで打って実行。90行まで打って実行。140行まで打って実行してみましょう。
 8ドット1ラインごとに色を指定できるようになり、カラーテーブルが広がる
カラーテーブルのスタートアドレスは&H2000。16ドットならば1ライン4色まで可能。
 DEFUSR=&H7E:A=USR(0)で、VDPがSCREEN2になる。
カラースプライトのようなことができそうですね。

元の画面に戻す場合はSCREEN1を入力してください。

<番外編:SCREEN2の制約>

これは実際のSCREEN2です。
 8キャラクター2カラーというのは例えばABCDEFGHまでの8キャラクタでは同時2色表示できないという制約です。
この制約を知らないで表示すると次のような現象が起こります。

screen2:3CIRCLE

 白、青、黄色という順に表示しています。このように接点部では強制的に2色の表示になります。
MSXの円は8×8ドットの単色円弧パターンを8×8単位で画面領域分作成します。これにより
8ドット単位で横一線は背景水色とドットパターン色を含めた2色のみの多色刷りの指定になります。
この画像では偶然にも青と黄色の境界部が接点になっているのでシミのようになっていません。
この制約でレトロゲームらしくなるんですね。四角いカクカクとした感じが出ます。
だからドラゴンクエスト2のキャラ移動を見て下さい。背景が黒になっているでしょ?
あれはバグではなくMSXの仕様でしょうがないことです。はーりぃふぉっくすとか
よくMSXでゲームができたと思いますね。
MSX1はファミコンの程度のモノであればできますが、
多彩なグラフィックになると無理のようです。
ここまでで「MSXはダメ」かと思えばそうでもないんです。
MSX2のSCREEN5になれば場合によってはスーパーファミコンくらいのグラフィックが
できます。
VRAMはモードとしての互換性はあるもののSCREEN2とSCREEN5とでは作り方が
全く違います。



戻る

 


(c)1991 UME,(c)1993 UMEnoteProjects ,(c)1999 Hinoume ProgramTeam.