ファミコンのプログラム4
>>345 1/2フレーム表示ならグラIIのミサイルなどで使ってましたね 欲を言えばですが、弾数が少ないときは1/1フレームで表示出来たら いいかも 試しに割り込み無しにしたところ18ライン分くらい処理が減ってました MMC5自体は光栄のゲームで結構出回ってるので入手は簡単かと 思いますが、今更変えるのもあれですね… 期待してますので頑張ってください NESASMでアセンブルしたNESファイルは自作カートリッジに焼く時もそのまま使えるんですか? RevolvingGems 1.00を実機で動かしたら不具合が出たので、 今さらですが調べて直してみました。 ・タイトル画面の表示が乱れる ウエイトが足りず、割込み処理での最後の$2006への書込みが HBLANK中に行われていないようので、user.asmのUser_Irq_Title:直後に nopを(余裕を持たせて)3つ追加して乱れを消しました。 ・あそびかたを選ぶと止まる タイトルで設定された割込みが無効化できずに発生し続けているようです。 Guide_Init:でIRQ_FNC+1を0にしたことで、 Irq:のjsr IRQ_FNC-1が飛ばされるため、 User_Irq_Title:中での割込みの無効化が動かないのが原因と思います。 user.asm 474行目のsta IRQ_FNC+1をコメントアウトして動くようになりました。 >>347 kazzo+anagoのような環境だと直接NESファイルを使って書けますね。 ROMライタで直接書き込む場合だとPRGとCHRへの分割が必要かと。 >>350 ありがとうございますNESplitという分割ツールがありました。 >>348 実機での動作確認ありがとうございます。 >タイトル画面の乱れ 割り込みが入ってから110clk目に最後の$2006を書いていたのですが、 nop3つ追加ということで、116clk目が正解ということですね。 今のやつも直さないと。 >あそびかたを選ぶと止まる VBlank中にIRQ_FNCを更新する仕組みを追加します。 >>352 MMC3だとラスタの260ppu_clk辺りで割込み発生みたいなので、 そこから次ラスタの表示期間終了の256ppu_clkまでの、 (341-260)+256=337ppu_clk = 112.3cpu_clk が必要な待ち時間だと思います。 sta $2006を確実にHBLANKに入れるために+4clkしましたが、 書込みが最後の1clkに行われるとすれば、数クロック削れるかもしれません。 >>352 追実験して、nopは一つでも乱れは消えました。 割込み発生から最後のsta $2006完了までが112clkになるので、 ちょっとぎりぎりな感じはしますが。 >>353 ttp://wiki.nesdev.com/w/index.php/MMC3#Hardware Regarding PPU A12 rises: If the BG uses $0000, and the sprites use $1000, then the IRQ will occur after PPU cycle 260 (as in, a little after the visible part of the target scanline has ended). If the BG uses $1000, and the sprites use $0000, then the IRQ will occur after PPU cycle 324 of the previous scanline (as in, right before the target scanline is about to be drawn). When using 8x16 sprites: When there are less than 8 sprites on a scanline, the PPU makes a dummy fetch to tile $FF for each leftover sprite. In 8x16 sprite mode, tile $FF corresponds to the right pattern table ($1000). PPUアドレスバスA12がスキャンラインカウンタのクロックとなっている。 The counter is clocked on each rising edge of PPU A12, no matter what caused it, so it is possible to (intentionally or not) clock the counter by writing to $2006 BGとSPRをどっちに配置するかで、立ち上がり、立下りが変わるので、 IRQが起きる位置とライン数が変わるようだ。 >>354 追試ありがとうございます。 clkを伸ばした場合、エミュレータでどうなるか確認したのですが こちらでは1clk伸ばしただけでも乱れが発生しました。 実機向けとエミュレータ向けの2つのバイナリを用意する必要があるようです。 だれかギコ猫より分かりやすいサイト作って もしくは解説コメント付きのソース ギコ猫があるだけ恵まれた環境。1990年代のネットはファミコンの 内部資料は英語しか無かったからね。だから普通に挫折した。 Experi9(>>343 )の改良版をアップしました。 http://homepage3.nifty.com/ ~kyoske/nes/Experi10.zip 結局のところ、ファミコン本体の2KBのWRAMだけでは 性能面を向上させつつ、やりくりするのは難しいとわかったので MMC3の拡張WRAMを解禁、弾丸のワーク領域をそちらに移しました。 本体のWRAMに余裕が出来たので、マップの仮想バッファを 倍に増加して、既存の処理を最適化して負荷を下げました。 色々なテーブルを乗せている関係で、共通ルーチン用のプログラム領域の サイズが足りないか不安になってきたのですが、拡張WRAMの空き領域に プログラムを転送すれば良い事に気づき、さらにRAMに転送するんだから 自己書き換えルーチンにできるな、ということで、自己書き換えで性能が 上がりそうなルーチンを試作してみました。 あと、当たり判定実装したり、弾丸の移動処理作ったり、BGM鳴らしてみたりで 処理落ちしないのを確認できたので、性能面で目処が立ったかなというところです。 試作した自己書き換えルーチンその1 ClearExtWorkMemory: ldy #$60 lda #$00 tax .1: sty SMCLabel(.2+2) .2: sta $6000,x inx bne .2 iny cpy #$68 bne .1 rts SMCLabelは、転送先のアドレスに変換するユーザ関数です。 sta $6000,xの$60を書き換えています。 Indirect Indexモード 6clkに対して、Absolute Indexモード 4clkで ((6clk-4clk)*256-4clk)*8 = 4064clkの節約。 試作した自己書き換えルーチンその2 Shot_Alloc: ldx SMCLabel(.2+1) .1: lda SH_X,x bmi .9 lda Round96+1,x tax .2: cpx #0 bne .1 .db $24 ; bit <$b8 (set v-flag) .9: clv lda Round96+1,x sta SMCLabel(.2+1) rts cpx #0の#0の部分を書き換え。 弾丸の空きを検索するルーチンで、次回の検索時は空きを検出した 次の場所から検索を始める処理となっています。 Round96は、0,1,2,...94,95,0,1,..と定義されているテーブルで lda Round96+1,x で (x+1)%96 の計算をしています。 ゼロページの$b8には、$6cが格納されており、bit <$b8 でv-flagが設定されます。 空きがない場合にv-flagが設定されてリターンします。 ファミコンのプログラム領域はROMだし、メモリも余裕無いから、 自己書き換えルーチンには縁が無いと思っていたのですが、 拡張WRAM使うとなると、有効な手段であるなと。 ただ、よく考えないと自己書き換えやっても効果を得られないので どのようなパターンが有効か思考する必要ありだなというところです。 >>360 おお、スプライトも見易くなりましたね。 実機(MMC3B)でExperi10.nes焼いて動かしてみましたが、BGが結構 崩れています。 Experi10_irq114.nesですとBGが崩れはしませんが東方の文字の中心あたり からチラチラしています。 また、東方を知らないのでわかりませんが会話表示とスクロールをするとたまに BGが崩れるようです。 (バンク切り替えに失敗したような感じで別の絵が出てました) 参考になれば >>364 実機での確認ありがとうございます。 会話画面表示時のBG崩れは、IRQのCHR-BANKの切り替えと メイン処理のPRG-BANKの切り替えの衝突です。 PRG-BANKの切り替えは弾丸の移動量や角度算出のテーブル引きで使用しており、 会話画面では行わなくなるので、現在そのままにしています。 ファイル実行したけど会話画面っていったい何のことなんだ セレクトボタンを押しながら上下でバックグラウンドのスクロール量調整 同じく左右で会話画面、ボスHPゲージ消去などができる 今月号(先月号から?)のゲーラボに、ファミコンソフト開発って記事が載ってた 初歩的な奴だったから、今月号からかも。立ち読みしかしてないけど ゲーラボのファミコン開発は1回のみなのかな DSみたいに連載して欲しいなーと思う 好奇心的な需要が有るんではないかと思ったり >>360 弾幕が素晴らしいです。ファミコンでは史上初?なのではないでしょうか BGのIRQスクロールも面白いです。 >>367 参考になりました。ありがとうございます。 このスレに常駐して間違いを指摘してる人は何者なのかね? 元ハドソンの中○さん? このスレではみなさんからのプログラムの投稿をお待ちしています >>83-85 は進展無し?と思ってみたらもう2年前か CじゃなくてFORTHだったら需要あったんだがなぁ 俺の >>376 プログラム言語のこと 似たものにMindがある >>377 プログラム言語のことだったのね 知らんかった 前スレを亀レスするけど数をバラバラに設定すると 完成する時としない時があるのは数学的に証明されてる。 完成しない時があると知った時は10才で、その理由を知ったのは30才だったな。 214 名前:名前は開発中のものです。 [sage]: 2008/10/21(火) 23:36:20 ID:7W0HXoP0 空気読まずに投下 ttp://www.lenis.info/~axyz/15puzzle0.1.zip C言語で15パズルとサウンド再生やってみました。 218 名前:名前は開発中のものです。 [sage]: 2008/10/30(木) 20:55:16 ID:thi/0x4l ってゆーか解けないよね?コレ 219 名前:名前は開発中のものです。 [sage]: 2008/10/31(金) 10:50:22 ID:WqELvFXJ なんだ、解けないの俺だけかと思ってたw 220 名前:名前は開発中のものです。 [sage]: 2008/11/01(土) 13:16:36 ID:K21w4wpQ 俺もだwww 221 名前:名前は開発中のものです。 [sage]: 2008/11/01(土) 13:54:44 ID:OhOXRJQv 11と12と15をくるくる回してるのは俺だけじゃなかったのか 222 名前:214 [sage]: 2008/11/02(日) 00:09:23 ID:q5gp0DGO しまった。完成形がわからなかったら解けるわけないじゃん! 0123 4567 abcd efgh の形が完成形です。・・・解いても何も起こりませんがw >>379 作者らしき人に解けない理由が伝わってないのが悲しいな >完成形がわからなかったら解けるわけないじゃん! http://www34.atwiki.jp/cc65/pages/39.html にあるソースを修正しようとしたけどウチの環境じゃうまくコンパイルできなかった 誰か頼んだ 何で数がバラバラだと解けないんだろね タイルの移動する範囲が狭いからとかそんな理由? 他のスレでバカと言われた自分がこのスレでは解けない時が半分あると指摘した人間です。 大学の理数系の初年度程度で履修する偶置換、奇置換等の行列の基礎理論。 まぁ「偶置換 奇置換 行列 15パズル」でググってみて下さい。 追伸 数十年前は、この説明が表紙に書かれていた数学啓蒙誌をその説明だけの理由で買いました。 喫茶店で飲むコーヒー4杯ほどの価格なので、それと比較するとイイ時代になりました。 昔は数学バカだったかも知れません。そして今は何と言うバカなんでしょうかと。 数学啓蒙誌の価格なら流石にそこまで高くない、5桁の数引いた4桁位かな。 ところで1杯が3000円ってどの辺りで飲むコーヒーだろう。 その他「偶置換 奇置換 行列 15パズル」でググるyaneurao氏のも出てくる。 http://d.hatena.ne.jp/yaneurao/20050821 図があって判り易い感じかと。 このスレ住民でゲームレジェンドに参加した人いるかね 結構いそうな気がする 初期のほとんどのゲームでラスタースクロールを使うときに 0爆弾使ってるけどDPCMタイマ割り込みは使えなかったんだろうか あれを使ってラスタースクロールを実現したゲームってないのだろうか >>387 「ファミコン 技術」でぐぐると じぇみに広野氏が語るファミコンソフトの開発技術 というtogetterがでてくるのであるが、それによると、 ガーディック外伝 でDMCのDMA終了割り込みを使ったが 一部の機種(ツインファミコン?)で割り込みが発生しなかったとのこと。 >>387 使ってるゲームはあるよ ロマンシアとか海外のゲームでいくつか >>388 それも正しいのか微妙 CPUに内蔵された機能なのにツインの一部の機種だけで起こるとか ありえるのかね へー興味深い、ツインファミコンじゃなくてあるとすれば考えられるのは初期型ファミコンじゃないかな あれ音源周りの仕様が後期のロットとは若干違ったはずだしね ただし 時期によってICにヒートシンクついてたりメモリがSOPだったり複数の標準ロジックICが一つのカスタムLSIに置き換わってたり さらには主要ICのマイナーバージョンも変わってるから他のロットの固有の問題でもおかしくないとは思う しかしそうか割り込みがかからないものがあるとは・・・ もし使うんなら使用可否の確認ルーチンを使う必要があるのか なるべく無音になるようなデータを用意しないといけないし、初期ではROM容量的にできないかもね。 2番目のサイトのパレット、 >実際には12色の中に同じ色を入れないといけなかったりして、12色フルに使うことはできないでしょう。 の解説希望。俺の仕様ではこんな制約はないんだが。 >>393 1パレット3色の組み合わせで指定するので ソフト制作の都合上、別々のパレットに同じ色を指定することもよくあり 常に異なる25色(SP12色+BG12色+背景色)を同時発色している訳ではない と解釈しているけど、どう読んだ? >>394 ハードレベルでできない としか読めないけど。 記憶を頼りに書いて間違ってたとか、逆に割と正確な所もあったりして微妙。 >>395 ひっかかっているのは、「最大25色出せる、というのはあくまでも理論上の話。」という文でしょうか? 「論理上」と言い切るのは私も間違いだと思います。「事実上」と表現するかな。 「論理上」の前の文に「パレットの色が重複してしまう」と条件が書いてあり、 パレットの色を重複して指定するのは、3色の組のパレットで 色指定するというハードウェアの仕様に起因することなので、 ハードウェアの制限と言われても間違いじゃないなと思います。 ただ、サイト先の文章からは、ハードレベルでできない と推測に至る表現は無いかと思います。 異なる25色を同時発色しているゲームの具体例出せないし、 自分が作っているソフトもパレットの色重複しているので 何とも言えないが正直なところ。 >>396 スペック上問題なく出来るのに理論上とか書くから誤解されると思うよ。 最大値は〜色です。という説明だけでいい。「事実上」はいらない。 実際のゲームでは、というくだりから色の重複について画像を入れるなどで 説明すればいいと思うし、そっちのほうがわかりやすいだろう。 バックアップを兼ねて制作途中版をアップしました。 東方老桜夢 ver0.10 ttp://homepage3.nifty.com/~kyoske/nes/TouhouRououmu010.zip セレクト画面、自機移動+ショット、アイテム、1面中ボス手前までのステージデータを実装。 自機のボム、ボス戦、会話処理などは、これからです。まだ先は長いな。 例によってソース添付していますので、興味がある人はどうぞ。 なんのアドバイスもできないけど徐々に完成する様を楽しみにしてる >>399 何かコメントしてくれるだけでも助かります。 ひとり黙々と作っているのは辛いので。 皆さんに1つアドバイスして欲しいことがあるのですが、よろしいでしょうか。 Aボタン=ショット Bボタン=ボム で実装を進めているのですが、 ショットを押したまま、ボムを使おうとする場合にA押しながらBを押す操作になります。 赤白ファミコンの場合には、AボタンBボタンが真横に並んでいるので そんなに押しにくくはないのですが、newファミコンの場合には、 Aボタン右上Bボタン左下に並んでいて押しにくく感じました。 コンフィグで他のボタン割り当ても選択できるようにすることを考えているのですが、 こういうボタン割り当てがよいのではというアドバイスを頂きたいです。 ちょっと考えたネタとしては、 ・Bボタン=ショット STARTボタン=ボム Aボタン=低速移動 ・Iコン、IIコン2つ持ちで、IIコンのボタンでボム ってのがあります。 ショットはBボタンじゃないと操作し辛いと思う Iコン、IIコン2つ持ちはゲーム性を損ないそうなので反対 自分の知ってる弾幕シューティングだとショットボタン連打=高速移動 ショットボタン押しっぱなし=低速移動なので、それがいいかな Bボタン=ショット(押しっぱなしで低速移動) Aボタン=ボム START+SELECT同時押し(もしくはSELECT押しながらSTART)=リセット >>402 最初、Bボタン=ショットで実装していたのですが、セレクト画面を追加した時に A=決定&A=ボムだと、誤って連打したり、操作方法がわからないので適当に押したりした場合に ボムを消費してしまうのでまずいなと、変更した経緯があります。 B=決定&B=ショットにするか検証して、問題なければ元に戻す方向でいきたいと思います。 start+selectの両方押しは取り入れたいと思います。 Iコン IIコン2つ持ちは、401の書き込みあと色々やってみたのですが、 どのように持ってもIIコンのボタンが押しにくかったのでボツにします。 newファミコンのコントローラの場合、startとBボタンの組み合わせも操作しやすいのに気付きました。 start=Aボタン=ボム Bボタン=ボム にするのもありかなと考えています。 決定ボタンを連打してたらゲームが始まっててボムを消費してしまうのは 様式美だから気にしなくてもいいと思う 細かいことだけど>>402 は START+SELECT同時押し(もしくはSTART押しながらSELECT)=リセット の間違いだった >>403 >start=Aボタン=ボム Bボタン=ボム Bボタン=ショットってこと? セレクト画面の選択はスタートも効くようにしておけばいいんじゃね 個人的にはボムがどっち側か選択出来るといいな >>404 >>start=Aボタン=ボム Bボタン=ボム >Bボタン=ショットってこと? すみません。 start=Aボタン=ボム Bボタン=ショット でした。 >>405 コンフィグでのボタン割り当ての変更は実装する予定です。 連打誤爆が気になるのならセレクト画面はスタートのみ決定にしたらよくね? 2A03はDPCMデータをどのタイミングでフェッチしてるんだ DPCM再生したらプログラムの実行速度遅くなるとかあるのか >>408 色々考えて、今のところ、start または ショット(デフォルトBボタン) を決定、 ボム(デフォルトAボタン)をキャンセルに割り当てる方向で行こうかと思っています。 >>409 英文で申し訳ないですが、nesdev wiki の記事によるとDPCMデータを読み込む時に最大4サイクルCPUが停止(ストール)するようです。 ttp://wiki.nesdev.com/w/index.php/APU_DMC#Memory_reader >>411 最大4って事は4ではない事もあるのか。別の所では1サイクルとか書いてあった。 >>409 SMB3の左下の方のちらついてる部分が、DPCM音に合わせて右にずれる。 東方老楼夢やってみましたがすごいですね。 今後の進展に期待しています。 少し気になったことですが、実機だと自機選択の画面でカーソルを 上下に動かすたびに全体的に画面が少し揺れますね。 >>415 実機で画面が揺れるのを確認しました。 PPUにデータを送ることに影響して、IRQ割り込みのカウンタが何かずれているのかも。 バグ表に記録しておきます。ありがとうございます。 >>414 やってみましたが、裏側のパッドのボタンが押しっぱなしになるか、押しにくいのどちらかでした。 机上調査レベルですが、実機で画面が揺れる(ピクンと跳ねる)のは、 ・PPUへのデータ転送処理より先にIRQカウンタの設定をしている ・パレットの書き換えでPPUアドレスの$3fxxにアクセスしている のが原因っぽいです。 $3fxxにアクセスするのでPA12のアドレス線が0→1に変化。 これをMMC3が拾ってIRQカウンタをカウントダウンすることで、 1ライン早くIRQ割り込みが発生して、画面がずれると推測しました。 さっしーを本気でブスと思ったことはない、むしろ美人な方 ブスだけど 何故、急にさっしーが出て来た? ともかく美人の範囲には入らない、美人は石原さとみ、佐々木希、エリカ様あたり。 >>396 中の人でしょうか。 色が重複してしまう理由が書かれていないのです(ファイアーの色をマリオとルイージから取ってこなければならない理由)。 重複しないように設定したいのだが、ハードの制約で重大な問題が生じる為重複させなければならない と読み取れます。 確かに市販タイトルを少し調べてみましたが全て異なる色を使用しているのは見つかりませんでしたが。 それは、総合的なデザイン上の問題だと思います。 画面上に、「マリオ、ルイージ、レディ、ファイア」の4キャラしか出てこないゲームなら、全てに異なる色を設定しても問題ないでしょう。 >>420 >中の人でしょうか。 違いますよ。 >色が重複してしまう理由が書かれていないのです 「別々のパレットから個別に色を選択してスプライトを 表示することはできない」というパレットの仕様を 説明したいがために、わざと色が重複する例を 出しているだけと私は解釈しています。 397さんの指摘のように、先に25色発色できるのを提示してから 重複する例を出す構成にするのが誤解を生まない方法だと 思います。 >重複しないように設定したいのだが、ハードの制約で重大な問題が生じる為重複させなければならない と読み取れます。 「理由なく色が重複する例を出した」から 「重大な問題が生じる為重複させなければならない」という考えに至るのが 私の考え方と違うようです。 25色発色できるとも書いてあるし、重複させなければならないと 断言する文言も無いので、私はそう解釈はしませんでした。 総合的なデザイン上の問題 という指摘については同意です。 ファミコンのプログラムに興味出たんだけどアセンブラやるならnesasmとcc65はどっちがオススメ? nesasmがアセンブラ cc65がC なのでアセンブラやるならnesasm プログラミング経験者? cc65はca65つーアセンブラも付属してるよ。 >>422 ca65もnesasmも結果として作れるソフトに差はない。 なので、そういう質問するレベルなら簡素なnesasmで十分だと思う。 皆さんありがとう プログラミングは初心者です 公式で配布しているnesasmは64bitで使えないみたいだから、まだ更新しているca65の方がマシかなと思った 自分の探し方が悪いのか? nesasmはソース付いてるから、自前でビルドして64Bit版nesasm作ってもいいのだが、面倒くさいなら、 MS-DOS Player ttp://homepage3.nifty.com/takeda-toshiya/msdos/index.html とか使えば、配布されてるnesasmのバイナリも、そのまま64Bit版Windowsのコマンドプロンプトの中で動くと思う。 ありがとうございます そのソフト別の意味で面白そう なるほど、自分でビルドしても良いのか 勉強がてらやってみます 64bit版NESASMは既にある ttp://www.2a03.jp/~minachun/nesasm/nesasm_x86.html VBlank待ちで$2002読んだ後VBlank中にスプライト書き込むプログラム書いたけど実機だと 左から右にスプライトを動かそうとするとスムーズに動いてくれない。ドンキーコングとか市販のソフトみたいに綺麗に動かすには 何を気をつけたらいいですか? 普通は$2002を使ったVblank待ちを常用するようなことはしない、ギコ猫〜のサイトでも見たのかな? 詳しくはこのスレの上のほうにあるレスを見てね >>432 ありがとうござます。プログラム変更します。 東方老桜夢のver0.20をアップしました。 ttp://homepage3.nifty.com/~kyoske/nes/TouhouRououmu020.zip 1面ボスまでの実装、ボムは未実装です。 プログラム構造的には、色々と変更中です。 当初は8KBのバンク1個にステージデータを格納する算段だったのですが、一番短い1面で現地点で5〜6KBぐらいのデータになったので、複数のバンクに分散して持つように変更しています。 弾丸パターンのデータが思いのほか大きかった。会話データはこれからだし。 あと、415さんの報告してくれたバグを元に実機判定を行うことで実機用とエミュ用に分けてたnesファイルを一本化できました。感謝です。 8BIT MUSIC POWER http://riki2riki.com/html/0_sample_8bit.html http://www.gamespark.jp/article/2015/10/20/61077.html https://www.youtube.com/watch?v=tb4ec90zWf4 プログラムが凄すぎる。 CrystalMarkみたいなスプライト量。 YouTube30fpsの動画では4倍というのがいまいちよくわからない。チラつきだけで4倍表示させてるのか? DMAでスプライトダブラー行為するにはBGとSPR両方オフにしないと出来ないという噂だがどこかでオフになっている感じがしない。 音楽部分で消費するクロック数は、VBLANK内か近傍に収めているだろうね、それとも下の方のラインでjsrしてるのか?。 割り込み使うとレジスタ退避などでクロックを浪費するから極力使いたくないだろう。 当初、sprite quadrupler スプライト クワドラプラー かと思ったが違うよな。 計算で位置求めるのは不可能だろうし、横並びのところはスプライト循環もやってるだろうし、 データ丸ごとテーブルで持ってるかな、そうなら長時間収録はできない。 パターンテーブルを4.5バンク切り替えてる?のか、全画面で複雑な絵。 絵1枚で0x2000バイトのパターンを3.5面分総とっかえってことかな。 どこでCHRバンクチェンジしているのか意識させない、バンクチェンジのノイズを抑えているようだ。 こちらはクロック数が切迫していないから、割り込みは使い放題かな。 >>435 ファミコンでも弾幕張れるんだなと関心してしまった 所でVirtuaNES v0.97でプレイすると表記が色々ズレるんだけれどもこのエミュレータでは正常に出来ないということかな? >>439 VirtuaNES 0.97で確認してみました。 東方老桜夢ver0.20では、実機/エミュ判定を行っていてIRQ割り込みの頭で、実機/エミュ別にnopを入れてタイミングを調整しています。 実機 nop 2個、エミュ nop 0個となっているのですが、VirtuaNESでは、nop 3個で画面が安定しました。 実機は nop 3個でも安定した画面になるので nopを増やすのは問題ないのですが、 VirtuaNES は、実機/エミュ判定で、エミュと判断されているため、実機側に判定させる何かしらの手立てが必要な状況です。 Aボタンを押した状態で立ち上げたら実機側とするといった方法でも構いませんでしょうか? ほう、実機判定してるんだ。 VirtuaNESにあわせる必要はない。 使いやすさは最高だが、エミュレーション精度はいまや時代遅れだからだ。 対しPPUクロック精度で書かれたより新しいエミュは 動作が重いという罠もある。 >>441 では、申し訳ありませんが、VirtuaNES対応は宿題とさせていただきます。 実機判定は、VBlank期間中にMMC3のIRQを発生させれるかを行っています。 FCEUX Nestopia NNNesterJ で動作確認しましたが、この判定をパスしたのは Nestopia だけでした。 再現性が高いという評判は流石と思いました。 しかし1クロック単位を考慮しなきゃならんソフトが多いってのもなぁ ファミコンはホントに難儀なハードだよ 普通は表面だけをマネできればいいが、ファミコンの場合そうもいかないのがな VirtuaNESで見たが、ゲーム固有オプション>タイル で奇麗になる。 >>444 ありがとうございます。 ヘルプにタイル状に分割して描画とあったので、ボスの体力ゲージなどの狭いライン間隔での割り込み部分が どうななるのか気になったのですが、問題なく表示されるのを確認しました。 ニコ動(sm28114684)に 8BIT MUSIC POWER の動画が投稿されていたので見たけど、 スプライト量4倍は、8x16モードで(8x8に対して2倍×偶数/奇数フレームで時間軸に分散で2倍 っぽい。 画面止めて、移動するオブジェクトの数を数えたけど、64個以内に収まっている。 オブジェクトの移動は、円軌道や微妙な加速減を行っているようで、それなりに負荷はありそう。でも無理のない範囲。 read.cgi ver 07.4.7 2024/03/31 Walang Kapalit ★ | Donguri System Team 5ちゃんねる