2018年04月29日

Midi。。。

先日レトロエクスプレスで購入したゲーム「CELIA」が動作しない原因を一生懸命
調べているのですが、一部わかってきました。
一つはDMAの回路に一部間違いがあり、16bit転送が正常にできていないようでした。
この部分は修正したのですが、次はEAFA09番地に一生懸命読みに行くのを繰り返す
永久ループに入っているようです。
アドレスマップでは、このアドレスは純正のMIDI I/Fのようです。ですので、
MIDI I/Fは無いよ、というのをドライバが認識してくれればいいのですが、どうやら
X68000ではデバイスが在るか無いかはアクセスしたときにバスエラー?が
発生するかしないかで判別しているのではないかと想像します。
使用しているMPUコアのtg68は割り込み等の例外処理が実機と異なる動作を
することが分かっており、そもそもバスエラーが存在しません。ACKを返さないと延々
待ち続けてしまいます。バスエラーはベクタ番号02ですので代わりにベクタ番号02の割り込み
をかけても、割り込みとバスエラーではスタックに積む内容が異なるため正常には動作しません。
(IOCSからブートするときにメモリ容量確認か何かでユーザメモリ最終番地にアクセスするようなのですが
この時にもバスエラーを使用するため、この部分を回避するためにSRAMの初期値に細工をしています)

代用案として、MIDI I/Fを仮に作ってしまうと思います。YM3802が乗っているだけみたいなので
データシートも落とせたし、なんとかなるかな。
posted by プー at 09:56| Comment(6) | 日記 | 更新情報をチェックする

2018年04月28日

キーボード関連修正

ディスクエミュレータのキーボードがディスクアクセス等で飛ぶ問題がありましたので修正しました。
release-F68k_DE0CVDEMU.180428.qar
従来はGPIOを介してエミュレータに繋げていましたが、FIFO介してに変更しています。
posted by プー at 07:24| Comment(3) | リリース/X68k | 更新情報をチェックする

2018年04月25日

レトロエクスプレスに行ってきました

FPGAでX1のクローン等を開発されているX1 Centerのすーぱーたーぼ様に紹介いただいて
レトロエクスプレスに行ってきました。もちろん来場者としてです。
実はFPGA版のX68kを展示したいという事前相談を受けており、どうぞ使ってください、ということで快諾したのですが、
折角展示されるのなら見てみたい、ということで(遥々バスで数時間掛けて)東京まで行ってきました。
折角東京まで行くのなら、ということで秋葉原にも寄ってきたのですが。

P_20180422_141539_vHDR_Auto.jpg
もう入って正面の席に展示されておりました。実機を模擬したケースを作られ、その中で動作させているとのこと。
隣には同じく実機を模擬した箱に入ったX1 centerさんのFPGA版X1が動作しております。
ちなみに通常はHuman68kが動作していましたが、お願いしたらグラディウスを起動してくれました。
僕自身はX68k実機を持ち合わせていないので、公開されているHuman68k、SX-Window、Ko-Windowとフリー公開されている
いくつかのゲームしか動作させていなかったのですが、グラディウスも何とか怪しくも動作しているようです。ただし、グラフィックス画面の
処理でおかしな部分があるらしく、背景は異常だったようです。

そんな中、別のブースでX68k用の、珍しく3.5" FDDで販売されているゲームがあったので、せっかくなので動作確認用もかねて
一つ購入してみました。
P_20180425_215957_vHDR_Auto.jpg
CELIAというアクションパズルゲームだそうです。だそうです、というのも動作確認用に購入しましたが、案の定、正常には起動しない
ようです。Z-Musicというドライバ?の読み込みで失敗するようです。ちょうどデバグ用の良い機材として使わせてもらおうと思います。
posted by プー at 22:37| Comment(0) | 日記 | 更新情報をチェックする

2018年03月04日

ADPCM対応

先日、OPMには対応しましたが、ADPCMが未実装だったので
ADPCMも実装しました。
ADPCM実装の中で、DMA(CHAINモード)の処理に間違いがあったので
DMA関連も見直しをしています。
ADPCMとOPMを同時に再生させると飽和して歪んでしまうので
OPMの音量調整をしていますが、果たして実機ではどの程度の
音量バランスなんだろう。。。
実機はどちらもDAC出力の後をアナログ合成しているので
どのような設計でも可能なハズですが。
release-F68k_DE0CVDEMU.180304.qar
posted by プー at 09:24| Comment(8) | リリース/X68k | 更新情報をチェックする

2018年02月24日

OPMバグFIX

FDDエミュレーションによるブロックRAMの使用量増加に伴いブロックRAMの使用量を
減らすため、OPMレジスタのアクセス方法を変更していましたがバグがあり正常に
動作していませんでした。
バグFIXを行い、とりあえず音が出るようになりましたのでアップします。release-F68k_DE0CVDEMU.180224.qar
posted by プー at 23:16| Comment(0) | リリース/X68k | 更新情報をチェックする

2018年02月23日

PC88もDiskエミュレーションです

X68kでディスクエミュレーションが大体正常に動作するようになりました。
もともとディスクエミュレーション部分はFDD,HDD等のドライブをエミュレーション
する設計で記述しましたので機種依存にはなっていません。最初からPC88でも
エミュレーションできるように設計しています。
ですのでPC88にもディスクエミュレーションを内蔵させました。
release-de0cvdemu.180222.qar
ディスクエミュレーション部分はRTL、NIOSのバイナリ共に共通です。
.qarを展開するとそれぞれのディレクトリに展開されると思いますが
開発している側ではディスクエミュレーションという一つのディレクトリに
なっていますので、展開した後で共通化できると思います。

最近はフロッピーディスクの入手性がどんどん悪くなってきています。
ですのでエミュレーションによって少しでもディスクの使用数を減らせるように、
という意図で作っています。
posted by プー at 00:54| Comment(0) | リリース | 更新情報をチェックする

DiskEmu改良版2

前回、ディスクの表・裏両面にイメージ用メモリとトラックメモリそれぞれを
使用してエミュレートしていると書きましたが、計4トラック分のメモリが必要で
HDLでRAMを想定したコーディングをした場合、自動でRAMに変換される設定に
すると、RAM容量が不足する状態になっていました。これではSignalTapIIも
まともに使えませんのでRAM容量を削減するためにイメージ用を表・裏で共通に
使用するように変更しました。
併せてOPM用レジスタも複数の小容量のブロックRAMに分かれてしまい
効率の悪い使い方になっていたため少し修正しましたが、何か間違えているらしく
音が出なくなってしまっています。
ですが、ディスクエミュレーションは正常に動作するようになったので
ひとまず公開してみます。
release-F68k_DE0CVDEMU.180222.qar
posted by プー at 00:44| Comment(0) | リリース/X68k | 更新情報をチェックする

2018年02月10日

DiskEmu改良版

前回、FDD emulationを従来の.D88フォーマットからオリジナル.DDIフォーマットに
変更しましたが、一般的には.D88が普及していますし、関連ツールも豊富です。
.D88フォーマットの難点はトラックデータからD88フォーマットに変換するのに
NiosIIだと結構負荷になってタイムアウトになってしまう点です。これを
克服すれば.D88フォーマットの方が断然使い勝手も良いので、.D88のトラックイメージを
展開・復元する部分をハードウェアに置き換えました。
ソフトウェアだと数百msかかっていた処理が数十msで完了し、Niosは.D88の
データをSDカード上のファイルシステムに読み書きするのみです。
ただし、トラックデータとD88イメージデータの両方をメモリに確保する
必要があるのでかなりの容量が必要です。現在、表裏の両サイド分の
トラックデータとD88イメージをメモリとして確保しているのですが
そうするとSignalTap用のブロックRAMは殆ど残りません。
イメージ変換は一瞬で終わるので、両面トラック分確保しなくても、片面ずつでも
本来は十分なので、そのうちに変更したいと思います。
release-F68k_DE0CVDEMU.180209.qar
posted by プー at 00:10| Comment(4) | リリース/X68k | 更新情報をチェックする