2012年11月08日

PCM再生の追記

  PCM再生プログラムの追記です。

  使っているメモリマップは次の通りです。

  0x0000 〜 0x07FF :スクリーン1
  0x0800 〜 0x7FFF :音声データ1
  0x8000 〜 0x91FF :BASICプログラム、変数領域、スタックなど
  0x9200 〜 0xF8FF :音声データ2
  0xF900 〜 0xF9FF :ディスクなどのワークエリア
  0xFA00 〜 0xFFFF :BASICワークエリア


  MODE5、PAGE1 に設定した場合は、上記のようなメモリ配置になります。
 (0x91FF は、プログラムサイズによります)

  音声データが連続領域で取れないのですが、0x8000〜0x91FF をスキップすれば構わない事になります。


  また、アセンブラリストのPCMSTART の中で、右端に『7+1』とかコメントで書いているのは、その命令を実行するクロック数を表しています。

  +1 部分はウエイト分です。M1サイクルで+1 されます。
  ですので、普通の命令は、+1 となり、CB XX / ED XX / DD XX / FD XX などの拡張命令は、+2 になります(M1サイクルが2回あるため)。

  また、I/O 領域で、AY-3-8910 にアクセスする際は、さらに +1 されます。


  音声を出しているループの、合計クロック数が、363クロックになるようにしています。これは、4MHz で考えた時に ループの長さが 11025Hz に相当するためです。( 4MHz / 11052Hz = 362.8 )



  ところで、ある命令でクロック計算を間違えていました...

  OUT (C),B の命令ですが、12+2 になっていますが、12+3 の誤りですね。



posted by えすび at 18:17| Comment(1) | P6解析:音声周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
 FPGAの回路を直して、PCM が再生できるようにしてみました。

 フィルタ回路が違うせいか、かなりキレイに音声が聞こえます。


 ちょっと感動(゜゜)
Posted by えすび at 2012年11月08日 21:41
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。