Inside the Famicom | 03: The Memory Map

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ก.ย. 2024
  • Welcome to the third video in my multi-part series on the Famicom. In this video, we'll take continue our exploration of the CPU and mainboard by talking about how the Famicom and NES uses the memory map to communicate with other chips.
    Links Referenced in this Video:
    NESdev Wiki CPU Memory Map - www.nesdev.org...
    NESdev Wiki 2A03 Register Map - www.nesdev.org...
    Past Episodes:
    Episode 1: The Design of a Legend - • Inside the Famicom | 0...
    Episode 2: The 6502 CPU - • Inside the Famicom | 0...
    Correction:
    3:39 I was wrong here - it’s the width of the chip’s internal data bus that determines the chip’s “bitness”, not it’s data pins

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

  • @Mrshoujo
    @Mrshoujo 3 หลายเดือนก่อน +11

    For an example of how a detailed Memory Map helps programmers, give Mapping The Atari a read. 😌

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

      I've flipped through it online, but will need to give it a more thorough read 👍

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

    External data bus doesn't determine the "bits" of the CPU. For example, 8088 has also an 8-bit external data bus. And an 80386SX has 16bit. It's the internal data bus width that determines the "bits."

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

      👍 Thanks, I’ve added a correction to that spot of the video

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

    Wonderful. :) Do something cool? Of course now I play NES, SNES... it's a lot more fun that the modern gaming industry can't offer me

  • @DingleBerry-jb4gj
    @DingleBerry-jb4gj 3 หลายเดือนก่อน +3

    At 0:07 - 0:12 the symbol on the right chip looks like the Mitsubishi logo, is there any connection?

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

      Yep, Mitsubishi manufactured that particular character ROM chip. Nintendo used ROM chips from a few companies, including Toshiba, Sharp, and others.

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

    3:40 This isn't strictly true. Based on the parallel input it's true for the NES and this implementation of a chip. Maybe I can learn something here, but I thought that it was the register size or instruction size that made the architecture 8bit since you could ostensibly have Serial communication that would not be a phenotype of the chip itself.

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

      Someone else commented on that as well, and I believe that person was correct - it’s the internal data bus width that determines this (as opposed to the external data bus). The register size is sometimes reflective of that, but it’s not necessarily consistent. I appreciate the discussion, though - and I learned something as a result

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

    11:11 "that 3 bit address space being repeated 1024 times" can you describe the implication or result of this address space being "repeated". I'm not sure what you meant by that. Thanks.

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

      The 10 unconnected bits make 1024 (2^10) different address combinations, or in other words you can access those 8 bytes at 1024 different locations.

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

      The PPU uses 8 bytes of the address space for communication, since there's only 3 address lines connected - these are addresses $2000 - $2007. But since the chip select signal is activated with the 13th address bit, all addresses within that entire 8KB range ($2000 - $3FFF) address the PPU. The result is that those 8 bytes of addresses 'repeat' 1,024 times. In other words, if the CPU reads address $2003, it'll get the same result as reading address $200B, $2013, $201B, etc. all the way up to $3FFB. From the CPU's perspective, it would be requesting data on different addresses - but from the PPU's perspective, it all looks like the same address since it's only connected to the lower 3 bits of the address bus.

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

      Writing a byte to the register mapped to memory location $2000 is the same as writing it to $2008... or location $2010, or $2018, or $2020... and so on...
      Then, the register mapped to memory location $2001 is also mapped at location $2009, $2011, $2019, $2021, and so on... Its kinda complicated, just easier to just use $2000 to $2007.
      Other way to describe it is understanding that PPU has 8 registers numbered 0 to 7, then you take the binary address in the range $2000 - $2FFFF and consider only and just only the lower 3 bits, so $2000, $2008, $2010, etc are all the same...

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

      @@whatskenmaking OK I think I understand, there a whole load of memory rendered useless because reasons involving pins.
      There is redundant memory is what I seeing here and the PPU does not have access to it either.

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

      That's what it essentially amounts to - the rest of that 8KB address space tends to just repeat the same target addresses so they're not usable for anything else. When I get to the episode on cartridges, we'll discuss how they work around the address space limitations with mapper chips.

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

    Great explanation!! Liked and Subscribed!

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

    You inspired me to get a lot of 6 old Famicoms from Japan and to refurbish them. Currently replacing the RF modules with custom PCBs to get composite video out. Can't wait for that PPU episode. I'm looking into RGB mods and all that PPU stuff is pretty WILD

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

      Nice! You can get decent composite video with just a transistor and a couple of resistors - that's how I modded the video in my first Famicom years ago. I have an Atari mod video that walks through the mechanics of how it works, but on a VCS instead of a Famicom. Btw, if you have any FCs that you deem unrepairable, set them aside... in the last episode of the series, I'll show you an alternative for what to do with them 😊

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

      @@whatskenmaking I saw that! I was considering doing a simpler mod but then decided to replace the entire RF module. Solves the issue of the weird polarity power supply as well. And it takes care of the old caps. And it ends up being a bit cleaner. I'm hoping none Famicoms are busted but also happy to hear there is a future for them even if they are!

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

    (@3:03) To read the contents of $053F, you’d need an LDA $053F; STA $053F puts a byte into memory (specifically, from the Accumulator.)

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

      Ah, right - nice catch!

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

    you must finish this series famicom materials!

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

    fantastic video, I always wanted to see such a series, thank you! : ) I hope you can explore DMA as well

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

      even though DMA is more interesting on SNES cmpared to nes system

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

    Subbed this is something I tried to learn on Nintendo ages nerdy nights write up 14 years ago , you have made it simple thanks