wooo
you seems to want make all in one step!
have you tested each routine, step by step, before put the whole routs in interrupt ?
first test if text appear on main screen, to see if modulos or addresses are good.
then make a scroll routine and test it in the main loop with a wait vbl
wait_lmb:
move.l $dff004,d0
and.l #$1ff00,d0
cmpi.l #256<<8,d0
bne.s wait_lmb
bsr get_char_pos
btst #6,mouse
bne.s wait_lmb
and if these 2 routs run fine, you can start the sinus copy. it's more simple to detect bug.
/!\ : in case of animation, you have to use the double buffering for a good result !
start your code with :
movem.l d0-d7/a0-a6,-(sp)
and end the code with:
movem.l (sp)+,d0-d7/a0-a6
moveq #0,d0 ; no error
rts
try to use decimal value for some registers like modulos, bltsize... you can write expressions. more simple to read
about the interrupt, you miss to save and restore intreq/intena registers.
Terminate your interrupt with rte, and not the old address and rts
about scroll : more smooth 8!
sin rout : stay in loop => freeze
|