Screenshots

Screenshots are arguably second only to encodes in importance for a site publication - they are generally the first thing a viewer sees of a particular publication, well before watching it. As such, assigning quality screenshots to our publications is essential.

This page explains how to:

Take screenshots from site-accepted emulators;

Convert them to the PNG file format, normally used for our screenshots; and

Snapshots when using Windows

TODO: For each emulator specify what on screen items need to be taken off before taking the shot (frame counter, lag counter, messages, etc)

Note: This information applies only to latest version of each emulator. Make sure you acquire the latest version.

PNG format

Default hotkey: F12

Default directory .\snaps

PNG format

Default hotkey: F12

Default directory: same directory as the ROM

There is a frame delay when pressing F12 and when Snes9x actually takes the screenshot. So if you want a screenshot on frame N, it must be paused displaying frame N-1 and polling for frame N. Then press F12, then frame advance, to capture the screenshot.

JPG format

Default hotkey: F12

Default directory: .\ScreenShots

PNG format

Default hotkey: F12

Default directory: same directory as the ROM

PNG format

Default hotkey: F12

Default directory: none, you will have to specify when making the screenshot.

Snapshots when using Linux

In Linux, when you install Imagemagick, you can use import to
take screenshots of any window. Example:

import tmp.png

Then click the window to take screenshot from, and it beeps twice
when the file is ready.
You can also select a region from screen by pressing the button
somewhere and dragging the cursor to mark the corners of the region.

If you use KDE, there is a program which comes with most KDE installs called KSnapshot. It can take images from any window or area, take images on a timer, and remove window decorations automatically. Simply open it, and have it take a snapshot of the active window with the remove decorations box checked.

The Gimp can also take screenshots (File -> Create -> Screenshot). Select "take screenshot of a single window" and uncheck "include window decoration".

If your snapshots contains menubars and other irrelevant things,
use an image manipulation program such as The GIMP
to remove them.

Note that the programs mentioned in this chapter can be used in Windows too.

Snapshots from dumped AVI

This is a more unusual version of obtaining a screenshot and depends on the video codec you used to obtain your video dump; however, done right it is the easiest method of doing so, especially in cases where you are preparing to, or have, encoded the video.

It is suggested that you dump the AVI to a lossless RGB based codec (Windows users can use the CamStudio or Lagarith codecs, frequently used by our encoders; FFV1 can also be used if set to the BGR32 colorspace) and open the file in any player that can show the video in its original native resolution (for Windows users, VirtualDub is suggested). Find a frame that is publishable quality, screencap the screen (or the frame if the player supports it), crop the result properly and save it as a PNG in your favorite image editor.

If you are going to optimise your screenshot, however, leave it as a BMP; PNGOUT is perfectly capable of reading BMP files (see below).

Resolution

The screenshots must be of certain resolution (depending on the system).

Admin-level users have an option to override these resolution limits (for games that have odd resolutions, for multi-runs, etc...)

System

Resolution

Alternative

NES/FDS/SNES/SGB

256*224

256*240

N64

320*240

320*224

GC/Wii

320*240

384x216

VBoy

384*224

-

GB/GBC

160*144

-

GBA

240*160

-

DS

256*384

256*192

SMS

256*192

256*224

Genesis/SegaCD/32X

320*224

320*240

Saturn

320*240

-

GG

160*144

-

PSX

320*240

320*224

PCE/PCECD/PCFX

256*224

256*240

Lynx/WSWAN/NGP

256*224

256*240

Arcade

384*224

-

DOS

320*200

320*240

MSX/Windows

320*240

-

Minimizing the file size

Presently, there is a limit of 45k for screenshot files - this is primarily because there are some movie list pages which display large numbers of screenshots, and those can take a long time and a large amount of bandwidth to display as it is.

We generally prefer lossless screenshots, and the below techniques are usually sufficient to achieve file sizes well within the target range. For some systems (particularly 3D systems such as N64 and PSX) the images may be more complex than this; in those cases, we accept a certain degree of lossiness in screenshots. Historically, this has been in the form of JPEG screenshots saved with no subsampling and as high a quality setting as can be used while staying within that limit; more recently there has been an effort to use tools such as Animmerger to reduce the colour palette of the image while still preserving the benefits of PNG as an image format. It is recommended that you contact a publisher before resorting to these means.

General

We use OptiPNG (to ensure the minimum amount of colours are stored in the PNG's palette) followed by PNGOUT to compress our PNG files.
This algorithm outperforms programs such as AdvPNG in almost all cases.

To get optimal compression, use several random trials (-r) and choose whichever result yields the smallest compression; the scripts and utilities below employ this approach. Alternatively, you can try using the first 15 powers of 2 in the block split threshold (-b) option for your trials; however in practice this has yielded worse results.

DeflOpt (Linux/i386 version) can be used optionally at the end to reduce the file just those few bytes more (it almost always does).

Windows

Download the ScreenshotCompressor from our TASTools project page, in addition to OptiPNG, PNGOUT and DeflOpt. Run your image through OptiPNG first, then follow the instructions packaged with the tool (it is as simple as drag and drop). This will use a configurable number of random trials in the spirit of the script in the Linux section below.

Linux

Assuming you have optipng, pngout, and deflopt in your $PATH, you can run this shell script to compress pngs under Linux. Utilizes several random trials to get the best possible compression, more trials = more compression, works best on uncompressed source bmps or png.):

Run as:

./nameofscript.sh screenshot.png 100

where:

"screenshot.png" is the name of the screenshot you want to compress, and

Note that PNGOUT can read BMP files directly. You don't need to convert them first. Also note that in some cases PNGOUT produces PNG files that don't work on all platforms (due to broken zlib implementations on those platforms); this is rare in practice.

JPG

3D and other modern games usually have too complicated picture to fit into the 45kB limit allocated for a publication screenshot. This forces us to use JPG format instead of PNG, but still do some work to minimize the color loss.

Load up the image in GIMP, export it to JPEG. Then set preview to on, chroma to 4:4:4 and DCT to floating-point and adjust the quality (usually to the maximum that gives under 45kB).