Sigh, all ye gentlemen of little faith.


As much as I'd like to dispense with the wit and just release the darn things already, that's not really possible at the moment. You need a remote debugger in order to make them load properly. Rest assured though, that these clones are exact, flawless replicas of their originals.
The problem is not really the fabled "clone engine" - that's child's play - but the actual clones themselves. The modules - the very essence of a character - are what determine whether a moveset has or hasn't been loaded already. That means that even if you were to use multiple .pac files, you would still get only one of the movesets. Thus it is required that the modules themselves be cloned. But there's a catch: modules are very specifically designed to load and manage resources at very specific levels - just copying them isn't enough.
In ordinary cases, the modifications needed in order to make the modules function properly for any character id would be considered relatively simple. In the case of the two clones above, it was only a matter of changing 1 value for each of them at runtime using WiiRD. Even without a USB Gecko, the total sum of changes needed to be made to a module file would be within the range of 10 to 20 lines of ASM code - not a whole lot. However, module files are structured in such a way that even a slight change in the line count would require a massive amount of hex editing. I've spent the last 2 days trying to make a patched module by hand to release along with the pictures, but it was today that I finally realized the sheer scale of the job ahead of me.
If and I when complete the module editor I've been working on, then creating clones will become substantially easier. Once modules can be hacked to work generically for any id, then the rest of the clone engine like adding separate slots to the roster or changing which sound banks are used can all be done with a few simple codes.
Gasp... Wheeze... I barely made it out alive! But I got it... I got it.
Behold! The very first Generic module!
[>>>>>Here<<<<<]
This module will allow you to clone Ike over any character in the roster and - when I finish the actual Engine part of the Clone Engine - clone him into any empty space in the roster.
In order to clone a character you need to put all of their resources (moveset, models, motion and final smash) into the target character's folder named according to the target character's name. Then adjust the generic module to match the character (Read the Change.txt) and rename it to the target character's module name.
If you want to go the extra mile and add sound whenever the host character isn't present, then you can adjust the sound banks to your liking with the following code:
Code:
Sound Bank Modifier:[Phantom Wings]
4A000000 80AD89E0
1400ZZZZ 000000YY
E0000000 80008000
Characters [ZZZZ]:
0000 Mario
0004 Donkey Kong
0008 Link
000C Samus
0010 Yoshi
0014 Kirby
0018 Fox
001C Pikachu
0020 Luigi
0024 Captain Falcon
0028 Ness
002C Bowser
0030 Peach
0034 Zelda
0038 Sheik
003C Popo
0040 (Nana)
0044 Marth
0048 Mr. Game & Watch
004C Falco
0050 Ganondorf
0054 Wario
0058 Metaknight
005C Pit
0060 Zero Suit Samus
0064 Olimar
0068 Lucas
006C Diddy Kong
0070 Pokemon Trainer
0074 Charizard
0078 Squirtle
007C Ivysaur
0080 Dedede
0084 Lucario
0088 Ike
008C Robot
0090 (Pra-mai)
0094 Jigglypuff
0098 (Mewtwo)
009C (Roy)
00A0 (Dr. Mario)
00A4 Toon Link
00A8 (Toon Zelda)
00AC (Toon Sheik)
00B0 Wolf
00B4 (Dixie)
00B8 Snake
00BC Sonic
00C0 Giga Bowser
00C4 Warioman
00C8 Red Alloy
00CC Blue Alloy
00D0 Yellow Alloy
00D4 Green Alloy
00D8 (Mario D)
Sound Bank Values [YY]:
01 Mario
02 Link
03 Pit
04 Metaknight
05 Dedede
06 Donkey Kong
07 Samus/Zero Suit Samus
08 Yoshi
09 Kirby
0A Fox
0B Pikachu
0C Luigi
0D Captain Falcon
0E Ness
0F Bowser
10 Peach
11 Zelda/Sheik
12 Popo/Nana
13 Marth
14 Mr. Game & Watch
15 Falco
16 Ganondorf
17 Wario
18 Olimar
19 Lucas
1A Diddy Kong
1B Pokemon Trainer
1C Charizard
1D Squirtle
1E Ivysaur
1F Lucario
20 Ike
21 Rob
22 Jigglypuff
23 Toon Link
24 Wolf
25 Snake
26 Sonic
27 Unknown
28 Alloy
29-4B Unknown
And finally, for your convenience and to prove that it works properly, here's a fully equipped clone of Ike Cloud over Mario.
[>>>>>Download<<<<<]
Some things to note:
-As noted above, unless you use the Sound Bank modifier, the clone will not have any unique sounds or voice if the host character is not in the match.
-If both the clone and the original are in the match, only one set of Graphic effects will be used. This is because the graphics are being loaded into a single set of ids that both movesets are calling whenever they create graphic effects. (To fix this, we'd need to further analyze the graphic effect files)
-The .Pac file which is usually considered optional when reskinning an existing character is required if you want to use training or SSE with the clone.
-Replacing the target character's Entry file is optional, but if you don't replace it then the original's entry Articles will still appear.
-All the Cloud outfits in the example file are the same... .
Before I go, please no requests for modules. I haven't mastered the art patching them yet so I need a little more time before I can mass produce them.