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 Жыл бұрын
O interesting
@itsTyrion Жыл бұрын
interesting. Too bad the comment did just get buried among all the other comments
@SullySadface8 ай бұрын
Not enough comment. Moar.
@PowerRedBullTypology7 ай бұрын
@@SullySadface yeah
@Wgaddafi6 ай бұрын
@@SullySadface^^^
@FoxtailBoyd19912 жыл бұрын
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 Жыл бұрын
Not just unity as a godot dev this is also the case lots of times I think thats just programing in general
@rootabeta9015 Жыл бұрын
As not a game dev, but a programmer, this is universal
@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 Жыл бұрын
@@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 Жыл бұрын
Skill issue moment
@MuchWhittering2 жыл бұрын
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.
@NickGoblin2 жыл бұрын
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.
@bfgfanatic17472 жыл бұрын
We're decomping PS2 games now? How long will I need to wait for the Burnout 3 decomp?
@WaveSmash2 жыл бұрын
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.
@FR4M3Sharma2 жыл бұрын
@@bfgfanatic1747 I'm working on Urban Reign, if you're interested in that game, tho I literally just began last month. :)
@wasabithumbs62942 жыл бұрын
WHAAT? J&D is very special to me, incredible that someone ported it before I got skilled enough to
@Charriii52 жыл бұрын
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.
@Sanichotdog8872 жыл бұрын
you know what they say all toaster's toast toast
@_SYDGAMING_2 жыл бұрын
Glad you will finally be able to have a chance to play runners. It was a fantastic little game
@FanaticChain2 жыл бұрын
Bro you can’t escape charriii5 the man is literally omnipresent what the hell
@stripethetiger2 жыл бұрын
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!
@slimeprivilege2 жыл бұрын
PLEASE GO OUTSIDE HOLY FUCK
@Sydney_Angelyt2 жыл бұрын
@@slimeprivilege stop shaming art preservation
@weggygaygay99402 жыл бұрын
@@Sydney_Angelyt video games aren’t art
@superizillian9572 жыл бұрын
@@slimeprivilege Most people who say this are hypocrites
@Solaceon2 жыл бұрын
@@weggygaygay9940 What would you argue is? I'm just curious.
@cousinjohnny65842 жыл бұрын
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.
@SuperXzm7 ай бұрын
Normal developers: Aw shit I need to upgrade everything... Evil developers: I have an urge to downgrade. Igor, bring the parser.
@scarm_rune7 ай бұрын
funnily enough, gamemaker's compiler is called igor
@extremistcontentfan12362 жыл бұрын
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_L2 жыл бұрын
😂 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………
@gluttonousmaximus90482 жыл бұрын
@@Delus1on_L MINESWEEPER
@Delus1on_L2 жыл бұрын
@@gluttonousmaximus9048 Oh yea… forgot about that one…
@chadmasta52 жыл бұрын
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.
@ApostleOfCats2 жыл бұрын
I feel like mobile games can’t even be compared to normal games, they just fill a different role.
@chadmasta52 жыл бұрын
@@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.
@partlyawesome2 жыл бұрын
any mention of dr mario world reminds me of the greentext about that coworker who was obsessed with it lmao
@LevskiBADBOY2 жыл бұрын
@@ApostleOfCats console peasant belike:
@ApostleOfCats2 жыл бұрын
@@chadmasta5 never said they weren’t video games
@flamela-c4f2 жыл бұрын
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
@Celeviii2 жыл бұрын
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!
@bfgfanatic17472 жыл бұрын
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.
@awesomesheep2 жыл бұрын
You should check out project 06 by chaosx
@leonardoalvarenga75722 жыл бұрын
Project 06 is garbage and is made by a scummy dev, don't check it out and don't support it.
@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.
@Celeviii2 жыл бұрын
@@bfgfanatic1747 I was aware of the project, but last I heard it wasn't that far a long so fair enough
@jishan69922 жыл бұрын
Love when this sort of videos are released, I really liked that fixing the corrupted game save saga
@CEOHankScorpio2 жыл бұрын
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__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!
@goukigod2 жыл бұрын
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 👏 👏 👏
@turbospeed65622 жыл бұрын
So true
@d1zguy8647 ай бұрын
Because he really knows what he’s talking about
@dumbtruccc7 ай бұрын
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
@ozanege38932 ай бұрын
0:18 Did I just see Sonic Unleashed between thoose games?
@saleh_alnour18 күн бұрын
Sonic Unleashed is the best game in the franchise, fuck everyone's opinion
@TechnologistAtWork2 жыл бұрын
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.
@nikkiofthevalley2 жыл бұрын
He already had experience in related parts of the same field, he isn't starting from scratch here.
@condensedmatter1182 жыл бұрын
@@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!
@nikkiofthevalley2 жыл бұрын
@@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.
@d1zguy8647 ай бұрын
He’s so smart. Gotta have an IQ of 130 at least
@d1zguy8647 ай бұрын
He’s so smart. Gotta have an IQ of 130 at least
@dukemagus2 жыл бұрын
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 Жыл бұрын
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
@ZachHixsonTutorials2 жыл бұрын
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.
@justsomesimplenuclearbirbs43132 жыл бұрын
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."
@moleyface2 жыл бұрын
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.
@DPedroBoh2 жыл бұрын
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.
@speedy2 жыл бұрын
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 😆
@sentinelaenow45762 жыл бұрын
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!
@Flargenyargen2 жыл бұрын
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.
@DrDoggoat8 ай бұрын
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
@ImpeccableExplanation5 ай бұрын
Most normal Sonic comment
@DrDoggoat5 ай бұрын
@@ImpeccableExplanation to be fair to me the bar is at Ken Penders.
@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"
@willpreston68812 жыл бұрын
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!
@notanimposter2 жыл бұрын
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!
@spudd862 жыл бұрын
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.
@unfa002 жыл бұрын
That was an insane deep dive into decompiling a game. It's crazy!
@jlewis44412 жыл бұрын
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!
@kwsths4992 жыл бұрын
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?
@nikkiofthevalley2 жыл бұрын
You can actually still decompile or reverse most games, it has to be executed _somehow._
@TheRailroad992 жыл бұрын
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.
@Jay0neDE2 жыл бұрын
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
@doktoralbin2 жыл бұрын
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!
@TroboTicTac5 ай бұрын
Bro did not slip in Rush Adventure, Unleashed and Heroes in with Sonic Boom💀💀 0:19 I'm already done
@metaforth4 ай бұрын
I doubt he put to much thought into each individual game in that graphic
@SpringDavid Жыл бұрын
19:14 this is the most programmer moment one can have.
@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 Жыл бұрын
DID I SEE SONIC UNLEASHED AS A TURD? thats it i'm sending the truck.
@lod42462 жыл бұрын
5:00 Using cake as an analogy here is pretty clever, ngl..
@atarijaguarfan78932 жыл бұрын
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 Жыл бұрын
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
@claykid2 жыл бұрын
bro how tf are sonic chaos, triple trouble, pocket adventure and rush bad games 🤨
@Saxdude262 жыл бұрын
1:27 Was that ad that popped up in Sonic Runners for "The You Testsment" by fricking MDickie?! W... W-W-WHAAAT?!
@Pokeduel2 жыл бұрын
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
@theskullemoji2 жыл бұрын
If *MattKC* uploads, you _know_ it's going to be a good day!
@obilemidi2 жыл бұрын
why ukraine?
@theskullemoji2 жыл бұрын
@@obilemidi am too lazy to change it
@LevskiBADBOY2 жыл бұрын
@@obilemidi why not a sahbi
@mariocamspam722 жыл бұрын
bot
@FarmYardGaming Жыл бұрын
@dorkerroblox The emboldening of his name implies it
@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."
@charliegreekdominos694208 күн бұрын
"Wanna come work with us?" Sonic Mania Intensifies
@Aspharon2 жыл бұрын
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.
@WarDoctor422 жыл бұрын
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
@Player03Knux5 ай бұрын
Do a decompillation of sonic dream team
@ReubensStuff4 ай бұрын
dream team is compiled with il2cpp instead of mono which runners used so its basically impossible
@itspaperbagkid2 жыл бұрын
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?
@rafaelhines11787 ай бұрын
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
@ComradeSeanski2 жыл бұрын
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.
@ireallydontknowifiamhonest2 жыл бұрын
wait, now that the entirety of it is decompiled, can't there be a Native PC Binary for it as well now?
@greninjasn2 жыл бұрын
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-youtube2 жыл бұрын
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.DeLuca2 жыл бұрын
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.
@rob53002 жыл бұрын
Great video. It's worth noting that even unitys il2cpp code can be somewhat decompiled by community tools.
@thomasphillips885 Жыл бұрын
6:15 gotta love those "Intructions"
@rockyhill32 жыл бұрын
I was blown away by the effort you and the team put into this, hats off! Please keep it up!
@BradenBest2 жыл бұрын
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.
@AngryMarkFPV2 жыл бұрын
I miss your regular uploads. Welcome back Matt
@CYON4D2 жыл бұрын
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.lkjhgfdsa2 жыл бұрын
2:33 skip ad button
@BotSpider5 ай бұрын
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.
@soviut3032 жыл бұрын
Really impressive preservation effort. This is one of those videos that would naturally make for a great presentation at a conference some day.
@RadikAlice2 жыл бұрын
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
@smellthel2 жыл бұрын
Amazing video! I’ve always been interested in this stuff!
@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!
@coolest102932 жыл бұрын
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
@coolest102932 жыл бұрын
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!
@vvx6002 жыл бұрын
0:18 ik ít’s a joke but like half the games they’re we’re good for their time
@taylorberry17352 ай бұрын
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
@puffleperson2 жыл бұрын
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.
@HexOverride2 жыл бұрын
1:27 Mdickie would never make a ad like that!
@pokemaster21292 жыл бұрын
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
@ReubensStuff2 жыл бұрын
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.
@ReubensStuff2 жыл бұрын
Also yes, we did get the game working. Took a while, lol.
@sth108 ай бұрын
5:04 this is the best rick roll ever 😅
@Jono9972 жыл бұрын
This was a freaking awesome watch!
@Technilogica20192 жыл бұрын
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
@FoxyAnimater2 жыл бұрын
Question, since it's now fully decompiled in unity code, can't it be compiled back to pc? Namely windows and linux?
@PorygonAxolotl2 жыл бұрын
Yes
@FoxyAnimater2 жыл бұрын
@@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_tail43655 ай бұрын
12:20 developers wasting my batteries so their function is "obfuscated"
@AlvinPlayz9979 ай бұрын
Can you also Decompile Sonic Origins Plus?
@AlvinPlayz9976 ай бұрын
@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)
@AlvinPlayz9976 ай бұрын
@BriansMe fair point
@EvanTeran2 жыл бұрын
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.
@mccad002 жыл бұрын
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
@DigitalzombieDev2 жыл бұрын
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
@mccad002 жыл бұрын
@@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
@DigitalzombieDev2 жыл бұрын
@@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 Жыл бұрын
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.
@sonicSnap2 жыл бұрын
all of that, and they still won't make a pc port
@boscorner8 ай бұрын
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 Жыл бұрын
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 Жыл бұрын
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
@screane57392 жыл бұрын
i like how the title went from "decompiled" to "DECOMPILED"
@qwerty_studios2 жыл бұрын
oh hello there
@attilavs22 жыл бұрын
General kenobi
@aid3n5942 жыл бұрын
@@attilavs2 Sir this is a video about decompiling a sonic game
@attilavs22 жыл бұрын
@@aid3n594 yes but the lolz
@Gamer-ct6hb2 жыл бұрын
Hello mom.
@mathiasensimon2 жыл бұрын
"MattKC has uploaded a new video" might be my favorite combination of words
@NabbyLloyd2 жыл бұрын
does the "C" in your name stand for Chad by any chance?
@t3hfridge2 жыл бұрын
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 Жыл бұрын
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 Жыл бұрын
0:41 Sonic superstars and Sonic frontiers have joined the chat.
@RetroGigabyte2 ай бұрын
They are good
@jamescruz86782 жыл бұрын
WAKE UP BABE NEW MATTKC DROPPED
@CallousCoder2 жыл бұрын
100% awesomeness!!! Love the tech details and the brilliance you and your team threw at this problem! Kudos!!!
@ItsCenrryTH2 жыл бұрын
Matt demonstrating how tough decompilations are opened my eyes And now I am more grateful some peeps managed to decompile rsdk5
@owenleduc Жыл бұрын
I got a joke. Why did the java developer need a tutor? Because he couldn't get better that a c++
@heart_locket2Ай бұрын
Did someone say: public class Thing : MonoBehaviour { int c; void Start() { int a = 1; c++; } }
@chitan136211 ай бұрын
Decomps of the Sonic Adventure games would be the chef's kiss for me.
@kelownatechkid2 жыл бұрын
Seriously thank you!! This is awesome work. I am so happy to see daunting projects like this being tackled
@RyanEdwardsVA2 жыл бұрын
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.