ファミコンはじめました。2010年05月27日 06:17

ふとファミコンソフト作りたいなーと思って検索したら、
[ギコ猫でもわかるファミコンプログラミング]
見事に凄く詳しそうなサイトが見つかった。
ここにあったスプライトを表示するサンプルプログラムを書き換えてまずはHelloWorldを作ってみた。
やってて思ったのだが、PICのアセンブラが分かってるお陰で理解がすごく楽。しょせんどれも似たようなものなんだなあ。
それと、両方やって分かる各々の特徴もある。
ファミコンはアドレッシングモードが(PICと比べれば)多い。つまり例えば加算命令で言えば、
・"10"を足せ
・"10"番地のメモリの内容を足せ
・["10"番地のメモリの内容]番地のメモリの内容を足せ
・["10"番地のメモリの内容+インデックスレジスタの内容]番地のメモリの内容を足せ
とか色々ある。
こうしてみるとPICのアドレッシングモードって少なかったんだなあと分かる。なにせ一番低性能な部類のやつだと、
・"10"番地のメモリの内容を足せ
しかない。
ファミコンは命令長が複数ある。つまり一つの命令が1バイトだったり2バイトだったり3バイトだったりする。
PICは(高機能なのになると違うらしいが)一律12ビットor14ビットだ。
命令の実行時間も、PICは分岐命令を除き一定だがファミコンは2クロックから7クロック(8クロック?)までいろいろある。
あと、1バイトに10進数2桁を保存しようとしたのだがやってみるとうまく扱えない。なるほど、ファミコンのCPUは2進化10進数の演算機能を削除したとあったがこれのことか。
そう思ってPICを見ると2進化10進数演算そのものはないが、ハーフキャリーフラグとSWAPF命令があってそれなりに扱えそう。今まで何に使うのか分からなかったSWAPF命令が輝いて見える。
今後の予定は、とりあえず電卓っぽいものを作りたいなあと思っている。double精度で三角関数を計算できるくらいの。
あとは実機で動くようにしたいけど、…それってマジコンだよね。
Post time : 2010年05月27日 06:17│Comments(0)