Customizing Your Photoshop Workspace
Some may oppose the heavy reliance on Photoshop this workshop will have (I suspect roughly 50%). However, I feel that it is essential for efficiency to produce graphics in an external program with a customizable palette, layers, and basic animation features. I build and preview everything in Photoshop and then import it through YY-CHR. I suggest version CS4 or newer (CS4 introduced an optional pixel grid at 500% or more zoom, very useful for our purposes.)
I understand that GIMP and Paint.net both have large user bases, are legally free, and I'm sure for most purposes, will suffice. However, I'm 15+ years into Photoshop for school, personal, and work purposes though, so I will be unable to provide assistance specific to free alternatives.
Customizing Your Workspace
(Click for full size)
TIP: The above settings for text will produce characters that take exactly one tile each. Useful for judging how many characters can fit within an area.
We will build a custom workspace (arrangement of windows, keyboard shortcuts, and settings) for NES graphic work. First, we need to decide which windows (aka panes) are useful for us and how to organize them on the screen. Click and drag them to combine or dock where necessary. The following is my layout:
- Left Side:
- Tools - Docked
- Swatches - Minimized and Docked with small icon previews at minimum width. This allows the colors to be displayed in multiples of four. To load the custom NES palette, alt+click each swatch until the pane is empty. Then select Load Swatches... from the dropdown menu on the top left. Select nesPalette.aco. I made this series of swatches, and have labeled them accordingly with their hex addresses, viewable by hovering.
- Right Side: Layers, Histories, and Actions combined. Paragraph and Character combined. Both minimized.
- Bottom: Timeline. (Used for previewing animations and making animated gifs to display work in progress.) Minimized.
Preferences, Options & Shortcuts
The following are preferences and tool options to optimize Photoshop for tile-based pixel work. Many of which counteract anti-aliasing, the blurring that occurs when scaling or transforming images, which can prove to be majorly frustrating when unwanted.Change the following settings through Edit>Preferences:
Select the following tools to change their options
- General>Image Interpolation:Nearest Neighbor (clean scaling)
- History States: 99 (or higher. This controls how many steps you can undo. For larger print work, 99 would put a seriousdrain on resources. But working a-pixel-at-a-time, the amount of memory required per step is miniscule and the number of steps you'll want to undo when working will be large.
- Cache Levels: 2 (suggested lower for smaller resolution files with many levels, which is what we're doing)
- Use Graphics Processor:Checked. (Enables pixel-grid)
- Units & Rulers>Rulers: Pixels
- Guides, Grid & Slices:
- Gridline Every: 16 pixels (Creates gridlines for common arrangement of 2x2 tile squares.)
- Subdivisions: 2 (Produces lighter gridlines for individual 8x8 pixel tiles.)
- Style: Lines
Through Edit>Keyboard Shortcuts, set up the following keyboard shortcuts to replace nonexistent or inconvenient defaults
- Move Tool: Check Auto Select Layer (very useful for selecting layers, only negatively effected by unlocked transparent layers, which you will probably have no need for.
- Rectangular & Elliptical Marquee: One is nested under the other. Ensure that Feather is at 0 and anti-alias is NOT checked.
- Lasso & Polygonal Lasso: Again, one nested under the other. Uncheck anti-alias.
- Magic Wand & Paintbucket: (Paintbucket nested under Gradient) Set Tolerance at 1 (for selecting exact colors) and uncheck anti-alias. Gradient will not be used.
- Pencil: Nested under Brush. Select Pencil, decrease size to 1px. Brush will not be of use.
- Eraser: Set Mode to Pencil. Decrease size to 1px.
- Transform: Not on the toolbar, but under Edit>Free Transform, set Interpolation to Nearest Neighbor
- File>Save for Web: Ctrl + Shift + s (definitely optional as the default is ctrl + alt + s, but I find Save As to be practically useless 90% of the time, I either want to save my PSD or save a jpg, png, or gif for web view. It is rare that I need to save as a different type, so I swap the more common Save As shortcut for the more useful Save for Web function.)
Undo/Redo: Alt + Ctrl + z (Only toggles last action. Is not useful when working in pixels)
- Step Backward: Ctrl + z (Steps backward through history. Much more useful.)
- Step Forward: Ctrl + Shift+ z (or Ctrl + y if you're accustomed to ctrl + y for redo in programs like msword)
- Flip Horizontal: Ctrl + f (replaces Apply Filter, which will not be used for pixel work. X and Y flipping and rotation definitely will, though.)
- Flip Vertical: Ctrl + Shift + f
- Rotate 90° Clockwise: Alt + Ctrl + f
- Rotate 90° Counterclockwise: Alt + Ctrl + Shift + f
- Grid: Ctrl + h (will be the most commonly used of the show/hide commands, so should have the simplest shortcut)
- Pixel Grid: Shift + Ctrl + h (only applicable for 500% or more zoom. Also, can be disabled by lack of system resources and other causes.)
- Guides: Alt + Ctrl + h (Not so commonly used, since our scale is usually small enough for grid lines to serve as visual guides.)
- Extras: Alt + Shift + Ctrl + h (toggles Grid, Pixel Grid, Guide, and Lassos)
- Snap: Ctrl + Q (snaps selection to grid when grid is visible. Intense timesaver because you must paste exact size of tiles into YY-CHR. Q was chosen due to left edge proximity and because Alt + F4 performs the same role as File>Quit, the default function for Ctrl+Q)
Other Useful Shortcuts to Know
(Press shift + the letter to cycle through nested tools.)
- Move: Hold Ctrl
- Hand tool: Hold Spacebar
- Marquees: M
- Magic Wand: W
- Marquees: M
- Pencil: B
- Eraser: E
- Paintbucket: G
- Zoom: Hold Ctrl and scroll mousewheel
- Increase and Decrease Cursor Size, such as for Pencil and Eraser: [ and ]
- Copy Merged:Ctrl + Shift + c (copies all visible layers instead of only current layer, can be useful for copying sprites to import to YY-CHR if you maintain a white background layer to represent color 0)
- Layer via Copy: Ctrl + j (creates new layer from selection)
- Merge Layers:Ctrl + e
- Select all: Ctrl + a
- Deselect: Ctrl + d
- Inverse selection: Ctrl+Shift+i
Once you have everything to your liking, minimize all panes and in the Workspace dropdown near the top-right (by default, I believe it says Essentials
), and select New Workspace...
, check both options, then give it a suitable name.
Next Up: Viewing and Understanding NES Graphics
I heard that Nintendo did have arcade machines that supported RGB palette output, so they do have a fixed color value for each. Wouldn't that one be the "official" palette?
That would be the PlayChoice-10. Thanks for bringing it to my attention, I've updated the palette images in the post to represent it. It can be seen in NEStopia's RGB palette as well as Nintendulator's PC-10 palette pictured. If the goal were to emulate that system, then it would be the "official" palette. However, there are known discrepancies between it and what would would typically be seen from a normal home console hooked up to a television.
Nevertheless, defending a specific palette was not my intention. Know that when you release your patch, it will inevitably get a couple of hundred downloads. Those people will be using an assortment of palettes. My goal is to bring the differences between these palettes to attention, so that you can work with all of these limitations and strengths in mind, knowing that if you use color x, it could appear as x, y, or z to different users.
EDIT: I also noticed while double-checking these palettes that blue 23 color in FCEUX was corrected with v. 2.2.0 in Nov. of 2012. Therefore, it should not be an issue anymore, making FCEUX's default palette an acceptable choice. Previous Post updated.