Fixed issue with mouse pos

This commit is contained in:
neauoire 2021-02-24 12:20:28 -08:00
parent fd3833c564
commit 405d2ca935
2 changed files with 32 additions and 34 deletions

View File

@ -14,8 +14,9 @@ WITH REGARD TO THIS SOFTWARE.
#include "uxn.h" #include "uxn.h"
#define HOR 64 / 2 #define MODE 2
#define VER 48 / 2 #define HOR 64 / MODE
#define VER 48 / MODE
#define PAD 2 #define PAD 2
#define RES (HOR * VER * 16) #define RES (HOR * VER * 16)
@ -26,7 +27,7 @@ typedef struct {
int WIDTH = 8 * HOR + 8 * PAD * 2; int WIDTH = 8 * HOR + 8 * PAD * 2;
int HEIGHT = 8 * VER + 8 * PAD * 2; int HEIGHT = 8 * VER + 8 * PAD * 2;
int FPS = 30, GUIDES = 1, ZOOM = 2; int FPS = 30, GUIDES = 1, ZOOM = MODE;
Uint32 theme[] = { Uint32 theme[] = {
0x000000, 0x000000,
@ -261,6 +262,7 @@ domouse(SDL_Event *event)
Uint8 flag = 0x00; Uint8 flag = 0x00;
int x = clamp((event->motion.x - PAD * 8 * ZOOM) / ZOOM, 0, WIDTH - 1); int x = clamp((event->motion.x - PAD * 8 * ZOOM) / ZOOM, 0, WIDTH - 1);
int y = clamp((event->motion.y - PAD * 8 * ZOOM) / ZOOM, 0, HEIGHT - 1); int y = clamp((event->motion.y - PAD * 8 * ZOOM) / ZOOM, 0, HEIGHT - 1);
devmouse->mem[0] = (x >> 8) & 0xff;
devmouse->mem[1] = x & 0xff; devmouse->mem[1] = x & 0xff;
devmouse->mem[2] = (y >> 8) & 0xff; devmouse->mem[2] = (y >> 8) & 0xff;
devmouse->mem[3] = y & 0xff; devmouse->mem[3] = y & 0xff;

View File

@ -4,23 +4,22 @@
:dev/w fff9 ( std write port ) :dev/w fff9 ( std write port )
&Point2d { x 2 y 2 } &Point2d { x 2 y 2 }
&Window2d { x1 2 y1 2 x2 2 y2 2 }
;pos Point2d ;pos Point2d
;mouse Point2d ;mouse Point2d
;scenter Point2d ;scenter Point2d
;win Window2d
( drawing ) ;color 1 ;x1 2 ;x2 2 ;y1 2 ;y2 2 ;i 2 ( drawing ) ;color 1 ;x1 2 ;x2 2 ;y1 2 ;y2 2 ;i 2
( window ) ;wx1 2 ;wy1 2 ;wx2 2 ;wy2 2
;state 1 ;state 1
|0100 @RESET |0100 @RESET
#01 =color
#01 =dev/r ( read screen for size ) #01 =dev/r ( read screen for size )
#02 =dev/w ( write to screen ) #02 =dev/w ( write to screen )
#08 =color
,paint-pattern JSR ,paint-pattern JSR
#01 =dev/w ( write to screen ) #01 =dev/w ( write to screen )
@ -38,8 +37,6 @@
#09 =color #09 =color
,window_name ~scenter.x #0058 SUB2 ~scenter.y #0018 SUB2 ,draw-label JSR
BRK BRK
|c000 @FRAME |c000 @FRAME
@ -49,43 +46,41 @@ BRK
( record mouse positions ) ( record mouse positions )
#00 IOR2 =mouse.x #00 IOR2 =mouse.x
#02 IOR2 =mouse.y #02 IOR2 =mouse.y
#11 =state #13 =state
( detect click ) ( detect click )
#04 IOR #11 NEQ ,no-click12 ROT JMP? POP2 #04 IOR #11 NEQ ,no-click12 ROT JMP? POP2
#10 =state ,mouse12_text ~win.x1 #0018 ADD2 ~scenter.y #0008 SUB2 ,draw-label JSR
,mouse12_text #0040 ~scenter.y ,draw-label JSR ~color ,mouse12_icn ~win.x1 #0008 ADD2 ~scenter.y #0008 SUB2 ,draw-sprite JSR
~color ,mouse12_icn #0030 ~scenter.y ,draw-sprite JSR
,end-click JSR ,end-click JSR
@no-click12 @no-click12
#04 IOR #01 NEQ ,no-click1 ROT JMP? POP2 #04 IOR #01 NEQ ,no-click1 ROT JMP? POP2
#12 =state ,mouse1_text ~win.x1 #0018 ADD2 ~scenter.y #0008 SUB2 ,draw-label JSR
,mouse1_text #0040 ~scenter.y ,draw-label JSR ~color ,mouse1_icn ~win.x1 #0008 ADD2 ~scenter.y #0008 SUB2 ,draw-sprite JSR
~color ,mouse1_icn #0030 ~scenter.y ,draw-sprite JSR
,end-click JSR ,end-click JSR
@no-click1 @no-click1
#04 IOR #10 NEQ ,no-click2 ROT JMP? POP2 #04 IOR #10 NEQ ,no-click2 ROT JMP? POP2
#13 =state ,mouse2_text ~win.x1 #0018 ADD2 ~scenter.y #0008 SUB2 ,draw-label JSR
,mouse2_text #0040 ~scenter.y ,draw-label JSR ~color ,mouse2_icn ~win.x1 #0008 ADD2 ~scenter.y #0008 SUB2 ,draw-sprite JSR
~color ,mouse2_icn #0030 ~scenter.y ,draw-sprite JSR
,end-click JSR ,end-click JSR
@no-click2 @no-click2
( default ) ( default )
,mouse0_text #0040 ~scenter.y ,draw-label JSR #11 =state
~color ,mouse0_icn #0030 ~scenter.y ,draw-sprite JSR ,mouse0_text ~win.x1 #0018 ADD2 ~scenter.y #0008 SUB2 ,draw-label JSR
~color ,mouse0_icn ~win.x1 #0008 ADD2 ~scenter.y #0008 SUB2 ,draw-sprite JSR
@end-click @end-click
( detect chord ) ( detect chord )
#05 IOR #01 NEQ ,no-chord1 ROT JMP? POP2 #05 IOR #01 NEQ ,no-chord1 ROT JMP? POP2
,chord1_text #0040 ~scenter.y #0008 ADD2 ,draw-label JSR ,chord1_text ~win.x1 #0018 ADD2 ~scenter.y ,draw-label JSR
,end-chord JSR ,end-chord JSR
@no-chord1 @no-chord1
#05 IOR #10 NEQ ,no-chord2 ROT JMP? POP2 #05 IOR #10 NEQ ,no-chord2 ROT JMP? POP2
,chord2_text #0040 ~scenter.y #0008 ADD2 ,draw-label JSR ,chord2_text ~win.x1 #0018 ADD2 ~scenter.y ,draw-label JSR
,end-chord JSR ,end-chord JSR
@no-chord2 @no-chord2
( default ) ( default )
,chord0_text #0040 ~scenter.y #0008 ADD2 ,draw-label JSR ,chord0_text ~win.x1 #0018 ADD2 ~scenter.y ,draw-label JSR
@end-chord @end-chord
( draw mouse ) ( draw mouse )
@ -102,7 +97,7 @@ BRK
@paint-pattern-loop-hor @paint-pattern-loop-hor
#0000 #0000
@paint-pattern-loop @paint-pattern-loop
( draw ) OVR2 IOW2 DUP2 IOW2 ,pattern IOW2 #01 IOW ( draw ) OVR2 IOW2 DUP2 IOW2 ,pattern IOW2 ~color IOW
( incr ) #0008 ADD2 DUP2 ( incr ) #0008 ADD2 DUP2
#00 IOR2 LTH2 ,paint-pattern-loop ROT JMP? POP2 #00 IOR2 LTH2 ,paint-pattern-loop ROT JMP? POP2
POP2 POP2
@ -114,18 +109,20 @@ RTS
@paint-window ( name wx1 wy1 wx2 wy2 ) @paint-window ( name wx1 wy1 wx2 wy2 )
=wy2 =wx2 =wy1 =wx1 =win.y2 =win.x2 =win.y1 =win.x1
( Draw background ) ( Draw shadow )
#00 =color #01 =color
~wx1 #0003 ADD2 ~wy1 #0003 ADD2 ~wx2 #0003 ADD2 ~wy2 #0003 ADD2 ,fill-rect JSR ~win.x2 ~win.y1 #0003 ADD2 ~win.x2 #0003 ADD2 ~win.y2 #0003 ADD2 ,fill-rect JSR
~win.x1 #0003 ADD2 ~win.y2 ~win.x2 #0003 ADD2 ~win.y2 #0003 ADD2 ,fill-rect JSR
( Fill background )
#02 =color #02 =color
~wx1 ~wy1 ~wx2 ~wy2 ,fill-rect JSR ~win.x1 ~win.y1 ~win.x2 ~win.y2 ,fill-rect JSR
( draw outline ) ( draw outline )
#01 =color #01 =color
~wx1 ~wy1 ~wx2 ~wy2 ,line-rect JSR ~win.x1 ~win.y1 ~win.x2 ~win.y2 ,line-rect JSR
#01 =color #01 =color
~wx1 #0002 ADD2 ~wy1 #0002 ADD2 ~wx2 #0002 SUB2 ~wy2 #0002 SUB2 ,line-rect JSR ~win.x1 #0002 ADD2 ~win.y1 #0002 ADD2 ~win.x2 #0002 SUB2 ~win.y2 #0002 SUB2 ,line-rect JSR
RTS RTS
@ -227,8 +224,7 @@ RTS
@mouse1_text [ mouse 1_ ] <1 .00 @mouse1_text [ mouse 1_ ] <1 .00
@mouse2_text [ mouse _2 ] <1 .00 @mouse2_text [ mouse _2 ] <1 .00
@mouse12_text [ mouse 12 ] <1 .00 @mouse12_text [ mouse 12 ] <1 .00
@window_name [ mouse test ] <1 .00
|d000 @ERROR BRK |d000 @ERROR BRK
|FFF0 [ 25fd c3d2 a7bf ] ( palette ) |FFF0 [ f0ff 20df 40bf ] ( palette )
|FFFA .RESET .FRAME .ERROR |FFFA .RESET .FRAME .ERROR