乱数計算Ver.4.4

DSの時計直してから30秒も待ちたくないとか、誰かの誕生日で孵化したいとか。
Ver.4.4.1:出力する消費範囲の始点に0以外を入れたときのバグを修正。

起動時刻と8バイト初期seed計算 :23
→23
結果はresult.txtに出力
()内は参考値
MACアドレス 2桁(1バイト)ごとスペースで区切って入力→
nazo→(ブラック:0x2215F10 ホワイト:0x2215F30)→0x
Timer0(ブラック:0xC79 ホワイト:0xC68)→0xC
VCount(ブラック:60 ホワイト:5f)→0x
Frame(0x6)→0x
GxStat(0x6000000)→0x
出力する個体値範囲
HP:始点 終点→
攻撃:始点 終点→
防御:始点 終点→
特攻:始点 終点→
特防:始点 終点→
素早さ:始点 終点→
出力する消費範囲(最大619):始点 終点→
検索範囲
西暦下2桁(最大範囲0~99):始点 終点→
月(最大範囲1~12):始点 終点→
日(最大範囲1~31):始点 終点→
秒(最大範囲0~59):始点 終点→

  • s さん
    • Ver4.4で消費範囲の始点に0以外を入れると間違った結果(出力範囲だけでなく個体値も)が出るのでVer4.4.1以降を使ってください。

BWの初期seed

他人の情報の寄せ集めメモ。
元となるメッセージは52byte。上位ワード(4byte)から順にW[0]〜W[12]とすると

  • W[0]
    • DS固有の値(A)を1byteごとに逆順にした値(0xAABBCCDD→0xDDCCBBAA)
    • B:0x02215F10 W:0x02215F30 ?
    • mySeedFinderのnazo
  • W[1],W[2]
    • 共に、Aに0xFCを足した値(B)を1byteごとに逆順にした値(0xAABBCCDD→0xDDCCBBAA)
  • W[3],W[4]
    • 共に、Bに0x4Cを足した値(C)を1byteごとに逆順にした値(0xAABBCCDD→0xDDCCBBAA)
  • W[5]
    • mySeedFinderのTimer0とVCount
    • 上位2byteはTimer0を1byteごとに逆順にした値(0xAABB→0xBBAA)
    • 下位2byteはVCount*0x100
    • Timer0→B:0xC79 W:0xC68 ?
    • VCount→B:0x60 W:0x5F ?
    • VCountは条件次第で変動、Timer0は固有値
  • W[6],W[7]
  • W[8]
    • 1byte目:西暦下位2桁のBCD表記(例:2010年→0x10)
    • 2byte目:月のBCD表記(例:12月→0x12)
    • 3byte目:日付のBCD表記(例:6日→0x6)
    • 4byte目:曜日に依存した値、日曜から順に0〜6(例:月曜日→0x1)
    • この例なら0x10120601
  • W[9]
    • 1byte目:時のBCD表記、ただし午後は0x40を加算(例:23時→0x63)
    • 2byte目:分のBCD表記(例:30分→0x30)
    • 3byte目:秒のBCD表記(例:20秒→0x20)
    • 4byte目:0
    • この例なら0x63302000
    • 初期seed決定は起動してから約1秒後なので、結果的に起動してから約1秒後の値が使用されることになる
  • W[10],W[11]
    • 共に、0
  • W[12]
    • 0xFF2F0000

SHA-1でこのメッセージから20byteのハッシュ値を生成する。
LCGsの初期seedはハッシュ値の上位8byteを1byteごとに逆順にした値。(0xAABBCCDDEEFFGGHH→0xHHGGFFEEDDCCBBAA)
MTの初期seedはLCGsの2個目のseedの上位4byte。

コメントレス

  • 七宝さん
    • そうですね。ありがとうございます。

乱数計算Ver.4.3.1

8バイト(16桁)の初期seedを検索する機能追加。
主人公名を決定する際のアララギ博士の確認にいいえを選択した回数が0〜3回の時のトレーナーIDと、個体値乱数(MT)を消費していない状態で遭遇した個体(受け取った化石の個体)の個体値を入力。


いいえ0回のトレーナーID→55084
いいえ1回のトレーナーID→61591
いいえ2回のトレーナーID→44393
いいえ3回のトレーナーID→65064
個体値:H A B C D S
→23 26 16 4 7 30
最初のトレーナーID決定:seed64[24]=0x9155D72D4C45EDCF
初期seed:seed64[0]=0x675A444DD721BEB7

コメントレス

乱数計算Ver.4.2.1

タマゴ生成処理にオフセット、性格値を10進数に直したもの(トレーナーID)を追加。
消費nの行で使用している乱数は以下の通り。
性格:r[n+オフセット]
性格遺伝:r[n+オフセット+1]
特性遺伝:r[n+オフセット+1]
遺伝位置:r[n+オフセット+2],r[n+オフセット+3]
性別値、特性値、性格値、裏ID、表ID:r[n+オフセット+4]

コメントレス

  • Tさん
    • 128歩移動するごとに発生するなつき度上昇判定には個体値側しか使わないというだけで、128歩移動する途中に発生する他の要素では性格値側の乱数も使います。

乱数計算Ver.4.2

8バイト初期seedから、タマゴ関係の処理を出力。
基本的には錆びたコイルさんのツールと同じ。

  変わらずの石あり 変わらずの石なし
メタモンあり A B
メタモンなし B C


性格:変わらずの石なし、性格遺伝なしの場合に参照
性格遺伝:変わらずの石ありの場合に参照
特性遺伝:メタモンが含まれず、かつ♀がかくれ特性の場合に参照
参考:http://d.hatena.ne.jp/metagross-armor/20101112/
同じ行での使用乱数。
消費:n
性格:r[n]
性格遺伝:r[n+1]
特性遺伝:r[n+1]
遺伝位置:r[n+2],r[n+3]
性別値、特性値、性格値:r[n+4]

コメントレス

  • aruruさん
    • 次回更新時に実装しておきます。