ファミコンのプログラム4 (567レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1
(3): 名前は開発中のものです。 [sage] 2012/07/29(日) 14:19:03.64 ID:a5QeqSA0(1/2) AAS
■過去スレ

ファミコンのプログラム
2chスレ:gamedev

ファミコンのプログラム2
2chスレ:gamedev

ファミコンのプログラム3
2chスレ:gamedev

■関連サイト

MagicKit Homepage
外部リンク:www.magicengine.com
すずめ愛好会
外部リンク[html]:web.archive.org
ギコ猫でもわかるファミコンプログラミング
外部リンク:gikofami.fc2web.com
わいわいの巣
外部リンク:www.geocities.jp
mck hogehoge
外部リンク:takamatsu.cool.ne.jp
NES info, programs, and demos
外部リンク:nesdev.parodius.com
pgate1@crystal
外部リンク:crystal.freespace.jp
cc65 @ wiki
外部リンク:www34.atwiki.jp
131
(33): 名前は開発中のものです。 [sage] 2014/04/04(金) 07:14:22.67 ID:stHAjJOS(1/2) AAS
外部リンク[zip]:www1.axfc.net
ファミコンゲームです。操作方法は付属のtxtを参照
140
(8): 名前は開発中のものです。 [sage] 2014/04/10(木) 21:41:45.23 ID:hnCuty6F(2/2) AAS
開発途中で、まだゲームの体裁になっていないけど、自作のソフトをさらしてみる。
src.zipにソース一式入っているので、参考頂ければ幸いです。

外部リンク[zip]:homepage3.nifty.com

十字キーでカーソル移動、Aボタンが時計回り、Bボタンが反時計回りに宝石を回します。
宝石が4個以上つながったら消滅します。
145
(4): 141 [sage] 2014/04/13(日) 00:08:08.07 ID:KkvqpUBo(1) AAS
>>143
143(2): 名前は開発中のものです。 [sage] 2014/04/12(土) 16:34:03.45 ID:D7Ld43hD(1) AAS
>>140
なかなか出来が良さそう
.macro 〜 .endm (引数付きで)
.func
なんかも使うと楽になる場合もあるよ

>>140
外部リンク:wiki.nesdev.com
$4017への書き込み(W)によるstrobe(コントローラーのリセット行為)は無意味、
そもそも出力ポートにつながってないかと。
strobe行為は$4016だけで十分。

$4016のbit0が1か0かで、
?コン、?コン、bothのコントローラーの中のTC4021BP(シフトレジスタのIC)の、
パラレル、シリアルの各モードが変わる。
1→0で押しボタンのパラレルデータがシフトレジスタに取り込まれて、
シリアル化されたということだ。

シリアル化されたデータは
?コンは$4016の読み込み(R)で、
?コンは$4017の読み込み(R)で、
それぞれ独立にシフトされる。

外部リンク[html]:green.ap.teacup.com この回路図もいいな
画像リンク


>>141
パレットはいじってないよ?
>パレットはいじってないよ?
パレットというか、アトリビュートテーブル?
ラスターしないとパレットの違う宝石が水平に8ドットずれの位置で表示できないよね
146
(3): 名前は開発中のものです。 [sage] 2014/04/13(日) 16:38:48.65 ID:SW34DfG1(1) AAS
ラスタスクロールでずらす、って発想すごいなー。
こういう使い方初めて見た。勉強になりました。

当時もこういう使い方あったのかな?
ヘックスマップの戦略シミュとかでも使えそうだ。
149
(3): 146 [sage] 2014/04/14(月) 00:18:00.10 ID:BSoZ156l(1/2) AAS
>>147
147(2): 名前は開発中のものです。 [sage] 2014/04/13(日) 21:10:32.33 ID:mdytbhuJ(1) AAS
>>146
理解力なさすぎ
いくらでもある

スプライト0ヒットで同期とった分割スクロール
  スーパーマリオ、エキサイトバイク
ラスタースクロールの塊
  F-1レースのカーブ演出、ドラクエ?と?の旅の扉、rstrdemo.zip(VirtuaNES作者による)
IRQで同期とったスクロール(これが無ければゲームにならぬ)
  >>140、ロックマン3(武器、ボス選択、ワイリーステージ高速リフト)
  2chスレ:gameurawaza

>>145
色だけがズレるわけじゃない、BGそのものがズレる。
>>140の作品やいろいろなゲームの
G-NESのIRQライン表示をみてみ、ネームテーブル表示みながら。
無機能初期カセットのスプライト0ヒットのゲームでは何も表示されないけど
メイン画面とステータス部の分割、疑似3D、疑似多重スクロール、
ゆらゆら燃える炎、巨大ボス、
そこに挙げてくれた例含めて実際に見て知ってるし、仕組みも理解できる。
理解できないのは、コズミックイプシロンくらいなもんでさ。
動画リンク[YouTube]


でも16*16ドットのブロックを行ごとに8ドットずつずらして表示、なんて使い道は見たことなかった。
その発想がすごいって話よ。
166
(9): 名前は開発中のものです。 [sage] 2014/04/18(金) 18:15:30.91 ID:jpWSPUfh(1) AAS
画面表示中にパレットを書き換えるサンプルプログラムつくってみたので、興味があるひとはみてみてね。
自分は、情報がなくてけっこう試行錯誤したので。

外部リンク:www1.axfc.net

メタルスレイダーグローリーのIRQ割り込みを参考にしたんだけど、
7ラインくらい表示ができないのはしかたないのか。
もっといい方法とかあったら、教えてくだしあ。
181
(3): 名前は開発中のものです。 [sage] 2014/04/22(火) 20:38:14.58 ID:SP0raU7v(2/4) AAS
>>173
173(2): 名前は開発中のものです。 [sage] 2014/04/21(月) 10:17:13.69 ID:LbIV6qH+(2/2) AAS
ちなみに、これってハードウェア的にはどういう原理なの?
詳しい人いたら教えて。

PPUのデータのバス(信号線)が1組で、PPUのレンダリング中はVRAMからデータを読み出している。
CPUがVRAMアクセスのためにPPUアドレスを設定するレジスタ($2006)とPPUがネームテーブルにアクセスするアドレスのレジスタが兼用のため、CPUがパレットのアドレスを書き込むとPPUはパレットデータを読み出してレンダリングすることになる。

と理解しているのですが、間違っていたら指摘お願いします。>他の人
199
(8): 名前は開発中のものです。 [sage] 2014/05/10(土) 19:06:34.44 ID:ShrxaRho(2/4) AAS
ちなみに作りたいカセットとはこれです.
この1週間ちょっと頑張ってインプリしてました.
アセンブラなんか普段いじらないので,めちゃくちゃです.
でも,このスレはちょくちょく見てるので,恩返しに公開します.
外部リンク[zip]:sayonari.com
綺麗に書き直したかったですが,しばらくいじれそうにないので,
皆さんに託します.

FCEUXではちゃんと動くんですが,ROMに焼いて,
FC互換機(GCC NEXT)で動かすと,
スプライトがチラチラと画面中に散らばって表示されます.

メモリ管理とかちゃんとしてないし,変なところに書き込んだり,
PPUアクセスのタイミングがむちゃくちゃだったりとかが原因だと思います.
互換機じゃなくて正規版本体ならちゃんとうごくのかな・・.
236
(3): 140 [sage] 2014/05/28(水) 20:00:45.64 ID:pcO3WytB(1/2) AAS
ジョイパッドの読み取りルーチンをリファクタリングしたら結構コンパクトになった。
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

>>235
235(1): 名前は開発中のものです。 [sage] 2014/05/20(火) 00:15:36.83 ID:sHOtKBex(1) AAS
>>140
宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす
このスレッドで新しい演出ジャンルに出会えたのは嬉しいね

>>199
土管避けるの難しいけど楽しいね
BGの判定は凄いと思う
どんどん成長してゆくのが楽しみ
ありがとうございます。
245
(3): 131 [sage] 2014/06/06(金) 19:17:42.85 ID:5n3Zcu9W(1/2) AAS
131です。あの後、
いろいろ注意深く書き込みを見ていたのですが
人に意見されるってすごく大事だと思いました。

ちなみに、cc65でオセロとShootingGameSampleを作ったのと、
nesasmでブロック崩しを作ったのも
自分です。

今までは自分はチキンで人に意見言われるだけで、
むっつりと黙っていましたが、これからは
もっと能動的に動きたいです。

ファミコンのブロック崩しをソース付きで晒すので
汚いし、ロジック的におかしいところばかりですが、
見てやってください。

僕はカービィやマリオ、くにおくんのファミコン少年の一人の
つもりなのでファミコンは、ホント好きですし、このスレッド
を最初から見ています

外部リンク[zip]:www1.axfc.net
246
(3): 131 [sage] 2014/06/06(金) 21:24:59.35 ID:5n3Zcu9W(2/2) AAS
こんな事書き込みたくて書き込むわけじゃないですけど、
ファミコンの正常動作って何ですか?
どうすれば正常動作っていうんですか?

いつまにか、このスレッドは本物のROMと同じように動かす為に努力してる
人たちを称え、褒めてきました。

正常動作って定義がどこにあるかはファミコンで動作すれば分かるんじゃないですかね。
それ以外を異常動作というなら、エミュレータはほぼ全て異常動作ですよ。
266
(5): 名前は開発中のものです。 [sage] 2014/06/08(日) 02:10:46.27 ID:CkZRo6BG(1/4) AAS
>>260
260(1): 131 [sage] 2014/06/07(土) 17:29:43.93 ID:hwRmu2MG(5/8) AAS
>>257-258
VBlankとゲーム本体処理を分離ということはNMIを使うって事ですね。他の方も言ってましたが

スプライトと実際の座標を別に持つというのは、以前やったことがあるのですが、クソ汚いソースになってしまいましたが、少しだけわかってきた気がします。こんな感じですかね。
>>261に書きます。

VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。

Pad_Checkは、他の方が作られたソースなので、あえて外しました。ROMに0を書き込んだ意図は、恐らくないです。気づかないまま放置してしまいました。

ブロックの配置位置が有限個ならテーブル化できるんですか?今度やってみます。

アドバイスありがとうございます!!ホント助かりました。知らなかった事や理解出来なかった事が分かってよかったです。

> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。

VBlankの意味を理解していない節があるので、まずは、ブラウン管の話からします。
機知の情報かも知れませんが聞いてください。

ブラウン管の裏から電子銃で電子を飛ばし、ブラウン管表の蛍光面を発光します。
真っ直ぐ飛ばしただけでは、ただの点なので、磁界をかけて電子が飛ぶ方向を変えて
左上から右へ水平方向に線を書くように発光させ、再び左端に戻ってさっきより
ちょっと下の位置で同じように水平方向の線を発光させます。
これを画面下まで繰り返して、再び左上に戻ります。
これをすばやく繰り返すことで、ブラウン管の蛍光面全体に画像を表示します。(ラスタスキャン方式)
電子の飛ばし先が右端から左端に戻る期間を水平帰線消去期間(HBlank期間)、
下端から上端に戻る期間を垂直帰線消去期間(VBlank期間)と呼びます。
398
(9): 名前は開発中のものです。 [sage] 2015/07/07(火) 01:41:06.59 ID:c0/ULPSH(1) AAS
バックアップを兼ねて制作途中版をアップしました。

東方老桜夢 ver0.10
外部リンク[zip]:homepage3.nifty.com

セレクト画面、自機移動+ショット、アイテム、1面中ボス手前までのステージデータを実装。
自機のボム、ボス戦、会話処理などは、これからです。まだ先は長いな。

例によってソース添付していますので、興味がある人はどうぞ。
422
(3): 名前は開発中のものです。 [sage] 2015/11/02(月) 19:23:11.78 ID:Lz25rOrT(1) AAS
ファミコンのプログラムに興味出たんだけどアセンブラやるならnesasmとcc65はどっちがオススメ?
540
(3): 539 [sage] 2022/03/15(火) 21:51:26.58 ID:+prqqqiR(2/4) AAS
物は試しとゲーム動作中にCHAROMを引っこ抜いたところグラフィックがバグりました。

エミュではPPUメモリ$0000-$1FFFにコピーされているように見えるけど、
実際のハードでは、メモリは無くPPUとCHAROMのアドレス線が接続されているだけなんでしょうか?
バンク切り替えというのもアドレス線の接続先をコントロールするICに信号を送っているだけなので
仮に毎フレーム同じバンク番号を指定し続けても負荷はかからないと…。
546
(3): 名前は開発中のものです。 [] 2022/03/29(火) 22:57:50.51 ID:SFxLAwoX(1) AAS
>>543
543(1): 名前は開発中のものです。 [sage] 2022/03/15(火) 23:00:02.57 ID:+prqqqiR(4/4) AAS
>>542
お騒がせします。あまり理解は出来て無いと思います。
エミュのメモリビューワでPPUメモリを覗くと、$0000-$1FFFまでずらっと展開されてるので
あたかもCHAROMのデータをPPUがコピーして記憶しているかのように錯覚してました。(エミュ上なので書き換えられるし)
実際のハードでは、PPUが記憶してるとかではなくアドレス線A0〜A12線($0000-$1FFF)がCHAROMに直結してるだけというイメージと理解しました。
悪魔城ドラキュラはPRGからグラフィックを「RAM」にデータをコピーしているというワードを見て気がつきました。

プロアクションリプレイを使ってメモリとかを書き換えて我流で学んで来たため知識がぐちゃぐちゃです。
ROMとRAMの意味から学び直してきます。
こういう風に繋がっているけど、どのように動作するかイメージわく?

PPUのアドレス線 PA0 〜PA9 → CHR-ROMのアドレス線 A0〜A9 に接続
PPUのアドレス線 PA10〜PA12 → Mapperのチップに接続(バンクレジスタの選択)
PPUのアドレス線 PA13 → CHR-ROMのCEに接続(PPUアドレス $0000-$1fffの時にCHR-ROMの出力が有効になる)
Mapperのチップのバンクレジスタの出力 6bit → CHR-ROMのアドレス線 A10〜A15 に接続
PPUのデータ線 PD0〜PD7 → CHR-ROMのデータ線 D0〜D7 に接続
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.054s