fc2ブログ
誰得RTA研究室
趣味について考えたことたまーに書く めんどくさいけど調べると面白そうっていうことも募集中です    代わりに調査しちゃうかもね( ・´ー・`)
むつめ祭RTA企画裏話~企画編~
企画詳細はこちらの公式ページから→
http://www54.atwiki.jp/st_rta/

気がつけば12月
はやくもあの怒涛のむつめ祭から3週間が経ったというのが驚きです

さてようやくReTAの想定解が出そろったところでちょっとした裏話を小出しにしていきたいと思います
今回は企画編ということで3日間この内容に収まった経緯みたいなのを紹介したいと思う次第でございます

1日目のポケモンBW2RTA並走
これは単純に自分が並走したらおもしろいなと思った作品で今までにリアルで並走会が実施されていないものをやりたいなーと思ったところがスタートなわけです
特にポケモンBW2というのは走る人によってチャートが異なって見た目もおもしろくなるほか、タイムとしてもどれが勝ってもおかしくないというのが非常に好きで選ばせていただきました(これはほんとに独断で決めちゃってごめんねナナカさん!)
プレイヤーも交流のある人がすぐに快く引き受けてくださったおかげですごく助かりましたー

問題となったのがDSは何が起きてるのか見づらい!っていうところでこれはReTAで過去にもいろいろと改善方法を探していたところだったんですが仮にプロジェクターを使ってスクリーンに映すならキャプボを1台のPCにたくさんつなげないか(やってないのでわからない)だの外部ページからミラーはどうか(外部への配信は大学の方針で禁止)だのいろいろと意見が出たんですがここでふってきたアイデアがスカイプが最近複数人でビデオ配信ができるようになったらしいとのことで内部でつなぐ分なら問題なかろうというもの(烏鳥さん発案だったと思う多分)
実はあれぶっつけ本番だったんですが意外とうまくいったのでそのままReTAにも使うことになりましためでたしめでたし
ちなみに映す用の偽トロはDS界のDQRTAプレイヤーでおなじみのゆうさーさんと烏鳥さんから借りました!ほんとありがとうございました!(RTAはよ)
余談ですがプロジェクターは定価10うん万する使用時間が少ない状態のよさそうなものをLANユニット付きで8000円で落札できたのでとんでもない掘り出し物でした
RTAイベントにご使用したい際は私にご連絡くだされば日本全国お貸ししますので新しいイベント待ってます^^


2日目のRTA実演会
これに関しては第一の目標として昨年が自分のコネクションとしてDQ勢がメインになってしまったので今年は幅広くジャンルを集めたいってのがありました
まあ最終的にはメンツが豪華すぎて逆に自分が焦ってしまったわけですが

まずお手伝いしてくれると言ってくれた烏鳥さんがDQじゃないRTAということでクソゲーオブザイヤー受賞作四八(仮)のRTAしてくれるといったのがはじまりだったきがします
さらにお手伝いのた~ひゅさんがFF勢にコネクションがある方だったのでそちらでだれか拉致って来られないかとお願いしたところありのさん、ゆじんさんを含めてFF4~6を実演してくれるとのことでFF勢を確保
DQ勢でも今年もRTA企画やりたいなーとツイッターでぼやいたところでPS2DQ5ニコ生記録持ってるムウさんが声をかけてくれたので確保
ここらへんでもうすでにかなり豪華なメンツ(烏鳥さんがやめたがるレベル)

しかしなにより一番驚いたのがロマサガの記録持ってるboxさんが声をかけてくれたということ
しかも去年からこの企画を知ってるらしく2年目にしてついに外部にも声が届いているという実感がわき涙ぼろぼろでしたねまじで
それにとどまらず去年に実演してくれたつながりで今年もお願いしたところルイージマンションとまさかの四八(仮)並走を引きうけてくれたぜらすさん、ナナカさんがロックマン勢に声をかけて実現したロックマン2RTAリレー、突然のゆじんさん都合につき来れないトラブル(来年の実演を期待しております)、その穴埋めを快く引きうけてくれたユーリルさんなどなど

思い返せばよくここまで1年でつながりが広がったなと感慨深いものがありますね
そして最後に蛍火持ちという名前ができるほどのスーパーメトロイドRTA界の権威である蛍火さんと、蛍火さんが実演やってくれるなら実演してもいいよとのことで蛍火さん実演計画の発案者であり、某DQ2旧TAS超えを実機で達成した夢幻斎さんというやばいコンビをお迎えしたところでもう今回の企画はやばいという確信に至りましたね
たくさん企画はやってきましたが計画段階でここまでわくわくさせられる企画というのはいままでなかったですね
本番もリスナー目線で一流のプレイヤーの実際のコントローラーさばきを見れたのは感動でした;;

3日目のReTA
去年のReTAの打ち上げのときに7で来年やりますって言ったのが全ての始まりだった気がします
問題作成の裏話とかは長い話になるのでまた別の記事にしたいと思いますがお手伝いさんとしてナナカさん、doranさん、熟練度稼ぎ奴隷としてやとったはずがいつの間にか問題作らされていたBANRIさんには感謝ですね!
なんでこのメンバーが集まったのかはもう忘れましたがきっと裏話でそこらへんを語ってくれるでしょう

では長くなったのでまた次の記事で会いましょう
>>続きを読む
スポンサーサイト



FF6で電池を抜かずにエンカを再現する方法まとめ~今北産業編~

結局何が言いたいのかを3行でまとめます

128回ロードすれば同じエンカが出せる
エンカまでの歩数も同じ
RTAはよ

電池なしで限られた再現しか作れなかった中安全にいらいらするエンカを減らしつつ稼ぎを減らしつつ稼ぎの効率化ができるっぽいので気が向いたらやってみます
あとガチでやるならRetrode2みんなで買いましょう!(ステマ)
仕様とかで間違ってるとこあったりわからないことがあったらぜひ御茶麒麟のコミュニティかツイッターでお聞きください!(宣伝)
>>続きを読む
FF6で電池を抜かずにエンカを再現する方法まとめ~検証編~

今回はFF6の様々な仕様と今回の再現方法の関連性について調べてみた番外編でございます

検証1:全滅するとテーブルが読み込まれるのを利用して現在のテーブル位置を上書きできる

FF6は全滅すると最後にセーブしたときのテーブル乱数を読み込みます
これを利用して例えばニューゲームしたときによいエンカテーブルになる乱数を持つデータをロードして全滅して再開、そのテーブルを記憶させリセットしてニューゲームできないかと考えました
結果からいうとできませんでした!
結局ゲーム内の処理としてはロード回数を記憶しているらしくそれに毎回+Eしていくようです
乱数テーブルと参照していたときにロード回数の保存場所と各セーブデータのテーブルの保存場所を見つけたのでメモ代わりにおいときます

s01FF1 ロード回数の保存場所(初期シード値)
s009A2 セーブ1でセーブした時のテーブル保存場所(全滅時はここからロード)
s013A2 セーブ2でセーブした時のテーブル保存場所
s01DA2 セーブ3でセーブした時のテーブル保存場所

2019年1月12日追記:全滅時は現在のセーブデータのテーブル保存場所からロード

ちなみに低レベル攻略や極限低歩数とかで理想的なエンカパターンを引くためにエンカ調整をした後に全滅しても、リセットした後にもう一度全滅し直さないと同じパターンが出現しないのはこのためみたいですね
再現ありRTAでも同様でボスでツンを引いてすぐにリセットを押してしまうと今後の再現パターンがずれてしまいリカバリーに気を使うか、次の雑魚で全滅を選ばなくてはならなくなるので場合によっては自滅による全滅を選ぶ必要があるかもしれないですね


検証2:ニューゲームした際の危険値は前にロードしたデータの値を引き継いでいる

前回のブロマガでハードリセットした際の危険値は55で固定されているという話をしましたがリセットボタンを押すだけのソフトリセットでは危険値の値を引き継いでいる可能性が示唆されました
それはメモリービュアーでとりあえず今までのメモリ値を列挙しエンカウントとリセットを繰り返していたときのこと
リセットをしたのに危険値の値が初期値に戻らないことがあることに気が付きました
どうやらソフトリセットをするだけの通電を残した状態では危険値の値が初期値に戻らず前のセーブデータの値を引き継いでいる模様
つまりハードリセットでは55という大きな数字でエンカウント判定をはじめなければならないところを0からスタートすることも可能であるということですね
そしてこの危険値もエンカテーブルと同様にセーブデータごとに保存されておりこれはロード回数によらないので危険値0のデータを読み込んでリセットすればいつでも危険値0からニューゲームができる!

というのもあれなのでみなさんRTAをするときはきちんと電源を切ってからスタートするようにしましょう


検証3:現在の初期加算値から次のエンカを予想する

さて実際にエンカを予想するにあたってまず現在の初期加算値をRetrode2で確認し、FF6ラスボス前のデータを実機で起動
そのときの値が+Eした後で

乱数INDEX = 115
初期加算値 = 115

でございます
このフロアのエンカウント内容は

グループA(値が80未満) アウトサイダー、アウトサイダー、ヴァージニティ
グループB(値が80以上160未満) ようじんぼう、ようじんぼう、ブラックフォース
グループC(値が160以上240未満) あくまのきし、ようじんぼう
グループD(値が240以上)ブラックフォース、ブラックフォース

となっており
これをもとに遠藤さんのサイトにある乱数テーブル表から値を引っ張ってきたうえで

下の乱数生成ルーチンの式にあてはめると
(乱数テーブルの値 + (加算値 + rounddown(乱数INDEX/ 256 )* 23)mod256

乱数INDEX、初期加算値、乱数テーブル値:生成された乱数 エンカグループ
115,115,156:15 A
116,115,150:9 A
117,115,172:31 A
118,115,180:39 A
119,115,188:47 A
120,115,3:118 B
121,115,222:81 B
122,115,84:199 C
123,115,220:79 A
124,115,197;56 A
125,115,216:75 A

そして実際のエンカウントが

アウトサイダー、ヴァージニティ
アウトサイダー、ヴァージニティ
アウトサイダー、ヴァージニティ
アウトサイダー、ヴァージニティ
ようじんぼう、ブラックフォース
ようじんぼう、ブラックフォース
あくまのきし、ようじんぼう
アウトサイダー、ヴァージニティ
アウトサイダー、ヴァージニティ
アウトサイダー、ヴァージニティ

エンカウント判定は初期テーブルから1個進んだところから判定がはじまるみたいですね
INDEX116以降は1エンカ目から予想通りのパーティーが出てきました
これで君もエンカウントマスターだ!

次は結局今回何が分かったかを3行でまとめます

参考サイト

Index of /~s-endo/
http://s-endo.skr.jp/ff6rndenc.html



>>続きを読む
FF6で電池を抜かずにエンカを再現する方法まとめ~理論編~


はじめるまえにこのブロマガはただ理論を書いていてマニアックな人以外にはおもしろくない内容だと思うので次の記事を待つのをおすすめするのです
ていうか自分FF勢じゃないのでもっと詳しい人いたら教えて下さい

調査環境
Retrode2
通常プレイクリアしたFF6データ
純正SFCコントローラー
snes9x ver.1.51

きっかけは最近ST実演会でた~ひゅさんが砂漠でいいエンカが出ず狩りに苦戦しているところで大昔に聞いたFF6の仕様を思い出したからなんですが
それは電池は抜かずともエンカ再現ができるというもの

せっかくRetrode2持ってるのに使わないのはもったいないので自分のデータを用いて調べることに
ちなみにRetrodeの使い方に関してはブイハチさんのブログを参考にさせていただきました


まずそもそものエンカの仕組みを知らねばならんということで解析でお馴染みの遠藤さんのサイトを参考にしまして仕様のお勉強から
まあ難しいことが書いてありますが要するに乱数生成ルーチンで生成された乱数の大きさでエンカのパターンが決まるというもの
遠藤さんのサイトでも例に上がっているフィガロ周辺では

モンスターパーティ
A
00~4f80/256 (31.25%) デザートソーサー 2
B
50~9f80/256 (31.25%)アラクラン 3
C
a0~ef80/256 (31.25%)デザートソーサー, アラクラン 2
D
f0~ff16/256 (6.25%)デザートソーサー, アラクラン 3

となるそうな
んでもってこの乱数の生成に用いられているメモリがあるらしいとのこと
そこで重要そうなメモリの位置を生成ルーチンからピックアップしてみました

7E1FA2 = 現在の乱数テーブル位置
7E1FA3 = 加算値

おもにこの2つのメモリが用いられて乱数が作られているらしい
乱数テーブルは256通りの数字(16進数のFFまで)がランダムに並べられていてそれが1戦闘ごとに1つずつ進むので毎回エンカする内容が変わる
加算値も256通りあり、乱数テーブルに数字を加算するので乱数テーブルの位置が一緒でも加算値によりエンカ内容が変わる(加算値は乱数テーブルが一周するまで移動しない)
よってエンカ内容は256×256=65536のパターンをぐるぐる回っていることになるということ
つまり次のエンカ内容はシミュレーターでも作れば一応予想は可能であるが、乱数は移動できないのでまあ知ったところで通常プレイぐらいにしか使えないってのが残念な所
さらにサイトによると初期加算値と乱数テーブル位置はランダムであり通常はそこからシミュレートして現在地を見つける必要があるらしいのです
(ちなみに固定敵、獣が原はエンカウント方式が異なるので注意)

しかしここでメモリビュアーを見ていたところ初期加算値の移動に法則性があることに気が付きました
まずロード直後はふたつのメモリが同じであること
そして”初期加算値がロードするたびに+Eされている”ということです
(正確にはロード画面で+1されロードすると+Dされる
これは、はーしぇさんのブログに記されている半リセでエンカテーブルが変わる原因)
はじめはなにかほかに要因があるのかと思いセーブやロードするデータ選択等様々な試行を繰り返した所どうやら全てのセーブデータで同じ初期加算値を共有しロードするたびに+Eされていくようです(ニューゲームも例外ではない)
+Eしていくことを前提として考えるとちょうど128回で1周します
つまり初期加算値は 128通り 256通りあり、ロード直後のエンカパターンは 128通り 256通りしかない

12月21日追記:半リセ利用すれば1だけずらせるので256とおりですね多分
2018年10月20日追記:リセット後のロードの際には共有している加算値の値と乱数テーブル位置は同値になる

裏を返せば”128回ロードすれば同じエンカパターンに出会える”ということです
ここまで来たらエンカパターンを再現するしかねえといきごみ乱数生成ルーチンをみたんですが全く理解できない(アセンブラ言語勉強しとくんだった・・・)
ということでツイッターに救援を求めた所Maruさんが解読してくれました!
ほんとありがとうございました!

それをもとに実際に解析した乱数テーブルとエンカパターンから詳細な式を求めた所おそらく次のような式で乱数を生成してるとわかったしだいです

(乱数テーブルの値 + (加算値 + rounddown(乱数INDEX/ 256)* 23)mod256

これをもとに実機で今の乱数テーブル位置を特定し予想される今後の生成乱数を遠藤さんのサイトのエンカテーブルに当てはめた所10エンカぐらい先まで予想できたので多分だいたいあってるでしょう

ただここで気になる人もいるでしょう
そうエンカまでの歩数によるエンカズレですね
これが補正できないんじゃどこまでRTAでエンカパターンを信用していいのかわからない

なんとちょうど私が視聴していた動画にその解説がのっていました
それは現在おやつさんが投稿している

ひたすら楽してFF6シリーズ
のPart26です!(大ファンです)

どうやら同じような乱数テーブルと加算値から乱数生成ルーチンで乱数を作り出し、危険値と比べてエンカウント判定がなされているらしいとのこと
そしてその乱数テーブルはエンカ判定のあるマスを1マス歩くごとに1つ移動し、危険値は歩くごとに増加する模様
この情報を元にメモリを調査した所なんと歩数加算値の初期値とエンカ決定の加算値の初期値が一致していることが発覚

7E1FA1 = エンカ判定のテーブル位置
7E1FA4 = エンカ判定の加算値

つまり”エンカウントの内容とエンカウントするまでの歩数の乱数はロードのパターンでは変化しない”
ということがわかったわけです

しかしこれだけではエンカウントまでの時間は決定しません
大事なのはエンカするまでの時間に直結する危険値です
危険値の値もおやつさんの動画を見ると以下のメモリに格納されているのがわかります

7E1F6E~F = 危険値

この値は電源を切って付け直すと55に固定されていることからニューゲームを選んだ時点ではエンカまでの”最初のエンカウントまでの歩数もロードのパターン依存”であるといえます
それはすなわち”エンカウントする可能性のあるマップで全く同じ歩き方をすればエンカウントを再現することができる”ということです
(ちなみにこれには落とし穴があったので次の検証編で紹介します)

すごい遠回りになりましたがまとめると

RTAでニューゲームではじめる場合エンカパターンは 128通り 256通りあり128回ロードすれば同じパターンを引けるということですね

この調査をいままでの電池なし再現にあてはめると納得の行くところがいくつもあり、エンカ再現は記憶されているはずの加算値と乱数テーブルが常に0からはじまっているとしたら同じなのも当たり前ですね
また、加算値の動くタイミングがわかったことで半リセットなるものの正体もわかりました

次回はFF6でこれを用いてどんなことができるかというのを模索してみた検証編でございます




今回の調査にあたって以下のサイト、動画を参考にさせていただきました
この場を借りてお礼を申し上げます


参考サイト
Retrode2の使い方
ブイハチの徒然なる日常 2nd season
http://buihachi.blog.fc2.com/blog-entry-37.html

解析データ全般
Index of /~s-endo/
http://s-endo.skr.jp/ff6rndenc.html

電池抜き再現のやり方
はーしぇの気ままな日常
http://ameblo.jp/fhsoal/entry-11952643335.html

参考動画
エンカウントシステム解析
ひたすら楽してFF6 part26
http://www.nicovideo.jp/watch/sm23920956






>>続きを読む