スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「上手な『草』の生やし方」の感想

書こうと思って書いていませんでしたので、やっと書きます(^_^;)

といいつつ営業妨害になってしまうので内容に直に触れてしまわないように…。
詳細は同書にお任せするとして、ppmckのwコマンドの内部解説を。

ppmckではwコマンドで行われるのは、フレームカウンタの加算です。
テンポはNSFとして書き込まれるデータでは「フレーム数」として変換されます。
1フレームは1/60(正確には、NTSCの垂直同期信号と同じになるはず)となります。

本来は音長カウンタと呼んでもいいんですが、ppmckでは特殊な事情により呼べなかったりします。
それはqコマンドがあるためで、qコマンドはキーオフまでの時間(ゲートタイム)を指定するもので、
その時間は音長* n/8になります。で、コンパイラはデータ作成の際に「音符」と「休符」に変換します。
 この方式の利点は「高速処理」、欠点は「データ量増加」です。
ちなみにNRTDRVは用途に応じてそれを選択できます。素晴らしいですね。

つまり、ppmckでqコマンド使用中のwコマンドが意図しない動作をする場合は、
そういった特殊な変換が背景にあると考えていいと思います。

そういえば、ppmckc exのwコマンドは圧縮の為に一つにまとめるように処理をしていた記憶があります。
偽記憶かもしれません。

ところで、同書によれば、スラー記号(&)後に音符以外を繋げられる処理系があるとか。
音色設定などが即座に反映されるということですよね。興味深い所です。
スポンサーサイト

FMPAC I/O資料

FMPACカートリッジI/O資料
blueMSX romMapperFMPAC.cより。
bit順: 76543210

■1FFE: レジスタ(R/W)
■1FFF: レジスタ(R/W)

■3FF4:YM2413アドレス書き込み(W)

■3FF5:YM2413データ書き込み(W)

■3FF6: 有効化フラグ(R/W)
bit4: SRAM有効化(?)
bit0: 1 = I/O($7C/$7D)書き込み有効化

■3FF7: バンク切り替え(R/W)

NRTDRV RX 150602

https://www.dropbox.com/s/4e5m0imqoebvjti/RX150602.zip?dl=0

主な変更点
拡張スロットに対応しました。

NRTDRV RX(以下RX)では、次のようなことをしています。

・PAGE1($4000)の現在のRAMバンクを探す。
・PAGE0($0000)のRAMバンクをPAGE1で探す。
・そうすると、PAGE1はPAGE0のミラーになる。
・NX.BINは$5000から始まるプログラムで、RXの$1000にバイナリとして埋め込まれている。

NX.BINはPAGE1はミラーなのでコピーせずに実行できます。(メモリの節約とメモリマップの都合)

・PAGE1(NX.BIN)のカートリッジ検索プログラムを実行する
・PAGE0にある代理ルーチンをNRTDRV本体へパッチ
・必要があれば、カートリッジへのアクセスは代理ルーチンを経由してPAGE1のルーチンを呼び出す

つまり、
PAGE1にカートリッジ検索プログラムとがあることで、
PAGE0とPAGE3($C000)が切り替えられ、拡張スロットへと対応ができるようになるという事です。
拡張スロットの切り替えが($FFFF)にあるので、こういう事になりました。

うん、複雑だw

プロフィール

BouKiCHi

Author:BouKiCHi
ABOUT ME
MAIL:alf_byncyou at hotmail.com

WEB:http://clogging.web.fc2.com/
TWITTER:@bkc_alf

月別アーカイブ

FC2カウンター

ブロとも申請フォーム

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。