LC3 汇编内存映射图形

LC3 Assembly Memory Mapped Graphics

我正在尝试在 LC3 Assembly 中创建具有射击机制的 2D 平台游戏。由于这是完全从头开始的,我还需要创建游戏引擎。在过去的 4 个小时里,我创建了一个精灵库,由于我希望忽略一个可能更有效的方法,这意味着为每个精灵写出 20px20p 区域中每个像素的颜色数据。

.ORIG x87B5
;-------------------------------------------------
;TITLE: R x8000
;-------------------------------------------------
.FILL   x0000
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x7C00
.FILL   x001F
.FILL   x0000
.FILL   x0000
.FILL   x0000
.FILL   x0000
.FILL   x0000
.FILL   x0000
.FILL   x0000
.FILL   x0000

这是属于一个精灵的一行 20 个像素的代码。如果有一种方法可以让我使用某种软件绘制精灵,然后将其转换为与 LC3 兼容的精灵数据数组,例如这个,请指出正确的方向。对于任何好奇的人,我使用的是 LC3 OS 的一个版本,它在内存中保留 xC000-xFDFF 用于内存映射图形显示,我很乐意与任何感兴趣的人分享。

  • 我们可以将简单图像表示为文本,将其存储在文件中,然后编写 C 或 C# 程序来读取文本文件并将数据生成为 .FILL 语句。在这里,盒子的简单黑白图像在文本中可能如下所示:
  *****
  *   *
  *   *
  *****

并且C程序可以读取这些行并输出相应的.FILL语句。

  • 我们可以使用MS Paint,以C或C#程序可以读取的文件格式输出,然后输出.FILL语句。例如,B&W .bmp 文件格式在跳过 headers.
  • 后很容易解码。