ファミコンのプログラム4 (567レス)
ファミコンのプログラム4 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 298 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s