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

问题描述 投票:0回答:1

我有一个汇编项目(x86)来创建游戏。 该游戏测试您观察颜色差异的能力。 我画了一个矩阵(4*4)并用任意颜色填充它。 现在我想用相同的颜色但更亮的填充[矩阵]的一个单元格。 我需要 3 级亮度。

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

assembly x86
1个回答
2
投票

https://web.archive.org/web/20170111220757/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) 将其更改为橙色。

© www.soinside.com 2019 - 2024. All rights reserved.