center in x

This commit is contained in:
sejo 2021-07-13 22:50:35 -05:00
parent 3623d084b5
commit 5d577cd063
2 changed files with 61 additions and 23 deletions

View File

@ -39,6 +39,10 @@
%col-sep { #0024 } ( separation between byte columns: 20 for the byte, 4 as space )
%col-height { #0080 } ( 8 rows of 2x8 pixels each )
%col-width { #0020 } ( 2 columns of 2x8 pixels each )
%dev-width { #0044 } ( col-sep + col-width )
%num-devices { #03 }
%num-cols { #06 }
( variables )
@ -55,6 +59,7 @@
@low-nibble $1
@devoffset $1
@shortoffset $1
@offset $1
( registers )
@registers
@ -83,6 +88,13 @@
col-height SUB2 #0002 DIV2
;pos-y-dev STA2
.Screen/width DEI2
col-sep #00 num-devices MUL2
col-width #00 num-devices MUL2
ADD2 ( add column widths )
SUB2 #0004 DIV2 ( calculate separation between devices )
;pos-x-devsep STA2
( set initial values )
#00
@ -111,9 +123,13 @@ BRK
&dev2 10 55 08 1121 77 18ff 4541 3e45 413e 4541
00
@pos-x-dev0 000c
@pos-x-dev1 005e
@pos-x-dev2 00af
@pos-x-devsep 0000
@pos-x-dev00 000c
@pos-x-dev01 000c
@pos-x-dev10 005e
@pos-x-dev11 005e
@pos-x-dev20 00af
@pos-x-dev21 00af
@pos-y-dev 0020
@samples
@ -128,32 +144,51 @@ BRK
#01 ;update-dev JSR2
#02 ;update-dev JSR2
&draw-registers
;pos-x-dev0 LDA2 ;pos-y-dev LDA2 #00
;draw-bytes JSR2
;pos-x-dev0 LDA2 col-sep ADD2 ;pos-y-dev LDA2 #08
;draw-bytes JSR2
;pos-x-dev1 LDA2 ;pos-y-dev LDA2 #10
;draw-bytes JSR2
;pos-x-dev1 LDA2 col-sep ADD2 ;pos-y-dev LDA2 #18
;draw-bytes JSR2
;pos-x-dev2 LDA2 ;pos-y-dev LDA2 #20
;draw-bytes JSR2
;pos-x-dev2 LDA2 col-sep ADD2 ;pos-y-dev LDA2 #28
;draw-bytes JSR2
;draw-registers JSR2
( inc framecount )
.framecount LDZ2 #0001 ADD2 .framecount STZ2
BRK
@draw-registers ( -- )
#00
&loop
STHk ( stash but keep counter )
#00 SWP ( make short )
#0001 ADD2 ( add 1 )
;pos-x-devsep LDA2 ( load x separation )
MUL2 ( get amount of separation )
STHkr #00 SWP
dev-width MUL2 ( get amount of previous devices )
ADD2 ( calculate x )
;pos-y-dev LDA2 ( load y coordinate )
STHkr ( retrieve but keep counter )
#10 MUL ( calculate byte offset )
;draw-bytes JSR2
STHkr ( retrieve but keep counter )
#00 SWP ( make short )
#0001 ADD2 ( add 1 )
;pos-x-devsep LDA2 ( load x separation )
MUL2 ( get amount of separation )
STHkr #00 SWP
dev-width MUL2 ( get amount of previous devices )
ADD2 ( calculate x )
col-sep ADD2 ( add separation )
;pos-y-dev LDA2 ( load y coordinate )
STHkr ( retrieve but keep counter )
#10 MUL ( calculate byte offset )
#08 ADD
;draw-bytes JSR2
STHr #01 ADD DUP ( retrieve and increment counter )
#03 LTH ,&loop JCN
POP
RTN
@update-dev ( devnum -- )
( transform devnum to offsets )
DUP #01 ADD .offset STZ
DUP #02 MUL .shortoffset STZ
#10 MUL .devoffset STZ
@ -205,7 +240,10 @@ BRK
&draw-beat
( draw beat )
;pos-x-dev0 #00 .shortoffset LDZ ADD2 LDA2
;pos-x-devsep LDA2 #00 .offset LDZ MUL2 ( calculate x )
col-sep #00 .offset LDZ MUL2 ADD2
#00 .offset LDZ #01 SUB col-width MUL2 ADD2
#000c ADD2
STHr ( get played ) STHr ( get beat ) SWP ;draw-beat JSR2
RTN
@ -224,7 +262,7 @@ RTN
;square .Screen/addr DEO2
STH ( store beat )
col-sep ADD2 #000c ADD2
( col-sep ADD2 #000c ADD2 )
.Screen/x DEO2
( clear beats )

Binary file not shown.