Full picture
9

调色板内存

9.1 概述

调色板内存是一个 512 字节的读写区域,以 RGB565 格式(红色 5 位,绿色 6 位,蓝色 5 位)存储 256 种颜色。每个颜色条目为 16 位(2 字节),以小端序格式存储,即低字节在前,高字节在后。

由于数据总线为 8 位宽,Zeal Video Board 在写入低字节时进行锁存,仅在高字节写入时才完成 16 位更新。因此,必须始终先写入低字节,再写入高字节。以相反顺序写入字节将导致颜色数据错误。

在启动时(但不是复位时),调色板会预加载标准 VGA Mode 13h 256 色调色板,为索引颜色图形提供熟悉的基准:

内存映射
默认调色板

9.2 写入调色板(Z80 示例)

假设我们有一个基于 Z80 的主机系统,视频 RAM 映射到地址 0x8000。调色板位于该空间内的偏移量 0xe00 处(即地址 0x8e00)。以下是如何向调色板内存写入新颜色的方法:

    ; 将 HL 设置为调色板基址(颜色 0 = 0x8e00)
    ld hl, 0x8e00

    ; 将颜色 0xf4e1 写入调色板条目 0(RGB565,小端序)
    ld (hl), 0xe1   ; 先写入低字节
    inc hl
    ld (hl), 0xf4   ; 然后写入高字节

或者,由于 Z80 是小端序,您也可以直接写入 16 位值:

    ld hl, 0xf4e1
    ld (0x8e00), hl ; 存储为 0xE1 (LSB),然后是 0xF4 (MSB)

重要提示:再次强调,Zeal Video Board 先锁存低字节,因此即使您直接写入字,也要确保低字节先于高字节到达总线。在 Z80 上使用 ld (word), hl 将自动实现这一点。

9.3 交互式颜色选择器

使用下面的选择器选择一种颜色。RGB565 值将自动计算并显示。此格式用于 Zeal video board 的调色板。

0x0000

EN | 中文Beta