Atari 65XE的光栅效果

图片

早在2020年1月,我就开始为参加Forever 2020演示派对做准备。ROBO宣布了compo主题,因此我决定为Atari 65XE编写简单的作品。简介就绪后,我决定添加一个位图效果。遗憾的是,由于《永远》的取消,该简介的一部分已出版。

Atari处理器是MOS 6502-8位寄存器,缺少用于访问硬件的端口。计算机的另一组件是ANTIC-它实现图像-颜色,视频模式,符号。有用于访问ANTIC的硬件单元,其用途在映射中进行了描述。 Atari

我不会列出所有单元格的地址和目的地,我将描述效果本身的想法。应当注意,为方便起见,“映射”中的地址带有助记符-记住它们非常方便。

图片

什么是屏幕?在文本模式下,带有符号和框架的矩形是可见的。

为了方便起见,可以通过将值0写入559来关闭矩形。如您所见,存在光栅效果的空间。

现在,您需要将图形与输出同步到屏幕。有两种方法:

RTCLOK      equ $0012
      lda RTCLOK+2
waits
      cmp RTCLOK+2
       beq waits

这里的RTCLOCK是计算机打开时开始的实时时钟。首先增加14美元,然后增加13美元和12美元。同步的想法很简单:将单元格$ 14的值与当前值进行比较。如果先前的值不匹配,则发生中断。

但实际上,这种方法不合适,因此使用VCOUNT($ D40B)-框架上生成的线的垂直计数器会更方便。等待帧的开始将是:

ws
	lda $D40B ; VCOUNT
	bne ws

这个想法本身就是将颜色值写入COLBK寄存器($ D01A)-框架的颜色。
写入寄存器的值分为两部分:颜色类型和亮度,按类型* 16 +亮度计算。这里这里详细介绍

但是,当为每行设置颜色时,需要进行同步-将任何值写入WSYNC(D40A)将使处理器停止运行,并使其等待下一行开始。显示列表中断中使用相同的方法。

效果本身分为等待帧,生成颜色值并将其写入描述的寄存器中。为了简单起见,我使用零页面地址。您可以使用xasm汇编器进行编译。

图片


	org $4000
	
start

wait_frame
ws
	lda $D40B ; VCOUNT
	bne ws
       LDY #0
       STY 559
zz
	LDA $CD
	CLC
	ADC #5
	STA $CD
	BCC BR1
	INC $CE
BR1
	ADC $CB
	STA $CB
	BCC BR2
	INC $CC
BR2
	LDA $CC
	STA $D40A ; WSYNC
	STA $D01A
	INY
	BNE zz
	BEQ wait_frame
	run start

原来是54个字节。54-6(程序标头)= 48个字节。有时间进行实验,例如玩绿色的亮度

	lda $CC
;*  
	and #$0f
	ORA #$C0
;*  
	sta $D40A ; wsync
	sta $D01A

生成颜色的其他选项我将留给有兴趣的人自己动手。创建,试验和创建。太刺激了!

All Articles