ファミコンのプログラム4 (567レス)
ファミコンのプログラム4 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
114: 名前は開発中のものです。 [sage] 2013/11/27(水) 23:17:01.96 ID:H3/K2JY+ ただ単に、文章の最後を表すために、FC使っているだけ。 ちなみに、ポートピアなら、固有名詞にも特定の値を当てはめて、 容量を節約している。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/114
115: 名前は開発中のものです。 [sage] 2013/11/27(水) 23:56:34.99 ID:xJTLP5X/ なんだ、ただのバカじゃねえか http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/115
116: 名前は開発中のものです。 [sage] 2013/11/29(金) 23:43:36.26 ID:+yLhVUXN >>112 君はまず命令とデータの区別をつけるところからだな あと未定義というのは何らかの既定の動作はするが使い道が無いということ 他と同じ動作だったり、ナンセンスな動作だったり、何かを破壊したり http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/116
117: 名前は開発中のものです。 [sage] 2013/12/28(土) 09:38:36.09 ID:NXkYsMWn 6502の未定義命令表ってどっかに落ちていたような・・・ とはいっても2a03とオリジナルで違うような気もする http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/117
118: 名前は開発中のものです。 [sage] 2014/02/25(火) 00:48:36.47 ID:PEseuuNL 同人でファミコンゲーだしてみたいので勉強中 実機でできるようになるまで遠いなぁ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/118
119: 名前は開発中のものです。 [sage] 2014/03/11(火) 21:45:52.01 ID:xOOt/lks BG読書き時のレジスタアクセス等の手順を日本語で正しく説明しているサイトってないかね? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/119
120: 名前は開発中のものです。 [sage] 2014/03/11(火) 23:17:40.95 ID:Ee7AGpD7 古い情報を掲載してるとこしか知らない。 どこかで詰まってて表示できないとかトラブル抱えてるならソースファイルちょっと見せて? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/120
121: 名前は開発中のものです。 [sage] 2014/03/12(水) 00:28:23.93 ID:WZH/SRI7 ロジックは正しいハズなのにBG表示上手く行かねーって時あるけど そういう時って大抵「ブランク期間中に全ての処理を一括でやらせて終わるのを待つ」的なロジックだったりする ファミコンさんって割とレトロで非力な環境なので、毎フレームBG全書き換えできるほど速度早くないっていう。 なので、BG書き換え期間中は非表示にして、書き換え終了後にのみ表示する設定にすると、うまくいく事がある。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/121
122: 名前は開発中のものです。 [] 2014/03/12(水) 01:37:23.21 ID:sVRc03+V スクロールレジスタ戻してないに1票 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/122
123: 名前は開発中のものです。 [sage] 2014/03/12(水) 21:31:45.55 ID:AKXlzqE0 まだこのスレ見てる人結構いるんだな。。。。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/123
124: 名前は開発中のものです。 [sage] 2014/03/20(木) 16:18:48.51 ID:NcrvcaHS スレチかもしれんがSFCのことについて聞きたい。 65816でCOP命令ってあるよね、あれ普通のソフトウェア割り込み命令とどう違うの? てかコプロセッサ使用時にどう使えばいいの? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/124
125: 名前は開発中のものです。 [sage] 2014/03/20(木) 23:57:41.03 ID:nDoqvjBg 別枠で跳び先用意してるだけで、仕組み自体はソフトウェア割り込みそのもの。 意味があるかは別として、コプロセッサを使う以外の処理にも使用できる。(使用頻度が高いルーチンの呼び出しとか) コプロセッサは、COP命令発行後、割り込みベクタを参照して飛んだ先のルーチンで、普通にI/O叩いて使う。 パラメータ渡したり、処理に違いをつけたかったら、レジスタで処理番号渡してルーチン側で分岐とか、 スタックにパラメータ積んどくとか。 ちょっと昔のパソコンで浮動小数点演算ユニット使うのとあんまり変わらない。(というかそのものか) http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/125
126: 名前は開発中のものです。 [sage] 2014/03/21(金) 00:22:20.42 ID:P1JaUJrV 【65816:SNES】アセンブリ【6502:NES】 http://toro.2ch.net/test/read.cgi/gamedev/1109955393/ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/126
127: 名前は開発中のものです。 [sage] 2014/03/21(金) 00:23:50.90 ID:P1JaUJrV スーファミのプログラム http://toro.2ch.net/test/read.cgi/gamedev/1095063252/ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/127
128: 名前は開発中のものです。 [sage] 2014/03/27(木) 11:27:04.95 ID:Boex24sn 去年あたりにCPUとPPUのデータシートが流出したって聞いたが本当かね? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/128
129: 名前は開発中のものです。 [sage] 2014/03/27(木) 11:33:55.73 ID:6ZjkSFol バーイ ハドソン http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/129
130: 名前は開発中のものです。 [sage] 2014/03/31(月) 23:12:27.47 ID:2ZMIQNqL ネトウヨ「国際司法際はチョン」 なのに竹島問題もハーグで決着つけようとかいってるジャップwwww http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/130
131: 名前は開発中のものです。 [sage] 2014/04/04(金) 07:14:22.67 ID:stHAjJOS http://www1.axfc.net/u/3214070.zip ファミコンゲームです。操作方法は付属のtxtを参照 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/131
132: 名前は開発中のものです。 [sage] 2014/04/04(金) 08:34:30.32 ID:FAM6mLE7 >>131 fceuでは正常に動作しています http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/132
133: 131 [sage] 2014/04/04(金) 16:51:41.09 ID:stHAjJOS >>132 動作確認ありがとうございます。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/133
134: 名前は開発中のものです。 [sage] 2014/04/05(土) 21:35:51.55 ID:RihLvMZN nnnesterJでも動いた ずっとやってたらCLEARって表示されたわ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/134
135: 131 [] 2014/04/07(月) 06:20:21.08 ID:ANvPoB1w ありがとうございます。あと、透明な敵が現れるバグがあるのと、 静岡県立沼津工業高校の校歌を使っています。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/135
136: 名前は開発中のものです。 [sage] 2014/04/07(月) 07:28:54.96 ID:fDBMyb5C >>119の子か。お礼ぐらい言えないのかね。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/136
137: 名前は開発中のものです。 [sage] 2014/04/07(月) 15:41:53.87 ID:YJHniqKP ? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/137
138: 名前は開発中のものです。 [sage] 2014/04/09(水) 17:36:23.74 ID:Aiee0k4j 6502プログラミングの基礎はどうやって勉強するんだろ アセンブラ言語そのものは分かるけど実装技術が・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/138
139: 名前は開発中のものです。 [sage] 2014/04/10(木) 21:35:34.35 ID:hnCuty6F >プログラミングの基礎 6502のCPUの割り込みベクタとかの仕様を確認理解して、 他人が書いたソースコードを読んでいくのが良いかと。 ファミコン(古いゲーム機)のプログラミングは、初期化の後、 VSYNC待ち→1フレーム分の処理 の繰り返しとなる独特のプログラム構造を理解する必要があるかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/139
140: 名前は開発中のものです。 [sage] 2014/04/10(木) 21:41:45.23 ID:hnCuty6F 開発途中で、まだゲームの体裁になっていないけど、自作のソフトをさらしてみる。 src.zipにソース一式入っているので、参考頂ければ幸いです。 http://homepage3.nifty.com/~kyoske/nes/RevolvingGems.zip 十字キーでカーソル移動、Aボタンが時計回り、Bボタンが反時計回りに宝石を回します。 宝石が4個以上つながったら消滅します。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/140
141: 名前は開発中のものです。 [sage] 2014/04/12(土) 04:57:10.26 ID:IdgE9LS/ おお、すげぇ 宝石がヌルヌル流れるのがいいね。 なんでわざわざラスターしてるのかとおもったら、パレットのために必要なのか。 勉強になる・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/141
142: 名前は開発中のものです。 [sage] 2014/04/12(土) 13:04:08.62 ID:BjcqFb8t すごい 仕事がコンピュータに関係ない仕事で趣味だけでここまで作ったのなら偉いと思われるレベル 当時のベーマガに投稿していれば採用されたと思う http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/142
143: 名前は開発中のものです。 [sage] 2014/04/12(土) 16:34:03.45 ID:D7Ld43hD >>140 なかなか出来が良さそう .macro 〜 .endm (引数付きで) .func なんかも使うと楽になる場合もあるよ >>140 ttp://wiki.nesdev.com/w/index.php/Controller_port_registers $4017への書き込み(W)によるstrobe(コントローラーのリセット行為)は無意味、 そもそも出力ポートにつながってないかと。 strobe行為は$4016だけで十分。 $4016のbit0が1か0かで、 ?コン、?コン、bothのコントローラーの中のTC4021BP(シフトレジスタのIC)の、 パラレル、シリアルの各モードが変わる。 1→0で押しボタンのパラレルデータがシフトレジスタに取り込まれて、 シリアル化されたということだ。 シリアル化されたデータは ?コンは$4016の読み込み(R)で、 ?コンは$4017の読み込み(R)で、 それぞれ独立にシフトされる。 ttp://green.ap.teacup.com/junker/116.html この回路図もいいな ttp://nesdev.com/Ntd_8bit.jpg >>141 パレットはいじってないよ? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/143
144: 名前は開発中のものです。 [sage] 2014/04/12(土) 19:24:29.80 ID:Gzkbouk5 欲を言えば、宝石回転をもっと速くして欲しい。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/144
145: 141 [sage] 2014/04/13(日) 00:08:08.07 ID:KkvqpUBo >>143 >パレットはいじってないよ? パレットというか、アトリビュートテーブル? ラスターしないとパレットの違う宝石が水平に8ドットずれの位置で表示できないよね http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/145
146: 名前は開発中のものです。 [sage] 2014/04/13(日) 16:38:48.65 ID:SW34DfG1 ラスタスクロールでずらす、って発想すごいなー。 こういう使い方初めて見た。勉強になりました。 当時もこういう使い方あったのかな? ヘックスマップの戦略シミュとかでも使えそうだ。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/146
147: 名前は開発中のものです。 [sage] 2014/04/13(日) 21:10:32.33 ID:mdytbhuJ >>146 理解力なさすぎ いくらでもある スプライト0ヒットで同期とった分割スクロール スーパーマリオ、エキサイトバイク ラスタースクロールの塊 F-1レースのカーブ演出、ドラクエ?と?の旅の扉、rstrdemo.zip(VirtuaNES作者による) IRQで同期とったスクロール(これが無ければゲームにならぬ) >>140、ロックマン3(武器、ボス選択、ワイリーステージ高速リフト) http://nozomi.2ch.net/test/read.cgi/gameurawaza/1352627490/143 >>145 色だけがズレるわけじゃない、BGそのものがズレる。 >>140の作品やいろいろなゲームの G-NESのIRQライン表示をみてみ、ネームテーブル表示みながら。 無機能初期カセットのスプライト0ヒットのゲームでは何も表示されないけど http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/147
148: 145 [sage] 2014/04/14(月) 00:05:28.57 ID:Ye30GFaz >>147 なんでそんな否定からはいるのさ? 「アトリビュートテーブルの制限で、パレットが2x2BGキャラクタごとにしか 指定できないのを回避するために、ラスターでずらしてるのね」 まで言わないと伝わらない? あなたの発言をみると、ファミコンの知識はあるのは分かるので、 ちょっと考えれば想像できると思うんだが。 146もラスターで「位置をずらす」んじゃなくて、「パレットの制限を回避」 するって発想を褒めてるんだろ。 まぁ、喧嘩したいわけじゃないんで、そこんとこご理解を(^^ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/148
149: 146 [sage] 2014/04/14(月) 00:18:00.10 ID:BSoZ156l >>147 メイン画面とステータス部の分割、疑似3D、疑似多重スクロール、 ゆらゆら燃える炎、巨大ボス、 そこに挙げてくれた例含めて実際に見て知ってるし、仕組みも理解できる。 理解できないのは、コズミックイプシロンくらいなもんでさ。 http://www.youtube.com/watch?v=C8F39OhAiRc#t=25 でも16*16ドットのブロックを行ごとに8ドットずつずらして表示、なんて使い道は見たことなかった。 その発想がすごいって話よ。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/149
150: 145 [sage] 2014/04/14(月) 00:44:20.53 ID:Ye30GFaz 補足。 ラスターに関して147の言ってることは技術的に正しいんだけど、 他人がそれを理解してないのを前提に、否定してるのが、ちょっとカチンときたということ。 (145も146もこの件に関して技術的に勘違いはしてないと思う) >>140 とか >>131 とか手を動かしてるひとを応援してるんで、こんなレスでスレを汚してごめんよ。 >>146 当時のこういう使い方はあったのかは気になるね。 ヘックスといったら信長の野望くらいしか記憶にないなぁ・・・あれは4x4だから問題ないし。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/150
151: 名前は開発中のものです。 [sage] 2014/04/14(月) 13:15:26.05 ID:PHq3J+m9 >>149 似たようなのでテトラスターもあるね コズミックイプシロンは横にラスタースクロールもしているけど、ベースの アイデアとしてはBGのバンク切り替えアニメと同じことで実現してる 1ラインずつ別バンクに切り替えて絵を組み上げていく感じ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/151
152: 名前は開発中のものです。 [sage] 2014/04/14(月) 18:55:50.61 ID:dbr8gs6R 140です。 >143 strobeの件、情報ありがとうございます。 ソースに反映したいと思います。 >144 回転時のアニメーションは確かに落下時より遅いので修正します。 パラメータいじるだけなので、修正は難しくありません。 >149 >151 コズミックイプシロン見てみましたが、縦方向にも若干スクロールして立体感出しているみたいですね。 BGのバンク切り替えとの複合技でスゲーなと思います。 今作っているソフトも、2x2ブロック毎にずらしてあげれば HEX表示できるな と思いつき実証の意味で作っています。 あと、1色共通で2色で描けば、1パレットで2種類、 3パレットで6種類の駒が表示できるなと。 ラスター割り込みは、他にもネタがあります。 例えば、8ドット毎に8ドット縦にずらせば、16x8ドット単位で BGのパレット指定ができるなとか。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/152
153: 名前は開発中のものです。 [sage] 2014/04/14(月) 18:57:07.18 ID:Ye30GFaz コズミックイプシロン、初めて知ったけど、たしかにすごいね・・・ デバッガで見るまで、どうやってるか想像もできんかった。 しかも、この手の3Dビュー系のゲームは個人的にはいまいち面白くないのが 多いけど、ゲームとしても楽しいw good luck! http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/153
154: 名前は開発中のものです。 [sage] 2014/04/14(月) 19:22:56.78 ID:PHq3J+m9 >>152 カーソル枠でまわる宝石が▽と△の時でカーソル枠の上と下を少し 狭くしたほうがわかりやすいかなと思いました http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/154
155: 名前は開発中のものです。 [sage] 2014/04/14(月) 19:58:14.37 ID:BSoZ156l >>151 テトラスターは知らなかったんで見てきた。おんなじ感じっす。 それにしても、バンク切り替えでやるのか…すげーな。 ちゃんと地形の模様になってんだもん、良く考えついたもんだ。 いま手元にないんでアレだけど、そのうちデバッガで見てみたい。 >>152 思いついたのか、発想力すげー…。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/155
156: 名前は開発中のものです。 [sage] 2014/04/14(月) 20:06:28.23 ID:dbr8gs6R >>154 最初、指摘の通り、カーソル枠を台形にして、▽か△かわかるようにしたのですが、 カーソル移動時にうねうねカーソルの形が変わるのが気持ち悪く感じたので、 今のただの四角にしています。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/156
157: 名前は開発中のものです。 [sage] 2014/04/14(月) 21:32:22.23 ID:qn3GgaV0 >>148-150 >>131 自演気持ち悪い わかってないからってファビョって「他人」を弁護?w >>148 >「アトリビュートテーブルの制限で、パレットが2x2BGキャラクタごとにしか >指定できないのを回避するために、ラスターでずらしてるのね」 >まで言わないと伝わらない? 伝わってるからそれは違うって言ってるんだけどね 手を動かしていてもね 延々と即値でスプライト初期化してたから変な奴と思ったらやっぱりな ずらしてパレット指定の限界突破という謎技術を語ってる人が他にもいるようだけど http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/157
158: 145 [sage] 2014/04/14(月) 22:05:09.05 ID:Ye30GFaz >>131 の名誉のために、131と私は別人だよ。 スレのためにもう返事はしないし、あなたが正しいってことでいいよ(^^ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/158
159: 名前は開発中のものです。 [sage] 2014/04/14(月) 22:40:16.03 ID:Ye30GFaz >>140 さんに質問です。 勉強にソースを読ませてもらってます〜 タスクのなかが下記のようなフローになっていると思うのですが理解あってますか? ... jsr Yeild ...Vcmd_SequenceDataなど BG書き込み予約系処理、完了時はzフラグで判定... jsr Yeild_Eq (zフラグが立っていた場合は jsr Yieldの直後から再実行) (zフラグが立っていない場合は、下に抜ける) ... また、あってるとしたら、こういうフローっていうのは 8bitなアセンブラだとわりとよくある手法ですか? C言語脳なので、pla pla とかで返りアドレス捨ててるの見て、 どこに帰るんだ〜、とか、しばらく混乱してました(^^; 不躾な質問ですいませんが、お暇だったら見て頂ければ幸いです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/159
160: 名前は開発中のものです。 [sage] 2014/04/14(月) 23:59:40.63 ID:qn3GgaV0 >>159 立ってる、立ってないが逆 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/160
161: 名前は開発中のものです。 [sage] 2014/04/15(火) 00:19:44.09 ID:Rogly49M >>159 さん > タスクのなかが下記のようなフローになっていると思うのですが理解あってますか? > (zフラグが立っていた場合は jsr Yieldの直後から再実行) > (zフラグが立っていない場合は、下に抜ける) Yesです。 > また、あってるとしたら、こういうフローっていうのは > 8bitなアセンブラだとわりとよくある手法ですか? あまりないかと思います。 ゲーム屋として仕事したことはないので、どのような手法が一般的かは 知らないのですが、現在の進捗状態を番号で管理してジャンプテーブルで 飛ぶみたいな話は聞いたことがあります。 私の場合は、各処理を分解してジャンプテーブルで呼び出すのが 面倒そうだったので、次の呼び出し先のアドレスで管理する方式としました。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/161
162: 名前は開発中のものです。 [sage] 2014/04/15(火) 00:22:16.34 ID:Rogly49M >>160 Yesと書いちゃったけど、確かに、zフラグが立っている場合に抜けるでした。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/162
163: 名前は開発中のものです。 [sage] 2014/04/15(火) 00:24:55.54 ID:4gJhlsqp あ、ご指摘どうもです。逆でした http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/163
164: 名前は開発中のものです。 [sage] 2014/04/15(火) 00:25:59.35 ID:4gJhlsqp あら、、、フラグは z なのに beq/bne だから、頭が混乱する(xx http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/164
165: 名前は開発中のものです。 [sage] 2014/04/15(火) 00:52:17.35 ID:4gJhlsqp すいません、書き込み順の前後で混乱しました。160さんの指摘で正解ですね。 >>161 なるほど〜。ジャンプテーブルより柔軟性がありそうですね。 あと、継続っぽくてカッコイイ。 ありがとうございます http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/165
166: 名前は開発中のものです。 [sage] 2014/04/18(金) 18:15:30.91 ID:jpWSPUfh 画面表示中にパレットを書き換えるサンプルプログラムつくってみたので、興味があるひとはみてみてね。 自分は、情報がなくてけっこう試行錯誤したので。 http://www1.axfc.net/u/3224863 メタルスレイダーグローリーのIRQ割り込みを参考にしたんだけど、 7ラインくらい表示ができないのはしかたないのか。 もっといい方法とかあったら、教えてくだしあ。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/166
167: 名前は開発中のものです。 [sage] 2014/04/18(金) 21:05:20.40 ID:GCyjwP+C >>166 中央が黒いのは、書き換え中に色が付くのを防ぐため? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/167
168: 166 [sage] 2014/04/19(土) 02:10:32.86 ID:ENCcy0CN >>167 うん。 たぶん、ラスター使えるようになってラスターでパレット変更もできるぜぃ、 と思って試した人(過去の俺とか)は、なぞのゴミが表示されて悩まされてると思う。 そのゴミをHBlankに押し込めるために、16byteの書き換えに7lineも画面表示を消してるって感じです。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/168
169: 名前は開発中のものです。 [sage] 2014/04/19(土) 09:55:49.50 ID:5+3bbh99 >>168 そうですか。知ってたらあれですが、3Dホットラリーはもろ見えてます。 ttp://img.gamefaqs.net/screens/b/3/c/gfs_18759_2_2.jpg http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/169
170: 名前は開発中のものです。 [sage] 2014/04/19(土) 13:11:45.50 ID:ENCcy0CN あ、ほんとだw 実は、3Dホットラリーの名前は以前でてたんで画面見たんだけど、 上2パレット、下2パレットくらいでやってるんじゃない?とおもって、スルーしてた。 ちゃんとパレット書き換えしてたのねw 失礼しますた http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/170
171: 名前は開発中のものです。 [sage] 2014/04/21(月) 00:26:08.69 ID:/pAmCg0v ゴミなんて消してやんよ って思ったら 意外と無理だった if ((!IsRendering) && ((VRAMAddr & 0x3F00) == 0x3F00)) PalIndex = Palette[VRAMAddr & 0x1F]; こんな仕様しらんがな nintendulatorのPPU.cppより http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/171
172: 名前は開発中のものです。 [sage] 2014/04/21(月) 10:13:40.71 ID:LbIV6qH+ おお、こういう原理だったのか。トンクス >>171 ttp://forums.nesdev.com/viewtopic.php?t=1209 コレみて、なんとなくパレットカキコミすると色が出るのは、理解してたんだけど、 細かい挙動はよくわかってなかった。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/172
173: 名前は開発中のものです。 [sage] 2014/04/21(月) 10:17:13.69 ID:LbIV6qH+ ちなみに、これってハードウェア的にはどういう原理なの? 詳しい人いたら教えて。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/173
174: 名前は開発中のものです。 [sage] 2014/04/21(月) 17:28:24.83 ID:rQaSv6+b >>171 そんな断片ソースで理解できるのがすごい。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/174
175: 名前は開発中のものです。 [sage] 2014/04/21(月) 23:59:09.10 ID:/pAmCg0v >>166を改造させてもらった ttp://www1.axfc.net/u/3227965.zip ゴミ消した パレットの0x0dは使えないよ 垂直同期のパルスみたいな電圧になるから http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/175
176: 名前は開発中のものです。 [sage] 2014/04/22(火) 00:47:42.57 ID:Ncm5fcM0 レンダリング止めていればBGの色が出ると思ってた >>166のおかげで本気出せていろいろ勉強になったわ >>172系のやつへの理解向上 レベルが一気に3あがった! rtiの戻り書き換えだとか組み終わった後に ttp://forums.nesdev.com/viewtopic.php?t=6484 full_palette.s の偶奇同期を見つけた この簡潔なソースで横ブレの無さのキモさといったら >>173 BGのレンダリングは内部で$3f00へアクセスするんだろうけど そのバグ挙動なのかね ttp://wiki.nesdev.com/w/index.php/Visual_2C02 これ結局まだいじったことないんだけど、使いこなせれば理解できるのかな!? ところで、また謎現象を見つけてしまった ttp://wiki.nesdev.com/w/index.php/PPU_registers#Bit_0_bus_conflict ttp://forums.nesdev.com/viewtopic.php?p=112424#p112424 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/176
177: 166 [sage] 2014/04/22(火) 03:41:30.42 ID:+4JN+sCM >>175 おおお、これは技術の粋が詰まったコードですね!素晴らしい!! 私もレベル3上昇して、レベル4になった〜 クロック管理が神々しく緻密・・・ ちなみに、ゲームでこのテクニックを使うとすると、IRQが入りそうなタイミングで メインスレッドはnop連打になってないとダメという認識でおk? とすると、実用は難しいけど、、、 ジャストアイデアとしては 2、3ラインくらい前にIRQいれて、一時的にメインスレッドをnop連打ループに切り替えて、 終わったらまたもとのメインスレッドに戻すというのは可能かな? 考えるだけで、脳髄が痛い・・・ >パレットの0x0dは使えないよ 一部の黒はつかっちゃだめというのは聞いてたんだけど、反対におぼえてたみたい(^^; 今後は0x0f使います〜 >>176 の情報も含めて、いろいろありがたい(^^ やっぱり、コードは晒してみるものだなぁ・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/177
178: 166 [sage] 2014/04/22(火) 03:55:38.11 ID:+4JN+sCM いままでの自分の致命的な間違いに気づいた・・・ nopは2クロックだったのね。1クロックだとばっかり思ってた(^^; よくいままでのコードうごいてたなぁw http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/178
179: 名前は開発中のものです。 [sage] 2014/04/22(火) 18:39:42.31 ID:FEq/t9cI てす http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/179
180: 名前は開発中のものです。 [sage] 2014/04/22(火) 20:21:50.77 ID:SP0raU7v >>175 ソース読ませてもらったけど、 ldy #0 sty $2001 で、PPUのレンダリング止めると、PPUのバスが空くので その間は自由にVRAMアクセスできたと理解していたんだが 違っていたかな? そうであれば、HBlank待つ必要ないので、パレット書き換えで 非表示になるライン数を減らせると思う。 あと、割り込み時にはiフラグが立った状態でルーチンが 呼ばれるので sei は要らないと思う。 http://wiki.nesdev.com/w/index.php/CPU_interrupts#IRQ_and_NMI_tick-by-tick_execution http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/180
181: 名前は開発中のものです。 [sage] 2014/04/22(火) 20:38:14.58 ID:SP0raU7v >>173 PPUのデータのバス(信号線)が1組で、PPUのレンダリング中はVRAMからデータを読み出している。 CPUがVRAMアクセスのためにPPUアドレスを設定するレジスタ($2006)とPPUがネームテーブルにアクセスするアドレスのレジスタが兼用のため、CPUがパレットのアドレスを書き込むとPPUはパレットデータを読み出してレンダリングすることになる。 と理解しているのですが、間違っていたら指摘お願いします。>他の人 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/181
182: 166 [sage] 2014/04/22(火) 20:46:59.02 ID:+4JN+sCM >>180 >で、PPUのレンダリング止めると、PPUのバスが空くので >その間は自由にVRAMアクセスできたと理解していたんだが >違っていたかな? そう思ってたんだけど、PPUのアドレスレジスタが0x3f**だと、 **の色(=ゴミ)が出力されるっていうのが、171のコード片の意味。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/182
183: 166 [sage] 2014/04/22(火) 20:59:26.06 ID:+4JN+sCM >>181 なるほど〜、 ハードウェアは素人(簡単なワンチップマイコンをいじったくらい) なんで、解説してもらえて助かるっす。ありがと〜 用語があってるかわからないけど、バスコンフリクトってやつでいいのかな? あとチップに損傷を与えたりはしないのかしら・・・ まぁ、あとは電子回路関係の情報で調べてみます。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/183
184: 166 [sage] 2014/04/22(火) 21:04:00.85 ID:+4JN+sCM 連投でスマソ >>181 追加で疑問。 そうすると、0x3f**以外のアドレスでも、そのアドレスのVRAMデータの色が出力されそうなんだけど、 0x3f**以外ではそうはならないみたいなんだよね・・・ これはレジスタ兼用でもそうならないものなのかな? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/184
185: 名前は開発中のものです。 [sage] 2014/04/22(火) 23:02:12.52 ID:SP0raU7v >>182 なるほど、了解です。 自分も実験してみよう。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/185
186: 名前は開発中のものです。 [sage] 2014/04/22(火) 23:13:05.47 ID:SP0raU7v >>184 The PPUDATA read buffer (post-fetch) ttp://wiki.nesdev.com/w/index.php/PPU_registers#The_PPUDATA_read_buffer_.28post-fetch.29 ここに $0000-$3effは内部リードバッファから返すが、$3f00-$3fffは(PPU内部の)データバスに直接配置されている と書かれているので、この辺りの差で挙動が変わるっぽいですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/186
187: 名前は開発中のものです。 [sage] 2014/04/22(火) 23:47:45.15 ID:Ncm5fcM0 >>180 >seiは要らない しまった、モロ立ってた どうも >>181 パレット$3fxxは通常はPPU内部アクセス、つまり擬似NTSC信号を生成する回路とのやりとりであって 普通のPPU空間には出力されないとどこかに書いてあった気がする ttp://nesdev.com/2C02%20technical%20reference.TXT - palette RAM is accessed internally during playfield rendering (i.e., the palette address/data is never put on the PPU bus during this time). ttp://wiki.nesdev.com/w/images/d/d1/Ntsc_timing.png 画像の通りパレットのアクセスはない しかしこういう挙動もある、これはレンダリング止めた場合だろう? Additionally, when the programmer accesses palette RAM via $2006/7, the palette address accessed actually does show up on the PPU address bus, but the PPU's /RD & /WR flags are not activated. この辺あやしいね http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/187
188: 名前は開発中のものです。 [sage] 2014/04/22(火) 23:59:55.97 ID:Ncm5fcM0 >>177 今回はjmp *にしてもHBlankに収まるっぽく大丈夫なようですが 127 line目で $2001のレンダリングオフにする瞬間の PPU tickのばらつきが 249〜254 nop連打の場合 249〜257 jmp連打の場合 ばらつきが3dot分増えることになります 市販ゲームのIRQ関係もゴミだらけだし気にすることはない 直前に入れるのはいいアイディアだね http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/188
189: 名前は開発中のものです。 [sage] 2014/04/23(水) 17:56:22.78 ID:eYt0ULQB >>186 >>187 なるほど、、、 まだ理解してないけど、このあたり読めばわかる気がしてきた。ありがと しかし、PPUのアドレスレジスタの兼用さえなければ、レンダリング中に読み書きできて BGアニメーションとかもっと便利だったろうにって思ってたけど、 Ntsc_timing.png みるかぎり、ひっきりなしにアクセスしてるんだね・・・ とするとメモリポートが2つないとだめだから、結局は無理だったのか。 >>188 了解。 sei/cliさえしなければ最大6クロックだから、6*3=18dot(nopにくらべて12dot大きく) ずれるのが許容できればおkってことね。 許容できるのか、計算するのが大変だけど(xx http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/189
190: 名前は開発中のものです。 [sage] 2014/04/23(水) 20:09:45.06 ID:yop1NMPn この現象で分った事。 パレットの04 08 0Cは00とは別の値を格納できるが、実用上何も使われていないと言う事(合ってるよね?)。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/190
191: 名前は開発中のものです。 [sage] 2014/04/23(水) 21:35:50.97 ID:bXRTGLw+ ↑あってるっぽい ただしスプライトの四の倍数とは共有か 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; http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/191
192: 名前は開発中のものです。 [sage] 2014/04/24(木) 07:57:06.72 ID:RDg08ToE 流れぶったぎるようで申し訳ないけど、デバッガ機能が一番使いやすいNESエミュはどれですか? http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/192
193: 名前は開発中のものです。 [sage] 2014/04/24(木) 10:17:47.73 ID:TazbtZqQ >>192 FCEUXがおすすめ。 (読/書/実行)ブレークポイント、スキャンラインごとのVRAM内容表示、RAMウォッチ あたりの機能をよく使ってる。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/193
194: 名前は開発中のものです。 [sage] 2014/04/24(木) 11:46:44.27 ID:RDg08ToE ありがとう http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/194
195: 名前は開発中のものです。 [sage] 2014/04/24(木) 21:06:44.07 ID:Ozv2HHx1 ブレークポイントの使いやすさは G-NESじゃないか よっぽどトリッキーなコーディングしないならこれで十分 G-NES は使いやすい、指定行まで実行がStepOverを兼ねる FCEUX はログ機能が最強、シンボル機能搭載、エミュ精度も結構よい Nintendulator はデバッガ付きではエミュの精度が最強かな、使いにくい http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/195
196: 名前は開発中のものです。 [sage] 2014/04/24(木) 23:37:48.91 ID:d8WjRMEc >>191 そう、スプライトと共通(04=14、…) 僕は実機で確認したけど、nendoかnestopiaと同じなら間違いないだろうな。 古いネット上のドキュメントとか間違ってたりするから100%鵜呑みにしない方がいいよ(エミュのソースも)。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/196
197: 名前は開発中のものです。 [sage] 2014/04/25(金) 00:53:39.01 ID:ffWieyHe G-NESは使ってなかったから、ちょっと触ってみた。 デバッガは、FCEUXとG-NESほぼ同等やね。 ちょっとわかりにくいけど、アドレスクリックして"Seek To"で指定行まで実行もできるし。 (この機能が超欲しかったけど、いま探すまでアドレスクリックで指定できるの気付かなかったw) しかし、FECUXのシンボル情報って吐き出してくれるコンパイラあるのかな・・・ 使えれば便利そうなんだけど。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/197
198: 名前は開発中のものです。 [sage] 2014/05/10(土) 18:53:04.15 ID:ShrxaRho マッパー0のカセットを何本か作りたいんですが 既存のソフトのHVC-NROM-256K-02基板からICを外すのが面倒なので プリント基板だけを通販しているところとかないですかね? もしくは,CADデータとか. http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/198
199: 名前は開発中のものです。 [sage] 2014/05/10(土) 19:06:34.44 ID:ShrxaRho ちなみに作りたいカセットとはこれです. この1週間ちょっと頑張ってインプリしてました. アセンブラなんか普段いじらないので,めちゃくちゃです. でも,このスレはちょくちょく見てるので,恩返しに公開します. ttp://sayonari.com/famicom/FamilyBird.zip 綺麗に書き直したかったですが,しばらくいじれそうにないので, 皆さんに託します. FCEUXではちゃんと動くんですが,ROMに焼いて, FC互換機(GCC NEXT)で動かすと, スプライトがチラチラと画面中に散らばって表示されます. メモリ管理とかちゃんとしてないし,変なところに書き込んだり, PPUアクセスのタイミングがむちゃくちゃだったりとかが原因だと思います. 互換機じゃなくて正規版本体ならちゃんとうごくのかな・・. http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/199
200: 名前は開発中のものです。 [sage] 2014/05/10(土) 19:40:22.36 ID:WvHa+XO0 そこまでやって正規版FCを持っていないというのが謎過ぎる 高いわけじゃないんだから普通に買えばいいのに http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/200
201: 名前は開発中のものです。 [sage] 2014/05/10(土) 20:09:58.52 ID:vMtYsoKB >>199 スプライトDMAの前に$2003に$00入れるといいかも http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/201
202: 名前は開発中のものです。 [sage] 2014/05/10(土) 20:52:41.78 ID:ShrxaRho >>201 すごい!かなり軽減されました.しかしまだチラチラがあります. しかしさすがのアドバイスありがとうございます.勉強になります. http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/202
203: 名前は開発中のものです。 [sage] 2014/05/10(土) 21:59:03.95 ID:2fP2DbGG なんで土管に触っただけで死ぬんだ こんなクソゲー久しぶりに見たわ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/203
204: 名前は開発中のものです。 [sage] 2014/05/10(土) 23:12:04.05 ID:ShrxaRho >>200 ファミコン本体は実家にはいっぱいあるんですが,今の家にはなくて, 急遽必要になったので,とりあえず,ヤフオクで互換機を送料込み900円で落札しました. その後,今もですが,正規版ファミコンをどれにしようかと,ヤフオクでキョロキョロしてます. 互換機は今日届きました >>203 これは,FlappyBirdっていう人気アプリのオマージュですが,それも土管で即死です ROMライターのLEAPER-3Cのドライバが64bitWin7では動かなかったので焦りましたが, VirtualPC上のXPmodeというやつで,そのOSからLEAPER-3Cが使えたので 良かったです(´ρ`) http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/204
205: 名前は開発中のものです。 [sage] 2014/05/11(日) 01:44:45.44 ID:HiLhu8FK 非VBlanc期間がループで一切の処理をしていないからDMA転送がVblank内に収まってないんじゃないかね 通常は非VBlank期間にキー入力だのスプライトのデータ準備だのデータを用意しておいて Vblank期間は描画処理だけを行うようにする http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/205
206: 名前は開発中のものです。 [sage] 2014/05/11(日) 02:54:20.00 ID:Mnx9Nf8g >>205 ありがとうございます! チャレンジしてみましたが,上手く実装できませんでした(´ρ`) どの処理をどこでやればよいか・・・. もう時間的に頭が働いていないのかも.とりあえず寝ます. http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/206
207: 名前は開発中のものです。 [sage] 2014/05/11(日) 04:04:19.91 ID:YECX6XhP >>199 なかなか、ファミコンらしい可愛いグラフィックやね。 nesdevでflappy bird作った奴いないの?みたいなスレがあったから、貼るのもおもしろいかも http://forums.nesdev.com/viewtopic.php?f=2&t=11103 ちなみに、Nestopiaでもバグってるっぽいので実機の前にこっちでデバッグしたら楽かもしれない。 残念なことにデバッグ機能はほとんどないけど・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/207
208: 名前は開発中のものです。 [sage] 2014/05/11(日) 04:53:13.07 ID:Mnx9Nf8g >>207 nestopia情報ありがとうございます! 試してみましたが,パレットがおかしくなるバグはありますが, 実機互換機で起こるチラチラ飛び散りバグは出ません. 正規本体でもでないかな.正規本体早く買おうかな. nesdevにも凸したいと思います(〃゜ω゜〃) http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/208
209: 名前は開発中のものです。 [sage] 2014/05/11(日) 08:18:39.15 ID:IEErYv9U >>208 最初のロゴでスプライトのゴミが出るのはメモリの初期化をして いないからだと思う パレットがおかしいとかスクロールがぶれるとかそういうのは恐らく 表示期間中にPPUに書き込みしてるんじゃないかな http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/209
210: 名前は開発中のものです。 [sage] 2014/05/11(日) 08:23:06.60 ID:dYyMlr6C fceuだとチラツキは見えない http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/210
211: 名前は開発中のものです。 [sage] 2014/05/11(日) 09:26:06.10 ID:owqALoBe 時々音がおかしくなる。 http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/211
212: 名前は開発中のものです。 [sage] 2014/05/11(日) 14:28:37.07 ID:rGvGrR+8 >>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しちゃえばすこしマシになるかな 根本解決にはならないけど http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/212
213: 名前は開発中のものです。 [sage] 2014/05/11(日) 14:29:39.56 ID:rGvGrR+8 >>199 もう構造的に破綻しているけど この先スクロールゲームにするなら 今の構造のままだともっと破綻する 理想的には バッファに命令語を用意しておき NMI直後に命令語を読み取ってVRAMに書き込む こういうスタイルじゃないとね 構造が悪いからデバッグの難度も上がる 小規模なうちに治さないと シーンが増えると結局テーブルジャンプや間接ジャンプ( jmp [mem] )、こういった関数ポインタを使わないとやってられないと思う、 デカくなったswitch文のアセンブラでの効率のよい実装のことね。 cmp #n の比較地獄をしていたら、デカくなればなるほど後の方は遅くてやってられない。 シーンが続き番号でないなら比較地獄も免れないけど >>198 >>200 LEAPER-3C 謎な奴だよなw IC引っこ抜くよりCADデータある方が時短になるのかw エミュでデバッグできないやつが、実機ROM焼きしてたら、ますます時間無駄にすると思うけど >>201 姑息な手かと思ったら、少し根拠あったのね > Obscure details of OAMADDR http://mevius.5ch.net/test/read.cgi/gamedev/1343539143/213
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 354 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.023s