Screenshots for Demozoo - a practical guide!
by Menace/Spaceballs, lotek_style/tscc^ym_rockerz, sensenstahl/haujobb and KamikaTze/K2
In this article we will discuss and share tools and methods for gathering screenshots for a variety of scenarios and platforms, particularly from executable content like intros and demos. First of all, let's settle on some general guidelines for image size and how to store them. For lower-resolution (typically oldskool platforms or older productions) detail is easily lost in the conversion to lossy file-formats, while for larger resolution images it makes sense to use jpg to keep the webpage resonably performant and not let filesizes skyrocket. I usually employ a rule of thumb as thus:
640x480 and below = png
800x600 and above = jpg
There will always be edge-cases going either way, but just try to use common sense - and ask in the Discord channel if in doubt.
Also, remember the following points about how screenshots work on Demozoo:
- Please do not upload screenshots lifted from other sites. Some apply resolution restrictions, some compress images further, and above all - those screenshots were the work of someone besides you. Fresh, native resolution shots are <3
- We support screenshots of any size. 4K? No problem. We scale down to your screen.
- We support multiple screenshots, and automatically generate mosaics of any production that has 4 or more shots available.
- We support native upload of most retro formats through direct support for Recoil (http://recoil.sourceforge.net/). So, just upload those .iff's or any other supported format directly - no need to convert it to png or some other web format.
- We support artwork for music entries. That means, you can upload screenshots of executable music entries for instance, or "cover art" of any kind that may be associated with a track for say, Spotify or Bandcamp usage.
In the use of emulators, we encourage users to try and find the best way to capture output that is as close to native resolution as possible, and without any form of filters or processors to manipulate the output to look more like crt monitors, for instance. The reasoning behind this is that we can more easily and better scale to the user's screen and various windows if the output is as close to the original as possible.
On the Windows platform, there are a few different tools to accomplish screenshots of executable content. Personally I prefer Dxtory, which lets you set a hotkey for screenshotting productions that open an OpenGL or DirectX surface - which should cover most if not all Windows executable productions. It's modern and feature-rich, and can also be used for video capture and the like if that's something you're interested in. The other side of the coin with Dxtory is that is not free - it's 3800 JPY (currently 28.4 euros) for a lifetime license, which in my opinion is worth it.
If that is outside your budget, good old FRAPS is an alternative - if you're willing to jump through some hoops. FRAPS can capture unlimited screenshots without watermarks, though you're limited to output in the BMP format, so there's an extra step involved with converting those images to the appropriate format after the fact. I find Irfanview does a good job here, with its batch conversion feature. The problem with FRAPS is simply that it is outdated, the last version being released being back in february of 2013. That means bugs go unfixed (sometimes the fps overlay comes across to the screenshot), and improvements to support newer productions are never implemented.
Another application that has been reported to work fine for our scenario is ScreenHunter - though we have no first-hand experience, it's worth a try.
The edge-case of the executable graphics
In some instances, executable graphics entries do not open OpenGL or DirectX surfaces. In these instances, it gets a little more tricky to get screenshots with the tools discussed above. Sometimes, you can get away with a press of the good old printscreen and a paste into any graphics program here. I run a multiple-screen system, meaning I get the output of all screens in the paste, which necessitates the need to cut out anything that doesn't go in the shot. Again, I like Irfanview for this - the feature Crop Selection is great here.
When I (lotek) became a moderator on Demozoo over four years ago the site itself was pretty much lacking of screenshots. Over the years I experienced that people are uploading bad looking screenshots, mostly taken from other websites with less capabilities. Our goal on Demozoo is to have a proper 'uniform' look instead of a big mess. Since I am the moderator for all Atari platforms I decided to give you a couple of hints.
Some general rules:
- PNG format - PNG or GIF are the preferred formats here to have a sharp look without any artifacts. Absolutely NO .JPG's please!
- Borders on - that's for ST stuff mainly... but WHY? Some demoscreens are using overscan, some do not... if you cut off the borders you may cut off the effect aswell. Stepping back to what I said right before, we want a uniform look and if you do screenshots sometimes this way and sometimes that way we won't reach our goal.
- Original shots - please do not upload any screenshots from other sites unless you did those aswell. We want to have our own. You can upload as many screenshots as you want as we don't have limitations here.
Usually the best way to do screenshots is by using emulators. Here's a list which ones I am using for which platforms:
Atari 2600 Video Computer System (VCS) - emulator: Stella
Atari 8bit (XL/XE) - emulator: Atari800win or Altirra
Atari Falcon + Atari TT - emulator: Hatari 2.0
Atari Jaguar - emulator: Virtual Jaguar
Atari Lynx - emulator: Handy
Atari ST/E - emulator: STeem SSE
I hope that this gave you a little more insight how to get started and maybe we could expect more screenshots from you in the future.
For Windows machines, there is no other emulator that comes close to WinUAE. You'll need to acquire some ROMs to get going with it, but we will assume for the purposes of this exercise that you already know how to get it running. Now, while we generally recommend native resolution when possible, on the Amiga that gets a little hard to get right, since it switches between two "main" resolutions, medres (typically cli screens) and lowres (typically demos/intros/productions). So, through endless soulsearching and much gnashing of the teeth, I have come to the conclusion that the default settings in WinUAE (that renders both modes correctly, but means lowres is actually twice the res of the original) is preferable to fucked up medres screens.
So, to screenshot in WinUAE, you press F12 while the production in question is running, and press the selection for Output on the left - it's the fifth selection from the bottom. On the resulting screen, simply press Save screenshot, and a filename is automatically generated.
Commodore 64 (and other Commodore systems)
We find the best emulator for the Commodore 64 (C64) is VICE, and taking screenshots in it is a breeze. We urge you to check your palette before you get going. You can find the settings at Video -> Video Settings, and choosing the tab called VICII Colors. Make sure there is a tick next to External Palette, and the one we prefer is Pepto (PAL). Once you are running a production you want to screenshot, you hit Alt-C, and dialog opens up for saving your screenshot. I typically name them 01, 02 and so forth as I take them. Please note that even if you set the screen to double size, screenshots are saved at native resolution. VICE also has editions for other platforms like the C16/+4. VIC-20 and Commodore 128, and it is also available for Mac OS and Linux, though hotkeys may differ - consult the documentation.
Alternative emulators for the Commodore 64 include CCS64 and Hoxs64, and we're sure those'd do nicely too, though we are not as familar with them.
Many people use various builds of DosBox for running old Dos-intros/demos nowadays. There you normally simply have to hit CTRL-F5 for a screenshot (it will be saved as .png in the screenshot folder of dosbox). If there is some strange key detection which makes this impossible use e.g. Dosbox Daum which has a menu for grabbing screenshots so you don't need to touch the keyboard at all. Another solution is simply pressing the print-screen-key (while you are outside of dosbox or your virtual machine of choice) pasting the data in your favourite image program, cutting the screen around your actual dosbox-window and there you go. On a real Dos machine a screen grabber is needed but this definitely isn't your first choice today unless you stumble across a prod that only runs on real hardware. But if you got a DOS machine you already know how to handle such things :)
Our favoyurite emulator for the ZX Spectrum family of computers is FUSE, which is available for all popular platforms. Inside, you take screenshots by opening the menu item File and choosing Save Screen as PNG. While Demozoo can import .SCR shots as well, we find we get the most accurate colors when exporting to PNG and then adding those shots. You'll then be faced with a dialog box of various filters or scalers, and we urge you to choose the topmost one, Normal here. We then favour naming our shots (if multiple) in much the same way we do from VICE for the C64, 01.png, 02.png and so on.
It's a little laborious, so let's hope they implement a hotkey and a default choice for the scaler dialog at some point. :)
Try the following solution if the screenshot utility provided by your desktop environment does not suit your needs. It will capture the contents of the focused window without its decorations and without showing an intruding dialog for saving the images. It will store JPG files using the best quality and PNG files using the best compression.
Install the packages
xdotool from your Linux distribution repository.
Create a folder for storing the screenshots (
~/screenshots), modify the scripts accordingly if you choose another location.
The following one-liners will take a screenshot as PNG and JPG respectively.
bash -c "maim --hidecursor --format=png --quality=9 --window=$(xdotool getactivewindow) ~/screenshots/$(date +%s-%N).png"
bash -c "maim --hidecursor --format=jpg --quality=9 --window=$(xdotool getactivewindow) ~/screenshots/$(date +%s-%N).jpg"
Try them first in the command line and then proceed to create a hotkey/shortcut using the configuration tools of your Desktop Environment.