編集部イチオシ

SFC風来のシレン学会員の集い(更新2)

次の研究テーマのアイデア等色々。 5月5日、19:30頃追記1。 5月9日、08:15頃追記2。
35
前へ 1 2 ・・ 10 次へ
TokusiN @toku51n

@gm_II_ SFCがマスクROMのゲームというのも大きく影響しているんですよね・・・。CD媒体ならばプログラムもRAMにロードされるので数バイト書き換えるだけで任意コード実行の起点を作れるのですが、プログラムカウンタをROM領域から逸脱させるのがまず大変。

2021-04-25 09:59:01
gm:II@風来のシレン学会 @gm_II_

@toku51n それってそうなんでしょうか、SFCのメモリマップってバンクを変えるだけでROMからRAMに変えられる、と(勝手に)解釈してるので、バンク含めた3バイトのジャンプさえできればなんかどうにかなる(曖昧)とか思ってました。

2021-04-25 10:04:22
gm:II@風来のシレン学会 @gm_II_

@toku51n あとSFCって本体にROMをコピーされてたりしないんでしょうかね。であればデバッグモードのフラグ立てたりできるかもとか思ってましたがうーん

2021-04-25 10:04:35
TokusiN @toku51n

@gm_II_ あれ?シレンの任意コード実行の起点って「任意コード実行の起点を作るセーブデータの回想を再生する」で良いのでは?セーブデータの再選択でリセットされないメモリ領域から起点を探せばいいからサーチの難易度は下がりそう。

2021-04-25 10:09:13
gm:II@風来のシレン学会 @gm_II_

@toku51n 確かにそうですね。 問題はなんというか回想バグが敵に回ることです。実践動画のおまけにも書きましたが、異常座標の回想はうまく再生されません。そこまで加味して行動を調整する必要があって、そのためには「文字表示ごとに変わるメモリ」の仕様を厳密にする必要がありそうです。

2021-04-25 10:13:09
TokusiN @toku51n

@gm_II_ なるほど・・・。そうなると、解決策は細かく再ロードしながら回想側で正しくなるように調整するか、いっそのことメモリの変化が少ない日記の再ロードの時に任意コード実行出来るような操作を作って、呪文のようにそれをトレースするか、ですね。

2021-04-25 10:18:14
gm:II@風来のシレン学会 @gm_II_

@toku51n そうなりますね・・・ん?でももしそれができるなら、 回想バグを異常座標で起こせるわけなので、「罠を拾う」は大変容易になるわけですよね 意外と出来上がりはシンプルになるのかも

2021-04-25 10:27:19
TokusiN @toku51n

@gm_II_ なるほど。乱数が絡まない、指定したアイテムを倉庫に詰めて、指定した順序の操作を正しく行うだけで出来る任意コード実行が可能かもしれないですね。

2021-04-25 10:35:05
gm:II@風来のシレン学会 @gm_II_

@toku51n 日記1がトリガー(行動保存)で、 日記2の道具か倉庫が2回目のジャンプ領域とエディタで、 日記3が丸々コード保存領域、みたいな。 なんか行けそうな気がする

2021-04-25 10:38:19
TokusiN @toku51n

@gm_II_ 任意コード実行によって遊ぶ為の日記が欲しいので、任意コード実行の起点にする日記は出来れば2つ以下にしたいです。それでも「選択するとバイナリエディタが実行される風来日記」は理論上は作れそうですね。

2021-04-25 10:48:15
gm:II@風来のシレン学会 @gm_II_

@toku51n そっか、そうですねえ。 まあでもそれは、日記2の使わないところにコードを書けばいいって話ですかね。 そういえばSRAMにチェックサムに関わらない未使用領域が結構な量あったな…そこ使えば日記3つ分容量が稼げるのかも。セーブロード毎にで消去されないなら、ですが

2021-04-25 10:56:06
TokusiN @toku51n

@gm_II_ 風来日記2を、風来日記1の倉庫の中身を実行するように細工 風来日記1の倉庫のアイテムを調整しながら、風来日記3や未使用領域にバイナリエディタを作成 風来日記2の倉庫を書き換えて風来日記3に飛ぶように設定 このステップで風来日記1を残したままバイナリエディタが作れそうですね。

2021-04-25 11:14:25
gm:II@風来のシレン学会 @gm_II_

うえっ 改めてみたら、風来日記のチェックサムに関わらない未使用領域って日記1つあたり2kBもあんの!? ここにちゃんと記録が残るなら、テトリスくらいは作れるんじゃないかほんとに

2021-04-25 11:10:09
TokusiN @toku51n

@gm_II_ なるほど。バイナリエディタを作ってそれで2KBの領域にテトリスを書き込み、そこにジャンプするように加工すれば風来のシレンがテトリスになりますね!

2021-04-25 11:15:51
gm:II@風来のシレン学会 @gm_II_

@toku51n わくわくしてきましたね。 フラグマイニングのときもそうだったんですけど、研究が一気に進むのは実は新事実公開の直後なんですよね。 それが形になって発表できるのは、相変わらずいつだかわかりませんが。

2021-04-25 11:18:05
TokusiN @toku51n

@gm_II_ バイナリを格納するための風来日記は、行動データ領域をそのまま空き領域として使えるはず。

2021-04-25 11:18:04
gm:II@風来のシレン学会 @gm_II_

@toku51n 行動データ終端の数値と、行動データ部分のチェックサムとで折り合いをつける必要はありますが、ま多分些細な調整ですかね。事前に手計算する必要はありそうですけど。

2021-04-25 11:20:31
TokusiN @toku51n

@gm_II_ 終端より先ってデータが残ったままチェックサムの対象外になりませんか?

2021-04-25 11:21:29
gm:II@風来のシレン学会 @gm_II_

@toku51n なります!「終端の場所が何バイト目か」という値が別途保存されているので、そこさえ変えてしまえば多分どうとでも、ですね。

2021-04-25 11:22:19
TokusiN @toku51n

@gm_II_ 1回も行動していない風来日記を用意して、何もせずに終端より先をバイナリエディタの格納先にしてしまえば良いんですよ。うっかり歩いた瞬間にバイナリエディタが壊れないようにある程度のバッファは用意しておいた方が良いかもしれません。

2021-04-25 11:24:24
TokusiN @toku51n

@gm_II_ 任意コード実行の起点の日記も、任意コード実行の為の行動から先のメモリは使えるはず。こっちはロード出来ない関係でうっかり行動してしまう心配が無いからかなり安全。

2021-04-25 11:26:04
gm:II@風来のシレン学会 @gm_II_

@toku51n たしかにたしかに。行動コード領域は1800バイトくらいでしたっけ。これもかなり行けそうですね。 さすがにDQ1(32kB)には届かないか。というかDQ1はコードだけじゃ動かないですけど。

2021-04-25 11:28:23

ROM領域は変えられるか?NP版なら?

asa-505さん

asa-505 @Ikasaku

…ニンテンドーパワー版のシレンならROM部分をゲーム中から無理矢理書き換えたりとかできないのかな?

2021-04-25 10:21:40
gm:II@風来のシレン学会 @gm_II_

@Ikasaku どうなんでしょう。できそうな気もします。けどそれってもしかして不可逆?ハード側で対処がどれくらいなされているか、ですが・・・ そういえば今回のシリーズのどっかで、 「switchでSFC版遊べるようにしてくださいNintendoかCHUNSOFTさん」って書くつもりだったのに忘れてた

2021-04-25 10:26:22
前へ 1 2 ・・ 10 次へ