NEC PC-98シリーズエミュレーターを語ろう23 (846レス)
NEC PC-98シリーズエミュレーターを語ろう23 http://egg.5ch.net/test/read.cgi/software/1710343051/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
230: 名無しさん@お腹いっぱい。 (ワッチョイ b3af-T7LG) [] 2024/05/05(日) 02:37:23.49 ID:KHevWzEV0 OPNA YM2608のクロックサイクル精度でのシミュレーション(エミュレーション)ってものを見かけて、猫にも使えないかってことで np2 fmgen の方に書いたことをこちらにも共有いたします https://github.com/nukeykt/YM2608-LLE 使い方は文書化されてないけどソースコード眺めたところおそらく次のような感じです 便宜上 YM2608 OPNA の場合を言うと、fmopna_2608.h を include してfmopna_t型の構造体を指すポインタとマスタークロック信号(0もしくは1(非0)で、交互?)を渡して FMOPNA_Clock() を呼び出す度にfmopna_t型の構造体が1クロック(半クロック?)後の状態に更新されるって形だと思います https://github.com/nukeykt/YM2608-LLE/blob/main/fmopna_impl.h を見ると fmopna_t は最初のメンバーとしてfmopna_input_t型の input を持ってるんですが、fmopna_input_t型は YM2608 OPNA の入力端子に相当するみたいです 具体的には全てのメンバーがint型として定義されてて、clk, ic, cs, wr, rd, a0, a1, data, test, gpio_a, gpio_b, dt0, dm, ad, da とあります YAMAHA LSI Data Book 音源編(1994-10、CATALOG No.: 7610002)の YM2608B の節(https://www.quarter-dev.info/archives/yamaha/YM2608B.pdf)で、端子機能を見るとこれらが入力(もしくは入出力)の端子として記されています http://egg.5ch.net/test/read.cgi/software/1710343051/230
231: 名無しさん@お腹いっぱい。 (ワッチョイ b3af-T7LG) [] 2024/05/05(日) 02:39:41.15 ID:KHevWzEV0 >>230 「変数名,番号,機能」の順に対応を記すと clk, 63, マスタークロック(7.9872MHz) ic, 33, 初期化(イニシャルクリア) cs, 57, CPUインターフェース チップセレクト信号 wr, 58, CPUインターフェース データライト信号 rd, 59, CPUインターフェース データリード信号 a0, 60, CPUインターフェース バスコントロール信号 a1, 61, CPUインターフェース バスコントロール信号 data, 2〜9, CPUインターフェース データバス D0(最下位ビット)〜D7(最上位ビット) test, 40, LSIテスト端子 gpio_a, 17〜10, 汎用I/Oポート A0(最下位ビット)〜A7(最上位ビット) gpio_b, 25〜18, 汎用I/Oポート B0(最下位ビット)〜B7(最上位ビット) dt0, 41, 外部メモリからのデータ出力 DO0 dm, 49〜55, 外部メモリからのデータ出力 DO1〜DO7(DO0は48番にはなく上記の41番) ad, 36, ADコンバーター アナログ入力 da, 38, ADコンバーター AD変換 基準電圧 見事に(プログラムでのシミュレーションでは必要のない)電源とAD変換用のコンデンサーの入力以外は全て定義されてることがわかります http://egg.5ch.net/test/read.cgi/software/1710343051/231
232: 名無しさん@お腹いっぱい。 (ワッチョイ b3af-T7LG) [] 2024/05/05(日) 02:41:38.97 ID:KHevWzEV0 >>231 同様に、出力も fmopna_t 内に定義されています 「変数名,番号,機能」の順に対応を記すと int o_gpio_a, 17〜10, 汎用I/Oポート A0(最下位ビット)〜A7(最上位ビット) int o_gpio_b, 25〜18, 汎用I/Oポート B0(最下位ビット)〜B7(最上位ビット) int o_spoff, 34, スピーカー ON/OFF 用スイッチ int o_a8, 42, 外部メモリへのアドレス出力 A8 int o_romcs, 43, 外部メモリに ROM を使用した場合のデータ取り込み用タイミング信号 int o_mden, 44, 外部メモリに DRAM を使用した場合のデータ取り込み用タイミング信号 int o_we, 45, 外部メモリインターフェース 有効化信号 int o_cas, 46, 外部メモリインターフェース CASアドレスラッチ信号 int o_ras, 47, 外部メモリインターフェース RASアドレスラッチ信号 int o_dm, 48〜55, 外部メモリへのアドレス出力 A0〜A7、外部メモリへのデータ入力 DI0〜DI7 float o_analog, 27, SSG部アナログ信号(ソースフォロワ出力) int o_sh1, 29, DACインターフェース CHANNEL1 ラッチ出力(同期信号) int o_sh2, 30, DACインターフェース CHANNEL2 ラッチ出力(同期信号) int o_opo, 31, DACインターフェース シリアルデータ int o_s, 64, DACインターフェース DAC用ビットクロック int o_irq_pull, 56, CPUインターフェース 割り込み要求信号 int o_data, 2〜9, CPUインターフェース データバス D0(最下位ビット)〜D7(最上位ビット) http://egg.5ch.net/test/read.cgi/software/1710343051/232
233: 名無しさん@お腹いっぱい。 (ワッチョイ b3af-T7LG) [] 2024/05/05(日) 02:43:40.79 ID:KHevWzEV0 >>232 まとめると、素人目でソースコードを見たところ ・fmopna_t のインスタンスを変数に保持する ・fmopna_t.input(fmopna_input_t型)に必要なら値を書き込む → FMOPNA_Clock() にポインタ渡してクロック進める → fmopna_t の o_〜 メンバーから必要なら適宜出力を読む を繰り返す みたいに使うように見えます こちらの YAMAHA LSI の資料もきっと参考になるかと https://www.quarter-dev.info/archives.php fmgen の fmgen_fmgwrap.cpp でいうところの OPNA_SetReg()、OPNA_Mix() みたいな wrapper があった方が扱いやすいですが、それらは用意されてません(ので手元でも作れるか見てみます) 以上こちらにもご参考まで情報共有いたしました http://egg.5ch.net/test/read.cgi/software/1710343051/233
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s