【NSMBW】MoreSpritesの導入
こんにちは。ワチです、ReaZ0nです。この記事では、NewerSMBWにMoreSpritesを導入する方法について書いていきます。
環境
NewerSMBW:1.2.0
コンパイラ:Clang (Code Warriorの場合、手順が異なります。)
ROM:JPN v1
More Sprites:v1.1.1
ダウンロード
以下のサイトにアクセスします。
ぶっちゃけ導入方法もここに書いてあるのですが、ここに書かれているのはコンパイラがCode Warriorである前提の導入方法ですので、今回は手順の一部を変更して書いていきます。
ということで、リンク先のkamekフォルダ内のファイルを全てダウンロードしてください。手元にasm_profiles.S, profile.h, profile.S, prifile.cpp, profileid.h, profile.yaml の6つのファイルが用意できたらOKです。
導入
ファイルの移動
ダウンロードしたファイルたちを定位置に移動させます。
asm_profiles.S, profile.h → include フォルダ
profile.S, profile.cpp, profileid.h → src フォルダ
profile.yaml → ルートフォルダ
既存のファイルの編集
ルートフォルダ内の NewerProject.yaml (NewerProjectKP.yanlがある場合はそちらも) を開いて、Newerの行群の直下に
- processed/profile.yaml
を追加します。
また、同ディレクトリのkamek_base.xファイルを開き、Newerのアドレス群の直下に
originalSprites = 0x8030a340;
originalProfiles = 0x8076a748;
ObjectProfileList = 0x8042a698;
spriteFiles = 0x8031ab4c;
profileNames = 0x80320b58;
searchByProfileId__7fBase_cFUsP7fBase_c = 0x80162E90;
を追加します。
次に、includeフォルダに移動し、game.h ファイルを開きます。fBase_c クラスにある
u16 name;
を、
union {
u16 name;
u16 profileId;
};
に変更します。
また、同クラス内の
static fBase_c *search(u32 id);
の下に、
static fBase_c *searchByProfileId(u16 profileId, fBase_c *previous = 0);
を追加します。
Clang向けにファイルの編集
コンパイラにCode Warriorを使用している人は、この工程は全く必要ないです。はい。
ルートフォルダにある profile.yaml を編集します。89行目らへんにある以下のコード↓を、
- name: SetObjectProfileList
type: branch_insn
branch_type: b
src_addr_pal: 0x80768690
target_func: 'SetObjectProfileList(void)'
このように変更します。↓
- name: SetObjectProfileList
type: branch_insn
branch_type: b
src_addr_pal: 0x80768690
target_func: 'SetObjectProfileList()'
要は、丸括弧内のvoidを消すだけです。これで、ClangでもMore Spritesを使用できるようになります。
終わり
以上です。解散
この記事が気に入ったらサポートをしてみませんか?