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

211: 名前は開発中のものです。 [sage] 2014/05/11(日) 09:26:06.10 ID:owqALoBe(1) AAS
時々音がおかしくなる。
212
(2): 名前は開発中のものです。 [sage] 2014/05/11(日) 14:28:37.07 ID:rGvGrR+8(1/3) AAS
>>199
199(8): 名前は開発中のものです。 [sage] 2014/05/10(土) 19:06:34.44 ID:ShrxaRho(2/4) AAS
ちなみに作りたいカセットとはこれです.
この1週間ちょっと頑張ってインプリしてました.
アセンブラなんか普段いじらないので,めちゃくちゃです.
でも,このスレはちょくちょく見てるので,恩返しに公開します.
外部リンク[zip]:sayonari.com
綺麗に書き直したかったですが,しばらくいじれそうにないので,
皆さんに託します.

FCEUXではちゃんと動くんですが,ROMに焼いて,
FC互換機(GCC NEXT)で動かすと,
スプライトがチラチラと画面中に散らばって表示されます.

メモリ管理とかちゃんとしてないし,変なところに書き込んだり,
PPUアクセスのタイミングがむちゃくちゃだったりとかが原因だと思います.
互換機じゃなくて正規版本体ならちゃんとうごくのかな・・.
タイミングめちゃくちゃ&画面ゴミ&遷移時ちらつき&各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しちゃえばすこしマシになるかな
根本解決にはならないけど
213
(2): 名前は開発中のものです。 [sage] 2014/05/11(日) 14:29:39.56 ID:rGvGrR+8(2/3) AAS
>>199
もう構造的に破綻しているけど
この先スクロールゲームにするなら
今の構造のままだともっと破綻する

理想的には
バッファに命令語を用意しておき
NMI直後に命令語を読み取ってVRAMに書き込む
こういうスタイルじゃないとね

構造が悪いからデバッグの難度も上がる
小規模なうちに治さないと

シーンが増えると結局テーブルジャンプや間接ジャンプ( jmp [mem] )、こういった関数ポインタを使わないとやってられないと思う、
デカくなったswitch文のアセンブラでの効率のよい実装のことね。
cmp #n の比較地獄をしていたら、デカくなればなるほど後の方は遅くてやってられない。
シーンが続き番号でないなら比較地獄も免れないけど

>>198
198(1): 名前は開発中のものです。 [sage] 2014/05/10(土) 18:53:04.15 ID:ShrxaRho(1/4) AAS
マッパー0のカセットを何本か作りたいんですが
既存のソフトのHVC-NROM-256K-02基板からICを外すのが面倒なので
プリント基板だけを通販しているところとかないですかね?
もしくは,CADデータとか.
>>200
200(2): 名前は開発中のものです。 [sage] 2014/05/10(土) 19:40:22.36 ID:WvHa+XO0(1) AAS
そこまでやって正規版FCを持っていないというのが謎過ぎる
高いわけじゃないんだから普通に買えばいいのに
 LEAPER-3C
謎な奴だよなw
IC引っこ抜くよりCADデータある方が時短になるのかw
エミュでデバッグできないやつが、実機ROM焼きしてたら、ますます時間無駄にすると思うけど

>>201
201(2): 名前は開発中のものです。 [sage] 2014/05/10(土) 20:09:58.52 ID:vMtYsoKB(1) AAS
>>199
スプライトDMAの前に$2003に$00入れるといいかも
姑息な手かと思ったら、少し根拠あったのね > Obscure details of OAMADDR
214
(1): 名前は開発中のものです。 [sage] 2014/05/11(日) 15:05:47.12 ID:/Ki7K6oz(1) AAS
ファミコンは画面周りがややこしいからなぁ
自分も昔は資料が少なかったこともあって
BGを正常に表示できるようになるまでけっこうな時間を要したな
215: 名前は開発中のものです。 [] 2014/05/11(日) 17:55:22.28 ID:vl3SyvU7(1) AAS
原理的にはむしろ単純だろ
なぜそうなるかの理解がないから理不尽に受け取るだけで
216: 名前は開発中のものです。 [sage] 2014/05/11(日) 20:28:01.30 ID:FD888ndC(1) AAS
>>214
ハードウェア的には単純なので、ソフトウェア側での配慮が必要
という方が適切だと思う。
217
(2): 名前は開発中のものです。 [sage] 2014/05/11(日) 21:03:39.07 ID:QGu2c1mG(1) AAS
惜しいなあ、技術的にはいいこと書いてるハズなのに口調で台無し
必要もなく刺々しい言葉「しとけよ」「やれ」などを使ったかと思えば
「釣りなの?」「と思う」などと子どもじみた表現が混ざる

いい歳こいて言葉を選べないって、それはもう恥ずかしい事だよ
書き込む前にきちんと自分の書いた文章、推敲したするべきだよ
自分も、他人も、傷つけないために
218
(2): 名前は開発中のものです。 [sage] 2014/05/11(日) 21:45:37.94 ID:hyDhkYCi(1) AAS
>>199
□ゲームについて
全体的に良い感じにまとまっていると思いました。
ただ、ミス即ゲームオーバーなので、残機制かライフ制にした方が少し長く遊べて楽しいかなと思います。
あと、果物などのアイテムを出して取ればボーナス点が入るとか。

□プログラムについて
BG書き換えについては、VBlankを深く考えていない実装になっているので、ここから立て直すのはきついと思いました。
205さんの指摘のように、PPUに転送するデータを一旦バッファに入れてVBlank中に転送するフレームワークを作って移行する方が早いかと。
VBlank中にPPUに転送できるデータ量は限界があるので、BG書き換えの実装部分はそれを配慮した作りに直さないと駄目ですね。
219: 名前は開発中のものです。 [sage] 2014/05/11(日) 23:13:04.21 ID:rGvGrR+8(3/3) AAS
>>217
ゆとりメンタルなやつは2ちゃん見なきゃいいんじゃない?

お前らは延々と即値でスプライトのバッファ初期化して、
100レス前も読めずNMI使えず$2002のポーリングでループ作ってるアホと同類だろ?w
何度同じこと言われても改善しようとしないやつw

前スレの>>700あたりから湧いてる

画面カクついてる時点で釣りかと思ったし
全部のシーンを厳密に検証する気はないから「思う」と書いただけでね

こういう書き込みも増えたね

>〜エミュで動作しました、バグってました
そりゃ画面がカクついていたり、
ソフトリセット、ハードリセット時に挙動が乱れたりするのは誰が見てもバグだよな

>>218
つくりはじめたばかりのやつが、まとまってるのか?
220
(1): 199 [sage] 2014/05/11(日) 23:30:36.97 ID:Mnx9Nf8g(3/3) AAS
皆さんご親切に本当に有難うございます.実際にプログラミングしながら勉強することで,
たくさん吸収出来てます!!

>>212
親切にソースチェック&修正案ありがとうございます.
こういう方が即レスくれるのも,さすがこのスレという感じです.
プログラムは,何も考えずに,ここまでとりあえずという感じなので,
皆さんから頂いた意見と,わかったことを入れて,プログラムし直したいとおもいます.

>>218
PPUへのアクセスに時間がかかるし,BG描画後にVRAM周りにアクセスするとヤバイ
っていうことを知らずに実装していった結果が今のプログラムです.
ご指摘のように,バッファに用意→転送にすることと, VBlankの時間を考慮した
実装にしたいです.

ソース公開は恥ずかしかったですが,頑張って出して良かったです!
想定よりも,皆さんからレスを頂けて嬉しいです.頑張ります!
221
(2): 名前は開発中のものです。 [sage] 2014/05/12(月) 00:09:07.80 ID:jaOM61/S(1) AAS
>NMI使えず$2002のポーリングでループ作ってる
初心者でこれやらかす奴はたぶん某サイトの影響受けてるだろ
あそこは全体的に説明が不足しすぎてるよ
更新も長いこと止まってるし、当てにするのはやめたほうがいい

Nesdevの日本語資料理解するだけでもだいぶ変わるし
他にも今ではNES関連資料のサイトなんていっぱいある
特にI/Oレジスタについてはサイトによって書いてあること違ったりするから
一つのサイトに拘らず色々見るといい
222: 名前は開発中のものです。 [sage] 2014/05/12(月) 00:13:00.90 ID:p9javgur(1) AAS
>>220
BG描画後にVRAMアクセスがNGではなくて、
非VBlank中にVRAMアクセスするのがNGなんです。(画面が乱れる)
短いVBlank中にVRAMを書き換えるために、バッファにデータを溜め込んでおいて、
VBlank(NMI)割り込みに入ったらすぐにバッファのデータを転送しろってことです。
あと、もちろんですが、スプライトのDMA転送もVBlank中に行わなければなりません。
223: 名前は開発中のものです。 [sage] 2014/05/12(月) 08:39:01.88 ID:Wk7QwTB6(1/2) AAS
>>199 みたいな、打たれてもへこたれないヤツは2ch向きだね。ガンバレ!

>>217 の意見には同意だけど、そういうヤツもいるのが2chの味なのかなぁ
自分に対して >>213 みたいな反応されたときは、頭来たけどなw
修行が足りない
224: 名前は開発中のものです。 [sage] 2014/05/12(月) 08:40:54.97 ID:Wk7QwTB6(2/2) AAS
失礼、>>213>>212 の間違いでした。
225: 名前は開発中のものです。 [] 2014/05/12(月) 10:39:31.18 ID:cuBtqyJP(1) AAS
当時のRAMはデュアルポートではないから読んでいる最中に書き込みはできない
単純な構造だよね?

で、画面を描画している最中は(BGもOBJも)データをVRAMから読み出している真っ最中だから
そこで無理やりデータを書き込むと、今まで画面描画時に参照していたVRAMのアドレスが置き換えられてしまうため
元の描画処理を継続することができなくなり画面の表示が破綻してしまう

表示周りをいじる際VBlank期間中にアクセスしなければならないのはこういう理由
226
(1): 名前は開発中のものです。 [sage] 2014/05/12(月) 22:05:47.81 ID:jsal4ZTv(1) AAS
キラキラスターナイトのソースを読んでみたい。
227: 名前は開発中のものです。 [sage] 2014/05/13(火) 05:06:48.28 ID:9EaC9IEc(1) AAS
遊び方にパテントはないわけでして
228: 名前は開発中のものです。 [sage] 2014/05/13(火) 06:22:09.58 ID:T2v6EbAW(1) AAS
>>226
絵は卓越しているけど
プログラムは大して高度なことはやってないでしょ
229
(1): 名前は開発中のものです。 [] 2014/05/13(火) 19:16:50.69 ID:srI4FW40(1) AAS
RIKIがパソファミの安藤に媚び売っててワロタ
ロジックボム組み込んだりする基地外なのを知らんのか近頃のもんは
230: 名前は開発中のものです。 [sage] 2014/05/13(火) 20:10:15.51 ID:f3qQ/xjJ(1) AAS
パソファミ作者はメールでの対応が最悪レベル
自分の非を認めないどころか人を犯罪者扱いしたりするキ○○イ
おまけにホンコンのソース盗用疑惑もあるしな ホントどうしようもねぇよ 
素人にはこれしかないから売れるんだろうけど それが余計にたち悪いね
231: 名前は開発中のものです。 [sage] 2014/05/15(木) 00:00:39.68 ID:HB8Kbvvq(1) AAS
>>229
>>ロジックボム
そういう噂を聞いたから
その後にちょっとだけ調べたけど
プリンタポートでないI/Oポートに向けて
x86のout命令が発せられてたような、ないような
windows98なら簡単に発動するのかな
より堅牢なOSであるwindows2000にしてたから
効果なしっぽかったけど

近頃のもんが吸出しやROM焼き実機動作させてるのをよく見かけるようになったけど
ソソハメさんの名前がなぜあまり挙がらないか理由をよく認識しておいた方がいい>もっと近頃のもんたちへ
232: 名前は開発中のものです。 [sage] 2014/05/15(木) 03:12:19.39 ID:AXeiaTDm(1) AAS
気持ち悪いのが涌いてきたな
233: 名前は開発中のものです。 [sage] 2014/05/15(木) 05:14:14.01 ID:gGlXRPO1(1) AAS
すみません、吸出しというのは英語では何というのでしょうか?スペルを教えて下さい
234: 名前は開発中のものです。 [sage] 2014/05/15(木) 08:42:17.70 ID:9cGRzDB1(1) AAS
dump
235
(1): 名前は開発中のものです。 [sage] 2014/05/20(火) 00:15:36.83 ID:sHOtKBex(1) AAS
>>140
140(8): 名前は開発中のものです。 [sage] 2014/04/10(木) 21:41:45.23 ID:hnCuty6F(2/2) AAS
開発途中で、まだゲームの体裁になっていないけど、自作のソフトをさらしてみる。
src.zipにソース一式入っているので、参考頂ければ幸いです。

外部リンク[zip]:homepage3.nifty.com

十字キーでカーソル移動、Aボタンが時計回り、Bボタンが反時計回りに宝石を回します。
宝石が4個以上つながったら消滅します。
宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす
このスレッドで新しい演出ジャンルに出会えたのは嬉しいね

>>199
土管避けるの難しいけど楽しいね
BGの判定は凄いと思う
どんどん成長してゆくのが楽しみ
1-
あと 332 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.023s