2021年03月23日

HolyKNIGHT(6)

  HolyKNIGHT(6)

  徐々にクリアするための情報を書こうかと思っていたんですが、既にまとまっているものがあるらしく(^^;)...


  後半にネタバレがあるので、自力でクリアしたい人は注意です。

https://web.archive.org/web/20120404153252/http://marus.ekakisan.net/omake/holy_knight.html



 以下は、↑のページの補間などです。


1)↑のページにも書かれていますが重要なのは、
 ・攻撃、移動をしない時は、PHYSICAL(体力)が回復する。
 ・半キャラずらしを有効に使う。自分は左利きだが敵は右利きなので、半キャラずらしを使うと、無傷で倒せる事もある。

  です。


2)コンティニューができます。

  P6SR :STOPを押しながらSPACEを押す
  MZ-1500:F1+F2を押しながらSPACEを押す(未確認)

  成功すると、「CONTINUE MODE」と表示されます。



=======  以下、ネタバレを含みます  =======












3)アイテムについて

 ○得点アイテム(ランダムで発生)
  ベル、金の壺、腕輪、鏡、琴、ハート、十字架、宝珠、紅い兜、銀の指輪

  これらは点数のみで、効果は何もありません。
  出現確率は、左から段々減ります。
  ベルの1/2の確率で金の壺。さらに1/2で腕輪。以下同様。


 ○効果のあるアイテム(ランダムで発生)
  薬、フェアリー、カギ

  効果は、体力全回復、1人増える、扉が開く、です。
  カギは最初からいる敵のどれかが必ず持っていますが、岩などを壊しても出る事があります。




4)特殊アイテム
  すべて特定の面で必ず見つかります。

 ・古文書
  ランダムでメッセージが表示されます。メッセージは5種類です。
  ↑のページで抜けているのは、ラスボスの名前が書かれているものです。
  ランダムで5種類の内の1種類が表示されるので、全部見るのは大変です。

 ・盾
  古文書に書かれている「負の盾」です。体力の回復速度が遅くなります。

 ・青い剣
  古文書に書かれている「青い剣」です。攻撃する回数が1/3ぐらいになります。

 ・白い剣
  古文書に書かれている「聖なる剣」です。攻撃力が上がります。

 ・紅い鎧
  古文書に書かれている「聖なる鎧」です。体力の回復速度が速くなります。

 ・薬(赤)
  これを取らないと、聖なる指輪が取れません。

 ・指輪(赤)
  古文書に書かれている「聖なる指輪」です。これがないと、ラスボスが出てきません。

 ・指輪(青)
  薬(赤)で取っていないと、聖なる指輪がこの状態になります。


 「聖なる剣」「聖なる鎧」があれば、かなりラクにゲームを進める事ができます。



5)ラスボスについて

  出現方法は特殊アイテムと同じで、特定の面に行って岩などを壊すと、必ず出てきます。
  ただし、「聖なる指輪」を持っている事が条件です。

  他のアイテムの有無は関係ないので、薬(赤)と聖なる指輪だけでも、出現させて倒す事ができます。


2021年03月18日

HolyKNIGHT(5)

  HolyKNIGHT(5)

  ドキュメントにも書いたんですが、徐々にクリアするための情報を書いていこうかと思います。


  今回はリリースだけにして、とりあえずP6SRでの実行画面でも貼っておきます。


  アイテムがいっぱい

210318_02_HolyKNIGHT(1)実行画面.png


  ハイスコア登録画面

210318_02_HolyKNIGHT(2)実行画面.png


  動画を撮って頂けると、迎霧狼慢さんが喜ぶかと思います(^^;)

HolyKNIGHT(4)(ver1.0リリース)

  HolyKNIGHT(Ver1.0リリース)

  HolyKNIGHT for P6 をリリースします。


holy_p6.zip


  エミュレータでは、

 PC-6001VW(2021/01/01版)
 PC-6001V(Ver1.25)
 PC-6001VX(ver3.7.0)

  で確認しています。


  詳しくは同梱のドキュメントを参照して下さい。

2021年03月09日

210309_01_HolyKNIGHT(3)

  HolyKNIGHT(3)


  迎霧狼慢さんから移植頑張ってクレメンスを頂いたので、頑張って移植中です。

  迎霧狼慢さん、ありがとうございます。
  Hashiさんも毎度お手数お掛けしてすみません&ありがとうございます。

  例によって作りかけの画面を...


210309_01_HolyKNIGHT作りかけ2.png
210309_01_HolyKNIGHT作りかけ3.png
210309_01_HolyKNIGHT作りかけ4.png


  画面切り替え時は、ちゃんと青グルグルしてから切り替わります。

  疑似PCGで、なおかつテキストとグラフィックの重ね合わせもソフト側なのでちょっと遅いのが難点です。

2021年03月07日

ReFIGHT(3)


  ReFIGHTの動画、HashiさんのTwitterの方にアップして頂いてます。
  ありがとうございました。

  キーボードだけでうまくプレイするなぁ、と感心したりして。


  エミュレータよりも実機の方が速いような気がするというのは、私もそう感じていました。
  多分ですが、エミュレータの方でWait制御のエミュレートが出来ていないんじゃないかと思います。

  M1サイクルをOFFにすると、理論上10%〜20%ぐらい、速度がアップします。

  ただし、実機だと、回路が対応していないため、暴走したり(mk2/66)、変わらなかったりします(mk2SR/66SR)。


  上の問題は、本体内部RAMに対する問題で、拡張RAMに対してはちゃんとM1サイクルがOFFに出来るようです(ちゃんと調べようと思っているけど、未着手...)。


  ReFIGHTの場合、プログラムを全部拡張RAM側に持たせているため、速く出来ているんじゃないかと思います。


  ...実は気のせいで、エミュレータと同じ速さかもしれませんが(^^;)

HolyKNIGHT移植(2)

  HolyKNIGHT移植(2)


  解析が大体終わったので、作り始めました。


  前から順番にパッチ当てをしています。


210307_01_HolyKNIGHT作りかけ.png

  デモ画面が出るはず...何かちょっとおかしいが、まあデバッグ中という事で。


  また例によってお願いが...

  迎霧狼慢さんの移植の許可が欲しいです〜
  Twitterなどで知らせて頂けると有り難いです。

2021年03月06日

ReFIGHT(2)

  着手からだいぶ時間が経ってしまった ReFIGHT です。

  ReFIGHT でいろいろしている技術的な事を書いておきます。


○640x200x4色で動作
 MELT DOWNからそうですが、元の88版は 640x200x8色の内の2プレーンしか使っていません(移動するキャラクタのみ)。
 そのため、P6SRでも同じように640x200x4色にして動作させています。


○直接アクセスモードを使用
 P6SRでビットアクセスモードは便利なんですが、一度のアクセスが4ビット単位になるため、2倍の時間がかかります。
 VRAMアドレスの算出がやっかいなのですが、VRAMに直接アクセスする事で高速に描画するようにしています。


○アドレス変換テーブル
 88のReFIGHTのプログラムでは、キャラクタ描画の際は座標で指定するのではなく、VRAMアドレスで指定されています。
 これを座標指定にするのは、元プログラムの修正量が多すぎます。

 そのため、88のVRAMアドレス→座標に変換するのですが、80で割る、などの計算が入って時間を取られます。さらに、その座標をP6SRのVRAMアドレスに変換するのであまり嬉しくない状況です。

 今回、88のVRAMアドレス→P6SRのVRAMアドレスの変換のテーブルを作りました。
 まともに作るとメモリが足りないので2段階でテーブル引きをしています。


○データ圧縮
 今回、データ圧縮に lsza を使っています。
https://github.com/emmanuel-marty/lzsa/releases/

 Z80用の展開プログラムも別の方が公開されています。
https://github.com/uniabis/z80depacker/

 この中の unlzsa2_fast.asm をそのまま使っていますが、使っているアセンブラでエラーが出ないように修正しています。
 他の88ゲーム(Immediate)で使っていたのが大きな理由の一つです。
 (Immediateを移植しようとして断念したのはナイショ)


○タイトルとゲームフレームの変換
 ゲーム時のフレームやタイトル画面は、別のツールで書かれているようです。
 拡張子が.drw で何のツールか不明なのですが、展開ルーチンがメインプログラムに埋め込まれています。

 MELT DOWNのときは、そのプログラムにパッチを当てて、P6上で動作させていました。
 ReFIGHTでも同じようにしていたのですが、それだとディスクロードと展開がかなり遅くて、うーん、という感じでした。

 結局、展開プログラムを読み込んでZ80のエミュレートをするWindows上プログラムを作りました。
 その後、P6用に減色などの変換をした後に、lsza で圧縮しています。


○タイトル画面の背景
 88版では「ReFIGHT」のタイトル画面の表示の際、「ReFIGHT」の背景の緑色が右にスクロールしています。これは3プレーンの内、Gプレーンのみを右に1ドット単位でシフトしています。

 似たような様の事をP6SRの「ReFIGHT」のタイトル画面表示でやらせていますが、プレーン毎の操作はできず、扱うデータ量も大量なので、以下のようにして誤魔化しています。
 
 ・「ReFIGHT」の文字に赤色を使用しない(黒色、白色、水色のみ)
 ・8ドット単位で、赤色が使われていない部分のみをシフト対象にする
 ・右シフトは、8ドット単位で完結させる(画面全体が右シフトしないが、それっぽく動くのでヨシとする)。



  88版の作者のRONJIさんが、P6SR上で動く所が見たいとのことです。

  どなたか、可能なら動画をアップ頂けると助かります。

  とりあえず静止画を貼っておきます。

210306_02_ReFIGHT実行画面1.png
210306_02_ReFIGHT実行画面2.png
210306_02_ReFIGHT実行画面3.png
210306_02_ReFIGHT実行画面4.png
210306_02_ReFIGHT実行画面5.png

ReFIGHT(1)(ver1.0リリース)

  ReFIGHT移植(1)(Ver1.0リリース)

  ReFIGHT for P6 をリリースします。


refight_p6.zip


  エミュレータでは、

 PC-6001VW(2021/01/01版)
 PC-6001V(Ver1.25)
 PC-6001VX(ver3.7.0)

  で確認しています。


  詳しくは同梱のドキュメントを参照して下さい。

2021年03月05日

HolyKNIGHT移植(1)

  HolyKNIGHT移植(1)

  紅茶羊羹さんがTwitterで、HolyKNIGHTのFORMデコンパイラ結果をアップしてくれていた〜。

  ありがとうございます。これで解析がはかどります。


  バイナリを解析している時に、同じようなツールを作ろうと思っていて、そのまま頓挫していたんですよね。


  とりあえず一通りの解析が出来ました。


  メモリ周り、特にVRAM周りの使い方がややこしくて、バイナリのディスアセンブラだと全く分からなかったと思います。

 ・仮想VRAM(0xC000〜)を設けている
 ・テキストVRAM(0xD000〜0xD3FF)にキャラクタとして表示させた後に、PCG表示VRAM(0xD400〜0xD7FF)に転送している。
 ・PCG表示VRAMの内容も参照している(横スクロール?)。


  上位言語レベルで変換できればいいと思うんですが、バグが発生しそうなので従来と同じようにパッチ当てになるかと思います。


  ちなみに元ファイルは↓にあります。

http://mzakd.cool.coocan.jp/mz-memories/mz700win.html



  先にReFIGHTをリリースせねば。

2021年03月04日

FANTIC移植(5)(ver1.0リリース)

  FANTIC移植(5)(Ver1.0リリース)

  FANTIC for P6 をリリースします。


SR専用:fantic_p6.zip

1DD(or2D)ドライブ×1、16K以上の拡張RAMが必要です。


mk2以降用:fantic_mk2.zip

ドライブ×1が必要です。


  詳しくは同梱のドキュメントを参照して下さい。