2006年8月25日の日記の1番目の記事へのコメント

TNS-HFC2でファミコンおぼのくん

TNS-HFC2使ってどうにかおぼの君(キャラの方ね)が実機(ツインファミコン)で落下するようになりました.何かエミュレータで動かしたときと違って背景がバグってたり,フック出すとおぼの君の顔が消えたりしますが(笑),こんな感じです.ちゃんとパッドも反応します.基本的に

  1. NSFファイル8kbyteの後ろにプログラムROM 16kbyteとキャラクタROM 8kbyteをくっつけとく
  2. NSF部分でTNS-HFC2のバンクを切り替えて,キャラクタROMを$8000にマップする
  3. キャラクタROMの内容読み出して,PPUのメモリに$2006・$2007を経由して書き出す
  4. 再度バンクを切り替えて,プログラムROMが$8000から始まるところに見えるようにする
  5. $8000に飛ぶ

という感じでやってまして,このとき,バンクを切り替えるコードを実行する前に,バンクを切り替えるコード自体を$6000にコピーして,$6000に飛ぶという処理を行ってます.

たったこれっぽちの処理なのに,しょうもないバグ出しまくりでSDにデータをコピーすること数十回ですよ・・・.慣れないと辛い・・・.あと背景がバグってんのは何ですかね.垂直ミラー・水平ミラー云々の問題か?

アドレスミラー(水平・垂直方向)制御は$5FEDに配置したレジスタを使用します。

って何書けばいいんだーorz.垂直にする場合は1でいいのか?でも全然改善しないや・・・.2を書くと起動しなくなるな(^^;.もしかして全然別問題かなぁ.うーむこりゃわからん.おぼの君(人の方)何か思い当たる節ありますかね.

しかしまあ,これでとりあえず512kbyteまでのゲームは作って動かせるっつーわけですな.キャラROM足りない場合もバンク切り替えて転送すりゃいいわけだし.夢が広がります.

[コメントを書く]

OBONO 2006/08/26(土) 12:51:10
すげぇ…
それにしても背景やスプライトが化けるのが気になりますなぁ。

垂直ミラー・水平ミラーの制御については、
INESヘッダとして、ソースの先頭に .inesmir 0 とか書いているので、
自分の中では、動的に切り替えられないという認識だったんだけど。
nosuke 2006/08/26(土) 16:36:03
水平・垂直ミラーは関係なかったっす.ネームテーブルを使用前にゼロクリアしてなかったのが問題でした.エミュレーターだと最初から0埋めされてたりするから問題が出なかったりするのかな?

> 動的に切り替えられないという認識だったんだけど。
実カートリッジだとそうっすねー.間に何かはさんで切り替えられるようになってるのもあるらしいけど.
nosuke 2006/08/26(土) 17:00:33
相変わらずスプライトが変だなぁ・・・(´・ω・`)
http://garakuta.homelinux.org/~nosuke/tsubo/files/misc/famicom-obono2.jpg
Socket775 2006/08/26(土) 19:17:55
NESヘッダ16byte+プログラムROM 32kbyte+キャラクタROM 8kbyteをくっつけて
拡張子を.NESから.NSFにするだけで、起動時に水平ミラーでキャラクタRAMに転送する機能があるようです。
mck virtual keyboard用の.NESファイルの実行テスト中に発見しました。
nosuke 2006/08/26(土) 20:47:32
ども,こんにちは
> 起動時に水平ミラーでキャラクタRAMに転送する機能があるようです。
(;゜Д゜) (゜A ゜;(゜д゜;) ナ、ナンダッテー!

うおー,本当だ! 16k + 8k は最初に試したんですが(^^;,32k + 8k とは・・・
情報ありがとうございました.

お名前:  メールアドレス(省略可):
メールアドレスも表示されます
ここに名前その他を書いてはいけません: ここにメールアドレスその他を書いてはいけません:

2006年8月25日の日記の1番目の記事へのコメント

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2006年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ