ファミコンのプログラム4 (563レス)
上下前次1-新
抽出解除 レス栞
166(9): 名前は開発中のものです。 [sage] 2014/04/18(金) 18:15:30.91 ID:jpWSPUfh(1) AAS
画面表示中にパレットを書き換えるサンプルプログラムつくってみたので、興味があるひとはみてみてね。
自分は、情報がなくてけっこう試行錯誤したので。
http://www1.axfc.net/u/3224863
メタルスレイダーグローリーのIRQ割り込みを参考にしたんだけど、
7ラインくらい表示ができないのはしかたないのか。
もっといい方法とかあったら、教えてくだしあ。
167(1): 名前は開発中のものです。 [sage] 2014/04/18(金) 21:05:20.40 ID:GCyjwP+C(1) AAS
>>166
中央が黒いのは、書き換え中に色が付くのを防ぐため?
168(1): 166 [sage] 2014/04/19(土) 02:10:32.86 ID:ENCcy0CN(1/2) AAS
>>167
うん。
たぶん、ラスター使えるようになってラスターでパレット変更もできるぜぃ、
と思って試した人(過去の俺とか)は、なぞのゴミが表示されて悩まされてると思う。
そのゴミをHBlankに押し込めるために、16byteの書き換えに7lineも画面表示を消してるって感じです。
175(2): 名前は開発中のものです。 [sage] 2014/04/21(月) 23:59:09.10 ID:/pAmCg0v(2/2) AAS
>>166を改造させてもらった
http://www1.axfc.net/u/3227965.zip
ゴミ消した
パレットの0x0dは使えないよ
垂直同期のパルスみたいな電圧になるから
176(1): 名前は開発中のものです。 [sage] 2014/04/22(火) 00:47:42.57 ID:Ncm5fcM0(1/3) AAS
レンダリング止めていればBGの色が出ると思ってた
>>166のおかげで本気出せていろいろ勉強になったわ
>>172系のやつへの理解向上
レベルが一気に3あがった!
rtiの戻り書き換えだとか組み終わった後に
http://forums.nesdev.com/viewtopic.php?t=6484
full_palette.s
の偶奇同期を見つけた
この簡潔なソースで横ブレの無さのキモさといったら
>>173
BGのレンダリングは内部で$3f00へアクセスするんだろうけど
そのバグ挙動なのかね
http://wiki.nesdev.com/w/index.php/Visual_2C02
これ結局まだいじったことないんだけど、使いこなせれば理解できるのかな!?
ところで、また謎現象を見つけてしまった
http://wiki.nesdev.com/w/index.php/PPU_registers#Bit_0_bus_conflict
http://forums.nesdev.com/viewtopic.php?p=112424#p112424
177(1): 166 [sage] 2014/04/22(火) 03:41:30.42 ID:+4JN+sCM(1/5) AAS
>>175
おおお、これは技術の粋が詰まったコードですね!素晴らしい!!
私もレベル3上昇して、レベル4になった〜
クロック管理が神々しく緻密・・・
ちなみに、ゲームでこのテクニックを使うとすると、IRQが入りそうなタイミングで
メインスレッドはnop連打になってないとダメという認識でおk?
とすると、実用は難しいけど、、、
ジャストアイデアとしては
2、3ラインくらい前にIRQいれて、一時的にメインスレッドをnop連打ループに切り替えて、
終わったらまたもとのメインスレッドに戻すというのは可能かな?
考えるだけで、脳髄が痛い・・・
>パレットの0x0dは使えないよ
一部の黒はつかっちゃだめというのは聞いてたんだけど、反対におぼえてたみたい(^^;
今後は0x0f使います〜
>>176 の情報も含めて、いろいろありがたい(^^
やっぱり、コードは晒してみるものだなぁ・・・
178: 166 [sage] 2014/04/22(火) 03:55:38.11 ID:+4JN+sCM(2/5) AAS
いままでの自分の致命的な間違いに気づいた・・・
nopは2クロックだったのね。1クロックだとばっかり思ってた(^^;
よくいままでのコードうごいてたなぁw
182(1): 166 [sage] 2014/04/22(火) 20:46:59.02 ID:+4JN+sCM(3/5) AAS
>>180
>で、PPUのレンダリング止めると、PPUのバスが空くので
>その間は自由にVRAMアクセスできたと理解していたんだが
>違っていたかな?
そう思ってたんだけど、PPUのアドレスレジスタが0x3f**だと、
**の色(=ゴミ)が出力されるっていうのが、171のコード片の意味。
183: 166 [sage] 2014/04/22(火) 20:59:26.06 ID:+4JN+sCM(4/5) AAS
>>181
なるほど〜、
ハードウェアは素人(簡単なワンチップマイコンをいじったくらい)
なんで、解説してもらえて助かるっす。ありがと〜
用語があってるかわからないけど、バスコンフリクトってやつでいいのかな?
あとチップに損傷を与えたりはしないのかしら・・・
まぁ、あとは電子回路関係の情報で調べてみます。
184(1): 166 [sage] 2014/04/22(火) 21:04:00.85 ID:+4JN+sCM(5/5) AAS
連投でスマソ
>>181
追加で疑問。
そうすると、0x3f**以外のアドレスでも、そのアドレスのVRAMデータの色が出力されそうなんだけど、
0x3f**以外ではそうはならないみたいなんだよね・・・
これはレジスタ兼用でもそうならないものなのかな?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.356s*