Hatena::ブログ(Diary)

oupoの日記

2010-03-27

バトルタワーの相手の手持ちの決定は専用の乱数が使われていた

16:36

バトルタワーの相手の手持ちの決定は多分ファクトリーとほぼ同じだろうなーと思いながら調べたら、ぜんぜん違っていた。

セーブデータにバトルタワー専用のseedが記録されている。バトルタワーの1周目に一回挑戦するごとにs * 0x5d588b65 + 1で更新される。その値がバトルタワーの相手の手持ちを決定する初期seedになる。

3.不明1

  正体不明です。雰囲気からするとバトルタワー関連かな?という気がします。

  日替わりの乱数に 0x5D588B65をかけて1を足したものを使用します。

これがそれそのもの。

日替わり乱数seedと最後に日付を跨いでから何回目の挑戦かっていう情報からバトルタワーの相手の手持ちを出力できそう。

しかし、相手の手持ちを決定する初期seedは判明できたものの、その値をどう計算して乱数列にしているかまだ分からない。むむむ。

追記 (2010-03-28T17:20:34+09:00)

バトルタワーの乱数列は s * 0x02e90edd + 1 のよう。

メモ

s * 0x5d588b65 + 1 の逆算の式は s * 0x6a76ae6d + 0x95895193
s * 0x02e90edd + 1 の逆算の式は s * 0x0c913975 + 0xf36ec68b

追記2 (2010-04-02T09:50:45+09:00)

乱数の値は普通にseedの上位16bit...ではなく、(seed / 0xffff) & 0xffffが使われる。

2010-03-16

くじ番号の解説

18:12

くじ番号の決定方法を図にまとめてみました。詳細はktxadさんの記事参照。

f:id:oupo:20100316175802j:image


no titleでは以下のようなことをやっています。

  1. くじ番号3日分から日替わり乱数seedを特定
  2. 日替わり乱数seedを遡っていき、それを孵化乱数列の1番目の値として初期seedを逆算。初期seedから計算される表IDが一致していれば結果出力。

孵化乱数列の1番目の値から初期seedを逆算ってことが簡単には出来ないので、あらかじめ全組み合わせの初期seedで計算しておいてサーバーで検索しているわけです。

2010-03-07

くじ番号から裏IDを検索するツールを作りました

09:21

仕組み

  • 全組み合わせのseed(256*24*65536個)でメルセンヌツイスタの1個目の乱数を計算
  • それを1個目の乱数の値でソートし、seedの値だけを取り出したテーブルファイルを作成 (256*24*65536*4 bytes = 1.5 ギガバイトになります)
  • 検索するとき、日替わり乱数seedを一つずつ遡っていってテーブルファイルから二分探索して一致するものを探す

追記 (2010-03-11T23:23:34+09:00)

ソースコード公開しました。 no title

あと、「入力内容はサーバー送信され、検索はサーバー側で行われます」ってところが嫌だから1.5ギガバイト超えのファイルをダウンロードしてでもローカルで動かしたいって需要はあるんでしょうか

追記2 (2010-03-14T16:36:11+09:00)

こちらで紹介されたようです。ありがとうございます。

コメント欄を見ると裏IDが見つからないという報告が2つも…うむむむ。ちょっと原因は分からないです…orz ツールバグか、もしくは日替わり乱数seedが突然変化することがあるのかもしれません。

既に裏IDが特定できていて見つからない方、よければ報告してくださいませんか。解決のヒントになるかもしれません。

  • 表IDと裏IDとくじ番号3日分
  • 裏IDは完全に特定できていなくても8つに絞れていたらそれでも構いません
  • IDループをした、もしくは御三家個体値から特定した方でゲーム開始時の初期seedも判明している場合はそれもお願いします
    • ゲーム開始時の初期seedが分からない場合は、こちらで表IDと裏IDから検索します

追記3 (2010-03-21T07:33:41+09:00)

裏IDが見つからない報告はとりあえずこれで締め切らせていただきます。報告してくださった方々、ありがとうございました。

RAraRAra 2010/03/11 21:42 はじめまして
某生放送で見かけたので
ツール作成お疲れ様です
これからも面白いツール期待しています

oupooupo 2010/03/11 22:52 コメントありがとうございます。
趣味で何か作っていると反応を貰うのはモチベーションに繋がるのでとてもありがたいです><

色違いに会えなかった名無し色違いに会えなかった名無し 2010/03/13 02:30 このツールのおかげで念願だった裏ID特定ができました!
ありがとうございます!感謝です!

色違いに会いたい名無し色違いに会いたい名無し 2010/03/15 01:51 ツールを使わせていただいたのですが裏ID特定できませんでした・・・・orz

fndsfnds 2010/03/15 02:23 ツール利用させてもらいました。
元々裏IDを赤ギャラの方で特定していたHGでやってみたところ1つに絞れ、見事一致しました。
あとで赤ギャラを捕まえたせいで特定できなかったSSの方でも試してみようと思います。

fndsfnds 2010/03/15 02:44 追記です。
SSで試した所特定できませんでした。
試したのは、39418 43915 47556がクジの結果で、表IDが40501です。

んんnんんn 2010/03/15 07:43 IDくじツールでシド特定できなかったので報告させていただきます

連続した3つのくじ番号: 49480,41539,47831
表ID:06119
検索回数:2000回前まで

日替わり乱数のseed: 0x8e7f4955
完了 (2000回前まで検索し見つかりませんでした)

oupooupo 2010/03/15 15:10 皆さん報告ありがとうございます。
見つからない方、ほかの手段で裏IDを特定して報告していただきたいです。
たとえば、御三家を貰うまでにリセットしてない場合は御三家の個体値から。
http://oupo.github.com/tools/gosanke-iv-to-sid.html

初心者初心者 2010/03/15 21:43 はじめまして。
ツールが使用できないのですが、今は調整中でしょうか?
自分のパソコンがおかしいのかな…

oupooupo 2010/03/15 22:21 >初心者さん
いえ、特に調整中とかはないです。
ツールが使用できないといわれても具体的な状況を報告していただかないと答えようがないです><

- 何かエラーが出る (その場合エラーメッセージも報告お願いします)
- 検索ボタンを押しても何も反応しない
- 「1回前からの結果をサーバーから待っています」の状態でずっと止まっている状態
- その他

あとInternet Explorerを使っている場合、ステータスバーの一番左に黄色のアイコンが表示されていませんかね?もし表示されている場合、それをダブルクリックするとそのページで出たエラーが表示されるのでその内容を報告してほしいです。

初心者初心者 2010/03/15 22:28 >>oupoさん
さっきまでは、何度行ってもリンク先が見つかりませんと出ていました。
しかし、今確認したところ普通につながりました。
お騒がせしてすいません。

oupooupo 2010/03/15 22:42 あらっ、そうでしたか。レンタルサーバーの調子が悪かったのかもしれません。

んんnんんn 2010/03/16 14:20 御三家からのsid調査結果です。
おそらくもらうまでにリセットはしていないと思います。

0x77113da0(-93) 裏ID: 36205
1件見つかりました

oupooupo 2010/03/16 17:50 >んんnさん
報告感謝です! そのゲーム開始時の初期seedから2000日分のくじ番号を出力してみましたが、49480,41539,47831は見つかりませんでした。
プログラムのバグではなくて、日替わり乱数のseedが突然変化することがあるっていう可能性が濃厚ですね…。突然変化する条件が分かれば、それはそれでくじ番号に好きな番号を出せる可能性があるので面白そうですが。
49480,41539,47831から遡ったseedと、ゲーム開始時の初期seed 0x77113da0からの日替わりseedを照らし合わせて似ている値はないかとかもうちょっと調べてみます。

fndsfnds 2010/03/16 22:33 同じく御三家からやってみました。リセットはしてないので合ってると思いますが、後ほど実際に試してみます。

表IDは40501で、以下結果です。

0xee101bae(-33) 裏ID: 00489
1件見つかりました

んんnんんn 2010/03/17 00:14 御三家からのsidで色違いを試してみたところ、
裏IDは「36205」であっていました。一応確認ということで報告です。
とりあえず御三家ツールのおかげでsid特定できました。
ありがとうございました。

oupooupo 2010/03/17 20:29 >fndsさん
協力感謝です。
同じくそのゲーム開始時の初期seedから2000日分のくじ番号を出力してみましたが、やはり39418 43915 47556は見つかりませんでした。

んんnさんとfndsさんの結果ともに、ゲーム初期seedから2000日分のくじ番号とくじ番号3日分から遡った2000日分のくじ番号から似ている値(16進数で一桁だけ変わっている値)がないかを調べてみましたが、ありませんでした。
ううーん、手詰まりです…。

とにかく、んんnさん、fndsさんご協力ありがとうございました><

クローバークローバー 2010/03/17 23:58 このような
裏ID特定や乱数調整を
携帯で行うことは
無理なのでしょうか?

oupooupo 2010/03/18 20:09 僕は携帯を持っていないので詳しいことは分かりません。
「くじ番号から裏ID検索」についてはiPhoneのような先進的な携帯なら動くかもしれません。それ以外の携帯は多分無理かな?

乱数調整については、こちらに携帯用のツールがあるようです。
http://pokesorahp.webdeki-hp.com/sub7.html

自分でツールを使わなくても初期seedや日時設定を載せているブログがあるのでそれを見ながらやるという手もあります。

色違いに会いたい名無し色違いに会いたい名無し 2010/03/18 23:45 御三家ツールで裏ID特定できました!本当にありがとうございました。
表IDは39237で以下結果です。

0xcf0c2367(-47) 裏ID: 14634
1件見つかりました

やさいやさい 2010/03/19 02:03 エラー HTTPステータス: 12152と出て検索結果表示されませんでした><
解決方法とかありますか?

oupooupo 2010/03/19 09:36 ステータス12152とか初めて見ました。

12152 ERROR_HTTP_INVALID_SERVER_RESPONSE
The server response could not be parsed.
http://support.microsoft.com/kb/193625

ということで、サーバーからのレスポンスをパースできませんでしたってことみたいですね。
そのときだけサーバーの調子が悪かったのかもしれません。もう一度試してみて同じエラーが出たらまた報告してください。そのときはOSとブラウザのバージョンもお願いします。

kidkid 2010/03/19 19:34 くじ番号からの裏ID検索を試してみました。もともと色違いの自然発生で裏IDは特定できていたのですが、くじ番号からは発見できませんでした。発売日に買って、それほど時刻を変えたこともなかったので500回前くらいで妥協しました。IDは表:26958 裏:10170です。これは、色乱数で確認済です。参考にしていただければうれしいです。

kidkid 2010/03/19 19:57 申し訳ありません。記入漏れがありました。連続のくじ番号は 30285 63555 58410 でseedは0x5a7adbeaでした。後で2000回前まで検索しましたがやはり見つかりませんでした。できれば友人にもこのツールを紹介したいと思っているので、よろしくお願いします。

クローバークローバー 2010/03/19 22:50 ありがとうございました。

pippopippo 2010/03/20 01:09 はじめまして
宇津木に御三家をもらう前レポートしてリセット繰り返したSSだと裏IDは出ませんでしたが、何もやってないHGだとちゃんと出ました。
なんか関係あるんですかね?

oupooupo 2010/03/20 11:01 >kidさん
表IDが26958で裏IDが10170になる初期seedは0xc0121907と0x2616c7e6の二通りありました。
下4桁の大きさ的に考えて恐らく0xc0121907の方が正解っぽいですけど一応両方調べてみました。
どちらも2000日分のくじ番号の中に見つかりませんでした。似ている値も見つかりませんでした。
やはり、日替わり乱数のseedが突然変化することがあるようです。
突然変化する条件と、そのとき値がどう変化するのかがわかれば対応できる可能性があるんですけどそれも分からないですし…。
残念ですが、やはり見つからないときはこのツールでの特定は諦めてくださいとしか。

>pippoさん
ええと、それは「くじ番号から裏ID検索」と「御三家個体値→裏ID」のどっちの話ですかね。
くじ番号から裏ID検索は御三家貰う前のリセットは関係ないはずです。
御三家個体値→裏IDは御三家貰う前にリセットしていたら見つかりません。

clothcloth 2011/06/21 22:54 十万回前まで検索したのですが引っかからず、それ以上計算したらエラーが出ました……

たむらたむら 2011/09/11 06:06 ツールが使えません(´・ω・)
調整中ですか?

ポケモンw ポケモンw  2011/09/11 19:38 このサイトを見つけたときはうれしかったんですが 使ってみると一回前からの結果をサーバーから待ってますとなり 進みません「泣き顔」 もしよかったら メールの方に裏IDを知らせてもらえるとうれしいです 番号は 12553 11214 26502の3つです よろしくお願いします

SS 2011/09/28 18:47 こんばんは。はじめまして
こちらのツールには何度もお世話になっています。久々に使わせて頂こうかと思ったのですが、リンク切れのようで><
削除されてしまったのでしょうか…?(´・ω・`)

かえるかえる 2012/03/18 10:33 ツールページはでてきましたが、いざ、くじ番号を入れ、表IDを入れ、検索を押してもナーんにも反応が在りませんでした・・・。どうした物でしょうか?なお、返信はこのページで構いません。初記入者ですが宜しくお願い致します。

hayateMT117hayateMT117 2012/10/22 15:05 はじめまして〜hayateMT117(ツイッター名)ですいきなりですみません裏IDの計測をお願いしたいのですが〜

hayateMT117 hayateMT117 2012/10/22 15:08 番号は20402,14530,02784表IDは59194ですお願いしますm(><)m

紫 2014/08/03 21:14 初めまして。今更ですが裏IDの計測をお願いしたいのですがよろしいですか?

Connection: close