Use FFdec to make mods (2 Viewers)

RokPhenix

Content Creator
Joined
Apr 23, 2021

Welcome !

I make a tutorial to help anyone that wants to make new mod or modify existing mods for free and legal way.
Thanks to Perdition Perdition for show me this software
Thanks to SyntaxTerror SyntaxTerror because without his tutorials this topic will never exist.
Thanks to the Discord community for all they answers when i was blocked on a problem.

Reminder

Many modders are not great artist or great encoder.
For make good mod, you need :
Love, yes believe me, for the character, for a mod, for great work, for others who use the mod.
Patience is required because make mod need many actions : draw, code, test.
Talent, skill, experience can help but is not all.

Don't forget rules of UTC :
If you will upload a remake of a mod on the website you will ask to the original artist if he allows you to do a remake.
If you don't have response for two weeks, feel free to do it.
When you post a remake ressource on the RM, credit the original mod and artist.

 
Last edited:

RokPhenix

Content Creator
Joined
Apr 23, 2021

First Step : Download the software​

JPEXS FFDec need Java, install it.
Download the software JPEXS Free Flash Decompiler and install it too.

Second Step : Set up the software​

Open the software.
Click on settings at the top of the windows (Red circle in the picture)
full


In the settings tab.
Change your language for your convenience (the green square).
Click on Advanced Settings ( Yellow Square)
full


In the Advanced Settings Pop-Up.
Click at the Paths tab ( Red arrow)
full


In the Advanced Settings Pop-Up, Paths tab
full

You need the flex SDK for the line 4. Download it (if nothing happen when you click on the link, then use the spoiler, copy the link in your URL and a pop-up for download the zip will pop)
Extract the zip, copy the folder path in the line 4 of the Pop-Up.
full
full


In your extract folder :
.\runtimes\player\11.1\win you may find FlashPlayerDebugger.exe, target it in your line 2 of the Pop-Up (You can also target the Loader debugger)
.\frameworks\libs\player\11.1 you may find playerglobal.swc , target it in your line 3 of the Pop-Up
(Some link if you want use another version)
For the line 1, I expect you have Flash Player and you can target it if you come here.

If you finish set up paths, click on OK in the down right of the Pop-Up.
The software will restart.
You can open a file.
 
Last edited:

RokPhenix

Content Creator
Joined
Apr 23, 2021
Introduction

I will share of my knowledge for how use the software.
I learn how use it by myself so maybe some experts will laugh because it is full of non-optimized or inadequate actions.
In this case, feel free to comment, share the knowledge of how do better actions and improve the ease of use.

Open a file.


Click on the button at the up left window( red arrow) or drag&drop your file into the software.
The software can read file with mod extension but not modify it, in this case replace the extension by swf.
full


For the exemple I will use the Zelda TP Costume by dantethedarkprince dantethedarkprince
What you will have when you open the file.

full


In this picture, we are in the shapes folders.
This folder (red square) contains graphic art like svg, bitmap, it's important for many mods but some mods don't need it like an audio mod.
you can see numbers into brackets, it's shapeId.
In the right you can see all items in the folder, you can click to navigate into those items.

The sprites folder (blue square) contains sprites, they use shapes or others sprites.
numbers into brackets are spriteId.

The frames folder(pink square) define what is display on games by using sprites.
numbers into brackets are the characterId, they will bound with the spriteId.
In the picture, you can see (35) so it's bind with the sprite 35 (look at the green square)

The green square is the final sprite of the costumeTop.
This sprite contains others sprites define by characterId, they will bound with the spriteId.(orange squares)
The names into brackets define modpieces
full


In the Modpackage of the scripts folder
You need to declare MovieClip with the name of Object in your frame.
full


Always in the modpackage
You will find a function name frame1() .
The modCreator is usualy use to determine the artist, type your name like "Rokphenix" (red underline)
modName define the name display in sdt menu list in vanilla (mc settings can change that). by default, it's the name of the file. (green circle)
charData is the charcode in the file. type "" if you don't want charcode. (blue arrow)
The most important : this.registerMod(this.Movieclip) define what is load in the game.
full


Exemple : if i delete this.registerMod(this.bottoms).
I will have this result when i load the file iG.
full


Because the bottoms movieClip is associate with the frame with the same name.
It's the sprites which was deleted.
full


In the class TopTemplate_11
Declare the modpieces in your sprite (green square) as MovieClip
Use a function with the name class with addFramescript() like the yellow square.
Declare others variables, these variable can be use in the function frame() (purple square)
this.modType determine the modType
this.overwrite is a boolean which determine if when you load the mod, if the mod overwrite the modtype or stack with the previous.
full


you can modify modtype but it's better the new modtype share modpieces.
full


Go to SymbolClass for associate your sprite and your class
full


This picture explain how bound sprite.
The sprite 34 need the shape 33 (green arrow). you can set the bound by the charcterId with the shapeId in the right (green circle).
For overwrite the characterId you need to click on the button "Edit" in the bottom of the windows.
If you don't have the characterId display, check the "placeFlagHasCharacter" is set to "true" at the right.
In the same way you can bound sprite to sprite, just replace the shapeId by the spriteId. (red arrow)
full


For rename object, overwrite the string on the right (red underline)
if the " name : String=" don't appears check if your flagHasName is set to true;
full

Congratulations, you know the fundamentals.
 
Last edited:

RokPhenix

Content Creator
Joined
Apr 23, 2021

Modificate Shapes.​

You want to rework graphics.

Let's try with the DefineShape4 (33).

you need to export it.

full




A pop-up will appear.

The fisrt checkbox allow user to modify format and zoom of the export.

The second checkbox allow the format of the export.

For the moment, choose SVG and keep the initial value of zoom.

full




So you will have a file with this name : 33.svg

full


Install and use Inkscape

How open a svg file ?

Download and install Inkscape and open the svg file with your new software.

Some threads explain how use the software.

Some list of shorcut for Inkscape



You will have this result.

This graphic is grouping.

It's mean when your select it, it's a pack and if your try recolor it or delete it, all the art will be delete or recolor.

Select it by click or press the shorcut Ctrl+A.

Click on the object/ungroup on the toolbar or use the shorcut Shft+Ctrl+G. This removes only one level of grouping; press Ctrl+U repeatedly to ungroup nested groups.

full




Select with the mouse the armring.

full




Delete the selection with the mouse or use the key Backspace or Del

full




The result.

You need to group the shoulder, press Ctrl+A and press Ctrl+G for grouping.(don't hesitate to repeat the grouping).

You can save, I save it with a "m" like modified.

You can close Inkscape if you save your work.

full

Replace shapes
Replace the DefineShape4 (33) by your work.

full




Save as

It create a new file with your work.

full




Test it on SDT.

The armring doesn't exist anymore.

full


Congratulation you made your own mod !
 
Last edited:

RokPhenix

Content Creator
Joined
Apr 23, 2021

Delete Objects in Sprites.​

Sprites defines the display of shapes in game.

Remove placeObjects of the DefineSprite (35) like the picture for only keep the rightArm.

Save and use it on SDT.

full


full

Create your "Isolation Mod"

Edit your modPackage

Remove the lines 210 and 212.

Set the line 213 charData=""

Save the mod and try it on SDT.

full


full


It succesfully loads but is not enough, we make it viable for players.



Go to the class TopTemplate and delete all movieClip other than the rightArm

Set the overwrite to false, it allow SD-chan to keep her top when you load the swf.

full




You may have this error if you try to save the edited class.

full




Your need to uncheck this in your AdvanceSettings.

full




The software will restart when settings change.

Edit the Top class, save.

Test it.

full


SD-chan can wear shoulder while wear a top.


Clean the file

We need to clean the file because many things become useless in the swf.

The DefineSprite 24, 26, 28, 30 and 32 are the sprites removed from the top (define sprite 35)
The bottoms and the body(shoulder label in the file) are not use.
full


Go to the shapes folder, select all shapes and remove with dependancies.
This action will remove the shapes and the sprite associate, in this case the bottoms and body sprites .
Be carefull when use it, save before the action, check after.
full


In the ModPackage delete useless var.
full


Give coherence to Id
The Shoulder shape is the ID 33.
all ID between [5;32] was deleted.
Use Raw edit on the defineShape (33)
full


Click on the button Edit in the bottom of the window.
Set the shapeId to 5.
full


If you change your shapeID.
you will have this in the bottom right corner.(green yellow arrow)
if you click on this icon a pop up will appear with errors log.(orange arrow)
full


Don't worry, you change the shapeID 33 to 5 but the sprite 34 is associate with the shape 33 which doesn't exist anymore, it's the error.
Correct this, reassociate like the picture, the font in bold is was the user edit.
When shapes/sprites, sprites/sprites and sprites/frames are correctly associates, you need to clean the SymbolClass.
The SymbolClass is tricky, you can't delete the first tag, if you try to target on remove symbol, the next will be remove.
In this case, the first tag is the topTemplate so keep it, just set the UI16=35 to 7 (remember, it's the link between class and sprites) .
The bottom and body class was deleted, we need to deleted tag which bound these (tag[1] & tag[2} in the picture).
full
.

Save the file, if you can't, go the the pop up log error and click on the clean button then retry to save.
The original file size is 32.6KB, the final mod size is 13.6KB.
Test it to check you break nothings.
If it run,


congratulation for your first isolation mod
 
Last edited:

RokPhenix

Content Creator
Joined
Apr 23, 2021

Convert top to overtop.​

With the Zelda' shoulder.

Go to the top class in scripts/zelda.fla

Change the line 25 in the function frame1() as :

top:
this.modType=ModType.TOP;

Become
overtop:
this.modType=ModType.OVERTOP;

Basicaly, it's enough for convert to overtop.

But for clean work, rename the title TopTemplate to OvertopTemplate.

Don't forget the function with the same name than the class name.(Line17)

full




The name of the class was changed, the SymbolClass needs to be rewrite.

full




Change the name of the frame.

Click on the PlaceObject2 (blue square)

Click on "Edit" (near the red arrow, at the place of "Cancel")

Click on the value of name : String (Green arrow)
name:
name : String = top

change to
new name:
name : String = overtop

Click on "Save" (Red Arrow)

full




The frame's name was edited, it's mean the ModPackage will be edited too.

Go to the frame1() and change the frame1()

frame1:
this registerMod(This.top);

to

new frame1:
this registerMod(This.overtop);

Click on the button "Save" at the bottom of the script.

full




Change the
var movieclip:
 var top:Moviclip;
to

new var Movieclip:
var overtop:Movieclip;

Note : If you try to rename the var top to overtop before the step 4 the software will not allow to save the edit cause the register need the var, it's the reason I did it in this order.

full




After all this steps, your mod is perfect.

Save your mod, test it on the Loader (not SDT, overtop exists only in the Loader)

The normal behaviour is : your mod is not load in the game, nothing happen.


Why the overtop is not load ?
The base swf is Zelda TP Costume by dantethedarkprince dantethedarkprince , a vanilla mod.

Look at the ModTypes file, OVERTOP doesn't exist.

full




Add the overtop as costumeOvertop in your modtype file.

Add overtop line:
public static const OVERTOP:String = "CostumeOverTop";

Save the edited file, save the swf.

full




Test it on the Loader, it will be loaded.

The result here
 
Last edited:

amorun

Potential Patron
Joined
Mar 12, 2023
чувак ты крут! спасибо, это единственный нормальный туториал!
 

RokPhenix

Content Creator
Joined
Apr 23, 2021
Рад, что могу помочь новым художникам.
Прошу прощения, если я неправильно написал ваш язык, я пользуюсь онлайн-переводчиком.
 

z-z

Potential Patron
Joined
May 1, 2022
will this work for making dynamic hair mods or do i have to re find that *insert that lazy town song here* software
 

Users who are viewing this thread

Top


Are you 18 or older?

This website requires you to be 18 years of age or older. Please verify your age to view the content, or click Exit to leave.