I was thinking about large ROM hacks like Only Up 64 (Vinesauce’s Joel game play video here for an example of what I am talking about) that state that they can run on real hardware and it made me wonder about ROM hacks and homebrew that can’t run on real hardware.

What kind of limitations do these ROMs face when their limitations are emulators and not real hardware? For example is there a size limit to what a GBA ROM can be? Could you make a super in-depth hundred+ hour game for the GBA that takes up 100 GB?

I guess I am curious about what limitations are hard coded into emulators for things like accuracy and what are some examples of ROMs that have gone above and beyond or notable emulated systems where the the limitations of real hardware are frequently bypassed.

Hope that makes sense. I am pretty drunk.

    • YaBoyMax@programming.dev
      link
      fedilink
      English
      arrow-up
      3
      ·
      10 months ago

      Bank switching is necessary because the 6502 chip in the NES has a 16-bit address space, with the bottom 0x4019 (~16K) bytes being reserved for system use (RAM, PPU/APU features, and controller I/O). Cartridges therefore only had access to a ~48 KiB range of address space (although in practice I believe only the top 32K was typically used for ROM), so bank switching was needed to be able to fully access anything larger.

    • KptnAutismus@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      10 months ago

      AFAIK, the contents of the cartridge was entirely loaded into RAM, so one bank of ROM chips needed to be a specific size. the cartridge of course gets much more expensive if you double the storage, so it wasn’t done very often.

      https://youtu.be/ZWQ0591PAxM they mention switching storage at 1:10.

      • DebatableRaccoon@lemmy.ca
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        10 months ago

        Thanks for the correction and further detail. I was thinking of it in modern terms where the machine takes the info it needs as-and-when rather than storing everything on the cartridge.