[HN Gopher] Quake runs in just 276 kB RAM on the Arduino Nano Ma...
       ___________________________________________________________________
        
       Quake runs in just 276 kB RAM on the Arduino Nano Matter board
        
       Author : smirutrandola
       Score  : 121 points
       Date   : 2024-10-01 17:20 UTC (5 hours ago)
        
 (HTM) web link (community.silabs.com)
 (TXT) w3m dump (community.silabs.com)
        
       | smirutrandola wrote:
       | Link to the video showing Quake running:
       | https://www.youtube.com/watch?v=hVnfwzxTJ00
        
       | lacoolj wrote:
       | what's with the website load time? like individual elements on
       | this page taking multiple seconds to show. is it not 2024 yet?
        
         | Gee101 wrote:
         | Maybe it's running on an Arduino Nano Matter.
        
         | bragr wrote:
         | Having a CDN doesn't help your performance when you tell it not
         | to cache the page                 bragr@<>:~$ dig +short
         | community.silabs.com
         | community.silabs.com.00da0000000l2kimas.live.siteforce.com.
         | sdc.prod.communities.salesforce.cdn.edgekey.net.
         | e78038.dsca.akamaiedge.net.       173.223.234.17
         | 173.223.234.11       bragr@<>:~$ curl -Is
         | https://community.silabs.com/s/share/a5UVm000000Vi1ZMAS/quake-
         | ported-to-arduino-nano-matter-and-sparkfun-thing-plus-matter-
         | boards?language=en_US | grep -i cache       cache-control: no-
         | cache,must-revalidate,max-age=0,no-store,private
         | x-origin-cache-control: no-cache,must-revalidate,max-age=0,no-
         | store,private
         | 
         | That said, the assets are cacheable so there was probably just
         | a thundering hurd for the assets until they were well cached by
         | Akamai's mid and edge tiers
        
           | toast0 wrote:
           | When I've used a CDN, there were separate headers to control
           | the CDN with the same semantics as cache-control... so you
           | can serve the cache-control you want to browsers and control
           | the CDN separately.
           | 
           | If it doesn't feel like it's cached, it probably isn't; but
           | you can't assume the cache-control headers you see are
           | controlling the CDN.
        
             | bragr wrote:
             | Depends on the Akamai property config which could be
             | anything. IIRC by default it uses the standard cache
             | headers and doesn't strip or rewrite them, although it
             | definitely can.
        
           | iknowstuff wrote:
           | ugh, old.reddit.com sends a no-store when signed in and its
           | driving me mad because it breaks back/forward cache.
        
             | ahoka wrote:
             | All "security" guidelines blindly suggest no-store. Also
             | private with no-store makes no sense.
        
         | Muromec wrote:
         | >individual elements on this page taking multiple seconds to
         | show. is it not 2024 yet?
         | 
         | It's exactly what 2024 feels like. Future sucks.
        
       | bittwiddle wrote:
       | Impressive memory optimizations. Streaming out converted pixel
       | values was a neat way of pulling off the "framebuffer" without
       | having enough memory for storing all the 16 bit values. Solid
       | engineering.
        
       | vardump wrote:
       | A great achievement, given the hardware.
       | 
       | Quake will probably run at 60 FPS on RP2350. Double buffered and
       | with full sound quality. But it's nowhere near as hard to achieve
       | it as on Arduino Nano Matter board. RP2350 got 520 kB RAM, dual
       | core Cortex M33 and can run even at 300 MHz (150 MHz nominal).
       | 
       | Earlier: https://news.ycombinator.com/item?id=41195669
        
       | Dwedit wrote:
       | The game is not running from RAM, it is running from Flash ROM.
       | This means that code and static data can be placed on ROM rather
       | than in RAM.
       | 
       | This is comparable to the GBA, which has 384KB of total RAM, and
       | a ROM cartridge slot for storing the game code and data. But the
       | GBA is only 16MHz, the EFR32MG24 system used for this project is
       | overclocked to 136.5MHz.
        
         | smirutrandola wrote:
         | The article says that even if you put all the static data to
         | flash, you still have to fit about 1.5 MB of non static data,
         | if you don't optimize it. Beside that, all graphics is loaded
         | from the relatively slow external SPI flash, which tops at 17
         | MB/s with overclock. Yes, the GBA is much slower, but the
         | access to cartridge data is faster than 17 MB/s (and also the
         | random-read speed is in the 100 ns range, not 1-2 us range).
        
         | zahlman wrote:
         | >This is comparable to the GBA, which has 384KB of total RAM
         | 
         | I assume you are thinking of the 32KiB of on-chip work RAM plus
         | 256KiB of on-board work RAM plus 96KiB of video RAM. But
         | pedantically there is also a 1KiB region of palette RAM and
         | 1KiB of "object attribute memory", separate from the VRAM,
         | making 386KiB total. (Not counting the I/O control registers,
         | which one ordinarily wouldn't think of as "memory" but get a
         | dedicated region of that address space.)
         | 
         | Aside from the ROM on a cartridge - up to 32MiB - there is
         | 16KiB of BIOS ROM, and the system can address 64KiB of EEPROM
         | for game save data.
         | 
         | https://problemkaputt.de/gbatek.htm#gbamemorymap
        
       | ant6n wrote:
       | The real hackery is the port for GBA mentioned in the article
       | (running on 16.7MHz): https://www.xda-developers.com/how-quake-
       | ported-game-boy-adv...
        
         | smirutrandola wrote:
         | Yes that is really impressive.
         | 
         | Still it was done with 50% more memory, 1/3 of resolution and
         | not implementing the whole game features.
        
       | anthk wrote:
       | This is witchcraft...
        
       ___________________________________________________________________
       (page generated 2024-10-01 23:01 UTC)