トップページ⇒tech
95コメント33KB

ファミコンのプログラム

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ファミコンのプログラムを書いてエミュレーターで遊びたいんですが、
特殊な開発機材が必要なんでしょうか?
0002デフォルトの名無しさんNGNG
6502クロスアセンブラ
0003デフォルトの名無しさんNGNG
バイナリを一文字一文字読んでいきましょう。それかオープンソースのエミュを見ましょう。
0004デフォルトの名無しさんNGNG
個人的には当時の開発者がどのように開発していたのか知りたい。
想像するに、とてもプログラミングとはかけ離れた世界だったんだろうな。
アセンブラ以前に、基板の知識前提みたいな
0005デフォルトの名無しさんNGNG
>>4
PCでPSのメモカ読書きする奴あるだろ?
あれでポケステのソフト開発するようなカンジだ。
0006デフォルトの名無しさんNGNG
>>4
> とてもプログラミングとはかけ離れた世界
んなこたぁない(藁
現在のゲームボーイやワンダースワンの開発とほとんど変わらない。
> アセンブラ以前に、基板の知識前提みたいな
それはコンシューマ開発ならみんないっしょ。
でもファミコンはサウンドを除けばガリ版刷り(?)みたいな4,5ページの
ハードの解説書しかなかったので、ある意味簡単だった。
0007デフォルトの名無しさんNGNG
>>4
プログラミングとかけ離れてはいないけど、ファミコン本体より、カセット
基板に載るMMCの方が、種類も多くて覚えることが多い。
本体にしてもCPU(2A03)よりPPUの方が重要。
0008デフォルトの名無しさんNGNG
>>7
たしかに基盤の種類は多かったけど覚えることは多くないだろ
バンク切り替えのレジスタとかか?
んなものぁIO周りのファンクション組むとき一回資料を見ればいいだけ。
PPUもたいして覚えることは無いと思う。
にしてもあのパレットだきゃあアタマ痛かったな・・・
0009デフォルトの名無しさんNGNG
ワタシ、10数年前までファミコンぷろぐらまでしたが、
当時の開発機材は、PC9801にICEを接続して開発してました。
任天堂から支給されたクロスアセンブラは周りの人間には評判よくなかった
ので、どこかのメーカのマクロアセンブラ使ったり、ハ○ソン製のPCengineアセンブラを
使ったりする人がほとんどでした。
ファミコンもいろんな意味でとんでもないハードで、
スプライトの座標はY軸に1ドットずれて表示されるし(これもハードのバグ?)
V-Sync期間越えてVRAMアクセスするとVRAMの内容がグシャるし、
パレット関係も苦労したような気が。他にも色々あったけど忘れた。
RAMも2Kバイトで、スタックは256バイト(6502のスタックポインタは8ビットだ)
なのでメモリ管理も苦労した。それに6502汎用レジスタ3個でどないせっつーの。

色々苦労があったけど、当時が一番楽しい時期だった。
あんときゃ自分も若かったしな(遠い目)

しかしなぜ今更ファミコン?>1さん
0010デフォルトの名無しさんNGNG
6502は$00〜$FFをレジスタ代わりに使えるから…
0011デフォルトの名無しさんNGNG
0ページ最高!
0012デフォルトの名無しさんNGNG
>>8
MMC1とMMC3しか使ったことないんじゃない(HVC-SL基板とかHVC-TK基板とか)?
MMC5とか触ってみたら、そんなこと言ってられないよ。さらにもっとマイナーな
MMC偶数番号とか。
0013デフォルトの名無しさんNGNG
>>9
ハードのとんでもなさといえば、やっぱりMMC1の初期状態だろ。
起動時のバンク状態が不定なので、16Kバイトごとにリセット処理を入れておかない
と時々立ち上がらなくなる。
0014デフォルトの名無しさんNGNG
どっかのエミュレータのページにファミコンの資料があった気がした。
ゲーム開発系ページ。翻訳とかしてる人のページ。
名前忘れた。アドレスはもちろん忘れた。
役に勃たなくてスマン。
0015デフォルトの名無しさんNGNG
昔…と言っても10年前とかそこらだけど、個人で購入できる
ディスクシステム用ゲームの開発機材があったよね?
ハッカー(社名)から出ていて、ケーブルでディスクシステムと当時の
NECパソコンをつないでBASICかアセンブラで組んでいくやつ。
0016デフォルトの名無しさんNGNG
UoNesterのコンパイルに成功!
これでボクも今日からエミュレータ開発者です♪
0017デフォルトの名無しさんNGNG
>>16
人類にとっては小さな一歩でもキミにとっては大きな一歩。
煽りじゃなく、頑張ってほしい
0018デフォルトの名無しさんNGNG
なにげにマルチプラットフォームのゲームになるね。
0019デフォルトの名無しさんNGNG
UoNesterのソース見つからないよ。
0020デフォルトの名無しさんNGNG
機材よりハードウェアの仕様書が必須。
スーファミ用に50頁位の簡単な資料を見ながら作ったことがあるが、
ハードウェアの解析をやってるに近いものがあった。
ソフト的には6502のアセンブラは必要でしょう。
ファミコン用のお絵かきツールもあればラク。
0021デフォルトの名無しさんNGNG
ファミコンのエミュから作っていこう!
ファミコン>スーファミ>サターン>PS>64>DC>PS2
0022デフォルトの名無しさんNGNG
ボクモファミコンのソフト作りたいと思います
作り方教えてください絶対造ります
0023デフォルトの名無しさんNGNG
>>21
???1が逝っているエミュレータというのは、
これから作るモノなのか???
既にある前提での話だとおもてたよ。

まぁ、知ってる人が作ればそう難しくは無いか…
002421NGNG
ごめそ。1は、エミュは、あってファミコンのプログラムを作りたいらしい
わたしは、エミュつくりたい(w
0025デフォルトの名無しさんNGNG
www.caffeine.jp/~cafe/ns/index.html
このページは参考になるんじゃないかな?
誰かこの資料だけでサンプルプログラム作れる人いますか?
0026デフォルトの名無しさんNGNG
しょぼっ
たしか、ノーマルだとプログラム64KB、スプライト64KBだから、
ハードの規模はそんなもんか…
そういえば初期の頃のソフト(ゼビウスとか)は、iアプリなみの
ミニゲーみたいなのばっかだったな。
後期のソフトは、カセットにチップを拡張しまくって
なんとかしてたらしいからな。

大丈夫だ!逝ける!敷居は限りなく低いぞ!
0027デフォルトの名無しさんNGNG
メイレイとかわわかってけど命令の書き方が分かりません
だれかおしえてください
0028デフォルトの名無しさんNGNG
すみません。プログラムについて1から教えてください。
0029デフォルトの名無しさんNGNG
今の人には限りなく敷居は高い気がするが。

>>26
iアプリなみのミニゲームって・・・。あんた本当にそう思ってるの?
0030デフォルトの名無しさんNGNG
初期のファミコンゲームって、ドンキーコングとか?
0031デフォルトの名無しさんNGNG
むずいよ
0032デフォルトの名無しさんNGNG
スーファミソフト乱立の時代には年3〜4本ペース。
同じペースでノーマルのファミコンソフト作ると、
年30〜40本作れそうじゃんか。

ただ、その後のレスからして、CPUの仕組みとか、
メモリマップドIOの仕組みとかの理解済みが前提になってなさそうな…
そこまで敷居の範疇に入るのなら確かに壁は高いかもね。

あと、伝統的に任天堂は何故か知らんが
キャラクターのグラフィックデータを「ネーム」
スプライトの属性データを「オブジェクト」
と呼んでて、最初意味不明に陥るので注意。
0033デフォルトの名無しさんNGNG
ファミリーベーシック使えばファミコンのこと良くわかるよ。
0034デフォルトの名無しさんNGNG
>>33
OH!その手があったのね。しかし、
ファミリーコンピューターは何とかなるとして、
ファミリーベーシックは手に入るのか?
0035デフォルトの名無しさんNGNG
>>34
それもエミュ
0036デフォルトの名無しさんNGNG
メモリ管理とか考えただけで寒気がするよ。
PCの方がゲーム作るのらくだと思うけどね。今の時代。

俺も興味本位でGB弄ってたよ。だけど途中で嫌になった。
制限があるのは上等。その制限がアイデア勝負のゲームを生み出すんだ!!
とか思っていたけど、まさかあそこまでとは。
今のPCのぬるま湯に浸かってた俺には正直、無理だった。

まあやりたい人、頑張って。何か出来たらおれにもみせてね。
0037デフォルトの名無しさんNGNG
>>36
PCのプログラムは汎用化と抽象化が命だからね。
ファミコンはそのゲームだけ動けばOKの世界だから、
実行コードや変数から絵のデータまで、どこに置くかはもう決め打ちだよ。
いかにその辺を自動化出来るかが、開発速度向上のカギだったね。
0038デフォルトの名無しさんNGNG
>>37
カコイイ
0039デフォルトの名無しさんNGNG
ファミコンソフト作ってたよ。

FC->MD->PCE->SFC->SS->PS
他にも ポケ捨てとか
コンシューマのメジャーな奴は殆どやったよ。

FCのアセンブラは結構簡単だけどFCのソフトを作るのは超大変。

何が大変てさFCの仕様を理解するのが大変。
知ってれば大した事無いんだけど資料がメッチャ少なかったからね。

ハッキリ言って教えて君には無理。
自分で資料を探して自分なりに解釈して試して自分で検証する。
自分自分自分。
本がネェとか仕様が判らないなんて言ってる様じゃ20年くらいかかるよ。

0ページとかVSync割り込みとメイン側の切り分けとかFCのDMAとか
VRAM構造とかアクセスモードとかバンクを跨ぐジャンプテーブルとか
今現在主流じゃないテク満載しないとロクな物できないから。

FCソフトの量産体制だって数本作ってフレームを使いまわすから
あのペースで作成出来てただけで1から初心者が作るなら
マジ1年は軽くかかるんじゃないかな。

それでもやってみたいって言うならポケ捨てをオススメするよ。
ポケ捨てならハード依存の部分もあまり無くあの手の中では一番楽。

ARMのアセンブラと ポケ捨て<-->PC 接続キットがあればなんとかなるからね。
その後FCソフトを作る気があるならポケ捨てコードはアセンブラで書くように。
Cで書いた方が効率イイんだけど勉強になるからね。

あーやっぱFCはダメだぁ...
いやスッゲーよく出来てる設計なんだけどね。
凄く少ない資源で最大の効果を上げるハードなんだよね。SFCもだけど。
任天堂の仕様はいつも全然判らないんだけど
調べてくうちにスゲーとか思うんだよね。
ただ敷居が高いから、やっぱ趣味向きじゃないよ。

ポケ捨ての狭い画面とかモノクロが気に入らないっていうなら
メガドラがいいよ。 CPU 6800だからメッチャ簡単だもん。
FCのアセンブラも簡単って言ったけどソレに付随する何かが簡単なんだよ。

なんか上手く表現できないけど両方やれば判るよ。

とにかくオレ的には ポケ捨て。もしくはメガドラ。
PCエンジンは忘れた…Z80だっけ?

あと、ライブラリ&コンパイル環境があるならPS楽しいよ。

PS用のライブラリってネットのどっかにあるのかな?
どっかに電撃アップしちまう?
0040デフォルトの名無しさんNGNG
>>39
コピペ?
てか、長い!(w
0041デフォルトの名無しさんNGNG
>>40
コピペじゃないよ。
プログラム板は全然来たこと無かったからちょっと
マジに書いてみたけどこの手のスレってもしかして定期的にあがってるの?
まぁいいや。
読み返してみるとツッコミ所満載だけど勘弁ね。
0042デフォルトの名無しさんNGNG
>>41
ごめそ。
いや。勉強になるよ。
漏れも資料あさってみたけど、少なかったもん。
FCの方がいいよ。マリオあるし(なぢょ
0043デフォルトの名無しさんNGNG
思わせぶりに「つっこみ所満載」と言ってるやつが
本当にツッコミ入れたことは無い。
0044デフォルトの名無しさんNGNG
>>43
ヨクヨメヨカコワルイゾ
0045デフォルトの名無しさんNGNG
謎なNES ver0.03
http://hb3.seikyou.ne.jp/home/docokalaki/117.zip

この程度の事をやるのにどれくらいかかりますか?
0046デフォルトの名無しさんNGNG
ROMを落とせるところを教えてください。
あくまで研究・閲覧のためだけで、確認次第破棄します。
よろしくお願いします。
0047デフォルトの名無しさんNGNG
エミュ ROM で検索をかければ見つかるのではないでしょうか?
0048デフォルトの名無しさんNGNG
>>26
間違い。
正しくは、ノーマルだと、プログラムROMが256Kビット(バイトじゃないぞ!)、キャラクタ
ROMが64Kビットだ。
本体に内蔵されているメモリは、ワークRAMとVRAMが各16Kビット。VRAMはBG2枚分だけど、
BGを水平方向に並べるか、垂直方向に並べるかは、カセット側のショートランドで選択する。
0049デフォルトの名無しさんNGNG
>>48
じゃぁもっとしょぼいじゃんか
0050デフォルトの名無しさんNGNG
絵のデータの置き場所は決め打ちというより、
キャラクターROMに置くしかなかったような…
0051デフォルトの名無しさんNGNG
ドラクエ2や3はIRQ割り込みを使っているのですか?
自作エミュで音が出ないのです。
この辺りの解説をきぼん。
0052デフォルトの名無しさんNGNG
普通BGMの演奏には割込使うだろう…
0053デフォルトの名無しさんNGNG
自作エミュきぼんぬ
0054デフォルトの名無しさんNGNG
そうそう、256k(bit)なんて容量はすぐ使い尽くしてしまって、たった10バイトの容量
削るのに徹夜なんかして・・・泣きそうだった。
CGROMの開いている部分にプログラムを埋め込んでおいて、ただでさえ狭いRAM上に
ダイナミックに転送しては実行する、なんてこともやったなあ。
それに画面2分割スクロールも苦労したっけな。
ラスター割り込みがなくて、0番スプライトを画面中央に置いてBGとの衝突フラグを
ポーリングするしかないんで、そのタイミングを逃すと画面下半分のスクロールレジスタ
をセットしそこなってフレームが乱れるし。
そのために処理時間の管理もうまくやらないといけなかった。

GBのソフトも作ったけど、こっちはFCよりずっと楽だった。
8085カスタム(?)で昔から見慣れたニモニックを使えて、RAMも数倍の容量があって、
ラスター割り込みもあったし、ウィンドウ機能もあった。
スプライトも横に(FCの8個よりも)もっと並ぶし(苦笑)
0055デフォルトの名無しさんNGNG
カコイイ
0056デフォルトの名無しさんNGNG
ったく、業界は貧乏性のプログラマが多くてよー。
ま、そんなハードばかりだったから仕方ないんだけどさ。

35歳以上の開発者はいい加減引退して欲しいネ!!!
0057デフォルトの名無しさんNGNG
まともなゲーム作ってたのはその世代だよ。多分>>56
0058デフォルトの名無しさんNGNG
>>57
その世代「の極一部」なら同意。
所詮はファミコンバブル期。
0059デフォルトの名無しさんNGNG
>>54
俺もゲーボー作ったことあるよ。
たしかにファミコンよりは作り易かったな。
こっちの方が入門にはいいと思うが、まだ生きているハードなだけに
エミュレータはないだろうなぁ。
ところでCPUはZ80とほぼ互換だったけど、8085って名前だったっけ?

スーファミもやったけど、最悪だったよ。
CPUに8ビットモードと16ビットモードがあって、
2種類用のコードがごちゃごちゃに混ざるような感じだった。
ジャンプ先のモードが違うとぶっ飛ぶし…
入門には向かないね。
0060デフォルトの名無しさんNGNG
>>36
メモリ管理はアセンブラにシンボル渡すツール作ってしまえば、面倒な作業ではなくなったよ。
アドレスの割り振りも2本目以降そんなに変わるものでもないしね。
それよりハードとの同期を取るのが大変だよ。
あらゆる命令の動作クロック数を把握しておいて、ハードウェアとの
ハンドシェイクを取らなくちゃいけないからね。

>>39
目がドライブのCPUに0が1個足りないから非常に性能が低く見積もられてしまっているよ。
006151NGNG
>>52
確かに普通のゲームはNMI割り込みだけで動くんですけど、
ドラクエ類(エニックス)はダメなんです。
0062デフォルトの名無しさんNGNG
>>61
そういえば昔はドラクエはエミュ上ではパッチ当てないと音でなかったな・・・
0063デフォルトの名無しさんNGNG
ファミコンのゲームって美化されてるよね。かなり・・・
久しぶりにやるとショック!!
0064デフォルトの名無しさんNGNG
>>60
スーファミの話になっちゃうけど、一番厄介なのがラスターをスキャンしている時間はビデオ関係の
データ転送が出来ない仕様だったので、垂直か水平のブランク期間まで待てって感じの作りだった。
しかし当然次の垂直同期信号までに次の画面用の計算は終わっておかないとならないので
(NTSCの場合は垂直同期信号は60Hz)、水平同期なんて待ってると60分の1秒では全然間に合わない。
だから、割り込み処理を使って非同期処理の嵐。
基本的にCPUが遅すぎなのでサイズよりも実行速度との戦いになる。

あと、PAL版に移植したときは、垂直同期の間隔が50Hzになったが、これはそのまま移植できた。
PAL用に処理時間が設計されてると、NTSCへの移植は地獄を見るだろうな。
0065デフォルトの名無しさんNGNG
>>64
ファミコンはサイズとの戦い、スーパーファミコンは実行時間との戦いという感じだった。
0066デフォルトの名無しさんNGNG
NMI割り込みってマスクできたんだよな。確か。
変な話だ。
0067デフォルトの名無しさんNGNG
>>64
PALって何者なんですか。
海外のやつですか?
0068デフォルトの名無しさんNGNG
PALはヨーロッパで主に採用されてるヴィデオ方式だよ。
なんたってプログレッシブだから静止画オタには憧れの的だよ。
0069 NGNG
私としてはファミコン版魔界村がクリアできないので
ROMを改造したいぞ〜
0070デフォルトの名無しさんNGNG
2周目の1面のウッディーピッグがスプライト消えまくりで
こんなん行けるかゴルァ!って感じだったな。
0071デフォルトの名無しさんNGNG
>>68
PALもインターレースだろ
0072デフォルトの名無しさんNGNG
ファミコンのROMをコンバートしたいんですけどそういうのありますか?
0073デフォルトの名無しさんNGNG
>>72
dump.exeを使えばテキストにコンバートできるよ。
0074デフォルトの名無しさんNGNG
>>72
コンバート=変換って意味だよ。
0075デフォルトの名無しさんNGNG
逆汗したいのか?探せば結構あるぞ。日本語のもあるし。
0076デフォルトの名無しさんNGNG
板違いだよ。わかってんの?
0077デフォルトの名無しさんNGNG
>>76
??? どこが?
0078デフォルトの名無しさんNGNG
思い出した!
インターレースといえは、スーファミ(ファミコン等他のゲーム機全て同じと思う)は、
ほとんどのソフトが似非プログレッシヴモードで動いていたような気がする。

内部的には、プログレッシブに捜査しているかの如く動作し、ビデオ出力する時点で
EVENとODDフレームに分けて出力する。

つまり、垂直同期60Hzと書いたが、内部的には30Hzだったような気がした。
0079デフォルトの名無しさんNGNG
うみゃ? 60Hzでフィールドごとに走査線ずらしてないだけでしゃう。
結果的に縦解像度半分のプログレッシブ。
ちなみに表示ラインは光量がインターレースの倍になるため、
画面が焼きつく恐れがありますので
液晶プロジェクタでの使用はご遠慮下さいの注意書き。
0080デフォルトの名無しさんNGNG
遅レスですまなんだが
エミュ作るならBERO氏のページがいいよ。
資料もおいてあるし、エミュレータとソースもおいてある。
urlは忘れたのでグーグルでFCEとかFPCEとかサーチすれ。
0081デフォルトの名無しさんNGNG
Bero氏のサイト
http://www.geocities.co.jp/Playtown/2004/
http://www.bekkoame.ne.jp/~bero/
0082デフォルトの名無しさんNGNG
>>79
それって、普通のNTSCのテレヴィに
規格外の信号を送ってプログレッシヴにしてる
てことかな?
それとも元々そんな怪しげな仕様が規格にあった?
0083デフォルトの名無しさんNGNG
>規格外の信号を送ってプログレッシヴにしてる
その通りでござる。
0084デフォルトの名無しさんNGNG
規格外なもんで、初期には
ファミコンの出力に同期が取れないテレビとかあったよね。
0085デフォルトの名無しさんNGNG
わかってはいると思うんだが、エミュで動かす前提でソフトを開発するのって
相当ナンセンスなような・・・
どうせエミュレータならN88BASIC for Windowsとかで・・・
0086デフォルトの名無しさんNGNG
描画ルーチン使いまわしできないかなーイヒヒとかって
ZSNESのソース落としてきたら、
9割以上アセンブラでギャフン。即退散したヘタレな俺。
0087デフォルトの名無しさんNGNG
>>85
>相当ナンセンスなような・
禿同
コンサマー機に良くある制限事項まで綺麗にエミュレートしている
(=優秀なエミュ)であればあるほど、
開発者は苦労する。
何のための制約なんだって感じ。
0088デフォルトの名無しさんNGNG
age
0089  NGNG
0090デフォルトの名無しさんNGNG
やることに意義があるage
0091無能な姦理人@Shiri-QNGNG
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□





続きはコチラです
http://www.geocities.com/entry_k/main/main01.html
0092デフォルトの名無しさんNGNG
>>85
いろんなマシン(OS)上で動く、という利点はあるわな。
0093デフォルトの名無しさんNGNG
作っているのかな?
0094デフォルトの名無しさんNGNG
>>85
JavaをバカにするとJava厨が怒りますよ
0095デフォルトの名無しさんNGNG
なんでJava?
■ このスレッドは過去ログ倉庫に格納されています