From 8db2f9d4ac83fd89c40092df50632a4d76a0b70b Mon Sep 17 00:00:00 2001 From: d_m Date: Sun, 18 Aug 2024 23:16:08 -0400 Subject: [PATCH] detect screen sizes; relative drawing --- cards.tal | 21 +++++++++++---------- kodiak.rom | Bin 18360 -> 18445 bytes kodiak.tal | 45 ++++++++++++++++++++++++++++----------------- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/cards.tal b/cards.tal index 92a42f1..377dc60 100644 --- a/cards.tal +++ b/cards.tal @@ -42,17 +42,18 @@ ,set-sprite/layer LDR ORA .Screen/sprite DEOk DEOk DEO JMP2r @draw-background ( -> ) - #f2 .Screen/auto DEO - ;tiles #0200 ADD2 .Screen/addr DEO2 - #0080 .Screen/x DEO2 - draw-background/twice - #0000 .Screen/x DEO2 - &twice + #01 .Screen/auto DEO #0000 .Screen/y DEO2 - #81 .Screen/sprite - DEOk DEOk DEOk DEOk DEOk DEOk DEOk DEOk - DEOk DEOk DEOk DEOk DEOk DEOk DEOk DEOk - DEOk DEOk DEOk DEOk DEOk DEOk DEOk DEO JMP2r + ;tiles #0200 ADD2 .Screen/addr DEO2 + .height LDZ2 #03 SFT2 #0000 &yloop + #0000 .Screen/x DEO2 + .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 ( -> ) #16 .Screen/auto DEO ( ; draw 2 tiles, increment x and addr ) diff --git a/kodiak.rom b/kodiak.rom index 5359a1e0c092a79b96d17eb83abf8c0e49fed474..dc05fd393043f60bab5e8f82bf885352301df955 100644 GIT binary patch delta 1734 zcmZWpeQZ-z6uvmZGf1v9@Duk2s`7$VOr!qKuP?#Du~YBN32f zXG2hklZ|V{7{MFAP-8%{AP&CoKXsB>PY{+az<~DvSc#atpd|OfoOlq6X|q1G1rP=8{=)CAI=vA$f)Am?ss6&SnH) zi@e&M-vmhp;k^p*p+~!^%3m8Os<2Rhwl+ z;y5($C@MUjXYlu$6&rwdR}eI;s>~|q9M8xGr&ww!EBgcQjw7>98Dc{Cnf76QPvGo0c3j4P*|t5F9i0GWSV5_rF}WD2P8{L zhSI)PL~Lt{#uAh`laEwVb-YDWzR9Nu;se_ZJ}7>))pfZY2GJxDowF^2*Sv;SpC-+j z!HG$YZ1rTj8I{bPq-(AM{TS#6B#TzbdMD_6C0k0^QP6i&;wm{O4Z0xWm7ssB>D%xI zITj~P|LUZ{pGwoR4igXDW}w2fe=dVQEMB&!Lhl(ZtJxLI+#UfDvR{GAqv~Q{+-~EQ zemfR`{a5Q0>Mur{B&$qh?4X~<;JqZ%3ieSk&C$T05p9m*!l!|GHTN<_bM;_TDKLxX z8X4H`Nb%%$VH5?f1(9OVH||!M61t-qn*J8B0^+AKdIdF*vtMj-EmVm9G1n5_BBr`a{T2Ky zbFA0&kx+ZPmJ=~*OS#iZGA)FA=3P={(?L0^vI?+ts;mGk0hQ%}Wmsi7#uL-7_KNfF zd$?!7pXcI=O%WBIDeeo%Gdo~n?+KXLFPc5``3bSzGdq`tg5k-ScBM}o_k3L)!JT!I z1tTg`@g4vTHx z6*g}UWNqT2cYbV7hk4JXiIx_~u7)v2t|6rzS%%VtZ%yh9mBFNJONvK)ZIzdPGmgRN zW9G(YncG;^q*h0p_IHK&*%vNyXv_lF|J1IG;zS?uwEDCw=S8u9eo%O6unwy{K0X*YlxH*7%4)xLuLnv{m7gvaR1=U^L zc>C0@NL&U6=@T>_Dp5xZO)xVI)o~j9Nfo=XCOGYVRlgPrVT3yANRXca{1Bp%2pFNl z=Eq>h)|G=%F_uK+09cNB6UpMG$#7M#1;z9aMh7uiSbv#2?mB@tJiI`|8EUg}t z7M4hK5L%zuZ)DgC*|T(YWKU9FGZI0=0t?HW=7EnOyH{w1!D*E14&QFbZUnvD2t#5A z`Al^mfb0?jpgk?DMbXH?*>h#!;Oq=7wP9>+YLtOPwP6DaBX4S~3{zhk8wofx&{ni; F*1vY|XKVlf delta 1735 zcmZ`(Yiv|i5I*Pbqr2VRcDJQ1*cNVTSxXD;7EAYbf$mKJTV81uAG}f~OGToK6~s{d z)8SQ((9m*7G>Uk@geangY(qg%EB-MAH2i4zVKu&D8wD%aLTg~Ja~71u$Nh2Vd1k(u zGjlpR`Ki6UP4d^#8I~VyM^{*OWMO((F3m!3SaOC%VafWiI4r#zurn+tOhpV!&pFiT z--{u#GQ3$SwMxm3%X!BobKyD+0o(PL>VRZ^tU?pmCZ%$qoOetzJ2qn@ur-oTky+~G zDXB4>j{s~5xDR!`T&LBJbX_V~o&o#_9iIri1DBv3csn-YF5qq0j~eh+yo?Uu8*u=g zz@NtNmCIWE2|4i9IEZxoG2lCZzX!~Vqkdfr053BG8xl=?8qf0&gY691*Mofv*e`&? z1&+r}_kcL4MftPh8*MW8iQ8I3!86EkGyqnmnfW|L!M1dr+2!obaXGt3thW^w?#Jn2 zWcEpYtgqrSck0$3S}cwl2J>Wek2q{w$9D?1y>bGr>;%>? zStqfwx|zC8rk9k!o|Dc9uqPxlC2N(=rN9;Fc^u%#IB}K>#I>Ngo*jYhMaEIh;1FcFBe$drd*7s?4PCp6sSt%-grY`dTEM_4hrh zx>WIM9%WM}5Ft4L=|j5pMxrpy!PC;6m<`Ua#57j{9~2L{=FC{^MAM_QEGHt7fD`+O zWN40X3`ejM@#Qd2Ru z6`Mm)uWQf?#aroGlwz?!&6sO0@jOf>P#!T+W^x#1}vL!>5Qhg0@Av~ zyPidwg6(;@q7tkhD!>}7!2XbZx6X2gsjR13=%PE})&u-o=4v&q!J=5qO!KNzU+^x} zj1kf2Ex-R2olOPpoX)0zZLQ9-!A78bVC&Ucn%Wq1^r#5Om6rW@@x!z7aBEvmmYWBj( zo8mwn+n$R90fswr(dW{CU8k6Qmwq)N_GFi|T~|w<+blI&UpHy z+(uLX-(OxFb5(#~YVXy4bbxi}U&?l{_S{ucD%vXLxecr>aWQwooQci!R`eMyshT(q zmu|$1VgyQbO(Eu@VY-RfLBB!32LC)sN#Zz>e2F1JvJ{YJ5R!b_?R0X`F@FyU-N`)u7OsvQW rmBOsKG8bmW=~orR#%Qg~ja3DeDu_HNMu|y(g<;*_;x<_%l diff --git a/kodiak.tal b/kodiak.tal index 468c605..1ed8c50 100644 --- a/kodiak.tal +++ b/kodiak.tal @@ -61,6 +61,8 @@ @audio [ $1 ( is audio enabled? ) &pos $2 ] ( position in music ) @easy $1 ( true: draw 1 card false: draw 3 cards ) + @width $2 + @height $2 |0100 ( metadata ) @@ -71,9 +73,7 @@ #8d12 .System/g DEO2 #4d12 .System/b DEO2 - ( 256x192 ) - #0100 .Screen/w DEO2 - #00c0 .Screen/h DEO2 + init-screen ( set up vectors ) ;on-mouse .Mouse/vect DEO2 @@ -133,6 +133,16 @@ .about LDZ ?draw-about 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 ( -> ) #0000 .Screen/x DEO2 #0000 .Screen/y DEO2 @@ -412,17 +422,18 @@ &easy ;easy-button JMP2r @draw-buttons ( -> ) - #0008 #00b4 restart-button-addr draw-button - #0030 #00b4 ;quit-button draw-button - #0058 #00b4 audio-button-addr draw-button - #0080 #00b4 ;about-button draw-button - #00a8 #00b4 difficulty-button-addr !draw-button + .height LDZ2 #000c SUB2 + #0008 OVR2 restart-button-addr draw-button + #0030 OVR2 ;quit-button draw-button + #0058 OVR2 audio-button-addr draw-button + #0080 OVR2 ;about-button draw-button + #00a8 SWP2 difficulty-button-addr !draw-button @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 ( -> ) - #00e8 #0098 ;sprites #0100 ADD2 !draw-mouth + .width LDZ2 #0018 SUB2 .height LDZ2 #0028 SUB2 ;sprites #0100 ADD2 !draw-mouth @draw-you-win ( -> ) @@ -443,7 +454,7 @@ .Screen/sprite DEOk DEO JMP2r @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 @draw-stock ( -> ) @@ -684,10 +695,9 @@ @on-refresh-bear ( -> ) .about LDZ ?on-refresh-about-bears -( .frame LDZ #00 EQU ?draw-bear-normal ) #00 .dragging LDZ EQU ?{ draw-bear-oh } 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-move @@ -700,8 +710,7 @@ @on-move ( -> ) .Mouse/x DEI2 .prev/mouse-x LDZ2 NEQ2 ?draw-mouse .Mouse/y DEI2 .prev/mouse-y LDZ2 NEQ2 ?draw-mouse - [ LIT &last $1 ] .Mouse/state DEI DUP ,&last STR EQU ?{ - draw-mouse } + [ LIT &last $1 ] .Mouse/state DEI DUP ,&last STR EQU ?{ draw-mouse } JMP2r @draw-mouse ( -> ) @@ -921,6 +930,7 @@ .Mouse/x DEI2 #0008 LTH2 ?&no ( ; x<8 ) .Mouse/x DEI2 #0017 GTH2 ?&no ( ; x>=23 ) .Mouse/y DEI2 #0020 GTH2 ?&no ( ; y>=32 ) + .waste LDZ .stock LDZ ORA #00 EQU ?&no deal-from-stock draw #01 JMP2r ( 1^ ) &no #00 JMP2r ( 0^ ) @@ -952,6 +962,7 @@ ROT2 NIP DUP start-drag draw #01 JMP2r @maybe-select-waste ( -> bool^ ) + .waste LDZ #00 EQU ?&no1 .Mouse/y DEI2 #0008 LTH2 ?&no1 ( ) .Mouse/y DEI2 #0020 GTH2 ?&no1 ( ) top-waste STHk #00 EQU ?&no2 ( [t^] ) @@ -1006,8 +1017,8 @@ @maybe-select-button ( -> bool^ ) .Mouse/y DEI2 - DUP2 #00b4 LTH2 ?&no - DUP2 #00bb GTH2 ?&no + DUP2 .height LDZ2 #000c SUB2 LTH2 ?&no + DUP2 .height LDZ2 #0005 SUB2 GTH2 ?&no POP2 .Mouse/x DEI2 DUP2 #0008 LTH2 ?&no DUP2 #0028 LTH2 ?&restart