LC3 汇编内存映射图形

问题描述

我正在尝试在 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 操作系统版本在内存中保留 xC000-xFDFF 用于内存映射图形显示,我很高兴与感兴趣的人分享

解决方法

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

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

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