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

Поделиться
HTML-код
  • Опубликовано: 23 янв 2025

Комментарии • 1,2 тыс.

  • @FairPlay137
    @FairPlay137 2 года назад +518

    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.

  • @Charriii5
    @Charriii5 2 года назад +602

    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 года назад +6

      you know what they say
      all toaster's toast toast

    • @_SYDGAMING_
      @_SYDGAMING_ 2 года назад +4

      Glad you will finally be able to have a chance to play runners. It was a fantastic little game

    • @FanaticChain
      @FanaticChain 2 года назад +4

      Bro you can’t escape charriii5 the man is literally omnipresent what the hell

  • @FoxtailBoyd1991
    @FoxtailBoyd1991 2 года назад +496

    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 Год назад +26

      Not just unity as a godot dev this is also the case lots of times
      I think thats just programing in general

    • @rootabeta9015
      @rootabeta9015 Год назад +20

      As not a game dev, but a programmer, this is universal

    • @fallingwater
      @fallingwater Год назад +24

      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 Год назад +7

      @@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 Год назад +2

      Skill issue moment

  • @MuchWhittering
    @MuchWhittering 2 года назад +2080

    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 года назад +52

      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 года назад +50

      We're decomping PS2 games now? How long will I need to wait for the Burnout 3 decomp?

    • @WaveSmash
      @WaveSmash 2 года назад +41

      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 года назад +10

      @@bfgfanatic1747 I'm working on Urban Reign, if you're interested in that game, tho I literally just began last month. :)

    • @wasabithumbs6294
      @wasabithumbs6294 2 года назад +5

      WHAAT? J&D is very special to me, incredible that someone ported it before I got skilled enough to

  • @stripethetiger
    @stripethetiger 2 года назад +3754

    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 года назад +127

      PLEASE GO OUTSIDE HOLY FUCK

    • @Sydney_Angelyt
      @Sydney_Angelyt 2 года назад +388

      @@slimeprivilege stop shaming art preservation

    • @weggygaygay9940
      @weggygaygay9940 2 года назад +26

      @@Sydney_Angelyt video games aren’t art

    • @superizillian957
      @superizillian957 2 года назад +304

      @@slimeprivilege Most people who say this are hypocrites

    • @Solaceon
      @Solaceon 2 года назад +217

      @@weggygaygay9940 What would you argue is? I'm just curious.

  • @cousinjohnny6584
    @cousinjohnny6584 2 года назад +171

    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 9 месяцев назад +46

    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 8 месяцев назад +8

      funnily enough, gamemaker's compiler is called igor

  • @chadmasta5
    @chadmasta5 2 года назад +152

    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 года назад +8

      I feel like mobile games can’t even be compared to normal games, they just fill a different role.

    • @chadmasta5
      @chadmasta5 2 года назад +21

      @@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 года назад +4

      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 года назад +1

      @@chadmasta5 never said they weren’t video games

  • @flamela-c4f
    @flamela-c4f 2 года назад +355

    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

  • @extremistcontentfan1236
    @extremistcontentfan1236 2 года назад +213

    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 года назад +19

      😂 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 года назад +7

      @@Delus1on_L MINESWEEPER

    • @Delus1on_L
      @Delus1on_L 2 года назад +3

      @@gluttonousmaximus9048 Oh yea… forgot about that one…

  • @targz__
    @targz__ 2 года назад +59

    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 года назад +104

    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 9 месяцев назад

      Because he really knows what he’s talking about

  • @jishan6992
    @jishan6992 2 года назад +65

    Love when this sort of videos are released, I really liked that fixing the corrupted game save saga

  • @CEOHankScorpio
    @CEOHankScorpio 2 года назад +27

    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.

  • @Celeviii
    @Celeviii 2 года назад +316

    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 года назад +66

      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 года назад +14

      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 года назад +6

      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

  • @dumbtruccc
    @dumbtruccc 9 месяцев назад +6

    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

  • @TechnologistAtWork
    @TechnologistAtWork 2 года назад +26

    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 года назад +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 года назад +4

      @@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 9 месяцев назад

      He’s so smart. Gotta have an IQ of 130 at least

    • @d1zguy864
      @d1zguy864 9 месяцев назад

      He’s so smart. Gotta have an IQ of 130 at least

  • @speedy
    @speedy 2 года назад +23

    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 😆

  • @moleyface
    @moleyface 2 года назад +10

    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.

  • @ozanege3893
    @ozanege3893 3 месяца назад +8

    0:18 Did I just see Sonic Unleashed between thoose games?

    • @saleh_alnour
      @saleh_alnour Месяц назад +2

      Sonic Unleashed is the best game in the franchise, fuck everyone's opinion

  • @DPedroBoh
    @DPedroBoh 2 года назад +6

    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.

  • @ZachHixsonTutorials
    @ZachHixsonTutorials 2 года назад +7

    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.

  • @digitalunity
    @digitalunity Год назад +8

    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"

  • @dukemagus
    @dukemagus 2 года назад +10

    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#

  • @Flargenyargen
    @Flargenyargen 2 года назад +18

    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.

  • @justsomesimplenuclearbirbs4313
    @justsomesimplenuclearbirbs4313 2 года назад +4

    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."

  • @sentinelaenow4576
    @sentinelaenow4576 2 года назад +22

    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!

  • @izhundrikov
    @izhundrikov Год назад +2

    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

  • @TroboTicTac
    @TroboTicTac 6 месяцев назад +6

    Bro did not slip in Rush Adventure, Unleashed and Heroes in with Sonic Boom💀💀
    0:19
    I'm already done

    • @metaforth
      @metaforth 5 месяцев назад +2

      I doubt he put to much thought into each individual game in that graphic

  • @notanimposter
    @notanimposter 2 года назад +5

    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!

  • @SpringDavid
    @SpringDavid Год назад +6

    19:14 this is the most programmer moment one can have.

    • @Mizu2023
      @Mizu2023 Год назад +2

      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.

  • @jlewis4441
    @jlewis4441 2 года назад +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!

  • @willpreston6881
    @willpreston6881 2 года назад +11

    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!

  • @spudd86
    @spudd86 2 года назад +3

    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.

  • @DrDoggoat
    @DrDoggoat 9 месяцев назад +10

    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 7 месяцев назад +1

      Most normal Sonic comment

    • @DrDoggoat
      @DrDoggoat 7 месяцев назад

      @@ImpeccableExplanation to be fair to me the bar is at Ken Penders.

  • @unfa00
    @unfa00 2 года назад +5

    That was an insane deep dive into decompiling a game. It's crazy!

  • @ireallydontknowifiamhonest
    @ireallydontknowifiamhonest 2 года назад +10

    wait, now that the entirety of it is decompiled, can't there be a Native PC Binary for it as well now?

  • @Jay0neDE
    @Jay0neDE 2 года назад +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

  • @kwsths499
    @kwsths499 2 года назад +61

    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 года назад +11

      You can actually still decompile or reverse most games, it has to be executed _somehow._

    • @TheRailroad99
      @TheRailroad99 2 года назад +10

      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.

  • @atarijaguarfan7893
    @atarijaguarfan7893 2 года назад +9

    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

  • @WarDoctor42
    @WarDoctor42 2 года назад +3

    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

  • @Pokeduel
    @Pokeduel 2 года назад +5

    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

  • @doktoralbin
    @doktoralbin 2 года назад +9

    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!

  • @theskullemoji
    @theskullemoji 2 года назад +134

    If *MattKC* uploads, you _know_ it's going to be a good day!

  • @lod4246
    @lod4246 2 года назад +2

    5:00 Using cake as an analogy here is pretty clever, ngl..

  • @megumugi8620
    @megumugi8620 Год назад +11

    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."

  • @claykid
    @claykid 2 года назад +10

    bro how tf are sonic chaos, triple trouble, pocket adventure and rush bad games 🤨

  • @rob5300
    @rob5300 2 года назад +4

    Great video. It's worth noting that even unitys il2cpp code can be somewhat decompiled by community tools.

  • @Saxdude26
    @Saxdude26 2 года назад +1

    1:27 Was that ad that popped up in Sonic Runners for "The You Testsment" by fricking MDickie?! W... W-W-WHAAAT?!

  • @starlightbotanist-youtube
    @starlightbotanist-youtube 2 года назад +4

    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.

  • @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.

  • @AngryMarkFPV
    @AngryMarkFPV 2 года назад +3

    I miss your regular uploads. Welcome back Matt

  • @meltatron9794
    @meltatron9794 2 месяца назад +1

    19:16 Ah yeah, the classic "the thing just works" move where no one knows how tf the program fixed itself. You just accept it as an absolute truth and never touch it again to make sure it doesn't crashes the whole thing again.

  • @rockyhill3
    @rockyhill3 2 года назад +3

    I was blown away by the effort you and the team put into this, hats off! Please keep it up!

  • @Plaston_
    @Plaston_ 2 года назад

    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!

  • @Player03Knux
    @Player03Knux 6 месяцев назад +5

    Do a decompillation of sonic dream team

    • @ReubensStuff
      @ReubensStuff 6 месяцев назад +1

      dream team is compiled with il2cpp instead of mono which runners used so its basically impossible

  • @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.

  • @itspaperbagkid
    @itspaperbagkid 2 года назад +4

    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 9 месяцев назад

      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

  • @otter-pro
    @otter-pro Год назад +1

    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.

  • @coolest10293
    @coolest10293 2 года назад +3

    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 года назад +1

      Yay! I was chosen to be scammed! Hooray! I think this means I am finally a big enough RUclipsr that I was chosen to be replied to by this scammer bot!

  • @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 года назад +3

    Amazing video! I’ve always been interested in this stuff!

  • @BotSpider
    @BotSpider 7 месяцев назад

    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 года назад +9

    Really impressive preservation effort. This is one of those videos that would naturally make for a great presentation at a conference some day.

  • @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 года назад +4

    2:33 skip ad button

  • @CallousCoder
    @CallousCoder 2 года назад

    100% awesomeness!!! Love the tech details and the brilliance you and your team threw
    at this problem! Kudos!!!

  • @Jono997
    @Jono997 2 года назад +3

    This was a freaking awesome watch!

  • @ComradeSeanski
    @ComradeSeanski 2 года назад +1

    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.

  • @FoxyAnimater
    @FoxyAnimater 2 года назад +5

    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 года назад +1

      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.

  • @kelownatechkid
    @kelownatechkid 2 года назад

    Seriously thank you!! This is awesome work. I am so happy to see daunting projects like this being tackled

  • @puffleperson
    @puffleperson 2 года назад +6

    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.

  • @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

  • @pokemaster2129
    @pokemaster2129 2 года назад +3

    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.

  • @_SYDGAMING_
    @_SYDGAMING_ 2 года назад

    So glad you're trying to get sonic runners working.ive missed this game so much

  • @AlvinPlayz997
    @AlvinPlayz997 11 месяцев назад +3

    Can you also Decompile Sonic Origins Plus?

    • @AlvinPlayz997
      @AlvinPlayz997 7 месяцев назад +1

      @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 7 месяцев назад

      @BriansMe fair point

  • @trashpanda502
    @trashpanda502 2 года назад

    loved the reference to your old the room video. I love your old stuff.

  • @BlockM3D
    @BlockM3D 3 месяца назад +3

    Cake Processing Unit

    • @AidRe
      @AidRe Месяц назад +1

      cock penis unit

  • @Wolfburns
    @Wolfburns 2 года назад

    Really cool to see some behind the scenes work. Enjoyed the video! Thank you for putting out awesome content.

  • @sonicSnap
    @sonicSnap 2 года назад +13

    all of that, and they still won't make a pc port

  • @shyguygaming5397
    @shyguygaming5397 2 года назад

    I loved playing Sonic Runners. It was a really fun game and I remember desperately trying to unlock shadow up until the games end and I did. Can’t wait to do it all again.

  • @Aisubun
    @Aisubun Год назад +3

    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

  • @BradenBest
    @BradenBest 2 года назад +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.

  • @qwerty_studios
    @qwerty_studios 2 года назад +14

    oh hello there

    • @attilavs2
      @attilavs2 2 года назад +4

      General kenobi

    • @SparklingAmy00
      @SparklingAmy00 2 года назад

      @@attilavs2 Sir this is a video about decompiling a sonic game

    • @attilavs2
      @attilavs2 2 года назад +1

      @@SparklingAmy00 yes but the lolz

    • @Gamer-ct6hb
      @Gamer-ct6hb 2 года назад +1

      Hello mom.

  • @boscorner
    @boscorner 9 месяцев назад +2

    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

  • @mccad00
    @mccad00 2 года назад +5

    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 года назад +1

      @@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.

  • @ZKtheMAN
    @ZKtheMAN 2 года назад +1

    If I were to guess, perhaps the lightmap output by the unpacking tool was borked and removing the lightmap settings made Unity fall back to computing the lighting live, which made it look as intended?

  • @GUNUFofficial
    @GUNUFofficial Год назад +5

    DID I SEE SONIC UNLEASHED AS A TURD?
    thats it i'm sending the truck.

  • @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.

  • @NabbyLloyd
    @NabbyLloyd 2 года назад +4

    does the "C" in your name stand for Chad by any chance?

  • @JohnR.DeLuca
    @JohnR.DeLuca 2 года назад +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.

  • @WangleLine
    @WangleLine Год назад +2

    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

  • @brandonkellner
    @brandonkellner 9 месяцев назад

    The cool thing CIL is that the token information is preserved, so you don't even really need to decompile to C#, it's pretty easy to work with the assembly.

  • @jamescruz8678
    @jamescruz8678 2 года назад +4

    WAKE UP BABE NEW MATTKC DROPPED

  • @ctre97
    @ctre97 2 года назад

    Really a great video, I enjoy the software videos just about as much as the hardware videos!

  • @ItsCenrryTH
    @ItsCenrryTH 2 года назад +2

    Matt demonstrating how tough decompilations are opened my eyes
    And now I am more grateful some peeps managed to decompile rsdk5

  • @owenleduc
    @owenleduc Год назад +3

    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 2 месяца назад

      Did someone say:
      public class Thing : MonoBehaviour
      {
      int c;
      void Start()
      {
      int a = 1;
      c++;
      }
      }

  • @creativecraving
    @creativecraving 8 месяцев назад +1

    "Unmanaged Process" was clearly named after part of the tutorial they were following to build that code artifact. 😅

  • @_crys_
    @_crys_ 2 года назад +1

    Absolutely fantastic video Matt, one of your bests for sure! This is exactly the type of content I enjoy the most on RUclips nowadays.
    I've got a question though.
    Not sure if I understand correctly, but wouldn't it have been more useful to backport uTinyRipper itself to also support those old Unity formats instead of rolling your own specific parser/fixer scripts?
    It seems to me that would've both benefited the decompilation community more than the current approach and would've been useful for you also later down the line if you intend to decompile another old Unity game.

  • @chitan1362
    @chitan1362 Год назад +1

    Decomps of the Sonic Adventure games would be the chef's kiss for me.