ファミコンのプログラム4 (567レス)
ファミコンのプログラム4 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
217: 名前は開発中のものです。 [sage] 2014/05/11(日) 21:03:39.07 ID:QGu2c1mG 惜しいなあ、技術的にはいいこと書いてるハズなのに口調で台無し 必要もなく刺々しい言葉「しとけよ」「やれ」などを使ったかと思えば 「釣りなの?」「と思う」などと子どもじみた表現が混ざる いい歳こいて言葉を選べないって、それはもう恥ずかしい事だよ 書き込む前にきちんと自分の書いた文章、推敲したするべきだよ 自分も、他人も、傷つけないために http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/217
218: 名前は開発中のものです。 [sage] 2014/05/11(日) 21:45:37.94 ID:hyDhkYCi >>199 □ゲームについて 全体的に良い感じにまとまっていると思いました。 ただ、ミス即ゲームオーバーなので、残機制かライフ制にした方が少し長く遊べて楽しいかなと思います。 あと、果物などのアイテムを出して取ればボーナス点が入るとか。 □プログラムについて BG書き換えについては、VBlankを深く考えていない実装になっているので、ここから立て直すのはきついと思いました。 205さんの指摘のように、PPUに転送するデータを一旦バッファに入れてVBlank中に転送するフレームワークを作って移行する方が早いかと。 VBlank中にPPUに転送できるデータ量は限界があるので、BG書き換えの実装部分はそれを配慮した作りに直さないと駄目ですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/218
219: 名前は開発中のものです。 [sage] 2014/05/11(日) 23:13:04.21 ID:rGvGrR+8 >>217 ゆとりメンタルなやつは2ちゃん見なきゃいいんじゃない? お前らは延々と即値でスプライトのバッファ初期化して、 100レス前も読めずNMI使えず$2002のポーリングでループ作ってるアホと同類だろ?w 何度同じこと言われても改善しようとしないやつw 前スレの>>700あたりから湧いてる 画面カクついてる時点で釣りかと思ったし 全部のシーンを厳密に検証する気はないから「思う」と書いただけでね こういう書き込みも増えたね >〜エミュで動作しました、バグってました そりゃ画面がカクついていたり、 ソフトリセット、ハードリセット時に挙動が乱れたりするのは誰が見てもバグだよな >>218 つくりはじめたばかりのやつが、まとまってるのか? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/219
220: 199 [sage] 2014/05/11(日) 23:30:36.97 ID:Mnx9Nf8g 皆さんご親切に本当に有難うございます.実際にプログラミングしながら勉強することで, たくさん吸収出来てます!! >>212 親切にソースチェック&修正案ありがとうございます. こういう方が即レスくれるのも,さすがこのスレという感じです. プログラムは,何も考えずに,ここまでとりあえずという感じなので, 皆さんから頂いた意見と,わかったことを入れて,プログラムし直したいとおもいます. >>218 PPUへのアクセスに時間がかかるし,BG描画後にVRAM周りにアクセスするとヤバイ っていうことを知らずに実装していった結果が今のプログラムです. ご指摘のように,バッファに用意→転送にすることと, VBlankの時間を考慮した 実装にしたいです. ソース公開は恥ずかしかったですが,頑張って出して良かったです! 想定よりも,皆さんからレスを頂けて嬉しいです.頑張ります! http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/220
221: 名前は開発中のものです。 [sage] 2014/05/12(月) 00:09:07.80 ID:jaOM61/S >NMI使えず$2002のポーリングでループ作ってる 初心者でこれやらかす奴はたぶん某サイトの影響受けてるだろ あそこは全体的に説明が不足しすぎてるよ 更新も長いこと止まってるし、当てにするのはやめたほうがいい Nesdevの日本語資料理解するだけでもだいぶ変わるし 他にも今ではNES関連資料のサイトなんていっぱいある 特にI/Oレジスタについてはサイトによって書いてあること違ったりするから 一つのサイトに拘らず色々見るといい http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/221
222: 名前は開発中のものです。 [sage] 2014/05/12(月) 00:13:00.90 ID:p9javgur >>220 BG描画後にVRAMアクセスがNGではなくて、 非VBlank中にVRAMアクセスするのがNGなんです。(画面が乱れる) 短いVBlank中にVRAMを書き換えるために、バッファにデータを溜め込んでおいて、 VBlank(NMI)割り込みに入ったらすぐにバッファのデータを転送しろってことです。 あと、もちろんですが、スプライトのDMA転送もVBlank中に行わなければなりません。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/222
223: 名前は開発中のものです。 [sage] 2014/05/12(月) 08:39:01.88 ID:Wk7QwTB6 >>199 みたいな、打たれてもへこたれないヤツは2ch向きだね。ガンバレ! >>217 の意見には同意だけど、そういうヤツもいるのが2chの味なのかなぁ 自分に対して >>213 みたいな反応されたときは、頭来たけどなw 修行が足りない http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/223
224: 名前は開発中のものです。 [sage] 2014/05/12(月) 08:40:54.97 ID:Wk7QwTB6 失礼、>>213 は >>212 の間違いでした。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/224
225: 名前は開発中のものです。 [] 2014/05/12(月) 10:39:31.18 ID:cuBtqyJP 当時のRAMはデュアルポートではないから読んでいる最中に書き込みはできない 単純な構造だよね? で、画面を描画している最中は(BGもOBJも)データをVRAMから読み出している真っ最中だから そこで無理やりデータを書き込むと、今まで画面描画時に参照していたVRAMのアドレスが置き換えられてしまうため 元の描画処理を継続することができなくなり画面の表示が破綻してしまう 表示周りをいじる際VBlank期間中にアクセスしなければならないのはこういう理由 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/225
226: 名前は開発中のものです。 [sage] 2014/05/12(月) 22:05:47.81 ID:jsal4ZTv キラキラスターナイトのソースを読んでみたい。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/226
227: 名前は開発中のものです。 [sage] 2014/05/13(火) 05:06:48.28 ID:9EaC9IEc 遊び方にパテントはないわけでして http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/227
228: 名前は開発中のものです。 [sage] 2014/05/13(火) 06:22:09.58 ID:T2v6EbAW >>226 絵は卓越しているけど プログラムは大して高度なことはやってないでしょ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/228
229: 名前は開発中のものです。 [] 2014/05/13(火) 19:16:50.69 ID:srI4FW40 RIKIがパソファミの安藤に媚び売っててワロタ ロジックボム組み込んだりする基地外なのを知らんのか近頃のもんは http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/229
230: 名前は開発中のものです。 [sage] 2014/05/13(火) 20:10:15.51 ID:f3qQ/xjJ パソファミ作者はメールでの対応が最悪レベル 自分の非を認めないどころか人を犯罪者扱いしたりするキ○○イ おまけにホンコンのソース盗用疑惑もあるしな ホントどうしようもねぇよ 素人にはこれしかないから売れるんだろうけど それが余計にたち悪いね http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/230
231: 名前は開発中のものです。 [sage] 2014/05/15(木) 00:00:39.68 ID:HB8Kbvvq >>229 >>ロジックボム そういう噂を聞いたから その後にちょっとだけ調べたけど プリンタポートでないI/Oポートに向けて x86のout命令が発せられてたような、ないような windows98なら簡単に発動するのかな より堅牢なOSであるwindows2000にしてたから 効果なしっぽかったけど 近頃のもんが吸出しやROM焼き実機動作させてるのをよく見かけるようになったけど ソソハメさんの名前がなぜあまり挙がらないか理由をよく認識しておいた方がいい>もっと近頃のもんたちへ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/231
232: 名前は開発中のものです。 [sage] 2014/05/15(木) 03:12:19.39 ID:AXeiaTDm 気持ち悪いのが涌いてきたな http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/232
233: 名前は開発中のものです。 [sage] 2014/05/15(木) 05:14:14.01 ID:gGlXRPO1 すみません、吸出しというのは英語では何というのでしょうか?スペルを教えて下さい http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/233
234: 名前は開発中のものです。 [sage] 2014/05/15(木) 08:42:17.70 ID:9cGRzDB1 dump http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/234
235: 名前は開発中のものです。 [sage] 2014/05/20(火) 00:15:36.83 ID:sHOtKBex >>140 宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす このスレッドで新しい演出ジャンルに出会えたのは嬉しいね >>199 土管避けるの難しいけど楽しいね BGの判定は凄いと思う どんどん成長してゆくのが楽しみ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/235
236: 140 [sage] 2014/05/28(水) 20:00:45.64 ID:pcO3WytB ジョイパッドの読み取りルーチンをリファクタリングしたら結構コンパクトになった。 6502のアセンブラは奥深い。 Joypad_Update: lda #$01 sta $4016 lsr a ; same as lda $00 & sec sta $4016 ror a ; same as lda $80 & clc sta <JOYPAD sta <JOYPAD+1 .1 lda $4016 and #$03 ; clc sbc #0 ror <JOYPAD lda $4017 and #$03 ; clc sbc #0 ror <JOYPAD+1 bcc .1 rts >>235 ありがとうございます。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/236
237: 140 [sage] 2014/05/28(水) 20:07:39.22 ID:pcO3WytB あ、 sta <JOYPAD ror a ; same as lda $80 & clc sta <JOYPAD+1 として、JOYPADには$00入れないと不味いね。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/237
238: 名前は開発中のものです。 [] 2014/05/29(木) 00:32:25.75 ID:Ix+yqrZv >>237 (clcと)sbc #0をcmp #1にすればsta <JOYPADは不要 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/238
239: 140 [sage] 2014/05/29(木) 01:07:17.19 ID:Lo1UVUXb >>238 ああ、確かに。さらに小さくなりました。 ありがとうございます。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/239
240: 名前は開発中のものです。 [sage] 2014/06/04(水) 21:11:42.02 ID:Wpb6i0Ha RevolvingGemsのゲーム本体部分が出来ましたので公開します。 ttp://homepage3.nifty.com/~kyoske/nes/RevolvingGems070.zip 残りはタイトル画面と遊び方画面を実装して終わる予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/240
241: 名前は開発中のものです。 [sage] 2014/06/04(水) 21:35:20.41 ID:EpTIlg4F すげー http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/241
242: 名前は開発中のものです。 [sage] 2014/06/04(水) 23:51:21.70 ID:78Tpkbjc 商用レベルのできだと思う。 気になるのは、連鎖がどんどん発生しやすすぎではないのかなと http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/242
243: 名前は開発中のものです。 [sage] 2014/06/05(木) 01:19:37.09 ID:9NxYghum >>242 連鎖しやすいのは、6方向に対して6種類の駒しかないので 仕様上、確率的につながり易いのが原因です。 駒の種類を増やせれば良いのですが、パレットが足りないw 最初は3個つながったらで実装していたのですが、 あまりにも連鎖が続くので4個にしています。 それでも消せなくなることが無く延々と続けられるので、時間制に逃げました。 作って思ったのは、ぷよぷよの仕様は絶妙なバランスなんだなぁと。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/243
244: 名前は開発中のものです。 [sage] 2014/06/05(木) 23:11:37.79 ID:hfWG3l/O 追加された音楽がスタートで変更できるのは、個人的にうれしいですね! 後、セレクトボタンはどんな効果があるのでしょうか?(効果音だけ?) http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/244
245: 131 [sage] 2014/06/06(金) 19:17:42.85 ID:5n3Zcu9W 131です。あの後、 いろいろ注意深く書き込みを見ていたのですが 人に意見されるってすごく大事だと思いました。 ちなみに、cc65でオセロとShootingGameSampleを作ったのと、 nesasmでブロック崩しを作ったのも 自分です。 今までは自分はチキンで人に意見言われるだけで、 むっつりと黙っていましたが、これからは もっと能動的に動きたいです。 ファミコンのブロック崩しをソース付きで晒すので 汚いし、ロジック的におかしいところばかりですが、 見てやってください。 僕はカービィやマリオ、くにおくんのファミコン少年の一人の つもりなのでファミコンは、ホント好きですし、このスレッド を最初から見ています http://www1.axfc.net/u/3252687.zip http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/245
246: 131 [sage] 2014/06/06(金) 21:24:59.35 ID:5n3Zcu9W こんな事書き込みたくて書き込むわけじゃないですけど、 ファミコンの正常動作って何ですか? どうすれば正常動作っていうんですか? いつまにか、このスレッドは本物のROMと同じように動かす為に努力してる 人たちを称え、褒めてきました。 正常動作って定義がどこにあるかはファミコンで動作すれば分かるんじゃないですかね。 それ以外を異常動作というなら、エミュレータはほぼ全て異常動作ですよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/246
247: 名前は開発中のものです。 [sage] 2014/06/06(金) 22:02:30.07 ID:4Zl9JWw3 >>243 始まった瞬間操作する前に勝手に連鎖するってのだけでも どうにかならないかな 初期配置のみパターンで持つとか http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/247
248: 名前は開発中のものです。 [sage] 2014/06/06(金) 22:51:57.22 ID:kdjIsC0c >>246 そうですよエミュは異常動作ですよ 実機で動かないのを言い訳してるだけにしか聞こえませんね http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/248
249: 131 [sage] 2014/06/07(土) 03:42:43.36 ID:hwRmu2MG 本当に実機で試したのか知りたいですが、 自分の言いたい事は実機で動かない事の言い訳じゃなくて、 ファミコンのプログラミングが1つの古代技術でそれが通用するのはあくまでファミコンのみ という事なんですが**が素晴らしいとか**の技術は優れているとかのある意味 マニアックな話の流れになっているというか、 ぶっちゃけ、自分の作ったファミコンゲームは技術的には全然優れてないので、 優れた技術を持った人たちに憧れたみたいなところがあります。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/249
250: 131 [sage] 2014/06/07(土) 03:52:27.88 ID:hwRmu2MG **には、ラスタースクロールやスプライトダブラー、 FFの高速スクロール、BGの高速書き換え、パレットアニメーション を入れてください。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/250
251: 131 [sage] 2014/06/07(土) 09:33:01.78 ID:hwRmu2MG cc65の作ったやつは(REVERSI,SHOOTING GAME SAMPLE)動く自信がないですが、 nesasmで作ったやつも(IWA WO OTOSE,BLOCK)動かないんですかね。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/251
252: 名前は開発中のものです。 [sage] 2014/06/07(土) 10:52:19.34 ID:0OqTmEOh >>244 スタートとセレクトは、サウンド系の開発用にテストできるように追加していた機能で 今回スタートを少し改良して選曲出来るようにしました。 セレクトは、効果音を作る時以外は意味を成さないので、次の完成版では削除する予定です。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/252
253: 名前は開発中のものです。 [sage] 2014/06/07(土) 11:09:37.37 ID:0OqTmEOh >>247 初期配置をパターンで持つのは、バリエーションを作るのが大変なので、 採択したくないですね。 代わりに内部で連鎖が止まるまで処理を繰り返して、 そこからゲーム開始するよう実装してみます。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/253
254: 名前は開発中のものです。 [sage] 2014/06/07(土) 11:18:00.96 ID:0OqTmEOh >>249 私も最終目標は実機で動作させてみることなのですが、 そこまでの道が遠い状態です。 一応、動作させるための目処は立っていて、材料とかもそろえたのですが ROMライターから自作せねばならないため、いつになるかわかりません。 実機で動作したのを確認して初めて、ファミコンのプログラムを作ったと、 胸張って言えるかと個人的には思っています。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/254
255: 131 [sage] 2014/06/07(土) 14:24:42.36 ID:HAL7UNXv >>254 ネットカフェから書き込みです。 そうですね。ファミコンの実機で動いたら感動しますし、 実機で動かしたいです。 ファミコンの実機は持っているのですが、ROMライターや EEPROM、同軸ケーブル、ビデオデッキ、自分用のテレビ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/255
256: 131 [sage] 2014/06/07(土) 14:27:25.94 ID:HAL7UNXv など問題が山積しているので、現段階では難しいです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/256
257: 名前は開発中のものです。 [sage] 2014/06/07(土) 15:48:51.46 ID:0OqTmEOh >>245 一通り読んでみました。 .bank 0 ; バンク0 .org $0300 ; $0300から開始、スプライトDMAデータ配置 Paddle00_Y: .db 0 ; スプライト#1 Y座標 Paddle00_T: .db 0 ; スプライト#1 ナンバー WRAM領域の$0300にデータ定義の記述があるが、 ビルド出来ているのであろうが、記述としてはまぎわらしいので Paddle00_Y = $0300 Paddle00_T = $0301 と記述した方が良い .memclearloop sta [$00],y iny cpy #255 bne .memclearloop 254までしかループしていない。cpy #255が不要 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/257
258: 名前は開発中のものです。 [sage] 2014/06/07(土) 15:49:29.84 ID:0OqTmEOh >>257 続き VBlank直後に行うべき処理と、ゲーム本体の処理を分離したほうが良い。 パッドとボールの座標と、スプライトの座標は別に持っておき、 パッドとボールの座標をスプライトデータに反映するにように 実装した方が、プログラムの書き方としては綺麗だと思う。 VBlankのタイミングを考えずに、スプライトとBGの表示をOFF/ONにして VRAMを書き換えるのはやめた方が良いと思う。 nestopiaとかでも普通に表示できていたけど、書き換え量が多くなると 画面がちらつくのでは? jsr Pad_Check ソース上に Pad_Check が見つからない。 lda #0 ;これはROMなので出来ないので、こうする sta STAGE1,x ;〃 ROMに0を書き込む意図がわからない。 VRAM書き込み先のアドレスをブロックの座標から 計算しているが、ブロックの配置位置が有限個であれば 表引きで求める方法もある。 (Y座標だけでも表引きにすると処理が結構簡素化します) http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/258
259: 131 [sage] 2014/06/07(土) 17:02:04.46 ID:hwRmu2MG ギコ猫さんのところで、覚えた技術ばかりという理由は 英語が出来ないという理由なのですが、これは理由になってないみたいですね。 ?英語が出来ない ↓ ?英語の技術情報が分からない ↓ ?日本語だけの技術情報に頼る の無限ループなので、英語を中学英語から やり直したいと思います。 ちょうど良い本がアマゾンで見つかったので ttp://www.amazon.co.jp/%E4%B8%AD%E5%AD%A6%E3%83%BB%E9%AB%98%E6%A0%A16%E5%B9%B4%E5%88%86%E3%81%AE%E8%8B%B1%E8%AA%9E%E3%82%92%E7%B7%8F%E5%BE%A9%E7%BF%92%E3%81%99%E3%82%8B-CD%E4%BB%98-CD-BOOK-%E5%B9%B3%E5%B1%B1/dp/4860641663 あと、スプライトの定義のその定義の仕方は知らなかったです。 でも、ある意味スプライトDMAのアドレスを考えれば当たり前なんでしょうけど。 iny cpy bneの間違いは、間違えて覚えていました。 ギコ猫さんとこはパレットの読み込み時に ldx #0 .loop lda ourpal,x sta $2007 inx cpx #32 bne .loop みたいにやっていたのですがよく考えれば、0-31までを読み込んでいたんですね。 これは、引き算の小学一年レベルの間違えですね。差がNの時、合計数は、N+1になるという事なんでしょう。 つづく http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/259
260: 131 [sage] 2014/06/07(土) 17:29:43.93 ID:hwRmu2MG >>257-258 VBlankとゲーム本体処理を分離ということはNMIを使うって事ですね。他の方も言ってましたが スプライトと実際の座標を別に持つというのは、以前やったことがあるのですが、クソ汚いソースになってしまいましたが、少しだけわかってきた気がします。こんな感じですかね。 >>261に書きます。 VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。 Pad_Checkは、他の方が作られたソースなので、あえて外しました。ROMに0を書き込んだ意図は、恐らくないです。気づかないまま放置してしまいました。 ブロックの配置位置が有限個ならテーブル化できるんですか?今度やってみます。 アドバイスありがとうございます!!ホント助かりました。知らなかった事や理解出来なかった事が分かってよかったです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/260
261: 131 [sage] 2014/06/07(土) 17:30:36.51 ID:hwRmu2MG .org $300 ;データ定義 Sprite: Sp00_Y: $0300 Sp00_T: $0301 Sp00_S: $0302 Sp00_X: $0303 01_Y: $0304 01_T: $0305 01_S: $0306 01_X: $0307 ... ldx #0 .SetObjAxis2RealAxis ;スプライト座標を実際の座標に代入する lda Sprite+0,x sta Real_Y,x lda Sprite+3,x sta Real_X,x inx inx inx inx cpx #(4*4) ;4つのスプライトを代入する bne .SetObjAxis2RealAxis http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/261
262: 131 [sage] 2014/06/07(土) 17:32:41.18 ID:hwRmu2MG 間違えました。 .org $300 ;データ定義 Sprite: Sp00_Y= $0300 Sp00_T= $0301 Sp00_S= $0302 Sp00_X= $0303 01_Y= $0304 01_T= $0305 01_S= $0306 01_X= $0307 ... ldx #0 .SetObjAxis2RealAxis ;スプライト座標を実際の座標に代入する lda Sprite+0,x sta Real_Y,x lda Sprite+3,x sta Real_X,x inx inx inx inx cpx #(4*4) ;4つのスプライトを代入する bne .SetObjAxis2RealAxis http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/262
263: 名前は開発中のものです。 [sage] 2014/06/07(土) 17:38:24.41 ID:YYdbZPoT 英検三級、即ち中学卒業程度の英語力とgoogle翻訳があれば十分。 海外サイトの情報も何も全部理解する必要はないし、図、表、技術用語さえわかれば殆ど問題ない。 それに今では日本語資料も充実していると思うし、あえてギコ猫のところだけを参考にすることもないだろう。 初心者のうちは他人が作ったソースを見てよく理解し、そこからいろいろ学ぶのもいいだろう。 公開されているソースによっては丁寧に説明が細かく書いてあるものもある。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/263
264: 131 [sage] 2014/06/07(土) 18:21:24.08 ID:hwRmu2MG >>263 英検3級は持ってますが、かなり文法が怪しいです。単語に関しては最も初期の「萌えたん」を P-StudySystemを自作問題集を作って覚えた程度です。 1つ1つの単語が読めても何を言いたいのかわからないので、今持っているくもん中学英文法 という本をゆっくりと確実にやる事にします。 初心者というにも、初めてから時間がかかり過ぎてる面はあるのですが、 恐らく他の方の作ったソースを断片的にしか分かっていないというのはあると思います。 google翻訳に関しては、使うブラウザがchromeなので、標準で使えます。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/264
265: 名前は開発中のものです。 [sage] 2014/06/07(土) 19:18:59.23 ID:2SsDMldn >>252 セレクトは効果音テストだったのね。疑問解消しました ソフトの完成楽しみにしてます http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/265
266: 名前は開発中のものです。 [sage] 2014/06/08(日) 02:10:46.27 ID:CkZRo6BG >>260 > VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。 VBlankの意味を理解していない節があるので、まずは、ブラウン管の話からします。 機知の情報かも知れませんが聞いてください。 ブラウン管の裏から電子銃で電子を飛ばし、ブラウン管表の蛍光面を発光します。 真っ直ぐ飛ばしただけでは、ただの点なので、磁界をかけて電子が飛ぶ方向を変えて 左上から右へ水平方向に線を書くように発光させ、再び左端に戻ってさっきより ちょっと下の位置で同じように水平方向の線を発光させます。 これを画面下まで繰り返して、再び左上に戻ります。 これをすばやく繰り返すことで、ブラウン管の蛍光面全体に画像を表示します。(ラスタスキャン方式) 電子の飛ばし先が右端から左端に戻る期間を水平帰線消去期間(HBlank期間)、 下端から上端に戻る期間を垂直帰線消去期間(VBlank期間)と呼びます。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/266
267: 名前は開発中のものです。 [sage] 2014/06/08(日) 02:12:41.17 ID:CkZRo6BG >>266 続き VBlank期間は、一瞬で戻るのではなく、NTSC(日本のアナログ放送の信号規格)の場合 20本分の横線を描くぐらいの時間があります。この間、電子銃から電子は飛びません。 非VBlank期間は、ファミコンのPPUは画像の信号を作るため、 CHR-ROMからパターンを読み込んだり、VRAMからネームテーブルや 属性情報を読み込んでいて、PPUの信号線(PPUバス)を占有しています。 VBlank期間は、PPUが画像の信号を作らないので、PPUバスは開放されており CPUはPPUを介してPPUバスにつながっているVRAMにアクセスできます。 「VBlank待ちの直後にVRAMの書き換えを行え」というのは、PPUが映像信号を 作るのに邪魔にならないタイミングでVRAMにアクセスしなさいということです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/267
268: 名前は開発中のものです。 [sage] 2014/06/08(日) 02:53:09.19 ID:CkZRo6BG >>267 続き 非VBlank期間中にCPUがVRAMにアクセスできる方法があります。 PPUレジスタ $2001 のbit3とbit4を0にして、BGとスプライトを非表示にすることです。 画像の信号を作るためのPPUのCHR-ROMやVRAMへのアクセスが止まるので PPUバスが開放され、CPUはPPUを介してVRAMにアクセスできます。 代わりに、画面に何も表示されない箇所が現れることになります。 BGとスプライトを非表示にするタイミングにばらつきがあると、 画面がちらつく現象となります。 > VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。 ファミコンの設計による制限であるため、仕様と言えば、その通りです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/268
269: 名前は開発中のものです。 [sage] 2014/06/08(日) 02:54:30.27 ID:CkZRo6BG >>268 続き 同世代の他のパソコンとかでは、表示中にもCPUからVRAMにアクセスできるものが あるのに、ファミコンで出来ないのはなぜ? →画面表示用の信号線とCPUからVRAMにアクセスする信号線が別になっているためです。 VRAMもデュアルポートメモリという、アクセスの口が2つある特別なRAMを使っています。 ファミコンのWRAMやVRAMに使われているのは、アクセスの口が1つのシングルポートメモリです。 →信号線も増えるため、基板上の配線が複雑化し、基板のサイズや層が増えてコスト増になる可能性があります。 ファミコンのVRAMにデュアルポートメモリを使わなかったのはなぜ? →コスト削減のためです。 一般的にアクセスポートが余分にあるデュアルポートメモリの方がシングルポートメモリより部品代が高くなります。 また、WRAMとVRAMに同じ部品を使うことで、大量に発注し部品メーカーに単価の引き下げを交渉できます。 とりあえず、わかりやすく説明したつもりですが、間違いなどがありましたら フォローお願いします。>All http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/269
270: 131 [sage] 2014/06/08(日) 06:24:49.26 ID:RIyNgnKh >>266 VBlankに関しては、「ファミコンの驚くべき発想力」という本の78ページ前後に 記述がありました。が、>>266さんの説明の方がより詳しく説明しているように 見えます。 HBlank期間のHはホライゾン?(水平)の略でしょうね。VBlankのVは、バーチカル(垂直) の略な気がします。 NTSCとPALの違いも知らなかったのですが、日本は、NTSCだったんですね。 VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由が あったんですか。 非VBlank期間中にCPUがVRAMにアクセスできる方法、これは知っていましたが、 欠点は知りませんでした。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/270
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
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
308: 名前は開発中のものです。 [sage] 2014/06/12(木) 06:23:30.12 ID:WH6q4E6P なんでこいつが仕切っとるの? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/308
309: 131 [sage] 2014/06/12(木) 16:17:30.84 ID:kfJUEFGs 書き込みたい気持ちはありますが、大分経って事態が鎮静化 してから書き込みたいです。あと、少なくとも今から 100レス程度は様子を見ながら、今から同時にお題を解いてみます。 というのも技術的な指導ならゲーム開発技術板のスレッドなので分かります。 しかし、自分の未熟な部分があるのは自分でも分かるのですが、 明らかに何度も自分の人格を否定していてスレ違いになってるのもあります。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/309
310: 131 [sage] 2014/06/12(木) 16:19:26.08 ID:kfJUEFGs それがどうした?悪いのはお前だろと言われればそうなのですが これが何度も続くようなら、明らかにいじめとしか思えないのです。 いじめと思うのは間違っていると思うのなら、どうして簡単に何度も いろんな欠点や粗を探してこうも傷つけたがるのですか? あと、自演と言っている人へ、 自演をしているように見えるのは、明らかにおかしいですね。 IPアドレスを2chの運営元に頼んでもらって調べれば分かる とは思います。IPアドレスが分かるという事は、書き込んだ場所も 特定されます。 ファミコンのプログラムを公開する書き込んでから家から出かけて 帰ってきてから同じパソコンで書き込んだ事くらい見抜けると思うのですが。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/310
311: 名前は開発中のものです。 [sage] 2014/06/12(木) 19:04:44.04 ID:W0ti7vxN それにしてもやけに静岡県民が多いな 自演に間違いないな不自然すぎるわ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/311
312: 名前は開発中のものです。 [sage] 2014/06/12(木) 20:14:34.35 ID:+ww++sAc あと100レスと言わず一生ROMってればいいのに そうすりゃスレも荒れずに済む http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/312
313: 131 [sage] 2014/06/12(木) 22:17:28.55 ID:kfJUEFGs まってください。静岡県民が多いのは、俺が周囲から基地外呼ばわり されてるのと、症状のせいだと思いますよ。 それと、自演と決めつるのはまだ早いです。なぜなら、 専門用語を知らない人間が自分を弁護できると思いますか? そして、恐らくその症状のせいで、うざったく思うから このスレで叩かれているのだと思います これで最後にします。100レス待ちます http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/313
314: 名前は開発中のものです。 [sage] 2014/06/13(金) 06:24:29.34 ID:6Pgo1qVH いいから>>307が終わるまで書きこみを控えてくれ・・ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/314
315: 名前は開発中のものです。 [sage] 2014/06/13(金) 16:40:28.64 ID:vJRDBdqC スレ違いかもしれないけど、ディスクカードをromに焼くことができる? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/315
316: 名前は開発中のものです。 [sage] 2014/06/13(金) 19:00:31.08 ID:KxCbS2Qo >>315 何のソフトかにもよるが原則不可能と思っていいだろう マッパー0相当のソフトだってアドレスの手直しが要る分相当な作業量になる http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/316
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 251 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s