2013-08-01から1ヶ月間の記事一覧

FF2 の解析をあきらめた

ldy abs,x と ldx abs,y が存在するのを知らなかったのは前回書いたが、それと対になるであろう sty abs,x と sty abs,x は存在してないから気づかなかった(言い訳)。後継の互換CPUはあるかもね。魔法の本を装備して攻撃するやつで、フリーズをするやつをみ…

名前欄に6502プログラムを書きたいその3

先日のやつはループカウンタの挙動でセーブデータをもう1つ使用せねばならないということで、ボツ。普通に考えれば3byte書くだけなので手の込んだ index addressing とかいらん。 org $6142 ldy xxxx ;contains data 1, vaild address bne $6102 org $6102 s…

FF3 の TAS が投稿された

http://tasvideos.org/forum/viewtopic.php?t=14333説明を見るに私の書いたことが入ってる気がするので、ご参考になったみたい。($7af0) = 0 は装備を替えたときに更新されてしまうので、町の一歩手前でメニューを開くのはなにか別の理由がある気がする。い…

名前欄に6502プログラムを書きたいその2

さくじつ書いたプログラムをアセンブルして、バイナリが出てくるので cheat として名前欄に手打ちする。 制御文字が入っていていくつかのバイナリを直接名前欄に書くことが出来ない。 ここまでは想定内で、0x00-0x3f, 0xc0-0xff あたりが使えない。 リストア…

名前欄に6502プログラムを書きたい

FF3 はピアノ演奏を回避する以外にプレイ時間を縮められないので、FF2 で indirect jump (下記みたいの)を調べてみたら、 address としては $6300 台の候補がでてきた。でてきたが、上の処理をたどるとその変数はでないことが判明。ユーザーデータなら、PC …

FF1 の話

勢いで動画を作ったものの、実機動作として貼ったURLの動画を転用しているので承認待ちの状態です。wiki にも詳細を書いておいたので承認が得られればそちらに貼ります。が、ちょっとだけお見せします。まずかったらそのうち消します。 比較して並べてみると…

FF3 の RAM 破壊の話

不正なジョブ番号のコマンド実行から、 $6000-$6fff 付近へ indirect jump して、名前欄に書いた 6502 プログラムを実行しようと思ったが、そんなジャンプ先はなかった。index register の範囲が 256 byte だったため。惜しい。動画の RAM 破壊の解析をやっ…

FF2 も調べた

zeropage のほうのメモリアドレスが全く同じだった。 $006c script execute flag (0:停止, 1:実行, その他:何かしらイベント) $0072 $script execute pointer (little endian 16bit) FF3 と異なる部分はスクリプトの実行フラグは $006c は 1 だけ。戦闘開始…

FF3 でバグを使って最速クリアする方法その3 (おまけ)

正常な利用での script execute pointer を調べた。 0xaf3b くらやみのくもの戦闘の直後。($0078) = 3 にする必要がある。これをやらないとイベントはある程度すすむものの、セリフなどの文字列がおかしくなる。$0078 は間接的な意味で bank とも言える。 0x…

FF3 でバグを使って最速クリアする方法その2

メモリアドレスの絞り込みが出来た。 イベントフラグ $74d0 -> $0050 に書き込まれた値で例外的なイベントが発生する。値は下記のようである。 0x00: なにもおきない 0x01-0x7f: お店 0x80: opening 0x81-0xff:「さいしょは なにもない むのせかいだった...…

FF3 でバグを使って最速クリアする方法

FF4 の 64 階層バグの動画をみていたく感動した。動画投稿者の方の web サイトを見たらいろいろ書いてあったので、ファミコンの FF3 のバグを起こしてエンディングへ行く方法を mess のデバッガで調べた。http://www.nicovideo.jp/watch/sm16743542この動画…