投稿

2020の投稿を表示しています

MZ80を起動せよ!とりあえずBASICでゲームを作ってみようよ

イメージ
以前、無事にMZ80が起動しBASICも立ち上がりました。 ここまできたらあとはプログラミングをしてゲームを作ったり、外部ストレージをつなげたりとかなんですが、このMZのBASICはいままで触ってきたBASICとはちょっと癖が強いのと、速度が遅くて作りづらいというのがります。なので、本格的なアクションゲームを作ろうと思ったら疑似スクリーンバッファを作成しアセンブラで転送するシステムを作る必要があるんですね。 一応z80のアセンブラは触ったことがありますが、それはシングルボードコンピューターでしたのでこういった「一定のエリアでメモリを割り当ててアセンブラと並行する」っていうのが全然わからないんです。なのでとにかくBASICだけでゲームを作ってみようというわけです。 じゃあ問題はゲームの要素を一通り作れてBASICでも十分な速度が楽しめるゲームって何かって話なんです。 ■ゲームの要素を満たしたシンプルな「ゲーム」 まず、ざっくりゲームの流れをば。 1)タイトル 2)プレイ画面 3)ゲームオーバー画面 以上の3つなんですね。「は?クリア画面は?」ってなると思うんですけど、ゲームオーバーってなんか「失敗!」ってイメージあるんですけどあれ「ゲームが終わりました」って意味なんですよね。なので昔のアーケードとかゲームクリアしても最後「ゲームオーバー」って表示されるんですよ。後味わりい!!!!!!某パンツ一枚の騎士さんのゲームとかBGMがゲームオーバーのままなのでもうやるせないです。 話が脱線しました。 ゲームの流れは上の3つですが、まあどんなゲームを作っても上の要素があればまとまって見えるわけです。問題は2番の「プレイ画面」。 ぶっちゃけ個々の中身を分解すべきなんですがたぶんこういう要素なんです。 1)プレイヤーが操作できるもの 2)プレイヤーの操作の影響を受ける動くもの 3)何もしていないとMissになるもの 4)クリアすべき課題 5)得点 以上のものを満たし、簡単に作れるものっていうとたぶん、 ブロック崩し なんですね。何が強いってボールが2と3の要素を兼ねてるんですよ。ここがすごい。 というわけでちょっと作ってみました。 ■どういう構成にすればいいのか考えてみる 基本、自分でBASICを描くときには1-100の間をmainloop関数として使用し、各機能ごとにGOSUBで飛

MZ80を起動せよ!公式BASICを読みこませてみた結果

イメージ
前回、なんかカセットテープの調子が悪いということで終わりました。 MZ80を起動せよ!モニター修理というか交換しました 読み込まないのはなんで?テープ?回路?コンデンサ?ICの故障? とまあさっぱりわからなくなり、ついに秋葉原のBEEPに飛び込んで相談してきました。 んでちょっと怖い整備係のおじさんにカセットの互換性、在庫状況を尋ねたところ… 1)基本、mz80系でmz700系のカセットテーププログラムは動かない。 2)ここ1~2年、店頭でmz80系のソフトは出ていない。本体も入荷していない。 (ガラスケースの上に鎮座していますが、あれは展示用でしょう。そうであってほしい。) という回答を頂いたため、その時よく出回っていたmz700系のテープを使用することは断念。次に試すのは、MZ-80実機で使用できるという「KM-Z80 BASIC」というもの。 こちら、プログラム的には完全互換を達成しているそうなので、あとはテープに焼いて動けば成功、というわけです。 【KM-Z80をカセットテープに焼いてみる】 というわけでさっそくデータをカセットテープに書き込みたいと思ったのですが、まず焼き込むにはこれをwavデータ、つまり音データにしないといけないのです。 カセットテープに焼き込む まあ音データなんだしカセットに書き込めばいいんでしょカセットデッキ使用してやれば簡単じゃんとか雑なこと考えてテープに録音し、起動させ、モニタコマンドにLOADと打ち込みますが…認識しません! 反応すらしません。理由としてはMZやSharp X1に使用された、特殊なカセットデッキが原因であることは容易に想像がつきます。そのため、カセットデッキの裏の回路に直接電極をつないでPCから音声を再生、8255のピンから正しい信号が出ていることを確認しましたが、やはり認識しませんでした… ちなみに、基板に直接電極をつないで入力をしてみましたが反応せず… 【公式BASICを入手し読み込ませることに】 本来、修理を行うのであれば必ず公式のモノが動くか確認する必要があるのですが、まあ今回それをすっ飛ばしてあたふたしていたのでこれではだめだとホンモノを入手しました 。 それがこちら。ジャンク品ということで出品されていましたが、そもそも出回っているかどうかも怪しいレベルで貴重品

Apple1 Computerを現代で作ることはできるのか挑戦してみた その2~それっぽい代用品が見つかった編~

イメージ
記事の投稿期間はそれなりなものですが、じつは例のシフトレジスタの代替部品になりそうなものをあれから1年近く探し続けました。というよりも、私も社会人になり 前にシフトレジスタがいかに問題点だったかを語った記事 Apple1 Computerを現代で作ることはできるのか挑戦してみた その1~シフトレジスタ問題~ 常識では考えられないくらい(とりあえず土曜日は消えた!!!)忙しくなったため、できていなかったのが実情です。 割と一個が高い部品なのでピンを折ってしまったら・・・ そんなこんなで死にかけながらも探した結果、こちらの部品を秋葉原(若松通商)で見つけました。 これ、なんと512bitのシフトレジスタなんです。つまり、本来の数の倍にはなってしまうもののなんとかありえなくはない数に抑えられる見込みが立ちました。 部品名はMM5058・・・この部品自体ディスコンで、今どきこんな恐ろしい長さのシフトレジスタ自体、正直取り扱いがありません。生産してる物好きのメーカーもありませんから、お察しというか。 とりあえずまずはこのレジスタがどう動くのか、想定した代用方法として成り立つのかを動作確認してみます。 ■まずは連結してみた 単純に考えて、512+512で1024になるっていうお話です。さらに嬉しいことに、インプット・アウトプット電圧がTTL標準電圧でスイングするということで、本来のICを使用した場合に必要な変圧ICが不要になります。やったぜ!!!! ただ、それでも-12Vの電圧が別で必要なため結局このコンピューターの必要電圧は5Vと-12Vになることは確定しました。 そしてarduinoでクロックと入力信号を入れたところ・・・・ 見事1024bit連続でシフトカウントすることに成功。いやーよかったよかった。動作速度の最高点が、本来使用するICは10Mhzなのに対し、これは2Mhzなのが心配ですがこれしかないのでこれで回路を書き直し、実際に組み立ててみることにします。 そして実際に組み立てるに当たって、正直ブレッドボードで組み立てるのはしんどいレベルなのです。電源回路とか複数走らせることになるので、下手に繋げばその他多くのICが死にます。 よって、半田付けではない古の方法で組み立てることにします。そ

MZ80を起動せよ!モニター修理というか交換しました

イメージ
前回、なんだかもううねうねしちゃって大変なことになってしまったMZ80を入手。 MZ-80を起動せよ その1 ジャンクなあいつがやってきた 症状は最悪の「偏向ヨーク破損」を引いてしまい、残念ながら私の手には負えない代物となりました。 これはブラウン管を交換したあと ■|どんな感じの子なのか、一旦整理してみる。 まず、この子がどのような状態で我が家にきたのか、Twitterにあげた写真とともに振り返ってみます。 DRAMエリア。しっかり埋まっています。 まず、メモリはどうやら48KBフル実装。大変嬉しいですね。このころのメモリはもう入手が難しくなっています。 起動直後の様子。 画面が潰れてしまっています。そして、ただ一本の線になっていればそのほうが実は症状としてはどうとでもなっているのが悲しいところ。この波打つ線こそ、ブラウン管の死を表していました。 とりあえずコンデンサを交換したものの・・・ これくらい古いマシンは、問答無用でコンデンサの交換から始めるのをお勧めします。電子部品の世界では、コンデンサはナマモノと考えましょう(極論。) しかしながら、コンデンサを交換しても芸術的な波打ちは治りませんでした。 ブラウン管の偏向ヨーク、つまり電子ビーム直下の波形 そこで、修理マニュアルを参考に、波形が正しく入力されているかを確認します。すると、偏向ヨークというブラウン管の周りに巻きついているコイルの部分で波形がこのように乱れています。本来なら美しいカーブを描くのですが、見ての通りぐちゃぐちゃです。水平と垂直の間では漏電は発生していませんが、垂直のコイルの中で腐食が進んでいるとみて間違いないでしょう。 ここがその問題の回路の部分。上の部分がブラウン管の偏向ヨークになっており、なんとこの後この抵抗が焦げていることが判明する。 さらにこの後、写真を撮り損ねたのですが昔作った電磁石と偏向ヨークにつなげる回路を繋ぎ直し、波形を観測。本来出るべき綺麗な波形を観測できたため、偏向ヨーク故障がほぼ確定しました。ほんと辛い。 ちなみになのですが、この間にヤギ型トランジスタさんに相談にのっていただきました。本当にありがとうございました・・・ 結局、コンデンサを交換してここまでは治ることができた。 ということで

El Capintanでios13以降などの新しいiphone/iPadを認識しない時の対処法

イメージ
公式に対応を宣言しているのにITunesで認識しない件について 私の作業環境では、今だに2008年モデルのmac pro君が現役で爆走しています。それなりに性能のいいグラボを積み、メモリもがっつりのってUSB3.0にも対応させてあげたのでまだまだ使い倒したいこの頃。しかしながら、いろんなアプリケーションからもここのことろ締め出しをくらい、寿命が近くなっていることをひしひしと感じているわけです。 そんなmac君ですが、ipad Pro 3のバックアップを取るべく繋いだ時にその現象が起きました。 認識しません。 赤丸で示したアイコンが出ない このipadのバックアップを取るべくわざわざUSB3.0を増設したのに反応しません。(このころの機種には3.0なんて優しい規格は装備されておりません。) こんな状態になったため解決方法を調べた結果が以下になります。 ざっくりなんでこんな症状が出るのかというと、最新のiOSに対応したUSBドライバーが入っていないためなんです。 対処方法 1  反応しないiPad・iOSをmacに接続する。(この際に、iPad・iOS側に「許可しますか?」などのメッセージが表示された際には許可するを選んでください。) 2 iTunesを起動していた場合は閉じます。 3 バージョン12.8以降ののiTunesがインストールされていることを確認して、Finderでメニュー項目の移動>フォルダに移動...を使用し、次のアドレス(/Systemから始まっているもの)をコピーしてダイアログボックスに貼り付け、Enterキーを押します。 画面の何もないところorFinderを選択し、移動を表示させることでフォルダへ移動を使用することができます。 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/Current/Resources 4 開いたフォルダ内にMobileDeviceUpdaterというappアプリケーションがあるので、それをダブルクリックします。すると、最新のUSBドライバーがインストールされ、iTunesがiPadなどを認識するようになるはずです。 こちらのアプリを見つけ

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

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