西川善司氏の作成されたZMUSIC SYSTEM Ver.2.08のソースコードです。
PCやネット上で扱いやすくするために、このリポジトリ内のテキストファイルは以下の変更がされています。
- 文字コードをUTF-8に変更。
- 改行をLFに変更。
- ファイル末尾の
EOF制御記号を削除。 - ファイル名の整理(小文字化、数字のゼロ詰めなど)。
- ファイル拡張子の整理(ドキュメント.txt、ソース.s、マクロ.mac)。
ビルドにおける可搬性の向上のため、以下の変更がされています。
- バッチファイル削除、Makefile追加。
- 文字列中のユーザー定義外字を文字コードによる表記に変更。
- インクルードファイル追加。
- Human68k v2のDOSコールを
DOS _V2_xxxマクロで呼び出す。
ZMSCCALL.MACをお探しなら、archives/SOURCE.LZHに入っています。 これはVer.2.00のムックに収録されていたものです。
C言語用のライブラリlibzm2を作成しました。
mzlディレクトリにはMZL氏による改造版Ver.2.08eのソースコードを収録しています
(変更のない実行ファイルについては除外してあります)。
ただしソースコードが公開されていないようなので、Ver.2.08のソースコードをもとに Ver.2.08eと同一内容のバイナリが作成されるように編集してあります。
erikoディレクトリはTcbnErikによりMPUキャッシュ対策を加えた改造版Ver.2.09です。
ビルドしやすいように公開当時のソースコードを若干修正しています。
takanohitoディレクトリはTcbnErikによる改造版を鷹之人氏がさらに改造した
ZMUSIC RS-MIDI v2.09+01です。
unifiedディレクトリはTcbnErikによりzmusic.xとzmsc.xのソースコードを統合し、
ソースコードを整理したものです。
作成される実行ファイルはオリジナルのVer.2.08と同一です。
- zmusic.sとzmsc.sを統合し、zmusic.sからzmusic.xとzmsc.xの両方を作成するようにした。
- zmusic.xとzmusc.xで記述位置が違うサブルーチンやzmusic.xでのみ使われるコードのうち、 大規模な部分を外部ファイル化。
- zmsc_int.sのファイル名をinterrupt.sに変更。
- 奇数アドレスで
.dc.wを使わないようにした。 - アセンブル制御用のシンボルを整理した。
TINY... 定義するとzmsc.x、未定義だとzmusic.x。DEBUG... 定義するとデバッグコード有効。OLD16BIT... 定義すると16bitバージョン、未定義だとuniversalバージョン。CZ6BMI、RSMIDI、POLYPHON... 対応するMIDIインターフェースを指定する。 どれか一つを必ず指定する。
- まえがき
- MEASURE 1: イントロダクション
- MEASURE 2: ZMUSIC.Xのオプション・スイッチ解説
- MEASURE 3: X-BASIC用外部関数MUSICZ.FNC
- MEASURE 4: ZMSコマンド
- MEASURE 5: MML
- MEASURE 6: ADPCMを扱う (ZPCONV.R、ZPLK.R)
- MEASURE 7: プレイヤーZP.R
- MEASURE 8: ADPCMツールZVT.X
- MEASURE 9: MIDIデータを扱う
- MEASURE 10: ZMUSICのファンクションコール
- MEASURE 11: エラー
- MEASURE 12: ZMD/ZPDフォーマット
- MEASURE 13: ワークエリア
- MEASURE 14: 効果音モードと映像同期モード
- MEASURE 15: PCM8モード
- MEASURE 16: 付録 (C言語ライブラリ)
- 用語解説
- 非公式情報: 既知の不具合
MEASURE 10に掲載されている常駐チェックコード(リスト1)は、 Z-MUSIC v3が開発されるより前に作られたものなのでv3を除外する処理が入っていません。 そのまま使うとv3(ZMSC3.X)が常駐しているときも常駐していると判定されてしまいます。
下記のコードならv3は除外されます。
chk_drv:
* > eq=常駐確認
* > mi=常駐していない
move.l $8c.w,a0
subq.w #8,a0
cmpi.l #'ZmuS',(a0)+
bne chk_drv_err
cmpi.w #'iC',(a0)+
bne chk_drv_err
cmpi.w #$3000,(a0)+ *バージョンが大きすぎる(ZMSC3.X)
bcc chk_drv_err
moveq.l #0,d0
rts
chk_drv_err:
moveq.l #-1,d0
rtsまたはリスト1で常駐を確認したあと、常駐識別子の直後に置かれているバージョン番号が
$3000未満であることを調べる方法もあります。
PCやネット上での取り扱いを用意にするために、src/内のファイルはUTF-8で記述されています。 X680x0上でビルドする際には、UTF-8からShift_JISへの変換が必要です。
必要ツール: src2build
srcディレクトリのある場所で以下のコマンドを実行します。
src2build src
make -C build
src/内のファイルを適当なツールで適宜Shift_JISに変換して別のディレクトリに保存し、
ディレクトリ内でmakeを実行してください。
UTF-8のままでは正しくビルドできません。
オリジナルのZ-MUSICに関しては、ZM1.MAN「1.3. 著作権について」の項より引用:
法律上、日本では著作権の放棄ができませんので、著作権は作者西川善司に
保留されます。しかし、プログラムの性質上、「ZMUSIC.X」のオリジナルを
開発した私西川善司は「ZMUSIC.X」及びこれらを支援するプログラム
(サブルーチンを含む)全ての使用権に関するライセンス権を放棄します。
よってとくに断らずに商的利用が出来ます。つまり市販だろうが同人だろうが勝手に
「ZMUSIC.X」を組み込んだソフトを売ってもいいということです。
2026年にXにて西川善司氏よりライセンスについて説明する投稿がされています。
https://x.com/zenjinishikawa/status/2100266106623848624
LzzConst.macに関しては、LZZ057.LZH > LZZ.DOC「§最後に」の項より引用:
本プログラムはフリーソフトウェアとします。配布はご自由に行っていただい
て結構です。また、動作に関しては、もちろん無保障です。
Ver.2.08eに関しては、ZM208E.LZH > ZM208E.DOC「(注意)」の項より引用:
この改造プログラムの使用の如何及び
再配布などは各人の責任において行なうこと。
基本的に原作者(改造者ではない)の意志を尊重のこと。
rsmidi_mbrs.sに関しては、元となるMBRS52.ZIP > MBRS.doc「転載」の項より引用:
どぞ、お好きに。
なお、汚くて恥ずかしいんですけど、一応ソース付けておきま
すんで改造その他、お好きにして下さい。
v2.09+01に関しては、ZM209_01.LZH > ZM209_01.DOC「・最後に」の項より引用:
配布に関してはオリジナルと同じということで・・・
v2.09+01のSCCまわりのコードに関しては、ZM302_M.LZH > ZM1.MAN 「1.3. 著作権について」の項より引用:
法律上、日本では著作権の放棄ができませんので、著作権は作者西川善司に
保留されます。しかし、プログラムの性質上、「ZMUSIC」のオリジナルを
開発した私、西川善司は「ZMUSIC」及びこれらを支援するプログラム
(サブルーチンを含む)全ての使用権に関するライセンス権を放棄します。
よってとくに断らずに商的利用が出来ます。つまり市販だろうが同人だろうが勝手に
「ZMSC3.X」を組み込んだソフトを販売してもいいということです。
- ZMUSICの作者は西川善司氏です。
- LzzConst.macの作者はNOVA氏です。
- mzl/ディレクトリ(ZMUSIC Ver.2.08e)のパッチ制作者はMZL氏です。
- mzl/rsmidi_mbrs.sは、ふなぽん氏のMouse Bit Rate Set Program ver0.52 のソースコードを元にしています。
- eriko/ディレクトリ(ZMUSIC Ver.2.09)のパッチ制作者はTcbnErikです。
- takanohito/ディレクトリ(ZMUSIC RS-MIDI v2.09+01)のパッチ制作者は鷹之人氏です。
- v2.09+01のSCCまわりのコードは、西川善司氏のZMUSIC VERSION 3.02の ソースコードから該当機能部分を抜き出したものです。
- unified/ディレクトリにおける変更はTcbnErikによります。
このリポジトリの作成はTcbnErikによるものです。
https://github.com/kg68k/zmusic2