マルチブート処理について
作成者：有泉　信彦
作成日：10/09/24

●全体の流れ
○概要
マルチブートとは、親機が子機へDSメニューのダウンロードプレイを使い
ROMイメージを転送し、子機側で起動させる仕組みの事を言います。
ここではポケシフターと転送マシンの事になります。
環境の構築についてはマルチブート環境について.txtを参照してください。

○親機
親機は両方とも、prog\src\multiboot\parent\mb_parent_sys.cで処理を行います。
mb_flow.pngにステートのフロー図を一応用意してあります。
ROM転送部分とセーブ処理を共通化しています。

○子機
それぞれ環境はポケシフターがpokemon_wb\multibootフォルダで、転送マシンが
pokemon_wb\multiboot2フォルダですが、実際のソースはprog\src\multiboot\child\mb_child_sys.cと
prog\src\multiboot\child\mb_movie_sys.cです。
カードアクセスやセーブデータ周りなどは共通化してprog\src\multiboot\utilにあります。

●親機について
マルチブートの注意点としてマルチブート環境について.txtに主に書いてあります。

●子機について
○ポケモン周り
持ってくることができないポケモンは以下のとおりになります。
・不正ポケモン
・タマゴ
・秘伝持ち
・ぎざみみピチュー
秘伝持ちのポケモンはバージョンによって秘伝の定義が違うので注意してください。
共通してあるのがいあいぎり・そらをとぶ・かいりき・なみのり・いわくだき・
たきのぼり・ロッククライムです。
HGSSのみうずしお。DPPtのみきりばらいが該当します。
ぎざみみピチューはHGSSでしかフォルムが存在していないため、連れて来ることができません。
また、移動の際に変換しなければいけないものとして以下のものがあります。
・性格の変換(共通処理)
・捕獲ボールのワークの統一(共通処理)
・未使用ワークのクリア(共通処理)
・名前、親名の変換(共通処理)
・アイテム外し(ポケシフター・転送マシン処理)
・アルセウス、ギラティナフォルムチェンジ(ポケシフター・転送マシン処理)
・なつき度補正(ポケシフター・転送マシン処理)
・トレーナーメモ対応(ポケシフター・転送マシン処理)
性格の変換は、今回から性格の値が個性乱数ではなく、値として持つようになった対応です。
個性乱数から25(性格の種類数)で割った際の余りを計算して、セットします。
捕獲ボールワークは、HGSSで追加されたどんぐりボールの処理のため、
捕獲ボールワークが２つ存在しています。
それを一つにまとめる必要があります。
ID_PARA_dummy_p4_1に値が入っていた場合、ID_PARA_get_ballに設定します。
未使用ワークのクリアはシャチで未使用のワークに0を入れるだけです。
名前の変換は今まで専用文字コードだったものをUnicodeに変換します。
ここまでの共通処理はprog\src\poke_tool\pokepara_conv.cに処理が入っています。
アイテムはずしは仕様でアイテムが持ってこれないというので外します。
アイテムを外して戻す処理は別記します。
フォルムチェンジはアイテムを戻すため、アイテムによりフォルムチェンジを行う
ポケモンを戻しています。シェイミはBOXの時点でフォルムが戻り、ロトムはそのままで
問題ないので変更していません。
なつき度補正は交換時にポケモンのなつき度を設定しているので処理をあわせるため
なつき度を70固定に変更しています。
トレーナーメモの修正は、ポケシフターから来たことを設定する処理です。
2010映画のポケモン(エンライスイとセレビィ)はイベントのため、特殊な地名を設定します。
転送マシンもポケシフターを設定していますが、必ず映画ポケモンなので特殊な地名で上書きされます。
時間はデータが親機に到着した時に親機のRTCで設定しなおします。

○アイテム外しについて
アイテムを外してバッグに入れる処理はいくつか手順を踏む必要があります。
まず、アイテムごとに格納するポケットが違うので、このテーブルをmb_item.cdatに保存しています。
保存する際も木の実と技マシンは格納後にソートが必要になります。
また、アイテムをすでに999個持っている場合はアイテムが消えてしまうので警告を出す必要があります。

○ロックカプセルについて
ロックカプセルはHGSSに特殊な形式で配信されるふしぎな贈り物になります。(10/09/24時点未配信)
HGSSでアイテムとしてではなくふしぎな贈り物のカードとして手に入れた状態になります。
転送マシンでロックカプセルを受け取る際にはふしぎな贈り物のre_dealed_countの値を1に変更すると
受け取った事になります。
転送されたロックカプセルは大事なものに入ります。
また、イベントの発動を制御するためフラグを別で立てています。
なので改造でロックカプセルを手に入れただけではロックカプセル開錠のイベントは発生しません。

○捕獲ゲームについて(ポケシフター)
捕獲ゲームで一番上の段でポケモンが場外へ行く時、草の背景の裏に隠れるようになっています。
ポケモンがビルボード(3D)で背景がBG(2D)なのでそのままでは隠すことができません。
なので、今回は背景と同じ絵のビルボードを一番上の段分だけ用意し、座標を調整して隠すようにしてあります。
眠り玉を取った時のピンク色のフェードの演出はfogを使っています。
zzzのマークにはfogがかかって欲しくないということだったので座標を調整してzzzにfogがかからないようになっています。
