実質自分用メモです。
前々からSNES Wikiを参照させて頂いてましたが、
個別でページが用意されているため所要クロック数確認が面倒だったり、
スパムの被害を受けている(さらに復元しようとしてもエラーが出る)ため記事を作ります。

オススメ資料

ページ 言語 説明
SNES Wiki - トップページ 日本語 数々の資料を日本語に翻訳し、まとめてあるWikiです。
現在スパムの被害に遭っています。
Programming the 65816 (pdf注意) 英語 チップ供給元 Western Design Centerの資料です。
MPUについて詳しく知りたい方にオススメ。
Fullsnes - Nocash SNES Specs 英語 higan作者のbyuu氏もオススメするページ。
SNESに関する情報量ではおそらく世界一です。
byuu's homepage C++ higan(旧名:bsnes)はオープンソースなので、使い方が全く分からない場合は
higanのコードを参考にするのもいいと思います。最終手段としてどうぞ。

所要クロック数まとめ

最適化のお供にどうぞ。
1フレーム中のリソースは2.68MHz換算で44,667クロック、
3.58MHz換算で59,667クロックですが、実際どんなもんかは分かりません。

基本

直接系 #$** $** 3 $**,xy 3 $**** $****,xy $****** $******,x $**,s
STA 1 -- 3 4 4 5 5 5 4
Aレジスタ系 1 2 3 4 4 4 4 5 5 4
STZ 1 -- 3 4 4 5 -- -- --
BIT 1 2 3 4 4 4 4 -- -- --
LDX/LDY 2 2 3 4 4 4 4 -- -- --
STX/STY 2 -- 3 4 4 -- -- -- --
CPX/CPY 2 2 3 -- 4 -- -- -- --
TSB/TRB 5 -- 5 -- 6 -- -- -- --
RW系命令 5 -- 5 6 6 7 -- -- --
幅合わせ用                                                                                                                                                                        
間接系 ($**) 3 ($**),y 3 ($**,x) 3 [$**] 3 [$**],y 3 ($**,s),y
STA 1 5 6 6 6 6 7
Aレジスタ系 1 5 5 4 6 6 6 7
                                                                                                                                                                       
ジャンプ系 $**** $****** ($****) ($****,x) [$****]
JMP/JML 3 4 5 6 6
JSR/JSL 6 8 -- 8 --

  • 1 m=0(A/メモリ 16bitモード)時、1クロック追加。
  • 2 x=0(X/Y 16bitモード)時、1クロック追加。
  • 3 Dレジスタの下位バイトが0でない時、1クロック追加。
  • 4 インデックス追加時にページ境界をまたいだ時、1クロック追加。
  • 5 m=0(A/メモリ 16bitモード)時、2クロック追加。

  • Aレジスタ系…STAを除くアキュムレータが関係する命令。ORA AND EOR ADC LDA CMP SBC
  • RW系命令…1回でメモリ読み込み・書き込みを実行する命令。INC DEC ASL LSR ROL ROR

その他

  • 分岐命令は2クロック、分岐時3クロック
 (エミュレーションモード時、分岐によってPCレジスタのページ番号が変わった場合1クロック追加)
  • 通常のプッシュ系命令は8bitの場合は3クロック、16bitの場合は4クロック。
  • ポップ系命令は8bitの場合は4クロック、16bitの場合は5クロック。
  • Implied系命令は一部を除き2クロック。

あまり

命令 クロック数 命令 クロック数
RTS 6 PEA 5
RTL 6 PEI 6 1
RTI 6 2 PER 6
SEP 3 REP 3
XBA 3 MVP 7 3
XCE 2 MVN 7 3
BRK 7 2 WAI 3
COP 7 2 STP 3
NOP 2 WDM 2

  • 1 Dレジスタの下位バイトが0でない時、1クロック追加。
  • 2 ネイティブモード時、1クロック追加。
  • 3 1バイト転送するごとに7クロック。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2016年04月15日 20:32