Changes

Programming:Next / previous line calculation

891 bytes added, 11:11, 16 January 2016
/* Fastest way to print a character in Mode 2 */
call SCR_PREV_LINE
 
 
ACTUAL #BC29 ROUTINE FOLLOWS:
 
ld a,h:sub #08:ld h,a:and #38:cp #38:ret nz
ld a,h:add #40:ld h,a:ld a,l:sub reg1*2:ld l,a:ret nc ; reg1= CRTC reg.1 value
ld a,h:dec h:and #07:ret nz
ld a,h:add #08:ld h,a:ret
 
</pre>
 
 
 
= Fastest way to print a character in Mode 2 =
 
 
'''Input:''' HL=Address of sprite/char.data DE=screen address (works for every first line of screen !! For example: &C000, &C050, &C0A0 etc..)
 
'''Destroyed:''' AF, C
 
'''Unchanged:''' DE returns to its input value (through C register)
 
''''If HL is not page aligned, INC HL must be used instead of INC L (1 NOP SLOWER!)
 
 
<pre>
ld c,d
ld a,(hl):ld(de),a:inc l:set 3,d
ld a,(hl):ld(de),a:inc l:ld d,c:set 4,d
ld a,(hl):ld(de),a:inc l:set 3,d
ld a,(hl):ld(de),a:inc l:ld d,c:set 5,d
ld a,(hl):ld(de),a:inc l:set 3,d
ld a,(hl):ld(de),a:inc l:set 4,d:res 3,d
ld a,(hl):ld(de),a:inc l:set 3,d
ld a,(hl):ld(de),a
ld d,c
 
</pre>
 
 
[[Category:Programming]]
2,912
edits