3

在带有 80 列卡的 Apple 2 上使用 Applesoft Basic 时,有没有办法仅使用 POKE 创建 DHR 图形?

我找到了许多使用第三方扩展(例如Beagle Graphics )的解决方案,但我真的很想自己实现它。我搜索了我的 Nibble 杂志收藏和基本书籍,但找不到任何详细信息。

维基百科:

双高分辨率 双高分辨率屏幕的组成非常复杂。除了 64:1 交错之外,各个行中的像素以不同寻常的方式存储:每个像素是其通常宽度的一半,并且每个像素字节在 64KB 内存的第一组和第二组之间交替。在三个连续的像素是白色的情况下,现在需要六个在双高分辨率下。实际上,用于在 Lo-Res 图形块中生成颜色的所有像素图案都可以在 Double Hi-Res 图形中再现。其 RAM 磁盘的 ProDOS 实现通过设计保存到 /RAM 的第一个 8 KB 文件将其数据存储在 0x012000 到 0x013fff 来更容易地访问双高分辨率屏幕。此外,第二页是可能的,第二个文件(或更大的第一个文件)会将其数据存储在 0x014000 到 0x015fff。但是,通过 ProDOS 文件系统的访问速度很慢,并且不适合双高分辨率中的翻页动画,超出了内存要求。

维基百科说 DHR 使用 64:1 隔行扫描,但没有提及实现。另外 Wikipedia 说您可以使用 /RAM 磁盘进行访问,但再次没有提及实现。

我正在开发一个小程序,它绘制一个简单版本的 Connet's Circle Pattern。速度并不像分辨率那么重要。

4

1 回答 1

3

comp.sys.apple2.programmer 的成员在以下位置回答了我的问题: http ://groups.google.com/group/comp.sys.apple2.programmer/browse_thread/thread/b0e8ec8911b8723b/78cd953bca521d8f

基本上你从80列卡映射到辅助内存。然后在 HR 屏幕上绘制并戳到 DHR 内存位置,以查找您尝试亮/暗的像素。

最好的完整示例例程是:

  5 HGR : POKE 49237,0 : CALL 62450 : REM clear hires then hires.aux 
  6 POKE 49246,0 : PG = 49236 
  7 SVN = 7 : HCOLOR= SVN : P5 = .5 
  9 GOTO 100 
 10 X2 = X * 4 : CL = CO : TMP = 8 : FOR I = 3 TO 0 STEP -1 : BIT = CL >= TMP: 
    CL = CL - BIT * TMP : TMP = TMP * P5 
 20 X1 = X + I: HCOLOR= SVN * BIT 
 30 XX = INT (X1 / SVN): H = XX * P5: POKE PG + (H= INT (H)),0 
 40 XX = INT (( INT (H) + (( X1 / SVN) - XX)) * SVN + P5) 
 50 HPLOT XX,Y: POKE PG, 0: NEXT : RETURN 
100 FOR CO = 0 TO 15 : C8 = CO * 8 
110 FOR X = C8 TO C8 + SVN: FOR Y = 0 TO 10 : GOSUB 10 : NEXT : NEXT 
120 NEXT 
130 REM color is 0 to 15 
140 REM X coordinate is from 0 to 139 
150 REM Y coordinate is from 0 to 191 
于 2010-09-24T19:41:22.927 回答