ファミコンのプログラム4 (567レス)
ファミコンのプログラム4 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
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
296: 131 [sage] 2014/06/10(火) 18:17:23.08 ID:rVY6XcCX >>284 2) VBlankに入った時に必ずNMIの割り込みが訪れるからでしょうか 3) 本来ならばメインループにNMIを使うべきだからでしょうか VBlankにポーリング?という言葉を初めて知りました。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/296
297: 名前は開発中のものです。 [sage] 2014/06/10(火) 22:38:25.24 ID:iI+cGjJO >>245 ところで NES Assembler (v3.21, 2005/04/09, Denki Release) これどこで手に入れたの? かなりレアなバージョンぽくて見つからない。 RAMの初期化、スプライトメモリの初期化 以前誰かに指導してるでしょ、あちこちの他人ソースでも示されているし スプライトONにしているデモプログラムでスプライトメモリ初期化してないのは論外なんだよ だからG-NESのスプライトメモリビュワー使えって 未初期化メモリにアクセスしたら他の言語のコンパイラは警告出すでしょ 逆にファミコンほどの原始的なハードで、なぜ0フィルされると思った? 0フィル傾向が強いエミュだってハードリセット、ソフトリセットで挙動違うわけだしね http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/297
298: 名前は開発中のものです。 [sage] 2014/06/10(火) 23:25:46.23 ID:DX+Q254R HuC v3.21付属のやつじゃねえかな http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/298
299: 名前は開発中のものです。 [sage] 2014/06/10(火) 23:48:02.78 ID:iI+cGjJO 見つけた http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/299
300: 名前は開発中のものです。 [sage] 2014/06/11(水) 00:54:21.08 ID:vuASjJOE 1)Vblankは厳密には割り込みそのものではない。語源を考えればわかる。 あとマスク不可能な割り込みでは説明不足。 2)ファミコンにおいてNMIは必ず訪れるものか。 もし必ず訪れるのならあんたが今まで書いてきたプログラムはどうなる。 $0000から命令を実行しまくる羽目になってるだろ。 3)それならばなぜNMIを使うべきか。 全体的に不正解および説明不足そして調査不足、理解や考えも不足。 わからない言葉があったらまず目の前のPCで調べろ。 あと自虐がまるでへそを曲げた子供のようでみっともない。自虐は反省とは違う。 しばらくROMって頭冷やすことをおすすめする。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/300
301: 131 [sage] 2014/06/11(水) 04:31:31.45 ID:FDPL1IKA 分かりました。しばらくROMることにします。 ただ、僕は本当に低能ですよ。何しろ、IQが69なんで (test the nation) http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/301
302: 名前は開発中のものです。 [sage] 2014/06/11(水) 19:10:46.06 ID:HuzB/5/t 言葉選べない奴ってみっともないなぁ 上級者気取ってふんぞり返って偉そうに他人に説教しとるが相変わらずガキ丸出し これが一人だけやってるんだから目立つわな いいかげんさあ、そのチンピラみたいな恥ずかしい態度で人に接するのはおよしなさいよ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/302
303: 名前は開発中のものです。 [sage] 2014/06/11(水) 19:14:38.42 ID:HuzB/5/t まあ、こういう苦言を呈してあげても 前みたいに自分の口汚さを正当化するための言い訳しか言わないで 何が悪いのか理解出来ないまま同じ事を繰り返し続けるんだろうけど 他人に反省促す前に、自分がまず反省して態度改めなよ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/303
304: 名前は開発中のものです。 [sage] 2014/06/11(水) 20:42:36.74 ID:QsOFOWgt 多重人格らしき ”リバーシ君” が湧いてから同時期湧いて来た子たち ”YY-CHRとNESASMが使いづらい君” ”NESASMが難しいからC言語で組もうよ君” ”iNESヘッダや.incbinのことはわからないけど、nesdevの仕様書すべて読んできます君” 能書き”ダブラ君” 三日坊主の”まとめwiki君” ”DPCMの仕様教えて君” ”www.dotup.org大好き君” スタックぶちこわしてても ”PPU制御レジスタのタイミング等も問題無いはずなのに。 君” ”デバッガ使えません君” こんな初歩の初歩教えるのが上級者扱いなのか だから自演て言われてるのに ゴミみたいな不良動作のプログラムのアップロードに対し わずか数時間で ”fceuで陽性かくにん よかった” とレスが付くのも特徴 追い込まれると 〜とは別人だけど、と枕詞をつけて自己弁護 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/304
305: 266 [sage] 2014/06/12(木) 01:31:23.63 ID:VinxFlKC >>292 >>296 1) NMIの説明はまぁ正解。300さんの指摘の通りVBlankを割り込みと言い切るのは誤り。 NMIは割り込みの種類を示す言葉でVBlankは映像信号に関する言葉であり、そもそもカテゴリが違う。 2) 私が考えていた正解は、 PPUから出るVBlank期間を示す信号線が、CPUのNMI割り込みの入力ピンにつながっているから 300さんが「必ず訪れる」は誤りと言っているのは、VBlank期間に入ったときに VBlank期間を示す信号線に信号を出すか出さないかをPPUで制御できるため 3) NMIを使用するかどうかは別に問題ではない。 NMIとIRQのベクタ(割り込み時に実行されるアドレス)に0が設定されているから。 PPUなどのレジスタの設定を誤り割込みを受け付ける状態になった場合に 何が書かれているかわからない0番地をプログラムが走ることになり、 安全性を考慮しておらず、知識不足であることが読み取れるから。 割り込みを使わないのであれば、すぐに rti で戻るルーチンのアドレスをベクタに設定するべき。 Nmi: rti Irq: rti .org $FFFA .dw Nmi .dw Start .dw Irq http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/305
306: 名前は開発中のものです。 [sage] 2014/06/12(木) 01:36:18.33 ID:VinxFlKC >>290 指摘ありがとうざいます。 初期化するよう処理に反映します。 #やっぱり実機で確認できる環境欲しいな http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/306
307: 名前は開発中のものです。 [sage] 2014/06/12(木) 02:17:39.78 ID:VinxFlKC >>301 ROMてても知識は身に付かないだろうし、お題を出すのでプログラミングの経験を積んでみてはどうだろうか。 第1ステップ スタック、メモリ、PPUなどの初期化を行い、VBlank待ちのループを行う、基本のプログラムを実装する。 NMIの割り込みも実装し、NMIの割り込みの度に、$ffのメモリを1増加させる。 割り込み処理でないVBlank待ちのループでは、$ffのメモリを監視して255から0になる度に$feのメモリを1増加させる。 エミュレータのメモリビュアーで約4秒ごとに$feのメモリの値が1増加することを確認する。 第2ステップ BG画面を16x16サイズのブロックで画面いっぱいに埋める。 パレットの設定を行う。 画面にゴミが出ないように全スプライトを画面外(Y>=240)の位置に表示する。 第1ステップのプログラムを改良する。 割り込み処理ではないVBlank待ちのループで、VRAMに書き込みたいデータを用意してバッファに格納する。 NMI割り込みで、スプライトデータのDMA転送の実行とバッファに格納されたデータをVRAMに書き込む処理を行う。 プログラムを書く際に、他人のソースを参照するのは良いが、コピペは絶対行わないこと。 必ず目で見て手打ちすること。 書いたソースは、何度も読み直して、処理を説明できるぐらいまで理解すること。 プログラムが出来たら内容をレビューしたいので、批判にめげずに公開して欲しいと思う。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/307
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 260 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s