- 1 名前:名前は開発中のものです。 mailto:sage [2012/07/29(日) 14:19:03.64 ID:a5QeqSA0.net]
- ■過去スレ
ファミコンのプログラム pc8.2ch.net/test/read.cgi/gamedev/1013696305/ ファミコンのプログラム2 pc11.2ch.net/test/read.cgi/gamedev/1135099156/ ファミコンのプログラム3 toro.2ch.net/test/read.cgi/gamedev/1214210285/ ■関連サイト MagicKit Homepage www.magicengine.com/mkit/ すずめ愛好会 web.archive.org/web/*/http://vsync.org/ns/index.html ギコ猫でもわかるファミコンプログラミング gikofami.fc2web.com/ わいわいの巣 www.geocities.jp/yy_6502/ mck hogehoge takamatsu.cool.ne.jp/dutycycle/ NES info, programs, and demos nesdev.parodius.com/ pgate1@crystal crystal.freespace.jp/pgate1/ cc65 @ wiki www34.atwiki.jp/cc65/
- 188 名前:名前は開発中のものです。 mailto:sage [2014/04/23(水) 17:56:22.78 ID:eYt0ULQB.net]
- >>185 >>186
なるほど、、、 まだ理解してないけど、このあたり読めばわかる気がしてきた。ありがと しかし、PPUのアドレスレジスタの兼用さえなければ、レンダリング中に読み書きできて BGアニメーションとかもっと便利だったろうにって思ってたけど、 Ntsc_timing.png みるかぎり、ひっきりなしにアクセスしてるんだね・・・ とするとメモリポートが2つないとだめだから、結局は無理だったのか。 >>187 了解。 sei/cliさえしなければ最大6クロックだから、6*3=18dot(nopにくらべて12dot大きく) ずれるのが許容できればおkってことね。 許容できるのか、計算するのが大変だけど(xx
- 189 名前:名前は開発中のものです。 mailto:sage [2014/04/23(水) 20:09:45.06 ID:yop1NMPn.net]
- この現象で分った事。
パレットの04 08 0Cは00とは別の値を格納できるが、実用上何も使われていないと言う事(合ってるよね?)。
- 190 名前:名前は開発中のものです。 mailto:sage [2014/04/23(水) 21:35:50.97 ID:bXRTGLw+.net]
- ↑あってるっぽい
ただしスプライトの四の倍数とは共有か void _fastcall Write7 (int Val) { if ((VRAMAddr & 0x3F00) == 0x3F00) { register unsigned char Addr = (unsigned char)VRAMAddr & 0x1F; Val = Val & 0x3F; Palette[Addr] = (unsigned char)Val; if (!(Addr & 0x3)) Palette[Addr ^ 0x10] = (unsigned char)Val;
- 191 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 07:57:06.72 ID:RDg08ToE.net]
- 流れぶったぎるようで申し訳ないけど、デバッガ機能が一番使いやすいNESエミュはどれですか?
- 192 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 10:17:47.73 ID:TazbtZqQ.net]
- >>191
FCEUXがおすすめ。 (読/書/実行)ブレークポイント、スキャンラインごとのVRAM内容表示、RAMウォッチ あたりの機能をよく使ってる。
- 193 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 11:46:44.27 ID:RDg08ToE.net]
- ありがとう
- 194 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 21:06:44.07 ID:Ozv2HHx1.net]
- ブレークポイントの使いやすさは
G-NESじゃないか よっぽどトリッキーなコーディングしないならこれで十分 G-NES は使いやすい、指定行まで実行がStepOverを兼ねる FCEUX はログ機能が最強、シンボル機能搭載、エミュ精度も結構よい Nintendulator はデバッガ付きではエミュの精度が最強かな、使いにくい
- 195 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 23:37:48.91 ID:d8WjRMEc.net]
- >>190
そう、スプライトと共通(04=14、…) 僕は実機で確認したけど、nendoかnestopiaと同じなら間違いないだろうな。 古いネット上のドキュメントとか間違ってたりするから100%鵜呑みにしない方がいいよ(エミュのソースも)。
- 196 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 00:53:39.01 ID:ffWieyHe.net]
- G-NESは使ってなかったから、ちょっと触ってみた。
デバッガは、FCEUXとG-NESほぼ同等やね。 ちょっとわかりにくいけど、アドレスクリックして"Seek To"で指定行まで実行もできるし。 (この機能が超欲しかったけど、いま探すまでアドレスクリックで指定できるの気付かなかったw) しかし、FECUXのシンボル情報って吐き出してくれるコンパイラあるのかな・・・ 使えれば便利そうなんだけど。
- 197 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 18:53:04.15 ID:ShrxaRho.net]
- マッパー0のカセットを何本か作りたいんですが
既存のソフトのHVC-NROM-256K-02基板からICを外すのが面倒なので プリント基板だけを通販しているところとかないですかね? もしくは,CADデータとか.
- 198 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 19:06:34.44 ID:ShrxaRho.net]
- ちなみに作りたいカセットとはこれです.
この1週間ちょっと頑張ってインプリしてました. アセンブラなんか普段いじらないので,めちゃくちゃです. でも,このスレはちょくちょく見てるので,恩返しに公開します. ttp://sayonari.com/famicom/FamilyBird.zip 綺麗に書き直したかったですが,しばらくいじれそうにないので, 皆さんに託します. FCEUXではちゃんと動くんですが,ROMに焼いて, FC互換機(GCC NEXT)で動かすと, スプライトがチラチラと画面中に散らばって表示されます. メモリ管理とかちゃんとしてないし,変なところに書き込んだり, PPUアクセスのタイミングがむちゃくちゃだったりとかが原因だと思います. 互換機じゃなくて正規版本体ならちゃんとうごくのかな・・.
- 199 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 19:40:22.36 ID:WvHa+XO0.net]
- そこまでやって正規版FCを持っていないというのが謎過ぎる
高いわけじゃないんだから普通に買えばいいのに
- 200 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 20:09:58.52 ID:vMtYsoKB.net]
- >>198
スプライトDMAの前に$2003に$00入れるといいかも
- 201 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 20:52:41.78 ID:ShrxaRho.net]
- >>200
すごい!かなり軽減されました.しかしまだチラチラがあります. しかしさすがのアドバイスありがとうございます.勉強になります.
- 202 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 21:59:03.95 ID:2fP2DbGG.net]
- なんで土管に触っただけで死ぬんだ
こんなクソゲー久しぶりに見たわ
- 203 名前:名前は開発中のものです。 mailto:sage [2014/05/10(土) 23:12:04.05 ID:ShrxaRho.net]
- >>199
ファミコン本体は実家にはいっぱいあるんですが,今の家にはなくて, 急遽必要になったので,とりあえず,ヤフオクで互換機を送料込み900円で落札しました. その後,今もですが,正規版ファミコンをどれにしようかと,ヤフオクでキョロキョロしてます. 互換機は今日届きました >>202 これは,FlappyBirdっていう人気アプリのオマージュですが,それも土管で即死です ROMライターのLEAPER-3Cのドライバが64bitWin7では動かなかったので焦りましたが, VirtualPC上のXPmodeというやつで,そのOSからLEAPER-3Cが使えたので 良かったです(´ρ`)
- 204 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 01:44:45.44 ID:HiLhu8FK.net]
- 非VBlanc期間がループで一切の処理をしていないからDMA転送がVblank内に収まってないんじゃないかね
通常は非VBlank期間にキー入力だのスプライトのデータ準備だのデータを用意しておいて Vblank期間は描画処理だけを行うようにする
- 205 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 02:54:20.00 ID:Mnx9Nf8g.net]
- >>204
ありがとうございます! チャレンジしてみましたが,上手く実装できませんでした(´ρ`) どの処理をどこでやればよいか・・・. もう時間的に頭が働いていないのかも.とりあえず寝ます.
- 206 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 04:04:19.91 ID:YECX6XhP.net]
- >>198
なかなか、ファミコンらしい可愛いグラフィックやね。 nesdevでflappy bird作った奴いないの?みたいなスレがあったから、貼るのもおもしろいかも forums.nesdev.com/viewtopic.php?f=2&t=11103 ちなみに、Nestopiaでもバグってるっぽいので実機の前にこっちでデバッグしたら楽かもしれない。 残念なことにデバッグ機能はほとんどないけど・・・
- 207 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 04:53:13.07 ID:Mnx9Nf8g.net]
- >>206
nestopia情報ありがとうございます! 試してみましたが,パレットがおかしくなるバグはありますが, 実機互換機で起こるチラチラ飛び散りバグは出ません. 正規本体でもでないかな.正規本体早く買おうかな. nesdevにも凸したいと思います(〃゜ω゜〃)
- 208 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 08:18:39.15 ID:IEErYv9U.net]
- >>207
最初のロゴでスプライトのゴミが出るのはメモリの初期化をして いないからだと思う パレットがおかしいとかスクロールがぶれるとかそういうのは恐らく 表示期間中にPPUに書き込みしてるんじゃないかな
- 209 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 08:23:06.60 ID:dYyMlr6C.net]
- fceuだとチラツキは見えない
- 210 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 09:26:06.10 ID:owqALoBe.net]
- 時々音がおかしくなる。
- 211 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 14:28:37.07 ID:rGvGrR+8.net]
- >>198
タイミングめちゃくちゃ&画面ゴミ&遷移時ちらつき&各PPU系メモリ初期化すらできない こういった初心者はG-NESだけ使ってればいい そもそも仕組みをちゃんと理解していればこういった不具合を起こすことはない 最近うpる人っていつもこういう傾向だけど、わざと間違えてレス貰う釣りなの? 見た目綺麗だけど不器用で挙動めちゃくちゃなソースの人多いね、BGオンする前にVBlank待たずにチラつかせたりとか 最低限NESTECJ.TXTかndox200.zip理解しとけよ ・スプライトメモリの初期化をしていない、Y座標(0xef <= y <=0xff)とするとスプライトはオフになる、Reset:とシーン#1入り口等でやれ ・NMI直後にJSR PadGetやる暇はない、まずSPRDMA。プログラムのあちこちにSPRDMAがばら撒かれているのはおかしい ・シーンチェンジのVRAM初期化から離脱するときに、VBlankを逃してVRAMに書き込んでる ・あなたは当分.macroは使用禁止、これは上級者向け ・シーン#1の初期化でPPU $23be-$23bfへ書き込めていない ・シーンチェンジの瞬間に下記と同じ理由でカクついていると思う シーン#0の初期化の際 inc <BGUPDATED .g2 jmp EndBG もうこの時点で123ライン程度経過している、つまりブラウン管のど真ん中描画中に こんなことをやっている sta VRAMADDR これはゴミがでるね sta SCROLL カクつくね lda #%00011110 ; スプライトとBGの表示をONにする sta PPUCTL1 カクつくね この次の箇所へ提案… パッドはここにおけばいいはず 各〜_playはたぶんここでいい snddrv_playはここでいい rti 各シーン初期化最後の inc <BGUPDATED 直後にNMIオンにして大胆にrtiしちゃえばすこしマシになるかな 根本解決にはならないけど
- 212 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 14:29:39.56 ID:rGvGrR+8.net]
- >>197
もう構造的に破綻しているけど この先スクロールゲームにするなら 今の構造のままだともっと破綻する 理想的には バッファに命令語を用意しておき NMI直後に命令語を読み取ってVRAMに書き込む こういうスタイルじゃないとね 構造が悪いからデバッグの難度も上がる 小規模なうちに治さないと シーンが増えると結局テーブルジャンプや間接ジャンプ( jmp [mem] )、こういった関数ポインタを使わないとやってられないと思う、 デカくなったswitch文のアセンブラでの効率のよい実装のことね。 cmp #n の比較地獄をしていたら、デカくなればなるほど後の方は遅くてやってられない。 シーンが続き番号でないなら比較地獄も免れないけど >>197 >>199 LEAPER-3C 謎な奴だよなw IC引っこ抜くよりCADデータある方が時短になるのかw エミュでデバッグできないやつが、実機ROM焼きしてたら、ますます時間無駄にすると思うけど >>200 姑息な手かと思ったら、少し根拠あったのね > Obscure details of OAMADDR
- 213 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 15:05:47.12 ID:/Ki7K6oz.net]
- ファミコンは画面周りがややこしいからなぁ
自分も昔は資料が少なかったこともあって BGを正常に表示できるようになるまでけっこうな時間を要したな
- 214 名前:名前は開発中のものです。 [2014/05/11(日) 17:55:22.28 ID:vl3SyvU7.net]
- 原理的にはむしろ単純だろ
なぜそうなるかの理解がないから理不尽に受け取るだけで
- 215 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 20:28:01.30 ID:FD888ndC.net]
- >>213
ハードウェア的には単純なので、ソフトウェア側での配慮が必要 という方が適切だと思う。
- 216 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 21:03:39.07 ID:QGu2c1mG.net]
- 惜しいなあ、技術的にはいいこと書いてるハズなのに口調で台無し
必要もなく刺々しい言葉「しとけよ」「やれ」などを使ったかと思えば 「釣りなの?」「と思う」などと子どもじみた表現が混ざる いい歳こいて言葉を選べないって、それはもう恥ずかしい事だよ 書き込む前にきちんと自分の書いた文章、推敲したするべきだよ 自分も、他人も、傷つけないために
- 217 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 21:45:37.94 ID:hyDhkYCi.net]
- >>198
□ゲームについて 全体的に良い感じにまとまっていると思いました。 ただ、ミス即ゲームオーバーなので、残機制かライフ制にした方が少し長く遊べて楽しいかなと思います。 あと、果物などのアイテムを出して取ればボーナス点が入るとか。 □プログラムについて BG書き換えについては、VBlankを深く考えていない実装になっているので、ここから立て直すのはきついと思いました。 205さんの指摘のように、PPUに転送するデータを一旦バッファに入れてVBlank中に転送するフレームワークを作って移行する方が早いかと。 VBlank中にPPUに転送できるデータ量は限界があるので、BG書き換えの実装部分はそれを配慮した作りに直さないと駄目ですね。
- 218 名前:名前は開発中のものです。 mailto:sage [2014/05/11(日) 23:13:04.21 ID:rGvGrR+8.net]
- >>216
ゆとりメンタルなやつは2ちゃん見なきゃいいんじゃない? お前らは延々と即値でスプライトのバッファ初期化して、 100レス前も読めずNMI使えず$2002のポーリングでループ作ってるアホと同類だろ?w 何度同じこと言われても改善しようとしないやつw 前スレの>>700あたりから湧いてる 画面カクついてる時点で釣りかと思ったし 全部のシーンを厳密に検証する気はないから「思う」と書いただけでね こういう書き込みも増えたね >〜エミュで動作しました、バグってました そりゃ画面がカクついていたり、 ソフトリセット、ハードリセット時に挙動が乱れたりするのは誰が見てもバグだよな >>217 つくりはじめたばかりのやつが、まとまってるのか?
- 219 名前:199 mailto:sage [2014/05/11(日) 23:30:36.97 ID:Mnx9Nf8g.net]
- 皆さんご親切に本当に有難うございます.実際にプログラミングしながら勉強することで,
たくさん吸収出来てます!! >>211 親切にソースチェック&修正案ありがとうございます. こういう方が即レスくれるのも,さすがこのスレという感じです. プログラムは,何も考えずに,ここまでとりあえずという感じなので, 皆さんから頂いた意見と,わかったことを入れて,プログラムし直したいとおもいます. >>217 PPUへのアクセスに時間がかかるし,BG描画後にVRAM周りにアクセスするとヤバイ っていうことを知らずに実装していった結果が今のプログラムです. ご指摘のように,バッファに用意→転送にすることと, VBlankの時間を考慮した 実装にしたいです. ソース公開は恥ずかしかったですが,頑張って出して良かったです! 想定よりも,皆さんからレスを頂けて嬉しいです.頑張ります!
- 220 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 00:09:07.80 ID:jaOM61/S.net]
- >NMI使えず$2002のポーリングでループ作ってる
初心者でこれやらかす奴はたぶん某サイトの影響受けてるだろ あそこは全体的に説明が不足しすぎてるよ 更新も長いこと止まってるし、当てにするのはやめたほうがいい Nesdevの日本語資料理解するだけでもだいぶ変わるし 他にも今ではNES関連資料のサイトなんていっぱいある 特にI/Oレジスタについてはサイトによって書いてあること違ったりするから 一つのサイトに拘らず色々見るといい
- 221 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 00:13:00.90 ID:p9javgur.net]
- >>219
BG描画後にVRAMアクセスがNGではなくて、 非VBlank中にVRAMアクセスするのがNGなんです。(画面が乱れる) 短いVBlank中にVRAMを書き換えるために、バッファにデータを溜め込んでおいて、 VBlank(NMI)割り込みに入ったらすぐにバッファのデータを転送しろってことです。 あと、もちろんですが、スプライトのDMA転送もVBlank中に行わなければなりません。
- 222 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 08:39:01.88 ID:Wk7QwTB6.net]
- >>198 みたいな、打たれてもへこたれないヤツは2ch向きだね。ガンバレ!
>>216 の意見には同意だけど、そういうヤツもいるのが2chの味なのかなぁ 自分に対して >>212 みたいな反応されたときは、頭来たけどなw 修行が足りない
- 223 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 08:40:54.97 ID:Wk7QwTB6.net]
- 失礼、>>211 は >>211 の間違いでした。
- 224 名前:名前は開発中のものです。 [2014/05/12(月) 10:39:31.18 ID:cuBtqyJP.net]
- 当時のRAMはデュアルポートではないから読んでいる最中に書き込みはできない
単純な構造だよね? で、画面を描画している最中は(BGもOBJも)データをVRAMから読み出している真っ最中だから そこで無理やりデータを書き込むと、今まで画面描画時に参照していたVRAMのアドレスが置き換えられてしまうため 元の描画処理を継続することができなくなり画面の表示が破綻してしまう 表示周りをいじる際VBlank期間中にアクセスしなければならないのはこういう理由
- 225 名前:名前は開発中のものです。 mailto:sage [2014/05/12(月) 22:05:47.81 ID:jsal4ZTv.net]
- キラキラスターナイトのソースを読んでみたい。
- 226 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 05:06:48.28 ID:9EaC9IEc.net]
- 遊び方にパテントはないわけでして
- 227 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 06:22:09.58 ID:T2v6EbAW.net]
- >>225
絵は卓越しているけど プログラムは大して高度なことはやってないでしょ
- 228 名前:名前は開発中のものです。 [2014/05/13(火) 19:16:50.69 ID:srI4FW40.net]
- RIKIがパソファミの安藤に媚び売っててワロタ
ロジックボム組み込んだりする基地外なのを知らんのか近頃のもんは
- 229 名前:名前は開発中のものです。 mailto:sage [2014/05/13(火) 20:10:15.51 ID:f3qQ/xjJ.net]
- パソファミ作者はメールでの対応が最悪レベル
自分の非を認めないどころか人を犯罪者扱いしたりするキ○○イ おまけにホンコンのソース盗用疑惑もあるしな ホントどうしようもねぇよ 素人にはこれしかないから売れるんだろうけど それが余計にたち悪いね
- 230 名前:名前は開発中のものです。 mailto:sage [2014/05/15(木) 00:00:39.68 ID:HB8Kbvvq.net]
- >>228
>>ロジックボム そういう噂を聞いたから その後にちょっとだけ調べたけど プリンタポートでないI/Oポートに向けて x86のout命令が発せられてたような、ないような windows98なら簡単に発動するのかな より堅牢なOSであるwindows2000にしてたから 効果なしっぽかったけど 近頃のもんが吸出しやROM焼き実機動作させてるのをよく見かけるようになったけど ソソハメさんの名前がなぜあまり挙がらないか理由をよく認識しておいた方がいい>もっと近頃のもんたちへ
- 231 名前:名前は開発中のものです。 mailto:sage [2014/05/15(木) 03:12:19.39 ID:AXeiaTDm.net]
- 気持ち悪いのが涌いてきたな
- 232 名前:名前は開発中のものです。 mailto:sage [2014/05/15(木) 05:14:14.01 ID:gGlXRPO1.net]
- すみません、吸出しというのは英語では何というのでしょうか?スペルを教えて下さい
- 233 名前:名前は開発中のものです。 mailto:sage [2014/05/15(木) 08:42:17.70 ID:9cGRzDB1.net]
- dump
- 234 名前:名前は開発中のものです。 mailto:sage [2014/05/20(火) 00:15:36.83 ID:sHOtKBex.net]
- >>140
宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす このスレッドで新しい演出ジャンルに出会えたのは嬉しいね >>198 土管避けるの難しいけど楽しいね BGの判定は凄いと思う どんどん成長してゆくのが楽しみ
- 235 名前:199 mailto:sage [2014/05/27(火) 16:46:17.78 ID:Yj5iT5NZO]
- 頂いた修正案をもとに「まずSPRDMA」にして(PAD情報ゲットも指定の場所に移した),
また,プログラム中で何回もSPRDMAしてしまっていたのを削除しました. 実機でのスプライト飛び散り表示はなくなりました.
ただ,シーン切替時のがたつきや, BGのミラーリングの問題で,裏で画面更新していけないなどの構造欠陥などは 修正していないので,またまとまったらご報告させてください.
- 236 名前:140 mailto:sage [2014/05/28(水) 20:00:45.64 ID:pcO3WytB.net]
- ジョイパッドの読み取りルーチンをリファクタリングしたら結構コンパクトになった。
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 >>234 ありがとうございます。
- 237 名前:140 mailto:sage [2014/05/28(水) 20:07:39.22 ID:pcO3WytB.net]
- あ、
sta <JOYPAD ror a ; same as lda $80 & clc sta <JOYPAD+1 として、JOYPADには$00入れないと不味いね。
- 238 名前:名前は開発中のものです。 [2014/05/29(木) 00:32:25.75 ID:Ix+yqrZv.net]
- >>237 (clcと)sbc #0をcmp #1にすればsta <JOYPADは不要
- 239 名前:140 mailto:sage [2014/05/29(木) 01:07:17.19 ID:Lo1UVUXb.net]
- >>238
ああ、確かに。さらに小さくなりました。 ありがとうございます。
- 240 名前:名前は開発中のものです。 mailto:sage [2014/06/04(水) 21:11:42.02 ID:Wpb6i0Ha.net]
- RevolvingGemsのゲーム本体部分が出来ましたので公開します。
ttp://homepage3.nifty.com/~kyoske/nes/RevolvingGems070.zip 残りはタイトル画面と遊び方画面を実装して終わる予定。
- 241 名前:名前は開発中のものです。 mailto:sage [2014/06/04(水) 21:35:20.41 ID:EpTIlg4F.net]
- すげー
- 242 名前:名前は開発中のものです。 mailto:sage [2014/06/04(水) 23:51:21.70 ID:78Tpkbjc.net]
- 商用レベルのできだと思う。
気になるのは、連鎖がどんどん発生しやすすぎではないのかなと
- 243 名前:名前は開発中のものです。 mailto:sage [2014/06/05(木) 01:19:37.09 ID:9NxYghum.net]
- >>242
連鎖しやすいのは、6方向に対して6種類の駒しかないので 仕様上、確率的につながり易いのが原因です。 駒の種類を増やせれば良いのですが、パレットが足りないw 最初は3個つながったらで実装していたのですが、 あまりにも連鎖が続くので4個にしています。 それでも消せなくなることが無く延々と続けられるので、時間制に逃げました。 作って思ったのは、ぷよぷよの仕様は絶妙なバランスなんだなぁと。
- 244 名前:名前は開発中のものです。 mailto:sage [2014/06/05(木) 23:11:37.79 ID:hfWG3l/O.net]
- 追加された音楽がスタートで変更できるのは、個人的にうれしいですね!
後、セレクトボタンはどんな効果があるのでしょうか?(効果音だけ?)
- 245 名前:131 mailto:sage [2014/06/06(金) 19:17:42.85 ID:5n3Zcu9W.net]
- 131です。あの後、
いろいろ注意深く書き込みを見ていたのですが 人に意見されるってすごく大事だと思いました。 ちなみに、cc65でオセロとShootingGameSampleを作ったのと、 nesasmでブロック崩しを作ったのも 自分です。 今までは自分はチキンで人に意見言われるだけで、 むっつりと黙っていましたが、これからは もっと能動的に動きたいです。 ファミコンのブロック崩しをソース付きで晒すので 汚いし、ロジック的におかしいところばかりですが、 見てやってください。 僕はカービィやマリオ、くにおくんのファミコン少年の一人の つもりなのでファミコンは、ホント好きですし、このスレッド を最初から見ています www1.axfc.net/u/3252687.zip
- 246 名前:131 mailto:sage [2014/06/06(金) 21:24:59.35 ID:5n3Zcu9W.net]
- こんな事書き込みたくて書き込むわけじゃないですけど、
ファミコンの正常動作って何ですか? どうすれば正常動作っていうんですか? いつまにか、このスレッドは本物のROMと同じように動かす為に努力してる 人たちを称え、褒めてきました。 正常動作って定義がどこにあるかはファミコンで動作すれば分かるんじゃないですかね。 それ以外を異常動作というなら、エミュレータはほぼ全て異常動作ですよ。
- 247 名前:名前は開発中のものです。 mailto:sage [2014/06/06(金) 22:02:30.07 ID:4Zl9JWw3.net]
- >>243
始まった瞬間操作する前に勝手に連鎖するってのだけでも どうにかならないかな 初期配置のみパターンで持つとか
- 248 名前:名前は開発中のものです。 mailto:sage [2014/06/06(金) 22:51:57.22 ID:kdjIsC0c.net]
- >>246
そうですよエミュは異常動作ですよ 実機で動かないのを言い訳してるだけにしか聞こえませんね
- 249 名前:131 mailto:sage [2014/06/07(土) 03:42:43.36 ID:hwRmu2MG.net]
- 本当に実機で試したのか知りたいですが、
自分の言いたい事は実機で動かない事の言い訳じゃなくて、 ファミコンのプログラミングが1つの古代技術でそれが通用するのはあくまでファミコンのみ という事なんですが**が素晴らしいとか**の技術は優れているとかのある意味 マニアックな話の流れになっているというか、 ぶっちゃけ、自分の作ったファミコンゲームは技術的には全然優れてないので、 優れた技術を持った人たちに憧れたみたいなところがあります。
- 250 名前:131 mailto:sage [2014/06/07(土) 03:52:27.88 ID:hwRmu2MG.net]
- **には、ラスタースクロールやスプライトダブラー、
FFの高速スクロール、BGの高速書き換え、パレットアニメーション を入れてください。
- 251 名前:131 mailto:sage [2014/06/07(土) 09:33:01.78 ID:hwRmu2MG.net]
- cc65の作ったやつは(REVERSI,SHOOTING GAME SAMPLE)動く自信がないですが、
nesasmで作ったやつも(IWA WO OTOSE,BLOCK)動かないんですかね。
- 252 名前:名前は開発中のものです。 mailto:sage [2014/06/07(土) 10:52:19.34 ID:0OqTmEOh.net]
- >>244
スタートとセレクトは、サウンド系の開発用にテストできるように追加していた機能で 今回スタートを少し改良して選曲出来るようにしました。 セレクトは、効果音を作る時以外は意味を成さないので、次の完成版では削除する予定です。
- 253 名前:名前は開発中のものです。 mailto:sage [2014/06/07(土) 11:09:37.37 ID:0OqTmEOh.net]
- >>247
初期配置をパターンで持つのは、バリエーションを作るのが大変なので、 採択したくないですね。 代わりに内部で連鎖が止まるまで処理を繰り返して、 そこからゲーム開始するよう実装してみます。
- 254 名前:名前は開発中のものです。 mailto:sage [2014/06/07(土) 11:18:00.96 ID:0OqTmEOh.net]
- >>249
私も最終目標は実機で動作させてみることなのですが、 そこまでの道が遠い状態です。 一応、動作させるための目処は立っていて、材料とかもそろえたのですが ROMライターから自作せねばならないため、いつになるかわかりません。 実機で動作したのを確認して初めて、ファミコンのプログラムを作ったと、 胸張って言えるかと個人的には思っています。
- 255 名前:131 mailto:sage [2014/06/07(土) 14:24:42.36 ID:HAL7UNXv.net]
- >>254
ネットカフェから書き込みです。 そうですね。ファミコンの実機で動いたら感動しますし、 実機で動かしたいです。 ファミコンの実機は持っているのですが、ROMライターや EEPROM、同軸ケーブル、ビデオデッキ、自分用のテレビ
- 256 名前:131 mailto:sage [2014/06/07(土) 14:27:25.94 ID:HAL7UNXv.net]
- など問題が山積しているので、現段階では難しいです。
- 257 名前:名前は開発中のものです。 mailto:sage [2014/06/07(土) 15:48:51.46 ID:0OqTmEOh.net]
- >>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が不要
- 258 名前:名前は開発中のものです。 mailto:sage [2014/06/07(土) 15:49:29.84 ID:0OqTmEOh.net]
- >>257
続き VBlank直後に行うべき処理と、ゲーム本体の処理を分離したほうが良い。 パッドとボールの座標と、スプライトの座標は別に持っておき、 パッドとボールの座標をスプライトデータに反映するにように 実装した方が、プログラムの書き方としては綺麗だと思う。 VBlankのタイミングを考えずに、スプライトとBGの表示をOFF/ONにして VRAMを書き換えるのはやめた方が良いと思う。 nestopiaとかでも普通に表示できていたけど、書き換え量が多くなると 画面がちらつくのでは? jsr Pad_Check ソース上に Pad_Check が見つからない。 lda #0 ;これはROMなので出来ないので、こうする sta STAGE1,x ;〃 ROMに0を書き込む意図がわからない。 VRAM書き込み先のアドレスをブロックの座標から 計算しているが、ブロックの配置位置が有限個であれば 表引きで求める方法もある。 (Y座標だけでも表引きにすると処理が結構簡素化します)
- 259 名前:131 mailto:sage [2014/06/07(土) 17:02:04.46 ID:hwRmu2MG.net]
- ギコ猫さんのところで、覚えた技術ばかりという理由は
英語が出来ないという理由なのですが、これは理由になってないみたいですね。 @英語が出来ない ↓ A英語の技術情報が分からない ↓ B日本語だけの技術情報に頼る の無限ループなので、英語を中学英語から やり直したいと思います。 ちょうど良い本がアマゾンで見つかったので 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になるという事なんでしょう。 つづく
- 260 名前:131 mailto:sage [2014/06/07(土) 17:29:43.93 ID:hwRmu2MG.net]
- >>257-258
VBlankとゲーム本体処理を分離ということはNMIを使うって事ですね。他の方も言ってましたが スプライトと実際の座標を別に持つというのは、以前やったことがあるのですが、クソ汚いソースになってしまいましたが、少しだけわかってきた気がします。こんな感じですかね。 >>261に書きます。 VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。 Pad_Checkは、他の方が作られたソースなので、あえて外しました。ROMに0を書き込んだ意図は、恐らくないです。気づかないまま放置してしまいました。 ブロックの配置位置が有限個ならテーブル化できるんですか?今度やってみます。 アドバイスありがとうございます!!ホント助かりました。知らなかった事や理解出来なかった事が分かってよかったです。
- 261 名前:131 mailto:sage [2014/06/07(土) 17:30:36.51 ID:hwRmu2MG.net]
- .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
- 262 名前:131 mailto:sage [2014/06/07(土) 17:32:41.18 ID:hwRmu2MG.net]
- 間違えました。
.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
- 263 名前:名前は開発中のものです。 mailto:sage [2014/06/07(土) 17:38:24.41 ID:YYdbZPoT.net]
- 英検三級、即ち中学卒業程度の英語力とgoogle翻訳があれば十分。
海外サイトの情報も何も全部理解する必要はないし、図、表、技術用語さえわかれば殆ど問題ない。 それに今では日本語資料も充実していると思うし、あえてギコ猫のところだけを参考にすることもないだろう。 初心者のうちは他人が作ったソースを見てよく理解し、そこからいろいろ学ぶのもいいだろう。 公開されているソースによっては丁寧に説明が細かく書いてあるものもある。
- 264 名前:131 mailto:sage [2014/06/07(土) 18:21:24.08 ID:hwRmu2MG.net]
- >>263
英検3級は持ってますが、かなり文法が怪しいです。単語に関しては最も初期の「萌えたん」を P-StudySystemを自作問題集を作って覚えた程度です。 1つ1つの単語が読めても何を言いたいのかわからないので、今持っているくもん中学英文法 という本をゆっくりと確実にやる事にします。 初心者というにも、初めてから時間がかかり過ぎてる面はあるのですが、 恐らく他の方の作ったソースを断片的にしか分かっていないというのはあると思います。 google翻訳に関しては、使うブラウザがchromeなので、標準で使えます。
- 265 名前:名前は開発中のものです。 mailto:sage [2014/06/07(土) 19:18:59.23 ID:2SsDMldn.net]
- >>252
セレクトは効果音テストだったのね。疑問解消しました ソフトの完成楽しみにしてます
- 266 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 02:10:46.27 ID:CkZRo6BG.net]
- >>260
> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。 VBlankの意味を理解していない節があるので、まずは、ブラウン管の話からします。 機知の情報かも知れませんが聞いてください。 ブラウン管の裏から電子銃で電子を飛ばし、ブラウン管表の蛍光面を発光します。 真っ直ぐ飛ばしただけでは、ただの点なので、磁界をかけて電子が飛ぶ方向を変えて 左上から右へ水平方向に線を書くように発光させ、再び左端に戻ってさっきより ちょっと下の位置で同じように水平方向の線を発光させます。 これを画面下まで繰り返して、再び左上に戻ります。 これをすばやく繰り返すことで、ブラウン管の蛍光面全体に画像を表示します。(ラスタスキャン方式) 電子の飛ばし先が右端から左端に戻る期間を水平帰線消去期間(HBlank期間)、 下端から上端に戻る期間を垂直帰線消去期間(VBlank期間)と呼びます。
- 267 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 02:12:41.17 ID:CkZRo6BG.net]
- >>266
続き VBlank期間は、一瞬で戻るのではなく、NTSC(日本のアナログ放送の信号規格)の場合 20本分の横線を描くぐらいの時間があります。この間、電子銃から電子は飛びません。 非VBlank期間は、ファミコンのPPUは画像の信号を作るため、 CHR-ROMからパターンを読み込んだり、VRAMからネームテーブルや 属性情報を読み込んでいて、PPUの信号線(PPUバス)を占有しています。 VBlank期間は、PPUが画像の信号を作らないので、PPUバスは開放されており CPUはPPUを介してPPUバスにつながっているVRAMにアクセスできます。 「VBlank待ちの直後にVRAMの書き換えを行え」というのは、PPUが映像信号を 作るのに邪魔にならないタイミングでVRAMにアクセスしなさいということです。
- 268 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 02:53:09.19 ID:CkZRo6BG.net]
- >>267
続き 非VBlank期間中にCPUがVRAMにアクセスできる方法があります。 PPUレジスタ $2001 のbit3とbit4を0にして、BGとスプライトを非表示にすることです。 画像の信号を作るためのPPUのCHR-ROMやVRAMへのアクセスが止まるので PPUバスが開放され、CPUはPPUを介してVRAMにアクセスできます。 代わりに、画面に何も表示されない箇所が現れることになります。 BGとスプライトを非表示にするタイミングにばらつきがあると、 画面がちらつく現象となります。 > VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。 ファミコンの設計による制限であるため、仕様と言えば、その通りです。
- 269 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 02:54:30.27 ID:CkZRo6BG.net]
- >>268
続き 同世代の他のパソコンとかでは、表示中にもCPUからVRAMにアクセスできるものが あるのに、ファミコンで出来ないのはなぜ? →画面表示用の信号線とCPUからVRAMにアクセスする信号線が別になっているためです。 VRAMもデュアルポートメモリという、アクセスの口が2つある特別なRAMを使っています。 ファミコンのWRAMやVRAMに使われているのは、アクセスの口が1つのシングルポートメモリです。 →信号線も増えるため、基板上の配線が複雑化し、基板のサイズや層が増えてコスト増になる可能性があります。 ファミコンのVRAMにデュアルポートメモリを使わなかったのはなぜ? →コスト削減のためです。 一般的にアクセスポートが余分にあるデュアルポートメモリの方がシングルポートメモリより部品代が高くなります。 また、WRAMとVRAMに同じ部品を使うことで、大量に発注し部品メーカーに単価の引き下げを交渉できます。 とりあえず、わかりやすく説明したつもりですが、間違いなどがありましたら フォローお願いします。>All
- 270 名前:131 mailto:sage [2014/06/08(日) 06:24:49.26 ID:RIyNgnKh.net]
- >>266
VBlankに関しては、「ファミコンの驚くべき発想力」という本の78ページ前後に 記述がありました。が、>>266さんの説明の方がより詳しく説明しているように 見えます。 HBlank期間のHはホライゾン?(水平)の略でしょうね。VBlankのVは、バーチカル(垂直) の略な気がします。 NTSCとPALの違いも知らなかったのですが、日本は、NTSCだったんですね。 VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由が あったんですか。 非VBlank期間中にCPUがVRAMにアクセスできる方法、これは知っていましたが、 欠点は知りませんでした。
- 271 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 07:01:43.99 ID:Jc27w7xL.net]
- Horizontal Blankingですかね
かつてはPPUの特定のバージョンのみで発生する不具合なんてのもありました スクロールレジスタがある値の時、VRAMアドレスレジスタを触ると背景色が化けるというもの・・
- 272 名前:131 mailto:sage [2014/06/08(日) 10:50:38.68 ID:RIyNgnKh.net]
- PPUの特定バージョンというのが分かりませんが、製造されたファミコン本体
ですか?それともエミュレータか何かですか? スクロールレジスタは、$2005の二度書きレジスタですよね。
- 273 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 15:26:42.07 ID:25kxI5vs.net]
- RPGやなんかでフィールドから街へフィールドから戦闘への場面変更で一旦ブラックアウトするのは
画面初期化して書き直す時間を稼ぐためでもあったんだろうか?
- 274 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 15:31:42.31 ID:Eog1TIRJ.net]
- 製造ロットによるがファミコンの中には2つのカスタムLSIが入っている。
一つはRP2A03というもの もう一つがRP2C02というもの。 前者がCPUとAPUやI/Oポート周りで、後者がPPU。 PPUがRP2C02なのはNTSC出力のものだけで、PALならRP2C03、RGBならRC2C05など。 型番の後に続くアルファベット(例:RP2C02EのE)がバージョンを表している。 特定バージョンというか、初期型に不具合が多かった。 ちなみに製造後期になるとデコーダやインバータも1チップのカスタムLSIにまとめられる。 でもなぜかSRAMがSOPからDIPに戻ってる。入手先が限られてきたのかな?
- 275 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 17:20:23.01 ID:2cLvFL4/.net]
- >>273
スクロールは基本的にネームテーブルを2枚とも使うので 表示されていない方を裏画面として使うのはちょっとめんどくさい だから場面転換時には画面表示を一旦オフにする必要はあるけど 画面全体を書き換えるにしても数フレームだからほぼ一瞬で終わる わざわざ時間稼ぎしなければならないほどでもないので フェードなりの画面効果は演出を目的としてると思っていい
- 276 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 18:14:36.81 ID:QSuHGJdX.net]
- >>269
同世代のパソコンなどのVRAMはシングルポートのDRAMだよ CPUをウェイトで止めたり、DMAで勝手にCPUが止まったり、アクセスするタイミングを 工夫して見かけ上同時に読み書き出来るようにしてあったり、VDPが調停してくれたり 色々あるけども
- 277 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 20:16:46.77 ID:p43hB49G.net]
- >>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 名前:名前は開発中のものです。 mailto:sage [2014/06/08(日) 20:24:54.45 ID:p43hB49G.net]
- NMI使えない、各種メモリやレジスタの初期化していない奴って
ギコ猫の前半章のコピペ&拡張だったんだな 後半章ばかり見てたから原因がわからなかった>>220 言い訳にもならないけどね 他人のソース調べればわかることだから 後半章のソースも問題あり >>270 指摘されると、「私は〜知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの? 「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」 (レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。 >>273 ゲームによる。 特にCHRがRAMでドラクエVやWのようにROM容量がきつくて圧縮されたゲームは遅い。 数10フレームかかる。 エミュのパレットをハックしてネームテーブルビュワー見ると展開のスピードを見やすい。 ・戦闘画面に移行するとき CHRのパターンテーブルがRAMな場合は普通に書き換えるだけで時間がかかる。 書き換える前にPRG内の画像圧縮を展開するだろうからもっと時間がかかる。 ・マップ画面に移行するとき マップとマップチップの展開に時間がかかる 市販のゲームは限られたRAMやROMのスペースで展開と転送をこなさなければならず 我々が専用のルーチンで高速転送するのとはわけが違う場合もある 全部ROMで持ってるゲームならもっと速くて10フレーム程度かな
- 279 名前:131 mailto:sage [2014/06/09(月) 18:51:10.28 ID:Sx48Gggw.net]
- >>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 名前:131 mailto:sage [2014/06/09(月) 18:53:26.51 ID:Sx48Gggw.net]
- >>・既に指摘があるように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使えない、各種メモリやレジスタの初期化していない奴って >>ギコ猫の前半章のコピペ&拡張だったんだな >>後半章ばかり見てたから原因がわからなかった>>220 はい、そうです。ギコ猫の前半章の主に9章のコピペです。 >>言い訳にもならないけどね >>他人のソース調べればわかることだから 他人のソースを調べるという事がどんなに重要か分かりました。 >>後半章のソースも問題あり >>270 >>指摘されると、「私は〜知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの? >>「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」 >>(レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。 ”NMI”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。
- 281 名前:131 mailto:sage [2014/06/09(月) 18:55:00.34 ID:Sx48Gggw.net]
- >>236さんのソースではなく、ネット上に公開されていたソースを使いました。
- 282 名前:131 mailto:sage [2014/06/09(月) 18:57:30.62 ID:Sx48Gggw.net]
- 変数に
>>・ 誤 lda APU_REG1_FRQCHG_ON >>正 lda #APU_REG1_FRQCHG_ON の違いって何ですか?
- 283 名前:名前は開発中のものです。 mailto:sage [2014/06/09(月) 20:17:24.32 ID:dEpln6L7.net]
- 実機で検証してくれたことに対して
>本当に実機で試したのか知りたいですが って何気に失礼だよなこいつ
- 284 名前:266 mailto:sage [2014/06/09(月) 20:51:16.15 ID:oKltYKig.net]
- >>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 というソースを見た他人が呆れる理由 を、自分なりの理解や考えで説明してもらえるかな。
- 285 名前:131 mailto:sage [2014/06/09(月) 21:16:45.44 ID:Sx48Gggw.net]
- 言い訳になっちゃうかわかりませんが、できたら明日の朝に書き込みます。
ホント自分は基地外なのと、頭が痛いし熱いのでこのままほおっておくと 風邪をこじらすので、すみませんが、失礼します。 リアルが充実してる人たちがうらやましいです。
- 286 名前:266 mailto:sage [2014/06/09(月) 21:30:37.71 ID:oKltYKig.net]
- >>285
別に急がなくてもいいよ。その代わり自分でちゃんと考えること。 体お大事に。
- 287 名前:名前は開発中のものです。 mailto:sage [2014/06/09(月) 21:32:44.17 ID:fvy3sA+P.net]
- 頭の悪い高校生なんだから察してやれよ
こいつ高校の名前を自分から暴露するような奴だぞ しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに 色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ
- 288 名前:名前は開発中のものです。 mailto:sage [2014/06/09(月) 21:38:04.12 ID:dEpln6L7.net]
- 自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは
自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな 近所でネコの惨殺死体がなければいいけど
|

|