本項の情報はプログラミングの素人である筆者個人が調べたものです。
誤りの指摘や情報提供などお待ちしています。
調査に使ったカートリッジ
過去編 刻印00
未来編 刻印12
計算式
ダメージ=攻防差+(技の威力×補正値)+ダメージ乱数・補正値
=タイプ相性による補正+技のタイプ一致による補正+見事に決まった!による補正
・攻防差+(技の威力×補正値)/8<1のとき
ダメージ乱数=0
・攻防差+(技の威力×補正値)/8≧1のとき
0 ≦ ダメージ乱数 < {攻防差+(技の威力×補正値)}/8
※ゲーム内の乗算・除算は全て小数点以下切り捨て
ダメージ計算の内部処理
全体の流れ
1.攻防差を計算 ※特別な技はこころの差で計算2.技の威力×タイプ相性等の補正値
3.数値1+数値2を計算。これを"仮ダメージ"とする。
4."仮ダメージ"を元にダメージ乱数をつくる
5."仮ダメージ"+ダメージ乱数=与えるダメージ
--------------------------------------------------------------------------------------------
攻防差について
攻撃側の「ちから」から防御側の「まもり」を引く。そのままの値がダメージの一部になる。相性やレベル差等の補正を受けない為、ダメージ計算での比重はかなり大きいと言える。
★以下の9個の技は、「こころ」の差でダメージ計算を行う。
番号 | 技名 | 属性 | 命中 | 急所 | 威力 | 追加効果 | 発動率 | 備考 |
---|---|---|---|---|---|---|---|---|
15 | ハウリング | なし | 208 | 32 | 16 | パニック | 21 | 急所にあたりやすい。優秀。 |
25 | ねつうつし | ヒート | 240 | 16 | 5 | ちからダウン | 32 | ヒートの初期技。 |
4B | ひとだま | れい | 224 | 16 | 5 | なし | 0 | れいの初期技。 |
4C | てんしのうたごえ | れい | 255 | 0 | 12 | HP吸収 | 必ず | ライフドレインのこころ版。命中最高値。 |
58 | サイコキネシス | ESP | 224 | 16 | 14 | なし | 0 | 使いやすいが威力はマインドブラストにやや劣る。 |
59 | メンタルアタック | ESP | 213 | 16 | 19 | こころダウン | 48 | 耐久ダウンを狙いつつ攻撃できる。 |
7E | 39ど8ぶ | ヒート | 208 | 16 | 16 | はやさダウン | 32 | スキルパック27。はやさダウンはかなり有用。 |
7F | セントエルモのひ | ほのお | 208 | 16 | 19 | パニック | 16 | スキルパック28。 |
8F | マインドブラスト | ESP | 224 | 16 | 17 | むがむちゅう | 37 | スキルパック44。 |
-------------------------------------------------------------------------------------------
技の威力について
全体的に低めに設定されている。格上相手だと弱点を突いて三倍になっても攻防差で相殺されてしまう。
<技の威力の代表例>
威力1(最小) しにものぐるい・ビーンズショット 最弱の技と最凶の技
威力2~4 しょくしゅ・ライジングサン等 複数回攻撃
威力5 パンチ・シャイニング・いしなげ等 各属性の弱攻撃
…
威力26 げきりん
威力27(最大)コメットフォール・マグニチュードX
-------------------------------------------------------------------------------------------
補正値について
[タイプ相性・タイプ一致・見事に決まる]の三つ。その合計が技にかける倍率になる。
●タイプ相性による補正
相性なし +1弱点をついた +3
苦手なようだ +2.5
平気なようだ +0.25
あまり効いてない+0.5
●タイプ一致による補正
以下の二つの条件を満たすと倍率+0.25・自分のタイプと使う技のタイプが一致している
・タイプ相性が「相性なし」以外
●見事に決まった!による補正
所謂クリティカルヒット。倍率+0.5。相手より素早い程決まりやすくなる。
●補正の組み合わせ一覧
内部処理ではそれぞれの組み合わせに番号が割り当てられている。番号 | 補正の組み合わせ | 倍率 |
---|---|---|
00 | 相性なし | 1 |
01 | 弱点を突いた | 3 |
02 | 苦手なようだ | 2.5 |
03 | 平気なようだ | 0.25 |
04 | あまり効いていない | 0.5 |
05 | 弱点+タイプ一致 | 3.25 |
06 | 苦手+タイプ一致 | 2.75 |
07 | 平気+タイプ一致 | 0.5 |
08 | あま+タイプ一致 | 0.75 |
09 | なし+見事 | 1.5 |
0A | 弱点+見事 | 3.5 |
0B | 苦手+見事 | 3 |
0C | 平気+見事 | 0.75 |
0D | あま+見事 | 1 |
0E | 弱点+一致+見事 | 3.75 |
0F | 苦手+一致+見事 | 3.25 |
10 | 平気+一致+見事 | 1 |
11 | あま+一致+見事 | 1.25 |
ダメージ乱数について
{攻防差 +(技の威力×補正値)}を"仮ダメージ"とする。
始めに 仮ダメージ/8 が計算される。1未満なら処理終了。乱数による加算はなし。
1以上の場合、乱数を使った計算が行われる。
計算結果の範囲は下記の通り。
0≦ ダメージ乱数 < 仮ダメージ /8
仮ダメージ16 ⇒ 16/8=2なので、乱数の範囲は0~1
仮ダメージ80 ⇒ 80/8=10なので、乱数の範囲は0~9
最終的なダメージは(C988-89)に格納される。
乱数の計算詳細
かなり面倒な計算処理が行われている。
・前準備
Aレジスタ=仮ダメージ/8
Hレジスタ=00
Lレジスタ=00~FFのランダム数
この状態で call 048A する
・048A
HLを16回二倍し溢れた分をAに入れていくプログラム。
Aが仮ダメージ/8以上になると仮ダメージ/8で引かれる(乱数<仮ダメージ/8となる)。
HLを16回二倍し溢れた分をAに入れていくプログラム。
Aが仮ダメージ/8以上になると仮ダメージ/8で引かれる(乱数<仮ダメージ/8となる)。
ROM0:048A D5 push de
ROM0:048B 16 10 ld d,10 ’D=繰り返しの回数
ROM0:048D 5F ld e,a ’E=仮ダメージ
ROM0:048E AF xor a ’Aは初期化
ROM0:048F 29 add hl,hl ’Lに入れたランダム数を二倍していく
ROM0:0490 17 rla ’HLから溢れた分がaに入る
ROM0:0491 38 03 jr c,0496
ROM0:0493 BB cp e ’A-E
ROM0:0494 38 02 jr c,0498 ’A-E が負数ならジャンプ
ROM0:0496 93 sub e
ROM0:0497 2C inc l
ROM0:0498 15 dec d
ROM0:0499 20 F4 jr nz,048F
ROM0:049B D1 pop de
ROM0:049C C9 ret
実例
過去編のビッグシティにてテリテリボーズLv35の水技で実験した。[ちから、まもり、はやさ、こころ]=[55 54 56 56](ウォッチ補正込み)
防御側① ゲッスイキンLv38[63 57 63 53]
攻防差=55-57=-2水→土 相性なし:倍率+1.0
相性が普通なのでタイプ一致補正なし
てっぽうみず タイプ水 威力5
通常HIT:-2+int(5*1.0)=3 ’3/8が1未満なのでダメージ乱数なし
見事HIT:-2+int(5*1.5)=7
ウォーター タイプ水 威力9
通常HIT:-2+int(9*1.0)=7
見事HIT:-2+int(9*1.5)=11+0
防御側② ゼンマイパソゴンLv35[46 45 43 47]
攻防差=55-45=10水→マシン 苦手なようだ!!:倍率+2.5
水 水 タイプ一致:倍率+0.25
てっぽうみず タイプ水 威力5
通常HIT:10+int(5*2.75)=23+0~1
見事HIT:10+int(5*3.25)=26+0~2
ウォーター タイプ水 威力9
通常HIT:10+int(9*2.75)=34+0~3
見事HIT:10+int(9*3.25)=39+0~3
防御側③ Mr.ドルキャンLv34 [49 46 48 57]
攻防差=55-46=9水→炎 弱点を突いた:倍率+3
水 水 タイプ一致:倍率+0.25
てっぽうみず タイプ水 威力5
通常HIT:9+int(5*3.25)=25+0~2
見事HIT:9+int(5*3.75)=27+0~2
ウォーター タイプ水 威力9
通常HIT:9+int(9*3.25)=38+0~3
見事HIT:9+int(9*3.75)=42+0~4
0 件のコメント:
コメントを投稿