SSブログ

WinXP&Vistaの話(29:ポケモンを改造しよう!編) [WinXP&Vista]

大それた事に、ポケを改造しようなんて思い立っちゃいました。

思い立ったが吉日で、早速ググリはじめます。
改造に関するサイト、、、思ったよりも結構ありますね。
どれも親切だし。

ま、簡単にいうとパッチをあてるだけでも立派な改造です。
すでに市販品ではありません。だって売り物にはなりませんよね、、ぷぷ

改造して自分で楽しんで悦に浸る分には、単なる「物好き」の「酔狂」です。
(酔ってなくてもね、、、ははは)

世の中にはこういった「風流」をたしなむ人が大勢いるようですね、、ぷぷ

自分の楽しみをミンナに知って貰いたいけど、ROMごと配布しちゃうと問題になるので、パッチだけ配布してるんですね。

ゲームROMの著作権は製作会社の物。パッチの著作権はパッチ制作者の物。
でもって、自分が持ってるゲームにパッチをあてるのは個人の自由。

ま、こんな理屈なんですね。うまいこと考えるモンですね。

中国では改造ROMを製品版としてカートリッジで販売してたりするらしいけどね。
(ソレこそ違法行為です)

で、今回は誰かさんが作ってくれたパッチをあてるだけでは飽きたらず、「自分で好きなように改造してみよう!」って魂胆なわけです。

これには結構いくつものハードルがあります。

まず、自分が「かなりの物好きである事」
、、、、これには、相当自信があります、、、ははは

つぎに、改造には根気と時間がかかります。
、、、、これはどうでしょう?
根性も時間も、初めから与えられる物ではない!といいきっておきましょうか。
ま、没頭すると、時間も忘れて、仕事も忘れて、、、、、、、って、オイオイ。

で、かなり重要なのが、スキル。
そ、改造するにはそれなりの知識と技術が必要です。
、、、、これは、、、、、ま、、、、その、、、、

全然、自信はありません、、、ははは
何しろ、勢いだけが取り柄です。

ま、知識と経験はやってるウチに後からついてくるモンです。(そうか?)

で、一番大事なのは、、、ゲームROM。
対象となるゲームを持っていないのでは話になりません。

GBAのポケモンを改造するためには、GBAのポケモンカートリッジ、その正規品を所有していて、そこから吸い出したROMイメージがあることが前提です。

そんでもって改造したROMは、実機のGBAでは遊べないので、エミュで遊ぶ事になります。
これはまあ、パソコンでも、PSPでも、、、

とまあ、この辺までがお約束。
相変わらず長い前置きです、、、ぷぷ
****************************************************
<ここから本題?>

ポケモン改造をはじめるにあたり、とっても参考になったのが「改造ポケモン研究所(http://pokemonmon.blog41.fc2.com/)」
このサイトを一通り読むだけで、随分詳しくなったような気になれます。
(勘違い?、、、、ぷぷ)

ま、私流にかみ砕いて考えてみると、ポケモンに限らず、ゲームROMの構成は基本的に同じですよね。

思いっきり簡単に言うと、「ゲーム=プログラム部分+データ部分」
こんな風に考えちゃうと良いでしょう。

最近のゲームは3D画像処理だったり、重厚なBGMだったり、カットインムービーがふんだんに使ってあったり。
エンターテインメントの要素が大変発達しているので、一つのゲームがかなりの大作に仕上がってます。
CD/DVDにとても収まり切らなかったり。
ゲームなのに、¥10,000円近い値段がついてたり、、、
(FF XⅢ、、、やってみたいな~)

だけど、こういった最新ゲームが肥大化している原因って、画像データが精密になったり、ムービーの量が飛躍的に増えたりしている点が大きいんですよね。

ゲームのシナリオや、ストーリー展開そのものの内容が数百倍に増えてるワケではなさそうですモンね。

なので、プログラムの観点から見ると基本は同じ、キー操作に反応して主人公が進んでいくと、町の画像が動いたり、バトル画面に変わったり。
その都度、状況に合わせて対応する画像やら音楽やらを呼び出して、表示(演奏)しているわけです。
で、その繰り返しでゲームが進んでいくと、、まあ、そんなトコですか。

話をポケモンに戻すと、GBAのカートリッジに収まりきるように出来ているので、最近のゲームに比べると容量はたいしたことありません。
それでも、音楽であるとか、画像データの部分が大半を占めている印象です。

ここで一つのポイントがあります。
絵をかいたり、作曲をしたり、、、それはそれで、実は大変な作業です。

決められた容量の中に収めつつ、最大限の表現をするって、ある意味凄く難しい作業かも知れません。
パソコンを使ったからって、誰でも作曲が出来るわけじゃないしね、、ぷぷ

そんなこんなで、いろいろ考えていくと、目の前のハードルがやけに高く感じられます。
軽く返り討ちに遭ってしまいそうです。

そんな時は、、、、、そうです、、、、肩の力を抜くのが良いですね。
出来るトコからはじめる、、、、これ基本。

最も簡単な改造は、どうやら「セリフの改変」、、、この辺からです。
****************************************************
<ポケモンROMのセリフ改変をするために>

ポケモンのROMは随分と解析されているので、プログラムの流れもかなり知られています。

セリフを呼び出す命令は、「命令文+アドレス」こんな風になっています。
(ま、大抵そうだけどね、、、ぷぷ)

で、飛んでいった先のアドレスの先頭から、文字に相当するバイナリーコードが羅列してます。
なので、GBA君はこれを読み取って画面に表示させてます。
たとえば「bb」という16進数はポケモンの画面では「A」と表示されます。

羅列しているコードの中には「あいうえお」みたいな文字を表現するのとは別に、特殊な意味を持った物も含まれます。

たとえは、セリフコードの文中に「fe」が出てくると、文章を止めて一段改行します。
同様に「fb」が出てくるとページ送りします。

そして「ff」が出てくると、セリフが一段落して、呼び出した命令文のトコに戻り、次のプログラムコードに進む仕組みです。

そして、こういった約束ごとはGBAのポケシリーズではほぼ同じです。
ポケの名前とか、技マシンの名前とかも共通してるしね。

なので、「こんにちは」をあらわす「0a 2e 16 11 1a」の部分を「ポケモン!」をあらわす「9f 59 73 7e ab」に書き換えちゃえば、ゲーム中でのセリフが変わるって寸法です。

と、こう書くと、すごく簡単なんだけど、問題なのは、その「0a 2e 16 11 1a」の部分がROMのどこにあるのか?が分かりません。

あるいは、たまたま音楽データの一部が同じコード配列だったり、画像の一部だったり、、
バイナリーエディタでROM.gbaを覗いただけではなかなか区別がつきにくいのが実際です。
プログラム部分とデータ部分の境界なんて、スグには分からないし、16進数コードを見ただけでは、ソレが画像なのかセリフなのかすら分かりません、、、ぷぷ

やはり人間には「文字」で、日本人には「日本語」で話してくれないと分かりません、、、ははは

セリフをサーチする場合、ある程度の長さの文字数を用意して、ソレをコードにした物を使ってエディター上で検索をかければ大抵キチンとヒットします。
あるいは、バイナリ上の適当な箇所をコピーしてきてセリフに変換すると、キチンと言葉になってる部分は恐らくセリフの部分だろうと推察出来ます。

セリフの位置が確定すれば、後はソレを書き換えるだけ、、、、
でもちょっと注意が必要です。

初めから用意されていたオリジナルのセリフの文字数を超えてしまうと、まずい事がおこります。

バイナリデーター上では色々な人のセリフが次々と繋がって格納されているので、セリフを書き換える時にオリジナルの文字数を超えて書き込んでしまうと、次の人のセリフとかまで巻き添えを食ってしまいます。
あるいは、プログラムの進行に支障が出てくる場合も充分あり得ます。

なので、セリフが実際に格納されている部分を書き換える場合は、文字数に制限が出てくることを忘れてはいけません。
(ま、オリジナルより少ない分にはごまかしが効くんだけどね、、、ははは)

なので、オリジナルよりも長々としゃべりたい時は、ROM上の空きスペースを利用する方法があります。
つまりは「命令文+アドレス」のアドレス部分を違うところにしちゃう方法です。
これならROMの空きスペースが許す限り、長いセリフを使う事も可能です。

でも、この場合、セリフを変更したいキャラクターが実際に喋る時の命令文を特定しないといけないので、検索が一手間難しくなります。

ま、いずれにしてもメンドクサイ作業ですね。

今回は、セリフ自体を書き換える方法を採用したいと思います。
セリフの文字数に上限が出てくるけど、それはそれで結構何とかなります。

5・7・5で俳句を作っていると思えば、似たようなモンです。
(似てるのか?)

で、そこいら辺の作業を強力にサポートしてくれるのが「PokeDataChanger」なるツールです。

便利なものを作ってくれる人がいて、ありがたいですね。

「PokeDataChanger」をつかえばセリフの改変だけでなく、ショップの品揃えとか、かなりの改造が楽しめるようです。

ただ、私がそそっかしいのが原因なんだけど、バイナリーエディターとPokeDataChangerとVBAと、を使い分けつつセリフ改変作業を進めていくと、必ずといって良い程セリフのオフセット(開始アドレス)をはき違えてしまって、関係ないトコにセリフを書き込んじゃったりするミスを連発してしまいます。

あと、ピッタリ合わせたハズの文字数がズッコケてたりして、VBAでテストプレイするとセリフがヘンテコな事になっちゃったりします。
一人のセリフがヘンテコになったぐらいならスルーしてもいいんだけど、ゲーム全体が不安定になっては、元も子も無いですよね。

なので、セリフの文字数を合わせるために「PokeWords」なるツールを作ってみました。

自分用に作ったツールだけど、折角だからアップしておきます。
興味のある人(だけ)、使ってみて下さい、、、ははは
(使い方は、、、今度書いてみます、、、ホントか?)

[追加]PokeDataChangerとPokeWordsを使ってセリフを改造する方法をまとめてみました。〜 WinXP&Vistaの話(31:PokeWords編)


やり始めると結構はまって一気に「オツキミやま」まで進みました。

「正月休みはポケモン改造で決まり!」だな、、こりゃ。


(つづく)


nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。