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が必要です。


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

2021年02月27日

FANTIC移植(4)

  FANTIC移植(4)

  気づくのが遅れたけど、迎霧狼慢さんが移植OKのTwitterをしていました。
  ありがとうございます。

  紅茶羊羹さんから許可が取れたら、そのうちに公開したいと思います。
 (連絡取ってないけど...)



  そういえば、Holy Knight も移植したかったんだ。

  バイナリからの解析が難しくて途中で頓挫中。

  高級言語で書かれているようで、さらにPC-88と違ってVRAMへのアクセスがI/Oポートをあまり叩かないため、機種依存の部分の切り分けが難しいのが原因です。


FANTIC移植(3)

  FANTIC移植(3)

  とりあえずmk2でどうなるか、作ってみました。
  ゲージ部分だけは未実装ですが、後は全て完了しています。

  160x200x15色のキャラクタは、とりあえずプログラムで機械的に変換しています。

210227_01_FANTICmk2_15色1.png
210227_01_FANTICmk2_15色2.png


  キャラクタは作り直さないとイマイチです。


  320x200x4色は、適当に色の割り当てをしています。

210227_01_FANTICmk2_4色1.png
210227_01_FANTICmk2_4色2.png


  こっちの方がいい感じですね。

2021年02月26日

FANTIC移植(2)

  FANTIC移植(2)

  SR版で、ディスク起動、拡張RAM16K以上、のは移植完了しました。

210226_01_FANTIC実行画面3.png


  ...うーん、これからどうしよう。

  実機で動作させる環境がある人はあんまりいないかも。

2021年02月25日

FANTIC移植(1)

  迎霧狼慢さん作で、紅茶羊羹さんがMZ-1500に移植している、FANTIC をP6に移植中です。

↓紅茶羊羹さんのFANTICのページ
http://www.maroon.dti.ne.jp/youkan/mz700/fantic/index.html


  Cソースとアセンブラソースが付いていて、機種依存部分が切り分けられているため、移植作業がかなり簡単でした。
  とりあえず、80%程度終了して、何となく動いています。

210225_01_FANTIC実行画面2.png
210225_01_FANTIC実行画面1.png


  数日で完了しそうですが、問題点が...

○その1:メモリが足らない。

 プログラムサイズが、大体以下の通りです。
・キャラデータ:0x1800
・面データ  :0x4100
・Cメイン  :0x3400
・機種依存部分:0x0700

 合計すると、0x9400 です。
 SR系だと、VRAMが0x8000も使うため、フリーエリアが0x8000しかありません。

 対策は以下の方法しかなさそうです。


構成1:
 本体    :SR系
 読み込み  :テープ(orディスク)
 外部拡張RAM :16K以上

 テープ(orディスク)から、全データをメモリ上にロードします。


構成2:
 本体    :SR系
 読み込み  :ディスク
 外部拡張RAM :なし

 メモリがない分、面データを逐次ディスクからロードします。


構成3:
 本体    :mk2系
 読み込み  :テープ(orディスク)
 外部拡張RAM :なし

 VRAMが0x4000しかないため、全データをオンメモリにできます。

 ただし、キャラクタデータを

  8x8ドットの8色
  ↓
  4x8ドットの8色(15色) か、8x8ドットの4色

 にする必要があります。


 出来れば、mk2版も作りたいんですが、4x8ドットは、キャラクタを全部作り直しになるので、その部分の時間がほとんどかもしれません。



○その2:Twitterをやっていないので...

 迎霧狼慢さん、紅茶羊羹さんに連絡が取れません(^^;)

 Twitter始めればいいだけなんですけどね。

2020年10月28日

NANOCART/ROMEMU用ROMファイル選択プログラム(ver1.1)

  NANOCART用のROMファイル選択プログラム(ver1.1)をリリースします。

INITROM.zip


  ver1.0→ver1.1変更点

  NANOCARTのバンク記憶の仕様変更に伴う変更。



 このプログラムは、NANOCARTで複数のROMファイルをSDカードに格納した時に選択できるものです。

  NANOCARTで使用するためには、まず SDカードに \ROM を作成して下さい。
 \ROM の下に、INIT.ROM を格納して下さい。

  この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を
 押しているとROMファイルの選択画面になります。

  SHIFT を押していないと、通常に起動します(FDDなどが起動する)。

posted by えすび at 01:21| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

NANOCARTリリース(ver1.21)


  NANOCART (ver1.21)をリリースします。

NANOCART.zip


 ver1.20 → ver1.21 変更点

 バンク情報の記憶方法を

 ポート0x06に書き込みをした時→ポート0x06から読み出しをした時

 に変更




 NANOCART とは?

 NANOCARTとは、動画再生カートリッジを使ってFDDエミュレータとROMエミュレータを実現したものです。

 動画再生カートリッジとは、以前に作成したもので、DE0-nanoとP6シリーズのバスを繋いだだけの簡単なものです。そのため、DE0-nanoが実現できることなら大抵の事ができるので、今回は動画再生ではなく、FDDとROMのエミュレータを作成しました。


 NANOCARTが出来る事は以下の通りです。

 1)SDカードからフロッピーのデータを、P6から読み書きできる。

 2)SDカードからROMデータを読み出し、DE0-nano内のSDRAMに格納する。
   そのDE0-nano内のSDRAM を読み出し、P6の拡張ROMとして動作させることができる。

 3)P6から、DE0-nano内のSDRAM に読み書きができ、P6の拡張RAMとして動作させることができる。


 詳細は同梱の説明書を参照してください。

posted by えすび at 01:21| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2020年10月27日

NANOCARTでなんでもメガROMを使った時の問題

  NANOCARTでなんでもメガROMを使った時の問題が見つかりました。


  問題は、複数のファイルがある場合、2つ目以降のプログラムを
 動かした後にリセットすると、「How Many Pages?」が出ると
 いうものです。

  理由は NANOCART側の問題なので、次バージョンで対処します。
  併せて INIT.ROM も変更します。




posted by えすび at 23:32| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2020年10月25日

mk2/mk2SRでSD6031WIF/NANOCARTを使う改造

  66、66SR では、内蔵ドライブ以外に外付けドライブが使用できます。
  その構造を利用して作っているのが、SD6031WIF/NANOCARTです。

  しかし、mk2/mk2SR では、外付けドライブ用にコネクタと8255が用意されているため、そのままSD6031WIF/NANOCART は使用できません。

  mk2/mk2SR に少しの改造をするだけで、SD6031WIF/NANOCART を使う事ができるようになります。


  以下が改造する箇所です。

201025_01_mk2_FDD改造.png
  mk2改造箇所


201025_01_mk2SR_FDD改造.png
  mk2SR改造箇所


  FDDコネクタに繋がっている、8255のCS端子をベタ"L"→"H"にするだけの改造になります。
  "H"にするために、10Kでプルアップしています。

  元のFDDコネクタを使用したい場合は、スイッチをONにすると、"L"になり、元の回路に戻ります。



  実際の改造箇所ですが、基板のパターンカットをするか、8255のCSのピンを切るかをします。

  8255のCSのピンを切るのが確実なのですが、工作するのが難しい部分にあるので難易度が高いかもしれません。

  ピンを切る場合は、基板に近い箇所を切断し、上の方の部分を残すようにします。
  ニッパが入ればベストですが、私の場合はマイナスドライバを差し込んでねじ切りました。

201025_01_mk2_02.jpg
  mk2改造箇所1

201025_01_mk2_01.jpg
  mk2改造箇所2

201025_01_mk2SR_02.jpg
  mk2SR改造箇所1

201025_01_mk2SR_01.jpg
  mk2SR改造箇所2



  スイッチをどこに置くかが結構問題です。
  スイッチ自体を付けない(FDDコネクタを使わない)のもテです。

  私は本体背面に穴を開けて、スイッチを付けています。

posted by えすび at 18:05| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2020年10月24日

NANOCART/戦士mk2の似非mk2モード

  NANOCARTでも、戦士mk2と同じように似非mk2モードにできます。

 1)ROM を「マウントなし」にする。
   もしくはSDを抜いた状態でNANOCARTを長押しリセットする。

  →これで、外部RAMが64K割り当てられる。

 2)P6を再起動する。

 3)必要なPAGE数を入力する。

 4)BASICが起動したら、以下を入力する。

  out &H06,&H66
  out &Hf0,&H71
  out &Hf2,&H55

 5)目的のプログラムをロード、実行する。


  例えば、Tiny-XEVIOUS ならページ2を設定して、
 OUT命令を入力後、CLOAD、RUN で動作します。

  スペースハリアも同様に動作します。

  Thunder-Force は、ロード画面がmk2の画面モードを
 使用しているため、修正が必要になります。
 (修正方法は現在調査中です)


  戦士mk2のカートリッジの場合は、以下の手順になります。

 1)ESCを押してP6を起動します(66SRの場合は、一呼吸おいてから押して下さい)。
 2)必要なPAGE数を入力する。
 3)目的のプログラムをロード、実行する。

posted by えすび at 23:19| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

NANOCART用ROMファイル選択プログラム(ver1.0)

  NANOCART用のROMファイル選択プログラム(ver1.0)をリリースします。

INITROM.zip


 このプログラムは、NANOCARTで複数のROMファイルをSDカードに格納した時に選択できるものです。

  NANOCARTで使用するためには、まず SDカードに \ROM を作成して下さい。
 \ROM の下に、INIT.ROM を格納して下さい。

  この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を押しているとROMファイルの選択画面になります。

  SHIFT を押していないと、通常に起動します(FDDなどが起動する)。

posted by えすび at 21:56| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする
×

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