MZ-2000」カテゴリーアーカイブ

なかなか投稿できなかった

K/C関係の打ち込みはTwitterへ投稿してたのでなかなか投稿できませんでした。Amazonのアフェリエイトも拒否されたので辞めました(もともと収入が皆無だったけど)外部に置いてるトップページは自分のサーバへの入り口にしか使ってないのと、自サーバトップページからは何もリンクしてないので作りかけと思われたらしい。まあ、よほどアクセスがない限りリンクを踏んで購入してもらえないので収入の見込みがないのはわかってましたけどね。
ちなみに、Google Adsenseもうちみたいな使い方だと稼げません。5年くらいかけて数千円入るかってところです。よく見かける外部リンクだらけの広告ページを作らない限り収入を得るのは難しいでしょう。

MZ-2000関係ですが、FM音源プラグインを作ろうと思って試行錯誤していたこともありました。まだ勉強不足で進んでませんけどね。Gens(Genesisエミュレータ)のソースを参考にFM音源部分のソースを抜き出して使ってみるつもりが、なかなかうまく行かなくて停止中です。自分がGens側の動きを理解しきれてないので音を出すための初期処理をどんな風にやればいいのかわからない、MZ本体からOUTで受けとるデータをどうやって受け渡せばいいのかもわからない・・・そんな状態です。ハードエミュレーションは知識あってのことでしょうけど、手取り足取り教えてもらえるわけでもないので、他人のソースを読んで理解して利用するしかないのでしょうね。
MZ本体とのやり取りは以前プラグインを作ったので出来てるのですけどね。自分でFM音源データを元にDirectSoundを叩くのがいいのか?とか思案中。

核戦争


CSK/木屋通商が発売していたアバロンヒルのシミュレーションゲームの移植ものシリーズです。これは結構遊んだ記憶があります。ミッドウェー海戦とか難しすぎましたが、これは難易度も低くていろいろと楽しみました。リストを印刷して、98のN88-BASICへ移植して楽しんだゲームだったり。

SB-5520 BASICコンパイラの続き


ソースを見直し打ち間違いを見つけましたが、セルフコンパイルでOverflowエラーとなってしまった。 まだ打ち間違いがあるらしい。
エラーが出てる行を見ると、GOSUB文かIF文なので飛び先を管理している箇所なのでしょうかね。このソースは高速化の為にIF文などの式が独特なので打ち間違いに気づきにくくて、過去の間違いもイコールがマイナスだったりするケースがいくつかあった。落ち着いて見直すしかないですね。

続SB-5520 BASICコンパイラ


記事に従ってコンパイラのソースをオブジェクトを使ってコンパイルしてみたら、エラーが出てしまった。まだソースの打ち間違いがあるっぽい。うーむ。

SB-5520 BASICコンパイラ

再度ソースをチェックしてみました。
3か所致命的な間違いを見つけたのですが、セルフコンパイルしてみるといつまでたっても終わらず。処理してる行番号を算出してる行で行番号を表示させてみると、最終行まで到達しても、また最初からやり直してしまう状態でした。ソースを確認しているとき、「3パスで処理してる」というのを思い出し、ソースを戻して動かし続けたらReadyが出た。MONで$C000からダンプしてみると、オブジェクトが生成されてました。あとは乱bタイムをくっつけて動かすだけです。最後に打ち込んだ日付を確認したら、約6年放置してた・・・

これでPiOなどに載ってるBASICコンパイラ用のゲームもコンパイルできます。完走できるとの情報を頂いて非常に助かりました。ありがとうございました。

万引き少年ゲーム

K/C版を移植してみました。
http://mio.servequake.com/~takky/emuz2000/bm/manbiki.html

BASICをお持ちでしたら動くと思いますので楽しんでください。

EmuZ-1M10

EmuZ-2000 TF-Edtionの拡張ボードとしてDLL形式でプラグインを組み込めるのですが、作り方を調べてなんとか形になったので、仮想ボードプラグインを作ってみました。
ステートセーブ内のメモリ編集ツールをプラグイン化してみました。ダイアログを出して何らかの処理を行うという形なら簡単に出来ると思ったのですが、Visual Studioの理解度の足りなさで時間をかなり食われたのが痛かった。プロジェクトの新規作成は見た目で何とかわかりますが、既存のソースを利用する方法を見出すのに小一時間かかった。わかってしまえば簡単なのですけどねぇ。

コンパイルできるようになって、何とかエラー個所を訂正しつつDLLができた所まではよかったのですが、本体に組み込んでみると認識せず。組み込まれないのはDLL内で最低限必要な関数が本体から認識されないことってことは以前調べてわかってたので、DLLをロードして関数のアドレスを取得するテストプログラムを作って動かしてみたらDLL内の関数がエクスポートされてないのが原因とわかりました。モジュール定義はプロジェクトに組み込んでるのですが、何故かエクスポートされておらず、悩むこと数時間…原因はやはりVisual Studio内の設定だった。defファイルがあるのに明示的に設定しないとダメって何だろうね。

今回は、I/Oの無いダイアログを出して処理するだけのものなので、これでうまく行きました。似たようなものを作るなら難なく行けそうです。まだI/O命令に連動したDLLは作ってないのでもう少し動きを調べつつ、夢のFM音源ボードを作ってみたいです。FM音源チップ自体のエミュレーションも理解できてないので問題が山積みですけどね。

続Small-C

いろいろいじって、だいぶ慣れた。掲載された号には起動オプションの説明もなかったので、本家作者のページhttp://www.deturbulator.org/jim.asp ここにあるVer2.xの書庫内にあるドキュメントを見てました。改めて検索してると、Oh!石さんのページに補足があった。http://www.retropc.net/ohishi/s-os/4/smallc.txt ディスクが破損する原因もここに書かれてます。
includeは全然読み込まなくて謎だったのですが、原因はファイル名を大文字にしてたからでした。小文字にしたらうまく読み込めた。コンパイラを含むディスクには大文字でオリジナルを置いて置き、作業ディスクにコピーして小文字にして利用するといいらしい。まあ、stdio.hしかないし、ユーザーのヘッダファイルも同じディスクに入れるようにすれば問題なさそう。それにstdio.h内の必要なdefineだけをソース内に持つのも手なのでincludeを使わない方向でプログラムを作ればよさそうです。

Small-Cとか

S-OS SWORDでの話ですが、Small-C、WZD、WLKなどがやっと動かすのに成功した。
これらの関連ツールはCOMMAND.OBJを動かした状態で使うと問題なく動かせるのに気づきました。Small-Cでアセンブラソースを生成させる時に、何らかのトリガーでディスク内容を壊す場合があるので、1ソースづつ確認しながらコンパイルしました。SLENDER HULのコンパイルもうまく行きました。ソースのtypoの発見が結構厳しかったかな。未定義の変数とか定数などがあってもコンパイルエラーとならずに、WLKでリンク時に未定義として表示されるので、どのソースでミスがあるのか判断するのが結構厳しかった。まあ、何度かやってるとわかってきますけどね。
SLENDER HULはどの処理系で作られたか不明ですが、S-OS上で使えない文字コードをいくつか使ってるみたいで、代替文字の選定に苦しみました。C言語で使われる文字はWindows側でテキストを作って送り込んでたので中括弧やアンダーライン、ストローク記号は打ち込めなくても何とかなりましたが、表示される文字に関しては置き換えないと空白になってしまいますので。

あといくつか打ち込んでないサンプル類を打ち込みたいと思ってます。lisp-85上で動くNANPAシミュレータも打ち込まねば。

打ち込み終了かな

手持ちの雑誌はすべて打ち込み終わったと思います。あとは、BASICコンパイラが正常に動いてないので見直しと、S-OS上のWZD関係とSmall-Cコンパイラが動かない原因を解明せねば。88エミュレータでS-OSが動くので、そちらでバイナリを作ってもいいのですけど、根本解決にならないので。しばらく休憩して落ち着いてから再開です。

次はLinux Gamesページの更新を行う予定。こちらもだいぶゲームが増えたり消えたりしてるので、調べて追加したいと思います。Master of Epicも放置してるので、久々にログインしてみたいと思ってます。ため込んでるレトロゲーム関係もプレイしたいと思ってたり。