[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/01 02:10 / Filesize : 228 KB / Number-of Response : 958
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ファミコンのプログラム3



1 名前:名前は開発中のものです。 [2008/06/23(月) 17:38:05 ID:z53SrIuZ]
前スレ、何もしねぇカスどもの集まりだったよな。
でも900すぎてホンモノが現れたみたいだ。
もう要らねぇと思ってたけど、そいつらの為に立てたよ。

270 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 03:37:34 ID:7J5hp3iM]
テーブルでも作ってるんじゃないの

271 名前:名前は開発中のものです。 [2009/07/28(火) 01:00:30 ID:6SkBGXqx]
>>268
遅れながらありがとうございます。

>>270
アドレスが指す先の値を変更できるかと思ってポインタみたいなことをやろうとしてます。
案の定うまくいきません。


上位ビットと下位ビットを別々にした奴って結合した後、その先にある値をインクリメントってできませんか?

272 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 01:15:06 ID:nhVlfm/d]
インダイレクト・インデックストY

273 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 13:42:42 ID:AQ/Al0Gm]
INC命令には(実効アドレス), Yな間接アドレッシングモードは無いから、どうしても
ゼロページをポインタっぽく使ってインクリメントしたかったら、こんな風にやる事に。

;ゼロページ0番地から下位上位の順で目的のアドレスが置いてあるとして
CLC ;2 Cycle : キャリー(繰り上がり)フラグ消去
LDA #1 ;2 Cycle
ADC ($00), Y ;5 Cycle : $00-$01が指すアドレス+Yに格納されてる値に1を加算。

でも、実行中にアドレスが動的に割り当てられるってのはあんまりないだろうから、
特別な理由が無けりゃこんな感じの方がいいかもしれない。
INC LABEL ;6 Cycle : 3 Cycleもお得、かつ、キャリーフラグ変更無し
あるいは
INC LABEL, X ;7 Cycle


274 名前:名前は開発中のものです。 [2009/07/28(火) 22:13:26 ID:6SkBGXqx]
>>273
とりあえず動くようになりました。
ありがとうございます。

275 名前:名前は開発中のものです。 mailto:sage [2009/09/11(金) 21:10:53 ID:KvLrAtTZ]
求む! 新作公開!

276 名前:名前は開発中のものです。 mailto:sage [2009/09/11(金) 22:05:39 ID:C1hTpYxS]
ファミコンの事色々調べていたらこんなスレッドもあるんですね。
研究の参考にさせていただきます。

277 名前:名前は開発中のものです。 mailto:sage [2009/09/25(金) 17:29:27 ID:+A5mRPb0]
マッパーの資料ってどっか転がってないかな?

278 名前:名前は開発中のものです。 mailto:sage [2009/09/25(金) 20:17:17 ID:ZId529B1]
>>277

>>2
>NES info, programs, and demos
>nesdev.parodius.com/



279 名前:名前は開発中のものです。 mailto:sage [2009/09/30(水) 08:22:27 ID:wk39jWmw]
THANK YOU!!どうも

280 名前:名前は開発中のものです。 [2009/10/10(土) 01:22:57 ID:9GDsJwhY]
ゲームを起動して、いちばん初めに実行される命令はどれなのか判りません
どのゲームも共通の命令なのでしょうか?

281 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 03:12:49 ID:Dk0OGcQZ]
ギコ猫読めばなんとなくわかるんじゃない?

282 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 06:20:48 ID:WKEp6tuZ]
質問が意味不明だが割り込みベクタのことだろうかとエスパーしてみる

283 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 07:43:05 ID:9GDsJwhY]
ギコ猫読んできました。
電源投入時およびリセット時はまず↓の命令が実行され、

;Reset
FFFC : dw $****

$****のアドレスにジャンプして、そこから開始されるという感じでしょうか

284 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 07:48:43 ID:Vn2J09v8]
ベクターは確か、NMIとRESETとIRQがあったですねぇ。

285 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 10:03:24 ID:qlb9kbOk]
ttp://www.geocities.jp/team_zero_three/6502/index.html
ここの方がちゃんと書いてある。

286 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 10:39:53 ID:Lr3bfIsK]
>>280
要はどのメモリアドレスかが分からんのだろ、違うかな?

普通プログラムは数字の若いもの($8000-)から書いていく

287 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 10:59:57 ID:9GDsJwhY]
いえ>>282さんが回答されていた割り込みベクタというものを知らなかっただけでした

とあるゲームを逆アセンブルして、$8000から眺めてみたものの
どれがプログラムでどれがデータか判別できなかったので

いま調べているゲームはFFFC : dw $C000、となっておりました。ありがとうございました

288 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 10:39:17 ID:1ZWurkSg]
拡張音源って新規で作ってるROMには導入出来ませんか?

サウンドは一度ROM内を通ってから出力されるんですよね?



289 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 12:45:17 ID:1ZWurkSg]
>>288追記
VRC5などの特殊チップでも可能なのでしょうか?

290 名前:名前は開発中のものです。 mailto:sage [2009/10/13(火) 21:42:36 ID:0xP/F+Hc]
VRC5は難しいんじゃないだろうか

291 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 14:03:22 ID:OwKEIqtP]
>>288
意味が分からない。 サウンドがROMを通るのはあってる。45,46ピンに。

292 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 21:28:18 ID:vGyVljJ7]
>>288
mck wikiあたりの情報が有力なんじゃないかな?
VRC6とかNamco113なんかは特殊チップだからプログラムとは別にライブラリ(?)
っぽいのが付属してるのか、なんかは知らないが。

あとはその新規で作ってるROMってのに組み込む方法…だよな。
いずれにしても特殊チップ関連は資料がない…

293 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 21:44:50 ID:5IZSB7mk]


VRC6やVRC7で作るって意味じゃないのか?
悪伝のROMだけEPROMと差し替えたりするんじゃないのか
でなけりゃTNS-HFC2を入手した方が早いと思うが

294 名前:名前は開発中のものです。 mailto:sage [2009/10/14(水) 22:56:34 ID:vGyVljJ7]
あぁ、そういう事なのか?w
俺はてっきり自作NESファイルで拡張音源を流したいという事だと思てたわ
滑稽w

てかどうなんだ?>>288さんや?

295 名前:名前は開発中のものです。 mailto:sage [2009/10/16(金) 12:53:36 ID:MfIGUeJj]
>>291-294
自分で1から作成したプログラムがあるんですが、それでVRC6の音源を鳴らしたいんです。大雑把に言うと、MMC3構造で音源だけをVRC6などにする事が出来るのか否か、という意味です。

293さんのTNSカートリッジとかじゃなくて、エミュレータ上でそれが出来ればいいのですが…。その方法を知りたくて

コナミLSIだけ別にファイルとして用意して必要な時だけ読み込んで動作させるという事を今やってるんですが、マッパー切替え自体不可能でしょうか?w

296 名前:名前は開発中のものです。 mailto:sage [2009/10/16(金) 14:39:44 ID:pw8IfXRn]
それはエミュレータ自体に手を入れるしかないな

297 名前:名前は開発中のものです。 mailto:sage [2009/10/16(金) 15:17:59 ID:MfIGUeJj]
エミュレータを改造すれば行けそうな感じですかね…?(´・ω・)

もしくはそういった機能を持つプラグインを作れば可能な領域ですか?

298 名前:名前は開発中のものです。 mailto:sage [2009/10/16(金) 15:44:45 ID:pw8IfXRn]
そりゃもう
新しいマッパーを作るのでよければ

たとえばNesterJだったらmapper/004.cppを空いてる番号にコピーして(4*26で104にしようか)
NES_mapper104::Resetに
parent_NES->apu->SelectExSound(1);
を追加

NES_mapper104::MemoryWriteに
addr = addr & 0xfffc | ((addr & 1) << 1) | ((addr & 2) >> 1);
parent_NES->apu->ExWrite(addr, data);
を追加

ヘッダを書き直して、NES_mapper.cppとNES_mapper.hの該当箇所を直すだけで出来そうだぞ



299 名前:名前は開発中のものです。 mailto:sage [2009/10/16(金) 20:44:34 ID:MfIGUeJj]
>>298
お、どもありがとです(^ω^)
新規マッパーですか。開発上ではG-NES使ってるのでその辺りを
少し調べてみる事にします。
やっぱりあのデビチルUの音源は魅力的ですよねー、とかw

もう開発始めてから1年近くなるんですけど
ファミコンはまだまだ判らん事だらけで困っちゃう

300 名前:名前は開発中のものです。 mailto:sage [2009/10/16(金) 20:50:53 ID:MfIGUeJj]
>>299追伸

いかんいかん
デビチルU→メガテンU

連投申し訳w

301 名前:名前は開発中のものです。 mailto:sage [2009/10/17(土) 01:29:25 ID:5O/kgJwv]
MMC3依存部分をVRC6に書き換えてやればいいんでないの?

302 名前:298 mailto:sage [2009/10/17(土) 09:45:01 ID:lEV510ii]
俺も>>301でFAだと思うがな・・・
メガテンIIってことはマッパー19か
ちょっとした変更で済みそうだぞ

303 名前:名前は開発中のものです。 mailto:sage [2009/10/17(土) 13:09:19 ID:2Z8Ot/UF]
たぶん、プログラムROMの容量の問題なんじゃないの?
MMC3は512まで使えるけど、VRC6は256までだから。

304 名前:298 mailto:sage [2009/10/17(土) 14:00:54 ID:lEV510ii]
俺のせいでVRC6で作る話で固まっちゃってるが
使いたいのはN106だそうだぞ

305 名前:名前は開発中のものです。 mailto:sage [2009/10/17(土) 18:31:18 ID:K5p+RqDt]
>>303
Sorry.今はなむこさんの拡張音源を広げたいんです。
こなみさんのもその内とは思ったりもしてますが…

プログラム移植の方法なら確かに容量の問題でつっ掛かりました。
例によってVROMを使ってるものからVRAM形式のマッパーに変えるとなると
プログラムそのものを見直さないと駄目で
素人の私には到底むりぽですので、やはり新たに実装する
方法のほうが良いようです。

情報ありがとうございますo(^-^)o

306 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 12:45:12 ID:6yrB7EMH]
VRAMとVROMって何ですか?
書換えと読取り?

307 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 13:52:17 ID:JvV7xCCj]
VROMは読み取り専用の構成ですね。
マリオの空とか固定パターンの場合には便利かと思いチップを設計しました。by作者

308 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 14:13:51 ID:9ME3ZxQf]
>>306
VRAMは、2kバイトのビデオ用RAMです。どこに何を表示するかのRAM。
これをROMにしたのがVROMかと。だがファミコンじゃ普通ROMにしない。アフターバーナーはROMになってたけど。特殊ですね。
(ただし、外人さんは名前の付け方が変なので、キャラクタジェネレータROMのことをVROMと言ったりするので注意。
キャラクタ用ROMはCROM、これがRAMだったらCRAMと名付けるべきでしょう。) 



309 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 15:19:06 ID:6yrB7EMH]
>>307->>308
ご丁寧にありがとうございます!なんと作成された方直々にとは…、びっくりしました。
VRAMのほうが実用性高そうですね。パターンテーブル切替えとか

310 名前:名前は開発中のものです。 mailto:sage [2009/10/27(火) 22:19:12 ID:JvV7xCCj]
FCのVDPはVRAM空間として4画面分あるのですが、実際に積まれてるVRAMは2画面分しかないので、
それぞれ1画面ずつRAMとROMを選択できるようにしました。
VROMの使用法としてポールポジションの道のアニメーションが目的だったのですが、
試作段階で挫折しましたw 俺・・・

311 名前:名前は開発中のものです。 mailto:sage [2009/11/05(木) 07:22:57 ID:5L5biTqj]
cc65を使って、ファミコンゲーム作ってる人いますか?

分からない所があるんですが、
BGの書き込みの際にBASICのLocateみたいに、
x座標とy座標を指定できる方法は、ありますか?


312 名前:名前は開発中のものです。 mailto:sage [2009/11/05(木) 13:08:00 ID:l85UMOLm]
>>311
void Draw(char x,char y,char number)
{
char adress = 0;

adress = ( y - 1 ) * 32 + x ;

*(char*)0x2006 = 0x20;
*(char*)0x2006 = 0x00 + adress;

*(char*)0x2007 = number;
}
これだと書き込む位置が0x2000から0xFF以下なら書き込めるが…
他に方法あるのか

313 名前:名前は開発中のものです。 mailto:sage [2009/11/05(木) 19:56:59 ID:6WbXrm2H]
こんな感じでいけたような気がする。
extern int adr;
#pragma zpsym("adr");
adr = 0x2000 + y/32 + x;
*(char*)0x2006 = adr>>8;
*(char*)0x2006 = adr;


314 名前:名前は開発中のものです。 mailto:sage [2009/11/07(土) 21:04:44 ID:Mf3/pBlM]
ppup.dip.jp/uploader/download/1257595273.zip
ブロック崩しもどき作ってみた。
下に3回落ちたらゲームオーバーのはずなんだけど、
文字(BG)がうまく表示されない。

315 名前:名前は開発中のものです。 mailto:sage [2009/11/07(土) 21:29:27 ID:UmD87ywj]
パスが掛かってるよ

316 名前:314 mailto:sage [2009/11/07(土) 22:56:01 ID:Mf3/pBlM]
passはbbです。
BGで表示できないので、代わりにスプライトを使いました。
ppup.dip.jp/uploader/download/1257602099.zip
同じくpassはbbです。


317 名前:名前は開発中のものです。 mailto:sage [2009/11/14(土) 14:14:41 ID:2jXyTTJy]
がんばって作った過去の遺物
ppup.dip.jp/uploader/download/1258175338.nes
pass:1944

318 名前:名前は開発中のものです。 mailto:sage [2009/11/15(日) 15:40:05 ID:yZ0q6H6M]
>>311
スケッチブックに巨大な図を描きながら、関数電卓を叩いて計算してみた。
多分、これで合ってるはず

void DrawBG(unsigned char x,unsigned char y,unsigned char number)
{
  int adr;
  adr = (y-1)*32+x;
  *(char*)0x2006 = 0x20+adr/256;
  *(char*)0x2006 = adr;

  *(char*)0x2007 = number;
}

cc65でコード入力して、この関数呼び出した自作ROMを
エミュで実行すると画面にBGが指定の位置に描画されたが、確証は無い。



319 名前:名前は開発中のものです。 mailto:sage [2009/11/15(日) 18:16:36 ID:2XQwAgah]
固定画面ならそんな感じでよさそうだが
スクロールレジスタも考慮するとあんまり一般的な方法ってのはないんじゃね

320 名前:名前は開発中のものです。 mailto:sage [2009/11/15(日) 23:05:33 ID:zpJnzLrg]
縦はともかく横は$1fでANDを取ればいいだけだから
スクロールを考慮する必要ナッシング

>>317
頑張ったな
でも流行ってるときに公開すればよかったんじゃね?

321 名前:名前は開発中のものです。 mailto:sage [2009/11/17(火) 11:58:25 ID:9Pkn5HWa]
メインループの中でBG書き込みをすると、画面が壊れるんだが、どうして?

322 名前:名前は開発中のものです。 mailto:sage [2009/11/17(火) 12:59:06 ID:O/lLyVUy]
表示期間中にPPUいじると画面が崩れるハードの仕様

323 名前:名前は開発中のものです。 mailto:sage [2009/11/17(火) 22:11:35 ID:7i3K3Gjo]
>>321
実機?エミュ?

324 名前:名前は開発中のものです。 mailto:sage [2009/11/18(水) 13:19:33 ID:GwpJUAOP]
>>323
エミュ

325 名前:名前は開発中のものです。 mailto:sage [2009/11/18(水) 22:51:06 ID:FMqMiJwJ]
>>324
そうでしたか。 そんなとこまで再現するとはすごい。 
ちなみに、BGとSPR表示をオフにすれば、表示期間でも書き込みできるはず。

326 名前:名前は開発中のものです。 mailto:sage [2009/11/24(火) 18:08:45 ID:nZ7IaeBO]
NESASMでジョイパッドのチャタリングを防ぐにはどうすればいいの?


327 名前:名前は開発中のものです。 mailto:sage [2009/11/24(火) 18:47:46 ID:nZ7IaeBO]
いや、前回のと比較するのは知ってるんだけど具体的にどうするのか知りたい

328 名前:名前は開発中のものです。 mailto:sage [2009/11/24(火) 19:24:15 ID:HeI+t05Q]
入力受付間隔を調整すればいいだけでは



329 名前:名前は開発中のものです。 mailto:sage [2009/11/25(水) 20:21:24 ID:Y/xKjGNz]
LDA 入力読込
PHA
STA 押しっぱのボタンの判定
EOR 1つ前のフレームでの入力
AND 押しっぱのボタンの判定
STA ボタン押した瞬間の判定
PLA
STA 1つ前のフレームでの入力

330 名前:名前は開発中のものです。 [2009/12/06(日) 03:05:59 ID:pC5E5jqQ]
CC65で15パズルを作った方が、このスレッドで
公開していたかと思いますが、参考になるのでは。


331 名前:名前は開発中のものです。 mailto:sage [2009/12/15(火) 15:19:45 ID:a558s9Dh]
NESASMとcc65ってNES研究室のサンプルみた限りだと記述方式が違うみたいですが
これってなんででしょうか?

332 名前:名前は開発中のものです。 [2009/12/17(木) 23:49:54 ID:U3Y0QHnx]
<<321
と同じく、BG関係が出来ません。
VBlank中で、PPUの初期化もしているのですが、
$2006 $2007 でネームテーブルを弄ると画面全体がずれてしまいます。

入門者丸出しですいません

333 名前:名前は開発中のものです。 [2009/12/17(木) 23:53:07 ID:U3Y0QHnx]
>>332

×<<321
>>321

ミスりました。

334 名前:名前は開発中のものです。 mailto:sage [2009/12/18(金) 07:18:22 ID:fDXCW/8v]
>>331
ソース見てないから多分だが。
1.アセンブラ独自拡張部分が違う。
2.開発規模に差があって、ソース分割したりしている。

335 名前:名前は開発中のものです。 mailto:sage [2009/12/18(金) 09:45:35 ID:BuyHr5qQ]
>>332
それをいじるとずれるのは仕様。(内部がスクロール設定と共用してるから)
いじったら、スクロールレジスタで設定する。  ネームテーブルも再設定必要だったかも。

336 名前:名前は開発中のものです。 [2009/12/20(日) 17:30:01 ID:IyBK5veI]
ありがとうございます!
LDA #$00
STA $2005
STA $2005

で解決しました。

337 名前:名前は開発中のものです。 mailto:sage [2009/12/26(土) 01:03:22 ID:Yz+hk6s6]
ファミコンのプログラムを
作ってみたので、上げてみました。初投稿です。
また機会がありましたら、投稿したいと思っています。
ppup.dip.jp/uploader/download/1261756865.zip
pass fami


338 名前:名前は開発中のものです。 mailto:sage [2009/12/26(土) 23:19:52 ID:QFbZJHKM]
すごいな



339 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 03:58:45 ID:k5Jwzm51]
ここまで作ってなぜBボタンに対応しないのか

340 名前:名前は開発中のものです。 mailto:sage [2009/12/27(日) 04:17:31 ID:dzEUSWU4]
連射ONでやってみたら、199回超えるとフリーズした

341 名前:名前は開発中のものです。 mailto:sage [2009/12/28(月) 19:43:15 ID:qRtC33ab]
これで楽しいクリスマスがすごせそうだ
ありがとう337

342 名前:名前は開発中のものです。 [2009/12/29(火) 12:33:01 ID:lTW0p2Tu]
>>337

テトリスすごい

343 名前:名前は開発中のものです。 mailto:sage [2010/01/01(金) 00:56:26 ID:WEjwCp2H]
お褒めの言葉、まさにありがたき幸せであります。
また、今回修正版を作りました。
ソースファイルmainの273行目を、and #%10000000からand#%11000000
に変更でBボタンの回転が可能に。
また、相対パスにしてどこにファイルを置いてもアセンブル可能に。
連射のバグについては、修正できませんでした。つまり、私に出来る限界であります。
またの機会があれば、挽回したいと思います。

ファイルのURL > ppup.dip.jp/uploader/download/1262274542.zip
pass fami2



344 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 01:25:45 ID:jF22eACi]
あら丁寧にソースコード付きでステキ。

345 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 18:24:09 ID:/pb3LoGR]
>>343
GJ あとP'L'AYERに直せない?

346 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 13:08:37 ID:29GXWjNI]
ダウンロード数が50近いじゃないか

347 名前:名前は開発中のものです。 [2010/01/21(木) 06:45:05 ID:Q/sVFXNu]
NES DevKit
sourceforge.net/projects/nesdevkit/

これで作ってるやついないんか

348 名前:名前は開発中のものです。 mailto:sage [2010/01/21(木) 12:00:44 ID:wsJ4sicJ]
誰も興味無いし時間も無くなったからディスコン
と書かれているな



349 名前:名前は開発中のものです。 mailto:sage [2010/01/23(土) 01:50:27 ID:hz4QiZI9]
これアセンブルできるんだな

350 名前:名前は開発中のものです。 [2010/02/10(水) 17:01:51 ID:vFQj1T+q]
比較命令を4連続使って、あたり判定を作っているのですが、
スタックが原因で暴走してしまいます。
ループを使って何体もの敵と判定しているのですが、
なぜか2回以上ループさせると暴走してしまいます。
スタックについて、良く分からないのですが、
誰か教えてくれませんか?

351 名前:名前は開発中のものです。 mailto:sage [2010/02/10(水) 17:33:12 ID:asha1W50]
原因のコードが無いと分からないよ

352 名前:名前は開発中のものです。 mailto:sage [2010/02/10(水) 21:56:06 ID:n6ohQVMg]
多分レジスタのオーバーフローだな

353 名前:名前は開発中のものです。 [2010/02/10(水) 22:39:11 ID:vFQj1T+q]
lda $200,y
clc
adc #$0D
cmp $10
bcc crashsprite
lda $200,y
clc
sbc #$0D
cmp $10
bcs crashsprite
lda $201,y
clc
adc #$0D
cmp $11
bcc crashsprite
lda $201,y
clc
sbc #$0D
cmp $11
bcs crashsprite
lda #$00;当たり判定で当たった時の処理
sta $202,y
sta $201,y
jmp nosprite
crashsprite:

354 名前:名前は開発中のものです。 mailto:sage [2010/02/11(木) 06:19:52 ID:+wEnMjxV]
ページ境界を意識してみよう。

355 名前:名前は開発中のものです。 [2010/02/11(木) 11:16:39 ID:4IEAI3zI]
バイナリを見たところ、ページ境界を挟んでませんでした。

356 名前:名前は開発中のものです。 mailto:sage [2010/02/11(木) 12:52:58 ID:QsCNBYLy]
少なくともスタックポインタ(S)を変更する命令は↑にはない。
Sもしくはスタック領域($100-$1ff)を操作しているのはどこ?

ループのどこかで PHA/PLA/PHP/PLP をしてない?
ループの中で PH* して PL* し忘れはよくやる。

357 名前:名前は開発中のものです。 [2010/02/11(木) 13:52:48 ID:4IEAI3zI]
スタック操作命令はしてないのですが、JSRはしてます。

358 名前:名前は開発中のものです。 mailto:sage [2010/02/11(木) 15:37:49 ID:et5xB1Ay]
jsrとrtsは処理の流れで1セットになってないと駄目だよ
jsrで呼びっぱなしになるとスタックに戻り先番地が積みっぱなしになるから




359 名前:名前は開発中のものです。 [2010/02/11(木) 18:10:10 ID:4IEAI3zI]
チェックしたところ、RTSとセットになってました。
解決できませんでしたが、自分の力で何とかしていきたいと思います。
ありがとうございました。

360 名前:名前は開発中のものです。 [2010/02/13(土) 11:28:12 ID:sDFwUFjG]
自己解決しました!
ありがとうございました。

361 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 00:03:10 ID:LaFtPQUD]
>>360
まてまて、自己解決したときは、問題点はどこだったのか、どう改善したのかを書いていくんだ。

362 名前:名前は開発中のものです。 mailto:sage [2010/02/14(日) 03:31:52 ID:syypGNiC]
>>350
そもそもスタックについてよくわからないのに、何故スタックが原因だと思ったのかが謎。
たぶん結果的にハズレだったのだと想像してるけど。

363 名前:名前は開発中のものです。 [2010/02/14(日) 10:56:58 ID:gOZSpFKO]
原因は分からないのですが、もう1つループを作って、
そっちに当たり判定を書いたらうまくいきました。

>>362
メモリビューアをみたら、$100^$1FF
が、おかしくなってたからです。

364 名前:名前は開発中のものです。 mailto:sage [2010/02/17(水) 21:19:35 ID:JTomCMoH]
>>363
nospriteとcrashspriteの2つのパスがあるけど、片方にRTSが実行されないバグ
があったとかじゃないかな? (RTSせずにJMPで呼び出し元に戻ってるとか)
もしくはJMPと間違えてJSRを使っているとか。

365 名前:名前は開発中のものです。 [2010/03/03(水) 22:25:15 ID:NWYoUOba]
age

366 名前:名前は開発中のものです. [2010/03/05(金) 23:52:48 ID:xdcULiY0]
スクロールについての質問.
横スクロールゲームをつくっているのですが,
なぜか15フレームに1回8ドットだけ縦にスクロールして,次の15フレーム分は
正常に水平方向にスクロールするという現象が起きており,その原因と解決法が分らず
困っています.




367 名前:名前は開発中のものです。 mailto:sage [2010/03/06(土) 02:40:39 ID:KnZNd5Bx]
とりあえず、コード見せて?
どういう手順でやろうとしてるのか見たいから。

368 名前:366 [2010/03/06(土) 03:01:24 ID:AwxGSoRf]
自己解決したかも
NMI始めのVRAMアクセスで一度に大量のデータを転送しているのが
原因である可能性が高い
新たな地形のグラデータをPPUメモリに書き込む際,
16*16ドットのブロックを縦一列(13個)分
=合計52バイト,しかも2回に1回は属性テーブル7バイト分をあわせた59バイト
をもいっぺんに書き込んでいるからかもしれません.
属性テーブル転送をやめ.ネームテーブルに書き込むデータを半分にすると正常に
動作しました.
とりあえず明日,VRAMアクセスを分配するようにコードし直し,それでも直らなければ
コード晒します.



369 名前:名前は開発中のものです。 mailto:sage [2010/03/06(土) 12:32:36 ID:W2DZun6N]
Vblank 期間中に VRAM アクセスが完了してないからじゃないかな?
FC の Vblank 期間は全 262 ラスタラインのうちの 20 ラインだから、
(1789772 / 60 / 262) * 20 ~= 2277
つまり Vblank 期間に入ってから 2277 CPU クロックくらいで
次のフレームの最初のラスタラインの描画が始まってしまう(BG or SP表示時)。
それまでに VRAM アクセスを完了して $2005 を設定しておかないと
スクロールが乱れると思う。

370 名前:名前は開発中のものです。 mailto:sage [2010/03/07(日) 23:52:29 ID:kQ66zFZu]
1intでネームテーブルに書き込み可能なのって32くらいまでじゃなかったっけ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef