ファミコンのプログラム4
最近開発を始めようと思ってファミコンの勉強を始めたものです。優しい方がいたら是非教えて欲しいことがあります
CPUアドレス空間の$2006ってR/WしたいPPUのアドレス空間のアドレスを上位ビットと下位ビットの二回に分けて書き込むと思うのですが、この2バイトのアドレスの情報ってPPU内部のどこのレジスタに保存されているのでしょうか。
例えば同じように2回書き込む$2005では、スプライトのy座標とx座標はそれぞれPPUのOAMのbyte1とbyte2に保存されていると思うのですが、、 すみません、多分自己解決しました
NesdevのPPU Scrollingのページにtレジスタとかvレジスタとか色々書いてあったのに気づきました tレジスタやvレジスタは、動作を説明するために書いてあって、実際にPPU内部に存在するかは
はっきりしていないと思います。ただ、この動きをするためには、このようなレジスタが必要だろうなと
推測されるので、説明にあるレジスタに該当する回路はあると思います。
あと、$2005 に書き込むにはBGのスクロール位置なので、OAMは関係しません。 釣りにしては有能すぎる。
ファミコンの回路図見るのが一番。
もっと言えば
PPU内部の回路解析しちゃった外人もいるはず。 回路図見たけど2度書きレジスタについては全然見えてこないな。
tやvという概念さえ知ってれば無問題。 PPU scrolling - Nesdev wiki
PPU rendering - Nesdev wiki
これはめちゃくちゃ重要 /i/|ii!//|!/!i/´i/ .|i |/ノ i\i!゙、:iヽ|:::| ヽ 'i ! ヾi |'!ヽ::::||::::::/:::::::::::::::::::::ヽ
i i 川i!ハ/" _! | │ 川 ヾ:ii ゙'∨ | ゙ヾiヽヽ;||:::::i':::::::::::::::::::::::::
ノ ノ/リ,,,,,,二三テ=''" ヽノ ル |ノノヽヾ ノ 、,,,ノ,、 iヽ:::||:::::i'::::::::::::::::::::::::::::
/  ̄ ´~~゙'''' ゙''‐- ..,, ,, ‐' `゙ヾミッ、,, ヽ::|::::/::::::::::::::::::::::::::::
,,イ| i' i" `'‐=' `'|/i!:::::i::::::::::::::::::::::::
i | :::::::ヽ::::ヽ::::::ヾ:: ゙、 l 〃::::: i//::::ハ::::::::::::::::::i:::
i i \\\\\ヽ ) ヽ ′′′ / /:::::/:::::::::::::::::::|::::
! | i ,,ィノ < :::: : /:::::/:::::::::::::::::::/::::
i! i i! /i/ ,r''''‐y'''.;、 \ /:::::/:::::/::::::::::::/:::::
゙i! | i /⌒' 、 Y:::::::::''::;;;;'.;.Y'⌒゙i /::::::/::::::/::::::::::::/::::/i
i i ゙! ん、,,__ヽノ:::::::::::::::::::;;;;;{,__,,,r'' /:::::::/::::::/::::::::::::/:::://
゙、ii! ゙| i ノ ゝ;;;:::::::::::::::::::;ノ 。 `i //:::::/:::::/::::::::::::/::::::/:::
ヾ!トl ゙iU i 。l '゛.. ‐ー:::::i | //::::::/::::::/::::::/:::/:::::i!::::::
iiミ! ハ i l ,,,,::: :::;;;;;...{ ° ゙、 //::::://::::/::::::/:::::/::::i::::ii::
i!ヾ!i ゙、! , ' |::: ::::ヽ ..} |゙ヽ......,.,.,.,,,///://::://::::/::::://::::i::::リ::
!ヽヾi i゙、 ___,,,/ }:: : ;;;::: ::::::::} レWノ'レi/、//::/:://:/:::/::/:::ハ:i |:: なんか同人シューティングカセットが出たみたいだが、
末期のマシン語で作られたベーマガ投稿作品みたいだ キラキラスターナイトのプログラム使って作ってるらしいなそれ
おにぎり食べるやつとかアドベンチャー的な作品とか
ファミコン界隈が「自分で新作を作って売る」方向になってきてるな メモ
BRKを使う理由
Making good use of BRK opcodes
//nesdev.com/NES%20hardware%20development%20guide.txt >>515
なんだこりゃ色多すぎ嘘くせー
と疑ってしばらく観察してたけど
特に色数の制約超えてなさそうだね
当初は絵のパターンが足りなくならないように減らすために
ブロックまで含めた1枚絵を描いているのかと思ったけど違うかな
パターンの繰り返しが単調にならないように上手な絵を描いているね
スーファミのように今にも背景が多重スクロールしそうな色 >>515
回転時のアニメーションがカクカクすぎる。斜め45度のパターンも必要かと ゲームラボのSM調教師瞳の記事に興味深い記述があった
音源チップをデュアルCPUのように使って音楽を流しながらグラフィックを解凍させたんだと
そんなことできるの? aitendo に40ピンのカードエッジコネクタの基板が売ってるのに60ピンのが無かったから60ピンの発売希望お願いしてみたらあっさり快諾してくれた。
来月頭くらいには入荷しそうだって。
ファミカセの制作に使えるか注目しててね。 RP2A03 の命令セット確認しなおしてみたんだけど、
オリジナルならゼロページでクロック数短縮できるところをわざわざ潰して NOP とかにしてる?
なんで? 「創世記・ファーミー」でファミコンのプログラムを製作できます
と宣伝にあったけど、実際に作った人がいたのかと。 レスどうもです。バックアップはできたと思うけど他スレからの抜粋です。
PC98等に接続して独自にソフト開発ができるようにする予定もあったんだけど
実現せずにフェードアウトしたとか。とは言え開発した方がいるのかと質問しました。
因みに最近ディスクシステムの内容をWindows間で8秒(←QDの仕様)で転送する
ハード・ソフトを製作しましたがFM-7も使います。回路図と6809コードは公開予定です。
Windows側に持って来れば「cc65」が使えるので現在下調べしてます。ただFM-7の他に
部品代は6000円程かかります。とは言え「創世記・ファミー」よりは安いです。
喜んで「FM-7」をオクで入手したけど騙しだったと言うことにはならないようにします。
尚、「FM-77」の方が拡張コネクタ数の関係で良いです。「77AV」ではNGかも知れません。 ×)「創世記・ファミー」
○)「創世機・ファミー」 ROMカートリッジをディスクシステムにバックアップしたのは覚えてる
ファミー本体の後部にRS-232Cっぽいコネクタはあったけど、ファミコン+ファミーだけではBOOTできないっぽいから、
パソコンと繋いで開発するにはディスクシステム側に起動ディスクが必要な気がするよ 「創世機・ファミー」を使う際にディスクシステム側に起動ディスクが必要が否かは判りません。
下の画像では「創世機・ファミー」側に何か「CPU」があれば起動ディスクは必要しない感じです。
ttps://bakutendo.net/blog-entry-415.html
因みに「ディスクシステム解析ツール」と仮にしましたが(1番目の画像は、これでバックアップ)
ttps://imgur.com/a/qCPoTqz
3番目の画像の「RAMアダプター接続基板」はFM-7の6809を使い「QD」を操作します。
また4番目の画像の「新基板202106」はFM-7を使い、Windows間でデータ転送します。
6502のコードは全く使わなくても「QD」は操作できます。実際にMZ-1500はZ80です。 >>529
>ファミー本体の後部にRS-232Cっぽいコネクタ
RS-232Cです。PC-98(PC-88)のRS-232Cと接続してデータ転送か
コマンドを送出したと思います。 >>532
URLがバグった
Stunt Kidsとかいうゲームです quartz.nesという音色エディタをお持ちの方いませんか?
うpしてくださったら御礼します(3行) 2行で応えます。もしかして「行」は「桁(けた)」の間違いではと。
それにしても999円では安過ぎ、持ってないけど。更に著作権侵害ではと。 新作ファミコン版『パックマンCE』、Switch『ナムコットコレクション』10本収集特典に
https://japanese.engadget.com/namcot-103008491.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAADf2ioFYZStJiDe7plAVCKT8tq2ySE4YuM8j5HYtKMjuZuBNZHF-0TXdnYm5zdMm68EpGG29r4BbTmw2IUdNbcGd2neW6JcGzGCZmSDs_sVYENGKH29ECX2CPWZoRdMIxlmJ95ojdyR6EcJe0nuvaEdmjlrji3YfdDZn1lDC8KWZ
6月18日発売のニンテンドースイッチ『ナムコット コレクション』には、10本のゲームを揃えた収集特典として、ファミコン版『PAC-MAN Championship Edition』(パックマンCE)が用意されていることが分かりました。
『パックマンCE』は2007年にXbox 360で発売されたのち、現在も多機種でシリーズが続く新生パックマン。
収集特典の新作パックマンCEは、ナムコットブランドによるナムコのファミコンゲームが
『ファミスタ’94』で終了してから10数年後のゲームを、さらに13年経った2020年に、
ファミコンで動く新作として先祖返り移植した作品です。通し番号は『ファミスタ’94』の「83」
に続く「84」。
パックマンCE ファミコン版ってどっかで誰かが作ってたの見たことあるけど、
それにそっくりだった。その動画は現在非公開になったいるようだ。
パックマンCE
http://www.nicovideo.jp/watch/sm3844058
↑
これが公式採用されたのかな? >>536
特典発表のちょい前に、動画が非公開になったので、そういうことでしょうね。
作ったのはcoke774さんで、近年は、スーパーカセットビジョンで色々ソフトを作られています。 「ゲームで金儲けする時代止められない」CCPゲームズ代表インタビュー
「CCPゲームズ」のヒルマ・ベーガー代表は14日、オンラインインタビューで最近、
話題に浮上した「プレイトゥオン(Play to Earn 遊んで儲けるゲーム)」について
「世界のゲーム業界には、すでにゲームアイテムを取り引きする2次市場が存在する」とし
「儲かるゲームは以前にもあったし、これからも止められない流れになる」と診断した。
CCPゲームズは、世界的な人気ゲーム「イブオンライン(Eve Online)」を開発・運営する。
イブオンラインは、世界で4000万人以上が楽しんでいる。
CCPゲームズは最近、NFT(代替不可能トークン)コンテンツを披露し、注目を集めている。
「アライアンス・トーナメント」というゲーム内の大会商品でNFTコンテンツを配った。 ハード側のイメージができないので質問させてください。
mapper 206のCHRバンク切り替えは400byte毎に小分けで切り替えられますが、
市販ゲームのプログラムを覗くと、例えばAのシーンでは$0000-$1FFFまで毎フレーム同じバンクを指定し続けています。
ゲームとして必要なタイミングでのみバンクを切り替えればいいのに毎フレーム同じバンクを指定して負荷ってかからないのでしょうか?
エミュとかでPPUのメモリを覗くとCHA-ROMのデータが$0000-$1FFFに展開されていますが、
これはCPUに命令されたタイミングで1byteずつコピーしているのでしょうか?
メモリに展開?されたなら、CHA-ROMを引っこ抜いてもバンク切り替えが起きない限りグラフィックはバグらなさそうなイメージがあります。
ここら辺が全くイメージできません。
拙い文章で申し訳ございませんがよろしくお願いします。 物は試しとゲーム動作中にCHAROMを引っこ抜いたところグラフィックがバグりました。
エミュではPPUメモリ$0000-$1FFFにコピーされているように見えるけど、
実際のハードでは、メモリは無くPPUとCHAROMのアドレス線が接続されているだけなんでしょうか?
バンク切り替えというのもアドレス線の接続先をコントロールするICに信号を送っているだけなので
仮に毎フレーム同じバンク番号を指定し続けても負荷はかからないと…。 連投すみません。
ROM領域と言われるチートコードでは干渉不可な場所と
RAM領域と言われる干渉可な場所があることを思い出しました。
PPUの0000から1FFFはROM領域という訳で、多分それはアドレス線で接続されており。
常にCHA ROMと同期しているイメージな気がしました。
自己解決してしまったと思います。お騒がせしました。 >>539-541
少なくとも >>539 の時点ではバンク切り替えがどういうものか理解できてないように見える
それが >>541 で自己レスするまでに調べて理解できたってことなんだろうか? >>542
お騒がせします。あまり理解は出来て無いと思います。
エミュのメモリビューワでPPUメモリを覗くと、$0000-$1FFFまでずらっと展開されてるので
あたかもCHAROMのデータをPPUがコピーして記憶しているかのように錯覚してました。(エミュ上なので書き換えられるし)
実際のハードでは、PPUが記憶してるとかではなくアドレス線A0〜A12線($0000-$1FFF)がCHAROMに直結してるだけというイメージと理解しました。
悪魔城ドラキュラはPRGからグラフィックを「RAM」にデータをコピーしているというワードを見て気がつきました。
プロアクションリプレイを使ってメモリとかを書き換えて我流で学んで来たため知識がぐちゃぐちゃです。
ROMとRAMの意味から学び直してきます。 CHRROMに直結で良いよ
(CHAではなくCHR)
ROMではなくRAMになってるのもあるけど >>543
こういう風に繋がっているけど、どのように動作するかイメージわく?
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 に接続 >>546
プロアクションリプレイでソフトをバイナリでいじって改造しようってレベルの奴に
ハードウエアの配線から説明しようってのが無理すぎる気がするが
知りたいこともそんなことじゃないだろうし >>546
今気づきました。ありがとうございます。
あの後、勉強&ファミコンの分かりやすい回路図を見つけて理解できました。
バンク切り替えは、PRG命令でCPUのデータバスとアドレスバスからhi/loが出る→ロジックICが受ける→ロジックICがEPROMのA15等をhiに固定し見たいデータに切り替える。
ファミコンは無いけどROMが複数個で構成されてるタイプであればOEをうまく切り替えて見たいデータに切り替える。 今年はファミコン発売40周年だぞ
7月は何かイベントしないとね PALTEST.NES( http://nesdev.com/paltest.zip)をディスクシステム用fdsに変換しました。
プログラムはc000から少しだけなのでそのままコピペして、nmi等アドレスをdffa~に入れるだけで動くはずです。
実際動かすと、数秒間正常動作するのですが、約5秒後フリーズしてしまいます。
どうしてフリーズしてしまうのか全く分かりません。
原因と対策方法が分かる方ご教示お願いします。 >>553
いろいろ条件不明
その書き方だとダンプ部分をずらしただけ?じゃ全然無理だね
*.nes用のソースコードをそのままコピペで.orgずらして
*.nesファイル作ってくれる簡易アセンブラでアセンブルしたとしても
*.fdsじゃ到底動かないよ
*.fds形式内部のファイル群と開始アドレスなどとブートの仕組み理解しないとね
https://www.nesdev.org/wiki/Family_Computer_Disk_System
block01 *NINTEND○-HVC*等が記載されたディスク情報
block02 ファイル数
block03 ファイルヘッダ(ブートに必要なKY○DAKU-ネームテーブルファイル、CHR、PRG、PRGのセーブデータ)
block04 block03の直後のファイルの実データ
CC65(CA65アセンブラ)用のサンプルコード
Github repository: Simple FDS example for ca65
裏技か
Forum post: Skipping the FDS license screen >>554
レスありがとう
よく読んでください、数秒間正常動作すると書きました。fdsファイルと移植に問題はありません。
で、自己解決しました。