uxn/examples/devmouse.usm

138 lines
3.7 KiB
Plaintext
Raw Normal View History

2021-02-20 17:07:20 -05:00
( mouse )
:dev/r fff8 ( std read port )
:dev/w fff9 ( std write port )
2021-02-23 20:57:57 -05:00
&Point2d { x 2 y 2 }
;mouse Point2d
;cat Point2d
2021-02-20 17:07:20 -05:00
;state 1 ;timer 1
|0100 @RESET
2021-02-24 14:11:19 -05:00
#01 =dev/r ( set dev/read screen )
2021-02-23 20:57:57 -05:00
( position cat )
#00 IOR2 #0002 DIV2 =cat.x
#02 IOR2 #0038 SUB2 =cat.y
2021-02-20 17:07:20 -05:00
#05 =dev/r ( set dev/read mouse )
#02 =dev/w ( set dev/write to sprite )
2021-02-23 20:57:57 -05:00
2021-02-20 17:07:20 -05:00
( draw polycat )
,draw-polycat JSR
BRK
|c000 @FRAME
( clear last cursor )
2021-02-23 20:57:57 -05:00
#10 ,clear_icn ~mouse.x ~mouse.y ,draw-sprite JSR
2021-02-20 17:07:20 -05:00
( record mouse positions )
2021-02-23 20:57:57 -05:00
#00 IOR2 =mouse.x #02 IOR2 =mouse.y
2021-02-20 17:07:20 -05:00
( record mouse state )
#04 IOR #11 ADD =state
2021-02-20 20:14:36 -05:00
( detect click )
2021-02-20 17:07:20 -05:00
#04 IOR #01 NEQ ,no-click ROT JMP? POP2
#50 =timer
@no-click
( draw mouse )
2021-02-23 20:57:57 -05:00
~state ,cursor_icn ~mouse.x ~mouse.y ,draw-sprite JSR
2021-02-20 17:07:20 -05:00
( animate )
,animate-polycat JSR
( update last pos )
~timer #01 ADD =timer
BRK
@draw-polycat
( ears )
2021-02-23 20:57:57 -05:00
,polycat ~cat.x ~cat.y ,draw-sprite-chr JSR
,polycat #0010 ADD2 ~cat.x #0008 ADD2 ~cat.y ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
( eye )
2021-02-23 20:57:57 -05:00
,polycat #0020 ADD2 ~cat.x ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
,polycat #0030 ADD2 ~cat.x #0008 ADD2 ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
( body )
2021-02-23 20:57:57 -05:00
,polycat #00a0 ADD2 ~cat.x ~cat.y #0010 ADD2 ,draw-sprite-chr JSR
,polycat #00b0 ADD2 ~cat.x #0008 ADD2 ~cat.y #0010 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
RTS
@animate-polycat
( tail )
~timer #50 NEQ ,animate-polycat-tail-next0 ROT JMP? POP2
2021-02-23 20:57:57 -05:00
,polycat #00c0 ADD2 ~cat.x #0008 ADD2 ~cat.y #0010 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
@animate-polycat-tail-next0
~timer #58 NEQ ,animate-polycat-tail-next1 ROT JMP? POP2
2021-02-23 20:57:57 -05:00
,polycat #00d0 ADD2 ~cat.x #0008 ADD2 ~cat.y #0010 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
@animate-polycat-tail-next1
~timer #60 NEQ ,animate-polycat-tail-next2 ROT JMP? POP2
2021-02-23 20:57:57 -05:00
,polycat #00b0 ADD2 ~cat.x #0008 ADD2 ~cat.y #0010 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
@animate-polycat-tail-next2
( look-at )
2021-02-23 20:57:57 -05:00
~mouse.x ~cat.x #0008 ADD2 GTH2 ,animate-polycat-right ROT JMP? POP2
2021-02-20 17:07:20 -05:00
@animate-polycat-left
2021-02-23 20:57:57 -05:00
~mouse.y ~cat.y #0008 ADD2 GTH2 ,animate-polycat-left-down ROT JMP? POP2
2021-02-20 17:07:20 -05:00
@animate-polycat-left-up
2021-02-23 20:57:57 -05:00
,polycat #0040 ADD2 ~cat.x ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
,polycat #0050 ADD2 ~cat.x #0008 ADD2 ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
RTS
@animate-polycat-left-down
2021-02-23 20:57:57 -05:00
,polycat #0020 ADD2 ~cat.x ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
,polycat #0030 ADD2 ~cat.x #0008 ADD2 ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
RTS
@animate-polycat-right
2021-02-23 20:57:57 -05:00
~mouse.y ~cat.y #0008 ADD2 GTH2 ,animate-polycat-right-down ROT JMP? POP2
2021-02-20 17:07:20 -05:00
@animate-polycat-right-up
2021-02-23 20:57:57 -05:00
,polycat #0060 ADD2 ~cat.x ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
,polycat #0070 ADD2 ~cat.x #0008 ADD2 ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
RTS
@animate-polycat-right-down
2021-02-23 20:57:57 -05:00
,polycat #0080 ADD2 ~cat.x ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
,polycat #0090 ADD2 ~cat.x #0008 ADD2 ~cat.y #0008 ADD2 ,draw-sprite-chr JSR
2021-02-20 17:07:20 -05:00
RTS
RTS
@draw-sprite
IOW2 ( y byte )
IOW2 ( x byte )
IOW2 ( sprite address )
IOW ( layer-color )
RTS
@draw-sprite-chr
IOW2 ( y byte )
IOW2 ( x byte )
IOW2 ( sprite address )
2021-02-21 19:52:51 -05:00
#20 IOW ( layer-color )
2021-02-20 17:07:20 -05:00
RTS
@clear_icn [ 0000 0000 0000 0000 ]
@cursor_icn [ 80c0 e0f0 f8e0 1000 ]
@polycat [
2021-02-20 18:00:34 -05:00
081c 3e3e 7f7f ffff 081c 3e3e 7f7f fffc
2021-02-20 17:07:20 -05:00
081c 3c3e 7e7e ffff 081c 3c3e 7e7e ff1f
ffff ffff ff7f 3f0f f0e7 cfef f77c 3f0f
ffff ffff fffe fcf0 0783 c1c3 871e fcf0
ffff ffff ff7f 3f0f f7ef cfe7 f07c 3f0f
ffff ffff fffe fcf0 87c3 c183 071e fcf0
ffff ffff ff7f 3f0f f0e1 c1e0 f07c 3f0f
ffff ffff fffe fcf0 f7fb f9f3 071e fcf0
ffff ffff ff7f 3f0f f0e0 c1e1 f07c 3f0f
ffff ffff fffe fcf0 07f3 f9fb f71e fcf0
0307 0707 0302 0200 0307 0707 0300 0000
c0f0 f0e0 e080 8000 c0f2 f9f9 fef8 b000
c0f0 f0e0 e080 8000 c0f2 faf9 fef8 b000
c0f0 f0e0 e080 8000 c0f1 faf9 fef8 b000
]
|d000 @ERROR BRK
|FFF0 [ 0f85 0fd5 0fb5 ] ( palette )
|FFFA .RESET .FRAME .ERROR