MIMPIv3のマニュアルより抜粋(一部v4の内容に更新)
7.歌詞表示機能
MIMPIV3 では曲ファイルと同じ名前の 拡張子 .WRD があると それを表示しながら演奏します。
WRDファイルは普通のテキストファイルですからエディタやワープロで作成することができます。MS−DOSのTYPEコマンドで表示できるものであればWRDとして利用できます。
WRDファイルは通常1小節に1行ずつ表示していきます。
ただし行末が ;(半角セミコロン)で終っている時は、続けて次の行も表示します。
WRDファイルは単に歌詞表示に留らず、マクロコマンドにより各種の制御が可能となっています。
行の先頭が @ で始る時はマクロコマンドと解釈し、実行します。
マクロコマンド行の行末が ; の場合は、続けて次の行を処理します。
またマクロコマンドは1行に複数記述することができます。
7−1.WRDファイルのマクロコマンド
@STARTUP(ver)
:@STARTUP以降の文を演奏が始まる前に実行します。
行末が ; の場合は複数行の実行が可能です。グラフィックの読み込み等、時間のかかる処理を前もって行なっておきたい場合に使用します。
ver にはWRDファイルを実行するMIMPIのバージョンを3桁の数字で指定します。verの指定は必ず行なうようにしてください。
現時点での ver値による違いは次の通りです。
<ver 無指定> 基本的にはV4仕様だが一部タイミングがV3仕様
<verが 380 未満> Ver3.7m 相当のWRD仕様で実行。
<verが 380〜399> @GLINE()が8色対応である以外はV4のWRD仕様で実行
<verが 400 以上> V4仕様で実行
@WMODE(n<,mode>)
:通常は1小節に1行の表示を行ないますが @WMODEはこの表示タイミングを変更し、より細かな表示制御を可能とします。
n=12-1 で8分音符ごとのタイミングになります。
n=12X2-1 で4分音符のタイミングとなります。
具体的な n の値は次の通りです。
n = 5 16分音符
n = 11 8分音符
n = 23 4分音符
n = 47 2分音符
n = 95 全音符
n は1〜255まで指定できますが、あまり小さな
値にすると表示が間に合わなくなる恐れがあります。
@WMODE(0) で1小節1行のモードに戻ります。
@WAIT() には影響を与えません。
mode で1行単位で表示を行なうか1文字単位で行なうかの指定を行ないます。
mode=0 1行単位、mode=1 1文字単位となります。
1文字単位の表示の場合 '_' '|'は非表示文字となり次のような意味を持ちます。
'_' は1タイミング待つだけで表示されません。
'|' はこれで囲まれた文字列を1タイミングで表示し
ます。2文字以上を1タイミングで表示する時に使用します。
modeが省略された場合は直前のモードのままとなり、デフォルトは mode=0 の状態です。
@WAIT(bar,<step>)
:barで示す小節まで待ちます。
小節は絶対小節番号で、@OFFSET()で指定されている数値を加えた値になります。
stepは4分音符を48ステップとしたタイミングで指定したステップまで待ちます。stepを指定することにより小節単位だけでなく、さらに細かいタイミングを合わせることが可能となります。
stepは前バージョンとの互換性のため省略することが可能ですが、できるだけ指定するようにしてください。
(例) 4分の4拍子の曲で10小節3拍目まで待つ
@WAIT(10,144)
@OFFSET(nnn)
:@WAIT() で指定する小節番号に対して @OFFSET()で指定した数値が加算されます。
@REST(bar,<step>)
:barで示す小節だけ何も表示せずに待ちます。
@WAIT()が絶対小節番号なのに対して、@REST()は相対的な小節となります。
@WMODE()や@OFFSET()の影響は受けません。
stepは @WAIT() と同等で絶対指定ですので注意してください。
@LOCATE(y;x)
:カーソルを移動させます。
y=1、x=1 がホームポジションです。
@TON(sw)
:テキスト表示をON/OFFします。
sw=0 でOFF、sw=1 でONになります。
@TON(0) ではテキスト画面の表示を停止するだけで消去する訳ではありません。
@TON(1) で再び前の画面が表示されます。
また @TON(2) で40桁表示のモードにします。
大きな文字で表示させたい時に使用します。
通常の80桁モードから40桁モードにしても画面はクリアされませんが、1文字おきに表示されるようになります。
@COLOR(c)
:文字色を指定します
色番号(c)は98のエスケープシーケンスの文字列に準じます。
c=0 | 既定の属性 |
c=1 | ハイライト(モノクロのみ) |
c=2 | バーティカルライン |
c=4 | アンダーライン |
c=5 | ブリンク |
c=7 | リバース |
c=16 8 | シークレット |
c=30 | 黒 淡(暗) |
c=18 34 | 青 |
c=17 31 | 赤 | c=19 35 | 紫 |
c=20 32 | 緑 | c=22 36 | 水色 |
c=21 33 | 黄色 | c=23 37 | 白 濃(明) |
c=40 | リバース 黒 | c=41 | リバース 赤 |
c=42 | リバース 緑 | c=43 | リバース 黄色 |
c=44 | リバース 青 | c=45 | リバース 紫 |
c=46 | リバース 水色 | c=47 | リバース 白 |
@TCLS(x1,y1,x2,y2,color,char)
:テキスト画面のx1,y1,x2,y2で指定した矩形範囲を消去します。
それぞれテキスト座標で x は1〜80、y は1〜25の範囲で指定します。
color は消去文字の色を指定します。
color が 0〜7はノーマル、8〜16はリバースとなります。
char は消去後に埋められる文字を指定し、表示可能なANK文字コードを十進数で指定します。
各パラメータのデフォルトは
x1=1 , y1=1 , x2=80 , y2=25 , color=0 (黒), char=32 (space)
となっており、省略されたパラメータはデフォルト値となり、@TCLS()とてを省略すると全画面をスペースで消去することになります。
@TCLS命令ではカーソルポジションは変化しません。
@SCROLL(x1,y1,x2,y2,mode,color,char)
テキスト画面のx1,y1,x2,y2で指定した矩形範囲をスクロールさせます。
mode=0 指定範囲を上に1行スクロール
mode=1 指定範囲を下に1行スクロール
mode=2 指定範囲を右に1行スクロール
mode=3 指定範囲を左に1行スクロール
color,char はスクロールして空いた部分を埋める色と文字の指定です。
各パラメータのデフォルトは
x1=1 , y1=1 , x2=80 , y2=25
mode=0 , color=0(黒) , char=32 (space)
となっており省略された場合はデフォルト値となります。
@SCROLL命令ではカーソルポジションは変化しません。
@GINIT()
:グラフィックを初期化します。
MIMPIを立上げた場合はすでに初期化されているので通常は必要としません。
初期化後は高解像度カラーで画面表示はONとなり、アクテイブ/ディスプレイ画面とも0(表)が選択されます。
@GCLS(sw)
:グラフィックのアクティブ画面を消去します。
sw の bit0 が1の時は BLUE
sw の bit1 が1の時は RED
sw の bit2 が1の時は GREEN
sw の bit3 が1の時は 16色 VRAM をクリアします。
@GCLS() または @GCLS(0) の時は @GCLS(15) と同じ動作になります。つまり、R,G,B及び16色グラフィックメモリもクリアされます。
@GSCREEN(act,dsp)
:actとdspでそれぞれ、アクティブ画面ディスプレイ画面を指定します。
0が表、1が裏になります。
アクティブ画面とはグラフィック描画や消去を行なう時に書込みが行なわれる画面です。ディスプレイ画面とは実際に表示される画面です。
@GON(sw)
:グラフィック表示のON/OFFを行ないます。
sw=0 でOFF、sw=1 でONになります。
@GON(0) ではグラフィック画面の表示が消えますがグラフィックVRAMが消去された訳ではないので@GON(1)を実行することで再び表示されます。
初期状態は @GON(1) の状態になっています。
@GLINE(X1,Y1,X2,Y2,P1,SW,P2)
:グラフィック画面に直線または四角形を描画します。
X1,Y1 描画開始点
X2,Y2 描画終了点
P1 描画する色(0〜15で指定)
SW 0の時直線を描画
1の時四角形を描画
2の時四角形を塗りつぶす
P2 SW=0,SW=1の時はラインスタイル
ただしP2が0の場合は実線で描画する。
SW=2の時は塗りつぶしの色(0〜15で指定)
あまり複雑なことはできませんが、WRD表示のバックカラーの設定等に使用します。
@GCIRCLE(X,Y,R,P1,SW,P2)
グラフィック画面に円を描画します。
X,Y 中心点
R 半径
P1 描画する色(0〜15で指定)
SW 0、1の時、円周のみ描画。
2の時、円を塗りつぶす。
P2 SW=2の時は塗りつぶしの色(0〜15で指定)
@PLOAD(file_name)
:PHOファイルをロードします。
ファイル名は.PHOまで含めて記述してください。
@PATHで指定されたパスからロードします。
@PAL(rgb1,・・・rgb16)
:rgb1〜rgb16 までをカラーパレットに設定します。
rgb は3桁の16進で記述し必ず16組指定します。
パレット設定と共に#0メモリーにもセットします。
@PAL(#p,rgb1,rgb2・・・rgb16)
:p で示すパレットメモリに値をセットします。
実際のパレットの変更は行なわれません。
パレットメモリは #0〜#19 までの20個があります。
#0 カレントパレットで実際にパレット変更が行なわれた場合更新されます。
@PAL() @FADE() @MAG() で更新されます。
ただし@MAG()でパレットを読み込まない指定がされていれば更新されません。
#1〜#16 汎用パレットメモリ
#17 @MAG() が実行された場合、にそのMAGデータのパレットがセットされます。
#18 アクテイブ画面が表の状態で@MAG()が実行された場合にそのパレットがセットされます。
#19 アクテイブ画面が裏の状態で@MAG()が実行された場合にそのパレットがセットされます。
(注) #17〜#19は @MAG() でパレットを読み込まない指定があってもセットされます。
@GSCREEN()の状態により次のようにメモリにセットされます。
@GSCREEN(0,x) #17 と #18
@GSCREEN(1,x) #17 と #19
パレットも読み込んだ場合はさらに#0にもセットされます。
@PALREV(p)
p で指定されるパレットメモリーの値を反転させます。
p=0 の時だけ実際のパレットにも設定され、それ以外はパレットメモリーが変化するだけで画面は変化しません。
グラフィック画面のネガポジを反転させるような効果を得ることができます。
@FADE(p1,p2<,speed>)
p1からp2 のパレットメモリへ変化させます。
使用するパレットメモリーは事前に値をセットしておいてください。
- speed が省略された場合はVSYNCに近いタイミングで変化します。
-
speed=0 の場合は即座にp2へ切換わり、p1の指定は関係なくなります。
-
speed>=1 の場合は指定値の間隔で変化します。
-
speed=24 でだいたい4分音符のタイミングで変化します。
-
speed値が指定された場合はそれ以降の行を実行しながらフェード処理が行なわれます。ただし、時間がかかる処理や @EXEC()で外部プログラム実行中はフェード処理が中断されます。
@PALCHG(file_name)
:file_name の拡張子が .PAL の場合はWCGIのパレットファイルを読み込みます。
拡張子が .PLC の場合は PCHNG.EXE が使うPLCファイルを読み込み実行します。
PLCファイルの実行は @WMODE で指定された時間間隔で行なわれます。
(注) WCGI 及び PCHNG は WAI・WAI-NET 佐渡のメンバーが開発したフリーウェアです。
@PAL @PALCHG 実行後は16色モードとなります。
@GMODE(sw)
@GLINE(),@GMOVE(),@GCIRCLE() において特定のグラフィックプレーンへの書込みの禁止/許可を指定します。
sw値のbit0〜3がP0〜P3の各プレーンに対応し、1の時書込み可、0の時書込み禁止となります。
このbit0〜3の値(00h〜0Fh)を 0〜15 の十進数に変換して sw の値を指定してください。
デフォルトは sw=15 で全てのプレーンが書込み許可状態になっています。
(bit0〜3が全て"1"の時は16進で 0Fh となり、これを十進数で表わすと'15' になります。従って sw=15 で全プレーン書込み許可となります。)
@GMOVE(x1,y1,x2,y2,xd,yd<,vs><,vd><,sw>)
:x1,y1,x2,y2 の矩形をxd,ydの座標にコピーします。
- vs コピー元のVRAMバンク 0:表 1:裏
- vd コピー先のVRAMバンク 0:表 1:裏
- sw 0:コピー 1:交換
vs,vd,sw が省略された場合は、それぞれ0が指定されたものとした動作となります。
X座標は8ドット単位で丸められます。
vsとvdが同じ場合、コピー元とコピー先が重ならないように注意してください。
@MAG(file_name,x,y,s,p)
:MAG形式の画像ファイルを読み込みます。
@ESC(str)
:ESC[ を画面に出力後strの文字列を表示します。
ESCコードをエディタ等で文中に埋め込む作業を簡略化するためのものです。
@ESC(2J) とすれば画面消去になります。
@EXEC(file_name)
:file_nameで示される実行ファイルを実行します。
実行ファイルは事前に @PATHでパスで指定されたディレクトリにある必要があります。
カレントディレクトリが指定されている場合はDOSで設定されているPATHもサーチします。
このコマンドの使用は十分な注意が必要です。
実行したプログラムによりMIMPIV3の動作環境が破壊された場合の動作は保証されません。
特にインターバルタイマーを使用しているプログラムは実行させないでください。
実行プログラム中で割込み禁止にならなければ、演奏は連続して行なわれます。
呼出されるプログラムがパラメータとして他のファイル名を使う時はそのファイル名に対しては @PATH の指定は有効となりません。
@PATH(*)
:@PLOAD @EXEC で指定するPATHをMIMPIV3の起動ディレクトリに設定します。
@PATH(@)
:@PLOAD @EXEC で指定するPATHを曲ファイルのあるディレクトリに設定します。
@PATH()
:@PLOAD @EXEC で指定するPATHをカレントディレクトリに設定します。
@PATH(str)
:@PLOAD @EXEC で指定するPATHを str で示すディレクトリに設定します。
@INKEY(str)
:何かキーが押されるか str で示される小節に到達するまで待ちます。
@END()
:曲の演奏が終了するまで待ちます。
[例]
@END();
曲終了
このようにすると曲が終わると同時にメセージを表示させることができます。@END()の後の ; を忘れないようにしてください。
@LOOP(str)
:繰返し回数を str で示す数にセットします。
指定された回数だけ繰返し演奏します。
繰返されるのは曲の演奏だけでWRDファイルは繰返されません。
起動時の /Ln オプションはWRDの実行を含めて繰返されます。
@STOP()
:強制的に曲の演奏を終了させます。
@LOOP の繰返しも解除され終了します。
マクロのパラメータに対するチェックはほとんど行なっていません。
予想されないパラメータが与えられた場合の動作は保証できません。
Ballade系の.SNG以外のデータの場合、データ中の小節線は無視して拍子で既定される1小節あたりのステップ数により小節をカウントしているので考慮してWRDを作成してください。
[使用例]
@STARTUP() @GON(0) ;
@PLOAD(PHOTO.PHO)
@WAIT(10) @GON(1)
さいた
さいた
チューリップの
はなが
@END();
曲が終わりました。
まず演奏前にグラフィック表示をOFFにし、PHOTO.PHO をロードします。
(1行目の行末が ; なので、2行目も同時に処理される。)
10小節になるまで待って、グラフィック表示をONします。
そして「さいた/さいた/チューリップの/はなが」を小節が替るたびに表示していきます。
最後に演奏が終わった時に「曲が終わりました」を表示します。
また、@WMODE()コマンドを利用することによって、1文字づつ表示させることもできます。
@WMODE(23,1)
さいた_さいた_|チュー||リッ|プのはなが
このようにすると4分音符のタイミングで1文字づつ表示されていきます。
'_' は表示されずに、1タイミングだけ待ちます。
|チュー| と |リッ| はそれぞれ1タイミングでまとめて表示されます。
パソコン通信のネットワーク上にはWRD機能を利用した楽しいデータが数多くアップロード(登録)されています。
実際の使い方のコツはそのようなデータを参考にすると良いでしょう。
7−2.MAG形式画像の利用
曲と同じ名前で拡張子 .MAG のファイルがあると、その画像を表示しながら演奏を始めます。WRDファイルからはさらに高度な利用が可能です。
WRDファイルの@MAG()コマンドの詳細は次の通りです。
@MAG(file_name<,x><,y><,s><,p>)
file_name : MAG形式データのファイル名を書きます。
拡張子まで含めて記述してください。
@PATH() で指定されたパスからロードします。
@PATHに指定がない時は曲ファイルがあるパスからロードします。
x,y : 表示開始ポジションです。
0,0 〜 639,399 の範囲で指定します。
省略した場合はデータ中の表示開始位置から表示します。
右方向にハミ出した場合は左に折返して表示されます。
下にハミ出した部分は表示されません。
xは0〜639までの指定ですが実際の表示ポジションは8ドット単位となります。
s : 縮小率です。省略時は1となります。
1〜16の範囲で指定します。
S=2とすると縦横それぞれ2分の1の縮小表示になります。
p : MAGファイル読み込みスタイルの指定です。
p = 0 ピクセル+パレットを読み込み表示します。
p = 1 ピクセルだけを読み込み表示します。
p = 2 パレットだけを読み込み設定します。
省略時は p=0 となります。
《例》
@MAG(TEST1.MAG) 単純に表示します。
@MAG(TEST1.MAG,,,2) 1/2の縮小表示
@MAG(TEST1.MAG,100,150) X100,Y150のポジションから表示します。
@MAG(TEST1.MAG,100,150,4) 1/4に縮小してX100,Y150 に表示します。
@MAG(TEST1.MAG,,,,1) 画像を表示しますがパレットは変化しません。
@MAG(TEST1.MAG,,,,2) パレットだけを読み込み設定します。
<p>パラメータは裏画面に表と異なるパレットを持つデータを読み込む時 p=1でパレットを無視して読み込ませることにより表示色をそのままにできます。
裏画面を表示させる時にp=2 でパレットのみ読み込ませれば素速くパレットの設定を行なえます。p=2 の時は x,y,s のパラメータの意味はありません。
@GSCREEN() や @GON() は有効に使えます。
@MAG()コマンドの実行で#0及び#17〜18のパレットメモリが変化します。
#17 パレットメモリー
@MAG() が実行された場合にそのMAGデータのパレットがセットされます。
#18 パレットメモリー
アクテイブ画面が表の状態で@MAG()が実行さされた場合にそのパレットがセットされます。
#19 パレットメモリー
アクテイブ画面が裏の状態で@MAG()が実行さされた場合にそのパレットがセットされます。
@MAG() のpパラメータが1(パレットを読み込まない)指定でない場合は、#0 パレットメモリーにもパレット値がセットされます。
[MAG表示機能の制約]
表示できるのは640×400の16色画像までです。それ以外を表示させた場合は動作保証はできません。
また、ファイル中のコメントの表示は行ないません。
@MAG() 実行時は MAGファイルサイズ+約16KBのメモリが必要です。メモリが確保できなかった場合は表示しません。(特にエラーメッセージは出しません)
16色対応機種にのみ対応します。
(注)MAG形式とは「まぐろBBS」(旧「まきちゃんネット」)で開発された汎用の画像データフォーマットです。