ファミコンのプログラム4 (567レス)
1-

277
(1): 2014/06/08(日)20:16 ID:p43hB49G(1/2) AAS
>>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が同梱されていたので捗った。
278
(1): 2014/06/08(日)20:24 ID:p43hB49G(2/2) AAS
NMI使えない、各種メモリやレジスタの初期化していない奴って
ギコ猫の前半章のコピペ&拡張だったんだな
後半章ばかり見てたから原因がわからなかった>>221

言い訳にもならないけどね
他人のソース調べればわかることだから

後半章のソースも問題あり

>>270
指摘されると、「私は〜知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの?
「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」
(レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。

>>273
ゲームによる。
特にCHRがRAMでドラクエ?や?のようにROM容量がきつくて圧縮されたゲームは遅い。
数10フレームかかる。
エミュのパレットをハックしてネームテーブルビュワー見ると展開のスピードを見やすい。

・戦闘画面に移行するとき
  CHRのパターンテーブルがRAMな場合は普通に書き換えるだけで時間がかかる。
  書き換える前にPRG内の画像圧縮を展開するだろうからもっと時間がかかる。
・マップ画面に移行するとき
  マップとマップチップの展開に時間がかかる

市販のゲームは限られたRAMやROMのスペースで展開と転送をこなさなければならず
我々が専用のルーチンで高速転送するのとはわけが違う場合もある

全部ROMで持ってるゲームならもっと速くて10フレーム程度かな
279: 131 2014/06/09(月)18:51 ID:Sx48Gggw(1/5) AAS
>>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
これもありがとうございます。

つづく
280
(1): 131 2014/06/09(月)18:53 ID:Sx48Gggw(2/5) AAS
>>・既に指摘があるように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”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。
281: 131 2014/06/09(月)18:55 ID:Sx48Gggw(3/5) AAS
>>236さんのソースではなく、ネット上に公開されていたソースを使いました。
282: 131 2014/06/09(月)18:57 ID:Sx48Gggw(4/5) AAS
変数に
>>・ 誤 lda APU_REG1_FRQCHG_ON
>>正 lda #APU_REG1_FRQCHG_ON
の違いって何ですか?
283: 2014/06/09(月)20:17 ID:dEpln6L7(1/2) AAS
実機で検証してくれたことに対して
>本当に実機で試したのか知りたいですが
って何気に失礼だよなこいつ
284
(2): 266 2014/06/09(月)20:51 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 というソースを見た他人が呆れる理由

を、自分なりの理解や考えで説明してもらえるかな。
285
(1): 131 2014/06/09(月)21:16 ID:Sx48Gggw(5/5) AAS
言い訳になっちゃうかわかりませんが、できたら明日の朝に書き込みます。
ホント自分は基地外なのと、頭が痛いし熱いのでこのままほおっておくと
風邪をこじらすので、すみませんが、失礼します。

リアルが充実してる人たちがうらやましいです。
286: 266 2014/06/09(月)21:30 ID:oKltYKig(2/2) AAS
>>285
別に急がなくてもいいよ。その代わり自分でちゃんと考えること。
体お大事に。
287
(1): 2014/06/09(月)21:32 ID:fvy3sA+P(1) AAS
頭の悪い高校生なんだから察してやれよ
こいつ高校の名前を自分から暴露するような奴だぞ

しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに
色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ
288
(1): 2014/06/09(月)21:38 ID:dEpln6L7(2/2) AAS
自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは
自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな
近所でネコの惨殺死体がなければいいけど
289: 2014/06/10(火)03:34 ID:OhR24Wq5(1/2) AAS
多くのエミュレータの再現目標は「市販ゲームが動作すること」であって
不完全なプログラムが「実機と同じように動作しない」というレベルでの再現には至っていません
ファミコン程度の規模であっても完全再現するエミュレータはいまだに存在していません

たとえばファミコンでは電源投入時にRAMの内容が不定であり
すべての市販ソフトでは確実に動作させるために必ずRAMを上書き消去するなど、必ずそれを前提とした実装がされています

しかしエミュレータの中には通電直後のRAMの初期値が&amp;H00に設定されているものがあり
初期値が何であれRAM内容を消去するように実装されている市販ゲームは問題なく動作しますが
RAMの初期値が&amp;H00になっているものであるとして組まれた不完全なプログラムだと
そのエミュレータでは動作するが実機では意図した動作をしないという問題に陥ってしまいます

同様ににVBlank期間が実機より長めに設定されているエミュレータも存在しています
VBlank期間が長いことで市販ゲームを動作させることに影響はありませんが
そのエミュレータ固有のVBlank期間を基準として作成された自作プログラムは
実機上だとプログラマの意図通りの動作をしないことになります

このようにエミュレータ上のほぼすべての挙動において、実機ほどシビアではなく動作してしまう方向に緩く設計・再現されているため
実機の挙動を意識せずにエミュレータを基準として作成された自作プログラムの多くは
結果として実機で動かないものになってしまいます
290
(1): 2014/06/10(火)03:38 ID:OhR24Wq5(2/2) AAS
マッパーが電源投入時に選択するバンクですが
通常、実機ではハードワイヤードされている最終バンク以外の選択可能バンクは第1バンクが選択されるケースがほとんどですが
多くのエミュレータはなぜか先頭から順番通り昇順に選択されます
市販プログラムは必ず初期バンクを設定するように実装されているため問題なく動作しますが
バンクの並びをアテにした不完全なプログラムはエミュレータでは動くが実機では動かないというケースが起こります

>>240のプログラムはCHRバンクの初期設定がされていないので
CHRバンクが未設定でも順並びに選択されるようなエミュレータでは問題なく動作しているように見えますが
実機だとスプライト側のバンクがすべてバンク0になっているので、宝石落下時のスプライトがBG用のCHRで表示されてしまっています
291: 2014/06/10(火)05:50 ID:DX+Q254R(1/2) AAS
初期化処理って重要なんだなぁ
292
(1): 131 2014/06/10(火)07:44 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はブラウン管の電子銃が下端から上端に戻る際の割り込み。
293: 2014/06/10(火)08:52 ID:FVxA7Fkb(1) AAS
NMIとVBlの正確なタイミングが分からないんだよな。
同時だと動かない市販タイトルがある。
294: 2014/06/10(火)11:40 ID:CuFktdyJ(1) AAS
10年もこのスレ見ててそのレベル・・・そして技術資料すら理解できない英語力・・・
最早かわいそう過ぎて同情するわ・・・
295: 131 2014/06/10(火)12:27 ID:21YAZMo1(1) AAS
他のパソコンから書き込みです。

なんというか、僕が素直じゃなくてしかも怒りっぽくて
先人の知恵を学ばないという姿勢が悪いと思っています。
低能という言葉がありますが、まさに自分がそうだと思っていますよ。
自他ともに認める低能です。ファミコンのCPUより遅い動作周波数
なので。>>246は撤回します。まことにすみませんでした。

ごめんなさい
296
(1): 131 2014/06/10(火)18:17 ID:rVY6XcCX(2/2) AAS
>>284
2)
VBlankに入った時に必ずNMIの割り込みが訪れるからでしょうか

3)
本来ならばメインループにNMIを使うべきだからでしょうか
VBlankにポーリング?という言葉を初めて知りました。
297: 2014/06/10(火)22:38 ID:iI+cGjJO(1/2) AAS
>>245
ところで
NES Assembler (v3.21, 2005/04/09, Denki Release)
これどこで手に入れたの?
かなりレアなバージョンぽくて見つからない。

 RAMの初期化、スプライトメモリの初期化
以前誰かに指導してるでしょ、あちこちの他人ソースでも示されているし
 スプライトONにしているデモプログラムでスプライトメモリ初期化してないのは論外なんだよ
だからG-NESのスプライトメモリビュワー使えって
 未初期化メモリにアクセスしたら他の言語のコンパイラは警告出すでしょ
逆にファミコンほどの原始的なハードで、なぜ0フィルされると思った?
0フィル傾向が強いエミュだってハードリセット、ソフトリセットで挙動違うわけだしね
298: 2014/06/10(火)23:25 ID:DX+Q254R(2/2) AAS
HuC v3.21付属のやつじゃねえかな
299: 2014/06/10(火)23:48 ID:iI+cGjJO(2/2) AAS
見つけた
300: 2014/06/11(水)00:54 ID:vuASjJOE(1) AAS
1)Vblankは厳密には割り込みそのものではない。語源を考えればわかる。
 あとマスク不可能な割り込みでは説明不足。
2)ファミコンにおいてNMIは必ず訪れるものか。
 もし必ず訪れるのならあんたが今まで書いてきたプログラムはどうなる。
 $0000から命令を実行しまくる羽目になってるだろ。
3)それならばなぜNMIを使うべきか。

全体的に不正解および説明不足そして調査不足、理解や考えも不足。
わからない言葉があったらまず目の前のPCで調べろ。
あと自虐がまるでへそを曲げた子供のようでみっともない。自虐は反省とは違う。
しばらくROMって頭冷やすことをおすすめする。
301
(1): 131 2014/06/11(水)04:31 ID:FDPL1IKA(1) AAS
分かりました。しばらくROMることにします。
ただ、僕は本当に低能ですよ。何しろ、IQが69なんで
(test the nation)
302: 2014/06/11(水)19:10 ID:HuzB/5/t(1/2) AAS
言葉選べない奴ってみっともないなぁ
上級者気取ってふんぞり返って偉そうに他人に説教しとるが相変わらずガキ丸出し
これが一人だけやってるんだから目立つわな

いいかげんさあ、そのチンピラみたいな恥ずかしい態度で人に接するのはおよしなさいよ
303: 2014/06/11(水)19:14 ID:HuzB/5/t(2/2) AAS
まあ、こういう苦言を呈してあげても
前みたいに自分の口汚さを正当化するための言い訳しか言わないで
何が悪いのか理解出来ないまま同じ事を繰り返し続けるんだろうけど

他人に反省促す前に、自分がまず反省して態度改めなよ
304: 2014/06/11(水)20:42 ID:QsOFOWgt(1) AAS
多重人格らしき
”リバーシ君” が湧いてから同時期湧いて来た子たち

”YY-CHRとNESASMが使いづらい君”
”NESASMが難しいからC言語で組もうよ君”
”iNESヘッダや.incbinのことはわからないけど、nesdevの仕様書すべて読んできます君”
能書き”ダブラ君”
三日坊主の”まとめwiki君”
”DPCMの仕様教えて君”
”www.dotup.org大好き君”
スタックぶちこわしてても ”PPU制御レジスタのタイミング等も問題無いはずなのに。 君”
”デバッガ使えません君”

こんな初歩の初歩教えるのが上級者扱いなのか
だから自演て言われてるのに

ゴミみたいな不良動作のプログラムのアップロードに対し
わずか数時間で
”fceuで陽性かくにん よかった”
とレスが付くのも特徴

追い込まれると
〜とは別人だけど、と枕詞をつけて自己弁護
305: 266 2014/06/12(木)01:31 ID:VinxFlKC(1/3) AAS
>>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
306: 2014/06/12(木)01:36 ID:VinxFlKC(2/3) AAS
>>290

指摘ありがとうざいます。
初期化するよう処理に反映します。

#やっぱり実機で確認できる環境欲しいな
1-
あと 261 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.030s