Programming My Own 40KB NES Game

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 พ.ย. 2024
  • เกม

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

  • @soryabuscompany
    @soryabuscompany 8 หลายเดือนก่อน +254

    I've never seen a more thorough technical explanation of the NES in such a short time

    • @gblargg
      @gblargg 8 หลายเดือนก่อน +11

      Came here to say that as well. It sounds like it will be a quick gloss over, but then covers the important conceptual details of how subtle things like split-screen scrolling work. Well-done.

  • @JadeLombax
    @JadeLombax 8 หลายเดือนก่อน +109

    I got into coding super tiny games a few years ago. I've made scaled-down Mario & Zelda games in about 1KB, working on some ideas for Metroid.

    • @InkboxSoftware
      @InkboxSoftware  8 หลายเดือนก่อน +34

      That's sounds way cool, do you have any stuff I can check out?

    • @JadeLombax
      @JadeLombax 8 หลายเดือนก่อน

      ​@@InkboxSoftwareI have an Itch page w/ some of my games (Jadelombax is my username there), tried to post a link, but TH-cam keeps deleting my responses.

    • @themadmallard
      @themadmallard 8 หลายเดือนก่อน +15

      1kb? what platform are they made for?

    • @JadeLombax
      @JadeLombax 8 หลายเดือนก่อน

      ​@@themadmallard Been using Pico-8 due to its ease of use and short syntax. It's not assembly, but things can still get crazy cryptic when you're optimizing bytes.

    • @s3rverlord
      @s3rverlord 8 หลายเดือนก่อน +27

      You can imagine that game in your brain and play it.

  • @skylark.kraken
    @skylark.kraken 2 หลายเดือนก่อน +47

    0:02 I still find it remarkable how Golf on the NES became so popular that people started playing it IRL. They say that kids now adays go crazy over technology fads but they're the ones who created a sport from a game

    • @Raderade1-pt3om
      @Raderade1-pt3om 2 หลายเดือนก่อน +5

      Golf originated from a NES game!?

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

      Never heard this before. Sauce? Ridiculous.

    • @skylark.kraken
      @skylark.kraken หลายเดือนก่อน +7

      @@mirabilis golf simply didn’t exist before the NES invented it and the hype hasn’t died down

    • @mirabilis
      @mirabilis หลายเดือนก่อน +1

      @@skylark.krakenI asked for a source. You guys are trolling me. People have been playing golf since at least 14th century.

    • @skylark.kraken
      @skylark.kraken หลายเดือนก่อน +6

      @@mirabilis It's a conspiracy that golf is older, the Ilclubinati changed the date and origin of golf to make it seem more prestigious than simply being based on a NES game. They've been rewriting history books and influencing modern media that is set in the past that mentions golf (if you're watching something based in the 50s and they mention golf it just means they've been paid off). It's crazy how many people have been influenced by the Ilclubinati and have accepted their lies

  • @Arcad3n
    @Arcad3n 8 หลายเดือนก่อน +101

    The game boy color has one of my all time favorite visual styles for a retro console. Games like Mina the Hollower demonstrate how great it looks, it’s so appealing! Excited for that episode.

  • @stefanmilicevic5322
    @stefanmilicevic5322 8 หลายเดือนก่อน +25

    The amount of effort you put into each programming project is truly inspiring. Keep up the great work!

  • @bassguitarbill
    @bassguitarbill 8 หลายเดือนก่อน +34

    I love your NES videos, but as I actually have a bit of experience programming on the DMG, I'm looking forward even more to your future projects!

  • @ego-lay_atman-bay
    @ego-lay_atman-bay 8 หลายเดือนก่อน +151

    The end really caught me off guard. It was such a scott the woz ending.

    • @itskdog
      @itskdog 8 หลายเดือนก่อน +7

      *3D Dot Game Heroes

    • @ego-lay_atman-bay
      @ego-lay_atman-bay 8 หลายเดือนก่อน +14

      @@itskdog Yeah, I know, but I feel like that song is most commonly associated with scott the woz.

    • @Therap3
      @Therap3 8 หลายเดือนก่อน +3

      ​@@itskdogwow I had no idea it was from that game. Thanks!

    • @NotSomebodyThatYouUsedToKnow
      @NotSomebodyThatYouUsedToKnow 7 หลายเดือนก่อน +4

      A Scott vid was recommended after this lol

    • @kirabey8946
      @kirabey8946 5 หลายเดือนก่อน

      Its the old one too...

  • @StereoMadnessss
    @StereoMadnessss 8 หลายเดือนก่อน +73

    Assembly is just amazing really on how small its code can be when it's compiled

    • @williamdrum9899
      @williamdrum9899 8 หลายเดือนก่อน +20

      6502 in particular is tiny. Most modern cpus use 4 bytes per instruction at all times but we have much more room now so it hardly matters. NES code size is mostly negligible when it comes to file size. It's the data tables that hog the most cartridge space

    • @bradallen8909
      @bradallen8909 8 หลายเดือนก่อน +4

      Assembly isn’t compiled. It’s assembled.

    • @rethardotv5874
      @rethardotv5874 8 หลายเดือนก่อน +1

      Shouldn’t be C with modern compilers as efficient as writing assembly?

    • @rya3190
      @rya3190 7 หลายเดือนก่อน

      ​​@@rethardotv5874If you cut out bigger libraries (or go without a standard), and remove the elf file cushions, you can get C down to assembly sized programs. A guy made a QR-based snake game a little while back and was finding his assembly program was larger than his trimmed down C.
      edit: I should probably note, this is likely due to the optimization for a very common architecture, x86. I'm not sure how efficient one for say the 6502, PowerPC, or Risc-v would be...

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

      ​@@rethardotv5874if that was the case you'd never see inline assembly in C code

  • @coolbrotherf127
    @coolbrotherf127 8 หลายเดือนก่อน +13

    It's so cool that Nintendo invented golf.

  • @dinaari-vgm
    @dinaari-vgm 8 หลายเดือนก่อน +4

    ive been making a 32kb game for pico-8 and now i appreciate the wizardry that is needed to truly craft something playable within the limitations

  • @FloatingSunfish
    @FloatingSunfish 8 หลายเดือนก่อน +17

    The NES will always be my favorite console.
    It helped save the video game industry!

    • @nebularain3338
      @nebularain3338 3 หลายเดือนก่อน +5

      Only in the USA. The rest of the world was fine. In fact, the UK had a home computer/bedroom coder boom from 1982-1990 where games made millions.

  • @Adiee5Priv
    @Adiee5Priv 8 หลายเดือนก่อน +10

    Sidenote: Image data is NOT loaded into vram, PPU reads image data directly from chr rom, that's why image data is stored in a separate chip from program itself

    • @ricarleite
      @ricarleite 8 หลายเดือนก่อน +2

      But vram stores the pallet and table name information doesn't it

    • @Adiee5Priv
      @Adiee5Priv 8 หลายเดือนก่อน +2

      @@ricarleite yes, but that's something else

    • @ricarleite
      @ricarleite 8 หลายเดือนก่อน

      @@Adiee5Priv I mean he didn't claim vram stores a bitmap representation of the screen

    • @Adiee5Priv
      @Adiee5Priv 8 หลายเดือนก่อน +1

      @@ricarleite ah, yes, i was reffering to a one scene, where it was visualised that way, but it seems like i didn't include the timestamp

  • @Sinistar1983
    @Sinistar1983 8 หลายเดือนก่อน +10

    Can't wait to see what game you make on the GBC. Its a personal favorite of mine to code on as well. And with how awesome GB studio is its now more accessible than ever to work with. And in case you're wondering my GBC game is called Eternal Memory.

    • @Bobbias
      @Bobbias 8 หลายเดือนก่อน +2

      It's a shame their visual programming interface is awful though. Makes doing anything reasonably complex a nightmare without learning the actual scripting language.

    • @Sinistar1983
      @Sinistar1983 8 หลายเดือนก่อน +1

      @@Bobbias I don't think its that bad honestly plus it's actually really competent at making more complex games. I've managed to create a pseudo real time reflection using just the stock visual scripting.

  • @lorenzodiambra5210
    @lorenzodiambra5210 2 หลายเดือนก่อน +3

    the difficult thing was not to put them in 40 KB, but rather to make them run with 20 bit of RAM

  • @famitronic9870
    @famitronic9870 8 หลายเดือนก่อน +4

    This is one of the best summarized explanations on how to build an nes game from scratch that I’ve seen! Thanks for the great video. 👍

  • @IraKane
    @IraKane 8 หลายเดือนก่อน +2

    I have been programming games for over 10 years now, C#, gdscript and back in the days of the NES I programmend in BASIC using an MSX....but I'm nobody! You are my hero!🤪

  • @williamdrum9899
    @williamdrum9899 8 หลายเดือนก่อน +7

    Later games used "bank switching" to fit more code/data than the NES's 64k address space would typically allow

    • @lemdixon01
      @lemdixon01 4 หลายเดือนก่อน +2

      That sounds a bit like multiplexing which gives more capability to a limited resource by working on one bank or area of the screen at one time, which happens so fast that the person playing the game can't see this.

    • @williamdrum9899
      @williamdrum9899 4 หลายเดือนก่อน +3

      @@lemdixon01 It's more like an HDMI splitter where you can have your Switch, Xbox, and DVD player all plugged in at once but you can only see one at a time

  • @shinyagumon7015
    @shinyagumon7015 8 หลายเดือนก่อน +234

    My guess is black magic or programming if there's a difference between the two 😂

    • @error.delete4945
      @error.delete4945 8 หลายเดือนก่อน +42

      a great programmers code is like a master close up magicians act: nothing flashy under the surface, super efficient and seamless.
      The average programmers code is like a magician you hired last minute for your kids birthday party: it kind of works sometimes but is otherwise a total mess of copied tricks and a pigeon in a hat, and the pigeon is dead and useless but they kept it in the act anyway.

    • @dacueba-games
      @dacueba-games 8 หลายเดือนก่อน +12

      "Is this too much voodoo?"

    • @angeldude101
      @angeldude101 8 หลายเดือนก่อน +21

      As a programmer and self-proclaimed sourcerer, no; there isn't a difference.

    • @designator7402
      @designator7402 8 หลายเดือนก่อน

      ​@@error.delete4945 I will not remove the KillPidgeon() method from my code, no matter who the IRS sends!

    • @KertaDrake
      @KertaDrake 8 หลายเดือนก่อน +2

      Simply speak the binary incantations and technomagic will occur. You use hex for hexes, of course.

  • @ETK_800
    @ETK_800 8 หลายเดือนก่อน +8

    can't wait to see what you do on the gameboy. Love your videos!

  • @alexandredecarvalho4357
    @alexandredecarvalho4357 8 หลายเดือนก่อน +3

    We need more of these!! :D thank you for your explanations!

  • @huskenator857
    @huskenator857 8 หลายเดือนก่อน +4

    Love your videos dude, can’t wait to see you unpack the gameboy color. Also Scott The Woz jump scare

  • @PanoptesDreams
    @PanoptesDreams 8 หลายเดือนก่อน +5

    Restrictions birth creativity

  • @mukulnag1578
    @mukulnag1578 8 หลายเดือนก่อน +1

    This is amazing... As some how now works closely with cpu hardware and firmware learning about the limitation that we went through is fascinating... And i see how some of the stuff/limitations from 90 is till there in mordern cpu... We just find more ways to go around them

  • @douggiebee
    @douggiebee 2 หลายเดือนก่อน

    That was incredible. I was just thinking that something like this would be very interesting, and here it was, waiting for me to find it.

  • @Mobik_
    @Mobik_ 8 หลายเดือนก่อน +1

    The good thing about the GBC is that you can actually use cool things, like C instead of Assembly. I did the iconic DVD bouncing logo and made it run into original hardware (GBC and GBA)

    • @InkboxSoftware
      @InkboxSoftware  8 หลายเดือนก่อน +3

      You can use C for the NES, too, I just prefer assembly

  • @Squigdude13
    @Squigdude13 8 หลายเดือนก่อน +1

    went from a random recommended video to wanting to get one of those romhack carts from back in the day you could load games onto

  • @Roid33
    @Roid33 8 หลายเดือนก่อน +35

    Scott the Woz outro whatt

  • @miasma82
    @miasma82 2 หลายเดือนก่อน

    I don't play any modern games. I love these old consoles so much. They bring back so many memories

  • @intangiblematter_misc
    @intangiblematter_misc 8 หลายเดือนก่อน +2

    I wasn't going to comment, just a really solid video.
    Then the Scott the Woz ending whiplash hit

  • @majicweather4890
    @majicweather4890 3 หลายเดือนก่อน +1

    Look up Micro Mages, it's made with only 40kb. Dude that made it also made a "making of" video

  • @Holital
    @Holital 8 หลายเดือนก่อน +2

    Yooooo I love your channel!!!

  • @The-E-Base
    @The-E-Base หลายเดือนก่อน

    3:03
    Fun fact, some later games (including a few bootlegs) use all 4 nametables.

  • @JJisntHere.
    @JJisntHere. 3 หลายเดือนก่อน

    I like the microphone used here! really nostalgic sounding!

  • @RareSun
    @RareSun 7 หลายเดือนก่อน +1

    Can't wait to watch the episode where you program a 3D Mario for the GameCube in 10 years.

  • @Controllerhead
    @Controllerhead 8 หลายเดือนก่อน

    What a wonderful explanation, sure with i had this video when i started years ago. Great work!!!

  • @alexela_
    @alexela_ 8 หลายเดือนก่อน +1

    Am I on time?! I'm enjoying it already

  • @1008md
    @1008md 8 หลายเดือนก่อน

    That was amazing. I didn’t understand a lot but was still mesmerized!

  • @MoustiluigiRandom
    @MoustiluigiRandom 8 หลายเดือนก่อน +1

    Amazingly well explained.

  • @mirabilis
    @mirabilis 2 หลายเดือนก่อน +2

    6:45 this left side masking is achieved by manipulating some bits at address $2001.

  • @Oler-yx7xj
    @Oler-yx7xj 4 หลายเดือนก่อน

    Now I want to try to make NES games again. Touching it really made me appreciate how big a kilobyte is

  • @merman1974
    @merman1974 7 หลายเดือนก่อน

    That was a brilliant explanation and a fun game as a result. Great work.

  • @EWARS_2
    @EWARS_2 8 หลายเดือนก่อน +5

    Scott the Woz outro?! (Breakout?)

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

    fun fact: on reset it only clears certain parts of ram, this was exploited to make some games able to set ram values which are then used by other games to get extra lives or levels or such, famous example is using tennis to break super mario bros

  • @ShinoSarna
    @ShinoSarna 8 หลายเดือนก่อน +1

    You inspired me to try to make a version of Minecraft for NES.

  • @ErdrickHero
    @ErdrickHero 8 หลายเดือนก่อน +1

    I hope you're not just using GB Studio. A channel like this needs real programming.

    • @InkboxSoftware
      @InkboxSoftware  8 หลายเดือนก่อน +2

      I've doing it all in assembly for now, but I might use some music tools later since making music for these machines is like writing a whole program on its own

  • @oa_math
    @oa_math 4 หลายเดือนก่อน +1

    Careful using Nintendo characters in your game, they might swat your house

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

    Mario was really made with 40,000 sets of 8 lightbulbs

  • @BianicEpicVideos
    @BianicEpicVideos 3 หลายเดือนก่อน +1

    Thank you for this video

  • @MrBallerinakaka
    @MrBallerinakaka 3 หลายเดือนก่อน

    Im So Glad NES Actually Saved American Video Game Industry Back in 1988. Rest of The World (Included Japan) Were Fine While America Had Video Game Crash in 1983.

  • @Clancydaenlightened
    @Clancydaenlightened 8 หลายเดือนก่อน +2

    Hint they didn't do it with only 32k rom and ppu rom
    Kirby on nes was around a 1megabyte cartridge

  • @FernieAriel
    @FernieAriel 8 หลายเดือนก่อน

    1:40 that’s the music from Goal 2, one of the best soccer games of all time. I’d recognize it anywhere.

  • @spg3331
    @spg3331 8 หลายเดือนก่อน

    Loved playing the game boy color as a kid!

  • @cdkw2
    @cdkw2 7 หลายเดือนก่อน

    I would love to see the gbc videos, good luck!

  • @skRapKlan
    @skRapKlan 8 หลายเดือนก่อน

    Nice work! Thanks for the cool video!

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

    Had this on in the background and the old scott the woz outro music jumpscared me

  • @thechosenone729
    @thechosenone729 7 หลายเดือนก่อน

    Amazing video as always thanks for your work.

  • @adryanlucas096
    @adryanlucas096 8 หลายเดือนก่อน +10

    Clicked as soon as i saw the notification 🔥🔥🔥🔥🔥 ur videos are always the best!

  • @lafcursiax
    @lafcursiax 8 หลายเดือนก่อน

    What a great idea for a homebrew NES game! It would have been cool if a game like this had been built into the NES so we could have played something even without a cartridge inserted. I wonder how feasible it would be for someone to hack that feature into an NES...

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

    Daaaaam, this guy knows everything about hardware

  • @9a3eedi
    @9a3eedi 8 หลายเดือนก่อน +2

    You'd be surprised by how much you can do if you have a couple of kilobytes of storage space, if you just didn't have any of the bloat of modern software

  • @maazali6283
    @maazali6283 8 หลายเดือนก่อน +1

    Your my inspiration to become a better programmer

  • @MarkRayers
    @MarkRayers 7 หลายเดือนก่อน

    Super mario bros was made in assembly and most of the prg rom isnt full because compiled assembly code isnt that big and they moved the compiled assembly to the rom and they made sure it didnt go to the blank prg area so that is how super mario bros was made in 40k (a lot of the rom is 0s)
    Thank you for reading.

  • @taagoallas3336
    @taagoallas3336 8 หลายเดือนก่อน +2

    It's always a good day when Inkbox uploads!

  • @jumbledfox2098
    @jumbledfox2098 8 หลายเดือนก่อน

    What an epic video!

  • @otwayrpg
    @otwayrpg 2 หลายเดือนก่อน

    Too much, my brain exploded.
    orange/10

  • @golvellius6855
    @golvellius6855 8 หลายเดือนก่อน

    Incredible😮 i learned a lot in this video❤❤❤

  • @deltapi8859
    @deltapi8859 8 หลายเดือนก่อน

    beautiful svg art in the video.

  • @anon_y_mousse
    @anon_y_mousse 8 หลายเดือนก่อน +1

    If you were using C, it'd be awesome to have a C23 compliant compiler to handle resource embedding. Towards that end, the oscar64 project intrigues me. It's intended for the C64, but it shouldn't be too difficult to modify it for other 6502 based systems.

    • @rusi6219
      @rusi6219 4 หลายเดือนก่อน +1

      C23 is what happens when python script kiddies infiltrate an established programming language

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

      @@rusi6219 For a lot of the things I see getting added to C and C++ both these past few revisions, yeah. I hate constexpr and consteval and they're adding constexpr to C.

  • @cube2fox
    @cube2fox 8 หลายเดือนก่อน

    Now I'm really interested in the difference between NES and GBC. Especially black cartridge games look quite similar to NES games, apart from the resolution.

  • @bootime265
    @bootime265 8 หลายเดือนก่อน +1

    time for a cool video

  • @HollowProject
    @HollowProject 8 หลายเดือนก่อน

    Yay! Waiting for GBA videos!

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

    It would be cool if at different score thresholds, the color of the background changed

  • @DerKlemm-Crafter
    @DerKlemm-Crafter 8 หลายเดือนก่อน +2

    You are one of the best programmers I have ever seen, though I don't understand much😅

  • @KingF-hi4wg
    @KingF-hi4wg 8 หลายเดือนก่อน

    I’d like to see this guy cover sega master system homebrew

  • @NikodAnimations
    @NikodAnimations 6 หลายเดือนก่อน

    I think a jump is better represented by a parabola, with the amount going up constanly reduced by a constant number.

  • @Mrwaffles-gr3so
    @Mrwaffles-gr3so 8 หลายเดือนก่อน

    I totally understood everything.

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

    wow innovation and not copying? cant wait to see what this video will entail

  • @miasma82
    @miasma82 2 หลายเดือนก่อน

    2kb of ram. Who needs more.

  • @ChaossX77
    @ChaossX77 8 หลายเดือนก่อน

    Real original ending music.

  • @familiapdantas4646
    @familiapdantas4646 2 หลายเดือนก่อน

    This video remember me 2014

  • @johneygd
    @johneygd 8 หลายเดือนก่อน +1

    No mentioning why 40KB games are still made by homebrewers,except at how nes games are made along with some history behind it,mmmm.

    • @GroupNebula563
      @GroupNebula563 5 หลายเดือนก่อน +1

      this was literally a video about a homebrewer making a game in 40kb

  • @fredharding5087
    @fredharding5087 8 หลายเดือนก่อน

    I had very little understanding of anything in this video but enjoyed it all the same

  • @Mobik_
    @Mobik_ 8 หลายเดือนก่อน

    Scott the Woz?! Is that you at the end?!

  • @chrisray9653
    @chrisray9653 8 หลายเดือนก่อน

    Before the libraries of 50k lines of code that put a dialogue screen up.

  • @OmeedNOuhadi
    @OmeedNOuhadi 7 หลายเดือนก่อน

    Congratulations!

  • @deusexmaximum8930
    @deusexmaximum8930 8 หลายเดือนก่อน +1

    1:56 is or isn't

  • @ehippo1
    @ehippo1 8 หลายเดือนก่อน

    Nice video ❤

  • @williamfabuien1125
    @williamfabuien1125 3 หลายเดือนก่อน

    I will continue to follow and watch I hope you make many more.

  • @modlich_303
    @modlich_303 8 หลายเดือนก่อน +3

    what about the Minecraft? since you are moving on from NES, and that Minecraft is on NES, what's gonna be with that?

    • @retroboi128thegamedev
      @retroboi128thegamedev 2 หลายเดือนก่อน

      The 8-bit Minecraft project is on the Commander X16, I don't think it would be possible on the NES without several compromises

  • @VideoGamer945
    @VideoGamer945 8 หลายเดือนก่อน

    I learned something today!

  • @elijahvincent985
    @elijahvincent985 3 หลายเดือนก่อน +1

    Question: is it possible to alter the color pallete of a sprite on a per-LINE basis rather than a per-cell basis if coded correctly? Sorta like how the Atari 2600 did to give the illusion of extra colors for a single sprite?

    • @InkboxSoftware
      @InkboxSoftware  3 หลายเดือนก่อน

      Yes, but it would require keeping track of PPU cycles

  • @aplanebagel
    @aplanebagel 8 หลายเดือนก่อน

    Well explained !

  • @mcleodautomation
    @mcleodautomation 8 หลายเดือนก่อน +1

    Your audio is SOO good - keep it up! Love the dry mic sound tbh.

  • @codeway4374
    @codeway4374 8 หลายเดือนก่อน

    Nice vid !

  • @LavaCreeperPeople
    @LavaCreeperPeople หลายเดือนก่อน +1

    Epic

  • @TheGuyWithAnOldBuick
    @TheGuyWithAnOldBuick 7 หลายเดือนก่อน

    would you be willing to do a video with an in depth explanation of mappers? I've been digging around on nes games that are over 40kb, but I'm having trouble grasping the concept

    • @InkboxSoftware
      @InkboxSoftware  7 หลายเดือนก่อน

      I've mentioned mappers in this video here: th-cam.com/video/Lf1jer8y6Pc/w-d-xo.html
      Basically a mapper facilitates bank switching, where a section of memory can be switched out for another portion of memory from the cartridge.

  • @the_box13
    @the_box13 8 หลายเดือนก่อน +2

    And he uses Scott the Woz outro

  • @cdkw2
    @cdkw2 7 หลายเดือนก่อน

    3:56 I wouldn't be surprised if they were morse code lol

  • @FordTransitvan
    @FordTransitvan 8 หลายเดือนก่อน

    Very interesting but also too complicated for me, love it though

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

    1:50 - Whats stopping you from building and programming a cartridge with an attached RJ45 port, for whatever godforsaken purpose? 😉