ファミコンのプログラム4 (567レス)
上下前次1-新
194: 名前は開発中のものです。 [sage] 2014/04/24(木) 11:46:44.27 ID:RDg08ToE(2/2) AAS
ありがとう
195: 名前は開発中のものです。 [sage] 2014/04/24(木) 21:06:44.07 ID:Ozv2HHx1(1) AAS
ブレークポイントの使いやすさは
G-NESじゃないか
よっぽどトリッキーなコーディングしないならこれで十分
G-NES は使いやすい、指定行まで実行がStepOverを兼ねる
FCEUX はログ機能が最強、シンボル機能搭載、エミュ精度も結構よい
Nintendulator はデバッガ付きではエミュの精度が最強かな、使いにくい
196: 名前は開発中のものです。 [sage] 2014/04/24(木) 23:37:48.91 ID:d8WjRMEc(1) AAS
>>191191(1): 名前は開発中のものです。 [sage] 2014/04/23(水) 21:35:50.97 ID:bXRTGLw+(1) AAS
↑あってるっぽい
ただしスプライトの四の倍数とは共有か
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;
そう、スプライトと共通(04=14、…)
僕は実機で確認したけど、nendoかnestopiaと同じなら間違いないだろうな。
古いネット上のドキュメントとか間違ってたりするから100%鵜呑みにしない方がいいよ(エミュのソースも)。
197: 名前は開発中のものです。 [sage] 2014/04/25(金) 00:53:39.01 ID:ffWieyHe(1) AAS
G-NESは使ってなかったから、ちょっと触ってみた。
デバッガは、FCEUXとG-NESほぼ同等やね。
ちょっとわかりにくいけど、アドレスクリックして"Seek To"で指定行まで実行もできるし。
(この機能が超欲しかったけど、いま探すまでアドレスクリックで指定できるの気付かなかったw)
しかし、FECUXのシンボル情報って吐き出してくれるコンパイラあるのかな・・・
使えれば便利そうなんだけど。
198(1): 名前は開発中のものです。 [sage] 2014/05/10(土) 18:53:04.15 ID:ShrxaRho(1/4) AAS
マッパー0のカセットを何本か作りたいんですが
既存のソフトのHVC-NROM-256K-02基板からICを外すのが面倒なので
プリント基板だけを通販しているところとかないですかね?
もしくは,CADデータとか.
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アクセスのタイミングがむちゃくちゃだったりとかが原因だと思います.
互換機じゃなくて正規版本体ならちゃんとうごくのかな・・.
200(2): 名前は開発中のものです。 [sage] 2014/05/10(土) 19:40:22.36 ID:WvHa+XO0(1) AAS
そこまでやって正規版FCを持っていないというのが謎過ぎる
高いわけじゃないんだから普通に買えばいいのに
201(2): 名前は開発中のものです。 [sage] 2014/05/10(土) 20:09:58.52 ID:vMtYsoKB(1) AAS
>>199
スプライトDMAの前に$2003に$00入れるといいかも
202: 名前は開発中のものです。 [sage] 2014/05/10(土) 20:52:41.78 ID:ShrxaRho(3/4) AAS
>>201
すごい!かなり軽減されました.しかしまだチラチラがあります.
しかしさすがのアドバイスありがとうございます.勉強になります.
203(1): 名前は開発中のものです。 [sage] 2014/05/10(土) 21:59:03.95 ID:2fP2DbGG(1) AAS
なんで土管に触っただけで死ぬんだ
こんなクソゲー久しぶりに見たわ
204: 名前は開発中のものです。 [sage] 2014/05/10(土) 23:12:04.05 ID:ShrxaRho(4/4) AAS
>>200
ファミコン本体は実家にはいっぱいあるんですが,今の家にはなくて,
急遽必要になったので,とりあえず,ヤフオクで互換機を送料込み900円で落札しました.
その後,今もですが,正規版ファミコンをどれにしようかと,ヤフオクでキョロキョロしてます.
互換機は今日届きました
>>203
これは,FlappyBirdっていう人気アプリのオマージュですが,それも土管で即死です
ROMライターのLEAPER-3Cのドライバが64bitWin7では動かなかったので焦りましたが,
VirtualPC上のXPmodeというやつで,そのOSからLEAPER-3Cが使えたので
良かったです(´ρ`)
205(1): 名前は開発中のものです。 [sage] 2014/05/11(日) 01:44:45.44 ID:HiLhu8FK(1) AAS
非VBlanc期間がループで一切の処理をしていないからDMA転送がVblank内に収まってないんじゃないかね
通常は非VBlank期間にキー入力だのスプライトのデータ準備だのデータを用意しておいて
Vblank期間は描画処理だけを行うようにする
206: 名前は開発中のものです。 [sage] 2014/05/11(日) 02:54:20.00 ID:Mnx9Nf8g(1/3) AAS
>>205
ありがとうございます!
チャレンジしてみましたが,上手く実装できませんでした(´ρ`)
どの処理をどこでやればよいか・・・.
もう時間的に頭が働いていないのかも.とりあえず寝ます.
207(1): 名前は開発中のものです。 [sage] 2014/05/11(日) 04:04:19.91 ID:YECX6XhP(1) AAS
>>199
なかなか、ファミコンらしい可愛いグラフィックやね。
nesdevでflappy bird作った奴いないの?みたいなスレがあったから、貼るのもおもしろいかも
外部リンク[php]:forums.nesdev.com
ちなみに、Nestopiaでもバグってるっぽいので実機の前にこっちでデバッグしたら楽かもしれない。
残念なことにデバッグ機能はほとんどないけど・・・
208(1): 名前は開発中のものです。 [sage] 2014/05/11(日) 04:53:13.07 ID:Mnx9Nf8g(2/3) AAS
>>207
nestopia情報ありがとうございます!
試してみましたが,パレットがおかしくなるバグはありますが,
実機互換機で起こるチラチラ飛び散りバグは出ません.
正規本体でもでないかな.正規本体早く買おうかな.
nesdevにも凸したいと思います(〃゜ω゜〃)
209: 名前は開発中のものです。 [sage] 2014/05/11(日) 08:18:39.15 ID:IEErYv9U(1) AAS
>>208
最初のロゴでスプライトのゴミが出るのはメモリの初期化をして
いないからだと思う
パレットがおかしいとかスクロールがぶれるとかそういうのは恐らく
表示期間中にPPUに書き込みしてるんじゃないかな
210: 名前は開発中のものです。 [sage] 2014/05/11(日) 08:23:06.60 ID:dYyMlr6C(1) AAS
fceuだとチラツキは見えない
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
タイミングめちゃくちゃ&画面ゴミ&遷移時ちらつき&各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 >>200 LEAPER-3C
謎な奴だよなw
IC引っこ抜くよりCADデータある方が時短になるのかw
エミュでデバッグできないやつが、実機ROM焼きしてたら、ますます時間無駄にすると思うけど
>>201
姑息な手かと思ったら、少し根拠あったのね > 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書き換えの実装部分はそれを配慮した作りに直さないと駄目ですね。
上下前次1-新書関写板覧索設栞歴
あと 349 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.011s