INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32]

目次 | ←前へ / 2024-09-10 00:00 / 次へ→ / 最新へ⇒

■SuperDepthでテキスト外字を使っていたかどうかをどうにか検証できないか…と考えまくった話

2024年 9月10日(火) 0:00:00



RSSRSS配信中
https://www.inasoft.org/



9月6日は「クロウズ」(ドラゴンクエストXの登場キャラクター)の日、9月8日はPC98の日など、語呂にちなんだ記念日が最近連続しました。

で、その9月8日は、NEC PC98シリーズの思い出をXでたくさん見かけることができ、懐かしい気分になりました。

僕がPC98でよく遊んだゲームに、Bio_100%の「SuperDepth」がありました。懐かしい。
SuperDepth

ところで、このゲームを終了すると、画面の表示状態が起動前の状態に復元されたように見えます。

DOS
これはどのように実現されているのか? Xにてご意見を募ったところ、2つの説が浮上しました。

  1. テキストVRAM(コンベンショナルメモリの後ろの方0xA000H~および0xA200~)のメモリ内容を、空きメモリにいったん退避し、カーソル位置も保存する。終了時はこれらをすべて元に戻す。(カーソル位置はエスケープシーケンスを駆使すると位置指定ができる)
  2. 実はこのゲームではテキストVRAMを一切いじっておらず、グラフィックしか使っていない。テキストは非表示にしているだけで、グラフィックを消去し、テキストを再表示しているだけで、特別なことは何もしていない。

これを検証する方法はあるでしょうか?

PC98の時代のゲームの場合、PC98にはスプライトがありませんし、動作速度(CPU周波数)もあまり高いものは期待できません。そのため、テキストを活用して最前面レイヤー(メニュー文字列の表示、テキストの表示、ランキング文字列の表示など)を高速表示していることが考えられます。

PC98には外字機能が存在し、文字として使われていない範囲の文字コードに、任意の形状のドットを割り当てることができます。もし、SuperDepthで、外字機能を使っているならば、ゲーム中でテキストVRAMを使用していることになります。

外字を使っている、テキストVRAMを使用していることをどのように調べるのが良いか?

PC98のテキストは通常、1画面あたり25行で表示されていますが、ディップスイッチの設定を変えることで、これを20行に変更することができます。この20行モードでゲームを動かしたときに、想定外の表示になるかどうかを見ることで、テキストが使われているかを確認するというのはどうでしょう。

(標準出力へのエスケープシーケンス ESC[>3l で行数の強制変更をしていなければいいんですが……)
(後から考えてみたら、Ctrl+F6でも表示行数を切り替えられたような気がしてきました)

早速試してみました。

SuperDepth(強制20行モード)

メニュー文字列製作者のクレジット文字のみならず、「SuperDepthのタイトル文字」まで想定外の表示になりました。最前面レイヤー的な箇所を表示する目的で、外字を活用しているわけですね。テキストVRAMをゲーム中で使用していたということになります。

というわけで、最初の話に戻ると、テキストVRAMとカーソル位置の退避と復帰が行われているということのようですね。

よくよく見てみると、SuperDepthを構成するファイルにDEPTH.FNTという名前のファイルがあります。これはFONT(フォント;外字のビットマップ情報が書き込まれたデータ)を意味していたのかもしれません。

DOS



目次 | ←前へ / 2024-09-10 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。


- 最近の更新 -



3190958 (+0164)[+0383]

Copyright© 2010-2024 INASOFT