問題1.ディスクイメージからMegaROMを作りなさい。

という問題がやっと解けました。

11月25日 MSX2で動きました。 動作テストに使った機種は、PanasonicのFS-A1。10年位押入で冬眠していた初代MSX2です。 FM音源も漢字ロムも無いので、かなりしょぼいですが、ゲームはちゃんと動いてます。 RCはtR専用に作られているので、MAIN-ROM、RAM、MSX-MUSICのスロットは固定です。 そのため他の機種では動作しません。でもちょっと手を加えれば、MSX2でも動きます。 本当はゲームの作者さんがちょこちょこっと直して下さると良いのですが・・・ 私がRCのROM版を作った理由は、 「特殊なハードを使わずにゲームが動くなら、ゲームを販売できるのでは」と思ったからです。
11月22日 対戦画面が真っ黒な原因がわかりました。必要なファイルが無かったのでした。 RCのディスクには、98個のファイルが入っていますが、BATファイルではその中から 81個のファイルをRAMディスクにコピーしていました。たぶんゲームに必要なファイルは それだけなのでしょう。 起動に時間がかかるため、LUNAを使い全ファイルをRAMディスクにコピーする新しいBATが 出来たようです。現在のディスク版RCはLUNAを使っています。 ROM版は旧BATを参考にファイルを移しましたが、ファイルが3つ足りなかったのです。 ということは、旧BATで起動すると対戦画面が真っ黒になるのかな。 ROM版RCが完成しました。 でも起動に時間がかからない程度の効果しかないみたいです。 ・ファイルの読み込みに時間がかかり過ぎ。   読み出すファイルが多いのに、200hバイトずつ読んで、1バイトずつ転送とか。 ・MSX2では動かない。   I/OポートのA5とかE6を使っているから?    ファイル関係はなんとかしたいです。ROM版ではDD00h〜F2FFhが空くので、そこをディスク バッファに使うとか。なんとかできるかも。
11月18日 対戦画面が真っ黒な原因をあれこれ考えてみました。 ・対戦に必要なファイルが読み込まれていない。 ・画面表示関係の問題 ファイルが正確に読み込まれているか、VRAMを調べてみました。RCはVRAMをページ 0〜3に分割しています。対戦中にMSXをリセットして、BASICからページ2と3の 画面を表示してみると、それぞれのページにはプレイヤー1,2のキャラクタがロード されていました。ページ0,1がちょっと怪しいですが、ファイル関係は白かも。 やはり画面表示の問題かも知れません。 解析中に発見したこと。  神様の居所。プレイヤー選択で、いきなり神様が使えそう。  各プレイヤーの攻撃力等、パラメータの在処。 このゲーム、ROM版にすればいいのに > 作者さん
11月13日 RCのBASICプログラムで必要なのは、SCREEN5とパレットデータのロード、COLOR=( ) くらいです。BASICから起動する意味がないかも。 ROM版は起動が速くて快適です。動けばね。 対戦画面が出ないんです。真っ黒のまま。 何が原因なのだろう。
11月10日 久しぶりのプログラム書きで苦戦していました。BDOS#27です。 RCのディスクアクセスは、ファイルを200hバイト読んでは転送の繰り返しなのです。 小さいファイルが多いのだから、一気に読んでしまえばいいのに。 これでは手抜きできない。 というわけで、メガROMからファイル転送した後FCBのランダムレコードを更新したり、 本物みたいな作りになってしまいました。 試行錯誤の末、ファイル読み出しはディスク版RCなみに出来るようになりましたが、 肝心なゲームの方が・・・ 一応起動してタイトルも出るしプレイヤー選択も出来ます。 ゲーム画面が変です。背景が変わらないし。 BASICの部分を全部実行していないのが原因ですね。 パレットデータをロードしていません。 COLOR=RESTOREって? SET PAGEがわかりません。 SCREEN5を使ってる他のゲームを解析してみようかな。
11月1日 ゲームに使う約80個のファイルを似非SCCに移しました。 いつものようにSHEMを使って手作業で入れようとしましたが、さすがに80個は多すぎ ます。それでROM用BDOS#26を作ってファイルをROMに書き込み。BANK 01h〜37hに全部の ファイルが入ってしまいました。予想より小さかったです。 今日の作業は、ROM用#27の動作テストも兼ねていますが、うまく動作するようです。 次はBASIC部分のマシン語変換です。 COLORやSCREENはなんとかなりますが、SET PAGEは?パレットデータはどこにロードする?


10月22日
ちょっと変わった作りのディスクゲームがあります。仮称'RC'というゲームです。
ディスクアクセスの遅さをカバーするためか、RAMディスク対応になっています。

「DISKイメージからROMを作りなさい」なんていう問題が、どこかに書いてあったので、
RCを512KBのメガROMに作り替えてみようと思います。また変なことを始めました。
もしかしたら512KBに収まらないという落ちがあるかも知れませんが、そんなことは気に
していません。

RCはBASICからマシン語プログラムをLOADしているので、ROM版もBASICスタートにしようか。
でもRCはページ2をRAMにしておかないといけないし。
光栄のメガROMみたいに、BANK1からNECフォーマットのディスクイメージが丸ごと入っ
ているような形にしようか。こうすると512KBに入らない。
結局INITからスタートする普通のメガROMを作ることにしました。
BASIC部分をマシン語に作り替える問題が発生しますが。苦手な部分は後回し。

RCは約80個のファイルで構成されています。ファイルはそのままの形でROMに詰め込んで
行き、ファイルの場所を記録するディレクトリの様な物を作ります。RCはディスクの読み
出しに、BDOSの27hとビットブロック・トランスファの01A5hを使っています。
まずはディスク読み出しルーチンの代わりに、ROM読み出しルーチンを作らなければ。
好きな所から作り始めるのが私のやり方。

久しぶりにアセンブラを使いましたが、やっぱり変な物を作っているときが一番幸せかも。

戻る