$C8D532
: すごろくマス
$C8EECA
: すごろくマス分類
$C8F188
: すごろくランダムイベントハンドラー
$C8F1F4
: すごろくランダムイベント列
$C8F2E4
: すごろく戦闘イベント
$C8F311
: すごろくしらべるイベントハンドラー
$C8F323
: すごろく盤面
$C8F53F
: すごろく店屋画像
$C8F551
: すごろくアイテム確率
本節ではすごろくについて述べる。
すごろくに関係するデータ構造について述べる。
アドレス $C8D532
にはすごろく盤面を構成するマスを表現するオブジェクトが配列されている。
後述するように、ここにあるすごろくマスオブジェクトは構成する盤面ごとにグループ分けされている。
このオブジェクト型の詳細を次の表に示す。
表 5.81 構造体 $C8D532
オフセット | 桁 | 属性 |
---|---|---|
#$0000
|
#$00FFFF
|
MX |
#$0002
|
#$00FFFF
|
MY |
#$0004
|
#$00FFFF
|
分類 |
#$0006
|
#$00FFFF
|
イベント引数 |
#$0008
|
#$000003
|
通行上 |
#$0008
|
#$00000C
|
通行下 |
#$0008
|
#$000030
|
通行右 |
#$0008
|
#$0000C0
|
通行左 |
各属性の意味を以下に記す。
このマスの配置位置を M 座標系で表した X および Y 座標成分の値を属性とする。 プレイキャラクターの立つ位置と一致する。
このマスの分類値を取る属性だ。 5.31.1.2 で述べるオブジェクトの ID に他ならない。
このマスで引き起こされる何らかのイベントが必要とする値を取る属性だ。 解釈は分類属性値によって決まる。
各方向に対する移動制約を示す値を取る属性だ。 値が 0 ならばその属性方向に進める。値が 1 ならばその属性方向に戻る。 値が 2 以上ならば、その属性方向には一切通行できないことを意味する。
すごろくマス分類とは、草原、森、山など、そのマスの種類を表すためのオブジェクト型であり、その詳細が次に示す表のようなものだ。
アドレス $C8EECA
にはこの型のオブジェクトが 80 近く配列されている。
表 5.82 構造体 $C8EECA
オフセット | 桁 | 属性 |
---|---|---|
#$0000
|
#$000001
|
サイコロ残り目を無視 |
#$0000
|
#$000002
|
階層変化時でもイベントを処理 |
#$0000
|
#$001FFC
|
スプライト 0 |
#$0001
|
#$00FFE0
|
スプライト 1 |
#$0003
|
#$FFFFFF
|
初期化処理 |
#$0006
|
#$FFFFFF
|
実行処理 |
各属性の意味を以下に記す。
ブーリアン型属性で、値が 1 のものはこのマスを通過する際、サイコロの残り目に関わらずここで停止することを示す。
例えば階段のマスについて、そこで丁度止まらないと盤面移動イベントが発生しない種類のものがある。
ブーリアン型属性で、値が 1 のものはすごろく盤面をまたがってマスの間を移動する場合に、 このマスが移動先であれば、関連するイベントを引き起こすことを示す。
例えば、旅の扉や階段のマスは値が 0 でなければならない。
このマスに描画するスプライトを指定する値を取る属性だ。 上モノと地の部分とに分けられている。
このマスに関連するイベントを処理する際の準備を行うコードのアドレスを属性値とする。 前項で言うところのイベント引数を動的に決定する。
このマスに関連するイベントを処理するコードのアドレスを属性値とする。
マス分類と内容の対応を次の表に示す。
表 5.83 マス分類
ID | 内容 |
---|---|
#$00
|
n/a |
#$01
|
草原 |
#$02
|
森 |
#$03
|
山 |
#$04
|
立て札上 |
#$05
|
立て札右 |
#$06
|
立て札下 |
#$07
|
立て札左 |
#$08
|
ゴールド +50 |
#$09
|
ゴールド +100 |
#$0A
|
ゴールド +150 |
#$0B
|
ゴールド +200 |
#$0C
|
ゴールド +250 |
#$0D
|
ゴールド +300 |
#$0E
|
ゴールド +500 |
#$0F
|
ゴールド +1000 |
#$10
|
ゴールド +2000 |
#$11
|
ゴールド +5000 |
#$12
|
ゴールド -50 |
#$13
|
ゴールド -100 |
#$14
|
ゴールド -150 |
#$15
|
ゴールド -200 |
#$16
|
ゴールド -250 |
#$17
|
ゴールド -300 |
#$18
|
ゴールド -500 |
#$19
|
ゴールド -1000 |
#$1A
|
ゴールド -2000 |
#$1B
|
ゴールド -3000 |
#$1C
|
戦闘 |
#$1D
|
HP ダメージ |
#$1E
|
旅の扉 |
#$1F
|
マス移動 +1 |
#$20
|
マス移動 +2 |
#$21
|
マス移動 +3 |
#$22
|
マス移動 +4 |
#$23
|
マス移動 +5 |
#$24
|
マス移動 +6 |
#$25
|
マス移動 -1 |
#$26
|
マス移動 -2 |
#$27
|
マス移動 -3 |
#$28
|
マス移動 -4 |
#$29
|
マス移動 -5 |
#$2A
|
マス移動 -6 |
#$2B
|
振り出しに戻る |
#$2C
|
ランダム |
#$2D
|
宿屋 |
#$2E
|
よろず屋 |
#$2F
|
階段上り |
#$30
|
階段下り |
#$31
|
階段上り |
#$32
|
階段下り |
#$33
|
洞くつ |
#$34
|
ふりだし |
#$35
|
あがり |
#$36
|
宝箱アイテム |
#$37
|
宝箱ゴールド |
#$38
|
宝箱罠 |
#$39
|
つぼアイテム |
#$3A
|
つぼゴールド |
#$3B
|
つぼ罠 |
#$3C
|
タンスアイテム |
#$3D
|
タンスゴールド |
#$3E
|
タンス罠 |
#$3F
|
落とし穴場外 |
#$40
|
落とし穴場内 |
#$41
|
回復 |
#$42
|
MP ダメージ |
#$43
|
MP 0 |
#$44
|
サイコロ +1 |
#$45
|
サイコロ +2 |
#$46
|
サイコロ +3 |
#$47
|
サイコロ +5 |
#$48
|
サイコロ -1 |
#$49
|
サイコロ -2 |
#$4A
|
サイコロ -3 |
#$4B
|
数値変化 |
#$4C
|
カギ |
#$4D
|
宝箱 |
すごろくランダムイベントハンドラーとは、すごろくマス「?」で引き起こされるイベントの処理を実行するコードだと定義する。
アドレス $C8F188
にはそのようなコードの完全アドレスが 36 個配列されている。
以下にイベントハンドラーの ID とイベントの概要を記す。 各ハンドラーの具体的なアドレスについては、「SFC 版ドラクエ 3」の CSV に収録した。
表 5.84 すごろくランダムイベント一覧
ID | メッセージ冒頭 | イベント |
---|---|---|
#$00
|
夜空をやきつくす火の山 | ちから +2 |
#$01
|
大地の神々よりつどいて | ちから +4 |
#$02
|
時は風 | すばやさ +2 |
#$03
|
夜空のきらめき | すばやさ +4 |
#$04
|
つかれ知らぬその身体 | たいりょく +2 |
#$05
|
こぶし100万回 | たいりょく +4 |
#$06
|
これを知るをこれ知るとなせ | かしこさ +2 |
#$07
|
おろかなる者は教えたがり | かしこさ -3 |
#$08
|
しあわせの時は来たれり | うんのよさ +2 |
#$09
|
森深き青き泉 | うんのよさ +4 |
#$0A
|
ちからなくうなだれる者 | ちから -2 |
#$0B
|
あまねく星たちのきらめきは見 | すばやさ -2 |
#$0C
|
しゃくねつのさばく | たいりょく -2 |
#$0D
|
無知を恐るるなかれ | かしこさ -2 |
#$0E
|
運わるしといたずらになげく者 | うんのよさ -2 |
#$0F
|
時はいつわり | ふりだしに移動 |
#$10
|
それは嵐か | 何もない |
#$11
|
闇に光る巨大な眼 | 盤面固定戦 0 が発生する |
#$12
|
降りすさむ雨はやがて大河に | 盤面固定戦 1 が発生する |
#$13
|
おぞましきはばたきの音 | 盤面固定戦 2 が発生する |
#$14
|
不注意なる者 | 所持金の半額 + 1 を失う |
#$15
|
それは天の恵みか | 所持金の半額 + 1 を得る |
#$16
|
うごめくものどもにひとときの | ランダム戦闘が発生しなくなる |
#$17
|
過ぎし日の思い出を今いちど | 何もない |
#$18
|
それはならくの底か | 落とし穴 |
#$19
|
試練の時は来たれり | すごろくイベント #$4B と同じ |
#$1A
|
深き土の底でねむる物 | アイテム入手 |
#$1B
|
なにごとも経験なりき | 経験値 +1,000 |
#$1C
|
なにごとも経験なりき | 経験値 +10,000 |
#$1D
|
おだやかなる時の流れ | サイコロ残り +10 |
#$1E
|
人は人我は我 | キャラクターが入れ替わる |
#$1F
|
小鳥たちつどいて春を歌う | 宿屋のマスに移動 |
#$20
|
我なんじの願いかなえる者なり | 次のサイコロ出目を指定できる |
#$21
|
風向きは追い風 | マス移動 +6 |
#$22
|
風向きはむかい風 | マス移動 -5 |
#$23
|
はげしい炎はすべてを無に帰し | 性格が変化する |
アドレス $C8F1F4
はすごろく盤面にある「?」のマスで発生するランダムイベント ID 48 個の配列 5 個の配列となっている。
「?」のマスでは、この ID の配列に含まれているイベントしか発生しない。
アドレス $C8F2E4
には次の型のオブジェクトが 5 個配列されている。
このオブジェクトがすごろく中に発生する戦闘の敵陣構成を指定する。
表 5.85 構造体 $C8F2E4
オフセット | 桁 | 属性 |
---|---|---|
#$0000
|
#$000001
|
キャラレベル無視 |
#$0000
|
#$0000FE
|
(未使用) |
#$0001
|
#$00FFFF
|
乱数レベル下限 |
#$0003
|
#$00FFFF
|
乱数レベル上限 |
#$0005
|
#$00FFFF
|
戦闘レベル下限 |
#$0007
|
#$00FFFF
|
戦闘レベル上限 |
各属性の意味を以下に記す。
ブーリアン型属性で、値が 1 のものは敵陣構成を決定するのにプレイキャラクターのレベルを無視することを示す。 例えば草原のマスでの戦闘は、常に弱いモンスターしか出現しないようになっている。
敵陣構成を決定する際に乱数を発生させるのだが、その下限と上限をそれぞれ値とする属性だ。
キャラレベルを無視する場合には上述の乱数を、考慮する場合はキャラレベルから上述の乱数を引いた差をまず考える。 この差をこれらの属性値でクリップする。
戦闘決定処理では、クリップされた値と通常戦オブジェクトのレベル属性値とを比較して、
最終的に通常戦オブジェクトを決定する。
通常戦オブジェクトについては 5.30.1.2 構造体 $C8ADD1
: 通常戦 で述べる。
すごろくしらべるイベントハンドラーとは、すごろくマスで足もとをしらべることで引き起こされるイベントの処理を実行するコードであると定義する。
アドレス $C8F311
にはそのようなコードの完全アドレスが 5 個配列されている。
表 5.86 配列 $C8F311
ID | アドレス | イベント |
---|---|---|
0 |
$C1C4F0
|
何も見つからない |
1 |
$C1C976
|
モンスターが出現して戦闘となる |
2 |
$C1C9B3
|
落とし穴が出現して現在の盤面から退場する |
3 |
$C1C4F4
|
アイテム発見抽選処理を実行する |
4 |
$C1C914
|
多額のゴールドを発見する |
5 |
$C1C945
|
少額のゴールドを発見する |
すごろく盤面とは、次の表で示すようなすごろくゲームの詳細を表現するオブジェクト型のことだ。
アドレス $C8F323
にこの型のオブジェクトが 10 個配列されている。
表 5.87 構造体 $C8F323
オフセット | 桁 | 属性 |
---|---|---|
#$0000
|
#$00001F
|
しらべるイベント頻度 0 |
#$0000
|
#$0003E0
|
しらべるイベント頻度 1 |
#$0001
|
#$00007C
|
しらべるイベント頻度 2 |
#$0001
|
#$000F80
|
しらべるイベント頻度 3 |
#$0002
|
#$0001F0
|
しらべるイベント頻度 4 |
#$0003
|
#$000FC0
|
しらべるイベント頻度の和 |
#$0004
|
#$0FFFF0
|
ゴールド大下限 |
#$0006
|
#$0FFFF0
|
ゴールド大上限 |
#$0008
|
#$0FFFF0
|
ゴールド小下限 |
#$000A
|
#$0FFFF0
|
ゴールド小上限 |
#$000C
|
#$000FF0
|
アイテム #$00 |
#$000D
|
#$000070
|
アイテム確率 #$00 |
#$000D
|
#$007F80
|
アイテム #$01 |
#$000E
|
#$000380
|
アイテム確率 #$01 |
#$000F
|
#$0003FC
|
アイテム #$02 |
#$0010
|
#$00001C
|
アイテム確率 #$02 |
#$0010
|
#$001FE0
|
アイテム #$03 |
#$0011
|
#$0000E0
|
アイテム確率 #$03 |
#$0012
|
#$0000FF
|
アイテム #$04 |
#$0013
|
#$000007
|
アイテム確率 #$04 |
#$0013
|
#$0007F8
|
アイテム #$05 |
#$0014
|
#$000038
|
アイテム確率 #$05 |
#$0014
|
#$003FC0
|
アイテム #$06 |
#$0015
|
#$0001C0
|
アイテム確率 #$06 |
#$0016
|
#$0001FE
|
アイテム #$07 |
#$0017
|
#$00000E
|
アイテム確率 #$07 |
#$0017
|
#$000FF0
|
アイテム #$08 |
#$0018
|
#$000070
|
アイテム確率 #$08 |
#$0018
|
#$007F80
|
アイテム #$09 |
#$0019
|
#$000380
|
アイテム確率 #$09 |
#$001A
|
#$0003FC
|
アイテム #$0A |
#$001B
|
#$00001C
|
アイテム確率 #$0A |
#$001B
|
#$001FE0
|
アイテム #$0B |
#$001C
|
#$0000E0
|
アイテム確率 #$0B |
#$001D
|
#$0000FF
|
敵陣グループ固定戦 0 |
#$001E
|
#$0000FF
|
敵陣グループ固定戦 1 |
#$001F
|
#$0000FF
|
敵陣グループ固定戦 2 |
#$0020
|
#$00000F
|
すごろくランダムイベント |
#$0021
|
#$00FFFF
|
すごろくマス範囲下限 |
#$0023
|
#$00FFFF
|
すごろくマス範囲上限 |
#$0025
|
#$00FFFF
|
サイコロ残り |
#$0027
|
#$0007FF
|
終了時復帰座標 |
#$0028
|
#$003FF8
|
落とし穴出口座標 |
#$0029
|
#$000040
|
ランダム落とし穴で続行 |
#$0029
|
#$03FF80
|
宿屋座標 |
#$002B
|
#$001FFC
|
ふりだし座標 |
#$002D
|
#$00FFFF
|
マップ視点左 |
#$002F
|
#$00FFFF
|
マップ視点上 |
#$0031
|
#$00FFFF
|
マップ視点右 |
#$0033
|
#$00FFFF
|
マップ視点下 |
#$0035
|
#$000001
|
入れ替わり時待機者再描画 |
各属性の意味を以下に記す。
しらべるイベント頻度とは、草原、森、山のマスで足もとをしらべるときに引き起こされるイベントの発生頻度を表す属性だ。 各確率変数 k とイベントとの対応は次のとおりだ。
表 5.88 しらべる頻度
k | イベント |
---|---|
0 | 落とし穴が出現して現在の盤面から退場する |
1 | モンスターが出現して戦闘となる |
2 | 多額のゴールドを発見する |
3 | 少額のゴールドを発見する |
4 | アイテム発見抽選処理を実行する |
しらべるイベント頻度 k それぞれと何も見つからないイベントの頻度との和を表す属性だ。
足もとをしらべることで多額のゴールドを発見するイベントが引き起こされた際に獲得するゴールドの範囲を表す属性だ。
足もとをしらべることで少額のゴールドを発見するイベントが引き起こされた際に獲得するゴールドの範囲を表す属性だ。
#$00
..#$0B
)
足もとをしらべることでアイテムを発見するイベントが引き起こされるときに獲得するアイテムの ID を値とする属性だ。 アイテムについては 5.23 アイテム で述べる。
#$00
..#$0B
)
足もとをしらべることでアイテムを発見するイベントで、実際に発見するかどうかを抽選するためのオブジェクト、 すなわち 5.31.1.9 で述べるオブジェクトの ID を値とする属性だ。
「?」マスのランダムイベント #$11
..#$13
で戦闘になる際の戦闘、
すなわち 5.30.1.4 構造体 $C8B736
: 敵陣グループ固定戦 で述べるオブジェクトの ID を値とする属性だ。
各 k と戦闘の意味の対応は次のとおりだ。
この盤面で発生してもよいランダムイベントを列挙した配列を指定する値、 すなわち 5.31.1.4 で述べた配列(外側)の添字を取る属性だ。
この盤面を構成するすごろくマス (5.31.1.1) オブジェクトの ID の最小値および最大値をそれぞれ取る属性だ。
ゲーム開始時点におけるサイコロを振れる残り回数を表す属性だ。
ゲームオーバー時の仲間キャラクターの復帰位置を表すオブジェクトの ID を取る属性だ。 データによると、どの盤面でも対応するすごろく屋の右隣の位置が設定されている。
このような座標オブジェクトについては
5.28.1.4 構造体 $C89BB7
: 座標 で述べる。
しらべるイベントやランダムイベントで落とし穴にひっかかったときに、 パーティーがどこに移動するのかを表すオブジェクトの ID を取る属性だ。 すごろく盤面のある階層のすぐ下の階層のどこかが設定されている。
ブーリアン型属性で、値が 1 のものは、 しらべるイベントやランダムイベントで落とし穴にひっかかったときでもゲームを続行することを示す。
この盤面内にある宿屋のマスの位置を指定するオブジェクトの ID を取る属性だ。 宿屋飛ばしイベントがこの属性値を参照する。
この盤面の所属するすごろく場のふりだしのマスの位置を指定するオブジェクトの ID を取る属性だ。 ふりだしに戻るイベントがこの属性値を参照する。
座標系がよくわからないが、すごろくコマンドの「マップをみる」が参照する属性だ。
ブーリアン型属性で、値が 1 のものはキャラクター入れ替わりイベントが発生した際に、ふりだしで待機しているパーティーが再描画される。 どうやら盤面がふりだしを含むものでないときに入れ替わりイベントが発生するときには、 プログラムはパーティーの再描画の手間を省きたいようだ。
すごろく店屋画像とは画像の一種であり、宿屋またはよろず屋のマスに止まった際に画面中央に描画されるものだ。
アドレス $C8F53F
に次の表で示される型のオブジェクトが 3 個配列されていて、
それぞれ対応する分類のマスに止まったときの店屋画像を指定するものだ。
表 5.90 構造体 $C8F53F
オフセット | 桁 | 属性 |
---|---|---|
#$0000
|
#$0007FF
|
店先のスプライト |
#$0001
|
#$001FF8
|
店先のパレット |
#$0002
|
#$00FFE0
|
(調査中) |
#$0004
|
#$0003FF
|
店員のパレット |
各属性の意味を以下に記す。
店先の画像を表現するスプライト (BG2) の ID を値に取る属性だ。
店先のスプライトの色を指定するオブジェクトの ID を値に取る属性だ。
配列 $C542A6
の ID を値に取る属性だ。
店員のスプライトの色を指定するオブジェクトの ID を値に取る属性だ。
アドレス $C8F551
にある配列は、すごろくの足もとをしらべるイベントで何らかのアイテム発見抽選が発生したときに、
実際にそのアイテムを見つけるかどうかを確定するための値を表現するデータを要素とする。
各要素の型は次のようになっている。
実際には各オブジェクトの末端 2 バイトしか使われていない。それらの表す確率を以下の表に示す。