如何使用端口0x03C8来操作Assembly VGA Pallete来显示颜色的差异?

时间:2016-06-05 09:53:13

标签: assembly x86

我在程序集(x86)中有一个项目来创建游戏。游戏测试你看到颜色差异的能力。我画了一个矩阵(4 * 4)并用任意颜色填充它。现在我想填充[矩阵]的一个单元格,但颜色相同但更亮。我需要3级亮度。

我知道我需要使用端口03c8,但如何使用此端口?组合颜色保存在哪里?

1 个答案:

答案 0 :(得分:1)

"如何使用端口03c8 VGA调色板指南" - >谷歌 - >

http://www.delorie.com/djgpp/doc/ug/graphics/vga.html

搜索"调色板" - >

   void set_color(int color, int red, int green, int blue)
   {
      outportb(0x3C8, color);
      outportb(0x3C9, red);
      outportb(0x3C9, green);
      outportb(0x3C9, blue);
   }
  

红色,绿色和蓝色的颜色值范围从0到63,因此适用于   调用set_color(10,0,0,0)的示例将颜色编号10更改为   黑色,而set_color(10,63,63,63)会将其更改为白色,并且   set_color(10,63,40,0)将其更改为橙色。