圧縮データのROMマップ更新+α
前回の記事で圧縮データの話をしましたが、圧縮データ展開処理が使われている箇所を探し、そのデータが何バイトあり
どこのアドレスに存在するのかを解析し、ROMマップを更新しました。
なんのデータなのかはまだ未解析なので「不明圧縮データ」としております。
さて、話は変わりまして、先日遅ればせながら「レトロフリーク」というハード互換機を購入しました。
ROMをインストール(吸い出し)出来るのと、パッチファイルが当てられる(ハックロムで遊べる)のが個人的に
嬉しい機能だったので購入。
カセットをインストールしているとスーファミのカセット挿入ソケットがカセットを抜くときメキメキいう…
丁寧に抜き差ししていたが、半分ほど終わったところでソケットのピンが破損…
うーん、壊れやすいのはいかんね!
スーファミというハードが如何に子供が扱うかを考えて作っていたハードかと思い知らされました。
うん、吸い出さなくてもROMがあればプレイ出来るようですね。
そんなわけでFF6を入れて、パッチを当てたところExhiromにも関わらず起動!!
いいじゃない!!ハードの脆さ以外は高得点だ!
これで自分の改造したROMを実機(?)で遊べる!
まぁ完成はいつになるやら…
解析ばかりしていて改造が全然進まず6~8年経ってらw
いっちょ解析やめて改造の方を進めるのもありかな!
そうやってモチベを少しでも上げていこう。
あ、解析結果をうpしときます。
誰かの役に立てればいいがw
解析結果
あ、今回から編集するの面倒だったので「FF6_Maker.xlsm」というファイルにROMマップがあります。
色々作成中のものがありますが気にしないでください。
どこのアドレスに存在するのかを解析し、ROMマップを更新しました。
なんのデータなのかはまだ未解析なので「不明圧縮データ」としております。
さて、話は変わりまして、先日遅ればせながら「レトロフリーク」というハード互換機を購入しました。
ROMをインストール(吸い出し)出来るのと、パッチファイルが当てられる(ハックロムで遊べる)のが個人的に
嬉しい機能だったので購入。
カセットをインストールしているとスーファミのカセット挿入ソケットがカセットを抜くときメキメキいう…
丁寧に抜き差ししていたが、半分ほど終わったところでソケットのピンが破損…
うーん、壊れやすいのはいかんね!
スーファミというハードが如何に子供が扱うかを考えて作っていたハードかと思い知らされました。
うん、吸い出さなくてもROMがあればプレイ出来るようですね。
そんなわけでFF6を入れて、パッチを当てたところExhiromにも関わらず起動!!
いいじゃない!!ハードの脆さ以外は高得点だ!
これで自分の改造したROMを実機(?)で遊べる!
まぁ完成はいつになるやら…
解析ばかりしていて改造が全然進まず6~8年経ってらw
いっちょ解析やめて改造の方を進めるのもありかな!
そうやってモチベを少しでも上げていこう。
あ、解析結果をうpしときます。
誰かの役に立てればいいがw
解析結果
あ、今回から編集するの面倒だったので「FF6_Maker.xlsm」というファイルにROMマップがあります。
色々作成中のものがありますが気にしないでください。
スポンサーサイト
起動~ムービー再生までの処理解析
色々忙しいと中々進まない。
まぁそんなことは置いといて解析結果だ!
今までタイトルムービーやオープニングムービー、魔大陸浮上ムービーなどムービーはどのように処理され
どこにデータがあるのかさっぱりだった。
最近解析した起動からの処理でオープニングムービーのイベントコード解析を行いようやく分かりました。
ここの「LAB_C26803」を検索して進んでいくと下のような処理がわかる。
ここでRAM領域にジャンプしているのがわかる。
この「JMP $7E5000」の処理の前「JSR LAB_C26828」のサブルーチンで圧縮されたプログラムがあり
これを$7E5000に展開することで、RAM領域へ飛ばすことが出来るのだ。
さらにこの$7E5000に展開されたプログラムを解析していくと以下のような処理がある。
先ほどの「JSR LAB_C26828」のサブルーチンの中にも「LAB_C2FF6D」という処理があり、このサブルーチンが圧縮データの展開プログラムとなる。
処理内容は「$F3-F5に展開前データアドレス指定、$F6-F8に展開先アドレス指定」というもので、上の処理だと
$D8F000のデータを$7F0000に展開するということになる。この$D8F000が実際のムービーデータになる。
これが展開されたRAM領域をバイナリに落とし込んで、yyで読ませた結果が下の画像になります。

タイトル画面の雲空が画像としてわかるのと、オープニングの魔導アーマーのパーツがわかると思います。
以下解析結果です。
解析結果
まぁそんなことは置いといて解析結果だ!
今までタイトルムービーやオープニングムービー、魔大陸浮上ムービーなどムービーはどのように処理され
どこにデータがあるのかさっぱりだった。
最近解析した起動からの処理でオープニングムービーのイベントコード解析を行いようやく分かりました。
;##############################################################################
; ■【イベントコード:A9】タイトル画面を表示
; 【呼び出し時状態】
; A:8bit 0x0000
; X:16bit 0x00E8
; Y:16bit 0x0000
; P:enVMxdiZc
; DB:
; D:
; 【処理概要】
; 1:
;##############################################################################
LAB_C0B89B:
;============================================================
; 1:
;【変更されるメモリ】
;
;【処理解説】
; ・
;============================================================
;---------------------------------------
; ■
;---------------------------------------
JSR LAB_C00505 ; ■0ページメモリを退避
JSR LAB_C00374 ; ■DMA無効、HDMA無効、スクリーン初期化、割り込みフラグ無効、割り込み不許可
JSL LAB_C26803 ; $C26803 ■タイトル画面ムービーの展開
JSR LAB_C00515 ; ■0ページメモリを復帰
JSR LAB_C00374 ; ■DMA無効、HDMA無効、スクリーン初期化、割り込みフラグ無効、割り込み不許可
JSR LAB_C00573 ; ■Vblank(JSL LAB_C00182)、ハードウェア信号割り込み(JSL LAB_C00262)時処理変更
LDA $0200 ; A = $0200
AND #$80 ; A = A & #$80
STA $1A ; $1A = A
LDA $1EDF ; A = $1EDF
AND #$7F ; A = A & #$7F
ORA $1A ; A = A | $1A
STA $1EDF ; $1EDF = A
JSR LAB_C00386 ;
LDA #$01 ; A = #$01
JMP LAB_C09A91 ; ■イベントコード実行中アドレスの進行
ここの「LAB_C26803」を検索して進んでいくと下のような処理がわかる。
LAB_C2680C:
JSR LAB_C26828 ; ■ムービー再生圧縮プログラムの展開
JMP $7E5000 ; $7E5000 ■タイトル画面ムービー再生プログラムへ
ここでRAM領域にジャンプしているのがわかる。
この「JMP $7E5000」の処理の前「JSR LAB_C26828」のサブルーチンで圧縮されたプログラムがあり
これを$7E5000に展開することで、RAM領域へ飛ばすことが出来るのだ。
さらにこの$7E5000に展開されたプログラムを解析していくと以下のような処理がある。
LAB_7E799B:
LDY #$F000 ; Y = #$F000 展開前データアドレス指定 :Y:0xF000
STY $F3 ; $F3 = Y 展開前データアドレス指定 :M:0xF000
LDA #$D8 ; A = #$D8 展開前データバンク指定 :A:0xD8 ($D8F000)
STA $F5 ; $F5 = A 展開前データバンク指定 :M:0xD8 ($D8F000)
LDY #$0000 ; Y = #$0000 展開先アドレス指定 :Y:0x0000
STY $F6 ; $F6 = Y 展開先アドレス指定 :M:0x0000
LDA #$7F ; A = #$7F 展開先バンク指定 :A:7F ($7F0000)
STA $F8 ; $F8 = A 展開先バンク指定 :A:7F ($7F0000)
JSL LAB_C2FF6D ; $C2FF6D ■圧縮データ解凍処理($F3-F5に展開前データアドレス指定、$F6-F8に展開先アドレス指定)
RTS ; サブルーチン復帰
先ほどの「JSR LAB_C26828」のサブルーチンの中にも「LAB_C2FF6D」という処理があり、このサブルーチンが圧縮データの展開プログラムとなる。
処理内容は「$F3-F5に展開前データアドレス指定、$F6-F8に展開先アドレス指定」というもので、上の処理だと
$D8F000のデータを$7F0000に展開するということになる。この$D8F000が実際のムービーデータになる。
これが展開されたRAM領域をバイナリに落とし込んで、yyで読ませた結果が下の画像になります。

タイトル画面の雲空が画像としてわかるのと、オープニングの魔導アーマーのパーツがわかると思います。
以下解析結果です。
解析結果
ぼちぼち
すまんな、またなんだ。
ということでお久しぶりです。
何度目かのモチベーション低下と復帰…モチベの維持って難しいね
PC復帰したはいいけど仕事がくっそ忙しくて中々やる時間が取れませんでした。
最近ようやく暇になってきたので、久しぶりにやってみっかということでちょいちょい復帰してきます。
もはや「改造」ではなく「解析」がメインなこのサイトですが、今後とも宜しくオナシャス!センセンシャル!
てなことで解析再開
しかし、なーんも覚えていないので、電源投入からの初期動作プログラムを解析開始
おそらく、メモリ初期化してハード設定して、マップ読み込んで、イベント起動して、OPムービー再生って流れかなと予想
しかし、改造したい項目から解析の内容がどんどん遠ざかっていくなぁw
戦闘プログラム変更や何かの拡張は簡単なもので、長年目標としていたのは「FF5の魔法移植」である
完全出ないにしろ、画像と効果音は移植出来た、が色々問題があり、全ての移植はできていないし、完全な移植でもない
ここを「FF5と同じ」にするのが、本当の目標です。
けど、いつの間にかFF6の全てを解析することが目標になっていた…
まぁいいか、この知識はきっと他のスーファミ改造する時にも役立つだろう…たぶん!
とりあえず解析結果をうp
解析結果
ということでお久しぶりです。
何度目かのモチベーション低下と復帰…モチベの維持って難しいね
PC復帰したはいいけど仕事がくっそ忙しくて中々やる時間が取れませんでした。
最近ようやく暇になってきたので、久しぶりにやってみっかということでちょいちょい復帰してきます。
もはや「改造」ではなく「解析」がメインなこのサイトですが、今後とも宜しくオナシャス!センセンシャル!
てなことで解析再開
しかし、なーんも覚えていないので、電源投入からの初期動作プログラムを解析開始
おそらく、メモリ初期化してハード設定して、マップ読み込んで、イベント起動して、OPムービー再生って流れかなと予想
しかし、改造したい項目から解析の内容がどんどん遠ざかっていくなぁw
戦闘プログラム変更や何かの拡張は簡単なもので、長年目標としていたのは「FF5の魔法移植」である
完全出ないにしろ、画像と効果音は移植出来た、が色々問題があり、全ての移植はできていないし、完全な移植でもない
ここを「FF5と同じ」にするのが、本当の目標です。
けど、いつの間にかFF6の全てを解析することが目標になっていた…
まぁいいか、この知識はきっと他のスーファミ改造する時にも役立つだろう…たぶん!
とりあえず解析結果をうp
解析結果
PC修理完了!!!
今日やっとPCが直って帰ってきた!
とりあえず解析は置いといて考えていた細かい改造を試そうと思います。
できればプレステのDISK交換のようなことができるのかも試してみたい。
成功すれば面倒だけど容量の問題から解放されるからね。
また、解析していたソースとか、改造内容とかもちまちまうpしてきます~
とりあえず解析は置いといて考えていた細かい改造を試そうと思います。
できればプレステのDISK交換のようなことができるのかも試してみたい。
成功すれば面倒だけど容量の問題から解放されるからね。
また、解析していたソースとか、改造内容とかもちまちまうpしてきます~
1年経過でようやくモチベーション復帰
お久しぶりでございます。
最終更新から1年以上経過してしまいました。
いや、DQMSLにはまってしまっていたのと、ノートPCがぶっ壊れたので解析、改造する気になれなかったってのがあります。
昨日ようやくノートPCを修理に出したので来週から解析、改造を再開しようと思います。
そう思うと、早く解析したくてうずうずしますな!
何をしてたっけかなぁ・・・
たしか、戦闘解析に飽きてメニュー画面の解析をしてたんだっけかな
解析はひとまず置いておいてモンスターの作成やイベントの追加とかから始めるのもありだな~
またいつまでモチベーションが維持出来るかわからないですが、復帰しました。
うん、まずは開発環境をよくしよう!
メモリビューアとかデータ管理とか解析方法とか結構改善できるはずなので!
最終更新から1年以上経過してしまいました。
いや、DQMSLにはまってしまっていたのと、ノートPCがぶっ壊れたので解析、改造する気になれなかったってのがあります。
昨日ようやくノートPCを修理に出したので来週から解析、改造を再開しようと思います。
そう思うと、早く解析したくてうずうずしますな!
何をしてたっけかなぁ・・・
たしか、戦闘解析に飽きてメニュー画面の解析をしてたんだっけかな
解析はひとまず置いておいてモンスターの作成やイベントの追加とかから始めるのもありだな~
またいつまでモチベーションが維持出来るかわからないですが、復帰しました。
うん、まずは開発環境をよくしよう!
メモリビューアとかデータ管理とか解析方法とか結構改善できるはずなので!