how to capture screenshots on vintage hw: for 24/12

This commit is contained in:
Wouter Groeneveld 2023-12-20 11:43:06 +01:00
parent dd4323b38f
commit 202b6317e5
3 changed files with 128 additions and 1 deletions

View File

@ -1,6 +1,6 @@
---
title: "Be A Selfish Programmer"
date: 2023-12-20T10:01:00+01:00
date: 2023-12-21T10:01:00+01:00
categories:
- programming
---

View File

@ -0,0 +1,125 @@
---
title: "How To Capture Screenshots On Vintage Hardware"
date: 2023-12-24T09:00:00+01:00
categories:
tags:
- screenshots
- nintendo ds
- gameboy
- dos
categories:
- retro
---
My email pen pal Jw over at [https://so1o.xyz/](so1o.xyz) asked me how I record screenshots for my vintage gaming reviews that get published on [Jefklak's Codex](https://jefklakscodex.com/). That's a good question that I've been having a lot of trouble with myself, depending on the system. I've already briefly touched on the topic in a couple of previous posts, but considering Jw's question, it seemed like a good idea to summarize my approach here. Below is a list of all my vintage and newer hardware systems together with my method to capturing video output. As always, there are multiple paths to achieving this, such as [MiSTer](https://www.retrorgb.com/mister.html) and [RAD2x](https://www.retrorgb.com/rad2x.html) HDMI upscaling. Reach out and let me know if you found an easier way or a way to increase the quality of the screenshots!
## Capturing Screenshots
Summary:
- I prefer to use screenshot tools or built-in capabilities, if available.
- For vintage handheld games, I rely on a combination of Analogue's Pocket, a modded 3DS, and a DS emulator.
- For analog signals such as composite, I use a Pinnacle PCTV PCI capture card.
- For VGA and digital signals, I use an Avermedia C127 PCI-E capture card.
### The Game Boy family
I capture stills of Game Boy games using [the Analogue Pocket](/post/2022/04/analogue-pocket/). Since a recent firmware update, it comes with built-in screenshot support (press `HOME`+`SELECT`). Simply transfer the data from the microSD card to your PC and the post-processing can commence. Before that, I used the mGBA emulator. There is no easy way to capture the video signal of the original Game Boy (Color) handhelds. Hyperkin's [Retron 5](https://www.retron5.com/) console that also takes Game Boy carts outputs HDMI, but it's also just an emulator, so in my opinion you're better off doing it yourself. I dump ROMs of my games using [GBxCart RW](https://www.gbxcart.com/).
You'll need the Analogue Dock (another `$130`) for the Pocket to output HDMI. I didn't see the point: the screenshot files---even if blown up using the correct filters---are good enough.
### Nintendo DS
See [capturing video output on Nintendo (3)DS hardware](/post/2023/01/capturing-video-output-on-nintendo-ds-hardware/) for an elaborate list of options. I currently dump the ROM with Godmode9, transfer it to my PC using FTPD, boot it and the savegame in the [DeSmuME emulator](http://desmume.org/), and then use the built-in screenshot capabilities of the emulator. It's far from ideal but capturing screenshots on the original DS (Lite) is known to be notoriously difficult unless you have it modded with HDMI out for a hefty price.
### Nintendo 3DS
See [capturing video output on Nintendo (3)DS hardware](/post/2023/01/capturing-video-output-on-nintendo-ds-hardware/). Once you've got your 3DS modded and Luma3DS installed, it's very simple: press `L`+`DOWN`+`SELECT` and select "take screenshot". This will dump two BMP files that require post-processing to correctly paste together---see below.
### VGA/DOS
See [capturing VGA output from DOS on Windows XP](/post/2022/11/capturing-vga-output-from-dos-on-winxp/). VGA modes in DOS are notoriously finicky, and depending on the game, I needed a small utility that forces VGA to output in `60 Hz` instead of 70. My capture card can handle both VGA and HDMI, where the signal appears in the AVer MediaCenter software. From there, use the built-in screenshot button.
[My Albion screenshots](https://jefklakscodex.com/games/pc/albion/) were recorded like that.
### Windows 95/98
98% of the games can be recorded using good old capture utility [Fraps](http://www.oldversion.com/windows/fraps/), just make sure to download an old 95/98 version. For some reason, Fraps refused to recognize FIFA RTWC '98. In that case, the backup capture method---in case the print screen button and paste in Paint method also fails---is the same as the VGA/DOS one: disconnect your VGA cable from the monitor and attach it to the capture card on another machine.
### Windows XP
For Windows XP, I also use Fraps, but a newer Windows NT/2000 compatible version. So far, it has never failed me. I can't capture the DVI output from this machine as it's also my capture machine!
### SNES
For SNES games, arguably the best option would be to get and record from a HDMI-upscaled Analogue device. If that's not an option, you can of course again simply resort to emulators. But if you want to capture from real hardware, like I do, you can loan the Wii's Composite A/V cable that at least also works for my PAL SNES. Then, I capture the analog composite signal in [DScaler](http://dscaler.net/setup/index.htm) on Windows XP using an old Pinncale PCTV Rave PCI card I have plugged in. That card should also be able to capture S-Video and Coax signals.
Of course, if a SNES game was re-released on the Virtual Console for the Wii, in the Nintendo Online Switch subscription system, on the HDMI-enabled SNES Mini, or repackaged on modern consoles as a retro re-release, the process becomes considerably easier. For example, I captured [Castlevania IV screenshots](https://jefklakscodex.com/games/snes/super-castlevania-iv/) via my Switch as part of the Castlevania Anniversary Collection.
### Nintendo GameCube
See [three little GameCube mods](/post/2021/12/three-gamecube-mods/). `DOL-001` GameCube models come with a digital-out port where you can plug in a HDMI adapter such as my Kaico one. The GC-HD MkII adapter from E.O.N. is vastly superior, but also costs twice as much. There are a couple of _very_ cheap alternatives floating around, but be careful with those cables: they usually fail to deliver. Once your GC is able to output HDMI, again resort to a HDMI capture method (see _The Evercade family_ below). Make sure your capture card is able to find the PAL `50 Hz` 480p signal.
### Nintendo Wii
For the Wii you have a couple of options: either use the composite A/V cables and capture the analog signal (see _SNES_ above) or buy RGB cables and use a RGB-to-HDMI adapter. For the moment, I use the former method, but the image quality is quite low. A look at the MiSTer to boost the quality is still on the TODO list. Again, in case you don't mind capturing from an emulator, [the Dolphin emulator](https://dolphin-emu.org/) will flawlessly run GameCube and Wii ROMs.
### Nintendo Switch
Thank god for the dedicated screenshot button. Unfortunately, Nintendo has to be Nintendo, and transferring it to your PC still isn't easy. Back in the day I used a fake Twitter account to push it online and re-download it. Now I use the stupid "send to smart device" option that has you fiddling with QR codes. You can also simply yank the microSD card and transfer the files.
### The Evercade family
These handheld devices come with a HDMI-out port but will require you to buy a mini-HDMI converter cable that's of course not included. Then, you can attach it to a HDMI capture card or dedicated USB-3 capture device. I use [my Avermedia C127](/post/2022/11/capturing-vga-output-from-dos-on-winxp/) that's inside my Windows XP retro build.
### The ...-Classic Mini consoles
I have a SNES Classic and PlayStation 1 Mini Classic, and they both simply output HDMI. Most modern Android-based devices are simply beefed up emulators but all output HDMI. See above. You can of course also "stumble upon" the ROM, use emulators like [Snes9x](https://www.snes9x.com/), and simply take a screenshot there. I rooted my SNES Mini and it is possible to extract the ROMs using the [Wii U VC Extractor](https://github.com/AwakeEchidna/wiiu-vc-extractor), but haven't tried it yet. Most players are interested in getting ROMs in, not out.
## Post-processing Screenshots
If your intention is to publish screenshots online---or your database is huge and your hard drive isn't---you inevitably have to think about image optimization. Additionally, most of the above screenshot methods capture at a native resolution, meaning your Game Boy shot will be only `160x144 px`: good luck with that on modern resolutions/screens. Depending on the type of vintage hardware, I approach post-processing differently.
I use [ImageMagick](https://imagemagick.org/) for (automated command-line) bulk processing. As a general rule, I use the following rules to convert to and optimize JPG images for the web:
`mogrify -sampling-factor 4:2:0 -strip -quality 80 -interlace JPEG -format jpg -colorspace sRGB screenshot.png`
This does a few things, such as [chroma downsampling](https://imagemagick.org/script/command-line-options.php#sampling-factor). The result should be an acceptable image quality with a very light footprint ideally for serving on the web and storing on your NAS. My experiments settled for a factor of `4:2:0` instead of `4:2:2` or better and an overall JPG quality of `80%`. Adjust to your needs if required.
If you'd rather save screenshots in a more modern format, say `.webp`, I won't stop you, but I want them to be accessible from my retro hardware, and this includes Windows 98, so `.jpg` it is.
### Game Boy games
GB games are lovingly pixelated messes, meaning if you want to blow up a screenshot, you'll have to apply a filter that carefully preservers this mess. ImageMagick's `box` filter does just that:
`mogrify -filter box -resize x400 *.png`
Since displaying just one GB screenshot above and below text seems ridiculous, I usually paste two together horizontally:
`montage shot1.png shot2.png -tile 2x1 -geometry +2+2 result.jpg`
See for example the screenshots in the [Super Mario Land 2](https://jefklakscodex.com/games/gameboy/super-mario-land-2/) article.
### GameCube games
PAL GameCube screenshot output comes in a low resolution and is also a mess, but a blurry one. If you use ImageMagick's `-scale`, it will auto-apply the `box` filter, which in this case you do _not_ want. Use `-resize` instead. I tend to be conservative and try not to exceed the `720x480` resolution or it'll look even worse. My HDMI adapter's quality is average at best.
See for example the [Buffy The Vampire Slayer](https://jefklakscodex.com/games/gamecube/buffy-the-vampire-slayer-chaos-bleeds/) screenshots.
### Nintendo DS games
Sometimes the `box` filter works, sometimes the interpolation-esque effects of `-resize` are desired instead. This will depend on the type of game (2D/3D, the color usage, ...). Try out both and see what works for you.
Again, since DS video output is quite tall, I usually paste two screenshots together using `montage`, resulting in a joined resolution of `1074x804`, like in the [Puzzle Quest review](https://jefklakscodex.com/games/ds/puzzle-quest/).
### Nintendo 3DS games
Capturing screenshots with homebrew software dumps two files, as the resolutions of the top and bottom screen differ. It's again up to you to paste them together---without screwing up the lower resolution of the bottom screen. The quality is much better than on the DS, so the need to display two at once isn't as prevalent here. See for example [New Super Mario Bros. 2](https://jefklakscodex.com/games/3ds/new-super-mario-bros-2/).
The trick here is to keep the lower half transparent using PNGs (`600x720`). In that case, tell ImageMagick to keep the whitespace as transparent:
`convert screen1.bmp screen2.bmp -gravity center -append -transparent white -resize 150% -quality 95 -depth 8 -depth 24 result.png`
In my case, the dumped raw shots using Luma3DS/Rosalina were `.bmp` files. The above command also includes a few optimization arguments.

View File

@ -10,6 +10,8 @@ date: 2018-09-01
### 2023
**Groeneveld, W.**, Luyten, L., Vennekens, J., Aerts, K. [Students' and Professionals' Perceived Creativity In Software Engineering: A Comparative Study](http://arxiv.org/abs/2312.12014). Taylor & Francis European Journal of Engineering Education, 12/2023, 1-18.
**Groeneveld, W.**, Vennekens, J. (sup.), Aerts, K. (cosup.). PhD thesis: [Identifying and Amplifying Non-Technical Skills in Software Engineering Education](https://lirias.kuleuven.be/retrieve/718648).
### 2021