本節では格闘場について述べる。
格闘場に関する各種データ構造について述べる。
アドレス $C30DC5 には下に示すような構造のオブジェクトが配列されている。
このそれぞれが格闘場での一試合を表現している。
表 5.41 構造体 $C30DC5
| オフセット | 桁 | 属性 |
|---|---|---|
#$00
|
#$00FF
|
モンスター 0 |
#$01
|
#$00FF
|
オッズ 0 |
#$02
|
#$00FF
|
モンスター 1 |
#$03
|
#$00FF
|
オッズ 1 |
#$04
|
#$00FF
|
モンスター 2 |
#$05
|
#$00FF
|
オッズ 2 |
#$06
|
#$00FF
|
モンスター 3 |
#$07
|
#$00FF
|
オッズ 3 |
以下、このオブジェクト型の各属性の意味を記す。
この試合に出場するモンスターを表すモンスター ID を値に取る属性だ。 モンスターについては 5.5 モンスター で述べる。
モンスター k のオッズの基になる表す数を値に取る属性だ。
格闘場に関するさまざまな振る舞いについて述べる。
マッチメイクを担当するサブルーチンは $C3EC84 で定義されている。
これは画面が格闘場内に切り替わったときに呼び出される。
以下、処理の要点を列挙する。
マッチメイクオブジェクトを主人公のレベルに依存する乱数で決定する。 レベルと候補 ID との対応は次のようになっている。
表 5.42 配列 $C3ED78
| レベル | 試合 ID |
|---|---|
| 1..10 | #$00..#$0A |
| 11..15 | #$00..#$13 |
| 16..21 | #$00..#$18 |
| 22..29 | #$00..#$21 |
| 30..99 | #$00..#$26 |
後述する予想屋の予想内容をこの時点で決めておく。出場選手数と乱数によって決まる。
マッチメイクオブジェクトのオッズ属性値により、 次の表で示す中間生成値を求め、それと 10 との商 Q や余り R を用いて最終的なオッズの整数部と小数部をそれぞれ決定する。
表 5.43 格闘場オッズの計算方法
| 属性値 | 中間生成値 |
|---|---|
| 1..5 |
randint(0, 6) - 3
|
| 6..10 |
randint(0, 14) - 7
|
| 11..30 |
randint(0, 40) - 20
|
| 31..100 |
randint(0, 100) - 50
|
| 101..255 |
randint(0, 200) - 100
|
例えば中間生成値が非負ならば、整数部は属性値と Q との和、小数部は R として決定する。 中間生成値が負であったり、剰余が 0 であったり、属性値と商との和がゼロ以下になるような場合についても適宜対処している。
サブルーチン $C3EE64 は格闘場チケット屋の窓口処理を行う。
以下、処理の要点を列挙する。
冒頭で賭け金を計算する。主人公のレベルと 10 の積とする。
出場選手ウィンドウ表示時にキャンセルすると、「なんだ やめるのか」の後に支払い済みの賭け金が払い戻されることが確認できるようになっている。
賭けが成立すると、$7E2011 の格闘場モードフラグを意味するビットをセットする。