batt life article

This commit is contained in:
Wouter Groeneveld 2021-07-15 11:21:38 +02:00
parent 104f31aaba
commit acd6f939a4
3 changed files with 141 additions and 0 deletions

View File

@ -0,0 +1,30 @@
---
title: The Decline of Battery Life
date: 2021-07-15T10:35:00+02:00
categories:
- retro
tags:
- gba
---
As I was writing [my Evercade gaming device review](https://jefklakscodex.com/articles/evercade/), I noticed that the battery life of the new handheld machine wasn't quite up to par, clocking in at about four hours playtime, fairly independent of the screen brightness settings. Of course I'm heavily biased here, vividly remembering having to lug around four spare AA batteries in case my original Game Boy would die on me. It almost never happened: the 1989 machine lasted for more than 20 hours!
Sure, the Grey Brick is very old. Sure, it was based on what Nintendo's Gunpei Yokoi---the designer behind the best pocketable machine of all time---called _Lateral Thinking With Withered Technology_. But as a gamer, or even as an end user of any embedded piece of hardware, the trend towards shorter battery lives of devices is definitely visible.
Take a look at the average battery life of Nintendo's handheld systems over the years:
![](../batterychart.png "Average battery live of devices.")
Scrambling together these numbers required a lot of guesswork as my own playthroughs and reported numbers from various sources differed quite a bit. [Nerdly Pleasures](https://nerdlypleasures.blogspot.com/2014/10/battery-life-in-8-bit-game-boy-line.html) explains battery life in the 8-bit Game Boy line more thoroughly. [Wired](https://www.wired.com/2012/09/battery-test/) and [IGN](https://www.ign.com/articles/2019/07/17/nintendo-switch-how-the-new-models-battery-life-compares-to-other-handhelds) also conducted bigger tests.
Comparing battery life is much more involved than simply looking at the average play time. For one, there's the kilowatt/hour and electric charge/hour rates of the batteries, the composition of the battery (lithium, nickel-metal hybrid, ...) Secondly, there's the required current of the device itself, also based on a slew of different requirements (CPU kind, size, make, RAM, screen technology and intensity, and so forth). Thirdly, it depends on the load of the machine (the game itself, and the brightness of the screen). I tried adding these to the graph but the resulting mess made me even more confused.
In essence, as an end user of these machines, I do not care about `mAh`, `MHz`, `DDR3` or whatever. I care about the longevity. Will this thing last the long train ride? Can I still make a call after watching these YouTube videos on my smartphone?
Remember the [Nokia 3310 cellphone](https://en.wikipedia.org/wiki/Nokia_3310) from 2000? The battery of that beast lasted a whole week. A week! How many times did you charge your iPhone today? Again, the comparison is far from fair, but in terms of usability, it's a huge step back. That's why I'm still clinging onto my [Sony Xperia Z1 Compact](https://en.wikipedia.org/wiki/Sony_Xperia_Z1_Compact). Its battery lasts three days with mild usage. But I'm [far from a devoted smartphone user](/post/2021/03/getting-rid-of-tracking-using-lineageos/), so again: no fair competition here. It's not all bad nowadays though, my M1 MacBook Air is a _fantastic_ piece of hardware that takes virtually ages to run dry. Even the four hours of my nine year old Air from 2012 is still decent.
Back to that [Evercade](https://jefklakscodex.com/articles/evercade/) I was fiddling with. It has a `1.2Ghz` Cortex-A7 processor, a `4:3` LCD screen (the same as a PSP), and runs a custom version of Linux (of course it does). That means it's basically a little computer I just happen to use for retro gaming. 8-bit, 16-bit and even 32-bit handhelds from the original GB to the GBA very simple embedded pieces of hardware. The Game Boy Color didn't even have another processor: it was still the `Z80`, only running at twice the speed of the original model (`8 MHz`). The GBA "finally" contained a proper CPU, an ARM7TDMI running at `16.78 MHz`. Except that its CPU cycles aren't clogged with needless Linux daemons or kernel programs: there's simply no OS! Pop in a cart and you're ready to go. The Evercade is also cartridge-based, but relies on emulation---hence, a software layer (and more power) is needed.
Twenty years later, the Evercade is almost eighty times faster, while its battery life has been divided by three. The original GBA's non-backlit screen is not that inferior to the Evercade's bigger LCD screen. The quality is very bad (see my review), and my modded GBA with backlit fares of much better, without having to give in that much on battery time. The upcoming [Analogue Pocket](https://www.analogue.co/pocket)---that uses hardware emulation with FPGAs instead of software emulation---reportedly does not perform that much better, with a battery life of six hours as a rough estimation. But that one comes with a high-quality screen. Or so they say.
Power for battery life---a fair trade-off? I'm not so sure.

111
content/sigcse/chart.md Normal file
View File

@ -0,0 +1,111 @@
---
title: amchart renderer
draft: true
---
this is a chart:
<script src="https://www.amcharts.com/lib/4/core.js"></script>
<script src="https://www.amcharts.com/lib/4/charts.js"></script>
<script src="https://www.amcharts.com/lib/4/themes/animated.js"></script>
<div id="chartdiv" style="width: 100%; height: 800px"></div>
done. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac neque ac justo bibendum condimentum. Ut ac erat non urna elementum cursus. Phasellus vestibulum elementum diam eu accumsan. In justo lectus, lobortis ut mattis ut, iaculis vel massa. Ut dapibus, arcu ut dapibus bibendum, augue massa fringilla velit, nec lobortis felis elit et velit. Aliquam erat volutpat. Mauris non arcu velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec odio purus, feugiat sit amet tristique in, tristique sit amet odio. In nisi quam, mollis quis mollis mattis, mattis eu enim. Pellentesque pellentesque eros ut eleifend ultrices. Suspendisse maximus magna vel ipsum consequat porta. Integer mattis sem ut semper condimentum.
Proin gravida vitae tortor eu posuere. Nunc quis pellentesque mauris, ac ultrices turpis. Nulla iaculis, risus nec posuere euismod, risus est efficitur purus, in rutrum nulla est id sapien. Nam venenatis ipsum gravida, feugiat tortor suscipit, tincidunt metus. Phasellus purus nisl, pulvinar tristique tellus id, eleifend fringilla dui. Cras porta pharetra ligula quis tincidunt. Praesent condimentum auctor dolor, nec aliquam enim accumsan non. Nullam congue gravida libero sit amet hendrerit.
<script>
am4core.ready(function() {
am4core.useTheme(am4themes_animated);
function createChart(divid, data) {
var chart = am4core.create(divid, am4charts.XYChart);
chart.exporting.menu = new am4core.ExportMenu();
chart.data = data;
chart.padding(40, 40, 40, 40);
var categoryAxis = chart.yAxes.push(new am4charts.CategoryAxis());
categoryAxis.renderer.grid.template.location = 0;
categoryAxis.dataFields.category = "config";
categoryAxis.renderer.inversed = true;
categoryAxis.renderer.grid.template.disabled = true;
//categoryAxis.renderer.minGridDistance = 100;
categoryAxis.renderer.minWidth = 120;
var valueAxis = chart.xAxes.push(new am4charts.ValueAxis());
valueAxis.min = 0;
var series = chart.series.push(new am4charts.ColumnSeries());
series.dataFields.categoryY = "config";
series.dataFields.valueX = "val";
series.tooltipText = "{valueX.value}"
series.columns.template.strokeOpacity = 0;
series.columns.template.column.cornerRadiusBottomRight = 5;
series.columns.template.column.cornerRadiusTopRight = 5;
var labelBullet = series.bullets.push(new am4charts.LabelBullet())
labelBullet.label.horizontalCenter = "left";
labelBullet.fontSize = 20;
labelBullet.label.dx = 5;
labelBullet.label.fill = am4core.color("white");
labelBullet.label.text = "{values.valueX.workingValue}";
labelBullet.locationX = 1;
categoryAxis.sortBySeries = series;
var columnTemplate = series.columns.template;
columnTemplate.adapter.add("fill", function(fill, target) {
return am4core.color("#018660")
})
}
createChart("chartdiv", [{
"config": "Game Boy 1989",
"val": 25
}, {
"config": "Game Boy Pocket 1996",
"val": 10
}, {
"config": "Game Boy Color 1998",
"val": 10
}, {
"config": "Game Boy Advance 2001",
"val": 15
}, {
"config": "Game Boy Advance SP 2003",
"val": 8
}, {
"config": "Game Boy Micro 2005",
"val": 6
}, {
"config": "Nintendo DS 2004",
"val": 11
}, {
"config": "Nintendo DS Lite 2006",
"val": 14
}, {
"config": "Nintendo 3DS 2011",
"val": 5
}, {
"config": "New 3DS XL 2012",
"val": 6
}, {
"config": "Nintendo Switch 2017",
"val": 5
}, {
"config": "Switch Lite 2019",
"val": 7
}, {
"config": "Evercade 2020",
"val": 4
}]
);
}); // end am4core.ready()
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB