Restart

Regular
Regular
Joined
Mar 15, 2019
Messages
848
Reaction score
752
First Language
English
Primarily Uses
RMMV
Project FOSSIL V1.0
By: FOSSIL TEAM

JkkR0Cy.png

Introduction

Project FOSSIL (Fixing Old Software / Script Interoperability Layer) is a single RPG Maker MZ plugin designed to expand the use and usefulness of RPG MAKER MV plugins, by allowing them to work in RPG MAKER MZ projects. FOSSIL doesn't port plugins. FOSSIL makes porting unnecessary!

I got a copy of RPG Maker MZ a little while ago, and I think the editor is even better than RPG Maker MV. The only problem is that it's competing with RMMV's deep library of plugins. MV had such a huge number of great plugins (thanks to the tireless work of Yanfly, Moghunter, SRD, Galv, and too many other authors to list here) that it will be a long time before they all get rewritten to work with the new engine.

I decided to try to figure out a way to speed things up. Instead of having to change every single MV plugin to work with MZ, I'm going to see if we can change MZ so it can work with the old plugins, and still keep all the engine upgrades. That way, we'll have the best of both worlds.

What I came up with was FOSSIL. FOSSIL does basic interoperability things - it makes MZ able to understand commands from old MV plugins. For instance, when you make a window in MZ, the engine expects you to hand it a single 'rectangle' which tells it exactly where the window should go, and how big it should be. In MV, when you make a window, what you hand the engine can be very different - it might just be 'how many lines of text there are in this window', or it could be 'the x coordinate, y coordinate, width, and height'.

Before any of those commands get to the core engine, FOSSIL converts them into the rectangle that MZ expects. That way, you don't have to actually change how the plugin tries to create a window - FOSSIL just translates it into terms MZ can understand, and then it's fixed everywhere.

Plus, this way, we can make old MV plugins work in MZ while still respecting any licensing they have. Instead of having to track down people who might have left the community, and asking them if we can copy their plugin and make a changed version, we can just use FOSSIL and make MZ understand what the plugin is trying to do.

I have tried my best to minimize any side-effects from FOSSIL's existence. In my test projects there weren't any noticeable changes, but it's entirely possible I accidentally broke something. If that's the case, please post about it in this thread.

I'm super excited about the possibilities with FOSSIL, and I hope a lot of people join in (hence why I'm crediting FOSSIL TEAM). I don't want this to be 'my' plugin, I want the whole community to be able to use all the MV and MZ plugins with the newest engine, and I think everyone here who makes MV plugins knows enough to help improve it.

How to Use

FOSSIL is a single plugin that must go at the beginning of your plugin list. There are no settings to tweak. Since FOSSIL isn't a port, you still need to have the original, unaltered MV plugins, and put them into your game as usual.

So far I have tested over three hundred working plugins (see list), and there's a good chance that even if they aren't listed, most simple plugins will just work 'out of the box' with no tweaks.

How to Write a Fix for Fossil

FOSSIL now automatically detects where plugins are in the list, and applies patches directly before or after the appropriate plugin.

For example, WAY_Core needs us to back up the plugin manager commands before WAY_Core actually runs and changes them. Since we need to run the code before WAY_Core executes, this requires a PreFix. Here's the code in FOSSIL that makes that happen:

Code:
	Fossil.loadPreFix('WAY_Core',function()
	{
		Fossil.backupPluginManagerCommands=PluginManager._commands;
	})
	//^ see that closing bracket and parenthesis?  
	//That's important not to forget.

The 'WAY_Core' parameter in loadPreFix tells FOSSIL which plugin it should be looking at.

The code for the fix itself is within the function:
Code:
function()
	{
		Fossil.backupPluginManagerCommands=PluginManager._commands;
	}

Because this is loadPreFix, the code will be run just before WAY_Core is executed.

If you need to be before multiple plugins, you can list all of them in an array ['pluginA','pluginB','pluginC'], and it will run immediately before the first one in plugin order (ignoring plugins that aren't in your project).

If we use loadPostFix instead, the code would be run immediately after WAY_Core. (And listing multiple plugins in loadPostFix will result in applying the fix immediately after the last one in the list).



Plugin Order
There is only one order possible:

1) FOSSIL.js (First plugin)

2) All other plugins.

Other than that, put the plugins ordered the same way you'd put them in MZ or MV. Put plugins that extend each other together like usual. I can't really give more specific instructions than that, it'll all be on a case-by-case basis as normal.

Using Old Plugin Commands

You have three ways of using plugin commands for MV projects

A: use the built in plugin command from FOSSIL
1Aj2J4F.png


B: Use a script box, with
Code:
oldCommand('your old plugin command')

C Copy and paste a MV map into MZ that has an MV plugin command. That command will keep working in the MZ editor, and you can copy and paste it around wherever you want. On some versions of MV and MZ you can just copy-paste the event between editors. It is a mystery why this works for some people and not others.

Screenshot
nEfmGZ1.png

XBfJvjQ.png


Download


Tested Plugins
These is the list of over three hundred MV plugins I have tested in MZ which seem to work at a high level of compatibility when using FOSSIL (ie: I went through the major plugin features and they worked, no crashes observed). I tried the latest versions of each, so if you have an older version I can't guarantee anything, and it is entirely possible I missed some feature that I don't normally use, or that FOSSIL updates ended up breaking something after I tested them. It's a lot of plugins and I'm sure I've missed something. (Sadly, several popular plugins, like ultramode7, use a lot of deep function calls, and the MV vs MZ code differences were just too hard for me to disentangle).

As FOSSIL does not contain any plugins, I have also included links to where you can get the ones I've tested. If there is ANY problem or bug with plugins using FOSSIL, ask in this thread. Don't ask the author for help. The obvious cause of the bug is that you're using a MV plugin in MZ. (And ideally, have a demo that works in MV, and a stacktrace from the console)

Note: Some authors have made ports of their own plugins to MZ. If you aren't trying to port over an existing project, or have extension plugins, I recommend you use a plugin that was actually ported to be MZ native. It's a lot less likely to be buggy :)

However, since there is a chance that a port to MZ can break extension plugins, (for instance, if a function gets renamed for the MZ version, plugins that patch into the MV function will no longer work), in some cases MV plugins in FOSSIL will have better compatibility than their MZ ports.

CONFIRMED: Fully Functional

This is not an exhaustive list, this is just the ones that have been tested. If a plugin isn't listed here, it could still work!

‡ Indicates that a MV plugin will likely work in MZ without FOSSIL as well as with it.
Mostly Functional (Missing important feature(s), UI is fine)
  • None ATM. Woo!

Functional Mechanics, UI problems (I'd appreciate help with these)
  • YEP_X_ItemDurabilityIt works fine, but there isn't an obvious place to put the 'current durability' information in the MZ window layout. If you use this plugin, what would be a good place to put it?

WIP
  • Mog's LMBS (if you have worked with MZ battlebacks I'd appreciate the help on this one)

Mobile and Web Deployment Note

FOSSIL creates a 'FOSSILindex.html' file at runtime, and switches to use it instead of the original 'index.html'. This works seamlessly in both playtest and deploy on my computer. However, it is possible this might not be possible in web or mobile environments (I can't test them). However, if you just rename an existing FOSSILindex.html to index.html, you will bypass the html creation step, and proceed with the rest of the plugin. (Basically I need to replace 'main.js' in index.html with 'FOSSIL.js' so I can control when plugins are added).

Terms and Credits
All unique code in FOSSIL is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. The remainder is taken from RPG Maker MV and RPG Maker MZ, and is covered under the appropriate licenses. No code from any existing plugin was used. Credit Restart, 'FOSSIL' or 'FOSSIL Team', and link back to the github or this forum thread.

In order to improve clarity, I am officially stating that the 'CC-BY-SA' only requires that code derived from FOSSIL be also put under a 'CC-BY-SA' license. Other assets in your game, (such as code, art, plugins, et cetera) as well as your game as a whole are not considered to be 'derivative works' for this purpose - they're just a 'collection of materials'.

Of course this is FOSS, the plugin is named FOSSIL :p

Submitting Patches
If you want to submit a patch to add to the FOSSIL main branch, please ask. You will need to agree to license your patch under the same CC-BY-SA terms as the rest of FOSSIL, and that if I ever add an additional open-source license to FOSSIL that your contributions can have that license applied in addition to CC-BY-SA (that way, if we need to add a less restrictive license in the future, it will be possible without tracking down every contributor or turning FOSSIL into a legal patchwork).

If you just want to make your own version from the code, go ahead: it's licensed under CC-BY-SA, I can't stop you. I'd appreciate a mention in the thread, though.
 
Last edited:

Silenity

Regular
Regular
Joined
Dec 17, 2013
Messages
911
Reaction score
453
First Language
English
Primarily Uses
RMMZ
Tested YEP Equip Battle Skills, EBS Allowed Types, and EBS Skill Tiers.

All of them technically work, just some menus that need to be adjusted.
 

Restart

Regular
Regular
Joined
Mar 15, 2019
Messages
848
Reaction score
752
First Language
English
Primarily Uses
RMMV
Tested YEP Equip Battle Skills, EBS Allowed Types, and EBS Skill Tiers.

All of them technically work, just some menus that need to be adjusted.
Good to know. I haven't done any UI plugins before, so hopefully other people can focus on fiddling with those and coming up with better window sizes for them. There's a really bizarre glitch with YEP_SkillLearnSystem where when you go to buy a skill, half of the window is suddenly blurry, and I have no idea why.


I've spent the last day trying to get MZ to be compatible with Message Core. Sadly, while it looks like everything else is working fine, after several hours I'm still no closer to figuring out how to get word wrap to work again. It works just fine when text is advancing normally, but if you do the fast text advance in MZ the word wrapping abruptly stops.


So if you don't care about word wrap, it seems to be totally functional, but I know that's the biggest feature for some people

EDIT: Word wrap works in messagecore now!
 
Last edited:

thenerdmansion

Graphic Design/Complex Eventer
Regular
Joined
Jan 5, 2015
Messages
412
Reaction score
174
First Language
Spanish
Primarily Uses
N/A
Brooo, I almost have tears in my eyes. There was a Japanese plugin that I’m sure will not be getting an MZ port and now there is a chance I can get it to work with this. My sincerest thanks!

I will post here a link if it works ^^

Card game by Tomoaky TMCard.Js will not crash the game and the deck is working perfectly however in order to begin a card battle a plugin command needs to be used. MV has a different window for plugin commands. MZ does not let you manually type in plugin commands. Instead it makes you have to select from the list of plugins that you use and select a plugin from there. Is there a way around this?
 
Last edited:

Restart

Regular
Regular
Joined
Mar 15, 2019
Messages
848
Reaction score
752
First Language
English
Primarily Uses
RMMV
Brooo, I almost have tears in my eyes. There was a Japanese plugin that I’m sure will not be getting an MZ port and now there is a chance I can get it to work with this. My sincerest thanks!

I will post here a link if it works ^^

Card game by Tomoaky TMCard.Js will not crash the game and the deck is working perfectly however in order to begin a card battle a plugin command needs to be used. MV has a different window for plugin commands. MZ does not let you manually type in plugin commands. Instead it makes you have to select from the list of plugins that you use and select a plugin from there. Is there a way around this?
Good question. The cheap workaround is
1) Make a map in rpg maker mv. Put an event in it with a plugin command
2) copy-paste that map into rpg maker mz
3) edit the old style plugin command (or copy and paste it elsewhere). MZ's editor can handle existing old plugin commands, but doesn't have a button to let you create them.

Ur1HIvS.png


However, I also just pushed an update to github that allows you to natively reference old plugin commands as well.

Either use a script call
oldCommand('Whatever the old plugin command was')

Or use the built-in plugin command system - I now have a plugin command for FOSSIL_Pre that just takes in old-style plugin commands.


5HJMWmb.png
 
Last edited:

Jrrkein

Drago Royale
Regular
Joined
Apr 20, 2014
Messages
341
Reaction score
146
First Language
Indonesian
Primarily Uses
RMMZ
I still wonder if it will work on some minigame plugins like match card lottery plugin
 

thenerdmansion

Graphic Design/Complex Eventer
Regular
Joined
Jan 5, 2015
Messages
412
Reaction score
174
First Language
Spanish
Primarily Uses
N/A
My bro, you are amazing. I was able to do plugin commands. These are the results ^^;

The deck editor in the menu and the battle scene are working correctly
2.png
This is what happens when the first move (attack) is attempted.
1.png
I should note that in the mv the background does blur out and in MZ the background does not blur out
3.png
Here is a pic of the console before the crash
4.png
Here is a pic of the console after the crash5.png
This was my attempt with this marvelous pre-post plugin that you've created. the possibilities are endless and I have no doubt that this plugin is going to grow more and will receive a lot more support. I am just an early bird with not much coding experience. I have also turned off the plugin that creates the 3D world to make sure it wasn't the cause and it did still crash ^^; the second picture of the console shows opacity: 0.5; filter: blur(8px) that is a code that isn't seen in the console before the crash towards the bottom of the code. I hope that helps ^^;

Update: I am reading that this plugin does not working past 1.6.2 version of MV
Here is a link to the plugin
 
Last edited:

rexie09

Villager
Member
Joined
Apr 4, 2021
Messages
28
Reaction score
10
First Language
English
Primarily Uses
RMMZ
My bro, you are amazing. I was able to do plugin commands. These are the results ^^;

The deck editor in the menu and the battle scene are working correctly
View attachment 186464
This is what happens when the first move (attack) is attempted.
View attachment 186465
I should note that in the mv the background does blur out and in MZ the background does not blur out
View attachment 186466
Here is a pic of the console before the crash
View attachment 186467
Here is a pic of the console after the crashView attachment 186468
This was my attempt with this marvelous pre-post plugin that you've created. the possibilities are endless and I have no doubt that this plugin is going to grow more and will receive a lot more support. I am just an early bird with not much coding experience. I have also turned off the plugin that creates the 3D world to make sure it wasn't the cause and it did still crash ^^; the second picture of the console shows opacity: 0.5; filter: blur(8px) that is a code that isn't seen in the console before the crash towards the bottom of the code. I hope that helps ^^;

Update: I am reading that this plugin does not working past 1.6.2 version of MV
Here is a link to the plugin
Just want to let you know you took a screenshot of the wrong part of the Dev console click the text that says console next to the selected element text as that will be where the error is. and the part about opacity would probably not be the error as that is css and would not likely cause a crash based of the type of error the game is throwing.
As the game is trying to access a variable that doesn't exist to the game or in the scope of where the call is.
 
Last edited:

thenerdmansion

Graphic Design/Complex Eventer
Regular
Joined
Jan 5, 2015
Messages
412
Reaction score
174
First Language
Spanish
Primarily Uses
N/A
Ohh!!!! Thank you for pointing that out!
 

Restart

Regular
Regular
Joined
Mar 15, 2019
Messages
848
Reaction score
752
First Language
English
Primarily Uses
RMMV
My bro, you are amazing. I was able to do plugin commands. These are the results ^^;

The deck editor in the menu and the battle scene are working correctly
View attachment 186464
This is what happens when the first move (attack) is attempted.
View attachment 186465
I should note that in the mv the background does blur out and in MZ the background does not blur out
View attachment 186466
Here is a pic of the console before the crash
View attachment 186467
Here is a pic of the console after the crashView attachment 186468
This was my attempt with this marvelous pre-post plugin that you've created. the possibilities are endless and I have no doubt that this plugin is going to grow more and will receive a lot more support. I am just an early bird with not much coding experience. I have also turned off the plugin that creates the 3D world to make sure it wasn't the cause and it did still crash ^^; the second picture of the console shows opacity: 0.5; filter: blur(8px) that is a code that isn't seen in the console before the crash towards the bottom of the code. I hope that helps ^^;

Update: I am reading that this plugin does not working past 1.6.2 version of MV
Here is a link to the plugin

Unfortunately I can't find a demo project for it, which makes it kind of hard for me to test it. You might get lucky with a stack trace or error message in the 'console' tab.

The only difference between 1.6.2 and 1.6.1 happened in the japanese branch (it removed a connected 'opengame creators' service, though I'm not sure on the details). The us program never had that feature, so it just changed the version number from 1.6.1 to 1.6.2 and did nothing else.


Anyway, message core extensions are up, and I've updated the first post with the plugins @Silenity reported as working but ugly.

I figure these three categories are fine for now. At some point, if we end up having hundreds of fossilized plugins, we might need a spreadsheet or a wiki or something. Hope we get there :)
 

Restart

Regular
Regular
Joined
Mar 15, 2019
Messages
848
Reaction score
752
First Language
English
Primarily Uses
RMMV
can you zip it? I don't have mediafire premium and it looks like it won't let me download them all at once without paying.
 

thenerdmansion

Graphic Design/Complex Eventer
Regular
Joined
Jan 5, 2015
Messages
412
Reaction score
174
First Language
Spanish
Primarily Uses
N/A
Yes! I will zip it this morning :). I just woke up for a quick cup of water but my eyes are still closing on me hehe. I will zip it here soon.

Edit: Here is a zipped file of TMcardDemo best of luck :D

 
Last edited:

Restart

Regular
Regular
Joined
Mar 15, 2019
Messages
848
Reaction score
752
First Language
English
Primarily Uses
RMMV
Yes! I will zip it this morning :). I just woke up for a quick cup of water but my eyes are still closing on me hehe. I will zip it here soon.

Edit: Here is a zipped file of TMcardDemo best of luck :D

I tried running it in MV, and the demo crashed when you talk to the girl to the south, says it can't find Scene_DeckEdit. I tried turning on TMAutonewgame and TMserverrtp and no dice.

EDIT: okay, I see the bug with the demo, the plugin is wrapped, and you tried invoking something from it directly instead of using the 'startDeckEdit' plugin command.

EDIT 2: the major issues with getting it to work are (A) that it's wrapped (which makes injecting code not really feasible without modification to the existing plugin, and the point of FOSSIL is that you don't modify plugins), and (B) the card classes just have a bunch of properties copy-and-pasted instead of inherited (so I can't alter the card functions by changing the ones it references). The big one there is animation, since the animation system got a full revamp from the ground up.

I can get it to avoid crashing in a full fight by just making sure I use a MZ file for animations (data/Animation.json), but then it just doesn't play animations effects at all, since it keeps trying to invoke the old MV system (which doesn't exist). The sounds play, and cards wiggle back-and-forth, but there's no lightshow.

This seems more like a target for an actual port, since any actual modification is going to require changes to the file, and the plugin is MIT licensed so you can alter it freely.

I haven't test anything yet, but can it work with https://mjshi.weebly.com/mv-match-card-lottery.html



Try it and report back.
 
Last edited:

ImaginaryVillain

High Cultist of the Sporkle
Regular
Joined
Jun 22, 2019
Messages
1,018
Reaction score
6,181
First Language
Absurdism
Primarily Uses
RMMZ
All of these were done with a brand new MZ project, core script 1.2.1. Regrettably none of them worked. I'd be happy to test a lot of the other QPlugins once the QPlus problem is resolved.

qplus_fossil.jpg

gradient_wipe_fossil.jpg

ultra_mode_7_fossil.jpg
 

PandaDance

Regular
Regular
Joined
Apr 19, 2021
Messages
47
Reaction score
26
First Language
English
Primarily Uses
RMMZ
As a brand-new MZ user, this project is a gold-mine for me! Thank you so much for doing this hard work.

I'll just go ahead and put my pie-in-the-sky MV project here that I hope will work with this plugin soon: the Shake Text plugin offered by SRDude: http://sumrndm.site/shaking-text/

But I am happy to wait to when you get around to it. I can only imagine how complex this work is (since I don't code in JS myself)!
 
Last edited:

thenerdmansion

Graphic Design/Complex Eventer
Regular
Joined
Jan 5, 2015
Messages
412
Reaction score
174
First Language
Spanish
Primarily Uses
N/A
I understand. Thank you for your honest attempt at trying to fossil this plugin :D.
I did try to skip animations by having the plugin play animation 0 but it would still
crash, at least we tried :D/
 

Latest Threads

Latest Posts

Latest Profile Posts

Knocked through three more rough draft sprites. (A frog beast thing, a skeleton, and vampire bat) down to seven sprites and a thing more appropriately done as tiles.
Cutscenes remaining are officially in the single digits! Woohoo!
More Castles.gif
I guess we can have one more, as a treat.
I already had teeth that looked like fangs (on the sides) and how I chipped a tooth to make that one look sharp too xD

Forum statistics

Threads
135,009
Messages
1,252,888
Members
177,923
Latest member
hotamluc15
Top