detect screen sizes; relative drawing

This commit is contained in:
~d6 2024-08-18 23:16:08 -04:00
parent a345a43ab6
commit 8db2f9d4ac
3 changed files with 39 additions and 27 deletions

View File

@ -42,17 +42,18 @@
,set-sprite/layer LDR ORA .Screen/sprite DEOk DEOk DEO JMP2r ,set-sprite/layer LDR ORA .Screen/sprite DEOk DEOk DEO JMP2r
@draw-background ( -> ) @draw-background ( -> )
#f2 .Screen/auto DEO #01 .Screen/auto DEO
;tiles #0200 ADD2 .Screen/addr DEO2
#0080 .Screen/x DEO2
draw-background/twice
#0000 .Screen/x DEO2
&twice
#0000 .Screen/y DEO2 #0000 .Screen/y DEO2
#81 .Screen/sprite ;tiles #0200 ADD2 .Screen/addr DEO2
DEOk DEOk DEOk DEOk DEOk DEOk DEOk DEOk .height LDZ2 #03 SFT2 #0000 &yloop
DEOk DEOk DEOk DEOk DEOk DEOk DEOk DEOk #0000 .Screen/x DEO2
DEOk DEOk DEOk DEOk DEOk DEOk DEOk DEO JMP2r .width LDZ2 #03 SFT2 #0000 &xloop
#81 .Screen/sprite DEO
INC2 GTH2k ?&xloop
POP2 POP2
.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
INC2 GTH2k ?&yloop
POP2 POP2 JMP2r
@draw-spot-down ( -> ) @draw-spot-down ( -> )
#16 .Screen/auto DEO ( ; draw 2 tiles, increment x and addr ) #16 .Screen/auto DEO ( ; draw 2 tiles, increment x and addr )

Binary file not shown.

View File

@ -61,6 +61,8 @@
@audio [ $1 ( is audio enabled? ) @audio [ $1 ( is audio enabled? )
&pos $2 ] ( position in music ) &pos $2 ] ( position in music )
@easy $1 ( true: draw 1 card false: draw 3 cards ) @easy $1 ( true: draw 1 card false: draw 3 cards )
@width $2
@height $2
|0100 |0100
( metadata ) ( metadata )
@ -71,9 +73,7 @@
#8d12 .System/g DEO2 #8d12 .System/g DEO2
#4d12 .System/b DEO2 #4d12 .System/b DEO2
( 256x192 ) init-screen
#0100 .Screen/w DEO2
#00c0 .Screen/h DEO2
( set up vectors ) ( set up vectors )
;on-mouse .Mouse/vect DEO2 ;on-mouse .Mouse/vect DEO2
@ -133,6 +133,16 @@
.about LDZ ?draw-about .about LDZ ?draw-about
draw !auto-move draw !auto-move
@init-screen ( -> )
( try to set 256x192; detect platforms that can't resize )
#0100 .Screen/w DEO2
#00c0 .Screen/h DEO2
( save whatever size we get back )
.Screen/w DEI2 .width STZ2
.Screen/h DEI2 .height STZ2
JMP2r
@clear-fg ( -> ) @clear-fg ( -> )
#0000 .Screen/x DEO2 #0000 .Screen/x DEO2
#0000 .Screen/y DEO2 #0000 .Screen/y DEO2
@ -412,17 +422,18 @@
&easy ;easy-button JMP2r &easy ;easy-button JMP2r
@draw-buttons ( -> ) @draw-buttons ( -> )
#0008 #00b4 restart-button-addr draw-button .height LDZ2 #000c SUB2
#0030 #00b4 ;quit-button draw-button #0008 OVR2 restart-button-addr draw-button
#0058 #00b4 audio-button-addr draw-button #0030 OVR2 ;quit-button draw-button
#0080 #00b4 ;about-button draw-button #0058 OVR2 audio-button-addr draw-button
#00a8 #00b4 difficulty-button-addr !draw-button #0080 OVR2 ;about-button draw-button
#00a8 SWP2 difficulty-button-addr !draw-button
@draw-bear-smile ( -> ) @draw-bear-smile ( -> )
#00e8 #0098 ;sprites #00c0 ADD2 !draw-mouth .width LDZ2 #0018 SUB2 .height LDZ2 #0028 SUB2 ;sprites #00c0 ADD2 !draw-mouth
@draw-bear-oh ( -> ) @draw-bear-oh ( -> )
#00e8 #0098 ;sprites #0100 ADD2 !draw-mouth .width LDZ2 #0018 SUB2 .height LDZ2 #0028 SUB2 ;sprites #0100 ADD2 !draw-mouth
@draw-you-win ( -> ) @draw-you-win ( -> )
@ -443,7 +454,7 @@
.Screen/sprite DEOk DEO JMP2r .Screen/sprite DEOk DEO JMP2r
@draw-decorations ( -> ) @draw-decorations ( -> )
#00e8 #0098 #80 draw-bear .width LDZ2 #0018 SUB2 .height LDZ2 #0028 SUB2 #80 draw-bear
is-game-won ?draw-you-win JMP2r is-game-won ?draw-you-win JMP2r
@draw-stock ( -> ) @draw-stock ( -> )
@ -684,10 +695,9 @@
@on-refresh-bear ( -> ) @on-refresh-bear ( -> )
.about LDZ ?on-refresh-about-bears .about LDZ ?on-refresh-about-bears
( .frame LDZ #00 EQU ?draw-bear-normal )
#00 .dragging LDZ EQU ?{ draw-bear-oh } #00 .dragging LDZ EQU ?{ draw-bear-oh }
load-bear-frame ORAk ?{ POP2 JMP2r } load-bear-frame ORAk ?{ POP2 JMP2r }
#00e8 #0098 !draw-bear-eyes .width LDZ2 #0018 SUB2 .height LDZ2 #0028 SUB2 !draw-bear-eyes
@on-mouse ( -> brk ) @on-mouse ( -> brk )
on-move on-move
@ -700,8 +710,7 @@
@on-move ( -> ) @on-move ( -> )
.Mouse/x DEI2 .prev/mouse-x LDZ2 NEQ2 ?draw-mouse .Mouse/x DEI2 .prev/mouse-x LDZ2 NEQ2 ?draw-mouse
.Mouse/y DEI2 .prev/mouse-y LDZ2 NEQ2 ?draw-mouse .Mouse/y DEI2 .prev/mouse-y LDZ2 NEQ2 ?draw-mouse
[ LIT &last $1 ] .Mouse/state DEI DUP ,&last STR EQU ?{ [ LIT &last $1 ] .Mouse/state DEI DUP ,&last STR EQU ?{ draw-mouse }
draw-mouse }
JMP2r JMP2r
@draw-mouse ( -> ) @draw-mouse ( -> )
@ -921,6 +930,7 @@
.Mouse/x DEI2 #0008 LTH2 ?&no ( ; x<8 ) .Mouse/x DEI2 #0008 LTH2 ?&no ( ; x<8 )
.Mouse/x DEI2 #0017 GTH2 ?&no ( ; x>=23 ) .Mouse/x DEI2 #0017 GTH2 ?&no ( ; x>=23 )
.Mouse/y DEI2 #0020 GTH2 ?&no ( ; y>=32 ) .Mouse/y DEI2 #0020 GTH2 ?&no ( ; y>=32 )
.waste LDZ .stock LDZ ORA #00 EQU ?&no
deal-from-stock draw #01 JMP2r ( 1^ ) deal-from-stock draw #01 JMP2r ( 1^ )
&no #00 JMP2r ( 0^ ) &no #00 JMP2r ( 0^ )
@ -952,6 +962,7 @@
ROT2 NIP DUP start-drag draw #01 JMP2r ROT2 NIP DUP start-drag draw #01 JMP2r
@maybe-select-waste ( -> bool^ ) @maybe-select-waste ( -> bool^ )
.waste LDZ #00 EQU ?&no1
.Mouse/y DEI2 #0008 LTH2 ?&no1 ( ) .Mouse/y DEI2 #0008 LTH2 ?&no1 ( )
.Mouse/y DEI2 #0020 GTH2 ?&no1 ( ) .Mouse/y DEI2 #0020 GTH2 ?&no1 ( )
top-waste STHk #00 EQU ?&no2 ( [t^] ) top-waste STHk #00 EQU ?&no2 ( [t^] )
@ -1006,8 +1017,8 @@
@maybe-select-button ( -> bool^ ) @maybe-select-button ( -> bool^ )
.Mouse/y DEI2 .Mouse/y DEI2
DUP2 #00b4 LTH2 ?&no DUP2 .height LDZ2 #000c SUB2 LTH2 ?&no
DUP2 #00bb GTH2 ?&no DUP2 .height LDZ2 #0005 SUB2 GTH2 ?&no
POP2 .Mouse/x DEI2 POP2 .Mouse/x DEI2
DUP2 #0008 LTH2 ?&no DUP2 #0008 LTH2 ?&no
DUP2 #0028 LTH2 ?&restart DUP2 #0028 LTH2 ?&restart