NPC出現スクリプト

$C15240 から始まるスクリプトについてちょっとメモ。
命令一覧。
命令コード オペランドのリスト([]内はバイト数) 名前の順。名前は適当に付けた。
サブルーチンのアドレスはabsolute指定で、バンクは$C1。返り値はAレジスタにある。

00 ADDR[2] IDX[2]  EXEC_AND_JUMP_IF_CARRY_CLEAR
  ADDRにあるサブルーチンを実行し、キャリーがクリアなら
  スクリプトの処理位置をIDXに設定

01 ADDR[2] IDX[2]  EXEC_AND_JUMP_IF_CARRY_SET
  ADDRにあるサブルーチンを実行し、キャリーがセットなら
  スクリプトの処理位置をIDXに設定

02 IDX[2]          JUMP
  スクリプトの処理位置をIDXに設定

03 ADDR[2]         EXEC_AND_PUT_FELLOW
  サブルーチンADDRを実行し、その返り値のキャラをシレンの周りに配置

04 CHR[1]          PUT_FELLOW
  CHRで指定したキャラコードのNPCをシレンの周りに配置

05 ADDR[2]         EXEC_AND_PUT_NPC
  サブルーチンADDRを実行し、その返り値のキャラをフロアに配置

06 CHR[1]          PUT_NPC
  CHRで指定したキャラコードのNPCをフロアに配置

07                 NOP
  何もしない

08 CHR[1] DIR[1] X[1] Y[1]       PUT_NPC_AT
  CHRで指定したキャラコードのNPCを座標(X,Y)に配置方向はDIRを向いている

09 ADDR[2]          EXEC
  サブルーチンADDRを実行する

0A ITEM[1] X[1] Y[1]   PUT_ITEM
  ITEMで指定したアイテム・ワナを座標(X,Y)に配置

0B TERR[1] X[1] Y[1]   PUT_TERRAIN
  TERRで指定した地形を座標(X,Y)に設定

FF                     EXIT
  スクリプトを終了

スクリプトのリストは長いので https://gist.github.com/986290
見づらいのでもうちょっと分かりやすいのを作りたい