Skip to content

Compatibility and Limitations

ZORKERB Publication edited this page Nov 13, 2026 · 2 revisions

日本語 | English

互換性と既知の制限

ZORKERB I・ZORKERB II の、実行環境ごとの確認状況と、原作と同じにならない場合をまとめます。

実行環境

環境 ZORKERB I ZORKERB II
PyEmuera 3.0.0(検証時の版、未改変、SHA-256 8a7b3697…4b35)、Linux x86_64、Python 3.13 検証の全項目をこの環境で実行しました(検証) 検証の全項目をこの環境で実行しました(検証)
PyEmuera 3.0.0、Windows 記録していません 起動、新しいゲーム、数手の操作を確認しました。通しのプレイではありません
PyEmuera 3.0.0、その他の OS ゲーム側は OS に依存する処理を使っていません。端末の入力・表示は PyEmuera と端末の仕様に従います ゲーム側は OS に依存する処理を使っていません。端末の入力・表示は PyEmuera と端末の仕様に従います
本家 Emuera(Windows) Emuera 1.824 で、起動、タイトル画面、新規ゲーム、序盤の5手(what、what is mailbox、take mailbox、open mailbox、read leaflet)の表示を確認し、応答は原作と一致しました。回帰試験と原作との比較は、この環境では実行していません Emuera1824+v24(Windows 10)で、自動再生11件が、行の折り返しと行末の空白を除いて期待どおりでした。テキスト形式とバイナリ形式の保存・復元、乱数と保存、400点の完走、原作の致命的エラーの経路を含みます。手動で確認した通常の操作11項目も期待どおりでした
PyEmuera のほかの版 検証していません 検証していません

収録作品は、ゲームは ERB・ERH・CSV だけで書かれており、実行時に外部のプログラムやファイルを呼び出しません。Z-machine の解釈系や原作の story ファイルも使いません。

原作に合わせている範囲

  • 構文解析: 原作 story の辞書と構文表を使い、原作の gparser.zil の手順(語の走査、CLAUSE、SYNTAX-CHECK、GWIM、ORPHAN、IT・ALL・AGAIN・OOPS)で解析します。
  • ゲームの処理: 部屋、物体、動作、時計の割り込み、戦闘、得点、死亡、終幕を原典の ROUTINE に従って書いています。対応表は作品ごとの資料にあります。
  • 乱数: 原作と同じ箇所・同じ順序で引きます。#random 数 を使うと、原作と同じ予測可能な乱数列になります。
  • 文章: 原作の文章をそのまま表示します。行の折り返し位置だけが異なります。

収録作品に共通の制限

  • プロンプトの表示: PyEmuera を端末で対話的に使うと、ゲームの > のあとに PyEmuera の入力欄の > が表示され、> が2回見えます。入力をファイルから与える場合(--inputs)は、PyEmuera の入力欄は表示されません。
  • 行の折り返し: 原作の解釈系とは改行の位置が異なることがあります。本家 Emuera では、ウィンドウの幅に合わせて折り返します。
  • セーブ: 原作の Quetzal 形式のセーブとは互換性がありません。原作の「ファイル名の入力」は、0〜9のスロット番号に置き換えています。保存と復帰の応答(Ok.、Failed.)は原作と同じです。本家 Emuera のセーブは Emuera 独自の形式で、PyEmuera のセーブとは互換性がありません。
  • 解釈系に依存する箇所: 原作には、Z-machine の解釈系によって結果が変わる箇所があります。移植版は、比較に使った Frotz と同じ結果にしています。

ZORKERB I の制限

次の場合、原作の表示は Z-machine の解釈系やメモリ配置によって決まるため、同じ表示になりません。

  • 120文字を超える入力行: 原作の入力バッファと同じく、先頭120文字だけを読みます。比較に使った解釈系(dfrotz)はバッファの外の語まで読み、その語をバッファの外のバイトで表示しますが、これは再現しません。
  • 物体0を指す IT: 水を飲んだあとや、サイクロプスが去ったあとに examine it とすると、原作は物体0に対する命令を実行します。厳格な解釈系はそこで停止し、寛容な解釈系は警告のあとに I don't see what you are referring to. と表示します。ZORKERB I はこの文を表示し、状態もその場合と一致します。
  • 目的語なしの SWIM: 原作は物体0の名前を表示しようとし、その内容は解釈系によって異なります。ZORKERB I は比較に使った解釈系と同じ文を表示します。
  • セーブ形式: 29です。r28 以前の版のセーブは読み込めません。

ZORKERB II の制限

  • 呪文 Fantasize の幻: 呪文がかかっている間に、持っていない開いた入れ物の中を見ると、原作は There is a と表示したあと Fatal error: Store out of dynamic memory で止まります。原作のデータの表の形が、それを読む処理と合っていないためです。移植版も同じ場所で同じメッセージを出して終わります。試すときは先に保存してください。
  • 本家 Emuera での途中で切れたセーブ: 本家 Emuera で、途中で切れたセーブファイルを読み込むと、エンジンのエラーで止まります(ゲームの側では防げません)。ほかのスロットとゲームのファイルは変わりません。セーブファイルは編集しないでください。

原作との状態の比較の範囲

原作との状態の比較は、メモリ全体の一致を確かめたものではありません。何を比べたかは検証にあります。

Clone this wiki locally