SFC版DQ3直接攻撃(打撃)
DQ3
打撃のダメージ計算式
【計算式の表記】
[x]:x の整数部分
<x, y>: x とy を含む、x から y までの全ての整数の中から選ばれた1つの整数
rnd: 0から255の一様乱数(と推測されるもの)
【プレイングキャラクター(以下PC)が行動した時】
基本的なダメージ計算式はモンスターと違って2種類だけです。
atk - [ def / 2 ] < 2 の時
ダメージは 0 or 1(等確率)
atk - [ def / 2 ] ≧ 2の時
ダメージは [ ( atk - [ def / 2 ] ) * <99, 153> / 256 ]
<99, 153>は最大・最小のでやすい分布で、
(0から15までの一様乱数を16回生成した合計値) + 6
を求め、99未満なら99、153より大きい場合は153とする乱数。
※混乱状態でターンを開始したPCにパーティアタックした時にはダメージが大幅に軽減されます。上の式で得られるダメージDを1/8倍して1から3加算した値になります。($028E4Aの処理)
D' = [D/8] + <1, 3>
<1, 3>は、 [ ( 2 + 1 ) * rnd / 256 ] + 1 で求まり、 1 は86/256, 2 や 3 は 85/256の比率。
※装備による補正など(複数攻撃武器、痛恨・会心、耐性、防御、毒針)
(更新未定)
※バイキルトはダメージを2倍にします。
【モンスターが行動した時】
こちらは分岐条件が複雑です。ダメージ計算式は3種類で下表に条件別にまとめてあります。
例えばダメージ計算式が [ ( atk - [ def / 2 ] ) * <99, 153> / 256 ] となるのは、
atk - [ def / 2 ] ≧ 0 かつ atk - [ def / 2 ] > [ atk / 8 ] かつ atk ≧ 8 の時になります。
<99, 153>はPCの打撃と同じものです。(最小99、最大153の整数です。0から15までの一様乱数を16回生成・加算し、さらに6加算したものです。99未満なら99、153より大きい場合は153。)
_/_/_/ 参考サイト _/_/_/
SFC版DQ3 打撃ダメージ値乱数
_/_/_/ 解析資料(dq_492氏) _/_/_/
ほとんどは資料にあるサブルーチンの内容をなぞってまとめたもの
DQ3戦闘部分解説19直接攻撃の処理について
DQ3戦闘部分解説2戦闘関連のメモリーについて
2019年6月5日 リンクを修正
【計算式の表記】
[x]:x の整数部分
<x, y>: x とy を含む、x から y までの全ての整数の中から選ばれた1つの整数
rnd: 0から255の一様乱数(と推測されるもの)
【プレイングキャラクター(以下PC)が行動した時】
基本的なダメージ計算式はモンスターと違って2種類だけです。
atk - [ def / 2 ] < 2 の時
ダメージは 0 or 1(等確率)
atk - [ def / 2 ] ≧ 2の時
ダメージは [ ( atk - [ def / 2 ] ) * <99, 153> / 256 ]
<99, 153>は最大・最小のでやすい分布で、
(0から15までの一様乱数を16回生成した合計値) + 6
を求め、99未満なら99、153より大きい場合は153とする乱数。
※混乱状態でターンを開始したPCにパーティアタックした時にはダメージが大幅に軽減されます。上の式で得られるダメージDを1/8倍して1から3加算した値になります。($028E4Aの処理)
D' = [D/8] + <1, 3>
<1, 3>は、 [ ( 2 + 1 ) * rnd / 256 ] + 1 で求まり、 1 は86/256, 2 や 3 は 85/256の比率。
※装備による補正など(複数攻撃武器、痛恨・会心、耐性、防御、毒針)
(更新未定)
※バイキルトはダメージを2倍にします。
【モンスターが行動した時】
こちらは分岐条件が複雑です。ダメージ計算式は3種類で下表に条件別にまとめてあります。
例えばダメージ計算式が [ ( atk - [ def / 2 ] ) * <99, 153> / 256 ] となるのは、
atk - [ def / 2 ] ≧ 0 かつ atk - [ def / 2 ] > [ atk / 8 ] かつ atk ≧ 8 の時になります。
atk - [ def / 2 ] < 0 | |||||
Yes | No | ||||
atk < 16 | atk - [ def / 2 ] ≦ [ atk / 8 ] | ||||
Yes | No | Yes | No | ||
atk < 16 | atk < 8 | ||||
Yes | No | Yes | No | ||
ダメージ計算式 | |||||
0 or 1 | [ [atk/8]*rnd / 256 ] | 0 or 1 | [ [atk/8]*rnd / 256 ] | 0 or 1 | [ ( atk – [ def / 2 ] ) * <99, 153 > / 256 ] |
_/_/_/ 参考サイト _/_/_/
SFC版DQ3 打撃ダメージ値乱数
_/_/_/ 解析資料(dq_492氏) _/_/_/
ほとんどは資料にあるサブルーチンの内容をなぞってまとめたもの
DQ3戦闘部分解説19直接攻撃の処理について
DQ3戦闘部分解説2戦闘関連のメモリーについて
2019年6月5日 リンクを修正
SFC版ドラゴンクエスト3の行動順と素早さの関係
DQ3乱数を使って先攻率を求めるページ
SFC版DQ3先攻率のシミュレーターターンごとの素早さの計算式は
(素早さ+20)*(0~255)/256 [端数切り捨て]
だけど、0~255の部分は一様分布乱数ではない。
説明はリンク先に。ブログには解析関係のことを書いてみる。
(DQ3)ターン毎のモンスターの自然回復量のまとめ
DQ3
自然回復設定値(データの場所$02C3A6-$02C3AD $02C38Aあたりで参照)
計算式
Heal = BaseVal + math.floor( (RangeVal + 1 )*Rnd/256 )
Rndは0から255までの乱数
(最小)-(最大): 16-24 (スカルゴン)
回復量16,18,20,22は11.33%, ほかは10.94%
(最小)-(最大): 44-56 (うごくせきぞう、トロルキング、バラモスゾンビ)
47,50,53,56は7.42%, ほかは7.81%
(最小)-(最大): 90-110 (バラモス、闇ゾーマ)
90,95,100,105は5.08%, ほかは4.69%
Num | BaseVal | RangeVal |
00 | 0 | 0 |
01 | 16 | 8 |
02 | 44 | 12 |
03 | 90 | 20 |
計算式
Heal = BaseVal + math.floor( (RangeVal + 1 )*Rnd/256 )
Rndは0から255までの乱数
(最小)-(最大): 16-24 (スカルゴン)
回復量16,18,20,22は11.33%, ほかは10.94%
(最小)-(最大): 44-56 (うごくせきぞう、トロルキング、バラモスゾンビ)
47,50,53,56は7.42%, ほかは7.81%
(最小)-(最大): 90-110 (バラモス、闇ゾーマ)
90,95,100,105は5.08%, ほかは4.69%
エクセル関数を使ったフィールドマップ作成の作業メモ
DQ3この記事の解析情報はほとんど参考サイトの情報を利用している。データ処理には表計算ソフトLibreOfficeを利用した。
DQ3のROMには地形の情報が1*1マスのマップパーツ毎に設定されている。地形情報は上の世界とアレフガルドでROM上の別々な場所に格納されている。マップパターンはマップパーツ(1*1マス)を16個集めたもの(4*4マス)。フィールドの全体マップ(256*256マス)のマップパターンの配置はRAM上に展開されている。
<作業の流れ>
(1)フィールドマップ(256*256マス)とマップパターン(4*4マス)の配置(上の世界とアレフガルドで異なる)
(2)マップパターン(4*4)とマップパーツ(1*1マス)の配置
(3)マップパーツ(1*1)の地形情報(上の世界とアレフガルドで異なる)
(4)マップの背景をスタイルで設定する。
(5)出力データ
<参考サイト>
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
最新記事
(12/18)
(04/18)
(09/15)
(09/11)
(06/21)
プロフィール
HN:
bamboo
性別:
非公開
自己紹介:
2010年の3月ごろニコニコ生放送のゲーム放送でRTAを知ってよく見るようになった。
どちらかというとゲームはプレイするものじゃなくてプレイを"みる"ものだと思っている。
逆アセンブル解析というのをかじったものの放置していたが、某放送の影響で解析を再開。
2を初クリアしたのは2011.3.10。ブログの内容はSFC版ドラクエ1・2の解析がメイン。最近はjavascriptとかluaをある程度扱えるようになったので、botでルート検証とかできたらと思いつつも進んでいない。
要点をまとめたり文章書くのが苦手なので記事が長ったらしかったり、日本語のようで日本語でなかったりする。プログラム用語が使えるようになりたいかも。
ツイッター: https://twitter.com/bamb00h
ブログに公開せずツイートのみの情報もあり(twilog)
どちらかというとゲームはプレイするものじゃなくてプレイを"みる"ものだと思っている。
逆アセンブル解析というのをかじったものの放置していたが、某放送の影響で解析を再開。
2を初クリアしたのは2011.3.10。ブログの内容はSFC版ドラクエ1・2の解析がメイン。最近はjavascriptとかluaをある程度扱えるようになったので、botでルート検証とかできたらと思いつつも進んでいない。
要点をまとめたり文章書くのが苦手なので記事が長ったらしかったり、日本語のようで日本語でなかったりする。プログラム用語が使えるようになりたいかも。
ツイッター: https://twitter.com/bamb00h
ブログに公開せずツイートのみの情報もあり(twilog)
ブログ内検索
最古記事
(09/17)
(09/17)
(09/18)
(02/04)
(02/07)
カウンター
忍者アナライズ