Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .macro delay_short
- .if (\1 <= 13)
- .if (\1 = 0)
- ; nothing
- .endif
- .if (\1 = 2)
- nop
- .endif
- .if (\1 = 3)
- sta <delay_temp
- .endif
- .if (\1 = 4)
- nop
- nop
- .endif
- .if (\1 = 5)
- sta <delay_temp
- nop
- .endif
- .if (\1 = 6)
- nop
- nop
- nop
- .endif
- .if (\1 = 7)
- php
- plp
- .endif
- .if (\1 = 8)
- nop
- nop
- nop
- nop
- .endif
- .if (\1 = 9)
- php
- plp
- nop
- .endif
- .if (\1 = 10)
- sta <delay_temp
- php
- plp
- .endif
- .if (\1 = 11)
- php
- plp
- nop
- nop
- .endif
- .if (\1 = 12)
- sta <delay_temp
- php
- plp
- nop
- .endif
- .if (\1 = 13)
- php
- plp
- nop
- nop
- nop
- .endif
- .else
- .if (\1 & 1)
- sta <delay_temp
- jsr delay_unrolled-((\1-15)/2)
- .else
- jsr delay_unrolled-((\1-12)/2)
- .endif
- .endif
- .endm
- max_short_delay = 41
- .macro eatcycles
- .if (\1 > max_short_delay)
- php
- pha
- delay_nosave (\1 - 14)
- pla
- plp
- .else
- delay_short \1
- .endif
- .endm
- .macro delay_nosave
- ; 255+27 = maximum delay using delay_a_25_clocks
- ; 27 = minimum delay using delay_a_25_clocks
- .if (\1 >= 27)
- lda #LOW(\1 - 27)
- ; lda #<(\1 - 27)
- jsr delay_a_25_clocks
- .endif
- .if (\1 < 27)
- delay_short \1
- .endif
- .endm
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement