4.10. ゴールド銀行

4.10.1. データ構造
4.10.2. 処理手順

本節ではゴールド銀行に関係のあるデータ構造および処理手順について述べる。

4.10.1. データ構造

いずれのゴールド銀行においても営業内容が同一であるため、ROM には専用データがない。

4.10.2. 処理手順

はなすオブジェクトがゴールド銀行であるならば、その振る舞いは基本的に次のようになる:

CA/B6FF:    228366CD    JSR $CD6683         ; ゴールド銀行
CA/B703:    6B          RTL

サブルーチン $CD6683 は結局 $C1F7D1 を呼び出すことしかしないので、 本書では後者のほうをゴールド銀行共通処理と位置付ける。 このコードは対話的な処理を含むので、比較的長いものとなっている。 要点を以下に列挙する:

  • 初回訪問時には専用の台詞を表示する。 $7E3D2C#$0002 をフラグとして用いる。 この台詞を表示した直後にフラグを立てる。

  • サービス内容は「あずける」または「ひきだす」のどちらか。

  • 預金額はアドレス $7E3EA5 に 1,000 ゴールド単位で表現されている。

  • 預金単位で 10,001 以上になるようなゴールドを預けようとすると、銀行員から断られる。

  • 所持金以上のゴールドを預けようとすると、銀行員から断られる。

  • 預金ゼロの状態で任意の金額を引き出そうとすると、銀行員から冗談を言うなと起こられる。

  • 預金額を超えるゴールドを引き出そうとすると、銀行員から断られる。

  • 引き出すと所持金が 1,000,000 ゴールド以上になるようだと、銀行員から断られる。

  • 利用状況の如何を問わず、最後に預金残高を台詞の形で知らせる。