2014年10月28日

アリスソフトforP6(15)(イントルーダー別バージョン)

  イントルーダー for P6


  内容などは先日アップしたものと変更はありません。

  日本語が使えない環境で変換した場合に、半角カナのファイルが作成できないために変換が正常に終了しない事があるようです。

  その場合は、以下の変換ツールを使用して下さい。


intr_p6_2.zip



  Bookwormさん作の binpaste.exe を使用しています。直接D88ファイルの中をいじって、半角カナのファイル名を英数字名に変更しています(安直)。



2014年10月27日

アリスソフトforP6(14)(イントルーダーリリース)

  イントルーダー for P6


 ○注意事項
 ・P6版に変換したものに関しては、配布禁止です。


  88版→P6SRへの変換ツールをリリースします。

intr_p6.zip



  説明などは、同梱のドキュメントを参照して下さい。



  エミュレータでは、PC-6001VW ver307a2 と、PC-6001V ver1.22 で動作確認をしました。

  PC-6001V ver1.22では、SRでのOUT &H93,2 がまだ実装されていないため、デモ画面がちょっとヘンになります。また、画面周りでバグがあるようです(詳細不明)。

2014年10月26日

アリスソフトforP6(13)

  アリスソフト for P6


  イントルーダー for P6 のプログラムが終わりました。


  後はデバッグですが、以前に書いたようにPAINT文のチェックのために、シナリオを一通りプレイする必要があります。

  ランスでは、地図が曲線的なものが多かったため、結構隙間があって、PAINT文が失敗する事があったんですが、イントルーダーは直線的な図なので、多分大丈夫じゃないかと思います。

  見切りでリリースしても構わないんですが、セーブデータの差し替えの対応が面倒ではあります。



  これでアリスソフトの88版の移植は終了です。ランス2はアナログRGBの画像のため、移植はできません。

  チャンピオンソフトの「ちょっと名探偵」は、一連のアリスソフトと似ている部分が多いため、割と手間が掛からずに移植できそうです。しかしコマンド入力タイプのため、メインルーチンのBASICにかなりの手を加える必要がありそうです。それ以上にBASICプログラムのサイズが大きいために、メモリが足らないかも。

  それより昔のチャンピオンソフト(例えば「ポップレモン」)とかは、LINE+PAINTの描画なので移植するのもなー、という感じです。


2014年10月25日

アリスソフトforP6(12)(ランスリリース)

  ランス for P6


 ○注意事項
 ・P6版に変換したものに関しては、配布禁止です。


  88版→P6SRへの変換ツールをリリースします。

rance_p6.zip



  説明などは、同梱のドキュメントを参照して下さい。

  婦警さんVXも実装しています。


  エミュレータでは、PC-6001VW ver307a2 と、PC-6001V ver1.22 で動作確認をしました。

  PC-6001V ver1.22では、SRでのOUT &H93,2 がまだ実装されていないため、デモ画面がちょっとヘンになります。

2014年10月24日

アリスソフトforP6(11)(リトルバンパイアなど3本バージョンアップ)

  アリスソフト for P6


  BGM再生のプログラムを一部変更しました。それ以外の部分は変更していません。


  リトルバンパイア:lv_p6.zip

  DPS:dps_p6.zip

  あぶない天狗伝説:tengu_p6.zip



  実機で再生すると、FM音源とSSG音源(PSG音源)の音量バランスがどうも理論値と違うようです(それぞれの固有差もあるみたいです)。

  そのため、FM音源とSSG音源の音量をそれぞれ変更できるようにしました。詳しくは同梱のドキュメントを参照して下さい。


  Bookwormさん作のmako60を使用している場合は、今回の変更は関係ありません。

  また、エミュレータのP6VWを使用している場合も、パネルから音量比を変更できるため、バージョンアップする必要がないかと思います。

アリスソフトforP6(10)

  アリスソフト for P6


  ランス for P6のプログラムが大体終わりました。ランスは、オープニングのデモが一番力が入っている部分です。でも、普通は飛ばしちゃうんですよね...


  デバッグとして最初からエンディングまでプレイしました。通常のプレイの仕方では時間が掛かるので、裏技(?)を使っています。

 1)エミュレータのP6VWを使う
 2)起動したら、F10を2回押す(エミュレータ速度を最大にする)
 3)BGMをなしにする

  で動かすと、快適にプレイできます。BGMが鳴らないのが寂しいんですが...

  通常速度ではかなり遅く感じるんですが、これは88で4MHz動作した時でもほぼ同じ速度です。当時はこの速度でプレイしていたんですよねぇ。



  また、ランスをプレイした時に参考にしたのは、

http://www20.atwiki.jp/rancewiki/pages/8.html

  です。

  ただ、この攻略方法は、98版のようで、88版では若干違いがあります。

  以下ネタバレ。







○妃円屋敷の鍵

  妃円屋敷の鍵ですが、情報屋でみかんと交換となっていますが、88版では鍵をくれません。代わりに花束をくれます。

  この花束を持って、レベル屋に行き、「取る」コマンドで彼氏の話を聞いた後、「話す」コマンドで花束をあげます。すると、彼氏が墓場にいることが聞けます。

  この後、墓場に行き(入る)、レベル屋の彼氏を「戦う」で戦闘に入って倒します。その後、もう一度墓場に行き、魔王(彼氏の亡霊)を倒します。

  魔王(彼氏の亡霊)を倒した後に、聖書が落ちているので、拾って調べると鍵が手に入ります。

2014年10月15日

アリスソフトforP6(9)

  アリスソフト for P6


  DPSとあぶない天狗伝説については、技術的に書くことはほとんどありません。というのは、リトルバンパイアとほとんど同じなんです。

  一部のプログラムで処理が若干変更されている程度で、P6のプログラムとしては、メインプログラムを同じように修正しているのと、cali3 をcali5 に変更した程度です。


  残りの2本のイントルーダーとランスですが、これは大きく2つの問題があります。


○オープニングでアニメーションをする部分がある。

  例えば、アリスロゴの表示の場合、以下の方法です。

 1)画面一杯に黒ベタキャラを表示させる。
 2)グラフィック画面をロード(重ね合わせのため、グラフィック画面は見えない)。
 3)真ん中のアリスロゴの部分だけ、黒ベタキャラを消す(真ん中のみ表示される)
 4)見えない部分に表示されている次のパターンを、真ん中にコピーする。
 5)4)を繰り返すと、動いているように見える。


  これがP6では簡単に出来ないため、SWで無理やり実現しています。

 1)OUT &H93,2で画面を表示させないようにする。
 2)VRAMに画面データをロードする。
 3)VRAMのデータをVRAM以外のRAM上に転送する。
 4)画面を消去の後、OUT &H93,3 で画面を表示させる(この時は画面は消去された状態)。
 5)RAM上のデータを、VRAMに転送する。この際、アニメに見えるように、順番に転送する。


  既にリトルバンパイアで作ったプログラムをそのまま使えます(というかこれのために作っています)。


○表示した画面にPAINT文で塗りつぶしている。

  ランスでも、イントルーダーでも、移動の際にマップが常に表示されていて、マップ内のどの位置にいるかを色を変えて表しています。このため、表示した画面に対してPAINT文を実行しています。

  これの対応が結構面倒です。

 ・グラフィック画面を横方向に1ドットずつ間引いているため、切れ目が出来るときがある。
  →切れ目があると、PAINT文で悲惨な事に...
  →間引きプログラムをちょっと修正&描画後に、PSET文で修正して対処。

 ・PAINT文の開始場所が、画面中央とは限っていない。
  →cali5などの実行結果のため、最悪意図していない部分をPAINTしてしまう。
  →全部移動してみて確認する。


  という面倒な作業があります。

  ですのでリリースはもうちょっと先になります。

2014年10月05日

アリスソフトforP6(8)(あぶない天狗伝説リリース)

  あぶない天狗伝説 for P6


 ○注意事項
 ・P6版に変換したものに関しては、配布禁止です。


  88版→P6SRへの変換ツールをリリースします。

tengu_p6.zip


  説明などは、同梱のドキュメントを参照して下さい。

  また、アリスソフトアーカイブズには、88版あぶない天狗伝説がアップされていないので、各自でイメージデータを用意する必要があります。



  エミュレータでは、PC-6001VW ver307a2 と、PC-6001V ver1.22 で動作確認をしました。

2014年10月03日

アリスソフトforP6(7)(イントルーダー余談)

  ちょっと前に書いた事ですが...


  イントルーダーのBGMの全7曲は、リトルバンパイアのBGMと全く同じです、と書いたんですが間違いでした。

  イントルーダーは、BGMが13曲あり、その内7曲が全く同じ、でした。

  ただ、88版のBGMはWin版とは一部違うようです(詳しく調べていませんが)。少なくとも、アリスの館の音楽が、定番のアリスの館の音楽ではなく、リトルバンパイアのオープニングの曲が使われています。

  Win版は10曲しかデータがないようなので、どれかが使われていないんだと思いますが...聞き比べるしかなさそうです。

2014年10月02日

アリスソフトforP6(6)(リトルバンパイアバグ)

  先日リリースした、リトルバンパイア for P6 のバグについてです。


  動作にはそんなには影響はないんですが、以下のバグがあります。

・起動時、ドライブ1に lvp6_a.d88、ドライブ2に lvp6_c.d88 をセットすると、画面に変な模様が表示される。

  P6版ではフォントを読み込む前なので変な模様なのですが、88版オリジナルでは「チャンピオンソフトに連絡〜」のメッセージが表示されます。


  エミュレータでは前の設定が残るために、ドライブ2のディスクを変更したままの状態になる事がありますので注意して下さい。


  直した方がいいんですが、致命傷ではないので、とりあえずそのままにしておきます。

アリスソフトforP6(5)(DPSリリース)

  D.P.S for P6


 ○注意事項
 ・P6版に変換したものに関しては、配布禁止です。

  88版→P6SRへの変換ツールをリリースします。

dps_p6.zip

  説明などは、同梱のドキュメントを参照して下さい。


  エミュレータでは、PC-6001VW ver307a2 と、PC-6001V ver1.22 で動作確認をしました。

2014年09月24日

アリスソフトforP6(4)(リトルバンパイアリリース補足)

 リトルバンパイアforP6(20140923版)の補足


  先日リリースしたリトルバンパイアの補足です。


○Bookwormさん作のD88TOOL.exe を同梱しています。また記載するのを忘れていました。申し訳ありませんでした。

○BookwormさんのHPの物置に、WIN版からのデータの音楽再生プログラムがアップされています(MAKO60)。

○前回のリリースからの変更点。
 ・オープニング画面のちょっとした変更
 ・STOP/ESC/CTRL+C のキャンセル

 ぐらいです。

 プログラムはかなり変更が入っています。これは次回作以降のための布石です。


2014年09月23日

140923_02_アリスソフトforP6(3)(リトルバンパイアリリース)

  リトルバンパイア for P6


 ○注意事項
 ・P6版に変換したものに関しては、配布禁止です。
 ・88版→P6版の変換ソフトに関しては、配布OKです。


  88版→P6SRへの変換ツールをリリースします。

lv_p6.zip


  説明などは、同梱のドキュメントを参照して下さい。


  エミュレータでは、PC-6001VW ver307a2 と、PC-6001V ver1.22 で動作確認をしました。

  PC-6001V の方は、FM音源とSSG(PSG)音源のバランスと、SRでの OUT &H93,2 に対応していない問題があります。

アリスソフトforP6(2)

  アリスソフトから返答がありました。

  大体こちらが想定していた内容でよかったです。内容は以下の通り。


 ・P6版に変換したものに関しては、配布禁止です。
 ・88版→P6版の変換ソフトに関しては、配布OKです。


  ですので、今まで通り変換ソフトのみを公開します。



  リトルバンパイアですが、バージョンアップしたものを近日中にアップします。
  内容的にはほとんど変更はありませんが、他のプログラムとの兼ね合いで変更しています。


  オープニングがちょこっと変わっています。88版のように下からワラワラっと表示されます。


  この処理なんですが、88ではキャラクタ画面+グラフィック画面の重ね合わせで簡単に実現しています。

 1)画面一杯に黒ベタキャラを表示させる。
 2)グラフィック画面をロード(重ね合わせのため、グラフィック画面は見えない)。
 3)黒ベタキャラをちょっと小さい四角のキャラにする(隙間から後ろのグラフィック画面が見える)。
 4)四角のキャラクタをだんだん小さくしていく。



  これがP6では簡単に出来ないため、SWで無理やり実現しています。

 1)OUT &H93,2で画面を表示させないようにする。
 2)VRAMに画面データをロードする。
 3)VRAMのデータをVRAM以外のRAM上に転送する。
 4)画面を消去の後、OUT &H93,3 で画面を表示させる(この時は画面は消去された状態)。
 5)RAM上のデータを、VRAMに転送する。この際、88版と同じように下から見えるように転送する。


  上記処理は、他のプログラムでも使用しています。

2014年09月11日

アリスソフトforP6(1)

  タイトルが適当だ...


  アリスソフトアーカイブズ(http://retropc.net/alice/)で公開されているPC-8801版を元に、P6SR版を変換しています。

  で、そこにあるPC-8801版ランスを動かしてみたんですが、なぜか婦警さんVXが起動しない。


  確かちゃんと動いたはずと、自分が持っているディスクイメージを確認してみると、プログラムにバグがありました(ファイル名が違うだけ)。

  初期ロットなんですかねぇ...


  せっかくなので動くようにしました。

  DISKB.D88 の一部を修正するだけで動作します。
  バイナリエディタなどで、以下の箇所を変更します。

0x064F75〜
修正前:FF 96 28 0F 31 F3 53 4E 28 44 4B 29 29 F3 22
修正後:20 20 20 20 20 20 20 20 20 20 20 20 20 22 32

0x064F8A〜
修正前:22 F3 FF 96 28 0F 41 F3 44 4B 29
修正後:41 2E 56 58 22 20 20 20 20 20 20


  これで婦警さんVXが起動します。起動方法はアリスの館参照。

2014年08月31日

リトルバンパイアforP6(完成版)について

  先日リリースしたリトルバンパイアですが、指摘があったため一度公開を停止しています。

リトルバンパイアforP6(8)

  リトルバンパイアをP6で動かそうブログ8

  前回の続きです。

○P6版のマシン語プログラムについて
 P6版では、88版をベースに以下の4つのプログラムを新規に作っています。

  je(オープンしているファイルに対してアクセスを行う)
  mika2(グラフィックデータを画面に描画する)
  skj3(漢字を表示する)
  nm4(BGMを鳴らす)

  このうち、nm4は普通にCALL文で呼び出していますが、他の3つはBASICから変数などのパラメータのやり取りをしています。88版と同じように未定義命令を使って、起動させています。


  N66SR-BASICの未定義命令を使う方法に関しては、

  Mr.PC テクニカルコレクション
  ハローMr.PC

  に詳しく書かれています。特に、ハローMr.PCは、BASICの内部解析の記事もありますので、非常に参考になります。
  Mr.PCテクニカルコレクションは国会図書館に、ハローMr.PCは名古屋市鶴舞図書館にあります。


  具体的な使い方に関しては、それぞれのソースを参照してください。je.asm などは、WINDOW という未定義命令を、ステートメントとしても、関数としても使用していますので、参考になるかと思います。

  ちなみに関数ですが、

  関数名(引数)

  の形式しか許されていないようです。また()の処理は不要です。


  今回のプログラムでは、WINDOW、WINDOW()、VIEW、SET、TERM、CHAIN、CMD、KEY()、の未定義命令を作成しています。


  未定義命令ですが、DEFINT、DEFSTR、COMMON、などの命令が普通では使用できません。それは、DEFやCOMなど定義されている命令があり、先にその予約語で解釈されて、メモリにセットされるためです。直接バイナリレベルでメモリに入れるなどをする必要があります。

リトルバンパイアforP6(7)

  リトルバンパイアをP6で動かそうブログ7

  前回の続きです。

○88版からP6版への変換について(続き)

 (4)88版のマシン語プログラムをP6用に新規作成する。
  88版のプログラムでは、

  cali3(選択肢の決定などの演算を行う)
  je(オープンしているファイルに対してアクセスを行う)
  mika2(グラフィックデータを画面に描画する)
  skj3(漢字を表示する)
  nm4(BGMを鳴らす)

  で、cali3以外は全て新規作成を行っています。

  cali3に関しては、機種依存の部分がないので、ほとんどそのまま使用しています。


 (5)画像データを変換する
  88版の画像データは、640×200です。これを320×200のデータに変換しています。変換方法は割と単純です。

 ・奇数列のデータを描画しない
  これだけの処理でも、案外ちゃんと見える絵になっています。

 ・中間色用のタイルペイントのデータを加工する。
  奇数列だけを描画しない場合、中間色用のドット構成で妙な絵になります。

  こういうドット構成の場合、奇数列を抜くと...
□■□■□■□■□■
■□■□■□■□■□
□■□■□■□■□■
■□■□■□■□■□
□■□■□■□■□■
■□■□■□■□■□

  こんな具合に縞模様になってしまいます。
□□□□□
■■■■■
□□□□□
■■■■■
□□□□□
■■■■■


  別のパターンでこういうのがありますが、これの奇数列を抜くと...
□□■□□□■□□□
■□□□■□□□■□
□□■□□□■□□□
■□□□■□□□■□
□□■□□□■□□□
■□□□■□□□■□

  こんな具合になって、色調が変わった感じがします。
□■□■□
■□■□■
□■□■□
■□■□■
□■□■□
■□■□■


  対処としては、パターンを見て描画するデータを変更しています。

  例えばこういうデータなら、
□■□■□■□■
  こういうデータに変換。
□■□■


  こういうデータなら、
□□□■□□□■
  こういうデータに変換。
□□□■

  という具合です。


 (6)P6版のデータをD88イメージに書き込む
  ここまでで全てのデータが揃うので、それをN66SR-BASIC形式でD88フォーマットに書き込んでいます。

  書き込みには、D88TOOL.exe を使用しています。新規イメージ作成、ASCIIセーブ、バイナリセーブ、トラック/セクタを指定した書き込みが出来るので便利です。



  続きます。

リトルバンパイアforP6(完成版)の補足

  先日リリースしたリトルバンパイア for P6 の補足です。


○Bookwormさん作のD88TOOL.exe を同梱しています。記載するのを忘れていました。また、BookwormさんのHPの物置に、98版からのデータの音楽再生プログラムがアップされているようです(MAKO60)。


○エミュレータP6VWでは、Ver308、309では動作しません(原因不明)。Ver307a2を使用して下さい。他のエミュレータは未確認です。

○起動の際は、ドライブ#2にlvp6_b.d88をセットするのをお忘れなく。

○STOPキーのキャンセルをするのを忘れていました。ゲーム実行中は、STOPキー(エミュレータではENDキー)を押さないで下さい。

○FM音源の音色データの元として、PC-88用のROMデータが必要ですが、そのファイル名は、

 N88_3.rom もしくは N88EXT3.ROM

 が正解なようです。

 すみませんが、上記ROMデータを、N88-3.rom にリネームしてから変換を行ってください。


2014年08月30日

リトルバンパイアforP6(6)

  リトルバンパイアをP6で動かそうブログ6

  やっと完成しました。技術的な話をまとめておきます。

○P6のメモリマップ

 ・FM音源なしバージョン
  0x0000〜0x7FFF:グラフィック画面
  0x8000〜0x99A9:メインBASICプログラム
  0x99AA〜0xA544:変数エリア
  0xA545〜0xAD48:スタックエリア+空き
  0xAD47〜0xB8FF:文字列領域
  0xB900〜0xCFFF:美咲フォントデータその2
  0xD000〜0xDFFF:マシン語プログラム(後述)
  0xE000〜0xEFFF:BASICワーク
  0xF000〜0xFFFF:美咲フォントデータその3

  拡張RAM
  0x0000〜0x3FFF:美咲フォントデータその1


 ・FM音源ありバージョン
  0x0000〜0x7FFF:グラフィック画面
  0x8000〜0x99A9:メインBASICプログラム
  0x99AA〜0xA544:変数エリア
  0xA545〜0xAD48:スタックエリア+空き
  0xAD47〜0xB8FF:文字列領域
  0xB900〜0xCFFF:空き
  0xD000〜0xDFFF:マシン語プログラム(後述)
  0xE000〜0xEFFF:BASICワーク
  0xF000〜0xF3C7:空き
  0xF3C8〜0xFFFF:BGM演奏用MMLデータ

  拡張RAM
  0x0000〜0x66FF:美咲フォントデータ
  0x7000〜0x77FF:BGM演奏プログラム(メイン)
  0x7800〜0x7FFF:FM音源音色データ

○ディスクマップ

  今回のプログラムでは、ファイルの管理をBASICがしているため、どのトラックにどのデータが入っているかは意識していません。ただし、トラック#0セクタ#1に関しては、起動用のプログラムが入っています。そのため、D88TOOLなどで上書きされないようにFATを一部書き換えています(0xFEを設定してシステム予約にしている)。

○88版からP6版への変換について

  変換でやっている事は、以下の通りです。

 (1)88版のディスクからファイルを取り出す。
  88版では、N88-BASICではない、特殊なセクタ構成のDOSが使用されています。

  1024バイト長×5セクタと、256バイト長×1セクタが、1トラック内に書き込まれています。そのうち、256バイト長のセクタに関しては、DOSのプログラムが書かれているようです。N88-BASICで使用しているのは、1024バイト長×5セクタの部分です。1トラックに5120バイト=256バイト×10として管理されています。また、1クラスタは2560バイトに設定されており、1トラック=2クラスタになっています(N88-BASICと同じ)。ディレクトリ、ID、FAT の構成は、N88-BASICやN66SR-BASICと同じですが、トラック#18ではなくトラック#1に格納されています。

  プログラム(tsdos2file.exe)で、それぞれのD88イメージから、BASICファイルを取り出しています。

 (2)88版のBASICメインプログラムをASCIIファイルに変換する
  アリスソフトのゲーム(あ、リトルバンパイアはチャンピオンソフトか)では、他のゲームとの共通化を図るための工夫がなされています。

  シナリオ(文章)、グラフィック、選択肢、BGMのファイルが、BASICで読めるデータファイル(or マシン語ファイル)です。BASICのメインプログラムでは、そのファイルをOPENした後に、専用の関数からデータを読み出して処理しています。選択肢を選んだ時は、選ぶ前の変数の状態からシナリオに書かれている計算式を実行して、動作を決定しているようです。

  そのため、BASICメインプログラムを読んでも、ゲームの内容に関しては全然分かりません。


  プログラム構成をできるだけ同じようにしたかったため、P6用のBASICメインプログラムも、元の88用のものから変換をしています。


  リトルバンパイアでは、Pオプション付でセーブされているため、Pオプションを外すプログラム(n88dec.exe)と、N88-BASICをASCII変換するプログラム(n88toascii.exe)を作成しました。ただし、n88toascii.exe は多少手抜きです。

 (3)ASCIIのBASICプログラムから、P6用のBASICメインプログラムを作成する
  ASCIIのBASICプログラムからは、かなり変更されているために、gawkを使って変換しています(まず、手動で修正してから、それになるようにgawkを組んでいます)。


  元のプログラムで使用されている文法で、N66SR-BASICにないものは、

  DEFINT A-Z(変数の整数宣言)
  WHILE WEND
  ラベルジャンプ
  2文字を超えた変数名
  CALL文

  です。意外に地味に面倒な変換をしています。



  次に続きます。