anago script file reference - common

拡張子について

anago その1では、dump と program で別の様式としていましたが、 anago その2から workram read/write を搭載し、様式を統合しました。スクリプトが行える機能は拡張子で区別しますが、書式は全て同じです。

下記が拡張子別にサポートしている機能です。

  • ad: dump
  • ae: dump + workram
  • af: dump + program
  • ag: dump + workram + program
  • ai: include 向け, このファイルは ad, ae, af, ag ファイル内で dofile() として読まれるために存在します。単体では使用できません。

文法

スクリプトエンジンとして Squirrel 2.2.4 を採用していますので、文法はそれに準拠します。雰囲気は型宣言のない C だと思います。

特殊変数/定数

d

多くの関数の最初の引数が d になっています。これは制御用に必要な userpointer というもので、スクリプト内部では関数の引数を渡すことのみに使用します。

board

対象ハードのパラメータを定義します。メンバの扱いを指定します。

mappernum

対象ファイルの iNES mapper number を指定します。

  • dump: ファイル生成時に番号をヘッダに埋め込みます。
  • program: ファイル読み込み時に指定番号か確認します。
  • workram: 使用しません。

vram_mirrorfind

いわゆる H/V を検出するか判断の材料にします。

  • dump: H/V を読み込み、ヘッダに埋め込みます。
  • program: ファイル読み込み後、接続カートリッジが一致するか比較します。
  • workram: 使用しません。

ppu_ramfind

PPU area 0x0000-0x1fff が ROM or RAM の可能性がある場合を指定します。

  • dump: RAM か検出し、 dump size が auto の場合、 Program ROM の読み込みサイズを増やします。
  • program: 使用しません。
  • workram: 使用しません。

cpu_rom, ppu_rom

Program ROM (cpu_rom, $8000-$ffff, 例外あり), Charcter ROM (ppu_rom, 0x0000-0x1fff) の管理可能メモリサイズとバンクの大きさを指定します。workram access mode では使用しません。

  • size_base: 読み込みサイズが x1 の場合のメモリサイズを指定します。
  • size_max: そのハードウェアの管理可能なメモリサイズの最大値を指定します。
  • bank_size: バンクのサイズを指定します。バンクによってサイズが異なる場合はスクリプトの記載の都合で変更しちゃいます。

cpu_ram

Work RAM (cpu_ram, $6000-$7fff, 例外あり) の管理可能メモリサイズとバンクの大きさを指定します。dump mode と program mode では使用しません。

  • size_base: 読み書きサイズが x1 の場合のメモリサイズを指定します。
  • size_max: そのハードウェアの管理可能なメモリサイズの最大値を指定します。
  • bank_size: バンクのサイズを指定します。

この3つのパラメータはすべて同じ値になることがほとんどですが、すべて指定してください。

mega

0x20000 を定数にしています。board 変数のメンバに利用します。

使用できる関数

cpu_write()

function cpu_write(d, address, data)

引数

  • d: userpointer
  • address: 対象アドレス開始値。利用可能範囲は 0x4200-0xffff
  • data: write data, 整数か配列。配列の場合、要素内は全て整数にすること。

戻り値

なし

説明

カートリッジ上の制御レジスタを write するために使用します。整数単体の場合は 1byte だけの write です。配列の場合は要素の整数を連続で write します。1byte 書くことに address は 1 ずつ増加します。