| 232 | kis00277 | MARS | 1996/10/14 20:12:30 |
前へ
後へ
上へ
|
fkiss規格私案?
機能的には、現行の物でまったく不要というのは無さそうですね。この点で
は、正規規格化の際に、単純な置き替えぐらいで済むようにした方が良いでし
ょう。
正規規格化となると、従来のKISSローダではエラーになる方が良いです
から、思い切った手直しもできます。しかし、大きく変わるとデータ作者さん
の負担が増えますので、構造的には不統一ですが、セル配置の記述は従来と同
じにすると良いと思います。
記述は、大文字小文字同一視を規格化して欲しいです。セルやファイル名の
規定も大文字小文字同一視で、ISO9660 相当とすべきだと思います。
その上で・・・・
【セクション】
表記上は、セクションという考え方を提唱します。セクションの区切りは、
何かの記号に続けて記述します。記号や名称は仮の物です。
たとえば、
<KISS n> n は文字列または数字
先頭にヘッダを宣言します。これによって適合する規格の処理をし
ます。これが無い場合は従来のKISSです。ローダは、これを自分
自身で処理しても良いし、チャイルドでそれぞれの処理を呼びだしで
も良い訳です。
<HEAD> このセクション内は、動作に影響しません。起動時に画面に表示さ
せる、あるいは、特定の操作(たとえばヘルプに項目を作る)で表示
されるものです。
<LOAD> ここは、従来のKISSのCNFそのままです。プログラム側の負
担を減らすためには、このセクションの位置を最初または最後にする
と規定するのが良いかもしれません。
以下はfkiss拡張部分です。この中には、fkissコマンド(後述)を
記述します。
<START> この中の処理は、起動時にだけかならずおこなわれます。
<QUIT> この中の処理は、終了時にだけかならずおこなわれます。
<TIMER> 使用するタイマのモードと初期設定を記述します。
タイマは、ワンショットと、フリーランが欲しいです。
ワンショットは、起動コマンドで一定時間後にトリガを生じます。
フリーランは、起動後、停止されるまで一定時間ごとにトリガを生
じます。起動は、<ACTION>か<START> の中でおこないます。
タイマのプライオリティやタイミングが重複した時の動作について
の規定は、ローダ側のインプリメントにまかせる(問題の生じそう
な記述はしないこと!)ので良いと思います。
<ACTION> ユーザのアクションによる動作を記述します。
記述は、トリガとそれによる動作をセットにします。
【トリガ】
動作のトリガとしては、今ある物では、キャッチ、タイマがありますね。
CATCH
UNCATCH
TIMER
その他に、
SELECTSET (ユーザがセットを選択した時)
SELECTPAL (ユーザがパレットを選択した時)
が欲しいです。これらは、画面や場面の解説や初期設定とかに使えます。
クリックについては、FIX値チェックできる機能も欲しいですね。指定値
以上の時にのみ動作、指定値以下の時にのみ動作という物です。
CCLICK( #3, 8 ) { SOUND( _YADA.WAV ) } { SOUND( _DAME.WAV ) }
CCLICK( #4, 2 ) { } { PALCHANGE( 3) }
といったぐあいで、クリックを重ねると動作を変えることができます。
この機能は、変数や数式や条件式を使えるようにすればもっときれいなので
すが、そうせずに実現するとなると、こんな所ではないかと。フォートラン
式に、大きい・等しい・小さい、の3段階でも良いかもしれません。
【イベント】
イベントとしては、MAP UNMAP 、サウンド、テキスト出力、タイマのスタート
ストップなどありますが、
SETCHANGE (設定されているセットに変える)
PALCHANGE (設定されている番号のパレットに変える)
CAIN (設定されている名称のcnfを読みこんで実行)
PAUSE (指定された時間だけ待つ。この間はタイマ以外のトリガは受け付けない)
FIX (セルの動きにくさの数値を設定する)
といった物はどうでしょうか。セットチェンジやチェインは、メニューをクリ
ックすると、それぞれの画面に移るように使えます。パレットチェンジは、電
灯を消すとか、画面中のいくつかのセルの色を変える時に使えます。ポーズは
連続した動作の中での時間待ちに使えます。これを指定することでタイマを増
やさずに一連の動作ができます。(ポーズタイマはいちばん優先度の低いタイ
マとします)。
フィックスは FIX ( #3,20 ) とすると、#3の動きにくさを20にします。
動きにくさを0にするとすぐ動く訳です。SELECTSET トリガと組み合わせると、
セットごとに動きにくさを設定できます。
記述は、ひとつのトリガに対して、{ }でくくって複数のイベントを記述
します。この中では、記述順に処理がおこなわれるものとします。ただし、サ
ウンドについては、発音の開始とともに次に移るのが良いのでしょうが、発音
の完了で次に移るというのでも良いというのではどうでしょうか。
たとえば、
CLICK(#3){ SOUND( _A.WAV), MAP( #4), WAIT(5), UNMAP( #4) SETPAL( 2) }
とすると、アッと叫んで、ビックリマークを0.5秒出して、画面の色を変え
るといった動作を記述できます。
イベントがひとつの時は、{ }なしでも良いのですが、エラーを減らす意味
と、処理が単純化されるので、かならず{ }でくくる仕様が良いと思います。
TIMER( 3) SOUND( _PI.WAV) ではなく、
TIMER( 3) { SOUND( _PI.WAV) } と書かせる訳です。
{ }の中では、イベントの区切りは「,または改行」とするのが良いと思い
ます。
イベントでのセルの指定は、オブジェクトごとの他にセルごとの指定ができる
必要があると思います。この指定は、セル名を使用するのでは不都合ですから、
専用の指定が必要でしょう。従来KISSのローダでの動作を考える必要が無
いので、たとえば、セルの指定の所で、
#3-1 FUKU1.CEL
#4-1.50 PANTY.CEL
#3 FUKI2.CEL
としておいて、 UNMAP( #3) は FUKU1とFUKU2 を消し、UNMPA( #3-1) はFUKU1
だけを消すというのはどうでしょう。掴んだら変形するセルは、
CATHC( #4){
UNMAP( #4-1)
MAP( #4-2)
}
以上の表記方法は、あくまで話の上での例です。かなり、C言語の表記の影響
がありますね。記号とかはどのような物でも良いでしょう。
みなさんの御意見をお願いします。特に、ローダ・プログラマの方の御感想は?
あと、欲しい機能については、いろいろあるのですが、それらは、次の拡張で
良いと思います。たとえば、セルをある場所(相対および絶対座標)に移動す
るイベント、セルがある場所に来るとかかるトリガ、といった物です。
なお、上記の説明の中で、SOUND で鳴らすファイル形式にWAVを書
いていますが、これは仮の物です。
個人的意見としては、WAV以外の専用の形式を規定すべきだと思い
ます。WAVとしてしまっても良いようなのですが、そうすると、い
ろんなWAVがなんでも有りになってしまうので。たとえば、実体は
11KモノラルWAVをリネームした物であっても、変換ツールを通
る段階でフォーマットチェックがかかる訳ですから。
サウンドファイルの形式については、早急に規定するか、それまでは
SOUND イベント自体を『しばらく使わないこと』にする必要がありま
すね。
では。MARS
PS.ホームページはだいぶできました。
http://www.threeweb.ad.jp/~mars/s/top/htm