14/05/10 19:40:22.36 WvHa+XO0.net
そこまでやって正規版FCを持っていないというのが謎過ぎる
高いわけじゃないんだから普通に買えばいいのに
200:名前は開発中のものです。
14/05/10 20:09:58.52 vMtYsoKB.net
>>198
スプライトDMAの前に$2003に$00入れるといいかも
201:名前は開発中のものです。
14/05/10 20:52:41.78 ShrxaRho.net
>>200
すごい!かなり軽減されました.しかしまだチラチラがあります.
しかしさすがのアドバイスありがとうございます.勉強になります.
202:名前は開発中のものです。
14/05/10 21:59:03.95 2fP2DbGG.net
なんで土管に触っただけで死ぬんだ
こんなクソゲー久しぶりに見たわ
203:名前は開発中のものです。
14/05/10 23:12:04.05 ShrxaRho.net
>>199
ファミコン本体は実家にはいっぱいあるんですが,今の家にはなくて,
急遽必要になったので,とりあえず,ヤフオクで互換機を送料込み900円で落札しました.
その後,今もですが,正規版ファミコンをどれにしようかと,ヤフオクでキョロキョロしてます.
互換機は今日届きました
>>202
これは,FlappyBirdっていう人気アプリのオマージュですが,それも土管で即死です
ROMライターのLEAPER-3Cのドライバが64bitWin7では動かなかったので焦りましたが,
VirtualPC上のXPmodeというやつで,そのOSからLEAPER-3Cが使えたので
良かったです(´ρ`)
204:名前は開発中のものです。
14/05/11 01:44:45.44 HiLhu8FK.net
非VBlanc期間がループで一切の処理をしていないからDMA転送がVblank内に収まってないんじゃないかね
通常は非VBlank期間にキー入力だのスプライトのデータ準備だのデータを用意しておいて
Vblank期間は描画処理だけを行うようにする
205:名前は開発中のものです。
14/05/11 02:54:20.00 Mnx9Nf8g.net
>>204
ありがとうございます!
チャレンジしてみましたが,上手く実装できませんでした(´ρ`)
どの処理をどこでやればよいか・・・.
もう時間的に頭が働いていないのかも.とりあえず寝ます.
206:名前は開発中のものです。
14/05/11 04:04:19.91 YECX6XhP.net
>>198
なかなか、ファミコンらしい可愛いグラフィックやね。
nesdevでflappy bird作った奴いないの?みたいなスレがあったから、貼るのもおもしろいかも
URLリンク(forums.nesdev.com)
ちなみに、Nestopiaでもバグってるっぽいので実機の前にこっちでデバッグしたら楽かもしれない。
残念なことにデバッグ機能はほとんどないけど・・・
207:名前は開発中のものです。
14/05/11 04:53:13.07 Mnx9Nf8g.net
>>206
nestopia情報ありがとうございます!
試してみましたが,パレットがおかしくなるバグはありますが,
実機互換機で起こるチラチラ飛び散りバグは出ません.
正規本体でもでないかな.正規本体早く買おうかな.
nesdevにも凸したいと思います(〃゜ω゜〃)
208:名前は開発中のものです。
14/05/11 08:18:39.15 IEErYv9U.net
>>207
最初のロゴでスプライトのゴミが出るのはメモリの初期化をして
いないからだと思う
パレットがおかしいとかスクロールがぶれるとかそういうのは恐らく
表示期間中にPPUに書き込みしてるんじゃないかな
209:名前は開発中のものです。
14/05/11 08:23:06.60 dYyMlr6C.net
fceuだとチラツキは見えない
210:名前は開発中のものです。
14/05/11 09:26:06.10 owqALoBe.net
時々音がおかしくなる。
211:名前は開発中のものです。
14/05/11 14:28:37.07 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:名前は開発中のものです。
14/05/11 14:29:39.56 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:名前は開発中のものです。
14/05/11 15:05:47.12 /Ki7K6oz.net
ファミコンは画面周りがややこしいからなぁ
自分も昔は資料が少なかったこともあって
BGを正常に表示できるようになるまでけっこうな時間を要したな
214:名前は開発中のものです。
14/05/11 17:55:22.28 vl3SyvU7.net
原理的にはむしろ単純だろ
なぜそうなるかの理解がないから理不尽に受け取るだけで
215:名前は開発中のものです。
14/05/11 20:28:01.30 FD888ndC.net
>>213
ハードウェア的には単純なので、ソフトウェア側での配慮が必要
という方が適切だと思う。
216:名前は開発中のものです。
14/05/11 21:03:39.07 QGu2c1mG.net
惜しいなあ、技術的にはいいこと書いてるハズなのに口調で台無し
必要もなく刺々しい言葉「しとけよ」「やれ」などを使ったかと思えば
「釣りなの?」「と思う」などと子どもじみた表現が混ざる
いい歳こいて言葉を選べないって、それはもう恥ずかしい事だよ
書き込む前にきちんと自分の書いた文章、推敲したするべきだよ
自分も、他人も、傷つけないために
217:名前は開発中のものです。
14/05/11 21:45:37.94 hyDhkYCi.net
>>198
□ゲームについて
全体的に良い感じにまとまっていると思いました。
ただ、ミス即ゲームオーバーなので、残機制かライフ制にした方が少し長く遊べて楽しいかなと思います。
あと、果物などのアイテムを出して取ればボーナス点が入るとか。
□プログラムについて
BG書き換えについては、VBlankを深く考えていない実装になっているので、ここから立て直すのはきついと思いました。
205さんの指摘のように、PPUに転送するデータを一旦バッファに入れてVBlank中に転送するフレームワークを作って移行する方が早いかと。
VBlank中にPPUに転送できるデータ量は限界があるので、BG書き換えの実装部分はそれを配慮した作りに直さないと駄目ですね。
218:名前は開発中のものです。
14/05/11 23:13:04.21 rGvGrR+8.net
>>216
ゆとりメンタルなやつは2ちゃん見なきゃいいんじゃない?
お前らは延々と即値でスプライトのバッファ初期化して、
100レス前も読めずNMI使えず$2002のポーリングでループ作ってるアホと同類だろ?w
何度同じこと言われても改善しようとしないやつw
前スレの>>700あたりから湧いてる
画面カクついてる時点で釣りかと思ったし
全部のシーンを厳密に検証する気はないから「思う」と書いただけでね
こういう書き込みも増えたね
>~エミュで動作しました、バグってました
そりゃ画面がカクついていたり、
ソフトリセット、ハードリセット時に挙動が乱れたりするのは誰が見てもバグだよな
>>217
つくりはじめたばかりのやつが、まとまってるのか?
219:199
14/05/11 23:30:36.97 Mnx9Nf8g.net
皆さんご親切に本当に有難うございます.実際にプログラミングしながら勉強することで,
たくさん吸収出来てます!!
>>211
親切にソースチェック&修正案ありがとうございます.
こういう方が即レスくれるのも,さすがこのスレという感じです.
プログラムは,何も考えずに,ここまでとりあえずという感じなので,
皆さんから頂いた意見と,わかったことを入れて,プログラムし直したいとおもいます.
>>217
PPUへのアクセスに時間がかかるし,BG描画後にVRAM周りにアクセスするとヤバイ
っていうことを知らずに実装していった結果が今のプログラムです.
ご指摘のように,バッファに用意→転送にすることと, VBlankの時間を考慮した
実装にしたいです.
ソース公開は恥ずかしかったですが,頑張って出して良かったです!
想定よりも,皆さんからレスを頂けて嬉しいです.頑張ります!
220:名前は開発中のものです。
14/05/12 00:09:07.80 jaOM61/S.net
>NMI使えず$2002のポーリングでループ作ってる
初心者でこれやらかす奴はたぶん某サイトの影響受けてるだろ
あそこは全体的に説明が不足しすぎてるよ
更新も長いこと止まってるし、当てにするのはやめたほうがいい
Nesdevの日本語資料理解するだけでもだいぶ変わるし
他にも今ではNES関連資料のサイトなんていっぱいある
特にI/Oレジスタについてはサイトによって書いてあること違ったりするから
一つのサイトに拘らず色々見るといい
221:名前は開発中のものです。
14/05/12 00:13:00.90 p9javgur.net
>>219
BG描画後にVRAMアクセスがNGではなくて、
非VBlank中にVRAMアクセスするのがNGなんです。(画面が乱れる)
短いVBlank中にVRAMを書き換えるために、バッファにデータを溜め込んでおいて、
VBlank(NMI)割り込みに入ったらすぐにバッファのデータを転送しろってことです。
あと、もちろんですが、スプライトのDMA転送もVBlank中に行わなければなりません。
222:名前は開発中のものです。
14/05/12 08:39:01.88 Wk7QwTB6.net
>>198 みたいな、打たれてもへこたれないヤツは2ch向きだね。ガンバレ!
>>216 の意見には同意だけど、そういうヤツもいるのが2chの味なのかなぁ
自分に対して >>212 みたいな反応されたときは、頭来たけどなw
修行が足りない
223:名前は開発中のものです。
14/05/12 08:40:54.97 Wk7QwTB6.net
失礼、>>211 は >>211 の間違いでした。
224:名前は開発中のものです。
14/05/12 10:39:31.18 cuBtqyJP.net
当時のRAMはデュアルポートではないから読んでいる最中に書き込みはできない
単純な構造だよね?
で、画面を描画している最中は(BGもOBJも)データをVRAMから読み出している真っ最中だから
そこで無理やりデータを書き込むと、今まで画面描画時に参照していたVRAMのアドレスが置き換えられてしまうため
元の描画処理を継続することができなくなり画面の表示が破綻してしまう
表示周りをいじる際VBlank期間中にアクセスしなければならないのはこういう理由
225:名前は開発中のものです。
14/05/12 22:05:47.81 jsal4ZTv.net
キラキラスターナイトのソースを読んでみたい。
226:名前は開発中のものです。
14/05/13 05:06:48.28 9EaC9IEc.net
遊び方にパテントはないわけでして
227:名前は開発中のものです。
14/05/13 06:22:09.58 T2v6EbAW.net
>>225
絵は卓越しているけど
プログラムは大して高度なことはやってないでしょ
228:名前は開発中のものです。
14/05/13 19:16:50.69 srI4FW40.net
RIKIがパソファミの安藤に媚び売っててワロタ
ロジックボム組み込んだりする基地外なのを知らんのか近頃のもんは
229:名前は開発中のものです。
14/05/13 20:10:15.51 f3qQ/xjJ.net
パソファミ作者はメールでの対応が最悪レベル
自分の非を認めないどころか人を犯罪者扱いしたりするキ○○イ
おまけにホンコンのソース盗用疑惑もあるしな ホントどうしようもねぇよ
素人にはこれしかないから売れるんだろうけど それが余計にたち悪いね
230:名前は開発中のものです。
14/05/15 00:00:39.68 HB8Kbvvq.net
>>228
>>ロジックボム
そういう噂を聞いたから
その後にちょっとだけ調べたけど
プリンタポートでないI/Oポートに向けて
x86のout命令が発せられてたような、ないような
windows98なら簡単に発動するのかな
より堅牢なOSであるwindows2000にしてたから
効果なしっぽかったけど
近頃のもんが吸出しやROM焼き実機動作させてるのをよく見かけるようになったけど
ソソハメさんの名前がなぜあまり挙がらないか理由をよく認識しておいた方がいい>もっと近頃のもんたちへ
231:名前は開発中のものです。
14/05/15 03:12:19.39 AXeiaTDm.net
気持ち悪いのが涌いてきたな
232:名前は開発中のものです。
14/05/15 05:14:14.01 gGlXRPO1.net
すみません、吸出しというのは英語では何というのでしょうか?スペルを教えて下さい
233:名前は開発中のものです。
14/05/15 08:42:17.70 9cGRzDB1.net
dump
234:名前は開発中のものです。
14/05/20 00:15:36.83 sHOtKBex.net
>>140
宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす
このスレッドで新しい演出ジャンルに出会えたのは嬉しいね
>>198
土管避けるの難しいけど楽しいね
BGの判定は凄いと思う
どんどん成長してゆくのが楽しみ
235:199
14/05/27 16:46:17.78 Yj5iT5NZO
頂いた修正案をもとに「まずSPRDMA」にして(PAD情報ゲットも指定の場所に移した),
また,プログラム中で何回もSPRDMAしてしまっていたのを削除しました.
実機でのスプライト飛び散り表示はなくなりました.
ただ,シーン切替時のがたつきや,
BGのミラーリングの問題で,裏で画面更新していけないなどの構造欠陥などは
修正していないので,またまとまったらご報告させてください.
236:140
14/05/28 20:00:45.64 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
14/05/28 20:07:39.22 pcO3WytB.net
あ、
sta <JOYPAD
ror a ; same as lda $80 & clc
sta <JOYPAD+1
として、JOYPADには$00入れないと不味いね。
238:名前は開発中のものです。
14/05/29 00:32:25.75 Ix+yqrZv.net
>>237 (clcと)sbc #0をcmp #1にすればsta <JOYPADは不要
239:140
14/05/29 01:07:17.19 Lo1UVUXb.net
>>238
ああ、確かに。さらに小さくなりました。
ありがとうございます。
240:名前は開発中のものです。
14/06/04 21:11:42.02 Wpb6i0Ha.net
RevolvingGemsのゲーム本体部分が出来ましたので公開します。
URLリンク(homepage3.nifty.com)
残りはタイトル画面と遊び方画面を実装して終わる予定。
241:名前は開発中のものです。
14/06/04 21:35:20.41 EpTIlg4F.net
すげー
242:名前は開発中のものです。
14/06/04 23:51:21.70 78Tpkbjc.net
商用レベルのできだと思う。
気になるのは、連鎖がどんどん発生しやすすぎではないのかなと
243:名前は開発中のものです。
14/06/05 01:19:37.09 9NxYghum.net
>>242
連鎖しやすいのは、6方向に対して6種類の駒しかないので
仕様上、確率的につながり易いのが原因です。
駒の種類を増やせれば良いのですが、パレットが足りないw
最初は3個つながったらで実装していたのですが、
あまりにも連鎖が続くので4個にしています。
それでも消せなくなることが無く延々と続けられるので、時間制に逃げました。
作って思ったのは、ぷよぷよの仕様は絶妙なバランスなんだなぁと。
244:名前は開発中のものです。
14/06/05 23:11:37.79 hfWG3l/O.net
追加された音楽がスタートで変更できるのは、個人的にうれしいですね!
後、セレクトボタンはどんな効果があるのでしょうか?(効果音だけ?)
245:131
14/06/06 19:17:42.85 5n3Zcu9W.net
131です。あの後、
いろいろ注意深く書き込みを見ていたのですが
人に意見されるってすごく大事だと思いました。
ちなみに、cc65でオセロとShootingGameSampleを作ったのと、
nesasmでブロック崩しを作ったのも
自分です。
今までは自分はチキンで人に意見言われるだけで、
むっつりと黙っていましたが、これからは
もっと能動的に動きたいです。
ファミコンのブロック崩しをソース付きで晒すので
汚いし、ロジック的におかしいところばかりですが、
見てやってください。
僕はカービィやマリオ、くにおくんのファミコン少年の一人の
つもりなのでファミコンは、ホント好きですし、このスレッド
を最初から見ています
URLリンク(www1.axfc.net)
246:131
14/06/06 21:24:59.35 5n3Zcu9W.net
こんな事書き込みたくて書き込むわけじゃないですけど、
ファミコンの正常動作って何ですか?
どうすれば正常動作っていうんですか?
いつまにか、このスレッドは本物のROMと同じように動かす為に努力してる
人たちを称え、褒めてきました。
正常動作って定義がどこにあるかはファミコンで動作すれば分かるんじゃないですかね。
それ以外を異常動作というなら、エミュレータはほぼ全て異常動作ですよ。
247:名前は開発中のものです。
14/06/06 22:02:30.07 4Zl9JWw3.net
>>243
始まった瞬間操作する前に勝手に連鎖するってのだけでも
どうにかならないかな
初期配置のみパターンで持つとか
248:名前は開発中のものです。
14/06/06 22:51:57.22 kdjIsC0c.net
>>246
そうですよエミュは異常動作ですよ
実機で動かないのを言い訳してるだけにしか聞こえませんね
249:131
14/06/07 03:42:43.36 hwRmu2MG.net
本当に実機で試したのか知りたいですが、
自分の言いたい事は実機で動かない事の言い訳じゃなくて、
ファミコンのプログラミングが1つの古代技術でそれが通用するのはあくまでファミコンのみ
という事なんですが**が素晴らしいとか**の技術は優れているとかのある意味
マニアックな話の流れになっているというか、
ぶっちゃけ、自分の作ったファミコンゲームは技術的には全然優れてないので、
優れた技術を持った人たちに憧れたみたいなところがあります。
250:131
14/06/07 03:52:27.88 hwRmu2MG.net
**には、ラスタースクロールやスプライトダブラー、
FFの高速スクロール、BGの高速書き換え、パレットアニメーション
を入れてください。
251:131
14/06/07 09:33:01.78 hwRmu2MG.net
cc65の作ったやつは(REVERSI,SHOOTING GAME SAMPLE)動く自信がないですが、
nesasmで作ったやつも(IWA WO OTOSE,BLOCK)動かないんですかね。
252:名前は開発中のものです。
14/06/07 10:52:19.34 0OqTmEOh.net
>>244
スタートとセレクトは、サウンド系の開発用にテストできるように追加していた機能で
今回スタートを少し改良して選曲出来るようにしました。
セレクトは、効果音を作る時以外は意味を成さないので、次の完成版では削除する予定です。
253:名前は開発中のものです。
14/06/07 11:09:37.37 0OqTmEOh.net
>>247
初期配置をパターンで持つのは、バリエーションを作るのが大変なので、
採択したくないですね。
代わりに内部で連鎖が止まるまで処理を繰り返して、
そこからゲーム開始するよう実装してみます。
254:名前は開発中のものです。
14/06/07 11:18:00.96 0OqTmEOh.net
>>249
私も最終目標は実機で動作させてみることなのですが、
そこまでの道が遠い状態です。
一応、動作させるための目処は立っていて、材料とかもそろえたのですが
ROMライターから自作せねばならないため、いつになるかわかりません。
実機で動作したのを確認して初めて、ファミコンのプログラムを作ったと、
胸張って言えるかと個人的には思っています。
255:131
14/06/07 14:24:42.36 HAL7UNXv.net
>>254
ネットカフェから書き込みです。
そうですね。ファミコンの実機で動いたら感動しますし、
実機で動かしたいです。
ファミコンの実機は持っているのですが、ROMライターや
EEPROM、同軸ケーブル、ビデオデッキ、自分用のテレビ
256:131
14/06/07 14:27:25.94 HAL7UNXv.net
など問題が山積しているので、現段階では難しいです。
257:名前は開発中のものです。
14/06/07 15:48:51.46 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:名前は開発中のものです。
14/06/07 15:49:29.84 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
14/06/07 17:02:04.46 hwRmu2MG.net
ギコ猫さんのところで、覚えた技術ばかりという理由は
英語が出来ないという理由なのですが、これは理由になってないみたいですね。
①英語が出来ない
↓
②英語の技術情報が分からない
↓
③日本語だけの技術情報に頼る
の無限ループなので、英語を中学英語から
やり直したいと思います。
ちょうど良い本がアマゾンで見つかったので
URLリンク(www.amazon.co.jp)
あと、スプライトの定義のその定義の仕方は知らなかったです。
でも、ある意味スプライトDMAのアドレスを考えれば当たり前なんでしょうけど。
iny cpy bneの間違いは、間違えて覚えていました。
ギコ猫さんとこはパレットの読み込み時に
ldx #0
.loop
lda ourpal,x
sta $2007
inx
cpx #32
bne .loop
みたいにやっていたのですがよく考えれば、0-31までを読み込んでいたんですね。
これは、引き算の小学一年レベルの間違えですね。差がNの時、合計数は、N+1になるという事なんでしょう。
つづく
260:131
14/06/07 17:29:43.93 hwRmu2MG.net
>>257-258
VBlankとゲーム本体処理を分離ということはNMIを使うって事ですね。他の方も言ってましたが
スプライトと実際の座標を別に持つというのは、以前やったことがあるのですが、クソ汚いソースになってしまいましたが、少しだけわかってきた気がします。こんな感じですかね。
>>261に書きます。
VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。
Pad_Checkは、他の方が作られたソースなので、あえて外しました。ROMに0を書き込んだ意図は、恐らくないです。気づかないまま放置してしまいました。
ブロックの配置位置が有限個ならテーブル化できるんですか?今度やってみます。
アドバイスありがとうございます!!ホント助かりました。知らなかった事や理解出来なかった事が分かってよかったです。
261:131
14/06/07 17:30:36.51 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
14/06/07 17:32:41.18 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:名前は開発中のものです。
14/06/07 17:38:24.41 YYdbZPoT.net
英検三級、即ち中学卒業程度の英語力とgoogle翻訳があれば十分。
海外サイトの情報も何も全部理解する必要はないし、図、表、技術用語さえわかれば殆ど問題ない。
それに今では日本語資料も充実していると思うし、あえてギコ猫のところだけを参考にすることもないだろう。
初心者のうちは他人が作ったソースを見てよく理解し、そこからいろいろ学ぶのもいいだろう。
公開されているソースによっては丁寧に説明が細かく書いてあるものもある。
264:131
14/06/07 18:21:24.08 hwRmu2MG.net
>>263
英検3級は持ってますが、かなり文法が怪しいです。単語に関しては最も初期の「萌えたん」を
P-StudySystemを自作問題集を作って覚えた程度です。
1つ1つの単語が読めても何を言いたいのかわからないので、今持っているくもん中学英文法
という本をゆっくりと確実にやる事にします。
初心者というにも、初めてから時間がかかり過ぎてる面はあるのですが、
恐らく他の方の作ったソースを断片的にしか分かっていないというのはあると思います。
google翻訳に関しては、使うブラウザがchromeなので、標準で使えます。
265:名前は開発中のものです。
14/06/07 19:18:59.23 2SsDMldn.net
>>252
セレクトは効果音テストだったのね。疑問解消しました
ソフトの完成楽しみにしてます
266:名前は開発中のものです。
14/06/08 02:10:46.27 CkZRo6BG.net
>>260
> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。
VBlankの意味を理解していない節があるので、まずは、ブラウン管の話からします。
機知の情報かも知れませんが聞いてください。
ブラウン管の裏から電子銃で電子を飛ばし、ブラウン管表の蛍光面を発光します。
真っ直ぐ飛ばしただけでは、ただの点なので、磁界をかけて電子が飛ぶ方向を変えて
左上から右へ水平方向に線を書くように発光させ、再び左端に戻ってさっきより
ちょっと下の位置で同じように水平方向の線を発光させます。
これを画面下まで繰り返して、再び左上に戻ります。
これをすばやく繰り返すことで、ブラウン管の蛍光面全体に画像を表示します。(ラスタスキャン方式)
電子の飛ばし先が右端から左端に戻る期間を水平帰線消去期間(HBlank期間)、
下端から上端に戻る期間を垂直帰線消去期間(VBlank期間)と呼びます。
267:名前は開発中のものです。
14/06/08 02:12:41.17 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:名前は開発中のものです。
14/06/08 02:53:09.19 CkZRo6BG.net
>>267
続き
非VBlank期間中にCPUがVRAMにアクセスできる方法があります。
PPUレジスタ $2001 のbit3とbit4を0にして、BGとスプライトを非表示にすることです。
画像の信号を作るためのPPUのCHR-ROMやVRAMへのアクセスが止まるので
PPUバスが開放され、CPUはPPUを介してVRAMにアクセスできます。
代わりに、画面に何も表示されない箇所が現れることになります。
BGとスプライトを非表示にするタイミングにばらつきがあると、
画面がちらつく現象となります。
> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。
ファミコンの設計による制限であるため、仕様と言えば、その通りです。
269:名前は開発中のものです。
14/06/08 02:54:30.27 CkZRo6BG.net
>>268
続き
同世代の他のパソコンとかでは、表示中にもCPUからVRAMにアクセスできるものが
あるのに、ファミコンで出来ないのはなぜ?
→画面表示用の信号線とCPUからVRAMにアクセスする信号線が別になっているためです。
VRAMもデュアルポートメモリという、アクセスの口が2つある特別なRAMを使っています。
ファミコンのWRAMやVRAMに使われているのは、アクセスの口が1つのシングルポートメモリです。
→信号線も増えるため、基板上の配線が複雑化し、基板のサイズや層が増えてコスト増になる可能性があります。
ファミコンのVRAMにデュアルポートメモリを使わなかったのはなぜ?
→コスト削減のためです。
一般的にアクセスポートが余分にあるデュアルポートメモリの方がシングルポートメモリより部品代が高くなります。
また、WRAMとVRAMに同じ部品を使うことで、大量に発注し部品メーカーに単価の引き下げを交渉できます。
とりあえず、わかりやすく説明したつもりですが、間違いなどがありましたら
フォローお願いします。>All
270:131
14/06/08 06:24:49.26 RIyNgnKh.net
>>266
VBlankに関しては、「ファミコンの驚くべき発想力」という本の78ページ前後に
記述がありました。が、>>266さんの説明の方がより詳しく説明しているように
見えます。
HBlank期間のHはホライゾン?(水平)の略でしょうね。VBlankのVは、バーチカル(垂直)
の略な気がします。
NTSCとPALの違いも知らなかったのですが、日本は、NTSCだったんですね。
VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由が
あったんですか。
非VBlank期間中にCPUがVRAMにアクセスできる方法、これは知っていましたが、
欠点は知りませんでした。
271:名前は開発中のものです。
14/06/08 07:01:43.99 Jc27w7xL.net
Horizontal Blankingですかね
かつてはPPUの特定のバージョンのみで発生する不具合なんてのもありました
スクロールレジスタがある値の時、VRAMアドレスレジスタを触ると背景色が化けるというもの・・
272:131
14/06/08 10:50:38.68 RIyNgnKh.net
PPUの特定バージョンというのが分かりませんが、製造されたファミコン本体
ですか?それともエミュレータか何かですか?
スクロールレジスタは、$2005の二度書きレジスタですよね。
273:名前は開発中のものです。
14/06/08 15:26:42.07 25kxI5vs.net
RPGやなんかでフィールドから街へフィールドから戦闘への場面変更で一旦ブラックアウトするのは
画面初期化して書き直す時間を稼ぐためでもあったんだろうか?
274:名前は開発中のものです。
14/06/08 15:31:42.31 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:名前は開発中のものです。
14/06/08 17:20:23.01 2cLvFL4/.net
>>273
スクロールは基本的にネームテーブルを2枚とも使うので
表示されていない方を裏画面として使うのはちょっとめんどくさい
だから場面転換時には画面表示を一旦オフにする必要はあるけど
画面全体を書き換えるにしても数フレームだからほぼ一瞬で終わる
わざわざ時間稼ぎしなければならないほどでもないので
フェードなりの画面効果は演出を目的としてると思っていい
276:名前は開発中のものです。
14/06/08 18:14:36.81 QSuHGJdX.net
>>269
同世代のパソコンなどのVRAMはシングルポートのDRAMだよ
CPUをウェイトで止めたり、DMAで勝手にCPUが止まったり、アクセスするタイミングを
工夫して見かけ上同時に読み書き出来るようにしてあったり、VDPが調停してくれたり
色々あるけども
277:名前は開発中のものです。
14/06/08 20:16:46.77 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:名前は開発中のものです。
14/06/08 20:24:54.45 p43hB49G.net
NMI使えない、各種メモリやレジスタの初期化していない奴って
ギコ猫の前半章のコピペ&拡張だったんだな
後半章ばかり見てたから原因がわからなかった>>220
言い訳にもならないけどね
他人のソース調べればわかることだから
後半章のソースも問題あり
>>270
指摘されると、「私は~知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの?
「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」
(レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。
>>273
ゲームによる。
特にCHRがRAMでドラクエⅢやⅣのようにROM容量がきつくて圧縮されたゲームは遅い。
数10フレームかかる。
エミュのパレットをハックしてネームテーブルビュワー見ると展開のスピードを見やすい。
・戦闘画面に移行するとき
CHRのパターンテーブルがRAMな場合は普通に書き換えるだけで時間がかかる。
書き換える前にPRG内の画像圧縮を展開するだろうからもっと時間がかかる。
・マップ画面に移行するとき
マップとマップチップの展開に時間がかかる
市販のゲームは限られたRAMやROMのスペースで展開と転送をこなさなければならず
我々が専用のルーチンで高速転送するのとはわけが違う場合もある
全部ROMで持ってるゲームならもっと速くて10フレーム程度かな
279:131
14/06/09 18:51:10.28 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
14/06/09 18:53:26.51 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
14/06/09 18:55:00.34 Sx48Gggw.net
>>236さんのソースではなく、ネット上に公開されていたソースを使いました。
282:131
14/06/09 18:57:30.62 Sx48Gggw.net
変数に
>>・ 誤 lda APU_REG1_FRQCHG_ON
>>正 lda #APU_REG1_FRQCHG_ON
の違いって何ですか?
283:名前は開発中のものです。
14/06/09 20:17:24.32 dEpln6L7.net
実機で検証してくれたことに対して
>本当に実機で試したのか知りたいですが
って何気に失礼だよなこいつ
284:266
14/06/09 20:51:16.15 oKltYKig.net
>>280
> ”NMI”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。
131さんには申し訳ないが、
まずは、WikipediaでCPUの割り込みについて勉強してきた上で
URLリンク(ja.wikipedia.org)(%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
14/06/09 21:16:45.44 Sx48Gggw.net
言い訳になっちゃうかわかりませんが、できたら明日の朝に書き込みます。
ホント自分は基地外なのと、頭が痛いし熱いのでこのままほおっておくと
風邪をこじらすので、すみませんが、失礼します。
リアルが充実してる人たちがうらやましいです。
286:266
14/06/09 21:30:37.71 oKltYKig.net
>>285
別に急がなくてもいいよ。その代わり自分でちゃんと考えること。
体お大事に。
287:名前は開発中のものです。
14/06/09 21:32:44.17 fvy3sA+P.net
頭の悪い高校生なんだから察してやれよ
こいつ高校の名前を自分から暴露するような奴だぞ
しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに
色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ
288:名前は開発中のものです。
14/06/09 21:38:04.12 dEpln6L7.net
自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは
自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな
近所でネコの惨殺死体がなければいいけど
289:名前は開発中のものです。
14/06/10 03:34:36.85 OhR24Wq5.net
多くのエミュレータの再現目標は「市販ゲームが動作すること」であって
不完全なプログラムが「実機と同じように動作しない」というレベルでの再現には至っていません
ファミコン程度の規模であっても完全再現するエミュレータはいまだに存在していません
たとえばファミコンでは電源投入時にRAMの内容が不定であり
すべての市販ソフトでは確実に動作させるために必ずRAMを上書き消去するなど、必ずそれを前提とした実装がされています
しかしエミュレータの中には通電直後のRAMの初期値が&H00に設定されているものがあり
初期値が何であれRAM内容を消去するように実装されている市販ゲームは問題なく動作しますが
RAMの初期値が&H00になっているものであるとして組まれた不完全なプログラムだと
そのエミュレータでは動作するが実機では意図した動作をしないという問題に陥ってしまいます
同様ににVBlank期間が実機より長めに設定されているエミュレータも存在しています
VBlank期間が長いことで市販ゲームを動作させることに影響はありませんが
そのエミュレータ固有のVBlank期間を基準として作成された自作プログラムは
実機上だとプログラマの意図通りの動作をしないことになります
このようにエミュレータ上のほぼすべての挙動において、実機ほどシビアではなく動作してしまう方向に緩く設計・再現されているため
実機の挙動を意識せずにエミュレータを基準として作成された自作プログラムの多くは
結果として実機で動かないものになってしまいます
290:名前は開発中のものです。
14/06/10 03:38:20.96 OhR24Wq5.net
マッパーが電源投入時に選択するバンクですが
通常、実機ではハードワイヤードされている最終バンク以外の選択可能バンクは第1バンクが選択されるケースがほとんどですが
多くのエミュレータはなぜか先頭から順番通り昇順に選択されます
市販プログラムは必ず初期バンクを設定するように実装されているため問題なく動作しますが
バンクの並びをアテにした不完全なプログラムはエミュレータでは動くが実機では動かないというケースが起こります
>>240のプログラムはCHRバンクの初期設定がされていないので
CHRバンクが未設定でも順並びに選択されるようなエミュレータでは問題なく動作しているように見えますが
実機だとスプライト側のバンクがすべてバンク0になっているので、宝石落下時のスプライトがBG用のCHRで表示されてしまっています
291:名前は開発中のものです。
14/06/10 05:50:34.76 DX+Q254R.net
初期化処理って重要なんだなぁ
292:131
14/06/10 07:44:01.93 rVY6XcCX.net
>>287 :名前は開発中のものです。:2014/06/09(月) 21:32:44.17 ID:fvy3sA+P
>>頭の悪い高校生なんだから察してやれよ
>>こいつ高校の名前を自分から暴露するような奴だぞ
>>しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに
>>色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ
以前チャタリングに関して質問したり、ネームテーブルが固定画面で960もあるから
どうやって書き込むのかと質問した者でもあるのですが、それではマズイんですか。
あと、これはおかしい話なんですが、このスレッドのパート1からROMってました。
もう10年も前の話ですよね。
>>288 :名前は開発中のものです。:2014/06/09(月) 21:38:04.12 ID:dEpln6L7
>>自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは
>>自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな
>>近所でネコの惨殺死体がなければいいけど
猫や犬は可愛いので、そんな事しません。小さい子供に馬鹿にされても黙ってしまうような
性格なので。あと、その時は、自分でも実力が足りない自覚が無かったんです。
逆ギレ云々言った人たちには悪いですが、切れたのは事実ですが、本音と建前を
使い分けるのが日本人の美徳じゃないですかね。
そもそも、逆ギレと決めつけるあたり、あなたたちは
叱ったのではなく、怒ったと考えてよろしいでしょうか。
>>284
途中ですみませんが、
1)NMIは、ハードウェア割り込みの一種でマスク不可能な割り込み、
VBlankはブラウン管の電子銃が下端から上端に戻る際の割り込み。
293:名前は開発中のものです。
14/06/10 08:52:45.01 FVxA7Fkb.net
NMIとVBlの正確なタイミングが分からないんだよな。
同時だと動かない市販タイトルがある。
294:名前は開発中のものです。
14/06/10 11:40:26.64 CuFktdyJ.net
10年もこのスレ見ててそのレベル・・・そして技術資料すら理解できない英語力・・・
最早かわいそう過ぎて同情するわ・・・
295:131
14/06/10 12:27:03.05 21YAZMo1.net
他のパソコンから書き込みです。
なんというか、僕が素直じゃなくてしかも怒りっぽくて
先人の知恵を学ばないという姿勢が悪いと思っています。
低能という言葉がありますが、まさに自分がそうだと思っていますよ。
自他ともに認める低能です。ファミコンのCPUより遅い動作周波数
なので。>>246は撤回します。まことにすみませんでした。
ごめんなさい
296:131
14/06/10 18:17:23.08 rVY6XcCX.net
>>284
2)
VBlankに入った時に必ずNMIの割り込みが訪れるからでしょうか
3)
本来ならばメインループにNMIを使うべきだからでしょうか
VBlankにポーリング?という言葉を初めて知りました。
297:名前は開発中のものです。
14/06/10 22:38:25.24 iI+cGjJO.net
>>245
ところで
NES Assembler (v3.21, 2005/04/09, Denki Release)
これどこで手に入れたの?
かなりレアなバージョンぽくて見つからない。
RAMの初期化、スプライトメモリの初期化
以前誰かに指導してるでしょ、あちこちの他人ソースでも示されているし
スプライトONにしているデモプログラムでスプライトメモリ初期化してないのは論外なんだよ
だからG-NESのスプライトメモリビュワー使えって
未初期化メモリにアクセスしたら他の言語のコンパイラは警告出すでしょ
逆にファミコンほどの原始的なハードで、なぜ0フィルされると思った?
0フィル傾向が強いエミュだってハードリセット、ソフトリセットで挙動違うわけだしね
298:名前は開発中のものです。
14/06/10 23:25:46.23 DX+Q254R.net
HuC v3.21付属のやつじゃねえかな
299:名前は開発中のものです。
14/06/10 23:48:02.78 iI+cGjJO.net
見つけた
300:名前は開発中のものです。
14/06/11 00:54:21.08 vuASjJOE.net
1)Vblankは厳密には割り込みそのものではない。語源を考えればわかる。
あとマスク不可能な割り込みでは説明不足。
2)ファミコンにおいてNMIは必ず訪れるものか。
もし必ず訪れるのならあんたが今まで書いてきたプログラムはどうなる。
$0000から命令を実行しまくる羽目になってるだろ。
3)それならばなぜNMIを使うべきか。
全体的に不正解および説明不足そして調査不足、理解や考えも不足。
わからない言葉があったらまず目の前のPCで調べろ。
あと自虐がまるでへそを曲げた子供のようでみっともない。自虐は反省とは違う。
しばらくROMって頭冷やすことをおすすめする。
301:131
14/06/11 04:31:31.45 FDPL1IKA.net
分かりました。しばらくROMることにします。
ただ、僕は本当に低能ですよ。何しろ、IQが69なんで
(test the nation)
302:名前は開発中のものです。
14/06/11 19:10:46.06 HuzB/5/t.net
言葉選べない奴ってみっともないなぁ
上級者気取ってふんぞり返って偉そうに他人に説教しとるが相変わらずガキ丸出し
これが一人だけやってるんだから目立つわな
いいかげんさあ、そのチンピラみたいな恥ずかしい態度で人に接するのはおよしなさいよ
303:名前は開発中のものです。
14/06/11 19:14:38.42 HuzB/5/t.net
まあ、こういう苦言を呈してあげても
前みたいに自分の口汚さを正当化するための言い訳しか言わないで
何が悪いのか理解出来ないまま同じ事を繰り返し続けるんだろうけど
他人に反省促す前に、自分がまず反省して態度改めなよ
304:名前は開発中のものです。
14/06/11 20:42:36.74 QsOFOWgt.net
多重人格らしき
”リバーシ君” が湧いてから同時期湧いて来た子たち
”YY-CHRとNESASMが使いづらい君”
”NESASMが難しいからC言語で組もうよ君”
”iNESヘッダや.incbinのことはわからないけど、nesdevの仕様書すべて読んできます君”
能書き”ダブラ君”
三日坊主の”まとめwiki君”
”DPCMの仕様教えて君”
”www.dotup.org大好き君”
スタックぶちこわしてても ”PPU制御レジスタのタイミング等も問題無いはずなのに。 君”
”デバッガ使えません君”
こんな初歩の初歩教えるのが上級者扱いなのか
だから自演て言われてるのに
ゴミみたいな不良動作のプログラムのアップロードに対し
わずか数時間で
”fceuで陽性かくにん よかった”
とレスが付くのも特徴
追い込まれると
~とは別人だけど、と枕詞をつけて自己弁護
305:266
14/06/12 01:31:23.63 VinxFlKC.net
>>292 >>296
1)
NMIの説明はまぁ正解。300さんの指摘の通りVBlankを割り込みと言い切るのは誤り。
NMIは割り込みの種類を示す言葉でVBlankは映像信号に関する言葉であり、そもそもカテゴリが違う。
2)
私が考えていた正解は、
PPUから出るVBlank期間を示す信号線が、CPUのNMI割り込みの入力ピンにつながっているから
300さんが「必ず訪れる」は誤りと言っているのは、VBlank期間に入ったときに
VBlank期間を示す信号線に信号を出すか出さないかをPPUで制御できるため
3)
NMIを使用するかどうかは別に問題ではない。
NMIとIRQのベクタ(割り込み時に実行されるアドレス)に0が設定されているから。
PPUなどのレジスタの設定を誤り割込みを受け付ける状態になった場合に
何が書かれているかわからない0番地をプログラムが走ることになり、
安全性を考慮しておらず、知識不足であることが読み取れるから。
割り込みを使わないのであれば、すぐに rti で戻るルーチンのアドレスをベクタに設定するべき。
Nmi:
rti
Irq:
rti
.org $FFFA
.dw Nmi
.dw Start
.dw Irq
306:名前は開発中のものです。
14/06/12 01:36:18.33 VinxFlKC.net
>>290
指摘ありがとうざいます。
初期化するよう処理に反映します。
#やっぱり実機で確認できる環境欲しいな
307:名前は開発中のものです。
14/06/12 02:17:39.78 VinxFlKC.net
>>301
ROMてても知識は身に付かないだろうし、お題を出すのでプログラミングの経験を積んでみてはどうだろうか。
第1ステップ
スタック、メモリ、PPUなどの初期化を行い、VBlank待ちのループを行う、基本のプログラムを実装する。
NMIの割り込みも実装し、NMIの割り込みの度に、$ffのメモリを1増加させる。
割り込み処理でないVBlank待ちのループでは、$ffのメモリを監視して255から0になる度に$feのメモリを1増加させる。
エミュレータのメモリビュアーで約4秒ごとに$feのメモリの値が1増加することを確認する。
第2ステップ
BG画面を16x16サイズのブロックで画面いっぱいに埋める。
パレットの設定を行う。
画面にゴミが出ないように全スプライトを画面外(Y>=240)の位置に表示する。
第1ステップのプログラムを改良する。
割り込み処理ではないVBlank待ちのループで、VRAMに書き込みたいデータを用意してバッファに格納する。
NMI割り込みで、スプライトデータのDMA転送の実行とバッファに格納されたデータをVRAMに書き込む処理を行う。
プログラムを書く際に、他人のソースを参照するのは良いが、コピペは絶対行わないこと。
必ず目で見て手打ちすること。
書いたソースは、何度も読み直して、処理を説明できるぐらいまで理解すること。
プログラムが出来たら内容をレビューしたいので、批判にめげずに公開して欲しいと思う。
308:名前は開発中のものです。
14/06/12 06:23:30.12 WH6q4E6P.net
なんでこいつが仕切っとるの?
309:131
14/06/12 16:17:30.84 kfJUEFGs.net
書き込みたい気持ちはありますが、大分経って事態が鎮静化
してから書き込みたいです。あと、少なくとも今から
100レス程度は様子を見ながら、今から同時にお題を解いてみます。
というのも技術的な指導ならゲーム開発技術板のスレッドなので分かります。
しかし、自分の未熟な部分があるのは自分でも分かるのですが、
明らかに何度も自分の人格を否定していてスレ違いになってるのもあります。
310:131
14/06/12 16:19:26.08 kfJUEFGs.net
それがどうした?悪いのはお前だろと言われればそうなのですが
これが何度も続くようなら、明らかにいじめとしか思えないのです。
いじめと思うのは間違っていると思うのなら、どうして簡単に何度も
いろんな欠点や粗を探してこうも傷つけたがるのですか?
あと、自演と言っている人へ、
自演をしているように見えるのは、明らかにおかしいですね。
IPアドレスを2chの運営元に頼んでもらって調べれば分かる
とは思います。IPアドレスが分かるという事は、書き込んだ場所も
特定されます。
ファミコンのプログラムを公開する書き込んでから家から出かけて
帰ってきてから同じパソコンで書き込んだ事くらい見抜けると思うのですが。
311:名前は開発中のものです。
14/06/12 19:04:44.04 W0ti7vxN.net
それにしてもやけに静岡県民が多いな
自演に間違いないな不自然すぎるわ
312:名前は開発中のものです。
14/06/12 20:14:34.35 +ww++sAc.net
あと100レスと言わず一生ROMってればいいのに
そうすりゃスレも荒れずに済む
313:131
14/06/12 22:17:28.55 kfJUEFGs.net
まってください。静岡県民が多いのは、俺が周囲から基地外呼ばわり
されてるのと、症状のせいだと思いますよ。
それと、自演と決めつるのはまだ早いです。なぜなら、
専門用語を知らない人間が自分を弁護できると思いますか?
そして、恐らくその症状のせいで、うざったく思うから
このスレで叩かれているのだと思います
これで最後にします。100レス待ちます
314:名前は開発中のものです。
14/06/13 06:24:29.34 6Pgo1qVH.net
いいから>>307が終わるまで書きこみを控えてくれ・・
315:名前は開発中のものです。
14/06/13 16:40:28.64 vJRDBdqC.net
スレ違いかもしれないけど、ディスクカードをromに焼くことができる?
316:名前は開発中のものです。
14/06/13 19:00:31.08 KxCbS2Qo.net
>>315
何のソフトかにもよるが原則不可能と思っていいだろう
マッパー0相当のソフトだってアドレスの手直しが要る分相当な作業量になる
317:名前は開発中のものです。
14/06/13 20:43:27.55 CSwUA4nC.net
>>316
機械語レベルの理解力があれば、できる?
318:名前は開発中のものです。
14/06/13 21:03:18.07 KxCbS2Qo.net
理解力と相当な根気が要るだろうな
絶対アドレス参照の命令で$6000以降参照のものをすべて書き換えなきゃいけないのだから
319:名前は開発中のものです。
14/06/13 21:17:05.99 r1M/KsAU.net
>>318
ディスクシステムの片面の容量は64Kバイト?64Kビット?
320:名前は開発中のものです。
14/06/13 21:36:12.04 JJAfyk3S.net
ディスクシステムの仕組みも理解する必要があるだろう。
321:名前は開発中のものです。
14/06/13 21:36:22.79 KxCbS2Qo.net
64Kバイトといわれている 実際にはもっと少ないけど
というか厳密には1バイト単位のような定まった容量はなかったはず
もし片面8Kバイト(64Kビット)だとしたらドンキーコングすら収まらないよ
というかこれぐらい調べれば出てくるのでまず調べようね
322:名前は開発中のものです。
14/06/13 22:34:15.19 AgN9/sjS.net
>>321
ディスクシステムのソフトには、名作が多いのでリンクの冒険、ドラキュラ2など海外版を所有してますが、ディスクシステムでしか遊べないソフトがあるので、ROM化出来たらなと思いました。音源も積んで。って誰かやってないですかね?
323:名前は開発中のものです。
14/06/13 23:03:40.54 KxCbS2Qo.net
かつてmdc5linkerというものがあった(ROM化の際にはこれの個別パッチが参考になるかもしれない)
ただし悪用が多すぎてサポートは終了した、ディスク>カセット変換したものを売りさばくような輩が続出した
事実、ある時期ヤフオクで本来ディスクでしか出ていないソフトがカセットとして出品されている例が多数確認できた
というか普通にディスクシステムでやれば?
一体ROM化ってなんのため?ディスク持ってるならディスクシステムでやればいいじゃん
ROM化前提なら吸出しも完了してるだろうしバックアップも万全、なのにあえてROM化しようとする意図がわからない
どの道、音源までサポートした上でROM化するにはいろんな知識が要る
ディスク音源と互換性のあるチップは存在しないため、RAMアダプタ内のもの(ただし非常に大きい、64pinDipだったかな?)を使用するか、もしくは
新たにFPGAなどのPLDを使って実装するか・・・方法はあるがディスク音源如きにそこまでする人がいるかどうか
324:名前は開発中のものです。
14/06/13 23:55:45.03 D3ve8EiV.net
>>323
ディスクシステムは、ツインファミコンもそうですが、ベルトの劣化もありますし、ヘッドも劣化するでしょう。
325:名前は開発中のものです。
14/06/14 00:13:40.26 dYYokVoB.net
>>324
URLリンク(fcs.main.jp)
知っているかもしれないがこういう方法もある。
バックアップについてはエミュが嫌なら、FDSLOADRという、
PCを仮想ディスクドライブとして使えるようにするソフトがある。ただ数年前の記憶では、相当PCの機種を選ぶソフトだった。
それからDOSベースのソフトのため現代のNT系OSじゃ動かないから、古いWin9x系の動くPCが必要になる。
更にRAMアダプタとの接続のためPCが双方向通信可能なパラレルポートを持っている必要がある。
これを使うとPCに存在するFDSファイルをRAMアダプタに転送できる。
326:名前は開発中のものです。
14/06/14 00:21:55.47 zzfPZdkB.net
最近FDSLOADRrの上位版のようなfdsloadersaverを作った方がいるよ
327:名前は開発中のものです。
14/06/14 00:25:39.56 TXG/RYzX.net
>>325
アドバイスありがとうございます。今思いついたんですが、ディスクのRAMアダプターを改造してMicroSDカードに入っているディスクのイメージを転送できるに出来たらいいのになあ
328:名前は開発中のものです。
14/06/14 16:29:21.64 +sFuyt6O.net
機械語の知識(開発ができるレベル)と、
論理回路の知識(設計ができるレベル)に加えて、
電子工作を行えるスキルが必要
あと、英語力(データシートとか、ほとんど英語)。
329:名前は開発中のものです。
14/06/14 21:38:32.26 L1L59kK3.net
131氏は何が嫌われてるか分かってないんだろうな
何か指摘されたら「あ、はい俺が悪いですさて、」くらいの勢いで
全く態度を変えず話を続けるのがどれだけ人を無視した行為か
理解できないんだろうからもう書き込むなって言われてるんだよ
330:名前は開発中のものです。
14/06/17 15:26:48.71 6w/HBkb5.net
なんだそりゃ
ヤクザの因縁レベルだな
キチガイに粘着されて可哀想
331:名前は開発中のものです。
14/06/22 12:04:05.94 FYXz9cFX.net
Vblank(NMI)発生待ちじゃなくてVblank(NMI)終了待ちの書き方がわからない。
$2002読めばVblank中でも即座にスキャンラインの頭に戻るのかな?
332:名前は開発中のものです。
14/06/22 12:46:49.11 RkNLcYOw.net
普通は終了待ちなんてしないと思うが・・・
あるとすればフレームIRQをVblank終了間際に起こすようにするとか、かな?
試していないからできるかどうかわからないけど
333:名前は開発中のものです。
14/06/22 15:38:33.12 cAYbetgY.net
あのバカはまだデバッガ扱えないんだな
他人のソースを読む気もない
334:名前は開発中のものです。
14/06/22 21:47:58.16 SUkUlJAf.net
何だかんだ、がんばっているんだし応援しようと思う
完成を楽しみに待っています~
335:名前は開発中のものです。
14/06/26 01:45:41.89 Mvj8DjXQ.net
RevolvingGemsで予定していた実装が全て出来たので公開します。
指摘を受けていた
・ゲーム開始時に消滅が発生しないよう駒を配置
・初期化時にCHR-ROMのバンクセレクトを明示的に行う
の処理も盛り込んでいます。
あと、フレームワーク部分(main.asm)も処理を見直して結構手が入っています。
URLリンク(homepage3.nifty.com)
ここまでお付き合いして頂きありがとうございました。
336:名前は開発中のものです。
14/06/26 21:00:12.97 9qzAY4Nu.net
夜中2時に書き込む
出来る方の別人格さんおつ
337:名前は開発中のものです。
14/06/26 22:36:58.03 HYUmCg5c.net
すげー(2回目)
乙
338:名前は開発中のものです。
14/06/28 08:52:02.98 1mbR3dV7.net
335氏
ソース勉強させていただきます
339:131
14/07/02 17:15:28.00 b6UJAuU+.net
ここを見てても本当に良いのだろうか?という気持ちと
ヤジでいまだに言ってくる人がいて、不快感しか湧かない
ので、ここはまず、書き込みも見ることも辞める事にします。
なのでいさぎよく、このスレから出ていく事にします。
ちなみに、「逃げる理由が出来て良かったな」とか書き込みそうなんで
言っておきますが、言う人は何とでも言うので仕方ないと思います。
最後まで不快感をお互いに感じあってしまい、すみませんでした。
340:名前は開発中のものです。
14/07/02 21:15:54.55 ccGvVyCV.net
前スレで戦力外通告されてなぜ残った
英語読む気ないのはこの板的にも戦力外
341:名前は開発中のものです。
14/07/03 22:16:55.66 hPES0Si7.net
>>340
気に入らなきゃほっときなよ
小言を言うとまたグダグダと返答されるよ
342:名前は開発中のものです。
14/07/11 02:02:23.66 63/tpOMg.net
他スレみたいにテンプレに
初心者向けに何か書いておいたほうがいいかもね
343:名前は開発中のものです。
14/07/31 13:43:13.27 7VJ7BYaIN
>>321
ブロック単位でモジュール化されているのでその間のGAPの分もあるからでは。
>>324
ベルトの劣化なら今はモビロンバンド一択。
ROM化は技術的に不可能でないらしいから必要なら頑張って作ってみれば。
アイディアとしてはスーファミのサスケの様なファミコンとRAMアダプタの間に挟む基板に
ROMに落としたゲームとそれをRAMアダプタに転送するプログラムを搭載すれば行けそうだ。
自分は他の8bitパソコンでメディアの劣化があるので↑のアイディアの実用化を目指してる。
344:名前は開発中のものです。
14/10/05 12:06:25.72 TCLHVT3o.net
東方Projectみたいな画面は作れないか?との興味から作りはじめたのですが、弾丸の表示時点で、CPUの処理能力不足により先が見えてしまいました。
URLリンク(homepage3.nifty.com)
Experi9.nes .. 160発表示版
Experi9x.nes .. 負荷可視化板
Experi8_noshot.nes .. 弾丸非表示版
Select+下 でスクロール開始、Select+左右 で画面モード切替です。
弾丸の最大数を96に落として、仕切り直す予定。
自キャラ、敵キャラ、弾丸以外は、BGで描画しています。
枠内のスクロールは、ハードウェアスクロールとソフトウェアスクロールの併用です。
16x8の範囲でパレット指定や会話ウィンドウの表示に、縦方向のラスタスクロールを駆使しています。
345:名前は開発中のものです。
14/10/06 04:59:32.10 6+tpiQ9J.net
ジェムの人キター
消えてる時間が結構長いのでかなりスプライトが見難いですねぇ
BGは相変わらずえらいことになってますが、負荷軽減でパレットはあきらめて
MMC5の画面分割機能の使用を考えてみても良いかも
346:名前は開発中のものです。
14/10/06 23:47:50.82 5bZUXl8p.net
>>345
160発を56個のスプライトで表示しているので、
大体3フレームに1回の表示でちらつきが目立ちます。
次の版は、96発にスペックを落とすので、
2フレームに1回の表示になるので多少は改善されるはず。
MMC5は魅力的なのですが、最終目標が実機での動作なので
勿体無くないMMC3で頑張ろうと思っています。
あと、負荷は弾丸の処理が半分以上占めているので
MMC5を使っても状況はあまり変わらないかと思います。
すでに96発MAXに書き換えて、弾丸1つ辺り5byteの領域から
8byteに増えて、Tile番号と属性値が保持できるようになったので
処理が軽くなりました。
弾丸の角度の変化が無ければ、Bombの下辺りまでの
処理時間で済んでいます。
347:名前は開発中のものです。
14/10/07 04:35:07.91 3yj7hFfS.net
>>346
1/2フレーム表示ならグラIIのミサイルなどで使ってましたね
欲を言えばですが、弾数が少ないときは1/1フレームで表示出来たら
いいかも
試しに割り込み無しにしたところ18ライン分くらい処理が減ってました
MMC5自体は光栄のゲームで結構出回ってるので入手は簡単かと
思いますが、今更変えるのもあれですね…
期待してますので頑張ってください
348:名前は開発中のものです。
14/10/09 21:46:13.35 44sWDsnn.net
NESASMでアセンブルしたNESファイルは自作カートリッジに焼く時もそのまま使えるんですか?
349:sage
14/10/09 21:50:10.76 hFc1Ndfq.net
RevolvingGems 1.00を実機で動かしたら不具合が出たので、
今さらですが調べて直してみました。
・タイトル画面の表示が乱れる
ウエイトが足りず、割込み処理での最後の$2006への書込みが
HBLANK中に行われていないようので、user.asmのUser_Irq_Title:直後に
nopを(余裕を持たせて)3つ追加して乱れを消しました。
・あそびかたを選ぶと止まる
タイトルで設定された割込みが無効化できずに発生し続けているようです。
Guide_Init:でIRQ_FNC+1を0にしたことで、
Irq:のjsr IRQ_FNC-1が飛ばされるため、
User_Irq_Title:中での割込みの無効化が動かないのが原因と思います。
user.asm 474行目のsta IRQ_FNC+1をコメントアウトして動くようになりました。
350:名前は開発中のものです。
14/10/09 21:51:03.03 hFc1Ndfq.net
sage間違えたorz
351:名前は開発中のものです。
14/10/09 21:56:48.11 hFc1Ndfq.net
>>348
kazzo+anagoのような環境だと直接NESファイルを使って書けますね。
ROMライタで直接書き込む場合だとPRGとCHRへの分割が必要かと。
352:名前は開発中のものです。
14/10/09 22:09:17.01 44sWDsnn.net
>>351
ありがとうございますNESplitという分割ツールがありました。
353:名前は開発中のものです。
14/10/09 23:56:08.22 EgCI09Ne.net
>>349
実機での動作確認ありがとうございます。
>タイトル画面の乱れ
割り込みが入ってから110clk目に最後の$2006を書いていたのですが、
nop3つ追加ということで、116clk目が正解ということですね。
今のやつも直さないと。
>あそびかたを選ぶと止まる
VBlank中にIRQ_FNCを更新する仕組みを追加します。
354:名前は開発中のものです。
14/10/10 00:27:59.23 giiUNY1I.net
>>353
MMC3だとラスタの260ppu_clk辺りで割込み発生みたいなので、
そこから次ラスタの表示期間終了の256ppu_clkまでの、
(341-260)+256=337ppu_clk = 112.3cpu_clk
が必要な待ち時間だと思います。
sta $2006を確実にHBLANKに入れるために+4clkしましたが、
書込みが最後の1clkに行われるとすれば、数クロック削れるかもしれません。
355:名前は開発中のものです。
14/10/10 21:22:02.81 giiUNY1I.net
>>353
追実験して、nopは一つでも乱れは消えました。
割込み発生から最後のsta $2006完了までが112clkになるので、
ちょっとぎりぎりな感じはしますが。
356:名前は開発中のものです。
14/10/11 11:53:25.77 JCcDlcCt.net
>>354
URLリンク(wiki.nesdev.com)
Regarding PPU A12 rises:
If the BG uses $0000, and the sprites use $1000, then the IRQ will occur after PPU cycle 260 (as in, a little after the visible part of the target scanline has ended).
If the BG uses $1000, and the sprites use $0000, then the IRQ will occur after PPU cycle 324 of the previous scanline (as in, right before the target scanline is about to be drawn).
When using 8x16 sprites: When there are less than 8 sprites on a scanline, the PPU makes a dummy fetch to tile $FF for each leftover sprite. In 8x16 sprite mode, tile $FF corresponds to the right pattern table ($1000).
PPUアドレスバスA12がスキャンラインカウンタのクロックとなっている。
The counter is clocked on each rising edge of PPU A12, no matter what caused it, so it is possible to (intentionally or not) clock the counter by writing to $2006
BGとSPRをどっちに配置するかで、立ち上がり、立下りが変わるので、
IRQが起きる位置とライン数が変わるようだ。
357:名前は開発中のものです。
14/10/13 07:14:58.66 khCfiiiQ.net
>>355
追試ありがとうございます。
clkを伸ばした場合、エミュレータでどうなるか確認したのですが
こちらでは1clk伸ばしただけでも乱れが発生しました。
実機向けとエミュレータ向けの2つのバイナリを用意する必要があるようです。
358:名前は開発中のものです。
14/10/20 02:34:56.29 VhFQD/az.net
だれかギコ猫より分かりやすいサイト作って
もしくは解説コメント付きのソース
359:名前は開発中のものです。
14/10/27 22:58:49.97 WLPSmV4W.net
ギコ猫があるだけ恵まれた環境。1990年代のネットはファミコンの
内部資料は英語しか無かったからね。だから普通に挫折した。
360:名前は開発中のものです。
14/10/28 05:34:41.72 40z/j/Ad.net
バッ活とファミリーベーシック
361:名前は開発中のものです。
14/11/05 02:06:14.46 8FC6s1LF.net
Experi9(>>344)の改良版をアップしました。
URLリンク(homepage3.nifty.com)
結局のところ、ファミコン本体の2KBのWRAMだけでは
性能面を向上させつつ、やりくりするのは難しいとわかったので
MMC3の拡張WRAMを解禁、弾丸のワーク領域をそちらに移しました。
本体のWRAMに余裕が出来たので、マップの仮想バッファを
倍に増加して、既存の処理を最適化して負荷を下げました。
色々なテーブルを乗せている関係で、共通ルーチン用のプログラム領域の
サイズが足りないか不安になってきたのですが、拡張WRAMの空き領域に
プログラムを転送すれば良い事に気づき、さらにRAMに転送するんだから
自己書き換えルーチンにできるな、ということで、自己書き換えで性能が
上がりそうなルーチンを試作してみました。
あと、当たり判定実装したり、弾丸の移動処理作ったり、BGM鳴らしてみたりで
処理落ちしないのを確認できたので、性能面で目処が立ったかなというところです。
362:名前は開発中のものです。
14/11/05 02:20:57.06 8FC6s1LF.net
試作した自己書き換えルーチンその1
ClearExtWorkMemory:
ldy #$60
lda #$00
tax
.1:
sty SMCLabel(.2+2)
.2:
sta $6000,x
inx
bne .2
iny
cpy #$68
bne .1
rts
SMCLabelは、転送先のアドレスに変換するユーザ関数です。
sta $6000,xの$60を書き換えています。
Indirect Indexモード 6clkに対して、Absolute Indexモード 4clkで
((6clk-4clk)*256-4clk)*8 = 4064clkの節約。
363:名前は開発中のものです。
14/11/05 02:32:50.39 8FC6s1LF.net
試作した自己書き換えルーチンその2
Shot_Alloc:
ldx SMCLabel(.2+1)
.1:
lda SH_X,x
bmi .9
lda Round96+1,x
tax
.2:
cpx #0
bne .1
.db $24 ; bit <$b8 (set v-flag)
.9:
clv
lda Round96+1,x
sta SMCLabel(.2+1)
rts
cpx #0の#0の部分を書き換え。
弾丸の空きを検索するルーチンで、次回の検索時は空きを検出した
次の場所から検索を始める処理となっています。
Round96は、0,1,2,...94,95,0,1,..と定義されているテーブルで
lda Round96+1,x で (x+1)%96 の計算をしています。
ゼロページの$b8には、$6cが格納されており、bit <$b8 でv-flagが設定されます。
空きがない場合にv-flagが設定されてリターンします。
364:名前は開発中のものです。
14/11/05 02:43:06.58 8FC6s1LF.net
ファミコンのプログラム領域はROMだし、メモリも余裕無いから、
自己書き換えルーチンには縁が無いと思っていたのですが、
拡張WRAM使うとなると、有効な手段であるなと。
ただ、よく考えないと自己書き換えやっても効果を得られないので
どのようなパターンが有効か思考する必要ありだなというところです。
365:名前は開発中のものです。
14/11/05 11:50:49.69 kV2Q14jG.net
>>361
おお、スプライトも見易くなりましたね。
実機(MMC3B)でExperi10.nes焼いて動かしてみましたが、BGが結構
崩れています。
Experi10_irq114.nesですとBGが崩れはしませんが東方の文字の中心あたり
からチラチラしています。
また、東方を知らないのでわかりませんが会話表示とスクロールをするとたまに
BGが崩れるようです。
(バンク切り替えに失敗したような感じで別の絵が出てました)
参考になれば
366:名前は開発中のものです。
14/11/05 18:36:12.45 8FC6s1LF.net
>>365
実機での確認ありがとうございます。
会話画面表示時のBG崩れは、IRQのCHR-BANKの切り替えと
メイン処理のPRG-BANKの切り替えの衝突です。
PRG-BANKの切り替えは弾丸の移動量や角度算出のテーブル引きで使用しており、
会話画面では行わなくなるので、現在そのままにしています。
367:名前は開発中のものです。
14/11/08 23:22:26.65 K8lCFBpt.net
ファイル実行したけど会話画面っていったい何のことなんだ
368:名前は開発中のものです。
14/11/09 03:54:20.59 /2f/mjgU.net
セレクトボタンを押しながら上下でバックグラウンドのスクロール量調整
同じく左右で会話画面、ボスHPゲージ消去などができる
369:名前は開発中のものです。
14/11/18 00:24:39.88 sul/9y5g.net
今月号(先月号から?)のゲーラボに、ファミコンソフト開発って記事が載ってた
初歩的な奴だったから、今月号からかも。立ち読みしかしてないけど
370:名前は開発中のものです。
14/11/22 00:37:26.95 6HaTj4+E.net
ゲーラボのファミコン開発は1回のみなのかな
DSみたいに連載して欲しいなーと思う
好奇心的な需要が有るんではないかと思ったり
>>361
弾幕が素晴らしいです。ファミコンでは史上初?なのではないでしょうか
BGのIRQスクロールも面白いです。
>>368
参考になりました。ありがとうございます。
371:名前は開発中のものです。
14/11/24 07:57:25.72 +tDgRqjL.net
このスレに常駐して間違いを指摘してる人は何者なのかね?
元ハドソンの中○さん?
372:名前は開発中のものです。
14/11/24 08:33:08.82 +tDgRqjL.net
もしかしてカル○ャーブ○ーンのあの社長か?
373:名前は開発中のものです。
14/11/24 19:13:43.16 7xFBwqHN.net
おい、具体名だすんじゃねえ
374:名前は開発中のものです。
14/12/27 07:48:51.33 wLqAfx70.net
このスレではみなさんからのプログラムの投稿をお待ちしています
375:名前は開発中のものです。
15/01/05 20:34:21.71 AkF9WUbO.net
>>83-85は進展無し?と思ってみたらもう2年前か
376:名前は開発中のものです。
15/01/06 00:58:45.65 uy5dcfqt.net
CじゃなくてFORTHだったら需要あったんだがなぁ
俺の
377:名前は開発中のものです。
15/01/19 20:41:58.52 qeXTNQ6P.net
>>376
FORTHって何ぞ?
378:名前は開発中のものです。
15/03/03 17:29:58.25 zncA3uK1.net
>>377
プログラム言語のこと
似たものにMindがある
379:名前は開発中のものです。
15/03/12 23:44:17.66 kJFL2HEh.net
>>378
プログラム言語のことだったのね
知らんかった
380:名前は開発中のものです。
15/03/19 20:54:40.85 h0XRN6RW.net
前スレを亀レスするけど数をバラバラに設定すると
完成する時としない時があるのは数学的に証明されてる。
完成しない時があると知った時は10才で、その理由を知ったのは30才だったな。
214 名前:名前は開発中のものです。 [sage]: 2008/10/21(火) 23:36:20 ID:7W0HXoP0
空気読まずに投下
URLリンク(www.lenis.info)
C言語で15パズルとサウンド再生やってみました。
218 名前:名前は開発中のものです。 [sage]: 2008/10/30(木) 20:55:16 ID:thi/0x4l
ってゆーか解けないよね?コレ
219 名前:名前は開発中のものです。 [sage]: 2008/10/31(金) 10:50:22 ID:WqELvFXJ
なんだ、解けないの俺だけかと思ってたw
220 名前:名前は開発中のものです。 [sage]: 2008/11/01(土) 13:16:36 ID:K21w4wpQ
俺もだwww
221 名前:名前は開発中のものです。 [sage]: 2008/11/01(土) 13:54:44 ID:OhOXRJQv
11と12と15をくるくる回してるのは俺だけじゃなかったのか
222 名前:214 [sage]: 2008/11/02(日) 00:09:23 ID:q5gp0DGO
しまった。完成形がわからなかったら解けるわけないじゃん!
0123
4567
abcd
efgh
の形が完成形です。・・・解いても何も起こりませんがw
381:名前は開発中のものです。
15/03/20 19:57:53.65 SVxvjEKg.net
>>380
作者らしき人に解けない理由が伝わってないのが悲しいな
>完成形がわからなかったら解けるわけないじゃん!
URLリンク(www34.atwiki.jp)
にあるソースを修正しようとしたけどウチの環境じゃうまくコンパイルできなかった
誰か頼んだ
382:名前は開発中のものです。
15/04/01 23:40:29.90 ii+SttYw.net
何で数がバラバラだと解けないんだろね
タイルの移動する範囲が狭いからとかそんな理由?
383:名前は開発中のものです。
15/04/02 10:16:16.24 Jr0GAhV2.net
他のスレでバカと言われた自分がこのスレでは解けない時が半分あると指摘した人間です。
大学の理数系の初年度程度で履修する偶置換、奇置換等の行列の基礎理論。
まぁ「偶置換 奇置換 行列 15パズル」でググってみて下さい。
384:名前は開発中のものです。
15/04/02 10:31:03.98 Jr0GAhV2.net
追伸
数十年前は、この説明が表紙に書かれていた数学啓蒙誌をその説明だけの理由で買いました。
喫茶店で飲むコーヒー4杯ほどの価格なので、それと比較するとイイ時代になりました。
昔は数学バカだったかも知れません。そして今は何と言うバカなんでしょうかと。
385:名前は開発中のものです。
15/04/06 09:13:24.02 k4keIaCU.net
12000yenか……それなりのお値段だな……
386:名前は開発中のものです。
15/04/07 16:26:58.65 Tz4O69qO.net
数学啓蒙誌の価格なら流石にそこまで高くない、5桁の数引いた4桁位かな。
ところで1杯が3000円ってどの辺りで飲むコーヒーだろう。
その他「偶置換 奇置換 行列 15パズル」でググるyaneurao氏のも出てくる。
URLリンク(d.hatena.ne.jp)
図があって判り易い感じかと。
387:名前は開発中のものです。
15/05/24 23:11:59.55 +d4mv7Gn.net
このスレ住民でゲームレジェンドに参加した人いるかね
結構いそうな気がする
388:名前は開発中のものです。
15/06/12 17:08:22.25 pQsOmKIP.net
初期のほとんどのゲームでラスタースクロールを使うときに
0爆弾使ってるけどDPCMタイマ割り込みは使えなかったんだろうか
あれを使ってラスタースクロールを実現したゲームってないのだろうか
389:名前は開発中のものです。
15/06/12 18:51:23.46 yYky0Qic.net
>>388
「ファミコン 技術」でぐぐると
じぇみに広野氏が語るファミコンソフトの開発技術
というtogetterがでてくるのであるが、それによると、
ガーディック外伝 でDMCのDMA終了割り込みを使ったが
一部の機種(ツインファミコン?)で割り込みが発生しなかったとのこと。
390:名前は開発中のものです。
15/06/12 21:33:53.52 yvckrC4h.net
>>388
使ってるゲームはあるよ
ロマンシアとか海外のゲームでいくつか
>>389
それも正しいのか微妙
CPUに内蔵された機能なのにツインの一部の機種だけで起こるとか
ありえるのかね
391:名前は開発中のものです。
15/06/12 21:54:06.55 pQsOmKIP.net
へー興味深い、ツインファミコンじゃなくてあるとすれば考えられるのは初期型ファミコンじゃないかな
あれ音源周りの仕様が後期のロットとは若干違ったはずだしね ただし
時期によってICにヒートシンクついてたりメモリがSOPだったり複数の標準ロジックICが一つのカスタムLSIに置き換わってたり
さらには主要ICのマイナーバージョンも変わってるから他のロットの固有の問題でもおかしくないとは思う
しかしそうか割り込みがかからないものがあるとは・・・
もし使うんなら使用可否の確認ルーチンを使う必要があるのか
392:名前は開発中のものです。
15/06/12 22:46:29.41 rYOjWPPG.net
なるべく無音になるようなデータを用意しないといけないし、初期ではROM容量的にできないかもね。
393:名前は開発中のものです。
15/06/20 12:30:40.92 pGMo6MI5.net
URLリンク(togetter.com)
URLリンク(www.wizforest.com)
URLリンク(techon.nikkeibp.co.jp)
394:名前は開発中のものです。
15/06/20 19:48:15.52 JHwpVc0c.net
2番目のサイトのパレット、
>実際には12色の中に同じ色を入れないといけなかったりして、12色フルに使うことはできないでしょう。
の解説希望。俺の仕様ではこんな制約はないんだが。
395:名前は開発中のものです。
15/06/22 00:32:17.02 Wqz2EZzo.net
>>394
1パレット3色の組み合わせで指定するので
ソフト制作の都合上、別々のパレットに同じ色を指定することもよくあり
常に異なる25色(SP12色+BG12色+背景色)を同時発色している訳ではない
と解釈しているけど、どう読んだ?
396:名前は開発中のものです。
15/06/24 23:39:15.30 kRbpr0Nr.net
>>395
ハードレベルでできない としか読めないけど。
記憶を頼りに書いて間違ってたとか、逆に割と正確な所もあったりして微妙。
397:名前は開発中のものです。
15/06/25 22:06:34.05 Xz0r0Jej.net
>>396
ひっかかっているのは、「最大25色出せる、というのはあくまでも理論上の話。」という文でしょうか?
「論理上」と言い切るのは私も間違いだと思います。「事実上」と表現するかな。
「論理上」の前の文に「パレットの色が重複してしまう」と条件が書いてあり、
パレットの色を重複して指定するのは、3色の組のパレットで
色指定するというハードウェアの仕様に起因することなので、
ハードウェアの制限と言われても間違いじゃないなと思います。
ただ、サイト先の文章からは、ハードレベルでできない と推測に至る表現は無いかと思います。
異なる25色を同時発色しているゲームの具体例出せないし、
自分が作っているソフトもパレットの色重複しているので
何とも言えないが正直なところ。
398:名前は開発中のものです。
15/06/26 06:50:59.42 T0jrUs0a.net
>>397
スペック上問題なく出来るのに理論上とか書くから誤解されると思うよ。
最大値は~色です。という説明だけでいい。「事実上」はいらない。
実際のゲームでは、というくだりから色の重複について画像を入れるなどで
説明すればいいと思うし、そっちのほうがわかりやすいだろう。
399:名前は開発中のものです。
15/07/07 01:41:06.59 c0/ULPSH.net
バックアップを兼ねて制作途中版をアップしました。
東方老桜夢 ver0.10
URLリンク(homepage3.nifty.com)
セレクト画面、自機移動+ショット、アイテム、1面中ボス手前までのステージデータを実装。
自機のボム、ボス戦、会話処理などは、これからです。まだ先は長いな。
例によってソース添付していますので、興味がある人はどうぞ。
400:名前は開発中のものです。
15/07/11 00:00:24.90 LzhqW5i3.net
なんのアドバイスもできないけど徐々に完成する様を楽しみにしてる
401:398
15/07/11 00:36:16.58 ErBuIZGc.net
>>400
何かコメントしてくれるだけでも助かります。
ひとり黙々と作っているのは辛いので。
402:398
15/07/11 00:55:51.34 ErBuIZGc.net
皆さんに1つアドバイスして欲しいことがあるのですが、よろしいでしょうか。
Aボタン=ショット Bボタン=ボム で実装を進めているのですが、
ショットを押したまま、ボムを使おうとする場合にA押しながらBを押す操作になります。
赤白ファミコンの場合には、AボタンBボタンが真横に並んでいるので
そんなに押しにくくはないのですが、newファミコンの場合には、
Aボタン右上Bボタン左下に並んでいて押しにくく感じました。
コンフィグで他のボタン割り当ても選択できるようにすることを考えているのですが、
こういうボタン割り当てがよいのではというアドバイスを頂きたいです。
ちょっと考えたネタとしては、
・Bボタン=ショット STARTボタン=ボム Aボタン=低速移動
・Iコン、IIコン2つ持ちで、IIコンのボタンでボム
ってのがあります。
403:名前は開発中のものです。
15/07/11 20:55:40.95 LzhqW5i3.net
ショットはBボタンじゃないと操作し辛いと思う
Iコン、IIコン2つ持ちはゲーム性を損ないそうなので反対
自分の知ってる弾幕シューティングだとショットボタン連打=高速移動
ショットボタン押しっぱなし=低速移動なので、それがいいかな
Bボタン=ショット(押しっぱなしで低速移動)
Aボタン=ボム
START+SELECT同時押し(もしくはSELECT押しながらSTART)=リセット
404:398
15/07/12 08:06:56.67 eipwc+As.net
>>403
最初、Bボタン=ショットで実装していたのですが、セレクト画面を追加した時に
A=決定&A=ボムだと、誤って連打したり、操作方法がわからないので適当に押したりした場合に
ボムを消費してしまうのでまずいなと、変更した経緯があります。
B=決定&B=ショットにするか検証して、問題なければ元に戻す方向でいきたいと思います。
start+selectの両方押しは取り入れたいと思います。
Iコン IIコン2つ持ちは、401の書き込みあと色々やってみたのですが、
どのように持ってもIIコンのボタンが押しにくかったのでボツにします。
newファミコンのコントローラの場合、startとBボタンの組み合わせも操作しやすいのに気付きました。
start=Aボタン=ボム Bボタン=ボム にするのもありかなと考えています。
405:名前は開発中のものです。
15/07/12 12:33:35.60 mpg+Vwo9.net
決定ボタンを連打してたらゲームが始まっててボムを消費してしまうのは
様式美だから気にしなくてもいいと思う
細かいことだけど>>403は
START+SELECT同時押し(もしくはSTART押しながらSELECT)=リセット
の間違いだった
>>404
>start=Aボタン=ボム Bボタン=ボム
Bボタン=ショットってこと?
406:名前は開発中のものです。
15/07/12 15:35:29.97 rjppu/hS.net
セレクト画面の選択はスタートも効くようにしておけばいいんじゃね
個人的にはボムがどっち側か選択出来るといいな
407:398
15/07/12 15:40:36.97 eipwc+As.net
>>405
>>start=Aボタン=ボム Bボタン=ボム
>Bボタン=ショットってこと?
すみません。
start=Aボタン=ボム Bボタン=ショット
でした。
408:398
15/07/12 15:43:28.70 eipwc+As.net
>>406
コンフィグでのボタン割り当ての変更は実装する予定です。
409:名前は開発中のものです。
15/07/12 18:47:24.47 Rrg+166r.net
連打誤爆が気になるのならセレクト画面はスタートのみ決定にしたらよくね?
410:名前は開発中のものです。
15/07/12 21:42:13.52 eqQNtVxD.net
2A03はDPCMデータをどのタイミングでフェッチしてるんだ
DPCM再生したらプログラムの実行速度遅くなるとかあるのか
411:398
15/07/13 01:54:36.60 ETla0kQ9.net
>>409
色々考えて、今のところ、start または ショット(デフォルトBボタン) を決定、
ボム(デフォルトAボタン)をキャンセルに割り当てる方向で行こうかと思っています。
412:398
15/07/13 02:02:23.75 ETla0kQ9.net
>>410
英文で申し訳ないですが、nesdev wiki の記事によるとDPCMデータを読み込む時に最大4サイクルCPUが停止(ストール)するようです。
URLリンク(wiki.nesdev.com)
413:名前は開発中のものです。
15/07/13 21:38:14.47 8PTgB6y3.net
>>412
最大4って事は4ではない事もあるのか。別の所では1サイクルとか書いてあった。
>>410
SMB3の左下の方のちらついてる部分が、DPCM音に合わせて右にずれる。
414:名前は開発中のものです。
15/07/18 20:00:38.97 pgdcYKQP.net
sm26685505
415:名前は開発中のものです。
15/07/28 03:54:27.25 q+8puilX.net
ゲームパッドの裏面同士をくっつけて重ね持ち……
416:名前は開発中のものです。
15/08/06 22:57:03.34 QTHdQd4i.net
東方老楼夢やってみましたがすごいですね。
今後の進展に期待しています。
少し気になったことですが、実機だと自機選択の画面でカーソルを
上下に動かすたびに全体的に画面が少し揺れますね。
417:398
15/08/07 23:39:37.38 YUPlB/cK.net
>>416
実機で画面が揺れるのを確認しました。
PPUにデータを送ることに影響して、IRQ割り込みのカウンタが何かずれているのかも。
バグ表に記録しておきます。ありがとうございます。
>>415
やってみましたが、裏側のパッドのボタンが押しっぱなしになるか、押しにくいのどちらかでした。
418:398
15/08/08 00:31:25.10 BI5FjCuz.net
机上調査レベルですが、実機で画面が揺れる(ピクンと跳ねる)のは、
・PPUへのデータ転送処理より先にIRQカウンタの設定をしている
・パレットの書き換えでPPUアドレスの$3fxxにアクセスしている
のが原因っぽいです。
$3fxxにアクセスするのでPA12のアドレス線が0→1に変化。
これをMMC3が拾ってIRQカウンタをカウントダウンすることで、
1ライン早くIRQ割り込みが発生して、画面がずれると推測しました。
419:名前は開発中のものです。
15/08/09 16:51:22.40 0ksNtoFR.net
さっしーを本気でブスと思ったことはない、むしろ美人な方
ブスだけど
420:名前は開発中のものです。
15/08/09 19:24:44.04 ShkksTPS.net
何故、急にさっしーが出て来た?
ともかく美人の範囲には入らない、美人は石原さとみ、佐々木希、エリカ様あたり。
421:名前は開発中のものです。
15/08/10 20:22:03.98 L65BKpn6.net
>>397
中の人でしょうか。
色が重複してしまう理由が書かれていないのです(ファイアーの色をマリオとルイージから取ってこなければならない理由)。
重複しないように設定したいのだが、ハードの制約で重大な問題が生じる為重複させなければならない と読み取れます。
確かに市販タイトルを少し調べてみましたが全て異なる色を使用しているのは見つかりませんでしたが。
それは、総合的なデザイン上の問題だと思います。
画面上に、「マリオ、ルイージ、レディ、ファイア」の4キャラしか出てこないゲームなら、全てに異なる色を設定しても問題ないでしょう。
422:名前は開発中のものです。
15/08/12 20:57:19.05 vHA00r0T.net
>>421
>中の人でしょうか。
違いますよ。
>色が重複してしまう理由が書かれていないのです
「別々のパレットから個別に色を選択してスプライトを
表示することはできない」というパレットの仕様を
説明したいがために、わざと色が重複する例を
出しているだけと私は解釈しています。
397さんの指摘のように、先に25色発色できるのを提示してから
重複する例を出す構成にするのが誤解を生まない方法だと
思います。
>重複しないように設定したいのだが、ハードの制約で重大な問題が生じる為重複させなければならない と読み取れます。
「理由なく色が重複する例を出した」から
「重大な問題が生じる為重複させなければならない」という考えに至るのが
私の考え方と違うようです。
25色発色できるとも書いてあるし、重複させなければならないと
断言する文言も無いので、私はそう解釈はしませんでした。
総合的なデザイン上の問題 という指摘については同意です。
423:名前は開発中のものです。
15/11/02 19:23:11.78 Lz25rOrT.net
ファミコンのプログラムに興味出たんだけどアセンブラやるならnesasmとcc65はどっちがオススメ?
424:名前は開発中のものです。
15/11/02 19:37:42.20 GmeIn7pj.net
nesasmがアセンブラ
cc65がC
なのでアセンブラやるならnesasm
プログラミング経験者?
425:名前は開発中のものです。
15/11/03 00:48:13.34 dgydVfeg.net
cc65はca65つーアセンブラも付属してるよ。
>>423
ca65もnesasmも結果として作れるソフトに差はない。
なので、そういう質問するレベルなら簡素なnesasmで十分だと思う。
426:422
15/11/04 00:04:33.96 MG7aGI5u.net
皆さんありがとう
プログラミングは初心者です
公式で配布しているnesasmは64bitで使えないみたいだから、まだ更新しているca65の方がマシかなと思った
自分の探し方が悪いのか?
427:名前は開発中のものです。
15/11/04 01:29:45.57 jDbZfAAt.net
nesasmはソース付いてるから、自前でビルドして64Bit版nesasm作ってもいいのだが、面倒くさいなら、
MS-DOS Player
URLリンク(homepage3.nifty.com)
とか使えば、配布されてるnesasmのバイナリも、そのまま64Bit版Windowsのコマンドプロンプトの中で動くと思う。
428:422
15/11/04 01:38:18.31 MG7aGI5u.net
ありがとうございます
そのソフト別の意味で面白そう
なるほど、自分でビルドしても良いのか
勉強がてらやってみます
429:名前は開発中のものです。
15/11/04 01:39:43.60 MqFJsopM.net
64bit版NESASMは既にある
URLリンク(www.2a03.jp)
430:名前は開発中のものです。
15/11/27 19:22:03.16 FGwJ1plm.net
>>1
URLリンク(orisari.cswiki.jp)(CA65)
431:名前は開発中のものです。
15/11/27 19:23:07.72 FGwJ1plm.net
>>1
URLリンク(orisari.cswiki.jp)
432:名前は開発中のものです。
15/11/27 22:00:09.01 AEiSUGo8.net
VBlank待ちで$2002読んだ後VBlank中にスプライト書き込むプログラム書いたけど実機だと
左から右にスプライトを動かそうとするとスムーズに動いてくれない。ドンキーコングとか市販のソフトみたいに綺麗に動かすには
何を気をつけたらいいですか?
433:名前は開発中のものです。
15/11/27 22:46:48.97 BXn0P/af.net
普通は$2002を使ったVblank待ちを常用するようなことはしない、ギコ猫~のサイトでも見たのかな?
詳しくはこのスレの上のほうにあるレスを見てね
434:名前は開発中のものです。
15/11/29 20:25:04.83 MHj/oA6M.net
>>433 ありがとうござます。プログラム変更します。
435:名前は開発中のものです。
15/12/16 22:25:48.20 +xc8/nu+.net
>>1
アプリ倉庫だったところ
URLリンク(www6.atpages.jp)
436:名前は開発中のものです。
15/12/27 12:38:46.49 /47Z3a2E.net
東方老桜夢のver0.20をアップしました。
URLリンク(homepage3.nifty.com)
1面ボスまでの実装、ボムは未実装です。
プログラム構造的には、色々と変更中です。
当初は8KBのバンク1個にステージデータを格納する算段だったのですが、一番短い1面で現地点で5~6KBぐらいのデータになったので、複数のバンクに分散して持つように変更しています。
弾丸パターンのデータが思いのほか大きかった。会話データはこれからだし。
あと、415さんの報告してくれたバグを元に実機判定を行うことで実機用とエミュ用に分けてたnesファイルを一本化できました。感謝です。
437:名前は開発中のものです。
15/12/27 13:21:57.15 eEDVBk4A.net
ちゃんとゲームになってて面白いわ
438:名前は開発中のものです。
16/01/17 16:27:08.58 X7lsGmSN.net
8BIT MUSIC POWER
URLリンク(riki2riki.com)
URLリンク(www.gamespark.jp)
URLリンク(www.youtube.com)
プログラムが凄すぎる。
CrystalMarkみたいなスプライト量。
YouTube30fpsの動画では4倍というのがいまいちよくわからない。チラつきだけで4倍表示させてるのか?
DMAでスプライトダブラー行為するにはBGとSPR両方オフにしないと出来ないという噂だがどこかでオフになっている感じがしない。
音楽部分で消費するクロック数は、VBLANK内か近傍に収めているだろうね、それとも下の方のラインでjsrしてるのか?。
割り込み使うとレジスタ退避などでクロックを浪費するから極力使いたくないだろう。
当初、sprite quadrupler スプライト クワドラプラー かと思ったが違うよな。
計算で位置求めるのは不可能だろうし、横並びのところはスプライト循環もやってるだろうし、
データ丸ごとテーブルで持ってるかな、そうなら長時間収録はできない。
パターンテーブルを4.5バンク切り替えてる?のか、全画面で複雑な絵。
絵1枚で0x2000バイトのパターンを3.5面分総とっかえってことかな。
どこでCHRバンクチェンジしているのか意識させない、バンクチェンジのノイズを抑えているようだ。
こちらはクロック数が切迫していないから、割り込みは使い放題かな。