The Hitchhiker's Guide to PM123 skins

This document isn't meant to be a step-by-step guide to creating PM123 skins. Rather it's meant to be a throughout reference. Basically skins are constructed from a .SKN file and one of more bitmap files (.BMP, .GIF, etc) or a .PAK file (which is a bundle file that wraps the skin's bitmaps into one file).

.SKN file structure

The .SKN file is a skin definition file. It contains the filenames of all bitmaps to be replaced, all new bitmap positions and other definitions. It's a simple text file. Lines beginning with ; or # are considered as comments.

If you want to change a bitmap, it's defined like this:
resource,bitmap
For example, replacing the background:
1900,mybmp/bg.bmp
If you want to change a bitmap position, it's defined like this:
position:x,y
For example, changing volume bar's location to (10, 10):
25:10,10
Special resources can be toggled on like this:
resource,1

Special resources that control PM123 interface

Resource number Resource explanation
1 Bright 3D shade color, in format RRR/GGG/BBB.
2 Dark 3D shade color, in format RRR/GGG/BBB.
3 (obsolete)
4 Color of seek slider border, in format RRR/GGG/BBB.
5 Playlist position indicator color, in format RRR/GGG/BBB.
6 Disable 3D-shading of the "statistics area".
7 Disable 3D-shading of the volume bar.
8 (obsolete)
9 Disable 3D-shading of the player window.
10 Disable the seek slider border.
11 Disable the second font.
12 (obsolete)
13 Measure width of the filename display in pixels.
14 Height of the filename display (in pixels) for regular mode. Used if resource 13 is defined.
15 Height of the filename display (in pixels) for small mode. Used if resource 13 is defined.
16 Foreground color of the filename display, in format RRR/GGG/BBB.
20 Width of the filename display (in characters, if resource 13 is not defined) for regular mode.
21 Width the seek slider area in pixels.
22 Width of the filename display (in characters, if resource 13 is not defined) for small mode.
23 Initial font, 0 or 1.
24 Space between the main timer digits (in pixels).
25 Disable the separator between the main timer groups.
26 Make volume bar horizontal.
27 Give volume bar a handle you can grab (resource 1620).
28 Draw bit rates with digits from resource 1830 to 1839.
29 Draw playlist indicator with resources 1660 to 1669. This is additionally the number of digits to draw. The minimum value is 3.
30 The bundle file for this skin (.PAK file) created with PM123 Skin Utility.
31 Foreground color of unselected text in format RRR/GGG/BBB.
32 Background color of unselected text in format RRR/GGG/BBB.
33 Foreground color of selected text in format RRR/GGG/BBB.
34 Background color of selected text in format RRR/GGG/BBB.

Bitmap resources

Resource number Resource explanation
1200 to 1209 Digits 0-9 for the main ("big") timer.
1210 Main timer separator ':'
1211 Darkened main timer separator ':'
1400 to 1445 Font 1, charset
"abcdefghijklmnopqrstuvwxyz" "-_&.0123456789 ()дц:"
('a' is 1400, 'b' is 1401, and so on)
1601 Stereo mode
1602 Mono mode
1608 No channels (unknown, no file loaded) mode
1609 Alternate seek slider handle, same as seek slider handle by default.
1610 Seek slider handle
1611 Background bitmap for small mode (if not defined, default background will be used)
1612 Background bitmap for tiny mode (if not defined, default background will be used)
1620 Volume slider handle bitmap (only if enabled)
1630 Volume bar
1631 Indicator for single file play
1632 Indicator for playlist play
1633 Indicator for no file loaded
1640 to 1649 Digits 0-9 for "time left" and "playlist" left timers
1650 Separator (':') for "time left" and "playlist" left timers
1651 Dark 0 digit for "time left" and "playlist" left timers
1652 Darkened separator (':') for "time left" and "playlist" left timers
1660 to 1669 Digits 0-9 for playlist total/index displays. Only used if resource 29 is enabled.
1670 Leading zero for playlist total/index displays. By default same as ordinary zero. Only used if resource 29 is enabled.
1800 to 1815 Bitmaps for bit rates 0 (no bit rate), 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 320. Not used if resource 28 is enabled.
1820 Bright "led" bitmap (displayed when PM123 has focus)
1821 Dark "led" bitmap (displayed when PM123 is not focused)
1830 to 1839 Digits 0-9 for bit rates, if resource 28 is enabled.
1840 Symbol of hundred. If this symbol is defined, bit rates more than 999 are displayed in hundreds.
1900 The background bitmap. Resources 1611 and 1612 override this in small and tiny mode.
1901 "Time left", dark.
1902 "Time left", bright.
1903 "Playlist left", dark.
1904 "Playlist left", bright.
1906 Slider shaft (drawn before drawing slider handle)
Only regular mode
1310, 1300 Play button up/down
1312, 1302 Pause button up/down
1313, 1303 Rewind button up/down
1314, 1304 Fast forward button up/down
1315, 1305 Power button up/down
1316, 1306 Previous button up/down
1317, 1307 Next button up/down
1318, 1308 Shuffle button up/down
1319, 1309 Repeat button up/down
1320, 1321 Playlist button up/down
1322, 1323 Stop button up/down (hidden by default)
1324, 1325 Load file button up/down (hidden by default)
Small/tiny mode
5510, 5500 Play button up/down
5512, 5502 Pause button up/down
5513, 5503 Rewind button up/down
5514, 5504 Fast forward button up/down
5515, 5505 Power button up/down
5516, 5506 Previous button up/down
5517, 5507 Next button up/down
5518, 5508 Shuffle button up/down
5519, 5509 Repeat button up/down
5521, 5520 Playlist button up/down

Resource (bitmap) position settings

Position number Position explanation
1 Main timer
2 Main window size (sx, sy)
3 Play button, regular
4 Pause button, regular
5 Rewind button, regular
6 Fast forward button, regular
7 Playlist button, regular
8 Repeat button, regular
9 Shuffle button, regular
10 Previous button, regular
11 Next button, regular
12 Power button, regular
13 Text display, regular
14 Text display, small
15 "Time left" dark
16 "Time left" bright
17 "Playlist left" dark
18 "Playlist left" bright
19 "Time left" timer
20 "Playlist left" timer
21 Play mode indicator (no file/single/playlist)
22 Led bright
23 Led dark
24 Seek slider
25 Volume bar
26 No channels indicator
27 Mono indicator
28 Stereo indicator
29 Bit rate indicator
30 Main window size (sx, sy), small mode
31 Main window size (sx, sy), tiny mode
32 (unused)
33 Play button, small
34 Pause button, small
35 Rewind button, small
36 Fast forward button, small
37 Playlist button, small
38 Repeat button, small
39 Shuffle button, small
40 Previous button, small
41 Next button, small
42 Power button, small
43 to 52 (unused)
53 Play button, tiny
54 Pause button, tiny
55 Rewind button, tiny
56 Fast forward button, tiny
57 Playlist button, tiny
58 Repeat button, tiny
59 Shuffle button, tiny
60 Previous button, tiny
61 Next button, tiny
62 Power button, tiny
63 Playlist index indicator
64 Playlist total indicator
65 Stop button, regular (hidden by default)
66 Load file button, regular (hidden by default)
67 Location for the slider shaft (bitmap 1906)