2006年8月25日の日記の1番目の記事へのコメント
■TNS-HFC2でファミコンおぼのくん
TNS-HFC2使ってどうにかおぼの君(キャラの方ね)が実機(ツインファミコン)で落下するようになりました.何かエミュレータで動かしたときと違って背景がバグってたり,フック出すとおぼの君の顔が消えたりしますが(笑),こんな感じです.ちゃんとパッドも反応します.基本的に
- NSFファイル8kbyteの後ろにプログラムROM 16kbyteとキャラクタROM 8kbyteをくっつけとく
- NSF部分でTNS-HFC2のバンクを切り替えて,キャラクタROMを$8000にマップする
- キャラクタROMの内容読み出して,PPUのメモリに$2006・$2007を経由して書き出す
- 再度バンクを切り替えて,プログラムROMが$8000から始まるところに見えるようにする
- $8000に飛ぶ
という感じでやってまして,このとき,バンクを切り替えるコードを実行する前に,バンクを切り替えるコード自体を$6000にコピーして,$6000に飛ぶという処理を行ってます.
たったこれっぽちの処理なのに,しょうもないバグ出しまくりでSDにデータをコピーすること数十回ですよ・・・.慣れないと辛い・・・.あと背景がバグってんのは何ですかね.垂直ミラー・水平ミラー云々の問題か?
アドレスミラー(水平・垂直方向)制御は$5FEDに配置したレジスタを使用します。
って何書けばいいんだーorz.垂直にする場合は1でいいのか?でも全然改善しないや・・・.2を書くと起動しなくなるな(^^;.もしかして全然別問題かなぁ.うーむこりゃわからん.おぼの君(人の方)何か思い当たる節ありますかね.
しかしまあ,これでとりあえず512kbyteまでのゲームは作って動かせるっつーわけですな.キャラROM足りない場合もバンク切り替えて転送すりゃいいわけだし.夢が広がります.
[コメントを書く]
2006年8月25日の日記の1番目の記事へのコメント
それにしても背景やスプライトが化けるのが気になりますなぁ。
垂直ミラー・水平ミラーの制御については、
INESヘッダとして、ソースの先頭に .inesmir 0 とか書いているので、
自分の中では、動的に切り替えられないという認識だったんだけど。
> 動的に切り替えられないという認識だったんだけど。
実カートリッジだとそうっすねー.間に何かはさんで切り替えられるようになってるのもあるらしいけど.
http://garakuta.homelinux.org/~nosuke/tsubo/files/misc/famicom-obono2.jpg
拡張子を.NESから.NSFにするだけで、起動時に水平ミラーでキャラクタRAMに転送する機能があるようです。
mck virtual keyboard用の.NESファイルの実行テスト中に発見しました。
> 起動時に水平ミラーでキャラクタRAMに転送する機能があるようです。
(;゜Д゜) (゜A ゜;(゜д゜;) ナ、ナンダッテー!
うおー,本当だ! 16k + 8k は最初に試したんですが(^^;,32k + 8k とは・・・
情報ありがとうございました.