0

我刚开始在复古游戏区开发 c64。

我想知道为什么在 c65 上一个字符是 8 个字节,但是像现代 Web 开发这样的其他任何东西,比如在 php 中,一个字符只有 1 个字节

这与 c64 显示器的工作方式有关吗?它需要所有数据才能在屏幕上生成角色吗?

4

2 回答 2

4

你不是在做一个苹果对苹果的比较。

C64 上的一个字符占用一个字节,就像现代系统一样(这里简化一下;我不确定 unicode 字符的大小)。但出于显示目的,有许多选项:

  • 常规文本模式屏幕为 25 行 x 40 个字符,或 1,000 个字节。当您将一个字节写入某个位置时(例如,[5,2],即第 5 行第 2 列),系统将显示该单个字符。
  • 在位图设置中,您可以使用高分辨率(200 行 x 320 列)或多色分辨率(200 行 x 160 列);这两者的区别在于,在高分辨率中,每 8 列只能有两种颜色(即开或关状态),但在多色中,您可以有四种颜色(通过允许每个“列”由 2位,使用 2 位可以有四种状态)。在这两种模式下,您都需要大约 8k 的内存(准确地说是 8000 字节)。使用位图图形时,您会将每个字符“绘制”到屏幕上,这将需要每个字符 8 个字节(因为 C64 上的普通字体是 8x8 像素,相当于 8 个字节)。

这些不是精灵。在普通情况下,您可以拥有 8 个精灵并控制它们的位置,覆盖在位图(或基于文本)显示的顶部。Sprite 分辨率(即 2 色或多色)遵循与位图图形的高分辨率或多色分辨率相同的逻辑。

于 2020-12-25T02:58:47.107 回答
0

您必须考虑“字符图形数据”与“文本数据”

Arial true type 字体为 756kb,包含 3,988 个字符的数据:每个字符大约 194 个字节

PC 标准 ASCII 文本文件 = 每个字符 1 个字节 = 128 个总字符中的任意 1 个(第 8 位未使用)。文本文件本身不存储实际字符,只是对它们的引用。

c64 使用称为 PETSCII 的字符集,该字符集源自 ASCII,具有两种模式:大写和小写以及大写和图形字符。它们每个只有 128 个字符,外加 128 个反转版本。所以每个集合/模式有 255 个字符,所以 PETSCII 文本文件(如果有这样的东西?)每个字符也将是 1 个字节(我猜你可以使用第 8 位来定义反向开/关?不确定! )。字符本身在内存中使用 8 个字节来定义光栅 8x8 图形:比 PC 字体少得多的数据。

于 2021-09-14T11:59:43.390 回答