I DECOMPILED a Sonic game... here's how

  Рет қаралды 818,991

MattKC

MattKC

Күн бұрын

Пікірлер: 1 200
@FairPlay137
@FairPlay137 2 жыл бұрын
Sonic Runners Revival dev here: We actually found a whole lot more interesting stuff in both the code and in the game assets. Early/unused animations, placeholder game over and continue screens, and code for a menu which doesn't even appear in the game's assets at all (reactivating it would require us to remake its UI from scratch) and also didn't appear in any version that was released publicly. Not to mention unused stages and events such as the Sonic '06 roulette event, the Silent Forest stage, and the unfinished and incomplete Zomom Raid Battle event (my guess is that it was set to run in 2016 before the game was deemed a failure). There's more that we found too, but this comment would get way too long if I mentioned everything.
@revertfellpapyrusfandeunde4380
@revertfellpapyrusfandeunde4380 Жыл бұрын
O interesting
@itsTyrion
@itsTyrion Жыл бұрын
interesting. Too bad the comment did just get buried among all the other comments
@SullySadface
@SullySadface 8 ай бұрын
Not enough comment. Moar.
@PowerRedBullTypology
@PowerRedBullTypology 7 ай бұрын
@@SullySadface yeah
@Wgaddafi
@Wgaddafi 6 ай бұрын
​@@SullySadface^^^
@FoxtailBoyd1991
@FoxtailBoyd1991 2 жыл бұрын
As someone who makes content in Unity the two biggest things that happen to me are "why isn't this working?" And "why did that work?" It's really just how unity is. In one project baking lighting works and another project it doesn't. It's just how it is.
@valletas
@valletas Жыл бұрын
Not just unity as a godot dev this is also the case lots of times I think thats just programing in general
@rootabeta9015
@rootabeta9015 Жыл бұрын
As not a game dev, but a programmer, this is universal
@fallingwater
@fallingwater Жыл бұрын
As a kid you're told that in the digital world the same input through the same machine will always result in the same output, and the simple beauty of that compared to the irrational mess of human interactions is what draws you to IT and technology as a whole. Then you figure out that the code that makes those beautiful machines work is still written by the same irrational humans, so anything and everything only works by sheer luck, the same machine can give a wildly different range of outputs for the same input depending on a wide number of factors including the phase of the moon, and we can't ever have nice things.
@valletas
@valletas Жыл бұрын
@@fallingwater even if you do write a perfect code the sun could always change one important bit with radiation and break your code entirely
@lautarogonzalez6066
@lautarogonzalez6066 Жыл бұрын
Skill issue moment
@MuchWhittering
@MuchWhittering 2 жыл бұрын
All these game decompilations are great. I 100%ed the Jak and Daxter PC port that came out recently and it's now, without a doubt, the best version of the game, no competition. The Super Mario 64 and Ocarina of Time ports seem equally good from what I've seen. I really hope thie continues to be a trend, of fans rescuing games from dead platforms and giving them the proper treatment that modern hardware can provide.
@NickGoblin
@NickGoblin 2 жыл бұрын
I was keeping up with the development of that one and now that it's playable I've been absolutely loving it. I even imported my saves from my ps2 memory card, it just worked. Also got it on my Steam Deck. 100% better than ps2 emulation.
@bfgfanatic1747
@bfgfanatic1747 2 жыл бұрын
We're decomping PS2 games now? How long will I need to wait for the Burnout 3 decomp?
@WaveSmash
@WaveSmash 2 жыл бұрын
Ship of Harkinian, the OOT PC port is easily the best way to play OOT that will ever exist. As a lifelong fan of OOT, it gives you levels of control and customization I could have never imagined, and it feels SOOO good. It has less input delay than actual hardware and runs at whatever FPS you like. Imo, it is the only way to play the game ever again. The older versions might as well not exist.
@FR4M3Sharma
@FR4M3Sharma 2 жыл бұрын
@@bfgfanatic1747 I'm working on Urban Reign, if you're interested in that game, tho I literally just began last month. :)
@wasabithumbs6294
@wasabithumbs6294 2 жыл бұрын
WHAAT? J&D is very special to me, incredible that someone ported it before I got skilled enough to
@Charriii5
@Charriii5 2 жыл бұрын
This is fantastic, and thank you for what you've done! I'm currently undergoing the challenge of playing as many Sonic games as there are avaliable and without your work, Sonic Runners would've been impossible for me to reexperience and it was a great time. You and The Revival Team are amazing game preservationists.
@Sanichotdog887
@Sanichotdog887 2 жыл бұрын
you know what they say all toaster's toast toast
@_SYDGAMING_
@_SYDGAMING_ 2 жыл бұрын
Glad you will finally be able to have a chance to play runners. It was a fantastic little game
@FanaticChain
@FanaticChain 2 жыл бұрын
Bro you can’t escape charriii5 the man is literally omnipresent what the hell
@stripethetiger
@stripethetiger 2 жыл бұрын
Game preservation is by far going to be the hardest kind of history preservation that we will have to deal with. Thank you for playing your part in the pursuit!
@slimeprivilege
@slimeprivilege 2 жыл бұрын
PLEASE GO OUTSIDE HOLY FUCK
@Sydney_Angelyt
@Sydney_Angelyt 2 жыл бұрын
@@slimeprivilege stop shaming art preservation
@weggygaygay9940
@weggygaygay9940 2 жыл бұрын
@@Sydney_Angelyt video games aren’t art
@superizillian957
@superizillian957 2 жыл бұрын
@@slimeprivilege Most people who say this are hypocrites
@Solaceon
@Solaceon 2 жыл бұрын
@@weggygaygay9940 What would you argue is? I'm just curious.
@cousinjohnny6584
@cousinjohnny6584 2 жыл бұрын
From all the people I knew would help tinker with Sonic Runners Revival, I definitively wasn't expecting you, but I'm glad you did, because you've always done an amazing job preserving games you liked, and having you on board really was a great sign. The community always cherishes their decompilers, and hopefully you can see all the praise you deserve because honestly, this seemed like a really tough job, so yeah, thanks a lot Matt.
@SuperXzm
@SuperXzm 7 ай бұрын
Normal developers: Aw shit I need to upgrade everything... Evil developers: I have an urge to downgrade. Igor, bring the parser.
@scarm_rune
@scarm_rune 7 ай бұрын
funnily enough, gamemaker's compiler is called igor
@extremistcontentfan1236
@extremistcontentfan1236 2 жыл бұрын
One of the first thoughts I had before I clicked this was "didn't I just watch this same guy recompile some peculiar North Korean driving sim flash game a week or so ago?"
@Delus1on_L
@Delus1on_L 2 жыл бұрын
😂 I guess if he posts something about a game, it’s going to have some sort of decompiling in it. LEGO Island, Super Mario 64, Korean game, Sonic Runners………
@gluttonousmaximus9048
@gluttonousmaximus9048 2 жыл бұрын
@@Delus1on_L MINESWEEPER
@Delus1on_L
@Delus1on_L 2 жыл бұрын
@@gluttonousmaximus9048 Oh yea… forgot about that one…
@chadmasta5
@chadmasta5 2 жыл бұрын
I'd love this treatment for Dr. Mario World. I actually really liked it and had put a lot of time into it and was sad when they shut it down. Mobile games tend to get lambasted by the gaming community but they're still video games just as much anything on a console or PC.
@ApostleOfCats
@ApostleOfCats 2 жыл бұрын
I feel like mobile games can’t even be compared to normal games, they just fill a different role.
@chadmasta5
@chadmasta5 2 жыл бұрын
@@ApostleOfCats personally I disagree. People look at all of the free to play ones and assume all of them are like that. It ignores the fact that that model exists on every platform but is more common on mobile given the lower cost of development and objectively larger audience. There are billions of phones that can run pretty much any mobile games compared to the much lower number of consoles and gaming capable PCs. There are still many different mobile games across several different genres that have stories, music, gameplay, and graphics thst match their console and PC counterparts. It's just that the majority of them focus on simpler concepts like puzzles and idle games because the majority of phone owners don't usually play video games. That doesn't mean that those aren't video games though.
@partlyawesome
@partlyawesome 2 жыл бұрын
any mention of dr mario world reminds me of the greentext about that coworker who was obsessed with it lmao
@LevskiBADBOY
@LevskiBADBOY 2 жыл бұрын
@@ApostleOfCats console peasant belike:
@ApostleOfCats
@ApostleOfCats 2 жыл бұрын
@@chadmasta5 never said they weren’t video games
@flamela-c4f
@flamela-c4f 2 жыл бұрын
It's really cool that the video is also made to shout out a Sonic fan project. I love the "it just works" you mentioned about Unity too, classic with big proprietary software lmao
@Celeviii
@Celeviii 2 жыл бұрын
I was kinda hoping that he de compiled sonic 06. However I played this game so much years ago and was very sad when the servers went down. Glad to see that there was a revival for it!
@bfgfanatic1747
@bfgfanatic1747 2 жыл бұрын
It's not exactly a decompilation but you should check out Project 06. It's a full remake of Sonic '06 in Unity and fixes up a lot of the bugs in the original while running at a silky smooth 60 frames. It's not done yet, but they have both Sonic's and Shadow's routes complete and are working on Silver.
@awesomesheep
@awesomesheep 2 жыл бұрын
You should check out project 06 by chaosx
@leonardoalvarenga7572
@leonardoalvarenga7572 2 жыл бұрын
Project 06 is garbage and is made by a scummy dev, don't check it out and don't support it.
@vincere_
@vincere_ 2 жыл бұрын
What were you hoping to get out of a decompiled sonic 2006? Ripping the models or HUD assets or what? Because it's entirely possible for you to do it yourself, the game's in LUA.
@Celeviii
@Celeviii 2 жыл бұрын
@@bfgfanatic1747 I was aware of the project, but last I heard it wasn't that far a long so fair enough
@jishan6992
@jishan6992 2 жыл бұрын
Love when this sort of videos are released, I really liked that fixing the corrupted game save saga
@CEOHankScorpio
@CEOHankScorpio 2 жыл бұрын
A guess on the lightmap settings: Because Unity tries to automate the lightbaking process the lightmap settings may also contain a representation of where in the directory the appropriate light maps should live. The idea being a user can press "bake" and everything gets assigned to the right object even though your lightmaps may live in some random project folder that artists never look at. And it likely wouldn't be some simple directory name, it would likely be a unique string referring to each individual image uniquely. Clearing the settings may have simply cleared this and allowed you to overwrite it, something that if you were to hit "bake" during normal development would also happen. Can't prove it of course, and a lot of those assumptions are based on later Unity builds (2016+). But overall I suspect it's a by-product of the engine trying to make lightmap baking "hands off" in terms of assigning lightmaps to objects.
@targz__
@targz__ 2 жыл бұрын
Nice video! That thumbnail and title combo really undersell it though, I hopped on thinking you had only ripped models from a game, but you RE'd and ported a game to pc, that's super impressive!
@goukigod
@goukigod 2 жыл бұрын
Your ability to communicate how game dev, and coding in general works, is incredible. Normally in these sorts of presentations I’m asleep five minutes in 👏 👏 👏
@turbospeed6562
@turbospeed6562 2 жыл бұрын
So true
@d1zguy864
@d1zguy864 7 ай бұрын
Because he really knows what he’s talking about
@dumbtruccc
@dumbtruccc 7 ай бұрын
one of your best videos IMO; software preservation is a hugely important branch of history that unfortunately doesn’t often get pursued by the proprietors of the software itself. in a few decades time, we will no doubt be all the happier for having kept record of this kind of thing, just as we are with artworks that we’ve restored and preserved
@ozanege3893
@ozanege3893 2 ай бұрын
0:18 Did I just see Sonic Unleashed between thoose games?
@saleh_alnour
@saleh_alnour 18 күн бұрын
Sonic Unleashed is the best game in the franchise, fuck everyone's opinion
@TechnologistAtWork
@TechnologistAtWork 2 жыл бұрын
This guy keeps saying he has no idea what he's doing then just casually goes learning how to decompile things in a few days then gets the job done like a pro. You're awesome man.
@nikkiofthevalley
@nikkiofthevalley 2 жыл бұрын
He already had experience in related parts of the same field, he isn't starting from scratch here.
@condensedmatter118
@condensedmatter118 2 жыл бұрын
@@nikkiofthevalley What experience does he actually have? Was he previously a software engineer or something? Seems like he is all self taught, which is seriously impressive!
@nikkiofthevalley
@nikkiofthevalley 2 жыл бұрын
@@condensedmatter118 Yeah, it's still impressive, but it isn't true that he learned all of this in a few days, that just isn't possible. I would agree that he seems self taught, what I meant by "experience in related parts of the same field" was that he already knew related things in the same general field.
@d1zguy864
@d1zguy864 7 ай бұрын
He’s so smart. Gotta have an IQ of 130 at least
@d1zguy864
@d1zguy864 7 ай бұрын
He’s so smart. Gotta have an IQ of 130 at least
@dukemagus
@dukemagus 2 жыл бұрын
If you want to have a go at a slightly bigger project, Sonic Colors Ultimate was built using Godot, and all of its packaging formats are thoroughly documented (open source engine and all that). You can decompile most of the assets and everything written in GDScript and C#
@izhundrikov
@izhundrikov Жыл бұрын
At 12:55 is literally all I can hear, when I see a .json file. So glad you put that clip in the video lol
@ZachHixsonTutorials
@ZachHixsonTutorials 2 жыл бұрын
Honestly, decomps for game preservation are the coolest thing to me. I've been following the Metaforce project (Metroid Prime decomp) for a while and they've blown me away with what fans are able to achieve.
@justsomesimplenuclearbirbs4313
@justsomesimplenuclearbirbs4313 2 жыл бұрын
I still find it funny that the easiest way to fix the lighting problem that was happening was to basically yeet it into the trash. Like I can just imagine the conversation about the lighting problem being something like. "Well I fixed the lighting issue." "That's great! How did you do it?" "I just cleared the script that told the lighting what to do." ... "What."
@moleyface
@moleyface 2 жыл бұрын
This is AMAZING! I clearly remember watching PatMac's documentary and, even though I'd never played this game in my life, being a little sad that it was no longer accessible and that any attempts to revive it were just a soulless remake, even in this day and age where fan revivals are so common. Glad to see it got the right treatment after all this time.
@DPedroBoh
@DPedroBoh 2 жыл бұрын
I've been trying to translate the game Hylics 2 for years now but i never found the correct tools to do it. Now thanks to this video i almost immediatelly managed to extract and find the text strings i need to translate. Now i still need to learn to but everything back together with the translation but still thanks so much. Oh, this preservation projects are so awesome and important for history and fans, thank you again.
@speedy
@speedy 2 жыл бұрын
awesome vid! I always learn so much from your uploads. Always caught off guard when you swear though, not because it bothers me but because I never expect it from your soothing voice and narration 😆
@sentinelaenow4576
@sentinelaenow4576 2 жыл бұрын
Absolutely magnificent. This is super hero kind of stuff, using highly sophisticated knowledge superpowers and love to save the day for many people. Please continue to save our world, we need you. Many thanks!
@Flargenyargen
@Flargenyargen 2 жыл бұрын
Seeing reverse engineering like this is so satisfying. I'm part of a small community trying to reverse engineer an old MMO and boy... it's such a process, I'll never truly understand. Great work all around.
@DrDoggoat
@DrDoggoat 8 ай бұрын
if I crush up and snort enough copies of sonic unleashed I might be able to excrete a decomp through the pores in my sweat
@ImpeccableExplanation
@ImpeccableExplanation 5 ай бұрын
Most normal Sonic comment
@DrDoggoat
@DrDoggoat 5 ай бұрын
@@ImpeccableExplanation to be fair to me the bar is at Ken Penders.
@digitalunity
@digitalunity Жыл бұрын
I think the opening of this video might be missing a critical fault of the sonic cycle. Sonic fans, myself included though i'll never admit to it, are interested in the next sonic game because we have this sliver of hope left that maybe, just maybe, this one will be different. It never is, and we know in our heads it never will be, but then you get games like frontiers that show even a small degree of basic competence and you start to think "Oh man, the last 24 years of my 24 year old life are finally about to pay off"
@willpreston6881
@willpreston6881 2 жыл бұрын
I've been using Unity professionally (and independently) for a little over a decade -- stale lightmaps are a thing that even happens to Unity games that *aren't* filtered through months of reverse engineering. A number of things can result in flat lighting, the absence of shadows, and the non-shader-related visual artifacts your team was seeing. Standard troubleshooting procedure that I used back in the day was to actually back up and then delete the lighting data (make sure you're using text asset serialization!) and then recreate the lightmaps with shadows disabled but environment/indirect light data enabled. If the result looked closer to your intent, you can be relatively certain that your old lighting data was stale, mangled by version control, or something else, and you could either rebake lighting data, or start diagnosing how it happened in the first place. Glad to see it worked out for you in the end!
@notanimposter
@notanimposter 2 жыл бұрын
Having tried my hand turning compiled mobile Unity games back into projects before, I have nothing but respect for anyone who makes it work. Great job!
@spudd86
@spudd86 2 жыл бұрын
Fun fact sort of decompiling was how Sonic 3D Blast was ported to the Saturn. They made a tool that took the hand written assembly for the Genesis and spat out equivalent C code and ran it on all the game logic, then wrote new code for the graphics, sound and controller.
@unfa00
@unfa00 2 жыл бұрын
That was an insane deep dive into decompiling a game. It's crazy!
@jlewis4441
@jlewis4441 2 жыл бұрын
I had no idea there were ways to still play this game, and then you come along and help kickstart an entire revival! I remember being genuinely sad when I first learned Sonic Runners was taken down years ago, I loved this game when I was younger. I'll definitely be checking out the revival later, sincerest thanks for your amazing contributions and video!
@kwsths499
@kwsths499 2 жыл бұрын
Hmm, I remember trying to decompile apps and games, ranging from android apps to Wii games, I was fascinated with how companies make their own coding system or use an existing one. Now, you can't do basically anything because of digital form games and piracy protection, it's amazing how coding and modeling have developed ey?
@nikkiofthevalley
@nikkiofthevalley 2 жыл бұрын
You can actually still decompile or reverse most games, it has to be executed _somehow._
@TheRailroad99
@TheRailroad99 2 жыл бұрын
The piracy scene is rather efficient at removing DRM protection. However sometimes (especially for Denuvo i think) they just bypass it, which of cause keeps the memory encrypted.
@Jay0neDE
@Jay0neDE 2 жыл бұрын
damn those are some insane skills. digging deep into the engine, not only that, but bringing back deprecated stuff from the grave and bringing it back up to speed.. much respect
@doktoralbin
@doktoralbin 2 жыл бұрын
By far the best intro to game reverse engineering I've seen. Next time someone asks me "How can I bring this old game back to life", I'll point them to this video for an idea of what that entails. Thanks for making this, Matt!
@TroboTicTac
@TroboTicTac 5 ай бұрын
Bro did not slip in Rush Adventure, Unleashed and Heroes in with Sonic Boom💀💀 0:19 I'm already done
@metaforth
@metaforth 4 ай бұрын
I doubt he put to much thought into each individual game in that graphic
@SpringDavid
@SpringDavid Жыл бұрын
19:14 this is the most programmer moment one can have.
@Mizu2023
@Mizu2023 Жыл бұрын
Trying to figure out why something doesn't work as you wanted, and then you get bored and then try random things and then one of those random things actually caused the thing to work like the way you wanted it to. Truly a programmer moment.
@GUNUFofficial
@GUNUFofficial Жыл бұрын
DID I SEE SONIC UNLEASHED AS A TURD? thats it i'm sending the truck.
@lod4246
@lod4246 2 жыл бұрын
5:00 Using cake as an analogy here is pretty clever, ngl..
@atarijaguarfan7893
@atarijaguarfan7893 2 жыл бұрын
i noticed the fact that a lot of this footage runs on a pc and i am wondering if the srr team can make full on pc builds of sonic runners unless something is preventing that
@BluelightAmelia
@BluelightAmelia Жыл бұрын
16:00 About this... PCs and phone GPUs work different compared to each other, to circumvent this and have proper 3D acceleration on mobile phones OpenGL ES is used on all phone GPUs which is wildly different than the desktop OpenGL PCs use normally. From what I've seen on those options there is an OpenGLES3 option available which might of gotten those shaders to work
@claykid
@claykid 2 жыл бұрын
bro how tf are sonic chaos, triple trouble, pocket adventure and rush bad games 🤨
@Saxdude26
@Saxdude26 2 жыл бұрын
1:27 Was that ad that popped up in Sonic Runners for "The You Testsment" by fricking MDickie?! W... W-W-WHAAAT?!
@Pokeduel
@Pokeduel 2 жыл бұрын
i love seeing how this was done, well made. One thing i would say is maybe you could have used AssetRipper instead of uTinyRipper, i believe they both do similar things but Asset Ripper has support for 3.0.0 to 2022.x, so maybe that could have helped in the decompilation process. Especially since uTinyRipper is no longer developed
@theskullemoji
@theskullemoji 2 жыл бұрын
If *MattKC* uploads, you _know_ it's going to be a good day!
@obilemidi
@obilemidi 2 жыл бұрын
why ukraine?
@theskullemoji
@theskullemoji 2 жыл бұрын
@@obilemidi am too lazy to change it
@LevskiBADBOY
@LevskiBADBOY 2 жыл бұрын
@@obilemidi why not a sahbi
@mariocamspam72
@mariocamspam72 2 жыл бұрын
bot
@FarmYardGaming
@FarmYardGaming Жыл бұрын
@dorkerroblox The emboldening of his name implies it
@megumugi8620
@megumugi8620 Жыл бұрын
While Nintendo would go and kill your ahh for doing this, I bet that Sega would just be like: "Wow, you guys are crazy. Good job."
@charliegreekdominos69420
@charliegreekdominos69420 8 күн бұрын
"Wanna come work with us?" Sonic Mania Intensifies
@Aspharon
@Aspharon 2 жыл бұрын
Ah, love this video. This decompilation content is an absolute treat. I've lost count of how many times I've watched your Lego Island videos.
@WarDoctor42
@WarDoctor42 2 жыл бұрын
there are so many mobile games that are now just completely lost to time, its nice to see one that wont suffer the same fate
@Player03Knux
@Player03Knux 5 ай бұрын
Do a decompillation of sonic dream team
@ReubensStuff
@ReubensStuff 4 ай бұрын
dream team is compiled with il2cpp instead of mono which runners used so its basically impossible
@itspaperbagkid
@itspaperbagkid 2 жыл бұрын
Oh man, decompiling games.. I tried to decompile Epic Mickey 1 and 2 and it was.. something else. I was able to rip the games from their discs but I can't code for the life of me. So I was able to have my dad (who's a software engineer) decompile it for the most part. The only problem was that all the files were in the .NIF file format. Me and my dad tried to do as much research as we could on them, but we just couldn't figure it out. Unlucky for me, my dad doesn't know C++, and he wasn't willing to learn it (and generally I have a grasp for reading code, and I can understand it, but I can't write it). So I've been at the point for like four months now possibly being the only person attempting this with the Epic Mickey games and I have no idea what do, lol. The .NIF file format wasn't too uncommon for bigger games around that time -- like for games like Skyrim and the Fallout series -- however Epic Mickey was never specifically documented. Also the reason I went through all this effort? To rip the maps for a single animation I wanted to work on. I still wish to work on it, but because of the game taking place on the Wii, I would probably overwork my Wii trying to run the game and animate at the same time. And it was very unlikely I could emulate the game while animating (though technically speaking I could) because that would probably destroy my pc. I wanted to rip the maps so I could set up complicated camera shots and know placements and whatnot (when it comes to those 3D enviournments, I generally have a good visualisation, but for what I was trying to set up it was too much). Anyways, that's sort of where I'm at. I'd love to archive these for game preservation as well, though I don't know where to go from here. Does anyone have any advice?
@rafaelhines1178
@rafaelhines1178 7 ай бұрын
I'd recommend that you try to see how different the epic mickey .nif files are from other documented ones, then see what happens from there
@ComradeSeanski
@ComradeSeanski 2 жыл бұрын
0:25 i've unironically had that thought many times and I think it's just like star wars or star trek- these franchises have such a hard grip on our hearts that as long as it's not insultingly bad most fans will stick around for the good bits and there is good bits in every sonic game- just usually out weighed by the bad- BUT frontiers looks to be the shift towards a more quality focused sonic franchise and I like to think the movie showed Sega big wigs that people still love the blue rat and there is reason to delay projects if it means a better end goal.
@ireallydontknowifiamhonest
@ireallydontknowifiamhonest 2 жыл бұрын
wait, now that the entirety of it is decompiled, can't there be a Native PC Binary for it as well now?
@greninjasn
@greninjasn 2 жыл бұрын
From the bottom of my heart, thank you and the rest of the revival team. I remember playing this when I was younger, and when it shut down, I was devastated. Since I was young, and had no access to consoles at the time, runners was one of the few ways I could play a Sonic game. Eventually, though, I forgot about the game. Then, maybe about 2 years ago, there was an online resurgence of runners. I'll assume this is what made SRR. When I found out about this, I installed it in a heartbeat. As I was playing it, nostalgia hit me like a truck. It was such a great feeling to replay my childhood. Without the hard work of you and the rest of the team, something I hold dear to my heart would be lost forever. So, again, thank you.
@starlightbotanist-youtube
@starlightbotanist-youtube 2 жыл бұрын
I am sure the difficulty would be so high, but I would love to see Dr. Mario World get this treatment. It's such a good game, but the servers are offline so it can't be played.
@JohnR.DeLuca
@JohnR.DeLuca 2 жыл бұрын
I still wish SEGA would bring back _Sonic Runners_ officially; especially when they keep taunting us with it via a simple Twitter post and couple new remixes of the game's main theme "Beyond the Speed Of". It is the absolute *BEST* _Sonic the Hedgehog_ mobile game I ever played. It's gameplay, content and presentation are outstanding; Sonic Team really went above and beyond with this title, and I will keep voicing my love & advocation for the game's return to SEGA. But regardless, _Sonic Runners Revival_ is a excellent fan effort to keep the game alive, and thank you and the team behind the project for your evidently hard and turbulent work. It good to play this game again after a half decade since its closure in 2016.
@rob5300
@rob5300 2 жыл бұрын
Great video. It's worth noting that even unitys il2cpp code can be somewhat decompiled by community tools.
@thomasphillips885
@thomasphillips885 Жыл бұрын
6:15 gotta love those "Intructions"
@rockyhill3
@rockyhill3 2 жыл бұрын
I was blown away by the effort you and the team put into this, hats off! Please keep it up!
@BradenBest
@BradenBest 2 жыл бұрын
5:35 this whole segment is very, _very_ wrong. First of all, the way in which the popular implementation of a language happens to implement the language has no bearing on how "high level" it is, nor does the relative convenience of using said language. That GCC compiles C to machine code by default while Visual Studio compiles C# to VM bytecode means literally nothing. It's implementation details. Secondly, if anything, C is "higher level" than C#, not the other way around. It may not seem like it, but the C standard is a really fucky document that goes out of its way to a ridiculous extent to support the most obscure hardware possible. You gotta remember that C has been around since 1972, long before x86 came about. Wanna know why Undefined Behavior exists? Portability, that's why. C runs on more hardware than managed runtime-based languages like C# ever will, because its standard requires it to support features or leave vague details that make it possible to map C to, say, machine code for a 1970's honeywell mainframe, whereas C# sets a lot of things in stone that make it impractical-to-impossible to implement depending on the host environment. C# trades a lot in terms of portability and speed for the sake of memory safety and convenience, but none of that makes C# high level. What makes C# high level is that it is abstract. High level *of abstraction from the hardware.* I.e. portable. That's what the term means. *Thirdly,* when it comes to programming languages, high level is not a spectrum. A language is either abstracted from the hardware or it is not. There is no inbetween. Assembly is not abstract. The mnemonics map 1:1 with machine code instructions. 6502 assembly will only assemble to 6502-compatible machine code. It's not portable. C is abstract. It is VERY abstract. The same C code will compile to multiple targets. C is portable. That is to say, if a new architecture comes out tomorrow, a compatible linux distribution will be compiled and imaged for within a few days, if not on the same day, because somebody will add the necessary code to GCC and Linux so that they can support the new hardware. That's called bootstrapping and it's only possible with a high level language. That C has a weak type system and allows you to access low level interfaces does not make the language itself low level, and I hope you can see how silly it would be to think otherwise. After all, Python is sometimes used for embedded applications (arduino) and supports bitwise math operations, but nobody considers Python low level. Fourthly, need I remind you that C# does in fact have mechanisms including pointers, albeit locked behind the unsafe keyword, but there is nothing stopping someone from writing a C compiler that targets .NET CIL. The end result is an MZ executable either way. Which by the way isn't even machine code. Turns out portable executables are actually just formatted binaries full of data, headers, symbol tables, code and relative offsets that have to be hot-subbed when the OS loads the executable into memory, and a whole bunch of stuff has to be done before the kernel finally moves the PC (program counter) to the entry point (which contrary to popular belief is not main()) and lets it run. What, you thought your C program was "close to the metal"? Things haven't been that way in almost 50 years. Your computer is not a fast PDP. Memory is not a linear string of bytes. C programs don't even have an entry point. The entry point is in a separate file, the C runtime, which is loaded from a shared object. The library functions at their bottom line are just wrappers for system calls, which are this thing where the OS has to do a context switch to kernel space so that the kernel, a separate program on the computer, can do privileged stuff that the user space program is not allowed to do. Memory is allocated automatically from the stack and you have no control over said stack. It's automatically pushed and popped. Variadic functions are built-in to the compiler and are generally not implemented in any implementation of libc, instead deferring to the compiler to just _generate_ the machine code to do the thing. Any implementation of libc that does implement va_args either does so through asm directives (deferring to assembly) or through mechanisms that are undefined behavior as per the standard (like grabbing a pointer to the address of the last argument and manipulating it to point to where the next argument will be, which is super super not allowed), neither of which are portable. Even pointer arithmetic is automatically calculated for you. You don't have to worry about the size of data a pointer points to unless you're using a void pointer. You can just do pointer[3] and the compiler will happily do the math required to jump 3 x sizeof *pointer bytes past the start of the array. And what about floats? There is no guarantee that IEEE754 floating point arithmetic is supported by the hardware, yet C provides a float and double type and guarantees it will work. On hardware where IEEE754 is not implemented, like, say, a 6502 chip, you would have to handle all of that yourself. C will do it for you. C has no ABI, you cannot tell C how to serve a function call, whether to use registers or the stack, etc. You can make suggestions sometimes, but the compiler will almost certainly ignore you and do instead whatever it thinks is the fastest. There are so many details of the hardware and underlying system that you have absolutely zero control over when programming in C. C is not even remotely low level. If you want low level, program in assembly and be prepared to read a lot of hardware documentation.
@AngryMarkFPV
@AngryMarkFPV 2 жыл бұрын
I miss your regular uploads. Welcome back Matt
@CYON4D
@CYON4D 2 жыл бұрын
As a programmer this is by far my favorite content to watch. Things you achieve here is nothing short of mind-blowing. I love the hardware related videos as well. Thanks a lot for sharing these projects with us.
@qwertyuiop.lkjhgfdsa
@qwertyuiop.lkjhgfdsa 2 жыл бұрын
2:33 skip ad button
@BotSpider
@BotSpider 5 ай бұрын
I remember being freinds with one of the people on the team and him showing me some of the progress. Its on his Gamejolt account. We dont talk no more but i am VERY proud of him and the team.
@soviut303
@soviut303 2 жыл бұрын
Really impressive preservation effort. This is one of those videos that would naturally make for a great presentation at a conference some day.
@RadikAlice
@RadikAlice 2 жыл бұрын
This is _peak_ Sonic community right here. Glad you joined in, that's the beauty of open source isn't it? And ayy, I was was thinking of the PatMac video too. Hats off to you for being such a cultured man
@smellthel
@smellthel 2 жыл бұрын
Amazing video! I’ve always been interested in this stuff!
@Plaston_
@Plaston_ Жыл бұрын
Extracting games is a nice way to learn how their are made because you can see unused assets with referance to thems (even deleted ones) and even the project's code and project's name in it!
@coolest10293
@coolest10293 2 жыл бұрын
It’ll be at least a few more re-watches before I get bored of watching him decompile this game. I’ll update y’all when that happens
@coolest10293
@coolest10293 2 жыл бұрын
Yay! I was chosen to be scammed! Hooray! I think this means I am finally a big enough KZbinr that I was chosen to be replied to by this scammer bot!
@vvx600
@vvx600 2 жыл бұрын
0:18 ik ít’s a joke but like half the games they’re we’re good for their time
@taylorberry1735
@taylorberry1735 2 ай бұрын
Not just for their time, ones like Unleashed are still great, hell even Black Knight once you get past the Wii’s clunky motion controls
@puffleperson
@puffleperson 2 жыл бұрын
I'm not disappointed that you covered a mobile game. I was fully anticipating this to be about the Godot remake of Colors. I actually had to decompile a mobile game once so I could get at it's soundtrack (This was before a legit release) and I learned about the system PATH and it changed my life forever.
@HexOverride
@HexOverride 2 жыл бұрын
1:27 Mdickie would never make a ad like that!
@pokemaster2129
@pokemaster2129 2 жыл бұрын
Im actually much more interested in decompiling mobile games, especially reviving some of the servers that they have (which inevitably shut down without any notice sometimes!!) Especially with some mobile games like angry birds fight, as it is a game I have huge nostalgia for
@ReubensStuff
@ReubensStuff 2 жыл бұрын
Hey, I’m actually a developer for an Angry Birds Fight revival project called Reboot. It was difficult to say the least. And yeah, this has inspired me to maybe take a stab at decompiling the game.
@ReubensStuff
@ReubensStuff 2 жыл бұрын
Also yes, we did get the game working. Took a while, lol.
@sth10
@sth10 8 ай бұрын
5:04 this is the best rick roll ever 😅
@Jono997
@Jono997 2 жыл бұрын
This was a freaking awesome watch!
@Technilogica2019
@Technilogica2019 2 жыл бұрын
12:32 so i had this playing in the background while i work just cus i enjoy game preservation, and let me tell you i tuned back in so quickly lmfaoo
@FoxyAnimater
@FoxyAnimater 2 жыл бұрын
Question, since it's now fully decompiled in unity code, can't it be compiled back to pc? Namely windows and linux?
@PorygonAxolotl
@PorygonAxolotl 2 жыл бұрын
Yes
@FoxyAnimater
@FoxyAnimater 2 жыл бұрын
@@PorygonAxolotl okay, how would the controls work then unless you plan on having the controls just be a mouse input in which case it's kind of boring, some modification would need to be made. Also an arm port for raspberry Pi or M1 Mac would make it future-proofed.
@fluffy_tail4365
@fluffy_tail4365 5 ай бұрын
12:20 developers wasting my batteries so their function is "obfuscated"
@AlvinPlayz997
@AlvinPlayz997 9 ай бұрын
Can you also Decompile Sonic Origins Plus?
@AlvinPlayz997
@AlvinPlayz997 6 ай бұрын
@BriansMe fair point, but it would still kind of be nice. Plus you'd have the Drop Dash in all the Classic Games(even though it's very poorly implemented)
@AlvinPlayz997
@AlvinPlayz997 6 ай бұрын
@BriansMe fair point
@EvanTeran
@EvanTeran 2 жыл бұрын
Note that things like "call $+5; pop eax" isn't really obfuscation, it's a common technique for writing position independent code. Because call puts the next address on the stack and they you immediate pop it, that's a way to get "here" into a register, which can later be used to fetch data relative to "here". In x86-64, this is no longer really a thing because RIP relative addressing was introduced offering a more efficient way to do the same thing.
@mccad00
@mccad00 2 жыл бұрын
Out of curiosity, ever mess around with unity AssetRipper? We used to use utinyripper in our modding community, but ran into a lot of issues and ended up switching to assetripper instead For whatever it’s worth though, the game we mod (GTFO) is compiled in IL2CPP which I’m pretty sure is where our issues came from
@DigitalzombieDev
@DigitalzombieDev 2 жыл бұрын
AssetRipper is awesome. The dev spends A LOT of time working on it. But yeah, IL2CPP is a big problem. Its right in the name ... IL to C++. So the code is actually compiled here. But the decompilation is getting better. Another problem with IL2CPP is "stripping". Standard Unity methods that are not used in the game are sometimes stripped out of the game by IL2CPP. Meaning ... if the game doesn't use WheelCollider, you won't be able to "just" use that component in mods. Because ... its gone :D
@mccad00
@mccad00 2 жыл бұрын
@@DigitalzombieDev actually didnt know that about the stripping, that's interesting. IL2CPP was a huge hurdle for us to work around as well, but we were fortunate enough that the devs made several accidental mono releases somehow, so we always had a (relatively) up to date decompilation to check. Luckily BepInEx and Unhollower have seen major improvements since we started and a lot of the previous limitations we ran into have been circumvented
@DigitalzombieDev
@DigitalzombieDev 2 жыл бұрын
@@mccad00 Mono releases are a real lifesaver here. Been working on one game with a mono release that was 2 years behind the current version of the game. Insane. Unhollower does some unstripping on IL2CPP and can restore some of it. It's not perfect though. But yeah, its way better now than it was not that long ago. MelonLoader is another alternative to BepInEx, but the Unhollower version is quite a bit behind until ML version 0.6 gets released (hopefully this year). On one "game" I'm working on about 50% of the physics is stripped out. Try creating a car racing mod without friction materials. Oo To be fair, the dev can choose multiple different stripping levels before compilation. So you may get lucky on some games and only a few things are missing.
@otter-pro
@otter-pro Жыл бұрын
I'm Impressed, as a software developer. I can tell you that doing something like this is incredibly difficult, even for a seasoned veteran dev. I wonder if you were a senior/lead game developer before.
@sonicSnap
@sonicSnap 2 жыл бұрын
all of that, and they still won't make a pc port
@boscorner
@boscorner 8 ай бұрын
It's so funny. Anyone whose even just MESSED with code even for just a short while seems to have a "I have no idea why this made it work " story
@Aisubun
@Aisubun Жыл бұрын
haha could you maybe do this for Dragalia Lost and Love Live All Stars please Okay it'll never happen but I can't do it myself so I'm just praying someone will save them
@janchristianursuaaguilar7434
@janchristianursuaaguilar7434 Жыл бұрын
well Love Live Stars runs on unity unlike Love Live School Idol Festival runs on proprietary game engine for dingus reasons. but hey we never know
@screane5739
@screane5739 2 жыл бұрын
i like how the title went from "decompiled" to "DECOMPILED"
@qwerty_studios
@qwerty_studios 2 жыл бұрын
oh hello there
@attilavs2
@attilavs2 2 жыл бұрын
General kenobi
@aid3n594
@aid3n594 2 жыл бұрын
@@attilavs2 Sir this is a video about decompiling a sonic game
@attilavs2
@attilavs2 2 жыл бұрын
@@aid3n594 yes but the lolz
@Gamer-ct6hb
@Gamer-ct6hb 2 жыл бұрын
Hello mom.
@mathiasensimon
@mathiasensimon 2 жыл бұрын
"MattKC has uploaded a new video" might be my favorite combination of words
@NabbyLloyd
@NabbyLloyd 2 жыл бұрын
does the "C" in your name stand for Chad by any chance?
@t3hfridge
@t3hfridge 2 жыл бұрын
Oh gosh. I actually forgot this project existed, when the decompilation wasn't even complete the team called up people to try and engineer a nice way to input audio, cause proprietary formats. Me and some other Guy helped them, we didnt fully get custom audio right but we got something.
@WangleLine
@WangleLine Жыл бұрын
I think it's a little weird the title says "I decompiled a sonic game" when you mention in the video how there was an entire team of people who made this possible
@ZayTheCrystalBoi
@ZayTheCrystalBoi Жыл бұрын
0:41 Sonic superstars and Sonic frontiers have joined the chat.
@RetroGigabyte
@RetroGigabyte 2 ай бұрын
They are good
@jamescruz8678
@jamescruz8678 2 жыл бұрын
WAKE UP BABE NEW MATTKC DROPPED
@CallousCoder
@CallousCoder 2 жыл бұрын
100% awesomeness!!! Love the tech details and the brilliance you and your team threw at this problem! Kudos!!!
@ItsCenrryTH
@ItsCenrryTH 2 жыл бұрын
Matt demonstrating how tough decompilations are opened my eyes And now I am more grateful some peeps managed to decompile rsdk5
@owenleduc
@owenleduc Жыл бұрын
I got a joke. Why did the java developer need a tutor? Because he couldn't get better that a c++
@heart_locket2
@heart_locket2 Ай бұрын
Did someone say: public class Thing : MonoBehaviour { int c; void Start() { int a = 1; c++; } }
@chitan1362
@chitan1362 11 ай бұрын
Decomps of the Sonic Adventure games would be the chef's kiss for me.
@kelownatechkid
@kelownatechkid 2 жыл бұрын
Seriously thank you!! This is awesome work. I am so happy to see daunting projects like this being tackled
@RyanEdwardsVA
@RyanEdwardsVA 2 жыл бұрын
12:55 oh my god I cannot believe I am not the only person in the world that says .JSON like the "JAAASON" from Heavy Rain. Without fucking fail since I learned of the format many years ago, I have, it's like a tic. As such, seeing you make that specific connection as well cracked me the fuck up.
The time I got suspended from school...
14:12
MattKC
Рет қаралды 731 М.
Lamborghini vs Smoke 😱
00:38
Topper Guild
Рет қаралды 66 МЛН
УДИВИЛ ВСЕХ СВОИМ УХОДОМ!😳 #shorts
00:49
А я думаю что за звук такой знакомый? 😂😂😂
00:15
Денис Кукояка
Рет қаралды 7 МЛН
Can you play SEGA Genesis from AA batteries?
10:21
MattKC
Рет қаралды 399 М.
Recompilation: An Incredible New Way to Keep N64 Games Alive
11:13
I ported THOUSANDS of apps to Windows 95
51:54
MattKC
Рет қаралды 1,3 МЛН
So I started decompiling LEGO Island...
21:19
MattKC
Рет қаралды 992 М.
Why do some NES games say "Starting Machine"?
11:19
MattKC
Рет қаралды 587 М.
What is the BEST Sonic Mobile Game???
27:55
XPool
Рет қаралды 65 М.
I created Sonic Adventure... kind of
16:39
chaomix
Рет қаралды 205 М.
I remade Pikmin in 24 hours.
25:01
Code Bullet
Рет қаралды 1 МЛН
North Korea made a Flash game... and I played it
21:37
MattKC
Рет қаралды 645 М.