NRTDRV – OPM and PSG music driver

Now I am working on translating NRTDRV manuals.

NRTDRV is originally aimed and developed for Sharp “X1” series computers, which has OPM sound board option was very popular. Highest models of “X1turboZ” has OPM inside and as default. These models were released almost same time as X68000 series, which has OPM as well.

NRTDRV developed in 2009, and is not old software at the time of real X1, ’83-around ’89. MML compiler runs on Windows and supports USB-connected hardware chiptune players as well.

NRTDRV is OPM(max. 2 chips) + PSG music driver on Sharp X1 series PCs and ported fine to MSX with SFG-01/05, especially for YAMAHA’s line ups.

Note, it is important that NRTDRV supports SFG-01 and SFG-05 for MSX, in addition to that, double cartridges of that.

Remember, YAMAHA’s OPM(and successor) have been almost vanished options and supported with only few softwares developed by YAMAHA, and it is difficult to get.

There are many FM sound related replayers which has origin in Japanese 80’s PCs.

NRTDRV official support replayers are “hoot”, “ASLPLAY(CLI)”, “nrdplay” and “MDPlayer”. Many of them supports other sound chips other than OPM and PSG. I want these tools get more popularity among retro sound geeks abroad as well.

I am checking NRTDRV related tools whether English mode available or not. I shall translate and make some patches if there are no support in English.

Slowly but step by step, translation is prepared. Let us play with it!!

ワンチャンmml Xevious

ワンチャンmml第3回!

今回はナムコのゼビウスです。例によって携帯着メロマニアックスのデータを参照していますが、拍を聞き取る練習をしていた結果、時間がかかってしまいました…

今回から見やすくするためヘッダをつけました。最小限ですが、徐々に増やしていきます。

#TITLE XEVIOUS
#TITLE_ANK XEVIOUS
#COMPOSER Yuriko Keino
#PROGRAMMER KUMO

1 v15 q7 t120 f8r8c16f16 a16>c16<a16r16 f16g16r16g16g16 r16d8r16
1 g16f16r16 e16 f8r8 c16f16a16>c16< a16r16 f16f+16r16f+16f+16r16f4

 

ワンチャンmml Fantasy Zone ST.6 with NRTDRV

ワンチャンmml活動報告!

第2回はファンタジーゾーンの6面です。
例によってゲームミュージック携帯着メロマニアックスからのコンバートです。

この週は音作りをしてたんですが、いろいろ間に合わず課題持ち越し。とりあえずの成果報告!

※データ壊れていたので修正しました(2018/3/19)

;Don’t Stop (stage6)
;Fantasy Zone, SEGA

1 v15 r8 L q7>c8< a+8 r2r4 >d4<>c4<a+4
1 v15 q7 a8a+8a2r8 g8 f8 g8 r1

1 v15 q7 >c8< a+8 r2r4 >d4<>c4<a+4
1 v15 q7 a8a+8a2r4 g8 f8 g8 r1r4

1 v15 q7 d+2>d4<>c2<a4f4 >d2<r4 f4 g1 r4 d+2 >d4< >c2< a4 f8 g1 r4 g8 g4 r16 f8 f4 r16

NRTDRVでワンチャンMML活動

数十年ぶりにようやく音楽を再開しました!

「ワンチャンMML」の「ワンチャン」は「1 Channel」の略です。

ワンチャンMML活動では、メロディを1チャンネルのみに絞ってMML打ち込みを
します。ノイズやパーカッションは「ゆるワンチャン」の場合は別チャンネル使用で、
「ガチワンチャン」の場合は全部含めて1チャンネル内に収めます。

現在の対象音源はPSGのみに絞っています。また、音源ドライバとしては、
作成、再生環境の豊富さからNRTDRVを使用しています。

イメージとしてはガラケーの着メロレベルです。
NRTDRVを使ってこのレベルのMML打ち込みをする場合、最小限ですが
以下の範囲のMMLを押さえておけばよさそうです。

MMLトラック書式

PSGのみを使用する場合、トラックは”1″~”3″を指定します

音符表現について
>音程について
>音長について(音楽的音長)

楽譜と対応していますので、簡単な楽譜が読めればすぐに理解できます。

視認性向上用の書式
{}を使って、改行も含めた複数行でMMLが記述可能な書式を押さえます。

MMLコマンド一覧

多くのコマンドがありますが、全てを覚える必要はありません。以下のものを押さえておけば、最低限の打ち込みは十分にできます。

音階、a~g<len>
休符、r<len>
シャープ、+
フラット、-
相対オクターブアップ/ダウン、>,<
区間リピート、[<num> ~ / ~ ]<num>

自分の場合、これでガラケーの着メロレベルのMMLは十分に作成できました。以下に自分が作成したMMLのサンプルを引用します。クオリティはまだまだ低いですが「これだけでも音楽ができる」という例としてあげておきます。

なお、MMLの元データはゲーメストで有名な新声社「ゲームミュージック着メロマニアックスVol.1」を参照しました。

;Magical Sound Shower
;Sega, Out Run

;intro
1{ v15 [2
a16r16>c16<e16 r16g16r16f+16
r16d16r16d16 f+16f+16g16r16
a16r16>c16<e16 r16g16r16f+16
r16r16r16r16r16r16r16r16 ]2
}

;melody
1 {v15
e8r16d8r16g8 e8r16d8r16c8}
1 {v15
d8r16<b8>r16<g>rr8}
1{v15
c8r16<b8>r16d8
c8r16<b8>r16<e16><a16>
<b8>r16<a>rr8<g8>r16}

1 {v15
<f>r16<g8><a16><g><f8><e8>
<d8>r16<e16><c2><r8><e8>
<f>r16<g8><a16><g><e8>c8}

1 {v15 <b8>r16<a2>r8<g8>r16
<f4>r16<g8><a16><g>}

1 {v15 <f8><e8><d8>r16<e16><c2><d16><e8>r16<f>r16}
1 v1 {v15 <g8><a16><g><e8>c8<b8>r16<a>r2r8 }

;interval
1 {v15 [2
a8r16a8r16a8r16
g8r16a8r8
]2
}

;second part

LSX-DODGERS Port for MSX(LDMSX) report003

ZAS error “Too may symbols”

I continued solve the differences between two assemblers as introduced in previous post, I encountered error “Too may symbols”(sic.) while including other source file. (FYI, this error message is not explained in HI-TECH C manuals.)

I suppose, this means “Too many sybols” and memory area is not enough. I decided to compress ZAS binary and make free memory.

I used PopCOM! execution file compresser on CP/M. It is distributed in “PC88 users club library”.

http://www.pc88.gr.jp/softlib/index.php?action=find_by_env&env=/cpm&from=1&size=20

After compression, size of ZAS.COM is 19840 from 37632 bytes.
(I compressed link.com as well this time for further use.)

I wanted to solve memory shortage by this with 18k extended free area, but in vain. “Too many symbols” error is not resolved by memory free area.

前回紹介したアセンブラ間での差分を解消しながら、ソースをアセンブルしていくと、ファイルをインクルードしたときに”Too may symbols”(ママ)のエラーが出てしまいました 。(ちなみにこのエラーメッセージはHI-TECH Cマニュアルに記載されてません)。

シンボルが多すぎる、ということだと思うのですが、メモリに確保している領域が足りなくなるのかな?と勝手に推測。いい機会なので、ZASのバイナリの方を圧縮してみることにしました。

使用したのはCP/M用の実行バイナリ圧縮ツールのPopComです。
PC88 users club libraryにあったものを使用しました。

http://www.pc88.gr.jp/softlib/index.php?action=find_by_env&env=/cpm&from=1&size=20

圧縮した結果、37632から19840になりました。
(後で使うので一緒にlink.comも圧縮しました。)

18k近くも空くなら、メモリ不足は解消するでしょう。
…と思いましたが、結論からいけばダメでした。

Symbolが多すぎるのは、空きメモリを増やしても解消しないようです。

LSX-DODGERS Port for MSX(LDMSX) report002

LSX-Dodgers is written by Z80 absolute macro assembler “OHM-Z80” on S-OS. S-OS is a multi-platform operating system project across some PCs in 80’s Japan. (S-OS is interesting and deeply technical topic so I can not describe here any further). I deeply involved in HI-TECH C for CP/M, so I want to use HI-TECH C assembler “ZAS” this time.

Ports of S-OS and OHM-Z80 is available here.

http://www.retropc.net/ohishi/s-os/

The my first interest (or TASK) is converting OHM-Z80 assembler source to HI-TECH C “ZAS” assembler. OHM-Z80 is highly extended (this topic is also so DEEP and technical, sorry) and source code for this assembler is not assembled easily with other assembler.

There are so many difference between these two assemblers and I tried to list below as far as I noticed (so it is not complete one).

My first goal is to complete editing these points.

*Description for addresses
[OHM-Z80]
Starts with $ or ends with H
[ZAS]
Ends with H

*Final and absolute address is determined by
[OHM-Z80]
OFFSET
[ZAS]
Linker(LINK -C)

*Including other source files
[OHM-Z80]
$INCLUDE
[ZAS]
*Include on line head

*Available characters for labeling
[OHM-Z80]
[],@ are OK
[ZAS]
[],@ are N/A

*Definition for bytes
[OHM-Z80]
DB & DEFB are available
[ZAS]
DB & DEFB are available, but DB cause error(by unknown reason)

*Definition for words
[OHM-Z80]
DW is available
[ZAS]
DW is not available(only DEFW)

*Recursing DEFW definition via labels
[OHM-Z80]
Available
[ZAS]
N/A

LSX-DodgersはS-OS用Z80アブソリュートマクロアセンブラである”OHM-Z80″で書かれました。S-OSは80年代のPCをまたいだマルチプラットフォームOSプロジェクト(S-OSは興味深いのですが、とてもディープで技術的な内容になるので、ここではこれ以上触れません)。自分はHI-TECH C for CP/Mにどっぷり浸かってしまったので、今回はHI-TECH C 用アセンブラである”ZAS”を使いたいと思います。

S-OSの移植版とOHM-Z80は以下で入手可能です。

http://www.retropc.net/ohishi/s-os/

自分の最初の関心(というかタスク)はOHM-Z80のアセンブラソースをHI-TECH C “ZAS”アセンブラに変換することです。OHM-Z80は大幅に拡張されており(このトピックもディープでテクニカルなのです、スイマセン)、このアセンブラ用のソースコードは他のアセンブラではそう簡単にはアセンブルできません。

この二つのアセンブラの間には多くの差異があるため、気づいた範囲で(なので完全ではないのですが)以下にリストアップします。

最初の目標はこれらの点の修正を完了することです。

□アドレスの表記
[OHM-Z80]
$で始まるかHで終わる
[ZAS]
Hで終わる

□最終的な配置アドレス
[OHM-Z80]
OFFSET
[OHM-Z80]
リンカ(LINK -C)

□他ソースファイルのインクルード
[OHM-Z80]
$INCLUDE
[ZAS]
行頭で*Include

□他テキストのインクルード
[OHM-Z80]
$CHAIN
[ZAS]
行頭で*Include

□ラベルの文字制限
[OHM-Z80]
[]と@が使える
[ZAS]
使えない??

□DB
[OHM-Z80]
DBで通る(DEFBの略)
[ZAS]
DBでエラーが出るが、DEFBだと通る

□DW
[OHM-Z80]
DWで通る
[ZAS]
DEFWでないと通らない(省略形がない)

□DEFWでのラベルを介した再帰的な定義
[OHM-Z80]
DWで2バイト分なら他ラベルを参照しても通る
[ZAS]
通らない

LSX-DODGERS Port for MSX(LDMSX) report001

Do you know “LSX-Dodgers”?

This is MSX-DOS cloned OS runs on Sharp X1, Z80 series computers.

Unfortunately we don’t have MSX-DOS clones to redistribute freely on the Net, so we should have some. This “LSX-Dodgers” is the first and the best candidate for it, I suppose.

The source codes of “LSX-Dodgers” are published on github.com by original author GAKU. (We appreciate the work!!)

https://github.com/tablacus/LSX-Dodgers

I decided to port this OS to MSX and some other Z80 based computers, and forked it.

https://github.com/kumokosi/LSX-Dodgers-Ports/wiki

Planed tasks(2018/1/1)

*Source (format) convert from OHM-Z80 to HI-TECH C ZAS

*Tests for common functions between MSX-DOS and LSX-DODGERS

*Implements and tests for uncommon functions between MSX-DOS and LSX-DODGERS

*Implements and tests for extended functions by LSX-DODGERS

I will report about porting processes on this blog.

 

“LSX-Dodgers”というOSをご存知ですか?

これはMSX-DOSクローンのOSでSharpのX1シリーズ上で動くものです。

残念ながら、ネット上で自由に再配布できるMSX-DOSクローンがまだないので、何かしらほしいと思っていたところでした。この”LSX-Dodgers”は最初で最良の選択肢ではないでしょうか。

LSX-Dodgersのソースコードは原作者のGAKU氏によってgithub.comで公開されています(ありがとうございます!)

https://github.com/tablacus/LSX-Dodgers

このOSを、MSXはじめとした他のZ80搭載機に移植することにして、リポジトリをフォークしました。

https://github.com/kumokosi/LSX-Dodgers-Ports/wiki

2018/1/1現在計画しているタスクは以下の通りです。

・OHM-Z80からZASへのソース(フォーマット)変更
・MSX-DOSとLSX-DODGERSの共通部の動作確認
・MSX-DOS非互換部分のMSX対応版実装
・LSX-DODGERS拡張部分のX1→MSX対応

当ブログでは順次開発状況をレポートしていきます。

 

Sega GameGear Cartridge’s Chip Report

Some weeks ago, I researched my own Sega Game Gear’s chips inside. I would like to convert memory bank chips (if exist) but nothing are there as separated single chip. I gave up researching inside GameGear cartridge but I report how these were like. Have fan!

 

Socerian for MSX PSG PATCH

Sorcerian for MSX PSG Patch enables you to play SORCERIAN with PSG music.

“Sorcerian” is a one of most famous role playing game in Japan from 80’s.

MSX version plays music with FM sound (YM2413), but these are not so good as the one of other platforms. I prefer PSG version to FM, so make the patch.

Download from here.

DS5_PSG