ファミコンのプログラム4 (567レス)
ファミコンのプログラム4 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
271: 名前は開発中のものです。 [sage] 2014/06/08(日) 07:01:43.99 ID:Jc27w7xL Horizontal Blankingですかね かつてはPPUの特定のバージョンのみで発生する不具合なんてのもありました スクロールレジスタがある値の時、VRAMアドレスレジスタを触ると背景色が化けるというもの・・ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/271
272: 131 [sage] 2014/06/08(日) 10:50:38.68 ID:RIyNgnKh PPUの特定バージョンというのが分かりませんが、製造されたファミコン本体 ですか?それともエミュレータか何かですか? スクロールレジスタは、$2005の二度書きレジスタですよね。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/272
273: 名前は開発中のものです。 [sage] 2014/06/08(日) 15:26:42.07 ID:25kxI5vs RPGやなんかでフィールドから街へフィールドから戦闘への場面変更で一旦ブラックアウトするのは 画面初期化して書き直す時間を稼ぐためでもあったんだろうか? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/273
274: 名前は開発中のものです。 [sage] 2014/06/08(日) 15:31:42.31 ID:Eog1TIRJ 製造ロットによるがファミコンの中には2つのカスタムLSIが入っている。 一つはRP2A03というもの もう一つがRP2C02というもの。 前者がCPUとAPUやI/Oポート周りで、後者がPPU。 PPUがRP2C02なのはNTSC出力のものだけで、PALならRP2C03、RGBならRC2C05など。 型番の後に続くアルファベット(例:RP2C02EのE)がバージョンを表している。 特定バージョンというか、初期型に不具合が多かった。 ちなみに製造後期になるとデコーダやインバータも1チップのカスタムLSIにまとめられる。 でもなぜかSRAMがSOPからDIPに戻ってる。入手先が限られてきたのかな? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/274
275: 名前は開発中のものです。 [sage] 2014/06/08(日) 17:20:23.01 ID:2cLvFL4/ >>273 スクロールは基本的にネームテーブルを2枚とも使うので 表示されていない方を裏画面として使うのはちょっとめんどくさい だから場面転換時には画面表示を一旦オフにする必要はあるけど 画面全体を書き換えるにしても数フレームだからほぼ一瞬で終わる わざわざ時間稼ぎしなければならないほどでもないので フェードなりの画面効果は演出を目的としてると思っていい http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/275
276: 名前は開発中のものです。 [sage] 2014/06/08(日) 18:14:36.81 ID:QSuHGJdX >>269 同世代のパソコンなどのVRAMはシングルポートのDRAMだよ CPUをウェイトで止めたり、DMAで勝手にCPUが止まったり、アクセスするタイミングを 工夫して見かけ上同時に読み書き出来るようにしてあったり、VDPが調停してくれたり 色々あるけども http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/276
277: 名前は開発中のものです。 [sage] 2014/06/08(日) 20:16:46.77 ID:p43hB49G >>245-246 名乗り出なくてもバグだらけのキ○ガイプログラムだからすぐわかるよ。 人の言うことを聞かないで数年間NMI使えないで、いつも同じバグ出して、「正常動作の定義は?」って逆ギレ。愚痴キ○ガイ消えてくれ。 ・あちこちでゼロページ < 忘れすぎ → auto-zeropageが施された改造版のnesasmあるよ ・なにをしているのかよくわからない。ROMに書き込んではいけない。実機動作を狙ってるなら lda #0 ;これはROMなので出来ないので、こうする sta STAGE1,x ;〃 ・Aボタン押したときのデューティ比的な音バグ(数年間放置されたバグ 誤 lda APU_REG0_DUTY_875 誤 ora APU_REG0_COUNT_ON ← PadStat = $20 と重複! 誤 ora APU_REG0_FIX_ON 正 lda #( APU_REG0_DUTY_875 | APU_REG0_COUNT_ON | APU_REG0_FIX_ON ) ・ 誤 lda APU_REG1_FRQCHG_ON 正 lda #APU_REG1_FRQCHG_ON ・既に指摘があるようにcmpが変。loadのフラグの変化とブランチのフラグ条件を理解していない。 lda なんたら cmp #0 beq または bne ・jsr Pad_Check は 他人 >>236 の? 算術sbc使ってるから変だと思ったけど パッと見でこれだけミスしてて、どこにまともに動く要素があるわけ?氷山の一角だろう。 今回も 「.dw 0; VBlank割り込み」見てまたお前かとやる気を失ったけど、BLOCK.symが同梱されていたので捗った。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/277
278: 名前は開発中のものです。 [sage] 2014/06/08(日) 20:24:54.45 ID:p43hB49G NMI使えない、各種メモリやレジスタの初期化していない奴って ギコ猫の前半章のコピペ&拡張だったんだな 後半章ばかり見てたから原因がわからなかった>>221 言い訳にもならないけどね 他人のソース調べればわかることだから 後半章のソースも問題あり >>270 指摘されると、「私は〜知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの? 「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」 (レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。 >>273 ゲームによる。 特にCHRがRAMでドラクエ?や?のようにROM容量がきつくて圧縮されたゲームは遅い。 数10フレームかかる。 エミュのパレットをハックしてネームテーブルビュワー見ると展開のスピードを見やすい。 ・戦闘画面に移行するとき CHRのパターンテーブルがRAMな場合は普通に書き換えるだけで時間がかかる。 書き換える前にPRG内の画像圧縮を展開するだろうからもっと時間がかかる。 ・マップ画面に移行するとき マップとマップチップの展開に時間がかかる 市販のゲームは限られたRAMやROMのスペースで展開と転送をこなさなければならず 我々が専用のルーチンで高速転送するのとはわけが違う場合もある 全部ROMで持ってるゲームならもっと速くて10フレーム程度かな http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/278
279: 131 [sage] 2014/06/09(月) 18:51:10.28 ID:Sx48Gggw >>277 NMIは使わなかったのは、確かにギコ猫のコピペだからと使い方を知らないからです。 いろいろ問題があったのは、事実ですし、バグがあったのも事実です。 何と言ったら良いか分かりませんが、ガッカリさせてすみませんでした。 みなさん、wという笑いや嘲笑の意味の文字を使っていないので、自分の為を思って 書き込んでいるのが見て取れます。 >>あちこちでゼロページ < 忘れすぎ → auto-zeropageが施された改造版のnesasmあるよ どうもアドバイスありがとうございます。 >>・なにをしているのかよくわからない。ROMに書き込んではいけない。実機動作を狙ってるなら >>lda #0 ;これはROMなので出来ないので、こうする >>sta STAGE1,x ;〃 ROMは書き込めないということは知っていましたが、放置したバグの結果であることは この前言ったはずです。 >>・Aボタン押したときのデューティ比的な音バグ(数年間放置されたバグ >>誤 lda APU_REG0_DUTY_875 >>誤 ora APU_REG0_COUNT_ON ← PadStat = $20 と重複! >>誤 ora APU_REG0_FIX_ON >>正 lda #( APU_REG0_DUTY_875 | APU_REG0_COUNT_ON | APU_REG0_FIX_ON ) ありがとうございます。どうしてボタンを押すと変な音なのか分かりませんでした。 何か原因があるとは思っていましたが何が原因かは全くわかりませんでした >>・ 誤 lda APU_REG1_FRQCHG_ON >>正 lda #APU_REG1_FRQCHG_ON これもありがとうございます。 つづく http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/279
280: 131 [sage] 2014/06/09(月) 18:53:26.51 ID:Sx48Gggw >>・既に指摘があるようにcmpが変。loadのフラグの変化とブランチのフラグ条件を理解していない。 >>lda なんたら >>cmp #0 >>beq または bne これは言えてますね。単純な頭なので、単純に考えていました。 >>・jsr Pad_Check は 他人 >>236 の? 算術sbc使ってるから変だと思ったけど はい、他人のソースを使いました。 >>パッと見でこれだけミスしてて、どこにまともに動く要素があるわけ?氷山の一角だろう。 >>今回も 「.dw 0; VBlank割り込み」見てまたお前かとやる気を失ったけど、BLOCK.symが同梱されていたので捗った。 えーとこれも失敗してしまいましたね。ファミコン開発は思ったより難しいんですね。 >>278 :名前は開発中のものです。:2014/06/08(日) 20:24:54.45 ID:p43hB49G >>NMI使えない、各種メモリやレジスタの初期化していない奴って >>ギコ猫の前半章のコピペ&拡張だったんだな >>後半章ばかり見てたから原因がわからなかった>>221 はい、そうです。ギコ猫の前半章の主に9章のコピペです。 >>言い訳にもならないけどね >>他人のソース調べればわかることだから 他人のソースを調べるという事がどんなに重要か分かりました。 >>後半章のソースも問題あり >>270 >>指摘されると、「私は〜知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの? >>「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」 >>(レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。 ”NMI”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/280
281: 131 [sage] 2014/06/09(月) 18:55:00.34 ID:Sx48Gggw >>236さんのソースではなく、ネット上に公開されていたソースを使いました。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/281
282: 131 [sage] 2014/06/09(月) 18:57:30.62 ID:Sx48Gggw 変数に >>・ 誤 lda APU_REG1_FRQCHG_ON >>正 lda #APU_REG1_FRQCHG_ON の違いって何ですか? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/282
283: 名前は開発中のものです。 [sage] 2014/06/09(月) 20:17:24.32 ID:dEpln6L7 実機で検証してくれたことに対して >本当に実機で試したのか知りたいですが って何気に失礼だよなこいつ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/283
284: 266 [sage] 2014/06/09(月) 20:51:16.15 ID:oKltYKig >>280 > ”NMI”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。 131さんには申し訳ないが、 まずは、WikipediaでCPUの割り込みについて勉強してきた上で ttp://ja.wikipedia.org/wiki/%e5%89%b2%e3%82%8a%e8%be%bc%e3%81%bf_(%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf) 1) NMIとVBlankの違い 2) ファミコンのプログラミングでNMIとVBlankを混在しても話が通る理由 3) .org $FFFA .dw 0 .dw Start .dw 0 というソースを見た他人が呆れる理由 を、自分なりの理解や考えで説明してもらえるかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/284
285: 131 [sage] 2014/06/09(月) 21:16:45.44 ID:Sx48Gggw 言い訳になっちゃうかわかりませんが、できたら明日の朝に書き込みます。 ホント自分は基地外なのと、頭が痛いし熱いのでこのままほおっておくと 風邪をこじらすので、すみませんが、失礼します。 リアルが充実してる人たちがうらやましいです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/285
286: 266 [sage] 2014/06/09(月) 21:30:37.71 ID:oKltYKig >>285 別に急がなくてもいいよ。その代わり自分でちゃんと考えること。 体お大事に。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/286
287: 名前は開発中のものです。 [sage] 2014/06/09(月) 21:32:44.17 ID:fvy3sA+P 頭の悪い高校生なんだから察してやれよ こいつ高校の名前を自分から暴露するような奴だぞ しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに 色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/287
288: 名前は開発中のものです。 [sage] 2014/06/09(月) 21:38:04.12 ID:dEpln6L7 自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは 自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな 近所でネコの惨殺死体がなければいいけど http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/288
289: 名前は開発中のものです。 [sage] 2014/06/10(火) 03:34:36.85 ID:OhR24Wq5 多くのエミュレータの再現目標は「市販ゲームが動作すること」であって 不完全なプログラムが「実機と同じように動作しない」というレベルでの再現には至っていません ファミコン程度の規模であっても完全再現するエミュレータはいまだに存在していません たとえばファミコンでは電源投入時にRAMの内容が不定であり すべての市販ソフトでは確実に動作させるために必ずRAMを上書き消去するなど、必ずそれを前提とした実装がされています しかしエミュレータの中には通電直後のRAMの初期値が&H00に設定されているものがあり 初期値が何であれRAM内容を消去するように実装されている市販ゲームは問題なく動作しますが RAMの初期値が&H00になっているものであるとして組まれた不完全なプログラムだと そのエミュレータでは動作するが実機では意図した動作をしないという問題に陥ってしまいます 同様ににVBlank期間が実機より長めに設定されているエミュレータも存在しています VBlank期間が長いことで市販ゲームを動作させることに影響はありませんが そのエミュレータ固有のVBlank期間を基準として作成された自作プログラムは 実機上だとプログラマの意図通りの動作をしないことになります このようにエミュレータ上のほぼすべての挙動において、実機ほどシビアではなく動作してしまう方向に緩く設計・再現されているため 実機の挙動を意識せずにエミュレータを基準として作成された自作プログラムの多くは 結果として実機で動かないものになってしまいます http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/289
290: 名前は開発中のものです。 [sage] 2014/06/10(火) 03:38:20.96 ID:OhR24Wq5 マッパーが電源投入時に選択するバンクですが 通常、実機ではハードワイヤードされている最終バンク以外の選択可能バンクは第1バンクが選択されるケースがほとんどですが 多くのエミュレータはなぜか先頭から順番通り昇順に選択されます 市販プログラムは必ず初期バンクを設定するように実装されているため問題なく動作しますが バンクの並びをアテにした不完全なプログラムはエミュレータでは動くが実機では動かないというケースが起こります >>240のプログラムはCHRバンクの初期設定がされていないので CHRバンクが未設定でも順並びに選択されるようなエミュレータでは問題なく動作しているように見えますが 実機だとスプライト側のバンクがすべてバンク0になっているので、宝石落下時のスプライトがBG用のCHRで表示されてしまっています http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/290
291: 名前は開発中のものです。 [sage] 2014/06/10(火) 05:50:34.76 ID:DX+Q254R 初期化処理って重要なんだなぁ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/291
292: 131 [sage] 2014/06/10(火) 07:44:01.93 ID:rVY6XcCX >>287 :名前は開発中のものです。:2014/06/09(月) 21:32:44.17 ID:fvy3sA+P >>頭の悪い高校生なんだから察してやれよ >>こいつ高校の名前を自分から暴露するような奴だぞ >>しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに >>色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ 以前チャタリングに関して質問したり、ネームテーブルが固定画面で960もあるから どうやって書き込むのかと質問した者でもあるのですが、それではマズイんですか。 あと、これはおかしい話なんですが、このスレッドのパート1からROMってました。 もう10年も前の話ですよね。 >>288 :名前は開発中のものです。:2014/06/09(月) 21:38:04.12 ID:dEpln6L7 >>自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは >>自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな >>近所でネコの惨殺死体がなければいいけど 猫や犬は可愛いので、そんな事しません。小さい子供に馬鹿にされても黙ってしまうような 性格なので。あと、その時は、自分でも実力が足りない自覚が無かったんです。 逆ギレ云々言った人たちには悪いですが、切れたのは事実ですが、本音と建前を 使い分けるのが日本人の美徳じゃないですかね。 そもそも、逆ギレと決めつけるあたり、あなたたちは 叱ったのではなく、怒ったと考えてよろしいでしょうか。 >>284 途中ですみませんが、 1)NMIは、ハードウェア割り込みの一種でマスク不可能な割り込み、 VBlankはブラウン管の電子銃が下端から上端に戻る際の割り込み。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/292
293: 名前は開発中のものです。 [sage] 2014/06/10(火) 08:52:45.01 ID:FVxA7Fkb NMIとVBlの正確なタイミングが分からないんだよな。 同時だと動かない市販タイトルがある。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/293
294: 名前は開発中のものです。 [sage] 2014/06/10(火) 11:40:26.64 ID:CuFktdyJ 10年もこのスレ見ててそのレベル・・・そして技術資料すら理解できない英語力・・・ 最早かわいそう過ぎて同情するわ・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/294
295: 131 [sage] 2014/06/10(火) 12:27:03.05 ID:21YAZMo1 他のパソコンから書き込みです。 なんというか、僕が素直じゃなくてしかも怒りっぽくて 先人の知恵を学ばないという姿勢が悪いと思っています。 低能という言葉がありますが、まさに自分がそうだと思っていますよ。 自他ともに認める低能です。ファミコンのCPUより遅い動作周波数 なので。>>246は撤回します。まことにすみませんでした。 ごめんなさい http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/295
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 272 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s