ファミコンのプログラム2at GAMEDEVファミコンのプログラム2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト733:名前は開発中のものです。 07/09/03 14:59:01 chnoZMRy 画面が出るエミュと出ないエミュがある。 734:名前は開発中のものです。 07/09/04 01:24:17 GQvI0rE0 >>732 112行目に下のコードをはさんでみ lda #$3F sta $2006 lda #$00 sta $2006 sta $2006 sta $2006 735:名前は開発中のものです。 07/09/04 19:06:34 P2wzBusB ↑は任天堂のゲームには入ってるかな。スクロール値をリセットするおまじないだ。 スクロール値って実はPPUアドレスそのものだから、$2006や$2007にアクセスすると、スクロール値が勝手に変っちゃう。 それを、VBLANK期間に VRAM転送が終わったら、VBLANK期間から出るより前にリセットする必要がある。 >>734のコードでリセットした直後に、最初のスキャンラインの自分が求めているスクロール値を$2005に書き込むべし。 ヒントや詳細は、 The Skinny on NES Scrolling NTSC 2C02 technical reference らを読むべし。難しいから分らないなら読まなくてよし。 >>732を読んでて、ぱっと見、明らかに悪いとこや勘違い?がある。今のうちに癖を直さないとそのうち、つまずく。 VirtuaNESでまともに動けばそこそこ安心と思うべし。動かないなら作法が悪い。 NMIルーチン入ったらVBLANK期間が終わらないうちに小規模なBG転送と、sta $4014のみに専念するべし。 VBLANK期間は短いので、NMIの直後は時間を無駄にしないこと。 ⇒Main: が長すぎて、sta $4014がVBLANK期間内に終わらないんじゃないか? 動作しちゃうでしょうけど、あまり(・A・)イクナイ!! NMIルーチン直後の定説は、まずSPRDMA、次にBG小転送。 VBlank: 内でBGの初期化(=大量転送)をやってる ⇒BGやSPRオフにしてさえいれば、BGの初期化はReset: 内でもok。 むしろBGやSPRの初期化は長くなりがちだからReset: でやるべき。 BG, SPR, NMIなどを再びオンにする前にVBLANKを待った方がいいかも。 jsr PadGetは⇒ 「スプライトとBGの表示をONにする」の直後に書くべき。 Main: 内の位置更新作業も同様に⇒ 「スプライトとBGの表示をONにする」の直後に書くべき。 .org $0600 sprdma: .db 0 ⇒他のアセンブラならアリでしょうが、NESASMしょぼいから、.orgやたらにやらないほうがいいかも。 NESファイルに実体確保しちゃったりして、思わぬアドレスのズレやコンパイルミスが起こりうる。 RAM上の変数定義だけなら=や.equでいいんじゃないか。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch