忍者ブログ

データ置き場

ニコ生RTA放送を見ていて湧いた疑問を調査してアップするかも。ほぼドラクエのみを扱うブログ風のマニアックなサイト

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

SFC版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 の時になります。


モンスターによる直接攻撃のダメージ計算式
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 ]
<99, 153>はPCの打撃と同じものです。(最小99、最大153の整数です。0から15までの一様乱数を16回生成・加算し、さらに6加算したものです。99未満なら99、153より大きい場合は153。)



_/_/_/ 参考サイト _/_/_/
SFC版DQ3 打撃ダメージ値乱数 

_/_/_/ 解析資料(dq_492氏) _/_/_/
ほとんどは資料にあるサブルーチンの内容をなぞってまとめたもの
DQ3戦闘部分解説19直接攻撃の処理について
DQ3戦闘部分解説2戦闘関連のメモリーについて

2019年6月5日 リンクを修正

SFC版ドラゴンクエスト3の行動順と素早さの関係

乱数を使って先攻率を求めるページ

SFC版DQ3先攻率のシミュレーター

ターンごとの素早さの計算式は
(素早さ+20)*(0~255)/256 [端数切り捨て]
だけど、0~255の部分は一様分布乱数ではない。
説明はリンク先に。ブログには解析関係のことを書いてみる。


(DQ3)ターン毎のモンスターの自然回復量のまとめ

自然回復設定値(データの場所$02C3A6-$02C3AD $02C38Aあたりで参照)
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%

エクセル関数を使ったフィールドマップ作成の作業メモ

この記事の解析情報はほとんど参考サイトの情報を利用している。データ処理には表計算ソフトLibreOfficeを利用した。

DQ3のROMには地形の情報が1*1マスのマップパーツ毎に設定されている。地形情報は上の世界とアレフガルドでROM上の別々な場所に格納されている。マップパターンはマップパーツ(1*1マス)を16個集めたもの(4*4マス)。フィールドの全体マップ(256*256マス)のマップパターンの配置はRAM上に展開されている。


カレンダー
02 2024/03 04
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
31
プロフィール
HN:
bamboo
性別:
非公開
自己紹介:
2010年の3月ごろニコニコ生放送のゲーム放送でRTAを知ってよく見るようになった。
どちらかというとゲームはプレイするものじゃなくてプレイを"みる"ものだと思っている。
逆アセンブル解析というのをかじったものの放置していたが、某放送の影響で解析を再開。
2を初クリアしたのは2011.3.10。ブログの内容はSFC版ドラクエ1・2の解析がメイン。最近はjavascriptとかluaをある程度扱えるようになったので、botでルート検証とかできたらと思いつつも進んでいない。
要点をまとめたり文章書くのが苦手なので記事が長ったらしかったり、日本語のようで日本語でなかったりする。プログラム用語が使えるようになりたいかも。
ツイッター: https://twitter.com/bamb00h
ブログに公開せずツイートのみの情報もあり(twilog
バーコード
ブログ内検索
カウンター
忍者アナライズ
  Copyright 2024 データ置き場 All rights reserved.
Template Design by LockHeart|powered by NINJA TOOLS 忍者ブログ [PR]