投稿

ラベル(ファミコン)が付いた投稿を表示しています

ファミコンの完全自作ROM&カセットを作ろう!!その3 ~とりあえず動くromカセットができた~

イメージ
以前、 ファミコンカセットを作ろう としてピンアサイン直読み直結で作ったものの、結局動かず悶々としてました。何かが間違っているのは確かで、なにが間違っているのかがよくわからないまま暫く、とある本が出版されそれを元にもう一度作り直したのがこちら。 はい、デカイですね!通常のファミコンカセットの 2 〜 3 倍のサイズです。中身は eprom が 2 つといたってシンプル。しかしながら重要なのはその上のジャンパ線で、ここにはファミコンカセット特有の機能を拡張できるように本来半田付けしてしまうところを外に出してあります。ざっくりいうとスルロールと音ですね。スクロールについては一枚の画面をひたすらループする方向を縦方向が横方向かどっちにするか、音については外部から音を追加で加える(体験してもらうなら、ゲームを起動して 2 コンのマイクに向かって喋ってもらうと、ファミコンを通して音が出ます。それみたいなもんです。)ですかね。もう一つ機能拡張のためピンを出しておいたのですが忘れてしまいました。 そしてこのカセット、実はどのマッパーにも属さない、変なカセットになっているようです。というのが、直繋ぎの場合 PRGROM と呼ばれる 6502 側の ROM は最大 16kbyte だそうですが、今回製作したカセットは 32kbyte が繋がるようになっています。(ドンキーコングやマリオブラザーズ がマッパー 0 らしのですが、いやどんだけ小さいプログラムに詰め込んだのか恐ろしくなります。)たぶんきちんと調べればあるんでしょうね。詳しい方教えてください…  CHRROM と呼ばれるグラフィック ROM は 8kbyte でこれは変わりません。使ってみてわかったのですが、恐ろしく狭いです。背景はもちろん画面を埋められないほどしか画像を入れられません。スプライトも、 msx のように重ね合わせて色を増やすことができるのですがそもそも登録できるスプライト枚数があまりに少ないことと色の指定可能数が実質 12 色とぞっとするほど少ないことです。   これについてはバンク切り替えやカラーパレットの書き換えでトリッキーに増やすことができますが、素直にプログラムしたらザコいゲームしか作れません。それでも、ファミコン実機で動くところを見ると感動もひとしおで...

ファミコンの完全自作ROM&カセット作ろう!〜cc65で起動ROMをつくる〜

先日、ファミコンに直差しできるROMカセットを作るというお話をしました。しかし、いくらハードウェアができたとしてもプログラムがないと動かないただの鉄の塊です。 ■cc65は、僕らに新規の6502コンピューターを作らせてくれない  そこでプログラムを作って書き込もうとしましたが、問題はcc65でROMに書き込める普通のプログラムデータを作成することが非常に困難であるという点でした。  つまりどういうことかというと、cc65というコンパイラソフトは「新規の」6502ハードウェア開発向けには作られておらず、コモドール64やファミコンのエミュレーター向けの開発を考えられているのです。それがわかる仕様として、アセンブラで書いたプログラムをcc65で書き出す際に、どのハードウェア向けに書き出すかという旨を指定する必要があるのです。  もし指定しなければ自動的にコモドール64向けに書き出されます。そして、プログラムの内容がそれに沿っていなければエラーとして判断され、かきだされることもありません。 ■使いやすさの視点の違いから生まれた仕様  もうひとつ、cc65が抱える問題として ORG命令 が本来の動きとして働かないという点です。   ORG命令 とは、そのプログラムがメモリのどの位置から開始されるのかをしていする重要な命令です。これによってジャンプ命令やラベルがまともに使用できるし、6502においてはリセット割り込み(ゲームを開始する際に読み込まれるメモリ)の情報を書き込むメモリの位置を指定しなくてはいけないので、非常に重要な命令なのですがなんとcc65ではほぼ封印されています。ジャンプ先としては読み込まれきちんとコンパイルされますが プログラムをコンパイルした際に指定した場所にプログラムが書き込まれていないのです。非常にバカバカしくなります。 ではcc65にはORG命令の代わりに何が使われているのかというとSEGMENT命令が利用されています。プログラムをSEGMENTで切り分け、その段階ではまだどこからそのプログラムを配置するのかを指定しません。指定はコンフィグファイルという別のファイルにて指定します。つまり、 アセンブラファイルだけではプログラムを作成することができない のです。また、コンパイルした際にこのコン...

ファミコンの完全自作ROM&カセットを作ろう!!その1~立ちはだかるコンパイラの壁~

イメージ
ファミコンのソフトを自作する。まさにファミコン少年なら一度は考えたことのある 暴挙 夢の企画なのですが、古今東西にて公開されている方法といえばそれはもう 「既存のカセットのロム改造」 なわけです。 違うんです。確かにROM焼いて書き込めばできるでしょう。しかしその前に覚えなきゃいけないことがあまりにもガラパゴスすぎます。Mapper1とかいうファミコンのカセットの規格(しかもナムコは例外&プラスチック封印されてたらできない)。おまけに容量が大ききくて改造がしやすいものとなると結構貴重なカセットをぶっ壊すスタイルになります。正直コレクター癖のある私としては「 外道 」に他なりません。やりましたけど。ドラクエ2のカセット犠牲にしました。失敗しましたよチクショーメ!!! なので今回はそんなカセットの端子から基板までALL手作りをしてしまおうというのが規格内容なのです。これならもうカセットを壊す必要はありません。貴重で高いカセットが守られるし場合によっては新しい規格のカセットを作ることもできます。 ⬛︎とりあえずプログラムROMオンリー基板を作ってみる ファミコンのカセットは独特な仕様になっておりまして画像用のROMは別の回路でつながっており、基本的にCPUのROMとは共用しておりません。なので、極端な話普通のパソコンと同じ回路設計であるのならばCPU側のROMだけを組み立ててつないでも問題ないわけです。そしてその回路の一つの部分とか拡張ポートに向かって何らかの信号を送るプログラムを組めば、わざわざキャラクターROMの作成をしなくてもいいわけです。 そこで今回はとりあえずカセットの端子とROMをつなぐ回路を作成しました。 千石電商の地下で入手。前から気になってたけどついに使うときが・・・ 今回使用したこの端子は2.52ピッチのもので、本来のファミコンのカセットよりもピン数が多いです。なので 鉄定規登場。 カッターでごり押しします。ないものは作る。 両側から切り続けて10分後・・・ 無事に切れました。もうなんか紙フェノールの基板とは比べ物にならないくらい堅かったです。なにこれ。 L字型のものを用意すると基板が後でつけやすいです。 それでもってそこに同じピンピッチの二列ピンヘッダーをつなぎます。...

ファミコンのAV改造に挑んでみた

イメージ
技術の進歩ってすごい。 先日ミニファミコンが発売され大いに賑わいましたが、 https://www.amazon.co.jp/dp/B01M1VMFUA/ref=cm_sw_r_cp_awdb_mHyHybXSAMM31 このミニファミコンどうやら中に30本入っていてそれしか遊べない仕様になっていると聞き 「それじゃあこれと同じぐらいの金額で実機で遊んだほうがいいじゃんというか実機の紅白ファミコンで遊びたい」 と考えまして早速行きつけのジャンク屋さんでファミコンを買ってまいりました。 やっぱりこれでしょ。  んでもってインターネットで調べるとやはりというか様々な方が改造に挑戦しております。配線図も載っていたので、一番簡単なやつをモデルに作ってみました。 ひとまずファミコンをバラすと中はこんな感じになってます。 意外とシンプルな内部構造。でもロマンにあふれてる( `ー´)ノ アクセスするのはこっちではなくこの裏側なんですけどね。真ん中に大きなicが二つあります。これがあの有名なapple2にも載っていたMOS6502のカスタムチップです。もう一つはグラフィックを処理しているCPUかな?いずれにしろ、あのMacintoshの基板に比べたら雲泥の差ですね… こちら1984に発売されたmacintosh128kの基板。ファミコンから1年後に発売されたんですね。 画像はWikipedia(https://ja.wikipedia.org/wiki/Macintosh_128K)より。  それはおいといて、さっそく改造していきます。今回自分が手に入れたタイプはRF出力回路がむき出しだったため初期型だったようです。なのでけっこう回路図が公開されていました。やったね。なので、そこは省略させていただきまして…出来上がったのがこちら。 なんかおかしいとおもったそこのあなた。そうです。これ、一人専用になってしまっているんです。というのも穴をあけるのに力尽きてしまい、中途半端なところでストップしております。とほほ。 試しにDQ2をプレイ。今やっても面白いです。 まあでもなかなかいい画質で出力されてますし、結果オーライってことで。