ファミコンのプログラム4 (567レス)
上下前次1-新
222: 名前は開発中のものです。 [sage] 2014/05/12(月) 00:13:00.90 ID:p9javgur(1) AAS
>>220220(1): 199 [sage] 2014/05/11(日) 23:30:36.97 ID:Mnx9Nf8g(3/3) AAS
皆さんご親切に本当に有難うございます.実際にプログラミングしながら勉強することで,
たくさん吸収出来てます!!
>>212
親切にソースチェック&修正案ありがとうございます.
こういう方が即レスくれるのも,さすがこのスレという感じです.
プログラムは,何も考えずに,ここまでとりあえずという感じなので,
皆さんから頂いた意見と,わかったことを入れて,プログラムし直したいとおもいます.
>>218
PPUへのアクセスに時間がかかるし,BG描画後にVRAM周りにアクセスするとヤバイ
っていうことを知らずに実装していった結果が今のプログラムです.
ご指摘のように,バッファに用意→転送にすることと, VBlankの時間を考慮した
実装にしたいです.
ソース公開は恥ずかしかったですが,頑張って出して良かったです!
想定よりも,皆さんからレスを頂けて嬉しいです.頑張ります!
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
>>199199(8): 名前は開発中のものです。 [sage] 2014/05/10(土) 19:06:34.44 ID:ShrxaRho(2/4) AAS
ちなみに作りたいカセットとはこれです.
この1週間ちょっと頑張ってインプリしてました.
アセンブラなんか普段いじらないので,めちゃくちゃです.
でも,このスレはちょくちょく見てるので,恩返しに公開します.
外部リンク[zip]:sayonari.com
綺麗に書き直したかったですが,しばらくいじれそうにないので,
皆さんに託します.
FCEUXではちゃんと動くんですが,ROMに焼いて,
FC互換機(GCC NEXT)で動かすと,
スプライトがチラチラと画面中に散らばって表示されます.
メモリ管理とかちゃんとしてないし,変なところに書き込んだり,
PPUアクセスのタイミングがむちゃくちゃだったりとかが原因だと思います.
互換機じゃなくて正規版本体ならちゃんとうごくのかな・・.
みたいな、打たれてもへこたれないヤツは2ch向きだね。ガンバレ!
>>217217(2): 名前は開発中のものです。 [sage] 2014/05/11(日) 21:03:39.07 ID:QGu2c1mG(1) AAS
惜しいなあ、技術的にはいいこと書いてるハズなのに口調で台無し
必要もなく刺々しい言葉「しとけよ」「やれ」などを使ったかと思えば
「釣りなの?」「と思う」などと子どもじみた表現が混ざる
いい歳こいて言葉を選べないって、それはもう恥ずかしい事だよ
書き込む前にきちんと自分の書いた文章、推敲したするべきだよ
自分も、他人も、傷つけないために
の意見には同意だけど、そういうヤツもいるのが2chの味なのかなぁ
自分に対して >>213213(2): 名前は開発中のものです。 [sage] 2014/05/11(日) 14:29:39.56 ID:rGvGrR+8(2/3) AAS
>>199
もう構造的に破綻しているけど
この先スクロールゲームにするなら
今の構造のままだともっと破綻する
理想的には
バッファに命令語を用意しておき
NMI直後に命令語を読み取ってVRAMに書き込む
こういうスタイルじゃないとね
構造が悪いからデバッグの難度も上がる
小規模なうちに治さないと
シーンが増えると結局テーブルジャンプや間接ジャンプ( jmp [mem] )、こういった関数ポインタを使わないとやってられないと思う、
デカくなったswitch文のアセンブラでの効率のよい実装のことね。
cmp #n の比較地獄をしていたら、デカくなればなるほど後の方は遅くてやってられない。
シーンが続き番号でないなら比較地獄も免れないけど
>>198 >>200 LEAPER-3C
謎な奴だよなw
IC引っこ抜くよりCADデータある方が時短になるのかw
エミュでデバッグできないやつが、実機ROM焼きしてたら、ますます時間無駄にすると思うけど
>>201
姑息な手かと思ったら、少し根拠あったのね > Obscure details of OAMADDR
みたいな反応されたときは、頭来たけどなw
修行が足りない
224: 名前は開発中のものです。 [sage] 2014/05/12(月) 08:40:54.97 ID:Wk7QwTB6(2/2) AAS
失礼、>>213 は >>212212(2): 名前は開発中のものです。 [sage] 2014/05/11(日) 14:28:37.07 ID:rGvGrR+8(1/3) AAS
>>199
タイミングめちゃくちゃ&画面ゴミ&遷移時ちらつき&各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しちゃえばすこしマシになるかな
根本解決にはならないけど
の間違いでした。
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宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす
このスレッドで新しい演出ジャンルに出会えたのは嬉しいね
>>199
土管避けるの難しいけど楽しいね
BGの判定は凄いと思う
どんどん成長してゆくのが楽しみ
236(3): 140 [sage] 2014/05/28(水) 20:00:45.64 ID:pcO3WytB(1/2) AAS
ジョイパッドの読み取りルーチンをリファクタリングしたら結構コンパクトになった。
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
ありがとうございます。
237(1): 140 [sage] 2014/05/28(水) 20:07:39.22 ID:pcO3WytB(2/2) AAS
あ、
sta <JOYPAD
ror a ; same as lda $80 & clc
sta <JOYPAD+1
として、JOYPADには$00入れないと不味いね。
238(1): 名前は開発中のものです。 [] 2014/05/29(木) 00:32:25.75 ID:Ix+yqrZv(1) AAS
>>237 (clcと)sbc #0をcmp #1にすればsta <JOYPADは不要
239: 140 [sage] 2014/05/29(木) 01:07:17.19 ID:Lo1UVUXb(1) AAS
>>238
ああ、確かに。さらに小さくなりました。
ありがとうございます。
240(1): 名前は開発中のものです。 [sage] 2014/06/04(水) 21:11:42.02 ID:Wpb6i0Ha(1) AAS
RevolvingGemsのゲーム本体部分が出来ましたので公開します。
外部リンク[zip]:homepage3.nifty.com
残りはタイトル画面と遊び方画面を実装して終わる予定。
241: 名前は開発中のものです。 [sage] 2014/06/04(水) 21:35:20.41 ID:EpTIlg4F(1) AAS
すげー
242(1): 名前は開発中のものです。 [sage] 2014/06/04(水) 23:51:21.70 ID:78Tpkbjc(1) AAS
商用レベルのできだと思う。
気になるのは、連鎖がどんどん発生しやすすぎではないのかなと
243(1): 名前は開発中のものです。 [sage] 2014/06/05(木) 01:19:37.09 ID:9NxYghum(1) AAS
>>242
連鎖しやすいのは、6方向に対して6種類の駒しかないので
仕様上、確率的につながり易いのが原因です。
駒の種類を増やせれば良いのですが、パレットが足りないw
最初は3個つながったらで実装していたのですが、
あまりにも連鎖が続くので4個にしています。
それでも消せなくなることが無く延々と続けられるので、時間制に逃げました。
作って思ったのは、ぷよぷよの仕様は絶妙なバランスなんだなぁと。
244(1): 名前は開発中のものです。 [sage] 2014/06/05(木) 23:11:37.79 ID:hfWG3l/O(1) AAS
追加された音楽がスタートで変更できるのは、個人的にうれしいですね!
後、セレクトボタンはどんな効果があるのでしょうか?(効果音だけ?)
245(3): 131 [sage] 2014/06/06(金) 19:17:42.85 ID:5n3Zcu9W(1/2) AAS
131です。あの後、
いろいろ注意深く書き込みを見ていたのですが
人に意見されるってすごく大事だと思いました。
ちなみに、cc65でオセロとShootingGameSampleを作ったのと、
nesasmでブロック崩しを作ったのも
自分です。
今までは自分はチキンで人に意見言われるだけで、
むっつりと黙っていましたが、これからは
もっと能動的に動きたいです。
ファミコンのブロック崩しをソース付きで晒すので
汚いし、ロジック的におかしいところばかりですが、
見てやってください。
僕はカービィやマリオ、くにおくんのファミコン少年の一人の
つもりなのでファミコンは、ホント好きですし、このスレッド
を最初から見ています
外部リンク[zip]:www1.axfc.net
246(3): 131 [sage] 2014/06/06(金) 21:24:59.35 ID:5n3Zcu9W(2/2) AAS
こんな事書き込みたくて書き込むわけじゃないですけど、
ファミコンの正常動作って何ですか?
どうすれば正常動作っていうんですか?
いつまにか、このスレッドは本物のROMと同じように動かす為に努力してる
人たちを称え、褒めてきました。
正常動作って定義がどこにあるかはファミコンで動作すれば分かるんじゃないですかね。
それ以外を異常動作というなら、エミュレータはほぼ全て異常動作ですよ。
上下前次1-新書関写板覧索設栞歴
あと 321 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s