kazzo で flash cartridge へ program して動作確認をしました.
kazzo... 自分で作ってなんですが10年も経てばボロは出るわけで使いづらいです.
描画途中に CPU address $2001 bit3:2 = 2'b01 にする
前回 PPU A12 がうまく動かず MMC3 の IRQ counter が想定通りに動かないかもしれないと書きましたが、本物のファミコンで想定通りに動きました.
サイトロとこびとのパンで不具合
使用した直後に画面が切り替わり、メニューの最初(アイテム、まほう、そうび...)に戻るわけですが、jsr, rts の構造を無視してスタックを直接操作していてちゃんと動きませんでした.
購入数量、売却数量の不具合
数量の再計算や再描画をさけるために改定した部分でバグがありました.
開発時では毎回店に行く操作が面倒で起動直後に直接お店に飛べるようにしてたので、問題に気づきませんでした.
戦闘中の歩行速度での矛盾
カエルになったときに跳ね途中で止まるので動くたびに上に移動してしまってみえなくなりました.
でぶチョコボに関する深刻な問題
ROM の容量不足
メニューの初期描画の効率化のときはよかったのですが、 IRQ の導入や再描画の削減やUIの改善をやっているうちに追加するプログラムの量が増えていき、容量不足が深刻な問題になりました.
一時的な対策としてでぶチョコボのプログラム領域 (0x300 bytes ぐらい)を消して使っていますが、空き領域を捻出することは不可能であるという判断です.
メニューに関するプログラムは page 0x3c, 0x3d, CPU address $8000-$bfff に配置されており、バンク境界である $9fff-$a000 付近も意識なく連続で使われていて、再利用するサブルーチンもそのように使われています. よって今回のメニューに関するプログラムは page 0x3c, 0x3d に収めきる必要があるのにそれは不可能です.
このため FF3 のパッチは未完成で開発を終えることにしました.
ひきだすの技術的問題
あずけるの改定は完成していますが、ひきだすは難しいです.
現状アイテムは nametable RAM すべてに全部入るのでよかったんですが、ひきだすはおさまらないのでスクロールしたら nametable 追記が必要です. そのプログラムを作るのは別にいいのですが、書く場所がありません.
「かう」と「ひきだす」にはアイテムが装備可能か表示されているのですが、カーソルを動かしたままだと処理が遅くなります. この装備可能の参照が妙に遅く、これも改定したいと気持ちはあるのですがこれも ROM 容量を消費することになるでしょう.