uxn/examples/gui.images.usm

376 lines
8.3 KiB
Plaintext

( drag )
:dev/r fff8 ( std read port )
:dev/w fff9 ( std write port )
&Point { x 1 y 1 }
&Point2d { x 2 y 2 }
&Picture2d { x 2 y 2 width 1 height 1 color 1 addr 2 }
;mouse Point2d
;pict Picture2d ;pictpt Point
( drawing ) ;color 1 ;x1 2 ;x2 2 ;y1 2 ;y2 2 ;i 2
;state 1
|0100 @RESET
#02 =dev/w ( set dev/write to sprite )
#0010 #0020 #04 #04 #01 ,graphic1 ,draw-picture JSR
#0020 #0030 #10 #10 #04 ,graphic2 ,draw-picture JSR
#0088 #0020 #10 #10 #08 ,graphic2 ,draw-picture JSR
#05 =dev/r ( set dev/read mouse )
BRK
|c000 @FRAME
( clear last cursor )
#10 ,clear_icn ~mouse.x ~mouse.y ,draw-sprite JSR
( record mouse positions )
#00 IOR2 =mouse.x #02 IOR2 =mouse.y
( record mouse state )
#04 IOR #11 ADD =state
( draw mouse )
~state ,cursor_icn ~mouse.x ~mouse.y ,draw-sprite JSR
BRK
@draw-picture ( x y width height addr -> picture )
=pict.addr =pict.color =pict.height =pict.width =pict.y =pict.x
#00 =pictpt.y
@draw-picture-row
#00 =pictpt.x
@draw-picture-col
( draw )
~pict.color
~pict.addr
#0008 #00 ~pictpt.x MUL2 ADD2 ( x )
#0008 #00 ~pictpt.y ~pict.width MUL MUL2 ADD2 ( y * width )
~pict.x #0008 #00 ~pictpt.x MUL2 ADD2
~pict.y #0008 #00 ~pictpt.y MUL2 ADD2
,draw-sprite JSR
( draw - end )
( incr x ) ~pictpt.x #01 ADD =pictpt.x
~pictpt.x ~pict.width LTH ,draw-picture-col ROT JMP? POP2
( incr y ) ~pictpt.y #01 ADD =pictpt.y
~pictpt.y ~pict.height LTH ,draw-picture-row ROT JMP? POP2
#01 =dev/w ( set dev/write to sprite )
#03 =color
~pict.x #0001 SUB2 ~pict.y #0001 SUB2 ~pict.x #0008 #00 ~pict.width MUL2 ADD2 ~pict.y #0008 #00 ~pict.height MUL2 ADD2 ,line-rect JSR
#02 =dev/w ( set dev/write to sprite )
RTS
@line-rect ( x1 y1 x2 y2 )
=y2 =x2 ( stash x1 y1 ) DUP2 WSR2 =y1 DUP2 WSR2 =x1
@line-rect-hor
( draw ) ~x1 ~y1 IOW2 IOW2 ~color IOW
( draw ) ~x1 ~y2 IOW2 IOW2 ~color IOW
( incr ) ~x1 #0001 ADD2 DUP2 =x1
~x2 #0001 ADD2 LTH2 ,line-rect-hor ROT JMP? POP2
( restore x1 y1 ) RSW2 =x1 RSW2 =y1
@line-rect-ver
( incr ) ~y1 #0001 ADD2 DUP2 =y1
( draw ) ~x1 ~y1 IOW2 IOW2 ~color IOW
( draw ) ~x2 ~y1 IOW2 IOW2 ~color IOW
~y2 #0001 SUB2 LTH2 ,line-rect-ver ROT JMP? POP2
RTS
@draw-sprite
IOW2 ( y byte )
IOW2 ( x byte )
IOW2 ( sprite address )
IOW ( layer-color )
RTS
@clear_icn [ 0000 0000 0000 0000 ]
@cursor_icn [ 80c0 e0f0 f8e0 1000 ]
@graphic1 [
ff80 8080 8080 8088
ffff fffc f8f9 f1f4
ffff 0010 c721 2120
ffff 3f0f 0717 c343
8888 8080 8080 8080
f0f1 f2f5 f2f1 f0f4
1208 804c 9212 4c00
7303 0343 1b1b fbfb
8080 8f83 8383 8393
f0f3 f1f0 e4c0 80ff
00c7 c7c6 4606 00ff
c3d3 c307 870f 3fff
8f83 8383 8383 83ff
fff7 fdff c0e2 f1ff
7fef bfff 07af 5fff
ffff ffff ffff ffff
]
@graphic2 [
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff fffe
ffff ffff fef0 8000
ffff ffd0 0000 0000
ffff ff02 0000 0000
ffff ffff 1f03 0000
ffff ffff ffff ff1f
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff fef8 f8e0
f8e0 c000 0003 0c30
0000 0738 c000 0000
17d0 0404 0404 0404
fd00 0000 0000 0000
40be 0100 0000 0000
0300 e01c 0300 0000
ff2f 0300 802d 0000
ffff ff3f 0f07 a101
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff fefc f0e0 c081
a081 060c 3060 8000
c080 0000 0000 0000
0000 0000 0000 0000
0604 0406 0206 0202
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0100 0101
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
fffe ffd0 e0e0 e0e0
16f8 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0202 0202 0300 02ba
0000 0000 0000 12c8
0000 0000 0000 4893
0000 0000 0000 00f4
0000 0000 0000 0000
0103 0303 0703 0707
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
e0e0 e0f0 f0f8 f8fc
0000 0000 0000 0000
0000 0000 0001 020a
0000 0314 7040 8000
0b74 8000 0000 0000
4001 0105 0703 0200
0000 80c0 c080 4000
0000 0000 0000 0000
0700 0000 0000 0000
8028 0000 0000 0000
0f0f 0f1f 1f1f 1f1f
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
fcfe feff ffff ffff
0000 0003 82cc c0e0
1060 8000 0000 0000
0000 0000 0000 0b34
0000 0000 17f8 0000
0000 005f ff3f fe68
0000 aff8 e0fc a100
0000 5a00 0092 4000
0000 b217 0080 9000
0000 0040 5801 0101
0f1f 0f1f 0f1f 4f2f
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
e0f0 f0f0 f0f1 f1ed
0105 0a30 4000 0000
c000 0000 0000 0000
0000 0000 0000 0000
071f 1f3f 1fbf 3fbf
8080 a0d0 84e4 f0f0
0000 0000 0000 0000
0000 0000 0000 0000
0000 0302 040a 062b
af0f 0f1f 0f0f 1f9f
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
e5e5 eaf0 f2f8 eeff
8000 0000 0200 001e
0000 0000 4500 00aa
0000 0055 0200 01ff
3fbf 28f7 0f14 57ff
f059 80d0 c02f fde5
2840 0008 f795 474f
0100 16eb 5fff ffff
54df 1f87 ffff ffff
1f3f 291e bf7b fdfb
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
fbfd fef5 fdff ffff
8789 c64f af87 6fe7
f76d 8e56 deed edef
55ff 00fe 896d ffff
5fe1 c9d7 7b77 bb7b
5a5f ffff ff7f 7fff
dffc f8f2 c7ea fd9f
0100 8496 619f ffff
6f1f 7f7f ffff ffff
3ffb 7fdf 776f 7777
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
fcff ffff ffff ffff
d7b7 7ff7 bbd7 f3fb
edee edfe e2eb d5d6
edff ffe9 22aa dd56
bf7b bb35 75f2 a7ff
ffff f7ff 5fd1 2efa
efff ffff ff7f 95ee
ffff ffff ffff 779a
feff feff fefe ffa1
df7f dfbf bfff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
f9ff f5fa fcfc fcff
af5f 7fbf 7fff 7fff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
52ff ffff ffff ffff
aef5 ffff ffff ffff
ddeb fffd fdff fbf9
ffff ffff ffff ff7f
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff ffff ffde fef0
fbf8 f7ed d1a3 21c1
bfff 3f9f 0f0f 0787
ffff ffff ffff ffff
ffff ffff ffff ffff
ffff afd2 fdff ea80
ffbf 5fff ffff 1f07
ffff ffff ffff ffff
f9f0 f0e0 e8c8 cc94
5fe3 1c0f 0100 0000
ffff bf85 fa3f 0f03
ffff ffff 7f83 fcff
ffff ffff ffff 5fa5
ffff ffff ffff fffb
ffff ffff ffff fcf3
fffe faeb ac58 f0c0
d9a3 a206 0c18 3830
0402 0404 0404 0404
8381 8040 4000 4000
ffff ff6f 3f1f 0f07
fefe fefe fffe ffdf
8037 00e4 390f 8087
03a3 13f7 47a7 cf1f
fef7 fffe fefc f8f8
94a4 2420 4440 4480
0000 0000 0000 0000
0101 0303 060c 0c08
9f86 0001 0303 060c
fabf 7dc0 8000 0000
2fd3 fc07 0100 0000
cfbf 7ff1 c080 0000
8080 8000 8080 8080
6020 6060 2060 6020
0404 040c 0404 0404
1000 0008 0002 0000
0101 0000 0000 0080
ffff 7f1f 0f03 0000
e0fd ffff fffe fe1e
3fff ff57 4faf a6f4
f0e0 e182 8200 0000
8080 0000 0000 0000
0000 0000 0000 0000
1810 3020 60c0 80c0
0c18 1030 2040 40c0
0000 0000 0000 0000
0001 0307 0f0f 1f3f
0000 0000 0000 0000
4040 4040 2020 2030
6030 6030 2030 2030
0804 0408 0404 0404
0000 0000 0000 0000
0028 0802 0100 0000
0000 0000 8061 171f
0000 000a 7fff fffe
b0b8 995b 8fa9 b4bc
0001 7ffe fea0 0000
0040 e080 0000 0000
0101 0301 0206 0404
8000 0100 0101 0301
8080 8080 0000 0000
0000 0001 0103 0707
7e7c f8f0 e0c0 c080
0000 0000 80c0 6070
1010 1008 0808 0808
2030 1020 3000 3010
0404 0406 0202 0403
0000 0001 0b3f 7fff
0003 1f7f ffff ffff
7fff ffff ffff ffff
faf9 f7fd fcff ffff
b6da dc9a 5d4d ee6e
0000 0000 00fa ffff
0000 0000 0080 fcf8
0404 0000 0000 0000
0302 0301 0202 0202
0000 0000 0000 0000
0f1f 1e3c 7c78 f0e0
0000 0000 0000 0001
]
|d000 @ERROR BRK
|FFF0 [ f0ac f0bb f053 ] ( palette )
|FFFA .RESET .FRAME .ERROR ( vectors )