add buttons to confirm whether to load cartrige, with kb and mouse control
This commit is contained in:
parent
507980f61f
commit
8788fbef79
2 changed files with 221 additions and 17 deletions
Binary file not shown.
|
@ -52,6 +52,7 @@
|
|||
@list-height $1
|
||||
@select-index $1
|
||||
@ncarts $1
|
||||
@btn-state $1
|
||||
|
||||
@cart $32
|
||||
@realm $32
|
||||
|
@ -66,15 +67,28 @@
|
|||
#02cd .System/g DEO2
|
||||
#02cb .System/b DEO2
|
||||
|
||||
( load uxn and xrxs logos from main spritesheet )
|
||||
( load individual sprites from the main sheet )
|
||||
;spritesheet .File/name DEO2
|
||||
#0100 .File/length DEO2
|
||||
|
||||
#0000 .File/offset-ls DEO2
|
||||
;uxnlogo .File/load DEO2
|
||||
;uxn-logo .File/load DEO2
|
||||
|
||||
#0200 .File/offset-ls DEO2
|
||||
;xrxslogo .File/load DEO2
|
||||
;xrxs-logo .File/load DEO2
|
||||
|
||||
#00c0 .File/length DEO2
|
||||
#0400 .File/offset-ls DEO2
|
||||
;yes-btn .File/load DEO2
|
||||
|
||||
#04c0 .File/offset-ls DEO2
|
||||
;yes-btn-active .File/load DEO2
|
||||
|
||||
#0600 .File/offset-ls DEO2
|
||||
;no-btn .File/load DEO2
|
||||
|
||||
#06c0 .File/offset-ls DEO2
|
||||
;no-btn-active .File/load DEO2
|
||||
|
||||
( load zz font )
|
||||
;fontsheet .File/name DEO2
|
||||
|
@ -85,7 +99,9 @@
|
|||
( initialize state )
|
||||
#00 .ticker STZ
|
||||
#00 .state STZ
|
||||
#00 .select-index STZ
|
||||
#20 .anim-speed STZ
|
||||
#ff .btn-state STZ
|
||||
GET-USABLE-HEIGHT .list-height STZ
|
||||
|
||||
CENTER-X .logo-coords/x STZ2
|
||||
|
@ -138,9 +154,9 @@ BRK
|
|||
;draw-xrxs-logo-xr JSR2
|
||||
;draw-xrxs-logo-xs JSR2
|
||||
.logo-coords/x LDZ2 #0020 GTH2 ,&keep-state JCN
|
||||
;cartlist .File/name DEO2
|
||||
;carts-file .File/name DEO2
|
||||
#2000 .File/length DEO2
|
||||
;listbuf .File/load DEO2
|
||||
;list-buf .File/load DEO2
|
||||
.File/success DEI2 .list-len STZ2
|
||||
INC .state STZ
|
||||
;get-select-idx-by-mouse .Mouse/vector DEO2
|
||||
|
@ -166,7 +182,27 @@ BRK
|
|||
;draw-pointer JSR2
|
||||
POP
|
||||
BRK
|
||||
&state5 POP
|
||||
|
||||
( confirm the selected cartridge )
|
||||
&state5 DUP #05 NEQ ,&state6 JCN
|
||||
;draw-gray-borders JSR2
|
||||
;draw-bl-scanlines JSR2
|
||||
;draw-tl-scanlines JSR2
|
||||
;draw-tr-scanlines JSR2
|
||||
;draw-br-scanlines JSR2
|
||||
;draw-uxn-logo JSR2
|
||||
;draw-xrxs-logo-xr JSR2
|
||||
;draw-xrxs-logo-xs JSR2
|
||||
[ ;title-confirmCart
|
||||
CENTER-X OVR2 ;strlen JSR2 #20 SFT2 SUB2
|
||||
#0010
|
||||
#02 ] ;draw-string JSR2
|
||||
;render-cart-list JSR2
|
||||
;draw-confirm-buttons JSR2
|
||||
;draw-pointer JSR2
|
||||
POP
|
||||
BRK
|
||||
&state6 POP
|
||||
BRK
|
||||
|
||||
@clear-screen ( -> )
|
||||
|
@ -205,7 +241,7 @@ RTN
|
|||
.logo-coords/y LDZ2 #0010 SUB2 .Screen/y DEO2
|
||||
|
||||
#0100 #0000 &while EQU2k ,&end JCN
|
||||
DUP2 ;uxnlogo ADD2 .Screen/addr DEO2
|
||||
DUP2 ;uxn-logo ADD2 .Screen/addr DEO2
|
||||
#c1 .Screen/sprite DEO INC-X
|
||||
|
||||
NEXT-TILE #0030 AND2 #0000 NEQ2 ,&no-inc-y JCN
|
||||
|
@ -222,7 +258,7 @@ RTN
|
|||
.logo-coords/y LDZ2 #0010 SUB2 .Screen/y DEO2
|
||||
|
||||
#0080 #0000 &while EQU2k ,&end JCN
|
||||
DUP2 ;xrxslogo ADD2 .Screen/addr DEO2
|
||||
DUP2 ;xrxs-logo ADD2 .Screen/addr DEO2
|
||||
#c1 .Screen/sprite DEO INC-X
|
||||
|
||||
NEXT-TILE #0030 AND2 #0000 NEQ2 ,&no-inc-y JCN
|
||||
|
@ -239,7 +275,7 @@ RTN
|
|||
.logo-coords/y LDZ2 .Screen/y DEO2
|
||||
|
||||
#0100 #0080 &while EQU2k ,&end JCN
|
||||
DUP2 ;xrxslogo ADD2 .Screen/addr DEO2
|
||||
DUP2 ;xrxs-logo ADD2 .Screen/addr DEO2
|
||||
#c1 .Screen/sprite DEO INC-X
|
||||
|
||||
NEXT-TILE #0030 AND2 #0000 NEQ2 ,&no-inc-y JCN
|
||||
|
@ -362,7 +398,7 @@ RTN
|
|||
|
||||
@draw-pointer ( -> )
|
||||
|
||||
;pointer_icn .Screen/addr DEO2
|
||||
;cursor .Screen/addr DEO2
|
||||
|
||||
.Mouse/x DEI2 .Screen/x DEO2
|
||||
.Mouse/y DEI2 .Screen/y DEO2
|
||||
|
@ -439,7 +475,7 @@ RTN
|
|||
#00 .list-offset STZ
|
||||
.list-len LDZ2 #0000 &while EQU2k ,&end JCN
|
||||
( get a character from the list )
|
||||
DUP2 ;listbuf ADD2 LDA
|
||||
DUP2 ;list-buf ADD2 LDA
|
||||
|
||||
( if null byte, terminate loop )
|
||||
DUP #00 EQU ,&end JCN
|
||||
|
@ -495,6 +531,13 @@ RTN
|
|||
.Mouse/y DEI2 .Screen/height DEI2 #0028 SUB2 GTH2 ,&done JCN
|
||||
|
||||
.Mouse/y DEI2 #0028 SUB2 8// TOB .list-top LDZ ADD .select-index STZ
|
||||
|
||||
.Mouse/state DEI #00 EQU ,&no-click JCN
|
||||
.select-index LDZ .ncarts GTH ,&no-click JCN
|
||||
.state LDZ INC .state STZ
|
||||
;set-button-state-by-key .Controller/vector DEO2
|
||||
;set-button-state-by-mouse .Mouse/vector DEO2
|
||||
&no-click
|
||||
BRK
|
||||
|
||||
&done
|
||||
|
@ -528,21 +571,182 @@ BRK
|
|||
&no-inc
|
||||
POP
|
||||
&no-down
|
||||
|
||||
|
||||
DUP #01 NEQ ,&no-a-btn JCN
|
||||
.state LDZ INC .state STZ
|
||||
;set-button-state-by-key .Controller/vector DEO2
|
||||
;set-button-state-by-mouse .Mouse/vector DEO2
|
||||
&no-a-btn
|
||||
POP
|
||||
BRK
|
||||
|
||||
@set-button-state-by-key ( -> )
|
||||
|
||||
.btn-state LDZ #ff EQU ,&from-null JCN
|
||||
.btn-state LDZ #00 EQU ,&from-no JCN
|
||||
|
||||
( from yes )
|
||||
.Controller/button DEI #80 NEQ ,&check-action JCN
|
||||
#00 .btn-state STZ
|
||||
BRK
|
||||
|
||||
&from-no
|
||||
.Controller/button DEI #40 NEQ ,&check-action JCN
|
||||
#01 .btn-state STZ
|
||||
BRK
|
||||
|
||||
&from-null
|
||||
( in from left )
|
||||
.Controller/button DEI #80 NEQ ,&in-from-right JCN
|
||||
#01 .btn-state STZ
|
||||
BRK
|
||||
&in-from-right
|
||||
.Controller/button DEI #40 NEQ ,&check-action JCN
|
||||
#00 .btn-state STZ
|
||||
BRK
|
||||
|
||||
&check-action
|
||||
.Controller/button DEI #00 EQU ,&no-action JCN
|
||||
( check A button )
|
||||
.Controller/button DEI #01 NEQ ,&check-b-button JCN
|
||||
( A on yes )
|
||||
.btn-state LDZ #01 NEQ ,&a-on-no JCN
|
||||
;capture-input JSR2
|
||||
#06 .state STZ
|
||||
BRK
|
||||
&a-on-no
|
||||
.btn-state LDZ #00 NEQ ,&no-action JCN
|
||||
;get-select-idx-by-mouse .Mouse/vector DEO2
|
||||
;get-select-idx-by-key .Controller/vector DEO2
|
||||
#04 .state STZ
|
||||
BRK
|
||||
|
||||
&check-b-button
|
||||
.Controller/button DEI #02 NEQ ,&no-action
|
||||
;get-select-idx-by-mouse .Mouse/vector DEO2
|
||||
;get-select-idx-by-key .Controller/vector DEO2
|
||||
#04 .state STZ
|
||||
&no-action
|
||||
BRK
|
||||
|
||||
@set-button-state-by-mouse ( -> )
|
||||
|
||||
( if not in the vertical range of the buttons, quit early )
|
||||
.Mouse/y DEI2 .Screen/height DEI2 #001c SUB2 LTH2 ,¬-no JCN
|
||||
.Mouse/y DEI2 .Screen/height DEI2 #000c SUB2 GTH2 ,¬-no JCN
|
||||
|
||||
|
||||
.Mouse/x DEI2 CENTER-X #0030 SUB2 LTH2 ,¬-yes JCN
|
||||
.Mouse/x DEI2 CENTER-X GTH2 ,¬-yes JCN
|
||||
#01 .btn-state STZ
|
||||
,&check-click JMP
|
||||
|
||||
¬-yes
|
||||
|
||||
.Mouse/x DEI2 CENTER-X LTH2 ,¬-no JCN
|
||||
.Mouse/x DEI2 CENTER-X #0030 ADD2 GTH2 ,¬-no JCN
|
||||
#00 .btn-state STZ
|
||||
,&check-click JMP
|
||||
|
||||
¬-no
|
||||
#ff .btn-state STZ BRK
|
||||
|
||||
&check-click
|
||||
.Mouse/state DEI #00 EQU ,&no-click JCN
|
||||
.btn-state LDZ #00 NEQ ,&state-load JCN
|
||||
;get-select-idx-by-mouse .Mouse/vector DEO2
|
||||
;get-select-idx-by-key .Controller/vector DEO2
|
||||
#04 .state STZ
|
||||
BRK
|
||||
&state-load
|
||||
;capture-input JSR2
|
||||
#06 .state STZ
|
||||
&no-click
|
||||
|
||||
BRK
|
||||
|
||||
@button-color ( bit -- sprite )
|
||||
|
||||
,&get-color-yes JCN
|
||||
|
||||
( get color no )
|
||||
.btn-state LDZ #ff EQU ,&no-inactive JCN
|
||||
.btn-state LDZ #01 EQU ,&no-inactive JCN
|
||||
( active )
|
||||
;no-btn-active RTN
|
||||
|
||||
&no-inactive
|
||||
;no-btn RTN
|
||||
|
||||
|
||||
&get-color-yes
|
||||
.btn-state LDZ #ff EQU ,&yes-inactive JCN
|
||||
.btn-state LDZ #00 EQU ,&yes-inactive JCN
|
||||
( active )
|
||||
;yes-btn-active RTN
|
||||
|
||||
&yes-inactive
|
||||
;yes-btn
|
||||
|
||||
RTN
|
||||
|
||||
@draw-confirm-buttons ( -> )
|
||||
|
||||
( yes )
|
||||
.Screen/height DEI2 #001c SUB2 .Screen/y DEO2
|
||||
CENTER-X #0030 SUB2 .Screen/x DEO2
|
||||
|
||||
#00c0 #0000 &while-yes EQU2k ,&end-yes JCN
|
||||
DUP2 [ #01 ;button-color JSR2 ] ADD2 .Screen/addr DEO2
|
||||
#81 .Screen/sprite DEO INC-X
|
||||
|
||||
NEXT-TILE #0060 NEQ2 ,&no-inc-y JCN
|
||||
CENTER-X #0030 SUB2 .Screen/x DEO2
|
||||
INC-Y
|
||||
&no-inc-y
|
||||
#0010 ADD2 ,&while-yes JMP &end-yes POP2 POP2
|
||||
|
||||
( no )
|
||||
.Screen/height DEI2 #001c SUB2 .Screen/y DEO2
|
||||
CENTER-X .Screen/x DEO2
|
||||
|
||||
#00c0 #0000 &while-no EQU2k ,&end-no JCN
|
||||
DUP2 [ #00 ;button-color JSR2 ] ADD2 .Screen/addr DEO2
|
||||
#81 .Screen/sprite DEO INC-X
|
||||
|
||||
NEXT-TILE #0060 NEQ2 ,&no-inc-y-no JCN
|
||||
CENTER-X .Screen/x DEO2
|
||||
INC-Y
|
||||
&no-inc-y-no
|
||||
#0010 ADD2 ,&while-no JMP &end-no POP2 POP2
|
||||
|
||||
RTN
|
||||
|
||||
@capture-input ( -> )
|
||||
|
||||
;no-instr .Mouse/vector DEO2
|
||||
;no-instr .Controller/vector DEO2
|
||||
|
||||
RTN
|
||||
|
||||
@no-instr BRK
|
||||
|
||||
( constants )
|
||||
@spritesheet "xrxs.chr 00
|
||||
@fontsheet "zz.chr 00
|
||||
@cartlist "n/carts 00
|
||||
@carts-file "n/carts 00
|
||||
@title-loadCart "Select 20 "A 20 "Cartridge 00
|
||||
@title-confirmCart "Load 20 "This 20 "Cartridge? 00
|
||||
|
||||
( sprites )
|
||||
@blank $16
|
||||
@uxnlogo $256
|
||||
@xrxslogo $256
|
||||
@pointer_icn [ 80c0 e0f0 f8e0 1000 ]
|
||||
@uxn-logo $256
|
||||
@xrxs-logo $256
|
||||
@yes-btn $192
|
||||
@no-btn $192
|
||||
@yes-btn-active $192
|
||||
@no-btn-active $192
|
||||
@cursor [ 80c0 e0f0 f8e0 1000 ]
|
||||
@font $768
|
||||
|
||||
( big data )
|
||||
|
@ -550,5 +754,5 @@ BRK
|
|||
#0000 #0000 #0000 #0000
|
||||
#0000 #0000 #0000 #0000
|
||||
#0000 #0000 #0000 #0000 ]
|
||||
@listbuf $8192
|
||||
@list-buf $8192
|
||||
|
||||
|
|
Loading…
Reference in a new issue