Nov17th

CC65(CA65) のバックアップ(No.5)

Top / CC65(CA65)


環境整備

  • Virtual NES
    作成した.nesファイルのエミュレート用

アセンブル方法

  • NES研究室のサンプル内のmakefileを利用してmake
    • makeコマンドはcygwinを入れるかmake on Windowsを入れる
    • メモリマップを記述したmain.cfgも必要
  • 以下のファイルを同じディレクトリに入れて,cmd.exeからmakeを実行
    • CC65一式
    • 各種割り込みを記述した,mainとなる.asmファイル
    • makefile
    • main.cfg

文法

  • 16進数値
    $を付ける
    例: $00、$81
  • 即値

    #を付ける
    例: #$00、 #$29

コントロールコマンド

  • .segment
    セグメントを切り替える。
    データやニーモニックを配置するには、.cfgファイルでセグメントにメモリ割り当てをしておく必要がある。
  • .byte
    バイトサイズのデータ(8bit)を配置する。
    .cfgファイルでセグメントにメモリを割り当てる必要がある。
  • .word
    ワードサイズのデータ(16bit)を配置する。
  • .proc、.endproc
    サブルーチンを定義する。

メモ

  • ?jsrでラベル以外の番地に飛ぶ方法
    8bitレジスタで16bitアドレスを計算する方法が分からんちん
  • プログラムのエントリーポイントはリセット割り込みの指定先アドレスになる。
  • $0000番地から4+12byte分の領域は、NES用ヘッダのデータが指定される。
    先頭4byteには固有の値が、残りの12byteにはバンクの数やミラーリング方式が指定される。
  • $FFFA番地からword3つ分の領域は、各種割り込みの分岐先が指定される。
    上から順に、VBlank割り込み、リセット割り込み、ハードウェア割り込み。
  • メモリサイズは8bit以上16bit以下なので、16bitの値で指定する。
    レジスタにメモリアドレスを格納する場合2つ使用する必要がある。
  • ROMとRAMの違いを押さえておく
  • VirtualNESだと.incbinにオフセット値を与える命令が使えない
    これが含まれると「未定義の命令が実行されました」のダイアログが出て止まる

リンク