[HN Gopher] Power consumption of Game Boy flash cartridges
       ___________________________________________________________________
        
       Power consumption of Game Boy flash cartridges
        
       Author : zdw
       Score  : 264 points
       Date   : 2021-04-18 23:50 UTC (1 days ago)
        
 (HTM) web link (gekkio.fi)
 (TXT) w3m dump (gekkio.fi)
        
       | sgtnoodle wrote:
       | In a lot of embedded systems, there's no particular need for the
       | software to participate in power saving, even when the system is
       | ultimately battery powered. That's often true in automotive for
       | example, where the device's power is often externally sequenced
       | by an ignition or auxiliary signal. The quiescent draw is simply
       | orders of magnitude lower than the average power draw of the
       | electro-mechanical systems being controlled. It's also often true
       | in aerospace. Additional power saving would have an intrinsic
       | benefit, but adds complexity that is hard to justify most of the
       | time.
        
       | pawn wrote:
       | I haven't tested as sufficiently as the OP, but I discovered
       | firsthand that the Everdrive GB x7 consumes more power than a
       | standard cart. If I had to guess, I'd guess almost as much as the
       | EZ-FLASH Junior.
       | 
       | My modded GB Pocket wasn't able to use either cart until I
       | replaced the batteries with lithiums that boasted 1.5v output.
        
       | micelwell123 wrote:
       | That whole site is a treasure trove for anyone looking to do ROM
       | hacking or development on gameboy. I encourage other readers to
       | poke around and see what's there.
       | https://www.centerffs.org/sites/default/files/webform/intern...
        
       | Inhibit wrote:
       | Nice writeup! It's always neat to see hardware stacking up. Good
       | work on your design if efficiency wasn't explicitly a goal (even
       | if it was, I guess).
       | 
       | The lower power consumption on newer hardware's probably down to
       | raw power efficiency gain in the fabrication process itself. I'm
       | not surprised there.
       | 
       | I actually am a little surprised that rando hardware seems to
       | pattern that close to the original in general. I would've
       | expected wider variation.
        
       | willis936 wrote:
       | That whole site is a treasure trove for anyone looking to do ROM
       | hacking or development on gameboy. I encourage other readers to
       | poke around and see what's there.
        
       | Tepix wrote:
       | It's too bad that there are so few options regardings carts for
       | the NGPC (NeoGeo Pocket Color). There's the NeoPocket GameDrive
       | but it's almost $100. Being a collector isn't a cheap hobby...
        
         | fullstop wrote:
         | It is if you collect the right things. My garage has a small
         | area with things that my kids thought were cool. She has a
         | stick that she thought looked cool, some cicada shells, a dried
         | up Luna moth, some rocks that she thought looked like things
         | other than rocks and lord knows what else.
         | 
         | Her collection isn't much to most people, but she's pretty
         | proud of it.
        
       | chrismaltby wrote:
       | If anyone is interested in making their own Game Boy game, I've
       | been working on an open source game maker [0] that adds a UI
       | around GBDK. I'm working on an updated replacement game engine
       | [1] at the moment too that adds, among other things, support for
       | flash cartridge saving (allows you to reflash cheap Pokemon
       | carts), parallax backgrounds, large sprites and a stack based
       | scripting language.
       | 
       | [0] https://www.gbstudio.dev/
       | 
       | [1] https://github.com/chrismaltby/gbvm
        
         | galuggus wrote:
         | Thanks for your work. I've been messing about with GB studio
         | for the last month. It's great
        
         | tweetle_beetle wrote:
         | Wow! It's come a long way since I first heard about it and
         | started messing around with it. I'll have to dig out the old
         | source files I saved when I have some time. Good effort.
        
       | userbinator wrote:
       | _The reproduction cart is interesting: it consumes less power
       | than the genuine cart in the startup measurement._
       | 
       | This is not surprising since it's newer. Someone looking to
       | reduce costs as much as possible is going to reduce die area,
       | i.e. using a smaller process with correspondingly smaller power
       | consumption. The NOR flash on there has a datecode of 2007,
       | almost a decade after the original.
        
       | paulgerhardt wrote:
       | From what I recall, the original Game Boy uses a linear regulator
       | so is wasting 20% of its power budget to heat as it converts 6V
       | supplied by 4 AA's to 5V used by the electronics. (Hand waiving
       | the numbers here.)
       | 
       | Modern power regulators are much better 40 years later. A casual
       | search reveals kits like this one
       | https://handheldlegend.com/products/3-3v-voltage-regulator which
       | could buck/boost a variety of voltages - even letting you run on
       | 4x 3.6V lithium batteries in AA form factor:
       | https://www.batteryjunction.com/plc-ls14500-ba.html
       | 
       | I'm not sure if the power savings by switching regulators are
       | greater than switching carts but are in the same ballpark and are
       | worth exploring if one is going to these lengths to begin with.
       | Certainly combined with those lithium cells it would make cart
       | selection irrelevant.
        
       | kmm wrote:
       | I'm genuinely surprised to see Tetris have the lowest power
       | consumption, since unlike the other two games, it does not use
       | the HALT instruction. The HALT instruction puts the CPU to sleep
       | until an interrupt occurs, supposedly lowering power consumption
       | during that time. Most games have it somewhere in their main
       | loop, after they've done the work they needed to do for the
       | current frame, they halt until a V-Blank occurs. Tetris on the
       | other hand busy waits, going over the same 3 instruction loop
       | until the next frame. Most games halt 80% of the time, so now I'm
       | wondering if that instruction ever did anything at all.
        
         | evancox100 wrote:
         | Couldn't find solid information on the original GameBoy CPU,
         | but it's possible it didn't use CMOS style logic and had much
         | higher static power consumption.
        
         | simias wrote:
         | I never bothered to measure it but I suspect that for older
         | CPUs dynamic consumption is not super high compared to the
         | other elements. The main reason for that belief is that I know
         | that some "retro" consoles didn't even feature any way to HALT
         | the CPU and busy looping was the only possibility.
         | 
         | In particular the MIPS CPU used by the PlayStation didn't have
         | any way to halt the CPU. AFAIK neither did the N64. Admittedly
         | these weren't (usually) battery powered so power draw was less
         | of an issue, but the fact that these ISAs didn't even bother
         | with an HALT opcode at all tells me that it wasn't really
         | considered a super valuable feature back then.
         | 
         | Admittedly the GameBoy CPU is CISC, so maybe it fared worse
         | than MIPS in this case, but it was also running at a much lower
         | clock rate, maybe a tight NOP loop didn't consume all that
         | much.
        
           | lizknope wrote:
           | When I was in school I remember a professor saying to "Never
           | gate a clock." In the 90's I think people were worried about
           | clock glitches.
           | 
           | My first few years in the industry in the late 90's we had
           | customers that didn't care about power usage. They wanted the
           | fastest performance and would put a heat sink or bigger fan
           | on their chip.
           | 
           | It wasn't long after that when power usage became more
           | important. We have had logic synthesis tools that
           | automatically insert clock gate logic to save power using
           | various glitchless clock cell designs.
        
           | tenebrisalietum wrote:
           | Interesting fact: The TMS9900 had an IDLE instruction - I
           | recall reading somewhere that it was implemented internally
           | as an unconditional jump to itself.
           | 
           | IMHO I think for older classic CPUs in embedded situations,
           | the expectation was that if halting the CPU was needed,
           | external logic would do that.
           | 
           | - The video chip on the Commodore 64 halts the CPU during the
           | frame to fetch memory every 8 lines IIRC (disabling video
           | output increases CPU speed by a bit)
           | 
           | - The NES halts the CPU when it tells the PPU to DMA 256
           | bytes of memory to sprite descriptor memory before it renders
           | the frame.
           | 
           | - Commodore 128 will halt the non-active CPU (Z80 or 8502).
           | Not sure what hardware is responsible for this, probably that
           | funky MMU chip.
           | 
           | - The Atari 2600 has a WSYNC gregister which tells the TIA to
           | halt the CPU until the next TV scanline starts (it otherwise
           | doesn't use IRQs or NMIs which I found interesting).
           | 
           | Probably halting to save power didn't matter to manufacturers
           | until CPUs required heatsinks or for portable devies. At that
           | point saving power is also preventing heat buildup and
           | enabling the hardware to last longer.
        
         | barbegal wrote:
         | Tetris only had the lowest because the cartridge contains just
         | a ROM chip and doesn't have RAM or memory bank controller chips
         | as other cartridges have.
         | 
         | I'm sure the halt instruction does reduce CPU power but it
         | isn't that significant compared to the overall power of the
         | cartridge and other peripherals.
        
         | bjt2n3904 wrote:
         | Just to add to what everyone else is saying. Quiescent current
         | is the current the chips use doing nothing at all. It's a
         | static power consumption. With this older hardware, my guess is
         | it's shockingly high.
         | 
         | This test could have been a little better, if they measured
         | current between the GB and the cartridge explicitly. Also,
         | would want to check the voltage on the cartridge downstream of
         | the shunt to make sure it's not browning out under the burden
         | voltage of the current meter, and causing an artificially high
         | current usage. (Though, going through the GB itself might
         | address this...)
        
           | gekkio wrote:
           | I initially considered measuring the cartridge +5V rail
           | directly, but decided to go with total power consumption of
           | the console for two main reasons:
           | 
           | 1. Total power consumption is easier to relate to battery
           | life, because e.g. doubling the total power consumption
           | roughly halves battery life
           | 
           | 2. Cartridge current draw on +5V rail doesn't fully capture
           | the impact on total power consumption. Improper bus behaviour
           | and leakage currents can increase current draw on the console
           | itself. As an extreme example, shorting one of the cartridge
           | I/O pins to ground might not pull any current from the
           | cartridge +5V rail, but it might increase current draw and
           | power dissipation in the main SoC significantly if it's
           | driving the I/O line high.
           | 
           | In any case, optimally I'd have a setup for measuring both :)
           | But right now I only have test automation infrastructure
           | ready for HMC8043
        
             | aidenn0 wrote:
             | If you use alkaline batteries, doubling the current more
             | than halves the battery life; Ni based rechargeables don't
             | show that effect though
        
         | gambiting wrote:
         | But the post is about measuring the cartridge power
         | consumption, no? So even if Tetris is running at 100% CPU usage
         | all the time, it makes no difference to the power consumption
         | of the cart itself, the game is small enough that it rarely
         | reads from the cart.
        
           | pm215 wrote:
           | The method described in the post indicates that it's
           | measuring the full consumption of the whole
           | gameboy+cartridge. You can also tell this because there's an
           | example of the "without cartridge" power consumption, and
           | it's not "flat zero" :-)
        
           | kmm wrote:
           | In his description of the test setup, he says that he powers
           | the Game Boy with the DC jack input, so I assume he's
           | measuring the power consumption of the entire machine, but I
           | might be misunderstanding that. Either way I'd expect the
           | Tetris cartridge on itself to consume more power as well, as
           | during the busy loop the game is constantly reading the next
           | instruction, whereas games which halt don't access the
           | cartridge at all until an interrupt happens.
        
         | ChrisRR wrote:
         | This is because Tetris doesn't use an MBC unlike Pokemon and
         | Wario
        
       | snickmy wrote:
       | Being a completely newbie of Game Boy architecture,I got
       | surprised to see the cartridge had a battery.
        
         | ChrisRR wrote:
         | Flash wasn't cost effective in the 90s, so most save games were
         | stored in RAM with a battery so that it never lost power.
        
         | richeyryan wrote:
         | I've changed the battery on my copy of Pokemon Gold twice. I
         | wonder if whoever designed those cartridges expected anyone to
         | still be playing the game twenty years later.
        
           | treesknees wrote:
           | Meanwhile my Blue version is somehow still ticking along on
           | its original battery nearly 23 years later.
        
           | aidenn0 wrote:
           | I've seriously considered replacing the SRAM with MRAM so as
           | to not require battery replacement. It would need level
           | shifters though.
        
         | tapland wrote:
         | It's for keeping save data =)
        
           | willis936 wrote:
           | And losing it. I'm sure many people are surprised to come
           | back to their GB, NES, and SNES games after a few decades to
           | find that their save files are gone.
        
             | stickmangallows wrote:
             | I was surprised last year to find my saves on Zelda 2 and
             | others were still intact. Zelda 1 had been dead for years
             | though.
        
             | lacavao wrote:
             | I've heard about this for years, but I've never had it
             | happen, and I don't know anyone else who's experienced it.
             | I don't doubt it happens, but what could cause such a
             | discrepancy in the time it takes to degrade?
        
               | NortySpock wrote:
               | Anecdata
        
               | NegativeLatency wrote:
               | Different battery manufacturers? Batteries stored in
               | different conditions?
        
             | aidenn0 wrote:
             | My 33 year old final fantasy cart still holds saves; other
             | newer ones have died. There's a huge variance there.
        
             | armadsen wrote:
             | I recently got my old Game Boy games out so my son could
             | play them. They've been in a box in storage for 20+ years.
             | My saved games from the 90s are still there on all the ones
             | I've checked.
        
               | piyh wrote:
               | Back them up on a old gameshark or something. I lost all
               | my gamesaves and wish I still could revisit them.
        
             | HeckFeck wrote:
             | I've plugged in SNES cartridges that are 30 years old and
             | the save data still persists. I'm guessing they got the
             | same man who designed the everlasting Casio digital watch
             | battery to design those.
        
       | ChrisRR wrote:
       | This is interesting. I wonder why some genuine carts have a
       | quiescent current and tetris doesn't
       | 
       | Edit: I remember, Tetris is one of a few games that don't use
       | MBCs. The quiescent current is probably that of the MBC
       | 
       | I hadn't looked into GB flash carts, but for GBA I was warned
       | away from the EZ Flash Omega because apparently it used more
       | power than the equivalent (more expensive) Everdrive. I'd be
       | interested to see the numbers behind that.
        
         | fredoralive wrote:
         | Tetris just has a ROM chip. The other official carts have ROM,
         | a bank switching chip, static RAM and a power switching chip
         | (to switch the SRAM from the internal battery to Gameboy
         | power). So there's just more stuff on the board that can drain
         | power.
         | 
         | Edit: Dang, you remembered whilst I writing my reply...
        
           | ChrisRR wrote:
           | Yeah, incidentally I've written a gameboy emulator and only
           | remembered because I never implemented any MBCs and so it
           | only played Tetris and Bubble Ghost
        
         | dstaley wrote:
         | makho has a video on the power usage of the EZ Flash Omega DE
         | versus some other flash carts.[1] He's also put together a
         | spreadsheet with his results.[2] Essentially the EverDrive
         | would result in a runtime about 90% of an original cart, with
         | the EZ Flash Omega DE coming in at 80%. The original EZ Flash
         | Omega would last about 70% of the time of an OEM game.
         | 
         | [1] https://youtu.be/HrGTzSrdCyA
         | 
         | [2]
         | https://docs.google.com/spreadsheets/u/0/d/1baIDOZlUjERhOsmc...
        
       ___________________________________________________________________
       (page generated 2021-04-20 23:02 UTC)