投稿

ラベル(MZ-80)が付いた投稿を表示しています

MZ80を起動せよ!画面バッファを利用した高速書き換えプログラム

イメージ
古いPCやゲーム機のプログラミングをしていると、その描画速度の遅さに四苦八苦することが度々あります。今回のMZ80もそうで、BASICで素直に描画するととんでもなく遅く、お話になりません。 そこで、アセンブラで描画処理の部分を描いてしまえばあとはどうにでもなるのでは?というかエミュレーターでテストできるならアセンブラでガリガリ書けば速度なんとかなるのでは? (MZ80のすごいところは、描画中にメモリアクセスのウェイトをかけていないことです。映像は乱れますが、強引かつ高速に描画を繰り返すことが可能です。) そう考えた結果、潤沢?なメモリを搭載しているMZ80のシステムを利用し、フレームバッファを用意して、スプライト画面・背景画面を合成、描画メモリへ転送するシステムを設計してみました。 メモリ転送とアドレス管理の考察 ■|そもそもMZ80はどうやってテキストを描画しているのか 上記の漫画にも記載したように、MZ80にはz80のメモリエリア上に画面に表示するテキストバッファが割り当てられている設計となっております。 そのメモリエリアはD000h~D3E7hまでの1000byteとなっております。 というのも、表示できる文字数が横に40文字、縦に25行となっているためですね。 そのため、疑似ドットグラフィックはこの2倍の(1文字に2ドット分配置されているため)縦50ドットx横80ドットの解像度として絵を表示することができるのです。 そして今のPCのようにラスターフォントで表示しているのではなく、VRAMには画面に表示するフォントのコードを書き込んでおります。そのため、任意のフォントグラフィックに書き換えて表示するといったような機能は搭載されておりません。  VRAMに書き込まれた文字コードがそのままグラフィックを記録しているROMにアドレスとして読み込まれ、フォントデータが出力される仕組みになっております。  そのため、搭載されているフォントグラフィックROMを差し替えれば、任意の文字グラフィックスに差し替えることが可能です。 ■|書き換え速度の問題と、VRAM転送問題  ゲームを作るうえでカギになるのはこの描画速度です。例えば、PRINT文で書き換えた場合は必ず1Fで1回しか処理されないため、描画速度がどうしても遅くなります。 ましてや、スクロール画面などの画面全体を書き...

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を入手し読み込ませることに】 本来、修理を行うのであれば必ず公式のモノが動くか確認する必要があるのですが、まあ今回それをすっ飛ばしてあたふたしていたのでこれではだめだとホンモノを入手しました 。 それがこちら。ジャンク品ということで出品されていましたが、そもそも出回っているかどうかも怪しいレベルで貴重品...

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

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