<更新> 2007.04.01 - 初版。 2007.04.10 - バンクを使わない NSF に対応。DEY 命令のジャンプテーブルが間違っていたのを修正。 2007.05.10 - Added 32Kbyte-Cart-RAM version. Please use new version, if old program runs incorrectly with real gbc(+flash cart). + Implemented frame sequencer mode 0. buggy, though. + Even more accurate envelope, sweep, and noise frequency. + Fixed checksum calculation. + Added player screen. How about it? + 32KByte の RAMカートリッジ対応版をリリースしました。実機+フラッシュカートで使う場合 従来は 128KByte RAM 前提でしたが、より少ない RAMメモリで動作するようになりました。 ただし、実行速度はノーマル版に比べて若干遅くなります。 + フレームシーケンサを実装しました。mode 0 のみです。まだ多くのバグがあります。 + エンベロープとスイープとノイズパラメータを見直しました。ほとんど耳調整です。 + コンバータで ROM作成時のチェックサム計算のバイトオーダーが上下逆だったのを修正。 + 黒画面では寂しいので、プレイヤー画面をつけました。 2007.05.11 - Fixed updating sound frequency(lower register). + 周波数下位に書き込まれた時にも音を更新するようにしました。明らかに変なNSFが多かったので。
NES | GB | |
CPU | M6502カスタム | Z80カスタム |
bit数 | 8bit | 8bit |
動作クロック | 1.7897725MHz | 8.188608MHz (倍速モード時) |
レジスタ | A X Y ステータスレジスタ P スタックポインタ S プログラムカウンタ PC |
A B C D E H L フラグレジスタ F スタックポインタ SP プログラムカウンタ PC |
1命令の最短実行クロック/ 最長実行クロック |
2/7 | 4/24 |
メモリ空間 | 64KB バンク切り替えあり |
64KB バンク切り替えあり |
通常のメモリアクセス: | LD A,[$C000] | 16clock |
HI-RAMメモリアクセス: | LDH A,[$FF80] | 12clock |
音程周波数(Ch.1-3) | ○ | テーブルで変換。比較的まとも。 |
ノイズ周波数(Ch.4) | ○ | 耳調整。違和感無いレベルと思う。 |
矩形波デューティ比(Ch.1/2) | ○ | GB と互換性あり。 |
スイープ(Ch.1/2) | △ | GB の Ch.2 にはスイープが無いので Ch.1のみ。 120Hz分解能と128Hz分解能の誤差あり。 |
エンベロープ(Ch.1/2/4) | △ | エンベロープループはソフトウェアシミュレーション。 パラメータは耳調整。 |
長さカウンタ(Ch.1/2/3/4) | △ | 実装。120Hzの分解能を60Hz分解能で調整。 若干の誤差あり。 |
リニアカウンタ(Ch.3) | △ | 実装。仕様が今ひとつ不明なため不完全。 |
DPCM(Ch.5) | × | GB には存在しないので無視。 |
フレームシーケンサ | △ | mode0 のみ不完全ながら実装。 mode1は無理そう。 |
ldx #$7F ldy #$01 lda [$80,x] lda [$FF],y |