Tutorial  Updated

Play/port your GameMaker games on NintendoSwitch

DISCLAIMER:
THIS TUTORIAL IS A WIP, I'm still (eventually) updating it to contain the latest methods/fixes to allow mostly any gamemaker game to be ported onto the switch. Take in mind this guide is still incomplete, but does contain valuable info to start porting!


So... As you might (or not) already know there is a way to run different Gamemaker games by "overwriting" the main game.win file of an existant switch-gamemaker game (like Undertale for example) with another one (props to Chocolate28 who originally discovered this method). Hoowever, some games might not work properly or might not even launch at all! So here I am, with a guide that will most likely help you fix most of the relevant issues, and hopefully will guide you through the process of doing it so. Good luck!

REQUIREMENTS:

• Having Atmosphére CFW up and running (guide here)
• Having a gamemaker game installed on the switch ("DELTARUNE Chptr 1" is the recommended target)
• The data.win file of the game you want to port (You can find this in your game's installed location, sometimes it's embedded inside the exe of the game itself, so just open it as if it was a zip file and you may find it there!)
• The super awesome but somewhat tricky tool... UnderModTool aka UMT by krzys-h (download here)

LET'S START:

First compilation/testing:
You will want to open UMT tool (aka Undertale-Mod-Tool huh) and once opened drag your data.win file from the game you want to port inside this tool. Once loaded we will just try to compile it and see what's working and what's not.

To compile it again with any changes you've done just go into File >> Save, and save the new modified file as "game.win". Now create a folder named "010023800D64A000" (Deltarune's TitleID) and inside this folder create another one called "romfs", now place your "game.win" file inside this romfs folder. You can now place this folder with a bunch of numbers inside your sdcard to inject it in your switch, you must place this folder inside sdcard:/atmosphere/content/

Great! Now whenever you boot Deltarune in your switch you should see your game running!
Wait... it's not running?
Oddly expected

Time to get hands dirty and fix things by yourself! This part is a little more advanced than what you may think, so there's that, nonetheless... I believe in you!
Welcome to the awesome world of GMS decompilation and game modifying! (aka Gamemaker's modding hell)

First issue, Resolution Scale:
Usually lots of gamemaker games run in a window of a certain resolution, the switch can kind of handle different resolutions but only at supported scales. Most of the times this is the only fix you need to make the game display at all. So, go back to UMT, and with your data.win loaded double click on General Info in the left panel and look for Default windows size to check the resolution values. These values must be compatible with what the switch supports, so set them to 640x480 if the game uses 4:3 ratio scale or set them to 1280x720 if the games uses 16:9 ratio scale. Sometimes different values are valid and can cause much better image results than others (wide resolutions for example) so just play along with them while testing to see what works best for you.
Tbh I still have no clue to this day what the full supported resolutions are, so just try and let me know what worked and what didn't, ty!

Test again, Compilation/Testing reminder:
Now try and do the compiling process you followed earlier (File, Save, game.win...) and save the new modified game.win file in your sd card where you placed earlier the old one. This is how you are going to do the testing for the rest of the porting process, so get comfortable with it (because you're gonna be doing it a A LOT).

Uncommon issue, Collisions: (Todo, quote the use of the flag "FastCollision" system)
Now that your game is likely booting and all... you might have noticed that when you collide with certain objects, these don't have a proper collision (if every collision works fine just skip this step) and you would sometimes get stuck within those. To fix this you will want to navigate to the room where this collision is glitching and make sure it's marked as a solid object. So go into the left panel >> Rooms and search there for the room (go in fullscreen mode to see the whole room displayed). Once found your room, locate the collision object, it's usually an ugly block or something like that. Once found the collision object, double click on it and it will highlight the object in the object-list above, double click on the one highlighted and you will be now in that object's property panel. Now once there make sure the Solid checkbox is ticked, if it already is, you might want to go into the main character object properties and check the Solid box there as well (disclaimer: making your character solid can cause additional issues).
If this tips weren't enough to fix the collisions, please, report it and let me know here!

Implementing, Joycons:
You might have noticed that joycons work out of the box but only do so when attached to the console in handheld mode. To fix this you're gonna have to create an object that handles the joycons processes. Find the "Game Objects" section in the left panel and right click on it, click then on "Add". Name this object whatever you want and uncheck the Visible checkbox. You now want to place this object in the first loaded room, to do this open the Rooms section and navigate to the one where your character spawns, double click to open it and now navigate to the Game Objects section and find your object (do not click on it). While the room view is opened drag your newly created object to the room viewport. If UMT asks you to select a layer click on the Layer section above in the room's property panel and select any layer, then drag and drop your object in the viewport again and your done. Great! Now let's add some code! Double click on the created object and double click behind "Create" in the Events section. A new entry will be created but it's empty, you will see now the two buttons at the right of the new created entry, it's a plus sign next to a cross, click on add (+). Now a new code entry will be created, double click on it.

[THIS TUTORIAL IS A WIP]
 
Last edited by KardchCode, , Reason: update altar link and a few advises

Chocolate28

Active Member
Newcomer
Joined
Sep 1, 2015
Messages
33
Trophies
0
Age
36
XP
100
Country
Canada
As you might already know there is a way of running different gamemaker games recently discovered by Chocolate2598. However some of them might not work correctly or might fail on launch.... So I did my job and discovered a way of fixing multiple issues on those games that don't work, example of this is Zelda Breath Of the NES, not a popular game right now but it was back in time (developed by winterdrake, do you remember?). Well I tried making the "trick" to play this demo on the switch, it always crashed but here's how to fix it...
Thank you for figuring out this trick! I hope more games are able to be played successfully using it.
 

ratsz

Member
Newcomer
Joined
Jul 26, 2018
Messages
19
Trophies
0
Age
39
XP
483
Country
France
Thanks for this great tutorial and tool to fix broken games.
I just tried with one, and I haven't any NameOfYourGame.json. Is it possible to import all extracted content without this file? Any specific command?
I'll try with another game in the meanwhile, ty.
 

KardchCode

Well-Known Member
OP
Member
Joined
Sep 18, 2017
Messages
133
Trophies
0
XP
861
Country
Spain
Thanks for this great tutorial and tool to fix broken games.
I just tried with one, and I haven't any NameOfYourGame.json. Is it possible to import all extracted content without this file? Any specific command?
I'll try with another game in the meanwhile, ty.
Just to clarify, the .json you need is created when everything extracted properly, also the file it's called whatever your game title looks like (example breathofthenes.json)
 

KardchCode

Well-Known Member
OP
Member
Joined
Sep 18, 2017
Messages
133
Trophies
0
XP
861
Country
Spain
Thanks for this great tutorial and tool to fix broken games.
I just tried with one, and I haven't any NameOfYourGame.json. Is it possible to import all extracted content without this file? Any specific command?
I'll try with another game in the meanwhile, ty.
Also what's the log on the console? Might be another thing
 

ratsz

Member
Newcomer
Joined
Jul 26, 2018
Messages
19
Trophies
0
Age
39
XP
483
Country
France
Ok it's crystal clear no worries, your tuto is great ;)
I've tested with another game (Q-YO Blaster), extracted it and this time I have the Q_YO_BLASTER.json file! I think the issue comes from the other game (ZeroRanger) data.win;
And btw I've tested Q-YO with method 1 and it's playable without any edit! So thanks again for your tuto and I might report other games, a working/not working list would be nice.
Cheers
 

KardchCode

Well-Known Member
OP
Member
Joined
Sep 18, 2017
Messages
133
Trophies
0
XP
861
Country
Spain
Ok it's crystal clear no worries, your tuto is great ;)
I've tested with another game (Q-YO Blaster), extracted it and this time I have the Q_YO_BLASTER.json file! I think the issue comes from the other game (ZeroRanger) data.win;
And btw I've tested Q-YO with method 1 and it's playable without any edit! So thanks again for your tuto and I might report other games, a working/not working list would be nice.
Cheers
Im glad you managed it! also if you report what few games do work and what do not it will be really appreciated! So thx!
 

Nastas95

Well-Known Member
Member
Joined
May 13, 2018
Messages
145
Trophies
0
Location
Well, I'm Italian.
XP
781
Country
Italy
Hi there! i'm trying to use the data.win from a translated Undertale (fan made italian translation), but it fails to launch on the switch, the windowsize is correct... what sould i do? Thanks!

edit: got working PC version 1.05 that hasn't been patchet into italian. Seems like versions 1.0 AND 1.1 wont launch on the switch (unpatched too).in V 1.05 joycons aren't working tho...
 
Last edited by Nastas95,

KardchCode

Well-Known Member
OP
Member
Joined
Sep 18, 2017
Messages
133
Trophies
0
XP
861
Country
Spain
Hi there! i'm trying to use the data.win from a translated Undertale (fan made italian translation), but it fails to launch on the switch, the windowsize is correct... what sould i do? Thanks!

edit: got working PC version 1.05 that hasn't been patchet into italian. Seems like versions 1.0 AND 1.1 wont launch on the switch (unpatched too).in V 1.05 joycons aren't working tho...
Well... If you're trying to get undertale in Italian the best way is to translate it yourself, you should check this repo https://github.com/UnderProject/UnderProjectNX I guess you already know this since I saw you on the project discord but anyways
 
  • Like
Reactions: Nastas95

Nastas95

Well-Known Member
Member
Joined
May 13, 2018
Messages
145
Trophies
0
Location
Well, I'm Italian.
XP
781
Country
Italy

Mythical

Well-Known Member
Member
Joined
May 11, 2017
Messages
2,153
Trophies
1
Age
25
XP
3,003
Country
United States
I can't seem to get this to work I get a file back but it just crash. What games work with this? Breath of the nes got taken down so I can't try that
 

KardchCode

Well-Known Member
OP
Member
Joined
Sep 18, 2017
Messages
133
Trophies
0
XP
861
Country
Spain
@Kardch any update with altar tool? I can't seem to extract the data.win files from other games... :(
Well this tutorial is a bit outdated, I will recommend now using UndertaleModTool; https://github.com/krzys-h/UndertaleModTool/releases
It works in a very similar way + it has a great gui to work with that lets you to edit most of the code (in gml assembly tho). This tool is able to decompile and compile most of the games made with gamemaker (1.4 & 2.0)
If you have any problems or questions ping me here or shot me a dm
 
Last edited by KardchCode,

JAG755

Member
Newcomer
Joined
Feb 24, 2016
Messages
10
Trophies
0
Age
37
XP
150
Country
United States
I have gotten AM2R working on switch it has no docked support, wireless support or pro controller support yet... but I do have saves working somewhat you can save but it will delete the save if you restart the game. You can also remap the controller. I also have made an nsp to install. Now this was not made with game files this was made with the AM2R Game Maker Studios 2 source code it took about 20 hours to get it working this well if anyone wants to help me shoot me a pm.

 
Last edited by JAG755,

KardchCode

Well-Known Member
OP
Member
Joined
Sep 18, 2017
Messages
133
Trophies
0
XP
861
Country
Spain
I have gotten AM2R working on switch it has no docked support, wireless support or pro controller support yet... but I do have saves working somewhat you can save but it will delete the save if you restart the game. You can also remap the controller. I also have made an nsp to install. Now this was not made with game files this was made with the AM2R Game Maker Studios 2 source code it took about 20 hours to get it working this well if anyone wants to help me shoot me a pm.

Holy shit, that's really good. I'm really interested in saves and how you got them to partialy work tho
 

JAG755

Member
Newcomer
Joined
Feb 24, 2016
Messages
10
Trophies
0
Age
37
XP
150
Country
United States
Holy shit, that's really good. I'm really interested in saves and how you got them to partialy work tho

To get them to work you need the am2r game maker studio 2 source code and I only have them partly working. It's a temp save in the /rooms/int folder that i made in the romfs files before recompiling it into am2r.nsp it's not a good way to do it because it triples the file size of it but 350mb is still not bad.
 
Last edited by JAG755,

KardchCode

Well-Known Member
OP
Member
Joined
Sep 18, 2017
Messages
133
Trophies
0
XP
861
Country
Spain
To get them to work you need the am2r game maker studio 2 source code and I only have them partly working. It's a temp save in the /rooms/int folder that i made in the romfs files before recompiling it into am2r.nsp it's not a good way to do it because it triples the file size of it but 350mb is still not bad.
I was recently working to port Deltarune to the switch (before they announced it) and I thought about saving in romfs like you did, however romfs means read only memory thus impossible to save there technically.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: https://www.youtube.com/watch?v=gYzI76fwaM0