6503がようやく動いた報告

イメージ
  回路図まで載っけて作りましたと宣言した前回。 いざ色々動かそうとしたものの、 プログラムがまともに動かないので試行錯誤してたら何年たってたんですかねこれ 。月日が経つのは怖いですね。 今回ようやく6503と6532が無事に動きました。 何につまづいたのかというと、多分アセンブラの文法です。 6502系のアセンブラって結構豊富で、 いろんなところから出てるんですがそれぞれアドレスの表記とか微 妙に違うんですね。 で、 今回久しぶりにca65というアセンブラを使用してみたのがつま づいた原因でした。 一度設定すれば大体の6502系には対応できるのが魅力ですが、 本当よくわからないmakeファイルの設定とかで地獄を見ました 。 以下何やってたのか簡単にまとめていきます。 新しい道具も作ったよ! ■:まず動かない いや、電気は通ってるしクロックは走ってるんですよ。 なのに6532の挙動がおかしくてIRQはでっぱなしだしcpu は止まるし訳がわかりません。 そこで今一度6532のデータシートを読むと、 「 NMIとIRQはオープンコレクタなので 必ずプルアップすること 」 ってあるんですね。何その罠。 というわけでプルアップ抵抗を追加しました。 これでcpuがすぐに止まる事故は解決… と思いきやまだ止まります。というか出力がよくわからない。 そこで大昔に作りかけてやめた出力確認用LEDパネルを作成する ことにしました。 ■:めちゃくちゃ便利なLEDパネル 5年くらい前にこんなの作ったら便利やろってLEDだけ並べて、 回路に不備があることに気がついてなげたもの。 今ならなんとかできそうってことで抵抗とトランジスタ をばーっと取り付けて、 カードエッジからも表のポートからも入力できるようにしました。 これまでは毎回ブレッドボードでled回路組んでたんでクソめん どくさいし抜けるしで散々だったのですが、 これで見やすい簡単出力もicに負担がなく万々歳になりました。 やったぜ。 まあ回路図書かずにえいやっと作ったので裏はすごいことになって ます。ちゃんと整えて、 入力スイッチもつけて体裁整えたら普通に便利道具になりそう。 クロックパルスも出せるようにしたいですね。 ledドライブのために2sc1815を贅沢に使用してます。 意外と高いですがいつ買ったのか結構あったので奮発...

[68kMacintoshで]ThinkCでゲームを作りたい その1 ~まずは動かす~[プログラミング]

以前、ふるいMacintoshソフトがないなら自分で作るという記事を書きました。

んでもって、英語の本を片手にBASICで作ろうとしました。

あれから、ぜーんぜん更新していないんですが、理由は簡単

ただでさえわからないことだらけなのに指導書が英語は自殺行為。

まあ、要するに解読不能になって詰んでました。ちなみに、この本の日本語版は見つかって(ない)です。奥多摩の図書館行けばあるのかな?

そんなことが原因で心が砕けた私にもう一度Macintoshでゲームを作らせようと思い至らせる作品が最近出ました。それがこちら。



リンク切れてたらごめんなさい。とにもかくにもこのゲーム、なんとこのMacintoshPlus時代のゲームをイメージして作られたらしいのです。デザインとか世界観とか最高だし、こういうゲームを実際にうちのMacで作れたら最高では?と思いまして。あと、この時代用のMac向け3D探索ゲームって作られてないんですよ。特にmc68000で動くものがない。(かの有名なアローンインザダークもse30以降でないと動かない。)

なので作る理由と目標ができたので今回再チャレンジしようと至ったわけです。

■|説明は日本語でお願いします

それでもう一つプログラムソフトあったんですね。ThinkCっていう高級言語使ってプログラミングできるってもの。セットが割と大変で、おまけにこれも英語のテキストとはいかない。BASICの何倍も難しいですから・・・専用変数多すぎ問題。
そんなこんなで困っていた時にふとAmazonでThinkCってけんさくしたらこちらの本がありまして。
ぶあつーい本にびっしり書いてあります。でもこれでも入門書なのだ!

今でも売ってました。日本語版ThinkCの教科書。インストール方法から載ってるめちゃめちゃイけてる本。ほしかったのはこれだよ!!速攻ぽちりました。普段購入まで1週間ぐらい考えるのに初めて即購入ボタン使いました。ダメ人間の鏡ですねはい。

というわけでこれからこの本を使ってThinkCでゲームを作れないか試してみようと思いたったわけでございます。

だって日本語だよ?きっとはかどるに違いない。これで私も真の68kMacintoshユーザーになれる・・・と思った時が私にもありました。

■|ThinkCを使いこなす前にResEditとやらを使いこなす必要あり。

ProcessingやArduino、Unity等に慣れていると、特にセッティングしていなくてもプログラムにprintfだのDebug.Logだの入れればHelloWorldぐらい出てくるんですよ。それだけでモチベ上がります。だって動いたって実感できますからね。

でもMacは違います。というかThinkCは違います。

まずThinkCではなくResEditを開いてウインドウのリソースファイルを作るそうです。

いや~何言ってるかわかりません。ResEditってなんですか。なんか小学生の時の遠い記憶にほんのりあるようなないような。(昔っからMacユーザーだったので。)
んでもってリソースファイルって何ですか。なんかPrintfって打ち込めば勝手にウインドウ出てきて画面に文字出てくるんじゃないんですか。(これあとで別の方法で簡単に出てくることがわかりました。なんだ優秀じゃんorz)

グダグダ言ってもしょうがないのでResEditとやらを探してみましょう。ユーティリティフォルダの中に入っているらしいのでフォルダを片っ端から開いてみると・・・
ニタニタこっちをみてるのがそれ。
ありました。なんだこのピエロ。煽ってるのか。

こんなところでモニタ叩き割ったら3年間の努力が水の泡です。冷静になってアイコンを力強くダブルクリックします。
ザ☆簡素
するとこんな感じで武骨なウインドウ画面が出ます。とここで違和感が。
「教科書に書いてある画面と違くないか?」
そこで教科書に書いてあるResEditのバージョンを確認すると・・・
昔のMacってこんな風に表示されてましたね!

必要最低限の情報が書かれた簡素な説明の中に・・・
今回使用しているバージョンと違いました。今使っているResEditのほうが古いです。UIとかわかりずらい。

そもそもGUIが登場したころの(本当の初登場は1970年代なのですが)開発ツールなので完成されていないのは当然です。奥歯をぎりぎり言わせつつこのツールの意味を解読していきます。
UIデザインの重要性をひしひしと感じます。
まずウインドウのサイズを指定するこの画面。この指定の仕方はのちのツールでは縦横のサイズを指定するようになっていますが、processingのように四角の始まりのXY、終わりのXYを指定するスタイルをとっています。入力する数値はどちらも同じなのに、描き方ひとつでとらえ方が全然違うのが面白いですね。ちなみに横の「SET」のボタンをクリックすると始点の位置をマウスカーソルで指定することができるようです。今更こんなこと説明しても需要ないよな!!

ということでこれによってサイズを変更し、表示できるウインドウのサイズを指定した後リソースIDというものを指定します。これをつけることにより素材を番号管理できるということらしいのですが、いまいちよくわかりません。とりあえず基本は400番らしいのでこれにしておきます。
なんか使ってはダメなIDがあって、それを指定するとデータが壊れてしまうのだとか。
その後、今度は表示するための画像を用意します。今日ではpngやjpegといった画像データそのものを用意し、指定するだけで表示ができますがこの頃は違います。どうするかというと、PICTリソースという形式で画像を作成し、このResEditでフォルダ内に読み込むのです。
Photoshop2.0(!?)で画像を作成。この保存の際にPICTリソース形式を指定する必要がある。
リソースファイルで保存ができていると、ResEditでこのように参照できる。
画像が違うのはあのあと書き直したためです・・・

そして必要なリソースを作成できたらまたthinkCに戻ります。
すでに画像などのリソースファイルをまとめたファイルと、プロジェクトファイルがあります。

そしてながーいコードを教科書を見て打ち込んでいきます。コピペなんてできないからね。

そして教科書の通りにコードを打ち込みますが、ところどころ誤植があるので頑張って解読します(笑)
だってあからさまに変数名さっき指定したのと違うの書いてたりするんだもの。これ編集した人プログラムの知識皆無だったに違いない・・・今だったら考えられないようなことですが。
これ忘れるとコンパイルが通りません。
そして様々なMacintoshに備わっている機能(QuickDrawや、I/Oなど)のプログラムを読み込むMacTrapsをCファイルに追加します。また、今編集したプログラムファイルを追加することも忘れずに。

そして無事にコンパイルが通り、実行されると・・・
指定した位置にWindowが表示され、イラストが表示されました!

はーい私の下手な絵が表示されました!ここまで約1ヶ月かかりました。本の内容がわかりにくいのと誤植が肝心なところで炸裂するんで主に解読の時間ですね。

それでも自分の作ったプログラムが動くのは感動の一言。まだキーボードの入力も受け付けられないぐらいしかプログラムはできていませんが、まずは動いたのでよしとさせてください!
次回はstdioを使ったプログラムを作成してみようと思います。そもそもC言語が曖昧なところあるので復習も兼ねて。

それではまた次回。

次回の記事:


前回の記事:

コメント

このブログの人気の投稿

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

ファミリーベーシックでゲームプログラミング

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