6 ms·
In other mind-boggling stats: A single modern games console has more RAM than all of the Atari 2600s ever manufactured put together.
by FartyMcFarter 3y ago
In other mind-boggling stats: A single modern games console has more RAM than all of the Atari 2600s ever manufactured put together.
- zwirbl 3y agoFor reference, the Atari 2600 had 128 bytes of RAM with about 30 million devices sold
- kristopolous 3y agoI thought I sort of understood how computers work until I saw that. I really can't figure out how to do a full screen video game with state in 128B
- FartyMcFarter 3y agoThere was no framebuffer in those consoles [1]. So you pretty much only have to store game state and some auxiliary data in those 128 bytes, which starts sounding a lot easier. [1] https://en.wikipedia.org/wiki/Television_Interface_Adaptor https://en.wikipedia.org/wiki/Television_Interface_Adaptor
- deleted 3y ago[deleted]
- jdblair 3y agoor, a lot harder, since your code can only draw a line a time, not work with the whole frame buffer!
- charcircuit 3y agoModern games now have programmers deal with drawing a frame a pixel at a time when writing shaders. The GPUs themselves render a tile at a time and not the whole buffer.
- TheRealSteel 3y agoLook up 'racing the beam' if you haven't before. The answer is... you can't! It didn't have a frame buffer and lines had to be written to the display one at a time. There was a lot of sprite flicker as many games had more on screen than the console could actually display in one frame.
- beebeepka 3y agoPacman was horrible.
- fredoralive 3y agoIt's basically only the state in the RAM, the game code is in ROM on the cartridge (you can have up to 4KB of ROM before have to rely on bank switching tricks). Video on the 2600 is weird, there isn't any video memory to speak of, you basically set up the video chip line by line in code.
- Tuna-Fish 3y agoThe program and assets are stored in a ROM cartridge, so only mutable data needs RAM. Actually drawing things on screen depends on two things: The first is racing the beam. The display output traces across the entire screen at 60Hz, one scanline at a time. At no point does a complete image exist, instead you just make sure to apply changes so that the machine can draw what needs to be drawn just before the beam traces that part of the image. You will need to cycle count so that your program takes exactly the right time to execute every section, because you certainly won't have time for interrupts or other synchronization. The second is using dedicated hardware, where you store the location on screen, color and memory address of a sprite, and the hardware draws it for you. There are a very limited amount of sprites available, which limits the amount of things that can happen in a single line.
- gerwim 3y agoGreat video [1] on how some clever tricks are used to stay within memory constraints. [1]: https://www.youtube.com/watch?v=sw0VfmXKq54 https://www.youtube.com/watch?v=sw0VfmXKq54
- csours 3y agohttps://humbletoolsmith.com/2017/07/08/learning-from-the-atari-2600/ https://humbletoolsmith.com/2017/07/08/learning-from-the-ata...
- ddingus 3y agoThere is no frame buffer. The graphics are all drawn by manipulating a few registers in the video chip. Everything is scan lines and cycles. You get a one bit per pixel 40 pixel wide background, a couple of single color 8 bit sprites and a couple more two bit wide sprites and that is pretty much it. A lot can be done by simply changing a color register at specific times too. Reusing sprites happens regularly as well. (Sprite drawn at left of screen can be repositioned to the right to be seen again. That is the "racing the beam" part you may have heard people mention. Most of the CPU run time available for each frame is spent generating the display a scan line at a time. The real game happens during the vertical blanking period. Almost everything comes from ROM, leaving ram for game state and the few objects that may need to be dynamic, and even those are in ROM when there is room for all the states. It is an odd feeling when you run out of room. The phrase, "I used every BIT of RAM" is literal! Happened to me once. No more bits and I had to either leave out a feature, or take a speed penalty by packing multiple states into single bytes.
- FirmwareBurner 3y ago>A single modern games console has more RAM than all of the Atari 2600s ever manufactured put together In other mind boggling movie lore, an RTX 4090 has 2x the TFLOPS computing power than the killer AI Skynet used in Terminator 3[1]. The writers back then probably though 60 TFLOPS is such a ridiculously high sci-fi number for the world-ending AI, that nothing could possibly come close to it, and 20 years later consumers can have twice more computing power in their home PCs. It's also a nice reminder how far technology has progressed in the last decades even if the pace has slowed down in the last years. [1]https://youtu.be/_Wlsd9mljiU?t=155 https://youtu.be/_Wlsd9mljiU?t=155
- pdimitar 3y agoThe writers could still turn out to be right. I am not sure we are making good use of all that hardware yet.
- MegaSec 3y agoDamm high level programming languages. Just go back to assembly, that'll fix everything.
- pdimitar 3y agoYeah how dare they. ;) Truth be told though, I believe we are in for some more innovation in the area, especially with the advent of ARM lately. It's always kinda funny how these mega-machines we have still manage to stutter.
- SmellTheGlove 3y ago> It's always kinda funny how these mega-machines we have still manage to stutter. I just figured that’s the trade-off for general purpose computing. We can optimize for whatever covers the wide swath of use cases, but we can’t optimize for everything, and some will continue to be mutually exclusive. Mind you I’m no expert, I’m just extrapolating on how differently what CPUs and GPUs are optimized for these days and historically.
- andai 3y ago> Anyway, at the time I did these measurements, my 4.2 GHz kaby lake had the fastest single-threaded performance of any machine you could buy but had worse latency than a quick machine from the 70s (roughly 6x worse than an Apple 2), which seems a bit curious. To figure out where the latency comes from, I started measuring keyboard latency because that’s the first part of the pipeline. My plan was to look at the end-to-end pipeline and start at the beginning, ruling out keyboard latency as a real source of latency. > But it turns out keyboard latency is significant! I was surprised to find that the median keyboard I tested has more latency than the entire end-to-end pipeline of the Apple 2. If this doesn’t immedately strike you as absurd, consider that an Apple 2 has 3500 transistors running at 1MHz and an Atmel employee estimates that the core used in a number of high-end keyboards today has 80k transistors running at 16MHz. That's 20x the transistors running at 16x the clock speed -- keyboards are often more powerful than entire computers from the 70s and 80s! And yet, the median keyboard today adds as much latency as the entire end-to-end pipeline as a fast machine from the 70s. https://danluu.com/keyboard-latency/ https://danluu.com/keyboard-latency/
- rcxdude 3y agoThe measurement methodology seems a bit odd for the purposes of measuring the difference between old and new computers: if a large fraction of the latency measured is due to the key travel, that's latency which is also present in the older computers (AFAICT buckling spring has a lot more key travel before activation than the scissor-switch keys of the apple and most laptop keyboards) Surely for the purposes of the comparison you would want to look at switch activation-to-bus-activity latency.
- _trampeltier 3y agoAn USB-C charger has much more computing power than an Apollo Moonlander. https://www.theverge.com/tldr/2020/2/11/21133119/usb-c-anker-charger-apollo-11-moon-landing-guidance-computer-more-powerful https://www.theverge.com/tldr/2020/2/11/21133119/usb-c-anker...
- FredPret 3y agoWe'll have computronium soon if we carry on like this!
- karmakaze 3y agoWould be more impressive if the 2600 had more than 128 bytes RAM--that's bytes not KB.