Skip to content

Instantly share code, notes, and snippets.

@cesarmiquel
Created April 16, 2020 04:39
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save cesarmiquel/1780ab6078b9735371d1f10a9d60d233 to your computer and use it in GitHub Desktop.
Save cesarmiquel/1780ab6078b9735371d1f10a9d60d233 to your computer and use it in GitHub Desktop.
VGA 256 Color Palette to RGB
<?php
$im = imagecreatefrompng("vga-palette.png");
$sx = (int) 800 / 16;
$sy = (int) 800 / 16;
$ox = (int) ($sx / 2);
$oy = (int) ($sx / 2);
for($y = 0; $y < 16; $y++) {
for($x = 0; $x < 16; $x++) {
$rgb = imagecolorat($im, $sx*$x + $ox, $sy*$y + $oy);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$color = sprintf("%02x%02x%02x", $r, $g, $b);
printf("%d,%d,%d,%02x,%02x,%02x,%s\n", $r, $g, $b, $r, $g, $b, $color);
}
}
0 0 0 00 00 00 000000
0 2 170 00 02 aa 0002aa
20 170 0 14 aa 00 14aa00
0 170 170 00 aa aa 00aaaa
170 0 3 aa 00 03 aa0003
170 0 170 aa 00 aa aa00aa
170 85 0 aa 55 00 aa5500
170 170 170 aa aa aa aaaaaa
85 85 85 55 55 55 555555
85 85 255 55 55 ff 5555ff
85 255 85 55 ff 55 55ff55
85 255 255 55 ff ff 55ffff
255 85 85 ff 55 55 ff5555
253 85 255 fd 55 ff fd55ff
255 255 85 ff ff 55 ffff55
255 255 255 ff ff ff ffffff
0 0 0 00 00 00 000000
16 16 16 10 10 10 101010
32 32 32 20 20 20 202020
53 53 53 35 35 35 353535
69 69 69 45 45 45 454545
85 85 85 55 55 55 555555
101 101 101 65 65 65 656565
117 117 117 75 75 75 757575
138 138 138 8a 8a 8a 8a8a8a
154 154 154 9a 9a 9a 9a9a9a
170 170 170 aa aa aa aaaaaa
186 186 186 ba ba ba bababa
202 202 202 ca ca ca cacaca
223 223 223 df df df dfdfdf
239 239 239 ef ef ef efefef
255 255 255 ff ff ff ffffff
0 4 255 00 04 ff 0004ff
65 4 255 41 04 ff 4104ff
130 3 255 82 03 ff 8203ff
190 2 255 be 02 ff be02ff
253 0 255 fd 00 ff fd00ff
254 0 190 fe 00 be fe00be
255 0 130 ff 00 82 ff0082
255 0 65 ff 00 41 ff0041
255 0 8 ff 00 08 ff0008
255 65 5 ff 41 05 ff4105
255 130 0 ff 82 00 ff8200
255 190 0 ff be 00 ffbe00
255 255 0 ff ff 00 ffff00
190 255 0 be ff 00 beff00
130 255 0 82 ff 00 82ff00
65 255 1 41 ff 01 41ff01
36 255 0 24 ff 00 24ff00
34 255 66 22 ff 42 22ff42
29 255 130 1d ff 82 1dff82
18 255 190 12 ff be 12ffbe
0 255 255 00 ff ff 00ffff
0 190 255 00 be ff 00beff
1 130 255 01 82 ff 0182ff
0 65 255 00 41 ff 0041ff
130 130 255 82 82 ff 8282ff
158 130 255 9e 82 ff 9e82ff
190 130 255 be 82 ff be82ff
223 130 255 df 82 ff df82ff
253 130 255 fd 82 ff fd82ff
254 130 223 fe 82 df fe82df
255 130 190 ff 82 be ff82be
255 130 158 ff 82 9e ff829e
255 130 130 ff 82 82 ff8282
255 158 130 ff 9e 82 ff9e82
255 190 130 ff be 82 ffbe82
255 223 130 ff df 82 ffdf82
255 255 130 ff ff 82 ffff82
223 255 130 df ff 82 dfff82
190 255 130 be ff 82 beff82
158 255 130 9e ff 82 9eff82
130 255 130 82 ff 82 82ff82
130 255 158 82 ff 9e 82ff9e
130 255 190 82 ff be 82ffbe
130 255 223 82 ff df 82ffdf
130 255 255 82 ff ff 82ffff
130 223 255 82 df ff 82dfff
130 190 255 82 be ff 82beff
130 158 255 82 9e ff 829eff
186 186 255 ba ba ff babaff
202 186 255 ca ba ff cabaff
223 186 255 df ba ff dfbaff
239 186 255 ef ba ff efbaff
254 186 255 fe ba ff febaff
254 186 239 fe ba ef febaef
255 186 223 ff ba df ffbadf
255 186 202 ff ba ca ffbaca
255 186 186 ff ba ba ffbaba
255 202 186 ff ca ba ffcaba
255 223 186 ff df ba ffdfba
255 239 186 ff ef ba ffefba
255 255 186 ff ff ba ffffba
239 255 186 ef ff ba efffba
223 255 186 df ff ba dfffba
202 255 187 ca ff bb caffbb
186 255 186 ba ff ba baffba
186 255 202 ba ff ca baffca
186 255 223 ba ff df baffdf
186 255 239 ba ff ef baffef
186 255 255 ba ff ff baffff
186 239 255 ba ef ff baefff
186 223 255 ba df ff badfff
186 202 255 ba ca ff bacaff
1 1 113 01 01 71 010171
28 1 113 1c 01 71 1c0171
57 1 113 39 01 71 390171
85 0 113 55 00 71 550071
113 0 113 71 00 71 710071
113 0 85 71 00 55 710055
113 0 57 71 00 39 710039
113 0 28 71 00 1c 71001c
113 0 1 71 00 01 710001
113 28 1 71 1c 01 711c01
113 57 0 71 39 00 713900
113 85 0 71 55 00 715500
113 113 0 71 71 00 717100
85 113 0 55 71 00 557100
57 113 0 39 71 00 397100
28 113 0 1c 71 00 1c7100
9 113 0 09 71 00 097100
9 113 28 09 71 1c 09711c
6 113 57 06 71 39 067139
3 113 85 03 71 55 037155
0 113 113 00 71 71 007171
0 85 113 00 55 71 005571
0 57 113 00 39 71 003971
0 28 113 00 1c 71 001c71
57 57 113 39 39 71 393971
69 57 113 45 39 71 453971
85 57 113 55 39 71 553971
97 57 113 61 39 71 613971
113 57 113 71 39 71 713971
113 57 97 71 39 61 713961
113 57 85 71 39 55 713955
113 57 69 71 39 45 713945
113 57 57 71 39 39 713939
113 69 57 71 45 39 714539
113 85 57 71 55 39 715539
113 97 57 71 61 39 716139
113 113 57 71 71 39 717139
97 113 57 61 71 39 617139
85 113 57 55 71 39 557139
69 113 58 45 71 3a 45713a
57 113 57 39 71 39 397139
57 113 69 39 71 45 397145
57 113 85 39 71 55 397155
57 113 97 39 71 61 397161
57 113 113 39 71 71 397171
57 97 113 39 61 71 396171
57 85 113 39 55 71 395571
57 69 114 39 45 72 394572
81 81 113 51 51 71 515171
89 81 113 59 51 71 595171
97 81 113 61 51 71 615171
105 81 113 69 51 71 695171
113 81 113 71 51 71 715171
113 81 105 71 51 69 715169
113 81 97 71 51 61 715161
113 81 89 71 51 59 715159
113 81 81 71 51 51 715151
113 89 81 71 59 51 715951
113 97 81 71 61 51 716151
113 105 81 71 69 51 716951
113 113 81 71 71 51 717151
105 113 81 69 71 51 697151
97 113 81 61 71 51 617151
89 113 81 59 71 51 597151
81 113 81 51 71 51 517151
81 113 90 51 71 5a 51715a
81 113 97 51 71 61 517161
81 113 105 51 71 69 517169
81 113 113 51 71 71 517171
81 105 113 51 69 71 516971
81 97 113 51 61 71 516171
81 89 113 51 59 71 515971
0 0 66 00 00 42 000042
17 0 65 11 00 41 110041
32 0 65 20 00 41 200041
49 0 65 31 00 41 310041
65 0 65 41 00 41 410041
65 0 50 41 00 32 410032
65 0 32 41 00 20 410020
65 0 16 41 00 10 410010
65 0 0 41 00 00 410000
65 16 0 41 10 00 411000
65 32 0 41 20 00 412000
65 49 0 41 31 00 413100
65 65 0 41 41 00 414100
49 65 0 31 41 00 314100
32 65 0 20 41 00 204100
16 65 0 10 41 00 104100
3 65 0 03 41 00 034100
3 65 16 03 41 10 034110
2 65 32 02 41 20 024120
1 65 49 01 41 31 014131
0 65 65 00 41 41 004141
0 49 65 00 31 41 003141
0 32 65 00 20 41 002041
0 16 65 00 10 41 001041
32 32 65 20 20 41 202041
40 32 65 28 20 41 282041
49 32 65 31 20 41 312041
57 32 65 39 20 41 392041
65 32 65 41 20 41 412041
65 32 57 41 20 39 412039
65 32 49 41 20 31 412031
65 32 40 41 20 28 412028
65 32 32 41 20 20 412020
65 40 32 41 28 20 412820
65 49 32 41 31 20 413120
65 57 33 41 39 21 413921
65 65 32 41 41 20 414120
57 65 32 39 41 20 394120
49 65 32 31 41 20 314120
40 65 32 28 41 20 284120
32 65 32 20 41 20 204120
32 65 40 20 41 28 204128
32 65 49 20 41 31 204131
32 65 57 20 41 39 204139
32 65 65 20 41 41 204141
32 57 65 20 39 41 203941
32 49 65 20 31 41 203141
32 40 65 20 28 41 202841
45 45 65 2d 2d 41 2d2d41
49 45 65 31 2d 41 312d41
53 45 65 35 2d 41 352d41
61 45 65 3d 2d 41 3d2d41
65 45 65 41 2d 41 412d41
65 45 61 41 2d 3d 412d3d
65 45 53 41 2d 35 412d35
65 45 49 41 2d 31 412d31
65 45 45 41 2d 2d 412d2d
65 49 45 41 31 2d 41312d
65 53 45 41 35 2d 41352d
65 61 45 41 3d 2d 413d2d
65 65 45 41 41 2d 41412d
61 65 45 3d 41 2d 3d412d
53 65 45 35 41 2d 35412d
49 65 45 31 41 2d 31412d
45 65 45 2d 41 2d 2d412d
45 65 49 2d 41 31 2d4131
45 65 53 2d 41 35 2d4135
45 65 61 2d 41 3d 2d413d
45 65 65 2d 41 41 2d4141
45 61 65 2d 3d 41 2d3d41
45 53 65 2d 35 41 2d3541
45 49 65 2d 31 41 2d3141
0 0 0 00 00 00 000000
0 0 0 00 00 00 000000
0 0 0 00 00 00 000000
0 0 0 00 00 00 000000
0 0 0 00 00 00 000000
0 0 0 00 00 00 000000
0 0 0 00 00 00 000000
0 0 0 00 00 00 000000
@cesarmiquel
Copy link
Author

vga-palette

@cesarmiquel
Copy link
Author

I cheated Gist into letting me upload the image. That is the file vga-palette.png

@mcejp
Copy link

mcejp commented Jul 29, 2023

This is neat, and useful. Thanks.

@mcejp
Copy link

mcejp commented Jul 29, 2023

C version here (with B in LSB, R in MSB):

#pragma once

#include <stdint.h>

enum { VGA_PALETTE_LENGTH = 256 };

static const uint32_t vga_palette[VGA_PALETTE_LENGTH] = {
    0x000000, 0x0002aa, 0x14aa00, 0x00aaaa, 0xaa0003, 0xaa00aa, 0xaa5500, 0xaaaaaa,
    0x555555, 0x5555ff, 0x55ff55, 0x55ffff, 0xff5555, 0xfd55ff, 0xffff55, 0xffffff,
    0x000000, 0x101010, 0x202020, 0x353535, 0x454545, 0x555555, 0x656565, 0x757575,
    0x8a8a8a, 0x9a9a9a, 0xaaaaaa, 0xbababa, 0xcacaca, 0xdfdfdf, 0xefefef, 0xffffff,
    0x0004ff, 0x4104ff, 0x8203ff, 0xbe02ff, 0xfd00ff, 0xfe00be, 0xff0082, 0xff0041,
    0xff0008, 0xff4105, 0xff8200, 0xffbe00, 0xffff00, 0xbeff00, 0x82ff00, 0x41ff01,
    0x24ff00, 0x22ff42, 0x1dff82, 0x12ffbe, 0x00ffff, 0x00beff, 0x0182ff, 0x0041ff,
    0x8282ff, 0x9e82ff, 0xbe82ff, 0xdf82ff, 0xfd82ff, 0xfe82df, 0xff82be, 0xff829e,
    0xff8282, 0xff9e82, 0xffbe82, 0xffdf82, 0xffff82, 0xdfff82, 0xbeff82, 0x9eff82,
    0x82ff82, 0x82ff9e, 0x82ffbe, 0x82ffdf, 0x82ffff, 0x82dfff, 0x82beff, 0x829eff,
    0xbabaff, 0xcabaff, 0xdfbaff, 0xefbaff, 0xfebaff, 0xfebaef, 0xffbadf, 0xffbaca,
    0xffbaba, 0xffcaba, 0xffdfba, 0xffefba, 0xffffba, 0xefffba, 0xdfffba, 0xcaffbb,
    0xbaffba, 0xbaffca, 0xbaffdf, 0xbaffef, 0xbaffff, 0xbaefff, 0xbadfff, 0xbacaff,
    0x010171, 0x1c0171, 0x390171, 0x550071, 0x710071, 0x710055, 0x710039, 0x71001c,
    0x710001, 0x711c01, 0x713900, 0x715500, 0x717100, 0x557100, 0x397100, 0x1c7100,
    0x097100, 0x09711c, 0x067139, 0x037155, 0x007171, 0x005571, 0x003971, 0x001c71,
    0x393971, 0x453971, 0x553971, 0x613971, 0x713971, 0x713961, 0x713955, 0x713945,
    0x713939, 0x714539, 0x715539, 0x716139, 0x717139, 0x617139, 0x557139, 0x45713a,
    0x397139, 0x397145, 0x397155, 0x397161, 0x397171, 0x396171, 0x395571, 0x394572,
    0x515171, 0x595171, 0x615171, 0x695171, 0x715171, 0x715169, 0x715161, 0x715159,
    0x715151, 0x715951, 0x716151, 0x716951, 0x717151, 0x697151, 0x617151, 0x597151,
    0x517151, 0x51715a, 0x517161, 0x517169, 0x517171, 0x516971, 0x516171, 0x515971,
    0x000042, 0x110041, 0x200041, 0x310041, 0x410041, 0x410032, 0x410020, 0x410010,
    0x410000, 0x411000, 0x412000, 0x413100, 0x414100, 0x314100, 0x204100, 0x104100,
    0x034100, 0x034110, 0x024120, 0x014131, 0x004141, 0x003141, 0x002041, 0x001041,
    0x202041, 0x282041, 0x312041, 0x392041, 0x412041, 0x412039, 0x412031, 0x412028,
    0x412020, 0x412820, 0x413120, 0x413921, 0x414120, 0x394120, 0x314120, 0x284120,
    0x204120, 0x204128, 0x204131, 0x204139, 0x204141, 0x203941, 0x203141, 0x202841,
    0x2d2d41, 0x312d41, 0x352d41, 0x3d2d41, 0x412d41, 0x412d3d, 0x412d35, 0x412d31,
    0x412d2d, 0x41312d, 0x41352d, 0x413d2d, 0x41412d, 0x3d412d, 0x35412d, 0x31412d,
    0x2d412d, 0x2d4131, 0x2d4135, 0x2d413d, 0x2d4141, 0x2d3d41, 0x2d3541, 0x2d3141,
    0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
};

@cesarmiquel
Copy link
Author

Great! Thanks for sharing the C version. Glad it was useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment