Language…
12 users online: Cristian Cardoso, fanfan21, Golden Yoshi, Green Jerry, JezJitzu, Josuke Yoshikage, KoJi, Maw,  Nanako, Shomi, tOaO, yoshi9429 - Guests: 243 - Bots: 301
Users: 64,795 (2,377 active)
Latest user: mathew

SMWCentral Play-From-Browser

Do you think this is a useful tool?

45.5% (5 votes)
45.5% (5 votes)
9.1% (1 vote)
0.0% (0 votes)
0.0% (0 votes)
SMWCentral Play-From-Browser

Personal note
I've long been a fan of SMW hacks in particular, and have been playing them for years now. I felt that I could make a good contribution to this community with the few coding skills I have, so I made an account and am posting this.
If you are interested on this project and are willing to contribute, hit me up on Github! I'll accept pull requests plenty, and consider adding contributors.
Any Linux and Mac builds are also appreciated.
Hope you enjoy!

What is this?
This is a project I've been working on for about the past week, which, when installed in its entirety, puts a "Play" button below all SMWCentral "Download" buttons, and this allows you to click and play your favorite hacks, with your favorite emulator, in your favorite configuration.

How does the program work?
The program consists of two parts: a Userscript and an Electron app.
A userscript is installed in your browser, which only runs when you're browsing SMWCentral, and automatically gets metadata on the hack, and encodes it into an URL of the format "smwcentralplayer://<querystring data>". This URL is put into the "Play" button.
To actually do something with the data, an executable is configured on your system to become the default handler for this URL protocol, which means when you click the link in your browser, the executable will be called with the data necessary to download and run the hack in your favorite emulator!

How to install?
Download a release, and run the executable best for your system.
A confirmation dialog will appear, suggesting you go to the program settings.
Once there, you can configure where you want your patch files and patched rom files to be stored, as well as the path to your favorite emulator, and the arguments that should be passed to it. These settings are separate for SMW, SM64 and YI hacks.
Once this is done, install a userscript plugin for your browser (Tampermonkey and Greasemonkey are good), and follow this link, which should prompt you to install the userscript to call the program.
Now all should be working! Enjoy!

What is the license on this?
Thanks to dependencies on this project (Most notably Alcaro's JS-only BPS patch applier), this whole project is under GPL3.0, so feel free to do with it what you want!

Why is this better than previous projects?
1.- Because it is multi-hack. It can run all hacks hosted on SMWCentral, and should be easily expandable to all hacks that can be stored as a .bps file.
2.- Because it is expandable. The Userscript can be modified to fit another site, and the client-side program can be modified or entirely swapped without modifying the Userscript, thanks to the "smwcentralplayer://" URL scheme
3.- Because it doesn't depend on any external servers (Beyond your hack provider) to stay completely functional
4.- It (should be) cross-platform. Thanks to Electron and Userscripts, this project should be executable across all platforms, although I cannot test this yet.

What are the drawbacks then?
Mostly the Electron executable. I am not an expert programmer by any means, and I've used electron as a framework to build this app mostly because I don't know better. This means the program is quite a bit more sluggish than it has to be, however I intend to rewrite this project as time goes on in a faster framework.
Also considering I don't follow best coding practices, the code might be a bit ugly.

Downloads
Userscript
Executable

Edits
Edit 1: I somehow managed to miss the existence of randomdude999's SMWC Preview tool! It seems to currently be a more feature-complete python-written alternative to this program. Check it out!
isn't this literally the thing i made 2.5 years ago
Possibly, yes. I tried searching around for something like this but didn't find anything. Also considering I'm new to the forums themselves wouldn't surprise me if I missed it. Could I get a link? I'd love to know, both for personal use and for possibly collaborating on it!

Edit: I browsed around on your Github profile a bit, and found SMW Maker. Is this what you are referring to? If so I think they might be different tools, as SMWMaker seems to be a server-side solution to the problem, while this is all implemented client-side.
it's in the tools section, seems to work in quite a similar way judging by your description except mine is written in python

also no it's not smw maker
I have a vague memory of seeing this before. I absolutely agree the premises are awfully similar. Should I delete this? Don't want to plagiarize anyone.

Edit: In fact it seems much more feature-complete
you're obviously not plagiarizing and your tool has actually been updated in the last 2 years so definitely don't delete it, i'm just letting you know this has been done before
Alrighty, makes sense. Thanks!
What's the license on your tool? I'd be interested to poke around a bit with it.
huh, i never added a license to the github repo of that one. well, it's MIT now.
Thanks mate! Credited your tool in the post asw.