このブログについて リンクを取得 Facebook Twitter Pinterest メール 他のアプリ 10月 27, 2016 このブログでは、美術系を専攻しているけど基板とか黒いicのチップを眺めたりするのが大好きな私ビットの何にもわからないところからジャンク品や電子工作などに挑んでいく中で気がついたことを書いています(´∀`) ときどきイラストとか、やはりレトロゲームが好きなので(その口で電子工作を始めたので)ジャンルはバラバラです。それでは〜 リンクを取得 Facebook Twitter Pinterest メール 他のアプリ コメント
ファミコンの完全自作ROM&カセットを作ろう!!その1~立ちはだかるコンパイラの壁~ 6月 10, 2018 ファミコンのソフトを自作する。まさにファミコン少年なら一度は考えたことのある 暴挙 夢の企画なのですが、古今東西にて公開されている方法といえばそれはもう 「既存のカセットのロム改造」 なわけです。 違うんです。確かにROM焼いて書き込めばできるでしょう。しかしその前に覚えなきゃいけないことがあまりにもガラパゴスすぎます。Mapper1とかいうファミコンのカセットの規格(しかもナムコは例外&プラスチック封印されてたらできない)。おまけに容量が大ききくて改造がしやすいものとなると結構貴重なカセットをぶっ壊すスタイルになります。正直コレクター癖のある私としては「 外道 」に他なりません。やりましたけど。ドラクエ2のカセット犠牲にしました。失敗しましたよチクショーメ!!! なので今回はそんなカセットの端子から基板までALL手作りをしてしまおうというのが規格内容なのです。これならもうカセットを壊す必要はありません。貴重で高いカセットが守られるし場合によっては新しい規格のカセットを作ることもできます。 ⬛︎とりあえずプログラムROMオンリー基板を作ってみる ファミコンのカセットは独特な仕様になっておりまして画像用のROMは別の回路でつながっており、基本的にCPUのROMとは共用しておりません。なので、極端な話普通のパソコンと同じ回路設計であるのならばCPU側のROMだけを組み立ててつないでも問題ないわけです。そしてその回路の一つの部分とか拡張ポートに向かって何らかの信号を送るプログラムを組めば、わざわざキャラクターROMの作成をしなくてもいいわけです。 そこで今回はとりあえずカセットの端子とROMをつなぐ回路を作成しました。 千石電商の地下で入手。前から気になってたけどついに使うときが・・・ 今回使用したこの端子は2.52ピッチのもので、本来のファミコンのカセットよりもピン数が多いです。なので 鉄定規登場。 カッターでごり押しします。ないものは作る。 両側から切り続けて10分後・・・ 無事に切れました。もうなんか紙フェノールの基板とは比べ物にならないくらい堅かったです。なにこれ。 L字型のものを用意すると基板が後でつけやすいです。 それでもってそこに同じピンピッチの二列ピンヘッダーをつなぎます。 続きを読む
ファミコンの完全自作ROM&カセット作ろう!〜cc65で起動ROMをつくる〜 6月 12, 2018 先日、ファミコンに直差しできるROMカセットを作るというお話をしました。しかし、いくらハードウェアができたとしてもプログラムがないと動かないただの鉄の塊です。 ■cc65は、僕らに新規の6502コンピューターを作らせてくれない そこでプログラムを作って書き込もうとしましたが、問題はcc65でROMに書き込める普通のプログラムデータを作成することが非常に困難であるという点でした。 つまりどういうことかというと、cc65というコンパイラソフトは「新規の」6502ハードウェア開発向けには作られておらず、コモドール64やファミコンのエミュレーター向けの開発を考えられているのです。それがわかる仕様として、アセンブラで書いたプログラムをcc65で書き出す際に、どのハードウェア向けに書き出すかという旨を指定する必要があるのです。 もし指定しなければ自動的にコモドール64向けに書き出されます。そして、プログラムの内容がそれに沿っていなければエラーとして判断され、かきだされることもありません。 ■使いやすさの視点の違いから生まれた仕様 もうひとつ、cc65が抱える問題として ORG命令 が本来の動きとして働かないという点です。 ORG命令 とは、そのプログラムがメモリのどの位置から開始されるのかをしていする重要な命令です。これによってジャンプ命令やラベルがまともに使用できるし、6502においてはリセット割り込み(ゲームを開始する際に読み込まれるメモリ)の情報を書き込むメモリの位置を指定しなくてはいけないので、非常に重要な命令なのですがなんとcc65ではほぼ封印されています。ジャンプ先としては読み込まれきちんとコンパイルされますが プログラムをコンパイルした際に指定した場所にプログラムが書き込まれていないのです。非常にバカバカしくなります。 ではcc65にはORG命令の代わりに何が使われているのかというとSEGMENT命令が利用されています。プログラムをSEGMENTで切り分け、その段階ではまだどこからそのプログラムを配置するのかを指定しません。指定はコンフィグファイルという別のファイルにて指定します。つまり、 アセンブラファイルだけではプログラムを作成することができない のです。また、コンパイルした際にこのコン 続きを読む
74HC595を使ってarduinoの16ビットパラレル出力に挑んでみた 2月 07, 2017 今回の実験台、74HC595さんです。 前回、EEPROMとSRAMを手に入れたお話をしましたがこのICを使うには中にデータを書き込まないといけません。となると、各ピンにそれぞれデータを送らないといけないのでarduino unoさんではピンが足りません。 そこで、この74HC595というICを使うと本来一本一本つながないといけないところが3本で済み、しかもIC同士をつなげることによって8ピン出力から16、24と増やしていけるそうなので、これだと思い手を出してみたのですが予想どおりになかなか動いてくれなかったのでその動くまでとどうしたら動かせるのかを記載しておきたいと思います。 ■74HC595とはどういったICなのか まず 74HC595の取扱説明書 を見てみますと、「8ビットのシリアル入力データをパラレル出力にする」と書いてあります。つまり、一本のピンから出力された例えば「00110100」というデータを各ピンに数字を一個ずつ(0か1か、つまりONかOFFか)割り当てる機能を持っているということで、1ビットずつ読み込んでいったデータを並べて一気に出力してくれるというわけです。まさに今の状況にうってつけです。 アドレスバスはz80の最大本数16本でも、このICを二つ使えば事足りるというわけ。(データバスは別ですが・・・) また、このICは出力のみなのでもしz80のアドレスデータをarduinoに読み込むのであれば別の読み込み用のパラレル⇒シリアルICを用意しなくてはなりません。それでも、IC同士をつなげることができるので3本で事足りるというわけなのですが…ここが曲者でした。 ■74HC595のピンの役割 Texas Instruments社のデータシート より74HC595のピン配置 上の画像はこの74HC595のピン配置図なのですが、Vccは5V電源をつなぐ部分、GNDは電源のマイナス部分につなぐところです。そしてQA~QHがそれぞれA0(アドレスバスPIN1番)~A7(アドレスバスPIN7番)になります。それ以外のピンの役割についてはこのようになっています。 SRCLK : クロック信号入力ピン。1ビット読み込むごとに、このピンの HIGH 、 LOW を切り替える。 RCLK : ラッチ動 続きを読む
コメント
コメントを投稿