View Single Post
Old 13 March 2017, 13:07   #1
ross
Defendit numerus
 
ross's Avatar
 
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 54
Posts: 4,488
Understanding the (in)famous copper's lost cycle (PAL only).

Everyone facing advanced copper programming got the 'imprecise' timing on end of lines.

Example:

Code:
 00045548: fedb fffe [0fe 0d8]	;  Wait for vpos >= 0xfe and hpos >= 0xda
                        	;  VP fe, VE 7f; HP da, HE fe; BFD 1
 0004554c: 0180 0fff [0fe 0dc]	;  COLOR00 := 0x0fff
*00045550: 0180 0888 [0fe 0e1]	;  COLOR00 := 0x0888
 00045554: 0180 0000 [0ff 002]	;  COLOR00 := 0x0000

 00045548: fedd fffe [0fe 0da]	;  Wait for vpos >= 0xfe and hpos >= 0xdc
                        	;  VP fe, VE 7f; HP dc, HE fe; BFD 1
*0004554c: 0180 0fff [0fe 0de]	;  COLOR00 := 0x0fff
 00045550: 0180 0888 [0ff 000]	;  COLOR00 := 0x0888
 00045554: 0180 0000 [0ff 004]	;  COLOR00 := 0x0000
You can see a copper slice of 10 lores pixels and not 8 (1 copper cycle delay).
The lost cycle seems to be $E0.
But, why?

It would be logical to mantain $E0 and exclude $E1... (an odd copper cycle?!?!)
So the sequence $DE(y) $DF(n) $E0(y) $E1(n) $E2(-1,n) $00(y) was regular.. with only $E2(-1) as a lost cycle.

Someone enlight me.

Thanks,

Last edited by ross; 13 March 2017 at 17:45. Reason: pixels count corrected (thanks dissident)
ross is offline  
 
Page generated in 0.04375 seconds with 11 queries