1 :
デフォルトの名無しさん:
ファミコンのプログラムを書いてエミュレーターで遊びたいんですが、
特殊な開発機材が必要なんでしょうか?
6502クロスアセンブラ
3 :
デフォルトの名無しさん:2001/07/14(土) 23:40
バイナリを一文字一文字読んでいきましょう。それかオープンソースのエミュを見ましょう。
個人的には当時の開発者がどのように開発していたのか知りたい。
想像するに、とてもプログラミングとはかけ離れた世界だったんだろうな。
アセンブラ以前に、基板の知識前提みたいな
>>4 PCでPSのメモカ読書きする奴あるだろ?
あれでポケステのソフト開発するようなカンジだ。
6 :
デフォルトの名無しさん:2001/07/15(日) 10:22
>>4 > とてもプログラミングとはかけ離れた世界
んなこたぁない(藁
現在のゲームボーイやワンダースワンの開発とほとんど変わらない。
> アセンブラ以前に、基板の知識前提みたいな
それはコンシューマ開発ならみんないっしょ。
でもファミコンはサウンドを除けばガリ版刷り(?)みたいな4,5ページの
ハードの解説書しかなかったので、ある意味簡単だった。
7 :
デフォルトの名無しさん:2001/07/15(日) 10:32
>>4 プログラミングとかけ離れてはいないけど、ファミコン本体より、カセット
基板に載るMMCの方が、種類も多くて覚えることが多い。
本体にしてもCPU(2A03)よりPPUの方が重要。
8 :
デフォルトの名無しさん:2001/07/15(日) 10:40
>>7 たしかに基盤の種類は多かったけど覚えることは多くないだろ
バンク切り替えのレジスタとかか?
んなものぁIO周りのファンクション組むとき一回資料を見ればいいだけ。
PPUもたいして覚えることは無いと思う。
にしてもあのパレットだきゃあアタマ痛かったな・・・
9 :
デフォルトの名無しさん:2001/07/15(日) 11:09
ワタシ、10数年前までファミコンぷろぐらまでしたが、
当時の開発機材は、PC9801にICEを接続して開発してました。
任天堂から支給されたクロスアセンブラは周りの人間には評判よくなかった
ので、どこかのメーカのマクロアセンブラ使ったり、ハ○ソン製のPCengineアセンブラを
使ったりする人がほとんどでした。
ファミコンもいろんな意味でとんでもないハードで、
スプライトの座標はY軸に1ドットずれて表示されるし(これもハードのバグ?)
V-Sync期間越えてVRAMアクセスするとVRAMの内容がグシャるし、
パレット関係も苦労したような気が。他にも色々あったけど忘れた。
RAMも2Kバイトで、スタックは256バイト(6502のスタックポインタは8ビットだ)
なのでメモリ管理も苦労した。それに6502汎用レジスタ3個でどないせっつーの。
色々苦労があったけど、当時が一番楽しい時期だった。
あんときゃ自分も若かったしな(遠い目)
しかしなぜ今更ファミコン?>1さん
6502は$00〜$FFをレジスタ代わりに使えるから…
0ページ最高!
12 :
デフォルトの名無しさん:2001/07/15(日) 22:15
>>8 MMC1とMMC3しか使ったことないんじゃない(HVC-SL基板とかHVC-TK基板とか)?
MMC5とか触ってみたら、そんなこと言ってられないよ。さらにもっとマイナーな
MMC偶数番号とか。
13 :
デフォルトの名無しさん:2001/07/15(日) 22:27
>>9 ハードのとんでもなさといえば、やっぱりMMC1の初期状態だろ。
起動時のバンク状態が不定なので、16Kバイトごとにリセット処理を入れておかない
と時々立ち上がらなくなる。
どっかのエミュレータのページにファミコンの資料があった気がした。
ゲーム開発系ページ。翻訳とかしてる人のページ。
名前忘れた。アドレスはもちろん忘れた。
役に勃たなくてスマン。
昔…と言っても10年前とかそこらだけど、個人で購入できる
ディスクシステム用ゲームの開発機材があったよね?
ハッカー(社名)から出ていて、ケーブルでディスクシステムと当時の
NECパソコンをつないでBASICかアセンブラで組んでいくやつ。
16 :
デフォルトの名無しさん:2001/07/16(月) 02:40
UoNesterのコンパイルに成功!
これでボクも今日からエミュレータ開発者です♪
>>16 人類にとっては小さな一歩でもキミにとっては大きな一歩。
煽りじゃなく、頑張ってほしい
なにげにマルチプラットフォームのゲームになるね。
19 :
デフォルトの名無しさん:2001/07/17(火) 10:42
UoNesterのソース見つからないよ。
機材よりハードウェアの仕様書が必須。
スーファミ用に50頁位の簡単な資料を見ながら作ったことがあるが、
ハードウェアの解析をやってるに近いものがあった。
ソフト的には6502のアセンブラは必要でしょう。
ファミコン用のお絵かきツールもあればラク。
21 :
デフォルトの名無しさん:2001/07/17(火) 11:29
ファミコンのエミュから作っていこう!
ファミコン>スーファミ>サターン>PS>64>DC>PS2
22 :
デフォルトの名無しさん:2001/07/17(火) 11:32
ボクモファミコンのソフト作りたいと思います
作り方教えてください絶対造ります
>>21 ???1が逝っているエミュレータというのは、
これから作るモノなのか???
既にある前提での話だとおもてたよ。
まぁ、知ってる人が作ればそう難しくは無いか…
24 :
21:2001/07/17(火) 14:08
ごめそ。1は、エミュは、あってファミコンのプログラムを作りたいらしい
わたしは、エミュつくりたい(w
25 :
デフォルトの名無しさん:2001/07/17(火) 14:24
www.caffeine.jp/~cafe/ns/index.html
このページは参考になるんじゃないかな?
誰かこの資料だけでサンプルプログラム作れる人いますか?
しょぼっ
たしか、ノーマルだとプログラム64KB、スプライト64KBだから、
ハードの規模はそんなもんか…
そういえば初期の頃のソフト(ゼビウスとか)は、iアプリなみの
ミニゲーみたいなのばっかだったな。
後期のソフトは、カセットにチップを拡張しまくって
なんとかしてたらしいからな。
大丈夫だ!逝ける!敷居は限りなく低いぞ!
27 :
デフォルトの名無しさん:2001/07/17(火) 15:57
メイレイとかわわかってけど命令の書き方が分かりません
だれかおしえてください
28 :
デフォルトの名無しさん:2001/07/17(火) 16:04
すみません。プログラムについて1から教えてください。
今の人には限りなく敷居は高い気がするが。
>>26 iアプリなみのミニゲームって・・・。あんた本当にそう思ってるの?
30 :
デフォルトの名無しさん:2001/07/17(火) 16:13
初期のファミコンゲームって、ドンキーコングとか?
31 :
デフォルトの名無しさん:2001/07/17(火) 16:15
むずいよ
スーファミソフト乱立の時代には年3〜4本ペース。
同じペースでノーマルのファミコンソフト作ると、
年30〜40本作れそうじゃんか。
ただ、その後のレスからして、CPUの仕組みとか、
メモリマップドIOの仕組みとかの理解済みが前提になってなさそうな…
そこまで敷居の範疇に入るのなら確かに壁は高いかもね。
あと、伝統的に任天堂は何故か知らんが
キャラクターのグラフィックデータを「ネーム」
スプライトの属性データを「オブジェクト」
と呼んでて、最初意味不明に陥るので注意。
33 :
デフォルトの名無しさん:2001/07/17(火) 16:59
ファミリーベーシック使えばファミコンのこと良くわかるよ。
>>33 OH!その手があったのね。しかし、
ファミリーコンピューターは何とかなるとして、
ファミリーベーシックは手に入るのか?
メモリ管理とか考えただけで寒気がするよ。
PCの方がゲーム作るのらくだと思うけどね。今の時代。
俺も興味本位でGB弄ってたよ。だけど途中で嫌になった。
制限があるのは上等。その制限がアイデア勝負のゲームを生み出すんだ!!
とか思っていたけど、まさかあそこまでとは。
今のPCのぬるま湯に浸かってた俺には正直、無理だった。
まあやりたい人、頑張って。何か出来たらおれにもみせてね。
>>36 PCのプログラムは汎用化と抽象化が命だからね。
ファミコンはそのゲームだけ動けばOKの世界だから、
実行コードや変数から絵のデータまで、どこに置くかはもう決め打ちだよ。
いかにその辺を自動化出来るかが、開発速度向上のカギだったね。
38 :
デフォルトの名無しさん:2001/07/17(火) 20:12
39 :
デフォルトの名無しさん:2001/07/17(火) 20:27
ファミコンソフト作ってたよ。
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用のライブラリってネットのどっかにあるのかな?
どっかに電撃アップしちまう?
40 :
デフォルトの名無しさん:2001/07/17(火) 20:45
41 :
デフォルトの名無しさん:2001/07/17(火) 21:01
>>40 コピペじゃないよ。
プログラム板は全然来たこと無かったからちょっと
マジに書いてみたけどこの手のスレってもしかして定期的にあがってるの?
まぁいいや。
読み返してみるとツッコミ所満載だけど勘弁ね。
42 :
デフォルトの名無しさん:2001/07/17(火) 21:34
>>41 ごめそ。
いや。勉強になるよ。
漏れも資料あさってみたけど、少なかったもん。
FCの方がいいよ。マリオあるし(なぢょ
思わせぶりに「つっこみ所満載」と言ってるやつが
本当にツッコミ入れたことは無い。
44 :
デフォルトの名無しさん:2001/07/17(火) 22:10
45 :
デフォルトの名無しさん:2001/07/17(火) 22:26
46 :
デフォルトの名無しさん:2001/07/17(火) 22:41
ROMを落とせるところを教えてください。
あくまで研究・閲覧のためだけで、確認次第破棄します。
よろしくお願いします。
47 :
デフォルトの名無しさん:2001/07/17(火) 22:45
エミュ ROM で検索をかければ見つかるのではないでしょうか?
48 :
デフォルトの名無しさん:2001/07/17(火) 22:57
>>26 間違い。
正しくは、ノーマルだと、プログラムROMが256Kビット(バイトじゃないぞ!)、キャラクタ
ROMが64Kビットだ。
本体に内蔵されているメモリは、ワークRAMとVRAMが各16Kビット。VRAMはBG2枚分だけど、
BGを水平方向に並べるか、垂直方向に並べるかは、カセット側のショートランドで選択する。
絵のデータの置き場所は決め打ちというより、
キャラクターROMに置くしかなかったような…
51 :
デフォルトの名無しさん:2001/07/18(水) 00:21
ドラクエ2や3はIRQ割り込みを使っているのですか?
自作エミュで音が出ないのです。
この辺りの解説をきぼん。
普通BGMの演奏には割込使うだろう…
53 :
デフォルトの名無しさん:2001/07/18(水) 01:05
自作エミュきぼんぬ
54 :
デフォルトの名無しさん:2001/07/18(水) 01:14
そうそう、256k(bit)なんて容量はすぐ使い尽くしてしまって、たった10バイトの容量
削るのに徹夜なんかして・・・泣きそうだった。
CGROMの開いている部分にプログラムを埋め込んでおいて、ただでさえ狭いRAM上に
ダイナミックに転送しては実行する、なんてこともやったなあ。
それに画面2分割スクロールも苦労したっけな。
ラスター割り込みがなくて、0番スプライトを画面中央に置いてBGとの衝突フラグを
ポーリングするしかないんで、そのタイミングを逃すと画面下半分のスクロールレジスタ
をセットしそこなってフレームが乱れるし。
そのために処理時間の管理もうまくやらないといけなかった。
GBのソフトも作ったけど、こっちはFCよりずっと楽だった。
8085カスタム(?)で昔から見慣れたニモニックを使えて、RAMも数倍の容量があって、
ラスター割り込みもあったし、ウィンドウ機能もあった。
スプライトも横に(FCの8個よりも)もっと並ぶし(苦笑)
55 :
デフォルトの名無しさん:2001/07/18(水) 01:24
カコイイ
56 :
デフォルトの名無しさん:2001/07/18(水) 01:35
ったく、業界は貧乏性のプログラマが多くてよー。
ま、そんなハードばかりだったから仕方ないんだけどさ。
35歳以上の開発者はいい加減引退して欲しいネ!!!
まともなゲーム作ってたのはその世代だよ。多分
>>56
>>57 その世代「の極一部」なら同意。
所詮はファミコンバブル期。
>>54 俺もゲーボー作ったことあるよ。
たしかにファミコンよりは作り易かったな。
こっちの方が入門にはいいと思うが、まだ生きているハードなだけに
エミュレータはないだろうなぁ。
ところでCPUはZ80とほぼ互換だったけど、8085って名前だったっけ?
スーファミもやったけど、最悪だったよ。
CPUに8ビットモードと16ビットモードがあって、
2種類用のコードがごちゃごちゃに混ざるような感じだった。
ジャンプ先のモードが違うとぶっ飛ぶし…
入門には向かないね。
>>36 メモリ管理はアセンブラにシンボル渡すツール作ってしまえば、面倒な作業ではなくなったよ。
アドレスの割り振りも2本目以降そんなに変わるものでもないしね。
それよりハードとの同期を取るのが大変だよ。
あらゆる命令の動作クロック数を把握しておいて、ハードウェアとの
ハンドシェイクを取らなくちゃいけないからね。
>>39 目がドライブのCPUに0が1個足りないから非常に性能が低く見積もられてしまっているよ。
61 :
51:2001/07/18(水) 11:36
>>52 確かに普通のゲームはNMI割り込みだけで動くんですけど、
ドラクエ類(エニックス)はダメなんです。
62 :
デフォルトの名無しさん:2001/07/18(水) 12:28
>>61 そういえば昔はドラクエはエミュ上ではパッチ当てないと音でなかったな・・・
63 :
デフォルトの名無しさん:2001/07/18(水) 15:02
ファミコンのゲームって美化されてるよね。かなり・・・
久しぶりにやるとショック!!
>>60 スーファミの話になっちゃうけど、一番厄介なのがラスターをスキャンしている時間はビデオ関係の
データ転送が出来ない仕様だったので、垂直か水平のブランク期間まで待てって感じの作りだった。
しかし当然次の垂直同期信号までに次の画面用の計算は終わっておかないとならないので
(NTSCの場合は垂直同期信号は60Hz)、水平同期なんて待ってると60分の1秒では全然間に合わない。
だから、割り込み処理を使って非同期処理の嵐。
基本的にCPUが遅すぎなのでサイズよりも実行速度との戦いになる。
あと、PAL版に移植したときは、垂直同期の間隔が50Hzになったが、これはそのまま移植できた。
PAL用に処理時間が設計されてると、NTSCへの移植は地獄を見るだろうな。
65 :
デフォルトの名無しさん:2001/07/18(水) 22:12
>>64 ファミコンはサイズとの戦い、スーパーファミコンは実行時間との戦いという感じだった。
NMI割り込みってマスクできたんだよな。確か。
変な話だ。
67 :
デフォルトの名無しさん:2001/07/19(木) 04:59
>>64 PALって何者なんですか。
海外のやつですか?
68 :
デフォルトの名無しさん:2001/07/19(木) 09:53
PALはヨーロッパで主に採用されてるヴィデオ方式だよ。
なんたってプログレッシブだから静止画オタには憧れの的だよ。
69 :
:2001/07/19(木) 13:17
私としてはファミコン版魔界村がクリアできないので
ROMを改造したいぞ〜
2周目の1面のウッディーピッグがスプライト消えまくりで
こんなん行けるかゴルァ!って感じだったな。
72 :
デフォルトの名無しさん:2001/07/19(木) 14:47
ファミコンのROMをコンバートしたいんですけどそういうのありますか?
>>72 dump.exeを使えばテキストにコンバートできるよ。
74 :
デフォルトの名無しさん:2001/07/19(木) 16:29
75 :
デフォルトの名無しさん:2001/07/19(木) 23:54
逆汗したいのか?探せば結構あるぞ。日本語のもあるし。
板違いだよ。わかってんの?
78 :
デフォルトの名無しさん:2001/07/20(金) 03:31
思い出した!
インターレースといえは、スーファミ(ファミコン等他のゲーム機全て同じと思う)は、
ほとんどのソフトが似非プログレッシヴモードで動いていたような気がする。
内部的には、プログレッシブに捜査しているかの如く動作し、ビデオ出力する時点で
EVENとODDフレームに分けて出力する。
つまり、垂直同期60Hzと書いたが、内部的には30Hzだったような気がした。
うみゃ? 60Hzでフィールドごとに走査線ずらしてないだけでしゃう。
結果的に縦解像度半分のプログレッシブ。
ちなみに表示ラインは光量がインターレースの倍になるため、
画面が焼きつく恐れがありますので
液晶プロジェクタでの使用はご遠慮下さいの注意書き。
遅レスですまなんだが
エミュ作るならBERO氏のページがいいよ。
資料もおいてあるし、エミュレータとソースもおいてある。
urlは忘れたのでグーグルでFCEとかFPCEとかサーチすれ。
81 :
デフォルトの名無しさん:2001/07/20(金) 11:35
82 :
デフォルトの名無しさん:2001/07/20(金) 13:15
>>79 それって、普通のNTSCのテレヴィに
規格外の信号を送ってプログレッシヴにしてる
てことかな?
それとも元々そんな怪しげな仕様が規格にあった?
>規格外の信号を送ってプログレッシヴにしてる
その通りでござる。
規格外なもんで、初期には
ファミコンの出力に同期が取れないテレビとかあったよね。
85 :
デフォルトの名無しさん:2001/07/20(金) 17:55
わかってはいると思うんだが、エミュで動かす前提でソフトを開発するのって
相当ナンセンスなような・・・
どうせエミュレータならN88BASIC for Windowsとかで・・・
描画ルーチン使いまわしできないかなーイヒヒとかって
ZSNESのソース落としてきたら、
9割以上アセンブラでギャフン。即退散したヘタレな俺。
87 :
デフォルトの名無しさん:2001/07/20(金) 18:34
>>85 >相当ナンセンスなような・
禿同
コンサマー機に良くある制限事項まで綺麗にエミュレートしている
(=優秀なエミュ)であればあるほど、
開発者は苦労する。
何のための制約なんだって感じ。
88 :
デフォルトの名無しさん:2001/07/26(木) 11:16
age
89 :
:2001/07/27(金) 21:07
90 :
デフォルトの名無しさん:2001/07/27(金) 22:48
やることに意義があるage
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
続きはコチラです
http://www.geocities.com/entry_k/main/main01.html
>>85 いろんなマシン(OS)上で動く、という利点はあるわな。
93 :
デフォルトの名無しさん:2001/08/17(金) 00:56
作っているのかな?
94 :
デフォルトの名無しさん:2001/08/17(金) 01:05
>>85 JavaをバカにするとJava厨が怒りますよ
なんでJava?