SlideShare a Scribd company logo
ファイナル・ファンタジー2のデータを解析してみる
ファイナル・ファンタジー2のデータを解析してみる
ファイナル・ファンタジー2のデータを解析してみる
アジェンダ
● 普通に遊ぶ
● データをいじる
● やったね
● ごにょごにょする
普通に遊ぶ
熟練度上げ
● たたかう
● キャンセル
– 熟練度算出ざっくり式(想像)
● 敵Lv-熟練度+たたかうを選択した回数
● 熟練度が上がると弱い敵を1発殴るだけではダメ
ステータス上げ
● ちから
– こうげき
● すばやさ
– かいひりつ
● HP/MP
– 味方を殴る
ブラッドソード最強
● 16回ヒットで9割くらいのHPを吸い取る
– ダメージ算出ざっくり式(想像)
● 残HP*(ヒット数/16)*0.9
● 18回ヒットすれば100%以上を吸い取る
– 剣熟練度+ヘイスト(or バッカスのさけ)
● 18を上回れば即死武器
● ラスボスも一撃
た5
● ステータスが99を超える
– とうぞくのこて
– ねじりはちまき
– きんのかみかざり
ファイナル・ファンタジー2のデータを解析してみる
データをいじる
準備するモノ
● カセット
● レトロフリーク
● バイナリエディタが使えるパソコン
レトロフリークの仕様
● セーブデータが独自形式
– 変換ツールが公開されている
RPGは解析しやすいよね
● ほとんどの数値がパラメータとして確認で
きる
ユーザが入力できる値
● 名前
– 6文字入力できる
● 「ああああああ」ならセーブデータ上に6連続で出
現するはず
● 「あいうえおか」ならインクリメントされたデー
タが出現するはず
手順(1/2)
● フリオニールの名前を「ああああああ」
● マリアの名前を「いいいいいい」
● ガイの名前を「あいうえおか」
● レオンハルトの名前を「きくけこさし」
– 予想できる値を入れる
ファイナル・ファンタジー2のデータを解析してみる
手順(2/2)
● レトロフリークにセーブ
● パソコンにデータを移してデータ変換
● バイナリエディタで目grep
● 予想したパターンを探す
アタリをつける
● 流石にしらみ潰しはツラいので…
– 6回繰り返して出現する「0xXX」と「0xXX+1」
があるはず
– 名前の前後に偶然同じ数値があるかも知れな
いが…
条件に合う部分を抜き出す
$ xxd -c 1 ff2.sav | awk '$0=$2' | uniq -c | awk
'{if($1==6)print}' | sort -u
6 10
6 18
6 1b
6 20
6 3f
6 7c
6 7e
6 7f
6 8a
6 8b
6 e0
6 f8
6 fd
6 ff
2パターン出現
あ=0x7e い=0x7f
あ=0x8a い=0x8b
発見
00001390: 00 8a 8a 8a 8a 8a 8a 1e 00 1e 00 05 00 05 00 0a ................
000013a0: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
000013b0: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
000013d0: 00 8b 8b 8b 8b 8b 8b 14 00 14 00 05 00 05 00 05 ................
000013e0: 0f 05 0f 0a 05 01 37 03 00 7a 00 68 30 00 00 05 ......7..z.h0...
000013f0: 0f 05 0f 0a 05 00 00 00 01 01 0a 01 14 00 48 00 ..............H.
00001400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
00001410: 00 8a 8b 8c 8d 8e 8f 28 00 28 00 05 00 05 00 0f .......(.(......
00001420: 05 0f 0a 0a 05 01 46 11 00 7b 00 61 30 00 00 0f ......F..{.a0...
00001430: 05 0f 0a 0a 05 00 00 00 02 01 01 01 19 00 36 00 ..............6.
00001440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 ................
00001450: 00 90 91 92 93 94 95 1e 00 1e 00 05 00 05 00 0a ................
00001460: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
00001470: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
00001480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00001490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000014a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
文字コード
● 「あ」が0x8aだとわかった
● 「い」が0x8bだとわかった
● 「う」は0x8cっぽい
書き換えてみる
● バイナリエディタで書き換え
● データを変換
● レトロフリークに戻す
● ロード
ファイナル・ファンタジー2のデータを解析してみる
やったね!!
0x00-0xffまで書き出す
● 書き換えては変換してロード
– ひたすらやる
文字コード表
文字コード表からわかること
● 武器のマーク、ゴミ箱、罫線も文字
● アルファベットがない
– タイトルやエンディングで使ってる
– 0x00-0x3bの表示できない部分があやしい
– 表示モードがあって切り替えて使う?
他のステータスも見てみよう
並んでる
00001390: 00 e5 f1 ce df c2 f2 1e 00 1e 00 05 00 05 00 0a ................
000013a0: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
000013b0: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
000013d0: 00 e8 f1 ca ff ff ff 14 00 14 00 05 00 05 00 05 ................
000013e0: 0f 05 0f 0a 05 01 37 03 00 7a 00 68 30 00 00 05 ......7..z.h0...
000013f0: 0f 05 0f 0a 05 00 00 00 01 01 0a 01 14 00 48 00 ..............H.
00001400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
00001410: 00 50 cb ff ff ff ff 28 00 28 00 05 00 05 00 0f .P.....(.(......
00001420: 05 0f 0a 0a 05 01 46 11 00 7b 00 61 30 00 00 0f ......F..{.a0...
00001430: 05 0f 0a 0a 05 00 00 00 02 01 01 01 19 00 36 00 ..............6.
00001440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 ................
00001450: 00 f3 ce f6 e3 f2 dd 1e 00 1e 00 05 00 05 00 0a ................
00001460: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
00001470: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
並んでる
00001390: 00 e5 f1 ce df c2 f2 ff ff ff ff ff ff ff ff ff ................
000013a0: ff ff ff ff ff 01 46 0a 00 7b 00 53 31 00 00 ff ......F..{.S1...
000013b0: ff ff ff ff ff 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
アイテムも
00001390: 00 e5 f1 ce df c2 f2 1e 00 1e 00 05 00 05 00 0a ................
000013a0: 0a 0a 0a 0a 05 01 46 0a ff ff ff ff ff ff ff 0a ......F..{.S1...
000013b0: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
ステータスについてはわかった。
他はどうなんだ?
レトロフリークの仕様
● 暗号化された状態でロムが保存される
– 保存したロムは別のレトロフリークでは動か
ない
ごにょごにょする
ロムの中にもデータはあるハズ
● hexと文字コードをそのまま置換してみる
読める!読めるぞ!
データからわかること
● 0x18+0xXXでアイテム名に置き換わる
● 0x01は改行
● 0x00は区切り
「ウボァー」もあるよ
00 や っ た ! パ ン デ モ ニ ウ ム に   は い
っ た ! ! 00 つ い に   こ こ ま で や っ て
き た な ! だ が   18 EC を た お す 01 こ と
は で き ん ! し ね ! 00 18 F0 「 こ の   18
EC が   や ら れ る と は … … 01 し ん じ ら
れ … … ん … … 2 ど ま で も … お ま え に
… … 01 … お ま え は   い っ た … い   な
… に も の … … 01 ウ ボ ァ − 00 さ あ   だ
っ し ゅ つ だ ! ! 00 18 EF 「 よ く   ぶ じ
に か え っ て き ま し た ね 01 18 EB 「 つ い
に や っ た な ! お め で と う ! ! 00 ポ −
ル 「 よ く   か え っ て き た な   ほ ん と
「わたし」の使い方
● 0x18EC = わたし
が   あ り ま す 。 00 ミ ン ウ 「 18 EC に は
  き み の う ん め い が   み え る 。 01 そ
れ は   18 EC の う ん め い と も   か か わ
っ て い る … … 01 ま ず   18 2F へ い き な
さ い 。 01 そ れ が う ん め い を き り ひ ら
く   み ち に な る は ず だ 。 00 ふ ふ っ  
そ う で す 。 00 そ れ が   18 04 な の で す
ね ? ! 01 そ れ を   ま ち の ぶ き や に い
る   ト ブ − ル に 01 18 EC て く だ さ い 。
  あ あ   こ れ で   て い こ く と 01 た い
と う に   た た か え る わ ! ! 00 【 16 01
ファイナル・ファンタジー2のデータを解析してみる

More Related Content

PPTX
東方紅魔郷AI
PDF
Real-Time Semantic Stereo Matching
PDF
GPGPU Seminar (GPGPU and CUDA Fortran)
PDF
Scikit-learnを使って 画像分類を行う
PPTX
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
PPTX
論文読み会2018 (CodeSLAM)
PDF
お茶の水女子大学における情報系科目のオンライン授業
PDF
Object as Points
東方紅魔郷AI
Real-Time Semantic Stereo Matching
GPGPU Seminar (GPGPU and CUDA Fortran)
Scikit-learnを使って 画像分類を行う
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
論文読み会2018 (CodeSLAM)
お茶の水女子大学における情報系科目のオンライン授業
Object as Points

What's hot (20)

PDF
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
PPTX
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
PPTX
関東コンピュータビジョン勉強会
PDF
GPGPU Seminar (PyCUDA)
PPTX
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
PDF
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
PDF
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
PPTX
[DL輪読会]Let there be color
PDF
SORACOM を活用した IoT の先進的事例のご紹介 | 日本産業機械工業会環境ビジネス委員会
PDF
数独のアルゴリズムを考える ― 各種法の改善と高速化
PDF
[DL輪読会]Taskonomy: Disentangling Task Transfer Learning
PPT
レイトレ空間構造入門
PDF
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」
PPTX
ウェーブレットと多重解像度処理
PDF
[DL輪読会]"Dynamical Isometry and a Mean Field Theory of CNNs: How to Train 10,0...
PPTX
CEDEC 2011 コンピュータ・グラフィクス関連の最新論文紹介 ~Shape Matching法とその周辺技術~
PDF
SLAMチュートリアル大会資料(ORB-SLAM)
PDF
SLAMチュートリアル大会 Direct Sparse Odometry 紹介
PDF
ガイデットフィルタとその周辺
PPTX
【DL輪読会】"Instant Neural Graphics Primitives with a Multiresolution Hash Encoding"
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
関東コンピュータビジョン勉強会
GPGPU Seminar (PyCUDA)
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
[DL輪読会]Let there be color
SORACOM を活用した IoT の先進的事例のご紹介 | 日本産業機械工業会環境ビジネス委員会
数独のアルゴリズムを考える ― 各種法の改善と高速化
[DL輪読会]Taskonomy: Disentangling Task Transfer Learning
レイトレ空間構造入門
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」
ウェーブレットと多重解像度処理
[DL輪読会]"Dynamical Isometry and a Mean Field Theory of CNNs: How to Train 10,0...
CEDEC 2011 コンピュータ・グラフィクス関連の最新論文紹介 ~Shape Matching法とその周辺技術~
SLAMチュートリアル大会資料(ORB-SLAM)
SLAMチュートリアル大会 Direct Sparse Odometry 紹介
ガイデットフィルタとその周辺
【DL輪読会】"Instant Neural Graphics Primitives with a Multiresolution Hash Encoding"
Ad

Similar to ファイナル・ファンタジー2のデータを解析してみる (20)

PPT
フォントとカーネル Vmのあやしい関係
PDF
目grep入門 +解説
PDF
目grep入門
PPTX
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
PDF
素晴らしきメガデモの世界
PDF
Unicodeについて教えてgooでしつこくきいてみたよ♪
PPTX
Unicode文字列処理
PDF
情報の表現~コンピュータでの数値の表現
PDF
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
PDF
GoogleのSHA-1のはなし
PDF
KLab勉強会#6 発表資料
PDF
Motion qr
PDF
Playing with curses
PDF
いでよ、電卓!
PPTX
Capture the flag write up q13,q20,q21 for ss
PDF
バイナリ駄洒落コンテスト
PDF
アナグラのうた、サウンドシステム
PDF
テキストファイルを読む💪 第1回
PDF
UIDのことわかってますか? -フォーマット編-
PPTX
text analyzing
フォントとカーネル Vmのあやしい関係
目grep入門 +解説
目grep入門
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
素晴らしきメガデモの世界
Unicodeについて教えてgooでしつこくきいてみたよ♪
Unicode文字列処理
情報の表現~コンピュータでの数値の表現
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
GoogleのSHA-1のはなし
KLab勉強会#6 発表資料
Motion qr
Playing with curses
いでよ、電卓!
Capture the flag write up q13,q20,q21 for ss
バイナリ駄洒落コンテスト
アナグラのうた、サウンドシステム
テキストファイルを読む💪 第1回
UIDのことわかってますか? -フォーマット編-
text analyzing
Ad

More from (^-^) togakushi (16)

PPTX
成績管理の話 (続き)
PDF
ささみ麻雀部の紹介
PDF
手順書の話 Ver.0.3.0
PDF
仕事の捉え方の話 #ssmjp
ODP
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
PDF
Janog33.5
ODP
現場で役に立たないsudoの使い方
ODP
sshdのお話
ODP
tcpdumpとtcpreplayとtcprewriteと他。
PDF
KVM+cgroup
PDF
SSH力をつかおう
PDF
jenkinsで遊ぶ
PDF
Pakena #9
PDF
SSH力をつけよう
PDF
Sfstudy #2
PPT
ひとりsphinx
成績管理の話 (続き)
ささみ麻雀部の紹介
手順書の話 Ver.0.3.0
仕事の捉え方の話 #ssmjp
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
Janog33.5
現場で役に立たないsudoの使い方
sshdのお話
tcpdumpとtcpreplayとtcprewriteと他。
KVM+cgroup
SSH力をつかおう
jenkinsで遊ぶ
Pakena #9
SSH力をつけよう
Sfstudy #2
ひとりsphinx

ファイナル・ファンタジー2のデータを解析してみる