ファミコンのプログラム4 (567レス)
上下前次1-新
296(1): 131 [sage] 2014/06/10(火) 18:17:23.08 ID:rVY6XcCX(2/2) AAS
>>284284(2): 266 [sage] 2014/06/09(月) 20:51:16.15 ID:oKltYKig(1/2) AAS
>>280
> ”NMI”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。
131さんには申し訳ないが、
まずは、WikipediaでCPUの割り込みについて勉強してきた上で
外部リンク:ja.wikipedia.org
1) NMIとVBlankの違い
2) ファミコンのプログラミングでNMIとVBlankを混在しても話が通る理由
3) .org $FFFA .dw 0 .dw Start .dw 0 というソースを見た他人が呆れる理由
を、自分なりの理解や考えで説明してもらえるかな。
2)
VBlankに入った時に必ずNMIの割り込みが訪れるからでしょうか
3)
本来ならばメインループにNMIを使うべきだからでしょうか
VBlankにポーリング?という言葉を初めて知りました。
297: 名前は開発中のものです。 [sage] 2014/06/10(火) 22:38:25.24 ID:iI+cGjJO(1/2) AAS
>>245245(3): 131 [sage] 2014/06/06(金) 19:17:42.85 ID:5n3Zcu9W(1/2) AAS
131です。あの後、
いろいろ注意深く書き込みを見ていたのですが
人に意見されるってすごく大事だと思いました。
ちなみに、cc65でオセロとShootingGameSampleを作ったのと、
nesasmでブロック崩しを作ったのも
自分です。
今までは自分はチキンで人に意見言われるだけで、
むっつりと黙っていましたが、これからは
もっと能動的に動きたいです。
ファミコンのブロック崩しをソース付きで晒すので
汚いし、ロジック的におかしいところばかりですが、
見てやってください。
僕はカービィやマリオ、くにおくんのファミコン少年の一人の
つもりなのでファミコンは、ホント好きですし、このスレッド
を最初から見ています
外部リンク[zip]:www1.axfc.net
ところで
NES Assembler (v3.21, 2005/04/09, Denki Release)
これどこで手に入れたの?
かなりレアなバージョンぽくて見つからない。
RAMの初期化、スプライトメモリの初期化
以前誰かに指導してるでしょ、あちこちの他人ソースでも示されているし
スプライトONにしているデモプログラムでスプライトメモリ初期化してないのは論外なんだよ
だからG-NESのスプライトメモリビュワー使えって
未初期化メモリにアクセスしたら他の言語のコンパイラは警告出すでしょ
逆にファミコンほどの原始的なハードで、なぜ0フィルされると思った?
0フィル傾向が強いエミュだってハードリセット、ソフトリセットで挙動違うわけだしね
298: 名前は開発中のものです。 [sage] 2014/06/10(火) 23:25:46.23 ID:DX+Q254R(2/2) AAS
HuC v3.21付属のやつじゃねえかな
299: 名前は開発中のものです。 [sage] 2014/06/10(火) 23:48:02.78 ID:iI+cGjJO(2/2) AAS
見つけた
300: 名前は開発中のものです。 [sage] 2014/06/11(水) 00:54:21.08 ID:vuASjJOE(1) AAS
1)Vblankは厳密には割り込みそのものではない。語源を考えればわかる。
あとマスク不可能な割り込みでは説明不足。
2)ファミコンにおいてNMIは必ず訪れるものか。
もし必ず訪れるのならあんたが今まで書いてきたプログラムはどうなる。
$0000から命令を実行しまくる羽目になってるだろ。
3)それならばなぜNMIを使うべきか。
全体的に不正解および説明不足そして調査不足、理解や考えも不足。
わからない言葉があったらまず目の前のPCで調べろ。
あと自虐がまるでへそを曲げた子供のようでみっともない。自虐は反省とは違う。
しばらくROMって頭冷やすことをおすすめする。
301(1): 131 [sage] 2014/06/11(水) 04:31:31.45 ID:FDPL1IKA(1) AAS
分かりました。しばらくROMることにします。
ただ、僕は本当に低能ですよ。何しろ、IQが69なんで
(test the nation)
302: 名前は開発中のものです。 [sage] 2014/06/11(水) 19:10:46.06 ID:HuzB/5/t(1/2) AAS
言葉選べない奴ってみっともないなぁ
上級者気取ってふんぞり返って偉そうに他人に説教しとるが相変わらずガキ丸出し
これが一人だけやってるんだから目立つわな
いいかげんさあ、そのチンピラみたいな恥ずかしい態度で人に接するのはおよしなさいよ
303: 名前は開発中のものです。 [sage] 2014/06/11(水) 19:14:38.42 ID:HuzB/5/t(2/2) AAS
まあ、こういう苦言を呈してあげても
前みたいに自分の口汚さを正当化するための言い訳しか言わないで
何が悪いのか理解出来ないまま同じ事を繰り返し続けるんだろうけど
他人に反省促す前に、自分がまず反省して態度改めなよ
304: 名前は開発中のものです。 [sage] 2014/06/11(水) 20:42:36.74 ID:QsOFOWgt(1) AAS
多重人格らしき
”リバーシ君” が湧いてから同時期湧いて来た子たち
”YY-CHRとNESASMが使いづらい君”
”NESASMが難しいからC言語で組もうよ君”
”iNESヘッダや.incbinのことはわからないけど、nesdevの仕様書すべて読んできます君”
能書き”ダブラ君”
三日坊主の”まとめwiki君”
”DPCMの仕様教えて君”
”www.dotup.org大好き君”
スタックぶちこわしてても ”PPU制御レジスタのタイミング等も問題無いはずなのに。 君”
”デバッガ使えません君”
こんな初歩の初歩教えるのが上級者扱いなのか
だから自演て言われてるのに
ゴミみたいな不良動作のプログラムのアップロードに対し
わずか数時間で
”fceuで陽性かくにん よかった”
とレスが付くのも特徴
追い込まれると
〜とは別人だけど、と枕詞をつけて自己弁護
305: 266 [sage] 2014/06/12(木) 01:31:23.63 ID:VinxFlKC(1/3) AAS
>>292292(1): 131 [sage] 2014/06/10(火) 07:44:01.93 ID:rVY6XcCX(1/2) AAS
>>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はブラウン管の電子銃が下端から上端に戻る際の割り込み。
>>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
306: 名前は開発中のものです。 [sage] 2014/06/12(木) 01:36:18.33 ID:VinxFlKC(2/3) AAS
>>290290(1): 名前は開発中のものです。 [sage] 2014/06/10(火) 03:38:20.96 ID:OhR24Wq5(2/2) AAS
マッパーが電源投入時に選択するバンクですが
通常、実機ではハードワイヤードされている最終バンク以外の選択可能バンクは第1バンクが選択されるケースがほとんどですが
多くのエミュレータはなぜか先頭から順番通り昇順に選択されます
市販プログラムは必ず初期バンクを設定するように実装されているため問題なく動作しますが
バンクの並びをアテにした不完全なプログラムはエミュレータでは動くが実機では動かないというケースが起こります
>>240のプログラムはCHRバンクの初期設定がされていないので
CHRバンクが未設定でも順並びに選択されるようなエミュレータでは問題なく動作しているように見えますが
実機だとスプライト側のバンクがすべてバンク0になっているので、宝石落下時のスプライトがBG用のCHRで表示されてしまっています
指摘ありがとうざいます。
初期化するよう処理に反映します。
#やっぱり実機で確認できる環境欲しいな
307(1): 名前は開発中のものです。 [sage] 2014/06/12(木) 02:17:39.78 ID:VinxFlKC(3/3) AAS
>>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に書き込む処理を行う。
プログラムを書く際に、他人のソースを参照するのは良いが、コピペは絶対行わないこと。
必ず目で見て手打ちすること。
書いたソースは、何度も読み直して、処理を説明できるぐらいまで理解すること。
プログラムが出来たら内容をレビューしたいので、批判にめげずに公開して欲しいと思う。
308: 名前は開発中のものです。 [sage] 2014/06/12(木) 06:23:30.12 ID:WH6q4E6P(1) AAS
なんでこいつが仕切っとるの?
309: 131 [sage] 2014/06/12(木) 16:17:30.84 ID:kfJUEFGs(1/3) AAS
書き込みたい気持ちはありますが、大分経って事態が鎮静化
してから書き込みたいです。あと、少なくとも今から
100レス程度は様子を見ながら、今から同時にお題を解いてみます。
というのも技術的な指導ならゲーム開発技術板のスレッドなので分かります。
しかし、自分の未熟な部分があるのは自分でも分かるのですが、
明らかに何度も自分の人格を否定していてスレ違いになってるのもあります。
310: 131 [sage] 2014/06/12(木) 16:19:26.08 ID:kfJUEFGs(2/3) AAS
それがどうした?悪いのはお前だろと言われればそうなのですが
これが何度も続くようなら、明らかにいじめとしか思えないのです。
いじめと思うのは間違っていると思うのなら、どうして簡単に何度も
いろんな欠点や粗を探してこうも傷つけたがるのですか?
あと、自演と言っている人へ、
自演をしているように見えるのは、明らかにおかしいですね。
IPアドレスを2chの運営元に頼んでもらって調べれば分かる
とは思います。IPアドレスが分かるという事は、書き込んだ場所も
特定されます。
ファミコンのプログラムを公開する書き込んでから家から出かけて
帰ってきてから同じパソコンで書き込んだ事くらい見抜けると思うのですが。
311: 名前は開発中のものです。 [sage] 2014/06/12(木) 19:04:44.04 ID:W0ti7vxN(1) AAS
それにしてもやけに静岡県民が多いな
自演に間違いないな不自然すぎるわ
312: 名前は開発中のものです。 [sage] 2014/06/12(木) 20:14:34.35 ID:+ww++sAc(1) AAS
あと100レスと言わず一生ROMってればいいのに
そうすりゃスレも荒れずに済む
313: 131 [sage] 2014/06/12(木) 22:17:28.55 ID:kfJUEFGs(3/3) AAS
まってください。静岡県民が多いのは、俺が周囲から基地外呼ばわり
されてるのと、症状のせいだと思いますよ。
それと、自演と決めつるのはまだ早いです。なぜなら、
専門用語を知らない人間が自分を弁護できると思いますか?
そして、恐らくその症状のせいで、うざったく思うから
このスレで叩かれているのだと思います
これで最後にします。100レス待ちます
314: 名前は開発中のものです。 [sage] 2014/06/13(金) 06:24:29.34 ID:6Pgo1qVH(1) AAS
いいから>>307が終わるまで書きこみを控えてくれ・・
315(1): 名前は開発中のものです。 [sage] 2014/06/13(金) 16:40:28.64 ID:vJRDBdqC(1) AAS
スレ違いかもしれないけど、ディスクカードをromに焼くことができる?
316(1): 名前は開発中のものです。 [sage] 2014/06/13(金) 19:00:31.08 ID:KxCbS2Qo(1/4) AAS
>>315
何のソフトかにもよるが原則不可能と思っていいだろう
マッパー0相当のソフトだってアドレスの手直しが要る分相当な作業量になる
317: 名前は開発中のものです。 [sage] 2014/06/13(金) 20:43:27.55 ID:CSwUA4nC(1) AAS
>>316
機械語レベルの理解力があれば、できる?
318(1): 名前は開発中のものです。 [sage] 2014/06/13(金) 21:03:18.07 ID:KxCbS2Qo(2/4) AAS
理解力と相当な根気が要るだろうな
絶対アドレス参照の命令で$6000以降参照のものをすべて書き換えなきゃいけないのだから
319: 名前は開発中のものです。 [sage] 2014/06/13(金) 21:17:05.99 ID:r1M/KsAU(1) AAS
>>318
ディスクシステムの片面の容量は64Kバイト?64Kビット?
320: 名前は開発中のものです。 [sage] 2014/06/13(金) 21:36:12.04 ID:JJAfyk3S(1) AAS
ディスクシステムの仕組みも理解する必要があるだろう。
上下前次1-新書関写板覧索設栞歴
あと 247 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.012s