-

「LIBRARIES PUBLIC DOCUMENT MPK」の版間の差分

提供: HI-TECH C for CP/M Fan WIKI(JP)
移動先: 案内検索
(ページの作成:「KINLIB_jp <strong>勤労5号 Interface Library for HI-TECH C By Tatsuhiko Syoji 1998</strong> ==何をするものか?== 本パッケージは黒田圭一氏が製作...」)
(タグ: モバイル編集モバイルウェブ編集)
 
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
KINLIB_jp
+
MPKLib_jp
  
<strong>勤労5号 Interface Library for HI-TECH C
+
<strong>MPK Interface Library for HI-TECH C By Tatsuhiko Syoji 1998</strong>
By Tatsuhiko Syoji 1998</strong>
 
  
 
==何をするものか?==
 
==何をするものか?==
本パッケージは黒田圭一氏が製作したMSX用FM,PSG,SCC音源ドライバー勤労5号
+
本パッケージはK-KAZ氏が製作したMSX用FM,PSG,SCC音源ドライバーMPKをHI-TECH Cから制御するためのライブラリです。HI-TECH CとMPKが別途必要です。
をHI-TECH Cから制御するためのライブラリです。HI-TECH Cと勤労5号が別途必
 
要です。
 
  
 
==構成ファイル==
 
==構成ファイル==
;KINROU  .H  :本ライブラリのヘッダーファイルです。
+
;MPK    .H  :本ライブラリのヘッダーファイルです。
;LIBK    .LIB :本ライブラリのライブラリファイルです。
+
;LIBMPK  .LIB :本ライブラリのライブラリファイルです。
;INST    .BAT :本プログラムの各関数を任意のライブラリファイルに結合する為のバッチファイルです。
+
;HIMPKA.AS以外の拡張子ASのファイル:本ライブラリの各関数ソースファイルです。
;KINLIB  .TXT :本ファイルです。
 
;HIKIN  .COM :本ライブラリのサンプルプログラムです。
 
;HIKIN  .C  :本ライブラリのサンプルプログラムソースのC言語部分です。
 
;HIKINA  .AS  :本ライブラリのサンプルプログラムソースのアセンブラ部分です。
 
;MKHIKIN .BAT :サンプルプログラム構築用バッチファイルです。
 
;HIKINA.ASを除く拡張子ASのファイル:本ライブラリの各関数ソースファイルです。
 
 
;<nowiki>*      .O  </nowiki> :本ライブラリの各関数オブジェクトです。
 
;<nowiki>*      .O  </nowiki> :本ライブラリの各関数オブジェクトです。
;REMAKE  .BAT :本ライブラリの再コンパイル用バッチファイルです。
+
;INSTALL .BAT :本プログラムの各関数を任意のライブラリファイルに結合する為のバッチファイルです。
;LICENCE .BAT :本ライブラリのライセンスに関するテキストです。
+
;REMAKE  .BAT :本プログラムの再アセンブル用バッチファイルです。
 +
;MPKLIB  .TXT :本ファイルです。
 +
;HIMPK  .COM :本ライブラリのサンプルプログラムです。
 +
;HIMPK  .C  :本ライブラリのサンプルプログラムソースのC言語部分です。
 +
;HIMPKA  .AS  :本ライブラリのサンプルプログラムソースのアセンブラ部分です。
 +
;MKHIMPK .BAT :サンプルプログラム構築用バッチファイルです。
 +
;LICENCE .BAT :本プログラムのライセンスに関するテキストファイルです。
  
 
==セットアップ==
 
==セットアップ==
まず、インクルードファイルのあるドライブ・ディレクトリにKINROU.Hをコピー
+
まず、インクルードファイルのあるドライブ・ディレクトリにMPK.Hをコピーします。次に、ライブラリファイルのあるドライブ・ディレクトリにLIBMPK.LIBをコピーするか、INSTALL.BATを使って既存のライブラリに、本ライブラリの関数オブジェクトを結合することで、本ライブラリを使うことができます。
します。次に、ライブラリファイルのあるドライブ・ディレクトリにLIBK.LIBを
 
コピーするか、INST.BATを使って既存のライブラリに、本ライブラリの関数
 
オブジェクトを結合することで、本ライブラリを使うことができます。
 
  
==INST.BATの使い方==
+
==INSTALL.BATの使い方==
INST.BATは既存のライブラリファイルに本パッケージの各関数オブジェクトを
+
INSTALL.BATは既存のライブラリファイルに本パッケージの各関数オブジェク
結合するためのバッチファイルです。HI-TECH CのLIBR.COMが実行できる環境で、
+
トを結合するためのバッチファイルです。HI-TECH CのLIBR.COMが実行できる環境で、本ライブラリの各関数オブジェクトのあるドライブ・ディレクトリから
本ライブラリの各関数オブジェクトのあるドライブ・ディレクトリから
 
  
  >INST ライブラリファイル名
+
  >INSTALL ライブラリファイル名
  
 
とすることで、ライブラリファイルに本パッケージの各関数オブジェクトを結
 
とすることで、ライブラリファイルに本パッケージの各関数オブジェクトを結
 
合することができます。本パッケージの関数群は他の関数に依存することが無い
 
合することができます。本パッケージの関数群は他の関数に依存することが無い
 
ので、ライブラリ内の配置はどこでも結構です。
 
ので、ライブラリ内の配置はどこでも結構です。
 +
 +
==再アセンブル法==
 +
本ライブラリの再アセンブルはREMAKE.BATを実行すればOKです。
 +
アセンブル後はINSTALL.BATを利用してライブラリファイルを作成して下さい。
  
 
==本ライブラリの使い方==
 
==本ライブラリの使い方==
本ライブラリで、勤労5号を使う場合、次のような手順を取ります。
+
本ライブラリで、MPKを使う場合、次のような手順を取ります。
  
本ライブラリを使うプログラムでは、まず、KINROU.Hをインクルードします。
+
本ライブラリを使うプログラムでは、まず、MPK.Hをインクルードします。
次に、本ライブラリの関数が使われる前に、勤労5号のドライバ本体である
+
次に、本ライブラリの関数が使われる前に、MPK.BINを4000H以降の2000Hバイトのメモリブロックにロードし、タイマー割り込みをフックして、タイマー割り込みルーチンから4013H(MPKの演奏ルーチン)が呼び出されるようにします。
KINROU5.DRVを6000H以降の2000Hバイトのメモリブロックにロードし、タイマー
 
割り込みをフックします。
 
 
その後、曲データをタイマー割り込みルーチンから見えるようにロードし、本
 
その後、曲データをタイマー割り込みルーチンから見えるようにロードし、本
ライブラリを使って、ドライバの初期化、演奏初期設定(kinrou_init()関数)を
+
ライブラリを使って、ドライバの初期化、演奏初期設定を行った後、演奏開始関数を呼ぶことで、とりあえず、HI-TECH CからMPK用のデータを演奏することができます。
行った後、演奏開始関数(kinrou_play1(),kinrou_play2()関数)を呼び、タイ
 
マー割り込みルーチンから6029H(勤労5号の演奏ルーチン)が呼び出されるように
 
します。これで、HI-TECH CからMuSICA/勤労規格用のデータを演奏することが
 
できます。
 
 
コンパイルする際には、本ライブラリの関数オブジェクトを収めたライブラリ
 
コンパイルする際には、本ライブラリの関数オブジェクトを収めたライブラリ
 
ファイルをリンクするようにしてください。
 
ファイルをリンクするようにしてください。
これで、本ライブラリを使って、HI-TECH CからMuSICA/勤労規格用のデータを
+
これで、本ライブラリを使って、HI-TECH CからMPK用のデータを演奏することができます。詳しくは、サンプルプログラムを参照してください。
演奏することができます。詳しくは、サンプルプログラムを参照してください。
 
  
 
==サンプルプログラムについて==
 
==サンプルプログラムについて==
 
サンプルプログラムはHI-TECH Cをセットアップしたドライブ・ディレクトリ
 
サンプルプログラムはHI-TECH Cをセットアップしたドライブ・ディレクトリ
にサンプルプログラムのソースファイルとライブラリLIBK.LIBを置いて、
+
にサンプルプログラムのソースファイルとライブラリLIBM.LIBを置いて、
MKHIKIN.BATを実行することで、コンパイルすることができると思います。
+
MKHIMPK.BATを実行することで、コンパイルすることができると思います。
なお、このファイルのコンパイルには、HI-TECH C Resource kit #2の
+
なお、このファイルのコンパイルには、HI-TECH C Resource kit #2のMSX-
メモリ管理ユーティリティー関数がセットアップされていることが必要です。
+
DOS1用ディスク入出力関数とメモリ管理ユーティリティー関数がセットアップ
 +
されていることが必要です。
  
サンプルプログラムは、HIKIN Data file
+
サンプルプログラムは、HIMPK Data fileとすることで、Data fileを読み込んで演奏します。カレントディレクトリに
とすることで、Data fileを読み込んで演奏します。カレントディレクトリに
+
MPK.BINが必要です。演奏開始後は、キーボード操作で、簡単な特殊演奏ができます。
KINROU5.DRVが必要です。演奏開始後は、キーボード操作で、簡単な特殊演奏が
 
できます。
 
  
 
{|
 
{|
76行目: 65行目:
 
|-
 
|-
 
|S||一時停止
 
|S||一時停止
 +
|-
 +
|<nowiki>+</nowiki>||演奏速度を早くする
 +
|-
 +
|<nowiki>-</nowiki>||演奏速度を遅くする。
 
|-
 
|-
 
|F||フェードアウト
 
|F||フェードアウト
 
|-
 
|-
|V|全体のボリュームの調整
+
|V||全体のボリュームの調整
 +
|-
 +
|L||ループ回数の表示
 
|-
 
|-
 
|Q||本プログラムの終了
 
|Q||本プログラムの終了
 
|}
 
|}
 +
 +
本プログラムはライブラリのテスト用に作ったので、V1.03以前のMPKで製作された曲とV1.04以降のMPKで製作された曲でドライバを変更したり、フェードアウトのスピードを調節したりといった面倒な処理は実装していませんので、皆さんで実装に挑戦してみてはいかがでしょうか?
  
 
==関数の説明==
 
==関数の説明==
 
本ライブラリの関数について説明します。
 
本ライブラリの関数について説明します。
  
;unsigned int kinrou_init(void);
+
;unsigned int mpk_init(void);
:勤労5号を初期化します。他の本ライブラリ関数の利用前に、必ず呼び出して
+
:MPKを初期化します。他の本ライブラリ関数の利用前に、必ず呼び出してください。
ください。
 
  
;char kinrou_play1(void *data,unsigned char count);
+
;char mpk_initplay(void *data);
:kinrou_init関数を実行した後に、この関数を実行することで、演奏が始まり
+
:演奏をするための初期設定をします。演奏データの先頭アドレスをdataに入れて呼び出します。帰ってきた値が0でないときは、エラーが発生しています。1のときは、データのバージョンエラー、2のときはその他のエラーです。
ます。
 
:dataにはBGMデータの先頭アドレスをいれます。(BSAVE形式のヘッダを含みま
 
せん。)
 
:BGMデータはデータのコンパイル時に指定したアドレスと同じアドレスに置い
 
てください。
 
:countには繰り返す回数を入れます。0で無限ループ演奏となります。
 
:演奏に成功すると0を、失敗すると1を返します。
 
  
,char kinrou_play2(void *data,unsigned char count);
+
;void mpk_stop(void);
:kinrou_init関数を実行した後に、この関数を実行することで、演奏が始まり
+
:演奏を終了し、音源を初期化します。
ます。
 
:dataにはBGMデータのBSAVE形式ヘッダアドレスをいれます。本関数では、BGM
 
:データのBSAVE形式ヘッダを利用して、勤労5号が必要とするBGMデータをコン
 
パイルした際のアドレスとBGMデータの先頭アドレスを取得し、勤労5号が内部
 
で処理をしてBGMデータを演奏します。これにより、BGMデータをコンパイルした
 
ときのアドレスに実際にBGMデータを置く場所が依存せずにBGMデータを演奏する
 
ことが出来ます。
 
:countには繰り返す回数を入れます。0で無限ループ演奏となります。
 
:演奏に成功すると0を、失敗すると1を返します。
 
  
;void kinrou_stop(void);
+
;void mpk_playspeed(char speed);
:演奏を終了します。本関数を実行してから勤労5号用に設定した割り込みを元
+
:早送り、スロー演奏、一時停止を行います。
に戻してください。
+
:speedが1以上のときは、n倍速、-1から-128で1/speed倍速演奏を行います。
 +
:speedを0にすると演奏の一時停止を行います。
  
;void kinrou_fadeout(unsigned char speed);
+
;void mpk_vol(unsigned char v);
:この関数の実行直後からspeedで指定した速度でフェードアウトして演奏を終
+
:全体のボリュームをvで設定した音量に設定します。vは0から15までの値を取り、数字が大きくなるほど、音量が大きくなります。
了します。speedが大きくなるほど、フェードアウトスピードが遅くなります。
 
  
;unsigned int kinrou_getloops(void);
+
;void mpk_fadeout(unsigned char speed);
:演奏開始後のループ回数を返します。
+
:この関数の実行直後からspeedで指定した速度でフェードアウトして演奏を終了します。speedが大きくなるほど、フェードアウトスピードが遅くなります。
  
;char kinrou_checkplay(void);
+
;unsigned long mpk_getchannel(void);
:演奏中かどうかを調べます。
+
:演奏に利用されているチャンネルの情報を得ます。
:bit 0が1のときは曲を演奏中です。
+
:帰ってきた値のBit0-8がFM音源のチャンネル1-9に、Bit9-11がPSG音源のチャンネル1-3に、Bit12-16がSCCのチャンネル1-5に対応し、各Bitが1のときは演奏中になっています。
:bit 1が1のときはポーズがかかっていません。
+
:また、Bit23が1のときは、リズムモード、0のときはFM9音モードになっています。
  
;void kinrou_pause(void);
+
;void mpk_play(void);
:この関数を実行するとポーズ・リプレイが切り替わります。
+
:mpk_initplay関数を実行した後に、この関数を実行することで、演奏が始まります。
  
;void kinrou_vol(unsigned char v);
+
;void mpk_setint(char f);
:全チャンネルのマスターボリュームをvで設定した音量に設定します。vは0から15までの値を取り、数字が小さくなるほど、音量が大きくなります。
+
:fを1にして呼び出すと、演奏中の割り込みを許可し、0で不許可にします。
 +
:詳しくは、MPKのドキュメントを参照してください。
  
;void kinrou_volpart(unsigned char v,unsigned char c);
+
;unsigned char mpk_getloops(void);
:チャンネルcのマスターボリュームをvで設定した音量に設定します。vは0から15までの値を取り、数字が小さくなるほど、音量が大きくなります。
+
:演奏開始後のループ回数を返します。
:cの番号は0-8がFM音源(リズム使用時のリズムは8)、9-11がPSG音源、12-16がSCC音源です。
 
  
;void kinrou_psgswitch(unsigned char f);
+
;void mpk_getinfo(struct mpkinfo *inf);
:fの値で示した状態にPSG音源の出力を設定します。
+
:引数で指定されたmpkinfo構造体に演奏情報を得ます。
:fはbit 0が0でPSG音源の出力がオンに、1でオフになります。
+
:mpkinfo構造体はMPK.Hで次のように定義されています。
 +
:この関数はMPK Version 0.99B以降で利用できます。
  
;unsigned char *kinrou_credit(void);
+
struct mpkinfo {
  :MSX-DOSのBDOSファンクションコール09H形式になっている著作権表示用文字列の先頭アドレスを返します。
+
        unsigned int version; /* バージョン */
 +
        unsigned char m_version; /* マイナーバージョン */
 +
        unsigned char fm_slot; /* FM音源のスロット */
 +
        unsigned char scc_slot; /* SCCのスロット */
 +
        unsigned char *ver_mes; /* バージョンのメッセージのアドレス */
 +
        unsigned char *play_info; /* 演奏情報アドレスの先頭アドレス */
 +
  };
  
;unsigned char *kinrou_getparam(void *data,unsigned char kind);
+
:各メンバーの値の意味に関しては、MPKのマニュアルを参照してください。
:勤労5号バージョン1.00以降のファンクションコールGETPARを呼び出してパラ
+
:この関数はMPK Version 0.99B以降で利用できます。
メータを獲得します。dataにデータを置いた先頭アドレスを、kindにパラメータ番号を得ます。パラメータ番号、パラメータの意味に関しては勤労5号公式規格書を参照してください。
+
 
 +
;void mpk_setchannel(unsigned long);
 +
:mpk_getchannel関数の返す値と同様の形式で、各チャンネルを演奏中にするかマスクするかを指定します。リズムチャンネルはFM7のビットで指定します。この関数はMPK Version 1.04以降で利用できます。
 +
 
 +
==制限事項==
 +
MPKでは、メモリマッパーや常駐に対応していますが、本ライブラリはこれらの機能には対応しておりません。また、本ライブラリの機能をフル活用するには、Version 1.04以降のMPKが必要になります。
  
 
==参考文献==
 
==参考文献==
* 勤労5号公式規格書(By 黒田圭一)
+
* MPK ver 1.06仕様書(By K-KAZ)
 
* MSX2/2+早分かり小事典(日本文芸社)
 
* MSX2/2+早分かり小事典(日本文芸社)
  
==後書き==
+
==謝辞==
本ライブラリも自作のゲームで音楽を演奏するために作ったものです。当初は
+
本ライブラリの開発にあたっては、ray-netの皆様、とくに、たろさん、みか
MPKを使う予定だったのですが、プログラムが大きくなってMPKが入らなくなり、もっと上位アドレスを利用するドライバはないかということで勤労5号を利用することになりました。そこでできたのが本ドライバです。選択肢としては、MGSDRVもあったのですが、実行ファイルがドライバを兼ねることから来るプログラムの面倒さとサポートから勤労5号になりました。MuSICAの統合環境が使えるので作曲も楽だし。
+
せんさん、K-KAZさんにはいろいろとお世話になりました。この場を借りてお礼
:肝心のライブラリ本体ですが、MPK用ライブラリの経験もあり、案外楽に出来
+
を申し上げます。
ました。ただ、割り込みの接続法が異なるため、本関数以外でプログラマーが書
 
くべきコードが増えたのは致し方ありません。
 
:ちなみに、NV(Syntax製作の日本のMSX界最大のディスクマガジン)に収録された拙作「進め!お掃除娘」では本ライブラリを使ってBGMをつけました。
 
:それでは、本ライブラリを利用して自作プログラムにBGMを付けてお楽しみ
 
ください。
 
  
 
==使用にあたって==
 
==使用にあたって==
169行目: 156行目:
 
また、BSD copyrightの日本語訳は下記のURLにて公開されております。
 
また、BSD copyrightの日本語訳は下記のURLにて公開されております。
 
<nowiki>http://openlab.etl.go.jp/freesoft/BSD-j.htm</nowiki>
 
<nowiki>http://openlab.etl.go.jp/freesoft/BSD-j.htm</nowiki>
<nowiki>
+
 
/*
+
/*
 
  * Copyright (c) 1998-2000 Tatsuhiko Syoji, Japan . All rights reserved.
 
  * Copyright (c) 1998-2000 Tatsuhiko Syoji, Japan . All rights reserved.
 
  *  
 
  *  
198行目: 185行目:
 
  * POSSIBILITY OF SUCH DAMAGE.
 
  * POSSIBILITY OF SUCH DAMAGE.
 
  */
 
  */
</nowiki>
 

2017年8月7日 (月) 18:07時点における最新版

MPKLib_jp

MPK Interface Library for HI-TECH C By Tatsuhiko Syoji 1998

何をするものか?

本パッケージはK-KAZ氏が製作したMSX用FM,PSG,SCC音源ドライバーMPKをHI-TECH Cから制御するためのライブラリです。HI-TECH CとMPKが別途必要です。

構成ファイル

MPK .H  
本ライブラリのヘッダーファイルです。
LIBMPK .LIB 
本ライブラリのライブラリファイルです。
HIMPKA.AS以外の拡張子ASのファイル
本ライブラリの各関数ソースファイルです。
* .O  
本ライブラリの各関数オブジェクトです。
INSTALL .BAT 
本プログラムの各関数を任意のライブラリファイルに結合する為のバッチファイルです。
REMAKE .BAT 
本プログラムの再アセンブル用バッチファイルです。
MPKLIB .TXT 
本ファイルです。
HIMPK .COM 
本ライブラリのサンプルプログラムです。
HIMPK .C  
本ライブラリのサンプルプログラムソースのC言語部分です。
HIMPKA .AS  
本ライブラリのサンプルプログラムソースのアセンブラ部分です。
MKHIMPK .BAT 
サンプルプログラム構築用バッチファイルです。
LICENCE .BAT 
本プログラムのライセンスに関するテキストファイルです。

セットアップ

まず、インクルードファイルのあるドライブ・ディレクトリにMPK.Hをコピーします。次に、ライブラリファイルのあるドライブ・ディレクトリにLIBMPK.LIBをコピーするか、INSTALL.BATを使って既存のライブラリに、本ライブラリの関数オブジェクトを結合することで、本ライブラリを使うことができます。

INSTALL.BATの使い方

INSTALL.BATは既存のライブラリファイルに本パッケージの各関数オブジェク トを結合するためのバッチファイルです。HI-TECH CのLIBR.COMが実行できる環境で、本ライブラリの各関数オブジェクトのあるドライブ・ディレクトリから

>INSTALL ライブラリファイル名

とすることで、ライブラリファイルに本パッケージの各関数オブジェクトを結 合することができます。本パッケージの関数群は他の関数に依存することが無い ので、ライブラリ内の配置はどこでも結構です。

再アセンブル法

本ライブラリの再アセンブルはREMAKE.BATを実行すればOKです。 アセンブル後はINSTALL.BATを利用してライブラリファイルを作成して下さい。

本ライブラリの使い方

本ライブラリで、MPKを使う場合、次のような手順を取ります。

本ライブラリを使うプログラムでは、まず、MPK.Hをインクルードします。 次に、本ライブラリの関数が使われる前に、MPK.BINを4000H以降の2000Hバイトのメモリブロックにロードし、タイマー割り込みをフックして、タイマー割り込みルーチンから4013H(MPKの演奏ルーチン)が呼び出されるようにします。 その後、曲データをタイマー割り込みルーチンから見えるようにロードし、本 ライブラリを使って、ドライバの初期化、演奏初期設定を行った後、演奏開始関数を呼ぶことで、とりあえず、HI-TECH CからMPK用のデータを演奏することができます。 コンパイルする際には、本ライブラリの関数オブジェクトを収めたライブラリ ファイルをリンクするようにしてください。 これで、本ライブラリを使って、HI-TECH CからMPK用のデータを演奏することができます。詳しくは、サンプルプログラムを参照してください。

サンプルプログラムについて

サンプルプログラムはHI-TECH Cをセットアップしたドライブ・ディレクトリ にサンプルプログラムのソースファイルとライブラリLIBM.LIBを置いて、 MKHIMPK.BATを実行することで、コンパイルすることができると思います。 なお、このファイルのコンパイルには、HI-TECH C Resource kit #2のMSX- DOS1用ディスク入出力関数とメモリ管理ユーティリティー関数がセットアップ されていることが必要です。

サンプルプログラムは、HIMPK Data fileとすることで、Data fileを読み込んで演奏します。カレントディレクトリに MPK.BINが必要です。演奏開始後は、キーボード操作で、簡単な特殊演奏ができます。

キー 機能
P 演奏開始
S 一時停止
+ 演奏速度を早くする
- 演奏速度を遅くする。
F フェードアウト
V 全体のボリュームの調整
L ループ回数の表示
Q 本プログラムの終了

本プログラムはライブラリのテスト用に作ったので、V1.03以前のMPKで製作された曲とV1.04以降のMPKで製作された曲でドライバを変更したり、フェードアウトのスピードを調節したりといった面倒な処理は実装していませんので、皆さんで実装に挑戦してみてはいかがでしょうか?

関数の説明

本ライブラリの関数について説明します。

unsigned int mpk_init(void);
MPKを初期化します。他の本ライブラリ関数の利用前に、必ず呼び出してください。
char mpk_initplay(void *data);
演奏をするための初期設定をします。演奏データの先頭アドレスをdataに入れて呼び出します。帰ってきた値が0でないときは、エラーが発生しています。1のときは、データのバージョンエラー、2のときはその他のエラーです。
void mpk_stop(void);
演奏を終了し、音源を初期化します。
void mpk_playspeed(char speed);
早送り、スロー演奏、一時停止を行います。
speedが1以上のときは、n倍速、-1から-128で1/speed倍速演奏を行います。
speedを0にすると演奏の一時停止を行います。
void mpk_vol(unsigned char v);
全体のボリュームをvで設定した音量に設定します。vは0から15までの値を取り、数字が大きくなるほど、音量が大きくなります。
void mpk_fadeout(unsigned char speed);
この関数の実行直後からspeedで指定した速度でフェードアウトして演奏を終了します。speedが大きくなるほど、フェードアウトスピードが遅くなります。
unsigned long mpk_getchannel(void);
演奏に利用されているチャンネルの情報を得ます。
帰ってきた値のBit0-8がFM音源のチャンネル1-9に、Bit9-11がPSG音源のチャンネル1-3に、Bit12-16がSCCのチャンネル1-5に対応し、各Bitが1のときは演奏中になっています。
また、Bit23が1のときは、リズムモード、0のときはFM9音モードになっています。
void mpk_play(void);
mpk_initplay関数を実行した後に、この関数を実行することで、演奏が始まります。
void mpk_setint(char f);
fを1にして呼び出すと、演奏中の割り込みを許可し、0で不許可にします。
詳しくは、MPKのドキュメントを参照してください。
unsigned char mpk_getloops(void);
演奏開始後のループ回数を返します。
void mpk_getinfo(struct mpkinfo *inf);
引数で指定されたmpkinfo構造体に演奏情報を得ます。
mpkinfo構造体はMPK.Hで次のように定義されています。
この関数はMPK Version 0.99B以降で利用できます。
struct mpkinfo {
       unsigned int version; /* バージョン */
       unsigned char m_version; /* マイナーバージョン */
       unsigned char fm_slot; /* FM音源のスロット */
       unsigned char scc_slot; /* SCCのスロット */
       unsigned char *ver_mes; /* バージョンのメッセージのアドレス */
       unsigned char *play_info; /* 演奏情報アドレスの先頭アドレス */
};
各メンバーの値の意味に関しては、MPKのマニュアルを参照してください。
この関数はMPK Version 0.99B以降で利用できます。
void mpk_setchannel(unsigned long);
mpk_getchannel関数の返す値と同様の形式で、各チャンネルを演奏中にするかマスクするかを指定します。リズムチャンネルはFM7のビットで指定します。この関数はMPK Version 1.04以降で利用できます。

制限事項

MPKでは、メモリマッパーや常駐に対応していますが、本ライブラリはこれらの機能には対応しておりません。また、本ライブラリの機能をフル活用するには、Version 1.04以降のMPKが必要になります。

参考文献

  • MPK ver 1.06仕様書(By K-KAZ)
  • MSX2/2+早分かり小事典(日本文芸社)

謝辞

本ライブラリの開発にあたっては、ray-netの皆様、とくに、たろさん、みか せんさん、K-KAZさんにはいろいろとお世話になりました。この場を借りてお礼 を申し上げます。

使用にあたって

本プログラムおよび、ソースコードはBSD copyright に従います。 BSD copyright については、同梱のLICENCE.TXTを参照してください。 また、BSD copyrightの日本語訳は下記のURLにて公開されております。 http://openlab.etl.go.jp/freesoft/BSD-j.htm

/*
* Copyright (c) 1998-2000 Tatsuhiko Syoji, Japan . All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without 
* modification, are permitted provided that the following conditions are 
* met:
* 
* 1 Redistributions of source code must retain the above copyright notice,
*  this list of conditions and the following disclaimer as the first lines
*  of this file unmodified.
* 
* 2 Redistributions in binary form must reproduce the above copyright 
* notice, this list of conditions and the following disclaimer in the 
* documentation and/or other materials provided with the distribution.
* 
* THIS SOFTWARE IS PROVIDED BY Tatsuhiko Syoji ``AS IS AND ANY EXPRESS 
* ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
*  DISCLAIMED. IN NO EVENT SHALL Tatsuhiko Syoji BE LIABLE FOR ANY DIRECT,
*  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
* IN
*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
* POSSIBILITY OF SUCH DAMAGE.
*/