mirror of
https://github.com/irmen/prog8.git
synced 2024-11-01 00:10:48 +00:00
64 lines
1.3 KiB
Lua
64 lines
1.3 KiB
Lua
%import textio
|
|
%import palette
|
|
%import math
|
|
|
|
; horizontal raster bars
|
|
; also see: kefrenbars.p8
|
|
|
|
|
|
main {
|
|
|
|
sub start() {
|
|
void cx16.screen_mode(3, false)
|
|
txt.color2(14,0) ; make sure correct screen colors are (re)set
|
|
txt.clear_screen()
|
|
|
|
txt.plot(14,14)
|
|
txt.print("raster bars!")
|
|
|
|
cx16.enable_irq_handlers(true)
|
|
cx16.set_line_irq_handler(0, &irq.irqhandler)
|
|
|
|
repeat {
|
|
; don't exit
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
irq {
|
|
uword[32] colors = [
|
|
$011, $112, $213, $214,
|
|
$315, $316, $417, $418,
|
|
$519, $51a, $62b, $62c,
|
|
$73d, $73e, $84f, $94f,
|
|
$93e, $83d, $82c, $72b,
|
|
$71a, $619, $618, $517,
|
|
$516, $415, $414, $313,
|
|
$312, $211, $100, $000
|
|
]
|
|
|
|
uword next_irq_line = 0
|
|
ubyte color_idx = 0
|
|
ubyte yanim = 0
|
|
const ubyte barheight = 4
|
|
|
|
sub irqhandler() -> bool {
|
|
uword c = colors[color_idx]
|
|
color_idx++
|
|
color_idx &= 31
|
|
|
|
if color_idx==0 {
|
|
yanim++
|
|
next_irq_line = $0030 + math.sin8u(yanim)
|
|
} else {
|
|
next_irq_line += barheight
|
|
}
|
|
|
|
palette.set_color(0, c)
|
|
|
|
sys.set_rasterline(next_irq_line)
|
|
return false
|
|
}
|
|
}
|