OS hacking: Porting DOOM to Serenity

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 ธ.ค. 2024

ความคิดเห็น • 38

  • @tato-chip7612
    @tato-chip7612 5 ปีที่แล้ว +103

    And now serenity is a proper and viable os

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +13

      I knew it would get there one day!

    • @DanMacDonald
      @DanMacDonald 5 ปีที่แล้ว +9

      Indeed! The Doom port was crucial.

  • @KevinSheppard
    @KevinSheppard 5 ปีที่แล้ว +23

    I sit in amazement as you port an entire game using VI with no Intellisense or anything.

  • @etopowertwon
    @etopowertwon 5 ปีที่แล้ว +26

    From vague memories of WAD structure, I almost had a heart attack when you nopd dot specifier in printf without checking doom source code if it was used for something useful(as it was the case). Nice that you figured it quickly.
    It's probably better instead of doing nothing at least printing big fat debug message "*** WARNING *** STCFN%.3d uses NYI dot specifier". That would help to understand immediatly why doom was complaining without a need to google STCFN3d and remembering that you changed printf.

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +10

      Hey Etop! Yeah, I was playing a little fast & loose there with no-oping out the dot specifier. I recovered pretty quickly without wasting too much time, thankfully :)
      That's a fair point about logging something more useful when it doesn't work..

  • @MaxThrun
    @MaxThrun 5 ปีที่แล้ว +13

    More porting videos please! Was entertaining watching you work through all the initial compiler errors.

  • @doinalil
    @doinalil 5 ปีที่แล้ว +19

    these porting videos, especially the bash one and this are pretty fun to watch.

  • @DefaultSucks
    @DefaultSucks 5 ปีที่แล้ว +11

    Really great stuff, man! I can't believe this only has ~400 views at the moment. Watching your videos is like crack, but with even more health benefits. Keep up the great work!

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +1

      Hi DefaultSucks, glad you like the videos! :)

  • @DeadPixel1105
    @DeadPixel1105 4 หลายเดือนก่อน

    Just discovered your channel. This past year, I've been getting really interested in software engineering and that sort of thing. I'm a total noob at the moment, so your channel is wonderful! Thanks. Subscribed!

  • @LordFers
    @LordFers 5 ปีที่แล้ว +5

    Just today I was thinking it would be great if you trying port Doom in Serenity. It's great man!

  • @Ardren
    @Ardren 5 ปีที่แล้ว +9

    "index of" I'll have to remember that

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +5

      A classic trick! Use it responsibly ;)

  • @AtmoStk
    @AtmoStk 5 ปีที่แล้ว +4

    Great stuff man.

  • @Quaker763
    @Quaker763 5 ปีที่แล้ว +3

    Ahh you beat me to it. I was having a think over the past week on how I'd gut all the X code in the sourcebase haha

  • @tordmunk
    @tordmunk 5 ปีที่แล้ว +7

    am so jealous of you programming skills. I wish i had the same

    • @greob
      @greob 5 ปีที่แล้ว +4

      don't just wish, get to work now!

  • @Ownage4lif31
    @Ownage4lif31 5 ปีที่แล้ว +8

    How long have you been programming for? Seems like at least 15+ years.
    It's super fascinating watching you use vim like it's nothing. Much respect, you programmer God. How do you learn to think that fast? You think of solutions so fast, I guess it's cause you're super experienced.

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +14

      Hi RandomSilly! I've been programming for almost 30 years. I started learning C++ seriously 15 years ago. I'm not a programming god, I'm just old. You'll be old one day too :)
      And yeah, my speed comes mostly from experience. I've seen most of the problems before in some form, so it's just about recognizing the patterns in new environments.
      I still feel very slow in vim, especially if I watch the video of me editing. I'm moving character-by-character in many situations where i could move word-by-word, for example. There's always room to improve.

    • @Ownage4lif31
      @Ownage4lif31 5 ปีที่แล้ว +3

      Andreas Kling woah, that's a long time!
      Sure, there's always room to improve but you're already too good!
      I'm graduating this year and I stumbled upon this channel at random somehow. Glad I did! It's very interesting and helpful at the same time, gives you a glimpse of how people solve problems. I was pretty amazed at how fast you add features haha.
      I've always wanted to improve, but don't really get much motivation anymore. Hopefully that'll change once I graduate, as my uni has been tearing me apart with all these useless English courses that are irrelevant to my degree.
      Anyway, I can't wait to see serenity becoming fully fledged one day, with all the basic features all popular Linux distros have.

    • @aiman_yt
      @aiman_yt 5 ปีที่แล้ว +3

      @@awesomekling I thought u are in your 30s

    • @LordFers
      @LordFers 5 ปีที่แล้ว +2

      @@aiman_yt I thought the same. xD! How old are you Kling? @Andreas Kling

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +10

      Aiman, yeah I’m 34. Started programming with GW-BASIC on a Toshiba T1200 when I was 3 or 4. Good times :)

  • @LordFers
    @LordFers 5 ปีที่แล้ว +5

    I have a question, how necessary do you think it is important to make your own bootloader from scratch to load the entire kernel without using GRUB or anything like that? Does Serenity have their own bootloader, or do they use GRUB?
    Thanks.

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +6

      Hi LordFers! Serenity uses GRUB. In my opinion, it's a waste of time to write your own bootloader unless you enjoy doing it. The work you do on a bootloader does not really benefit the rest of your system in any way, so I prefer letting GRUB do that work so I can focus on the rest of the system. :)

  • @LordFers
    @LordFers 5 ปีที่แล้ว

    Have you made a compiler inside Serenity, or do you use a cross compiler since Linux?

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +6

      I have ported GCC to run inside Serenity although it’s very slow, so I normally use a cross compiler on Linux for my work.

    • @LordFers
      @LordFers 5 ปีที่แล้ว

      @@awesomekling Thank you so much for the answer!

  • @MinecraftEpicPlayer
    @MinecraftEpicPlayer 5 ปีที่แล้ว

    Curious, why 32-bit x86 instead of modern x64? I get that serenity is partially based in nostalgia, but so was TempleOS and it was 64-bit. Was 32-bit chosen for a technical reason or just because OS's in the 90's where 32bit?

    • @awesomekling
      @awesomekling  5 ปีที่แล้ว +3

      Hi MinecraftEpicPlayer! I started with 32-bit x86 because I knew the architecture extremely well, having spent years working on an x86 PC emulator as my previous pet project.
      Serenity will eventually be ported to x86_64, but I'm not in a hurry since there is so much work to do that doesn't require 64-bit support anyway. :)

  • @_rcs
    @_rcs 3 ปีที่แล้ว

    That background is amazing. Do you actually play Doom 2016?

    • @awesomekling
      @awesomekling  3 ปีที่แล้ว

      I played it on PS4 when it came out. It was enjoyable but I wasn't very good at it :)

    • @_rcs
      @_rcs 3 ปีที่แล้ว +1

      @@awesomekling That's awesome. That game takes a lot of time to get good at because it's so fast paced!

  • @m3hdim3hdi
    @m3hdim3hdi 3 ปีที่แล้ว

    why you are not using Serenity?

  • @stephenkamenar
    @stephenkamenar 3 ปีที่แล้ว

    how is it even possible to run doom slowly on a modern computer? even software renderer would be 100s of fps