2015年05月21日

イシターの復活forP6(10)(Ver1.1リリース)

  イシターの復活 for P6


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

ishtarp6_v1_1.zip


 ○Ver 1 → Ver 1,1 変更箇所
  呪文リストで、選択するものがない状態の時に、画面が乱れる問題を対処


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


  ゲームをプレイするのには支障はないバグですが、気になるので修正しました。


2015年05月19日

イシターの復活forP6(8)

  前の話の続き。


  ふと思いついて、キャラクタ消去用描画の高速化をしてみました。

  とりあえずバグがいっぱいある状態ですが、速度を測るのには支障がないので測定してみる事にしました。


  場所は、いつものDEAD END 。

 ・PC88版:24.3秒(エミュレータ)

  修正前
 ・フル機能版:46.7秒(実機)
 ・BGMなし:39.1秒(実機)
 ・BGMなし+敵キャラクタ描画なし:25.3秒(実機)

  修正後
 ・フル機能版:34.7秒(実機)
 ・BGMなし:29.2秒(実機)
 ・BGMなし+敵キャラクタ描画なし:15.3秒(実機)


  大体、3/4ぐらいになっている感じです。この修正を進めていくのでよさそうです。


  ただ一つ問題が...エミュレータ(PC-6001VW)では、動作が非常に遅くなります。

  エンディングロールなどで問題がある機能を使っているためです。

  やっている事は単純で、ポート0xC8のビット3をON/OFFしているだけです。

  ビットマップのON/OFFなんですが、同じポートにBASICモードの選択があるために、頻繁にON/OFFをすると遅くなるようです。

2015年05月18日

イシターの復活forP6(7)

  イシターの復活を一応無事リリースできたのですが...

  動かしていると、やっぱりちょっと遅いかなー、と思ってきました。

  スクロールだけだとPC88版と同じぐらいなのですが、敵キャラクタがたくさん出てくると遅くなるのを実感します。


  で、測定してみました。

  場所は、DEAD END 。都合よくローパーが並んでいるだけの直線なので、通路の端から端まで、どれくらい掛かるかを測定してみました。

 ・PC88版:24.3秒(エミュレータ)
 ・P6SR版:43.1秒(エミュレータ)/46.7秒(実機)

  PC88版の倍程度掛かっています...

  どこのルーチンが時間が掛かっているかを調べるために、特定の動作の部分だけを処理しないプログラムで測定してみました。

 ・BGMなし:39.1秒(実機)
 ・BGMなし+敵キャラクタ描画なし:25.3秒(実機)
 ・BGMなし+キャラクタ消去用描画なし:21.0秒(実機)
 ・BGMなし+敵キャラクタ描画なし+キャラクタ消去用描画なし:6.8秒(実機)


  ざっくりと計算すると

 ・BGM:7.6秒
 ・敵キャラクタ描画:13.8秒
 ・キャラクタ消去用描画:18.1秒

  となりました。


  敵キャラクタ描画もキャラクタ消去用描画も、処理が大変なのでかなり工夫していたのですが、今一度見直す事にします。


  BGMは...処理が重すぎですね。

  BGM処理は元のPC88のプログラムをほとんどそのまま使用しているので、改良の余地は十分にあります。
  ただ、それ以前に解析をする、という作業が残っているのですが(^^;)
  (ほぼ解析せずに使用できています)

2015年05月17日

イシターの復活forP6(6)(リリース改)

  イシターの復活 for P6


  先にアップしたツールでは、〜.d88の内容次第で変換時にエラーになることがあるようです。

  その辺りを対応した変換プログラムをアップします。

ishtarp6_2.zip


  先にアップしたもので動いていれば、特にやり直す必要はありません(結果は同じになります)。

イシターの復活forP6(5)(リリース)

  イシターの復活 for P6


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

ishtarp6.zip


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



  Q&Aコーナー

 Q1.PC88版とどこが変わったか?
 A1.
  ・グラフィックが横640ドット→320ドットのため、グラフィックが多少荒くなっています。
  ・動作速度がPC88版よりも同等か遅いです。キャラクタが多い場合は特に目立ちます。
  ・呪文系統を変更するたびにディスクアクセスしていたものを、オンメモリーにしました。
  ・ちょっとしたバグを修正しています。
  ・キーボード+ジョイスティック、あるいはジョイスティック×2、あるいはXPD-1LDが使用できます。
  ・呪文名、Detect MonsterやDetect Magic使用時の表示、ルーム名などが見やすくなりました。
  ・KIが移動する際に、呪文名、残り時間、GILのHPが一時的に消されます。

 Q2.PC88版より速くなったのでは?
 A2.KIを一人だけでスクロールした場合は、PC88版より若干速いです。他のモンスターが出てくると遅くなります...

2015年05月16日

イシターの復活forP6(4)

  イシターの復活(ザ・リターン・オブ・イシター)の、ゲームとしてあまり解析されていない部分について調査した結果です。

  PC-8801版を解析したので、他のバージョンでは違う部分があるかと思います。


  モンスター情報

140516_03_モンスター経験値.jpg


  バイタリティ、リカバーポイントは、All About NAMCO に書かれているのとほぼ同じです(Mirror Knight、Golden Mirror Knight のリカバーポイントがちょっと違う)

  左の#は、Light Violet Vampireからの通し番号です。


  気付いた人がいるかも知れませんが、経験値はモンスター番号+リカバーポイントになります。
  そのため、リカバーポイントが大きいモンスターを倒した方が、経験値がたくさん入ります。


  ウーズやスネークは、倒すのがラクな割りに経験値が多く入ります。
  ローパーやリザードマンは、倒すのに苦労する割りに経験値が入りません。



  経験値でソーティングしたのが次の表です。


140516_03_モンスター経験値2.jpg


イシターの復活forP6(3)

  イシターの復活(ザ・リターン・オブ・イシター)の、ゲームとしてあまり解析されていない部分について調査した結果です。

  PC-8801版を解析したので、他のバージョンでは違う部分があるかと思います。


1)NEW GAME 開始直後の状態
  KIの最大呪文ポイント(最大MP):6
  GILの最大バイタリティ(最大VT):15


2)成長(経験値について)
  モンスターを倒した時に、モンスターごとに決まっている経験値が入ります。

  その経験値が一定量貯まると、レベルアップします。
  レベルアップ後に残った経験値は切り捨てられずに残りますが、ゲームオーバーになると捨てられます(パスワードやコンティニュー時には持ち越されません)。


  KIの場合は経験値が 18 貯まると、最大呪文ポイントが 1 増えます。
  GILの場合は経験値が 36 貯まると、最大バイタリティが 1 増えます。


  例えば、ゲーム開始直後にモンスターを倒した時に、経験値を92得た場合は、

  KI:最大MPが 5 増えて、経験値が 2 残る。
  GIL:最大VTが 2 増えて、経験値が 20 残る。

  この状態で、経験値 16 を得ると、GILの最大VTがさらに 1 増える事になります。

  モンスターごとの経験値については別途記載します。

  最大MP/最大VTは、ゲームオーバー時に反映されます。


3)KIの呪文選択メニューについて
  KIの所持MPにより、使用できる呪文が変わりますが、これは以下の通りです。

 ・消費MPが 0 のものは常に使用可能(当たり前)
 ・消費MPが 0 以外の場合、所持MP が 消費MPx2-1 以上の場合は使用可能


  例えば、NEW GAME 開始直後の場合、所持MPは 6です。
  そのため、消費MP 2 の Flying Disk は使用可能ですが、消費MP 4 の Lightning Bolt は使用不可です。
  この状態で経験値 36 を得て、ゲームオーバー後、再開すると、Lightning Boltが使用可能になります。

  呪文ごとの消費MPについてはマニュアルに記載されています。
 (All About NAMCOや、アーケード版と同じだと思います)


4)効果が怪しい呪文について
 ・Neutralize Spell I/II、First Aid は効果がありません(MPは消費します)。


5)GILがモンスターと直接戦っているときの、VTの減り方について

  これは、
   Shield、Shield Red Line、Shield Blue Line
   Dispell Magic
   シールド封じ/スーパーシールド封じ
  と関連があります。

 ややこしいので、フローチャートにします。


 まず通常の場合。

モンスターのVTを 1 減らします。
 ↓
モンスターのVTが 0 ならば、モンスターを倒した事になります。
GILのVTにリカバーポイントを加えます(最大VTを超えない範囲で)。
 ↓
GILのVTを 1 減らします。
 ↓
最初に戻る。


 Shield を掛けている場合。

モンスターのVTを 1 減らします。
 ↓
モンスターのVTが 0 ならば、モンスターを倒した事になります。
GILのVTにリカバーポイントを加えます(最大VTを超えない範囲で)。
 ↓
シールド用のカウンタを 1 増やす。
カウンタが 2 になったら、カウンタを 0 に戻し、GILのVTを 1 減らす。
 ↓
最初に戻る。

 Shield Red Line の場合は、カウンタが 3 になったらVTを減らし、Shield Blue Line の場合は、カウンタが 4 になったらVTを減らします。
 これにより、ダメージが 1/2、1/3、1/4 になります。


 シールド封じを受けた場合は、上記の、GILのVTから減らす量を 1 ではなく、2、3、4になります。
 シールド封じを1回受けるごとに、VTから減らす量が +1 されます(最大で 4 まで)。
 受けるダメージが、2倍、3倍、4倍になる事になります。

 スーパーシールド封じの場合は、1回受けるごとに、VTから減らす量が x2 されます。
 最大で 8 まで、VTから減らします。
 受けるダメージが、2倍、4倍、8倍になる事になります。

 Dispell Magic を掛けると、シールド封じ、スーパーシールド封じで変化した、VTから減らす量を 1 に戻します。

イシターの復活forP6(2)

  3つ目のRed Wisp発生時の画面が乱れるバグですが、いまだに再現しません。

  さらに描画ルーチンをちょっと変更したので、再現されるかどうかも分かりません。


  ゲームがストップするとかいうバグではないため、とりあえずこのままリリースしようかと思います。

  ディスクにセーブするゲームではないので、最悪は何とかなるかと思いますので。

2015年05月15日

イシターの復活forP6(1)

  入力の反応の改善が終わって、最終チェック中ですが...
  バグが3つほど。

 ・126面、127面をクリアしたパスワードを受け付けない。
 ・Fire Element、Fire Explosion が飛んで行かずに、手元で爆発する。
 ・Red Wisp発生時に、画面が乱れることがある。

  1つ目は、PC88版からのバグのようです。これは簡単。
  2つ目は、入力の反応改善をした時に発生したバグです。直し方はちょっと考えれば分かりそう。

  問題は3つ目で、一度発生しただけで再度発生しません。
  原因もよく分からないので、再現するまで何度もプレイするしかないんですが、これがなかなか手ごわい...


  今週末にリリースを、と思っていたのですが、もう少し先になりそうです。

2015年05月13日

イシターの復活forP6(0)

  移植の作業がほとんど終わりました。

  画面はこんな感じです。


140513_01_ish1.jpg
 ゲームタイトル

140513_01_ish2.jpg
 L_Violet Vampire に Killer Cloud を撃つ(^^;

140513_01_ish3.jpg
 ローパーまみれ。先にはあんどーさんが。

140513_01_ish4.jpg
 ドラゴンの昼寝。

140513_01_ish5.jpg
 Akynd Knight の名前を表示してみました。



  デバッグモードというか、KIのMPを60000程度にしてデバッグしていたため気付かなかったのですが、最初の状態で1面からゲームをした時に Fire Ball がちゃんと連射できない事が判明...
  入力に対する反応が極めて悪いのが原因なようです。

  この辺りを修正した後にアップします。いつものごとく、PC-88版のイシターの復活からの差分プログラムです。

2015年05月06日

某88ソフトからの移植

  すっかりブログを更新していませんでした。


  今は、元々アーケードのゲームだったものを88版に移植されていたものを
 さらにSR用に移植しています。

  完成したらまたアップしますが、まあまあ完成度は高いと思います。


  SRのグラフィックなんですが、触っていると分かりますがかなり使いにくいです。

  今回のゲームはアクション系でさらに画面がスクロールするので、どうしても
 大量のデータを高速に扱う必要があります。その辺りのプログラムを組んでいると、
 SRでは妙に使いにくいです。

  SRでは、ポート0xCE/CFにY座標を出力して、0〜319のメモリに書き込む事で、
 ドット表示が出来ますが、これでスクロールさせるとかなり遅くなります。
 (この方式をビットマップ方式と呼んでいるようです)

  この方式ではなくて直接VRAMに書き込む事も出来ますが、VRAMは変態的な構成に
 なっています。
  VRAM構成はスクロールし易いように作っているんだと思いますが、一部アドレス線が
 逆になっている問題があるのと、実はビットマップモードは使いにくい事が
 わかっていないような気がします。


  ゲームは、BGMがない状態で大体完成しました。動作速度も遅いながらに許容範囲かなーと
 思っていました(大体、88版の約2倍)。

  で、割り込みでBGMを付けると...ゲームにならないような遅さに...
  8msごとにBGMに割り込んでるんですが、すごく重いのかなと思います。



  BGMルーチンがちょっと遅すぎるので、ロジアナで調べてみると...
  nMREQ、nIOEQ、nRD、nWRなどが、なぜかアクセスしていない期間がありました...


  SRなのに、バスリクエストをONにしていました (__)...


  バスリクエストをOFFにすると、非常に快適な速度になりました。88版よりも速いかも。


  後は細かな点を実装すれば完成します。

  完成後にちょろちょろと技術的な事を書いていこうと思ってます。

2014年11月28日

ポッキーforP6(3)(リリース)

  ポッキー for P6


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

pokky_p6.zip



  説明などは、同梱のドキュメントを参照して下さい。
  バグ情報などもあります。


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

2014年11月25日

ポッキーforP6(2)

  ポッキー for P6


  大体、プログラムが終わりました。後は、BASIC変換用ののAWKスクリプトを書くだけです。

  一区切り付いたので、技術的な事をまとめます。
  と言っても、基本はリトルバンパイアとほとんど同じです。


  今回面倒だったのは、以下の3点。


1)音楽再生が単なるPLAY文で実行されている
  前のアリスソフト用BGM演奏プログラムを使うために、PLAY文からBGM演奏プログラム用に変換するプログラムを書いています。
  また、エンベロープを使った場合に音が鳴らないバグがあったので、修正しました。
  (リトルバンパイアで、このバグに相当する曲があります。どうしよう...)


2)ディスク容量が足りない
  2Dを1DDにするので、通常では不足する事はないのですが...

  ポッキーのディスクは、通常の1セクタ=256バイト、1トラック=16セクタの80トラックではなく、1セクタ=512バイト、1トラック=10セクタの84トラックです。このため、ディスク容量自体がかなり違います。

  アリスソフトでも似たような状況だったのですが、CGのサイズが640x200→320x200になるので、グラフィック容量が少なくなって避けられていました。

  ポッキーでは、
  ・複数の画像ファイルを1つのファイルにする。
  ・メッセージファイルを圧縮する。

  で回避しています。


3)速度が遅い
  アリスソフトではあまり気にならなかったのですが(それでもちょっと遅い)、ポッキーでは許容範囲を超えた遅さでした。

  ディスクからデータを読み出し、そのデータを文字列として、全部処理をしています。そのため、MID$を多用しています。

  MID$自体の処理があまり速くなく、さらに文字領域を毎回確保するために、ガベージコレクションも割りと発生していました。

  以上の問題点の対策として
 ・文字領域を決まった場所に割り当てる。
 ・MID$をマシン語処理する。

  としてます。

  とりあえずそれなりな速度にはなっています。速い、とは言えませんが...


2014年11月11日

ポッキーforP6

  今日の11月11日はポッキーの日らしいです。


  なので(?)、P6に移植しました。


141111_01_pokky_1.jpg

141111_01_pokky_2.jpg


  ただ、ちょっと前に書いた通り、動作がかなり遅いです。

  ですので、リリースはどうしようか迷っている所です。
  要望があればリリースしてもいいけど...という感じですね。

2014年11月03日

某88ソフトforP6

  アリスソフトの技法を使って、他の88版ソフトをP6SRで動かす計画。


  88版の某美少女アドベンチャーソフトを移植しています。また18禁ですが...


  大体出来上がったんですが、結構致命的な欠点が。

  「遅い」


  88版を大体そのまま持ってきているので、そんなに差はなさそうなんですが、なぜか非常に遅いです。

  また、文字列演算(MID$)を頻繁に使っている関係で、たまにガベージコレクションで止まる事もあります。


  エミュレータで加速状態でプレイすれば快適なんですけどねぇ...


  速度が何とかならないと、お蔵入りにするかも知れません。


  出来れば11月11日にリリースしたいんだけどなぁ...

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文

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



  次に続きます。

2014年08月19日

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

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


  FM音源がやっと終わりました。
  音色が違ったのは、FM音源の再生時に1オクターブ高かったためでした。SSG音源の方は合っていたため、分かりづらかったようです。


  で、また別の問題が。


  漢字を表示させる時の美咲フォントデータですが、第一水準のデータだけでも30K程度あります。
  当初、PC-6006を使えばフリーエリアが16Kぐらいになるので、対処できるかなーと思っていたんですが、どうもこれだと足らないようです。


  今のターゲットは、

  PC-6001mk2SR+PC-80S31(2ドライブ) or PC-6601SR(2ドライブ)
    +
  PC-6006SR or PC-6007SR

  という、かなり贅沢なスペックが必要になります。


  PC-6601SR + SD-6031WIF(64Kバイト増設版)でもいいんですが、64Kバイト増設というのがネックですね。


  エミュレータなら、全然問題にならないんですけどね(^^;)


2014年08月18日

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

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


  FM音源が大体終わったんですが、88版と比べてみるとちょっと違う...M88とP6VWの違いではなさそうなんですよねぇ。
  音色データは、88のROMのを使っているので、同じになるはずなんですが...原因調査中です。

  ちなみに、

  ちょっと名探偵
  リトルバンパイア
  DPS
  イントルーダー
  ランス
  あぶない天狗伝説

  の全ての音楽が同じプログラムで鳴らせます。全曲確認するのが大変...




  前回の余談で

>> リトルバンパイアと、イントルーダーの音楽データが、7曲中6曲が全く同じでした(^^;)

  と書きましたが、7曲すべて同じでした。

2014年08月09日

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

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


  FM音源がすごく大変...
  音を全然鳴らさない、という選択肢もあるんですが、やっぱり折角だから鳴らしたいんですよねぇ。


  今、必要なプログラムは、

 ・2ms割り込みを使って、
 ・MMLを解析して
 ・FM3音+SSG3音を自動的に音を鳴らす

  というFM音源ドライバです。


  SSG(PSG)単体だと、まだ何とかなりそうなんですが...
  FM音源の音色データは、PC-8801のROMから抜き出してくるしかなさそうです。


  ROM内のデータのありかをようやく見つけた所です...


  アリスソフトのゲームで使用されている音源ドライバは、リトルバンパイア〜ランスまで全く同じものを使っているようなので(音楽データも共通に使える)、一度作ってしまえば他のゲームにも使えるんですけどねぇ。




  余談:ちょっと驚いた事。

  リトルバンパイアと、イントルーダーの音楽データが、7曲中6曲が全く同じでした(^^;)

2014年08月07日

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

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


  PC-88用のリトルバンパイアは、メインがBASICで、画面表示、漢字表示、サウンド、ファイルの読み込みなどは、マシン語で行われています。この部分を変更すれば、P6でも動くようになります。

  アドベンチャーの肝である、どの選択肢を選んだら、どういう動作をする、という部分は、シナリオファイルの中に書かれているので、メインのBASIC部分やマシン語部分は、基本的にタッチしていません。シナリオファイルの通りに動いているだけです。


  この方式を採っているのは、シナリオファイルや画像ファイルを変更するだけで、別のアドベンチャーゲームが出来るからだと思います。


  で、調べてみると、同じ方法で作られていると思われるのは、アリスソフトのPC-8801用のゲームで、

 ・イントルーダー 桜屋敷の探索
 ・あぶない天狗伝説
 ・DPS
 ・ランス
 ・ランス2

  でした。画像ファイルやシナリオファイルの形式もほとんど同じようです。うまくいくと、全部 P6で動かすことが出来そうです。

  ただ、ランス2は、アナログRBGを使っているので、かなり無理がありそうです。


  肝心のリトルバンパイアの方は、FM音源の再生でつまずいています...

2014年08月04日

リトルバンパイアforP6(完成間近?)

  最近、こういう事をやっています。


140804_01_LVP6_1.jpg

140804_01_LVP6_2.jpg


  元々は、PC-8801用のソフトを、SR用(もちろん、6001mk2SR/6601SR)に移植しています。
  大体は動くようになりました。


  ただ、今の所、以下の改良点をするつもりでいます。

  ・画像データの変換方法。今は暫定的に1ドットおきに表示させている。
  ・文字の表示が半角分ずれている。
  ・デバッグ(PC-88版と同じ動きかどうか)
  ・PC-8801のメインのBASICプログラムを、自動でSR用に変換するソフトを作る。



  ちなみに、元のゲームは、この辺り。

http://retropc.net/alice/menu.html


  使用している、8×8のフォント(美咲フォント)は、この辺り(ちゃんと読めるからすごいです)。

http://www.geocities.jp/littlimi/misaki.htm


  また、BASIC形式でのファイルの書き込みは、d88tool を使わせて頂きました(Bookwormさん、多謝)。

http://www.geocities.jp/submarine600/


2014年07月14日

でばぐ:CARRYGAME(2)

  先日改造したCARRY GAMEですが、さらに改良しました。


 ・赤い家に入った時、荷物が一番上ではない場合、
  4×4の荷物置き場に表示するようにした。
 ・車がクラッシュ/タイムアウト時に、SPACEキーで次に進むようにした。
 ・ゲームオーバー時、面数を00に戻らないようにした。


  以下が追加の改造点です(すべて16進数)。

  AB40:CD → C3
  AB41:B3 → 80
  AB42:1B → B1

  ABEF:FE → CD
  ABF0:00 → 60
  ABF1:28 → B1
  ABF2:02 → 00
  ABF3:1E → 00
  ABF4:F0 → 00

  B000:3A → CD
  B001:40 → 70
  B002:A3 → B1

  B0B2:22 → 00
  B0B3:46 → 00
  B0B4:A3 → 00


  さらに、0xB150〜0xB1A1が追加になります。

 carrygame_mb150_b1a1.bin



  これで、まあまあ面白くなったかな?ちょっと簡単すぎるかも知れませんが。


2014年07月12日

でばぐ:CARRYGAME

  以前に入力して動かなかったソフトを動かしました。


  月間マイコン 1985年8月号 P.276〜P.281 の『CARRY GAME』です。


  オールマシン語で、0x9000〜0x9FFF、0xA800〜0xB140、0xB600〜0xEBBF にリストが分かれています。

  このまま入力して、セーブ後、EXEC &HB100 で起動します。
  カーソルの左右で面数を選び、SPACE でゲーム開始です。

  ...なんですが、全然動きません。


  解析した結果、0xA400〜0xA7FFのリストが抜けているようです。
  この部分はキャラクタバターンで、これがないと何も表示されません(当たり前)。

  マシン語リストの内容が、0xA000〜0xA7FFがワークエリア、と記載されているので、それで間違ったんじゃないかと思います。

  ワークエリアの一部にも特定の値にした方がいいようです。
  結局、0xA000〜0xA7FFを適切に設定する必要があります。

  以下に、私が作成したキャラクタパターンとワークエリアの設定値をアップしておきます(相変わらずキャラデザが下手ですが...)。
  0xA000〜0xA7FF のデータになります。

carrygame_ma000_a7ff.bin



  遊び方もちょっと変わった(色が変わった)ので、以下に書いておきます。

 ・タイトル画面で、カーソルの左右を押して遊ぶ面数を選び、SPACEで開始します。
 ・黒いトラックを操作して下さい。
 ・画面には、青い家、赤い家、白い道路、動いている赤い対向車、荷物の配達所などが表示されています。
 ・トラックは、青い家、赤い対向車にぶつかるとクラッシュし、トラックが1台減ります。
 ・赤い家は、荷物を配達する家です。
 ・赤い家に荷物が配達できれば、青い家になります。青い家になったらぶつからないで下さい。クラッシュします。
 ・赤い家に荷物が配達できない事もあります。
 ・配達する荷物は、右下の荷物カゴに4×4で表示されています。このうち、一番上の4つだけが配達可能です。
 ・荷物を16個配達した後、左下の配達所に戻ると、1面クリアとなります。


  やってみるとわかるんですが、無駄に難しいです。細かい操作が必要になるため、ストレスがたまります...


  なので、割と遊べるような改造をしてみました。

  『青い家にぶつかってもクラッシュしない』

  これだと、赤い対向車にぶつかる以外はクラッシュしなくなります。


  以下が改造点です(すべて16進数)。

  A944:10 → 52
  A945:AA → A9

  A952:00 → FE
  A953:00 → 01
  A954:00 → C8
  A955:00 → C3
  A956:00 → 10
  A957:00 → AA


  これでも後半は難しくなります。

  荷物の順番が表示できればよかったんですが、そこまでするのもなぁ、というのでやってません。


2014年07月05日

オリオン2トリガ対応

  AX-5のオリオンのジョイスティックの2トリガ対応を行いました。
  下記のオリオン80のコメントであったやつです。


  TOWNSパッドのような2トリガのジョイスティックを、オリオンで使えるようにしました。

  olion2tg.zip



  変換方法は同梱のドキュメントを参照して下さい。


  このテのプログラムは、P6現役にも作ろうとしたんですが、挫折したような気がします(^^;)

  今は環境があるので、作るのがすごくラクですね。


2014年06月30日

オリオン80移植(2)

  PC-8001用のAY-2のオリオン80を移植しました。
  PC-6001mk2SR/PC-6601SR専用です。

olion8p6実行画面1.jpg
olion8p6実行画面2.jpg
olion8p6実行画面3.jpg
olion8p6実行画面4.jpg
olion8p6実行画面5.jpg
olion8p6実行画面6.jpg
olion8p6実行画面7.jpg
olion8p6実行画面8.jpg



  何とか6月中にアップする事ができました。
  変換方法、操作方法などは doc ディレクトリ下のそれぞれの説明テキストを参照して下さい。

  olion8p6.zip



  PC-8001のものと比べて、遜色なく動作すると思います。
  並べて動かすと、ちょっと遅いのが分かりますが...

  ジョイスティック対応していますので、かなり遊びやすくなっていると思います。

  ただし、実機で動作させた場合、画面右側がずれて表示されます。

olion8p6実行画面9.jpg



  これは以前に挙げているハードウエアのバグですので、どうしようもありません。

  また、エミュレータは、P6VW、P6V、P6VX、iP6plus を試しましたがちゃんと動作します(いずれも最新版)。
  ただし、iP6plus に関しては、VSYNC割り込みの間隔が遅いらしく、10分を計時するタイマが若干遅くなります。



  今回、せっかくなのでデザイナーを使って、新しくデータを作ったんですが、結構大変でした。

  普通の敵機は、どっかで見た事があるキャラクタだったりします。
  何のキャラクタか、全部分かる人は...いないと思いますが。

  コマンダーは、一応、レトロパソコンっぽいものにしたつもりですが、自分でも全然分からないです。
  1面:MZ-80K2 2面:FM-7 3面:X-1 4面:X68000 5面:FM-TOWNS

  X68000とFM-TOWNSは何となく分かるんですが、最後の方ですねぇ...


  普通の敵機のキャラクタに関しては、要望があれば正体を明かしますが(^^;)...

2014年06月27日

オリオン80移植(1)

  PC-8001用のAY-2のオリオン80を移植しました。PC-6001mk2SR/PC-6601SR専用です。


  SRには、80×25の画面モードにした時に、キャラクタの簡易グラフィックで160×100が描画できます。
  これがPC-8001のグラフィック画面と丁度同じ解像度です。

  ビットアサインや色の出し方などは違うため、そのままでは動かせないのですが、割と少ない改修で動かせます。


  オリオン80の移植は、プログラムは完了しました。

  オリオン80は敵戦闘機のデザインが出来るようになっており、現在、追加のデータを作成中です。

  作成が完了して、説明用のドキュメントを作成したらアップする予定です。


  あ、当然、元のデータは必要ですので。

2013年12月09日

QUESTをディスクから起動する

  何気なく思いついたので、作ってみました。


  AX-5シリーズのQUESTは、BASICのファイルが1本だけですが、ファイルサイズが大きいです。
  そのため、mode4 を使ってディスクから起動させようと思っても、メモリが足りなくて起動する事ができません。


  そこで、ディスクから起動させるプログラムを作りました。正確にはディスクからロードして、データを転送してから、起動する、ですが。


  mk2以降のディスクのオート起動は、BASICのモードを選択する前に動作するので、この時にプログラムを全部読み込んで、VRAMに転送しておきます。その後で、BASICを起動してからメインメモリ上に転送すれば、テープからロードしたのと同じ状態にできます。

questload.zip



  他のプログラムでも使用可能ですが、再コンパイルが必要になります。詳しくは同梱のテキストを参照して下さい。

  プログラム1本でディスク1枚使うとか、読み込み中が真っ黒とか、不満な部分はありますが、その辺は適当に改良して下さい。

2013年09月21日

ドラゴンスレイヤー移植

  ドラゴンスレイヤーをP6mk2用に移植しました。

ドラスレ実行画面1ドラスレ実行画面2ドラスレ実行画面3ドラスレ実行画面4

  ディスクの作成方法などは、同梱のドキュメントを参考にして下さい。

dragonp6.zip



  オリジナルは、ログイン版のPC-8801用のプログラムです。PC-8801用のプログラムにパッチを当てて、P6用ルーチンに飛ばしています。P6用ルーチンでは、画像出力、音声出力、キー入力などをP6mk2用にカスタマイズしています。メインルーチンなどは、PC-8801のプログラムのままです。
  キャラクタデータは、画面の解像度が違うためにそのまま使えませんでしたので、一から作りました。どうも私のセンスがないためにイマイチです。


  そのまま配布する事はできませんので、ログイン版のPC-8801用のプログラムを入手する必要があります。

  ログインの1986年4月号にプログラムリストが掲載されているので、それを利用するのがいいかと思います。


  PC-8801用ドラゴンスレイヤーは、4つのバージョンがあります。バージョン番号は、デモ画面に表示されます(ログイン版を除く)。

 ・ver1.0:テープ版。面は1面のみ。セーブ不可。PCマガジン1985年5月号に掲載。
 ・ver1.1:ディスク版。面は10面。セーブ可。
 ・ver2.0:ディスク版。面は20面。セーブ可。
 ・ログイン版:ディスク版。面は20面まで可能。コンストラクション機能で、読者から面のデータを募っていた。


  今回ログイン版をターゲットにしたのは、入手性がいいためです。

  ver1.0 でもよかったんですが、プログラムを解析した時に、ver2.0やログイン版は各ルーチンがまとめられていて、移植を意識した作りになっていたからです。


  ログイン版は、残念ながら以下の機能が他と違って劣っています。
 ・魔法のメニューが出ない
 ・途中セーブ/ロードが出来ない
 ・キーの説明などのデモ画面がない。ドラゴンスレイヤーのロゴがない。

  何らかの理由で削っているようですが、復活するのも面倒なので途中セーブ/ロードのみを追加しました。



  PC-8801版と比べると、かなり遅いです。ゲームボーイ版と同じぐらいの速度です。でも、まあ遊べるぐらいにはなっていると思います。

  2面ほどクリアしてみましたが、ずるずるとしてしまうタイプのゲームではあります。


2013年07月28日

ロードランナー改造

 66用のディスク版が入手できたので、いろいろと解析してみました。


  その結果、SD6031/SD6031WIFを含む外付けドライブでも使えるようにできました。

loderunner.zip



  プロテクトが掛かっているのでその解析が結構面倒だったのですが、プログラム本体は多分全機種共通のようです。

  SR用では、パレット色の変更、バスリクエストOFF などが出来るようですが、起動時に選択しているだけかも知れません(持っていないので不明)。




2013年07月22日

コロニーオデッセイ改造

  P6では有名な、コロニーオデッセイを改造しました。


  コロニーオデッセイは 66 の付属のゲームで、他の機種ではなぜか動作しません。

  何となく解析してみると、特にプロテクトが掛かっているわけでもなく、どうも他の機種で動作させようとしていたみたいです。
  ちゃんと外付けドライブ用のプログラムも用意されているんですが、それが機能していないのと、バグがあるのとで、動作しないようです。

  どうも、大体作ってデバッグを全然していなかった、というパターンのようです。
 

  せっかくなので、外付けドライブで動作するようにしてみました。

  動作できるのは、mk2/66/mk2SR/66SR+外付けドライブ、66+内蔵ドライブ、です。

  これにより、SD6031 や SD6031WIF でも問題なく動作します。


odyssey.zip



  66SR の内蔵ドライブでは、そのままでは動作しません。

  1DD のフォーマットで、1D のトラック番号#0〜#39 のデータを、1DD のトラック番号#0〜#39 にコピーする、と動くかも知れません(#40〜#79は未使用)。ただし、この場合は、全てのディスクを同じようにコピーする必要があります。


2013年05月11日

でばぐ:XOR

  以前に入力して動かなかったソフトを動かしました。


  ASCII 1987年6、7月号の『XOR(エクサー)』です。創刊10周年記念らしいです。

xor.zip


  入力、修正方法などは↑を見てください。


  なぜか分かりませんが、本来、0xFF、0x7F のデータがすべて 0x00 に化けていたようです。そのため、パズルでは致命傷であ

る面データの間違いなどもありました。

  結局、PC-8001用のプログラムデータを入力して、比較して間違いを確認しました。さらにFM-7用のデータでも何箇所か比較し

たので、多分問題ないかと思います。


  プログラムにもかなりデータ化けの箇所があったので、こちらは全部解析をして問題ない事を確認しています。
 (さらに1つ、バグを見つけました...DEC BC では、Zflag は変化しませんよー)


  面セレクトが出来ない(というか隠しコマンドになってる)のも、標準で面セレクトが出来るようにしました。



  ちなみに...問題は難しいです。

2013年04月25日

でばぐ:HEARTMONS(2)

  「HEART MONS」の続きです。


  勘違いは、実は遊び方にありました。


○遊び方
 自キャラクタ『YOU』を操作して、敵キャラクタ『モンスター』に捕まらないようにします。
 表と裏がある面の『怨霊のしみ』を全て除霊し、『壁のしみ』から脱出します。

 とややこしいですが...

 要するに敵キャラクタに捕まらないように自キャラクタを操作し、『怨霊のしみ』を全て集めて、『壁のしみ』に行けば1面クリアです。


○操作方法
 カーソルキーで左右に移動します。はしごでは、上下で移動します。
 移動するとそのまま移動し続けます。移動できない方向を押すか、スペースキーで止まります。

 スペースキーを押すと、ドアに入る、はしごを移動する、事ができます。

 シフトキーを押すと、一時停止します。さらにシフトキーを押すと、見えてる面の裏が見えます。カーソルキーなどで戻ります。

 ストップキーを押すと、コンストラクションメニューになります。
 コンストラクションメニューの3番を選ぶと、人数が増やせます。


 重要その1:表裏面を移動するドアは、「ドアをくぐる」のではなく、「違う面の同じ場所のものと入れ替わる」動作をします。

  例1:表面:ドア、裏面:ドア、の場合は、ドアに入っても見た目は変わりません。
  例2:表面:ドア、裏面:床、の場合は、ドアに入ったら、表面:床、裏面:ドア、になります。

 ドアは、自キャラクタだけでなく、敵キャラクタが使う場合もあります。そのため、勝手にドアが移動して別物になることがあります。


 重要その2:はしごは移動できます。はしごの下でスペースキーを押しっぱなしにして移動すると、はしごを移動させる事ができます。


 重要その1と重要その2を組み合わせると、一見移動できないような所に移動できます。
 1面でいきなりこのテクニックを使う必要があります。
 

HEARTMONS1面

 ↑1面の裏面です。
 上から3段目、左から1つ目の『怨霊のしみ』を取るのが難しいです。
 上から4段目、左の方のドアの裏にはしごを置いて、このドアをくぐる必要があります。


でばぐ:HEARTMONS(1)

  随分前に入力していて、動作がおかしいと思っていたソフトの解析をしました。


  月刊マイコン1987年2月号の「HEART MONS」です。

  まず、入力方法ですが、雑誌に掲載されている方法では、マシン語ローダがおかしいので実行できません。

  以下にちゃんと起動できる入力方法を記します。



○入力方法

1)0x8000 〜 0xF5FF までテキストファイルにして入力する。
  チェックサムなどで入力間違いなども確認する。

  雑誌の文字が小さいのと、8、B、などが判別しづらいので注意して下さい。
  チェックサムは、縦横の単純な和なので、たまーに偶然合う事があります。スキャナ取り込みなどは要注意です。


2)0x8000〜0x804Fを以下のように修正する(マシン語ローダです)。

8000:D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 48 45 41 52 54 4D
8010:21 88 01 00 A2 30 2C 32 30 2C 30 2C 30 3A 9F 20
8020:33 2C 32 2C 32 3A A0 3A A5 26 48 38 38 33 45 00
8030:28 88 02 00 8E 20 00 00 00 60 60 60 60 60 60 60
8040:60 60 60 60 60 60 60 60 60 60 60 60 60 CD 61 1A


3)以下の箇所を修正する(マシン語ローダ:2箇所)。

8080:21 90 8A
↓ ↓
8080:21 B1 88


4)以下の箇所を修正する(グラフィックの修正:1箇所)。

9DE0:00 00 55 AA 00 00 01 02 55 AA 50 80

9DE0:00 00 55 AA 00 00 01 02 55 AA 50 AA


5)bin2ihexw.exe などでintel-HEXファイルに変換する(先頭アドレスは8000を指定)

6)5)で作成したファイルをバイナリエディタ等で開き、ファイルの最後に0x1Aを追加する。

7)エミュレータを起動する。mk2以降の機種で、mode=5、page=1 で立ち上げる。

8)MON R-0 で6)で生成したファイルを読み込む。

9)セーブファイルを設定した後に、GF400 を実行する。


 で出来上がりです。セーブされたファイルが起動ファイルになります。


○ゲームの起動

 mode=5、page=3にして起動し、CLOAD、RUN、で後ろのマシン語を読み込んだ後に立ち上がります。

 実機で使う時は、0x00 が10個連続する後で分割して 〜.wav に変換して下さい。



  実は、この辺りまでは5年前(!)に出来ていました。

  ゲームをしてみると、1面クリアが絶対に出来ない面だぁ〜、と思っていたんですが...


  ...勘違いが判明しました。


でばぐ:アステロイドチューブ

  随分前に入力したソフトで動かなかったものを動かしてみました。


  PiO Special 1号 に掲載されていた「アステロイドチューブ」です。

  後の号にバグ情報が掲載されているかも知れないのですが、入手できないので
 自分でデバッグしてみました。

 (PiO Special 自体も入手できなかったので、名古屋の鶴舞図書館で借りています)


  ゲームは出来るのですが、デモの部分でハングします。

  プログラムが明らかにおかしい(というか化けている?)ので、別に使えそうなルーチンを
 使って、デモっぽいものを作りました。


  以下、修正箇所です。

追加:
80 POKE &HBFDB,0:POKE &HBFDC,0:POKE &HBFDD,0

追加:
90 POKE &HBFFD,&HC9

変更:
150 EXEC &HBCD0 :EXEC &HBD98

150 EXEC &HBFD0

削除:
160 EXEC &HBE80

削除:
170 LOCATE 7,10:PRINT "BY


  入力した人があまりいないと思いますが...

2013年04月24日

南青山アドベンチャーカラー化

  南青山アドベンチャーのカラー化をしました。


  ちょっと前に調べ物をしていて、南青山アドベンチャーにバグがあることを知りました。
  で、家にあった AhSKI! を調べたら、カラーの写真が。


  他の機種(PC-8001等)は、カラーだったようです。


  せっかくなので、P6でもカラーにしてみました。
  ただし、対応機種はmk2以降です。

南青山1

南青山2


○変更点
・mk2以降で動作可能。
・画面表示を40×20に変更。
・ファンクションキーを表示するようにした(変更可能)。
・PC-8001版と同じ文字色に変更。
・ついでに ASCII / AhSKI! 紙上で公開されていたバグをFIX。
・セーブファイルなどは変更ありませんので、以前のものが使用できます。


 ちなみに、公開されていたバグ情報は以下の通りです。

 AhSKI!#4 ページ03より引用

 $0Dページ #9220 F6 → D6
 $0Eページ #A39F 0B → 09
 $13ページ #E606 42 → 43


○変更方法
1)AhSKI!#3(1983年)の記事「南青山アドベンチャー」ページ09〜13
  のPC-6001用のプログラムを入力する。
  0x9000〜0xE817 になります。

  既に入力済みの場合は、PC-6001VWでゲーム起動直後(タイトル表示中)に
 モニターモード(ALT+F6)で、setbin コマンドで該当部分をファイルに落としても
 構いません。

2)1)で作成した、0x9000〜0xE817 をPiO形式(I/O形式)で、〜.p6 にする。
3)2)で作成した〜.p6 の前に south_b.p6 をつなげる。


○実行方法
 モード5、ページ1で起動し、CLOAD、RUN でマシン語をロードの後、起動します。


south.zip


 変換前の south_b.p6( south_b.txt )も同梱していますので、ファンクションキーの
 設定の変更など、適当に使いやすいようにして下さい。


2013年03月18日

表参道アドベンチャー移植

  表参道アドベンチャーをP6でも動くようにしました。

  既に誰かがやっているような気はするんですが...

omote.zip



  P6では、南青山アドベンチャーが有名かも知れませんが、表参道アドベンチャーはその1年前に作られているものです。

  元々、多機種で動かす事を前提にしているため、機種依存の部分だけを変更しています。


  ただ、PC-8001の資料があまりないため、手探りで修正しています。



  実は、初代PC-6001でも動作します。

  ただし、横が40文字が前提で作られている可能性があるため、表示が崩れたりしそうなので、mk2以降で動作させるのがいいかと思います。


2012年07月10日

フラッピー(3)

 PC-6001mk2 でフラッピーをプレイすると、ブルーストーンとブラウンストーンの区別が付きにくいようです。

 特にエミュレータでは、見づらいような気がします。


 なので、ブルーストーンのパターンを変えてみました。

 2本目のファイルで、プログラムファイルの先頭から0x4749〜

0a a8 15 04 2a a2 45 41
8a a8 55 51 aa a8 55 51
aa aa 11 55 88 aa 14 15
8a 2a 41 54 20 88 15 50

   ↓

0f f8 1f ac 3f f6 6f eb
df fd ff fb ff fd ff fb
ff ff bb ff dd ff be bf
df 7e 6b fc 35 d8 1f f0


 千鳥格子のパターンをベタ塗りに変更しています。

フラッピー(2)

 ファイルの形式が解析できたので、変換ツールを作りました。
 ただし、Cソースのみです。

flappy_conv.zip


・flappy60read.c   :PC-6001mk2用テープデータから、面データ(テキストデータ)を抽出する。
・flappy88read.c   :PC-8801用テープデータから、面データ(テキストデータ)を抽出する。
・kingflappy88read.c :PC-8801用キングフラッピーテープデータから、面データ(テキストデータ)を抽出する。

 該当のテープデータから面データを抽出します。
 バージョンによっては、ダメな可能性があります。


・flappy60write.c   :面データ(テキストデータ)から、PC-6001mk2用テープデータを生成する。
 最後のファイルを1本分を作成します。
 200面分作成する際にサイズが大きすぎる場合は、途中で切れるので注意。


 プログラムが特殊なのと、必要とする人が少なそうなので、いろいろと手抜きです。
 (説明も手抜きですね...)

 使用方法が不明な場合は、その旨をコメントして下さい。


 面データがテキストデータのため、自作面を作る事も可能です。

フラッピー(1)

 唐突ですがフラッピーの話です。

 P6用は当然200面ありますが、実は他の機種と違う面が結構あります。

 で、ずいぶん前に買った、PC-8801用のフラッピーと、PC-8801用のキングフラッピーから、面データをP6用に変換できないかなー、と思って解析しました。


 まず、PC-6001mk2用(テープ)です。
 面データですが、最後のファイルになります。
 ファイルの先頭の方はヘッダがあり、その後に以下のように続いています。


 壁1列目(3バイト)
 壁2列目(3バイト)
  :
 壁10列目(3バイト)
 ブラウンストーン数(1バイト)
 ブラウンストーン座標(2バイト×個数)
 ユニコーン数(1バイト)
 ユニコーン座標(2バイト×個数)
 エビーラ数(1バイト)
 エビーラ座標(2バイト×個数)
 キノコ数(1バイト)
 キノコ座標(2バイト×個数)
 ブルーストーン座標(2バイト)
 ブルーエリア座標(2バイト)


 これで1面分で目印とかはなく、この形式で200面分あります。


 次にPC-8801用(テープ)です。
 面データは2本目の途中から最後までです。

 壁1列目(3バイト。最終バイトの下位5ビットは、この列にあるキャラクタの数を示す)
 キャラクタ種類+X座標(1バイト×キャラクタの数)
 壁2列目(3バイト。最終バイトの下位5ビットは、この列にあるキャラクタの数を示す)
 キャラクタ種類+X座標(1バイト×キャラクタの数)
  :
 壁10列目(3バイト。最終バイトの下位5ビットは、この列にあるキャラクタの数を示す)
 キャラクタ種類+X座標(1バイト×キャラクタの数)
 ブルーストーン座標(2バイト)
 ブルーエリア座標(2バイト)


 キャラクタの種類は、

 0x00:ブラウンストーン
 0x40:ユニコーン
 0x80:エビーラ
 0xC0:キノコ

 になります。

 また、PC-8801 用は、データ128バイトに対して3バイトのチェックサムが挿入されています。
 つまり、128バイトデータ、3バイトチェックサム、128バイトデータ、・・・ となります。


 最後にキングフラッピー(PC-8801用テープ)です。
 面データは最後のファイルです。

 データ形式は、PC-6001mk2 と全く同じです。
 ただし、テープデータ全体で元データから変換されています。

 テープデータ → 反転 → 左1ビットローテート

 で元データが取り出せます。

 また、データ1024バイトに対して1バイトのチェックサムが挿入されています。








2012年02月08日

DOORDOORの改造

 DOORDOOR ですが、PC-6001用、mk2用とも、CMT の加速モードが使用できません。

 DOORDOOR では、メインプログラムを読むためのローダが、音楽も一緒に鳴らしています。
 この音楽を鳴らすサブルーチンが格納されている場所が、実はメインプログラムと重なっています。

 通常のロード時には、音楽が終了した後でその場所にメインプログラムが上書きされるため、問題はありません。

 しかし、CMT の加速モードでは、音楽が終了する前にメインプログラムで上書きされ、結果としてローダが暴走する事になります。


 DOORDOOR のロード時間が長いためにあまり遊ばないのももったいないので、ローダを改造して加速モードでも動作できるようにする方法を以下に示します。


DOORDOORの改造



 単純に音楽ルーチンに飛ばないようにしているので、ロード中は音楽が鳴りません。


×

この広告は90日以上新しい記事の投稿がないブログに表示されております。