Repository navigation
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 と同じ結果にしています。
次の場合、原作の表示は 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 以前の版のセーブは読み込めません。
-
呪文 Fantasize の幻: 呪文がかかっている間に、持っていない開いた入れ物の中を見ると、原作は
There is aと表示したあとFatal error: Store out of dynamic memoryで止まります。原作のデータの表の形が、それを読む処理と合っていないためです。移植版も同じ場所で同じメッセージを出して終わります。試すときは先に保存してください。 - 本家 Emuera での途中で切れたセーブ: 本家 Emuera で、途中で切れたセーブファイルを読み込むと、エンジンのエラーで止まります(ゲームの側では防げません)。ほかのスロットとゲームのファイルは変わりません。セーブファイルは編集しないでください。
原作との状態の比較は、メモリ全体の一致を確かめたものではありません。何を比べたかは検証にあります。
ZORKERB r30 (ZORKERB I r30 and ZORKERB II) · 日本語 Home · English Home
ZORKERB: MIT License, Copyright (c) 2026 Meistertech-JP. ZORK I and ZORK II — original games by Infocom; Zork I and Zork II sources: MIT License, Copyright (c) 2025 Microsoft. ZORKERB is not an official release of, or endorsed by, Infocom or Microsoft.