乱数計算Ver.4.5

エンカウント用の乱数を出力する機能追加。ただ、特性と性格値は怪しい。
NPCのランダム挙動の決定その他いろいろで消費するので、NPCがいない場所でゲーム開始から動かずに甘い香りを使用した時ぐらいにしか合わないかな。
狙い目はチャンピオンロードアイアント、ヤグルマの森のフシデ古代の城デスマスなど。


性格はシンクロ発動時はシンクロが優先、それ以外の時は性格欄の性格。
オフセットは孵化の時と同じ程度。


出現ポケモンの数値と出現ポケモンデータとの対応は以下の通り。

20% 20% 10% 10% 10% 10% 5% 5% 4% 4% 1% 1%
0~19 20~39 40~49 50~59 60~69 70~79 80~84 85~89 90~93 94~97 98 99

消費nの時に使用している乱数は以下の通り。seed32はLCGs用の乱数の上位4バイト。
シンクロ発動判定:seed32[n]
出現ポケモン決定:seed32[n+1]
性格値、特性:seed32[n+3]
性格:seed32[n+4]

乱数計算Ver4.4.4

色違いの性格値を出力する機能を追加。
seed32:LCGs乱数の上位4バイト
pid[0]:タマゴの性格値、多分あってる
pid[1]:徘徊の性格値、多分あってる
pid[2]:固定シンボルの性格値、ちょっと怪しい

pid[0]=seed32*0xffffffff/0x100000000;
pid[1]=seed32;
if((seed32>>31) == (seed32&1)){pid[2]=seed32^0x10000;}
else{pid[2]=seed32^0x80010000;}

乱数計算と同じフォルダのseed.txtに書かれている8バイト初期seedから、上の仮定で性格値を計算。色違い判定をして色違いであれば出力。
seed.txtは一行毎に8バイト初期seedが書かれたものを用意。"起動時刻と8バイト初期seed計算"の結果をExcelにコピーし、初期seedの列だけテキストファイルとして貼りつけると楽。
seed.txtの例

E84D5737127A6475
8A97550DE83883CC
99F4F327A21E5B6F
BA13F28111BECAB5
BA9F327B3ECBC6AB
52EA304D8C26B423
143B81EB91EB44D2
4CAA0CE19B35BE9D
F422BC7139B89CB2

初期seedをseed64[0]としたとき、消費nの時の性格値はseed64[n]から生成。

乱数計算Ver4.4.3bの個体値データの扱い(Excel)

ボルトロストルネロス個体値

消費1はボルトロストルネロス用なので個体値を並び替える。
消費で並び替えて消費1の行だけまとめる。
消費1の個体値のSの列を切り取り、個体値のCの列に切り取ったセルを挿入。

めざめるパワーの計算

result.txtをそのまま貼り付けるとC列から順にHABCDSとなる。その場合の計算式は
タイプ:=INT((MOD(C2,2)*1+MOD(D2,2)*2+MOD(E2,2)*4+MOD(H2,2)*8+MOD(F2,2)*16+MOD(G2,2)*32)*15/63)
威力:=INT((INT(MOD(C2,4)/2)*1+INT(MOD(D2,4)/2)*2+INT(MOD(E2,4)/2)*4+INT(MOD(H2,4)/2)*8+INT(MOD(F2,4)/2)*16+INT(MOD(G2,4)/2)*32)*40/63)+30
ただし、タイプは

かくとう 0 ひこう 1 どく 2 じめん 3
いわ 4 むし 5 ゴースト 6 はがね 7
ほのお 8 みず 9 くさ 10 でんき 11
エスパー 12 こおり 13 ドラゴン 14 あく 15

乱数計算Ver4.4.3

テキストファイルからMACアドレス、nazo、Timer0、VCount、Frame、GxStatを読み込めるように変更。
乱数計算Ver4.4.3bは23の個体値と消費の出力条件を以下のように設定したもの。
HP、防御、特防:30~31
攻撃、特攻、素早さ:0~3、30~31
消費数:0、1、7
特攻が低いのはパワーシェア対策。実際に必要なのは0~1だが、計算を単純化させるために0~3まで出力。特攻2~3はあとで除去すればよい。

コメントレス

  • チュンさん
    • 入力画面に書いてあると思いますが。
  • アークさん
    • bと一緒になっていたので修正しました。

初期seed(起動時刻)と個体値の関係

今までのDSの個体値は計算に必要な要素なのに対して、BWの個体値は出力する際のフィルター。
個体値は条件を変えても計算することは同じなので、個体値の条件をあまり細かく指定して起動時刻を計算すると効率が悪い。